Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fundamentals of Cryptography

Fundamentals of Cryptography

halfrost

July 15, 2018
Tweet

More Decks by halfrost

Other Decks in Programming

Transcript

  1. 内容提要 1 密码学的基本概念 1.1 密码学的历史 1.2 密码学的基本概念 1.3 算法的分类 1.4

    密码分析 1.5 密码技术的用途 2 对称密钥密码算法 3 非对称密钥密码算法 4 单向散列函数 5 数字签名 6 密钥管理和公钥基础设施(PKI) 7 OpenSSL简介 3
  2. 1.1 密码学的历史 • 古罗马:Caesar 密码 4 ABCDEFGHIGKLMNOPQRSTUVWXYZ DEFGHIGKLMNOPQRSTUVWXYZABC Caesar was

    a great soldier 密码本 密文 Fdhvdu zdv d juhdw vroglhu 明文 密文 CAESAR 密码 : c=( m+ 3) Mod 26
  3. 1.1 密码学的历史(Cont.) • 美国南北战争 C A N Y O U

    U N D E R S T A N D 5 输入方向 输 出 方 向 明文: Can you understand 密文: codtaueanurnynsd
  4. 1.1 密码学的历史(Cont.) • 图灵(Alan Mathison Turing) • Alan Mathison Turing,1912~1954.

    英国数 学家。 一生对智能与机器之间的关系进行着 不懈探索。 • 1936年,24岁的图灵提出 “图灵机”的设想。 二战期间成功地破译了纳粹德国的密码,设 计并制造了 COLOSSUS,向现代计算机迈进了 重要一步。 • 1952年,图灵遭到警方拘捕,原因是同性恋。 1954年6月8日,服毒自杀,年仅42岁。 • 图灵去世12年后,美国计算机协会以他的名 字命名了计算机领域的最高奖“图灵奖”。 8
  5. 一个简单的加密算法—异或 1 1 0 1 0 1 0 1 1

    0 0 0 = Å = Å = Å = Å 1 1 0 0 1 1 = Å = Å = Å = Å - - x x x x x x x x 9
  6. 一个简单的加密算法—异或 • 异或 10 密文: 0 1 1 0 解密:

    密钥: 0 1 0 1 明文: 0 0 1 1 • 已知明文、密文,怎样求得密钥? C=P K P=C K 异或运算(不带进位加法): 明文: 0 0 1 1 加密: 密钥: 0 1 0 1 密文: 0 1 1 0 K=C P • 只知道密文,如何求得密文和密钥?
  7. 1.2 密码学的基本概念 • 密码学基本模型 11 发 送 方 接 收

    方 Encryption Decryption 加密:c= EK (m) 解密:m= DK (c) 不安全信道 密码分析 (Cryptanalysis) plaintex t ciphertext plaintex t Key Key
  8. 1.2 密码学的基本概念(Cont.) • 密码编码:通过信息编码使信息保密 • 密码分析:用分析方法解密信息 • 基本术语 • 明文(plain

    text),密文(cipher text) • 加密(encrypt, encryption), 解密(decrypt, decryption) • 密码算法(Algorithm),密码(Cipher):用来加密和解密的 数学函数 c=E(m), m=D(c) , D(E(m))= m • 密钥(Key): 算法中的一个变量 c=EKe (m), m=DKd (c) , DKd (EKe (m))= m 12
  9. 古典密码和现代密码 • 古典密码 • 代替密码(Substitution Cipher) • 换位密码 (transposition Cipher)

    • 代替密码与换位密码的组合 • 古典密码(受限密码)的缺陷 • 密码体制的安全性在于保持算法本身的保密性 • 受限算法的缺陷 • 不适合大规模生产 • 不适合较大的或者人员变动较大的组织 • 用户无法了解算法的安全性 14
  10. 对称密码算法和非对称密码算法 • 对称密钥密码算法,又称传统密码算法、秘密密钥密码算法 • 加密和解密使用相同的密钥 Ke =Kd • 常用算法:DES, IDEA,

    Blowfish, RC2等 • 优点 • 加密速度快,便于硬件实现和大规模生产 • 缺点 • 密钥分配:必须通过保密的信道 • 密钥个数:n(n-1)/2 • 无法用来签名和抗抵赖(没有第三方公证时) 16
  11. 对称密码和非对称密码(Cont.) • 非对称密码,又称公开密钥密码算法 • 加密和解密使用不同的密钥(Kp , Ks ),把加密密钥公开,解 密密钥保密: c=

    EKp (m) , m=DKs (c) • 常用算法:RSA, DSA, 背包算法,ElGamal , 椭圆曲线等 • 优点: • 密钥分配:不必保持信道的保密性 • 密钥个数:n pair • 可以用来签名和抗抵赖 • 缺点 • 加密速度慢,不便于硬件实现和大规模生产 17
  12. 分组密码和序列密码 • 分组密码(Block Cipher) • 一次加密或解密操作作用于一个数据块,比如64位 • 序列密码(Stream Cipher) •

    一次加密或解密操作作用于一位或者一个字节 18 随机序列 随机序列 密钥序列发生器 Pi Ci Ci Pi Key 密钥序列发生器
  13. 1.4 密码分析(Cont.) • Success in dealing with unkown ciphers is

    measured by these four things in the order named, perseverance, careful methods of analysis, intuition, luck. The ability at least to read the language of the original text is very desirable but not essential. • Parker Hitt ‘‘ 军事密码破译指南’’ 的开场白 • 毅力、审慎的分析方法、直觉、运气。 20
  14. 1.4 密码技术的主要用途 • 数据保密—数据加密/解密 • 数据加密(存储和传输) • 认证技术 • 实体身份认证

    • 数据源发认证 • 信息完整性保护 • 数据在传输过程中没有被插入、篡改、重发; • 数字签名和抗抵赖(Non-repudiation ) • 源发抗抵赖 • 交付抗抵赖 22
  15. 内容提要 1 密码学的基本概念 2 对称密钥密码算法 2.1 对称密钥算法简介 2.2 DES 算法原理

    2.3算法模式 2.4 DES的安全性和速度 2.5 其他对称密码算法简介 3 非对称密钥密码算法 4 单向散列函数 5 数字签名 6 密钥管理和公钥基础设施(PKI) 7 OpenSSL简介 23
  16. 2.1 对称密钥算法简介 • 加密和解密使用相同的密钥:KE =KD • 密钥必须使用秘密的信道分配 24 发 送

    方 接 收 方 m m 加密 E 解密 D c= Ek (m) m= Dk (c) 密钥分配(秘密信道) k k
  17. 2.1 对称密钥算法简介(Cont.) • 常用对称密钥密码算法 • DES (Data Encryption Standard )及其各种变形

    • IDEA (International Data Encryption Algorithm) • RC2, RC4, RC5, • AES(Advanced Encryption Standard) • CAST-128 • Blowfish 25
  18. 2.2 DES算法原理 • IBM 公司,70年代初提出,80年代成为国家标准 • DES是一种对称密钥算法,密钥长度为56bits (加上奇偶校验,通 常写成64bits) •

    是一种分组加密算法,64 bits为一个分组 • 基本思想: • 混乱(Confusion) 和扩散(Diffusion ) • 使用标准的算术和逻辑运算 26
  19. DES 加密过程 首先把明文分成以64 bit为单位的块m,对于每个m, 执行如下操 作 DES(m)=IP-1 • T16 •

    T15 •..... T2 • T1 • IP(m) • 初始置换, IP • 16轮迭代,Ti , i=1,2,…16 • 末置换,IP-1 27
  20. DES算法概要 28 Round16 IP-1 Roud1 Roud1 Initial Permutation Plaintext 64bits

    ciphertext 64bits Permuted Choice1 Left Circular Shift Left Circular Shift Left Circular Shift Permuted Choice2 Permuted Choice2 Permuted Choice2
  21. 初始换位(IP) • 初始换位(IP) 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 29 M=m1 m2 ,……m62 m63 ,m64 M’=m58 m50 ,……m23 m15 ,m7 IP(M)
  22. 一轮迭代 30 Li-1 Ri-1 Li =Ri-1 Ri =Li-1 f (Ri-1

    ,Ki ) Ki ( 48bits) 32 bits 32 bits 32 bits E-盒置换 S-盒代替 P-盒置换 32 bits f 48 32
  23. S-盒 置换 • 将48比特压缩成32比特 32 E S1 S2 S3 S4

    S5 S6 Ri-1 (32 bits) Ki ( 48bits) 48 bits S7 S8
  24. S-盒 置换 • 输入6比特: b1 b2 b3 b4 b5 b6

    • 输出4比特:S(b1 b6 , b2 b3 b4 b5 ) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 S1 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 S2 0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 1 . . .. .. .. .. 2 3 33 S1 b1 b2 b3 b4 b5 b6 举例: S 1 ( 100110 ) = 1000
  25. P-盒置换 • 32比特输入,32比特输出 1 2 3 4 5 6 7

    8 9 30 31 32 16 7 20 21 29 12 28 17 1 15 . . .. . . 11 4 25 34 P-盒的输出:
  26. 子密钥的生成 35 PC-1 C0 D0 LS1 LS1 C1 D1 LS2

    LS2 C2 D2 LS16 LS16 C16 D16 PC-2 K1 (48bits) 密钥 K, 64 bits 28 28 PC-2 K2 (48bits) PC-2 K16 (48bits)
  27. 子密钥生成 • 拆分:56 bits 的密钥分成两部分,Ci , Di , 各28bits •

    循环左移:根据迭代的轮数,分别左移一位或两位 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 37 • 压缩置换(置换选择):从56bits中选择48bits
  28. 末置换 • 末置换 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 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 38 • 初始置换 IP-1(IP(M))=M
  29. 2.3 DES的算法模式 • 电子密码本(Eletronic CoodBook, ECB) • 密码分组链(Cipher Block Chaining

    , CBC) • 密文反馈( Cipher FeedBack , CFB) • 输出反馈(Output FeedBack , OFB ) 40
  30. 电子密码本模式(ECB) • 基本的DES算法就是ECB 模式 • 相同的输入永远产生相同的输出 • 相当于加密、解密双方各有一个密码本,对于一个密钥,密码本 有264个表项 •

    存在重放(Replay)类型的攻击,特别是对于结构化的报文: • 攻击者可以在不知道密钥的情况下修改被加密过的消息 1 2 3 4 5 6 7 8 9 10 11 12 13 41 时间 标记 发送 银行 接受 银行 储户姓名 帐号 存款 金额
  31. 密码分组链模式(CBC) ) ( ) ( 1 1 1 i i

    i i i i C E C P P C E C - - - Å = Å = 42 Ek Ek Pi-1 Pi Ek Pi+1 Ek Ci-1 Ek Ci-1 Ek Ci-1 Ci-1 Ci Ci+1 Pi-1 Pi Pi+1 IV
  32. 密码分组链模式(CBC)(续) i i i i i i i i i

    i P P C C P P C P C E E C E = Å Å = Å = Å = - - - - - - 1 1 1 1 1 1 )) ( ( ) ( 43
  33. 2.4 DES的安全性和速度 • 弱密钥 • 产生的子密钥相同,4个 , 如 0000…00, 11111…111,

    0101010101…01, 101010…10 • 半弱密钥 • 用不同的密钥加密产生相同的密文,即用一个密钥加密的信息可以用其 他密钥解开,12个 • 密钥的长度 • 1976年,耗资2000万美元的计算机,可以在一天中找到密钥。 • 1993年,设计100万美元的计算机,3.5小时用穷举法找到密钥。 44
  34. 2.5 DES的变形 • 三重DES加密,密钥长度为112比特, k=k1 k2 45 DES DES-1 DES

    DES-1 DES DES-1 m m c c k1 k2 k1 k1 k2 k1 密钥长度2112
  35. 软硬件实现的速度 • 硬件实现:商业DES芯片 • VLSI 公司 VM009 1993年制造 200M Bytes/s

    • 软件实现: • 80486 , CPU 66Hz, 每秒加密43000个DES分组,336K Bytes/s • HP 9000/887 ,CPU 125 Hz, 每秒加密196,000个分组, 1.53M Bytes/s 46
  36. 2.6 其他密码算法 算法 密钥 长度 迭代 次数 数学操作 应用 DES

    56 16 XOR, S-Box Kerberos,SET 3DES 112 or 168 48 XOR,S-Box PGP,S/MIME IDEA 128 8 XOR, +, × PGP BlowFish 最大448 16 XOR, S-Box,+ RC5 最大2048 <255 +,—,XOR CAST-128 40-128 16 +,—,S-Box PGP 47
  37. IDEA算法简介 • 1990年,Xuejia Lai(赖学家),James Massey, International Data Encryption Algorithm •

    “依我看来,该算法是目前一公开的最好和最安全的分 组密码算法” ——《应用密码学》,p226 • 目前已经最为PGP的一部分 48
  38. IDEA算法简介(cont.) • 分组长度64bits, 密钥长度128bits • 同一算法即可以加密,也可用于解密 • 只需要简单的混合运算 • 异或

    • 模216加 • 模216+1乘 • 软件实现IDEA比DES快两倍 • 安全性:弱密钥有251, 1/277 • 赢得彩票头等奖并在同一天被闪电杀死的可能性 1/255 49