我从来没有参加任何关于加密或安全的课程,而且我正在尝试自学一些基础知识,所以请原谅我这是一个愚蠢的问题(不要担心,我不会做任何敏感的事情)< / p>
所以,我正在玩Crypto ++,这样我就可以对文件进行签名,看看文件是否由我以外的其他人编辑过。库附带的测试应用程序看起来像是有选项(rs和rv),它完全符合我自己的程序要求(验证文件签名的完整性)。当然,在这之前我需要生成公钥和私钥。当使用测试应用程序的g选项时,它要求我以位为单位指定密钥长度。密钥长度有什么不同?
答案 0 :(得分:2)
密钥长度决定了某人破解密码的难度。对于数字签名,这意味着某人有多难以生成虚假签名。
对于RSA,1024位的密钥长度足以用于非敏感信息,但它应该只使用几年,然后用新密钥替换。 2048位更强,4096更强。
对于一个天真的蛮力攻击者,在密钥长度上添加一个比特会使他们需要做的工作量增加一倍来破坏密钥。但是,像RSA这样的算法不会以这种方式扩展:2048位RSA密钥不会像1024位密钥那样难以破解2 ^ 1024倍(除非攻击者真的愚蠢)。
通常,公钥算法(例如RSA)需要比对称密钥算法(例如AES)更大的密钥,因为它们依赖于不同的数学属性。
要获得有关密码学的优秀入门读物,请查看Peter Gutmann's godzilla crypto tutorial。它非常易读,可以很好地概述加密如何以各种形式工作。