
TCP/UDP対称暗号化トンネルラッパー
CryptHook は、既存のアプリケーションを対称ブロック暗号による暗号化で保護するためのモジュール式実装です。ネットワーク通信の基本システムコールである send/sendto と recv/recvfrom をフックすることで動作します。Crypthook は、これらのシステムコールに依存する既存のあらゆるアプリケーションで動作します。
CryptHook は、256 ビット鍵を使用した AES の GCM モードに依存しています。鍵は PBKDF2 を使用してパスフレーズから生成されます。IV はランダムなバイトデータからその場で構築され、受信側でも同じ鍵導出技術を使用して初期化ベクトルを再構築することで、オーバーヘッドを最小限に抑えます。各パケットの認証も検証されます。
これをそれなりに安全な用途で使用する場合は、以下の特性を変更する必要があります。すべての設定は crypthook.c 内の次の #defines で変更できます。
#define KEY_SALT "changeme"
#define IV_SALT "changeme"
#define ITERATIONS 1000
#define PASSPHRASE "Hello NSA"
KEY_SALT と ITERATIONS は、プレーンテキストのパスフレーズを 256 ビット鍵に変換する鍵導出プロセスで使用されます。
IV_SALT と ITERATIONS は、8 バイトのランダムデータをアルゴリズムで使用する完全な IV に変換する IV 導出プロセスで使用されます。
PASSPHRASE は、CH_KEY 環境変数で指定されなかった場合に使用されるデフォルトのパスフレーズです。
$ make
Server
$ LD_PRELOAD=./crypthook.so CH_KEY=donthackmebro ncat -l -p 5000
Client
$ LD_PRELOAD=./crypthook.so CH_KEY=donthackmebro ncat server 5000