🔒 Security & Trust

脆弱性報告窓口・第三者監査スコア・ビルド検証手順

第三者評価サービスのスコア

Arpass は arpass.io ドメインに対して、以下の独立した第三者サービスで継続的に評価されています。各カードのリンクをクリックすると、現在の実測スコアを確認できます。

A+
SecurityHeaders.com
HTTP セキュリティヘッダ
→ 実測
A+
Mozilla Observatory
総合 Web セキュリティ
→ 実測
A+
SSL Labs
TLS / 証明書品質
→ 実測
HSTS Preload
常時 HTTPS 強制
→ 状況確認

※ スコアは web/_headers に記載した CSP / HSTS / X-Frame-Options 等の設定で達成しています。設定の根拠は arpass-spec 内の関連ドキュメントを参照。

ビルド検証 — 配信物の改竄を検出する

Arpass はブラウザアプリです。つまり arpass.io にアクセスするたびに JavaScript がダウンロードされ、それがマスターパスワードや Recovery Secret に触れる環境で実行されます。配信物の完全性は、そのままセキュリティ境界です。

万一 Cloudflare Pages のデプロイパイプラインや当社の GitHub アカウントが侵害された場合に備え、毎リリース時にすべての配信ファイルの SHA-256 を git 履歴に残しています。第三者は任意の配信ファイルを取得して、ハッシュが公開された値と一致するか検証できます。

検証コマンド例
# 1. Compute SHA-256 of the live file at arpass.io
curl -s https://arpass.io/lib/vault-crypto.js | sha256sum

# 2. Compare with the published hash list
curl -s https://arpass.io/.well-known/build-hashes.txt | grep "lib/vault-crypto.js"

ハッシュが一致しない場合 = 配信物が公開コミットの状態と異なる = 何らかの手段で改竄された可能性。脆弱性報告窓口へご連絡ください。

⚠️ HTML ファイルは検証対象外

Cloudflare が HTML レスポンスにのみ Web Analytics beaconBot Fight Mode の verification token を自動注入するため、HTML ファイル (*.html) の curl 取得 hash は記録値と一致しません。これは仕様であり、改竄ではありません。

暗号処理 (鍵派生・AES-GCM・ECDSA 署名・Recovery 復号) はすべて JavaScript で行われ、HTML は UI 構造のみ。Cloudflare の注入は HTML に script タグを追加するだけで、JS の中身は改変しません。さらに Content-Security-Policy: form-action 'self' により、HTML が改竄されてもフォーム送信先を外部ドメインに変更できません。

