Skip to main content
QUICK REVIEW

[论文解读] Instruction sequence expressions for the secure hash algorithm SHA-256

J.A. Bergstra, C.A. Middelburg|arXiv (Cornell University)|Aug 1, 2013
Cryptographic Implementations and Security参考文献 19被引用 10
一句话总结

本文提出了一种基于程序代数(PGA)的、数学上精确的、以指令序列为基础的SHA-256实现,将哈希函数建模为由布尔寄存器操作、跳转和终止指令组成的有限、单遍指令序列。主要贡献在于对任意长度比特串的SHA-256进行了统一的代数描述,其指令序列大小被证明为729,464·N + 1,025,其中N为32位字的数量。

ABSTRACT

The secure hash function SHA-256 is a function on bit strings. This means that its restriction to the bit strings of any given length can be computed by a finite instruction sequence that contains only instructions to set and get the content of Boolean registers, forward jump instructions, and a termination instruction. We describe such instruction sequences for the restrictions to bit strings of the different possible lengths by means of uniform terms from an algebraic theory.

研究动机与目标

  • 为NIST标准中SHA-256的伪代码描述提供一种数学上精确的形式化替代方案。
  • 仅使用基本指令序列原语(寄存器操作、前向跳转和终止)对固定长度比特串的SHA-256计算进行建模。
  • 证明在程序代数(PGA)框架内表达复杂密码原 primitive(如SHA-256)的可行性与可扩展性。
  • 为利用指令序列理论分析密码算法的计算复杂度与算法等价性奠定基础。

提出的方法

  • 使用程序代数(PGA)定义仅包含基本指令的指令序列:设置/获取布尔寄存器值、前向跳转和终止。
  • 将32位字编码为32个布尔寄存器的序列,从而通过代数运算实现位级操作。
  • 使用参数化指令序列定义核心操作(如模加法、按位移位、循环左移、异或)在32位字上的运算。
  • 将完整的SHA-256计算构建为各算法阶段(消息扩展、压缩函数)的参数化指令序列的组合。
  • 使用统一的代数表达式描述任意输入长度N的指令序列,确保模块化与可扩展性。
  • 通过精确对齐指令序列结构与NIST标准的算法描述,验证其正确性。

实验结果

研究问题

  • RQ1SHA-256哈希函数能否仅使用程序代数中的基本指令序列操作被形式化且精确地描述?
  • RQ2计算任意长度输入N的SHA-256所需的精确指令序列大小是多少?
  • RQ3在此模型中,指令序列大小与计算时间之间的关系如何?该关系是否为多项式关系?
  • RQ4PGA的代数结构能否以可扩展且可验证的方式支持复杂密码原 primitive(如SHA-256)的形式化规格说明?
  • RQ5该形式化在多大程度上能够支持对密码算法中算法复杂度与等价性的新分析?

主要发现

  • 针对N个32位字的SHA-256指令序列总长度为729,464·N + 1,025条指令,该结果基于对算法各阶段的精确结构分解得出。
  • 该模型仅使用基本操作——寄存器设置、测试、前向跳转和终止,证明SHA-256可在单遍、有限的指令序列中计算,无需递归或复杂控制结构。
  • 所用辅助寄存器数量恒定为2,945个,与输入长度无关,表明状态管理高效。
  • 所需输入寄存器的最大数量为2^64,反映了消息长度的理论上限(最多2^64 - 1位)。
  • 输出寄存器数量固定为256个,对应于256位的哈希输出。
  • 结果表明,该模型中指令序列大小与计算时间呈多项式关系,支持将大小作为密码算法复杂度度量的合理性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。