硬核丨一文读懂区块链中的哈希函数是如何构造的( 二 )


CTR工作模式示意图
工作模式比较

  • ECB模式 , 简单、高速 , 但最弱、易受重发攻击 , 一般不推荐 。
  • CBC模式适用于文件加密 , 比ECB模式慢 , 安全性加强 。 当有少量错误时 , 不会造成同步错误 。
  • OFB模式和CFB模式较CBC模式慢许多 。 每次迭代只有少数比特完成加密 。 若可以容忍少量错误扩展 , 则可换来恢复同步能力 , 此时用CFB或OFB模式 。 在字符为单元的流密码中多选CFB模式 。
  • CTR模式用于高速同步系统 , 不容忍差错传播 。
直接设计哈希函数
Merkle在1989年提出迭代型哈希函数的一般结构;(另外一个工作是默克尔哈希树) , Ron Rivest在1990年利用这种结构提出MD4 。 (另外一个工作是RSA算法) , 这种结构在几乎所有的哈希函数中使用 , 具体做法为:

硬核丨一文读懂区块链中的哈希函数是如何构造的
本文插图
迭代型哈希函数的一般结构示意图
  • 把所有消息M分成一些固定长度的块Yi
  • 最后一块padding并使其包含消息M的长度
  • 设定初始值CV0
  • 【硬核丨一文读懂区块链中的哈希函数是如何构造的】循环执行压缩函数f , CVi=f(CVi -1||Yi -1)
  • 最后一个CVi为哈希值
  • 算法中重复使用一个压缩函数f
  • f的输入有两项 , 一项是上一轮输出的n比特值CVi-1 , 称为链接变量 , 另一项是算法在本轮的b比特输入分组Yi-1
  • f的输出为n比特值CVi , CVi又作为下一轮的输入
  • 算法开始时还需对链接变量指定一个初值IV , 最后一轮输出的链接变量CVL即为最终产生的杂凑值
  • 通常有b>n , 因此称函数f为压缩函数
  • 算法可表达如下:CV0=IV= n比特长的初值
  • CVi=f(CVi-1,Yi-1);1≤i≤L
  • H(M)=CVL
  • 算法的核心技术是设计难以找到碰撞的压缩函数f , 而敌手对算法的攻击重点是f的内部结构
  • f和分组密码一样是由若干轮处理过程组成
  • 对f的分析需要找出f的碰撞 。 由于f是压缩函数 , 其碰撞是不可避免的 , 因此在设计f时就应保证找出其碰撞在计算上是困难的
作者:加密谷Live;来自链得得内容开放平台“得得号” , 本文仅代表作者观点 , 不代表链得得官方立场 凡“得得号”文章 , 原创性和内容的真实性由投稿人保证 , 如果稿件因抄袭、作假等行为导致的法律后果 , 由投稿人本人负责 得得号平台发布文章 , 如有侵权、违规及其他不当言论内容 , 请广大读者监督 , 一经证实 , 平台会立即下线 。 如遇文章内容问题 , 请发送至邮箱:linggeqi@chaindd.com


推荐阅读