根据定义,Not 2nd-preimage抵抗意味着:存在至少一个x(已知),以便很容易找到另一个x',使得h(x)= h(x')。
虽然,不碰撞表示:很容易找到至少一个这样的对(x,x')h(x)= h(x')
我认为这里没有任何区别,任何人都可以说出来?或者我给出了错误的定义?
并且,据说“不碰撞并不一定意味着不是第二抗原图像”,为什么会这样?
答案 0 :(得分:2)
把它放到另一个答案中,因为输入评论太多了。
第二抗原图像的定义是你有h(x)和x,并且不能创建x'。
抗preimage的定义(没有秒!)意味着你只有h(x),并且不能创建x。
抗冲突的定义是你什么都没有,可以选择任何h(x),x和x'。
如果使用哈希对明文消息进行签名,则需要具有第二防伪性能,但不能防止碰撞。如果有人能够找到两条产生与您的哈希不同的哈希的冲突消息,那么对您来说并不重要,但是您希望确保没有人能够创建具有您的哈希值的不同的消息,即使他们知道你的明文。
如果你使用散列来存储散列密码,你不关心碰撞阻力,你不关心第二前像素抗性,你需要的是前映像抗性。如果攻击者知道一个密码,您并不在乎他是否可以使用该密码来查找其他密码。
所以这些是不需要抗碰撞性的两个例子,但是前像素抗性或第二前像素抗性是。
至于“不碰撞并不一定意味着不是第二抗原图像”,为什么会这样? ,考虑哈希函数if x has less then 24 bits, then h(x)=0, else h(x)=sha256(x)
。这显然不是抗冲击的(选择任何2个字母少于4个字母),但是,只要你的文字更长,这个功能就是抗原像素和抗2-preimage抗性(假设sha256没有被破坏)尚未)。
答案 1 :(得分:1)
第二个preimage抗性意味着,当你只有h(x)和x时,没有(简单的)方法可以找到第二个x(称为x')。
碰撞阻力意味着有一种(简单)方法可以找到随机对(x,x'),其中h(x)= h(x')。
所以第二个更弱。想想前一段时间MD5发生了什么:有一种算法可以找到产生相同输出的输入字节对。但这仅适用于特定构造的输入,而不适用于随机输入。因此,虽然 可以找到有冲突的消息,但通用情况“x是某些特定消息,找到与MD具有相同MD5的第二条消息”尚未解决。