将 Strongswan 与 eap-mschapv2 一起使用时,如何在 ipsec.secrets 中存储哈希?

Ole*_*ndr 1 encryption ipsec authentication eap strongswan

eap-mschapv2用作身份验证方法。它需要将纯文本密码存储在ipsec.secrets. 即我有一个这样的密码:

user : EAP "mypassword"
Run Code Online (Sandbox Code Playgroud)

我想使用这样的东西:

user : EAP "34819d7beeabb9260a5c854bc85b3e44"
Run Code Online (Sandbox Code Playgroud)

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

ecd*_*dsa 5

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

另一种方法是使用EAP-GTC,它传输一个明文密码,允许服务器根据散列验证密码(例如,通过使用PAM)。问题在于大多数客户端不支持该方法。

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