950 likes | 1.18k Views
第八章 密码学与信息加密. 内容提要. 本章介绍密码学的基本概念。 介绍加密领域中两种主流的加密技术: DES 加密( Data Encryption Standard ) RSA 加密( Rivest-Shamir-Adleman ) 并用程序实现这两种加密技术的算法。 介绍目前常用的加密工具 PGP ( Pretty Good Privacy ),使用 PGP 产生密钥,加密文件和邮件。. 发展概述. 密码学( crytology ) 研究信息系统安全保密的科学 密码编码学( crytography ) 主要研究对信息进行编码,实现对信息的隐蔽
E N D
内容提要 • 本章介绍密码学的基本概念。 • 介绍加密领域中两种主流的加密技术: • DES加密(Data Encryption Standard) • RSA加密(Rivest-Shamir-Adleman) • 并用程序实现这两种加密技术的算法。 • 介绍目前常用的加密工具PGP(Pretty Good Privacy),使用PGP产生密钥,加密文件和邮件。
发展概述 • 密码学(crytology) • 研究信息系统安全保密的科学 • 密码编码学(crytography) • 主要研究对信息进行编码,实现对信息的隐蔽 • 密码分析学(crytanalytics) • 研究加密消息的破解或消息的伪造 • 1949年以前,密码学是一种艺术 • 1949-1975,密码学成为科学 • 1976以后,密码学的新方向:公钥密码学
第1阶段-古典密码 • 密码不是科学,是艺术; • 出现一些密码算法和加密设备; • 密码算法的基本手段出现,针对的是字符; • 简单的密码分析手段出现; • 主要特点: • 数据的安全依赖于算法是否保密;
加密算法的建立原则 • 1883年Kerchoffs第一次明确提出编码原则: 加密算法应建立在算法的公开不影响明 文和密钥的安全。 • 这一原则已普遍得到承认,成为判定密码强度的衡量标准,实际上也成为传统密码和现代密码的分界线;
第2阶段 1949-1975 • 计算机使得基于复杂计算的密码成为可能; • 相关技术的发展: • 1949年的Shannon的《The communication of secret system》 • 1967年的David Kahn的《The codebreakers》 • 1971-1973年的IBM waston实验室的Horst Feistel的几篇报告; • 主要特点: • 数据的安全基于密钥而不是算法的保密;
第3阶段 1976~ • 1976年,Diffie&Hellman提出不对称密钥密码; • 1977年,Rivest,Shamir&Adleman提出了RSA公钥算法; • 1977年,DES(数据加密标准) • 80年代,IDEA,RCx,CAST等; • 90年代,对称密钥密码进一步成熟 • 2001年,Rijndael成为DES的替代者; • 主要特点:公钥密码使得发送端和接收端无密钥传输的保密成为可能;
常规加密简化模型 明文 密文 原来的明文 加密 解密
对称密码体制 • 对称密码算法(symmetric cipher) • 加密密钥和解密密钥相同 • 又称秘密密钥算法或单密钥算法 • 对称加密算法的特点: • 算法有足够的强度; • 安全性依赖于密钥,而不是算法; • 速度快;
明文 密文 • 明文:消息的初始形式; • 密文:加密后的形式; • 记: • 明文:P(Plaintext,明文) • 密文:C(Cipher) • 明文和密文之间的变换记为: C = E(P)及 P=D(C) • 其中E为加密算法,D为解密算法; • 要求密码满足:P=D(E(P))
算法和密钥 • 现代密码学用密钥解决了这个问题,密钥用K表示。K可以是很多数值里的任意值,密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥,即运算都依赖于密钥,并用K作为下标表示,加解密函数表达为: • Ek(P)=C • Dk(C)=P • Dk(Ek(P))= P • 有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下,加密和解密的函数表达式为: • Ek1(P)=C • Dk2(C)=M • 函数必须具有的特性是,Dk2(Ek1(P))= P,
经典加密技术 • 替代; • 置换; • 转子机; • 替代: • 明文的字母由其他字母或数字或符号代替; • 若该明文被视为一个bit序列,则替代涉及到用密文bit模式代替明文bit模式;
恺撒密码 • 破译以下密文: • 密文:PHHW PH DIWHO WKH SDUWB • 明文:meet me after the party 字母表:(密码本) 密文:A B C D E F G H I J K L M N O P Q RS T UVWXYZ 明文:x y z a b c d e f g h i j k l m n o p q r s t uvw i : 0 1 2 3 4 5 6 7 8 9…….. • 解密过程:pi=Di(Ci)=Ci-3 • 加密算法:C = E(p)= (p+3)mod(26) • 解密算法:P = D(C)= (C-3)mod(26)
凯撒密码 • 设密钥为k: • 加密算法:C=E(p)=(p+k)mod(26) • 解密算法:p=D(C)=(C-k)mod(26) • 25个可能的密钥k, k∈[1,25] • 特点: • 单字母密码(简单替换技术) • 简单,便于记忆 • 缺点:结构过于简单,密码分析员只使用很少的信息就可预言加密的整个结构
凯撒密码的改进 • 凯撒密码只有25个密钥k,非常不安全; • 若有意改变字母的排列顺序,可增大密钥空间; • 例如:使用密钥 • Key • ABCDEFGHIJKLMNOPQRSTUVWXYZ • keyabcdfghijlmnopgrstuvwxz • spectacular • ABCDEFGHIJKLMNOPQRSTUVWXYZ • spectacularbdfghijkmnoqvwxyz • 泄露给破译者的信息更少;
单字母替换 • 对字母按特定的规则进行重新排列 • E(i)=3*i mod 26 • ABCDEFGHIJKLMNOPQRSTUVWXYZ • Adgjmpsvybehknqtwzcfilorux • 若允许字母的任意替代,可增大密钥空间: • K=26! > 4 x 1026 • 但基于语言统计规律仍可破译
E使用最多; 频率 然后是T R N I O A S 其他字母使用较少 14 最少的是J K Q X Z 12 10 8 6 4 2 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 英文中字母的使用频率
频率 密文字母频率 14 12 10 8 6 4 2 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 基于语言统计规律的破译 • 1 密文: • UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZVUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSXEPYEPOPDZSZUFPOMBZWPFUPZHMDJUDTMOHMQ • 2 统计字母的相对频率; • 3 猜测P Z可能是e和t; • 4 统计字母的相对频率-双字母 • 5 猜测ZW可能是th,因此ZWP可能是the • 6 经过反复猜测、分析和处理,明文: • it was disclosed yesterday that serveral informal but direct contacts have been made with political representatives of the viet cong in moscow
频率 密文字母频率 14 12 10 8 6 4 2 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
仿射密码 • 是替换密码的一个特例 • 加密函数的形式为: • 加密函数:ek (x)=( ax + b ) mod 26 • 解密函数:d k (y)=a-1 ( y-b ) mod 26 Î a ,x, Z /( 26 ) b, y
加密 解密 é ù é ù é ù 0 19 7 é ù é ù é ù é ù 7 3 0 A é ù h ê ú ê ú ê ú ê ú ê ú ê ú ê ú ê ú = - = + = 7 14 3 23 X 15 23 19 14 o mod 26 ê ú ê ú ê ú ê ú ê ú ê ú ê ú mod 26 ê ú ê ú ê ú ê ú ê ú ê ú 19 3 6 G ê ú ê ú ê ú t ë û ë û ë û ë û 6 19 19 ë û ë û ë û ë û 仿射密码 设密钥k=(7,3),注意到7-1(mod 26)=15 • 加密函数:ek(x)=7x+3 • 解密函数:dk(y)=15(y-3)=15y-19 • 易见 dk(ek(x)=dk(7x+3)=15(7x+3)-19 =x+45-19 =x (mod 26)=x 若加密明文:hot ,首先转换字母h,o,t成为数字7,14,19,然后加密:
维基尼亚密码(Vigenere) • 属单字符多表代换密码体制 • 方法: • 以移位代换为基础的周期代换密码; • m个移位代表由m个字母组成密钥字; • 字母a b c d… x y z分别由数字0 1 2 3 …24 25表示; • 加密时:明文字母Pi在密钥Ki的作用下向后移位d(Ki),得到密文字母Ci。 • 解密时:密文字母Ci在密钥Ki的作用下向前移位d(Ki),得到明文字母Pi。 • 维基尼亚表:26x26矩阵表示26种排列组合
维基尼亚密码(Vigenere)-示例 • 若密钥字为deceptive,即m=9 • 明文wearediscoveredsav的加密过程: • 明文:wearediscoeredsav • 密钥:deceptivedeceptive • 密文:ZICVTWQNGRZGVTWAVZ • 密钥字母d对应数字3,因而明文字母w在密钥字母d的作用下向后移位3,得到密文字母Z。依次类推;
维基尼亚密码(Vigenere) • 维基尼亚密码是多表替换体制,分析起来更加困难。 • 密钥空间大,可能的密钥字达26m • 如果秘要字的长度是m,明文中的一个字母能够映射成这m个可能的字母中的一个; • 例如,当m=5,密钥空间所含密钥的数量是>1.1x107 • 明文和密文的字母频率分布相同,仍然能使用统计分析破译
换位密码-置换密码体制 • 置换密码体制 • 通过执行对明文字母的置换,取得一种类型完全不同的映射; • 换位密码 • 密钥使用置换而不使用矩阵 • 对明文m长字母组中的字母位置重新排列而不改变明文字母; • 特点: • 使用字母比使用数字更方便,无代数运算;
置换密码体制 • 最简单的例子是栅栏技术:按照对角线的顺序写入明文,而按行的顺序读出作为密文。 • 明文: meet me after the party • 写为: m e m a t r h p r y • e t e f e t e a t • 密文:mematrhpryetefeteat
置换密码体制 • 把消息一行一行的写出,然后按列读取,但把列的次序打乱,列的次序就是密钥; • 密钥: 4 3 1 2 5 6 7 • 明文: a t t a c k p • o s t p o n e • d u n t i l t • w o a m x y z • 密文:ttnaaptmtsuoaodwcoixknlypetz
1 2 3 4 5 6 K = • 3 5 1 6 4 2 • 1 2 3 4 5 6 K-1 = • 3 6 1 5 2 4 换位密码-示例 • 例:设m=6,设置密钥置换: • 加密的密钥置换 明文组中的第5个字符与第4个字符进行置换 • 解密的密钥置换
1 2 3 4 5 6 K = • 3 5 1 6 4 2 换位密码-示例 • 对明文cryptography进行加密,首先将明文分成6个字母长的明文组:crypto|graphy; • 然后将每个明文组按密钥置换K重新排列: 加密的密钥置换 • c r y p t o = YTCOPR (crypto)K = • y t c o p r • g r a p h y (graphy)K = = AHGYPR • a h g y p r
密码分析 • Kerchkhoff原则 • 假设攻击者是在已经密码体制的前提下来破译密码系统的密钥; • 最常见的破解类型如下: • 1 唯密文攻击: • 攻击者有一些密文,它们是使用同一加密算法和同一密钥加密的; • 2 已知明文攻击: • 攻击者不但得到一些密文,而且能够得到这些密文对应的明文;
密码分析 • 3 选择明文攻击: • 攻击者不仅得到一些密文和明文,而且能选择用于加密的明文; • 4 选择密文攻击: • 攻击者可以选择不同的密文来解密,并能够得到解密后的明文; • 这一切的目的都是:破译出密钥 • 一般说来:密码系统应该经得起已知明文的攻击。 • 如果攻击者无论得到多少密文,都没有足够的信息去恢复明文,则密码系统是无条件安全的。理论上,只有一次一密的系统才能真正实现。
密钥k= 密钥k= (k0,… ,kn-1) (k0,… ,kn-1) 分组密码的一般设计原理 • 分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。 原来的明文 明文 加密算法 解密算法 (x0,… ,xn-1) (x0,… ,xn-1) 密文 (y0,… ,yn-1)
分组密码的一般设计原理 • 设计目标 • 在密钥控制下,从一个足够大、足够好的置换子集中简单迅速地选出一个置换,对当前输入的明文数字组进行加密变换; • 要求: • 1 分组长度足够大,防止穷举攻击; • 2 密钥空间足够大,但不能太长,以便于密钥的管理; • 3 算法要足够复杂,充分实现明文和密钥的扩散;没有简单的关系可寻
DES对称加密技术 • DES(Data Encryption Standard)算法 • 是一种用56位密钥来加密64位数据的方法。 • 发明人: • IBM公司 W.Tuchman和C.Meyer. • 基础: • 1967年美国Horst Feistel提出的理论; • 产生: • 美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告,最终选定DES。
DES • 采用分组密码体制; • 用56bit密钥来加密64bit数据的方法; • DES要达到的目标有: • 提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改; • 具有复杂性,使得破译的开销超过可能获得的利益; • DES的安全性不依赖于算法的保密,安全性仅以加密密钥的保密为基础; • 在实现上可行、经济;
DES算法的原理 • DES算法的入口参数有三个:Key、Data、Mode。 • 其中: • Key为8个字节共64位,是DES算法的工作密钥; • Data也为8个字节64位,是要被加密或被解密的数据; • Mode为DES的工作方式有两种:加密或解密。
DES算法原理 • DES算法的工作原理: • 如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果; • 如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。
DES算法的实现步骤 • DES算法实现加密需要三个步骤: • 第一步:变换明文。 • 对给定的64位比特的明文x,首先通过一个置换IP表来重新排列x,从而构造出64位比特的x0,x0=IP(x)=L0R0,其中L0表示x0的前32比特,R0表示x0的后32位。 • 第二步: • 按照规则迭代。规则为 • Li = Ri-1 • Ri = Li⊕f(Ri-1,Ki) (i=1,2,3…16) • 经过第一步变换已经得到L0和R0的值,其中符号⊕表示的数学运算是异或,f表示一种置换,由S盒置换构成,Ki是一些由密钥编排函数产生的比特块。f和Ki将在后面介绍。 • 第三步: • 对L16R16利用IP-1作逆置换,就得到了密文y。
初始置换IP置换表 在密钥控制下16轮迭代 交换左右32bit IP逆置换表 输出64位比特密文 DES加密过程 输入64位比特明文
DES算法的实现步骤 • 可以看出,DES加密需要四个关键点: • (1)IP置换表和IP-1逆置换表; • (2)函数f; • (3)子密钥Ki。 • (4)S盒的工作原理。
输入的第58位作为第1位 输入的第40位作为第1位 输入的第50位作为第1位 输入的第8位作为第1位 输入的第42位作为第1位 输入的第42位作为第1位 (1)IP置换表和IP-1逆置换表 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
IP与IP-1互逆 M=(m1 , m2 ,…..) IP(M)=(m58 , m50)=(m11 , m12 ,…..) 1 2 3 4 5 6 7 8 58 50 42 34 26 18 10 2 9 10 11 12 13 14 15 16 60 52 44 36 28 20 12 4 17 18 19 20 21 22 23 24 62 54 46 38 30 22 14 6 25 26 27 28 29 30 31 32 IP 64 56 48 40 32 24 16 8 33 34 35 36 37 38 39 40 57 49 41 33 25 17 9 1 41 42 43 44 45 46 47 48 61 58 45 37 29 21 13 5 49 50 51 52 53 54 55 56 63 55 47 39 31 23 15 7 1 2 3 4 5 6 7 8 40 8 48 16 56 24 64 32 9 10 11 12 13 14 15 16 39 7 47 15 55 23 63 31 17 18 19 20 21 22 23 24 38 6 46 14 54 22 62 30 IP-1 25 26 27 28 29 30 31 32 37 5 45 13 53 21 61 29 33 34 35 36 37 38 39 40 36 4 44 12 52 20 60 28 41 42 43 44 45 46 47 48 34 2 42 10 50 18 58 26 49 50 51 52 53 54 55 56 33 1 41 9 49 17 57 25
DES的一轮迭代 轮开始:64bit分成左右两半 Li-1(32 bit) Ri-1(32 bit) 选择扩展运算 E盒 48bit寄存器 子密钥Ki (48 bit) ⊕ 48bit寄存器 选择压缩运算 S盒 32bit寄存器 置换运算 P ⊕ (32 bit) Li=Ri-1 Ri =Li-1⊕f(Ri-1,ki)(32 bit)
扩展置换 E盒 (Expand Box) • 将输入的32bit块扩展到48bit的输出块; • 48bit的输出块再分成8个6bit块; 扩展置换函数E 扩展位 固定位 扩展位 32 01 02 03 04 01 02 03 04 05 05 06 07 08 04 09 05 06 07 08 09 10 11 12 08 09 10 11 12 13 13 14 15 16 12 13 14 15 16 17 17 18 19 20 16 17 18 19 20 21 21 22 23 24 20 21 22 23 24 25 25 26 27 28 24 25 26 27 28 29 29 30 31 32 28 29 30 31 32 01
S1 S2 S3 S4 S5 S6 S7 S8 压缩替代 S盒 (Substitution Box) • 48bit块通过S盒压缩成32bit块 48bit寄存器 6bit 共8个S盒 4bit 32bit寄存器
S1盒 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 S2盒 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 S盒 • 作用:将6个输入位映射为4个输出位; • 方法:若定义a1a2a3a4a5a6,将a1a6组成2位二进制数,对应S盒表中的行号;将a2a3a4a5组成一个4位的2进制数,对应S盒表中的列号;映射到交叉点的数据就是该S盒的输出。 • 输入为101011的输出是???
S3盒 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 S4盒 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 S5盒 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3 S盒
S6盒 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13 S7盒 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 S8盒 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11 S盒
S盒 • DES中其它算法都是线性的,而S盒运算则是非线性的,S盒不易于分析,它提供了更好的安全性;所以S盒是算法的关键所在; • 提供了密码算法所必需的混乱作用; • 改变S盒的一个输入位至少要引起两位的输出改变;
16 07 20 21 29 12 28 17 01 15 23 26 05 18 31 10 02 08 24 14 32 27 03 09 19 13 30 06 22 11 04 25 置换函数P(Permutaion) • P置换的目的是:提供雪崩效应; • 明文或密钥的一点小的变动都引起密文的较大变化;