当使用带有 eap-mschapv2 的 Strongswan 时,如何在 ipsec.secrets 中存储哈希?

当使用带有 eap-mschapv2 的 Strongswan 时,如何在 ipsec.secrets 中存储哈希?

我使用eap-mschapv2作为一种身份验证方法。它要求将纯文本密码存储在 中ipsec.secrets。例如,我有一个这样的密码:

user : EAP "mypassword"

我想使用这样的东西:

user : EAP "34819d7beeabb9260a5c854bc85b3e44"

是否可以更改身份验证方法,以便我只在服务器上存储哈希值,而客户端能够通过纯文本密码进行身份验证?

答案1

经典的基于质询-响应的 EAP 方法(尤其是 strongSwan 支持的方法)需要访问明文密码来验证客户端的响应(EAP-MSCHAPv2 实际上是例外,见下文)。IKEv2 有基于密码的质询-响应身份验证方案,不需要存储明文密码(基于零知识密码证明),例如 AugPAKE(RFC 6628)或 PACE(RFC 6631) 以及一些 EAP 方法,例如 EAP-EKE (RFC 6124) 也允许这样做,但是 strongSwan 目前不支持其中任何一个。

另一种方法是使用EAP-GTC,它传输一个明文密码,允许服务器根据哈希值验证密码(例如使用聚丙烯酰胺)问题在于大多数客户端不支持该方法。

对于 EAP-MSCHAPv2,实际上可以将密码存储为 NT-Hash(UTF16 编码密码的 MD4 哈希值),请参阅NTLM 关键字对于 ipsec.secrets。但这并没有增加多少安全性。

相关内容