Zugangssystem: Unterschied zwischen den Versionen
keine Bearbeitungszusammenfassung
>Kaiser Keine Bearbeitungszusammenfassung |
>D3f Keine Bearbeitungszusammenfassung |
||
Zeile 33: | Zeile 33: | ||
===Raumtür=== | ===Raumtür=== | ||
*Schlüsselkasten z.B. [http://www.amazon.de/ABUS-46331-Key-Garage-Wandmontage/dp/B001T0HERW/ ABUS-46331] | *Schlüsselkasten z.B. [http://www.amazon.de/ABUS-46331-Key-Garage-Wandmontage/dp/B001T0HERW/ ABUS-46331] | ||
==Das Protokoll== | |||
Für die Außentür könnte folgendes Protokoll verwendet werden. Annahme: Ein ESP8266 kontrolliert ein Relais, welches den Türöffner auslöst. Er ist über Freifunk mit dem Internet verbunden und besitzt ein [https://learn.adafruit.com/assets/17227|4-stelliges LED-Display], welches von Aussen sichtbar ist. Irgendwo sitzt ein Pi (der dann auch die Zwischentür steuert). Dort läuft eine Webseite. | |||
Benutzer bekommen SSL-Client-Zertifikate ausgestellt, wenn sie zutrittsberichtigt sind. (Ebenso kann es Gast-Zutrittscodes geben, die dann nur beschränkt gültig sind.) | |||
===Protokoll-Bestandteile=== | |||
====Challenges==== | |||
Challenges sind 128-Bit-Werte sofern nicht anders angegeben. | |||
* TC = Trigger Challenge | |||
* OC = Opening Challenge | |||
* PC = Presence Challenge (4-stelliger Zahlencode) | |||
* AC = Acknowledge Challenge | |||
====Secret Keys==== | |||
* KH0 = Trigger PRNG Key | |||
* KH1 = Opening PRNG Key | |||
* K0 = Trigger Key | |||
* K1 = Opening Key | |||
* K2 = Acknowledge Key | |||
====Interne Counter des ESPs==== | |||
* C0 = Interner Counter im RAM | |||
* C1 = Interner Counter, der alle 100 Iterationen im Flash des ESPs gespeichert wird. Beim Booten wird er um 100 erhöht und sofort nochmal abgespeichert. (Write Cycle Reduction für den Flash) | |||
===Protokollablauf=== | |||
1. Der Benutzer besucht die Webseite und authentifiziert sich. Er klickt auf einen Button, und der Pi startet den Login-Vorgang (CSRF-geschützt) | |||
2. Der Pi sendet dem ESP eine "Trigger"-Nachricht. | |||
3. Der ESP berechnet TC=HMAC(C0++,KH0) und sendet TC an Pi | |||
4. Pi berechnet TCR=HMAC(TC,K0) und sendet TCR an ESP | |||
5. ESP assertet TCR==HMAC(TC,K0). | |||
6. ESP berechnet OC=HMAC(C1++,KH1) und PC=Filter4ZiffernAus(HMAC(C1++,KH1)). Wichtig: C1 wird tatsächlich zweimal inkrementiert. | |||
7. ESP zeigt PC auf Display an. | |||
8. ESP sendet OC and Pi. | |||
9. Benutzer liest PC von Display ab, und tippt es auf Webseite ein. | |||
10. Pi würfelt AC. | |||
11. Pi berechnet OCR=HMAC(PC||OC||AC||, K1) und sendet OCR und AC an ESP | |||
12. ESP assertet OCR==HMAC(PC||OC||AC||, K1) und öffnet Tür | |||
13. ESP berechnet ACR=HMAC(AC,K2) und sendet ACR als Response an Pi | |||
14. Pi assertet ACR==HMAC(AC,K2) und sendet Tür-auf-Signal an KeyMatic (wie auch immer) |