『区块链』密码学原语如何应用?解析单向哈希的妙用( 三 )


基于哈希算法的输入敏感性 , 接收方可以知道至少有一个比特的数据被篡改了 , 但不知道具体在哪里 。 发送方不得不对所有数据进行重发 , 在这种情况下 , 攻击者很容易对隐私保护方案实施拒绝服务攻击 。
为了解决这一点 , 本改进方案中 , 将原始文件分成一系列数据块 , 为每一个数据块分别计算哈希值 。 接收方验证的过程与方案1相似 , 区别在于可以对具体的数据块进行验证 , 一个数据块被篡改 , 导致的哈希值不匹配不会影响到其他数据块的验证 , 由此实现了篡改定位需求 。
这里中间缺了关键的一步 , 即如何高效灵活地传输这些哈希值 , 并在原始文件很大时 , 灵活支持部分数据的获取和验证?
解决这些问题的要点 , 在于利用好哈希树的特性 。
『区块链』密码学原语如何应用?解析单向哈希的妙用
本文插图
哈希树中 , 最底层的叶子层是各个数据块的哈希值 , 往树根的方向迭代哈希计算 。 即把相邻的两个节点的哈希值串连之后 , 再进行哈希运算 , 这样每两个哈希值就生成一个新的哈希值 , 重复以上计算过程 , 直到仅剩下一个哈希值(根哈希) , 最终形成一棵倒挂的树 。
在哈希值传输方面 , 接收方只需要通过可信信道下载一个根哈希 , 其他数据都可以通过低成本低密级信道传输 。
在支持部分数据的获取和验证方面 , 接收方只需要获取所需的部分数据块、根哈希 , 途经分支节点的哈希值 , 以O(log(n))的时间复杂度便可完成数据的验证 , 并实现被篡改数据块的快速定位 。
除了哈希树之外 , 根据业务需求的差异 , 单向哈希还能用于构造有向无环图等更复杂的数据结构 。 一般而言 , 其作用相当于连接各个数据点的锁扣 , 为相关数据建立公开可验证的密码学约束 , 使之难以被篡改 , 以此保障数据的正确性 。
『区块链』密码学原语如何应用?解析单向哈希的妙用
本文插图
正是:隐私数据真假难分辨 , 单向哈希守正不轻挠!
单向哈希是密码学中处于核心地位的密码学原语 , 可用于构建难以篡改的可信数据源、高效灵活的数据完整性验证机制等 , 以此来保障隐私保护方案中隐私数据的正确性 。
本论中 , 我们介绍了单向哈希的基础应用 , 在往后的文章中 , 我们还会进一步介绍单向哈希的高级应用 , 包括构造密码学承诺、零知识证明等 。
同时 , 作为密码学中久经考验的基本组件 , 除了单向哈希 , 密码学原语还包括数据编解码、对称加密、非对称加密、数字签名等 , 基础密码学原语还能进一步组成更高级的密码学组件 。 在这一系列中 , 我们将逐一展开与隐私保护密切相关的密码学原语的分享 , 欲知详情 , 敬请关注下文分解 。