gpt4 book ai didi

c# - 机器 key 如何安全轮换?

转载 作者:太空狗 更新时间:2023-10-29 18:00:00 25 4
gpt4 key购买 nike

我们的应用有 <machineKey>设置在 web.config :

<machineKey validation="HMACSHA256" validationKey="some-validationkey" decryption="AES" decryptionKey="some-decryption-key" />

它用于加密/解密 ASP.NET 中内置的许多内容,包括:

  • 表单例份验证票
  • 匿名识别模块门票
  • 防伪 token (在 ASP.NET MVC 中)

如果机器 key 被泄露,则意味着攻击者可以解密所有这些东西。 security best-practice is to rotate your keys often (或者至少当您认为它可能受到损害时)。这需要能够对每段加密数据进行版本控制,以便在需要时进行轮换。

如果您更改机器 key 并重新部署您的网站,您现有的拥有加密数据(例如 cookie、表单字段)的用户很可能会在他们的下一个请求时触发异常,因为数据无法再被解密。例如,AnonymousIdentificationModule会抛出 CryptographicException: Error occurred during a cryptographic operation. .如果 AnonymousIdentificationModule 是完全有意义的没有版本加密/解密的能力。

我正在考虑使用的一种方法是实现自定义 HashAlgorithmSymmetricAlgorithm内置版本控制以委托(delegate)给真正的算法。例如:

  1. CryptoConfig.AddAlgorithm() 注册它们:

    CryptoConfig.AddAlgorithm(typeof(MyCustomHashAlgorithm), "MyCustomHashAlgorithm");
    CryptoConfig.AddAlgorithm(typeof(MyCustomSymmetricAlgorithm), "MyCustomSymmetricAlgorithm");
  2. 更改 <machineKey>使用自定义算法:

    <machineKey validation="alg:MyCustomHashAlgorithm" validationKey="some-validationkey" decryption="alg:MyCustom" decryptionKey="some-decryption-key" />

但是,我担心实现 HashAlgorithmSymmetricAlgorithm .我不想不小心引入安全漏洞,这是一个很容易做到这一点的地方。此外,这感觉像是一个巨大的 hack,因为它确实属于使用算法的地方(我认为)。

另一种方法是重新实现所有使用机器 key 但添加版本控制的功能。无法更改现有的 .NET 类。

您如何在生产中处理这个问题?我知道 StackOverflow 是用 ASP.NET MVC 编写的,那么他们如何处理它?<​​/p>

旁注:出于安全原因,我们实际上不存储 <machineKey>直接在 web.config 中(它在源代码控制之外)。

最佳答案

一个想法是从您的州政府、信用合作社、IRS 等那里吸取教训,并安排停机时间。在应用程序关闭时更改 key 。可能只有午夜五分钟。

现在,您无需编写自定义加密逻辑,而是编写逻辑来通知用户即将到来的停机时间并优雅地结束他们的 session ——这是一项更安全的任务。

关于c# - 机器 key 如何安全轮换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41597395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com