|
|
Опубліковано 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(purpose). Це означає, що його легко реалізуватиМультиорендарський режим застосування。
Ось кілька моментів, які варто пам'ятати:
Екземпляри IDataProtectionProvider та IDataProtectorБезпека різьбиЦіль. Метод unprotect полягає в тому, щоб повідомити абонента про невдалу дешифрування шляхом кидання виключення. Клас винятків — 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 storage: PersistKeysToStackExchangeRedis, потрібне посилання: Microsoft.AspNetCore.DataProtection.StackExchangeRedis
Посилання:Вхід за гіперпосиланням видно.
Кластеризований і розподілений
Якщо серверний ключ несумісний, наприклад: шифрування сервера A та розшифрування сервера B, буде кинуто виключення (як показано на рисунку нижче), і потрібно розгорнути той самий ключ.
Налаштуйте той самий ключ наступним чином:
Після запуску програми автоматично створюється файл key-*.xml під папкою publish_itsvse, тримайте цей файл узгодженим на різних серверах! Як показано нижче:
ASP.NET Конфігурація захисту ядра
ASP.NET CORE забезпечує розширену підтримку API, збереження паролів, налаштування та функції налаштування.
- PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Сценарій Azure cloud storage.
- PersistKeysToFileSystem。 Локальна схема зберігання файлової системи, яка фіксує алгоритми шифрування, ключі та залежності.
- ProtectKeysWith*。 Шифрування здійснюється через розширення цього методу іменування. Наприклад, ProtectKeysWithCertificate
- SetDefaultKeyLifetime。 За замовчуванням встановіть термін служби ключа на 90 днів.
- SetApplicationName。 Встановіть назву додатку. За замовчуванням механізми захисту даних абсолютно ізольовані від кожного додатка. Обмін ключами між додатками можна досягти, встановивши одну й ту ж назву додатку.
- DisableAutomaticKeyGeneration。 Запобігти автоматичному відкоту ключа. Часто ми не хочемо, щоб паролі змінювалися або в кластерному сервісі, у нас є виділений сервіс, відповідальний за відкат оновлень ключів, а інші корисні навантаження просто мають отримувати їх із спільного місця.
- UseCryptographicAlgorithms。 Використовуйте власні алгоритми шифрування та дешифрування
Посилання:Вхід за гіперпосиланням видно.
|
Попередній:Використовуйте PowerShell для генерації елемента <machineKey>Наступний:Порівняйте Tailscale, ZeroTier, WireGuard, OmniEdge та Ngrok для геомережевих рішень
|