密码学与网络安全(二)对称密码

Sep 20, 2017


拖坑略严重…在此道歉

对称密码的概念

粗略概念:对称密码又称传统加密算法,加密密钥能够从解密密钥中推算出来。反过来也成立。在大多数对称算法中,加密和解密的密钥是一样的。

核心: 密钥。

要求:要求发送者和接受者在安全通信之前,商定一个密钥,对称算法的安全性依赖于密钥,泄露密钥意味着所有的人都能够对消息进行了加密解密,这个密码也就没有用了。

模型

image

文字描述也就是,明文通过一个密钥进行加密,变成密文,密文传到目的地后也通过相同的密钥才能解密,生成明文。

所以这个模型里涉及到了两大课题:

  • 如何产生具有保密要求的密钥?
  • 如何将密钥安全可靠的分配给通信的双方?也就是如何把这个密钥安全的发给接受者?

分类

对称密码可以分成两类:

序列算法(流算法):逐字的读入明文,一个字一个字的进行单独的加密。比如将a替换成z,b替换成y,这种只针对一个字一个字的替换密码,所以又称流密码。

分组密码:对明文的一组进行加密,比如64个字一组,一起进行加密,这个计算机中经常用到,因为64大到足够防止破译,又小到可以方便使用。

这里的对称密码主要讲的就是分组密码。

分组密码模型

image

Feistel密码结构

分组密码作用在n位的明文组上,产生n位密文组,共有2^n个明文组。由于加密算法是可逆的,可以解密,所以每一个明文组都要唯一对应一个密文组。

这里还有一系列看不懂的分组密码算法,先留个坑。

DES,数据加密标准

DES,Data Encryption Standard

  • 分组加密算法:明文和密文为64位分组长度
  • 对称算法:加密和解密除密钥编排不同外,使用同一算法
  • 密钥长度:56位,但每个第八位为奇偶校验位,可忽略
  • 密钥可为任意的56位数,但存在弱密钥,容易避开
  • 采用混乱和扩散的组合,每个组合先替代后置换,共16轮
  • 只使用了标准的算术和逻辑运算,易用实现

加密过程:

  • 输入64比特明文
  • 初始置换IP
  • 在密钥控制下16轮迭代
  • 交换左右32比特
  • 初始逆置换IP-1
  • 输出64比特密文数据

具体算法待更新