在美国,GOST也是如此。 YubiKey FIPS致命漏洞可以避免



嗨%用户名%!

2019年6月13日,两因素身份验证设备制造商Yubico发布了安全通知,指出某些Yubikey FIPS设备的严重漏洞。 让我们看看此漏洞是什么以及如何预防。

前言


州也有自己的GOST,称为FIPS-联邦信息处理标准。 硬件和软件处于哪个状态。 符合FIPS要求的结构。

根据我们在EuroCrypt 2019上遇到的同事的说法,FIPS认证真是一件令人头疼的事情,以至于FIPS专家来找您,以调试模式启动软件,更改内存中的值并检查它是否落在预期的位置。

尽管如此,获得认证并符合FIPS是真实的。 因此,向国家提供服务的产品和公司的数量是我们的许多倍。

ECDSA


在Yubico的usb令牌中,有一个密钥存储区和一个实现以下功能的引擎: ECDSA。 在注册期间,来自令牌的公钥被传输到服务器并进行存储。

并且在登录时,服务器将随机字符串发送给客户端,并与元信息(例如域)一起在客户端签名。

简而言之,关于ECDSA或椭圆曲线上的数字签名如何工作。 为了便于演示,省略了一些细节:

  1. 我们考虑消息中的哈希并将其转换为数字。 e=m
  2. 我们生成一个密码强的随机数k。
  3. 计算点 xy=kG其中G是曲线的基点,称为生成器(常数)
  4. 我们计算 r=xmodn其中n是基点的阶数(常数)
  5. 我们计算 s=k1e+rd\, bmod\,n其中d是私钥
  6. 数字签名由一对数字r,s组成

至关重要的是,数字k不仅是秘密的,而且总是不同的。 否则,可以计算私钥。

例如,我们有两个签名(r,s)和(r1,s1),它们是针对不同的消息m和m1接收的,但使用的是相同的秘密k。 让我们计算私钥。

  • 攻击者计算e和e1。
  • 由于 ss1=k1ee1那么我们可以找出k。 k= fracee1ss1
  • 由于 s=k1e+rd,那么我们可以计算d。 d= fracsker
  • 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吗? 我对此表示怀疑。

如果有俄罗斯开发商的代表,听听他们对此事的看法将很有趣。 或至少要记住这一点。

谢谢您的关注。

Source: https://habr.com/ru/post/zh-CN456494/


All Articles