Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/opfour/op4
認証と認可防御ツール暗号化/復号化ツール暗号化プライバシー認証
GitHubopfour/op4

op4

ポスト量子暗号、Double Ratchet プロトコル、Tor による匿名性を備えたターミナルベースの暗号化メッセンジャー。デュレスパスフレーズ、否認可能な認証、seccomp-bpf と mlockall による OS レベルの堅牢化を特長とします。

リポジトリを見る
632ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有


op4 — セキュアターミナルメッセンジャー

Op4 は Rust で書かれたターミナルベースの暗号化メッセージングアプリケーションです。ポスト量子暗号によるエンドツーエンド暗号化プライベートメッセージングを提供し、すべてのトラフィックは Tor ネットワーク経由でルーティングされるため、メッセージの内容も IP アドレスも、通信相手を含む誰にも公開されません。






目次

  1. op4 の機能
  2. インストール
  3. 別のユーザーへの接続
  4. セキュリティモデル
  5. アーキテクチャ概要
  6. プロジェクト構成
  7. 現在のステータス

op4 の機能

op4 を使用すると、双方が IP アドレスや実の身元を明かすことなくプライベートメッセージを交換できます。すべてのメッセージは次のようになります。

  • エンドツーエンド暗号化 — Double Ratchet プロトコルを使用。Signal でも採用されているのと同じ基本設計です。
  • ポスト量子耐性 — 鍵交換レイヤーは古典的な X25519 と ML-KEM-768 (NIST 標準の格子ベース KEM) を組み合わせており、将来の量子コンピューターでも記録されたトラフィックを遡って復号できません。
  • 匿名化 — すべてのトラフィックは Tor ヒドゥンサービス (.onion アドレス) 経由で転送されます。あなたの IP アドレスは相手やネットワーク上の観測者に一切公開されません。
  • ローカル保存 — サーバーは存在しません。メッセージと連絡先は自分のマシン上の暗号化されたボールトファイルにのみ保存され、他のどこにも保存されません。

op4 は完全にターミナル内で動作します。GUI もブラウザコンポーネントもクラウドアカウントもありません。接続する外部プロセスは、自分のマシンで動作している Tor デーモンだけです。


インストール

すべてのダウンロード方法 — AppImage、ソース tarball、clone & build、および 自動インストーラー — は ダウンロード & インストールガイド に記載されています。 最新リリースは リリースページ から入手できます。

Debian / Ubuntu (自動)

Debian と Ubuntu では、install/setup.sh が Rust ツールチェーン、ビルド依存関係、Tor、コントロールポート設定、バイナリのコンパイル、システムユーザー、データディレクトリ、AppArmor プロファイルをすべて 1 つのコマンドで処理します。

root@kitploit:~
git clone https://github.com/Opfour/op4.git
cd op4
sudo bash install/setup.sh

スクリプトの実行後、op4 を起動する前に一度ログアウトして 再ログインする必要があります。 インストーラーは Tor クッキーファイルを 読み取れるように、あなたのユーザーを debian-tor グループに追加します。 Linux ではグループ変更は既に開かれているセッションには適用されません — 新しいログインが必要です。

この手順を省略すると、起動時に op4 は次のエラーで失敗します: Permission denied reading /run/tor/control.authcookie

その後、バイナリを信頼する前に、スクリプトが出力したソースハッシュが、あなたのバージョンの公開されたリリースハッシュと一致することを確認してください。

リリースハッシュの検証

op4 は起動時に、すべての Rust ソースファイル、Cargo.toml、Cargo.lock、build.rs を対象としたソースハッシュを表示します。インストールしたバージョンの以下の値と比較してください。

フルアプリを起動せずに確認することもできます:

root@kitploit:~
op4 --print-hash

ハッシュが一致しない場合は、そのバイナリを使用しないでください — 別のコミットからビルドされたか、改ざんされています。

Fedora / Arch / その他のディストリビューション (手動)

最初に依存関係をインストールし、その後スクリプトを実行します:

Rust ツールチェーン (rust-toolchain.toml で 1.89.0 に固定):

root@kitploit:~
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

Tor とビルド依存関係:

root@kitploit:~
# Fedora
sudo dnf install tor gcc pkg-config openssl-devel

# Arch
sudo pacman -S tor base-devel pkg-config openssl

Tor コントロールポートの設定 — /etc/tor/torrc に追加:

root@kitploit:~
ControlPort 9051
CookieAuthentication 1
root@kitploit:~
sudo systemctl restart tor

ユーザーを Tor グループに追加:

root@kitploit:~
sudo usermod -aG tor $USER        # Fedora / Arch

この手順の後、ログアウトして再ログインする必要があります。 グループメンバーシップの変更はアクティブなセッションには適用されません。再ログインするまで、op4 は Permission denied reading /run/tor/control.authcookie で失敗します。

完全なログアウトなしで変更を適用するには、次を実行します:

root@kitploit:~
newgrp tor

ビルドとインストール:

root@kitploit:~
git clone https://github.com/Opfour/op4.git
cd op4
cargo build --release
sudo bash install/setup.sh

実行

root@kitploit:~
op4
# or, without system install:
./target/release/op4

初回起動時に op4 は通常のパスフレーズとデュレスパスフレーズの設定を案内し、その後アイデンティティキーを生成します。ボールトは ~/.local/share/op4/vault.op4 に保存されます。

サポート対象プラットフォーム

最小カーネル: 4.15 (5.4+ 推奨)。アーキテクチャ: x86-64 (aarch64 は動作するはずですが未テストです)。


別のユーザーへの接続

2 人はそれぞれ op4 のインストール、Tor の実行、ボールトのロック解除が必要です。交換は非対称です。一方が先にコンタクトコードを送り、もう一方がそれを追加して最初のメッセージを送信します。そのメッセージは保留中のリクエストとして届き、最初の人が承認します。

ステップ 1 — 初回起動

初回実行時に op4 は 通常のパスフレーズ と デュレスパスフレーズ を要求し、その後アイデンティティキーを生成します。これは一度だけ行われます。ボールトは ~/.local/share/op4/vault.op4 に保存されます。

root@kitploit:~
$ op4

ステップ 2 — コンタクトコードを取得

コンタクトコードには、完全な公開鍵バンドルと .onion アドレスが含まれています。相手があなたに到達するにはこれが必要です。

  1. 連絡先 タブに移動します (2 または → を押す)
  2. e を押してコンタクトコードをエクスポートします
  3. コードが画面に表示されます — op4: で始まる長い Base58 文字列です
  4. コピーして、アウトオブバンド (Signal、メール、直接会って、など) で相手に送信します

コンタクトコードは秘密ではありません。公開しても安全です。 公開鍵と onion アドレスのみが含まれており、秘密の情報は一切含まれません。

ステップ 3 — 相手を連絡先として追加

相手のコンタクトコードを入手したら:

  1. 連絡先 タブで、a を押して連絡先を追加します
  2. 相手の op4: コンタクトコードを貼り付けて Enter を押します
  3. 名前を付けて Enter を押します

ステップ 4 — 最初のメッセージを送信

  1. 連絡先リストから連絡先を選択します (↑/↓ を使用し、その後 Enter)
  2. メッセージ タブに切り替えます (3 または → を押す)
  3. メッセージを入力して Enter を押します

この最初のメッセージは暗号化ハンドシェイクを開始し、Tor 経由で相手の .onion アドレスに配信されます。相手には 保留中のコンタクトリクエスト として表示されます。

ステップ 5 — 受信リクエストを承認

誰かが最初のメッセージを送信すると、連絡先タブに待機中のリクエスト数を示すバッジが表示されます。

  1. 連絡先 タブに移動します (2 を押す)
  2. p を押して保留中のリクエストを確認します
  3. 送信者の フィンガープリント と 最初のメッセージ が表示されます
  4. この連絡先の名前を入力して Enter を押して承認します (Esc を押すと拒否して破棄します)

承認すると Double Ratchet が初期化され、会話はすぐにメッセージタブで利用可能になります。

ステップ 6 — フィンガープリントの検証 (推奨)

連絡先を信頼する前に、相手が自分の画面で表示しているものとフィンガープリントが一致することを確認してください。これにより、最初のコンタクト交換中の中間者攻撃を防ぎます。

  1. 連絡先 タブで、連絡先を選択します
  2. 右側のフィンガープリントパネルに 16 グループの 16 進文字列が表示されます (例: A3F2:91BC:…)
  3. 相手にあなたのエントリのフィンガープリントを読み上げてもらい、完全に一致することを確認します
  4. 検証は音声通話、直接会って、または相手の身元を確認できるその他のチャネルで行えます

