Kompliziert und eine Menge fails auf einmal, bin kurz vor Umtausch


#1

Mein Storage wurde heute geliefert und ich habe damit ein wenig experimentiert; ich habe mir die Bedienung und Funktion völlig anders vorgestellt.

  1. Auf der Webseite steht, dass man die Firmware verifizieren soll. Also habe ich in der App die Exportfunktion benutzt und mich dann gefragt, wo die Firmware wohl gelandet ist. In meinem home habe ich nichts gesehen. Habe dann später gemerkt, dass sie auf dem Stick selbst abgelegt wird. Hätte hier erwartet, dass ich gefragt werde, wo die Firmware landen soll und kam gar nicht darauf, dass der Stick eine frei lesbare Partition hat. Der Zeitstempel 0 der exportierten Firmware hat mich übrigens verwundert.
  2. Dann habe ich nach der Prüfsumme gesucht, bin auf der github-Seite gelandet und habe dort nur die hex-Dateien und die Prüfsummen dafür gefunden. Der export ist eine bin-Datei und stimmte nicht überein. Ist hex != bin? Gibts eine Konvertierungsmöglichkeit? Keine Informationen darüber. Dann habe ich gesehen, dass es einen zwei Wochen alten 0.9RC gibt und von der 0.5x Version ist keine Spur - stelle in der App auf Updatemodus - hm, “lässt sich nicht ändern” - tja egal, die Fw soll halt drauf. Dann gesehen, dass im Gentoo ebuild das Updateprogramm nicht dabei ist. Na toll, man bekommt den Key nicht mehr aus dem Updatemodus und kann nicht updaten? Hm, dann kompilier ich die Sourcen selber… äh, kein Makefile? Keine Readme dazu? Soll ich mir jetzt aus den Fingern saugen, wie man den Code baut? Windows gebootet und die Updatesoftware für Windows besorgt. Stress mit dem Defender gehabt, aber dafür kann ja nur MS etwas (ist aber ein weiteres i-Tüpfel heute). Dann gemerkt, dass die 0.9er Fw für ein anderes Nitrokey-Produkt ist und dass es für den Storage die 0.50 als neusten Download gibt. Bin mir beinahe sicher, dass ich eigentlich irgendeine 0.50.1 Version 51.1 oder irgendwie sowas auf dem Key hatte, aber das ist ja jetzt nicht mehr zu ändern oder nachzusehen, wenn in dem Menü jetzt 90% der Einträge fehlen, ich die Fw nicht als hex exportiert habe und was einspielen muss, um wieder meine Funktionen zurückzubekommen, wie ich vermute.
  3. Flashen ging immerhin; hm, die Menüs sind immernoch unvollständig, aber nur unter Linux, nicht unter Windows? Kapier ich nicht, das betrifft doch nicht die nitrokey-app, sondern die Hardware… ach, jetzt muss ich unter Linux den Key erst mounten? Gna, whatever, dann habe ich das entweder beim ersten Einstecken anders gemacht oder der Stick hat sich da anders verhalten. Dann steht in der Anleitung für die Ersteinrichtung, dass man ganz neue Keyhardware eigentlich noch initialisieren muss, das würde man selber machen müssen weil Sicherheit-trara und das würde einige Zeit dauern. Die genannte Funktion gibts aber in keinem einzigen Menü/Reiter/sonstwo. Es gibt auch keinen Screenshot dazu, um es zu vergleichen.
  4. Egal, das scheint ja trotzdem erstmal zu funktionieren. Dann mal sehen, wie man jetzt in der App Keys erzeugt - öhm, ach dafür muss ich doch gpg benutzen? Hatte irgendwie den Eindruck, der Key könne das selber, vom OS getrennt etc. Oder war das bei Yubi so? Verflixt. Egal, also mit gpg 2.2.7 ed25519 Keys erstellt, weil der Stick laut Key-Übersicht ECC Keys kann. Dann versucht, den Signier-Unterschlüssel mit keytocard auf den Key zu schreiben: “gpg: Das KEYTOCARD Kommando schlug fehl: Ungültiger Wert” Na toll, welcher Wert ist denn ungültig und was wird EIGENTLICH erwartet? Keine Info; also im GPG Handbuch zu dem Thema nachgeschlagen: “Dieser Eintrag muss noch verfasst werden”. Na Halleluja. Na schön, in der Anleitung wird Enigmail empfohlen, dann erzeuge ich halt einen Schlüssel damit und schreibe den auf den Key, das scheint der Dialog ja zu können. Konto auswählen, Passphrase eingeben, Gültigkeit angeben… es poppt ein Warnfenster komplett ohne Text auf und nichts weiter geschieht. Ja, awesome - was ist das Problem, wie kann ich es fixen, brauche ich eine Kristallkugel dafür?
    Moment, da steht beim cardinfo “Key attributes …: rsa2048 rsa2048 rsa2048” Dann kann das Ding DOCH kein gpg mit ECC?? Benutzt enigmail gar gpg defaults, wo zumindest ein Subkey wohl in dsa erzeugt wird? Seufz, ich will kein RSA, DSA oder anderes, sondern ed25519… egal, dann erstell ich halt rsa2048 Keys zum testen. Na prima, das keytocard funktioniert auf einmal! Testmail mit enigmail signieren und crypten: “Verschlüsseln fehlgeschlagen” Ja toll, WARUM und bei welchem Kommando denn? Steht nicht da, Enigmail bedarf wieder einer Glaskugel. Egal, Thunderbird ist eh ein hoffnungsloses Programm; Stick ins Smartphone gesteckt. OpenKeychain poppt auf, juhu, immerhin. Jetzt sucht es nach Keys auf Schlüsselserver, Token, sonstwo… nichts gefunden. Mit cardstatus nochmal nachgesehen: Die sind aber drauf! Nochmal ins Smartphone -> nö. OKEE, dann erzeug mir halt selber welche, Mensch, die wirste hoffentlich finden! Daten zum Generieren eingeben… PIN eingeben… Speichern auf dem Token fehlgeschlagen - WTF… Wiederholen. Fehlgeschlagen. Raus mit dem Stick… jetzt gehts! Einmal zurück im Dialog, Stick wieder rein, nochmal generieren - ach jetzt gehts doch? Aha, ich habe nun zwei Keys - einen lokalen auf dem Smartphone, einen auf den Key eine Minute später. Meinetwegen… Test mit K9 Mail nach ein bissel Einrichten funktioniert sogar mit dem Schlüssel vom Nitrokey. Stick jetzt in den PC zurück, dieselbe Mail mit Enigmail öffnen… Schlüssel nicht gefunden. Tableflip
  5. Egal, ich will jetzt ed25519 haben und grundsätzlich gehts ja anscheinend. Auf der Webseite steht was zum Support elliptischer Kurven; man kann das Feld mit ‘gpg-connect-agent “SCD SETATTR KEY-ATTR --force 1 22 ed25519” /bye’ umstellen, vielleicht komme ich ja doch dahin, wo ich hin will - Nö, “ungültiger Wert”… seufz.

