神奇的密码学

密码学(英语:Cryptography)可分为古典密码学和现代密码学。在西方语文中,密码学一词源于希腊语kryptós“隐藏的”,和gráphein“书写”。古典密码学主要关注信息的保密书写和传递,以及与其相对应的破译方法。而现代密码学不只关注信息保密问题,还同时涉及信息完整性验证(消息验证码)、信息发布的不可抵赖性(数字签名)、以及在分布式计算中产生的来源于内部和外部的攻击的所有信息安全问题。古典密码学与现代密码学的重要区别在于,古典密码学的编码和破译通常依赖于设计者和敌手的创造力与技巧,作为一种实用性艺术存在,并没有对于密码学原件的清晰定义。而现代密码学则起源于20世纪末出现的大量相关理论,这些理论使得现代密码学成为了一种可以系统而严格地学习的科学。

密码学是数学和计算机科学的分支,同时其原理大量涉及信息论。著名的密码学者罗纳德·李维斯特解释道:“密码学是关于如何在敌人存在的环境中通信”,自工程学的角度,这相当于密码学与纯数学的差异。密码学的发展促进了计算机科学,特别是在于计算机与网上安全所使用的技术,如访问控制与信息的机密性。密码学已被应用在日常生活:包括自动柜员机的芯片卡、计算机用户访问密码、电子商务等等。

密码学信息安全及密码学技术,是整个信息技术的基石。在区块链中,也大量使用了现代信息安全和密码学的技术成果,主要包括:哈希算法、对称加密、非对称加密、数字签名、数字证书、同态加密、零知识证明等。本章从安全的完整性、机密性、身份认证等维度,简要介绍区块链中安全及密码学技术的应用。

区块链采用密码学哈希算法技术,保证区块链账本的完整性不被破坏。哈希(散列)算法能将二进制数据映射为一串较短的字符串,并具有输入敏感特性,一旦输入的二进制数据,发生微小的篡改,经过哈希运算得到的字符串,将发生非常大的变化。此外,优秀哈希算法还具有冲突避免特性,输入不同的二进制数据,得到的哈希结果字符串是不同的。

区块链利用哈希算法的输入敏感和冲突避免特性,在每个区块内,生成包含上一个 区块的哈希值,并在区块内生成验证过的交易的 Merkle 根哈希值。一旦整个区块链某些 区块被篡改,都无法得到与篡改前相同的哈希值,从而保证区块链被篡改时,能够被迅 速识别,最终保证区块链的完整性(防篡改)。

加解密技术从技术构成上,分为两大类:一类是对称加密,一类是非对称加密。对称加密的加解密密钥相同;而非对称加密的加解密密钥不同,一个被称为公钥,一个被称为私钥。公钥加密的数据,只有对应的私钥可以解开,反之亦然。

区块链尤其是联盟链,在全网传输过程中,都需要 TLS(Transport Layer Security)加 密通信技术,来保证传输数据的安全性。而 TLS 加密通信,正是非对称加密技术和对称 加密技术的完美组合:通信双方利用非对称加密技术,协商生成对称密钥,再由生成的 对称密钥作为工作密钥,完成数据的加解密,从而同时利用了非对称加密不需要双方共 享密钥、对称加密运算速度快的优点。

身份认证

单纯的 TLS 加密通信,仅能保证数据传输过程的机密性和完整性,但无法保障通信 对端可信(中间人攻击)。因此,需要引入数字证书机制,验证通信对端身份,进而保证对端公钥的正确性。数字证书一般由权威机构进行签发。通信的一侧持有权威机构根 CA(Certification Authority)的公钥,用来验证通信对端证书是否被自己信任(即证书是否 由自己颁发),并根据证书内容确认对端身份。在确认对端身份的情况下,取出对端证 书中的公钥,完成非对称加密过程。

此外,区块链中还应用了现代密码学最新的研究成果,包括同态加密、零知识证明等,在区块链分布式账本公开的情况下,最大限度地提供隐私保护能力。这方面的技术,还在不断发展完善中。

对称密钥加密

对称密钥加密是密码学中的一种加密法,是以转换其中一个数字、字母或仅字符串随机字母,一个秘密密钥会以特定的方式变更消息里面的文字或字母,例如更换字母相对位置(例如hello变成lohel)。只要寄件者与收件者知道秘密密钥,他们可以加密和解密并使用这个数据。

公开密钥加密

公开密钥加密(也称为非对称加密)是密码学中的一种加密法,非对称密钥,是指一对加密密钥与解密密钥,某用户使用加密密钥加密后所获得的数据,只能用该用户的解密密钥才能够解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了其中一个密钥,并不会危害到另外一个。因此公开的密钥为公钥;不公开的密钥为私钥。

数字签名

数字签名(又称公钥数字签名、电子签名)是一种类似写在纸上的签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。在网上上,我们可以使用“数字签名”来进行身份确认。数字签名是一个独一无二的数值,若公钥能通过验证,那我们就能确定对应的公钥的正确性,数字签名兼具这两种双重属性:"可确认性"及"不可否认性(不需要笔迹专家验证)"。

区块链安全是一个系统工程,系统配置及用户权限、组件安全性、用户界面、网络入侵检测和防攻击能力等,都会影响最终区块链系统的安全性和可靠性。区块链系统在实际构建过程中,应当在满足用户要求的前提下,在安全性、系统构建成本以及易用性等维度,取得一个合理的平衡。

---------------------------------------------

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181108G0N97200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动