密码学入门

293 阅读9分钟

密码学入门

对称密钥加密

常见的对称加密算法有 DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES。

什么是对称加密?

对称加密就是指,加密和解密使用同一个密钥的加密方式。

对称加密的工作过程

发送方使用密钥将明文数据加密成密文,然后发送出去,接收方收到密文后,使用同一个密钥将密文解密成明文读取。

对称加密的优点

加密计算量小、速度块,适合对大量数据进行加密的场景。

对称加密的两大不足

  • 密钥传输问题:由于对称加密的加密和解密使用的是同一个密钥,所以对称加密的安全性就不仅仅取决于加密算法本身的强度,更取决于密钥是否被安全的保管,因此加密者如何把密钥安全的传递到解密者手里,就成了对称加密面临的关键问题。
  • 密钥管理问题:比如我们在加密用户的信息时,不可能所有用户都用同一个密钥加密解密吧,这样的话,一旦密钥泄漏,就相当于泄露了所有用户的信息,因此需要为每一个用户单独的生成一个密钥并且管理,这样密钥管理的代价也会非常大。如果有 N 个节点, 每个节点都要和其他所有 N-1 个节点进行安全对话,总共大概会有 n2n^2 个保密密钥: 这将是一个管理噩梦。

非对称密钥加密

什么是非对称加密?

非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。常用的非对称加密算法 RSA。

非对称加密的工作过程

  • 通信双方在通信之前,都要生成一对密钥对。公钥发送给对方,私钥留在自己手里。
  • 甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。

非对称加密的优点

  • 加密具有双向性,即公钥和私钥中的任一个均可用作加密,此时另一个则用作解密。
  • 根据公钥无法推导出私钥。
  • 算法强度复杂,安全性依赖于算法与密钥。

非对称加密的不足

  • 加密和解密花费时间长、速度慢,只适合对少量数据进行加密
  • 公钥认证问题难。消息发送者无法认证收到的公钥的确是目标客户发送的公钥,中间有可能被攻击者拦截,替换成了自己的公钥,然后发送者接收了攻击者的公钥,之后所有的信息都对攻击者透明了。
  • 无法避免中间人攻击,因为公钥是公开的,中间人可以把信息拦截并篡改后再发送。

关于中间人攻击

  • Tom生成密钥(a_pri/a_pub), Bob生成密钥(b_pri/b_pub)两者都公开公钥 a_pub和 b_pub为了相互传递信息. 第三人(窃听者)也生成密钥(ca_pri/ca_pub)和(cb_pri/cb_pub) 生成两对.
  • 首先John(窃听者)会把Tom的公钥 a_pub截取保存, 再把自己的 ca_pub发给Bob, 然后Bob的公钥 b_pub截取保存, 再把自己的 cb_pub发给Tom. 他们两者都会认为自己拿到的公钥是对方的.
  • 此时Tom和Bob相互传递自认为对方的公钥(实际是窃听者John的)加密后的信息发给对方, John在两边接收密文通过自己的私钥(ca_pri, cb_pri)解密, 再发给各方完美扮演了中间人的角色.

混合加密系统

什么是混合加密?

加密流程
  1. 通信双方各生成一对非对称密钥对,并将公钥发送给对方。
  2. 发送者利用一个随机数生成器生成一个对称加密算法的会话密钥。
  3. 使用会话密钥加密报文消息,得到报文消息密文
  4. 使用接收者的公钥加密会话密钥,得到会话密钥密文。
  5. 发送者组合报文消息密文和会话密钥密文并发送给接收者。
解密流程
  1. 接收者分离密文,得到报文消息密文和会话密钥密文。
  2. 用私钥解密会话密钥密文,得到会话密钥。
  3. 用会话密钥解密报文消息密文,得到报文消息。

混合加密系统的优势

  1. 利用对称加密算法的加解密速度,解决非对称加解密的速度问题。
  2. 利用非对称加密算法的“非对称性”,解决对称密钥的传递问题。

混合加密系统的不足

  • 公钥认证问题
  • 无法避免中间人攻击,篡改信息

数字签名

什么是数字签名?

数字签名是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名是非对称密钥加密技术数字摘要技术的应用。

在数字签名技术中,私钥用来加密,公钥用来解密。

数字签名的工作过程

数字签名

  • 签名方 A 生成非对称密钥对 public-key、private-key

  • A 向消息接收方 B 发送公钥 publi-key

  • A 将消息的定长摘要用 private-key 加密,生成数字签名,将消息和签名发送给 B

  • B 采用 public-key 解密数字签名,取得消息的摘要,B 自己对消息计算摘要,看两个摘要是否相同

数字签名的优点

  • 防冒充(伪造),私有密钥只有签名者自己知道,所以其他人不可能构造出正确的
  • 可鉴别身份
  • 防篡改(防破坏信息的完整性),避免了中间人攻击
  • 防重放攻击
  • 防抵赖

总的来说:保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生

数字签名的不足

  • 公钥认证问题

数字证书

什么是数字证书?

对数字签名所发布的公钥进行权威的认证,便是证书。证书可以有效地避免中间人攻击的问题。

数字证书是一个经证书授权中心CA数字签名的包含公开秘钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。

数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA(例如中国各地方的CA公司)中心签发的证书,也可以由企业级CA系统进行签发。

以数字证书为核心的加密技术(加密传输、数字签名、数字信封等安全技术)可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性及交易的不可抵赖性。使用了数字证书,即使您发送的信息在网上被他人截获,甚至您丢失了个人的账户、密码等信息,仍可以保证您的账户、资金安全。

常见名词解释

  • PKC:Public-Key Certificate,公钥证书,简称证书。
  • CA:Certification Authority,认证机构。对证书进行管理,负责 1.生成密钥对、2. 注册公钥时对身份进行认证、3. 颁发证书、4. 作废证书。其中负责注册公钥和身份认证的,称为 RA(Registration Authority 注册机构)
  • PKI:Public-Key Infrastructure,公钥基础设施,是为了更高效地运用公钥而制定的一系列规范和规格的总称。比较著名的有PKCS(Public-Key Cryptography Standards,公钥密码标准,由 RSA 公司制定)、X.509 等。PKI 是由使用者、认证机构 CA、仓库(保存证书的数据库)组成。
  • CRL:Certificate Revocation List 证书作废清单,是 CA 宣布作废的证书一览表,会带有 CA 的数字签名。一般由处理证书的软件更新 CRL 表,并查询证书是否有效。

数字证书的基本内容

证书至少需要包括如下内容:

  • 颁证机构
  • 证书持有者的名字
  • 证书持有者的公钥
  • 证书有效期
  • 证书颁发机构的签名

数字证书的使用步骤

数字证书颁发过程

数字证书颁发过程一般为:用户首先产生自己的秘钥对,并将公共密钥及部分个人身份信息传送给认证中心CA。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来。然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。

认证机构的层级

认证机构层级

对于认证机构的公钥,可以由其它的认证机构施加数字签名,从而对认证机构的公钥进行验证,即生成一张认证机构的公钥证书,这样的关系可以迭代好几层,一直到最高一层的认证机构时该认证机构就称为根CA,根CA会对自己的公钥进行数字签名叫做自签名