如何使用eap-mschapv2使用Strongswan时在ipsec.secrets中存储散列?

我使用eap-mschapv2作为身份validation方法。 它需要在ipsec.secrets存储纯文本密码。 即我有这样的密码:

 user : EAP "mypassword" 

我想用这样的东西:

 user : EAP "34819d7beeabb9260a5c854bc85b3e44" 

是否有可能改变身份validation方法,以便我只在服务器上存储散列,客户端将能够通过纯文本密码进行身份validation?

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

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

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