我使用 Cyrus SASL 库编写了一个测试客户端和服务器,并手动强制它选择 GSSAPI 作为机制。在调试时,我打印了在两者之间传递的每条消息的 md5sum。我注意到每次连接时序列似乎都相同。也就是说,如果第一次协商的消息序列是 clientMessage1、serverResponse1、clientMessage2 等... 以成功进行身份验证,如果我重新启动客户端,则会重复相同的 clientMessage1、serverResponse2、clientMessage2 等... 序列。
在我看来,这似乎是一个安全问题。这是正确的行为吗?如果是,我应该将这些通信包装在 TLS 中吗?
答案1
GSSAPI 可以使用任意数量的底层协议。但是,您说得对,如果重复相同的消息,则可能会发生重放攻击。
您知道 GSSAPI 上使用的是什么低级协议吗?