第2讲 信息保密技术
� 密码学发展简史
� 密码学基本概念
� 古典密码
�对称加密体制
�非对称加密体制
密码学的发展简史
密码学有着悠久而迷人的历史,从古至今已有4000
多年的历史了,密码学的发展大致经历了三个阶段:
手工加密阶段、机械加密阶段和计算机加密阶段。
1. 手工加密阶段
早在公元前1900年左右,一位佚名的埃及书吏在碑文中使用了
非标准的象形文字, 这或许是目前已知最早的密码术实例。
古典密码的加密方法一般是采用文字置换,主要使用手工方式
实现,因此我们称这时期为密码学发展的手工阶段。
2. 机械阶段
到了20世纪20年代,随着机械和机电技术的成熟,以及电报和
无级电需求的出现,引起了密码设备的一场革命-发明了转轮
密码机,转轮机的出现是密码学的重要标志之一。
3.计算机阶段
计算机科学的发展刺激和推动了密码学进入计算机阶段。
1949年,C. Shannon发表了“保密系统的通信理论”,为密码
学的发展奠定了理论基础,使密码学成为一门真正的科学。
密码学基本概念
密码学(Cryptology)研究进行保密通信和如何实现信息保密
的问题,具体指通信保密传输和信息存储加密等。
密码学包括两个分支:密码编码学(Cryptography)和密码分
析学(Cryptanalyst)。密码编码学研究怎样编码、如何对消息
进行加密,密码分析学研究如何对密文进行破译。
明文(Message):待加密的信息,用M或P(Plaintext)表示。
明文的集合构成明文空间,记为SM={M}。
密文(Ciphertext):经过加密处理后的形式,用C表示。密文
的集体构成密文空间,记为SC={C}。
密钥(Key):用于加密或解密的参数,用K表示。密钥的集合
构成密钥空间,记为SK={K}。
加密(Encryption):用某种方法伪装消息以隐藏它的内容的
过程。
加密算法(Encryption Algorithm):将明文变换为密文的变换
函数,通常用E表示,即E:SM→SC,表示为C=Ek(M)。
密码学基本概念
解密(Decryption):把密文转换成明文的过程。
解密算法(Decryption Algorithm):将密文变换为明文的变换
函数,通常用D表示,即D:SC→SM,表示为M=Dk(C)。
密码分析(Cryptanalysis):截获密文者试图通过分析从截获
的密文推断出原来的明文或密钥。
密码分析员(Cryptanalyst):从事密码分析的人。
被动攻击(Passive attack):对一个保密系统采取截获密文进行
分析的攻击。这种攻击对密文没有进行任何破坏。
主动攻击(Active attack):攻击者非法侵入一个密码系统,采用
伪造、修改、删除、等手段向系统注入假消息进行欺骗。这种
攻击对密文具有破坏作用。
密码体制:由明文空间SM、密文空间SC、密钥空间SK、加密算
法E和解密算法D构成的五元组{ SM、SC、SK、E、D},称为密
码体制。
密码学基本概念
密码系统(Cryptosystem):用于加密和解密的系统。加密时,
系统输入明文和加密密钥,加密变换后,输出密文;解密时,
系统输入密文和解密密钥,解密变换后,输出明文。一个密码
系统由信源、加密变换、解密变换、信宿和攻击者组成。
K K
M C加密变换
C=Ek(M)
解密变换
M=Dk(C)
信源 信宿
主动攻击者 被动攻击者
密钥器 密钥器
密码学基本概念
柯克霍夫(Kerckhoffs)原则:密码系统的安全性取决于密钥,
而不是密码算法,即密码算法要公开。
这是荷兰密码学家Kerckhoff于1883年在名著《军事密码学》中
提出的基本假设。遵循这个假设的好处是:
① 它是评估算法安全性的惟一可用的方式。因为如果密码算法
保密的话,密码算法的安全强度无法进行评估。
② 防止算法设计者在算法中隐藏后门。因为算法公开后,密码
学家可以研究分析是否存在漏洞,同时也接受攻击者的检验。
③ 有助于推广使用。当前网络应用十分普及,密码算法的应用
不再局限于传统的军事领域,只有算法公开,才可能被大多数
人接受并使用,同时,对用户而言,只需掌握密钥就可以使用
了,勿须应用非常方便。
古典密码
从古代到19世纪末提出和使用的密码称为古典密码
古典密码大多比较简单,一般可用手工或机械方式实
现其加密和解密过程,破译也比较容易。
1.移位密码
移位密码的加密方法是将明文字母按某种方式进行移位,如著
名的恺撒密码。
在移位密码中,将26个英文字母依次与0,1,2,…,25对应,密文
字母c 可以用明文字母m和密钥k按如下算法得到:
c=m+k(mod 26)
给定一个密文字母c, 对应的明文字母m可由c和密钥k按如下算
法得到: m=c-k(mod 26)
按照密码体制的数学形式化定义,移位密码体制描述为五元组
(P,C,K,E,D),其中: P=C=K= Z26={0,1,2,…,25}
E={ek: Z26 Z26| ek (m)=m +k (mod 26)},
D={dk: Z26 Z26| dk (c)=c k (mod 26)}。
古典密码
2.仿射密码
移位密码的加密方法是将明文字母按某种方式进行移位,如著
名的恺撒密码。
在移位密码中,将26个英文字母依次与0,1,2,…,25对应,密文
字母c 可以用明文字母m和密钥k按如下算法得到:
c=m+k(mod 26)
给定一个密文字母c, 对应的明文字母m可由c和密钥k按如下算
法得到: m=c-k(mod 26)
按照密码体制的数学形式化定义,移位密码体制描述为五元组
(P,C,K,E,D),其中:
P=C=K= Z26={0,1,2,…,25}
E={ek: Z26 Z26| ek (m)=m +k (mod 26)},
D={dk: Z26 Z26| dk (c)=c k (mod 26)}。
古典密码
例 假设k1=9和k2=2,明文字母为q, 则对其用仿射密码加密如下:
先把文字母为q转化为数字13。由加密算法得
c=913+2=119 (mod 26)=15
再把c=15转化为字母得到密文P。
解密时,先计算k11。因为93≡1(mod 26),因此k11=3。再由
解密算法得
m= k11(ck2) (mod 26)=3(c-2)=3c-6 (mod 26)
≡45+20 (mod 26)=13 (mod 26)。
对应的明文字母为q。
古典密码
3. 维吉利亚(Vigenere)密码
Vigenere是法国的密码学专家,Vigenere密码是以他的名字命
名的。该密码体制有一个参数n。在加解密时同样把英文字母用
数字代替进行运算,并按n个字母一组进行变换。明、密文空间
及密钥空间都是n长的英文字母串的集合,因此可表示P=C=K=
( Z26)n。加密变换如下:
设密钥k=(k1, k2, …, kn),明文P=(m1, m2, …, mn),加密函数ek(P)=
(c1, c2, …, cn),其中ci=(mi+ki) (mod 26), i=1, 2, …, n。
对密文c=(c1, c2, …, cn),密钥k=(k1, k2, …, kn),解密变换为
dk(c)=(m1, m2, …, mn),其中mi=(ciki) (mod 26), i=1, 2, …, n。
古典密码
例 设n=6, 密钥是cipher,这相应于密钥k=(2, 8, 15, 7, 4, 17)
,明文是this cryptosystem is not secure。试用Vigenere密码对
其加密。
解 首先将明文按每6个分为一组,然后与密钥进行模26“加”得:
19 7 8 18 2 17 24 15 19 14 18 24
2 8 15 7 4 17 2 8 15 7 4 17
21 15 23 25 6 8 0 23 8 21 22 15
18 19 4 12 8 18 13 14 19 18 4 2 20 17 4
2 8 15 7 4 17 2 8 15 7 4 17 2 8 15
20 1 19 19 12 9 15 22 8 25 8 19 22 25 19
相应的密文是:VPXZGIAXIVWPUBTTMJPWIZITWZT
古典密码
4. 置换密码
置换密码是把明文中各字符的位置次序重新排列来得到密文的
一种密码体制。实现的方法多种多样。在这里,我们介绍一类
较常见的置换密码。
其加解密方法如下:把明文字符以固定的宽度m(分组长度)水平
地(按行)写在一张纸上(如果最后一行不足m,需要补充固定字
符),按1,2,…,m的一个置换交换列的位置次序,再按垂
直方向(即按列)读出即得密文。
解密就是将密文按相同的宽度m垂直在写在纸上,按置换的逆
置换交换列的位置次序,然后水平地读出得到明文。置换就是
密钥。
古典密码
例 设明文Joker is a murderer,密钥=(4 1)(3 2)(即(4)=1,
(1)=4,(3)=2,(2)=3)), 即按4,3,2,1列的次序读出得到
密文,试写出加解密的过程与结果。
解 加密时,把明文字母按长度为4进行分组,每组写成一行,
这样明文字母Joker is a murderer被写成4行4列,然后把这4行
4列按4,3,2,1列的次序写出得到密文。过程与结果如图2-3-
1所示。解密时,把密文字母按4个一列写出,再按的逆置换
重排列的次序,最后按行写出,即得到明文。
明文: Joker is a murderer
按4字母一行写出
joke
risa
murd
erer
按列写出的顺序 4 3 2 1
按列写出密文:eadrksreoiurjrme
密文: eadrksreoiurjrme
按4字母一列写出
ekoj
asir
drum
rere
交换列的顺序 4 3 2 1
按行写出明文: joker is a murderer
古典密码
在现代密码学中,假定密码方案遵从Kerckhoffs原则,因此,
对密文的破解取决于加密密钥。就古典密码而言,由于算法相
对简单,算法复杂度也不高,一种可能的攻击方法是对所有可
能的密钥进行尝试的强力攻击,称为穷举搜索攻击。
移位密码:密钥空间K= Z26={0,1,2,…,25},因此,最多
尝试26次即可恢复明文。
仿射密码:密钥空间为K={(k1,k2)| k1,k2Z26, 其中gcd(k1,
26)=1},k1可能的取值有1,3,5,7,9,11,15,17,19,
21,23,25,因此,最多尝试12×26次即可恢复明文。
对于古典密码方案而言,由于密钥空间非常有限,因此,很难
抵抗穷举搜索攻击。另一方面,就英文而言,一些古典密码方
案不能很好地隐藏明文消息的统计特征,攻击者也可以利用这
一弱点进行破译。
结论:古典密码方案并不适合Kerckhoffs原则,算法的保密性
基于算法的保密。
对称加密体制
序列密码
分组密码
数据加密标准-DES
对称加密体制
在这种密码体制中,对于大多数算法而言,解密算法
是加密算法的逆运算,加密密钥和解密密钥相同,满
足关系:M= Dk(C)= Dk(Ek(M))。
对称密码体制的开放性差,要求通信双方在通信之前,
商定一个共享密钥,彼此必须妥善保管。
对称密码体制分为两类。一类是对明文的单个位(或
字节)运算的算法,称为序列密码算法,也称为流密
码算法(Stream Cipher)。另一类算法是把明文信息
划分成不同的块(或小组)结构,分别对每个块进行
加密和解密,称为分组加密算法(Block Cipher)。
序列密码
序列密码将明文划分成单个位(如数字0或1)作为加密
单位产生明文序列,然后将其与密钥流序列逐位进行
模2加运算,用符号表示为 ,其结果作为密文。加密
过程如图所示。
加密算法是:
解密算法是:
序列密码
序列密码分为同步序列密码和自同步序列密码两种。
同步序列密码要求发送方和接收方必须是同步的,在同样的位
置用同样的密钥才能保证正确地解密。如果在传输过程中密文
序列有篡改、删除、插入等错误导致同步失效,则不可能成功
解密,只能通过重新同步来实现恢复。在传输期间,一个密文
位的改变只影响该位的恢复,不会对后继位产生影响。
自同步序列密码的密钥的产生与密钥和已产生的固定数量的密
文位有关,因此,密文中产生的一个错误会影响到后面有限位
的正确解密。因此,自同步密码的密码分析比同步密码更加困
难。
序列密码具有实现简单、便于硬件计算、加解密处理速度快、
低错误(没有或只有有限位的错误)传播等优点,但同时也暴
露出对错误产生不敏感的缺点。
序列密码
序列密码的安全强度依赖于密钥流产生器所产生的密
钥流序列的特性,关键是密钥生成器的设计及收发两
端密钥流产生的同步技术。
1.伪随机序列
在序列密码中,一个好的密钥流序列应该满足:①良好的伪随
机性,如极大的周期,极大的线性复杂度,序列中0和1的分布
均匀;②产生的算法简单;③硬件实现方便。
产生密钥流序列的方法可以是使用自然现象随机生成或标准C
库函数中函数rand()。
产生伪随机数的一个不错的选择是使用数论中的难题。最常用
的是BBS伪随机序列生成器,也就是二次方程式残数生成器。
首先产生两个大素数 p和q ,且 ,设n=pq ,并
选择一个随机整数x ,x 与n 互素,设初始输入 ,
BBS通过如下过程产生一个随机序列 :
① ;
② 是 的最低有效比特。
序列密码
2. 线性反馈移位寄存器
通常,产生密钥流序列的硬件是反馈移位寄存器。一个反馈移
位寄存器由两部分组成:移位寄存器和反馈函数:
序列密码
序列密码
对于n级线性反馈移位寄存器,不可能产生全0状态,
因此,最大可能周期为 。
选择线性反馈移位寄存器作为密钥流生成器的主要原
因有:①适合硬件实现;②能产生大的周期序列;③
能产生良好的统计特性的序列;④它的结构能够应用
代数方法进行很好的分析。
实际应用中,通常将多个LFSR组合起来构造非线性
反馈移位寄存器,n级非线性反馈移位寄存器产生伪
随机序列的周期最大可达到 ,因此,研究产生最
大周期序列的方法具有重要意义。
序列密码
2. RC4
RC4是由麻省理工学院的Ron Rivest教授在1987年
为RSA公司设计的一种可变密钥长度、面向字节流
的序列密码。
RC4算法很简单,它以一个数据表为基础,对表进行
非线性变换,从而产生密码流序列。包含两个主要算
法:密钥调度算法(Key-Scheduling Algorithm,
KSA)和伪随机生成算法(Pseudo Random
Generation Algorithm,PRGA)。
序列密码
KSA的作用是将一个随机密钥(大小为40~256位)变换
成一个初始置换表S。过程如下:
S11 S表中包含256个元素S[0]~S[255],对其初始化,
令
S12 用主密钥填充字符表K,如果密钥的长度小于
256个字节,则依次重复填充,直至将K被填满。
S13 令 j=0;
S14 对于 i从0到255循环
①
②交换 S[i]和S[j] 。
序列密码
PRGA的作用是从S表中随机选取元素,并产生密钥
流。过程如下:
S21 i=0,j=0;
S22 i=i+1(mod 256);
S23 j=j+S[i]mod 256
S24 交换S[i]和S[j] ;
S25 t=S[i]+S[j]mod 256 ;
S26 输出密钥字k=S[t] 。
虽然RC4要求主密钥K至少要40位,为了保证安全强
度,目前至少要达到128位。
分组密码
设明文消息被划分成若干固定长度的组
,其中 或1, ,每一组的长度为 n,
各组分别在密钥 的作用下变换成长度
为r的密文分组 。分组密码的模型如图
所示。
分组密码
分组加密的本质就是由密钥 控制的从明文空间M
(长为n的比特串的集合)到密文空间C(长为r的比
特串的集合)的一个1-1映射。为了保证密码算法的
安全强度,一般说来,加密变换的构造应遵循下列几
个原则:
① 分组长度足够大
② 密钥量空间足够大
③ 加密变换足够复杂
④ 加密和解密运算简单,易于实现
⑤ 加密和解密的逻辑结构最好一致
分组密码
古典密码中最基本的变换是代替和移位,其目的是产生尽可能
混乱的密文。代替变换就是经过复杂的变换关系将输入位进行
转换,记为S,称为S盒;移位变换就是将输入位的排列位置进
行变换,记为P,称为P盒。
分组密码由多重S盒和P盒组合而成,如图所示。S盒的直接作
用是将输入位进行某种变换,起到混乱作用,P盒的直接作用
就是移动输入位的排列位置关系,起到扩散的作用。
分组密码
实现分组密码设计算法的具体操作包括以下三个方面:
1.代替
将明文位用某种变换关系变换成新的位,使得产生的密文是一
堆杂乱无章的乱码,分组密码中采用复杂的非线性代替变换就
可达到比较好的混乱效果。
2.移位
指让明文中的每一位(包括密钥的每一位)直接或间接影响输出密
文中的许多位,以便隐蔽明文的统计特性。这种效果也称为“
雪崩效应”。
3.乘积变换
在分组密码算法设计中,为了增强算法的复杂度,常用的方法
是采用乘积变换的思想,即加密算法不仅仅是简单的一次或两
次基本的S盒和P盒变换,而是通过两次或两次以上S盒和P盒
的反复应用,也就是迭代的思想,克服单一密码变换的弱点,
构成更强的加密结果,以强化其复杂程度。
数据加密标准-DES
1971年末IBM公司提出了一种称为Luciffer的密码算法
1977年7月15日该算法被正式采纳作为美国联邦信息处理标准
生效,即数据加密标准(Data Encryption Standard,DES)。
实现分组密码设计算法的具体操作包括以下三个方面:
1. DES加密算法流程
数据加密标准-DES
1971年末IBM公司提出了一种称为Luciffer的密码算法
1977年7月15日该算法被正式采纳作为美国联邦信息处理标准
生效,即数据加密标准(Data Encryption Standard,DES)。
1. DES加密算法流程
数据加密标准-DES
1971年末IBM公司提出了一种称为Luciffer的密码算法
1977年7月15日该算法被正式采纳作为美国联邦信息处理标准
生效,即数据加密标准(Data Encryption Standard,DES)。
1. DES加密算法流程
数据加密标准-DES
(1) 初始置换IP
初始置换如图所示,方法是将64
位明文的位置顺序打乱,表中的
数字代表64位明文的输入顺序号,
表中的位置代表置换后的输出顺
序,表中的位置顺序是先按行后
按列进行排序。
初始置换表中的位序特征:64位
输入按8行8列进行排列,最右边
一列按2,4,6,8和1,3,5,7的次序进
行排列,往左边各列的位序号依
次紧邻其右边一列各序号加8。
数据加密标准-DES
(2)乘积变换(16轮迭代)
乘积变换部分要进行16轮迭代,
如图所示。将初始置换得到的64
位结果分为两半,记为L0和R0,
各32位。设初始密钥64位,经密
钥扩展算法产生16个48位的子密
钥,记为K1,K2,…,K16,每轮
迭代的逻辑关系为:
其中 ,f 函数是每轮变
换的核心变换 。
数据加密标准-DES
(3)逆初始置换IP-1
逆初始置换IP-1与初始置换正好相
反,如图所示。比如,处在第一
位的比特位置换后排在第58位,
第二位排在第50位。
逆初始置换表中的位序特征:64
位输入依然按8行8列进行排列,
1,2,3,4,5,6,7,8按列从下往上进行
排列,然后是9到16排在右边一
列,依次进行排4列,然后从33
开始排在第一列的左边,从41开
始排在第二列的左边,交叉进行。
数据加密标准-DES
2. 乘积变换中的f变换
乘积变换的核心是f变换,它是非线性的,是每轮实现混乱的最
关键的模块,输入32位,经过扩展变换变成48位,与子密钥进
行异或运算,选择压缩变换―S盒替换,将48位压缩还原成32
位,再进行P盒替换,输出32位。如图所示,虚线部分为f变换。
数据加密标准-DES
详细的变化过程如图2-4-11所示。
数据加密标准-DES
(1) 扩展置换
扩展置换将32位扩展成48位,按如图2-4-12所示的排列方式进
行重新排列得到。
数据加密标准-DES
(2) S盒替换
将48位按6位分为1组,共8组,也称为8个S盒,记为S1 ,
S2 ,…S8 ,每个S盒产生4位输出。8个S盒的替换表如表2
-4-2所示。
每个S盒都由4行×16列组成,每行是0~15的一个全排列,
每个数字用对应的4位二进制比特串表示。如9用1001表示,
7用0111表示。设6位输入为: a1 a2 a3 a4 a5 a6 ,将a1a6
组成一个2位二进制数,对应S盒表中的行号;将a2 a3 a4 a5
组成一个4位二进制数,对应S盒表中的列号;映射到交叉
点的数据就是该S盒的输出。
数据加密标准-DES
(3) P盒替换
P盒替换就是将S盒替换后的32位作为输入,按下图顺序重新
排列,得到的32位结果即为f函数的输出f(Ri-1,Ki)。
数据加密标准-DES
3. 子密钥的生成
初始密钥长度为64位,
但每个第8位是奇偶校
验位,分布在第8、16、
24、32、40、48、56
和64位的位置上,目
的是用来检错,实际的
初始密钥长度是56位。
在DES算法中,每一
轮迭代需要使用一个子
密钥,子密钥是从用户
输入的初始密钥来产生
的。右图是各轮子密钥
产生的流程图。
数据加密标准-DES
(1)置换选择1(PC-1)
对于64位初始密钥K,按下表中置换表PC-1进行重新排列。不
难算出,丢掉了其中8的整数倍位置上的比特位,转换选择1后
的变换结果是56位。将前28位记为 C0,后28位记为 D0。
数据加密标准-DES
1971年末IBM公司提出了一种称为Luciffer的密码算法
1977年7月15日该算法被正式采纳作为美国联邦信息处理标准
生效,即数据加密标准(Data Encryption Standard,DES)。
实现分组密码设计算法的具体操作包括以下三个方面:
1.代替
将明文位用某种变换关系变换成新的位,使得产生的密文是一
堆杂乱无章的乱码,分组密码中采用复杂的非线性代替变换就
可达到比较好的混乱效果。
2.移位
指让明文中的每一位(包括密钥的每一位)直接或间接影响输出密
文中的许多位,以便隐蔽明文的统计特性。这种效果也称为“
雪崩效应”。
非对称密码体制
RSA密码算法
Diffie-Hellman密钥交换算法
ElGamal加密算法
RSA密码算法
RSA密码算法是美国麻省理工学院的Rivest, Shamir
和Adleman三位学者于1978年提出的。RSA密码方
案是惟一被广泛接受并实现的通用公开密码算法,
目前已经成为公钥密码的国际标准。它是第一个既
能用于数据加密,也通用数字签名的公开密钥密码
算法。
(1)密钥生成
首先选取两个大素数p和q,计算n=pq ,其欧拉函数值为 φ(n)=
(p-1)(q-1) ,然后随机选择整数e ,满足 gcd(e,φ(n))=1,并计
算整数 d= e-1 mod φ(n),则公钥为{e, n},私钥是{d, n}。p, q是
秘密参数,需要保密,如不需要保存,可销毁
RSA密码算法
(2) 加密过程
加密时要使用接收方的公钥,不妨设接收方的公钥
为e,明文m满足 0≤m<n(否则需要进行分组),计
算c= ms mod n ,c为密文。
(3) 解密过程
m= cd mod n
RSA密码算法
安全性分析:
① RSA的安全性依赖于著名的大整数因子分解的困难性问题。
如果要求n很大,则攻击者将其成功地分解为 是困难的。反之,
若n=pq,则RSA便被功破。因为一旦求得n的两个素因子p和q
,那么立即可得n的欧拉数 ,再利用欧几里德扩展算法求出
RSA 的私钥 的私钥。
随着科学技术的发展,人们对大整数因子分解的能力在不断提
高,而且分解所需的成本在不断下降。要安全使用RSA,应当
采用足够大的大整数n。建议选择p和q大约是100位的十进制素
数,因此模长n大约是200位十进制数(实际要求n的长度至少是
512比特),e和d选择100位左右,密钥{e,n}或{d,n}的长度大约
是300位十进制数,相当于1024比特二进制数
RSA密码算法
安全性分析:
② RSA的加密函数是一个单向函数,在已知明文m和公钥{e,
n}的情况下,计算密文是很容易的;但反过来,已知密文和公
钥的情况下,恢复明文是不可行的。从(1)的分析中得知,在n
很大的情况下,不可能从{e, n}中求得d,也不可能在已知c和
{e, n}的情况下求得d或m。
Diffie-Hellman密钥交换算法
Diffie和Hellman在1976年给出了通信双方通过信息交换协商密
钥的算法,即Diffie-Hellman密钥交换算法,这是第一个密钥协
商算法,用于密钥分配,不能用于加密或解密信息。
Diffie-Hellman密钥交换算法的安全性基于有限域上的离散对数
难题。
选择一个素数p,定义素数p的本原根为一种能生成{1,2,…
,p-1}中所有数的一个整数。不妨设 g为素数p的本原根,则
g2modp , g2modp ,…, g2modp 两两不同,构成{1,2,…
,p-1}中所有数。
对于任意整数 ,计算 y=gxmodp是容易的,称 y为模p的幂运算;
但反过来,若有上式成立,把满足关系式的最小的 x称为 y的
以g 为底模p的离散对数。
Diffie-Hellman密钥交换
算法
算法描述:
设通信双方为A和B,他们之间要进行保密通信,需要协商一个
密钥,为此,他们共同选用一个大素数 p 和Zp的一个本原元g
,并进行如下操作步骤:
S1 用户A产生随机数α (2≤ α ≤p-2), 计算yA=gαmodp ,并发送
yA给用户B。
S2 用户B产生随机数β (2≤ β ≤p-2), 计算yB=gβmodp ,并发送
yB给用户A。
S3 用户A收到yB 后,计算 ;用户B收到yA后,
计算 。
显然有:
这样用户A和B就拥有了一个共享密钥 ,就能以 作为会话密钥
进行保密通信了。
Diffie-Hellman密钥交换
算法
安全性分析:
当模p较小时,很容易求离散对数;依目前的计算能力,当模p
达到至少150位十进制数时,求离散对数成为一个数学难题。
因此,Diffie-Hellman密钥交换算法要求模p至少达到150位十进
制数,其安全性才能得到保证。但是,该算法容易遭受中间人
攻击。造成中间人攻击的原因在于通信双方交换信息时不认证
对方,攻击者很容易冒充其中一方获得成功。因此,可以利用
数字签名挫败中间人攻击。
ElGamal加密算法
ElGamal公钥密码体制是由ElGamal在1985年提出的,是一种
基于离散对数问题的公钥密码体制。该密码体制既可用于加密,
又可以用于数字签名,是除了RSA之外最有代表性的公钥密码
体制之一。
算法描述如下。
(1) 密钥生成
首先随机选择一个大素数p,且要求p-1有大素数因子。(g ∈ Z*p
是一个有p个元素的有限域, Z*p是Zp中的非零元构成的乘法群)
是一个本原元。然后再选一个随机数 x(1x<p-1),计算y= gx
modp ,则公钥为(y, g, p),私钥为x。
(2) 加密过程
不妨设信息接收方的公私钥对为{x,y},对于待加密的消息m
Zp ,发送方选择一个随机数k ∈ Z*p-1, 然后计算c1,c2
c1= gk modp,c2y= myk modp
,则密文为(c1,c2)。
ElGamal加密算法
(3) 解密过程
接收方收到密文(c1,c2)后,首先计算 ,
再由私钥计算 ,最后计算
,则消息m被恢复。
算法的正确性证明:
因为
所以
密码学应用
密码应用模式
加密方式
PGP应用
密码应用模式
DES、IDEA及AES等分组加密算法的基本设
计是针对一个分组的加密和解密的操作。然
而,在实际的使用中被加密的数据不可能只
有一个分组,需要分成多个分组进行操作。
根据加密分组间的关联方式,分组密码主要
分为4种模式。
密码应用模式
1. 电子密码本模式
电子密码本(Electronic Code Book,ECB)是最基本的一种加密
模式,分组长度为64位。每次加密依次独立,产生独立的密文
分组,每一组的加密结果不会影响其他分组,如图所示。
该模式的优点是:可以利用平行处理来加速加密/解密运算,且
在网络传输时任一分组即使发生错误,也不会影响到其他分组。
该模式的缺点是:对于多次出现的相同的明文,当该部分明文
恰好是加密分组的大小时,则可能发生相同的密文,如果密文
内容遭到剪贴、替换等攻击,也不容易发现。
在ECB模式中,加密函数E与解密函数D满足关系:
Dk(Ek(M))=M .
密码应用模式
密码应用模式
2. 密文链接模式
密文链接(Cipher Block Chaining Code,CBC)模式,执行方式
如图所示。第一个明文分组先与初始向量(IV,Initialization
Vector)做异或(XOR)运算,再进行加密。其它每个明文分组加
密之前,必须与前一个密文分组作一次异或运算,再进行加密
该模式的优点是:每一个分组的加密结果均会受其前面所有分
组内容的影响,所以即使在明文中多次出现相同的明文,也不
会产生相同的密文;另外,密文内容若遭剪贴、替换,或在网
络传输的过程发生错误,则其后续的密文将被破坏,无法顺利
解密还原,因此,这一模式很难伪造成功。
该模式的缺点是:如果加密过程中一旦出现错误,则这种错误
被无限放大,导致加密失败;这种加密模式很容易受到攻击,
遭到破坏。
在CBC模式中,加密函数E与解密函数D满足关系:
Dk(Ek(M))=M。
密码应用模式
密码应用模式
3. 密文反馈模式
密文反馈(Cipher Feed Back,CFB)模式,如图所示。CFB需
要一个初始化向量IV,加密后与第一分组进行异或运算产生第
一组密文;然后,对第一组密文加密再与第二分组进行异或去
处得第二组密文,依次类推,直至加密完毕。
这种模式的特点是:先对前一组密文加密,然后再与明文分组
进行异或运算。
这种模式的优点是:每一个分组的加密结果受其前面所有分组
内容的影响,即使出现多次相同的明文,均产生不相同的密文;
这一模式可以作为密钥流生成器,产生密钥流。它的缺点与
CBC模式类似。
在CFB模式中,加密函数E和解密函数D相同,满足关系:。
密码应用模式
密码应用模式
4. 输出反馈模式
输出反馈(Output Feed Back,OFB)模式,如图2-6-4所示。该
模式产生与明文异或运算的密钥流,从而产生密文,这一点与
CFB大致相同,惟一差异点是与明文分组进行异或的输入部分
是反复加密后得到的。
在OFB模式中,加密函数E和解密函数D相同,满足关系:
密码应用模式
加密方式
在计算机网络中,既要保护在网络传输过程中的数
据,又要保护存储在计算机系统中的数据。
在传输过程中的数据加密称为“通信加密”,在计
算机系统中的存储数据加密称为“文件加密”。
如果以加密实现的通信层次来区分,加密可以在通
信的三个不同层次来实现,即节点加密、链路加密
和端到端加密3种。
节点加密的目的是对源节点到目的节点之间的传输
链路提供保护;链路加密的目的是保护网络节点之
间的链路信息安全;端到端加密的目的是对源端用
户到目的端用户的数据提供保护。
加密方式
1. 节点加密
节点加密是指对源节点到目的节点之间传输的数据
进行加密。它工作在OSI参考模型的第一层、第二层;
从实施对象来讲,它仅对报文加密,而不对报头加
密,以便于传输路由根据其报头的标识进行选择。
一般的节点加密使用特殊的加密硬件进行解密和重
加密,因此,要保证节点在物理上是安全的,避免
信息泄露。
加密方式
2. 链路加密
链路加密在OSI七层参考模型的第二层,即数据链路
层进行,是对相邻节点之间的链路上所传输的数据
进行加密。
链路加密侧重与在通信链路上而不考虑信源和信宿,
对通过各链路的数据采用不同的加密密钥提供安全
保护,它不仅对数据加密而且还对高层的协议信息
(地址、检错、帧头帧尾)也加密,在不同节点对
之间使用不同的加密密钥。但在节点处,要先对接
收到的数据进行解密,获得路由信息,然后再使用
下一个链路的密钥对消息进行加密,再进行传输。
在节点处是消息以明文方式存在。因此,所有节点
在物理上必须是安全的。
加密方式
3. 端到端加密
端到端加密是指为用户传送数据提供从发送端到接收端的加密
服务。
它工作在OSI七层参考模型的第六层或第七层,由发送端自动
加密信息,并进入TCP/IP数据包回封,以密文的形式穿过互联
网,当这些信息一旦到达目的地,将自动重组、解密,成为明
文。
端到端加密是面向用户的,它不对下层协议进行信息加密,协
议信息以明文形式传输,用户数据在传输节点不需解密。由于
网络本身并不会知道正在传送的数据是加密数据,这对防止拷
贝网络软件和软件泄漏也很有效。在网络上的每个用户可以拥
有不同的加密密钥,且网络本身不需要增添任何专门的加解密
设备。
PGP应用
网络中,目前有很多协议采用加密机制,比较著名的有
S/MIME、IPSec以及PGP等。
PGP—Pretty Good Privacy,是一个基于RSA公钥加密体系的
邮件加密软件,包含:一个对称加密算法(IDEA)、一个非对
称加密算法(RSA)、一个单向散列算法(MD5)以及一个随
机数产生器(从用户击键频率产生伪随机数序列的种子)。
PGP 的创造性在于他把RSA公钥体系的方便和传统加密体系
的高速度结合起来,并且在数字签名和密钥认证管理机制上有
巧妙的设计。
PGP软件的使用还需对邮件收发软件进行配置。
小结
1.密码学的发展大致经历了手工加密阶段、机械加
密阶段和计算机加密阶段。密码技术是现代信息安全
的基础和核心技术,它不仅能够对信息加密,还能完
成信息的完整性验证、数字签名和身份认证等功能。
按加密密钥和解密密钥是否相同,密码体制分为对称
密码体制和非对称密码体制。对称密码体制又可分为
序列密码和分组密码。
2.移位密码、仿射密码、维吉利亚密码和置换密码
等是常用的古典密码案例,虽然在现代科技环境下已
经过时,但它们包含的最基本变换移位和代替在现代
分组密码设计中仍然是最基本的变换。
小结
3.对称密码体制要求加解密双方拥有相同的密钥,
其特点是加密速度快、软硬件容易实现,通常用于
传输数据的加密。常用的加密算法有DES、IDEA。
对称密码算法加密模式一般分为4种:电子密码本
(ECB)模式、密文链接(CBC)模式、密文反馈(CFB)
模式和输出反馈(OFB)模式。
4.非对称密码体制的加密密码和解密密钥是不相同
的。用作加密时,使用接收者的公开密钥,接收方
用自己的私有密钥解密;用作数字签名时,使用发
送方(签名人)的私有密钥加密(或称为签名),接收
方(或验证方)收到签名时使用发送方的公开密钥
验证。常用的算法如RSA等。
小结
5.加密可以在通信的三个不同层次来实现,即节点
加密、链路加密和端到端加密。节点加密是指对源
节点到目的节点之间传输的数据进行加密,不对报
头加密;链路加密在数据链路层进行,是对相邻节
点之间的链路上所传输的数据进行加密,在节点处,
传输数据以明文形式存在,侧重在通信链路上而不
考虑信源和信宿;端到端加密的目的是对源端用户
到目的端用户的数据提供保护,传输数据在传输过
程中始终以密文形式存在。
6.序列密码要求具有良好的伪随机特性,产生密钥
流的常见方法有线性同余法、RC4、线性反馈移位
寄存器(LFSR)、非线性反馈移位寄存器、有限自动
机和混沌密码等。序列密码主要用于军事、外交和
其他一些重要领域,公开的加密方案并不多。