Ich hätte mir eine richtige Doku gewünscht, die dem Produkt beiliegt, aka Papierhandbuch oder pdf auf dem Stick. Ich hätte mir Klarheit bzgl. der Firmwareversionen gewünscht; ein Aufkleber bei Produktion mit der geflashten Fw und Datum wäre nicht schlecht gewesen (das Ding kann ja zwei Jahre im Lager gelegen haben), ich hätte mir gewünscht, dass der Key oder zumindest die App mir die gpg-Schlüssel erzeugen und dass ich die Felder der Smartcard darüber sehen/anpassen kann.
Ich hab mir gedacht, das ist endlich ein Kryptoprodukt, das meine Oma benutzen kann: auf Knopfdruck bekommt man seine Keys generiert, kann sie am Schlüsselbund mit sich herumtragen und Software kann das automatisch finden und nutzen, ohne dass ich mehr als die PIN eingeben muss. Aber dem ist leider nicht so.
Ich bin gerade ENORM enttäuscht; es war ein langer Tag und vielleicht habe ich mich einfach nur dumm angestellt, aber das war ein ganzer Cluster an Fails auf einmal, die Funktionsweise muss man sich zusammenreimen, die Doku zusammenklauben und das hätte alles so nicht sein sollen; ich komme mir vor wie ein DAU. Und dann das Problem mit der scheinbar fehlenden ed25519-Unterstützung… Kann der Storage jetzt GPG mit ed25519 oder nicht und OpenSSH mit ed25519 oder nicht und wenn ja, wie? Falls nein, muss ich leider vom Umtauschrecht Gebrauch machen.


#2

Hallo Mark,

zunächst tut es mir natürlich Leid, dass dich der Nitrokey enttäuscht hat.

