• 1. 信息加密技术 主讲:汪礼文 单位:北京时代集团公司 Email: wangliwen@timegroup.com.cn
  • 2. 课程介绍计算机信息安全的一部分 计算机系统工程的一部分 软件开发的一个组成部分 包括信息安全加密的程序设计 包括加密体系的算法设计方法与模式
  • 3. 相关课程先修课 数学理论知识 计算机算法分析 高级语言程序设计后续课 计算机信息安全 计算机控制技术
  • 4. 学习要求(1)了解加密技术的基本概念 (2)掌握基本加密算法的设计原理 (3)了解其他的加密技术 (4)能够独立完成一些基本算法加密、解密处理 (5)能够举一反三理解和设计出新的加密算法
  • 5. 课时安排授课时间:三个课时 上机时间:两个课时 上机地点:统一安排
  • 6. 参考资料(1)计算机信息安全 (2)密码学技术 (3)计算机通讯网络安全 (4)数学
  • 7. 第3章 提 纲3.1 信息加密技术概述 3.2 基本的加密算法 3.3 常用的校验算法 3.4 对称加密技术 3.5 非对称加密技术开 始
  • 8. 3.1 信息加密技术概述3.1.1 基本概念 3.1.2 密码学介绍 3.1.3 加密技术介绍 返回本章首页
  • 9. 3.1.1 基本概念3.1.1.1 基本概念(一) 3.1.1.2 基本概念(二) 3.1.1.3 基本概念(三) 3.1.1.4 小结 返回本节
  • 10. 3.1.1.1 基本概念(一)(1)明文(Plaintext): 未加密的报文。 (2)密文(Ciphertext): 明文经密码保护形成一种隐蔽形式。 (3)加密(Encryption): 将明文变换为密文过程。 (4)解密(Decryption): 加密的逆过程。 (5)加密算法(Encryption Algorithm): 加密明文采用的规则 (6)解密算法(Decryption Algorithm): 解密明文采用的规则返回本节
  • 11. 3.1.1.2 基本概念(二)(1)发送者(Sender): 传送消息的人。 (2)接收者(Receiver): 传送消息的预定对象。 (3)密钥(Key): 用于加密和解密操作的数据。 (4)截收者(Eavesdropper): 在信息传输和处理系统中的非授权者,通过搭线、电磁、声音窃听来窃取机密信息。 (5)密码分析(Cryptannalysis):接收者试图通过分析截获的米问推断出原来的明文或密文。返回本节
  • 12. 3.1.1.3 基本概念(三)(1)密码分析员(Cryptanalyst):从事密码分析的人。 (2)被动攻击(Passive attack):对一个保密系统采取截获密文进行分析的攻击。 (3)主动攻击(Active attack):非法入侵者(Tamper)、攻击者(Attacker)或黑客(Hacker)主动向系统窜扰,采用删除、增添、重放、伪造等手段向系统注入虚假的消息,达到利己害人的目的。返回本节
  • 13. 3.1.1.4 小 结(1)了解专业术语。 (2)掌握最基本的概念(加密、解密、明文、密文等等)。 返回本节
  • 14. 3.1.2 密码学介绍3.1.2.1 密码学概述 3.1.2.2 密码学发展史 3.1.2.3 密码系统组成 3.1.2.4 密码的分类 3.1.2.5 攻击密码的方法 3.1.2.6 破译密码的类型 3.1.2.7 密钥管理体系 3.1.2.8 小结返回本节
  • 15. 3.1.2.1 密码学概述 密码学作为数学的一个分支,专门研究计算机信息加密、解密及其变换过程的科学,是密码编码学和密码分析学的统称,是数学和计算机的交叉学科,也是一门新兴的学科。 返回本节
  • 16. 3.1.2.2 密码学发展史(1)第一阶段(古代—1949): 属于前期阶段,密码技术只是一种艺术,而不是一种科学,专家们是凭借直觉和信念来进行密码设计和分析,而不是推理论证。 (2)第二阶段(1949—1975): 1949年Shannon发表了“保密系统的信息理论”一文为对称密码系统建立的理论基础,从此密码学成为一门科学。 (3)第三阶段(1976—至今): 1976年Diffie和Hellman发表了“密码学的新方向”一文证明收发双方无密钥传输的加密信息技术是可能的。1977年,美国国家标准局正式公布了数据加密标准(DES)。返回本节
  • 17. 3.1.2.3 密码系统组成(1)明文空间:所有明文信息。 (2)密文空间:所有密文信息。 (3)加密算法:加密规则。 (4)解密算法:解密规则。返回本节
  • 18. 3.1.2.4 密码分类(一)(1)按应用技术或发展阶段: 手工密码:以手工方式完成加密作业或以简单器具辅助操作的密码。应用于第一次世界大战。 机械密码:以机械码来完成加解密作业的密码。从第一次世界大战出现到第二次世界大战中得到普遍应用。 电子机内乱码:通过电子电路,以严格的程序进行逻辑运算,产生大量的加密乱数。20世纪50年代末到70年代 计算机密码:以计算机软件编程为特点用于网络通信。 下一节返回本节
  • 19. 3.1.2.4 密码分类(二)(2)按保密程度划分: 理论上保密密码:理论上对明文始终得不到唯一解。 实际上保密密码:理论上可破,但在客观条件下无法通过计算来确定唯一解的密码。 不保密密码:在获取一定数量的密文后可以得到唯一解的密码。 总之,如破译的代价超出信息本身的价值,或者破译的时间超出了信息的有效期,我们认为都是安全可靠的。返回本节下一节
  • 20. 3.1.2.4 密码分类(三)(3)按密钥方式划分: 对称式:收发双方使用同一密钥的密码。 非对称式:收发双方使用不同密钥的密码。 (4)按明文形态划分: 模拟型:加密模拟信息。如语音信号加密。 数字型:加密数字信息。如二进制电报信息加密。返回本节
  • 21. 3.1.2.5 攻击密码的方法(1)穷举攻击:指密码分析者试遍所有密钥的方法来破译密码。需要大量破译时间。 (2)统计分析攻击:指密码分析者通过分析密文和明文的统计规律来破译密码。不带密文无法破译。 (3)数学分析攻击:指密码分析者针对加密算法的数学依据,通过数学求解的方法来破译密码。使用具有坚实数学基础和足够复杂的加密算法。返回本节
  • 22. 3.1.2.6 破译密码的类型(1)惟密文攻击:密码分析者知道一些通过同一算法加密的密文,利用这些密文恢复尽可能多的明文或密钥。 (2)已知明文攻击:密码分析者知道通过同一密钥加密的部分密文和明文,推出用来加密的密钥或导出算法。 (3)选择明文攻击:密码分析者可选择一些密文和明文,通过选择被加密的明文,推出用来加密的密钥或算法。返回本节
  • 23. 3.1.2.7 密钥管理体系密钥交换 节点间的密钥分配 密钥分配中心 三级密钥管理体系 返回本节
  • 24. 密钥交换例子:税控IC卡返回本节接收方B发送方A密钥信道
  • 25. 节点间密钥分配返回本节密钥交互请求接收方B发送方A回应请求传输密钥例子:POS
  • 26. 密钥分配中心返回本节密钥交互请求接收方B发送方A回应请求传输密钥分配中心 (密钥组)例子:金卡中心
  • 27. 三级密钥管理体系返回本节(1)初级密钥LMK(Local Master Key) (2)二级密钥ZMK(Zone Master Key) (3)三级密钥MAC、Working Key 例子:银行系统
  • 28. 3.1.2.8 小 结(1)了解密码技术发展历史和应用。 (2)了解密码的分类情况。 (3)了解攻击以及破译密码方式。 (4)理解并熟悉密钥管理体系。 返回本节
  • 29. 3.1.3 加密技术介绍3.1.3.1 概述 3.1.3.2 加密系统特点 3.1.3.3 基本模型 3.1.3.4 加密系统模型 3.1.3.5 保密系统安全要求 3.1.3.6 小结返回本节
  • 30. 3.1.3.1 概 述 信息加密技术是一门涉及数学、密码学和计算机的交叉学科,是密码学研究的对象,主要是对敏感数据、摘要、签名等进行加密,应用于保护军事、外交通信、商业应用领域。 随着现代密码学的发展,使信息加密技术已经不在依赖于对加密算法本身的保密,是通过在统计学意义上提高破解成本保证高加密算法的安全性。返回本节
  • 31. 3.1.3.2 加密系统的特点(1)机密性:收发双方都能够理解报文内容。 (2)身份鉴别:收发双方能够实现身份互认。 (3)报文完整性:收发双方需要确保数据传输过程中的完整性。 (4)不可否认性:收发双方发送给对方的数据具有不可抵赖性。返回本节
  • 32. 3.1.3.3 基本模型返回本节明文解密器加密器密文接收者明文密码源密码源信息密码信道
  • 33. 3.1.3.4 加密系统模型返回本节明文解密器加密器密文接收者明文密码源密码源信息密码信道非法入侵者密码分析员搭线信道搭线信道(主动攻击)(被动攻击)
  • 34. 3.1.3.5 加密系统安全要求(1)难以被攻破。 (2)密钥受使用范围和时间限制,可以随时变更。 (3)密钥的分配和更换更透明,但用户不一定要亲自掌管密钥,即密钥可以随机产生。如:IC 卡。 返回本节
  • 35. 3.1.3.6 小结(1)了解信息加密技术原理。 (2)了解加密系统的特点。 (3)掌握加密系统模型。返回本节
  • 36. 3.2 基本的加密算法3.2.1 概述 3.2.2 对称加密算法 3.2.3 非对称加密算法 3.2.4 常用算法特点 3.2.5 常用算法分类 3.2.6 应用场所 3.2.7 小结返回本章首页
  • 37. 3.2.1 概 述 加密算法是加密技术的核心以及重点研究对象,算法的优良与否直接影响系统的安全性能,其主要是指对机密信息进行加密或解密的方法。 按密钥方式分为: 对称加密算法:又叫传统密钥算法或私有密钥算法。 非对称加密算法:又叫公开密钥算法。返回本节
  • 38. 3.2.2 对称加密算法 对称加密算法:加解密密钥相同或可互相推出。安全性依赖于密钥。有:DES、3DES、IDEA、AES、RC等。分为分组密钥和流密钥。 分组密钥:将明文分成固定块用同一密钥和算法加密,并输出固定长度密文。 流密钥:对明文逐位进行加密。返回本节
  • 39. 3.2.3 非对称加密算法 非对称加密算法:加解密密钥不相同且不能相互计算出来,存在密钥对。 分为:加密密钥和解密密钥。 加密密钥:又叫公开密钥。 解密密钥:又叫私有密钥。返回本节
  • 40. 3.2.4 常用算法特点LRC:纵向冗余校验 Longitudinal Redundancy Check CRC:循环冗余校验码Cyclic Redundancy Check(Code)。 MAC:消息认证码(Message Authentication Code)。 DES:数据加密标准,速度较快,适用于加密大量数据。 3DES:对一块数据用3个不同密钥进行3次加密,强度高。 RSA:一个支持变长密钥的公共密钥算法,加密长度可变。 DSA:数字签名算法,是一种标准的数字签名标准。 AES:高级加密标准,密钥长度128位返回本节
  • 41. 3.2.5 常用算法分类对称加密算法: DES、3DES、IDEA(国际数据加密算法)、AES(高级加密标准)等 非对称加密算法: RSA、ECC椭圆曲线密码、DSA等。 其他算法: LRC、CRC、MAC等。返回本节AES与3DES比较RSA与ECC比较
  • 42. AES与3DES比较名称 密钥长度 速度 解密(255个密钥/s) 资源消耗 AES 128/192/256 高 1490000亿年 低 3DES 112或168 低 46亿年 高 返回
  • 43. RSA与DSA比较攻破时间 RSA/DSA(Key长度) ECC(Key长度) 密钥长度比 10的4次幂 512 106 5:1 10的8次幂 768 132 6:1 10的11次幂 1024 160 7:1 10的20次幂 2048 210 10:1 10的78次幂 21000 600 35:1返回
  • 44. 3.2.6 应用场所(1)军事、外交场合数据加密传输。 (2)金融、证券、税务等需要进行数据保护或身份验证的场所。 (3)大型软件需要提供高性能、高安全度的场所。 (4)用于一些硬件加密、解密措施不利而容易被攻击的场所。 (5)对于一些数据存储安全漏洞或弥补硬件缺陷的场所。如嵌入式硬件读写Flash错误校验等。返回本节
  • 45. 3.2.7 小结(1)了解加密算法常识 (2)区分常用加密算法特点返回本节
  • 46. 3.3 LRC校验LRC校验:按位校验和。 int lrc(char *ptr, int len) { int i,ret = 0; for (i=0; i
  • 47. CRC校验CRC校验:循环冗余校验,是一个循环移位的模2运算。采用二进制多项式编码方法。有CRC-4、CRC-16、CRC-32等算法。a x + a x + …. + a x + a n-1 n-2 1 0n-1 n-2二进制多项式:如:二进制数10110101可以表示为:1x + 0x + 1x + 1x + 0x + 1x + 0x + 1 7 6 5 4 3 2
  • 48. unsigned int Cal_CRC (unsigned char *ptr, int len) { unsigned int i, crc=0; while (len--!=0) { for (i=0x80; i!=0; i/=2) { if ((crc & 0x8000) !=0) { crc*=2; crc^=CRC_16_POLY; } else crc*=2; if ((*ptr&i )!=0) crc^=CRC_16_POLY; } ptr++; } return crc; }CRC-16校验 程序例子:CRC_16_POLY 为宏定义: 即二进制多项式,如: 0x8005;
  • 49. MAC计算8字节的初始值异或 D1 用8字节密钥 进行DES加密异或 D2 用8字节密钥 进行DES加密异或 D3 用8字节密钥 进行DES加密得到8字节的 计算结果返回本章首页
  • 50. 3.4 对称加密技术对称密码体制概述 分组密码原理 DES算法 返回本章首页
  • 51. 对称密码体制概述在对称密码体制中,加密密钥和解密密钥相同,或彼此之间容易相互确定。 对称密码分类 分组密码(block cipher):将明文分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。 流密码(stream cipher):又称序列密码.序列密码每次加密一位或一字节的明文,也可以称为流密码。
  • 52. 对称密码体制概述对称密码的基本运算 1.代替 代替(substitution):就是明文中的每一个字符被替换成密文中的另一个字符。接收者对密文做反向替换就可以恢复出明文。 2.置换 置换 (permutation),又称换位(transposition):明文的字母保持相同,但顺序被打乱了。返回本节
  • 53. 分组密码原理分组密码一般原理: 分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。加密算法k=( k0,k1,…kn-1 )( m0,m1,…mn-1 )( c0,c1,…cn-1 )( m0,m1,…mn-1 )解密算法k=( k0,k1,…kn-1 )
  • 54. 分组密码原理分组密码的结构: 常用的分组密码结构有两种: 1)Feistel网络结构 DES FEAL Blowfish RC5 2)SP网络结构 SAFER SHARK AES
  • 55. 分组密码原理1. Feistel网络结构 1)将明文P分为左右相等长度的两半L0、R0 2)将R0→ L1 L0⊕F(R0,k1) →R1 3)在第i轮时 Ri-1→ Li Li-1⊕F(Ri-1,ki) →Ri 4)至止最后一轮n Ln=Rn-1 Rn=Ln-1⊕F(Rn-1,kn)PL0R0L1R1k1F+F+LiRiki……F+LnRnkn……返回本节
  • 56. DES算法背景1. DES的产生 1972年 美国国家标准局(NBS)拟订了一个旨在保护计算机和通信数据的计划。开发一个单独的标准密码算法是该计划的一部分。 1973年5月15日 美国国家标准局(NBS)发布征集标准密码算法公告。DES,Data Encryption Standard,数据加密标准
  • 57. 同时,NBS确定了一系列设计准则: 算法必须提供较高的安全性。 算法必须完全确定且易于理解。 算法的安全性必须依赖于密钥,而不应依赖于算法。 算法必须对所有的用户都有效。 算法必须适用于各种应用。 用以实现算法的电子器件必须很经济。 算法必须能有效使用。 算法必须能验证。 算法必须能出口。DES算法背景
  • 58. 1974年8月27日 美国国家标准局(NBS)第二次发布征集标准密码算法公告。 IBM提交了算法LUCIFER,该算法由IBM的工程师在1970年初开发的一个算法基础上,于1971~1972年研制成功。 1975年3月17日 NBS公布该算法细节。 1976年 NBS成立专题小组评估提出的整个标准。DES算法背景
  • 59. 1976年11月23日 采纳IBM公司的设计方案为联邦标准,并授权在非密级的政府通信中使用。 1977年1月15日 FIPS PUB 46(DES标准的正式文本)公布,并在六个月后生效。 1980年 FIPS PUB 81(DES工作方式)公布。 1981年 公布FIPS PUB 74(实现和使用DES的指南) DES算法是第一个公布的NSA(美国国家安全局)执行算法。DES算法背景
  • 60. 2. DES的采用 1979年,美国银行协会批准使用 1980年,美国国家标准局(ANSI)赞同DES作为私人使用的标准,称之为DEA(ANSI X.392) 1983年,国际化标准组织ISO赞同DES作为国际标准,称之为DEA-1 该标准规定每五年审查一次,计划十年后采用新标准 最近的一次评估是在1994年1月,已决定1998年12月以后,DES将不再作为联邦加密标准。DES算法背景
  • 61. DES算法描述DES使用56位密钥,对64位数据块进行加密,需要进行16轮编码。DES示意图:
  • 62. DES算法描述 DES算法特点 1) 分组加密算法: 以64位为分组。64位一组的明文从算法一端输入,64位密文从另一端输出。 2) 对称算法: 加密和解密用同一密钥。 3) 有效密钥长度为56位。 密钥通常表示为64位数,但每个第8位用作奇偶校验,可以忽略。
  • 63. DES算法描述 DES算法特点 4) 代替和置换 DES算法是两种加密技术的组合:混乱和扩散。先代替后置换。 5) 易于实现 DES算法只是使用了标准的算术和逻辑运算,其作用的数最多也只有64位,因此用70年代末期的硬件技术很容易实现。 算法的重复特性使得它可以非常理想地用在一个专用芯片中。
  • 64. DES算法描述DES对64位的明文分组进行操作。通过一个初始置换,将明文分组分成左半部分和右半部分,各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密钥结合。经过16轮后,左、右半部分合在一起,经过一个末置换(初始置换的逆置换),这样该算法就完成了。DES算法框图输入64比特明文数据在密钥控制下 16轮迭代初始置换IP交换左右32比特初始逆置换IP-1输出64比特密文数据
  • 65. DES算法描述初始置换IP+k1+k2+k16IP-1L0R0L1=R0R1=L0 (RO,K1)L2=R1R2=L1 (R1,K2)L15=R14R15=L14 (R14,K15)R16=L15 (R15,K16)L16=R1564位明文64位密文DES算法大致可以分为3个部分: 初始置换 迭代过程 逆置换 迭代过程: 密钥置换 扩展置换 S-盒代替 P-盒置换
  • 66. DES算法描述初始置换IP+k1+k2+k16IP-1L0R0L1=R0R1=L0 (RO,K1)L2=R1R2=L1 (R1,K2)L15=R14R15=L14 (R14,K15)R16=L15 (R15,K16)L16=R1564位明文64位密文 DES算法的总体过程 输入64位明文数据,并进行初始置换IP; 在初始置换IP后,明文组再被分为左右两部分,每部分32位,以L0,R0表示。 在密钥的控制下,经过16轮运算(); 16轮后,左、右两部分交换,并连接在一起; 经过末置换(初始置换的逆置换); 输出64位密文。
  • 67. DES算法描述 初始置换与末置换 初始置换IP (initial permutation)在第一轮运算之前进行。未置换IP-1(初始置换的逆置换)在第十六轮运算之后进行。初始置换IP初始逆置换IP-15850423426181024084816562464326052443628201243974715552363316254463830221463864614542262306456484032241683754513532161295749413325179136444125220602859514335271911335343115119592761534537292113534242105018582663554739312315733141949175725
  • 68. DES算法描述 迭代过程 经过初始置换后,进行16轮完全相同的运算。这些运算被称为,在运算过程中数据与密钥结合。+k1L0R0L1=R0R1=L0 (RO,K1)函数的输出经过一个异或运算,和左半部分结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。
  • 69. DES算法描述假设Li和Ri是第i次迭代结果的左半部分和右半部分,Ki是第i轮的48位密钥,则每一轮迭代过程可以表示为: 函数Li-1(32bit)Ri-1(32bit)扩展置换ES盒代替P-盒置换Ri(32bit)Li(32bit)Ri=Li-1 (Ri-1,Ki-1)Li=Ri-132位48位48位32位32位32位
  • 70. DES算法描述 函数 函数由四步运算构成: 密钥置换(Ki的生成i=0,1,…,16) 扩展置换 S-盒代替 P-盒置换 1) 密钥置换 DES算法由64位密钥产生16轮的48位子密钥。 在每一轮运算过程中,使用不同的子密钥。
  • 71. DES算法描述64位密钥置换选择1C0(28位)D0(28位)循环左移循环左移C1(28位)D1(28位)置换选择2循环左移循环左移Ci(28位)Di (28位)置换选择256位k148位ki48位56位压缩置换。将56位输入置换为48位。不考虑每字节的第8位,将64位密钥减至56位。然后进行一次密钥置换。各轮循环移动的次数由轮数决定。每一轮子密钥K生成过程可以表示为:
  • 72. DES算法描述置换选择1表 Ci(28)位 Di(28位) 57,49,41,33,25,17, 9, 1,58,50,42,34,26,18, 10, 2,59,51,43,35,27,19,11, 3,60,52,44,36, 63,55,47,39,31,23,15, 7,62,54,46,38,30,22, 14, 6,61,53,45,37,29,21,13, 5,28,20,12, 4压缩置换表(置换选择2—48位)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
  • 73. DES算法描述C0(28位)D0(28位)循环左移循环左移C1(28位)D1(28位)64位密钥置换选择1经过置换选择1,将输出的56位密钥分成两部分,每部分28位。 然后,根据轮数,将两部分分别循环左移1位或2位。如下表所示。每轮移动的位数表 轮 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
  • 74. DES算法描述2) 扩展置换E 通过扩展置换E,数据的右半部分Ri从32位扩展到48位。扩展置换改变了位的次序,重复了某些位。 扩展置换有两方面的目的:  产生与密钥同长度的数据以进行异或运算;  提供更长的结果,使得在替代运算时能够进行压缩。Li-1(32bit)Ri-1(32bit)扩展置换ES盒代替P-盒置换Ri(32bit)Li(32bit)Ki 48bitRi=Li-1 (Ri-1,Ki-1)Li=Ri-132位48位48位32位32位32位
  • 75. DES算法描述32 | 01 02 03 04 | 05 04 | 05 06 07 08 | 09 08 | 09 10 11 12 | 13 12 | 13 14 15 16 | 17 16 | 17 18 19 20 | 21 20 | 21 22 23 24 | 25 24 | 25 26 27 28 | 29 28 | 29 30 31 32 | 01扩展置换E数据的扩展置换规则:中间为32位,两边为扩展位,扩展后为48位。
  • 76. DES算法描述3) S盒代替 压缩后的密钥与扩展分组异或以后,将48位的结果送入,进行代替运算。Li-1(32bit)Ri-1(32bit)扩展置换ES盒代替P-盒置换Ri(32bit)Li(32bit)Ki 48bitRi=Li-1 (Ri-1,Ki-1)Li=Ri-132位48位48位32位32位32位
  • 77. DES算法描述48-位输入32-位输出S-盒1S-盒2S-盒3S-盒4S-盒5S-盒6S-盒7S-盒8代替运算由8个不同的代替盒(S盒)完成。每个S盒有6位输入,4位输出。 48位的输入被分为8个6位的分组,每一分组对应一个S-盒代替操作。 经过S盒代替,形成8个4位分组。
  • 78. DES算法描述输入位以一种非常特殊的方式确定了S-盒中的项。 假定将S-盒的6位输入标记为b1、 b2、 b3、 b4、 b5、 b6,则 1)b1和 b6组合构成了一个2位的数,从0到3,它对应着表中的一行。 2)从b2到 b5构成了一个4位的数,从0到15,对应着表中的一列。 3)行列交叉处的数就是S-盒的输出值。
  • 79. DES算法描述例如,假设S-盒6的输入(即异或函数的第31位到36位)为110011。 第1位和最后一位组合形成了11,它对应着S-盒6的第3行。 中间的4位组合形成了1001,它对应着S-盒6的第9列。 S-盒6的第3行第9列处的数是14,得到输出值为1110。S-盒60 12, 1,10,15,9, 2, 6, 8, 0,13, 3, 4,14, 7, 5,11, 1 10,15, 4, 2,7,12, 9, 5, 6, 1,13,14, 0,11, 3, 8, 2 9,14,15, 5,2, 8,12, 3, 7, 0, 4,10, 1,13,11, 6, 3 4, 3, 2,12,9, 5,15,10,11,14, 1, 7, 6, 0, 8,13 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  • 80. DES算法描述4) P盒置换 S-盒代替运算后的32位输出依照P盒进行置换。 P盒置换将每一输入位映射到输出位。任一位不能被映射两次,也不能被略去。 经过P-盒置换的结果与最初64位分组的左半部分异或,然后左右两部分交换,开始下一轮迭代。P-盒置换表16,7,20,21,29,12,28,17, 1,15,23,26, 5,18,31,10, 2,8,24,14,32,27, 3, 9,19,13,30, 6,22,11, 4,25例如,第21位移到了第4位,第4位移到了第31位。
  • 81. DES解密 在经过所有的代替、置换、异或和循环移动之后,获得了这样一个非常有用的性质:加密和解密可使用相同的算法。 DES使得用相同的函数来加密或解密每个分组成为可能,二者的唯一不同之处是密钥的次序相反。这就是说,如果各轮的加密密钥分别是K1,K2,K3…,K16那么解密密钥就是K16,K15,K14……,K1。为各轮产生密钥的算法也是循环的。密钥向右移动,每次移动个数为0,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1。DES解密:
  • 82. DES解密DES解密:简单地说: - DES的解密和加密使用相同的算法。 - 解密过程中使用的子密钥顺序与加密过程中使用的密钥顺序相反。 即:如果各轮的加密密钥是K1,K2,K3,…,K16, 那么解密密钥就是K16, K15, K14, …, K1。
  • 83. DES的实现DES的实现: 举例: 已知明文m=computer,密钥k=program,用ASCII码表示为: m=01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010 k=01110000 01110010 01101111 01100111 01110010 01100001 01101101 因为k只有56位,必须插入第8,16,24,32,40,48,56,64位奇偶校验位,合成64位。而这8位对加密过程没有影响。
  • 84. DES的实现DES的实现:m经过IP置换后得到 L0= 11111111 10111000 01110110 01010111 R0= 00000000 11111111 00000110 10000011 密钥k通过PC-1得到 C0= 11101100 10011001 00011011 1011 D0= 10110100 01011000 10001110 0110 再各自左移一位,通过PC-2得到48位 k1=00111101 10001111 11001101 00110111 00111111 00000110 R0(32位)经E作用膨胀为48位, 10000000 00010111 11111110 10000000 11010100 00000110
  • 85. DES的实现DES的实现:再和k1作异或运算得到(分成8组) 101111 011001 100000 110011 101101 111110 101101 001110 通过S盒后输出位32比特, 01110110 00110100 00100110 10100001 S盒的输出又经过P置换得到 01000100 00100000 10011110 10011111 这时 :所以,第一趟的结果是: 00000000 11111111 00000110 10000011 10111011 10011000 11101000 11001000
  • 86. DES的实现DES的实现: 如此,迭代16次以后,得到密文: 01011000 10101000 01000001 10111000 01101001 11111110 10101110 00110011 明文或密钥每改变一位,都会对结果密文产生剧烈的影响。任意改变一位,其结果大致有将近一半的位发生了变化。
  • 87. DES的发展DES的发展:由于56位密钥的DES已经不够安全,因此,1998年12月以后,56位密钥的DES已经不再作为联邦加密标准。为了使已有的DES算法投资不浪费,人们尝试用DES和多个密钥进行多次加密。 1. 双重DES(Double DES) C = EK2(EK1(P))  P = DK1(DK2(C))DDCxPK1K2加密解密EEPxCK1K2
  • 88. DES的发展DES的发展:2.三重DES(两个密码)加密解密DEPABK1K2ECK1C=EK1(DK2(EK1(P)))EDCABK1K2DPK1P=DK1(EK2( DK1(C)))
  • 89. DES的发展DES的发展:3.三重DES(三个密码)加密解密DEPABK1K2ECK3C=EK1(DK2(EK1(P)))EDCABK1K2DPK3P=DK1(EK2( DK1(C)))
  • 90. 跨国总行省行省行区域性网络区域性网络分行分行分行分行跨省行跨分行跨分行金卡中心区域性网络他行他行跨行全国网络硬加密机返回本节
  • 91. 3.5 非对称加密技术特点: 加密与解密由不同的密钥完成 知道加密算法,从加密密钥得到解密密钥在计算上是不可行的 两个密钥中任何一个都可以用作加密而另一个用作解密 用户拥有自己的密钥对 公钥公开,私钥保密
  • 92. RSA算法介绍1977年由Ron Rivest、Adi Shamir和Len Adleman发明,1978年公布 是一种分组加密算法,而且是应用最广泛的公钥密码算法。 明文和密文在0~n-1之间,n是一个正整数 既能用于加密,也能用于数字签名 只在美国申请专利,且已于2000年9月到期 RSA算法的由来
  • 93. RSA算法介绍 产生密钥对 选择两个大素数p,q, pq 计算n=pq,(n)=(p-1)(q-1) 选择整数e,使得互质gcd(e,(n))=1 计算d  e-1 mod (n) 公钥: KP={e,n}, 私钥: Ks={d,n} 公布n,e; 保密p,q,d, (n) 使用 加密: C = Me mod n 解密: M = Cd mod n RSA密钥生成和应用
  • 94. RSA算法介绍 RSA算法密码体制密钥生成流程选择p,q为互异素数计算n=p*q,(n)=(p-1)*(q-1)选择整数e使e与(n)互质计算d,使满足d*e  1 mod (n)公钥PK={n,e} 私钥SK={n,d}例1: 取P=47,q=71,则 n=p*q=3337, (n)= (p-1)*(q-1)=46*70=3220 随机选取e使e与(n)互质,取e=79,则可以计算出 d=e-1mod (n) = 79-1 mod 3220=1019 则可得: 公钥pk={n,e}={3337,79} 私钥sk={n,d}={3337,1019}
  • 95. RSA算法介绍 RSA算法加密解密加密(用{n,e}) 明文:M < n 密文:C = Me(mod n) 例如: M=688 则密文 C = Me(mod n) = 68879(mod 3337) = 1570解密(用{n,d}) 密文:C 明文:M =Cd (mod n) 例如: C=1570 则密文 M = Cd (mod n) = 15701019(mod 3337) = 688
  • 96. RSA算法介绍 RSA算法加密解密例2: 取P=3,q=11,则 n=p*q=33, (n)=(p-1)*(q-1)=2*10=20 随机选取e使e与(n)互质,取e=3,则可以计算出 d=e-1mod (n) = 3-1mod20=7 则可得: 公钥pk={n,e}={33,3} 私钥sk={n,d}={33,7}
  • 97. RSA算法介绍 RSA的速度由于RSA采用大数运算,同等条件下使得RSA最快的情况也比DES慢100倍。 由于RSA速度远比对称算法(如DES)慢,RSA一般来说只用于少量数据加密。 例如,RSA可用于通信双方交换对称密钥。当交换完成后,可转换到对称密码算法中进行大量的数据加密。
  • 98. 上机作业(1)编写一个用DES函数进行数据加密、解密程序。 要求:输入8个字节的密钥和8个字节的明文数据,输出加密结果;并对加密结果进行解密输出明文。 (2)编写一个RSA算法程序,通过输入或输出来证明该程序的正确性。
  • 99. Thank you very much !本章到此结束,谢谢!返回本章首页结 束