安全的服务器-客户端握手方法

Secure server-client handshake method

本文关键字:方法 客户端 服务器 安全      更新时间:2023-10-16

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

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

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

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

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

实际身份验证过程背后的(非常)基本思想是,身份验证客户端发送加密的随机数,只有正确的服务器才能解密并返回,或者让服务器对客户端定义的内容进行签名。为防止中间人攻击,实现身份验证的真实过程稍微复杂一点,但远远超出了这个答案的范围。

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

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