CryptoStick Interface

Hallo,

ich entdeckte kürzlich dieses Projekt und bin ganz begeistert. Wirklich genial.
Ich bin selbst Embedded Entwickler und habe eine Frage zum Interface. Denn was mir negativ auffällt ist, dass man Treiber oder Software Pakete installieren muss um den Stick zu nutzen. Ich frage mich ob ein Filesystem basiertes Interface zu realisieren wäre, dass erst einmal (mehr oder weniger) plattformunabhängig wäre.

Disclaimer: ich bin ganz Neu im Bereich Kryptographie und es ist möglich, dass ich aus Unwissenheit Unsinn rede, oder dass es was ich mir vorstelle längst gibt. In diesem Fall nehmt mir meine Worte bitte nicht übel.

Aber zurück zu meiner Frage. Ich stelle mir folgendes (optionales) Interface für den CryptoStick vor:

[ul]
] Beim Einstecken des Sticks erscheint er als regulärer USB Stick Massenspeicher, formatiert mit einem Dateiformat mit dem nahezu jedes Betriebssystem etwas anfangen kann (FAT16/32?)/:m]
] Das Interface besteht einzig aus dem Erstellen von Dateien. Beispiel: ich will eine Nachricht mit einem Key verschlüsseln also lege ich die Nachricht auf den Stick (Datei encrypt.txt), erstelle eine Datei command.txt in der “encrypt --key 2” steht und warte bis eine Datei “encrypted.txt” existiert, in der meine Nachricht verschlüsselt vorliegt/:m][/ul]

Mit so einem Interface wäre der Stick wahrlich plattformunabhängig (sofern das Dateisystem unterstützt wird). Software für jede einzelne Plattform könnte dann darauf aufbauen. Ich persönlich würde mir lediglich eine Handvoll Scripte mit auf den Stick legen die unter Windows und Linux laufen. Dadurch muss ich nichts installieren, ich kann den Stick überall benutzen. Macht das Sinn? Was spricht dagegen? Gibt es so etwas schon? Lohnt es sich weiter in diese Richtung zu denken?

Viele Grüße,
Sebastian

Hi Sebastian,
genau ein solches Interface haben wir geplant und auch schon die Grundlagen (Input/Output) implementiert. Was noch fehlt ist die Implementierung der einzelnen (an GnuPG angelegten) Befehle. Hast Du Lust uns dabei zu unterstuetzen?

Als einen ersten Entwurf sehe ich folgende Dateien/Ordner:

decrypt/ (FOLDER) (Emails oder Dateien entschluesseln)
sign/ (FOLDER) (Emails oder Dateien signieren)
unlock (FILE) (fuer den veschluesselten Speicher)
lock (FILE) (fuer den veschluesselten Speicher)
update firmware/ (FOLDER)
read firmware (FILE)

Wie Du siehst sind hier keine Operationen zum Verschluesseln und Signaturpruefung enthalten. Der Grund ist, dass diese Operationen mit Fremdschluesseln ausgefuehrt werden. Um dies also zu ermoeglichen, muesste man die entsprechenden Schluessel im Befehl mitliefern. Waere das sinnvoll?

Wow, Klasse! Genau an so etwas habe ich gedacht.

Und Du hast natürlich recht - zum Verschlüsseln muss der Fremdschlüssel mitgeliefert werden. Als erweitertes Feature könnte der Stick auf einfache Art und Weise Fremdschlüssel verwalten. Oder man hat die Möglichkeit einfach welche abzulegen und gibt dann immer einfach an mit welchem man verschlüsseln will. Damit hätte man eine Art Public-Key-Ring immer dabei. Hat vielleicht Vorteile.

Ich könnte mir vorstellen zu Helfen, ja, die Zeit ist vielleicht ein Problem. Und erst einmal bräuchte ich wohl Hardware? Wozu kannst Du mir diesbezüglich raten, Selbstbau, Kauf eines aktuellen CryptoStick mit Flash-Tool?

Sebastian

Müsste man wirklich den Schlüssel mitliefern, oder würde die Key-ID oder die Mail-Adresse des Empfängers reichen ?

Dann könnte eine Suche auf einem Key-Server mit einem dieser Parameter initiiert werden.

  • Bei keinem Treffer oder keiner Verbindung zum Internet → Fehlermeldung
  • Bei genau einem Treffer → Verschlüsselung (mit gefundenem sowie dem eigenen Schlüssel)
  • Bei mehr als einem Treffer → Auswahldialog (wie bei der GnuPG Key-Suche)

Der Ansatz mittels Keyservern (von fbrueckn) loest das Problem nicht: 1. sind nicht alle Fremdschluessel hochgeladen 2. sagt das Vorhandensein eines Schluessels auf einem Keyserver noch nichts ueber das Vertrauen aus und das Vertrauen in Schluessel wird ueblicherweise lokal im eigenen Schluesselring konfiguriert 3. kann die Embedded-Applikation nicht auf das Netzwerk/Internet zugreifen.

Daher sehe ich folgende Moeglichkeiten:

  1. Referenz auf Keyring, Schluessel ID oder Emailadresse und Keyring-Passwort in Operation uebergeben. Der Stick wuerde dann auf den Keyring zugreifen und den entsprechenden Fremdschluessel fuer die Operation verwenden. Dies wuerde nur funktionieren, wenn der Schluesselring auf dem Stick abgelegt ist.
  2. Fremdschluessel direkt in Operation uebergeben. Der Stick wuerde die Operation einfach mit dem mitgelieferten Fremdschluessel ausfuehren. Die zugreifende Anwendung bzw. Benutzer muesste sich um das Schluesselhandling kuemmern.

Wie sollte eine entsprechende Datei strukturiert sein? Insb. bei Variante 1, bei der mehrere Datenfelder noetig sind? Ist XML zu komplex hierfuer?

Bzgl. Entwicklungsumgebung melde ich mich spaeter bei einervondenen.

OK, überzeugt.

Die Idee klingt nicht abwegig, siehe stackoverflow.com/questions/6097 … xml-format :wink: