|
|
Опубликовано 15.08.2023 10:21:16
|
|
|
|

Требования: В процессе разработки часто встречаются сценарии шифрования и расшифровки, например, аутентификация электронной почты может содержать зашифрованную строку, и когда пользователь переходит к интерфейсу, система может нормально расшифровать содержимое строк, реализуя функцию аутентификации по электронной почте.
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 для генерации элемента <machineKey>Следующий:Сравните Tailscale, ZeroTier, WireGuard, OmniEdge и Ngrok для геосетевых решений
|