2

我有一个 C++ 客户端/服务器应用程序,其中客户端和服务器是我的可执行文件。每次在客户端和服务器之间建立连接时,我都会为该会话生成一个新的加密密钥,并且我希望传输此会话密钥并使用内置于客户端和服务器中的静态密钥加密此会话密钥。

但是,在我的可执行文件上运行字符串会显示静态键。

如何在我的客户端和服务器应用程序中隐藏嵌入式静态密钥,以便不容易提取它们,从而允许有人解码我的会话密钥。

4

3 回答 3

5

他交换密钥的方法“确保”客户是有效的,而不是冒名顶替者。仅使用 DH 安全地交换密钥不会这样做。为了获得相同的功能,他需要实现一个 PKI 系统。SSL/TLS 就是为此目的而构建的,在它下面将满足他的需要。

您需要为您的服务器创建一个 CA 并签署客户端证书,以确保他们是他们所说的那个人。

于 2010-12-31T22:42:59.420 回答
5

这个问题的解决方案不涉及尝试隐藏密钥(这通常是不可能的)。例如,Diffie-Hellman 密钥交换允许客户端和服务器协商一个新的秘密会话密钥,而无需通过网络发送它。

于 2010-12-31T22:15:09.253 回答
0

因此,您计划使用一种特别难以撤消的方法来隐藏您的秘密(可执行文件中的密钥),该方法只有在您知道该方法的秘密时才能撤消,您还需要使用新的超级秘密方法来隐藏它只有当您知道该方法的秘密时才能撤消该方法,我们需要使用另一种秘密方法来隐藏它,该方法需要我们需要隐藏的另一个秘密......

这是一个“问题溢出”。我希望你能看到你不会用这种方式解决它。为每台计算机生成密钥(ssh/sshd 执行此操作)并保护它们。上面同样的问题实际上也适用,因为如果我得到了那个密钥,它仍然可以玩,但是这样你就不会将它硬编码到你的解决方案中,这意味着修复一个受损的密钥要容易得多。

于 2010-12-31T23:13:29.577 回答