区块链密码学的“前世今生”

提到密码学,我们并不感到陌生,比如许多战争电影中,很多人戴着耳机围绕着机器根据“嘀嘀嘀”的声音截获密文,再进行解密获得军事情报,这就是密码学的早期应用。在
1970
年之前,密码学还基本是由国家权力机构垄断,而后随着技术不断进步,才渐渐进入公众领域。目前密码学作为区块链的核心内容之一,在区块链网络的安全交易、隐私保护还有安全访问中起到不可忽视的作用,是支撑区块链不可缺少的核心技术。所以今天,我们就用通俗易懂的语言跟大家介绍一下“区块链中的密码学”。首先,要从它的发展史说起,这就不得不提到凯撒大帝(Caesar)——
第一个把“替换密码”用于军事用途、并且记录下来的人。他用替换字母的方法创造了最早的“密文”:将每个字母,用字母表中这个字母之后三位的字母替代。这是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。在这个过程中,人人都认识的文本是“明文”,加密的规则是“密钥”,通过密钥,原本大家都认识的明文就变成了看不懂的“密文”。这种加密方法用我们现在的眼光看会稍显幼稚,但在当时,用这种方法形成的“密文”非常难以被破译,而这种用明文加密的思路也被沿用了上千年。随着科学进步,这种代换方法慢慢被人找到了破解方法,比如:学习过英语的我们知道,e是最常见的字母,其次是字母t和a,如果按照凯撒密码加密,一个密码字母对应明码字母,那么密码字母中出现次数最多的很有可能就应该对应明码字母E,以此类推,很容易就可以排除掉大量的密钥,从而快速地找到正确的破译方法。于是在1467年左右,佛罗伦萨的建筑师
Alberti
发明了多表代换密码,也就是在一个多表替换密码的密文中,会使用多个字母作为密码。多字母替换密码比单字母更难破解,因为其替换可能性多。以此为开端,衍生出了非常多设计精良的多表代换密码。而直到二十世纪二十年代,人们才终于可以开始使用各种机械加密设备进行自动加密处理。计算机的诞生帮助密码学跃升至新高度。1984
年 10
月香农(信息论之父)的信息论出现,标志着现代密码学的形成,这时出现了极具代表性的“对称加密算法”,即:当传递信息时,信息先要通过密钥进行加密,加密后的明文以二进制的方式转播,再通过相同的密钥解密获得信息。值得一提的是:“对称加密”,密钥只有一把,如果你想让一个人看到你用密钥加密的信息,就必须把密钥传递给对方,对方才能进行解密。但这种加密的方式有一个问题,一旦密钥在传输过程被黑客截取,那么自己加密的信息则会面临被破译的风险,所以密钥的保存与安全传输就成了关键问题。直到1876年,“非对称加密”现世后,人们才攻克这一难关,同时也标志着公钥密码学的成型。它相较之前的“对称加密”,最大的区别就是:“非对称加密”的加密和解密过程分别使用了“公钥”和“私钥”,密钥不再只有一个,而是以一对的方式出现。1976
年,Whitfield Diffie 和 Martin Hellman
提出“公钥密码”这一概念,希望能实现在不直接传递密钥的情况下就能完成密文的解密,1978
年,随着 RSA
公钥密码机制的完善,开启了“非对称加密算法”的时代。由简单到复杂,由实体到数字化,密码学成为了信息安全的保卫者,在以不可篡改、不可伪造著称的区块链世界中,它发挥着巨大的作用。

图片 1image

由于比特币的去中心化安全机制是完全建立在密码学基础之上的,所以比特币家族又被称为“密码学货币”,可以说密码学是比特币比特币诞生的基石之一。

欢迎收听「虾说区块链」。现在区块链这个概念在互联网上相当火热,这里简单做一个普及,不涉及项目推广投资,单纯地对区块链相关基础知识概念作一个说明讲解。本人区块链技术爱好者,结合相关区块链资料总结整理了「虾说区块链」,也是自己一个学习笔记,涉及相关内容如理解有误,也请及时指正。

加密的定义:通过把信息变得混乱,使未经授权就的人无法访问它,而被授权的人能够访问的一种方式。加密过程要保证信息的保密性、完整性、不可否认性。

区块链:Blockchain,分布式存储、加密算法、共识机制、P2P传输等计算机技术结合的新型应用模式。

1 密码学的发展

区块:Block,用于记录区块链系统中数据的存储。

1.1古典加密技术

密码学的发展经历了从经典加密技术(对称加密)到现代加密技术(非对称加密的)的过程,经典加密技术通过某种不为人知的算法,将明文经过加密得到密文,此密文只有通过对应的解密算法才能转换成明文。比如明文是bitcoin,加密算法规定对每个字母都按照字母表的顺序向后移动三位即
a b c d e f g h i j k l m n o p q r s t u v w x y z
d e f g h i j k l m n o p q r s t u v w x y z a b c
这样变换后的密文就变成elwfrlq,这样如果不知道解密算法,别人就无法识别,当然真实被应用的加密算法比这复杂的多,但是这种加密方式的安全性都依赖于加密算法,但这种加密技术很容通过频率分析的方法破解。后来的但是计算机出现之后,人们发现无论多么复杂的加密算法,都能通过统计分析的方式破解。

链:chain,区块头中通过引用哈希值链接。

1.2对称加密体制

对称加密是指加密所用的密钥和解密所用的密钥相同,也称为私钥加密体制。对称加密体制的安全性依赖与密钥,比较著名的对称加密算法有DES,IDEA等,由于对称加密技术只能用于对数据的加密解密,提供数据的机密性,但无法用作数字签名。因而我们需要新的密码体制,非对称加密体制应运而生。

区块链服务:BAAS,blockchain as a service,区块链即服务。

1.3非对称密码体制

非对称加密体制也叫公钥加密技术,该技术针对私钥密码体制的缺陷而设计,在公钥加密系统中,加密和解密是相对独立的,加密和解密使用不同的密钥,加密密钥叫做公钥是公开的,任何人都可以使用,解密密钥叫做私钥,只有解密者知道。在非对称加密体制中,加密过程如下,加密放使用公钥加密,将密文发送给使用后,解密放使用对应的私钥解密。在用作数字签名时,发送方通过私钥对消息加密,生成数字签名,接收方通过对应的公钥验证数字签名的合法性。

分布式:Decentralized,不依赖中心服务器,分布的计算机资源进行计算处理的模式。

2 密码学在比特币中的应用

共识机制:consensus,区块链中事务达成的分布式共识算法。

2.1用户账户

比特币的实现依赖于密码学技术,其中比特币账户采用了非对称加密算法,用户自己保留私钥,对其发出的交易进行签名,并公开私钥。比特币的账户地址就是用户的公钥经过一系列hash及编码运算后生成的160位字符串。在一次交易中,付款人通过收款人的公钥对本次交易进行签名,收款人收到交易后就能通过收款人的私钥验证本次交易是否合法。

P2P传输:peer-to-peer P2P,对等互联网网络技术。

2.2哈希算法

Hash算法能将任意长度的二进制(明文)映射为较短的固定长度二进制值(Hash值),并且不同的明文很难映射为相同的Hash值。

Hash算法满足一下三个性质:

  1. 明文M的任何改变都会导致Hash值H(M)的改变;
  2. 在给定某个哈希函数H和哈希值H(M)的情况下,得出M在计算上时不可以行的;
  3. 即对于消息M1和哈希值H(M1),找到M2使得H(M2)= H(M1)
    在计算上不可行(弱碰撞);或者,找到任意两个M1和M2使得H(M1)= H(M2)
    在计算上不可行(强碰撞)。

比特币协议中引入了哈希函数,解决双重支付的问题,付款人A将比特币发送给收款人B时,在交易完成之前,即交易被写入区块链之前,A又将这些比特币发送给了C,这时就面临如何避免双重支付的问题。

比特币协议中,网络节点通过工作量证明机制,实现以工作量证明问题提的解换取检验交易是否合法的话语权,避免了僵尸节点对不合法交易的随意确认。基于工作量证明的原理,找到足够多的网络节点使得这次不合法交易通过及其不容易,也就避免了双重支付的问题。关于工作量证明可以参考我的另一篇文章从分布式一致性到区块链共识机制。

加密算法:针对数据加密使其成为不可读的一段密文,通过密钥加解密。

哈希算法:将任意长度的二进制值映射为较短固定长度的二进制值的一种算法。

对称加密:加密解密使用同一密钥。

非对称加密:加解密通过公钥私钥,配对使用。

公有链:PublicBlockChains,公共网络中任何个人团体接入,任何节点均可参与共识过程。

联盟链:ConsortiumBlockChains,共识过程由预选节点控制,一般为各企业机构互联形成。

私有链:privateBlockChains,私有区块链,数据记录在单一组织机构中,分权限对外开放,一般是单一企业机构构建。

图灵完备:turing
complete图灵完备是指计算机中一切计算的问题都可以计算,这样的虚拟机或者编程语言称为图灵完备。

智能合约:smart
contract,部署在区块链系统中,一段合约代码,或一套以数字形式定义的承诺,包括合约参与方可以在其上执行承诺的协议。

匿名:unlinkability,中文解释为无关联性。

软分叉:当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而生产不合法的区块,就会产生临时性分叉。

硬分叉:区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,产生硬分叉。

EVM:以太坊虚拟机。

POW:proof of work,工作量证明。

POS:proof of stake,权益证明。

DPOS:delegate proof of stake,股份授权证明。

PBFT:practical Byzantine fault tolerance,实用拜占庭容错。

ECC:椭圆加密算法,一种公钥加密算法。

SHA:secure hash algorithm,安全散列算法,NIST发布一系列密码散列函数。

SPV:Simplified Payment Verification,简单支付验证。

Merkle tree:梅克尔树,merkle tree是计算机数据结构中的一种树。

DAG:计算机数据结构中有向无环图。

DAPP:去中心化应用。

Double spending:双重支付,也称为“双花”。

BIP:bitcoin improvement proposals,bitcoin改进协议。

密码经常能够听到,密码学应用也极为广泛,简述密码学发展的三个阶段。

古典密码学

古典密码学诞生至少有两三千年的历史了,这个阶段核心思想为:置换(permutation)。

说起古典密码最经典的两个例子。

斯巴达人的塞塔式密码:把一个长条羊皮螺旋地斜着绕在一个多棱棒上,然后水平方向从左到右写字,写一个字绕一圈。这长条羊皮拿下来看上去杂乱无章的,但是加上同尺寸的多棱棒就能看到准确的信息了。如图:

图片 2image

在古代中国,藏头诗,藏尾诗早就被那些文人墨客玩坏了,如水浒传中,拉卢员外下水的那首卦歌:芦花丛中一扁舟,俊杰俄从此地游。义士若能知此理,反躬难逃可无忧。之后又出现了一种古老的对称加密算法,凯撒算法,这类算法的基本实现原理是通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后按照一个固定数目进行偏移后被替换成密文,这种加密方式一旦掌握足够密文可以通过逆推的方式得到加密规则,但在当时这种理念还是很先进的。电影达芬奇密码中使用的密码道具,如图:

图片 3image

古典密码学针对字符,对字符本身不做修改,通过位置的改变或者替换来隐藏信息,这种加密方式比较简单,主要通过工作或者机械的操作来加解密,一旦掌握了解密工具或者找到解密规律,信息马上就被破解了,整体安全性不高。

现代密码学

1948年10月香农Shannon的信息论诞生,信息论将信息的传递作为一种统计现象来考虑,香农给出了信息熵的定义:香农

图片 4image

信息论,论文《A Mathematical Theory of
Communication》链接:

加密算法一般通过密钥来加解密,信息通过密钥加密后明文通过二进制的方式传播,一般的理解,你的密钥越长就越难破解,但是这个时候你会发现你的密钥只有一把,而且别人要解密你的信息,你必须把密钥也给对方,这种方式称为“对称加密算法”,你的密钥很关键,怎么保存,怎么传输就会很头疼。当然后来演变出来的哈希算法、公钥密码学、其实都是以现代密码学为基础。对称密钥原理图:

图片 5image

公钥密码学

1976年后,公钥密码学出现,这个也可以称为非对称加密,和之前的对称加密最大的区别就是,加解密分别使用公钥(publickey)和私钥(privatekey),密钥以一对的方式出现。196年W.Diffie和M.Hellman发表的New
Direction in
Cryptography,提出了非对称密码体制的概念。非对称密码体制一般依据两类类数学问题:大整数分解问题和离散对数问题。公钥密码学原理图:

图片 6image

数据加密:数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。
该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

图片 7image

那么根据数据加密的定义,我们会发现数据加密是需要一个解密过程中,那么有些算法在加密后变成密文,但是无法逆推的那种就不能被真正定义为加密算法。

解释下MD5的特点,MD5(Message Digest Algorithm
MD5),消息摘要算法第五版,这个消息摘要算法之前在讲数字签名时候也有涉及。MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。那么在计算开始就对信息进行了填充,并且压缩,最简单的例子,你在网络上下载东西是通过MD5验证,那么下载源何其多,但是MD5是128位,你可以计算MD5值的总数,无限对有限,这就是一个不可逆的过程,所以严格来说MD5就是一种算法而不是加密算法。

图片 8image

大致介绍到这里,谢谢。

(音频内容来源:“投河自尽的鱼”)

以下是我们的社区介绍,欢迎各种合作、交流、学习:)

图片 9image

网站地图xml地图