第三者評価サービスのスコア
Arpass は arpass.io ドメインに対して、以下の独立した第三者サービスで継続的に評価されています。各カードのリンクをクリックすると、現在の実測スコアを確認できます。
※ スコアは 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"
ハッシュが一致しない場合 = 配信物が公開コミットの状態と異なる = 何らかの手段で改竄された可能性。脆弱性報告窓口へご連絡ください。
Cloudflare が HTML レスポンスにのみ Web Analytics beacon と Bot 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 を守ります。
公開ハッシュ一覧
arpass.io/.well-known/build-hashes.txt— プレーンテキスト形式 (curl で fetch しやすい)arpass-spec/BUILD-HASHES.md— Markdown 形式 (git 履歴で過去の状態も追える)
この仕組みで防げないこと
- 当社の GitHub repo 自体が侵害された場合 (攻撃者が同時にコードとハッシュを書き換えると検出不能)
- 配信が一時的に改竄されてあなたが訪問した瞬間だけ被害を受け、その後元に戻された場合 (window-of-vulnerability 攻撃)
将来予定: ブラウザ拡張機能版の提供 — 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 を提供しています。
| Tier | Wallet 戦略 | Privacy |
|---|---|---|
| Free / Standard / Heavy | wallet pool 内 1 個に永続割当 (KV 記録)。同じ wallet が複数ユーザに割当される場合あり = k-anonymity を高める | ★★★ k-anonymity (複数ユーザで wallet 共有 → 個人特定困難) |
| 🔒 Business / Family | 法人 / 家族グループ専用 wallet を排他的に割当 (他組織と非共有) | ★★★★★ 外部からはアドレス自体が見えない |
Standard tier の保証
各ユーザは publicKey hash で識別され、初回書き込み時に pool 内 wallet 1 個に永続割当されます。Phase 6.6 以降は pool 全体で複数ユーザが 同じ wallet を共有する可能性があり、これは k-anonymity を高める設計です:
- Arweave 上の同じ wallet アドレスから出る write が 複数ユーザの write の混合として観測される
- 外部から見て「特定の write が誰のものか」を判別する手がかりがない (個人活動量の推定も困難)
- 内容は二重 AES-256-GCM 暗号化されているため、wallet を発見しても write 内容は読めません
🔒 Business / Family (¥15,000)
Business / Family プランをご購入いただくと、法人または家族グループ専用の Arweave wallet が排他的に割り当てられます。この wallet は他組織・他家族と一切共有されません。
- 外部に wallet address が知られる方法がない (KV record は組織内の admin 経由でのみ取得可能)
- Arweave GraphQL で「あなたの組織の write」を検索することは 外部からは原理的に困難
- 向き: セキュリティ意識の高い法人 / 家族 / 経営者 / ジャーナリスト / 富裕層
この設計が防げないこと
- Cloudflare KV や Arpass バックエンドが完全侵害された場合 (該当の場合、wallet → user の紐付けが攻撃者に渡る)
- Arpass envelope の サイズ分布 (バケット 80/160/240 KiB + jitter 8 KiB) を知る攻撃者が Arweave 全 transaction を nightly enumerate して Arpass トラフィックの総量推定を行う (個別 user 識別は不可能。Phase 7.0w-AR で固定 "App-Name" タグ名を廃止し、tag name 自体も rMat 派生のランダム値にしたため、tag pattern による識別経路は閉じられている)
詳細な 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 に馴染まないインフラ系報告は:
- アドレス:
security@arpass.io - 件名 prefix:
[Arpass Security] - PGP 公開鍵: SECURITY.md → PGP key
(C) HackerOne (準備中)
正式な Bug Bounty プログラム (報酬 $100〜$5,000) は HackerOne で公開予定:
hackerone.com/arpass (公開準備中)
SLA
- 初動応答: 72 時間以内
- 協調的開示: 90 日 (合意により延長可)
- 修正後の Hall of Fame 掲載: ご希望に応じて
詳細な scope, safe harbor 条項, 報酬基準は SECURITY.md (公開版) を参照。
暗号化方式・ソースコード公開
Arpass のクライアント側暗号コードと仕様書は AGPL-3.0 ライセンスで公開されています:
github.com/technoblest/arpass-spec— 公開リポジトリ (仕様書 + クライアントコード snapshot + ハッシュ + セキュリティ方針)- envelope-v5.md — 2-of-3 暗号化方式の完全仕様 (AES-256-GCM + PBKDF2-SHA256 + ECDSA P-256 + WebAuthn PRF)
- crypto-rationale.md — 暗号アルゴリズム選定の根拠
- lib/ — 暗号関連クライアントコード snapshot
- 📱 iOS / Android アプリ (Arpass Drive) の source code (
technoblest/arpass-mobile) は薄い WebView ラッパーで、暗号ロジックは含みません — Web 版 arpass.io をロードして表示するだけです。App Store / Google Play の審査通過時点で AGPL-3.0 の下に public 化予定 (現在は private)。それまでの暫定として、信頼できるアプリかは「Web 版 arpass.io と挙動が完全に一致するか」で判断できます。
万一 Technoblest 株式会社が解散した場合でも、上記公開仕様とクライアントコードを使って、第三者が運用する復旧サイトを構築したり、ご自身でコードを実行してデータを取り戻したりできます。これが Exit Strategy by Design の意味です。