本文接『《图解密码技术》学习笔记之密码(一)』继续补充密码部分的基础知识。

内容概述:

  • 公钥密码
  • 混合密码系统

5. 公钥密码

5.1 密钥配送问题

在对称密码中,由于加密和解密的密钥是相同的,因此必须像接收者配送密钥。用于解密的密钥必须配送给接收者,这一问题称为密钥配送问题。

解决密钥配送问题的方法:

  • 通过事先共享密钥来解决:事先用安全的方式将密钥交给对方。
  • 通过密钥分配中心来解决:有一个密钥分配中心生成通信密钥,每个人只要和密钥分配中心实现共享密钥就可以了。
  • 通过 Diffie-Hellman 密钥交换来解决:发送者和接收者之间相互传递信息,利用这些信息各自生成相同的密钥。
  • 通过公钥密码来解决

5.2 公钥密码

公钥密码(public-key cryptography)(又称非对称密码)中,密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。两者的区别:

  • 发送者只需要加密密钥
  • 接收者只需要解密密钥
  • 解密密钥不可以被窃听者获取
  • 加密密钥被窃听者获取也没问题

解密密钥一开始就是由接收者自己保管,因此只要将加密密钥发给发送者就可以解决密钥配送问题了,而根本不需要配送解密密钥。

公钥(public key):加密密钥可以被任意公开,被称为公钥。

私钥(private key):解密密钥是绝对不能公开的,称为私钥。

公钥和私钥一一对应,一对公钥和私钥统称为密钥对(key pair)。由公钥进行加密的密文,必须使用与该公钥配对的私钥才能够解密。

公钥密码解决了密码配送问题,但我们还需要判断所得到的公钥是否正确合法,并且其处理速度只有对称密码的几百分之一。

5.3 RSA

RSA 是一种公钥密码算法,名字来自三位开发者 Ron Rivest、Adi Shamir 和 Leonard Adleman。RSA 可以被用于公钥密码和数字签名。

RSA 加密公式:$密文 = 明文^EmodN$ ,即 RSA 的密文是对代表明文的数字的 E 次方求 mod N 的结果,这里的 E(Encryption,加密) 和 N(number,数字) 的组合就是公钥。

RSA 解密公式:$明文 = 密文^D modN$ ,即 RSA 的明文是对代表密文的数字的 D 次方求 mod N 的结果,这里d的 D(Decryption,解密)和 N 的组合就是密钥。

RSA 密码对的生成步骤即求 N、L(一个中间数字)、E 和 D 的过程,如下图:

5.4 其他公钥密码

ElGamal 方式:由 Taher ElGamal 设计的公钥算法。RSA 利用了质因数分解的困难度,而 ElGamal 方式则利用了 mod N 下求离散对数的困难度。其缺点是经过加密的密文长度会变成明文的两倍。

Rabin 方式:由 M.O.Rabin 设计的公钥算法。Rabin 方式利用了 mod N 下求平方根的困难度。

椭圆曲线密码(Elliptic Curve Cryptography,ECC):通过将椭圆曲线上的特定点进行特殊的乘法运算来实现,它利用了乘法运算的逆运算非常困难这一特性。

6. 混合密码系统

对称密码无法解决密钥配送问题,公钥密码的处理速度远远低于对称密码并且难以抵御中间人攻击。

混合密码系统(hybrid cryptosystem)是将对称密码和公钥密码的优势相结合的方法。一般情况下,将两种不同的方式组合的做法就称为混合(hybrid)。

混合密码系统的本质是将消息通过对称密码来加密,将加密消息时使用的密钥通过公钥密码来加密。

由于对称密码的密钥一般比消息本身要短,因此公钥密码速度慢的问题就可以忽略了。

混合密码系统的组成机制:

  • 用对称密码加密消息

  • 通过伪随机数生成器生成对称密码加密中使用的会话密钥

  • 用公钥密码加密会话密钥

  • 从混合密码系统外部赋予公钥密码加密时使用的密钥

混合密码系统运用了伪随机数生成器、对称密码和公钥密钥这三种密码技术,正是通过这三种密码技术的结合,才创造出了一种兼具对称密码和公钥密码优点的密码方式。

混合密码系统的加密过程如下:

混合密码系统的解密过程如下:

怎样才是高强度的混合密码系统:

  • 伪随机数生成器:采用算法较佳

  • 对称密码:使用高强度

  • 公钥密码:高强度

密码长度的平衡:对称密码和公钥密码的密钥长度必须具备同等的强度。然而,考虑到长期运用的情况,公钥密码的强度应该要高于对称密码,因为对称密码的会话密钥被破译只会影响本次通信的内容,而公钥密码一旦被破译,从过去到未来的(用相同公钥加密的)所有通信内容就能够被破译了。