
터미널 기반 암호화 메신저로, 포스트퀀텀 암호화, Double Ratchet 프로토콜, Tor 익명성을 제공합니다. duress passphrase, deniable authentication, seccomp-bpf 및 mlockall을 통한 OS 수준 강화 기능을 갖추고 있습니다.
op4 — 보안 터미널 메신저
Op4는 Rust로 작성된 터미널 기반 암호화 메시징 애플리케이션입니다. 양자 내성 암호화를 사용한 종단간 암호화 개인 메시징을 제공하며, 모든 트래픽은 Tor 네트워크를 통해 라우팅되어 메시지 내용이나 IP 주소가 상대방을 포함한 누구에게도 노출되지 않습니다.
op4는 두 사람이 IP 주소나 실제 신원을 노출하지 않고 개인 메시지를 교환할 수 있게 합니다. 모든 메시지는:
op4는 터미널에서만 실행됩니다. GUI, 브라우저 구성 요소, 클라우드 계정이 없습니다. 외부 프로세스로는 사용자 기기에서 실행 중인 Tor 데몬에만 접촉합니다.
모든 다운로드 옵션 – AppImage, 소스 tarball, 클론 및 빌드, 자동 설치 프로그램은 다운로드 및 설치 가이드에 문서화되어 있습니다. 최신 릴리스는 릴리스 페이지에서 확인할 수 있습니다.
Debian 및 Ubuntu에서 install/setup.sh는 하나의 명령으로 모든 것을 처리합니다: Rust 도구 체인, 빌드 종속성, Tor, 제어 포트 구성, 바이너리 컴파일, 시스템 사용자, 데이터 디렉터리 및 AppArmor 프로필.
git clone https://github.com/Opfour/op4.git
cd op4
sudo bash install/setup.sh
스크립트가 완료된 후 op4를 실행하기 전에 반드시 로그아웃 후 다시 로그인해야 합니다. 설치 프로그램은 사용자를
debian-tor그룹에 추가하여 Tor 쿠키 파일을 읽을 수 있도록 합니다. Linux는 이미 열려 있는 세션에 그룹 변경을 적용하지 않으므로 새 로그인이 필요합니다.이 단계를 건너뛰면 op4 시작 시 다음 오류가 발생합니다:
/run/tor/control.authcookie 읽기 권한 거부됨
그런 다음 스크립트에서 출력된 소스 해시를 해당 버전에 대해 게시된 릴리스 해시와 비교하여 바이너리를 신뢰하기 전에 확인하세요.
op4가 시작되면 모든 Rust 소스 파일, Cargo.toml, Cargo.lock, build.rs를 포함하는 소스 해시를 출력합니다. 설치한 버전에 대해 아래 값과 비교하세요.
| 버전 | 소스 해시 |
|---|---|
0.3.0 | 80820cb41a63575d2c139dadd425d13d1e87e62a9d60200ae7b894ae2e9ad8ed |
0.3.1 | 48115efb12747fa78b627ddbf7a56c46169f59e777d7d7508941bf89e4fe7521 |
0.2.0-dev | 35740577f6c4a4f19c5a08fe85b1f78a10347f2ba9dd7642d126552266bfa5a5 |
0.1.0 | e1a94761c7d3fa589ba892b47d5295aa417f95aee126809d51a7e7fb7e78982c |
전체 앱을 실행하지 않고도 확인할 수 있습니다:
op4 --print-hash
해시가 일치하지 않으면 바이너리를 사용하지 마십시오 — 다른 커밋에서 빌드되었거나 변조된 것입니다.
먼저 종속성을 설치한 다음 스크립트를 실행하세요:
Rust 도구 체인 (rust-toolchain.toml을 통해 1.89.0으로 고정):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
Tor 및 빌드 종속성:
# Fedora
sudo dnf install tor gcc pkg-config openssl-devel
# Arch
sudo pacman -S tor base-devel pkg-config openssl
Tor 제어 포트 구성 – /etc/tor/torrc에 추가:
ControlPort 9051
CookieAuthentication 1
sudo systemctl restart tor
Tor 그룹에 사용자 추가:
sudo usermod -aG tor $USER # Fedora / Arch
이 단계 후에는 반드시 로그아웃 후 다시 로그인해야 합니다. 그룹 멤버십 변경은 활성 세션에 적용되지 않습니다. 그렇지 않으면 op4가
Permission denied reading /run/tor/control.authcookie오류로 실패합니다.완전히 로그아웃하지 않고 변경 사항을 적용하려면 다음을 실행하세요:
newgrp tor
빌드 및 설치:
git clone https://github.com/Opfour/op4.git
cd op4
cargo build --release
sudo bash install/setup.sh
op4
# 또는 시스템 설치 없이:
./target/release/op4
첫 실행 시 op4는 일반 암호와 강요 암호를 설정하도록 안내한 후 신원 키를 생성합니다. 볼트는 ~/.local/share/op4/vault.op4에 저장됩니다.
| 배포판 | 상태 |
|---|---|
| Ubuntu 22.04 / 24.04 | 지원 |
| Debian 12 | 지원 |
| Fedora 39+ | 지원 |
| Arch Linux (현재) | 지원 |
| Tails OS | 지원 (설정 가이드) |
| macOS / Windows / WSL1 | 미지원 |
최소 커널: 4.15 (5.4+ 권장). 아키텍처: x86-64 (aarch64는 작동해야 하지만 테스트되지 않음).
두 사람 모두 op4가 설치되고, Tor가 실행 중이며, 볼트가 잠금 해제되어 있어야 합니다. 교환은 비대칭적입니다: 한 사람이 먼저 연락처 코드를 보내고, 다른 사람이 추가한 다음 첫 번째 메시지를 보내면, 첫 번째 사람이 수락할 때까지 보류 중인 요청으로 도착합니다.
첫 실행 시 op4는 일반 암호와 강요 암호를 입력하도록 요청한 후 신원 키를 생성합니다. 이는 한 번만 발생합니다. 볼트는 ~/.local/share/op4/vault.op4에 저장됩니다.
$ op4
연락처 코드에는 전체 공개 키 번들과 .onion 주소가 포함되어 있습니다. 상대방이 귀하에게 연락하려면 이 코드가 필요합니다.
2 또는 → 누름)e 를 눌러 연락처 코드 내보내기op4:로 시작하는 긴 Base58 문자열입니다.연락처 코드는 비밀이 아닙니다. 공개적으로 공유해도 안전합니다. 공개 키와 onion 주소만 포함되어 있으며 비밀 자료는 없습니다.
상대방의 연락처 코드를 받은 후:
a 를 눌러 연락처 추가op4: 연락처 코드를 붙여넣고 Enter 누름↑/↓ 사용, 그 다음 Enter)3 또는 → 누름)이 첫 번째 메시지는 암호화된 핸드셰이크를 시작하고 Tor를 통해 상대방의 .onion 주소로 전달됩니다. 상대방은 이를 보류 중인 연락처 요청으로 보게 됩니다.
누군가 첫 메시지를 보내면 연락처 탭에 대기 중인 요청 수를 표시하는 배지가 나타납니다.
2 누름)p 를 눌러 보류 중인 요청 검토Esc 를 눌러 폐기)수락되면 Double Ratchet이 초기화되고 대화가 즉시 메시지 탭에서 사용 가능해집니다.
연락처를 신뢰하기 전에 상대방이 자신의 화면에서 보여주는 지문과 일치하는지 확인하세요. 이는 초기 연락처 교환 중 중간자 공격을 방지합니다.
A3F2:91BC:…)이 표시됩니다| 키 | 동작 |
|---|---|
1 / ← → | 탭 전환 (연락처 / 메시지 / 설정) |
↑ ↓ | 선택 이동 |
Enter | 대화 열기 / 확인 |
Esc | 취소 / 뒤로 가기 |
e | 연락처 코드 내보내기 (연락처 탭) |
a | 연락처 추가 (연락처 탭) |
p | 보류 중인 요청 검토 (연락처 탭) |
d | 선택한 연락처 삭제 (연락처 탭) |
r | 키 회전 (설정 탭) |
q | 종료 |
신원 키가 손상되었다고 생각되면:
4 또는 오른쪽으로 이동)r 을 눌러 키 회전| 목적 | 알고리즘 |
|---|---|
| 볼트 키 파생 | Argon2id (m=64 MiB, t=3, p=1) |
| 볼트 암호화 | ChaCha20-Poly1305 (256비트 키, 96비트 nonce) |
| 메시지 암호화 | ChaCha20-Poly1305 (래칫에서 파생된 메시지별 키) |
| 키 파생 (래칫) | HKDF-SHA256 |
| 부인 방지 인증 | HMAC-SHA256 |
| 기존 키 교환 | X25519 |
| 양자 내성 키 교환 | ML-KEM-768 (FIPS 203) |
| 기존 서명 | Ed25519 |
| 양자 내성 서명 | ML-DSA-65 (FIPS 204) |
| 전송 익명성 | Tor v3 히든 서비스 (.onion) |
op4는 전방향 보안을 위해 Double Ratchet 프로토콜(Signal Protocol과 유사)을 사용합니다. 즉:
KEM 단계는 X25519와 ML-KEM-768을 다음과 같이 결합합니다:
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 프록시를 통해 전송됩니다. op4와 관련된 네트워크 패킷에 실제 IP 주소가 나타나지 않습니다.
커버 트래픽(평균 간격 30초의 푸아송 분포 더미 메시지를 자신에게 전송)은 트래픽 양을 관찰하여 네트워크 관찰자가 누군가와 활발히 메시지를 주고받는지 알 수 없도록 합니다.