Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用KeePass的Yubikey使用挑战-响应与誓言-HOTP

使用KeePass的Yubikey使用挑战-响应与誓言-HOTP
EN

Security用户
提问于 2016-01-07 14:40:40
回答 2查看 10.2K关注 0票数 12

我今天拿到了我的YubiKey 4,并且第一次尝试使用KeePass并发誓-HOTP (OtpKeyProv插件)。我的配置是3个OTP,前瞻性计数= 0。它没有那么好的工作,因为有时OtpKeyProv插件不认识我的输入,当我按下按钮太快。因此,我换到了6个OTP,向前看计数= 12,但这样就不再“舒适”了,因为我需要按6次按钮,并且不得不在按键之间等待几秒钟,以确保插件识别输入。

所以我用KeeChallenge插件尝试了挑战响应的方法。一切都完美无缺。有什么反对使用KeeChallenge插件的挑战响应方法吗?还是说使用起来安全?我知道OtpKeyProv插件更安全,但这有多大区别吗?

EN

回答 2

Security用户

发布于 2017-10-29 09:43:50

取决于插件是如何在内部运行的,这可能是添加安全性的一种无止境的方法。

本质上,这件事误用了HOTP大时间,然而,通过计算下一个-许多OTP需要和形成他们与主通行证加密数据库。

但是,当然,当您有前瞻性活动(您确实应该,特别是在一个纳米),它会生成更多的密钥序列,以防您增加计数器意外。

虽然keepass显然需要将种子(共享秘密)存储在数据库中,以便重新加密它,但其背后的想法并不坏。

keechallenge插件在相同的前提下工作:使用某种挑战(HOTP中的计数器)散列共享秘密,但从几个角度来看,这个插件实际上更安全。

1)它提供了160位的HMAC-SHA1 1输出,而不是log2(10^(6*x))位的“公正”(x是您选择的连续OTP的数量,8个连续的OTP(仅为159比特)长度)。

简单地说,对于相同的安全级别,您需要的点击量要少得多,虽然OTP插件可能被配置为使用大量的OTP来实现更高的安全性,但经过修改后,挑战响应插件还可以运行多个挑战,将比特数抛到屋顶,再一次只需要八分之一的水龙头(不需要错误的敲击,也不需要得到正确的序列)。

2)由于挑战是从数据库中提供的,我们不需要担心意外地触摸键或外观,这意味着我们不需要通过允许多个第二因素解决方案进入而降低安全性。

简单地说,数字2意味着Yubi只有一个秘密,而DB有一个可以被称为挑战的“状态”,而在TOTP中,Yubi拥有解密DB所需的状态和秘密,并且在每次触摸密钥时状态都会发生变化,这意味着您需要考虑多个状态。

尽管显然共享的秘密仍然需要以某种方式存储在数据库中(除非您根本不改变挑战,但这是不计后果的)。

票数 1
EN

Security用户

发布于 2016-01-13 14:18:40

您应该意识到,使用KeePass实现2 2factor的任何机制都不是从根本上增加任何真正的安全性。任何掌握您的数据库的攻击者都不会安装OTPKeyProv插件,也不需要使用第二个因素。

OTP 2因素提供身份验证,而不是加密,并且只在攻击者无法在身份验证之前直接访问密码库的情况下工作,例如使用在线服务(如LastPass )。使用KeepPass,攻击者必须在身份验证期间访问数据库,因此可以简单地下载数据库并忽略身份验证部分。

更简单地说:使用OtpKeyProv并不会给您的主密钥添加任何安全性,而且主要是安全域。

编辑:我在一些方面得到纠正-基于插件作者的反应,插件的设计是为了增加一个额外的秘密密钥到主密码,并保护它使用HOTP。具体是如何做到这一点尚不清楚,但听起来似乎是可信的。然而,应该注意的是,这不是真实的2因子,更像是因子加半;主要因素(加密密钥)正在被一个自身保护弱的较弱密钥所强化。因此,这是额外的安全性,但不像认证系统中真正的2因素提供的那样多。

