例如,RSA依靠数学上的难题进行分解,而ECDSA或类似的问题则依靠离散的对数问题。图像和碰撞攻击?它背后的数学原理是什么?

评论

检查这些1 2 3

感谢您的良好链接。我的问题与“我们为什么不能逆转哈希值”不同,因为我不想逆转哈希值,只是好奇(如果有的话)哈希函数“安全性”的数学基础,而不是混淆和混淆。似乎SHA256中的压缩f不能证明是安全的,只是很难。

值得注意的是,RSA和ECDSA目前也不是安全的。我们认为保理和DLP很难,因为我们所认识的人都找不到有效的方法。但是我们无法证明它们的硬度,也许我们永远也不会。

#1 楼

值得指出的是,在SHA2和大多数其他散列的情况下,压缩功能以分组密码(键置换)为核心。

基本上,您要问的内容与询问如何可以分组密码相同能够抵抗已知明文攻击和选择明文攻击(可能不适用于SHA2,因为攻击者无法控制该方面),甚至在SHA2情况下也可以进行相关密钥攻击(因为它使用了Davies-Meyer攻击者可以控制进入关键时间表的内容)。

没有证据表明该方法可简化为证明是安全的方法。由于扩散和混淆特性,据信它是安全的,就目前所知,这种特性不允许有效的回溯。您可以将其视为离散的非连续域中对初始条件的极端敏感性。

编辑:之所以要阻止密码,是因为哈希安全性可证明可简化为核心键置换(如果您查看SHA3,甚至是无键)-这就是散列设计的开始方式。我相信这是您查询的精神。但是责任到此为止,没有针对这些的安全证明。

#2 楼

SHA-256的设计和安全性依赖于两种密码结构。一种单向压缩函数,该函数基于使用SHACAL-2块密码的Davies-Meyer结构以及最顶部的使用Davies-Meyer结构的Merkle-Damgård结构。压缩功能:将$ 2n $位的输入转换为$ n $位。转换以达到雪崩效应的方式执行,即每当输入补充一位时,每个输出位就会以50%的概率发生变化。 />
一种压缩函数应该具有这些属性;



易于计算:对于给定的输入,输出的计算很容易。 >
抗预映像:给定哈希值$ h $,找到一条消息$ m $,使$ h = Hash(m)$。考虑在服务器上存储密码哈希。例如。攻击者将尝试为您的帐户找到有效的密码。

第二个防止镜像前的攻击:给定一条消息$ m_1 $在计算上不可能找到另一条消息$ m_2 $这样的$ m_1 \ neq m_2 $和$ Hash(m_1)= Hash(m_2)$。对给定的消息进行伪造。

抗冲突性:如果很难找到两个输入散列到相同输出$ a $和$ b $的输入,使得$ H(a)= H(b)$,$ a \ neq b。$




耐碰撞性意味着第二次成像前耐性。如果攻击者能够找到第二个原像,则他选择任意$ m_1 $,然后计算第二个原像$ m_2 $以获得冲突。但是抗碰撞性并不意味着原像抗性。详见Rogaway等。纸。

(SHA256压缩功能,来自维基百科)

中级;


Davies-Meyer结构是基于分组密码的单向压缩功能。这种构造的安全性在理想密码模型中。但是,这种结构是有财产的。即使底层的分组密码是安全的,也可以找到固定点。
SHA-256的分组密码称为SHA-CAL-2。在陆等。 Lu等人针对42轮SHACAL-2攻击提出了一个相关的关键矩形攻击。等后来,卢等人。等人针对SHACAL-2的44轮攻击提出了另一种使用“相关密钥矩形密码分析”的攻击。

顶层;




Merkle–Damgård结构(MD)使用压缩功能。如果压缩功能是抗碰撞单向压缩功能,则MD是抗碰撞的。MD结构具有长度扩展攻击,SHA-256也很容易受到这种攻击。建议切换SHA-3。

注意:在64轮SHA-256攻击中有52次有图像前抵抗攻击。

评论


$ \ begingroup $
@rapadura您是否尝试过在GitHub上寻找SHA-256?例如,B-Con /加密算法。
$ \ endgroup $
–森林
19年1月10日在8:46



$ \ begingroup $
我会首先列出“防碰撞”,因为它的条件比“第二防前图像”要弱。 (如果我们可以破坏第二个原像电阻,那么我们可以通过选择一个随机的$ a $作为$ m_1 $,然后使用第二个原像算法来计算$ b $,从而轻微地破坏碰撞阻力。找到碰撞的算法,这使我们无法找到第二张原像)
$ \ endgroup $
–马丁·邦纳(Martin Bonner)支持莫妮卡(Monica)
19年1月10日在10:09



$ \ begingroup $
“雪崩效应,即每个输出位取决于每个输入位”是吗?我可能记错了,但我认为理想的雪崩效应是当每个输入位影响一半输出位时。
$ \ endgroup $
–用户
19年1月10日在12:00

$ \ begingroup $
@aCVn当您翻转输入中的单个位时,应该翻转大约50%的输出位。但是请注意,如果您为不同的输入翻转索引0处的位,则被翻转的输出位将发生变化,并且您希望所有可能的子集都变为可能。因此,从这个意义上说,所有输出位都依赖于每个单个位,而比较两个差异仅一个位的输入时,应该得到大约50%的差异。
$ \ endgroup $
–巴库留
19年1月10日在19:35

$ \ begingroup $
尽管它们都是非常好的答案,但仍将接受此答案。学到了很多东西,谢谢大家。
$ \ endgroup $
–rapadura
19年1月11日14:47