SecureMint
構造的安全性

セキュリティ

SecureMintがどのようにあなたのデータを保護しているかを解説します。

エンドツーエンド暗号化

AES-256-GCM

すべてのファイル暗号化にはAES-256-GCM(認証付き暗号化)を使用しています。暗号化・復号はすべてブラウザ内のWeb Crypto APIで処理され、平文がサーバーに送信されることはありません。

// Encryption parameters

Algorithm: AES-256-GCM

Key derivation: PBKDF2-SHA256 (600,000 iterations)

IV: 12 bytes (crypto.getRandomValues)

Salt: 16 bytes (crypto.getRandomValues)

鍵導出

PBKDF2

パスワードからの暗号鍵生成にはPBKDF2-SHA256を使用し、600,000回の反復処理を行います(OWASP 2024推奨値)。これにより、総当たり攻撃に対する耐性を確保しています。

セキュアファイル送信の仕組み

E2E
1ブラウザ内でランダムなAES-256鍵を生成
2ファイルをAES-256-GCMで暗号化
3暗号文のみをサーバー(Cloudflare R2)にアップロード
4共有リンクを生成。復号鍵はURLフラグメント(#以降)に格納
5受信者がリンクを開くと、ブラウザが復号鍵を取得して復号

URLフラグメント(#以降)はHTTPリクエストに含まれないため、サーバーのアクセスログにも残りません。サーバー運営者を含め、復号鍵を知ることは構造上不可能です。

ブラウザ完結の保証

サーバー通信なし

ファイル暗号化(.enc)とパスワード生成は完全にブラウザ内で動作します。ネットワーク通信は一切発生しません。ブラウザの開発者ツール(Networkタブ)で確認できます。

.enc ファイルフォーマット

Open

[magic: 8 bytes "SMINT01\0"]

[version: 1 byte]

[salt: 16 bytes]

[iv: 12 bytes]

[filename_length: 2 bytes (uint16 BE)]

[encrypted_payload: filename + file data]

[auth_tag: 16 bytes (GCM)]

透明性

公開

暗号化のコアロジックはオープンソースで公開しています。セキュリティ研究者やユーザーが実装を検証できます。

ポスト量子暗号化ロードマップ

将来計画

量子コンピュータの進歩により、現在広く使われているRSAやECDHなどの公開鍵暗号が将来的に脆弱になる可能性があります。SecureMintは対称暗号(AES-256-GCM)を中心に設計されているため、量子コンピュータの脅威を比較的受けにくい構造ですが、SecureChannelの公開鍵暗号部分について、以下のロードマップで対応を進めます。

1【現在】AES-256-GCM(対称暗号)は量子耐性あり。Groverのアルゴリズムでも実効セキュリティ128ビット相当を維持。
2【2026-2027】NIST標準化済みのML-KEM(旧CRYSTALS-Kyber)の評価・テスト実装を開始。
3【2027-2028】SecureChannelの鍵交換をハイブリッド方式(X25519 + ML-KEM-768)に移行。
4【将来】Web Crypto APIのポスト量子暗号サポートが安定次第、ブラウザネイティブ実装に移行。

SecureMintのファイル暗号化(AES-256-GCM)とパスワードベースの鍵導出(PBKDF2)は、量子コンピュータに対しても十分な安全性を維持します。