Unsere Kodierung für verschlüsselte Dateinamen ist nun Open Source
Warum bestehen die verschlüsselten Dateinamen bei Boxcryptor aus chinesischen Schriftzeichen? Diese Frage hören wir oft und wollen Ihnen heute eine ausführliche Erklärung liefen.
Dateinamen-Zeichenbegrenzung
Das zugrundeliegende Problem bei der Auswahl des passenden Schriftsatzes ist die Zeichenbegrenzung. So können Kernelemente von Microsoft Windows nur mit Dateipfaden mit einer Länge von maximal 256 Zeichen umgehen. Diese Begrenzung ist zum Beispiel bei der Verwendung des Windows Explorer relevant.
Da Dateien mit längeren Pfaden also nicht zugänglich wären, synchronisieren viele Cloud-Anbieter – zum Beispiel Dropbox – keine Dateien mit einer Pfadlänge von mehr als 260 Zeichen.
Verschlüsselte Dateinamen benötigen mehr Bytes als Klartext-Dateinamen. Deshalb mussten wir eine Möglichkeit finden, die Zeichenzahl der verschlüsselten Dateinamen zu verringern, sodass Boxcryptor nicht ständig Probleme bei der Synchronisierung auslöst.
Base4K
Die Lösung für dieses Problem ist die Verwendung von Unicode-Schriftzeichen statt ASCII-Zeichen. Während ein ASCII-Zeichen nur 1 Byte an Information transportieren kann, transportiert ein Unicode-Zeichen 4 Bytes. Auf 4 ASCII-Zeichen kommt also 1 einziges Unicode-Zeichen.
Vergleichbar mit bereits existierenden Verfahren zur Kodierung wie Base64, haben wir das Binary-to-Text-Verfahren Base4K entwickelt, das 4000 verschiedene Unicode-Zeichen verwendet. Während Base64 mehr Zeichen als Bytes benötigt, braucht Base4K weniger Zeichen als Bytes. Base4K ist in Bezug auf Zeichenlänge mehr als 50 Prozent effektiver als Base64.
Asiatische Schriftzeichen
Warum verwenden wir für Boxcryptor also die asiatischen Schriftzeichen? Ganz einfach: Wir benötigen 4000 verschiedene Zeichen und es gibt einfach nicht genügend ASCII-Zeichen im lateinischen Alphabet. Darüber hinaus mussten die benötigten Elemente noch mehreren, technischen Vorgaben entsprechen:
- Aufeinanderfolgende Punkte im Unicode-System
- Universale Darstellbarkeit (diese ist z. B. bei einigen Symbolen wie Steuerzeichen nicht gegeben)
- Eindeutige Unterscheidbarkeit
Der große Umfang der asiatischen Zeichensätze erwies sich hier als perfekt geeignet. Base4k bildet daher Bytes (0x00-0xff) auf Unicode-Punkte in den Bereichen 0x4000-0x40ff und 0x6000-0x6fff ab. Die Auswahl erfolgte also allein aufgrund technischer Überlegungen.
Die asiatischen Zeichensätze umfassen ein Vielfaches mehr an Symbolen als das lateinische Alphabet. Daher eignen sie sich hervorragend für unsere Verschlüsselung von Ordner- und Dateinamen. Echte asiatische, z. B. also chinesische, Dateinamen würden aber gänzlich anders aussehen, da die verschlüsselten Symbole weder Syntax noch Sprachlogik folgen.
Übrigens: Wer Boxcryptor nutzt um Dateien und Ordner mit echten, asiatischen Namen zu verschlüsseln, sollte in den meisten Fällen kein Problem bekommen. Denn „normale“ chinesische Dateinamenentsprechen beispielsweise nicht dem Aufbau von verschlüsselten Boxcryptor-Dateinamen. Entsprechend werden sie auch nicht als solche erkannt. Im unwahrscheinlichen Fall, dass Boxcryptor eine Datei fälschlicherweise als verschlüsselt interpretiert, kann einfach die Einstellung „auch nicht-entschlüsselbare Dateien anzeigen“ aktiviert werden. Dadurch werden auch fehlinterpretierte, „echte“ Dateinamen ganz normal angezeigt.
Jetzt auch Open Source
Wir selbst sind große Fans von quelloffener Software und nutzen auch bei Boxcryptor verschiedene Open Source Libraries. Deshalb haben wir die Base4K-Implementierung für verschiedene Sprachen (C/C++, C#, Java, JavaScript) unter der MIT Open Source Lizenz für alle frei zur Verfügung gestellt. Sie finden diese auf unserem Github-Konto.
Obwohl wir den Quellcode von Boxcryptor nicht komplett veröffentlichen werden, haben wir übrigens auch eine Beispiel-Implementierung des Boxcryptor-Verschlüsselungs-Algorithmus auf Github hinzugefügt.