币橙评测

区块链基础知识篇 | 加密技术和哈希算法

发表时间:2017-10-30 19:25作者:投河自尽的虾来源:币橙网

Bit2100-加密技术和哈希算法-2017年10月30日  一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

相关技术-加密技术

从密码学开始说起。密码学是研究如何隐秘的传递信息的学科,它涉及到数学、计算机科学。从古至今密码学一直在军事政府机构被重视,20世纪70年代后,随着计算机技术的兴起,密码学有了重大突破并逐渐被民用,现在互联网上交易,ATM取款、刷卡消费、网络身份登录等都涉及到了密码学。

密码

通信双方按照约定的法则进行信息特殊变换的一种保密手段。

密码最早被使用在军事中传递重要情报,信息传递过程中一般会出现一些恶意行为,来阻止或者破坏信息的传递。比如传递过程中受到干扰中断、截取、信息被修改等,那么密码学就是为了保证信息传递过程中信息的可靠。

密码学历史

密码学发展至今经历过三个阶段:

古典密码学:古典密码学诞生至少有两三千年的历史,这个阶段核心思想为:置换(permutation),古典密码最经典的两个例子,斯巴达人的塞塔式密码:把一个长条羊皮螺旋地斜着绕在一个多棱棒上,然后水平方向从左到右写字,写一个字绕一圈。这长条羊皮拿下来看上去杂乱无章的,但是加上同尺寸的多棱棒就能看到准确的信息了。之后出现的凯撒算法,实现原理是通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,这种加密方式一旦掌握足够密文可以通过逆推的方式得到加密规则,但在当时这种理念还是很先进的。这种加密方式依赖加密算法的保密,一旦加密过程泄漏,信息也即破解。

密钥加密(对称加密):1948年香农的信息论提出,将信息的传递作为一种统计现象来考虑,香农给出了信息熵的定义:香农。20世纪60年代,计算机的出现和通信系统的建立,计算机应对复杂计算能力,使得数字信息保密的需求也紧随而至,各种数字信息的安全被重视,1977年数据加密标准DES出现,DES(Data Encryption Standard),采用密钥加密的块算法。密钥加密算法核心思想是:混淆(confusion)和扩散(diffusion),这种加密方式算法公开,但是密钥需保密,一旦掌握密钥,信息也即破解。

公钥加密(非对称加密):1976年《密码学的新方向》一文中,提出信息收发两端保密通信的可能性,1978年RSA方案的提出,集合大整数因子分解和离散对数问题两类数学问题,出现公钥(publickey)和私钥(privatekey)模式加解密。这种加密方式算法公开,通过一对密钥(公私钥)非对称加密,实现信息的保密。



区块链中的密码基础

大致对区块链中涉及到密码学或加密算法进行整理,也涉及其他一些相关知识点。哈希算法、对称加密、非对称加密、SHA-256、RIPEMD160、椭圆密码算法、SM2、数字签名、数字信封。

这里先解释一个通常理解上的误区:加密算法是把信息明文通过算法加密成为密文,但是密文通过算法还能恢复成明文的,这种算法才称为加密算法。以MD5为例子,MD5(Message Digest Algorithm MD5)消息摘要算法第五版,相信很多人都看到过,MD5确切来说不是加密算法,而是散列算法,原因是数据在变换过程和结果不可逆,无法从经过MD5算法编码后恢复成原文。MD5编码实际上MD5的散列值,作为摘要,无法恢复成原始完整的信息。

注:MD5处理登录密码时一般在后台数据库中看到的是一串随机字符,这个会错误理解在验证登录时候是把这串随机字符转换成为输入的密码作比对,事实上,MD5不做这个逆操作,登录密码在验证时先进行MD5处理,再和后台的数据库中随机字符进行比对。

哈希算法

Hash Function,哈希函数也称为散列函数:h=H(x),x为任意长度的输入值,H为哈希函数,h为输出的固定长度的密文。

通过单向数学函数应用到任意数量的数据,得到固定大小的结果,一旦数据中有变化,哈希值也会出现变化,也称为“消息摘要”。哈希函数事实是把一大段甚至无限的范围值映射到指定的范围内,这种实现模式有人理解为压缩。哈希函数主要特点:

输入值x可以是任意长度的字符串。

输出结果H(x)固定。

计算H(x)的时间复杂度应为O(n)。

作为密码函数,要求在有限合理的时间内,对信息进出密文处理,同时要求具有抗碰撞性。所谓抗碰撞性,在x1不等于x2的情况下,要求满足h(x1)=h(x2)计算后不可行。理论上碰撞性在密码算法中一直存在的,通过对密码函数的位数的设置和算法复杂度的设计,尽可能避免出现碰撞。一个良好的哈希算法具有以下特点:

在有限时间和资源内计算出哈希值。

在有限时间内不可逆推出输入值。

修改任意小的信息,输出哈希值有较大改变。

良好的抗碰撞性。


哈希函数一般可以划分以下几类:

加法哈希:输入元素一个个加起来形成最后的结果。

位运算哈希:通过移位或者异或的方式进行各种位运算,混合输入元素。

乘法哈希:利用乘法不相关性。如:32位FNV算法。

除法哈希:利用除法不相关性,应用较少。

查表哈希:CRC查表算法。

混合哈希:利用上述各种算法组合,如:MD5算法。

哈希算法常用于文件的校验和数字签名。

对称加密:

对称加密的概念出现在密码学发展的第二阶段,最为广泛的美国DES(Data Encryption Standard)标准。目前很多金融机构还一直在使用这类型密码用于加密。对称加密算法中,发送方将明文和密钥经过算法转换后,通过密文发送给接收方,接收方通过相同的算法和密钥进行逆向解密,这种方式加密方式加解密过程中使用同一密钥。这需要双方事先都知道密钥。这种加密方式特点是算法公开、计算量小、加密和解密速度快,整个加密效率较高。但是由于密钥单一,故一旦密钥透露了,相应加密的密文也就暴露了。

对称加密中最为常见的DES及其衍生模式:

DES

DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合。DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

3DES

3DES:使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。该方法使用两个密钥,执行三次DES算法,加密的过程是加密-解密-加密,解密的过程是解密-加密-解密。

AES:

AES:高级加密标准(AES,Advanced Encryption Standard)为目前最常见的对称加密算法,加密解密使用密钥相同,一般配合非对称加密把密钥传输,然后通过加密函数E,C = E(K, P),其中P为明文,K为密钥,C为密文。解密函数D,P = D(K, C),其中C为密文,K为密钥,P为明文。微信中加密方式即参考这种模式。


附上几种对称加密算法的对比:


算法

类型

密钥长度

加密速度

安全性

资源需求

AES

对称加密

128\192\256位

DES

对称加密

56位


3DES

对称加密

112\168


参考:http://www.cnblogs.com/mengfanrong/p/4034950.html


声明:本文系用户自行发布或者转载,不代表Bit2100观点,任何形式转载请联系作者。Bit2100仅提供网络存储空间服务,如文章侵犯到您的合法权利,请您通知Bit2100予以删除。转载请注明"稿件来源:“Bit2100”。