|
|
Veröffentlicht am 15.08.2023 10:21:16
|
|
|
|

Anforderungen: Während des Entwicklungsprozesses können Sie häufig auf einige Verschlüsselungs- und Entschlüsselungsszenarien stoßen, zum Beispiel kann die E-Mail-Authentifizierung eine verschlüsselte Zeichenkette tragen, und wenn der Benutzer auf den Link klickt, um zur Schnittstelle zu wechseln, kann das System den Inhalt der Zeichenkette normal entschlüsseln und so die E-Mail-Authentifizierungsfunktion aktivieren.
ASP.NET Core bietet Datenschutzfunktionen:Der Hyperlink-Login ist sichtbar.
Hauptpaket
Die wichtigsten im Datenschutz verwendeten Pakete sind wie folgt, die bei Bedarf referenziert werden:
- Microsoft.AspNetCore.DataProtection.Abstractions-Standard. Benennung von NET CORE-Abstraktionsschicht-Komponentenpaketen. Es umfasst wichtige Schnittstellendienste wie IDataProtectionProvider und IDataProtector.
- Microsoft.AspNetCore.DataProtection, einschließlich der Kern-Kryptografieoperationen, Schlüsselverwaltung, Konfiguration und Erweiterbarkeit.
- Microsoft.AspNetCore.DataProtection.Extensions-Erweiterung. Bietet eine Factory-Methode zur Erstellung von Instanzen und eine Speichererweiterungsmethode für Schlüssel. Dieses Paket wird im Nicht-DI-Modus verwendet.
- Microsoft.AspNetCore.DataProtection.SystemWeb implementiert <machineKey>Kompatibilität mit den Verschlüsselungs- und Entschlüsselungsmechanismen in ASP.NET 4.x.
- Microsoft.AspNetCore.Cryptography.KeyDerivation bietet eine Implementierung der Passwort-Hashing-Routine PBKDF2. Verwende es, wenn du Hash-Verschlüsselung brauchst.
IDataProtectionProvider vs IDataProtector
IDataProtectionProvider basiert auf Microsofts Provider-Modell und wird verwendet, um Richtlinien zur Erstellung von Instanzen bereitzustellen. Erstellen Sie ein IDataProtector-Objekt, indem Sie die IDataProtectionProvider.CreateProtector(purpose)-Methode aufrufen. IDataProtector ist ein Dienst, der für Verschlüsselung und Entschlüsselung verantwortlich ist und hauptsächlich zwei Arten von Methoden bereitstellt: Schutz und Entschutz (jeder Typ hat viele Überlastungs- und Erweiterungsmethoden). Ein einfaches Verständnis ist, dass Protect für die Verschlüsselung verwendet wird und Unprotect für die Entschlüsselung. Der Create-Method-Parameter von IDataProtectionProvider ist eine Zeichenkette, die eine Isolationsfunktion bietet. IDataProtectors, die mit nicht passierbaren Strings erstellt werden, erhalten unterschiedliche Verschlüsselungsergebnisse, selbst wenn sie dasselbe Objekt verschlüsseln. IDataProtector selbst ist ebenfalls ein impliziter IDataProtectionProvider, der auch die CreateProtector(purpose)-Methode bereitstellt. Das bedeutet, dass es leicht implementiert werden kannMulti-Tenant-Anwendungsmodus。
Hier sind ein paar Dinge, die Sie beachten sollten:
IDataProtectionProvider- und IDataProtector-InstanzenGewindesicherungZiel. Die Unprotect-Methode besteht darin, den Aufrufer durch Werfen einer Ausnahme darüber zu informieren, dass die Entschlüsselung fehlgeschlagen ist. Die Ausnahmeklasse ist CryptographicException.
ASP.NET Core ist einfach zu bedienen Datenschutz
Eine neue Schnittstelle wird hinzugefügt, um Daten zu verschlüsseln und zu entschlüsseln, und der Code ist wie folgt:
Der Test ist wie folgt:
IDataProtectionProvider ist ein Singleton-Muster mit folgendem Code:Der Hyperlink-Login ist sichtbar.
Schlüsselverwaltung
Wenn das Benutzerprofil verfügbar ist, wird der Schlüssel behalten%LOCALAPPDATA%\ASP.NET\DataProtection-KeysOrdner. Wenn das Betriebssystem Windows ist, wird der Schlüssel im Ruhezustand mit DPAPI verschlüsselt. Wie unten gezeigt:
Wichtiges Leben
Standardmäßig ist der SchlüsselDer Lebenszyklus beträgt 90 Tage。 Wenn der Schlüssel abläuft, erzeugt die Anwendung automatisch einen neuen Schlüssel und setzt den neuen Schlüssel als aktiven Schlüssel. Solange die deaktivierten Schlüssel im System bleiben, kann Ihre Anwendung alle durch sie geschützten Daten entschlüsseln. Weitere Informationen finden Sie unter Schlüsselverwaltung.Der Hyperlink-Login ist sichtbar.
Standardalgorithmus
Die standardmäßigen Lastschutzalgorithmen sind AES-256-CBC (für Vertraulichkeit) und HMACSHA256 (für die Authentizität). Der 512-Bit-Masterschlüssel, der alle 90 Tage wechselt, wird verwendet, um zwei Unterschlüssel für diese Algorithmen basierend auf jeder Nutzlast abzuleiten.
ASP.NET Schlüsselspeicheranbieter in Core
Dateisystem: PersistKeysToFileSystem Azure Storage: PersistKeysToAzureBlobStorage, das Referenz benötigt: Azure.Extensions.AspNetCore.DataProtection.Blobs Redis-Speicher: PersistKeysToStackExchangeRedis, Referenz erforderlich: Microsoft.AspNetCore.DataProtection.StackExchangeRedis
Referenz:Der Hyperlink-Login ist sichtbar.
Gebündelt und verteilt
Wenn der Serverschlüssel inkonsistent ist, zum Beispiel bei der Verschlüsselung von Server A und der Entschlüsselung von Server B, wird eine Ausnahme geworfen (wie in der Abbildung unten gezeigt), und derselbe Schlüssel muss bereitgestellt werden.
Konfigurieren Sie denselben Schlüssel wie folgt:
Sobald das Programm läuft, erzeugt es automatisch eine Key-*.xml Key-Datei unter dem publish_itsvse-Ordner, halte diese Datei auf verschiedenen Servern konsistent! Wie unten gezeigt:
ASP.NET Kernschutzkonfiguration
ASP.NET CORE bietet umfangreiche API-Unterstützung, Passwortpersistenz, Konfiguration und Anpassungsfunktionen.
- PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure Cloud Storage Scenario.
- PersistKeysToFileSystem。 Lokales Dateisystem-Speicherschema, das Verschlüsselungsalgorithmen, Schlüssel und Abhängigkeiten aufzeichnet.
- ProtectKeysWith*。 Die Verschlüsselung erfolgt durch Erweiterungen dieser Namensmethode. Zum Beispiel ProtectKeysWithCertificate
- SetDefaultKeyLifetime。 Stellen Sie die Schlüssellebensdauer standardmäßig auf 90 Tage ein.
- SetApplicationName。 Stellen Sie den Namen der App ein. Standardmäßig sind Datenschutzmechanismen absolut von jeder Anwendung isoliert. Das Teilen von Schlüsseln zwischen Apps kann erreicht werden, indem man denselben App-Namen einlegt.
- DisableAutomaticKeyGeneration。 Verhindern Sie, dass der Schlüssel automatisch zurückgerollt wird. Oft wollen wir keine Passwörter ändern oder in einem Cluster-Service landen, wir haben einen eigenen Dienst, der für das Zurücksetzen von Schlüsselupdates zuständig ist, und andere Payloads müssen sie einfach von einem gemeinsamen Ort abholen.
- UseCryptographicAlgorithms。 Verwenden Sie benutzerdefinierte Verschlüsselungs- und Entschlüsselungsalgorithmen
Referenz:Der Hyperlink-Login ist sichtbar.
|
Vorhergehend:Verwenden Sie PowerShell, um das Element <machineKey> zu generierenNächster:Vergleichen Sie Tailscale, ZeroTier, WireGuard, OmniEdge und Ngrok für Geo-Netzwerklösungen
|