1

我正在开发一个收集环境信息并将其数据发送回单个服务器进行处理的电路板。与该服务器的唯一连接将由最终投入现场的板建立。大部分开发已经完成,但现在我想尝试保护所有连接。速度至关重要,因为数据是实时敏感的,并且板上有一个相当小的处理器 (8Mhz)。由于我对它有如此严格的控制,我想在 WiFi 芯片和接受连接的基于 Java 的服务器之间共享相同的私钥。这有望让我通过 SSL 解密和加密消息,而无需在每次连接其中一个板时都经过握手过程。正确的?

我已经尝试了几天没有运气。但在我深入兔子洞之前,我想确保这甚至是可能的。谢谢,任何建议将不胜感激。

4

1 回答 1

5

您似乎对 SSL/TLS 的工作原理感到困惑。

在握手期间,服务器出示其证书(除非使用匿名密码套件)以向客户端证明其身份,然后与客户端商定共享密钥(通过交换预主密钥)。握手完成后,仅使用共享密钥进行加密。(这里有更多细节。)

服务器的私钥用于向客户端证明其身份(通过其证书)。这样做的目的是防止 MITM 攻击。

将服务器的私钥提供给客户端只会允许任何客户端冒充服务器。

您无法真正避免握手,如果您进行多个连续连接,您也可以使用会话恢复。您还可以使用 TLS PSK(预共享密钥)密码套件(共享对称密钥,而不是私有密钥),但它们在 Oracle JSSE 提供程序中不可用。

于 2013-02-07T22:38:06.357 回答