Zu 1.
Während das Auswählen des Speicherorts nicht einfach realisiert werden kann (die Funktion wird aus Sicherheitsgründen direkt von der Firmware ausgeführt), sollte die App die Nutzer wenigstens über den Speicherort informieren, das stimmt! Ich habe entsprechend ein Ticket auf Github erstellt.

Zu 2.
Das Überprüfen der Binary ist leider in der Tat etwas haarig und nicht sonderlich gut dokumentiert. Zusätzlich gibt es folgendes Problem. Ich habe mir notiert, hierzu eine gute Anleitung zu schreiben, danke für den Hinweis!

Das Update-Tool ist gerade ganz neu von uns entwickelt worden (und erst seit Montag auf der Webseite beschrieben), weil der alte Prozess zu kompliziert war. Leider hat sich die Veröffentlichung des Linux-Tools verzögert. Sonst hättest du einfach nur eine ausführbare Datei herunterladen brauchen. Ich hake nach, warum die Linux-Variante noch nicht veröffentlicht wurde. Tut mir Leid, dass du in dieses Problem hinein geraten bist, das war schlicht unnötig.

Zu 3. bis 5.
Einige der Punkte kritisiert du sicherlich zu recht! Auch ich wünschte mir, dass die verschiedenen genannten Tools alle perfekt wären (einschließlich unserer Dokumentation). Dennoch sind wir nicht in allen Punkten der richtige Adressat. Ich bitte dich zu beachten, dass wir vollständig auf Open Source Software und Hardware setzen. Das heißt aber auch, dass unsere Produkte oft auf andere Open Source Projekte angewiesen sind. Manche funktionieren besser, manche schlechter. An diesem grundsätzlichen Punkt können wir aber erst einmal auch nichts ändern. Dafür sind unsere Ressourcen zu beschränkt (schließlich sind wir bisher ein vergleichsweise kleines Unternehmen), als dass wir die diversen Open Soruce Projekte alle in “perfekt” verwandeln könnten, indem wir viel Geld investieren.

Dass unsere Dokumentation verbessert werden muss, haben wir aber tatsächlich im Blick und arbeiten stetig dran.

Ja der Stick unterstützt elliptische Kurven (NIST und Brainpool, aber nicht Bernstein!), jedoch sind noch nicht alle Programme darauf eingestellt (z. B. Thunderbirds Enigmail oder ältere GnuPG Versionen etc.).

Hier gibt es eine Anleitung dazu, die aber noch nicht offiziell verlinkt oder veröffentlicht ist, da dieses Feature erst seit kurzem existiert (Wechsel der internen Smartcard auf OpenPGP Card v3).

Bitte sag Bescheid, falls du weitere Fragen hast.

Liebe Grüße
Alex


#3

Danke für die Info. Mir ist auch bewusst, dass hier viele verschiedene Komponenten ineinander übergreifen, das kam nur alles denkbar ungünstig zusammen.
Das Howto mit den Kurven funktioniert, danke dafür. Kann Unterstützung für die Bernstein-Kurven irgendwann per Firmware nachgerüstet werden, oder ist das Hardware-bedingt?
In dem Howto wäre noch nützlich, wenn alle unterstützten Kurven explizit genannt werden und der Text zumindest mit einer groben Entscheidungshilfe versehen wird; ich habe mir dazu https://safecurves.cr.yp.to/ und https://www.keylength.com/ angesehen.

Bei Enigmail war übrigens ein Problem, dass das curses pinentry aktiv war und daher ohne Konsole nicht sichtbar wurde. Jetzt bin ich noch auf das Phänomen gestoßen, dass Enigmail nicht gleichzeitig signieren und verschlüsseln kann, beides unabhängig aber schon. Ist vermutlich ein Bug in Enigmail.
Open-Keychain findet das Token leider gar nicht mehr, wird nur beim Einstöpseln getriggert, sucht dann und scheitert. Ich habe wie in einem anderen Posting hier versucht, einen USB-Hub mit Strom zu verwenden, aber das hat nichts gebracht. Jetzt weiß ich nicht, ob das Programm mit Brainpool nicht klarkommt oder ob der Nitrokey am Smartphone nicht richtig erkannt wird.

