区块链技术核心(一)密码学

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

古典密码学

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

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

之后又出现了一种古老的对称加密算法,凯撒算法,这类算法的基本实现原理是通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,这种加密方式一旦掌握足够密文可以通过逆推的方式得到加密规则。

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

现代密码学

1948年10月香农Shannon(信息论之父)的信息论诞生,信息论将信息的传递作为一种统计现象来考虑。同时这也标志着密码学进入了第二阶段,现代计算机科学和信息技术的发展。之前对复杂计算的密码可以通过计算机来完成,密码学成为了一门科学。加密算法一般通过密钥来加解密,信息通过密钥加密后明文通过二进制的方式传播,一般的理解,你的密钥越长就越难破解,但是这个时候你会发现你的密钥只有一把,而且别人要解密你的信息,你必须把密钥也给对方,这种方式称为“对称加密算法”。你的密钥很关键,怎么保存,怎么传输就会很头疼。当然后来演变出来的哈希算法、公钥密码学、其实都是以现代密码学为基础。

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

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

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

区块链中涉及到的:私钥、公钥、钱包、助记词、hash算法、椭圆加密算法、SHA算法家族等都是以密码学算法为基础。这里特别提及一下merkle tree(梅克尔树)。

Merkle tree(梅克尔树),Merkle tree是数据结构中的一种树结构,可以是二叉树,也可以是多叉树,它和数据结构中树的特点几乎一致。和普通树不同的是:merkle tree上的叶节点存放hash计算后的hash值,非叶节点是其对应的子节点串联的字符串的hash值。假设hash0是上一层节点,hash0-0和发送0-1是下一层节点,那么hash0=hash0-0+hash0-1。

中本聪在比特币系统中很巧妙地运用了merkle tree树,包括钱包SPV简单支付验证都以merkle tree为基础。以太坊也使用该模式来做区块链系统中的验证互联。Merkletree以hash算法为基础,这里引入入一个hash root的概念,在区块链中有merkle hash root值。这个数据值就是拼凑在一起的hash值,通过hash root,我们可以通过事先获知hash root,然后结合hash list计算,逐步校验每一块的hash值并进行组合,组合值和hash root比较,一致就说明数据块是没有问题的,这种方式更好的运用在实际的网络数据传输中。

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

同媒体快讯

扫码关注云+社区

领取腾讯云代金券