拖坑略严重…在此道歉
对称密码的概念
粗略概念:对称密码又称传统加密算法,加密密钥能够从解密密钥中推算出来。反过来也成立。在大多数对称算法中,加密和解密的密钥是一样的。
核心: 密钥。
要求:要求发送者和接受者在安全通信之前,商定一个密钥,对称算法的安全性依赖于密钥,泄露密钥意味着所有的人都能够对消息进行了加密解密,这个密码也就没有用了。
模型
文字描述也就是,明文通过一个密钥进行加密,变成密文,密文传到目的地后也通过相同的密钥才能解密,生成明文。
所以这个模型里涉及到了两大课题:
- 如何产生具有保密要求的密钥?
- 如何将密钥安全可靠的分配给通信的双方?也就是如何把这个密钥安全的发给接受者?
分类
对称密码可以分成两类:
序列算法(流算法):逐字的读入明文,一个字一个字的进行单独的加密。比如将a替换成z,b替换成y,这种只针对一个字一个字的替换密码,所以又称流密码。
分组密码:对明文的一组进行加密,比如64个字一组,一起进行加密,这个计算机中经常用到,因为64大到足够防止破译,又小到可以方便使用。
这里的对称密码主要讲的就是分组密码。
分组密码模型
Feistel密码结构
分组密码作用在n位的明文组上,产生n位密文组,共有2^n个明文组。由于加密算法是可逆的,可以解密,所以每一个明文组都要唯一对应一个密文组。
这里还有一系列看不懂的分组密码算法,先留个坑。
DES,数据加密标准
DES,Data Encryption Standard
- 分组加密算法:明文和密文为64位分组长度
- 对称算法:加密和解密除密钥编排不同外,使用同一算法
- 密钥长度:56位,但每个第八位为奇偶校验位,可忽略
- 密钥可为任意的56位数,但存在弱密钥,容易避开
- 采用混乱和扩散的组合,每个组合先替代后置换,共16轮
- 只使用了标准的算术和逻辑运算,易用实现
加密过程:
- 输入64比特明文
- 初始置换IP
- 在密钥控制下16轮迭代
- 交换左右32比特
- 初始逆置换IP-1
- 输出64比特密文数据
具体算法待更新