njör.de

Start > Projekte > fritz

fritz

Beschreibung


fritzUm Nachrichten oder Dateien über das Internet auszutauschen, bietet es sich an, die Daten zu verschlüsseln und zu signieren. Um dies zu bewerkstelligen, wurde fritz entwickelt. Wert wurde dabei auf Kompaktheit, einfache Bedienbarkeit und eine sichere Implementierung gelegt.

Fritz baut auf die Krypto-Bibliothek NaCl auf und arbeitet ausschliesslich mit einem asymmetrischen Verschlüsselungsverfahren. Die Verwaltung der Schlüssel ist sehr einfach gehalten, sodass man im Schlüsselbund nur den jeweiligen öffentlichen Schlüssel auswählen muss, um Nachrichten oder Dateien zu ver- oder entschlüsseln.

Fritz muss nicht installiert werden, es reicht aus, die Datei fritz.exe auf einen beliebigen Datenträger zu speichern. Alle Schlüssel und Dateien werden im selben Verzeichnis wie die Datei fritz.exe abgelegt. Es werden keine weiteren Daten irgendwo im System gespeichert. Fritz wird niemals eine Netzwerkverbindung aufbauen, das Programm arbeitet ausschließlich auf dem lokalen Rechner.

Download

fritz - Download - heise online

27. April 2014 fritz.exe (Version 6) SHA-256 -2dggT-zeKcvyFbxe-3gNTz63uhoheOsAVvroWYE7DU=

27. April 2014 fritz[en].exe (english Version 6) SHA-256 NWtgCpJy6Dsqj-OEoX-J65yx-ywfqVQIMnVHpitPVzU=

26. Februar 2013 fritz vs. GnuPG.pdf

27. April 2014 fritz-v6-src.zip SHA-256 tsLDXRwS-0X-gLYNRLXNKqvn-GzsdjAWDWoBrVathvI=

Fritz auf Github.com: https://github.com/stralloc/fritz

Ausführliche Beschreibung

Erster Start

Vor dem ersten Start empfiehlt es sich, fritz.exe in einem extra Ordner abzulegen und von der exe-Datei eine Verknüpfung auf dem Desktop zu legen. Somit werden alle Schlüssel in dem Ordner, in dem die Datei fritz.exe liegt, abgelegt.

Fritz prüft beim Start, ob das eigene Schlüsselpaar bestehend aus dem öffentlichen und dem geheimen Schlüssel komplett ist. Falls nicht, wird, nach einer Abfrage, ein neues Schlüsselpaar erzeugt. Dazu muss ein neues Kennwort angelegt werden.

Nachdem ein eigenes Schlüsselpaar erzeugt wurde, startet das Hauptfenster von Fritz. Der Schlüsselbund ist noch ausgegraut, da sich an ihm keine Schlüssel befinden. Um den Schlüssel eines Freundes hinzuzufügen, muss man die Schlüsselverwaltung mit "Verwalten" aufrufen.

Schlüsselverwaltung

In der Auswahlliste kann nun ausgewählt werden, wie es weitergehen soll. Mittels "Neuen Schlüssel anlegen" kann der öffentliche Schlüssel eines Freundes gespeichert werden. Dazu muss bei "Name" ein Name für den Schlüssel, und bei "Schlüssel" der Schlüssel selbst, wie Du ihn durch Deinen Freund erhalten hast, eingegeben werden.

Die Auswahl "Eigener Schlüssel" dient dazu, den eigenen öffentlichen Schlüssel anzeigen zu lassen. Mit einem Klick auf "Kopieren" kann der jeweilige Schlüssel in die Zwischenablage von Windows kopiert werden. Nun kann der Schlüssel mit einem Freund per Mail, Telefon, SMS oder Chat ausgetauscht werden.

Beachte aber, dass Dich dieser öffentliche Schlüssel eindeutig identifiziert, weil nur dieser öffentliche Schlüssel zu Deinem geheimen Schlüssel passt. Wenn Du also auf Nummer sicher gehen willst, tausche den öffentlichen Schlüssel nur über einen sicheren Weg aus.

