Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
op4 — 基于终端的加密通讯工具,采用后量子密码学、Double Ratchet 协议和 Tor 匿名。具备胁迫密码短语、可否认认证,以及通过 seccomp-bpf 和 mlockall 实现的操作系统级加固。 | Kitploit
工具/GitHubGitHub/opfour/op4
身份验证与授权防御工具加密/解密工具密码学隐私保护身份验证
GitHubopfour/op4

op4

基于终端的加密通讯工具,采用后量子密码学、Double Ratchet 协议和 Tor 匿名。具备胁迫密码短语、可否认认证,以及通过 seccomp-bpf 和 mlockall 实现的操作系统级加固。

查看仓库
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、源码压缩包、克隆并构建,以及 自动化安装程序 — 均记录在 下载与安装指南 中。 最新版本可在 Releases 页面 获取。

Debian / Ubuntu(自动安装)

在 Debian 和 Ubuntu 上,install/setup.sh 一条命令即可处理所有事项: Rust 工具链、构建依赖、Tor、控制端口配置、二进制编译、 系统用户、数据目录和 AppArmor 配置文件。

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

脚本运行结束后,你必须注销并重新登录后才能运行 op4。 安装程序会将你的用户添加到 debian-tor 组, 以便读取 Tor 的 cookie 文件。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 应该可以工作,但尚未测试)。


连接另一名用户

双方都需要安装 op4、运行 Tor,并解锁各自的保险库。 交换过程是非对称的:一方先发送自己的联系代码, 另一方添加该代码,然后发送第一条消息, 这条消息会作为待处理请求到达,由先发送代码的一方接受。

步骤 1 — 首次启动

首次运行时,op4 会提示输入普通口令和胁迫口令, 然后生成你的身份密钥。此过程只会发生一次。 你的保险库存储在 ~/.local/share/op4/vault.op4。

root@kitploit:~
$ op4

步骤 2 — 获取你的联系代码

你的联系代码包含完整的公钥包和你的 .onion 地址。 对方需要它才能联系到你。

  1. 导航到联系人标签页(按 2 或 →)
  2. 按 e 导出你的联系代码
  3. 你的代码会显示在屏幕上——它是一串很长的 Base58 字符串,以 op4: 开头
  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 组十六进制字符串, 例如 A3F2:91BC:…
  3. 请对方读出他们屏幕上你条目的指纹——必须完全匹配
  4. 可以通过语音通话、当面或任何其他你能确认对方身份的渠道进行验证

导航参考

密钥轮换

如果你认为自己的身份密钥可能已泄露:

  1. 转到设置标签页(按 4 或向右导航)
  2. 按 r 轮换密钥
  3. op4 会生成新的密钥对,用旧密钥签署撤销证书,并通过 Tor 广播给你所有联系人
  4. 你的联系代码会改变——将新代码分享给你的联系人

安全模型

密码学原语(全部来自 RustCrypto 生态)

Double Ratchet

op4 使用 Double Ratchet 协议(类似于 Signal 协议)来 实现前向保密。这意味着:

  • 每条消息都使用从棘轮链派生出的唯一密钥进行加密。
  • 泄露一条消息的密钥不会暴露任何其他消息。
  • 如果你的设备被扣押,即使攻击者获知你的保险库口令,也无法解密已被删除的过往消息。

混合后量子密钥交换

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 的保险库文件存储所有联系人、 对话和身份密钥。它由两个独立的、通过 Argon2id 派生的密钥保护:

  • 普通口令 — 解锁你的真实联系人和消息。
  • 胁迫口令 — 解锁一个外观相同但内容为空的诱饵收件箱。如果你被迫解锁应用,请使用这个口令。从外部看,两个口令无法区分。

网络匿名

op4 会为你的收件箱创建一个 Tor v3 隐藏服务。 你的 .onion 地址由你的身份密钥确定性派生(通过 HKDF), 因此在重启后保持稳定,无需存储单独的密钥。 出站消息通过 Tor SOCKS5 代理发送。 你的真实 IP 地址永远不会出现在与 op4 相关的任何网络数据包中。

