读书会 第五章 公钥密码—用公钥加密,用私钥解密(备课)

5.1 投币机物柜的使用方法

公钥密码在现实生活中的应用。

硬币是关闭寄物柜的密钥,而钥匙则是打开寄物柜的密钥。

关闭寄物柜是加密,使用的是公钥;
打开寄物柜则是解密,使用的是私钥。

公钥是公开的,任何人都可以获得;私钥是保密的,需要解密的人才能拥有。

解释对称加密和分对称加密

5.2 本章学习的内容

在密码学历史上有两种数据加密的方式:对称加密和非对称加密。

对称加密也称作共享密钥,这里的共享是信息发送者和接受者两方共享,他们使用相同的密钥进行加密和解密,其他人不知道(其他人有可能会获取)。

这个可能性就是在密钥的配送过程被其他人截获。

非对称加密也称作公开密钥。这里的公开是指公钥的公开,每个人都知道。但是私钥只有数据的接收者拥有。

私钥不需要配送,更安全。

5.3 密钥配送问题


5.3.1 什么是密钥配送问题

如何理解P104第一句话“当然,如果窃听者 E 无法推测出通信中使用的是什么密码算法,那么即便得到了密文和密钥也是无法解密的”?

例如我们输入的1,然后通过1+2=3这个算法,得到密文就是3,其中这2就是密钥,这个算法就是密码算法,当密文3传输给后台后,后台就得进行解密,解密算就是3-2=1,然后得到输入密码1。

这里如果我们不知道1+2=3,也不知道3-2=1,那么就无法知道明文1。


密钥必须要发送,但又不能发送。
不发送密钥,接收者无法解密,也就不知道你要传输的数据;发送吧,又怕窃密者截获密钥。

这就是对称密码的密钥配送问题。

我们既要沟通,又要防止密钥传输的时候密钥被截获,咋办?只有首先要解决密钥配送的问题,如何配送密钥能够不被截获。

解决密钥配送问题的方法有以下几种?

  • 通过事先共享密钥来解决;
  • 通过密钥分配中心来解决;
  • 通过 Diffie-hellman (棣弗-赫尔曼,两个人名的组合,他俩共同发明的一个算法)密钥交换来解决;
  • 通过公钥密码来解决

思考一个问题:这些方法真的解决密钥配送的问题了吗?如果解决了,为什么还需要非对称加密算法?


5.3.2 通过事先共享密钥来解决

是先共享密钥尽管有效,但却有一定的局限性。


5.3.3通过密钥分配中心来解决

解释密钥分配中心工作流程和原理,并解释小测验的问题。

弊端:
1、单点故障的风险大大增加。如果密钥分配中心发生故障,则所有人都无法进行加密通信;
2、攻击者可能会攻击密钥分配中心下手,一旦得手,那么所有人的加密通信都会被破译。

使用公钥加密,通信实体越多,密钥管理越简单。哪怕有一万人之间进行通信,那么每个人只需要一对密钥对(公钥和私钥)就可以了。不需要关心其他人密钥。

小测验。。。。。。。


5.3.4 通过 diffie-Hellman 密钥交换来解决密钥配送问题

自己看第11章


5.3.5 通过公钥密码来解决密钥配送问题

上面三种方法都是对称加密,需要传递密钥。
使用非对称加密算法(即公钥密码),不需要传递密钥。

小测验2.。。。。

这个其实就是5.4节的内容。


5.4 公钥密码


5.4.1 什么是公钥密码

第一节已经介绍。此处不在说了。


5.4.2 公钥密码的历史

自己了解一下。


5.4.3 公钥通信的流程

流程在第一节已经说了,文字部分这里不看了,直接看图5-2吧。


5.4.4 各种术语

对称加密也叫共享密钥;

非对称加密也叫公开密钥。
非对称加密有一对密钥:公钥(public key)和私钥(private key)


5.4.5 公钥密码无法解决的问题

这一节列举了两个公钥密码无法解决的问题:
1、公钥认证问题;这个问题是通过“证书颁发机构(CA)”来解决。
2、解密效率低的问题。

这两个问题都会在后面的章节进行介绍,这里先不说了,感兴趣的先预习一下。

5.5 时钟运算

5.5.1 加法

总结:

  • 时钟的指针向右旋转相当于做加法;
  • 不过,我们做的不是单纯的加法,而是“除法求余数”。
5.5.2 减法

时钟只能向右转,不能反过来向左转,也就是说时钟是能做加法,那减法怎么办呢?
我们将减法转换为加法。

看例题和表5-1.

5.5.3 乘法

乘法相当于加法的多次重复。

5.5.4 除法

既然减法是加法的逆运算,那么除法也就可以看成是乘法的逆运算。

这个解释起来还有点麻烦。


5.5.5 乘方

乘法是加法的多次重复运算,乘方是乘法的多次重复运算。

5.5.6对数

乘方的逆运算称为对数。

5.5.7 从时钟指针到 RSA

通过上面的内容如果你能知道“7的4次方 mod 12”的意思就是“求7的4次方除以12的余数”就可以了。

5.6 RSA


5.6.1 什么是 RSA

RSA 是一种公钥密码算法。
RSA 可以被用于公钥密码和数字签名。

疑问:是不是所有的非对称加密算法都可以用于数字签名?

5.6.2 RSA 加密

RSA加密过程很简单,公式就是方框里面。


RSA 加密公式

公式中出现了两个数字 E 和 N,因此任何人知道这两个数字都可以完成加密运算。也就是说,E 和 N 的组合就是公钥。

E 和 N 的组合才是一个公钥,用来进行数据加密。

5.6.3 RSA 解密

RSA 的解密公式如下:


RSA 解密公式

D 和 N 的组合就是私钥,用来数据解密。


5.6.4 生成密钥对

RSA的加密是求“E 次方的 mod N”,解密是求“D 次方的 mod N ”


5.7 对 RSA 的攻击

任何一件新生事物的诞生,都会遭到质疑,这并不一定都是坏事情,就是因为这些质疑,新生事物才会更好更完善。

RSA 至今还未被证明是安全的,但是也没被证明是不安全的。目前公钥加密算法中使用最广泛的就是 RSA。

这一节主要是讨论破译 RSA 的一些可能方法。

5.7.1 通过密文来求得明文

本节最后一句话表明了这个方法的不可行性。

5.7.2 通过暴力破解来找出 D

RSA 算法的安全性基千大素数分解的困难性。如果攻击者可以分解已知的 n, 得到 p 和 q, 然后可得到 z, 最后用 Euclid 算法,由 e 和 z 得到 d。然 而要分解 200 位的数,需要 40 亿年; 分解 500位的数,则需要 1025年。

所以说,不可能在现实的时间内通过暴力破解找出数 D。

5.7.3 通过 E 和 N 求出 D

本节最后一句话说明了这个方法本身的不可行性。

5.7.4 中间人攻击

第一段说了:这种方法不能破译 RSA,但却是一种针对机密性的有效攻击。

看图5-6


5.8 其他公钥密码

仅做了解,不讲了。


5.9 关于公钥密码的 Q&A

列举了一些常见问题,并给出了解答,感兴趣的自己看。

推荐阅读更多精彩内容