信息安全导论课程-ch03-对称算法DES课件.pptx
B密码编码学与网络安全密码编码学与网络安全电子工业出版社2006-2007B第3章 对称算法DES3.1 分组密码算法原理3.2 DES算法3.3 DES强度3.4 差分分析和线性分析3.5 分组密码设计原理*3.A DES in/etc/passwd*3.B DES in OpenSSLB密码技术发展1918,William F.Friedman,The Index of Coincidence and Its Applications in Cryptography1949,Claude Shannon,The Communication Theory of Secrecy Systems1967,David Kahn,The Codebreakers1970s,NBS/NIST,DES (90s,AES)1976,Diffie,Hellman,New Directory in Cryptography1984,C.H.Bennett,Quantum Cryptography:Public Key Distribution and Coin Tossing1985,N.Koblitz,Elliptic Curve Cryptosystem2000,AESB3.1 分组密码算法原理分组密码算法 Block Cipher明文被分为固定长度的块(即分组),对每个分组用相同的算法和密钥加解密分组一般为n64比特,或更长(Padding)密文分组和明文分组同样长对某个密钥可以构造一个明密文对照表Codebook (Substitution Table)所以分组的长得至少64比特才好密钥空间2k 可逆映射个数(2n)!B序列密码算法(流密码算法)流密码算法 Stream Cipher每次可以加密一个比特适合比如远程终端输入等应用流密码可用伪随机数发生器实现密钥做为随机数种子,产生密钥流keystream(不重复,或极大周期)XOR(plaintext,key-stream)One-time PadB比较基本区别粒度 8字节分组 vs.1比特或1字节各自适应不同的应用数据格式各自适应不同的应用数据格式Padding对相同的明文分组,总是输出相同的密文分组;对相同的明文分组,总是输出相同的密文分组;而流密码却输出不同的密文比特而流密码却输出不同的密文比特流密码一般快很多分组密码多些,是主流分组密码也可以用作流模式安全性对比BBlock Cipher Principles0000 11100001 01000010 11010011 00010100 00100101 11110110 10110111 10001000 00111001 10101010 01101011 11001100 01011101 10011110 00001111 01110000 11100001 00110010 01000011 10000100 00010101 11000110 10100111 11111000 01111001 11011010 10011011 01101100 10111101 00101110 0000 乘积密码:重复使用代替和置换,实现混乱和扩散。BFeistel(DES)加密框架明文分组的长n2w分左右两半L0 R0密钥K产生子钥:Kk1,k2,kr r是轮数,比如16轮是异或函数XORpxx=p函数F是散列混乱函数可以是手工精心构造的查表函数BFeistel网络 BFeistel解密 BFeistel for Loop加密计算序列L0左半 R0右半L1R0 R1L0F(k1,R0)L2R1R2L1F(k2,R1)L3R3R3L2F(k3,R2)LiRi-1 RiLi-1F(ki,Ri-1)LnRn-1 RnLn-1F(kn,Rn-1)密文即(Ln,Rn)解密计算B2轮解密举例假设n2轮,C(L2,R2)加密明文半半L0+R0L1R0 R1L0F(k1,R0)L2R1R2L1F(k2,R1)解密密文半半L2R2R1L2L1R2F(k2,R1)R0L1L0R1F(k1,R0)明文L0R0L1R2F(k2,R1)L1F(k2,R1)F(k2,R1)L1L0R1F(k1,R0)L0F(k1,R0)F(k1,R0)L0BFeistel伪代码明文明文m长度长度n2t,记为,记为m0m1,每个长度为,每个长度为t密钥密钥k产生产生r个子密钥个子密钥k1,k2,.,kr加密加密Em:for i=2 to r+1 do0,1mimi-2 XOR f(mi-1,ki-1)i,i+1-ki得密文(得密文(mr,mr+1)r,r+1 Recent newsin 1997 on Internet in a few months(Rocke,96days)in 1998 on dedicated h/w in a few days (DES II-2 EFF,56 hrs)in 1999 above combined in 22hrs 15 mins“Deep Crack”by EFFB穷举(蛮力)攻击Cost/Time表Key search machine unitexpected search time$100,00035 hours$1,000,0003.5 hours$10,000,00021 minswiener93efficient.pdfA Brute Force Search of DES Keyspace 按照NIST的提议,98年以后DES不应继续使用3DES、AES、RC5、IDEA 等B“Deep Crack”Hardware CrackerDeveloped by theElectronic Frontier FoundationCost US$210,000$80,000 design$210,000 materials(chips,boards,chassis etc)BVLSI ChipDeveloped by AdvancedWireless Technologies24 search units per chip40 MHz16 cycles per encryption2.5 million keys/sBoard contains 64 chips6 cabinets holding 29 boardsBDeep Crack System90 billion keys/s37,000 search unitsc.f.Distributed Nets 34 billion keys/sControlled by PCchecks possible all ASCII candidate solutions from the search unitsSolved RSAs DES-III in 22 hours Jan 18,1999B蛮力攻击对明文内容的要求*问题:如何辨别出来?如何辨别出来?对给定的某个密文,任何一个密钥都可以解密出一个可能的明文,但是其中应该只有一个是正确的明文。必须事先知道明文的结构,比如已经知道这是文字文本、源程序(图像、声音、压缩的?)如果有两个密钥,解密出来的两个明文都有意义?可能性极小因为密钥空间2k *-*/etc/shadow passwdusername:passwd:last:may:must:warn:expire:disable:reservedsampleusername:Npge08pfz4wuk:503:100:FN:/home/username:/bin/shusername:x:503:100:FN:/home/username:/bin/sh 1/2username:Npge08pfz4wuk:9479:0:10000:2/2Bcrypt()函数crypt#define _XOPEN_SOURCE#include char *crypt(const char*key,const char*salt);passwd space128-32-7f=95个可用字符95nsalt两个字符,每个可从a-zA-Z0-9./中选出来,即有4096种不同取值抵制字典攻击中的预算值Bcrypt()描述从passwd到keypadding 形成8字符的组每组产生56bits87的密钥如果多于1组,则XOR累计重复加密64比特0到25回中间置换,受salt控制,计有4096种不同的置换输出211字符2字符是明码salt11字符是编码后的DES的64bits输出密文Bcrypt()Fig BPasswd Cracker基于字典的口令猜测攻击字典的构造普通字典 用户相关的词语John the Ripper password cracker L0phtCrack 更多安全工具BZip cracker sampleAdvanced ZIP Password Recovery statistics:Encrypted ZIP-file:sdjfks.zipTotal passwords:2,091,362,752Total time:6m 58s 725ms Average speed(passwords/s):4,994,597Password for this file:7uee23Password in HEX:37 75 65 65 32 33B3.B DES in OpenSSLDES算法很复杂,实现起来非常琐碎,在性能和移植性上也难于友好,因此如果软件实现提倡使用开放源码的实现,如OpenSSL等。OpenSSL是SSL/TLS协议的开放实现,其中也实现了几十种密码算法。OpenSSL部署广泛,使用OpenSSL中的DES非常便利。OpenSSL的使用说明参见“OpenSSL使用指南-x.xx.doc”BOpenSSL库结构图SSL(ssleay32.dll)密码算法(密码算法(libeay32.dll)应用程序应用程序(openssl.exe)对称:对称:DESAESRC4IDEA非对称:非对称:RSADHDSAECC散列:散列:MD5SHA1SHA256随机数等:随机数等:RANDBNBDES API(关于ECB和CBC模式)程序示例DES API in OpenSSL主程序见备注行int des_ecb_encrypt(input,output,schedule,enc)B关键术语 Key Termsavalanche effectblock cipherconfusionData Encryption Standard(DES)differential cryptanalysisdiffusionFeistel cipherirreversible mappingkeylinear cryptanalysispermutationproduct cipherreversible mappingroundround functionsubkeysubstitutionB小结了解DES的基本原理和对DES的批评,清楚DES的安全强度。虽然关键场合不能继续使用DES,但是通常个人用户使用DES不会有问题。如果是在软件程序中使用,DES之外还有很多更好的选择。BQ&A1、有时候读书是一种巧妙地避开思考的方法。4月-234月-23Tuesday,April 25,20232、阅读一切好书如同和过去最杰出的人谈话。17:41:1417:41:1417:414/25/2023 5:41:14 PM3、越是没有本领的就越加自命不凡。4月-2317:41:1417:41Apr-2325-Apr-234、越是无能的人,越喜欢挑剔别人的错儿。17:41:1417:41:1417:41Tuesday,April 25,20235、知人者智,自知者明。胜人者有力,自胜者强。4月-234月-2317:41:1417:41:14April 25,20236、意志坚强的人能把世界放在手中像泥块一样任意揉捏。25四月20235:41:14下午17:41:144月-237、最具挑战性的挑战莫过于提升自我。四月235:41下午4月-2317:41April 25,20238、业余生活要有意义,不要越轨。2023/4/2517:41:1417:41:1425 April 20239、一个人即使已登上顶峰,也仍要自强不息。5:41:14下午5:41下午17:41:144月-2310、你要做多大的事情,就该承受多大的压力。4/25/2023 5:41:14 PM17:41:1425-4月-2311、自己要先看得起自己,别人才会看得起你。4/25/2023 5:41 PM4/25/2023 5:41 PM4月-234月-2312、这一秒不放弃,下一秒就会有希望。25-Apr-2325 April 20234月-2313、无论才能知识多么卓著,如果缺乏热情,则无异纸上画饼充饥,无补于事。Tuesday,April 25,202325-Apr-234月-2314、我只是自己不放过自己而已,现在我不会再逼自己眷恋了。4月-2317:41:1425 April 202317:41谢谢大家谢谢大家