Warning: Trying to access array offset on value of type bool in /www/wwwroot/blockchain/wp-content/themes/Grace8.2/functions_suxingme.php on line 1208

Warning: Trying to access array offset on value of type bool in /www/wwwroot/blockchain/wp-content/themes/Grace8.2/functions_suxingme.php on line 1209

Warning: Trying to access array offset on value of type bool in /www/wwwroot/blockchain/wp-content/themes/Grace8.2/functions_suxingme.php on line 1210

Warning: Trying to access array offset on value of type bool in /www/wwwroot/blockchain/wp-content/themes/Grace8.2/functions_suxingme.php on line 1303

同态加密

1篇文章
工程领域从来没有黑科技;密码学不仅是工程。 密码学相关的安全技术在整个信息技术领域的重要地位无需多言。如果没有现代密码学和信息安全的研究成果,人类社会根本无法进入信息时代。区块链技术大量依赖了密码学和安全技术的研究成果。 实际上,密码学和安全领域所涉及到的知识体系十分繁杂,本章将介绍密码学领域中跟区块链相关的一些基础知识,包括 Hash 算法与摘要、加密算法、数字签名和证书、PKI 体系、Merkle 树、布隆过滤器、同态加密等。大家通过阅读本文,了解如何使用这些技术保护信息的机密性、完整性、认证性和不可抵赖性。 Hash 算法与数字摘要 定义 Hash(哈希或散列)算法是非常基础也非常重要的计算机算法。它能将任意长度的二进制明文串映射为较短的(通常是固定长度的)二进制串(Hash 值),并且不同的明文很难映射为相同的 Hash 值。 例如计算一段话 “hello blockchain world, this is yeasy@github” 的 SHA-256 hash 值。 $ echo "hello blockchain world, this is yeasy@github"|shasum -a 256 db8305d71a9f2f90a3e118a9b49a4c381d2b80cf7bcef81930f30ab1832a3c90 这意味着对于某个文件,无需查看其内容,只要其 SHA-256 Hash 计算后结果同样为 db8305d71a9f2f90a3e118a9b49a4c381d2b80cf7bcef81930f30ab1832a3c90,则说明文件内容极大概率上就是 “hello blockchain world, this is yeasy@github”。 Hash 值在应用中又常被称为指纹(fingerprint)或摘要(digest)。Hash 的核心思想也经常被应用到基于内容的编址或命名算法中。 一个优秀的 Hash 算法,将能实现: 正向快速:给定明文和 Hash 算法,在有限时间和有限资源内能计算得到 Hash 值; 逆向困难:给定(若干)Hash 值,在有限时间内很难(基本不可能)逆推出明文; 输入敏感:原始输入信息发生任何改变,新产生的 Hash 值都应该出现很大不同; 冲突避免:很难找到两段内容不同的明文,使得它们的 Hash 值一致(发生碰撞)。 冲突避免有时候又被称为“抗碰撞性”,分为“弱抗碰撞性”和“强抗碰撞性”。如果给定明文前提下,无法找到与之碰撞的其它明文,则算法具有“弱抗碰撞性”;如果无法找到任意两个发生 Hash 碰撞的明文,则称算法具有“强抗碰撞性”。 很多场景下,也往往要求算法对于任意长的输入内容,可以输出定长的 Hash 结果。 常见算法 目前常见的 Hash 算法包括 MD5 和 SHA 系列算法。 MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年设计的,MD 是 Message Digest 的缩写。其输出为 128 位。MD4 已证明不够安全。 MD5(RFC 1321)是 Rivest…

关注我们的公众号

微信公众号