[请问] 为什么加密杂凑的输出长度一定要固定?

楼主: freebug (Freebug)   2020-12-03 20:14:06
我知道杂凑函数输出长度固定有一部分原因是为了检验资料是否有被更改过
为了使输出长度不要因为输入长度过长而也跟着过长而使杂凑值长度压缩到一定,并且将
资料格式也固定下来
但是加密杂凑函数(CHF)的主要目的除了避免攻击者将杂凑结果易于反推回去之外,不
也同时要避免碰撞发生的机率吗?
那么如果要完全避免碰撞的发生,为什么不让CHF随着某个原讯息长度的区间去做输出杂
凑长度的调整?而是特意使不管原讯息长度多长都固定输出同一个长度的杂凑值呢?
CHF的原讯息(通常为登入密码之类的)长度应该没有长到需要把它压缩到固定长度吧?
例如:
 假设某一密码杂凑函数在原输入长度为128字节或以下,输出长度则固定在129字节
输入长度介于129 ~ 257字节,输出长度则固定在258字节
输入长度介于n ~ n+128字节,输出长度则固定在n+129字节。(n为0或129的正整数
倍)
另外,CHF有为了检验原讯息(登入密码)是否有被更改过的功用吗?
作者: Schottky (顺风相送)   2020-12-03 20:51:00
Cryptographic hash function 常用在以 MB 计的巨大档案另外CHF的首要任务是防止从digest逆推plaintext内容
作者: AnzaiChika (安济知佳)   2020-12-03 20:53:00
因为HASH不会为了抗碰撞性去牺牲它的计算效率 一般情况碰撞机率其实很低正常来说你输入空间越大 产生碰撞机率越大 但是因为你输出的空间本身也大 所以要从两个不同的输入去找出同一个输出其实是很困难的
作者: Schottky (顺风相送)   2020-12-03 20:55:00
所以设计上和对称加密类似,长度不能太长,否则无法在
作者: AnzaiChika (安济知佳)   2020-12-03 20:55:00
不同的算法本来就会有不同的位数 但是你设计成固定长度除了不牺牲效率的另外也有很多好处 例如统计方便操作简单 便于设计
作者: Schottky (顺风相送)   2020-12-03 20:56:00
可容忍的计算速率内隐藏plaintext资讯
作者: AnzaiChika (安济知佳)   2020-12-03 20:56:00
但其实都看设计者是怎么设计 而刚好HASH就是这样 不然你可以想想看 为什么大家身分证都要同样位数? 这样你就懂了 其实不用搞那么复杂
作者: Schottky (顺风相送)   2020-12-03 20:59:00
另外CHF的用法常是要和后续程序结合,所以即使是算法上允许变动输出长度(范围也有限,比如256bits-1024bits)实务上常常会把输出值固定为下一步骤的block大小普通的 hash function 非常容易破解逆推,但不一定较快大多也很容易人工制造 collision加密等级的是专门设计来抵抗这类故意发动的攻击我记得哪个学校的密码学作业其中之一就是破解旧式zip档的密码,那用的是一个普通 hash function 的变形
作者: walkxwalk (唉啊!)   2020-12-04 02:03:00
优秀!
作者: cuteSquirrel (松鼠)   2020-12-05 00:34:00
推 专业讨论文
作者: weltschmerz (威尔特斯克˙闷死)   2020-12-05 21:51:00
不懂 但看这篇讨论很帅

Links booklink

Contact Us: admin [ a t ] ucptt.com