03密码学与网络安全第三讲.docx
- 文档编号:16083766
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:30
- 大小:1,008.80KB
03密码学与网络安全第三讲.docx
《03密码学与网络安全第三讲.docx》由会员分享,可在线阅读,更多相关《03密码学与网络安全第三讲.docx(30页珍藏版)》请在冰点文库上搜索。
03密码学与网络安全第三讲
密码学与网络安全
第三讲密码学基础
(二)
讨论议题
1.分组密码的操作模式
•实用中数据格式的多样性
•安全的工作模式
2.分组密码的分析方法
3.现代常规分组加密算法
•TripleDES
•RC5、RC6
•AES
•……
4、加密的位置:
•链路方式和端到端的方式
●分组密码的操作模式
•电子密码本ECB(electroniccodebookmode)
•密码分组链接CBC(cipherblockchaining)
•密码反馈CFB(cipherfeedback)
•输出反馈OFB(outputfeedback)
一、电子密码本(ECB):
一次处理一组明文分块,每次使用相同的密钥加密。
1、Ci=EK(Pi)⇔Pi=DK(Ci)
2、ECB特点
1)简单和有效
2)可以并行实现
3)不能隐藏明文的模式信息
–相同明文→相同密文
–同样信息多次出现造成泄漏
4)对明文的主动攻击是可能的
–信息块可被替换、重排、删除、重放
5)误差传递:
密文块损坏仅对应明文块损坏
6)适合于传输短信息
二、密码分组链接CBC:
将重复的明文组加密成不同的密文组。
1、Ci=EK(Ci-1⊕Pi)⇔Pi=EK(Ci)⊕Ci-1
2、CBC特点
1)没有已知的并行实现算法
2)能隐藏明文的模式信息
–需要共同的初始化向量IV
–相同明文→不同密文
–初始化向量IV可以用来改变第一块
3)对明文的主动攻击是不容易的
–信息块不容易被替换、重排、删除、重放
–误差传递:
密文块损坏→两明文块损坏
4)安全性好于ECB
5)适合于传输长度大于64位的报文,还可以进行用户鉴别,是大多系统的标准如SSL、IPSec
三、密码反馈CFB
1、CFB:
分组密码→流密码:
流密码不需要明文长度是分组长度的整数倍,可实时操作。
Si为移位寄存器,j为流单元宽度
加密:
Ci=Pi⊕(EK(Si)的高j位);Si+1=(Si< 解密: Pi=Ci⊕(EK(Si)的高j位);Si+1=(Si< 2、CFB加密示意图 Ci=Pi⊕(EK(Si)的高j位);Si+1=(Si< 加密过程: 1)加密函数的输入是个64位的移位寄存器; 2)这个移位寄存器被初始化为一个初始向量; 3)加密函数的最左边(最高位)的j位被与明文P1的第一个单元进行异或以产生密文C1的第一个单元,然后传输出去; 4)同时这个移位寄存器的内容被左移j位,而C1则被放进寄存器的最右边(最低位)的j位中,重复过程,直至加密完成。 加密示意图: 3、CFB解密示意图 Pi=Ci⊕(EK(Si)的高j位);Si+1=(Si< 解密示意图: 4、CFB特点 1)分组密码→流密码 2)没有已知的并行实现算法 3)隐藏了明文模式 4)需要共同的移位寄存器初始值IV 5)对于不同的消息,IV必须唯一 6)误差传递: 一个单元损坏影响多个单元 四、输出反馈OFB 1、OFB: 分组密码→流密码 Si为移位寄存器,,j为流单元宽度 加密: Ci=Pi⊕(EK(Si)的高j位);Si+1=(Si< 解密: Pi=Ci⊕(EK(Si)的高j位);Si+1=(Si< 2、OFB加密示意图 Ci=Pi⊕(EK(Si)的高j位);Si+1=(Si< 3、OFB解密示意图 Pi=Ci⊕(EK(Si)的高j位);Si+1=(Si< 4、OFB特点 1)OFB: 分组密码→流密码(对于数字数据流一次加密一个比特或一次加密一个字节的密码); 2)没有已知的并行实现算法; 3)隐藏了明文模式; 4)需要共同的移位寄存器初始值IV; 5)误差传递: 一个单元损坏只影响对应单元; 6)对明文的主动攻击是可能的; –信息块可被替换、重排、删除、重放 7)安全性较CFB差。 ●分组密码的分析方法 1、根据攻击者所掌握的信息,可将分组密码的攻击分为以下几类: –唯密文攻击 –已知明文攻击 –选择明文攻击 2、攻击的复杂度 –数据复杂度: 实施该攻击所需输入的数据量。 –处理复杂度: 处理这些数据所需要的计算量。 分组密码的典型攻击方法: a)最可靠的攻击办法: 强力攻击。 b)最有效的攻击: 差分密码分析,通过分析明文对的差值对密文对的差值的影响来恢复某些密钥比特。 c)线性密码分析: 本质上是一种已知明文攻击方法,通过寻找一个给定密码算法的有效的线性近似表达式来破译密码系统。 d)插值攻击方法 e)密钥相关攻击 现代常规分组加密算法 一种是对DES进行复合,强化它的抗攻击能力;另一种是开辟新的方法,即像DES那样加解密速度快,又具有抗差分攻击和其他方式攻击的能力。 •1.TripleDES(数据加密标准) •2.IDEA—国际数据加密算法 •3.RC5—RonRivest •4.RC6-- •5.AES—高级加密标准 其他一些较实用的算法,如Blowfish,CAST,以及RC2。 一、TRIPLEDES DES明文由64位组成。 密钥是56位但是用64位表示的,其中8,16,24。 。 。 为校验位。 密文也为64位。 DES加密算法包括5个函数: 一个初始转换; 一个复杂的称为fK的函数,是多个置换函数和替代函数的组合; 一个简单的用来交换(SW)数据两半部分的转换函数; 又一个fK的函数,是初始转换函数的逆置换。 有多重DES,三重DES是普遍使用的一种。 1、双重DES(DoubleDES) •C=EK2(EK1(P))⇔P=DK1(DK2(C)) 2、中间相遇(meet-in-the-middle)攻击 C=E(K2,E(K1,P))⇒X=E(K1,P)=D(K2,C) •给定明文密文对(P,C) {对所有256个密钥,加密P,对结果排序 }对所有256个密钥,解密C,对结果排序 逐个比较,找出K1、K2使得EK1(P)=DK2(C) 3、双密钥的三重DES(TripleDESwithTwoKeys) •C=E(K1,D(K2,E(K1,P))⇔加密-解密-加密 加密 P=D(K1,E(K2,D(K1,C)) 解密 3、三密钥的三重DES(TripleDESwithThreeKeys) •C=E(K3,D(K2,E(K1,P)) 加密 解密 二、国际数据加密IDEA(InternationalDataEncryptionAlgorithm) •设计目标从两个方面考虑: 1、密码强度 1)分组长度: 分组长度足够长,以便阻止统计分析。 64bit 2)密钥长度: 密钥长度足够长,防止穷举式密钥搜索。 128bit 3)扰乱(异或运算和非线性S盒子): 密文应该以一种复杂交错的方式依赖于明文和密钥,其目的是使确定密文的统计特性和明文的统计特性依赖关系复杂。 扩散: 每个明文比特都应该影响每个密文比特;每个密钥比特都应该影响每个密文比特; 2、易实现性 3、IDEA算法特点 ⊕: 逐位mod2加; : 16位整数mod216(65536)加法运算; ⊙: 16位整数mod(216+1)(65536)乘法运算 4、IDEA设计思想(混淆和扩散) 混淆(confusion): 是使所得密文与明文以及密文的关系变得十分复杂无法从数学上直观描述,或从统计上难以分析; 扩散(diffusion): 扩散的目的是让明文中的任一位及密钥中的任一位能影响尽可能多的明文位,以便隐藏明文的统计特性,加强密码安全。 5、IDEA加密算法 IDEA每一轮: 64bit分为四个子块,并定义四个子块为X1、X2、X3、X4每个子16bit作为一轮迭代输入。 整个过程需要8轮来完成。 算法的每轮迭代都是在4个子块之间进行,主要执行与16bit的子密钥异或操作、mod216(65536)加法运算、mod(216+1)(65537)乘法运算。 IDEA输出变换阶段 三、RC5 •作者为RonRivest1994设计、1995公开 1.适用于软件或者硬件实现 2.运算速度快 3.能适应于不同字长的程序(一个字的bit数是RC5的一个参数;) 4.加密的轮数可变(轮数是RC5的第二个参数) 5.密钥长度是可变的(密钥长度是RC5的第三个参数) 6.对内存要求低 7.依赖于数据的循环移位(增强抗攻击能力) 1、RC5参数 •三个参数 –参数w: 表示字长,RC5加密两字长分组,可用值为16、32、64 –参数r: 表示轮数,可用值0,1,…,255 –参数b: 表示密钥K的字节数,可用值0,1,…,255 •RC5版本: RC5-w/r/b •算法作者建议标定版本为RC5-32/12/16(具有32位的字,加密和解密算法包含12个循环,密钥长度16字节) 2、RC5基本运算 整个加密使用了下述3个基本运算和它们的逆运算: •模2w加法运算,表示为“+”; •逐比特异或运算,表示为“⊕”; •字的循环左移运算: 字x循环左移y比特,表示为x<< 它的逆为循环右移y比特,表示为x>>>y 例如(a0,a1,a2,…,an-1)<<<3=(a3,a4,…,an-1,a0,a1,a2) 3、密钥扩展 •总计产生t=2r+2个子密钥,每个密钥的长度为一个字长(wbits)。 4、密钥的初始化 对于给定的参数r和w,开始初始化运算: Pw=Odd((e-2)2w) Qw=Odd((Φ-1)2w) 这里e=2.718281828459…(自然对数的底) Φ=1.618033988749…(黄金分割比率) 并且Odd[x]表示最接近x且可左可右的奇整数。 例: Odd[e]=3,Odd[Φ]=1 用上述两个常数,按下述方式得到初始化的阵列S: S[0]=Pw Fori=1tot-1do S[i]=S[i-1]+Qw 其中: 1)加法是模2w的加法运算。 2)初始化数组S随后与密钥数组L进行混合,产生最终的子密钥数组。 5、加解密运算图 6、加密算法 •加密: 将明文分组为左右A,B;用变量Lei,Rei参与 •运算程序为: LE0=A+S[0] RE0=B+S[1] fori=1tordo LEi=((LEi-1⊕REi-1)<< REi=((REi-1⊕LEi)<< 7、解密算法 •对两个1-字变量LDr和RDr。 用变量LDi和RDi从r到1做: fori=rdownto1do RDi-1=((RDi-S[2*i+1]>>>LDi)⊕LDi); LDi-1=((LDi-S[2*i]>>>RDi-1)⊕RDi-1); B=RD0-S[1]; A=LD0-S[0]; 四、AES 1、AES背景 •1997年4月15日,(美国)国家标准技术研究所(NIST)发起征集高级加密标准(AdvancedEncryptionStandard)AES的活动,活动目的是确定一个非保密的、可以公开技术细节的、全球免费使用的分组密码算法,作为新的数据加密标准。 •1997年9月12日,美国联邦登记处公布了正式征集AES候选算法的通告。 作为进入AES候选过程的一个条件,开发者承诺放弃被选中算法的知识产权。 对AES的基本要求是: 比三重DES快、至少与三重DES一样安全、数据分组长度为128比特、密钥长度为128/192/256比特。 •1998年8月12日,在首届AES会议上指定了15个候选算法。 •1999年3月22日第二次AES会议上,将候选名单减少为5个,这5个算法是RC6,Rijndael,SERPENT,Twofish和MARS。 •2000年4月13日,第三次AES会议上,对这5个候选算法的各种分析结果进行了讨论。 •2000年10月2日,NIST宣布了获胜者—Rijndael算法,2001年11月出版了最终标准FIPSPUB197。 2、Rijndael简介 •是迭代分组密码; •加密、解密相似但不对称; •支持128/32=Nb数据块大小; •支持128/192/256(/32=Nk)密钥长度; •适用于于各种不同的硬件环境 •有较好的数学理论作为基础; •结构简单、速度快。 3、基本算法 1)变换: ByteSub变换(BS): 一个非线性层,目的是抵抗差分和线性攻击; 2)ShiftRow变换(SR)一个线性层,目的是经过多轮的作用对位进行混淆; 3)MixColumn变换(MC): 这一层的目的和ShiftRow相似; 4)AddRoundKey(ARK): 这一轮的轮密钥和上述层的结果做异或。 例如: 分组长度为128bit,则明文m分成16个字节: 其中, 为字节; 为32位字,故 ,若取 ,从上表 。 4、AES算法结构 AES算法的轮变换是由三个不同的可逆一致变换组成,称之为层; –线性混合层: 确保多轮之上的高度扩散。 –非线性层: 具有最优最差-情形非线性性的S-盒的并行应用。 –密钥加层: 轮密钥简单地异或到中间状态上。 AES-128的加解密过程: 加密过程流程: 1)初始变换----轮密码加。 明文状态数组与第一个轮密钥进行加法运算; 2)完全相同的Nr-1轮迭代。 执行字节替换、行移位、列混合和轮密钥加,每一轮以上一轮的输出为输入; 3)结尾轮变换。 执行字节替换、行移位和轮密钥加; 4)解密算法与加密算法有不同,轮密钥加不变,字节替换、行移位、列混合变成逆运算。 4、AES算法描述 •假设: State表示数据,以及每一轮的中间结果RoundKey表示每一轮对应的子密钥 •算法如下: –第一轮之前执行AddRoundKey(State,RoundKey) –Round(State,RoundKey){ ByteSub(State); ShiftRow(State); MixColumn(State); AddRoundKey(State,RoundKey); } –FinalRound(State,RoundKey){ ByteSub(State); ShiftRow(State); AddRoundKey(State,RoundKey); } 5、状态、密钥 6、字节代替(SubstituteBytes)变换 •字节代替是一个非线性的字节代替,独立地在每个状态字节上进行运算。 代替表(S-盒)是可逆的,是一个16×16的矩阵。 example 行移位(ShiftRow)变换 Example 列混合MixColumn变换 Example 轮密钥加(AddRoundKey) 一个简单地按位异或的操作 AES的密钥调度: 轮密钥是通过密钥调度算法从密钥中产生,包括两个组成部分: 密钥扩展和轮密钥选取。 基本原理如下: –所有轮密钥比特的总数等于分组长度乘轮数加1。 (如128比特的分组长度和10轮迭代,共需要1408比特的密钥)。 –将密码密钥扩展成一个扩展密钥。 –轮密钥按下述方式从扩展密钥中选取: 第一个轮密钥由开始Nb个字组成,第二个轮密钥由接下来的Nb个字组成,如此继续下去。 ●分组密码的一般设计原理 •针对安全性的一般原则: –混乱 –扩散 •重要的设计原理: 必须能抵抗现有的攻击方法 •针对实现的原则: –软件 –硬件 ●分组密码的整体结构 •SP网络 ●S盒的设计准则 •S-盒是许多密码算法的唯一非线性部件,因此它的密码强度决定了整个算法的安全强度。 •提供了密码算法所必须的混乱作用。 •如何全面准确地度量S-盒的密码强度和设计有效的S-盒是分组密码设计和分析中的难题。 ●P置换的设计准则 •P置换的目的是提供雪崩效应(明文或密钥的一点小的变动都引起密文的较大变化) ●轮函数的设计准则 •安全性 •速度 •灵活性: 能在多种平台实现 ●轮函数的构造 •加法、减法和异或 •固定循环/移位 •数据依赖循环 •乘法 ●密钥扩展算法的设计 •设计目标: 子密钥的统计独立性和灵活性 •实现简单 •速度 •不存在简单关系: (给定两个有某种关系的种子密钥,能预测它们轮子密钥之间的关系) •种子密钥的所有比特对每个子密钥比特的影响大致相同 •从一些子密钥比特获得其他的子密钥比特在计算上是难的 •没有弱密钥 ⏹易受攻击的位置 1、第一个易受攻击的地方局域网(雇员的窃听),窃听者可以监视LAN的通信量,根据SA和DA获取想要的通信量; 2、第二个易受攻击的地方是接线盒。 打开盒子,搭线窃听; 3、通信链路。 ⏹链路加密和端到端加密 1、链路加密时每一个易受攻击的通信链路两端都装备一个加密设备,保证链路中的通信量是安全的;但是报文每进入一台分组交换机时都需要解密一次,因为要知道其首部中的地址,找路由,此时易受攻击; 2、端到端加密后用户数据是安全的,但通信量的模式并不安全,因为首部是未经加密传输的。 ⏹存储转发通信的加密覆盖范围 ⏹各种加密策略包含的内容 ⏹End-to-Endencryption •源主机对数据进行加密; •目的主机解密数据; •分组首部是以未加密方式传输的; •用户的数据是安全的; •通信量模式并不安全; •两个端系统共享一个加密密钥; •提供用户鉴别; •在较高的网络层次上实现; ⏹Linkencryption •在发送主机上报文是暴露的; •在中间结点上报文是暴露的; •分组首部是不安全的; •通信量模式并不安全; •每对主机和中间结点之间和每项对中间结点之间都需要一个密钥; •提供主机鉴别 •在较低的网络层次上实现 Reference •http: //csrc.nist.gov/encryption/aes/ • • •WilliamStallings,Cryptographyandnetworksecurity: principlesandpractice,SecondEdition. 作业: 1、分组密码的主要优点是什么? 其设计原则应考虑哪些问题? 2、分组密码代换与置换的区别是什么?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 03 密码学 网络安全 第三