ナビゲーションリファレンス

キーローテーション

アイデンティティキーが危険にさらされている可能性がある場合:

  1. 設定 タブに移動します (4 を押すか右に移動)
  2. r を押してキーをローテーションします
  3. op4 は新しい鍵ペアを生成し、古いキーで失効証明書に署名し、Tor 経由ですべての連絡先にブロードキャストします
  4. コンタクトコードが変更されるため、新しいコードを連絡先と共有します

セキュリティモデル

暗号プリミティブ (すべて RustCrypto エコシステム製)

Double Ratchet

op4 は前方秘匿性のため、Double Ratchet プロトコル (Signal Protocol に類似) を使用します。つまり、次のことを意味します:

  • 各メッセージはラチェットチェーンから導出された一意の鍵で暗号化されます。
  • 1 つのメッセージ鍵が漏洩しても、他のメッセージは公開されません。
  • デバイスを押収された場合でも、既に削除された過去のメッセージは、攻撃者がボールトのパスフレーズを知ったとしても復号できません。

ハイブリッドポスト量子鍵交換

KEM ステップは X25519 と ML-KEM-768 を次のように組み合わせます:

root@kitploit:~
shared_secret = HKDF(X25519_ss || MLKEM_ss)

攻撃者は鍵交換を破るために 両方 のアルゴリズムを破らなければなりません。これにより、量子敵対者 (ML-KEM-768) から保護しつつ、ML-KEM-768 に未知の欠陥がある場合でも古典的な攻撃に対して安全を維持します (X25519 フォールバック)。

否認可能な認証

メッセージは共有ラチェット状態から導出された鍵を使用して HMAC-SHA256 で認証されます。双方が同じ HMAC 鍵を保持しているため、どちらの当事者も任意の MAC を生成できた可能性があります。これは OTR や Signal でも使われているのと同じ否認可能性の特性です。メッセージは法的手続きにおいて暗号学的に特定の送信者に帰属させることができません。

ボールトとデュレスパスフレーズ

~/.local/share/op4/vault.op4 のボールトファイルには、すべての連絡先、会話、アイデンティティキーが保存されます。これは 2 つの独立した Argon2id 導出キーで保護されています:

  • 通常のパスフレーズ — 実際の連絡先とメッセージをロック解除します。
  • デュレスパスフレーズ — 見た目は同じだが空のおとりの受信箱をロック解除します。アプリのロック解除を強要された場合に使用します。外見上、2 つのパスフレーズは区別できません。

ネットワークの匿名性

op4 は受信箱用に Tor v3 ヒドゥンサービスを作成します。.onion アドレスはアイデンティティキーから (HKDF 経由で) 決定的に導出されるため、別の鍵を保存する必要なく再起動後も安定しています。送信メッセージは Tor SOCKS5 プロキシを経由して送信されます。実際の IP アドレスは op4 に関連するネットワークパケットに一切現れません。

カバートラフィック (ポアソン分布に従い自分宛に送信されるダミーメッセージ、平均間隔 30 秒) により、ネットワーク観測者はトラフィック量を監視しても、あなたが誰かと活発にメッセージをやり取りしているかどうかを知ることができません。

OS レベルのハードニング

  • mlockall — ボールトの鍵と平文がスワップに書き込まれるのを防ぎます。
  • RLIMIT_CORE = 0 — メモリを露出させる可能性のあるコアダンプを無効化します。
  • PR_SET_DUMPABLE = 0 — 他のプロセスがデバッガーをアタッチするのを防ぎます。
  • seccomp-bpf — システムコールの許可リストをインストールします。リストにないシステムコールは、プロセスを即座に強制終了させます。
  • AppArmor プロファイル (apparmor/op4.profile) — ファイルシステムへのアクセスを、ボールトディレクトリ、端末デバイス、Tor のみに制限します。

