Arc / セキュリティ

多層E2EEアーキテクチャ

開発方針を公開する商用セキュリティ製品

1:1 の通信を図解 · 10秒プレビュー

ここで暗号化。相手の端末で開く。

人と人のメッセージ。秘密鍵は端末に残し、サーバーは暗号文と配送の情報を扱います。

  1. 01
    端末で暗号化

    端末を離れる前に本文を暗号化。

  2. 02
    暗号文を配送

    Firestoreが暗号文と配送情報を扱います。

  3. 03
    相手の端末で開く

    受信者の端末で本文を復号します。

Functions期限処理・通知
FCMプッシュ通知

配送経路の一例を示す概念アニメーションで、アプリの録画ではありません。他の経路、サーバーに見える情報と例外は下記に記載しています。

ARCHITECTURE

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 のメッセージ

  1. 初回だけ B の公開鍵を取得
  2. 端末で暗号化
  3. 暗号文だけを送る
  4. 通知(本文なし)
  5. B の端末で復号
  6. 既読・復号確認

本文が読めるのは A と B の端末だけ

狭い画面では図の中を横スクロールできます。原寸表示は上のリンクから。

1:1 は耐量子(PQXDH)。グループ本文は耐量子ではありません(共有鍵 + X25519 ECIES)。Mesh では近くの Arc 端末が暗号文のまま転送することがあります(中身は読めません)。経路を選ぶ中継は開発中です。

Arc Protocol — 1:1 の暗号化パイプライン

Phase 1

PQXDH

X25519 + Kyber-1024 で鍵交換(耐量子)

Phase 2

Double Ratchet

メッセージごとに鍵を更新

Phase 3

AES-256-GCM

本文とメディアを暗号化

技術スタック

Flutter 3.44
Dart
Riverpod 2.6
Rust
Arc Protocol

アプリ

Flutter 3.44 / Riverpod 2.6 / Rust FFI(libsignal v0.96.2)

Elixir
Phoenix
Cloud Run

鍵配布 API

Elixir / Phoenix(Google Cloud Run・europe-west1)

Authentication
Firestore
Storage
Functions
Messaging
App Check
Crashlytics

配信・認証

Firebase(Auth / Firestore / Storage / Functions / FCM / App Check / Crashlytics)

Android
Kotlin
Swift

Mesh

BLE 通信(Dart + Android Kotlin + iOS Swift の自社実装・ベータ)

技術仕様を詳しく見る

暗号化の4つのレイヤー

Arcの中核仕様

Arcの中核仕様は、ML-KEM-1024/PQXDH、1:1とグループのE2EE、IGF、オフラインMeshです。対応範囲と技術詳細はSecurityページで公開します。

01

PQXDH鍵交換

開発方針を公開する商用セキュリティ製品

02

Double Ratchet

開発方針を公開する商用セキュリティ製品

03

AES-256-GCM暗号化

開発方針を公開する商用セキュリティ製品

04

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

コンプライアンス & 標準

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の公開ガイダンスを参照して設計しています。認証や第三者監査を受けたものではありません。