検証対象: JS ファイル (lib/*.js)、i18n JSON、ハッシュリスト本体 (/.well-known/build-hashes.txt) — これらが security boundary を守ります。

公開ハッシュ一覧

この仕組みで防げないこと

将来予定: ブラウザ拡張機能版の提供 — Web Store の審査と署名により上記限界も解決可能。

Arweave 上の wallet privacy (Phase 6.2)

※ Bitcoin・Ethereum など多くのブロックチェーンと同様に、Arweave 上のトランザクションは誰でも GraphQL で観測可能です。これは設計上の前提で、安全性は強固な暗号 (AES-256-GCM 二重暗号化 + 2-of-3 鍵管理) によって担保されます。Arpass の wallet 戦略は、この前提の上に「観測可能性のレイヤー」での追加保護を提供します。

各 transaction の data-item owner (= wallet address) は誰でも GraphQL クエリで列挙可能です。Arpass は単一 wallet ですべての書き込みを行うのではなく、tier ごとに wallet 戦略を分離することで、内部攻撃者にも耐性のある privacy を提供しています。

3 段階の Wallet 戦略
Tier Wallet 戦略 Privacy
Free / Standard / Heavy wallet pool 内 1 個に永続割当 (KV 記録)。同じ wallet が複数ユーザに割当される場合あり = k-anonymity を高める ★★★ k-anonymity (複数ユーザで wallet 共有 → 個人特定困難)
🔒 法人 / チーム 法人 / 家族グループ専用 wallet を排他的に割当 (他組織と非共有) ★★★★★ 外部からはアドレス自体が見えない

Standard tier の保証

各ユーザは publicKey hash で識別され、初回書き込み時に pool 内 wallet 1 個に永続割当されます。Phase 6.6 以降は pool 全体で複数ユーザが 同じ wallet を共有する可能性があり、これは k-anonymity を高める設計です:

🔒 法人 / チーム

Business / Family プランをご購入いただくと、法人または家族グループ専用の Arweave wallet が排他的に割り当てられます。この wallet は他組織・他家族と一切共有されません

この設計が防げないこと

詳細な privacy 評価は arpass-spec および wallet-pool-runbook.md を参照。

脆弱性報告窓口

セキュリティ研究者の方からの責任ある報告を歓迎します。3 つの窓口を用意しています:

(A) GitHub Security Advisory (推奨)

コードレベルの脆弱性 (XSS, 暗号誤用, 認証バイパス等) は GitHub の Private Security Advisory を使うのが最もスムーズです:

github.com/technoblest/arpass-spec/security/advisories/new

(B) メール

PGP 暗号化が必要な場合や、GitHub Advisory に馴染まないインフラ系報告は:

(C) HackerOne (準備中)

正式な Bug Bounty プログラム (報酬 $100〜$5,000) は HackerOne で公開予定:

hackerone.com/arpass (公開準備中)

SLA

詳細な scope, safe harbor 条項, 報酬基準は SECURITY.md (公開版) を参照。

暗号化方式・ソースコード公開

Arpass のクライアント側暗号コードと仕様書は AGPL-3.0 ライセンスで公開されています:

万一 Technoblest 株式会社が解散した場合でも、上記公開仕様とクライアントコードを使って、第三者が運用する復旧サイトを構築したり、ご自身でコードを実行してデータを取り戻したりできます。これが Exit Strategy by Design の意味です。

数字で見る、Arpass の強さ。

ブロックチェーンに置く以上、暗号文は世界中の誰でも見られます。それでも安全と言える理由を、具体的な数字で示します。

2/3要素必要

暗号文単独では復号不能

Arweave 上の暗号文を覗かれても、マスターパスワード × Passkey × Recovery Secret の 3 要素中 2 つが揃わない限り 1 ビットも復号できません。Passkey は端末の Secure Enclave + 生体認証で守られ、事実上抜き出せません。Arpass 運営も鍵を持ちません。

100万年

最悪ケース: Recovery 流出時

印刷した Recovery Secret が物理的に盗まれた場合のみ、攻撃者は マスターパスワードの総当たりに着手できます。それでも 12 文字以上の マスターパスワードなら Bitcoin マイナー級 ASIC 100 台 ($30 万投資) で約 100 万年。10 文字でも 120 年かかります。

2040年+

量子コンピュータ後も安全

AES-256 は Grover アルゴリズムでも実効 128 bit 残存。NIST 予測の量子コンピュータ実用化 (2030〜2040 年) 後も、本体暗号は破られません。

1025

Recovery 自体は宇宙年齢でも破れない

Recovery Secret は 160 bit の完全乱数 (機械生成、人間が覚えるパスワードとは別物)。直接総当たりは ASIC 100 台で約 4.6×10²⁵ 年 — 宇宙年齢の 3 京倍。マスターパスワードの「100 万年」より約 10¹⁹ 倍強く、紙の物理保管さえできれば実質無敵。

※ 「100 万年」は 12 文字以上の英数記号 マスターパスワードと Argon2id (64 MiB, t=3, p=4)を前提とした概算で、Recovery Secret が物理的に盗まれた最悪ケースの数字です。Recovery Secret 自体 (160 bit 乱数) を直接総当たりするなら 10²⁵ 年級で、現実的攻撃経路は事実上 マスターパスワード突破に絞られます。3 要素のいずれも漏れていない通常状態では、暗号文単独で攻撃の足がかりすらありません。Passkey は Secure Enclave に格納され、生体認証なしでは外部に取り出せないため、流出経路は事実上 Recovery の紙だけです。8 文字以下の弱い マスターパスワードでは数日〜数週間で破られる場合があります。詳細な計算根拠は arpass-spec および ヘルプ を参照。