アーキテクチャ概要

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                        op4 process                          │
│                                                             │
│  ┌──────────┐   ┌──────────────────┐   ┌────────────────┐  │
│  │   TUI    │   │  Double Ratchet  │   │  Tor Transport │  │
│  │ (ratatui)│──▶│  + Hybrid PQ     │──▶│  nym_client.rs │  │
│  │          │   │  Crypto          │   │                │  │
│  └──────────┘   └──────────────────┘   └───────┬────────┘  │
│                                                │           │
│  ┌──────────────────────────────┐              │           │
│  │  Encrypted Vault             │    SOCKS5 / control port │
│  │  ~/.local/share/op4/vault.op4│              │           │
│  └──────────────────────────────┘              │           │
└────────────────────────────────────────────────┼───────────┘
                                                 │
                                    ┌────────────▼────────────┐
                                    │      Tor daemon         │
                                    │  127.0.0.1:9050 (SOCKS) │
                                    │  127.0.0.1:9051 (ctrl)  │
                                    └────────────┬────────────┘
                                                 │
                                         Tor network
                                                 │
                                    ┌────────────▼────────────┐
                                    │  Peer's .onion address  │
                                    │  (their hidden service) │
                                    └─────────────────────────┘

プロジェクト構成

root@kitploit:~
op4/
├── src/
│   ├── main.rs                  Entry point, startup sequence
│   ├── error.rs                 Unified error types
│   ├── crypto/
│   │   ├── keys.rs              Hybrid KEM + signature keypairs
│   │   ├── primitives.rs        AEAD, HKDF, HMAC, Argon2id
│   │   ├── ratchet.rs           Double Ratchet implementation
│   │   ├── hmac_auth.rs         Deniable authentication tags
│   │   └── handshake.rs         Initial key agreement (X3DH-style)
│   ├── network/
│   │   ├── nym_client.rs        Tor hidden-service transport
│   │   └── message.rs           Wire message format + padding
│   ├── storage/
│   │   └── vault.rs             Encrypted vault (Argon2id + AEAD)
│   ├── identity/
│   │   ├── profile.rs           Contact codes, stored contacts
│   │   └── revocation.rs        Key revocation records
│   ├── hardening/
│   │   ├── memory.rs            mlockall, RLIMIT_CORE, dumpable
│   │   └── seccomp.rs           seccomp-bpf syscall filter
│   └── ui/
│       ├── app.rs               TUI event loop and state machine
│       ├── contacts.rs          Contacts tab rendering
│       ├── conversation.rs      Messages tab rendering
│       ├── settings.rs          Settings tab rendering
│       ├── duress.rs            Duress inbox rendering
│       ├── input.rs             Input sanitization (CSI/OSC strip)
│       └── passphrase.rs        Secure passphrase prompts
├── apparmor/
│   └── op4.profile              AppArmor MAC profile
├── install/
│   └── setup.sh                 System installation script
├── build.rs                     Embeds source hash at compile time
├── deny.toml                    cargo-deny licence + advisory rules
├── rust-toolchain.toml          Pins Rust 1.89.0
└── docs/                        This documentation

現在のステータス

バージョン: 0.2.0-dev (プレリリース)

op4 は活発に開発中です。以下のレイヤーは完成しておりテスト済みです:

  • ボールト (作成、ロック解除、保存、デュレスモード)
  • すべての暗号プリミティブ (単体テスト 12/12 成功)
  • Tor ヒドゥンサービストランスポート (接続、送信、受信、カバートラフィック)
  • ターミナル UI (ナビゲーション、連絡先管理、会話ビュー)
  • OS ハードニング (メモリ、seccomp、AppArmor)

すべてのレイヤーがエンドツーエンドで接続されました:

  • アイデンティティ鍵ペア (X25519+ML-KEM-768、Ed25519+ML-DSA-65) は初回実行時に生成され、暗号化されてボールトに保存されます。
  • コンタクトコードのエクスポートは、実際の Base58 エンコードされた PublicKeyBundle (完全な公開鍵セット + onion アドレス) を生成します。
  • メッセージの送信では、連絡先への最初のメッセージで完全な X3DH スタイルのハンドシェイクを実行し、その後は Double Ratchet 暗号化を使用して、Tor 経由で送信します。
  • 受信メッセージは TUI イベントループ内の Tor トランスポートからポーリングされ、会話ビューに表示されます (sealed-sender パターン: ルーティングレイヤーは誰がメッセージを送信したかを決して公開しません)。

