#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:
В настоящее время доступно три метода шифрования ключа до его сохранения в хранилище.
- Защитите ключи с сертификатом
- Защитите ключи с помощью DPAPI (убедитесь, что для снятия защиты ключа используется тот же пользователь Windows)
- Защитите ключи с помощью папирования
Например, ваш пример можно было бы расширить ProtectKeysWithDpapi()
следующим образом:
services
.AddDataProtection()
...
.PersistKeysToFileSystem(new DirectoryInfo(@"C:MyDir"))
.ProtectKeysWithDpapi();