1、信息安全概论 第三讲 对称密码算法,,武汉大学,2,明 文,明 文,加 密 算 法,解 密 算 法,信 道,C,M,M,C,攻击者,加密钥,解密钥,密钥 K,Ke,Kd,安全信道,回顾1通信保密模型,3,回顾1通信保密模型,密码体制的分类 按照明文的处理方法分类 分组密码(block cipher):将明文分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。 流密码(stream cipher):又称序列密码,每次加密一位或一字节的明文。 按照密钥使用方法分类 对称密码算法(symmetric cipher):又称传统密码算法(conventional cipher)或秘密
2、密钥算法、单密钥算法。 非对称密钥算法(asymmetric cipher),又称公开密钥算法(public-Key cipher) 或双钥密码算法。,4,回顾2密码分析,按攻击方法分类 穷举攻击 统计分析攻击 数学分析攻击 按攻击者可利用的数据资源分类 唯密文攻击 已知明文攻击 选择明文攻击 选择密文攻击,5,5,回顾3算法安全性,破译密码算法的代价 数据复杂性 时间复杂性 空间复杂性“计算上不可行” “工程上不可行”,6,回顾3算法安全性,除“一次一密”之外,所有的加密算法都不是无条件安全的。 实际可使用的密码应尽量满足: 破译密码的代价超出密文信息的价值 破译密码的时间超出密文信息的有效
3、生命期 计算上安全:满足上述两条标准中的任意一条即可。,7,密码学的一些结论:,公开设计原则:密码的安全只依赖于密钥的保密,不依赖于算法的保密; 理论上绝对安全的密码是存在的:一次一密; 理论上,任何实用的密码都是可破的; 我们追求的是计算上的安全。 计算上的安全:使用可利用的计算资源不能破译。,8,密码学的发展史,古代加密方法(手工阶段) 古典密码(机械阶段) 现代密码(计算机阶段),9,古典密码,古典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其变化较小。 古典加密技术主要使用代替或者置换技术。 古典密码使用手工或机械变换的方式实现。,10,两种基本加密技术,代换(代替
4、、替换)技术 将明文字母替换成其它字母、数字或符号的方法。 置换(换位)技术 保持明文的所有字母不变,只是打乱明文字母的位置和次序。,11,置换密码,将明文的字母顺序打乱,得到新的排列 最简单的置换密码:栅栏技术,明文 meet me after the toga party置换方法 m e m a t r h t g p r ye t e f e t e o a a t密文 mematrhtgpryetefeteoaat,12,置换密码,列置换 以固定的宽度把明文按行写入,按列读出,T H I S IS A M E SS A G E TO S H O W,明文:this is a messa
5、ge to show,密文:tssohaasimghseeoistw,13,古典密码,换位法 思路 打乱明文中各字母的顺序,使明文中的单词错乱,隐蔽其含义,14,习 题,已知换位密码的换位表为:(2,7,5,3,8,4,6,1),试对明文 software 加密。 答案:orwfetas,15,古典密码,换位法 算法特点:易于手工操作,明密文都是字符串且等长 算法缺陷:明文密文中的各字母出现次数是相同的,只是位置不同,密码分析员可以通过移动字母顺序进行破译 经不起“已知明文攻击”,16,密码学的发展史,古代加密方法(手工阶段) 古典密码(机械阶段) 现代密码(计算机阶段),17,两种基本加密技
6、术,代换(代替、替换)技术 将明文字母替换成其它字母、数字或符号的方法。 置换(换位)技术 保持明文的所有字母不变,只是打乱明文字母的位置和次序。,18,代换密码单字母代换,Caesar密码:公元前50年,由Julius Caesar 发明,最早用在军方。将字母表中的每个字母,用它后面的第3个字母代替 。 加密:c = E(3,p) = (p + 3) mod 26 解密:p = E(3,c) = (c - 3) mod 26,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
7、T U V W X Y Z A B C,字母,编码,明文:System models,密文:Vbvwhp prghov,19,代换密码单字母代换,一般的恺撒密码 加密:c = E(k,p) = (p + k) mod 26 解密: p = E(k,c) = (c - k) mod 26 其中k为密钥,1 k 25 一般的恺撒密码的破译分析 已知加密和解密算法 需要测试的密钥只有25个 明文所用的语言是已知的,且其意义易于识别。 因此:可以采用穷举攻击,20,练习,密文:PHHW PH DIWHV WKH WRJD SDVWB 算法:一般的凯撒密码明文: ?,meet me after the
8、toga party,21,已知加密和解密算法 需要测试的密钥只有25个 明文所用的语言是已知的,且其意义易于识别。 因此:可以采用穷举攻击,22,Caesar 密码安全性,上面的例子说明,凯撒密码不足以对抗穷举攻击。因此是不安全的。 这个例子说明一个密码体制安全至少要能够抵抗穷举密钥搜索攻击,普通的做法是将密钥空间变得足够大。 但是,很大的密钥空间并不是保证密码体制安全的充分条件,下面的例子可以说明这一点。,23,古典密码的统计分析,密钥词组单表代替密码的统计分析 任何自然语言都有自己的统计规律。 如果密文中保留了明文的统计特征,就可用统计方法攻击密码。 由于单表代替密码只使用一个密文字母表
9、,一个明文字母固定的用一个密文字母来代替,所以密文的统计规律与明文相同。 因此,单表代替密码可用统计分析攻破。,24,古典密码的统计分析,英语的统计规律 每个单字母出现的频率稳定。最高频率字母 E次高频率字母 T A O I N S H R中高频率字母 D L低频率字母 C U M W F G Y P B最低频率字母 V K J X Q Z,25,英文字母统计特性,英文单字母的相对频率表,26,单字母按照出现频率的大小可以分为下面5类:(1) e:出现的频率大约为0.127(2) t, a, o, I, n, s, h, r:出现的频率大约在0.06-0.09之间(3) d, l:出现的频率约
10、为0.04(4) c, u, m, w, f, g, y, p, b:出现的频率大约在0.015-0.028之间(5) v, k, j, x, q, z:出现的频率小于0.01,英文字母统计特性,27,古典密码的统计分析,英语的统计规律 频率最高的双字母组:TH HE IN ER AN RE ED ONES ST EN AT TO NT HA NDOU EA NG AS OR TI IS ETIT AR TE SE HI OF,28,古典密码的统计分析,英语的统计规律 频率最高的三字母组:THE ING AND HER ERE ENT THA WASETH FOR DHT HAT SHE IO
11、N HIS ERSVER其中THE的频率是ING的3倍!,29,双字母和三字母组合都有现成的统计数据,常见的双字母组合和三字母组合统计表能够帮助破解密文。 频率最高的30个双字母(按照频率从大到小排列):th he in er an re ed on es st en at to nt ha nd ou ea ng as or ti is et it ar te se hi of 频率最高的20个3字母(按照频率从大到小排列):the ing and her ere ent tha nth was eth for dth hat she ion int his sth ers ver,英文字母
12、统计特性,30,古典密码的统计分析,英语的统计规律 英文单词以E,S,D,T为结尾的超过一半。 英文单词以T,A,S,W为起始字母的约占一半。 还有其它统计规律!,31,一次一密,一次一密的安全性是取决于密钥的随机性 但产生大规模随机密钥是一件很困难的事情,目前还没有很好的办法来解决这个问题 密钥分配也是一个难点,由于密钥不允许重复使用,因此存在大量的密钥分配问题。 一次一密在实际中很少使用,主要是用于高度机密的低带宽信道,32,代数密码:, Vernam密码(1917年,AT&T Gilbert Vernam)明文、密文、密钥都表示为二进制位:M=m1,m2, ,mnK =k1,k2, ,k
13、nC =c1,c2, ,cn 加密 : c1= mi ki ,i=1,2, ,n 解密 : m1= ci ki ,i=1,2, ,n 因为加解密算法是模2加,所以称为代数密码。 对合运算:f=f-1,模 2加运算是对合运算。密码算法是对和运算,则加密算法解密算法,工程实现工作量减半。 Vernam密码经不起已知明文攻击。,33,Vernam密码,34,Vernam密码与一次一密密码,Vernam密码: 加密:ci=mi+ki mod 2 解密:mi=ci+ki mod 2 例:1100010010 01010 一次一密:密钥为一个随机且不重复的字符序列。,35,代数密码:, 如果密钥序列有重复
14、,则Vernam密码是不安全的。 一种极端情况:一次一密 密钥是随机序列。 密钥至少和明文一样长。 一个密钥只用一次。 一次一密是绝对不可破译的,但它是不实用的。 一次一密给密码设计指出一个方向,人们用序列密码逼近一次一密。,36,密码学的发展史,古代加密方法(手工阶段) 古典密码(机械阶段) 现代密码(计算机阶段) 数据加密标准DES 公钥密码算法,37,对称密码DES,1973年5月15日, NBS公开征集标准加密算法,并公布了它的设计要求: 算法必须提供高度的安全性 算法必须有详细的说明,并易于理解 算法的安全性取决于密钥,不依赖于算法 算法适用于所有用户 算法适用于不同应用场合 算法必
15、须高效、经济 算法必须能被证实有效 算法必须是可出口的,38,对称密码DES,DES的应用 1979年,美国银行协会批准使用 1980年,美国国家标准局(ANSI)赞同DES作为私人使用的标准,称之为DEA(ANSI X.392) 1983年,国际化标准组织ISO赞同DES作为国际标准,称之为DEA-1,39,对称密码DES,DES加密 64位明文输入 56位密钥输入 64位密文输出,初始置换,第1轮,第2轮,第16轮,32位互换,逆初始置换,置换选择2,置换选择2,置换选择2,置换选择1,循环左移,循环左移,循环左移,64位明文,64位密文,K1,K2,K16,DES加密算法的一般描述,密钥
16、,Li-1(32位),Ri-1(32位),扩充置换(E),代换运算(S盒),置换运算(P),Li(32位),Ri(32位),48b,子密钥Ki(48b),32b,32b,48b,图3.5 DES的一轮迭代,扩充置换E,置换运算P,代换运算(S盒):对每个盒,6比特输入中的第1和第6比特组成的二进制数确定的行,中间4位二进制数用来确定的列,相应行、列位置的十进制数的4位二进制数表示作为输出。,DES的S-Box,DES的S-Box,46,例如,在S1中,若输入为011001,则行是1(01),列是12(1100),该处的值是9,所以输出为1001。,47,DES的特点,DES算法 只使用了标准的
17、算术与逻辑运算 解密算法与加密算法相同,只是子密钥的使用次序相反 适合软硬件的实现,48,DES的特点,DES具有很强的雪崩效应雪崩效应 明文或密钥的微小变换可以对密文产生很大的影响加密算法所期望的一个好的性质,49,DES的破译,1990年,以色列密码学家Eli Biham和Adi Shamir提出了差分密码分析法,可对DES进行选择明文攻击。 线性密码分析(1993)比差分密码分析更有效 强力攻击:平均255次尝试 差分密码分析法:使用247对明密文的选择明文攻击 线性密码分析法:使用247对明密文的已知明文攻击,50,DES的破译,1997年,克罗拉多州的程序员Verser在Intern
18、et上数万名志愿者的协作下用96天的时间找到了密钥长度为40位和48位的DES密钥 1998年电子边境基金会(EFF)使用一台价值25万美元的计算机在56小时之内破译了56位的DES 1999年,电子边境基金会(EFF)通过互联网上的10万台计算机合作,仅用22小时15分破译了56位的DES,51,为防止中间相遇攻击,可以采用三次加密方式,如下图所示 。这是使用两个密钥的三重EDS,采用加密解密加密(E-D-E)方案 注意的是, 加密与解密在安全性上来说是等价的。这种加密方案穷举攻击代价是2112,52,目前还没有针对两个密钥的三重DES实际的攻击方法 但是感觉它不大可靠,如果采用三把密钥的三
19、重DES则比较放心 三把密钥的三重DES的密钥长度是168位,采用加密解密加密(E-D-E)方案,53,3DES已经被一些网络应用采用,如PGP和S/MIME。 3DES存在几个优点。 首先它的密钥长度是168位,足以抵抗穷举攻击。 其次,3DES的底层加密算法与DES的加密算法相同,该加密算法比任何其它加密算法受到分析的时间要长得多,也没有发现有比穷举攻击更有效的密码分析攻击方法 缺点:加解密速度慢,分组长度只有64位,54,数据加密标准DES 多重DES 高级加密标准AES 分组密码的工作模式 流密码和RC4 对称密码的密钥分配,对称密码,55,AES产生的背景,1997年4月15日,NI
20、ST发起征集高级加密标准(Advanced Encryption Standard)AES的活动,活动目的是确定一个非保密的、可以公开技术细节的、全球免费使用的分组密码算法,作为新的数据加密标准。 对AES的基本要求是:比三重DES快、至少与三重DES一样安全;无类别的;可公开的;无特权的;数据分组长度为128比特;密钥长度为128/192/256比特。,56,AES产生的背景,1998年6月NIST共收到21个提交的算法,在同年的8月首届AES会议上指定了15个候选算法。 1999年3月22日第二次AES会议上,将候选名单减少为5个,这5个算法是MARS ,RC6,Rijndael,SERP
21、ENT,和Twofish。,57,AES产生的背景,MARS(由IBM公司研究部门的一个庞大团队发布,对它的评价是算法复杂、速度快、安全性高) RC6(由RSA实验室发布,对它的评价是极简单、速度极快、安全性低) Rijndael(由Joan Daemen和 Vincent Rijmen 两位比利时密码专家发布,对它的评价是算法简洁、速度快、安全性好) Serpent(由Ross Anderson , Eli Biham 和 Lars Knudsen发布,对它的评价是算法简洁、速度慢、安全性极高) Twofish(由Counterpane公司一个庞大的团队发布,对它的评价是算法复杂、速度极快、
22、安全性高),58,AES产生的背景,从全方位考虑,Rijndael汇聚了安全,性能,效率,易用和灵活等优点,使它成为AES最合适的选择 2000年10月NIST宣布Rijndael算法被选为高级加密标准 2001年11月发布为联邦信息处理标准(Federal Information Processing Standard,FIPS), 用于美国政府组织保护敏感信息的一种特殊的加密算法,即FIPS PUB 197标准,59,AES的特点,使用的数学背景:近似代数 不属于Feistel结构 加密、解密相似但不对称 支持128/192/256b数据块大小 支持128/192/256b密钥长度 结构简
23、单、速度快,60,DES和AES的比较,61,AES算法简介,算法有多轮相同的运算,每一轮包括4个步骤: 字节代换(S-盒) 行移位(ShiftRows) 列混淆(MixColums) 轮密钥加(AddRoundKey) 每一轮的子密钥从扩展密钥中取出 密钥扩展过程同时应用了非线性变换和循环左移 算法定义的所有运算都是在有限域GF(28)上进行的,62,AES算法简介,AES算法的轮数和明文分组长度及密钥长度的关系为:除最后一轮不做列混淆变换外,每一轮都经过4步相同的操作:,Round(State, RoundKey) ByteSub(State);/S-盒ShiftRow(State);/行
24、循环左移MixColumn(State);/列混淆变换AddRoundKey(State, RoundKey);/与扩展密钥相异或 ,63,AES算法简介,AES算法中进行运算的单位包括: 1个字节 1列 1行 用字节数组表示的整个加密块 加密块数组中,n可以是3,5,7,所代表的加密块分别表示128bit,192bit和256bit。,ai,j,AES.swf,64,数据加密标准DES 多重DES 高级加密标准AES 分组密码的工作模式 流密码和RC4 对称密码的密钥分配,对称密码,65,分组密码的工作模式,分组密码算法是提供数据安全的一个基本构件 分组密码是针对固定大小的分组进行加密的,例
25、如, DES是对64比特的明文分组进行加密,AES是对128位分组操作 需要保密传输的消息不一定刚好是一个分组大小 为了在实际中应用分组密码,定义了五种工作模式。任何一种对称分组密码算法都可以以这些方式进行应用,66,分组密码的工作模式,分组密码的5种工作模式 电码本(ECB) 密文分组连接(CBC) 密文反馈(CFB) 输出反馈(OFB) 计数器(CTR),67,电码本(ECB),电码本 (Electronic Code Book,ECB)模式是分组密码的基本工作方式 它将明文分割成独立大小的分组b,最后一组在必要时需要填充,一次处理b比特的明文,每次使用相同的密钥加密 每一个分组依次独立加
26、密,产生独立的密文组,68,电码本(ECB),加密,p1,c1,k,解密,c1,p1,k,加密,pn,cn,k,加密,cn,pn,k,(a)加密,(b)解密,69,电码本(ECB),特点 优点:并行处理来加速加/解密运算;一分组发生错误不会影响到其他分组. 缺点:相同的明文组将产生相同的密文组,这样会泄露明文的数据模式. ECB模式特别适合短数据 (如加密密钥),70,密文分组链接(CBC),密文分组链接(Ciphertext Block Chaining) 将明文分成b位的一串分组,最后一组不足b位要进行填充 CBC将这些分组链接在一起进行加密操作 加密输入是当前明文分组和前一密文分组的异或
27、,它们形成一条链 每次加密使用相同的密钥,加密,p1,c1,k,加密,cn,k,IV,加密,c2,k,p2,pn,cn-1,解密,p1,c1,k,解密,cn,k,IV,解密,c2,k,p2,pn,cn-1,(a)加密,(b)解密,72,密文分组链接(CBC),特点 能隐藏明文的模式信息,相同明文得到的密文不同 使用了初始化向量IV,IV为收发双方共享,需要加以保护 信息块不容易被替换、重排、删除、重放 误差传递:密文块损坏导致两明文块损坏 安全性高于ECB 适合于传输长度大于64位的报文,可以进行用户鉴别,是大多系统的标准如 SSL、IPSec,分组密码的工作模式,74,数据加密标准DES 多
28、重DES 高级加密标准AES 分组密码的工作模式 流密码 对称密码的密钥分配,对称密码,75,流密码,一次一密密码是绝对安全的密码,如果能以某种方式仿效一次一密密码,则将可以得到安全性很高的密码 人们试图以流密码方式仿效一次一密密码 流密码也称为序列密码,它是对明文以一位或者一个字节为单位进行操作 为了使加密算法更安全,一般选取尽可能长的密钥 但是长密钥的存储和分配都很困难 流密码采用一个短的种子密钥来控制密钥流发生器产生出长的密钥序列,供加解密使用,76,流密码的加密过程,种子密钥k输入到密钥流发生器,产生一系列密钥流,通过与同一时刻的一个字节或者一位明文流进行异或操作产生密文流,77,密钥
29、流产生器,流密码的安全强度完全取决于它所产生的密钥流的特性 如果密钥流是无限长且为无周期的随机序列,那么流密码属于“一次一密”的密码体制 满足这样条件的随机序列在现实中很难生成 实际应用当中的密钥流都是由有限存储和有限复杂逻辑的电路产生的字符序列 由于密钥流生成器只具有有限状态,那么它产生的序列具有周期性,不是真正的随机序列,78,数据加密标准DES 多重DES 高级加密标准AES 分组密码的工作模式 流密码 对称密码的密钥分配,对称密码,79,对称密码的密钥分配,对称密码体制要求双方共享一个共同的密钥。 为防止攻击者得到密钥,还必须时常更新密钥。 密钥分配方法是指将密钥发给需要交换数据的双方
30、而不让别人知道的方法。,80,对称密码的密钥分配,对于参与者A和B,密钥分配的方法有以下几种: (1) 密钥由A选取,并通过物理手段交给B (2) 密钥由第三方选取,并由第三方通过物理手段交给A和B (3) 如果A、B事先已有一密钥,则其中一方选取新密钥后,用已有的密钥加密新密钥并发送给另一方 (4) 如果A和B与可信的第三方C分别有一保密通道,则C为A、B选取密钥后,分别在两个保密信道上发送给A、B。,81,前两种方法称为人工发送, 不可取 对于第3种方法,攻击者一旦获得一个密钥就可获取以后所有的密钥;而且用这种方法对所有用户分配初始密钥时,代价仍然很大 第4种方法比较常用,其中的第三方通常
31、是一个负责为用户分配密钥的密钥分配中心(Key Distribution Certer, KDC) 每一用户必须和密钥分配中心有一个共享密钥,称为主密钥 通过主密钥分配给一对用户的密钥称为会话密钥,用于这一对用户之间的保密通信 通信完成后,会话密钥即被销毁,对称密码的密钥分配,82,会话密钥的有效期,会话密钥更换得越频繁,系统的安全性就越高 但会话密钥更换得太频繁,会延迟用户之间的交换,同时还造成网络负担,在决定会话密钥的有效期时,应权衡这两个方面。 对于面向连接的协议,在连接未建立前或断开时,会话密钥的有效期可以很长。而每次建立连接时,都应使用新的会话密钥 对于无连接协议,无法明确地决定更换密钥的频率。比较好的方案是在某一固定周期内或对一定数目的交易使用同一会话密钥。,第三讲 对称密码,结束,