Wenn der öffentliche Schlüssel eines Freundes gespeichert ist, kann der Schlüssel immer wieder in der Liste aufgerufen werden, um ihn zu löschen, oder den Schlüssel einem weiteren Freund zu geben. Es nicht möglich, die Weitergabe eines Schlüssels durch einen Freund zu verhindern. Es muss also vorher bedacht werden, wer Deinen Schlüssel bekommt. Alternativ kann Du Fritz aus mehreren verschiedenen Verzeichnissen starten, um für jeden Kommunikationspartner ein anderes Schlüsselpaar zu benutzen.

Zufällige Schlüssel

Es ist auch möglich, einen zufälligen Schlüssel mittels "Neuen Schlüssel anlegen" > "Erstellen" zu erzeugen. Diese Funktion ist dazu gedacht, Dateien verschlüsselt im Internet abzulegen. Wähle dazu als Name die jeweilige Seite, bspw. mega.co.nz und erzeuge einen zufälligen Schlüssel. Nur Du als Besitzer dieses zufälligen Schlüssels kannst diese Datei wieder entschlüsseln. Dadurch, dass dieser zufällige Schlüssel nur zusammen mit Deinem geheimen Schlüssel gültig ist, bringt es auch nichts, zufällig erzeugte Schlüssel weiterzugeben. Zufällige Schlüssel werden seit Version 5 mit einer Raute (#) am Anfang des Namens markiert. Beim Kopieren eines solchen Schlüssels wird eine Warnung ausgegeben, da es unlogisch ist, solche Schlüssel weiterzugeben, da er nur in Verbindung mit Deinem geheimen Schlüssel genutzt werden kann.

Nachrichten verschlüsseln

Um eine Nachricht zu verschlüsseln, muss ein Schlüssel im Schlüsselbund ausgewählt werden. Schreibe oder kopiere die Nachricht in das Textfeld und wähle "Verschlüsseln". Sollte nur "Entschlüsseln" zur Verfügung stehen, wurde die Nachricht als verschlüsselter Text erkannt. Füge ein Satzzeichen (.!?) zu der Nachricht hinzu, dann wird sich die Nachricht verschlüsseln lassen. Deine ursprüngliche Nachricht wird nun im Textfeld durch die verschlüsselte Nachricht ersetzt. Diese verschlüsselte Nachricht kann so wie sie ist kopiert (mittels "Kopieren") und weitergeben werden.

Das Entschlüsseln einer Nachricht funktioniert analog zum Verschlüsseln. Sollte einmal eine verschlüsselte Nachricht nicht als solche erkannt werden (es steht nur "Verschlüsseln" zur Verfügung), gib am Ende des Textes ein Satzzeichen (.!?) ein, damit Fritz erkennen kann, dass es sich hier um Klartext handelt.

Seit Version 5 kann Fritz auch mit verschlüsseltem Text umgehen, der sogenannte Whitespaces (tab, space, return) enthält. Es kommt häufig vor, dass solche Zeichen beim Kopieren aus dem Mailclient mitkopiert werden. Damit läßt sich Fritz noch einfacher bedienen.

Dateien verschlüsseln

Um eine Datei zu verschlüsseln, wähle im Schlüsselbund einen Schlüssel aus, für den die Datei verschlüsselt werden soll. Wenn Du einen zufälligen Schlüssel erstellt hast ("Neuen Schlüssel anlegen" > "Erstellen"), kannst nur Du diese Datei wieder entschlüsseln.

Ziehe mittels Drag-and-Drop eine Datei auf das Hauptfenster von fritz. Nun wird in dem Verzeichnis, aus dem Du die Datei auf fritz gezogen hast eine neue Datei mit einem verschlüsselten Dateinamen und der Dateiendung .fritz angelegt. Der erste Buchstabe des Dateinamens ist der gleiche, wie der der ursprünglichen Datei, damit die verschlüsselte Datei einfacher gefunden werden kann. Diese verschlüsselte Datei kannst Du nun über das Internet (E-Mail, Datei-Upload usw.) austauschen.

Es ist auch ohne Weiteres möglich, den langen und kryptischen Dateinamen der verschlüsselten Datei wieder zu ändern. Die Datei kann trotzdem entschlüsselt werden, sofern die Dateiendung .fritz noch vorhanden ist. Aus Sicherheitsgründen wird der Dateiname immer mitverschlüsselt, da der Dateiname meist Informationen über die Datei enthält.

Der Empfänger der Datei muss nur Deinen Schlüssel in seinem Schlüsselbund auswählen und die Datei ebenfalls mittels Drag-and-Drop auf das Hauptfenster ziehen, um die Ursprungsdatei wiederherzustellen. Die Ursprungsdatei wird im selben Verzeichnis angelegt, wie die verschlüsselte Datei.

Kryptologisches

Die grundlegenden Vorteile von fritz sind eine sehr schnelle Verschlüsselung, sehr einfache und dadurch robuste Verschlüsselungsalgorithmen (Curve25519 + Salsa20 + Poly1305) und Immunität gegen alle derzeit bekannten Angriffe (u.a. Cache-Timing-Attacken oder Side-Channel-Attacken).

Fritz nutzt eine asymmetrische Verschlüsselung. Das heißt, dass jeder Teilnehmer ein Schlüsselpaar aus dem öffentlichen und dem geheimen Schlüssel besitzt. Eine Nachricht oder eine Datei wird mit dem geheimen Schlüssel des Senders und dem öffentlichen Schlüssel des Empfängers verschlüsselt und signiert. Somit kann nur der Sender oder der Empfänger diese Nachricht wieder entschlüsseln und dank der Signatur Veränderungen erkennen.

Die Schlüssellänge in fritz beträgt 32 Bytes (256bit). Dies ist jedoch keinesfalls unsicher, da eine asymmetrische Verschlüsselung verwendet wird. Es sind also immer 2 Schlüssel zum Verschlüsseln notwendig, der öffentliche Schlüssel des Empfängers und der geheime Schlüssel des Senders. Das Verschlüsselungsverfahren ist eines der modernsten und sichersten Verfahren (Stand 02/2013). In jede verschlüsselte Nachricht fließt Zufallstext mit ein. Dadurch sieht eine Nachricht, die mehrmals mit den gleichen Schlüsseln verschlüsselt wurde immer anders aus.

Beachte bitte, dass es mithilfe des geheimen Schlüssels und des öffentlichen Schlüssels möglich ist, alle jemals verschlüsselten Nachrichten dieses Schlüsselpaares zu entschlüsseln. Achte deshalb auf die Sicherheit Deines geheimen Schlüssels, indem Du ein sicheres Kennwort verwendest. Um die Sicherheit zu erhöhen, empfehlen wir, den öffentlichen Schlüssel auch geheim zu halten, bzw. nur über gesicherte Verbindungen auszutauschen.

Eine weitere Möglichkeit die Sicherheit zu erhöhen wäre es, alle Schlüssel in regelmäßigen Abständen komplett auszutauschen.

Mit fritz verschlüsselte Nachrichten oder Dateien sehen vom Inhalt genauso wie zufällig erzeugten Daten aus, weil es keinen Header oder Schlüsselwörter gibt, die auf fritz hinweisen. Lediglich die Dateiendung .fritz bei den Dateien dient als Erkennungsmerkmal. Somit ist es möglich, verschlüsselte Nachrichten oder verschlüsselte Dateien (nach Umbenennung) zwischen zufällig angelegten Daten zu verstecken, oder die Existenz der Daten abzustreiten.

Alle fritz-Versionen werden kompatibel zueinander sein. Nachrichten oder Dateien, die mit einer älteren Version von fritz verschlüsselt wurden, können mit jeder zukünftigen Version auch wieder entschlüsselt werden. Dabei spielt es keine Rolle ob fritz mittels libsodium oder subnacl gebaut wurde, beide Bibliotheken basieren auf dem gleichen Code.

Kennwort und Schlüsseldatei

Damit nicht jeder auf Deinen geheimen Schlüssel zugreifen kann, muss dieser mit einem Kennwort gesichert werden. Das Kennwort muss mindestens 10 Zeichen lang sein, mindestens 2 Zahlen, 2 Großbuchstaben, 2 Kleinbuchstaben und 2 Sonderzeichen enthalten. Das Kennwort muss alle 100 Tage geändert werden, kann aber auch jederzeit unter "Verwalten" > "Kennwort und Schlüsseldatei ändern" geändert werden.

Um den geheimen Schlüssel zusätzlich zu sichern, kann dieser, neben dem Kennwort, mit einer Schlüsseldatei verknüpft werden. Dazu wird von der Schlüsseldatei beim Programmstart von fritz ein Fingerabdruck (Hash) angelegt, der zusätzlich in die Berechnung des geheimen Schlüssels mit einfließt. Als Schlüsseldatei kann jede beliebige Datei angegeben werden, bspw. ein Video auf dem Desktop. Wichtig ist nur, dass diese Datei nicht verändert oder verschoben wird, da Du sonst nicht mehr an Deinen geheimen Schlüssel kommst.

Die Schlüsseldatei wird nur zum Start von fritz benötigt. Du kannst die Schlüsseldatei also auch auf einem externen Datenträger ablegen und nur zum Start von fritz den Datenträger mit dem Rechner verbinden. Der Pfad zur Schlüsseldatei kann nicht rekonstruiert werden, da dieser verschlüsselt in der Datei schluesseldatei.txt abgelegt wird.

Unter "Verwalten" > "Kennwort und Schlüsseldatei ändern" kann die Zuordnung zur Schlüsseldatei wie auch das Kennwort jederzeit geändert werden.

Programm kompilieren

Zum Kompilieren wird mingw, gcc, make, strip, windres und SubNaCl oder libsodium benötigt. In der Datei Makefile muss der Schalter WITH_LIBSODIUM gesetzt und die Pfade zu SubNaCl oder libsodium angepasst werden. Danach kann mit

fritz\build.bat

das Programm erstellt werden.

Mac- und Unix/Linux-Unterstützung

Fritz wurde primär für Microsoft Windows entwickelt, ist jedoch ohne Probleme mit Wine auf vielen Plattformen lauffähig. Der Einsatz von GTK+ kam für die Entwicklung nicht infrage, da fritz statisch gelinkt werden soll. Mit GTK+ wäre die Binärdatei etwa 8MB groß geworden.

Lizenz

fritz ist Open Source und wird unter der GPLv3 veröffentlicht.

Changes

18. Juni 2013 v1 - v2

  • Funktion byte_equal_notimingattack() hinzugefügt

11. Juli 2013 v2 - v3

  • gcc's Stack Protection aktiviert

13. August 2013 v3 - v4

  • Schalter für libsodium im Makefile und build-Script eingefügt, fritz kann ohne Veränderungen im Programmcode mit libsodium oder subnacl gebaut werden. Download von https://github.com/jedisct1/libsodium
  • Versionsbezeichnung zum Link "weitere Infos" eingefügt

23. August 2013 v4 - v5

Allgemein:

  • Codebereinigungen für besseren Lesbarkeit
  • secure_fopen(), secure_fclose(), secure_randombytes()
  • Programminfoleiste verändert

Bugs:

  • Fehler in der GUI beseitigt: byte_equal_notimingattack() wieder eingefügt
  • Fehler in der GUI beseitigt: Verschlüsseln einer Datei -> Progress-Fenster hat sich bei Abbruch nicht von selbst geschlossen
  • Fehler in der GUI beseitigt: beim Beenden der Schlüsselverwaltung ging die Schlüssel-Auswahl verloren
  • Fehler in der GUI beseitigt: bei Eingabe von MAX_INPUT Bytes passt der verschlüsselte Text nicht in das Textfeld -> Klartext wird vor dem Verschlüsseln entsprechend gekürzt.

Neue Funktionen:

  • Whitespaces werden bei der Eingabe von verschlüsseltem Text jetzt ignoriert, da manche Mailclients den verschlüsselten Text umbrechen.
  • Selbsttest der Kryptofunkionen beim Programmstart
  • Zufällige Schlüssel werden nun mit Raute (#) am Anfang des Namens markiert. Beim Kopieren eines solchen Schlüssels wird eine Warnung ausgegeben, da es keinen Sinn macht, solche Schlüssel weiterzugeben.
 27. April 2014 v5 - v6
  • Unterstützung für Mehrsprachigkeit hinzugefügt (deutsch, englisch)
    • neue Übersetzungen können erstellt werden, indem die Datei english.h kopiert, übersetzt und das Makefile angepasst wird.

Kommentare

Sven schrieb am 06. September 2013 10:42 Uhr

Interessant, schade dass der Crypto Teil nicht von der GUI getrennt ist. Ein Kommandozeilentool (für das man dann eine GUI schreiben kann) wäre nützlicher, oder?

Rene schrieb am 07. September 2013 10:12 Uhr

Hallo Sven,

ein Ziel bei der Entwicklung von Fritz ist es, jeglichen Programmcode in die exe-Datei zu integrieren, um es dem Anwender so einfach wie möglich zu machen, Fritz zu benutzen, und um die Möglichkeit von Angriffen gegen das Programm selber gering zu halten.

Deine Idee würde das Schreiben einer alternativen GUI erleichtern, für den Anwender jedoch würde die Benutzung komplizierter und das Programm unsicherer werden. Die Entwickler sind jedoch die Fachleute, die es gewohnt sind, sich mit kruden APIs zu kloppen ;) . Es macht also Sinn, es dem Anwender so einfach wie möglich zu machen und dafür einen höheren Entwicklungsaufwand zu investieren.

Sven, was auch immer Du vorhast, gehe einen Ansatz tiefer an die Sache und nimm die NaCl. Du kannst die Schlüssel aus Fritz dafür nutzen.

Gerade jetzt, im Zeitalter nach den NSA-Veröffentlichungen ist es angebracht, dreimal genauer hinzuschauen, gängige Methoden kritisch neu zu bewerten, um sichere Software zu schaffen.

Andy schrieb am 11. März 2014 08:29 Uhr

Ich möchte gerne mit einem guten Freund in Australien verschlüsselt schreiben. Er hat aber Probleme mit dem deutschen Menü. Gibt es das Programm auch mit einem Menü auf englisch?

Rene schrieb am 14. März 2014 08:16 Uhr

Hallo Andy,

eine englische Version ist in Arbeit.

Viele Grüße.

Andy schrieb am 29. Mai 2014 17:32 Uhr

Vielen Dank für die englische Version!

Andy schrieb am 07. Juni 2014 21:20 Uhr

ich nochmal. Eine Datei mit 20 GB schafft Fritz nicht zu verschlüsseln. Fritz stürzt ab. Was mache ich falsch?

Rene schrieb am 10. Juni 2014 21:28 Uhr

Hallo,

gar nichts, POSIX fopen() und co. können nur 32bit-Operationen an Dateien ausführen. Heißt konkret, maximal 3.2GB große Dateien können verarbeitet werden.

Ich kümmer mich drum...

Rene schrieb am 21. Juli 2014 10:47 Uhr

Hallo,

das nächste Release wird noch eine Weile auf sich warten lassen, da Fritz komplett überarbeitet wird (u.a. Unicode, Winapi-Dateioperationen, eigener PRNG, eigenes malloc(), Umbau auf tweetnacl ...

Andy schrieb am 23. Juli 2014 01:20 Uhr

Vielen Dank für deine Mühe und die Arbeit!

Kommentar schreiben

Name

Kommentar