Passkey-ProbePasskey probe
Beantwortet eine Frage auf echter Hardware: Kann ein Sicherheitsschlüssel eine Identität auf ein zweites Gerät tragen — per PRF, per largeBlob, oder gar nicht? Ein Schlüssel, zwei Telefone, dieselbe Adresse.
Answers one question on real hardware: can a security key carry an identity to a second device — by PRF, by largeBlob, or not at all? One key, two phones, the same address.
Und die zweite Frage, aus #61: Lässt sich die Identität auf dem zweiten Gerät ganz ohne gespeicherte Daten wiederherstellen — nur aus dem Schlüssel, mit zwei Berührungen?
And the second question, from #61: can the identity be restored on the second device with no stored data at all — from the key alone, with two touches?
Diese Seite legt einen eigenen Test-Passkey an. Sie hat mit keiner echten Identität zu tun, und sie zeigt den geheimen PRF-Wert nie an — nur einen kurzen Fingerabdruck zum Vergleichen.
This page creates a test passkey of its own. It has nothing to do with any real identity, and it never shows the secret PRF value — only a short fingerprint to compare.
Dieser BrowserThis browser
SchritteSteps
ErgebnisseResults
Noch nichts geprüft.Nothing checked yet.
So liest man das ErgebnisHow to read the result
| Beobachtung | Bedeutung |
|---|---|
| PRF-Fingerabdruck auf beiden Telefonen gleich | Die Identität kann per PRF wandern. |
| PRF-Fingerabdruck verschieden | Nur aussagekräftig, wenn das Passkey-Kennzeichen auf beiden Telefonen gleich ist — sonst wurde ein anderer Passkey gewählt. |
| „kein PRF-Ergebnis“ | Dieser Browser oder Schlüssel liefert kein PRF. |
| Anlegen: largeBlob.supported = false | largeBlob steht für diesen Passkey nicht zur Verfügung — Schreiben wird scheitern. Nur hier lässt sich „nicht unterstützt“ von „leer“ unterscheiden; beim Lesen sieht beides gleich aus. |
| Schreiben: written = true, auf dem anderen Telefon lesbar | Die Identität kann per largeBlob wandern. |
| Schreiben: written = false oder fehlt | Nichts wurde gespeichert — obwohl der Browser keinen Fehler geworfen hat. |
| Schritt 5 zeigt denselben DID-Fingerabdruck wie Schritt 1 auf demselben Gerät | Der öffentliche Schlüssel lässt sich auf echter Hardware aus zwei Signaturen zurückgewinnen. |
| Schritt 5 auf beiden Telefonen: DID-, PRF- und Signierschlüssel-Fingerabdruck gleich | Die Identität lässt sich auf einem zweiten Gerät ohne gespeicherte Daten wiederherstellen — der Vorschlag aus #61 trägt. |
| PRF-Fingerabdruck in Schritt 5 anders als in Schritt 2 | Richtig so: Schritt 5 benutzt die PRF-Eingabe aus #61, Schritt 2 eine eigene. Verglichen wird Schritt 5 mit Schritt 5. |
| Schritt 5: „kein ES256“ | Dieser Passkey signiert nicht mit P-256 (sondern z. B. EdDSA). Aus solchen Signaturen lässt sich der öffentliche Schlüssel nicht zurückgewinnen. |
| Schritt 5: DID ja, aber „kein PRF-Ergebnis“ | Die Adresse (DID) ist da, der Signierschlüssel nicht. Die Bibliothek verweigert in diesem Fall, statt einen Ersatz zu erfinden. |
| Observation | Meaning |
|---|---|
| PRF fingerprint the same on both phones | The identity can travel by PRF. |
| PRF fingerprint different | Only meaningful if the passkey ID is the same on both phones — otherwise a different passkey was chosen. |
| “no PRF result” | This browser or key does not deliver PRF. |
| Create: largeBlob.supported = false | largeBlob is not available for this passkey — writing will fail. Only here can “not supported” be told from “empty”; on reading, both look the same. |
| Write: written = true, readable on the other phone | The identity can travel by largeBlob. |
| Write: written = false or missing | Nothing was stored — although the browser threw no error. |
| Step 5 shows the same DID fingerprint as step 1 on the same device | The public key can be recovered from two signatures on real hardware. |
| Step 5 on both phones: DID, PRF and signing-key fingerprints the same | The identity can be restored on a second device with no stored data — the proposal from #61 holds. |
| PRF fingerprint in step 5 different from step 2 | As it should be: step 5 uses the PRF input from #61, step 2 one of its own. Compare step 5 with step 5. |
| Step 5: “no ES256” | This passkey does not sign with P-256 (but, for example, with EdDSA). The public key cannot be recovered from such signatures. |
| Step 5: DID yes, but “no PRF result” | The address (DID) is there, the signing key is not. In this case the library refuses rather than invent a substitute. |