一. 前言
下面是一个消息传递的举例:针对信息发送者A,与信息接收者B,以及窃听者C,C有两种方式破坏安全:
1.窃取消息,作为接收方破解。
2.窃取消息,作为发送方伪造发送。
针对上述第一种情况,主要有对称加密和非对称加密两种方式保障。针对上述第二种情况,有诸多消息认证机制可以保障。
本文将重点说明对称加密。其他内容可关注公众号:智能化IT系统。
二. 密码学发展
在开始,首先阐述一下安全加密机制的两大原则:
· 不使用保密的加密算法
因为任何算法终究都将公开,不管是明是暗,此地无银三百两,意义不大。
· 不使用低强度的密码策略
因为这样比不使用密码甚至更危险。暴力破解,无处不在。
OK,那么我们就开始主题。我们先从历史上几个较为著名的加密算法开始说起。
1. 凯撒密码
原理非常简单,就是平移替换。按照字母表每一个字母向后平移N位,例如有一串明文abc,平移后变为DEF。同样是连续的。
2. 简单替换密码
原理同样简单,消息双方保存一份密码的对应表,在对应表中说明密码的对应关系,例如a对应D,b对应2,c对应G。那么abc加密后就位D2G。这个对应关系只有消息双方知道。
3. enigma
这个和主题越来越接近了。这个其实就是第二次世界大战中,德国使用的密码机算法。消息的发送方和接收方有一个密码本,上面记载每日的密码。发送方通过其进行加密,接收方通过其进行解密。
在这里,密码本,就可以理解为对称加密中的秘钥。
三. 对称加密主要模式介绍
对称加密的流程,和enigma有一定类似。我们下面从如下几方面开始介绍。
· DES加密
典型的对称加密方式。原理是把需要加密的原始数据,以8字节(64bit)进行分割,每8字节,都按照如下的方式进行16轮的加密,注意是16轮。每一轮加密,都将8字节分为前后32bit,后32bit无需任何加密,直接作为下一轮的前32bit。前32bit需要和后32bit以及本轮子秘钥的轮函数结果,做异或运算,得到结果,作为下一轮的后32bit,以此类推。
下图是一个逻辑展示,注意是两轮,看了下图应该就基本清晰了。
注意一点,每一轮的子密钥是不一样的。需要详细了解可以查一下Feistel网络结构。
· 3DES加密
和名字的理解一样,就是三轮DES处理,注意第二轮是DES解密,并且三轮的秘钥都不一样。
3DES目前任然有很多公司使用,但是效率不高,安全性也逐步出现一些问题。
· AES加密
AES是目前对称加密的一个主流的趋势,相对算法略微复杂。
AES的分组长度是128bit,16字节,也就是以16字节为单位,采用多轮Rijndeal加密和解密。
这里以一轮为案例进行说明。在每一轮,将16个字节分为四组,每一组进行平移,平移之后每一个字节与轮秘钥进行异或处理,输出加密后的16字节。
如下如所示:
四. 对称加密迭代模式介绍
至此,主要的加密方式的原理我们已经说完了。那么还有一个问题,原始消息肯定是长度不一的,DES的基本单位是16字节,AES是128字节,如果原始数据多于基本单位长度,如何迭代?下面介绍主要的迭代方式。
· ECB
每一组互不干扰。最后一组如果不够单位长度,padding填充,下面的每一种模式也是这样。
· CBC
第一个分组需要一个初始化向量,IV,与第一分组的明文进行异或,然后加密。
· CTR
如下图所示。
目前CTR和CBC两种模式使用较多。
———————————————————
公众号-智能化IT系统。每周都有技术文章推送,包括原创技术干货,以及技术工作的心得分享。扫描下方关注。