本文首发于 2017-10-26 10:05 原地址:http://www.blockchainbrother.com/article/72
区块链技术当中一个很重要的组成部分就是密码学,作为从事区块链研究的工程技术人员,应该对密码学有一定的了解。现我想分享一些密码学的基本概念以供交流学习,大家共同学习,更加充实对区块链技术的理解。
1.发送者和接收者
发送者(sender)即是发送信息消息的人,其想发送消息给接收者(receiver),接收者即是接收信息消息的人。在发送过程中,发送者和合法接收者都希望安全的发送及接收信息消息,并且需要确信第三方(窃听者)不能截取或阅读发送的信息消息。
2.消息和加密
消息(message)即为明文(plaintext)。用某种特定的方式方法对其进行“伪装”处理,以隐藏其的内容的过程,我们称之为加密(encryption)。而被加密之后的消息,我们称之为密文(ciphertext)。当我们将密文转变为明文,这一过程我们称之为解密(decryption)。
这一过程简单来说就是:“明文”>>(加密)>>“密文”>>(解密)>>“原始明文”。
在这一过程当中,使消息保密的技术被称为密码编码学(cryptography),从事这一工作的人,我们称之为密码编码者(cryptographer)。与此对立相反的就是破译密文的技术,我们称之为密码分析学(cryptanalysis),从事这一工作的人即对密码进行分析处理的专业人员,我们称之为密码分析者(cryptanalyst)。
而密码学(cryptology)包括了密码编码学和密码分析学两个部分,所以同时精于此二者的人,我们称之为密码学家(cryptologist)。由于密码学是作为数学的一个分支,现代的密码学家通常也是理论数学家。
注:密码学和数学有着千丝万缕的联系,学习密码学的同时也需要学习数学知识。
明文我们一般用M或P表示,明文可以是位序列、位图、文本文件、数字化的语音序列或数字化的视频图像等等。对于计算机而言,M一般仅简单指二进制数据。明文可以被传送或存储,无论哪种情况,M指待加密的信息消息。
密文我们用C表示,其也是二进制数据,有时和M一样大,有时比M大,但通过压缩和加密的结合,C同样有可能比M小。现我假定加密函数为E,那么E作用于M得到C的过程,可以用数学公式表示:
E(M)=C
相反的,若假定解密函数为D,解密函数D作用于C产生M的过程可以表示为:
D(C)=M
先进行加密操作,后进行解密操作,原始的明文将得以恢复,故有以下等式成立:
D( E(M) )=M
3.密码学的作用
密码学通常的作用是提供机密性,但除此之外,密码学还有以下作用。
鉴别(authentication)消息的接收者应该能够确认消息的来源,第三方入侵者不可能伪装成合法的发送者和接收者。
完整性(integrity)信息消息的接收者应该能够验证信息消息在传送过程中没有被篡改,第三方入侵者不可能用虚假的信息消息代替合法的信息消息。
抗抵赖(nonrepudiation)信息消息的发送者事后不可能单方面虚假的否认是其发送了信息消息。
这些基本的功能都是通过计算机进行社会交流与协作至关重要的需求。现代社会已经变得离不开计算机,计算机也在人类社会的生产建设以及信息交互中扮演了极其重要的角色,以上密码学的基本作用保证了合法用户身份证明,信息消息真实性等,就像面对面的信息验证一样。
于中阳 Mercina-zy