md5 如何实现雪崩效应的

2021-04-05 20:31:13 +08:00
 quxinna
在密码学中,雪崩效应( Avalanche effect )指加密算法(尤其是块密码和加密散列函数)的一种理想属性。雪崩效应是指当输入发生最微小的改变(例如,反转一个二进制位)时,也会导致输出的剧变(如,输出中一半的二进制位发生反转)。在高品质的块密码中,无论密钥或明文的任何细微变化都应当引起密文的剧烈改变。该术语最早由 Horst Feistel 使用,尽管其概念最早可以追溯到克劳德・香农提出的扩散( diffusion )。
8439 次点击
所在节点    程序员
44 条回复
gaoryrt
2021-04-06 11:04:59 +08:00
@love 某种程度上来说 hash 也有解密的,不过加密过程中损失的信息需要在理想彩虹表的筛选过程中补偿回来罢了
Flymachine
2021-04-06 11:44:58 +08:00
计算 MD5 时,实际上算的是是“数据+填充字节+数据长度取模”。这样长度的变化必然会导致 MD5 计算结果的变化。至于每一位的变化如何引发 MD5 的变化,你可以理解一下核心的这四个变换函数:

#define F(x,y,z) ((x & y) | (~x & z))
#define G(x,y,z) ((x & z) | (y & ~z))
#define H(x,y,z) (x^y^z)
#define I(x,y,z) (y ^ (x | ~z))

计算 MD5 时会把每一 512 字节的数据会分成 16 个小组,然后去做这 4 个变换运算,结果参与下一个小组运算。
毫无疑问,只要数据中有一位发生了变化,变换函数的结果必然也会发生变化。在之后的运算中差异便会被累积起来,从而使结果出现较大的变化。

我没学过密码学,所以没法说这四个函数是基于怎样的原理设计出来的。只能根据 MD5 的实现代码给你一些参考。
doublleft
2021-04-06 12:04:51 +08:00
@marcong95 #20 给这个大哥逼( force )成啥样了
QBugHunter
2021-04-06 12:58:50 +08:00
问个问题,楼主这个帖子是陈述句还是疑问句?
Flymachine
2021-04-06 13:03:36 +08:00
话说目前 MD5 算法已经不安全了,王小云的研究,且现在已经有搞病毒搞流氓软件的在利用这项技术了。
现在比较简单的散列算法里也就 SHA-1 还能用(虽然也不安全了),之后还是要换成 SHA-256 之类的高强度算法
nnnToTnnn
2021-04-06 13:26:16 +08:00
cryptographic algorithms

1. Hash functions
2. Symmetric-key algorithms
3. Asymmetric-key algorithms
agdhole
2021-04-06 13:43:41 +08:00
别在代码里面把 md5 当加密用就行
sakura1
2021-04-06 13:47:04 +08:00
借楼问一下,为什么我不能新建主题了
iyaozhen
2021-04-06 13:48:07 +08:00
其实 MD5 就是要雪崩效应,稍微不一样 hash 出来的要不一样 不然就有规律了
BeautifulSoap
2021-04-06 13:50:51 +08:00
论计算机领域里不靠谱翻译导致的各种没有意义的问题和争吵
hxndg
2021-04-06 14:11:10 +08:00
@singerll

@AoEiuV020

@Vegetable
@marcong95

上学那会写密码学相关的论文的时候,我们一般都不说 hash 是加密,最多说个单向。
因为 hash 就是 hash,hash 这几个字就明白的说明了 hash 的功能,而不是上来就说加密。
名词选择的不准确会干扰听的人的理解。

再说 lz 的题目说的是 md5 如何实现雪崩效应
但是内容和题目完全不沾边,只是解释了雪崩是啥

从本质来说上就是混淆和扩散,
yunyuyuan
2021-04-06 16:18:07 +08:00
这都能吵起来
IvanLi127
2021-04-06 16:31:04 +08:00
前面几楼怎么这么容易高潮。。。这算严谨过度了吧
felixcode
2021-04-06 16:35:30 +08:00
楼主只想自问自答,自答完了就结帖了,把这当成了记事本,却没想到有这么多回复。
jhdxr
2021-04-07 00:20:30 +08:00
@Flymachine sha-1 安全????
Flymachine
2021-04-07 09:28:02 +08:00
@jhdxr “也就 SHA-1 还能用(虽然也不安全了)”,能用和安全是两个概念...
毕竟不是每个领域都需要像金融业那么注重安全。虽然 SHA-1 已经不被推荐使用,但至少碰撞难度还是比较高的,说一句“能用”没啥差错吧?
jhdxr
2021-04-07 11:38:55 +08:00
@Flymachine 目前,或者说从去年开始,就已经有针对 sha1 的选择性前缀的碰撞攻击( a chosen-prefix collision )了。我不认为在这样的情况下,这依然能够被认为是尽管不安全但还在能用的边缘。

ref: https://eprint.iacr.org/2020/014.pdf
Flymachine
2021-04-07 12:43:32 +08:00
@jhdxr 好吧,我没有关注这件事,4.5 万美金的破解成本确实不算太高了。看来只能上 SHA-256 或者 SHA-3 了...
unco020511
2021-04-07 14:08:40 +08:00
@singerll hash 什么时候属于加密算法了?你自己去维基百科上看看加密的定义,md5 这样的摘要算法绝对不属于加密算法
singerll
2021-04-07 15:24:52 +08:00
@unco020511 你看下国家密码局颁发的国密算法文件。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/768165

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX