加密的基本概念 :
在密钥和算法的控制下 , 将明文变成密文的过程 .
通过使用加密 , 可以提供的安全服务 .
基本的加密操作:
基本的加密思想:
置换:按照规则改变内容的排列顺序
移位:打乱字母的排列顺序
(移位和置换都是可逆的操作,容易恢复信息)
密码设计的基本公理和前提是算法公开。
系统的安全性仅依赖于密钥的保密性
加密算法的分类:
对称密钥密码算法(又称私有密钥算法)
非对称密钥密码算法(又称公钥密码算法)
对称加密的原理
加密密钥和解密密钥是相等的。
加密密钥和解密密钥是可以相互推导的。
优点是加密速度快,但安全性完全依赖于密钥的传送。
原理如下图所示
著名的对称加密算法
DES/3DES 数据加密标准
IDEA 国际数据加密算法
RC 系列( RC2 、 RC4 、 RC5 )
CAST
Blowfish /Twofish
AES 高级数据加密标准
DES 算法
明文被分成 64 位的块,对每块进行 16 次变换(替换或换位),其中 16 次变换由 56 位的密钥的不同排列形式控制( IBM 使用的是 128 位密钥),最后产生 64 位的密文块,如下图所示:
3DES ( Triple-DES )
这种方法是 DES 的改进算法,它使用两把密钥对报文作三次 DES 加密,效果相当于将 DES 密钥的长度加倍了,克服了 DES 密钥长度较短的缺点,但缺点是要花费原来三倍的时间。
假设两个密钥分别是 K1 和 K2 ,其算法的步骤如下:
( 1 )用密钥 K1 进行 DES 加密
( 2 )用密钥 K2 对步骤( 1 )的结果进行 DES 解密
( 3 )对步骤( 2 )的结果使用密钥 K1 进行 DES 加密
如下图所示:
IDEA
这种加密算法使用 128 位的密钥,把明文分成 64 位的块,进行 8 轮的迭代加密。
设计原则:来之不同代数群的混合运算
异或,模 216 加,模 216+1 乘
IDEA 可以使用硬件或软件实现,并且比 DES 快。
在苏黎世技术学院用 25MHz 的 VLSI 芯片,加密速率是 177MBPS 。
RC 系列
RC2 --------Ronald Rivest 设计
密钥长度可变
RC2 的运算速度比 DES 快
软件实现的 RC2 比 DES 快三倍
RC2 是否比 DES 安全取决于其所使用的密钥长度
RC4 --------Rivest 设计
密钥长度可变
流模式加密算法,面向 bit 操作
算法基于随机置换
RC4 应用范围广
所谓流加密,就是将数据流和密钥生成二进制比特流进行异或运算的加密过程。
这种算法采用如下步骤:
( 1 )利用密钥 K 生成一个密钥流 KS (伪随机序列)
( 2 )用密钥流 KS 与明文 P 进行“异或”运算,产生密文 C 。
解密过程则是用密钥流与密文 C 进行异或运算,产生明文 P 。
为了安全,对不同的明文必须用不同的密钥流,否则容易被破解。
RC5 --------Rivest 设计
分组长,密钥长度和迭代轮数都可变
面向字结构,便于软件和硬件快速实现
数据相倚旋转技术
公钥加密原理
公钥加密使用两个密钥,
一个密钥用于加密信息,另一个密钥用于解密信息。
原理如下图所示
公钥加密特点
私钥需要安全保存,而公钥公开。
公钥加密速度慢,
公钥和私钥不可以相互推导
可以和对称加密相结合。
RSA
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n及e1),(n及e2)就是密钥对。
RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;
e1和e2可以互换使用,即:
A=B^e2 mod n;B=A^e1 mod n;
具体实现过程如下