
TCP/UDP symmetrischer Verschlüsselungs-Tunnel-Wrapper
CryptHook ist eine modulare Implementierung zur Sicherung bestehender Anwendungen mit symmetrischer Blockchiffrierung. Sie funktioniert, indem sie die grundlegenden Systemaufrufe für die Netzwerkkommunikation send/sendto und recv/recvfrom hookt. Crypthook funktioniert mit jeder vorhandenen Anwendung, die diese Systemaufrufe verwendet.
CryptHook verwendet AES im GCM-Modus mit einem 256-Bit-Schlüssel. Schlüssel werden aus Passphrasen mit PBKDF2 erzeugt. IVs werden spontan aus zufälligen Bytes konstruiert, wobei dieselbe Schlüsselableitungstechnik verwendet wird, um den Initialisierungsvektor auf der Empfängerseite zu rekonstruieren, um den Overhead minimal zu halten. Die Authentifizierung jedes Pakets wird ebenfalls überprüft.
Die folgenden Eigenschaften müssen geändert werden, wenn Sie dies für etwas einigermaßen Sicheres verwenden möchten. Die gesamte Konfiguration kann in crypthook.c mit den folgenden #defines geändert werden.
#define KEY_SALT "changeme"
#define IV_SALT "changeme"
#define ITERATIONS 1000
#define PASSPHRASE "Hello NSA"
KEY_SALT und ITERATIONS werden im Schlüsselableitungsprozess verwendet, um die Klartext-Passphrase in einen 256-Bit-Schlüssel umzuwandeln.
IV_SALT und ITERATIONS werden im IV-Ableitungsprozess verwendet, um die 8 Bytes zufälliger Daten in einen vollständigen IV für die Verwendung mit dem Algorithmus umzuwandeln.
PASSPHRASE ist einfach die Standard-Passphrase, falls keine über die Umgebungsvariable CH_KEY bereitgestellt wird.
$ make
Server
$ LD_PRELOAD=./crypthook.so CH_KEY=donthackmebro ncat -l -p 5000
Client
$ LD_PRELOAD=./crypthook.so CH_KEY=donthackmebro ncat server 5000