Die meisten VPN-Anbieter sagen, dass sie sicher sind. ProtonVPN kann es beweisen – mit öffentlich einsehbarem Quellcode, unabhängigen Audits und mathematisch nachweisbarer Verschlüsselung. Wir zeigen, was das konkret bedeutet.
Und warum der Unterschied zu Closed-Source-VPNs größer ist, als du denkst.
Der Anbieter sagt, er ist sicher. Du hast keine Möglichkeit, das zu überprüfen. Du musst vertrauen – blind.
Der Code liegt offen. Jeder Sicherheitsforscher, jeder Entwickler, jeder Nutzer kann nachsehen ob die Behauptungen stimmen.
ProtonVPN hat im Jahr 2020 alle seine Client-Apps als Open Source veröffentlicht – als eines der ersten großen VPN-Unternehmen überhaupt. Heute sind Windows, macOS, Linux, Android und iOS vollständig open source. Auch der Kern der Server-Infrastruktur ist dokumentiert und auditiert.
Alle Apps auf einen Blick – vollständig öffentlich einsehbar.
ProtonVPN unterstützt zwei Hauptprotokolle: WireGuard und OpenVPN. Beide verwenden unterschiedliche Verschlüsselungsalgorithmen – aber beide sind mit heutiger Rechenleistung praktisch unknackbar.
| Algorithmus | Protokoll | Zweck | Sicherheit |
|---|---|---|---|
| ChaCha20-Poly1305 | WireGuard | Datenverschlüsselung | 256-Bit, AEAD |
| Curve25519 | WireGuard | Schlüsselaustausch (ECDH) | 128-Bit Sicherheitsniveau |
| BLAKE2s | WireGuard | Hashing / Integrität | Kryptografisch sicher |
| AES-256-GCM | OpenVPN | Datenverschlüsselung | 256-Bit, AEAD |
| RSA-4096 | OpenVPN | Server-Authentifizierung | 4096-Bit Schlüssellänge |
| HMAC-SHA-512 | OpenVPN | Nachrichtenintegrität | 512-Bit Hash |
WireGuard verwendet das Noise Protocol Framework – konkret das Muster Noise_IKpsk2. Beim Verbindungsaufbau zwischen deinem Gerät und dem ProtonVPN-Server läuft das so ab:
# Schritt 1: Beide Seiten erzeugen ein Curve25519-Schlüsselpaar
# Das passiert beim App-Start einmalig (statische Schlüssel)
from cryptography.hazmat.primitives.asymmetric.x25519 import X25519PrivateKey
client_private = X25519PrivateKey.generate() # 32 zufällige Bytes
client_public = client_private.public_key() # daraus abgeleitet
# Schritt 2: Beim Verbindungsaufbau – ephemerer Schlüssel (einmalig)
ephemeral_private = X25519PrivateKey.generate() # jedes Mal neu!
ephemeral_public = ephemeral_private.public_key()
# Schritt 3: Diffie-Hellman-Austausch (kein geheimer Schlüssel über Leitung)
# Client rechnet: DH(client_private, server_public)
# Server rechnet: DH(server_private, client_public)
# Beide erhalten identischen shared_secret – ohne ihn zu übertragen!
shared_secret = ephemeral_private.exchange(server_public_key)
# Schritt 4: Aus shared_secret werden Sitzungsschlüssel abgeleitet
# ChaCha20-Poly1305 verschlüsselt dann alle Datenpakete
session_key = HKDF(algorithm=SHA256(), length=32).derive(shared_secret)
Der Kill Switch blockiert dein Internet sofort, wenn die VPN-Verbindung abbricht. Auf Linux sieht das mit iptables so aus – dieser Code ist direkt aus dem öffentlichen Linux-Repository abgeleitet:
#!/bin/bash
# Kill Switch aktivieren: ALLES sperren, nur VPN-Tunnel erlauben
# 1. Standard-Policy: alles blockieren
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# 2. Loopback (127.0.0.1) muss immer erlaubt sein
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 3. Bereits etablierte Verbindungen beibehalten
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 4. Nur UDP-Traffic zum VPN-Server erlauben (WireGuard-Port 51820)
iptables -A OUTPUT -p udp --dport 51820 -j ACCEPT
# 5. Alles über das VPN-Interface (wg0) erlauben
iptables -A INPUT -i wg0 -j ACCEPT
iptables -A OUTPUT -o wg0 -j ACCEPT
# Ergebnis: Bricht das VPN ab, gibt es keinen Internetzugang mehr.
# Kein einziges Datenpaket verlässt das Gerät unverschlüsselt.
Ein DNS-Leak passiert, wenn dein Gerät DNS-Anfragen an deinen normalen Internetanbieter schickt, obwohl du im VPN bist. ProtonVPN verhindert das aktiv:
# WireGuard Konfiguration die ProtonVPN erzeugt:
[Interface]
PrivateKey = <dein privater Schlüssel>
Address = 10.2.0.2/32
DNS = 10.2.0.1 # ProtonVPNs eigener DNS-Server (im Tunnel)
[Peer]
PublicKey = <Server-Public-Key>
Endpoint = 185.159.xx.xx:51820
AllowedIPs = 0.0.0.0/0 # ALLES durch den Tunnel (kein Split für DNS)
# Die "AllowedIPs = 0.0.0.0/0" ist entscheidend:
# Jedes Paket – auch DNS-Anfragen (Port 53) – geht durch den Tunnel.
# DNS-Anfragen landen bei 10.2.0.1 (ProtonVPN-Server), nicht beim ISP.
# Zusätzlich: iptables blockiert alle DNS-Anfragen ausserhalb wg0
iptables -A OUTPUT -p udp --dport 53 ! -o wg0 -j REJECT
iptables -A OUTPUT -p tcp --dport 53 ! -o wg0 -j REJECT
Proton speichert keine Verbindungslogs. Das ist keine bloße Behauptung – im öffentlichen Code gibt es schlicht keine Datenbankaufrufe, die IP-Adressen, Verbindungszeiten oder besuchte Domains speichern würden. Das wurde mehrfach von unabhängigen Prüfern bestätigt.
Das wurde durch ein Schweizer Gerichtsurteil bestätigt: Als Schweizer Behörden Proton aufforderten, Nutzerdaten herauszugeben, hatte das Unternehmen schlicht keine – weil die Architektur sie technisch unmöglich macht, sie zu haben.
Open Source allein reicht nicht – der Code muss auch aktiv geprüft werden.
Proton lässt seine Apps und Infrastruktur regelmäßig von unabhängigen Sicherheitsunternehmen prüfen und veröffentlicht die Ergebnisse – auch wenn Schwachstellen gefunden werden.
Renommiertes Berliner Sicherheitsunternehmen. Hat ProtonVPN-Apps und die Browser-Extension geprüft. Alle kritischen Findings wurden behoben, Berichte öffentlich.
Österreichisches IT-Sicherheitsunternehmen. Prüfte die ProtonVPN-Serverinfrastruktur und das Netzwerkdesign. Ergebnisse: veröffentlicht.
Automatisierte Webseiten-Sicherheitsprüfung. vpn.proton.me erhält regelmäßig Bestnoten (A+) für HTTP-Security-Header und HTTPS-Konfiguration.
Durch die Open-Source-Veröffentlichung prüfen tausende Entwickler und Sicherheitsforscher weltweit kontinuierlich den Code. Issues werden öffentlich auf GitHub gemeldet.
Du musst Proton nicht vertrauen – du kannst es nachprüfen. So geht's:
# Repository klonen
git clone https://github.com/ProtonVPN/linux-app.git
cd linux-app
# Abhängigkeiten installieren
pip install -r requirements.txt
# Code nach verdächtigen Stellen durchsuchen (Beispiel)
# Gibt es irgendwo "requests.post" mit Log-Daten?
grep -rn "requests.post" protonvpn_gui/ protonvpn_cli/
# App direkt starten (ohne Installation)
python3 -m protonvpn_gui
Open Source schützt technisch. Der Schweizer Sitz schützt rechtlich. Die Schweiz ist kein EU-Mitglied und kein Teil von 5/9/14 Eyes – dem Überwachungsverbund der USA, Großbritanniens und ihrer Verbündeten.
Sitz von Proton AG
Kostenloser Tarif verfügbar · Plus 30 Tage Geld-zurück-Garantie
ProtonVPN holen