找不到有关对等方之间的通信方式的任何流程图。我知道在启用PAP的Radius中它是如何工作的,但是似乎要使用MS-Chapv2进行大量工作。

我正在尝试开发RADIUS服务器来接收和验证用户请求。请以信息而非代码的形式帮助我。

最佳答案

MSCHAPv2非常复杂,通常在其他EAP方法(例如EAP-TLS,EAP-TTLS或PEAP)中执行。这些外部方法使用TLS加密MSCHAPv2交换。例如,下图显示了PEAP流程图,其中客户端或请求者与RADIUS服务器(身份验证服务器)建立TLS隧道并执行MSCHAPv2交换。

MSCHAPv2交换本身可以总结如下:

  • AS首先生成一个16字节的随机服务器质询,然后将其发送给请求方。
  • 请求者还会生成一个随机的16字节对等挑战。然后,根据用户密码计算质询响应。该质询响应将与对等质询一起发送回AS。
  • AS检查质询响应。
  • AS根据密码和对等体挑战计算对等体挑战响应。
  • 请求方检查对等质询响应,从而完成MSCHAPv2身份验证。

  • 如果您想了解所涉及的细节和精确计算,请随时查看我的论文here。第4.5.4节和第4.5.3节应包含您需要的所有信息,以实现能够执行MSCHAP交换的RADIUS服务器。

    从图中可以看出,派生和使用了许多不同的键。 This document提供了对其功能的非常直观的了解。但是,本文档未解释CSK。该 key 可选地用于“加密绑定(bind)”,即为了向AS证明TLS隧道和MSCHAPv2交换均由同一个对等方执行。可以仅从TLS主 key 派生MSK,但是您将很容易受到中继攻击(本文还包含一份研究报告,其中提供了此类攻击的示例)。

    最后,the asleap readme给出了MSCHAPv2协议(protocol)的另一个良好且通用的逐步说明,这可能会进一步帮助您。

    09-05 19:33