首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护Ed448免受DPA和故障攻击

保护Ed448免受DPA和故障攻击
EN

Cryptography用户
提问于 2020-01-27 13:30:43
回答 1查看 261关注 0票数 5

有一些文献(12)描述了EdDSA中的故障攻击。一个建议的对策是在第一个哈希调用的输入中添加随机性,后者输出一个标量。

本论文描述了对EdDSA的DPA攻击,并提出了类似的对策。然而,随机性必须放在一个特定的地方:

这可以通过用新的随机比特填充密钥来实现,这样,第一个1024位块仅由密钥和随机值组成,而攻击者不知道任何比特。

按照它们的表示法,这将意味着将H(b,M)更改为H(b,Z,M),其中Z是随机填充,使得b || Z的长度等于哈希的块大小。

但是,考虑Ed448,正如RFC 8032中所定义的(我将讨论的问题也适用于Ed25519ctx和Ed25519ph,但我将使用Ed448作为示例)。在符号操作中,哈希调用是SHAKE256(dom4(prehash, context) || b || PH(M), 114)。Pre散列是指示Ed448或Ed448ph的标志。上下文是一个可选的上下文字符串。dom4函数是:

dom4(x, y):八进制字符串"SigEd448" || octet(x) || octet(OLEN(y)) || y,其中x在0-255范围内,y是最多255个八进制字符串。"SigEd448“在ASCII (8位字节)中。

现在,我的问题是:向Ed448添加DPA对策的正确方法是什么?( Ed448ph,Ed25519ph,Ed25519ctx)?

我的第一个猜测是使用SHAKE256(dom4(prehash, context) || b || Z || PH(M), 114)Z是足够填充SHAKE245块大小的字节。但是,如果使用上下文,那么Z可能会变得太小。此外,论文还指出,第一个块必须“仅由密钥和随机值组成,而不需要攻击者知道的任何比特”。dom4函数的固定字节("SigEd448“等)会干扰这一点吗?怎么解决这个问题?

或者SHAKE256已经对DPA产生抗药性了?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-02-13 16:09:39

那张纸中通常使用的假设是,攻击者可以将固定的秘密与已知的(攻击者)和变化的数据混合在一起。

建议的解决方案是在密钥之后添加随机项,以填充SHA-512块大小。

通过这样做:

  1. 第一个SHA-512计算处理固定的秘密和变化但未知的数据,因此攻击者无法执行DPA。
  2. 在第一个块之后,结果是未知和变化的中间哈希值(从消息到消息),因此在处理后续块时不能通过DPA恢复。

附带注意:如果我们用零填充键,而不是随机填充,我们就会将固定键与已知但固定的数据混合。在这种情况下,攻击者无法对密钥进行DPA。但是,她可以在第一个块之后使用DPA中间哈希值,这个值是秘密的,现在是固定的,并且将与已知的和可变的消息混合。

如果您仔细选择SHAKE256(dom4(prehash, context) || b || Z || PH(M), 114)的大小并假设攻击者无法控制上下文,那么使用Z随机数据的建议解决方案Z就能工作。

如果攻击者控制上下文,那么她可以选择将密钥(b)完全填充SHAKE256块的不同上下文,因此在计算中不使用随机,可以执行DPA。

如果攻击者无法控制上下文,则只需确保Z不太小并填充块即可。

例如,假设SHAKE256的块大小为136个字节,如果是len(dom4(prehash, context) || b)=134,由于一个大的上下文,那么Z的2个字节是不够的,您需要选择138个字节的Z (2来填充当前块,136个用于另一个完整块)。

更新:请注意,r的生成是侧通道攻击EdDSA的一种方式,但这并不是唯一的方法。标量乘法也应避免单次跟踪攻击(技术上不是DPA),S = (r + k * s)的计算可以被DPA作为目标,因为s是固定的和未知的,k是变化的和已知的。

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

https://crypto.stackexchange.com/questions/77260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档