票数 -4
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/110014

复制
相关文章
python中的异常捕获
无论是编程新手还是老手,都会遇到过程序报错,终止执行的情况,对于python的报错信息,可以分为以下两大类
生信修炼手册
2020/05/28
1.9K0
python – 异常捕获
直接上示例: 大概的意思就是当try下方的代码出现异常的时候就自动执行except下方的代码
Blank.
2023/04/12
1.3K0
python - 异常捕获
在执行python程序时,有时候会报异常,出错的原因可能是自己错写或少写,还有可能是执行程序时由于疏忽或者考虑不全造成了错误,Traceback可以追踪错误点,进行分析改正;这时我们可以对异常进行捕获处理,防止程序终止。
HammerZe
2022/03/25
1.9K0
python - 异常捕获
python异常捕获
下面写一个程序,这个程序接受用户的输入一个的正整数,然后与预设的一个正整数数比较,给出比较结果。 其中用户输入和预设的正整数范围是[0,10). answer = 5guess = int (input ('请输入一个[0,10)范围的正整数:'))if (guess == answer): print ('恭喜!猜对了!')else: print ('很遗憾!猜错了!') int()将输入的字符串格式的数字更改为数字格式的数字。 下面两个执行示例,其中第一次猜对了,第二次猜错了: $ py
mwangblog
2018/07/04
1.6K0
Flask中异常捕获
HTTP 异常主动抛出 abort 方法 抛出一个给定状态代码的 HTTPException 或者 指定响应,例如想要用一个页面未找到异常来终止请求,你可以调用 abort(404)。 参数: code – HTTP的错误状态码 # abort(404) abort(500)   抛出状态码的话,只能抛出 HTTP 协议的错误状态码  捕获错误 errorhandler 装饰器 注册一个错误处理程序,当程序抛出指定错误状态码的时候,就会调用该装饰器所装饰的方法 参数: code_or_ex
汪凡
2019/03/01
1.7K0
【Python】异常处理 ③ ( 捕获所有类型的异常 | 默认捕获所有类型异常 | 捕获 Exception 异常 )
使用 try-except 语句 , 不指定异常类型 , 默认就可以捕获所有类型的异常 ;
韩曙亮
2023/10/11
2.2K0
【Python】异常处理 ③ ( 捕获所有类型的异常 | 默认捕获所有类型异常 | 捕获 Exception 异常 )
python抛出异常和捕获异常_Python异常
class Widget: def __init__(self,size=(40,40)): self._size=size def getSize(self): return self._size def resize(self,width,height): if width<0 or height<0:
全栈程序员站长
2022/11/02
2.9K0
【Python】异常处理 ① ( 异常概念 | 异常处理 | 异常捕获 )
在之前的博客中介绍了文件操作 , 如果以只读的形式打开不存在的文件 , 就会导致异常的出现 ;
韩曙亮
2023/10/11
2420
【Python】异常处理 ① ( 异常概念 | 异常处理 | 异常捕获 )
处理Python未捕获异常
和Java一样,python也提供了对于checked exception和unchecked exception. 对于checked exception,我们通常使用try except可以显示解决,对于unchecked 异常,其实也是提供回调或者是钩子来帮助我们处理的,我们可以在钩子里面记录崩溃栈追踪或者发送崩溃数据. 下面代码可以实现python unchecked exception回调,并输出日志信息.
技术小黑屋
2018/09/04
1.7K0
【Python】异常处理 ② ( 异常类型简介 | 捕获并处理指定异常 | 捕获多个类型异常 )
Python 中的 异常 由 异常类 Exception Class 表示 , 每个异常类都代表一个特定的错误类型 ;
韩曙亮
2023/10/11
3930
【Python】异常处理 ② ( 异常类型简介 | 捕获并处理指定异常 | 捕获多个类型异常 )
Python 怎么捕获警告?(注意:不是捕获异常)
你是不是经常在使用一些系统库或者第三方模块的时候,会出现一些既不是异常也不是错误的警告信息?
青南
2021/03/22
3K0
Python 怎么捕获警告?(注意:不是捕获异常)
Python 怎么捕获警告?(注意:不是捕获异常)
在前面我们介绍了如何在python中使用try except语句来测试代码。try except语句其实只能捕获异常或者错误,但无法捕获警告。在本文中,我向大家介绍几种捕获警告的方法。
自学气象人
2022/11/14
1.8K0
Python 怎么捕获警告?(注意:不是捕获异常)
Python捕获所有异常
老生常谈了,但是在Pyflake检查出E722错误时有时候又犯老毛病。人年纪大了越来越有老年痴呆倾向 -_- …..
happy123.me
2019/12/30
3.6K0
python中--try except 异常捕获以及正则化、替换异常值
#输出 ‘c’ 注:第二种写法的用处:括号里面的所有错误,不管出现里面任何一种错误都用统一的处理方法。
汀丶人工智能
2022/12/21
1.1K0
python中--try except 异常捕获以及正则化、替换异常值
python自定义异常捕获异常处理异常
参考链接: Python自定义异常 def set_inf(name,age):     if not 0 < age < 120:         raise ValueError('超出范围')     else:         print('%s is %s years old' % (name,age)) def set_inf2(name,age):     assert 0 < age < 120,'超出范围'     print('%s is %s years old' % (name,ag
用户7886150
2021/01/22
1.4K0
python抛出异常和捕获异常_python自定义异常
有时,程序需要主动抛出异常,因为某些情况下,你需要反馈消息给更上层的调用者,告诉它有一些异常情况发生,而你抛出异常的地方,没有能力处理它,因此需要向上抛出异常。
全栈程序员站长
2022/11/07
9700
python抛出异常和捕获异常_在try块中可以抛出异常吗
2.解析 关键字try 以及except是 使用Python 解释器主动抛出异常的关键, Python解释器从上向下执行 当运行try中的某行代码出错,会直接进入except中执行下方代码 try中错行下方的代码不会被运行 except…as… 是固定的语法格式 打印traceback信息 finally 后的代码不管是否抛出异常都会执行 except 的原理 调用sys中 exc.info 方法返回基本信息 所以抛出异常的第一步拓展可以在这里开始 注意 每个关键字下方的代码都是独立的(所有的变量都是局部变量)
全栈程序员站长
2022/11/02
4.6K0
领域事件的总线异常怎么捕获?异常的类型有哪些?
在一个软件项目中很难避免会遇到异常情况的发生,如果能够在异常出站以前就预设好解决办法,出现异常之后可以有非常好的处理机制,这样就可以让我们的工作更加高效。那么在领域事件的总线异常怎么捕获呢?下文将会有一个介绍。
用户8715145
2022/03/18
6590
[javaSE] 异常捕获
异常:程序在运行时出现的不正常现象 Throwable |——Error |——Exception 严重级别:Error类和Exception类 异常的处理:try{}catch{}finally{} public class VariableDemo { /** * @param args */ public static void main(String[] args) { try { System.out.println(1
唯一Chat
2019/09/10
1.5K0
python3-抛出、捕获异常
''' 异常:错误发生的信号,程序随之终止 三个部分: 1.traceback 异常的追踪信息(链接) 2.异常的类型 3.异常信息 错误两大类: 1.语法错误(运行前进行判定和修正) 2.逻辑错误 异常种类: AttributeError 属性错误 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输出错误 输入/输出异常;基本上是无法打开文件 ImportError 模块
py3study
2020/01/09
1.6K0

相似问题

503 -暂时无法使用服务

10

错误503:持久化HDFS无法提供服务

12

Plesk Api 503服务暂时无法使用

20

蔚蓝云服务503错误

11

服务器返回错误503

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文