2009-10-19 19 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