Hier nun noch ein Level von Sicherheit mit dem Raspberry Pi. Wie hier beschrieben kann eine Website leicht für jedermann mit eigener onion Domain im Darknet bereitgestellt werden. Die Seiten können nun aber auch noch mit einen Curve25519-Key gesichert werden, so das nur Nutzer die den Key haben auf die Seiten zugreifen können. Wenn man dann z.B. die Adresse
http://tokc2fifswouszmp4jy3ejizmchy4damvhmdug5crvkvfgmymbejkqqd.onion
aufruft, erscheint im Browser, oben links ein Schloß. Wenn man darauf klickt erscheint der Dialog:
Hier wird dann der private Schlüssel, den man vom Bereitsteller erhalten hat eingegeben. Für diese Seite ist es der Schlüssel:
JDSQ2RRI2SLYCN4SG6ZBP4DHE4TEHZG26EJS5R6FYBPH6AU3FVEA
Jeder der diesen privaten Schlüssel hat, kann nun auf die Seiten zugreifen. Wer das falsche Passwort eingibt, kann nicht auf die Seite zugreifen:
Onion-Dienste bieten noch einige weiter Vorteile gegenüber herkömmlichen Dienstleistungen im öffentlichen Internet, da die IP-Adresse und Lokation der Onion Dienstleistungen versteckt sind, um die Zensur und Identität der Besitzer besser zu schützen. Auch ist der gesamte Verkehr zwischen Tor-Benutzer und den Onion-Diensten Ende zu Ende verschlüsselt, so dass du dir keine Sorgen um Verbindung über HTTPS machen musst. Die Adresse eines Onion Dienstes wird automatisch generiert, sodass der Betreiber keinen Domain-Namen kaufen muss; die .onion Internetadresse hilft Tor zusätzlich, sicherzustellen, dass der richtige Ort kontaktiert und die Verbindung nicht manipuliert wird.
Wie werden nun die Curve25519 Keys erzeugt? Wir müssen nur eine public und einen privaten Key erzeugen und eine zugriff.auth Datei erstellen. Dazu brauche wir openssl, base32, base64pem, tail, sed und grep.
1. Privaten Key erzeugen
1 |
openssl genpkey -algorithm x25519 -out /tmp/k1.prv.pem |
2. Privaten Key in Base32 Format umwandeln
1 |
cat /tmp/k1.prv.pem | grep -v " PRIVATE KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.prv.key |
// Ergebnis: JDSQ2RRI2SLYCN4SG6ZBP4DHE4TEHZG26EJS5R6FYBPH6AU3FVEA
3. Public Key erzeugen in Base32
1 |
openssl pkey -in /tmp/k1.prv.pem -pubout | grep -v " PUBLIC KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.pub.key |
4. Public Key ausgeben
1 |
cat /tmp/k1.pub.key |
// Ergebnis: 4HGPZWJDKXQUN6Z2WTVO6IU2KZJEMX63RHBJYTAERZXFQW3RXEQQ
5. Auth. File in /var/lib/tor/hidden_service/authorized_clients/ erzeugen, es ist nur die Extension .auth wichtig
thomas.auth
mit dem Inhalt des public Key aus der k1.pub.key (descriptor:x25519:PUBLIC-KEY)
descriptor:x25519:4HGPZWJDKXQUN6Z2WTVO6IU2KZJEMX63RHBJYTAERZXFQW3RXEQQ
6. Service neustarten
sudo systemctl reload tor
7. Keys aus /tmp an sichere Stelle aufheben und im /tmp Verzeichnis löschen
8. Test, ob die Seite
http://tokc2fifswouszmp4jy3ejizmchy4damvhmdug5crvkvfgmymbejkqqd.onion/
nun nur mit dem privaten Key (JDSQ2RRI2SLYCN4SG6ZBP4DHE4TEHZG26EJS5R6FYBPH6AU3FVEA) aufgerufen werden kann.
TIP: Man kann in dem Passwortdialog des Browsers auch die Checkbox „Remember this key“ anklicken. Dann wird der Key dauerhaft im Browser verschlüsselt gespeichert und muss nicht bei jeden Besuch neu eingegeben werden.
Wie kann man diese aber wieder löschen?
In den „Preferences“ unter „Onion Services Authentication“ unter dem Button „Saved Keys“:
Hier wird die Seite mit dem verschlüsselten private Key angezeigt und kann einfach gelöscht werden: