先に結論です。ローカル暗号化でその場で確認できるのは、「この HTTP が平文、パスフレーズ、フラグメント鍵を業務データとして出したか」です。拡張機能がクリップボードを読んでいない証明にも、次の版の挙動が同じである証明にもなりません。以下は繰り返せる手順であり、新しい形容詞ではありません。
検索意図に一文で答える
ブラウザローカル暗号化とは、暗号化と復号が今見ているタブで起きることです。スクリプトはブラウザの Web Crypto API を呼び、AES-GCM 系のアルゴリズムをこの端末で完了させます。平文と鍵は、デフォルトでは HTTP 本文としてブラウザを出ません。確認方法は宣伝文を読むことではなく、開発者ツールの Network を開き、カナリアで検索し、必要ならオフラインで再測することです。
この記事は開発者、運用、そしてファイルやパスフレーズを「オンラインツール」に渡す前に自分の目で見たい人向けです。ファイル暗号化ボックスの操作説明の代わりにはならず、ホームの製品定義も繰り返しません。持ち帰るべきなのは、どのサイトでも使える確認手順です。
スローガンは自らを証明できない。通信は観察できる
多くのページに、ローカル計算、ゼロアップロード、エンドツーエンドと書いてあります。この言葉は、本当にこの端末で計算し終えるツールにも、「先に原文を POST し、サーバーが代わりに暗号化する」アップロードページにも置けます。文そのものにチェックサムはありません。
その場で見えるのは、今開いているタブが出したメソッド、アドレス、クエリ、リクエスト本文です。Chrome の Network パネルが一覧にします。いま選んだファイル名、いま入力したパスフレーズ、自分だけが知る実験原文がそこに出たら、いわゆるローカル暗号化は、この操作では成立していません。
逆も狭いです。パネルに平文がないことは、観察したリクエストがこれらの欄を運んでいない、という意味だけです。メモリに平文がなかった証明にも、ブラウザ拡張が入力欄を読んでいない証明にもなりません。宣伝を一度の再現可能な観察に落とす価値は、もう十分あります。同僚に「カナリアを検索した。リクエスト行と body はきれいだった」と言えればよく、公式サイトの一文を転送する必要はありません。
本物の鍵、証明書番号、マスキングしていない表で実験しないでください。捨ててよい小さなファイルを用意し、パスフレーズは一度きりの長い文にしてください。確認するのは通信であり、プライバシーをもう一度晒すことではありません。
「ローカル」が指す計算の層
「ブラウザローカル」は「このドメインが安全そう」という意味ではありません。「暗号演算が、今の文書のスクリプト環境で起きている」という意味です。AES-256-GCM なら、よくある正しい経路は crypto.subtle.encrypt です。鍵導出、暗号化、認証タグは、いずれもブラウザ同梱の API を通ります。MDN は、SubtleCrypto.encrypt がセキュアコンテキストでのみ使えると書いています。本番では HTTPS です。普通の HTTP ページでは crypto.subtle はしばしば undefined です。
AES-GCM を選ぶ理由は、名前が格好いいからではありません。完全性を伴う認証付き暗号です。暗号文が改ざんされるか、鍵を間違えると、復号は失敗します。「乱数に見える誤った平文」は出ません。IV はよく 12 バイト(96 ビット)で、NIST SP 800-38D の GCM 推奨と揃えています。暗号化のたびに新しい乱数 IV を使い、同じ平文でも異なる暗号文になるようにします。
ファイルの流れは、もっと具体的な動作に書けます。ファイル選択でこの端末のファイルを選び、スクリプトが塊ごとにメモリへ読み、塊ごとに暗号化し、ブラウザに暗号文のダウンロードを促します。手元に落ちる .lock や .enc は、この端末が作った結果ファイルであり、サーバーの受領証ではありません。単ファイル上限が 5 GB と書いてあっても、それはブラウザ内のストリーム処理の能力であり、リモート側が 5 GB の原文を受け取った意味ではありません。
「業務アップロード」と「ページがもともと出すリクエスト」も分けてください。開いてすぐ使えるツールサイトでも、スタイル、スクリプト、フォントは読み込みます。本文のないアクセス解析も送ることがあります。これらの存在を「ファイルがアップロードされた」証拠にしてはいけません。ただし解析の query や body に、いま入力したパスフレーズ、診断したパスワード、洗浄前の原文が出たら、話は別です。
FastPwd はこの境界を、確認できる文にしています。パスワード生成、パスワード診断、プライバシー洗浄、ファイルの暗号化/復号の平文と鍵は、デフォルトでブラウザを出ません。Burn-Link が出してよいのは暗号文だけです。復号鍵は URL の # フラグメントに置きます。ファイル暗号化ボックスは 1 MB ずつ分割し、PBKDF2(100000 回、SHA-256)でパスフレーズから AES-256 鍵を導き、.lock / .enc を出力します。どのツールも開いてすぐ使え、アカウントも保管庫もありません。約束は、あくまで約束です。以下では Network で点検項目に落とします。
Network でカナリア検査をする
まず、本物の業務に出ない印を用意します。ファイル名は canary-fp-20260825.bin、パスフレーズはランダムな長い文、本文にはこの実験にしかない一文を書いてください。カナリアの役割は検索です。Network のフィルタに貼り付け、ヒットしたら失敗です。
開発者ツールを開き、Network に切り替え、Preserve log をオンにします。フィルタはまず All にしてください。最初から XHR だけにしないでください。キャンセルされたリクエストや 4xx も、すでに平文を運んでいることがあります。それから一通り操作します。ファイルを選び、パスフレーズを入れ、暗号化または生成をクリックします。終わっても、先にパネルを閉じないでください。
- フィルタにカナリア文字列を貼り付けます。赤いヒットが出たら止まって、そのリクエストを読んでください。「ローカルっぽい」判断に戻る必要はありません。
- ヒットがなければ、Fetch / XHR を一つずつ開き、リクエスト行、クエリ、本文を照合します。スタイル、フォント、スクリプトは無視してかまいません。
- アクセス解析のパスを別に絞り、query と body を開きます。ページタイトルとパスは出てかまいません。いま入力したパスフレーズ、診断したパスワード、洗浄前の原文、ファイル内容は出てはいけません。
リクエスト行を見る
完全な URL の path と、疑問符の後ろのクエリは、一字ずつ見る価値があります。id のような位置特定の欄は出てかまいません。ファイル名、パスフレーズ、診断したパスワード、# の後ろの鍵は出てはいけません。アドレスバー全体とリクエスト行を比べてください。# 以降がリクエスト行に入っていたら、実装がフラグメントを query と取り違えたか、スクリプトが読み出してリクエストに書いたかです。
リクエスト本文を見る
POST / PUT の payload が二箇所目です。ファイル暗号化がローカル完了をうたうなら、本文に元ファイルのバイナリもパスフレーズもあってはなりません。Burn-Link に暗号文の欄があるのは、想定どおりの出域データです。いま入力した原文に見えないことを確認してください。パスワード診断ページが対象パスワードを POST したら、目的が「漏洩照会」でも「強度計算」でも、すでにこの端末を出ています。
アクセス解析を別に見る
アクセス解析は見落とされがちです。主 API がきれいで、報告に入力欄の全文が入っていれば、この操作はまだ「平文がブラウザに残った」とは言えません。解析パスを絞るとき、「解析スクリプトは無害」と決めつけないでください。別種の出域リクエストであり、点検の仕方は業務 API と同じです。FastPwd のアクセス解析はサイト自身の tracker を使い、localhost ではデフォルトで送りません。それでもカナリアで、報告にパスフレーズやファイル内容がないことを確認してください。
Preserve log をオンにしてください。暗号化のあとページが遷移または更新され、チェックがオフだと、平文を運んだ最初のリクエストが消えていることがあります。偽の「パネルは空」になります。
オフライン再測:静的資源は業務アップロードではない
二番目の対照は安上がりです。ページを最後まで読み込ませ、Network で Offline にするか、システムのネットワークを切ってから、捨ててよい小さなファイルを暗号化します。.lock のダウンロードが完了すれば、この回の暗号化/復号はリアルタイム API に依存していません。これは「ブラウザローカル暗号化」の強い信号ですが、唯一の信号ではありません。
偽の失敗もよくあります。Offline でフォントや解析スクリプトが赤くなるのは、暗号化の失敗ではありません。見るべきなのは、暗号化ボタンのあとに新しい業務 POST があるか、結果ファイルがダウンロードフォルダに出たかです。偽の通過もあります。スクリプトは平文をキューに入れ、再接続後に送ることができます。オフラインを通したあと、オンラインでもカナリア検索をしてください。
疑問符は HTTP に入る。# はデフォルトでは入らない
URL には、よく混同される二段があります。疑問符の後ろのクエリは HTTP リクエスト行に入り、サーバー、リバースプロキシ、アクセスログから見えます。# の後ろのフラグメントは、デフォルトではブラウザが手元に残し、今のページのスクリプトが読みます。HTTP のリクエスト対象に fragment は含まれません。これは RFC 9110 のリクエスト対象の約束であり、URL.hash がブラウザ側にしかない理由でもあります。
そのため、一度きりの暗号文リンクが鍵を # に置くと、受信側が s.html?id={id}#{key} を開いても、サーバーは設計どおり id だけを見ます。鍵は見えません。追加の暗号プロトコルではなく、ブラウザのフラグメントの既定動作です。境界もあります。完全なアドレスをチケット、グループチャット、hash を落とすプレビューカードに貼ると、鍵は「HTTP に入らない」から「他人の画面とログに出る」へ移ります。
確認方法も具体的です。Burn-Link で無害なテスト文を作り、作成リクエストの body が暗号文だけかを見ます。閲覧ページを開いたとき、文書リクエストと後続 API の URL に id だけがあるかを見ます。アドレスバーの # 以降は、これらのリクエストに出てはいけません。閲覧ページは受信側に公開され、ログインは不要です。
| 見る場所 | HTTP に入るか | 合格の条件 |
|---|---|---|
| ページのスローガン | 対象外 | 証拠にしない。対照だけに使う |
| リクエスト行 / query | 入る | カナリアなし、パスフレーズなし、フラグメント鍵なし |
| POST body | 入る | 原文なし。Burn-Link は暗号文のみ可 |
URL の # フラグメント |
デフォルトでは入らない | アドレスバーにはあり、リクエスト行にはない |
| アクセス解析 | 実装次第 | 入力欄の原文なし |
| Offline 後の暗号化 | 新しい業務リクエストなし | 暗号文はダウンロードできる。再接続後にカナリアを検索 |
証明できること、できないこと
この点検が支えられる結論は狭いです。はっきり書いた方が役に立ちます。
支えられること:使っているこのブラウザ、この版、この操作では、平文、パスフレーズ、フラグメント鍵は、観察できた HTTP の業務データや解析原文としてタブを出ていない。
支えられないこと:別タブや拡張がクリップボードを読んでいない。ディスクのダウンロードフォルダが安全である。相手が暗号文を受け取ったあと画面を撮らない。パスワード診断が全ウェブの漏洩庫を覆っている。診断がローカルのエントロピーと公開の弱いパスワード Top 一覧だけなら、答えられるのは「よくある弱いパスワードに似ているか」であり、「ある漏洩に一度も出ていない」ではありません。全ウェブの HIBP 照会ではありません。
これを侵入テストとも取らないでください。WebSocket も Service Worker キャッシュも見ておらず、難読化スクリプトも逆解析していません。目標は、同僚にこう説明できることです。Network を開き、カナリアで検索し、リクエスト行と body はきれいだった。これは「公式がアップロードしないと言っている」を転送するより、エンジニアの議論に近いです。
よくある質問
オフラインでも暗号化できれば、アップロードしていない証明になりますか?
証明できるのは、この回の暗号化/復号がリアルタイム API に依存していないことだけです。ページにキャッシュ済みのスクリプトは、再接続後にリクエストを送る可能性があります。オフラインを通し、オンラインでも同じカナリアで Network を再検索してください。両方通って、結論は立ちます。
Network パネルが空なら、この操作は安全ですか?
なりません。フィルタが Img だけ、Preserve log がオフ、遷移でリクエストが消える、いずれも偽の空白を作ります。フィルタを All に戻し、カナリアを検索し、アクセス解析も別に開いてください。空のパネルは観察の失敗であり、安全の証明ではありません。
Burn-Link が暗号文をサーバーに置くなら、まだブラウザローカル暗号化ですか?
「平文はこの端末で計算し終えてから出る」と考えます。サーバーが見るべきなのは暗号文と、探すための id だけです。復号鍵はリンクの # の後ろにあり、デフォルトでは HTTP に入りません。作成も閲覧もアカウントは不要です。確認すべきなのは、body が原文かどうかと、リクエスト行に # 以降の鍵があるかどうかです。
パスワード診断は対象パスワードを全ウェブの漏洩庫へ送りますか?
FastPwd の パスワード診断 は、この端末で強度を計算し、内蔵の公開弱いパスワード一覧と照合します。対象パスワードはアップロードしません。よくある弱いパスワードは見つけられますが、「全ウェブで見たことがない」証明にはならず、Have I Been Pwned 式の照会でもありません。対象パスワードをカナリアにして Network を検索すれば、この一条を確認できます。
同じ手順を、開いてすぐ使えるツールに使う
計算の境界がはっきり書いたページで練習するなら、FastPwd のファイル暗号化ボックスから始めてください。開いてすぐ使え、登録は不要です。本物のプライバシーを含まない小さなファイルを選び、パスフレーズはカナリアにし、暗号化して .lock をダウンロードします。同時に Network を見てください。静的資源と、あるかもしれないアクセス解析は見えてよいはずです。元ファイルやパスフレーズが業務欄として見えてはいけません。アルゴリズムは AES-256-GCM、Web Crypto で計算し、単ファイルは 5 GB までです。
Burn-Link は二番目の練習に向きます。無害なテスト文を作り、出るのが暗号文であることを確認します。閲覧ページは受信側に公開され、リンクの形は s.html?id={id}#{key} です。プライバシー洗浄 は「原文が解析に入るか」の練習に向きます。リンクとマスキング前のテキストは、製品説明どおりブラウザに残り、洗浄結果が十分かどうかは、あなたが判断します。
これらの練習の目的は、あるサイトが「絶対に安全」だと証明することではありません。同じ確認手順に慣れることです。ローカル暗号化をうたうどのページでも、手順は同じです。カナリア、Preserve log、リクエスト行、本文、解析報告、必要なら Offline をもう一度。
次に確認するときは、三つ覚えてください。第一に、通信を見る。スローガンは見ない。第二に、暗号文が出るのは受け入れてよい。鍵と原文はだめです。第三に、ブラウザ、版、機能を変えたら、カナリア検索をもう一度。繰り返せる観察だけが、自分たちのセキュリティ説明に書く価値があります。