思维导图
加解密定义
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,通过这样的途径来达到保护数据不被非法人员窃取、阅读的目的。
数据解密的过程就是对密文使用相应的算法和密钥进行解密处理,将密文解密成明文的过程。
加密的安全性取决于:
密钥的生成,管理,存储;
加密算法的安全性;
加解密的环境。
加密产生背景
加密的目的
通过加密可保证信息的:机密性、完整性、鉴别性、不可否认性。
加密技术分类
加密技术包含:对称加密、非对称加密
对称加密算法
对称加密算法的加密和解密都是用同一个密钥。
如图所示,客户端与服务器进行数据交互,采用对称加密算法。客户端与服务器事先协商好对称密钥A,具体加解密过程如下:
非对称加密算法
非对称加密算法需要一组密钥对,分别是公钥和私钥,这两个密钥是成对出现的。
非对称加密解决了对称密钥的发布和管理问题,一个用于加密信息,另一个则用于解密信息,通信双方无需事先交换密钥就可进行保密通信。通常以公钥作为加密密钥,以私钥作为解密密钥。
如图所示,客户端与服务器进行数据交互,采用非对称加密算法,具体加解密过程如下:
对称和非对称加密比较
非对称加密和对称加密结合
采用非对称加密与对称加密结合的方式,可以减少非对称加密的次数,HTTPS就是采用了这种方案。首先通过非对称加密交换对称加密密钥,然后使用对称加密算法加密业务数据,具体交互流程如下:
常见的对称加解密算法
IDEA(International Data Encryption Algorithm)是对称分组密码算法,输入明文为64位,密钥为128位,生成的密文为64位。应用方面有很多,其中SSL就将IDEA包含在其加密算法库中。
常见的非对称加密算法
非对称加密算法此处有两个作用:
根据算法自动生成一对公私钥;
按照非对称加密算法的交互数据。
散列算法简介
仅对数据加密是不够的,数据仍能够被非法破解并修改。使用散列算法可检查出数据在通信过程中是否被篡改,从而实现数据完整性校验。
散列算法就是把任意长度的数据作为输入,然后通过Hash得到一个固定长度的输出值,该输出值就是散列值,它是一种数据压缩映射关系。简单来说就是将任意长度的消息转换到某一固定长度的消息摘要的函数。散列算法具有正向快速、不可逆、输入敏感、抗碰撞的特点。
正向快速:给定明文和Hash算法,在有限时间和有限资源内计算Hash值;
不可逆性:给定任意的Hash值,在有限时间内很难逆推出明文;
输入敏感:如果输入的数据信息被轻微修改,输出的Hash值也会有很明显的变化;
抗碰撞性:任意输入不同的数据,其输出的Hash值不可能相同。对于一个给定的数据块,找到和它hash值相同的数据块极为困难。
散列算法应用
在数据通信过程中发送方对报文进行Hash,并将报文和Hash值发送给接收方。接收方采用相同的算法对报文进行Hash,然后通过对比两个Hash值,来判断通信过程中报文是否受到篡改,从而实现完整性校验。
常见散列算法
以上几种算法各有特点,MD5算法的计算速度比SHA-1算法快,而SHA-1算法的安全强度比MD5算法高,SHA-2、SM3算法相对于SHA-1来说,加密数据位数的上升增加了破解的难度,使得安全性能要远远高于SHA-1。