我打算写一个加密的信使,所以我搜索了网络。但是,大多数代码和教程都没有讨论过这个想法:
对于密钥交换,我们有以下步骤:
1. Alice(客户端)拥有 bob 的证书(服务器),当 Alice 安装程序时,Alice 会生成公钥和私钥。
2. Alice 使用存储在证书中的 Bob 的公钥加密她的公钥,然后将其发送到服务器 (Bob)。
3. Bob 收到加密的客户端密钥,使用他的私钥对其进行解密,然后开始消息会话。
问题是:这个解决方案的有效性如何,它是否足够安全以抵御攻击?
我打算写一个加密的信使,所以我搜索了网络。但是,大多数代码和教程都没有讨论过这个想法:
对于密钥交换,我们有以下步骤:
1. Alice(客户端)拥有 bob 的证书(服务器),当 Alice 安装程序时,Alice 会生成公钥和私钥。
2. Alice 使用存储在证书中的 Bob 的公钥加密她的公钥,然后将其发送到服务器 (Bob)。
3. Bob 收到加密的客户端密钥,使用他的私钥对其进行解密,然后开始消息会话。
问题是:这个解决方案的有效性如何,它是否足够安全以抵御攻击?
您可以使用传输层安全协议 TLS,而不是发明自己的证书交换方案。TLS 通信从握手开始。
来自此处的
图像和 TLS 描述。
每次握手时都不必发送公钥证书,因为它们可能在另一端已经知道。公钥证书通常也可以从颁发的证书颁发机构下载。