ASP.NET Ядро DPAPI PersistKeyToFileSystem шифрует ключ

#asp.net-core #dpapi

#asp.net-core #dpapi

Вопрос:

Я использую ASP.NET Основной DPAPI. Используемый ключ в настоящее время не защищен. Я вижу в документах пример, который показывает зашифрованный ключ, но я не могу понять, какие настройки API для этого.

Я использую следующее:

 services
.AddDataProtection()
.SetApplicationName("MyApp")
.SetDefaultKeyLifetime(TimeSpan.FromDays(3))
.PersistKeysToFileSystem(new DirectoryInfo("C:MyDir"));
  

Ниже приведена выдержка из сгенерированного XML-файла:

     <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>123345689...0987654321</value>
      </masterKey>
    </descriptor>
  </descriptor>
  

Я хочу, чтобы сохраненный ключ диска также был зашифрован. Как мне этого добиться?

В этом документе показан пример с зашифрованным ключом. Какие вызовы метода api требуются для генерации файла xml-ключа с зашифрованным ключом?

Ответ №1:

В настоящее время доступно три метода шифрования ключа до его сохранения в хранилище.

Например, ваш пример можно было бы расширить ProtectKeysWithDpapi() следующим образом:

 services
.AddDataProtection()
...
.PersistKeysToFileSystem(new DirectoryInfo(@"C:MyDir"))
.ProtectKeysWithDpapi();