在的“sha-256布尔电路”中,作者给出了一个用于SHA-256的布尔电路.我觉得这个方法很复杂。
请问如何构造散列函数的布尔电路?我的意思是,给出一个散列函数的算法,如何像本文一样把它转换成一个电路?
发布于 2021-09-21 06:44:14
给出了一个散列函数的算法,如何将其转换成一个电路?
最重要的是,我们首先要更好地陈述这个问题。
其余的则大致遵循穴居人吃猛犸象的技术(一次吃一大块)和从那里取得的进步(工具)。
我们将算法一步一步地进行,展开每个循环,并将每一步表示为布尔方程。例如,如果所有变量都是32位(如SHA-256中的):
C = A ^ B这样的语句可以转换为C的32个新变量,由32个异或门输出,需要32行。我们需要跟踪指定分配给C的新变量的数字。E = C + D需要中间变量,因此需要更多行。我们需要30 满加法器,然后是两个简化的(对于高oder位不执行,从而减少到一个异或;对于第一个没有进位,从而减少到一个异或和一个和)。F = (E<<3)|(E>>29)不需要行,只需要为E重新分配变量。有些技巧有时可以得到更简单的表达式,但对于密码学方面的兴趣,表达式将保持较长的长度。如果不是的话,哈希就会很弱。
从零开始制作这样的程序是相当容易的,根据我的经验,这比找到和掌握足够的东西更容易。现有的工具可以自动简化表达式,但是对于大多数密码散列的分析,对哈希方程的分析将得到最简单的结果,这是可能的,并且可能比自动化工具提供更好的结果。
https://crypto.stackexchange.com/questions/95167
复制相似问题