Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 2915|Απάντηση: 0

[Πηγή] Το ASP.NET Core (22) βασίζεται στην προστασία δεδομένων IDataProtectionProvider

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 15/8/2023 10:21:16 π.μ. | | | |
απαιτήσεις: Κατά τη διαδικασία ανάπτυξης, μπορεί συχνά να συναντήσετε ορισμένα σενάρια κρυπτογράφησης και αποκρυπτογράφησης, για παράδειγμα, ο έλεγχος ταυτότητας email μπορεί να φέρει μια κρυπτογραφημένη συμβολοσειρά και όταν ο χρήστης κάνει κλικ στον σύνδεσμο για να μεταβεί στη διεπαφή, το σύστημα μπορεί να αποκρυπτογραφήσει κανονικά το περιεχόμενο της συμβολοσειράς, πραγματοποιώντας έτσι τη λειτουργία ελέγχου ταυτότητας email.

Δημιουργία στοιχείων με χρήση του 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 βασίζεται στο μοντέλο παρόχου της 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-bit, το οποίο αλλάζει κάθε 90 ημέρες, χρησιμοποιείται για την εξαγωγή δύο δευτερευόντων κλειδιών για αυτούς τους αλγόριθμους με βάση κάθε ωφέλιμο φορτίο.

ASP.NET πάροχος αποθήκευσης κλειδιών στο Core

Σύστημα αρχείων: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, το οποίο απαιτεί αναφορά: Azure.Extensions.AspNetCore.DataProtection.Blobs
Αποθήκευση Redis: PersistKeysToStackExchangeRedis, απαιτείται αναφορά: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Ομαδοποιημένα και κατανεμημένα

Εάν το κλειδί διακομιστή είναι ασυνεπές, για παράδειγμα: κρυπτογράφηση διακομιστή Α και αποκρυπτογράφηση διακομιστή Β, θα δημιουργηθεί μια εξαίρεση (όπως φαίνεται στην παρακάτω εικόνα) και θα πρέπει να αναπτυχθεί το ίδιο κλειδί.



Διαμορφώστε το ίδιο κλειδί ως εξής:

Μόλις εκτελεστεί το πρόγραμμα, δημιουργεί αυτόματα ένα αρχείο κλειδιού-*.xml κλειδιού κάτω από το φάκελο publish_itsvse, διατηρήστε αυτό το αρχείο συνεπές σε διαφορετικούς διακομιστές! Οπως φαίνεται παρακάτω:



ASP.NET Διαμόρφωση προστασίας πυρήνα

ASP.NET CORE παρέχει πλούσια υποστήριξη API, διατήρηση κωδικού πρόσβασης, διαμόρφωση και λειτουργίες προσαρμογής.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Σενάριο χώρου αποθήκευσης cloud Azure.
  • PersistKeysToFileSystem。 Σχήμα αποθήκευσης τοπικού συστήματος αρχείων που καταγράφει αλγόριθμους, κλειδιά και εξαρτήσεις κρυπτογράφησης.
  • ProtectKeysWith*。 Η κρυπτογράφηση παρέχεται μέσω επεκτάσεων αυτής της μεθόδου ονομασίας. Για παράδειγμα, ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Ορίστε τη διάρκεια ζωής του κλειδιού σε 90 ημέρες από προεπιλογή.
  • SetApplicationName。 Ορίστε το όνομα της εφαρμογής. Από προεπιλογή, οι μηχανισμοί προστασίας δεδομένων είναι απολύτως απομονωμένοι από κάθε εφαρμογή. Η κοινή χρήση κλειδιών μεταξύ εφαρμογών μπορεί να επιτευχθεί ορίζοντας το ίδιο όνομα εφαρμογής.
  • DisableAutomaticKeyGeneration。 Αποτρέψτε την αυτόματη επαναφορά του κλειδιού. Πολλές φορές δεν θέλουμε πραγματικά να αλλάξουν οι κωδικοί πρόσβασης ή σε μια υπηρεσία συμπλέγματος, έχουμε μια αποκλειστική υπηρεσία που είναι υπεύθυνη για την επαναφορά ενημερώσεων κλειδιών και άλλα ωφέλιμα φορτία πρέπει απλώς να τα λάβουν από ένα κοινόχρηστο μέρος.
  • ΧρήσηCryptographicAlgorithms。 Χρήση προσαρμοσμένων αλγορίθμων κρυπτογράφησης και αποκρυπτογράφησης


Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.





Προηγούμενος:Χρησιμοποιήστε το PowerShell για να δημιουργήσετε το στοιχείο &lt;machineKey&gt;
Επόμενος:Συγκρίνετε τα Tailscale, ZeroTier, WireGuard, OmniEdge και Ngrok για λύσεις γεωδικτύωσης
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com