PaulEdison
Cadet 4th Year
- Registriert
- Juni 2016
- Beiträge
- 73
Hallo,
Ich versuche gerade zu verstehen was Passkeys sind und wie sie funktionieren, und am besten geht das glaube ich das ich sie versuche zu beschreiben und ihr sagt mir ob ihr das auch so seht
Also, sie basieren auf dem Private-Public Encryption Prinzip, das folgendermaßen eingesetzt wird:
01: Client: User surft mit seinem Browser auf eine Website "example.com" (die Passkeys unterstützt)
02: Client: User authentifiziert sich bei seinem login mit Username + passwort.
03: Client: User geht in Webseite auf "Passkey hinzufügen" und löst damit folgenden Erstellungsprozess aus:
04: Client: Browser startet im "Secure Element" (TPM, etc) die Erstellung des Key-Pair (private + public)
05: Client: Browser sendet den "Public Key" an den server
06: Server: Hinterlegt den "Public Key" im Account Profil des users.
07: Client: Hinterlegt den "Private Key" im "Secure Element" in einer DB in einem KeyValue paar ab ("example.com" -> "Private Key").
08: Time goes by
09: Client: surft wieder auf die Website "example.com", gibt den Username an und klickt auf "login mit passkey"
10: Server: sendet ein "gib mir den Passkey für meine domain" + hier ist die "Challenge"
11: Client: Brower öffnet eine Lokale "autorisierungsabfrage" -> diese ist der Windows Login PIN / Finger Abdruck
12: Client: User gibt den PIN ein
13: Client: Browser übergibt die domain "example.come" + die "Challenge" an das "Secure Element" und sagt "Passkey login"
14: Client: "Secure Element" signiert die "Challenge" und gibt diese "Response" zurück.
15: Cleint: Browser sendet die "Response" zurück
16: Server: kann die "Response" mit dem im Account hinterlegten PublicKey verifizieren -> nutzer ist autorisiert. (ab hier wir mit passwort login -> cookie/session ID bla bla)
17: Time goes by
18: Client: User clickt auf phishing link und kommt auf eine seite die so aussieht wie "example.com" aber wirklich "example.trusted-verification.com" ist.
19: gibt den Username an und klickt auf "login mit passkey"
20: Server: sendet ein "gib mir den Passkey für meine domain" + hier ist die "Challenge"
21: Client: Brower öffnet eine Lokale "autorisierungsabfrage" -> diese ist der Windows Login PIN / Finger Abdruck
22: Client: User gibt den PIN ein
23: Client: Browser übergibt die domain "example.trusted-verification.com" + die "Challenge" an das "Secure Element" und sagt "Passkey login"
24: Client: "Secure Element" sagt - die einträge gibt es nicht -> phishing verhindert.
So weit so gut. aber ich habe dennoch ein paar Fragen.
1) Stimmt das mal so in etwa?
2) Wäre ein ablegen im "Secure Element" mit einem PublicKey des Servers nicht besser als nur die domain? Oder ist das egal?
3) Mir ist klar das Privat-Public-Key verfahren viel sicher ist als Passwörter austauschen, aber hängt dann nicht automatisch alles von dem "Secure Element" ab?
3.1) Es wird zu einem sehr lohnenden Ziel?
3.2) Eine Synchronisierung ist als solches nicht möglich?
3.3) Gibt es eine Backup möglichkeit der Datenbank (eine Syncronisierung sehe ich nicht als solche an)?
4) Ist auch trotz dem PP-Key verfahren nach wie vor ein MITM angriff möglich? (Beim schrieben denke ich dass sollet mittels PKI (HTTPS und Certifikaten (und auch PP-Key)) verfahren unterbunden werden) - aber trotzdem)
5) Gibt es Implementierungen die auf einem normalen PasswordStore (e.g.: KeypassXC etc) bassiert?
6) Ist die Idee das ich mich mit jedem Gerät einzeln in einem Account mit einem eigenen Passkey eintrage? (Apple, Google bieten schon syncroniseirung an, aber auch mit Windows?)
7) Gibt es schon Linux (Desktop) Lösungen?
8) Gibt es auch die Möglichkeit mehrere Accounts auf einem "Secure Element" für einen Server zu hinterlegen (ein Account für meine Mutter einen für mich?)
9) Wo ist der unterschied zu YubiKeys und Co?
Ich versuche gerade zu verstehen was Passkeys sind und wie sie funktionieren, und am besten geht das glaube ich das ich sie versuche zu beschreiben und ihr sagt mir ob ihr das auch so seht
Also, sie basieren auf dem Private-Public Encryption Prinzip, das folgendermaßen eingesetzt wird:
01: Client: User surft mit seinem Browser auf eine Website "example.com" (die Passkeys unterstützt)
02: Client: User authentifiziert sich bei seinem login mit Username + passwort.
03: Client: User geht in Webseite auf "Passkey hinzufügen" und löst damit folgenden Erstellungsprozess aus:
04: Client: Browser startet im "Secure Element" (TPM, etc) die Erstellung des Key-Pair (private + public)
05: Client: Browser sendet den "Public Key" an den server
06: Server: Hinterlegt den "Public Key" im Account Profil des users.
07: Client: Hinterlegt den "Private Key" im "Secure Element" in einer DB in einem KeyValue paar ab ("example.com" -> "Private Key").
08: Time goes by
09: Client: surft wieder auf die Website "example.com", gibt den Username an und klickt auf "login mit passkey"
10: Server: sendet ein "gib mir den Passkey für meine domain" + hier ist die "Challenge"
11: Client: Brower öffnet eine Lokale "autorisierungsabfrage" -> diese ist der Windows Login PIN / Finger Abdruck
12: Client: User gibt den PIN ein
13: Client: Browser übergibt die domain "example.come" + die "Challenge" an das "Secure Element" und sagt "Passkey login"
14: Client: "Secure Element" signiert die "Challenge" und gibt diese "Response" zurück.
15: Cleint: Browser sendet die "Response" zurück
16: Server: kann die "Response" mit dem im Account hinterlegten PublicKey verifizieren -> nutzer ist autorisiert. (ab hier wir mit passwort login -> cookie/session ID bla bla)
17: Time goes by
18: Client: User clickt auf phishing link und kommt auf eine seite die so aussieht wie "example.com" aber wirklich "example.trusted-verification.com" ist.
19: gibt den Username an und klickt auf "login mit passkey"
20: Server: sendet ein "gib mir den Passkey für meine domain" + hier ist die "Challenge"
21: Client: Brower öffnet eine Lokale "autorisierungsabfrage" -> diese ist der Windows Login PIN / Finger Abdruck
22: Client: User gibt den PIN ein
23: Client: Browser übergibt die domain "example.trusted-verification.com" + die "Challenge" an das "Secure Element" und sagt "Passkey login"
24: Client: "Secure Element" sagt - die einträge gibt es nicht -> phishing verhindert.
So weit so gut. aber ich habe dennoch ein paar Fragen.
1) Stimmt das mal so in etwa?
2) Wäre ein ablegen im "Secure Element" mit einem PublicKey des Servers nicht besser als nur die domain? Oder ist das egal?
3) Mir ist klar das Privat-Public-Key verfahren viel sicher ist als Passwörter austauschen, aber hängt dann nicht automatisch alles von dem "Secure Element" ab?
3.1) Es wird zu einem sehr lohnenden Ziel?
3.2) Eine Synchronisierung ist als solches nicht möglich?
3.3) Gibt es eine Backup möglichkeit der Datenbank (eine Syncronisierung sehe ich nicht als solche an)?
4) Ist auch trotz dem PP-Key verfahren nach wie vor ein MITM angriff möglich? (Beim schrieben denke ich dass sollet mittels PKI (HTTPS und Certifikaten (und auch PP-Key)) verfahren unterbunden werden) - aber trotzdem)
5) Gibt es Implementierungen die auf einem normalen PasswordStore (e.g.: KeypassXC etc) bassiert?
6) Ist die Idee das ich mich mit jedem Gerät einzeln in einem Account mit einem eigenen Passkey eintrage? (Apple, Google bieten schon syncroniseirung an, aber auch mit Windows?)
7) Gibt es schon Linux (Desktop) Lösungen?
8) Gibt es auch die Möglichkeit mehrere Accounts auf einem "Secure Element" für einen Server zu hinterlegen (ein Account für meine Mutter einen für mich?)
9) Wo ist der unterschied zu YubiKeys und Co?