U2F FIDO

From
Jump to navigation Jump to search

Google Quellen

Slides von der Google Präsentation:

Beispiel Demo, welche ausschließlich mit einem Gnubby und einem existierenden Google Account funktioniert:

Dokumentation der Daten, welche an und von dem Gnubby übermittelt werden

Google U2F Protocol and API Details

API Referenzen

Javascript referenz, welche in der Chome extension verwendet wird: http://fidoalliance.org/specs/fido-u2f-javascript-api-v1.0-rd-20140209.pdf

Git Repositorys

Original Repo von Google mit Beispielcode:

https://github.com/google/u2f-ref-code/

Modifiziertes Repo von Marc. In dem u2f-ref-code wurde ein sehr einfacher Login als Beispiel implementiert. Auch wird in u2f-chrome-extension der Localhost akzeptiert, welcher in dem original mit einem "Error 2" abgelehnt wird:

https://github.com/MarcKe/u2f-ref-code

Erläuterung der Änderung

Um den Localhost zu akzeptieren, müssen folgende Zeilen in der "etld.js" eingefügt werden:

  if (host.indexOf(':') != -1) {
    host = host.substring(0, host.indexOf(':'));
  }
 
   if (host == "localhost") {
 	  return host;
   }
  // Loop over each possible subdomain, from longest to shortest, in order to
  // find the longest matching eTLD first.
  var next = host;

Beispieltoken der erstellt wird

Interessant ist hierbei die Gültigkeit des Zertifikats. Dies kann jedoch durch die Version (v0), also die frühe Entwicklung Token selbst zu tun haben.

 new token:
 public_key: BPEfrHYFJIe7aMAljNIq3Gv7nlHdhkxjZYEOzpMhjsz6zXxJVmPZgW7hr6YEkLInTTRSKlhTBST80mu6vx4LPIU
 key_handle: xGDwceuts3WnDLvAuCUvPj6MZ59EMRusdd9SpM6ipQIO_lYOD40NW9HzwdkcwaWY1xvl54G5MuUDTfbRIrpaxw
 counter: 0
 attestation certificate:
 Version: V3
 Subject: OID.2.5.4.45=#030A00013284FFFFFFFF0444, CN=Google Gnubby v0
 Signature Algorithm: SHA256withECDSA, OID = 1.2.840.10045.4.3.2
 Key:  Sun EC public key, 256 bits
 public x coord: 76325047710147689659458271283597733852774968588358871702791068908014891073689
 public y coord: 51805930702706814209933188884277181691700110245786325738983307203119170576020
 parameters: secp256r1 [NIST P-256, X9.62 prime256v1] (1.2.840.10045.3.1.7)
 Validity: [From: Fri Jun 01 02:00:00 CEST 2012,
              To: Thu Jun 01 01:59:59 CEST 2062]
 Issuer: CN=Gnubby HSM CA 00
 SerialNumber: [    013284ff ffffff04 44]
 Algorithm: [SHA256withECDSA]
 Signature:
 0000: 30 44 02 20 78 7D 36 9D   3D E3 ED CE ED AA 8D 9A  0D. x.6.=.......
 0010: 6D 36 25 50 D3 39 98 27   11 DA 1D A5 A7 97 A4 93  m6%P.9.'........
 0020: 93 BB 0C 94 02 20 17 93   7E C1 61 BF 14 61 FA 29  ..... ....a..a.)
 0030: D9 CF 8A A5 BA CA 23 2E   E6 52 52 A9 06 D1 31 9F  ......#..RR...1.
 0040: A2 94 68 F6 2A 70                                  ..h.*p

USB Transaction

TODO: anhängen der Datei

Was nicht funktioniert oder in der verfügbaren Zeit nicht möglich ist

Erstellen von Zufallszahlen mit dem Gnubby

Nach bisherigen Erkenntnissen, ist es nicht möglich Zufallszahlen mit dem Gnubby zu erstellen, da keine Funktion in der API vorhanden ist. Jedoch ist die Wahrscheinlichkeit hoch, das der Gnubby diese Möglichkeit besitzt, deswegen könnte es auf andere Wege funktionieren.

Separate Module für einzelne Dienste

Es ist möglich, anhand der "u2f-gae-demo" ein einzelnes Modul für Apache, Tomcat, Jboss, etc. zu erstellen. Dieses Beispiel von Google funktioniert auf einem Server mit der Google App Engine.

NFC

Zum Zeitpunkt des Seminars war die Anbindung über NFC noch nicht möglich, da noch keine Unterstützung von Google gegeben wird. Eine Beispiel-App des Herstellers existiert bereits, jedoch kommuniziert diese nicht mit dem Token. Die Beispiel-App ist hier und hier zu finden