Wie bewahren Sie die Schlüssel verwendet, um Dateien zu verschlüsseln
Ich bin Herumspielen mit einer app, um backup-Dateien in der "cloud" 🙂 und ich will das verschlüsseln der Dateien vor dem speichern Sie. Das Teil habe ich abgedeckt, aber da diese app wird überwachen von Ordnern für die änderung und das hochladen der geänderten Dateien muss ich speichern, um die Schlüssel, die ich verwenden, um die Dateien verschlüsseln, die mit. Die Idee ist, dass der Benutzer ein Passwort und einen Schlüssel generiert.
Im moment bin ich mit dem .NET Framework für die Verschlüsselung ein. Ich bin mit dem RijndaelManaged-Klasse zur ver - /Entschlüsselung und der Klasse PasswordDeriveBytes den Schlüssel zu bekommen.
Aber wie sollte ich die verwendeten Schlüssel für die Verschlüsselung der Dateien? Ich will auch das Programm starten mit Windows und nicht brauchen, um die Benutzer, geben Sie Ihr Kennwort erneut ein.
- Dies könnte helfen, stackoverflow.com/questions/723653/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde empfehlen, die Vermeidung der Verwendung asymmetrischer Verschlüsselung für die Verschlüsselung Ihrer Dateien. Asymmetrische Verschlüsselung ist wesentlich teurer (rechnerisch) als die symmetrische Verschlüsselung algorithmen gleichwertig. Für das verschlüsseln von großen Dateien würde ich empfehlen, AES über RSA-jeden Tag.
Als auf Ihre Frage - die Data Protection API (DPAPI) Gaurav erwähnt, ist Ihre beste Wette auf Windows. Gewusst wie: Verwenden von Data Protection
DPAPI bietet ProtectedMemory und ProtectedData. Der ehemalige sodass Sie schützen Geheimnisse im Speicher, letztere bietet Schutz für Geheimnisse auf dem Datenträger beibehalten. Die API kümmert sich um Verschlüsselung & Entschlüsselung für Sie, und (je nach angegebenem Umfang) schützen Ihre Daten vor Zugriff/Entschlüsselung, die durch andere Benutzer oder auf andere Maschinen.
Verwenden von DPAPI in deinem Szenario würde ich empfehlen, wobei das Benutzer-Passwort, generieren Sie einen symmetrischen Verschlüsselungs-Schlüssel (z.B. PasswordDeriveBytes), die Speicherung, die Verwendung von DPAPI und einschränken des Zugriffs auf den aktuellen Benutzer.
Ihrer Anwendung verwenden können, die Schlüssel zum verschlüsseln aller uploads. Ihre Anwendung erhalten die Schlüssel ohne eine erneute Aufforderung an den Benutzer, und den Schlüssel konnte regeneriert werden, indem der Benutzer auf ein neues system.
Einzige Nachteil wäre, dass eine böswillige Anwendung auch ausgeführt, die vom gleichen Benutzer könnte möglicherweise erhalten Sie den geheimen Schlüssel. Zum Schutz vor diesem Szenario zusätzliche Entropie (effektiv ein Salz) zur Verfügung gestellt werden müssen Schützen & Aufheben. Die Umsetzung dieses wahrscheinlich verirrte von Ihrem Ziel - denn jetzt müssen Sie den Benutzer auffordern, für etwas, das scheint eine Menge wie ein Passwort.
Auch: interessant zu Lesen:
Finden Sie auch diesen post von Backblaze eine interessante Lektüre. Obwohl Sie sich nicht zu erklären, wie Sie Ihr Szenario unterstützt (verschlüsselte uploads, dass der cloud-Anbieter nicht entziffern können - nur, dass Sie diesen service bieten):
http://blog.backblaze.com/2008/11/12/how-to-make-strong-encryption-easy-to-use/
Disclaimer: ich bin zufrieden mit Backblaze Kunden, bin aber auf keine andere Weise verbunden mit Ihren service.
PS: nehmen Sie sich die Zeit zu markieren, akzeptable Antworten. Die community wird Euch dafür belohnen.
Ich schlage vor, Sie, asymmetrische Verschlüsselung zu verwenden, wie ich beschrieben hier. Dass können Sie nur einen einzigen privaten Schlüssel zu schützen (und backup) - sogar während Sie jede Datei wird verschlüsselt und mit einem anderen symmetrischen - Taste.
Können Sie auch lassen Sie Windows (eigentlich CryptoAPI) schützen den Schlüssel mit einem
CspParameters
(und die richtigen Flaggen), dieRSACryptoServiceProvider
. Je auf Ihre Fahnen haben Sie den Schlüssel für das angemeldet Benutzer (so wird es so sicher wie die Benutzer-login-Passwort).DPAPI wurde entwickelt, um diese Aufgabe lösen.
Ich schließe mit der DPAPI Vorschlag. Hier ist etwas code, um zu zeigen, wie der ProtectedData Klasse. Dies ist nicht wirklich relevant für Ihre genaue Szenario, aber man kann hochrechnen.