我已经使用 Java 中的套接字实现了一个 Kerberos 服务器/客户端,客户端将他的 service-TGT 发送到服务器,并且服务器知道客户端是真实的。
我主要担心的是窥探“中间人”攻击。有人可以捕获 TGT,并伪装成客户。
在纯 Java 实现中,这没有问题,因为进一步的通信是使用服务会话密钥 (GSSContext.wrap()/GSSContext.unwrap()) 加密的,而窥探者没有。
但是客户端应用程序需要用 C# 重新编写。
我认为保持通信加密的两个选项是:
- 用 C# 编写我自己的 wrap() 和 unwrap() 方法
- 使用 SSL/TLS。
在我将 SSL 作为一个选项之前,选项 1 是否可能?