如何保护 Kryonet (SSLSocketChannel)
How to secure Kryonet (SSLSocketChannel)
我有一个使用 Kryonet 的工作游戏服务器 + 客户端系统,我想保护它。我已经阅读了很多 Kryo 和 Kryonet 的源代码,也阅读了一些关于 java.nio(SocketChannels 和 SSL)的内容。我对使用 Java 进行加密有足够的了解,但我不确定在涉及使用 SSL 的 Kryonet 和 SocketChannels 时我是否理解了所有概念。
您可以使用 Blowfish 加密您在 Kryonet 中发送的对象,但我看不出这是安全的吗?我的意思是所有客户端都必须使用相同的对称密钥,因为您没有单独加密客户端连接,而是在服务器上进行序列化,因此所有客户端都需要相同的秘密,它不会再是那个秘密了?
然后我查看了更改 Kryonet 源以使用 SSLSockets,但我看到 Kryonet 使用非阻塞 IO,并且从我读到的内容来看,使用 SSLSocket 而不是 Socket 在使用 SocketChannels 时会不好吗?这是我真正不知所措的地方,不确定是否值得付出努力,所以我希望对 Kryonet 和 SocketChannels 有更多了解的人可以帮助我一点。保护 Kryonet 似乎是不可能的,但我真的不想在我的项目中此时切换,所以非常欢迎任何建议!
你是对的,即使你解决了密钥分发问题,仅仅加密也不安全,除非 Kryonet 也做 SSL 做的所有事情,从对等身份验证开始。
Java中没有SSLSocketChannel
。您必须自己用 SocketChannel
和亲爱的旧 SSLEngine
完成所有艰苦的 yakka,这实际上需要 Ph.D。正确驾驶。
请参阅jsse标签,passim,关于我的SSLEngine
的许多帖子,我不会在这里重复。
我有一个使用 Kryonet 的工作游戏服务器 + 客户端系统,我想保护它。我已经阅读了很多 Kryo 和 Kryonet 的源代码,也阅读了一些关于 java.nio(SocketChannels 和 SSL)的内容。我对使用 Java 进行加密有足够的了解,但我不确定在涉及使用 SSL 的 Kryonet 和 SocketChannels 时我是否理解了所有概念。
您可以使用 Blowfish 加密您在 Kryonet 中发送的对象,但我看不出这是安全的吗?我的意思是所有客户端都必须使用相同的对称密钥,因为您没有单独加密客户端连接,而是在服务器上进行序列化,因此所有客户端都需要相同的秘密,它不会再是那个秘密了?
然后我查看了更改 Kryonet 源以使用 SSLSockets,但我看到 Kryonet 使用非阻塞 IO,并且从我读到的内容来看,使用 SSLSocket 而不是 Socket 在使用 SocketChannels 时会不好吗?这是我真正不知所措的地方,不确定是否值得付出努力,所以我希望对 Kryonet 和 SocketChannels 有更多了解的人可以帮助我一点。保护 Kryonet 似乎是不可能的,但我真的不想在我的项目中此时切换,所以非常欢迎任何建议!
你是对的,即使你解决了密钥分发问题,仅仅加密也不安全,除非 Kryonet 也做 SSL 做的所有事情,从对等身份验证开始。
Java中没有SSLSocketChannel
。您必须自己用 SocketChannel
和亲爱的旧 SSLEngine
完成所有艰苦的 yakka,这实际上需要 Ph.D。正确驾驶。
请参阅jsse标签,passim,关于我的SSLEngine
的许多帖子,我不会在这里重复。