Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java客户机-服务器安全通信_Java_Sockets_Encryption_Client Server - Fatal编程技术网

Java客户机-服务器安全通信

Java客户机-服务器安全通信,java,sockets,encryption,client-server,Java,Sockets,Encryption,Client Server,可能重复: 我正在设计一个客户机-服务器应用程序。我想对整个会话进行加密。我正在考虑以下预研究来实现这一点(使用RSA进行公钥加密,使用AES-128进行对称加密): 客户端连接到服务器并发送“hello”消息。 服务器用它的公钥进行响应。 客户端生成一个128位AES密钥,并用服务器的公钥加密发送。 应用程序协议的其余部分使用AES密钥加密 这个逻辑行吗?有什么缺点吗?使用SSL是可以的还是更好?基本上我关心的是重播攻击和mitm 您所做的是描述SSL的基本思想,由于在实现该方案时可能会犯许

可能重复:

我正在设计一个客户机-服务器应用程序。我想对整个会话进行加密。我正在考虑以下预研究来实现这一点(使用RSA进行公钥加密,使用AES-128进行对称加密):

客户端连接到服务器并发送“hello”消息。 服务器用它的公钥进行响应。 客户端生成一个128位AES密钥,并用服务器的公钥加密发送。 应用程序协议的其余部分使用AES密钥加密


这个逻辑行吗?有什么缺点吗?使用SSL是可以的还是更好?基本上我关心的是重播攻击和mitm

您所做的是描述SSL的基本思想,由于在实现该方案时可能会犯许多小错误,因此使用SSL会更好

正如您所描述的,您的方案是有缺陷的,因为您没有任何方法来验证服务器的公钥。任何人都可以发送它。此外,您如何知道加密的AES密钥实际上是由客户端生成的?任何人都可以拦截公钥。这就是为什么SSL(或现在的TLS)使用信任库和Diffie Hellman等技巧的原因


如果您不想购买,您可以使用自签名证书,您可以在某些带外过程(例如与客户端应用程序一起分发)中信任该证书。

@dseibert我同意,尽管使用SSL代码库创建您自己的解决方案不是一个好主意,除非您是专家(在这种情况下,您无需询问),谢谢!那我就用ssl了!!