2009-10-19 34 views
1

我已经使用Java中的套接字实现了Kerberos服务器/客户端,客户端将其服务TGT发送到服务器,并且服务器知道客户端是可信的。Java/C#Kerberos inter-op可能吗?

我最关心的是窥探“中间人”攻击。有人可以抓住TGT,并假装成为客户。

在纯Java实现中,这是没有问题的,因为进一步的通信是使用服务会话密钥(GSSContext.wrap()/ GSSContext.unwrap())进行加密的,而snooper不具有这种密钥。

但客户端应用程序需要用C#重写。

我想,我保持加密通信有两个选项:

  1. 写我自己的包()和unwrap()在C#
  2. 使用SSL/TLS方法。

在我考虑SSL作为选项之前,选项1是否可能?

回答

3

选项1涉及一些繁重的代码移植,您可能或不会有时间去做。 选项2听起来不错。

有选项3取决于您的约束,使用私人加密的TCP通道,应该比SSL/TLS更快,但正如我所说的可能不适用。它可以使用对称加密,已通过会话密钥初始化(这是秘密)

+0

我有SSL工作,因为我觉得选项1会很痛苦。我无法真正使用私钥方案,因为可以反编译客户端应用程序以解决问题。 SSL/TLS似乎是要走的路。谢谢 – djb 2009-10-21 12:14:44

+1

非常有帮助。为了澄清,我的意思是对称加密算法可以使用会话密钥作为其秘密。这不会被硬编码,并会在每个会话中改变。 – 2009-10-21 13:38:41