既知の制限はすべて解消されました。アプリケーションは 0.2.0-dev の機能完成ステータスに達しています:

  • HMAC 否認可能認証 は完全に配線されています。すべての送信データメッセージには、各メッセージのラチェット鍵から (conversation_id || message_counter || ciphertext) に対して計算された HMAC-SHA256 タグが含まれます。受信メッセージは受け入れ前に検証されます。後方互換性のため、古いピアからのゼロ埋めタグは許容されます。

  • メッセージ履歴は再起動後も保持されます。 完全な会話ログは、会話ごとの HKDF 導出鍵で暗号化され、ボールトの message_log_ct フィールドに保存されます。メッセージは会話を開いたときにボールトから読み込まれ、送受信のたびに書き戻されます。

  • 受信コンタクトリクエスト は、未知の相手からのものでも破棄されずにキューに入れられます。リクエストが待機中の場合、連絡先タブにバッジが表示されます。[p] を押して確認します。送信者のフィンガープリントと最初のメッセージが表示され、名前を入力して Enter を押すと承認されます (Esc で拒否)。承認すると連絡先が追加され、Double Ratchet が初期化され、最初のメッセージがボールトに保存されます。

  • デュレスボールトは保存後も保持されます。 ボールトファイル形式 (v2) はヘッダーに正確な暗号文長を保存するため、AEAD 復号はゼロパディングされたセクションではなく実際のバイトに対して動作します。暗号化されたデュレスセクションは save() 呼び出しのたびにそのまま保存され、デュレスパスフレーズを無期限に有効に保ちます。

  • 専用の Double Ratchet ブートストラップ鍵。 別の X25519 鍵ペア (identity_ratchet_secret) が初回実行時に生成され、コンタクトコードに ratchet_pub として含まれます。Alice のラチェットは Bob の KEM アイデンティティ鍵ではなく ratchet_pub で初期化され、鍵の役割が分離されます。

  • 設定タブは完全に機能します。 Tor SOCKS5 アドレスと自動削除のしきい値はインラインで編集できます。キーローテーション (新しい鍵ペアの生成、署名付き失効証明書の全連絡先へのブロードキャスト、エクスポートコードの更新) とキー失効のリタイアメントはともに配線済みで動作します。

  • キー失効はエンドツーエンドで配線されています。 RevocationCertificate 構造体はハイブリッド Ed25519+ML-DSA-65 鍵ペアで署名され、Tor 経由で メッセージとしてすべての連絡先に送信されます。

ツールをダウンロード
バージョンソースハッシュ
0.3.080820cb41a63575d2c139dadd425d13d1e87e62a9d60200ae7b894ae2e9ad8ed
0.3.148115efb12747fa78b627ddbf7a56c46169f59e777d7d7508941bf89e4fe7521
0.2.0-dev35740577f6c4a4f19c5a08fe85b1f78a10347f2ba9dd7642d126552266bfa5a5
0.1.0e1a94761c7d3fa589ba892b47d5295aa417f95aee126809d51a7e7fb7e78982c
ディストリビューションステータス
Ubuntu 22.04 / 24.04サポート
Debian 12サポート
Fedora 39+サポート
Arch Linux (current)サポート
Tails OSサポート (セットアップガイド)
macOS / Windows / WSL1サポート対象外
キー操作
1 / ← →タブを切り替え (連絡先 / メッセージ / 設定)
↑ ↓選択を移動
Enter会話を開く / 確定
Escキャンセル / 戻る
eコンタクトコードをエクスポート (連絡先タブ)
a連絡先を追加 (連絡先タブ)
p保留中のリクエストを確認 (連絡先タブ)
d選択中の連絡先を削除 (連絡先タブ)
rキーをローテーション (設定タブ)
q終了
用途アルゴリズム
ボールトの鍵導出Argon2id (m=64 MiB, t=3, p=1)
ボールトの暗号化ChaCha20-Poly1305 (256-bit key, 96-bit nonce)
メッセージの暗号化ChaCha20-Poly1305 (per-message key from ratchet)
鍵導出 (ラチェット)HKDF-SHA256
否認可能な認証HMAC-SHA256
古典的な鍵交換X25519
ポスト量子鍵交換ML-KEM-768 (FIPS 203)
古典的な署名Ed25519
ポスト量子署名ML-DSA-65 (FIPS 204)
トランスポートの匿名性Tor v3 hidden services (.onion)
WireMessageType::Revocation