Arc / セキュリティ
多層E2EEアーキテクチャ
開発方針を公開する商用セキュリティ製品
1:1 の通信を図解 · 10秒プレビュー
ここで暗号化。相手の端末で開く。
人と人のメッセージ。秘密鍵は端末に残し、サーバーは暗号文と配送の情報を扱います。
- 01端末で暗号化
端末を離れる前に本文を暗号化。
- 02暗号文を配送
Firestoreが暗号文と配送情報を扱います。
- 03相手の端末で開く
受信者の端末で本文を復号します。
配送経路の一例を示す概念アニメーションで、アプリの録画ではありません。他の経路、サーバーに見える情報と例外は下記に記載しています。
Arcのシステム構成
システム構成図を開く
秘密鍵は端末の Keychain / Keystore に保存し、サーバーへ送りません。相手へのメッセージは端末で暗号化してから送ります。Phoenix は公開鍵(PreKey)を配り、Firestore は暗号文・既読と配送の情報を扱い、Cloud Functions は期限削除と通知を行います。Mesh はサーバーを経由しません。
端末(iOS / Android / macOS)
Arc Protocol
1:1 · libsignal v0.96.2 · Rust FFI
- PQXDH
- Kyber-1024
- Double Ratchet
- 秘密鍵
- Keychain / Keystore
- 復号した本文
- SQLite / Hive
本文と秘密鍵はサーバーへ送らない(例外: AI 会話・リンクプレビュー)
メッセージの流れを見る
点が番号の順に動きます。ここに示す 4 つの経路はいずれも、本文を端末で暗号化してから送ります。
耐量子
1:1 のメッセージ
- 初回だけ B の公開鍵を取得
- 端末で暗号化
- 暗号文だけを送る
- 通知(本文なし)
- B の端末で復号
- 既読・復号確認
本文が読めるのは A と B の端末だけ
1:1 は耐量子(PQXDH)。グループ本文は耐量子ではありません(共有鍵 + X25519 ECIES)。Mesh では近くの Arc 端末が暗号文のまま転送することがあります(中身は読めません)。経路を選ぶ中継は開発中です。
Arc Protocol — 1:1 の暗号化パイプライン
PQXDH
X25519 + Kyber-1024 で鍵交換(耐量子)
Double Ratchet
メッセージごとに鍵を更新
AES-256-GCM
本文とメディアを暗号化
技術スタック

アプリ
Flutter 3.47 / Riverpod 2.6 / Rust FFI(libsignal v0.96.2)
鍵配布 API
Elixir / Phoenix(Google Cloud Run・europe-west1)
配信・認証
Firebase(Auth / Firestore / Storage / Functions / FCM / App Check / Crashlytics)
Mesh
BLE 通信(Dart + Android Kotlin + iOS Swift の自社実装・ベータ)
Arc セキュリティ・メッシュ状態遷移シミュレータ
耐量子暗号(PQXDH)、Sealed Sender、BLEオフラインメッシュ中継、中継ノード完全削除の厳密な状態遷移。
1:1チャットにおいて、NIST FIPS 203 準拠の格子暗号 ML-KEM-1024 と古典暗号 X25519 を組み合わせたハイブリッド鍵交換を実装。「今収集し、後で解読する(Harvest Now, Decrypt Later)」量子脅威に対抗します。
技術仕様を詳しく見る
暗号化の4つのレイヤー
Arcの中核仕様
Arcの中核仕様は、ML-KEM-1024/PQXDH、1:1とグループのE2EE、IGF、オフラインMeshです。対応範囲と技術詳細はSecurityページで公開します。
PQXDH鍵交換
開発方針を公開する商用セキュリティ製品
Double Ratchet
開発方針を公開する商用セキュリティ製品
AES-256-GCM暗号化
開発方針を公開する商用セキュリティ製品
XEdDSA署名(libsignal)
開発方針を公開する商用セキュリティ製品
ML-KEM-1024 パラメータ
耐量子暗号
NIST FIPS 203で標準化された耐量子鍵カプセル化メカニズム。
| アルゴリズム | ML-KEM-1024 (via libsignal-client) |
|---|---|
| NISTセキュリティレベル | Security category 5 |
| 古典的セキュリティ | 2^128 bit (X25519) |
| 量子セキュリティ | NIST security category 5 |
| 基盤 | Module Lattice (FIPS 203) |
| 公開鍵サイズ | 1,568 bytes |
| 秘密鍵サイズ | 3,168 bytes |
| 暗号文サイズ | 1,568 bytes |
DefenseTech ランタイム保護(Passkey・ゼロ知識鍵バックアップ・即時メモリゼロ化・Secret Mode)
Passkey (WebAuthn) × ゼロ知識鍵バックアップ保護
Passkey (WebAuthn) によるフィッシング耐性認証・生体認証ロック解除を採用。ゼロ知識鍵バックアップ(PBKDF2-HMAC-SHA256 600,000 iterations + HKDF-SHA256 + AES-256-GCM AAD 所有者バインディング)に ML-KEM-1024 (Kyber) TOFU ピン状態(単調増加マージ保護)を統合し、機種変更時の量子耐性鍵ピン引き継ぎを実現。Stateless WebAuthn Challenge は Fail-Closed HMAC 検証と 300秒 TTL 上限を強制します。
Fail-Closed E2EE メディア・音声エンジン & 即時メモリゼロ化
音声・画像・PDF・動画すべての添付メディアにおいて平文フォールバックを完全排除した Fail-Closed E2EE(XChaCha20-Poly1305 / AES-256-GCM)を強制。再生終了・破棄(dispose)・再読込時には、復号鍵・Nonce・復号バッファを fillRange(0, len, 0) で即時ゼロ化(Zeroization)します。
Secret Mode 即時遮蔽(0ms Release Seal & OS スイッチャー自動遮蔽)
指を離した瞬間 0ms で即時遮蔽(トランジション残像ゼロ)する Release Seal に加え、iOS / Android の App Switcher・画面収録・バックグラウンド遷移(AppLifecycleState.inactive / paused / hidden)を検知して自動遮蔽します。
O(1) IgfCountdownClock 統合(省電力・ゼロジャンク設計)
チャット・グループ全体の IGF(自動消滅カウントダウン)および Mutual Burn タイマーを単一の 1Hz クロック(IgfCountdownClock)に統合し、メッセージ数に依存しない O(1) 省電力・ゼロジャンク描画を実現しています。
自社主権 BLE エンジン Arc-Protocol-Mesh(L2CAP CoC + 位置情報権限ゼロ)
サードパーティ製メッシュ SDK を排し、自社開発の Arc-Protocol-Mesh v1.0.4 を搭載。BLE L2CAP Connection-Oriented Channels(主経路)と GATT フォールバック、1:1 ステートレス 2-DH X25519 ECIES(arcms1:)+ 対面 QR ハード Pin、グループ共有鍵 AES-256-GCM + Ed25519 署名(arcmg1:)、32,768 件の (frameId, fragIndex) 多段中継 dedup リングを備え、iOS / Android 12+ ともに位置情報権限を一切要求しません。
コンプライアンス & 標準
NIST CSF 2.0
米国商務省策定。6機能でサイバーリスクを体系管理。
NIST SP 800-53
連邦政府向けセキュリティ管理策。FedRAMP基盤。
FIPS 140-3
開発方針を公開する商用セキュリティ製品
NIST SP 800-175B
暗号アルゴリズム選定GL。FIPS 203根拠。
ISO/IEC 27001
国際標準ISMS認証。B2B/B2Gの信頼基盤。
GDPR
EU一般データ保護規則。世界最高峰の保護基準。
UK Cyber Essentials+
英国政府認定サイバーセキュリティ認証。
NCSC Cloud Security
英国NCSCの14原則クラウド評価基準。
米国NIST・EU GDPR・英国NCSC・ISOの公開ガイダンスを参照して設計しています。認証や第三者監査を受けたものではありません。
