关键信息 漏洞ID: RUSTSEC-2024-0344 报告日期: 2024年6月18日 发布日期: 2024年6月18日 受影响的包: curve25519-dalek (crates.io) 漏洞类型: Vulnerability 类别: crypto-failure 修复版本: >=4.1.3 描述 问题: 在处理潜在秘密值(如椭圆曲线标量)时,任何类型的定时变化都是有问题的,可能会泄露私钥和其他秘密。在curve25519-dalek中发现了此类问题。 具体问题: Scalar29::sub (32位) 和 Scalar52::sub (64位) 函数在循环中使用了掩码值,LLVM在x86上插入了一个分支指令 (jns),当掩码值为零时有条件地跳过代码段。 相关链接: - 32位: https://godbolt.org/z/zvaW7zxqv - 64位: https://godbolt.org/z/PczYj7Pda 类似问题: 在Kyber参考实现中也发现了类似问题:https://groups.google.com/a/list.nist.gov/g/pqc-forum/c/hqbtIGFKIpU/m/cnE3pbueBgAJ 解决方案: 引入volatile读作为优化屏障,防止编译器优化掉。 验证链接: - 32位: https://godbolt.org/z/jc9j7eb8E - 64位: https://godbolt.org/z/x8d46Yfah 发现和验证者: Alexander Wagner 和 Lea Themint 使用他们的DATA工具进行独立验证。