From 7d3c937c797920d3215f89b48c4f9333189749b7 Mon Sep 17 00:00:00 2001 From: yjjnls Date: Sun, 8 Jul 2018 14:54:35 +0800 Subject: [PATCH] update crypto content --- Basic/crypto.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Basic/crypto.md b/Basic/crypto.md index 0d2a03d..ba54453 100644 --- a/Basic/crypto.md +++ b/Basic/crypto.md @@ -55,9 +55,14 @@ A把要加密的内容用hash函数生成摘要digest,再用自己的私钥对digest加密,生成数字签名signature。连同加密的内容一起发给B。 -B收到后,对**摘要(用A的公钥解密)**和**内容(用自己的私钥解密)** 都解密,再对内容使用相同hash,看得到的digest是否相同,相同,说明发送的内容没有被修改。 +B收到后,对**摘要digest(用A的公钥解密)**和**内容(用自己的私钥解密)** 都解密,再对内容使用相同hash,看得到的digest是否相同,相同,说明发送的内容没有被修改。 + +>但是如果这里用B的公钥来加密摘要digest,B收到后用自己的私钥解密,这不是也可以验证内容是否被篡改么? + +如果仅仅从防篡改的角度来讲确实可以,但是这样无法验证这些内容是谁发来的!**所以用A的私钥来加密摘要digest,相当于A用自己的私钥给这个摘要digest进行签名,B收到后用A的公钥对digest进行解密还能验证这是不是A发来的内容**。 + +但是这里有个`潜在的问题`。 -同时,用A的公钥对digest进行解密还能验证这是不是A发来的内容,但是这里有个潜在的问题。 >**如果B存储的A的公钥被C替换成了C的公钥,那么C就可以冒充A和B进行通信,而B却完全不知道。** ## 数字证书 @@ -72,7 +77,7 @@ B可以每次都到CA的网站上(或者什么别的官方途径)获得CA的 1. 确认该信息确实是A所发; 2. 确认A发出的信息是完整的。 -* **公钥防泄漏,私钥防篡改** +* **公钥防泄漏,私钥防篡改、防假冒** * B收到后,只有用B自己的私钥才能解密内容,别人是无法解密的。`防泄漏` * 再用上述数字证书来验证数字签名是否来自A,发送内容有没有被篡改。`防篡改` 数字证书一般挂靠在可信任的机构,无法篡改和伪造。