amneziawg-de.md 8.3 KB


layout: page title: Was ist AmneziaWG? permalink: /blog/amneziawg-de/ keywords: amneziawg,amnezia,wireguard,dpi description: Was ist AmneziaWG? Und was bedeuten die Paramater eigentlich? lang: de feed: true

date: 2024-09-22 20:00:00 +0100

AmneziaWG ist eine WireGuard Fork, welcher Anti-Erkennungs-Techniken gegen DPI-Systeme implementiert. Diese Anti-Erkennungs-Techniken werden als "Advanced Security" bezeichnet. AmneziaWG kann rückwärtskompatibel zu vanilla WireGuard eingestellt werden.

Auf dem Bild sieht man das Amnezia Logo. Dabei handelt es sich um das klassische Anarchie

(aus https://github.com/amnezia-vpn/amnezia-client, GPL-3.0, ausgeschnitten von mir)

Es führt neun zusätzliche Paramater (Jc, Jmin, Jmax, S1, S2, H1, H2, H3, H4) ein.

Vanilla WireGuard

Das WireGuard-Protokoll besteht aus verschiedenen Nachrichten. Einige der wichtigsten Nachrichten sind die "Handshake Initation", die "Handshake Response" und die eigentliche Datenpakete. Diese WireGuard Nachrichten haben alle einen Header, in welchem ihr Type definiert wird. Dieser wird mithilfe einer ganzen Zahl angegeben. Um eine WireGuard-Verbindung aufzubauen, wird im Allgemeinen vom Peer, welcher die Verbindung aufbauen will, eine "Handshake Initation" gesendet. Der andere Peer antwortet dann mit einer "Handshake Response". Diese Pakete lassen sich mithilfe von DPI-Systemen erkennen und dann entsprechend blockieren. Dadurch wird der ganze WireGuard Tunnel verhindert und WireGuard ist dann blockiert.

Junk-Pakete

AmneziaWG kann vor dem Handshake Junk Pakete senden. Dabei handelt es sich um Pakete, welche zufällige Daten beinhalten und keinen Inhalt vermitteln sollen. Um die Art der Junk-Pakete zu definieren, gibt es drei Parameter: Jc, Jmin und Jmax.

Jc legt die Anzahl der Junk-Pakete fest. Ein Jc von drei bedeutet beispielsweise, dass vor dem Handshake drei Pakete mit Zufallsdaten gesendet werden sollen. Jc darf maximal 128 (inklusive) groß sein.

Jmin und Jmax legen die Größe der Junk-Pakete in Bytes fest - genauer die Größe des UDP-Payloads (die Größe des UDP-Header und des IP-Headers zählen also bei der Größenangabe nicht). Jmin legt dabei die minimale Größe des Payloads und Jmax die maximale Größe des Payloads fest. Die Größe des eigentlichen Payloads wird dann zufällig so gewählt, dass sie zwischen Jmin (inklusiv) und Jmax (inklusiv) liegt. Jmin muss kleiner oder gleich Jmax sein. Beide Werte dürfen maximal 1280 (inklusiv) Byte groß sein.

Wenn Jmin und Jmax gleich groß sind, liegt die Größe des Payloads zufällig zwischen Jmin und Jmax + 1.

Empfohlene Werte

Je nach Region und Umständen können verschiedene Werte empfohlen werden. Im Allgemeinen sollte Jc zwischen 3 (inklusive) und 10 (inklusive) sein. Es wird häufig 3 oder 4 verwendet. Für Jmin und Jmax wird 50 und 1000 bzw. 10 und 50 empfohlen.

Junk im Handshake

Zusätzlich zu den separaten Junk-Paketen werden auch Zufallsdaten vor den eigentlichen WireGuard Daten in der "Handshake Initation" und der "Handshake Response" hinzugefügt. Die Parameter S1 und S2 legen fest, wie viel Bytes an Junkdaten vor den eigentlichen WireGuard Daten platziert werden sollen. In der "Handshake Initation" werden S1 Bytes vor den eigentlichen Daten und in der "Handshake Response" S2 Bytes Zufallsdaten hinzugefügt. Diese Einstellung muss bei allen Peers gleich sein, damit jeder weiß, wo die eigentlichen sinnvollen Daten anfangen.

Empfohlene Werte

Für S1 und S2 wird ein zufälliger Wert zwischen 15 (inklusive) und 150 (inklusive) empfohlen. Dabei darf S1 + 56 nicht gleich S2 entsprechen.

Benutzerdefinierte Typen

Um zu identifizieren, um was für eine WireGuard Nachricht es sich handelt, wird im WireGuard Header ein Typ in Form einer ganzen Zahl angegeben. So hat die "Handshake Initation" den Typ 1 und die "Handshake Response" den Typ 2. Insgesamt gibt es (aktuell) vier festgelegte Typen. Da diese Typen fest definiert sind, eignen sie sich als Kriterium, um WireGuard Pakete zu erkennen. Daher ist es bei AmneziaWG möglich, die vordefinierten Typen zu überschreiben. Der Typ 1 wird zu H1, der Typ 2 wird zu H2, der Typ 3 wird zu H3 und der Typ 4 wird zu H4. Die H-Werte müssen sich voreinander unterscheiden.

Empfohlene Werte

Es wird ein zufälliger Wert zwischen 5 und 2^31-1=2147483647 bzw. 2^32-1=4294967295 (siehe Diskussion hier) empfohlen.

Rückwärtskompatibilität

AmneziaWG kann rückwärtskompatibel zu Vanille WireGuard verwendet werden. Dabei wird lediglich das Feature von Junkpaketen vor dem Handshake aktiviert und Features wie Junkdaten im Handshake und benutzerdefinierte Typen deaktiviert.

Dafür können folgende Parameter verwendet werden: S1 von 0, S2 von 0, H1 von 1, H2 von 2, H3 von 3 und H4 von 4.

Konfiguration

Die zusätzlichen Parameter können wie Adress- oder Schlüsselparameter in eine WireGuard Konfigurationsdatei geschrieben werden:

[Interface]
PrivateKey = uMnqnbbo+bbnnPVPjjyLqB72JHPvSOew/MqWxPz6PEg=
Address = 192.168.2.4/32

Jc = 3
Jmin = 50
Jmax = 1000
S1 = 20
S2 = 78
H1 = 39131278
H2 = 832138185
H3 = 1436957857
H4 = 1635877746

[Peer]
PublicKey = 8Yr++qyZzEL4zHS7CEgi+9zMm0d09qUA0xeqohNs8F8=
PresharedKey = fbDzRFA/PGH05Uwl9EFcI42F8KABRpSKoqS+Xv2qOl8=
Endpoint = 192.168.1.1:1234
AllowedIPs = fd00::/8

Paketierung

Linux

Unter Linux werden die awg-tools sowie die Kernel oder die Go-Implementierung benötigt. Für Debian gibt es ein von den AmneziaWG-Entwicklern bereitgestelltes Repository für die Tools und die Kernel-Implementierung. Für Arch Linux sind die Tools und die Go-Implementierung in AUR paketiert.

Android

Aktuell unterstützt in F-Droid nur WG Tunnel AmneziaWG.

Die AmneziaWG Entwickler stellen jedoch auch ein eigene VPN-App sowie einen AmneziaWG Client für Android bereit. Es wurde eine Anfrage an die AmneziaWG-Entwickler gestellt, den Client in F-Droid oder IzzyOnDroid aufzunehmen - aktuell ohne Rückmeldung von diesen. Des Weiteren scheint der AmneziaWG Client nicht von den Entwicklern, sondern Google signiert worden zu sein - falls bei Sicherheitsanwendung problematisch ist. Auch bei der Amnezia Client-App wurde eine Anfrage an die Entwickler sowie an F-Droid gesendet. Die Amnezia Client-App ist für IzzyOnDroid leider zu groß.

Offizielle Dokumentation

Eine genaue detaillierte offizielle Dokumentation wird es in vorhersehbarer Zukunft aus Sorge, dies würde Zensoren das Erkennen von AmenziaWG erleichtern vermutlich nicht geben.

Aussicht

Es gibt aktuell mehrere Anfragen, AmneziaWG in OpenWrt (Tools), MikroTik's RouterOS, GL.iNet's OpenWrt, DD-Wrt und andere Distributationen aufzunehmen.

Des Weiteren könnte geplant sein ein S3 bzw S4 für den WireGuard Anti-DoS-Mechanismus einzuführen.