Arc Protocol v2.0 — Powered by libsignal
Arc Protocol
セキュリティホワイトペーパー
バージョン 2.0 — 2026年4月 · Atlas Associates Inc. · Public
Abstract
Arcは、Signal Protocol (libsignal-client v0.65.2) を基盤とし、メッセージごとのXEdDSAデジタル署名、クライアントサイド送信者匿名化 (Sealed Sender)、BLE Meshオフライン通信(Bridgefy SDK暗号化)を実現するプライバシーファーストのメッセンジャーです。
Arcは全プランでエンドツーエンド暗号化 (E2EE) を無料で提供します。セキュリティは有料の壁の裏に置きません。
1. 設計原則
全員にE2EEを
全プランで完全な暗号化。セキュリティのための有料壁なし。
ポスト量子対応
古典的暗号とPQCのハイブリッドで将来の量子コンピュータから保護。
ゼロトラストアーキテクチャ
サーバーは平文コンテンツを一切見ません。メタデータ漏洩も最小化。
バックドアなし
政府や内部の要求で暗号化を損なうことはできません。暗号設計により強制。
2. 暗号基盤
| コンポーネント | アルゴリズム | 標準 | 鍵サイズ |
|---|---|---|---|
| Key Exchange (Classical) | X25519 ECDH | RFC 7748 | 256-bit |
| Key Exchange (Post-Quantum) | ML-KEM-1024 (via libsignal) | FIPS 203 | Level 3 |
| Message Encryption | AES-256-GCM | NIST SP 800-38D | 256-bit |
| Message Authentication | XEdDSA (libsignal) | Signal XEdDSA spec | 256-bit |
| Key Derivation | HKDF-SHA256 | RFC 5869 | 256-bit output |
| Chain Key Derivation | HMAC-SHA256 | RFC 2104 | 256-bit |
| Protocol Base | Signal Protocol | Open specification | — |
ArcはSignal Messengerと同じライブラリであるlibsignal-client v0.65.2(Rust、FFI経由)をコアプロトコル操作に使用しています。
3. PQXDH: ハイブリッド鍵交換
X25519を破る量子コンピュータは10〜15年以内に出現する可能性があります。「今傍受して後で解読する」攻撃は、今日キャプチャされた暗号化データが将来解読される可能性を意味します。Arcは古典的なX25519とポスト量子ML-KEM-1024を組み合わせることで対処しています。これはSignalが2023年9月に先駆けたアプローチと同じです。
Alice → Bob: 1. Fetch Bob's PreKey Bundle (Identity + Signed PreKey + One-Time PreKey + PQ PreKey) 2. 4× X25519 DH computations 3. ML-KEM-1024.Encaps(Bob's PQ Public Key) → (pq_ciphertext, pq_shared_secret) 4. Root Key = HKDF-SHA256(DH1‖DH2‖DH3‖DH4‖pq_shared_secret) 5. Send: Alice's keys + PQ ciphertext (1,088 bytes) + encrypted message
攻撃者が鍵交換を破るには、X25519とML-KEM-1024の両方を突破する必要があります。
| パラメータ | 値 |
|---|---|
| Public Key | 1,184 bytes |
| Secret Key | 2,400 bytes |
| Ciphertext | 1,088 bytes |
| Shared Secret | 32 bytes |
| NIST Security Level | Level 3 (AES-192 equivalent) |
| NIST Standard | FIPS 203 (August 2024) |
4. Double Ratchet: 前方秘匿性
PQXDHによるセッション確立後、すべてのメッセージはDouble Ratchetアルゴリズムを使用します。前方秘匿性(現在の鍵が漏洩しても過去のメッセージを復号できない)と侵入回復(漏洩は数メッセージ後に自動的に修復される)を提供します。
DH Ratchet (direction change): New Root Key = HKDF-SHA256(current_root_key, X25519_DH_output) Symmetric Ratchet (per-message): Message Key = HMAC-SHA256(chain_key, 0x01) Next Chain = HMAC-SHA256(chain_key, 0x02)
各メッセージは固有の独立した派生鍵を使用します。チェーン鍵は次の鍵を派生した直後に削除されます。セッションごとに最大1,000個のスキップされたメッセージ鍵をキャッシュ。
5. AES-256-GCM: メッセージ暗号化
各メッセージはDouble Ratchetから派生した固有のMessage Keyを使用し、AES-256-GCM認証付き暗号化で暗号化されます。
Ciphertext = AES-256-GCM.Encrypt( key: message_key (32 bytes), nonce: random (12 bytes, never reused), aad: ratchet_public_key ‖ prev_chain_length ‖ message_number, plaintext: message content ) Per-message overhead: nonce (12B) + auth tag (16B) = 28 bytes
6. AEGIS: メッセージ認証
AEGIS (Arc Enhanced Guard & Integrity System) はメッセージごとにEd25519デジタル署名を付与します。SignalもWhatsAppも個別のメッセージに署名はしていません。
| 特性 | 説明 |
|---|---|
| 送信者認証 | 特定のユーザーがメッセージを送信したことの暗号的証明 |
| 改ざん検知 | 署名後のいかなる変更も検知される |
| 否認防止 | 送信者はメッセージの送信を否定できない |
XEdDSA Signing (via libsignal): payload = senderId ‖ "|" ‖ timestamp ‖ "|" ‖ content signature = XEdDSA.Sign(payload, X25519_private_key) → 64 bytes attached to message (Converts X25519 key to Ed25519 internally — no separate Ed25519 key needed) Verification: XEdDSA.Verify(payload, signature, sender_X25519_public_key) → verified | failed | noSignature
7. Sealed Sender: 送信者匿名性
Sealed Senderはサーバーがメッセージの送信者を知ることを防ぎます。Signalの実装は送信者証明書とデリバリートークンシステムを使用します。Arcはサーバー側のトークン検証なしに、よりシンプルなエフェメラルX25519 ECDHエンベロープを使用します。
Sender: 1. Generate ephemeral X25519 keypair 2. DH = X25519(ephemeral_private, recipient_identity_public) 3. AES_Key = HKDF-SHA256(DH, info="Arc Sealed Sender v1") 4. Envelope = AES-256-GCM(senderId + "\0" + payload, AES_Key) → Sealed Message = ephemeral_pub(32B) ‖ nonce(12B) ‖ ciphertext ‖ mac(16B)
Intelligenceプランの両者による1:1チャットで利用可能。
8. グループ暗号化: Sender Keys
ArcはSignal ProtocolのSender Keyメカニズムを使用して効率的なグループ暗号化を実現します。各メンバーが個人のSender Keyを生成し、暗号化された1:1チャネル経由で配布します。メッセージは1回だけ暗号化されます(N人のメンバーに対してN回ではなく)。
Encryption (libsignal group_encrypt): Chain Key → Message Key → AES-256-GCM (libsignal internal) HMAC signature (libsignal internal) → Output: SenderKeyMessage bytes Decryption (libsignal group_decrypt): Signature verify → Replay detect → Decrypt (libsignal internal) All crypto operations delegated to libsignal — no custom primitives.
9. 鍵管理
| 鍵 | アルゴリズム | 有効期間 | ストレージ |
|---|---|---|---|
| Identity Key | X25519 | Account lifetime | Platform Secure Storage |
| Signing Key | XEdDSA (libsignal) | 90-day rotation | Platform Secure Storage |
| Signed PreKey | X25519 | Weekly rotation | Platform Secure Storage |
| One-Time PreKey | X25519 | Single use | Platform Secure Storage |
| PQ PreKey | ML-KEM-1024 | Single use | Platform Secure Storage (via libsignal) |
秘密鍵はiOS Keychain / Android EncryptedSharedPreferencesに保存されます。Hive、SharedPreferences、プレーンファイル、クラウドストレージには決して保存されません。
Elixir PreKey Server
PreKey bundles (Signed PreKey, One-Time PreKeys, PQ PreKeys) are managed by an Elixir-based PreKey server that handles bundle distribution, one-time key depletion tracking, and automatic replenishment signaling to clients.
10. Key Sync: マルチデバイス
Arcはデバイスごとに独立した鍵セットを使用します(プライマリ/リンクの階層なし)。新しいデバイスで元のデバイスのメッセージを復号するには、エフェメラルX25519公開鍵を含むQRコードをスキャンします。両デバイスがECDHを実行し、HKDFでAES-256-GCM鍵を派生して安全にID鍵を転送します。セッションTTL: 5分。
11. BLE Mesh: オフラインE2EE
ArcのBLE Meshネットワークは、Bridgefy SDKトランスポート暗号化によりインターネットなしでも安全な通信を可能にします — 主要メッセンジャーの中で唯一の機能です。BLE距離制限(10-30m)が物理的なセキュリティレイヤーとして機能し、Signal Protocolはこのユースケースでは不要です。自然災害、遠隔地、プライバシーが重要な環境に最適です。
12. 脅威モデル
| 攻撃者 | 能力 | 対策 |
|---|---|---|
| Passive Observer | Intercepts all traffic | E2EE: all content encrypted |
| Active MITM | Modifies traffic | AES-GCM auth + XEdDSA signatures |
| Server Compromise | Full Firestore access | No plaintext stored; keys client-only |
| Quantum Computer | Breaks X25519 | Hybrid PQXDH with ML-KEM-1024 |
| Key Compromise | Obtains session key | Double Ratchet forward secrecy |
| Replay Attack | Resends messages | Iteration tracking + unique nonces |
Arcが保護できないもの
- • マルウェアに侵害された端末/root化された端末
- • 受信者によるスクリーンショット
- • サーバー側のメタデータ分析(Sealed Senderで軽減)
- • ソーシャルエンジニアリング
13. 標準準拠
| 標準 | ステータス |
|---|---|
| NIST FIPS 203 (ML-KEM) | Implemented via libsignal-client |
| RFC 7748 (X25519) | Implemented |
| XEdDSA (Signal spec) | Implemented via libsignal-client |
| RFC 5869 (HKDF) | Implemented |
| NIST SP 800-38D (AES-GCM) | Implemented |
14. Signal・WhatsAppとの比較
| 機能 | Signal | Arc | |
|---|---|---|---|
| Protocol Base | Signal Protocol | Signal Protocol (licensed) | Signal Protocol (libsignal) |
| Post-Quantum Key Exchange | PQXDH (ML-KEM-1024, 2023) | PQXDH (via Signal Protocol) | PQXDH (ML-KEM-1024, via libsignal) |
| Post-Quantum Ratchet | SPQR Triple Ratchet (Oct 2025) | Not confirmed | Planned |
| Per-Message Signatures | DH authentication only | DH authentication only | XEdDSA (libsignal) ✦ |
| Sealed Sender | Cert + delivery token | Not implemented | Ephemeral ECDH envelope ✦ |
| Offline E2EE | Not supported | Not supported | BLE Mesh (Bridgefy SDK) ✦ |
| Multi-Device | Primary + Linked | Primary + Linked | Independent keys + Key Sync ✦ |
| Key Separation | XEdDSA conversion | XEdDSA conversion | XEdDSA (same as Signal) — unified key pair ✦ |
| Open Source | Fully open source | Partial | Whitepaper published |
透明性に関する注記: SignalはPQXDHを2023年9月に実装し、2025年10月にSPQR Triple Ratchetに進化させました。ArcのPQC機能はSignalのオープンソースlibsignalライブラリから継承されたものです。Arcの独自差別化ポイントには✦が付いています。
15. 結論
Arc Protocolは実績あるSignal Protocolを基盤とし、3つの独自セキュリティレイヤーで拡張しています:
XEdDSA (libsignal)
メッセージごとのEd25519署名が明示的な送信者認証、改ざん検知、否認防止を提供 — SignalとWhatsAppにはない機能です。
Client-Side Sealed Sender
エフェメラルECDHエンベロープによる送信者匿名性、完全にクライアントサイド。
BLE Mesh (Bridgefy SDK Transport Encryption)
Bridgefy SDK暗号化によるBluetooth経由のオフライン通信 — 主要メッセンジャーで唯一。
セキュリティ研究および責任ある脆弱性報告を歓迎します。
Download PDF
Enter your details to download the Arc Protocol Whitepaper.
バージョン 2.0 — 2026年4月 · Atlas Associates Inc.
