像SHA-256这样的大多数散列算法的一个问题是它本身是串行的。不能有效地使用SIMD并行单个SHA-256计算。
但是,您可以高效地并行计算多个SHA-256散列,因为您可以将每个算法保持在SIMD寄存器的一个车道上。
以SSE为例:每个寄存器有四个32位的通道。并行计算SHA-256四次是有意义的。我们可以定义一种新的哈希算法来计算单个文件的哈希,将输入分割成四块,计算四块(并行)的散列,然后通过散列最后四个子散列来生成最终结果。显然,这将是一个新的哈希函数,不匹配正常的SHA-256。
这种设计是否存在安全问题,而正常的哈希算法不存在呢?
发布于 2019-07-16 20:47:33
这种设计是否存在安全问题,而正常的哈希算法不存在呢?
至少不是为了防撞。
假设您可以基于哈希函数H_p为复合构造H生成一个冲突。然后就会有两个输入x\neq x',比如H_p(x)=H_p(x')。然后,要么在最后的哈希调用上出现冲突,然后我们可以按照H_p的描述重构相关的输入。或者,最后调用的所有输入在x,x'和不同的切片之间是相等的,然后在H中产生冲突,我们可以重构冲突。
因此,对于H_p来说,每一次碰撞都意味着H会发生冲突,但是由于我们假设H具有抗碰撞能力,所以对于H_p来说并不存在有效的冲突。
https://crypto.stackexchange.com/questions/71993
复制相似问题