本研究由Mellila Bouam(阿尔及利亚高等信息学院)、Charles Bouillaguet(法国索邦大学、CNRS、LIP6实验室)、Claire Delaplace(法国皮卡第儒勒-凡尔纳大学MIS实验室)和Camille Noûs(法国Cogitamus实验室)合作完成,发表于2021年的期刊*Parallel Computing*第106卷,文章编号102804。
本研究属于密码学与高性能计算交叉领域,聚焦于安全哈希函数SHA-256的“非预期性质”探索。SHA-256作为美国国家标准与技术研究院(NIST)认证的加密哈希函数,其输出理论上应具备不可区分于随机比特串的特性。然而,研究团队通过“暴力搜索”(brute-force)发现了三个输入字符串,其SHA-256哈希值的前128位异或(XOR)结果为零。这一发现并未利用SHA-256的密码学弱点,而是通过大规模计算实现,属于“广义生日问题”(Generalized Birthday Problem)的实践案例。研究目标包括:
1. 验证128位3XOR问题的实际计算可行性;
2. 探索专用硬件(如比特币矿机)在非货币化计算中的应用;
3. 评估现有3XOR算法在高性能计算环境中的实用性。
研究将3XOR问题定义为寻找三个n位字符串(x, y, z),使得f(x)⊕g(y)⊕h(z)=0,其中f, g, h为随机函数。团队对比了五种算法(见表1),最终选择基于Joux改进的广义算法(Bouillaguet等,2018),因其在时间复杂度和内存需求上的平衡性(时间复杂度O(2^(2n/3)/n),内存需求O(2^(n/3)))。
在IBM BlueGene/Q超算上(65,536个PowerPC A2核心,1.6 GHz)实施分治策略:
- 数据分区:将输入数组按哈希最高位划分为2^15个子问题,每个子问题包含2^17个64位哈希值。
- 核心算法:采用改进的3XOR算法(图3),包括:
- 切片构建(Algorithm S):通过Lee-Brickell解码算法寻找满足线性方程的哈希子集,减少迭代次数(切片平均大小59,比朴素方法提升30%效率)。
- 哈希连接(Algorithm J):利用分区哈希表(Cuckoo哈希和线性探测)高效匹配三元组。
- 性能优化:针对BlueGene/Q架构调整参数(如L1缓存利用、多线程负载均衡),最终实现单核33.5秒/子问题的求解速度,较传统二次算法提速5.3倍。
研究强调了“理论算法”与“实际实现”的鸿沟:例如,内存需求O(2^(n/2))的算法虽理论高效,但在n≥128时完全不实用。这一发现对密码分析社区优化算法设计具有指导意义。