Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 2915|Antwort: 0

[Quelle] ASP.NET Core (22) basiert auf dem Datenschutz von IDataProtectionProvider

[Link kopieren]
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.

Elemente mit PowerShell <machineKey>generieren
https://www.itsvse.com/thread-10644-1-1.html

Verschlüssele Daten mit ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET Die Rolle von machineKey und wie man ihn nutzt
https://www.itsvse.com/thread-2705-1-1.html

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 &lt;machineKey&gt; zu generieren
Nächster:Vergleichen Sie Tailscale, ZeroTier, WireGuard, OmniEdge und Ngrok für Geo-Netzwerklösungen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com