1.34k likes | 1.46k Views
第二章. 信息保密技术. 密码学的发展. 第一个阶段 :1949 年以前 古典加密 计算机技术出现以前 密码学作为一种技艺 , 而不是一门科学 第二个阶段 :1949 年到 1976 年 标志 : Shannon 发表 ”Communication Theory of Secrecy System” 密码学进入了科学的轨道 主要技术 : 单密钥的对称密钥加密算法 第三个阶段 :1976 年以后 标志 : Diffie,Hellman 发表 ”New Dircetions in Cryptography” 一种新的密码体制 : 公开密钥体制.
E N D
第二章 信息保密技术
密码学的发展 第一个阶段:1949年以前 古典加密 计算机技术出现以前 密码学作为一种技艺,而不是一门科学 第二个阶段:1949年到1976年 标志: Shannon 发表”Communication Theory of Secrecy System” 密码学进入了科学的轨道 主要技术: 单密钥的对称密钥加密算法 第三个阶段 :1976年以后 标志 : Diffie,Hellman发表”New Dircetions in Cryptography” 一种新的密码体制 : 公开密钥体制
本章提示 2.1 古典密码 2.2 分组加密技术 2.3 公钥加密技术 2.4 流密码技术 2.5 电子信封设计 2.6 信息隐藏技术
2.1 古典密码 • 代换密码 • 单表代换密码 移位密码 替换密码 仿射密码 • 多表代换密码 Vigenère(维吉尼亚)密码 • 置换密码
常规密码系统模型 破译者 加密变换 解密变换 消息源 目的地 秘密通道 密钥源
p 加密变换E C C 解密变换D p 加/解密原理描述 假设明文字母用P表示,密文字母用C表示,密钥用K表示, 加密变换用E表示,解密变换用D表示,则有: 1.加密原理 文字描述:C=Ek(p) 2.解密原理 文字描述:p=Dk(C)
名词解释 1.明文(plaintext) 未加密的信息。 2.密文(ciphertext) 已加密的信息。 3.密钥(key) 控制密码变换操作的符号序列,是保密的核心。 4.加密(encryption) 将明文变换成密文的过程。 5.解密(decryption) 将密文变换成明文的过程。 6.密码算法(cipher algorithm) 密码算法是一些公式、法则或程序,是加密算法和解密算法的统称, 是密码系统的核心。
代换密码 • 令Θ表示明文字母表,内有q个“字母”或“字符”,可以将Θ抽象地表示为一个整数集 • 在加密时通常将明文消息划分成长为L的消息单元,称为明文组,以m表示,如 • m也称作L-报文,它可以看作是定义在 上的随机变量 • L=1为单字母报(1-gram),L=2为双字母报(digrams),L=3为三字母报(trigrams)。这时明文空间为 。
代换密码(续) 令ξ表示q个“字母”或“字符”的密文字母表,抽象地可用整数集 表示 密文单元或组为 c是定义在 上的随机变量。密文空间 一般地,明文和密文由同一字母表构成,即Θ=ξ
代换密码(续) • 代换密码可以看作是从 到 的映射。 时 ,称作单字母代换,也称作流密码(Stream cipher)。 时,称作多码代换,亦称分组密码(Block cipher)。 • 一般地,选择相同明文和密文字母表 。此时,若 , 则代换映射是一一映射,密码无数据扩展。若 ,则有数据扩展,可将加密函数设计成一对多的映射,即明文组可以找到多于一个密文组来代换,这称之为多名(或同音)代换密码(Homophonic substitution cipher)。 若 ,则明文数据被压缩,此时代换映射不可能构成可逆映射,从而密文有时也就无法完全恢复出原明文消息,因此保密通信中必须要求 。但 的映射可以用在认证系统中。
代换密码(续) 在Θ=ξ,q=q’,L=1时,若对所有明文字母,都用一种固定的代换进行加密,则称这种密码为单表代换(Monoalphabetic substitute)。若用一个以上的代换表进行加密,这就称作多表代换(Polyalphabetic substitute)。 这是古典密码中的两种重要体制。还有一个常见的是多字母代换密码。
单表代换密码 • 单表代换密码是对明文的所有字母都用一个固定的明文字母表到密文字母表的映射 ,即 。令明文 ,则相应地密文为 • 几类常见的单表代换密码 • 移位密码 • 替换密码 • 仿射密码 • 单表代换密码不能非常有效地抵抗密码攻击,因为语言的特征仍能从密文中提取出来
移位密码 由于英文字符有26个字母,可以建立英文字母和模26的剩余之间的对应关系:
移位密码(续) 对于英文文本,则明文、密文空间都可定义为 (很容易推广到n个字母的情况)。容易看出移位满足我们密码系统的定义, 即 。 设 定义 ,且 。
凯撒密码 历史上最著名的移位密码就是凯撒密码。 凯撒密码(Caesar cipher) (1)原理(明密对照表) 明文: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 密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C (2)算法描述(数学描述) 假设明文字母用P表示,密文字母用C表示,密钥用K表示,加密变换用E表示,解密变换用D表示,并设a=0,b=1,c=2,d=3,…x=23,y=24,z=25,则有: C=Ek(p)=(p+3)mod(26) p=Dk(C)=(C-3)mod(26)----C不够减时可向前借位
在计算机中,a=97,b=98,c=99,d=100,…x=120,y=121,z=122,则: 明密对照表如下: 明文: 97, 98, 99,100,…,120,121,122密文:100,101,102,103,…, 97, 98, 99 加/解密算法描述如下:C=Ek(p)=[(p-97)+3]mod(26)+97 p=Dk(C)=[(C-97)-3]mod(26)+97 ----若[(C-97-3)] <0时,C可借位 (1)求明文字母a的密文字母的过程如下: C=[(a-97)+3]mod(26)+97=3+97=100(d) (2)求明文字母z的密文字母的过程如下: C=[(z-97)+3]mod(26)+97=28mod(26)+97=2+97=99(c) (3)求密文字母C的明文字母的过程如下: p=[(99-97)-3]mod(26)+97=[(2-3)+26]mod(26)+97=25+97=122(z) (4) 求密文字母A的明文字母的过程如下: p=[(97-97)-3]mod(26)+97=[(0-3)+26]mod(26)+97=23+97=120(x)
替换密码 定义 设 ,密钥空间K由所有可能的26个符号0,1,…….,25的置换组成。对每一个置换 ,定义 则, 其中 的逆置换。
置换 的表示为: 替换密码的密钥是由26个字母的置换组成。这些置换的数目是26!,超过 ,是一个非常大的数。这样即使对现代计算机来说,穷举密钥搜索也是不可行的。显然,替换密码的密钥(26个元素的随机置换)太复杂而不容易记忆,因此实际中密钥句子常被使用。密钥句子中的字母被依次填入密文字母表(重复的字母只用一次),未用的字母按自然顺序排列。
仿射密码 • 加密函数为: • 当=1时,为移位密码 • 仿射函数是双射 • 当且仅当gcd (a,26)=1时同余方程 对每个y有唯一的解
仿射密码系统 设 ,且 对 定义 且 因为满足 ,gcd(a,26)=1的 只有12种候选,对参数 没有要求。所以仿射密码有 种可能的密钥。
多表代换密码 • 以一系列(两个以上)代换表依次对明文消息的字母进行代换的加密方法。 • 令明文字母表为 , 为代换序列,明文字母序列 ,则相应的密文字母序列为 。 • 若f是非周期的无限序列,则相应的密码称为非周期多表代换密码。这类密码,对每个明文字母都采用不同的代换表(或密钥)进行加密,称作一次一密密码(One-time pad cipher),这是一种理论上唯一不可破的密码 。
多表代换密码(续) 实际应用中都采用周期多表代换密码。 经典的多表代换密码有 • Vigenère • Beaufort • Running-Key • Vernam • 轮转机(Rotor machine)等
Vigenère密码 Vigenère密码是由法国密码学家Blaise de Vigenère 于1858年提出的,它是一种以移位代换(当然也可以用一般的字母代换表)为基础的周期代换密码。 设m是某固定的正整数,定义 ,对一个密钥 ,定义: 且 所有的运算都在 中。
[例]利用Vigenère密码,使用密钥word加密信息computer。[例]利用Vigenère密码,使用密钥word加密信息computer。 明文:comp uter 密钥:word word 密文:ycds qhvu 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 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
多字母代换密码——Hill密码 特点 每次对 个字母进行代换,这样做的优点是容易将字母的自然频度隐蔽或均匀化而有利于抗统计分析。 算法 设m是某个固定的正整数, ,又设 ;对任意 , 定义 ,则 其中,所有的运算都是在 中进行。
注1:m=1时,系统退化为单字母仿射代换密码,可见Hill密码是仿射密码体制的推广。注1:m=1时,系统退化为单字母仿射代换密码,可见Hill密码是仿射密码体制的推广。 • 注2:如果m=2,可以将明文写为 密文写为 . 是 的线性组合.若取 简记为 其中 为密钥.
置换密码 置换密码的想法是保持明文字符未改变,但通过重排而更改他们位置,所以有时也称为换位密码(Transposition Cipher)。 算法 设m是某个固定的正整数,定义 ,且K由所有 的置换组成.对一个密钥 (即一个置换),定义 其中, .
置换密码举例 [例一]栅栏式密码 美国南北战争时期(1861-1865年),军队中曾经使用过的“栅栏”式密码(rail fence cipher)。 (1)原理 明文: send help 加密过程: s n h l(单字母) e d e p (双字母) 密文:s n h l e d e p (2)算法描述 将明文写成双轨的形式,然后按行的顺序书写得到密文。
置换密码举例 [例二] 矩阵置换 以矩阵形式排列明文 将明文逐行写入矩阵,然后逐列读出 密钥指出各列读出的顺序 如:明文abcdefghijklmnopqrstuvwxyzab 密钥为:4312567 说明:密钥为 读取的列号 (1-7) dkry cjqx ahov bipw elsz fmta gnub
解密与密码分析 • Kerckhoff假设: 攻击者已知加密算法 • 解密是加密的逆过程,是指掌握密钥和密码算法的合法人员从密文恢复出明文的过程。密码分析则是指非法人员对密码的破译,而且破译以后不会告诉对方。 • 共同点:“解密(脱密)”和“密码分析(密码破译)”都是设法将密文还原成明文。 • 不同点:二者的前提是不同的, “解密(脱密)”掌握了密钥和密码体制,而密码分析(破译)则没有掌握密钥和密码体制。
2.2 分组加密技术 本节友情提示 2.2.1基本概念 2.2.2标准算法的介绍 • DES算法 • 国际数据加密算法(IDEA) • AES算法 2.2.3分组密码的分析方法 2.2.4分组密码的工作模式
2.2.1基本概念 • 密码学中常见的有两种体制: • 对称密码体制(单钥密码体制) 如果一个加密系统的加密密钥和解密密钥相同,或者虽然不相同,但是由其中的任意一个可以很容易地推导出另一个,即密钥是双方共享的,则该系统所采用的就是对称密码体制。 • 非对称密码体制(公钥密码体制) • 分组密码是指将处理的明文按照固定长度进行分组,加解密的处理在固定长度密钥的控制下,以一个分组为单位独立进行,得出一个固定长度的对应于明文分组的结果 。属于对称密码体制的范畴 。
基本概念(续) 在分组密码的设计中用代替、置换手段实现扩散和混淆功能 。 混淆 指加密算法的密文与明文及密钥关系十分复杂,无法从数学上描述,或从统计上去分析。 扩散 指明文中的任一位以及密钥中的任一位,对全体密文位有影响。经由此种扩散作用,可以隐藏许多明文在统计上的特性,增加密码的安全
2.2.2 标准算法的介绍 DES算法 国际数据加密算法(IDEA) AES算法
DES加密算法的背景 • 发明人 美国IBM公司W. Tuchman 和 C. Meyer 1971-1972年研制成功。 • 基础 1967年美国Horst Feistel提出的理论 • 产生 美国国家标准局(NBS)1973年5月到1974年8月两次发布通告,公开征求用于电子计算机的加密算法。经评选从一大批算法中采纳了IBM的LUCIFER方案。 • 标准化 DES算法1975年3月公开发表,1977年1月15日由美国国家标准局颁布为数据加密标准(Data Encryption Standard),于1977年7月15日生效。
DES加密算法的背景 • 美国国家安全局(NSA, National Security Agency)参与了美国国家标准局制定数据加密标准的过程。NBS接受了NSA的某些建议,对算法做了修改,并将密钥长度从LUCIFER方案中的128位压缩到56位。 • 1979年,美国银行协会批准使用DES。 • 1980年,DES成为美国标准化协会(ANSI)标准。 • 1984年2月,ISO成立的数据加密技术委员会(SC20)在DES基础上制定数据加密的国际标准工作。
DES算法描述 • 为二进制编码数据设计的,可以对计算机数据进行密码保护的数学运算。 • DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。在每轮编码时,一个48位的“每轮”密钥值由56位的“种子”密钥得出来。 • DES算法的入口参数有三个:Key、Data和Mode。 • Key为8个字节共64位,是DES算法的工作密钥; • Data也为8个字节64位,是要被加密或被解密的数据; • Mode为DES的工作方式,有两种:加密或解密。 • 64位明文变换到64位密文,密钥64位,实际可用密钥长度为56位。
DES算法描述(续) • 初始换位的功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则见下表: • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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 • 例:设置换前的输入值为D1D2D3......D64,则经过初始置换后的结果为:L0=D58D50...D8;R0=D57D49...D7。 • (规则:按单双数拆分后-8循环) 每次-8 循环-8
DES算法描述(续) 逆置换正好是初始置的逆运算。 【例】 第1位经过初始置换后,处于第40位,而通过逆置 换,又将第40位换回到第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
DES算法描述(续) • 扩展置换为: 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 • P-盒置换为: 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25
在变换中用到的S1,S2...S8为选择函数,俗称为S-盒,是DES算法的核心。其功能是把6bit数据变为4bit数据。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 015 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 • 在S1中,共有4行数据,命名为0,1、2、3行;每行有16列,命名为0、1、2、3,......,14、15列。 现设输入为: D=D1D2D3D4D5D6令:列=D2D3D4D5 行=D1D6 然后在S1表中查得对应的数,以4位二进制表示,此即为选择函数S1的输出。
1 0 1 1 0 0 = 44 输入6位 S1 10 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 使用选择函数S1 的例子 0 0 1 0 输出4位
DES的破解 • DES的实际密钥长度为56-bit,就目前计算机的计算机能力而言,DES不能抵抗对密钥的穷举搜索攻击。 • 1997年1月28日,RSA数据安全公司在RSA安全年会上悬赏10000美金破解DES,克罗拉多州的程序员Verser在Inrernet上数万名志愿者的协作下用96天的时间找到了密钥长度为40-bit和48-bit的DES密钥。 • 1998年7月电子边境基金会(EFF)使用一台价值25万美元的计算机在56小时之内破译了56-bit的DES。 • 1999年1月电子边境基金会(EFF)通过互联网上的10万台计算机合作,仅用22小时15分就破解了56-bit的DES。 • 不过这些破译的前提是,破译者能识别出破译的结果确实是明文,也即破译的结果必须容易辩认。如果明文加密之前经过压缩等处理,辩认工作就比较困难。
DES算法的公开性与脆弱性 • DES的两个主要弱点: • 密钥容量:56位不太可能提供足够的安全性 • S盒:可能隐含有陷井(Hidden trapdoors) • DES的半公开性:S盒的设计原理至今未公布
国际数据加密算法(IDEA) IDEA(International Data Encryption Standard)由瑞士联邦理工学院的Xuejia Lai和James Massey于 1990年提出,分组长度为64-bit,密钥长度为128-bit。能抵抗差分密码分析,目前还没有发现明显的安全漏洞,应用十分广泛。著名的电子邮件安全软件PGP就采用了IDEA进行数据加密。
IDEA的混淆特性 IDEA的混淆特性是经由混合下述三种操作而成的: • 以比特为单位的异或运算,用+表示。 • 定义在模 (mod65536)的模加法运算,其操作数都可以表示成16位整数,用+表示这个操作。 • 定义在模 +1(mod65537)的模乘法运算。