gpt4 book ai didi

java - 客户端已知的客户端-服务器应用程序的加密和身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 13:26:28 24 4
gpt4 key购买 nike

我想编写一个安全的客户端-服务器应用程序,其中只有少数(比如五个)客户端通过 TCP 套接字与服务器交换数据。所有客户端都是预先知道的,并且可以离线共享 key 等。

我想要三样东西:

  1. 客户需要确保他们与正确的服务器对话
  2. 服务器需要确保它只与这五个客户端对话
  3. 通讯需要加密

应该如何实现这样的设置?

我的第一个想法是启用 SSL/TLS 的套接字,但在考虑了一段时间后,我觉得握手中的 key 交换并不是我真正需要的。此外,需要为自签名证书解决的整个证书颁发机构业务似乎不合适。

另一种选择似乎是进行常规套接字通信,并在两端进行加密/解密和签名。与基于 gpg 的电子邮件设置类似,我可以为服务器和每个客户端创建 key 对,并确保服务器拥有所有客户端的所有公钥,并且每个客户端都拥有服务器的公钥。因为我可以将文件本地复制到每台机器,所以可以假定此 key 交换是安全的。

或者我什至应该使用对称加密,所有客户端和服务器都知道一个 key ?

几乎我在网上能找到的所有内容都是关于“经典”设置的,在这种设置中,服务器通过证书颁发机构向许多任意客户端验证自己,即类似 HTTPS 的设置。

我打算用 Java 编写,但实际上我认为我的问题与语言无关。

最佳答案

我建议您使用 TLS。它包含很多所谓的cipher suites ,它们是包含的密码算法的预定义组合,它们确保对等身份验证、非对称 key 交换、对称加密和消息身份验证。它们在现实世界中经过了实战考验。

使用证书:

  • 创建一个自签名 CA 证书并用它签署所有客户端和服务器证书。
  • 将它们配置为仅接受使用您的 CA 签名的证书进行身份验证的对方。

或者,如果您对证书不放心,还有使用预共享 key 身份验证的密码套件(寻找 PSK 和 SRP)。

关于java - 客户端已知的客户端-服务器应用程序的加密和身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28301815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com