掩护流量(以泊松分布发送给自己的虚假消息,平均间隔 30 秒) 可防止网络观察者通过观察流量大小来推断你是否正在积极 与某人通信。

操作系统级加固

  • 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(导航、联系人管理、对话视图)
  • 操作系统加固(内存、seccomp、AppArmor)

所有层现已端到端打通:

  • 身份密钥对(X25519+ML-KEM-768、Ed25519+ML-DSA-65)在首次运行时生成,并加密存储在保险库中。
  • 联系代码导出会生成真实的 Base58 编码 PublicKeyBundle(你的完整公钥集 + onion 地址)。
  • 发送消息时,对联系人的第一条消息执行完整的 X3DH 式握手,后续消息使用 Double Ratchet 加密,并通过 Tor 传输。
  • 入站消息在 TUI 事件循环中从 Tor 传输层轮询,并显示在对话视图中(密封发送模式:路由层永远不会透露消息的发送者)。

所有已知限制均已解决。该应用目前处于 0.2.0-dev 的功能完整状态:

  • HMAC 可否认认证已完全打通。每条出站数据消息都携带一个 HMAC-SHA256 标签,该标签使用每条消息的棘轮密钥对 (conversation_id || message_counter || ciphertext) 计算。入站消息在接受前会经过验证;为了向后兼容,来自旧版本对端的零填充标签会被容忍。

  • 消息历史跨重启持久化。 完整对话日志使用每对话 HKDF 派生密钥加密,并存储在保险库的 message_log_ct 字段中。打开对话时从保险库加载消息,每次发送或接收后写回。

  • 来自未知方的入站联系人请求会排队而不会丢弃。当有待处理请求时,联系人标签页会显示徽章。按 [p] 查看:你会看到发送者的指纹和对方的第一条消息,输入名字后按 Enter 接受(或按 Esc 拒绝)。接受后联系人被添加,Double Ratchet 被初始化,初始消息保存到保险库。

  • 胁迫保险库在保存时保持不变。 保险库文件格式(v2)在头部存储精确的密文长度,因此 AEAD 解密操作的是真实字节,而不是零填充部分。每次调用 save() 时,加密的胁迫部分都会原样存储,使胁迫口令无限期有效。

  • 专用 Double Ratchet 引导密钥。 首次运行时生成单独的 X25519 密钥对(identity_ratchet_secret),并作为 ratchet_pub 包含在联系代码中。Alice 的棘轮用 Bob 的 ratchet_pub 而不是他的 KEM 身份密钥初始化,从而分离了密钥角色。

  • 设置标签页完全可用。 Tor SOCKS5 地址和自动删除阈值可以内联编辑。密钥轮换(生成新密钥对、向所有联系人广播签署的撤销证书、刷新导出代码)和密钥报废撤销均已打通并可用。

  • 密钥撤销端到端打通。 RevocationCertificate 结构体使用混合 Ed25519+ML-DSA-65 密钥对签署,并通过 Tor 以 WireMessageType::Revocation 消息发送给所有联系人。

下载工具
版本源哈希
0.3.080820cb41a63575d2c139dadd425d13d1e87e62a9d60200ae7b894ae2e9ad8ed
0.3.148115efb12747fa78b627ddbf7a56c46169f59e777d7d7508941bf89e4fe7521
0.2.0-dev35740577f6c4a4f19c5a08fe85b1f78a10347f2ba9dd7642d126552266bfa5a5
0.1.0e1a94761c7d3fa589ba892b47d5295aa417f95aee126809d51a7e7fb7e78982c
发行版状态
Ubuntu 22.04 / 24.04支持
Debian 12支持
Fedora 39+支持
Arch Linux(当前)支持
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(来自棘轮的单条消息密钥)
密钥派生(棘轮)HKDF-SHA256
可否认认证HMAC-SHA256
经典密钥交换X25519
后量子密钥交换ML-KEM-768 (FIPS 203)
经典签名Ed25519
后量子签名ML-DSA-65 (FIPS 204)
传输匿名Tor v3 hidden services (.onion)