0

我的客户端-服务器程序使用 OpenSSL 来处理数据交换并且正在工作,但我需要确保我的客户端连接的服务器是正确的服务器而不是假服务器。

问题是我的程序生成了一个自签名证书,而客户端无法通过它进行验证。如果我嵌入了一个证书,任何人都可以提取它,制作一个虚假的客户端服务器并试图窃取信息。OpenPGP 密钥也是如此。

那么,即使服务器二进制文件对所有人都可用,我是否可以实现一些方法来验证服务器,因为它也是客户端?

4

1 回答 1

0

在这种情况下,安全认证不依赖于实际的证书,而是覆盖的密钥对。

非对称密码学依赖于私钥和公钥。私钥必须保密(因此请将其保存在必须进行身份验证的服务器上,即您描述为正确服务器的服务器上)。公钥可以任意传播,唯一能做的就是为私钥持有者加密信息,或者验证他签发的签名。

实际身份验证过程背后的(非常)基本思想是通过身份验证客户端发送加密随机数(只有正确的服务器才能解密和返回)或让服务器签署客户端定义的内容来工作。为了防止中间人攻击,为身份验证实现的实际过程要复杂一些,但远远超出了此答案的范围。

那么,即使服务器二进制文件对所有人都可用,我是否可以实现一些方法来验证服务器,因为它也是客户端?

依赖已经存在的东西,不要自己实现加密代码。如果您已经在分发​​密钥,也许可以考虑使用 TLS 进行加密通信,身份验证将在握手阶段完成。

于 2014-10-31T08:08:45.907 回答