向LadderLeak学习:ECDSA崩溃了吗?

2020-05-28 23:14:31

昨天,IACR的ePrint档案馆发表了一篇论文,题为“LadderLeak:用不到一次的随机泄漏打破ECDSA”。

随后关于/r/crypto的讨论引出了几个有趣的问题,我认为这些问题值得详细了解和回答。

这篇论文的作者能够利用192位和160位椭圆曲线上的1位泄漏来优化现有的攻击。他们进一步能够利用同一曲线中不到一位的泄漏。

在计算机科学中,我们习惯于离散数量,但在旁通道的情况下,你可以泄露不到一位的信息。

偏向模减还可能产生易受攻击的情况:如果您知道一次性数字(即最高有效位)的位串中给定位置的0或1的概率不是0.5到0.5,而是某个其他比率(例如0.51到0.49),则您可以(在许多样本上)得出数据集中特定位的概率。

如果“少于一位”听起来很奇怪,那可能是我们在表达计算机科学中的成本时总是四舍五入到最接近的位的错。

将ECDSA与sect163r1或secp192r1(NIST P-192)一起使用。打破较大的曲线需要更多的偏差(据我们所知)。

您有办法测量定时泄漏(而不仅仅是窃取ECDSA密钥;即在TPM设置中)。此威胁模型通常假定存在某种类型的物理访问。

但是,如果您能够成功实施攻击,您就可以成功恢复设备的ECDSA密钥。对于像tls这样的协议,允许攻击者冒充证书持有者(通常是服务器)…。这是相当毁灭性的。

与其他攻击相比,不确定的ECDSA对LadderLeak的破坏并不明显。LadderLeak不会破坏互联网。

从根本上说,LadderLeak并没有真正改变风险计算。Bleichenbacher用格子解决隐数问题的攻击框架已经很实用,有足够的样本。

正如一位熟人所说,作者与一位泄密的先知进行了时间记忆的权衡。这是一个值得公布的巧妙结果,但这一发现并不能让我们离午夜更近一分钟。

在密码学中,随机数总是意味着“必须只使用一次的数字”(通常是每个密钥)。请参阅:AES-GCM。

随机数经常被混淆为初始化向量(IV),除了随机数对不可重用的要求之外,初始化向量还必须是不可预测的。请参阅:AES-CBC。

但是,随机数和IV都可以是公共的,而ECDSA k值不能是公共的!如果您恢复给定签名的k值,您也可以恢复密钥。

因此,将k值视为每个签名的密钥可能比简单的随机数更好。(注:许多密码库实际上将它们实现为一次性的ECDSA密钥对。)

秘密密钥下消息的HMAC-SHA256输出对于没有拥有所述秘密密钥的任何人来说都是不可预测的。该值虽然不可预测,但不是随机的,因为对同一消息签名两次会产生相同的输出。

当大的随机整数被相同量级的非梅森素数模约简时,将偏向小值。这种偏差可能可以忽略不计,但它使表示减去的整数的位串更具可预测性,即使它是随机的。

首先,不要惊慌。这是一项有趣的研究,其作者理应享受这一时刻,但天并没有塌下来。

如果您觉得有必要对此攻击文件采取措施,请向处理加密机密的所有第三方供应商和业务合作伙伴提交支持票证,询问他们是否/何时计划支持EdDSA(特别是如果FIPS合规性与您的工作完全相关,因为EdDSA即将采用FIPS 186-5)。

原因:随着客户对EdDSA需求的增加,将有更多的公司采用这种数字签名算法(它可以更安全地抵御现实世界的攻击)。因此,我们可以确保实际上破坏ECDSA的改进的攻击变体不会导致天塌下来,互联网注定会崩溃。

(说真的,我不认为大多数公司能够克服他们在从ECDSA迁移到EdDSA方面的惰性,如果他们的客户从来不要求这样做的话。)