Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 2915|Ответ: 0

[Источник] ASP.NET Core (22) основан на защите данных IDataProtectionProvider

[Скопировать ссылку]
Опубликовано 15.08.2023 10:21:16 | | | |
Требования: В процессе разработки часто встречаются сценарии шифрования и расшифровки, например, аутентификация электронной почты может содержать зашифрованную строку, и когда пользователь переходит к интерфейсу, система может нормально расшифровать содержимое строк, реализуя функцию аутентификации по электронной почте.

Генерируйте элементы с помощью PowerShell <machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Шифруйте данные с помощью ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET Роль машинного ключа и как её использовать
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core предлагает функции защиты данных:Вход по гиперссылке виден.

Основной пакет

Основные пакеты, участвующие в защите данных, следующие, по мере необходимости ссылаются:

  • Стандарт Microsoft.AspNetCore.DataProtection.Abstractions. Название компонентов на уровне абстракции NET CORE. Он включает основные интерфейсные сервисы, такие как IDataProtectionProvider и IDataProtector.
  • Microsoft.AspNetCore.DataProtection, включая ключевые криптографические операции, управление ключами, конфигурацию и расширяемость.
  • Расширение Microsoft.AspNetCore.DataProtection.Extensions. Предоставляет заводской метод создания экземпляров и метод расширения хранения для ключей. Этот пакет используется в режиме без DI.
  • Microsoft.AspNetCore.DataProtection.SystemWeb реализует <machineKey>совместимость с механизмами шифрования и расшифровки в ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation предоставляет реализацию процедуры хеширования паролей PBKDF2. Используйте его, когда нужно использовать хеш-шифрование.


IDataProtectionProvider против IDataProtector

IDataProtectionProvider основан на модели Provider от Microsoft и используется для создания политик создания экземпляров. Создайте объект IDataProtector, вызвав метод IDataProtectionProvider.CreateProtector(purpose).
IDataProtector — это сервис, отвечающий за шифрование и расшифровку, который в основном предоставляет два типа методов: защиту и снятие защиты (каждый тип имеет множество методов перегрузки и расширения). Простое понимание таково: protect используется для шифрования, а unprotect — для расшифровки.
Параметр метода Create от IDataProtectionProvider — это строка, обеспечивающая функцию изоляции. IDataProtectors, созданные с непроходимыми строками, получат разные результаты шифрования, даже если они шифруют один и тот же объект. Сам IDataProtector также является неявным IDataProtectionProvider, который также предоставляет метод CreateProtector(цель). Это означает, что его можно легко реализоватьРежим многоарендаторных приложений



Вот несколько моментов, которые стоит помнить:

Экземпляры IDataProtectionProvider и IDataProtectorБезопасность резьбыЦель.
Метод снятия защиты заключается в том, чтобы уведомить звонящего, что расшифровка провалилась, выбрасывая исключение. Класс исключений — CryptographicException.

ASP.NET Core — это простая в использовании защита данных

Добавлен новый интерфейс для шифрования и расшифровки данных, код выглядит следующим образом:

Тест выглядит следующим образом:



IDataProtectionProvider — это одиночный паттерн со следующим кодом:Вход по гиперссылке виден.



Управление ключами

Если пользовательский профиль доступен, ключ сохраняется до%LOCALAPPDATA%\ASP.NET\DataProtection-Keysпапка. Если операционная система — Windows, ключ шифруется в состоянии покоя с помощью DPAPI. Как показано ниже:



Ключевая жизнь

По умолчанию ключЖизненный цикл — 90 дней。 Когда срок действия ключа истекает, приложение автоматически генерирует новый ключ и устанавливает новый ключ как активный. Пока деактивированные ключи остаются в системе, ваше приложение может расшифровать любые данные, защищённые ими. Для получения дополнительной информации см. раздел «Управление ключами».Вход по гиперссылке виден.

Алгоритм по умолчанию

Стандартные алгоритмы защиты от нагрузки — AES-256-CBC (для конфиденциальности) и HMACSHA256 (для подлинности). 512-битный мастер-ключ, который меняется каждые 90 дней, используется для получения двух подключей для этих алгоритмов на основе каждой полезной нагрузки.

ASP.NET поставщик хранения ключей в Core

Файловая система: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, which requires reference: Azure.Extensions.AspNetCore.DataProtection.Blobs
Хранилище Redis: PersistKeysToStackExchangeRedis, требуется ссылка: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Ссылка:Вход по гиперссылке виден.

Кластеризация и распределение

Если серверный ключ несогласован, например: шифрование сервера A и расшифровка сервера B, будет создано исключение (как показано на рисунке ниже), и необходимо развернуть тот же ключ.



Настройте тот же ключ следующим образом:

После запуска программы автоматически генерируется файл key-*.xml под папкой publish_itsvse, держите этот файл последовательным на разных серверах! Как показано ниже:



ASP.NET Конфигурация защиты ядра

ASP.NET CORE предоставляет расширенную поддержку API, сохранение паролей, функции настройки и настройки.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Сценарий облачного хранения Azure.
  • PersistKeysToFileSystem。 Схема локального хранения файловой системы, которая фиксирует алгоритмы шифрования, ключи и зависимости.
  • ProtectKeysWith*。 Шифрование осуществляется через расширения этого метода именования. Например, ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 По умолчанию установите срок службы ключа на 90 дней.
  • SetApplicationName。 Задайте название приложения. По умолчанию механизмы защиты данных абсолютно изолированы от каждого приложения. Обмен ключами между приложениями можно реализовать, установив одно и то же имя.
  • DisableAutomaticKeyGeneration。 Предотвратите автоматический откат ключа назад. Часто мы не хотим, чтобы пароли менялись или находились в кластерном сервисе, у нас есть выделенный сервис, отвечающий за откат обновлений ключевых ключей, а другим полезным нагрузкам просто нужно получать их из общего места.
  • UseCryptographicAlgorithms。 Используйте пользовательские алгоритмы шифрования и расшифровки


Ссылка:Вход по гиперссылке виден.





Предыдущий:Используйте PowerShell для генерации элемента &lt;machineKey&gt;
Следующий:Сравните Tailscale, ZeroTier, WireGuard, OmniEdge и Ngrok для геосетевых решений
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com