跳到主要内容
ecdsa.com

弱密钥

实际上比其名义密钥长度所表明的更容易被破解的密钥,原因可能是生成器存在缺陷、熵不足、结构性缺陷(例如 ROCA 的特殊素数结构),或同一密钥在多台设备间重复使用。
其他写法weak keysROCADebian weak keysshared primes

真实事件以熵不足为主。Debian 的 OpenSSL 软件包(CVE-2008-0166,2006~2008年)几乎只用进程 ID 作为随机数生成器(RNG)的种子,因此每种密钥类型和长度只存在约 32,768 个密钥;一些 SSH 工具至今仍附带这些密钥的黑名单。刚启动就生成密钥的设备会重复或共用素数:2012年,Heninger 等人对数以百万计的模数计算最大公约数(GCD),分解了约 0.5% 的 TLS 主机的 RSA 密钥。

结构性缺陷:ROCA(CVE-2017-15361)使英飞凌(Infineon)库生成的 RSA 密钥因其特殊的素数结构而可被分解,影响了智能卡、TPM 和爱沙尼亚身份证;2022年,人们发现一个商业库生成的素数彼此过于接近,用费马分解法能瞬间分解模数(CVE-2022-26320)。对于椭圆曲线,弱密钥来自有偏差的 nonce 和糟糕的随机性,而非密钥本身。

验证者或 CA 可以执行的检查:指纹黑名单(Debian)、ROCA 指纹测试、针对已知模数的批量 GCD、针对相近素数的费马分解、不小于 65537 的公钥指数,以及最小长度要求。弱密钥检测工具会在本地运行这些测试。

标准与参考资料

全部术语