3-密码学基本理论
3.1 密码学概况
1)发展简况
密码学是一门研究信息安全保护的科学,以实现信息的保密性、完整性、可用性及抗抵赖性。
密码学主要由密码编码和密码分析两个部分组成。其中,密码编码学研究信息的变换处理以实现信息的安全保护,而密码分析学则研究通过密文获取对应的明文信息。
早期的密码学主要用于军事和外交通信。密码技术经历了由传统密码学到现代密码学的发展。
传统密码学中的技术主要是换位和置换,这种加密方式易遭到统计分析破译,如字母的频率、字母的组合关系是分析传统密码的基本方法。
1949年,香农发表了著名的论文《保密系统的通信理论》,提出交替使用换位和置换以抵御统计分析,增加了混乱(Confusion)和扩散(Difusion)的密码技术新方法。
20世纪70年代,密码技术出现重大创新变化,一是 Difie-Hellman 算法、RSA 算法的提出开辟了公钥密码学的新纪元;二是美国政府正式发布了数据加密标准(DES),以提供给商业公司和非国防政府部门使用。这些研究成果的出现标志着现代密码学的诞生。之后其他的公钥密码相关方案相继出现,如Rabin 体制、EIGamal 公钥体制、椭圆曲线密码公钥体制以及基于代理编码理论的 MeEliece 体制和基于有限自动机理论的公钥密码体制等。
1984年,针对传统公钥认证和证书管理的问题,Shamir 提出了基于身份的公钥密码系统的思想,简化了证书管理。在这种公钥密码体制的密钥生成过程中,公钥直接为实体的身份信息,例如唯一的身份证号码、电子邮件地址等,因而基于身份的公钥密码体制可以很自然地解决公钥与实体的绑定问题。RSA 算法及 Dife-Hellman 算法的发明者都相继获得了计算机领域的图灵奖。
2005年4月1日起国家施行《中华人民共和国电子签名法》。
2006年我国政府公布了自己的商用密码算法。
2019年《中华人民共和国密码法》草案已经发布。
2)基本概念
明文,密文,加密,解密,加密密钥,解密密钥
3)安全性分析
唯密文攻击(ciphertest-only attack):密码分析者只拥有一个或多个用同一个密钥加密的密文,没有其他可利用的信息
已知明文攻击(known-plaintext attack):密码分析者仅知道当前密钥下的一些明文及所对应的密文
选择明文攻击(chosen-plaintext attack):密码分析者能够得到当前密钥下自己选定的明文所对应的密文
密文验证攻击(ciphertext verification attack):密码分析者对于任何选定的密文,能够得到该密文 "是否合法" 的判断
选择密文攻击(chosen-ciphertext attack):除了挑战密文外,密码分析者能够得到任何选定的密文所对应的明文
3.2 密码体制分类
1)私钥密码体制
又称为对称面膜体制,指广泛应用的普通密码体制,特点是加密和解密使用相同的密钥。
缺陷:密钥分配问题、密钥管理问题以及无法认证源。
虽然私钥密码体制有不足之处,但私钥密码算法处理速度快,人们常常将其用作数据加密处理。目前,私钥密码典型算法有 DES、IDEA、AES 等,其中 DES 是美国早期数据加密标准,现在已经被 AES 取代。
2)公钥密码体制
1976年,W.Dife 和M.E.Helman 发表了《密码学的新方向》一文,提出了公钥密码体制的思想。公钥密码体制又称为非对称密码体制。
其基本原理是在加密和解密的过程中使用不同的密钥处理方式,其中,加密密钥可以公开,而只需要把解密密钥安全存放即可。在安全性方面,密码算法即使公开,由加密密钥推知解密密钥也是计算不可行的。
优点:
- 密钥分发方便
- 密钥保管量少
- 支持数字签名
目前,有三种公钥密码体制类型被证明是安全和有效的,即RSA体制、ELGamal体制及椭圆曲线密码体制。
3)混合密码体制
第一步,消息发送者 Alice 用对称密钥把需要发送的消息加密。
第二步,Alice 用 Bob 的公开密钥将对称密钥加密,形成数字信封。然后,一起把加密消息和数字信封传送给 Bob。
第三步,Bob收到 Alice 的加密消息和数字信封后,用自己的私钥将数字信封解密,获取 Alice 加密消息时的对称密钥。
第四步,Bob使用 Alice 加密的对称密钥把收到的加密消息解开。
3.3 常见密码算法
1)DES
DES(Data Encryption Standard)是数据加密标准的简称,由 IBM 公司研制。DES 是一个分组加密算法,能够支持64比特的明文块加密,其密钥长度为56比特。DES是世界上应用最广泛的密码算法。
2)IDEA
IDEA(Interational Data Encryption Algorithm)是国际数据加密算法的简记,是一个分组加密处理算法,其明文和密文分组都是64比特,密钥长度为128比特。该算法是由来学嘉(X.J.Lai)和 Massey 提出的建议标准算法,已在 PGP 中得到应用。IDEA 算法能够接受 64比特分组加密处理,同一算法既可用于加密又可用于解密,该算法的设计思想是“混合使用来自不同代数群中的运算”
3)AES
1997年美国国家标准技术研究所(NIST)发起征集AES(Advanced EncryptionStandard)算法的活动,并专门成立了 AES工作组,其目的是确定一个非保密的、公开的、全球免费使用的分组密码算法,用于保护下一世纪政府的敏感信息。NIST规定候选算法必须满足下面的要求:
- 密码必须是没有密级的,绝不能像商业秘密那样来保护它;
- 算法的全部描述必须公开披露;
- 密码必须可以在世界范围内免费使用:
- 密码系统支持至少128比特长的分组;
- 密码支持的密钥长度至少为128、192和256比特。
参与 AES 的候选算法中,Riindael提供了安全性、软件和硬件性能、低内存需求以及灵活性的最好的组合,因此NIST确定选择Riindael作为AES。
4)RSA
RSA 算法是非对称算法,由Ronald Rivest、AdiShamir、Leonard Adleman三人共同在 1977年公开发表。在 RSA 加密算法中,公钥和私钥都可以用于加密消息,用于加密消息的密钥与用于解密消息的密钥相反。RSA 算法提供了一种保护网络通信和数据存储的机密性、完整性、真实性和不可否认性的方法。目前,SSH、OpenPGP、S/MIME和SSL/TLS都依赖于 RSA 进行加密和数字签名功能。RSA 算法在浏览器中使用,能够在不可信任的互联网中建立安全连接。RSA 签名验证是网络连接系统中最常见的执行操作之一。
5)国产密码算法
目前,已经公布的国产密码算法主要有SM1分组密码算法、SM2圆曲线公钥密码算法、SM3 密码杂凑算法、SM4分组算法、SM9标识密码算法。各国产商用密码算法的特性统
3.4 Hash 函数与数字签名
1)Hash 函数
杂凑函数简称 Hash 函数,它能够将任意长度的信息转换成固定长度的哈希值(又称数字摘要或消息摘要),并且任意不同消息或文件所生成的哈希值是不一样的。令h表示Hash 函数,则h满足下列条件:
(1) h的输入可以是任意长度的消息或文件M
(2) h的输出的长度是固定的
(3) 给定h和M,计算h(M)是容易的
(4) 给定h的描述,找两个不同的消息M1和M2,使得h(M1)=h(M2)是计算上不可行的
2)Hash 算法
Hash 算法是指有关产生哈希值或杂凑值的计算方法。Hash 算法又称为杂凑算法、散列算法、哈希算法或数据摘要算法,其能够将一个任意长的比特串映射到一个固定长的比特串。常见的 Hash 算法有 MD5、SHA 和 SM3。
1.MD5算法
MD5(Message Digest Algorithm-5)算法是由 Rivest 设计的,于1992年公开,RFC 1321对其进行了详细描述。MD5 以 512位数据块为单位来处理输入,产生128位的消息摘要,即MD5 能产生 128比特长度的哈希值。MD5使用广泛,常用在文件完整性检查。但是,据最新研究表明,MD5的安全性受到挑战,王小云教授及其研究团队提出了Hash函数快速寻找碰撞攻击的方法,相关研究工作表明 MD5 的安全性已经不足。
2.SHA算法
SHA(Secure Hash Algorithm)算法由NIST开发,并在1993年作为联邦信息处理标准公布。SHA-1与MD5的设计原理类似,同样也以512位数据块为单位来处理输入,产生160位的哈希值,具有比 MD5 更强的安全性。SHA算法的安全性不断改进,已发布的版本有SHA-2、SHA-3。SHA 算法产生的哈希值长度有 SHA-224、SHA-256、SHA-384、 SHA-512 等。
3.SM3 国产算法
SM3 是国家密码管理局于2010年公布的商用密码杂凑算法标准。该算法消息分组长度为512 比特,输出杂凑值长度为256比特,采用Merkle-Damgard 结构。
3)数字签名
数字签名(Digital Signature)是指签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果。该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。数字签名的目的是通过网络信息安全技术手段实现传统的纸面签字或者盖章的功能,以确认交易当事人的真实身份,保证交易的安全性、真实性和不可抵赖性。数字签名具有与手写签名一样的特点,是可信的、不可伪造的、不可重用的、不可抵赖的以及不可修改的。
数字签名至少应满足以下三个条件:
- 非否认
- 真实性
- 可鉴别性
一个数字签名方案一般由签名算法和验证算法组成。签名算法密钥是秘密的,只有签名的人掌握;而验证算法则是公开的,以便他人验证。典型的数字签名方案有RSA 签名体制、Rabin签名体制、EIGamal签名体制和DSS(Data Signature Standard)标准。签名与加密很相似,一般是签名者利用秘密密钥(私钥)对需签名的数据进行加密,验证方利用签名者的公开密钥(公钥)对签名数据做解密运算。签名与加密的不同之处在于,加密的目的是保护信息不被非授权用户访问,而签名是使消息接收者确信信息的发送者是谁,信息是否被他人篡改。
基本流程:
第一步,Alice 使用 Hash函数将电子合同文件生成一个消息摘要
第二步,Alice 使用自己的私钥,把消息摘要加密处理,形成一个数字签名
第三步,Alice把电子合同文件和数字签名一同发送给Bob
Bob收到 Alice发送的电子合同文件及数字签名后,为确信电子合同文件是 Alice 所认可的,验证步骤如下:
第一步,Bob 使用与 Alice 相同的 Hash 算法,计算所收到的电子合同文件的消息摘要
第二步,Bob 使用 Alice 的公钥,解密来自 Alice 的加密消息摘要,恢复 Alice 原来的消息摘要
第三步,Bob比较自己产生的消息摘要和恢复出来的消息摘要之间的异同。若两个消息摘要相同,则表明电子合同文件来自Alice。如果两个消息摘要的比较结果不一致,则表明电子合同文件已被篡改。
3.5 密码管理与数字证书
1)密码管理
1.密钥管理
密钥生成、密钥存储、密钥分发、密钥使用、密钥更新、密钥撤销、密钥备份、密钥恢复、密钥销毁、密钥审计
2.密码管理政策
《商用密码管理条例》
《中华人民共和国密码法》
3.密码评测
2)数字证书
数字证书(Digital Certifcate)也称公钥证书,是由证书认证机构(CA)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。
为规范数字证书的格式,国家制定了《信息安全技术公钥基础设施数字证书格式》(征求意见稿)。
数字证书按类别可分为个人证书、机构证书和设备证书,按用途可分为签名证书和加密证书。其中,签名证书是用于证明签名公钥的数字证书。加密证书是用于证明加密公钥的数字证书。
当前,为更好地管理数字证书,一般是基于PKI技术建立数字证书认证系统(简称为CA)。CA 提供数字证书的申请、审核、发、查询、发布以及证书吊销等全生命周期的管理服务。
3.6 安全协议
1)Diffie-Hellman 密钥交换协议
2)SSH
SSH是Secure Shell 的缩写,即“安全外壳”,它是基于公钥的安全应用协议,由SSH传输层协议、SSH用户认证协议和SSH连接协议三个子协议组成,各协议分工合作,实现加密、认证、完整性检查等多种安全服务。
3.7 密码学网络安全应用
1)密码技术常见应用场景类型
2)路由器安全应用参考
3)Web 网站安全应用参考
4)电子邮件安全应用参考