为什么 SHA-1 可以被认为是一种安全的散列函数?这是我仍然想知道的事情。
我理解为什么现代非对称算法被认为是安全的概念。它们建立在可证明“难以”解决的可靠数学问题之上,例如有限域中的离散对数或整数分解。如果了解数学概念,则安全声明和证明的概念相对容易理解。
但是当涉及到对称加密和安全散列函数时,情况就变得不那么清晰了。我知道对于分组密码和摘要算法存在很多结果和分析,但是这些结果是基于什么?
例如,当涉及到分组密码时,您可以找到很多证明密码算法 X 可以抵抗一定数量的已知攻击的证据。或者他们证明某些属性成立,例如输入的每一位都会影响输出,因为这被认为是必要的等等。
从外部看,密码和摘要算法的构造看起来像是通过应用位移、XOR 等“尽可能地摆弄和弄乱输入”。
我现在想知道的(我将不胜感激对两者都有更深入的了解):
a) 您能否向我提供一些资源(首选书籍)的指针,这些资源解释了构建一个必须考虑的设计和安全性考虑因素
a1) 密码算法
a2) 摘要算法
这可以解释的东西,如为什么的S-box必须看起来完全相同的方式它,而不是任何其他方式,可能更重要的是对我和我的理解,为什么它是否构建了不同这将是坏?
b)是否存在或正在尝试对这些“位摆弄操作”进行数学建模(例如,“代数攻击”是否基于这样的模型?)?
c) 你如何“衡量”一个摘要算法的质量,比如 SHA-1?即,你怎么能说在这里进行两位移位而不是三位或异或移位更好,为什么这些操作首先是 SHA-1 的基础?因为当时它似乎是唯一已知的会“最大程度地混淆”输入的东西?我之所以问,是因为似乎大多数 SHA-3 候选者要么基于密码算法(因为有更多的理论结果),要么基于诸如海绵函数之类的新概念。对我来说,任何 SHA 算法(MD5 也是)的定义仍然看起来像“让我们搞砸这个,好吗?” - 但它背后的原因是什么?为什么要像他们那样做?
如果您能让我深入了解这些主题中的任何一个,我将非常高兴。