IPSEC 加密算法详解

一.加密技术的分类

1.1 块加密Block Cipher (对称秘钥算法)
将明文分成固定长度的块(不足的bit 用0补足), 逐块加密.
算法不同, 分块大小不相同
密文长度一般稍长于原文长度(填充部分)

1.2 流加密Stream Cipher (对称秘钥算法)
逐bit 加密
密文长度与原文长度一致
在这里插入图片描述
1.3 理想的加密算法:
能够抵御密码学攻击(破译密码)
秘钥长度可变或者够长, 可扩展(便于管理)
具有雪崩效应(明文有一点不同, 则密文就完全不同, 无法还原)
没有进出口政策限制(通用性足够好, 支持不同国家以及厂商的设备)

二.对称加密算法详解

2.1 DES Data Encryption Standard 块加密技术
1960年后期, IBM 成立了一个密码学研究项目, 研究出算法, 后卖掉.
1975年针对该算法修订, 成为DES 算法. 1977年被美国国家标准局ANSI采用.
秘钥为56bits
分组长度固定为64bits. 但是只有56bits 加密, 每个字节最后8bits 用于校验和
算法非常好, 无任何漏洞, 但是秘钥长度过短, 容易被暴力破解.
(1999年计算机水平, 24小时就可以破解)
只使用简单的逻辑运算操作, 基于加密Key 做一系列的移换位操作,
容易使用硬件加速,使用DES 必须经常修改秘钥, 防止暴力破解.
秘钥必须通过一个安全的方式交换。

2.1.1 DES块加密的两个模式;ECB和CBC模式
(1) ECB
在这里插入图片描述
ECB的缺点很明显,相同的数据,加密出来的密文也相同
这样如果被人抓住相同的密文,进行暴力破解,容易被猜出大体内容
*所以思科不支持这个模式

(2)CBC
在这里插入图片描述
CBC为了解决ECB模式的缺陷,在数据块进行加密时,增加了一个随机的向量(56bit)
数据块里面的每一个bit与向量做异或运算,然后把这个异或运算的结果进行加密
将加密的结果,与第二个数据块做异或运算,之后在进行加密,加密的结果
与第三个数据块做异或运算,之后进行加密,反反复复就可以解决,数据加密后密文也相同
注意的问题是,第一个随机产生的向量也要传递给解密一方
在这里插入图片描述
异或运算过程;
0(假) 1(真)=1 (真)
1(真) 0(假) =1(真)
1(真) 1(真)=0 (假)
0(假) 0 (假)=0(假)
把0当做假,1当做真,做异或运算
简单来说,一样的就的0,不一样就得1

2.2 3DES Triple DES
在这里插入图片描述
仍然基于DES 算法, 但是要执行三次
K1加密, K2解密, K3加密, 也可以三次均是加密.(每个K都不一样)
使用两个或三个不同的秘钥来实现112-168bits 的秘钥长度.(K1与K3可以相同)
暴力破解几乎不可能
1999年发布

3.AES Advance Encryption Standard(块加密)
1997年发布, 用于取代DES, 由两个比利时人 和开发
私有了一段时间之后被收购.
秘钥长度, 分块长度可变, 秘钥长度和分块长度可选128, 192或256bits.
还可以支持以32bits 为单位继续增长.
软件硬件运算速度非常高(比3DES 快得多), 广泛用于无线和语音加密.
AES 使用192 / 256bits 长度时, 被认为比3DES 更好, 秘钥更长, 计算更快

4.RC4 Ron Rivest开发的算法, 称之为Rivest’s Cipher
流加密算法
运行效率非常高
广泛用于SSL 加密和无线WEP 加密
RC 家族还有RC2(块加密, 替代DES), RC5(块加密, 可变秘钥和分块长度),
RC6(块加密, 基于RC5改进, AES 的竞争者)

三.非对称加密算法详解

在这里插入图片描述
3.1 RSA (Rivest, Shamir, Adelman)
1977年由三个人开发, 当时是专利技术, 后公开
通常用于PKI 架构
秘钥长度可变(360 – 4096 bits, 甚至更大, RS 考试建议1024bits)
基于大素数因式分解设计的数学难题来设计
(将两个大素数相乘很容易, 但对乘积进行因式分解却极其困难, 因此可以将乘积公开作为加密的秘钥)

3.2 DH (Diffie Hellman)
由Whitfield Diffie, Martin Hellman 于1976年提出的算法, 1994年专利到期后公开.
基于离散对数作为理论基础, 独到之处在于输入不同产生相同的输出结果.
DH 算法在IPSEC 中尤其重要, 用于解决秘钥交换问题. 因为不可能长期使用同一个秘钥,
为了保证足够的安全, 所以需要动态的在两端获得秘钥.

算法;
1.双方公开协商一对数值,G(generator), P(modulus),G 值较小, P 值较大
2.双发各自产生一个随机值X(私钥), 不公开
3.双方基于G, P, X 各自产生计算一个公开值
(公钥)Y=G^X mod P ;Y的x次幂,与P求余
4.交换公开值(Y)
5.双方各自使用,对方的Y与,自己的x,自己的P运算
Y^X mod P Y的x次幂,与p求余 后得出相同的结果,
双方相同,然后作为对称加密算法的共享秘钥

案例;
在这里插入图片描述
初始值 R1 ;G=4 P=5 X=6 R2;G=4 P=5 X=7
计算公开值, Ya=1 ,Yb=4
双方交换Y值 进行运算 得出 相同的数值
这样,相当于说双方修改G,和P的值就可以修改,对称算法的秘钥了

四、散类函数

4.1 特性;
用于保证数据完整性
单向输出, 定长输出
不可逆推
MD5 (Message Digest) 固定128bits输出,
SHA-1 (Secure Hash Algorithm)固定160bits 输出,
SHA-2固定256bits 输出.
建议除非对速度有较高的要求, 否则尽量避免使用MD5.
主要用途: 身份认证(HMAC), 数字签名, 数据完整性校验

4.2 加密算法和散类函数的区别 加密; 用来保证数据的私密性 加密和解密过程中可以使用相同或者不同的秘钥 可以通过多种算法来实现 散类函数; 将长信息转换固定长度的摘要 单向运算不可逆推 强壮的冲突避免机制 摘要值可以看做是数字指纹,理解成拍个照片 用于完整性校验和身份认证 散列比加密速度快很多