Laden...

Warum verschlüsselt BitLocker so schnell? Wie gehe ich so was in c# an?

Erstellt von Ballom vor 5 Jahren Letzter Beitrag vor 5 Jahren 2.994 Views
Ballom Themenstarter:in
31 Beiträge seit 2015
vor 5 Jahren
Warum verschlüsselt BitLocker so schnell? Wie gehe ich so was in c# an?

Hi

Ich entwickle ein Programm in C# und der Benutzer kann Daten hinzufügen und verwalten. Um Zugriff zu den Daten zu erhalten, muss er zuerst ein Passwort eingeben.

Es ist also fast wie ein BitLocker Laufwerk, aber der Zugang führt durch mein Programm und nicht den Explorer.

Leider ist die Verschlüsselung und Entschlüsselung von einzelnen Daten sehr langsam. Es soll nicht nach dem eingeben des Passwortes erst mal 2 GB entschlüsseln müssen, es soll schnell gehen, wie bei BitLocker.

Warum sind so Container Tools wie BitLocker & TrueCrypt so schnell beim öffnen?

Wie kann ich so etwas in c# realisieren? Schön wäre es, wenn es zum Beispiel für BitLocker oder etwas ähnliches eine API gäbe, um diese Technik zu nutzen und per Script zu Steuern.

Es sollte Plattformunabhängig laufen.

Hat jemand einen Vorschlag?

God save the screen.

T
2.224 Beiträge seit 2008
vor 5 Jahren

Liegt daran, dass BitLocker schon auf Dateisystem Ebene angesiedelt ist.
Hier werden nicht die Daten direkt verschlüsselt sondern primär eher die MFT die alle Informationen über die Dateien sowie ihre Positionen innerhalb des Dateisystems enthält.
Dadurch muss Bitlocker nicht die Dateien einzelbe verschlüsseln sondern nur die MFT.
Wenn diese nicht richtig entschlüsselt wird, kann man mit der Festplatte und den Daten darauf auch nichts damit anfangen.

Eine API für BitLocker sollte es eigentlich geben, müsste man dann entweder per pInvoke oder einen bestehenden Wrapper einbinden können.
Platformunabhängig wäre es aber nicht, da BitLocker nur unter Windows funktioniert.
Was eigenes basteln wäre möglich aber aufwändig und wegen den vielen Varianten die man beachten müsste als einzelner Entwickler nicht realistisch und schnell machbar.

TrueCrypt sollte man übrigens nicht mehr verwenden, nimm lieber VeraCrypt.
Das ist aktuell auch zur letzten Version von TrueCrypt kompatibel, wird aber im Gegensatz zu TrueCrypt offen entwicklt was aus meiner Sicht mehr Vertrauen verdient.

Nachtrag:
Hab mich nochmal eingelesen, da ich nicht ganz sicher war wegen der MFT Verschlüsselung.
Bitlocker greift hier schon auf Dateisystemebene ein, da es seit NTFS 3.0 die Encrypting File System Erweiterung gibt.
Entsprechend werden die Daten über das Dateisystem ver- und entschlüsselt.
Das ist sprübar schneller als über ein extra Tool.

Link:
Encrypting File System
BitLocker

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

C
2.121 Beiträge seit 2010
vor 5 Jahren

Hier werden nicht die Daten direkt verschlüsselt sondern primär eher die MFT die alle Informationen über die Dateien sowie ihre Positionen innerhalb des Dateisystems enthält. Dadurch muss Bitlocker nicht die Dateien einzelbe verschlüsseln sondern nur die MFT.

Ich hoffe durch deinen Nachtrag ist dieser Teil ungültig geworden. Das wäre eine Katastrophe.

16.834 Beiträge seit 2008
vor 5 Jahren

BitLocker verschlüsselt absolut alle Inhalte, und nicht nur die MFT.
Wäre ja fatal.

BitLocker ist Teil des Dateisystems und verwendet Hardware zur Verschlüsselung; und ist deshalb auch so schnell.
Ohne entsprechende Hardware fällt BitLocker auf Software (=> CPU) zurück, was laut verschiedenen Blogs und Quellen dann auch dramatisch die Performance sinken lässt (Schreiben ca. 50%!).
Hardware-Performance sinkt eher im Bereich von 1-2% und dadurch (quasi) zu vernachlässigen.

T
2.224 Beiträge seit 2008
vor 5 Jahren

@chilic
Ja der Teil ist hinfällig 😃
Hatte nur vergessen, dass auch verständlich hinzuschreiben.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

Ballom Themenstarter:in
31 Beiträge seit 2015
vor 5 Jahren

