我突然想到 WIF FedAuth cookie 包含身份信息,如果被篡改,可能会允许某人冒充另一个用户的身份。幸运的是,WIF 确实对消息进行了加密验证,但我不明白这是如何完成的。
首先发生什么,身份验证或加密(AtE 还是 EtA?)
身份验证部分是如何实现的
是否有任何其他标准实施了类似的加密?
我突然想到 WIF FedAuth cookie 包含身份信息,如果被篡改,可能会允许某人冒充另一个用户的身份。幸运的是,WIF 确实对消息进行了加密验证,但我不明白这是如何完成的。
首先发生什么,身份验证或加密(AtE 还是 EtA?)
身份验证部分是如何实现的
是否有任何其他标准实施了类似的加密?
基于此链接的第一个答案:
此 cookie 使用与 IIS 应用程序池关联的 DPAPI 密钥进行加密和签名。
供您参考:
DPAPI 提供基本的数据保护功能,可确保受保护数据的机密性,同时允许在密码丢失或更改时恢复基础数据。DPAPI 提供的基于密码的保护非常出色,原因有很多。
- 它使用经过验证的加密例程,例如 CBC 模式下的强 Triple-DES 算法、强 SHA-1 算法和基于 PBKDF2 密码的密钥派生例程。
- 它使用经过验证的加密结构来保护数据。所有关键数据都受到密码完整性保护,秘密数据使用标准方法进行包装。
- 它使用较大的秘密大小来大大降低暴力攻击破坏秘密的可能性。
- 它使用具有 4000 次迭代的 PBKDF2 来增加对手试图破坏密码的工作系数。
- 它会检查 MasterKey 的到期日期。
- 它通过使用相互验证和隐私保护的 RPC 通道来保护与域控制器的所有必需网络通信。
- 它通过从不将它们写入磁盘并最大限度地减少它们在可交换 RAM 中的暴露来最大限度地降低暴露任何机密的风险。
- 它需要管理员权限才能对注册表中的 DPAPI 参数进行任何修改。
- 它使用 Windows 文件保护来帮助保护所有关键 DLL 免受在线更改,即使具有管理员权限的进程也是如此。
现在,对于 Authentication 和 Encryption 之间的顺序,关于这个文档,WIF 似乎首先 Encrypt,然后 Authenticate。