3 Stimmen

Wo werden die Verschlüsselungscodes gespeichert?

Ich bin neu in der Kryptographie. Ich habe gelesen, dass symmetrische und asymmetrische Algorithmen einen bzw. zwei Verschlüsselungsschlüssel verwenden . und diese Schlüssel müssen irgendwo sicher gespeichert werden . aber als ich im Internet suchte, um Tutorials darüber zu finden, wie man Verschlüsselung in asp.net macht, fand ich etwas seltsam für mich ! zum Beispiel diese Anleitung .

bei der Ver- und Entschlüsselung von Daten kein öffentlicher oder privater Schlüssel gespeichert oder bereitgestellt wird ! Das kann ich nicht verstehen.

ein weiteres Problem, das ich habe, ist, dass alle Tutorials, die ich bis jetzt gefunden habe, nur Codes sind, ohne Erklärungen darüber, was diese Codes sind und warum verwendet werden. Ich schätze jedes gute Tutorial vorgeschlagen.

6voto

Petey B Punkte 11071

Von RSACryptoServiceProvider Konstrukteur :

Wenn kein Standardschlüssel gefunden wird, wird ein neuer Schlüssel erstellt.

Dieser Konstruktor erzeugt ein Exchange-Schlüsselpaar, das geeignet ist, Sitzungsschlüssel zu verschlüsseln, so dass sie sicher gespeichert und mit anderen Benutzern ausgetauscht werden können. Der erzeugte Schlüssel entspricht einem Schlüssel, der mit dem AT_KEYEXCHANGE-Wert erzeugt wurde, der in der nicht verwalteten Microsoft Cryptographic API (CAPI) verwendet wird.

Es wird also nur ein neues Schlüsselpaar generiert, wenn es kein bereits erstelltes findet; Sie sollten dies nur für sitzungsbasierte Daten verwenden.

Ein wenig Hintergrundwissen (ich nehme an, Sie verwenden Windows): Asymmetrische Schlüsselpaare sind mit Zertifikaten verbunden. Diese Zertifikate werden verwendet, um asymmetrischen Schlüsseln Vertrauen zu schenken. Jedes Zertifikat kann von einer Zertifizierungsstelle signiert werden (die Stelle, die die asymmetrischen Schlüssel ausstellt). Wenn Sie der Zertifizierungsstelle vertrauen, dann vertrauen Sie auch den asymmetrischen Schlüsseln, die zu einem von dieser Stelle signierten Zertifikat gehören. Alle diese Zertifikate werden in Ihrem "Zertifikatspeicher", auch "Schlüsselspeicher" (Java), "Schlüsselring" (Mac) genannt, gespeichert.

Sie können Ihre Zertifikate einsehen, indem Sie Start > Run > certmgr.msc . Ihre Zertifikate finden Sie unter Persönlich > Zertifikate. Wenn Sie eines davon öffnen und auf die Seite Certificate Path sehen Sie die Zertifikatskette bis hin zu einer Zertifizierungsstelle. Wenn das "Root"-Zertifikat, das zur Zertifizierungsstelle gehört, in Ihrem Trusted Root Certification Authorities > Certificates speichern, dann gilt das Zertifikat als gültig und vertrauenswürdig.

Wenn Sie etwas für einen Benutzer verschlüsseln wollen, sollten Sie in seinen Zertifikatspeicher gehen und sein Verschlüsselungszertifikat herausziehen. Öffnen Sie dazu den Schlüsselspeicher "Aktueller Benutzer", gehen Sie alle Zertifikate darin durch und wählen Sie diejenigen mit der Schlüsselverwendung "Schlüsselverschlüsselung" aus, und wenn es mehrere gibt, fragen Sie den Benutzer, welches er verwenden möchte.

Wenn Sie etwas über ein Dienstkonto verschlüsseln möchten (z. B. einen Webserver), sollten Sie Zertifikate aus dem Schlüsselspeicher "Lokale Maschine" verwenden und Ihrem Dienstkonto nur Lesezugriff auf den privaten Schlüssel gewähren, der mit dem zu verwendenden Zertifikat verbunden ist.

Dies kann geschehen durch X509Store-Klasse zum Beispiel:

X509Store certificateStore = new X509Store("MY", StoreLocation.CurrentUser);
X509Certificate2Collection allCertificates = certificateStore.Certificates;
//Iterate through all certificates

"MY" steht für persönliche Zertifikate, der Rest ist zu finden unter aquí . CurrentUser steht für Benutzerschlüssel, die andere Option ist LocalMachine.

Sobald Sie das gewünschte Zertifikat haben, sollten Sie den öffentlichen Schlüssel zur Verschlüsselung und den privaten Schlüssel zur Entschlüsselung in Verbindung mit einem symmetrischen Schlüssel verwenden. Wenn Sie also einen großen Datensatz zu verschlüsseln haben, würden Sie wie folgt vorgehen:

  1. Zertifikat erhalten
  2. Öffentlichen Schlüssel aus dem Zertifikat ziehen
  3. Symmetrischen Schlüssel generieren (AES)
  4. Verschlüsseln von Daten mit symmetrischem Schlüssel
  5. Verschlüsselung des symmetrischen Schlüssels mit dem öffentlichen Schlüssel
  6. Speichern Sie den verschlüsselten symmetrischen Schlüssel zusammen mit den verschlüsselten Daten und einer Kennung (Seriennummer) für das Zertifikat, das Sie zum Verschlüsseln verwendet haben.

Wenn Sie entschlüsseln, sollten Sie:

  1. Lesen der Seriennummer aus verschlüsselten Daten
  2. Zertifikat mit dieser Seriennummer aus dem Schlüsselspeicher ziehen
  3. Privaten Schlüssel aus dem Zertifikat ziehen
  4. Entschlüsselung des symmetrischen Schlüssels mit diesem privaten Schlüssel
  5. Entschlüsselung von Daten mit diesem symmetrischen Schlüssel
  6. Daten verwenden

Ich habe eine Reihe von Codebeispielen, die dies bewerkstelligen, wenn Sie einen Blick darauf werfen möchten, lassen Sie mich einfach wissen, bei welchem Abschnitt Sie Hilfe benötigen.

Das war wahrscheinlich etwas verwirrend, also lassen Sie mich wissen, was Sie klarstellen möchten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X