我有一个工作的游戏服务器+客户端系统使用Kryonet,我想保护。我读过很多关于Kryo和Kryonet的源代码,也读过一些关于java.nio (SocketChannels和SSL)的内容。我对使用Java进行加密有足够的理解,但我不确定当涉及到使用SSL的Kryonet和SocketChannels时,我是否正确地理解了所有的概念。
您可以用Blowfish加密您在Kryonet中发送的对象,但我看不到这是安全的吗?我的意思是,所有客户端都必须使用相同的对称密钥,因为您不分别加密客户端连接,而是对服务器上的序列化进行加密,因此所有客户端都需要相同的秘密,而不再是那个秘密了?
然后,我考虑将Kryonet源代码更改为使用SSLSockets,但我看到Kryonet使用非阻塞IO,并且从我所读到的使用SSLSocket而不是套接字的角度来看,在使用SocketChannels时使用SocketChannels并不好吗?这是我真正感到困惑的地方,我不确定这是否值得付出努力,所以我希望一个对Kryonet和SocketChannels更有洞察力的人能帮我一点忙。它似乎不可能获得Kryonet,但我真的不想在这一点上切换在我的项目,所以任何建议都非常欢迎!
发布于 2016-05-24 07:45:55
您是正确的,仅仅加密并不安全,即使您解决了密钥分发问题,除非Kryonet也做了SSL所做的所有事情,首先是对等身份验证。
Java中没有SSLSocketChannel。你必须用SocketChannel和亲爱的老SSLEngine自己做所有的苦差事,这实际上需要博士学位才能正确驾驶。
关于我发布的关于jsse的大量帖子,请参见SSLEngine标签,我将在这里不再重复。
https://stackoverflow.com/questions/37406276
复制相似问题