🔒 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 共有 → 個人特定困難)
🔒 Business / Family 法人 / 家族グループ専用 wallet を排他的に割当 (他組織と非共有) ★★★★★ 外部からはアドレス自体が見えない

Standard tier の保証

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

🔒 Business / Family (¥15,000)

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 の意味です。