我正在阅读一篇关于Arch Linux 维基关于系统加密,在一个示例中,作者指定了一个 512 位密钥。从我在 Wikipedia 上阅读的有关加密密码的内容来看,它似乎不够安全。这让我想到一个问题:最强的密钥大小是多少?
答案1
我没有足够的声誉来评论上述有关 RSA 的答案,但它们在所提问题的背景下都是错误的,因此对于将来碰巧阅读此问题的所有人来说:
LUKS 用途对称密码(加密和解密使用相同的密钥)。RSA 是一种不对称密码系统,使用一个密钥加密,另一个密钥解密。为了实现这一点,它使用了一个巧妙的数学原理。它的安全性基于分解的难度大的数字。这就是为什么 RSA 的密钥大小必须为数千位(否则所涉及的数字不够大,并且如果攻击者拥有足够的资源,则可以在可接受的时间内计算出来)。
像 LUKS 这样的对称密码系统不需要同样大的密钥大小,因为密钥与可以分解以破解加密的数字无关。因此,它们被认为使用更小的密钥大小是安全的。目前 128 位被认为是安全的。如果您比较谨慎,对称加密的标准算法 AES 也支持 256 位。
需要 2n次尝试才能彻底搜索对称密码的密钥空间,其中n
是密钥的长度(以位为单位)。
让您了解所涉及的规模:如果您有 1000 万台计算机,每台计算机每秒可以测试 1000 万个密钥,那么搜索 128 位密钥大小的所有密钥仍需要当前宇宙年龄的数千倍。
这意味着无论攻击者是谁,你都可以免受暴力攻击。暴力破解对称密钥不是解决问题的办法。当你使用 AES 等高质量密码时,即使攻击密码中的弱点也很困难,尽管 NSA 可能有一些其他人没有的见解。但坦率地说,用大棍子打你的头直到你放弃密码。
答案2
没有strongest possible key
。
对于每个长度的密钥,n
您总是可以添加一位来使其更强大。
答案3
RSA 本身存在弱点,如下RSA 算法“RSA 的弱点”部分,以及破解RSA和RSA:黑客与破解。
话虽如此,如果破解加密的方法仅仅是蛮力,那么最强大的密钥大小将需要比试图解密您的消息的黑客所能提供的更多的计算能力,或者比他愿意花费的更多的时间。
最近,一个 200 长的 RSA 密钥需要 50 年的计算机时间来分解,而一个 307 长的密钥则需要 100 年的计算机时间来分解。我想即使是 128 位的密钥也需要几年的计算机时间。
1024 位可能可以防范大多数犯罪团伙,但 512 位甚至 128 位可能也可以。1024 位更可靠,但您是否希望拥有美国国家安全局计算能力的机构会用来对付您?
如果您只是试图保护自己免遭邻居脚本小子的攻击,那么 128 位就足够了。如果您试图保护您的银行交易,那么没有黑客会浪费时间尝试解密 RSA,而是会尝试诱骗您安装他的木马。
答案4
Pascal 对位大小以及对称和非对称加密之间的差异有很好的解释。不过,还有一些其他因素需要考虑,例如密码。CBC 和 XTS 之间的差异在这个堆栈线程。XTS 密码将密钥大小减半。如果您想要 AES-128,则需要将密钥大小设置为 256。对于 AES 256,位大小为 512。
cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --key-size 512 --hash sha256 -use-random /dev/sda5
附注:您选择的熵源对于加密密钥的生成也很重要。如果私钥需要长期使用,则 /dev/random 可能比 /dev/urandom 更好。根据 urandom 手册页:
如果您不确定应该使用 /dev/random 还是 /dev/urandom,那么您可能想使用后者。一般来说,除了长期有效的 GPG/SSL/SSH 密钥之外,应该使用 /dev/urandom。