
嗨%用户名%!
2019年6月13日,两因素身份验证设备制造商Yubico发布
了安全通知,指出某些Yubikey FIPS设备的严重漏洞。 让我们看看此漏洞是什么以及如何预防。
前言
州也有自己的GOST,称为FIPS-联邦信息处理标准。 硬件和软件处于哪个状态。 符合FIPS要求的结构。
根据我们在EuroCrypt 2019上遇到的同事的说法,FIPS认证真是一件令人头疼的事情,以至于FIPS专家来找您,以调试模式启动软件,更改内存中的值并检查它是否落在预期的位置。
尽管如此,获得认证并符合FIPS是真实的。 因此,向国家提供服务的产品和公司的数量是我们的许多倍。
ECDSA
在Yubico的usb令牌中,有一个密钥存储区和一个实现以下功能的引擎: ECDSA。 在注册期间,来自令牌的公钥被传输到服务器并进行存储。
并且在登录时,服务器将随机字符串发送给客户端,并与元信息(例如域)一起在客户端签名。
简而言之,关于ECDSA或椭圆曲线上的数字签名如何工作。 为了便于演示,省略了一些细节:
- 我们考虑消息中的哈希并将其转换为数字。 。
- 我们生成一个密码强的随机数k。
- 计算点 其中G是曲线的基点,称为生成器(常数)
- 我们计算 其中n是基点的阶数(常数)
- 我们计算 其中d是私钥
- 数字签名由一对数字r,s组成
至关重要的是,数字k不仅是秘密的,而且总是不同的。 否则,可以计算私钥。
例如,我们有两个签名(r,s)和(r1,s1),它们是针对不同的消息m和m1接收的,但使用的是相同的秘密k。 让我们计算私钥。
- 攻击者计算e和e1。
- 由于 那么我们可以找出k。
- 由于 ,那么我们可以计算d。
- d-私钥
如果数字k不同,但
不完全相同 ,那么您还可以计算私钥,您只需要稍微蛮力即可。 顺便说一句,在2013年,我已经
写了笨拙地实现(EC)的DSA在PlayStation和其他产品中的破绽,我强烈建议阅读。
尤比科
因此,在许多Yubico FIPS产品中,存在一个错误,即在打开令牌后立即出现的数字k并非完全随机。 并且确实有机会计算内部连接的私钥。 因此,他们召回了易受攻击的设备并发出了通知。
该怎么办?
一般来说,这个问题早已解决。 自2013年以来,存在
RFC 6979 ,它描述了
确定性 ECDSA,它是通过对普通ECDSA的一些简单修改而获得的。 此外,在2014年开发U2F标准时,正是由于RPS的潜在问题,FIPS公开
提议改用确定性ECDSA,但该提议被拒绝。 这是FIPS代表严格的,不安全的,始终如一的标准的原因之一。
Yubico可以正式满足FIPS对数k的随机性的要求,但是可以使用变通方法,确定性地生成k,然后对其进行XOR运算,并发出RNG(或通过KDF运行所有内容)。 但是,尚未完成。
那我们呢
我们有同样的事情。 GOST R 34.10-2012-本质上相同的ECDSA,只是曲线不同。 生成数字k的要求与传统ECDSA相同。 我们的代币制造商有没有采取上述解决方法? 它使用确定性版本的ECDSA吗? 我对此表示怀疑。
如果有俄罗斯开发商的代表,听听他们对此事的看法将很有趣。 或至少要记住这一点。
谢谢您的关注。