Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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 Роль machineKey та як ним користуватися
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(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 для генерації елемента &lt;machineKey&gt;
Наступний:Порівняйте Tailscale, ZeroTier, WireGuard, OmniEdge та Ngrok для геомережевих рішень
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com