Gestern Abend hatte ich das Phänomen, dass der Nitrokey sich öfters disconnected (habe USB2 und 3 Ports und einen 2er-Hub mit Stromanschluss probiert), das dürfte eigentlich nicht passieren. Ist es außerdem normal, wenn der Key gewisse Temperaturen erreicht? Ich habe den Key jetzt 20 Minuten eingesteckt und das Gehäuse ist 41 Grad Celsius warm.

Ich habe noch eine Bitte: Der Workflow für OTP ist etwas unglücklich. Dass ich die Zeichenkette der Webseite in das Feld eingeben muss, in dem ich selber Zufallszeichenketten generieren kann (wofür eigentlich?), habe ich geraten. Dass die zeitlich generierte PIN nicht auf dem OTP-Reiter angezeigt wird, sondern über Menu/Passwords/, habe ich erst nach einem Tag rumsuchen gesehen; das steht zwar in der Anleitung (“wähle im Menü den Slot aus”), aber ich habs nicht verstanden und die ganze Zeit überlegt, welches Menü in dem OTP Dialog gemeint sein soll und warum bei der Slotauswahl dort kein Dialog aufpoppt, wie in der Anleitung beschrieben. Vor allem habe ich nach einer Ziffernkette mit Gültigkeitstimer gesucht, wie FreeOTP oder RSA-Token sie generieren und bin nicht auf die Idee gekommen, dass das hier nicht genauso aussieht.
Das Design dieser Funktion sollte unbedingt angeglichen werden, denn wenn die gleiche Funktion anders umgesetzt wird, sorgt es für Verwirrung. In der Anleitung wäre daher ein Screenshot hilfreich gewesen (sorry, da war ich echt doof, aber das hat mich trotzdem einen Tag gekostet). Baut vielleicht auf die Overview-Seite eine Dropdownbox für die Slots und ein lesbares Textfeld mit der Ziffernkette und einer Gültigkeitsanzeige ein (verschwindende Punkte oder sowas). Dann lässt sich direkt identifizieren, wozu das gut ist und es ist bei den Hauptfunktionen Password-Safe, Encrypted Volume usw.
Der Menüeintrag sollte vielleicht auch nicht “Passwords” heißen, sondern OTP oder 2FA.

Noch eine Frage: Wann genau geht die LED an?


#4

Da die zugrunde liegende OpenPGP Card per Spezifikation nur diese beiden Kurven unterstützt, kann auch kein Firmware Update eine andere hinzufügen. Insofern sind auch alle verfügbaren Kurven in der Anleitung aufgelistet.

Genauso wie GnuPG braucht auch Open-Keychain zunächst einen öffentlichen Schlüssel, um den privaten Schlüssel des Nitrokey zuordnen zu können (sonst ist schlicht die zugehörigen E-Mail und Name etc. nicht bekannt). Hierfür bieten sich drei Möglichkeiten an:

  • den öffentlichen Schlüssel auf einen Keyserver lagern
  • den öffentlichen Schlüssel auf einer (eigenen) Webseite lagern und das URL-Feld der OpenPGP Card entsprechend setzen (‘gpg --card-edit’ -> ‘admin’ -> ‘url’)
  • den öffentlichen Schlüssel zunächst als Datei importieren

Danach sollten die Schlüssel erkannt und zugeordnet werden (eben getestet mit Brainpool). Siehe auch hier.

Wie genau hat sich das geäußert?

Ja, ist es.

Wir haben seit der neuesten Version der App das Aussehen verändert (vorher gab es kein Fenster, sondern nur das Icon in der Systemleiste). Daher haben sich die Dinge etwas geändert. Vielen Dank für den Hinweis. Wir versuchen das noch zu verbessern, das sollte man natürlich nicht suchen müssen…

Beim Nitrokey Storage leuchtet die rote Lampe immer dann, wenn Interaktionen mit der internen Smartcard stattfinden, also bei E-Mail-Verschlüsselung u.ä., bei Zugriff auf den Passwortsafe, OTP und Entsperren des veschlüsselten Speichers etc.

Die gründe LED leuchtet bei Zugriff auf die SD-Karte, also bei Zugriff auf den Speicher.

Liebe Grüße
Alex

PS: Es wäre hilfreich, wenn du beim nächsten Mal für bestimmte Probleme lieber einen eigenen Forumseintrag schreibst, so dass auch andere User gut die Antworten finden können (zum Beispiel meine Erklärungen zu Open-Keychain). Vielen Dank!


#5

Übrigens wäre es für Updates auf Linux besser, wenn dazu LVFS genutzt werden könnte, siehe: