【安全课件】第9讲--des安全性

合集下载

(完整版)DES算法的实现及安全性分析毕业设计

(完整版)DES算法的实现及安全性分析毕业设计

DES算法的实现及安全性分析专业班级:计算机科学与技术1班姓名:廖孜孜完成日期: 2015年5月17日引言如果一个密码体制的加密密钥等于脱密密钥,或者其中一个很容易推出另一个,则称此密码体制为单密钥密码体制,也称为对称密码体制或传统密码体制。

最具有代表性的近代传统密码体制是DES(数据加密标准)。

为了适应社会对计算机数据安全保密越来越高的要求,美国国家标准局(NBS)于1973年向社会公开征集一种用于政府部门及民间进行计算机数据加密算法,许多公司提出了自己的加密算法,最后选中了IBM公司提出的一种加密算法。

经过一段时间的试用与征求意见,美国国家标准局于1977年公布了由IBM 公司研制的一种加密算法,批准把它作为非机要部门使用的数据加密标准,简称DES,DES是Data Encryption Standard的缩写。

自从公布以来,它一直超越国界成为国际上商用保密通信和计算机通信的最常用的加密算法。

原先规定使用期10年,可能是DES尚未受到严重的威胁,更主要的是新的数据加密标准还没有完成,或意见未一致,所以当时的美国政府宣布延长它的使用期。

因而DES超期服役了很长时间,20年来它一直活跃在国际上保密通信的舞台上,扮演了十分突出的角色。

进入20世纪九十年代后以色列的密码学家Shamir 等人提出了一种“差分分析法”,以后日本人又提出类似的方法,这才正式有一种称得上对它的攻击的方法。

严格地说,Shamir 的“差分分析法”也只有理论上的价值,至少目前为止是这样的。

又如,后来的“线性逼近法”,它是一种已知明文攻击法,需要2的43次方也就是4.398×10的12次方对明文-密文对,在这样强的要求条件下,有十多台工作站协同作战,还需要十天的时间。

在这以前已有人建议造专用装置来对付它,其基本想法无非是借用硬件来实现对所有密钥的遍历搜索。

当时估计一天可以搜索到一个密钥。

技术的进步使得搜索的时间进一步缩短,使DES受到了威胁,但DES毕竟辉煌过。

网络安全重点-DES 和 AES

网络安全重点-DES 和 AES

对称分组加密算法:处理固定大小的明文输入分组,且对每个明文分组产生同等大小的密文分组。

有DES(数据加密标准)和AES(高级加密标准)、3DES。

DES:1.DES算法是一种用56位密钥来加密分组长度为64位数据的对称密钥算法(实际上函数要求一个64位的密钥作为输入,但是第8、16、24、32、40、48、56、64 等8位是校验位,使得每个密钥都有奇数个1,所以参与加密过程的只有56位)。

2.DES算法的入口参数有三个:Key:8个字节共64位,是DES算法的工作密钥;Data:8个字节64位,是要被加密或被解密的数据;Mode:DES的工作方式,有两种:加密或解密。

3.DES的解密过程和加密相似,解密时使用与加密同样的算法,不过子密钥(见文中解释)的使用次序要反过来。

DES算法的组成:初始置换函数IP、子密钥Ki及获取、密码函数F、逆置换函IP-1。

DES的明文分组长度为64位(比特)。

初始置换函数IP接受长度为64位的明文输入,逆置换函数IP-1输出64位的密文。

在子密钥的获取过程中,通过密钥置换Pc-1获取从Kl到K16共16个子密钥,这16个子密钥分别顺序应用于密码函数的16次完全相同的迭代运算中。

求密钥:PC2的压缩置换:输入:56位;输出:48位。

加密明文:扩展运算E:32位的R0扩展成48位。

然后R0(t48)与密钥K1进行异或得到48位结果。

S盒:S盒接收6位的输出,经过置换输出4位的数据。

总共输入有:48位;输出有:32位,得到R0(S32)。

对R0(S32)进行置换运算P,得到R0(P32)。

将R0(P32)与L0进行XOR运算得R1(32位)。

R1(32位)与L1(32位)构成第一轮加密后的结果。

s盒是DES算法的核心,它是算法中唯一的非线性部分,是算法安全的关键;有8个s盒,每个s盒输入6位,输出四位,即输入48位,输出32位;输入的6位中的第一位和第六位表示行数,中间四位表示列数,找到s盒中对应的数值。

DES算法及安全性分析

DES算法及安全性分析

DES算法及安全性分析第22卷第6期2OO2年12月上饶师范学院JOURNALOFSHANGRAONORMALCOUEGEVd.22,No.6Dee.2002DES算法及安全性分析肖力(鄂州大学教育系,湖北鄂州436ooo)摘要:简要介绍了DES算法的基本原理及具体实现步骤,并分析了该算法的安全性,同时提出了在实现中应注意事项.关键词:算法;密钥;安全性中图分类号:TP2571文献标识码:A文章编号:1004—2237(2002)06—0014—06 1948年,c.E.Shannon发表了关于通信的数学理论的重要文章,标志着信息论的诞生.1949年,他在另一篇着名文章"CommunicationTheoryofSecrecySystem(秘密系统的通信理论)"中,指出了通信和信息加密的一般特征,以及将信息论用于密码学的基本方法.Shannon建议交替使用代替和换位两种方法(他称为混乱(confusion)和扩散(diffusion)的过程),来隐蔽明文消息中的冗余度以破坏对密码系统所进行的各种统计分析.从1968年到1975年,在Shannon的这种思想的影响下,以w.L.Tuchman为首的IBM公司设计小组设计了一种保密性很好的乘积密码算法,被美国国家标准局NBS于1977年7月15日接受,并作为联邦信息处理标准46号(数据加密标准(DataEncryptionStandard)),即DES正式颁布rl】.1DES密码体制DES是一个分组乘积加密算法,它用56位密钥将64位的明文转换为64位的密文,其中密钥可以是任意的数,通常表示为64位,但每个字节的第8位作为奇偶校验位(确保密钥不发生错误,可以忽略).同时,又是一个对称算法:其加密和解密使用同样的算法(除密钥顺序不同以外)简单地说,DES算法就是混乱(confusion)和扩散(diffusion)的组合:混乱使得输出成为输入的非线性函数;扩散扩展了输出对输入的依赖性,从对少数几位的依赖到很多位的依赖.以下为DES加密的实现步骤J:1.1初始置换收稿日期:2oo2—05—09作者简介:肖力(1970一),男,汉族,湖北鄂州人,鄂州大学教育系讲师.研究方向:计算机应用及软件开发.第6期肖力:DES算法及安全性分析15将需加密的64位二进制明文T按位进行如表1所示的II)初始置换,其结果To=II)(T):表15850423426181026o5244362820124 62544638302214664564840322416857494133251791595143352719ll3 615345372921135635547393123157由上表不难看出,初始置换II)将明文T=tt2......t64置换成To=t58t50 (7)1.2密钥置换在这一步,将对密钥进行处理.将舍弃了奇偶校验位的56位密钥,进行如表2所示的按位置换,将置换所得的56位密钥平均分为两部分,每部分28位.表257494133251791585042342618102595143352719ll36o5244366355473931231576254463830221466153453729211352820124然后,进行移位置换,根据轮数(从第1轮开始),将以上两部分分别左移1位或2位.每轮左移的位数如表3所示:表3其中,每一轮移位后,连接两部分得到一个56位数,从中选出48位(具体选择的位数如表4所示),此48位数就构成一个子密钥(subkey).记为:(代表轮数,从1到16).表41.3扩展置换将表1数据的右半部分从32位按表5所示方法扩展到48位.由于此运算改变了位的次序,且重复了某些位,故被称为扩展置换(expansionpermutation).在此过程中,尽管输出分组大于输入分组,但每一个输入分组将产生唯一的输出分组.上饶师范学院20o2(第22卷)表51.4S一盒替换将1.3步扩展置换得到的输出分组分别与子密钥k[i]进行异或运算以后,将得到的48位结果进行S一盒替换运算.替换由8个替换盒(substitutionbox)(或称为S一盒(S—box))完成.每一个S一盒都有6位输入,4位输出,且这8个s一盒是不同的.48位的输入被分成8个6位的分组,每一个分组对应一个s一盒替换操作.S一盒的6个位输入确定了其对应的输出在哪一行哪一列上.具体方法是:假定将S一盒的6位输入记为:bii=1,2,3,4,5,6.则b和组合成了一个2位数(二进制),从0到3(--进制:00到11),它对应表中的一行.从b2到构成了一个4位数(二进制),从0到l5(二进制".0000到1111),对应表中的一列.然后用S一盒中相应行,列的数来替换输入值,作为输出值.例如:假设第5个S一盒的6位输入(即扩展置换得到的输出分组与密钥进行异或运算结果的第25位到30位)为l10011.第l位和第6位组合形成11,它对应着第5个s一盒的第3行.中间的4位组合在一起形成了1001,它对应着同一个S一盒的第9列.S一盒5的第3行第9列处的数是15(S 一盒的行,列的记数均从0开始),则值1111(15的二进制表示)就代替了110011.此替换过程的结果是8个4位分组,将它们重新合并在一起就形成了一个32位的分组.下表列出了所有8个S一盒:S一盒1:1441312151183lO61259070l574l4213ll06l2l195384ll48l362ll151********l5l28249l75ll3l4lO0613S一盒2:1518146ll34972131205lO3l347l528l4120llO69ll50147lll04l3l58l26932l5138l0l31542ll671205149S一盒3:lO091461134972131205lO13709346102851412lll5l136498153011l2l25lO147ll0l306987415143ll52l2第6期肖力:DES算法及安全性分析S一盒4:7l31430691012851112415l38ll56l503472l2ll0149lO69012ll7l3l5l31452843l5O6lOll38945lll27214S一盒5:2124171011685315130149l4ll2l247l3l5Ol5lO398642llllOl37815912563014ll8l27l142136*********S一盒6:1211015926801334147511lOl542712956ll3l4Oll389141552812370410ll3ll643312951510lll4l760813S一盒7:4112141508133129751061130ll749llOl435l22l586l4lll3l237l4lO156805926lll38l4lO795015142312S一盒8:1328461511110931450127ll5l38lO374l256llO14927ll4l912142061013153582ll474lO8l3l51290356ll1.5P一盒置换将S一盒替换运算的32位输出依照P一盒进行置换.该置换把每个输入位映射到相应的输出位.下表给出了每一位移至的位置.然后,将P一盒置换的结果与表1中的64位分组的左半部分进行异或运算,再将左,右半部分交换,接着转回到1.2步,开始下一轮(直到l6轮完成为止).但要注意的是,在最后一轮(即l6轮)后,左半部分和右半部分并不交换,只是合并在一起形成一个64位的分组作为下一步末置换的输入(这样做的目的在于,使该算法既能用于加密,又能用于解密).1.6末置换上一步l6轮置换完成后,将其结果64位分组进行末置换,从而得到64位二进制密文输出.其中,末置换IP是1.1中初始置换IP的逆过程,下表列出了该置换的实现方式:18上饶师范学院2002(第22卷)至此,通过以上6个步骤,就实现了明文的加密.实际上,以上步骤中第1.1步的初始置换和第1.6步的末置换不影响DES的安全性,其目的在于方便硬件实现,但这两种位方式的置换用软件实现却较困难,因此在DES的许多软件实现中都删除了初始置换和末置换(尽管这样做安全性并没有降低,但由于其没有遵循DES标准,因此严格来说,其不应该被称为DES系统).至于DES的解密,则和其加密使用相同的算法,二者唯一的不同在于密钥的次序是相反的.也就是说,若每一轮的加密密钥为:K[1],KE2],KE3],……,K[16],,那么相应每一轮的解密密钥就是:K[16],K[15],K『14],……,K[1].2安全性分析DES的安全性可以从以下几个方面来分析:2.1密钥长度从穷举搜索法的角度来看,DES的56位密钥长度可能不够.所谓穷举搜索法为:设已知一段密码文C及与它对应的明码文M,用一切可能的密钥K加密M,直到得到E(M)=C,这时所用的密钥K即为要破译密码的密钥.1979年,W.Dilfie和M.E.Hellman认为,可以通过造价约2000万美元的并行计算机,采用穷举搜索,可在一天内找到密钥,从而破译DES.1981年,Diffle将这个数据增加到2天的搜索时间和5000万美元.Diflie预料,在1985--1990年期间,可以用多重加密的方法(仍然用56位密钥)来提高DES 的保密性能.但在1990年以后,就应该增加DES密钥的长度了.1998年,电子边境基金会(EFF)动用一台价值25万美元的高速电脑,在26小时内利用穷举搜索的方法破译了56位密钥长度的DES,证明了以上论断J.2.2弱密钥在DES算法中,密钥初始值被分成了两部分,每一部分独立地移动.如果每一部分的所有位都是0或1,那么算法的任意一轮的子密钥都是相同的.当密钥全是1,全是0或一半是1一半是0的时候,就会发生这种情况,这种子密钥称为"弱密钥(weakkey)".另外,还有一些密钥会把不同的明文加密成相同的密文.即密钥对里的一个密钥能解密另一个密钥加密的信息,这些子密钥称为"半弱密钥(semiweakkey)".这些都是由DES产生子密钥的方式所决定的,是无法避免的,但其个数在子密钥集中是可以忽略的.在DES的实际工作过程中,在产生子密钥时可以通过不断检查,以避免产生弱密钥.2.3迭代的次数在DES中,迭代的次数控制因换位而产生的扩散量,如果DES迭代的次数不够,一个输出位就会只依赖于少数几个输入位.A.Konheim指出:经过5轮迭代后,密文的每一位基本上是所有明文和密钥位的函数,而经过8轮迭代后,密文基本上是所有明文和密钥位的随机函数.那么为什么要迭代l6次呢?这是因为由以色列学者EliBiharn和AdiShamir发明的对分组密码进行分析的最佳手段之一的差分密码分析方法已经证明:通过已知明文的攻击,任何少于l6轮迭代的DES算法都可以用比穷举搜索法更有效的方法破译.因此,DES算法选取3l976655319722ll53195554¨9753l4444753197533333如勰∞642O5555642O铝8642∞勰弱第6期肖力:DES算法及安全性分析19l6次迭代是适宜的,既不增加加密的难度,又恰好能抵抗差分分析的攻击.除以上讨论的几个方面外,对DES安全性的批评还有:s一盒中可能有不安全因素;DES的一些关键部分(如代替和换位等的设计标准)不应保密等.3总结DES算法有四种工作方式:电子密文(ECB),密码分组链接(CBC),输出反馈(OFB)及密文反馈(cFB)H.其中,ECB是最简单的方式,虽然它最易受攻击,但在流行的商业软件产品中,它仍是最常采用的方式;CBC则经常以软件方法实现,尽管它比ECB方式仅仅复杂一点,但它提供了更好的安全性;至于OFB和CFB,其安全性最强,往往只在硬件实现的算法中使用.总之,作为20世纪70年代密码学的一个重要成果,DES算法只使用了标准的算术和逻辑运算,其作用的数最多只有64位,且算法具有重复特性,所有这些使得它很容易用硬件技术来实现,可以非常理想地用在一个专用芯片中.同时,也有了许多软件的实现方式.参考文献:[1]BruceSchneier.ApedCryptography—Protocols,algoritlmasandSourcecodeinC[M].JohnWiley&Sons,Inc.SecondEdition ,1996l88—194.[2]王育民,何大可.保密学一基础与应用[M].西安:西安电子科技大学出版社.1990.178—182.[3]卿斯汉.密码学与计算机网络安全[M].清华大学出版社,2001.22—23.[4]陈爱民,等.计算机的安全与保密[M].电子工业出版社,1992.212—214. DESarithmeticandsecurityanalyze×lAOLi(Educationdepartment,Ezhouuniversity,HuBeiEzIl0u436000,China)Abstract:ThispaperintroducesthebasicelementsofDESarithmeticandthestepofrealize,analyzethesecurityofDESari~c' andprovidethenoticeitemsinrealize. KeyWords:DESaridmaetie;secretkey;security。

信息安全-DES的介绍与应用

信息安全-DES的介绍与应用

DES的三种模式
CBC
ECB CFB
ECB (电子密码本模式 ) CBC(分组连接模式 ) CFB(密码反馈模式 )
原理介绍
ECB
电子密码本(Electr onic Code Book,, ECB)模式是使用 分组密码算法的最 明显的方式,其使 用方式是一个明文 分组加密成一个密 文分组,相同的明 文分组永远被加密 成相同的密文分组 。
对比三种模式
ECB
优点
可并行运算,操作简 速度快,易于标准化 单个分组的比特错误 不会影响到其他分组的 解密结果。
CBC
引入了随机的初始向 量,如果E是伪随机的, 则输出具有一定的随机 性, 避免了ECB的缺点 隐蔽了明文的数据模 式,在一定程度上能防止 数据篡改。
出现错误传播,而且加 密的消息长度只能是分 组长度的倍数, 不是任 意长度的消息。 单个分组的比特错误 影响本组和他后分组的 解密结果。
在加解密IP核中的应用
加解密IP核主要完成数据加解密的功能,按照64bits一组进行操 作,同时需要提供64bits的密钥。DES和3DES基本机构图。
对比DES模式,在3DES 模式下,采用了低资源的设计 方法,通过MUX 控制连续调用3次DES 加解密核完成, 大大减小了芯片面积。
加解密IP核的主要特点
CFB
具有自同步能力 可以处理任意长度 的消息,同时具有CB C的优点。
缺点
分组加密不能隐蔽数据模 式,即相同的明文组蕴含着 相同的密文组 不能抵抗组的重放、嵌入、 删除、统计等攻击 加密长度只能是分组的倍 数。 明文发生错误时, 错误会传播; 比较浪费,在每 轮加密中都丢弃了大 部分结果
CBC
CBC模式采用链 接特性加强了E CB 模式的安全 性,即对于相同 的明文,加密结 果不同。这就加 大了密码破解者 的破译难度。

DES

DES
2.5末置换 末置换是初始置换的逆过程,DES在最后一轮后,左半部分和右半部分并未交换,而是将R16和L16并在一起形成一个分组作为末置换的输入。
3 DES算法安全性问题
3.1 DES算法密钥的长度 最初的罗斯福密码中密钥长度为128位,DES的加密单位仅有64位二进制,而且其中某些位还要用于奇偶校验或其他通讯开销,有效密钥只有56位,这对于数据传输来说太小,各次迭代中使用的密钥 K i 是递推产生的,这种相关性必然降低了密码体制的安全性。因此,人们会对56位密钥的安全性产生质疑,那么56位密钥是否足够, 已成为人们争论的焦点之一。 至今,最有效的破解DES算法的方法是穷举搜索法,那么56位长的密钥总共要测试 256 次,如果每lOOms可以测试1次,那么需要7.2× 1015 s,人约是228,493,000年。但是,仍有学者认为在可预见的将米川穷举法寻找正确密钥已趋于可行,所以若要安全保护10年以上的数据最好不用DES算法。 近年来有人提出用差分和线性攻击方案来破解DES算法,虽然,从理论上来说破译的性能高于穷举搜索法,但要有超高速计算机提供支持,以至于美国国家保密局和计算机科学技术学会组织各界专家研究DES密码体制的安全性问题后,得出乐观的结论:没有任何可以破译DES密码体制的系统分析法。若使用穷举法,则在1990年以前基本上不可能产生处每天能破译一个DES密钥的专用计算机。即使届时能制造出这样的专用机,它的破译成功率也只会在0.1到0.2之间,而且造价可能高达几千万美元。根据目前的计算技术和DES的分析情况,16一圈DES采刚16轮迭代仍然是安全的,但提醒使用者不要使用低于16一圈的DES,特别是10-圈以下的DES。尽管如此,我们仍然需要考虑对DES算法进行改进,使密钥长度增加些,以实现更好的保密功能。

信息安全-DES的介绍与应用

信息安全-DES的介绍与应用

CBC
CBC模式采用链 接特性加强了E CB 模式的安全 性,即对于相同 的明文,加密结 果不同。这就加 大了密码破解者 的破译难度。
CFB
CFB模式是采用 密文反馈的模式 增强密文之间的 相关性, 算方流 程图中的K比特 可以为小于64bit s 的任意长度数 据, 在本设计中 采用了64bits,8 bits 以及1bit 三 种模式。
CBC模式和ECB模式在Oracle中的运用
在Oracle 9i 中提供了dbms_obfuscation_toolkit 工具包, 包中提供了DESEncrypt、DES、 DecryptDES3Encrypt、DES3Decrypt等函数, 同时提供了可供调用的procedure 版本, 这 些函数分别实现了DES 加密、DES 解密、3DES 加密、3DES 解密。 Declare input Varchar2(48) := 'F84F854E5D74048082B9B3AA4758E70AB983E2B3E82B9B3A'; encrypted Varchar2(48); DeEncrypted Varchar2(48); Begin --调用加密模块 dbms_obfuscation_toolkit.DESEncrypt (input, key, encrypted); dbms_output.put_line(' 加密结果: ' || encrypted); --加密结果: EEE241FB983E2B3ED8320B01CFDEC3FB5D6995F9D38870 47 --调用解密模块 dbms_obfuscation_toolkit.DESDecrypt (encrypted, key,DeEncrypted); dbms_output.put_line(' 解密结果: ' || DeEncrypted); --解密结果: 'F84F854E5D74048082B9B3AA4758E70AB983E2B3E82B9B3A' End;

网络安全协议DES


二 DES算法的主要结构
64bit明文
56bit密钥 置换选择1 Co28bit Do28bit
初始置换IP
K1 置换选择2
循环左移1位 循环左移1位
C1 D1 左移1位 C2
第一轮变换
。 。 。 第16轮变换 逆初始置换IP-1 64bit密文
左移1位
K2 置换选择2

. .
输入 初始置换
L0
, n)
, n)
Ln+1 w位 密文 w位
Rn+1
Ri Li 1 F ( Ri 1 , Ki )(i 1, 2,
图5-6 Feistel密码结构
Feistel结构的实现依赖于参数:
分组长度:分组越长,安全性越高,但效率 降低,一般64或128 密钥长度:密钥越长,安全性越高,目前一 般是128 迭代轮数:多轮加密可取得很高安全性. 子密钥生成算法:子密钥生成越复杂,安 全性越高. 轮函数:轮函数越复杂,抗攻击就越强.
32位

Li(32位) Ri(32位)
Li Ri 1
Ri Li 1 F ( Ri 1 , K i )
图5-18 DES算法的一轮迭代处理过程
扩展变换E
输入(32位)
复用16位
32 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 3 7 11 15 19 23 27 31 4 8 12 16 20 24 28 32 5 9 13 17 21 25 29 1
12 11 9 3 7
11 15 12 7 5 11
15 12
14 10
实例1,设输入为101100

安全课件第9讲des安全性课件

主要内容 穷举攻击分析 Feistel模型分析 S盒的设计标准 DES算法的互补对称性 DES算法的加强方案----多重DES
穷举攻击分析
穷举攻击就是对所有可能的密钥逐个进行脱密测试, 直到找到正确密钥为止的一种攻击方法. 穷举攻击判断正确密钥的方法: 将利用试验密钥脱密得到的可能明文与已掌握的明文的信息相比较,并将最吻合的那个试验密钥作为算法输出的正确密钥。 穷举攻击又称为穷尽攻击、强力攻击、蛮干攻击等。只要明文不是随机的,就可实施穷举攻击。
三、DES算法的互补对称性
证明:由于DES的F函数具有性质:
从而DES算法的圈函数满足
故若记
,则有
,令D是左右块对换,则证毕来自定理互补对称性的缺点:
结论: 利用DES算法的互补对称性,利用选择明文进行穷举攻击时可将密钥的加密测试量降低一半.
攻击方案:
Step2 令K(0)是最低位为0的所有密钥构成的集合.
双重DES的分析
Step1 以k1的256个可能值k1为DES的密钥对m加密,并将所得的256个加密结果DESk1(m)与所用密钥k1一起,按加密结果的大小排序,得到有序表 L={(DESk1(m) ,k1):k1∈{0,1}56}. Step2 对k2的每个可能值k2为DES的密钥对c脱密,并检查脱密结果DESk2-1 (c)是否在表L中.如果DESk2-1(c)= DESk1(m) 则判定(k1,k2)为候选密钥,否则返回Step2检验下个可能密钥.直到检验找到正确密钥为止. 成功率=1; 存储复杂性为256,最大计算复杂性为257.数据复杂性为2个已知的明文分组.
线性性质是密码设计的大敌!
S盒是DES算法中唯一的非线性变换,是在DES算法起核心作用的密码变换! S盒的设计标准对于实现DES算法的完全性,对于实现混乱和扩散原则,对于确保DES算法的密码强度,具有十分重要的作用。 S盒实现了局部的混乱和扩散;这种局部的混乱和扩散通过E盒和P盒并借助于多次迭代实现了整个密码算法的混乱和扩散。 S盒只要稍有改变,其密码强度就会大大降低,因此,不要试图改变一个密码算法中的任何细节!

计算机网络安全——对称加密算法DES(一)

计算机⽹络安全——对称加密算法DES(⼀)⼀、对称加密算法概念我们通过计算机⽹络传输数据时,如果⽆法防⽌他⼈窃听,可以利⽤密码学技术将发送的数据变换成对任何不知道如何做逆变换的⼈都不可理解的形式,从⽽保证了数据的机密性。

这种变换被称为加密( encryption),被加密的数据被称为密⽂( ciphertext),⽽加密前的数据被称为明⽂( plaintext)。

接收⽅必须能通过某种逆变换将密⽂重新变换回原来的明⽂,该逆变换被称为解密(decryption)。

加密和解密过程可以以⼀个密钥( key)为参数,并且加密和解密过程可以公开,⽽只有密钥需要保密。

即只有知道密钥的⼈才能解密密⽂,⽽任何⼈,即使知道加密或解密算法也⽆法解密密⽂。

加密密钥和解密密钥可以相同,也可以不同,取决于采⽤的是对称密钥密码体制还是公开密钥密码体制。

所谓对称密钥密码体制是⼀种加密密钥与解密密钥相同的密码体制。

在这种加密系统中,两个参与者共享同⼀个秘密密钥,如果⽤⼀个特定的密钥加密⼀条消息,也必须要使⽤相同的密钥来解密该消息。

该系统⼜称为对称密钥系统。

数据加密标准( Data Encryption Standard, DES)是对称密钥密码的典型代表,由IBM公司研制,于1977年被美国定为联邦信息标准。

其加密解密基本流程如下图:⼆、.NET 使⽤ DES 加密DES使⽤的密钥为64 位(实际密钥长度为56 位,有8位⽤于奇偶校验)。

密码的字节长度不能低于64位(8个字节),下⾯是实现代码:1 using System;2 using System.IO;3 using System.Linq;4 using System.Security.Cryptography;5 using System.Text;67 namespace encryption.des8 {9 /// <summary>10 /// DES 加密与解密11 /// DES加密:https:///question/3676782912 /// 加密基本知识:https:///des.html13 /// </summary>14 public class DesAlgorithm15 {16 public Encoding Encoding { get; set; }17 public PaddingMode Padding { get; set; }18 public CipherMode Mode { get; set; }19 public string PassWord { get; private set; }20 private DESCryptoServiceProvider _des;2122 #region .ctor2324 public DesAlgorithm()25 {26 _des = new DESCryptoServiceProvider();27 PassWord = Convert.ToBase64String(_des.Key);28 Encoding = Encoding.UTF8;29 Padding = PaddingMode.PKCS7;30 Mode = CipherMode.CBC;31 }32 #endregion333435 /// <summary>36 /// 通过字符串⽣成新的密钥37 /// </summary>38 /// <param name="password">密码</param>39 /// <returns></returns>40 public DESCryptoServiceProvider CreateNewkey(string password)41 {42 try43 {44 byte[] buffer = Encoding.GetBytes(password).Skip(0).Take(8).ToArray();45 _des = new DESCryptoServiceProvider()46 {47 Key = buffer,48 IV=buffer,49 };50 PassWord = password;51 return _des;52 }53 catch (Exception e)54 {55 Console.WriteLine($"Wrong Length:{e.Message},{e.InnerException}");56 return null;57 }58 }5960 /// <summary>61 /// DES加密62 /// </summary>63 /// <param name="pToEncrypt">需要加密的字符串<see cref="string"/></param>64 /// <returns></returns>65 public string Encrypt(string pToEncrypt)66 {67 byte[] inputByteArray = Encoding.GetBytes(pToEncrypt);68 return Convert.ToBase64String(this.Encrypt(inputByteArray));69 }7071 /// <summary>72 /// DES加密73 /// </summary>74 /// <param name="pToEncrypt">待加密的byte数组<see cref="byte"/></param>75 /// <returns></returns>76 public byte[] Encrypt(byte[] pToEncrypt)77 {78 byte[] base64 = null;79 using (var ms = new MemoryStream())80 {81 using (var cs = new CryptoStream(ms, _des.CreateEncryptor(), CryptoStreamMode.Write))82 {83 cs.Write(pToEncrypt, 0, pToEncrypt.Length);84 cs.FlushFinalBlock();85 }86 base64 = ms.ToArray();87 }88 return base64;89 }9091 /// <summary>92 /// DES解密93 /// </summary>94 /// <param name="pToDecrypt">需要解密的字符串</param>95 /// <returns></returns>96 public string Decrypt(string pToDecrypt)97 {98 byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);99 return Encoding.GetString(this.Decrypt(inputByteArray));100 }101102 /// <summary>103 /// DES解密104 /// </summary>105 /// <param name="pToDecrypt">待解密的byte数组<see cref="byte"/></param>106 /// <returns></returns>107 public byte[] Decrypt(byte[] pToDecrypt)108 {109 byte[] data = null;110 using (var ms = new MemoryStream())111 {112 using (CryptoStream cs = new CryptoStream(ms, _des.CreateDecryptor(), CryptoStreamMode.Write))113 {114 cs.Write(pToDecrypt, 0, pToDecrypt.Length);115 cs.FlushFinalBlock();116 }117 data = ms.ToArray();118 }119 return data;120 }121 }122 }三、.NET 使⽤ 3DES 加密DES使⽤的密钥为64 位,它是⼀个优秀的密码算法,⽬前还没有发现⽐蛮⼒攻击更好的破解⽅法。

数据库安全性讲义PPT63页课件

1.用一个用户名或用户标识符来标明用户的身份, 系统以此来鉴别用户的合法性。
2.为了进一步核实用户身份,常采用用户名与口令 (Password)相结合的方法,系统通过核对口令判 别用户身份的真。
3.通过用户名和口令来鉴定用户的方法简单易行, 但该方法在使用时,由于用户名和口令的产生和 使用比较简单,也容易被窃取,因此还可采用更 复杂的方法。
//添加 U1 为角色 r_test 的成员
grant select,update on course to u1 with grant option
EXEC sp_revokedbaccess 'u_test' --从数据库 pubs 中删除安全账户
EXEC sp_droplogin 'l_test' --删除登录 l_test
查找、插入、修改、删除
用户或DBA把授权决定告知系统 SQL的GRANT和REVOKE DBMS把授权的结果存入数据字典 当用户提出操作请求时,DBMS根据授
权定义进行检查,以决定是否执行操作 请求
5.3.2 授权及收权
GRANT语句的一般格式: GRANT <权限>[,<权限>]... [ON <对象类型> <对象名>] TO <用户>[,<用户>]... [WITH GRANT OPTION];
第五章 数据库安全性
问题的提出
数据库的一大特点是数据可以共享 但数据共享必然带来数据库的安全性问题 数据库系统中的数据共享不能是无条件的共享
例:军事秘密、 国家机密、 新产品实验数据、 市场需求分析、市场营销策略、销售计划、 客户档案、 医疗档案、 银行储蓄数据
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果函数f是完全的, 当不考虑变换结果的抵消时,则无 论改变x或y的一个比特, 第3圈的输出的左半和右半的每个 比特都可能改变,这说明此时3圈能够实现完全性.
10
二、DES的S盒的设计标准
DES算法的设计者迫于公众压力公布的S盒的设计标 准为
1. S盒的每一位输出都不是输入的线性或仿射函数。 2. S盒的输入发生1比特变化,输出至少有2比特发生变 化。 3. 当固定S盒的1位输入时,S盒的每一位输出中0和1的 个数尽可能平衡。
1. 设计容易:f 函数不要求可逆,加、脱密脱算法结
构相同;
2.强度高:如果f 函数是随机的,则连续若干圈复
合形成的函数与随机置换是无法区分的.
6
缺点:
Li-1(32位) f
Ri-1(32位)
Li(32位)
Ri(32位)
• 每圈加密时输入有一半没有改变; • 左右块的加密处理不能并行实施
7
Feistel模型实现完全性的性能分析
8
结论: (1) Feistel模型至少需要3圈才可实现
完全性. (2) 如果Feistel模型的 f 函数需要T圈
迭代才能实现完全性,则Feistel模型经T+2 圈迭代可实现完全性.
(3) DES算法需且只需5圈即可实现完 全性!
9
结论: (1) Feistel模型至少需要3圈才可实现完全性, 且当其f 函数具有完全性时,只需3圈即可实现完全性.
S盒的设计标准对于实现DES算法的完全性,对 于实现混乱和扩散原则,对于确保DES算法的密码 强度,具有十分重要的作用。
S盒实现了局部的混乱和扩散;这种局部的混 乱和扩散通过E盒和P盒并借助于多次迭代实现了整 个密码算法的混乱和扩散。
S盒只要稍有改变,其密码强度就会大大降低, 因此,不要试图改变一个密码算法中的任何细节!
DES算法的安全性分析
2005年3月18日
1
主要内容
• 穷举攻击分析 • Feistel模型分析 • S盒的设计标准 • DES算法的互补对称性 • DES算法的加强方案----多重DES
2
穷举攻击分析
穷举攻击就是对所有可能的密钥逐个进行脱 密测试, 直到找到正确密钥为止的一种攻击方法.
穷举攻击判断正确密钥的方法: 将利用试验密钥脱密得到的可能明文与已掌握 的明文的信息相比较,并将最吻合的那个试验密 钥作为算法输出的正确密钥。 穷举攻击又称为穷尽攻击、强力攻击、蛮干 攻击等。只要明文不是随机的,就可实施穷举攻 击。
定义2 如果对每个密钥k,迭代次数为m的加密变 换Ek(x)的每个输入比特的变化都可能会影响到每个输 出比特的变化,则称 Ek(x)是完全的.
意义: 实现了Shannon提出的扩散性原则. 扩散原则(Diffusion) 让明文中的每一位影响密文中的尽可能多的位, 或者说让密文中的每一位都受到明文中的尽可能多位 的影响。 因为在检验完全性时,无法对所有的密钥都来检验 影响的必然性, 只好退而求其次,来分析这种可能性.
证明: 设(x,y)是Feistel模型的输入,则其第1圈至第3圈 的输出依次为
第 1 圈输出: ( y, x fk1 ( y) 第 2 圈输出: (x fk1 ( y), y fk2 (x fk1 ( y)) 第 3 圈输出: ( y fk2 (x fk1 ( y), x fk1 ( y) fk3 ( y fk2 (x fk1 ( y))
圈变换Q
Qk (L, R) (R, L F(k, R)) Qk (L, R )
Q(L, R)
故若记 x (L, R)
,则有
Q k
(
x)
Qk
(
x)
,令D是左右块对换,则
E (x) DQ
k
k16
Q Q (x) DQ
k2 k1
k16
Q k2
(Qk1
(
x))
D Qk16 Qk2 (Qk1 (x)) D Qk16 Qk2 (Qk1 (x))
11
1. S盒的每一位输出都不是输入的线性或仿射函数。
仿射函数的定义 设 f是n元布尔函数,如果x,,都有 f (x ) f (x) f (a) f (0)
则称f 是仿射函数;又若仿射函数满足f(0)=0,则 f 为线性函数.
等价定义: 设 f是n元布尔函数,则 f是仿射函数等价于
存在常数c1,c2,…,cn和a使对所有x,都有
f (x) c1x1 c2x2 cnxn a
此时,如果a=0,则 f为线性函数.
仿射函数的缺点:
(1) 输入与输出之间的代数关系太简单;
(2) 输入的变化与输出的变化之间的代数关系太简单.
仿射函数的优点: 实现简单
12
线性性质是密码设计的大敌!
13
S盒是DES算法中唯一的非线性变换,是在DES 算法起核心作用的密码变换!
3
穷举攻击的算法
已知条件:已知密文c及对应的明文m. Step 1 对每个可能密钥k,计算c’=D(k,m),
并判断c’=c是否成立.不成立时返回Step1检 验下一个可能密钥,成立时将k作为候选密钥, 并执行Step 2.
Step 2 利用其它条件对作k进一步确认. 确认通过时输出,算法终止.否则返回Step1 检验下一个可能密钥.
14
三、DES算法的互补对称性
定理
DES k
(m)Biblioteka DESk(m)证明:由于DES的F函数具有性质:
F(k, R) PS(k E(R)) PS(k E(R)) F(k, R)
从而DES算法的圈函数满足
k
Qk (L, R) (R, L F(k, R)) (R, L F(k, R))
(L, R)
4
穷举攻击算法的计算复杂性
K 1
定理 设密钥在密钥空间K中服从均匀分布2,且2 没有
等效密钥,则穷举攻击平均需要检验完

密钥后才找到正确密钥。
结论: 对DES算法的穷举攻击平均计算复杂性为255.
5
一、 Feistel模型分析
Li-1(32位)
f
Ri-1(32位)
Li(32位)
Ri(32位)
优点:
Ek (x)
证毕
15
互补对称性的缺点:
结论: 利用DES算法的互补对称性,利用选择明文 进行穷举攻击时可将密钥的加密测试量降低一半.
攻击方案: Step1 选择两个明密对 (m, c1)和(m, c2 )
Step2 令K(0)是最低位为0的所有密钥构成的集合.
Step3 对K(0)中的每个元k,计算c`=Ek(m),并检验c`=c1 是否成立.若成立,则判定k为候选密钥;若不成立,基于
相关文档
最新文档