你引用的建议有点矫枉过正。需要考虑的一点是,超过某个级别(例如在密钥大小或散列函数输出大小上),所有函数都是“用可预见的技术无法破解的”,比较它们有点微妙。说 SHA-512 比 SHA-256 “更强大”意味着您在想象 SHA-256 可能会被破坏,据我们现在和未来 40 年所知,这是不正确的(超过 40 年) ,试图设想我们可以拥有什么技术是有风险的;40 年前,没有人想象今天的互联网,但大多数人认为到 2010 年我们都会驾驶飞行汽车)。
AES-128 已经足够安全,而且更便宜(AES-256 使用 14 轮,而 AES-128 使用 10 轮)。
目前最大的破坏 RSA 密钥是一个 768 位模数,它花费了一些巨大的努力(四年,真是大脑袋)。1024 位密钥被认为可用于短期安全,但鼓励使用更大的密钥。2048 位密钥是合适的。使用两倍大的密钥意味着签名或解密工作量增加 8 倍,因此您不想过度使用它。有关RSA 密钥长度如何与安全性相关的调查,请参阅此站点。
256 位曲线上的 ECDSA 已经实现了“牢不可破”的安全级别(即,与使用 128 位密钥的 AES 或针对冲突的 SHA-256 大致相同的级别)。注意素数域有椭圆曲线,二元域有曲线;哪种最有效取决于所涉及的硬件(对于类似大小的曲线,PC 会更喜欢素数字段上的曲线,但使用二进制字段更容易构建专用硬件;较新的 Intel 和 AMD 处理器上的CLMUL指令可能会改变)。
SHA-512 使用 64 位操作。这在 PC 上很快,而在智能卡上则不那么快。SHA-256 通常更适合小型硬件(包括家庭路由器或智能手机等 32 位架构)。
目前,廉价的 RFID 系统的功率太低,无法使用上述任何一种(换句话说,RFID 系统可能没有想象中的那么便宜)。RFID 系统仍然使用经常存在安全问题的自定义算法。另一方面,手机具有足够的 CPU 能力,可以使用 AES 或 RSA 进行适当的加密(是的,即使是便宜的非智能手机)。