在以下情况下,如果privateKeyOfA被泄漏,安全问题是什么?有人可以在没有privateKeyOfB的情况下解密邮件吗?
Aes.encrypt(privateKeyOfA,publicKeyOfB,消息) Aes.decrypt(publicKeyOfA,privateKeyOfB)
如果没有,我想为什么我们这里需要privateKeyOfA来获得A的签名?
答案 0 :(得分:0)
需要签名,因为接收者必须知道消息来自他可以识别的人。如果他无法验证签名,则意味着他不认识该人。
如果A的私钥被黑客攻破,则他可以向所有人发送消息,并带有模拟A的签名。
答案 1 :(得分:0)
A将使用密钥交换(例如,使用DH或ECDH)将privateKeyOfA + publicKeyOfB
转换为AES密钥。相同的AES密钥也可以由B使用privateKeyOfB + publicKeyOfA
相同地生成。 A和B之间的所有流量都将使用相同的AES密钥进行加密。
假设所有公钥都是已知的(毕竟它们都是公钥),那么有权访问privateKeyOfA的任何人都可以重新生成A生成的所有AES密钥,以便与任何人进行通信。这意味着所有涉及此密钥的流量(A与B或其他任何人发送或接收的消息)都会受到损害。
但是,如果使用了临时版本(例如在TLS的某些模式下),则会为每个会话生成一个新密钥,因此,如果曾经泄露1个密钥,则只会破坏此会话。您可以阅读有关forward secrecy的更多信息。
如果密钥以您描述的方式使用,则它们不用于签名。