Danke für die Antworten.

Also kann ich mein Projekt vergessen, weil es technisch nicht umsetzbar ist?

Bei meiner Verschlüsselung dauert eine 80 Mb grosse Datei etwa 15 Sekunden, das ist definitiv viel zu lange.

Das Ziel wäre eine Art Dateibrowser, in dem man die verschlüsselten Daten anschauen kann und beim öffnen entschlüsselt werden oder aber beim Start des Browsers alle entschlüsselt werden.

Da es sich unter Umständen um mehrere GB handelt ist das untragbar für den Benutzer.

God save the screen.

16.834 Beiträge seit 2008
vor 5 Jahren

Umsetzbar ist es sicherlich; aber die Art und Weise, die Du wünscht, wird so halt extrem unperformant sein.
Ehrlich gesagt sehe ich auch irgendwie nicht den Grund, wieso der Benutzer Dein Programm denn für die Verschlüsselung nutzen muss, statt direkte Windows Features über den Explorer.
Macht es wirklich Sinn, das Rad neu zu erfinden?

Wieso benutzt Du nicht im Hintergrund einfach ein bestehendes Containersystem und bastelst eine UI drüber?
Dann hast wenigstens auch auditierten Code was die Sicherheit betrifft...

5.658 Beiträge seit 2006
vor 5 Jahren

Bei meiner Verschlüsselung

Von welcher Art von Verschlüsselung reden wir denn hier überhaupt? Du hast doch da nicht etwa einen eigenen Algorithmus implementiert?

Weeks of programming can save you hours of planning

Ballom Themenstarter:in
31 Beiträge seit 2015
vor 5 Jahren

Es geht nicht darum, die Verschlüsselung zu revolutionieren, sondern der "Datei Browser" wird das besondere.

Hab jetzt genau gemessen mit Stopwatch() 83.4 Mb verschlüsselte ich mit Rijndael in 27 Sekunden. Jetzt habe ich RC4 entdeckt, damit verschlüssele ich die selbe Datei in nur 3 Sekunden! Das ist doch schon mal eine starke Verbesserung! Mir ist bewusst, dass RC4 nicht sooo sicher ist wie Rijndael, aber ich denke RC4 reicht für meine Zwecke! Wer will kann das ganze dann immer noch in einen BitLocker Container hauen!

Die BitLocker API kommt für mich eigentlich nicht in Frage, weil der Benutzer soll nicht erst ein Container formatieren müssen. Es soll alles "Out of the Box" sein.

God save the screen.

16.834 Beiträge seit 2008
vor 5 Jahren

sondern der "Datei Browser" wird das besondere.

Was ist daran besonders, was es nicht heute schon gibt?

Jetzt habe ich RC4 entdeckt, damit verschlüssele ich die selbe Datei in nur 3 Sekunden! Das ist doch schon mal eine starke Verbesserung!

RC4 gilt seit Jahren als unsicher. Gibt sogar eine BSI Warnung dazu. Zweck hin oder her.
Schaust Du Dir die Verfahren an, bevor Du sie verwendest?

Es soll alles "Out of the Box" sein.

Gefühlt erfindest Du das Rad neu.

T
2.224 Beiträge seit 2008
vor 5 Jahren

@Ballom
Wie Abt schon sagt, ist RC4 schon vollkommen raus aus dem Rennen.
Selbst die Browser haben RC4 letztes Jahres rausgeworfen.
Wenn du aus Performance Gründen die Sicherheit der Daten untergräbst, handelt du schon sehr fahrlässig.

Es gibt schon unmengen an Verschlüsselungsverfahren, die eben abhängig von der Hardwareutnerstützung auch entsprechend schnell sind.
Ob es wirklich Sinn macht, nochmal in .NET alles neu zu entwickeln wegen ein paar netten Features, halte ich eher für fehl am Platz.
Gerade da man dann schnell wieder die Fehler macht, die andere schon vor Jahren gemacht und gelöst haben.

Ich bin ehrlich gesagt ein Feind davon, dass man alles selbst machen will.
Gerade bei Sicherheitskritischen Dingen wie der Datenverschlüsselung sollte man fertige Lösungen verwenden.
Hier kann man gerne eigene Testprojkte umsetzen, aber diese sollten dann nie in freier Wildbahn umgesetzt werden.
Also reine Prototypen Lösungen, die man nicht als Basis seiner Software Lösung verwenden sollte.

Was spricht den aus deiner Sicht gegen Bitlocker?
Welche Anforderungen hat dein Datei Browser, die so besonders sind, dass du dafür eine Bastellösung als Sicherheitslösung verkaufen willst?

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.