【问题标题】:How to gain access to Asp.Net Core encryption keys?如何访问 Asp.Net Core 加密密钥?
【发布时间】:2017-08-12 06:53:15
【问题描述】:

通过调用提供的 cookie:

await HttpContext.Authentication.SignInAsync("MyCookieMiddlewareInstance", principal);

以加密状态存储。如何获得加密密钥?

重要提示:这个问题源自我关于 cookie 解密的original question。感谢Ron C 和他的出色回答。

【问题讨论】:

  • 鉴于 cookie 在发回时自动为您解密,为什么您认为您需要访问主密钥?
  • @blowdart 我尝试手动解密(在应用程序代码之外)。例如,仅使用密钥和加密值。实际上这个问题是开放的。

标签: security authentication cookies asp.net-core asp.net-core-mvc


【解决方案1】:

获得对密钥的访问权
默认情况下,.net 核心框架会竭尽全力保持密钥的私密性,并帮助开发人员避免处理密钥的任何需要。这很好,因为开发人员很难保证密钥的安全。

也就是说,通过更改配置,您可以轻松访问密钥。

将以下代码行添加到Startup.cs 文件的ConfigureServices 方法中。如果您使用使用会话,请将其添加到AddSession 的行下方:

 services.AddDataProtection().PersistKeysToFileSystem(new DirectoryInfo(keyDirPath));

并将keyDirPath 设置为您希望存储密钥的目录的操作系统绝对路径。该目录不需要已经存在,因为系统会即时创建它。在我的例子中,我将目录设置为一个名为 Keys 的文件夹。这是运行代码一次后的目录,它包含一个密钥文件:

该密钥文件的内容未加密,如下所示:

<?xml version="1.0" encoding="utf-8"?>
  <key id="677f1115-644a-4b11-b045-0c3c51675ef1" version="1">
    <creationDate>2017-03-17T12:21:10.8909291Z</creationDate>
    <activationDate>2017-03-17T12:21:10.8419262Z</activationDate>
    <expirationDate>2017-06-15T12:21:10.8419262Z</expirationDate>
    <descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=1.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
      <descriptor>
        <encryption algorithm="AES_256_CBC" />
        <validation algorithm="HMACSHA256" />
        <masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
          <!-- Warning: the key below is in an unencrypted form. -->
          <value>BMJ6EY5MbcR0vaXhCbHggQcVsuYc6MnMtQpQm0qL647UBVx0YDbZufqQ+2/XuahFfIY2fJ6BIlOl+LYODnLbrA==</value>
        </masterKey>
      </descriptor>
    </descriptor>
  </key>

警告:您不应该将您的密钥以完全不受保护的状态放置在名为 keys 的文件夹中。这样做不是安全最佳做法。但是,如果您想了解安全系统,这是一个有用的练习。

您可以在此处了解有关数据保护服务的更多信息:https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview

【讨论】:

    猜你喜欢
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 2020-03-24
    相关资源
    最近更新 更多