使用OpenSSL / AES进行网络加密的说明

诺伯特·波罗斯(Norbert Boros)

我真的很陌生,因此我按照一些教程进行了讲解,并使用C ++编写了一个示例,使用公用密钥和专用密钥对客户端(服务器)之间的数据包进行加密/解密。

结果令人鼓舞,并且运行良好,但是我很困惑,真的很困惑,而且我不会犯错误(特别是在商业环境中)。

现在,请告诉我如何使用加密/解密:

  • 使用公钥加密并使用私钥解密的流量
  • 使用私钥加密并使用公钥解密的流量

我需要了解并知道哪种方法是正确的,这就是我的理解(请不要笑):

**

  • SERVER(使用私钥加密流量)-> CLIENT(使用公钥解密流量)
  • CLIENT(使用公钥加密流量)-> SERVER(使用私钥解密流量)

**

所以我的问题如下:

  • 这是我正确的吗?
  • 公钥是否转到客户端,而私钥是否保留在服务器上?
  • 还会发生其他安全问题吗?

非常感谢

ktul

密码术很复杂,在使用它们之前,您应该完全理解这些协议,尤其是在商业环境中。因此,Ofer Arial是正确的,需要进一步阅读。

但是您问的一件好事,因为您的示例实际上是错误的。这里是更正的版本:

  • A用B的公钥加密流量-> B用B的私钥解密流量
  • B用A的公钥加密流量-> A用A的私钥解密流量

我使用A和B代替服务器和客户端,因为这适用于任何类型的连接:服务器-客户端,客户端-客户端,服务器-服务器。

概述显示服务器和客户端都有自己的密钥对。通常,发送方始终使用接收方的公钥进行加密,而接收方使用自己的私钥进行解密。

您的版本有什么问题?嗯,每个拥有公钥的人都可以读取发送给客户端的流量,因此加密是没有意义的。

除加密外,连接还需要进行身份验证,因此每一方都知道(加密的)消息实际上来自正确的人。因此,密钥对也用于身份验证:

  • A使用A的私钥对流量进行签名-> B验证流量是否使用A的公钥来自A
  • B使用B的私钥对流量进行签名-> A验证流量是使用B的公钥来自B的

使用相同的密钥对同时进行加密和身份验证

  • 私有密钥用于解密签名
  • 公共密钥用于加密验证

现在,A和B如何获取公共密钥,又如何确保获得正确的公共密钥?您要么亲自见面并相互交还,要么使用受信任方的证书

这只是一个简短的答案,但正如已经说过的,有必要进一步阅读。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章