【问题标题】:What difference does key length make when signing a file?签署文件时密钥长度有什么区别?
【发布时间】:2011-07-27 04:07:51
【问题描述】:
我从未上过任何有关加密或安全的课程,我正在尝试自学一些基础知识,如果这是一个愚蠢的问题,请原谅我(别担心,我没有在做任何敏感的事情)
所以,我正在使用 Crypto++,以便我可以对文件进行签名,以查看该文件是否已被我以外的其他人编辑。库附带的测试应用程序看起来像它具有选项(rs 和 rv),它们完全可以在我自己的程序中执行我想要执行的操作(验证文件签名的完整性)。当然,在此之前我需要生成一个公钥和私钥。使用测试应用程序的 g 选项执行此操作时,它要求我以位为单位指定密钥长度。密钥长度有什么区别?
【问题讨论】:
标签:
rsa
public-key
private-key
crypto++
【解决方案1】:
密钥长度决定了破解密码的难度。对于数字签名,这意味着某人生成假签名有多难。
对于 RSA,1024 位的密钥长度足以存储非敏感信息,但只能使用几年,然后用新密钥替换。 2048 位更强,4096 位更强。
对于天真的蛮力攻击者来说,在密钥长度上添加一个位会使他们需要做的工作量加倍以破坏您的密钥。然而,像 RSA 这样的算法不能以这种方式扩展:2048 位 RSA 密钥的破解难度不如 1024 位密钥的 2^1024 倍(除非攻击者真的愚蠢)。
通常 公钥 算法(例如 RSA)需要比 对称密钥 算法(例如 AES)大得多的密钥,因为它们依赖于不同的数学属性。
要获得密码学的良好入门知识,您应该查看Peter Gutmann's godzilla crypto tutorial。它的可读性很强,可以很好地概述加密货币如何以各种形式工作。