2012-11-30 2 views
7

Ich teste die Idee der Verwendung der System.Security.Cryptography.ProtectedData() - und UnprotectData() - Methoden von .net v4 mit dem DataProtectionScope.LocalMachine-Bereich aus, um sicherzustellen, dass eine Datei nur auf einem einzelnen Computer verschlüsselt/entschlüsselt werden kann. Hier ist die allgemeine Vorstellung von dem, was ich tue ...Wie behandelt DPAPI und ProtectedData.Protect() Disk Images/Clones in. Net 4?

//Encrypt  
byte[] outBytes = ProtectedData.Protect(File.ReadAllBytes(fileIn), null, DataProtectionScope.LocalMachine); 
File.WriteAllBytes(fileOut, outBytes); 

//Decrypt  
byte[] outBytes = ProtectedData.Unprotect(File.ReadAllBytes(fileIn), null, DataProtectionScope.LocalMachine);    
File.WriteAllBytes(fileOut, outBytes); 

Ich habe viele Tests durchgeführt, um sicherzustellen, dass ich das erwartete Verhalten bekommen, wenn dies zu tun und es scheint perfekt zu arbeiten, dass jeder Benutzer auf dem gleichen Die Maschine kann eine Datei mit den oben aufgeführten Methodenaufrufen verschlüsseln/entschlüsseln.

Meine Frage ist, was passiert, wenn jemand ein Disk-Image oder Klon (mit Acronis, Ghost, etc ...) eines Systems erstellt, das eine mit diesem Mechanismus verschlüsselte Datei enthält, und dieses Image dann auf einem anderen Rechner wiederherstellt? (Ein Beispiel dafür ist, dass die IT-Abteilung ein einzelnes System vorlädt, das dann zum Basis-Image für eine Armee von Maschinen mit identischen Hardwarekonfigurationen wird). Kann das wiederhergestellte Betriebssystem auf einer anderen Hardware die Datei entschlüsseln, die auf dem "ursprünglichen" System verschlüsselt wurde? Meine Hoffnung ist, dass die Entschlüsselung wegen der unterschiedlichen Hardware fehlschlägt, aber es könnte sinnvoll sein, dass, wenn alle notwendigen Informationen zur Ausführung des Kryptos in der Registrierung oder im Dateisystem vorhanden sind, es funktionieren würde.

Offensichtlich könnte ich das für mich selbst testen, aber ich habe nicht wirklich die Mittel, dies jetzt zu tun und habe endlos gesucht, um zu sehen, ob jemand da draußen die Antwort bereits kennt. Jeder Rat wird sehr geschätzt!

Antwort

4

Meine Antwort gilt nur für DataProtectionScope.LocalMachine, denn offensichtlich verwendet DataProtectionScope.CurrentUser Schlüssel, die in Active Directory oder einer anderen servergespeicherten Quelle gespeichert sind, und ist explizit, by-design, nicht an einen einzelnen physischen Schlüssel gebunden. Wenn LocalMachine betroffen ist, kann ein Klon eines Computers die gleichen Dateien öffnen, da der Maschinenschlüssel auf der Festplatte des Geräts gespeichert ist und mit der "sysprep" -Stufe der Windows-Installation generiert wird (dies ist Warum kann ein Windows-Rollout für Unternehmen das gleiche Systemabbild verwenden, aber solange Sysprep ausgeführt wird, hat jedes System einen eigenen Schlüssel.

Ein Computer kann seinen Maschinenschlüssel neu erstellen (und er kann auch die alten Schlüssel beibehalten, so dass ältere Daten noch entschlüsselt werden können). Ich weiß nicht, wie man es schafft, den Schlüssel neu zu erstellen und dann die alten zu löschen.

Quelle: http://www.windows-server-answers.com/microsoft/Security-Cryptography/30350079/local-machine-masterkey-in-dpapi.aspx

0

Gute Frage - die Jagd um es scheint, dass der Hauptschlüssel automatisch jede ca. regeneriert 90 Tage. Es gibt eine sehr gute analysis auf Passcape.com - das Herz der DPAPI-Sicherheit ist mit dem SYSKEY des Systems verknüpft, das in der Registrierung unter der SYSTEM-Struktur gespeichert ist.

Da apparently den CryptProtectData() - Aufruf mit dem CRYPT_PROTECT_REGENERATE-Flag zum Aktualisieren des DPAPI-Hauptschlüssels auf einem geklonten System verwenden kann, scheint Ihr Anwendungsfall für den DPAPI-Schutz ein Sicherheitsrisiko darzustellen.

Meine Meinung ist, dass während DPAPI ist großartig für die Sicherheit auf einem lokalen Rechner (aber sehen Sie diese post auf Epyx Forensics über Passwort-Wiederherstellung), müssen Sie wahrscheinlich zusätzliche Sicherheitsmaßnahmen beim Klonen implementieren, besonders wenn Sie kann nicht kontrollieren, wie die Systeme geklont werden.

Diese Frage würde wahrscheinlich eine bessere Antwort auf https://security.stackexchange.com/ bekommen, so dass Sie auch dort fragen möchten.