StratumKey: Unterschied zwischen den Versionen

(SpaceWidget nicht mehr empfehlenswert weil veraltetes SSH und kein support für Space 3)
K
 
(3 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 16: Zeile 16:
  
 
{| class="wikitable"
 
{| class="wikitable"
!colspan="6"|IP Adressen
+
!colspan="6"|IP-Adressen
 
|-
 
|-
 
|[[Space 2.0]]
 
|[[Space 2.0]]
Zeile 26: Zeile 26:
  
  
Die Adresse um den [[Space 3.0]] (2.OG) aufzumachen ist 192.168.178.29. Für [[Space 2.0]] ist die 192.168.178.6 die richtige Adresse. Zur Zeit kann man ausversehen leicht auch den falschen Space aufmachen, daher unbedingt darauf achten den richtigen zu öffnen.
+
Die Adresse, um den [[Space 3.0]] (2.OG) aufzumachen, ist 192.168.178.29. Für [[Space 2.0]] ist die 192.168.178.6 die richtige Adresse. Zur Zeit kann man aus Versehen leicht auch den falschen Space aufmachen, daher unbedingt darauf achten, den richtigen zu öffnen.
  
 
* '''Tür öffnen:''' <code>ssh auf@192.168.178.6</code>
 
* '''Tür öffnen:''' <code>ssh auf@192.168.178.6</code>
Zeile 34: Zeile 34:
 
** eine der letzten paar Zeilen in der Ausgabe sollte sein: <code>You are ready to use the door \o/</code>
 
** eine der letzten paar Zeilen in der Ausgabe sollte sein: <code>You are ready to use the door \o/</code>
  
Um Zugang zu erhalten, musst du [[Mitglied werden]] und einen SSH-Public-Key an {{Benutzer|Comawill}}, {{Benutzer|Daniel Bohrer}}, {{Benutzer|chrissi^}} oder {{Benutzer|larsan}} senden. Mit der Zeit haben sich einige [[Tür-Regeln]] herausgebildet, die beachtet werden sollten. (Einen Public Key kann man sich zum Beispiel mit ssh-keygen oder PuTTYgen selbst erstellen. RSA mit 2048 Bit ist ausreichend). Der Versand sollte entweder PGP-signiert erfolgen, alternativ wäre auch der Vergleich des Schlüssel-Fingerprints über ein unabhängiges Medium denkbar, oder auch Übergabe per USB-Stick/QR-Code/… im Space. Aber wir wüssten auf jeden Fall gerne genau, ob der Schlüssel, den wir da in unser Schließsystem eintragen, der von euch ist, und kein anderer.
+
Um Zugang zu erhalten, musst du [[Mitglied werden]] und einen SSH-Public-Key an {{Benutzer|Comawill}}, {{Benutzer|Daniel Bohrer}}, {{Benutzer|chrissi^}} oder {{Benutzer|larsan}} senden. Mit der Zeit haben sich einige [[Tür-Regeln]] herausgebildet, die beachtet werden sollten. (Einen Public Key kann man sich zum Beispiel mit ssh-keygen oder PuTTYgen selbst erstellen. RSA mit 2048 Bit ist ausreichend). Der Versand sollte entweder PGP-signiert erfolgen, alternativ wäre auch der Vergleich des Schlüssel-Fingerprints über ein unabhängiges Medium denkbar oder auch eine Übergabe per USB-Stick/QR-Code/… im Space. Aber wir wüssten auf jeden Fall gerne genau, ob der Schlüssel, den wir da in unser Schließsystem eintragen, der von euch ist, und kein anderer.
  
 
Unterstützte Schlüsseltypen (Stand 2024):
 
Unterstützte Schlüsseltypen (Stand 2024):
Zeile 44: Zeile 44:
  
 
=== Apps für Smartphones ===
 
=== Apps für Smartphones ===
 
+
* Android:
* Android: ConnectBot [https://connectbot.org/]
+
** [https://connectbot.org/ ConnectBot] (Google Play, Download auf [https://github.com/connectbot/connectbot/releases GitHub] oder [https://f-droid.org/en/packages/org.connectbot/ F-Droid])
** Key hinzufügen oder erstellen über "Manage Pubkeys"
+
*** Key hinzufügen oder erstellen über "Manage Pubkeys"
** Hosts anlegen mit den oben erwähnten Logindaten, jeweils für Space 2 und 3 einen mit dem Benutzernamen "auf" und einen mit "zu". Dabei die Option "Start shell session" anschalten und unter "Use pubkey authentication" den richtigen Key auswählen. Zusätzlich kann "Close on disconnect" ausgeschaltet werden, um mögliche Fehlermeldungen sehen zu können.
+
*** Hosts anlegen mit den oben erwähnten Logindaten, jeweils für Space 2 und 3 einen mit dem Benutzernamen "auf" und einen mit "zu". Dabei die Option "Start shell session" anschalten und unter "Use pubkey authentication" den richtigen Key auswählen. Zusätzlich kann "Close on disconnect" ausgeschaltet werden, um mögliche Fehlermeldungen sehen zu können.
** Für zusätzliche Bequemlichkeit können die beiden erstellten Termbot-Profile ("auf" und "zu") über das Widget-Auswahlmenü auf dem Homescreen platziert werden.
+
*** Für zusätzliche Bequemlichkeit können die beiden erstellten ConnectBot-Profile ("auf" und "zu") über das Widget-Auswahlmenü auf dem Homescreen platziert werden.
* Android, alternativ: ganz normales OpenSSH in einer [https://termux.com/ termux]-Umgebung
+
** TermBot geht auch, ist ein Fork von ConnectBot, aber seit längerem schon unmaintained
 +
** alternativ: ganz normales OpenSSH in einer [https://termux.com/ termux]-Umgebung
 
* iOS:  
 
* iOS:  
 
** WebSSH Pro ([https://apps.apple.com/us/app/webssh-pro/id497714887 App Store]) ''kostenpflichtig''
 
** WebSSH Pro ([https://apps.apple.com/us/app/webssh-pro/id497714887 App Store]) ''kostenpflichtig''
Zeile 60: Zeile 61:
 
*** Daten eintragen und Private Key dort importieren (Muss vorher an einem anderen Gerät erstellt werden)
 
*** Daten eintragen und Private Key dort importieren (Muss vorher an einem anderen Gerät erstellt werden)
 
** Apple Shortcuts:  
 
** Apple Shortcuts:  
*** Apple unterstützt nativ ssh-Verbindungen in Shortcuts/Kurzbefehle zu nutzen
+
*** Apple unterstützt nativ SSH-Verbindungen in Shortcuts/Kurzbefehle zu nutzen
*** Hinweis: Es kann kein ssh Key der bereits generiert wurde importiert werden.  
+
*** Hinweis: Es kann kein SSH-Key der bereits generiert wurde importiert werden.  
 
*** Funktion "Skript über SSH ausführen" nutzen
 
*** Funktion "Skript über SSH ausführen" nutzen
***  Dazu die entsprechende .shortcut aus der Tabelle hinzufügen (Alternativ kann man auch selbst Benutzer, Host Port und Command eintragen)
+
***  Dazu die entsprechende .shortcut aus der Tabelle hinzufügen (Alternativ kann man auch selbst Benutzer, Host, Port und Command eintragen)
 
*** Wichtig: IP-Adresse für Space 2/3 passend konfigurieren
 
*** Wichtig: IP-Adresse für Space 2/3 passend konfigurieren
 
*** SSH-Public-Key eintragen lassen
 
*** SSH-Public-Key eintragen lassen
Zeile 69: Zeile 70:
  
 
{| class="wikitable" style="margin:auto"
 
{| class="wikitable" style="margin:auto"
|+ Text der Überschrift
+
! !! Space 2 !! Space 3
|-
 
! Überschrift !! Überschrift !! Überschrift
 
|-
 
|  || Space 2 || Space 3
 
 
|-
 
|-
 
| Öffnen || [https://www.icloud.com/shortcuts/1b41dca8aae841e3867ca68c299dabcb unten auf] || [https://www.icloud.com/shortcuts/49dba33211bc413e8eeef2794e1417ed oben auf]
 
| Öffnen || [https://www.icloud.com/shortcuts/1b41dca8aae841e3867ca68c299dabcb unten auf] || [https://www.icloud.com/shortcuts/49dba33211bc413e8eeef2794e1417ed oben auf]
Zeile 92: Zeile 89:
 
** Dazu im [[Chat]] den Befehl <code>@auf</code> senden.
 
** Dazu im [[Chat]] den Befehl <code>@auf</code> senden.
 
* Jetzt öffnet sich die Außentür beim Betätigen der Klingel draußen.
 
* Jetzt öffnet sich die Außentür beim Betätigen der Klingel draußen.
* Mit Stratum 0 WLAN verbinden
+
* Mit Stratum-0-WLAN verbinden
 
* <code>ssh auf@192.168.178.6</code> ausführen, die Tür öffnet sich.
 
* <code>ssh auf@192.168.178.6</code> ausführen, die Tür öffnet sich.
  
 
== Hardware ==
 
== Hardware ==
  
Die akuele hardware bestehend aus einem RaspberryPi und kabel befindend sich in der Überarbeitung bei [[Benutzer:Lichtfeind|Lichtfeind]].
+
Die akuelle Hardware bestehend aus einem RaspberryPi und Kabel befindend sich in Überarbeitung bei [[Benutzer:Lichtfeind|Lichtfeind]].
Für updates siehe: https://pad.stratum0.org/p/tr-diary
+
Für Updates siehe: https://pad.stratum0.org/p/tr-diary
  
 
== Hardware-Variante (obsolete) ==
 
== Hardware-Variante (obsolete) ==
Zeile 105: Zeile 102:
 
Bei den Hardware-Tokens soll es sich um einen elektronischen Schlüssel handeln, mit dessen Hilfe sich ein Mitglied ohne zusätzliches Endgerät Zutritt zum Space verschaffen kann. Das System besteht aus zwei Mikroprozessoren, die (drahtgebunden) über ein One-Wire-Protokoll eine Authentifizierung per Challenge-Response-Verfahren vornehmen.
 
Bei den Hardware-Tokens soll es sich um einen elektronischen Schlüssel handeln, mit dessen Hilfe sich ein Mitglied ohne zusätzliches Endgerät Zutritt zum Space verschaffen kann. Das System besteht aus zwei Mikroprozessoren, die (drahtgebunden) über ein One-Wire-Protokoll eine Authentifizierung per Challenge-Response-Verfahren vornehmen.
  
Der "Schlüssel" besteht aus einem ATTiny85, der in das Gehäuse eines 6,3mm Klinkensteckers eingegossen ist. Jedes Mitglied hat einen individuellen Schlüssel, so dass bei Verlust einzelne Schlüssel aus dem System entfernt werden können. Die Authentifizierung erfolgt durch Einstecken in eine entsprechende Buchse neben der Eingangstür.
+
Der "Schlüssel" besteht aus einem ATTiny85, der in das Gehäuse eines 6,3 mm Klinkensteckers eingegossen ist. Jedes Mitglied hat einen individuellen Schlüssel, so dass bei Verlust einzelne Schlüssel aus dem System entfernt werden können. Die Authentifizierung erfolgt durch Einstecken in eine entsprechende Buchse neben der Eingangstür.
  
 
===System===
 
===System===
  
Das System besteht aus einer Master- und einer Slaveseite, wobei der Schlüssel den Slave darstellt. Der Slave besteht aus nicht mehr als einem 6,3mm Stereo-Klinkenstecker und einem ATTiny85, der in der fertigen Version fest im Gehäuse des Steckers vergossen sein soll. Die Masse des Steckers (Schaft) ist mit GND belegt, der linke Kanal (Spitze) mit VCC und der rechte Kanal (Ring/Mitte) mit dem One-Wire-Pin.
+
Das System besteht aus einer Master- und einer Slaveseite, wobei der Schlüssel den Slave darstellt. Der Slave besteht aus nicht mehr als einem 6,3 mm Stereo-Klinkenstecker und einem ATTiny85, der in der fertigen Version fest im Gehäuse des Steckers vergossen sein soll. Die Masse des Steckers (Schaft) ist mit GND belegt, der linke Kanal (Spitze) mit VCC und der rechte Kanal (Ring/Mitte) mit dem One-Wire-Pin.
  
 
Auf der Masterseite ist ein ATMega8, der im Wesentlichen als Relais dient. Er leitet die über One-Wire ankommenden Daten via UART weiter an einen Rechner, der die Authentifizierung durchführt. Das wird aller Wahrscheinlichkeit nach der StatusBerry werden (oder der Rechner, auf dem der [[Open/Close-Monitor]] dann läuft).
 
Auf der Masterseite ist ein ATMega8, der im Wesentlichen als Relais dient. Er leitet die über One-Wire ankommenden Daten via UART weiter an einen Rechner, der die Authentifizierung durchführt. Das wird aller Wahrscheinlichkeit nach der StatusBerry werden (oder der Rechner, auf dem der [[Open/Close-Monitor]] dann läuft).

Aktuelle Version vom 14. November 2025, 21:44 Uhr

StratumKey
Beschreibung: Elektronisches Zugangssystem
Kontakt: Comawill, Daniel Bohrer
Status: aktiv (Was heißt das?)
Quellcode: https://gitli.stratum0.org/stratum0/stratumkey

StratumKey ist das Schließsystem unseres Spaces. Geplant war mal eine Umsetzung mit Hardware-Tokens, zur Zeit ist nur die SSH-basierte Variante aktiv. Beides basiert auf einer KeyMatic, die elektronisch den Space auf- und zuschließen kann. (Dazu muss man manchmal die Batterien wechseln, es gibt dafür regelmäßige Batterie-Wechselparties.) Als Fallback gibt es physische Schlüssel bei einigen Leuten.

SSH-Hack

In Ermangelung an Schlüsseln haben wir die KeyMatic mit etwas Magie an Wikipedia-W.svgSSH angebunden. Damit existiert eine Möglichkeit, per SSH-Public-Key im Stratum 0 WLAN die Tür zu öffnen. Jedes Öffnen und Schließen wird protokolliert.

IP-Adressen
Space 2.0 192.168.178.6
Space 3.0 192.168.178.29


Die Adresse, um den Space 3.0 (2.OG) aufzumachen, ist 192.168.178.29. Für Space 2.0 ist die 192.168.178.6 die richtige Adresse. Zur Zeit kann man aus Versehen leicht auch den falschen Space aufmachen, daher unbedingt darauf achten, den richtigen zu öffnen.

  • Tür öffnen: ssh auf@192.168.178.6
  • Tür schließen: ssh zu@192.168.178.6
  • Testen ob der SSH-Key eingetragen ist: ssh test@192.168.178.6
    • das geht auch von überall sonst außerhalb: ssh -p 2278 test@status.stratum0.net (nicht .org) (bzw. mit grafischen Anwendungen den Port auf 2278 umstellen)
    • eine der letzten paar Zeilen in der Ausgabe sollte sein: You are ready to use the door \o/

Um Zugang zu erhalten, musst du Mitglied werden und einen SSH-Public-Key an Comawill, Daniel Bohrer, chrissi^ oder larsan senden. Mit der Zeit haben sich einige Tür-Regeln herausgebildet, die beachtet werden sollten. (Einen Public Key kann man sich zum Beispiel mit ssh-keygen oder PuTTYgen selbst erstellen. RSA mit 2048 Bit ist ausreichend). Der Versand sollte entweder PGP-signiert erfolgen, alternativ wäre auch der Vergleich des Schlüssel-Fingerprints über ein unabhängiges Medium denkbar oder auch eine Übergabe per USB-Stick/QR-Code/… im Space. Aber wir wüssten auf jeden Fall gerne genau, ob der Schlüssel, den wir da in unser Schließsystem eintragen, der von euch ist, und kein anderer.

Unterstützte Schlüsseltypen (Stand 2024):

  • ssh-ed25519
  • ssh-rsa

Nicht unterstützte Schlüsseltypen (Stand 2024):

  • sk-ecdsa-sha2-nistp256@openssh.com

Apps für Smartphones

  • Android:
    • ConnectBot (Google Play, Download auf GitHub oder F-Droid)
      • Key hinzufügen oder erstellen über "Manage Pubkeys"
      • Hosts anlegen mit den oben erwähnten Logindaten, jeweils für Space 2 und 3 einen mit dem Benutzernamen "auf" und einen mit "zu". Dabei die Option "Start shell session" anschalten und unter "Use pubkey authentication" den richtigen Key auswählen. Zusätzlich kann "Close on disconnect" ausgeschaltet werden, um mögliche Fehlermeldungen sehen zu können.
      • Für zusätzliche Bequemlichkeit können die beiden erstellten ConnectBot-Profile ("auf" und "zu") über das Widget-Auswahlmenü auf dem Homescreen platziert werden.
    • TermBot geht auch, ist ein Fork von ConnectBot, aber seit längerem schon unmaintained
    • alternativ: ganz normales OpenSSH in einer termux-Umgebung
  • iOS:
    • WebSSH Pro (App Store) kostenpflichtig
      • SSH in der Menubar auswählen
      • Plus Knopf drücken
      • "Add SSH Connection"
      • SSH Daten eintragen
      • Private Key
      • Schlüssel-Symbol oben rechts drücken
      • Daten eintragen und Private Key dort importieren (Muss vorher an einem anderen Gerät erstellt werden)
    • Apple Shortcuts:
      • Apple unterstützt nativ SSH-Verbindungen in Shortcuts/Kurzbefehle zu nutzen
      • Hinweis: Es kann kein SSH-Key der bereits generiert wurde importiert werden.
      • Funktion "Skript über SSH ausführen" nutzen
      • Dazu die entsprechende .shortcut aus der Tabelle hinzufügen (Alternativ kann man auch selbst Benutzer, Host, Port und Command eintragen)
      • Wichtig: IP-Adresse für Space 2/3 passend konfigurieren
      • SSH-Public-Key eintragen lassen
      • Kurzbefehl ausführen
Space 2 Space 3
Öffnen unten auf oben auf
Schließen unten zu oben zu

Schlüssel hinzufügen

Entitäten mit SSH-Zugriff auf dem System (siehe oben) können Schlüssel hinzufügen und entfernen.

Die Schlüssel liegen im OpenSSH-Pubkey-Format (z.B. ssh-rsa AAAAB3Nz...GR0GAzC4n gefolgt von beliebigem Kommentar, alles auf einer Zeile!) in einem Git-Repo unter ssh://pi@powerberry.s0/home/pi/stratumkey-keys.git. Das Format der Dateinamen ist nickname.pub, wobei nickname gerne durch unterscheidbare Präfixe, z.B. nickname@handy ergänzt wird. Nach add + commit + push werden die neuen Schlüssel automatisch im System aktiviert und können benutzt werden.

Aufschließen

Um mithilfe des Schlüssels Zugang zum Space zu erhalten, muss folgendes getan werden:

  • Via IRC oder Matrix-Chat den Status des Space auf "offen" stellen.
    • Dazu im Chat den Befehl @auf senden.
  • Jetzt öffnet sich die Außentür beim Betätigen der Klingel draußen.
  • Mit Stratum-0-WLAN verbinden
  • ssh auf@192.168.178.6 ausführen, die Tür öffnet sich.

Hardware

Die akuelle Hardware bestehend aus einem RaspberryPi und Kabel befindend sich in Überarbeitung bei Lichtfeind. Für Updates siehe: https://pad.stratum0.org/p/tr-diary

Hardware-Variante (obsolete)

Hinweis:
Die Hardware-Variante befindet sich noch in der Planung und ist noch nicht in Betrieb.

Bei den Hardware-Tokens soll es sich um einen elektronischen Schlüssel handeln, mit dessen Hilfe sich ein Mitglied ohne zusätzliches Endgerät Zutritt zum Space verschaffen kann. Das System besteht aus zwei Mikroprozessoren, die (drahtgebunden) über ein One-Wire-Protokoll eine Authentifizierung per Challenge-Response-Verfahren vornehmen.

Der "Schlüssel" besteht aus einem ATTiny85, der in das Gehäuse eines 6,3 mm Klinkensteckers eingegossen ist. Jedes Mitglied hat einen individuellen Schlüssel, so dass bei Verlust einzelne Schlüssel aus dem System entfernt werden können. Die Authentifizierung erfolgt durch Einstecken in eine entsprechende Buchse neben der Eingangstür.

System

Das System besteht aus einer Master- und einer Slaveseite, wobei der Schlüssel den Slave darstellt. Der Slave besteht aus nicht mehr als einem 6,3 mm Stereo-Klinkenstecker und einem ATTiny85, der in der fertigen Version fest im Gehäuse des Steckers vergossen sein soll. Die Masse des Steckers (Schaft) ist mit GND belegt, der linke Kanal (Spitze) mit VCC und der rechte Kanal (Ring/Mitte) mit dem One-Wire-Pin.

Auf der Masterseite ist ein ATMega8, der im Wesentlichen als Relais dient. Er leitet die über One-Wire ankommenden Daten via UART weiter an einen Rechner, der die Authentifizierung durchführt. Das wird aller Wahrscheinlichkeit nach der StatusBerry werden (oder der Rechner, auf dem der Open/Close-Monitor dann läuft).

Key

BOM

Anzahl Name Preis
1 6,3mm Klinke mit recht großer Schraubkappe, damit der ATtiny reinpasst 0,50-5 €
1 Atmel ATtiny85 (es geht ggf. auch 45) 1,40 €
1 5,5V QUAD TVS-Schutzdioden SMD VCUT05A4-05S-G-08 (dringend empfohlen) 0,10 €
1 1µF Keramik Konensator SMD (dringend empfohlen) 0,01 €
1 LED (optional) 0,10 €
x etwas Draht -

Fertigungsdaten HW01

Host

Fertigungsdaten HW01

Software

Onis Anpassung

Die Software der AVRs ist in C geschrieben (große Überraschung) und kann von dem Github-Repository https://github.com/hellfyre/stratumkey heruntergeladen, geforkt, beobachtet oder erweitert werden.

Die Software, die die Authentifizierung übernimmt, ist in Python geschrieben und befindet sich in dem Github-Repository https://github.com/hellfyre/stratumkey-daemon.

Nach dem cbounce uns darauf hingewiesen hat, dass es evtl. schlecht ist alle Keys ungesichert zu speicher habe ich(--Oni 00:29, 29. Aug. 2012 (CEST)) mir mal einige Gedanken gemacht. Der Schlüssel wird demnach zwei Keys bekommen, mit dem einen kann der Master dann den zweiten, für die Challenge genutzten, entschlüsseln. Hab dazu mal ein Bild gemacht und was programmiert(git://github.com/oni303/stratumkey-daemon.git branch double_key)..