Skip to main content

Die Remotekey Applikation ist das was sie auf dem Computer installieren um die bequeme Eingabe zu ermöglichen.

Das komplette Feature-Set der Applikation ist:

  • Eingabe von anderen RemoteKey Applikation oder Smartphone App anzufragen
  • Auf eine RemoteKey Anfrage zu antworten
  • Datei zu Ver/Entschlüsseln
  • Datei aus dem Web zu laden und gleichzeitig zu entschlüsseln

Die folgenden Installationsmöglichkeiten werden akutell unterstützt:

  • Via APT:
    • Ubuntu 20.04
    • Ubuntu 20.10
    • Debian Buster
    • Proxmox VE 6 (Basiert auf Debian Buster) 
  • Via Docker: docker pull shbb/remotekey
  • Direkter Download: https://static.sh-bb.de/remotekey/binaries/
    • Linux (amd64/i386)
    • Windows (amd64/i386)
    • MacOS (amd64)
  • Direkter Download: (experimentell)
    • Linux (arm/arm64)

Installation mittels APT:

Remotekey ist in verschiedene Pakete aufgeteilt:

  • remotekey: Das Kommandozeilen Interface
  • remotekey-initramfs: Integriert remotekey in das Initramfs, und ermöglicht so die Eingabe des Passworts von verschlüsselten Laufwerken

Führen sie die folgenden Kommandos aus.

Hinweis: Bei Proxmox ersetzen sie "$(lsb_release -sc)" durch "buster".

wget -O - https://apt.sh-bb.de/keys/gpg.pub.key | apt-key add -
echo "deb http://apt.sh-bb.de/public/ $(lsb_release -sc) stable" > /etc/apt/sources.list.d/shbb.list

apt update
# Just the commandline
apt-get install --yes remotekey
# Enable unlock at boot
apt-get install --yes remotekey-initramfs

 

Verwendung zum Entsperren beim Start:

Diese Option ist nur bei Installation via APT verfügbar.

Wenn Remotekey in das initramfs integriert wird, versucht es standartmäßig beim Bootvorgang über DHCP eine Verbindung in das Internet herzustellen. Wenn dies nicht in ihrem Netzwerk möglich ist, müssen sie eine IP-Konfiguration via Kernel-Parameter hinzufügen.
Details finden sie unter: https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt
Wenn DHCP nicht funktionieren sollte, können sie dieses Script als Hilfestellung nutzen: 

curl https://apt.sh-bb.de/scripts/remotekey/createIpConfig.sh > gen.sh && bash gen.sh eth0

Remotekey beendet jede Netzwerkkonfiguration die es während des Bootens aufbaut. Damit ist das Betriebssystem nicht blockiert von der Netzwerkkonfiguration.

Konfiguriert wird Remotekey über die Datei /etc/remotekey/initrd.json, nur wenn diese Datei vorhanden ist wird Remotekey auch in das Initramfs integriert. Jede Änderung an initrd.json muss über ein akutalisieren des Initramfs integriert werden.

Beispiel für eine schnelle Konguration für das Initramfs:

# Copy example to correct location
cp /etc/remotekey/samples/initrd.json /etc/remotekey/initrd.json
# Generate and update relay id and aes key in /etc/remotekey/initrd.json
RID=$(dd if=/dev/urandom bs=1024 count=100 2>/dev/null | LC_ALL=C grep --text -oE '[[:alnum:]]+' | tr -d '\n' | head -c 10)
sed -i.bk -E "s'\"relay-id\"[: \"]+[^\"]+'\"relay-id\":\"$(hostname)_${RID}'g" /etc/remotekey/initrd.json
sed -i.bk -E "s'\"key\"[: \"]+[^\"]+'\"key\":\"base64:$(dd if=/dev/urandom bs=32 count=1 | base64 | tr -d '\n')'g" /etc/remotekey/initrd.json
# Remove backup file
rm /etc/remotekey/initrd.json.bk
# Update initramfs
update-initramfs -u -k all
# Display QR-Code/Config string for the smartphone app and commandline to answer with RemoteKey application
remotekey config --file /etc/remotekey/initrd.json --config ask-password --operation relay-registration | less
echo "Done!"

 

Ablauf des Boots mit Remotekey:

  • Boot des Computers
  • Vorbereiten der Eingabe in ZFS/Cryptsetup
  • Prüfen der Netzwerkverbindung
    • (A) Kein Netzwerk gefunden, aufbauen der Netzwerkverbindung (Standart DHCP)
    • (B) Netzwerk vorhanden: Alles so lassen wie es ist
  • Anfrage des Passworts zum Entschlüsseln
    • Bei Erfolg: Boot
    • Bei Fehlschlag: Benutzte original Eingabe Methode
  • Aufräumen
    • (A) Netzwerk herunterfahren, Betriebssystem hat volle Kontrolle
    • (B) Nichts mit dem Netzwerk machen

Best Practices:

  • Verwende Konfigurationsdateien:
    • Kommandos werden kürzer
    • Änderungen werden an allen Stellen übernommen
    • Wiederverwendbarkeit höher
    • Konfigdateien sind wie Passwort-Dateien und sollten nur für den User lesbar sein (chmod 600)
  • Passwörter müssen Eingebbar bleiben
    • Bei einem Ausfall des Internets funktioniert RemoteKey nicht!
    • Für den Offline-Fall müssen das Passwörter von Hand eingegeben werden