# password.es があなたのパスワードをどこにも送らない理由

> パスワードを預かって診断するサイトは、どんな約束をしても信用の問題から逃げられない。私たちの答えは約束することではない。そもそも必要としないこと、そして三十秒で自分の目で確かめられることだ。

2026-07-15 · David Carrero · password.es
Original: https://password.es/ja/blog/naze-password-wo-okuranai-no-ka/

---

ウェブページに「パスワードは保存しません」と書く手間は、ほかの何かを書く手間と
まったく同じだ。つまりゼロである。**あれは文章であって、保証ではない。**
本当のことを言う者も、言わない者も、同じ一行を書ける。画面のこちら側から見れば、
二つはまったく見分けがつかない。

パスワードを「診断します」と言って預かるサイトには、根っこにこの問題がある。
たとえそのサービスが非の打ちどころのないものでも——きれいなコード、善意、まっとうな
人たち——あなたにはそれを知る手立てがない。サーバーは閉じた箱だ。手持ちのいちばん
繊細なデータを送りつけて、向こう側で約束どおりのことが起きていると信じるしかない。

そして見落とされがちな点がある。**保存しないという約束は、約束する側にも
どうにもできないものからは守ってくれない。**誠実なサーバーにも、誰も見返していない
ログがあり、途中の proxy があり、自動バックアップがあり、入ったばかりの社員がいて、
そして単に虫の居所の悪い日がある。パスワードはもうあなたの機械を出ていった。
そのあと何が起きるかは、あなたの手の届かないところにある。多くの場合、彼らの手も
届かない。

## 何も信じなくていい唯一の答え

解決策は、もっと上手に約束することではない。**データを必要としないこと**だ。

パスワードがブラウザから一歩も出なければ、「彼らはそれをどうするのか」という問いは
成り立たなくなる。「彼ら」がいない。受け取るサーバーもなければ、それが載るログも、
それを含むバックアップも、それを読める社員もいない。信用は上手に管理されるのでは
ない。問題から消える。

[password.es](/ja/) がやっているのはそれだ。[チェッカー](/ja/checker/)は、あなたが
打った文字をあなた自身のブラウザで、あなた自身のプロセッサで解析する。打った文字は
どこにも行かない。行く先がそもそも存在しないからだ。

## 乱数はどこから来るのか

[ジェネレーター](/ja/)も考え方は同じだ。ランダムなパスワードを作るには乱数が要る。
手に入れる方法は二つ、サーバーに頼むか、ブラウザに頼むか。**サーバーに頼むのは
ばかげている。あなたより先にサーバーがそのパスワードを知ることになる。**

だからブラウザに頼む。`crypto.getRandomValues()` を使う。暗号用の乱数のために
ウェブプラットフォームが用意した標準 API——まさにこの目的のために存在するもの——で
あって、`Math.random()` とは別物だ。あちらはゲームでカードを切るためのもので、
本気の相手に耐えなければならない用途には向かない。乱数を作るのはあなたの機械の中の
ブラウザ自身である。私たちは関与しない。結果はあなたの画面に出て、そこに留まる。

## 私を信じずに確かめる方法

ここまでの話は、今のところ、このサイトを作った当人が書いた文章にすぎない。つまり、
さっき私が「疑え」と言ったものそのものだ。だから信じなくていい。**見てほしい。**

ブラウザの開発者ツールを開く——`F12`、Mac なら `Cmd+Option+I`。*ネットワーク*
(*Network*) タブに移り、開いたままチェッカーを開く。ページが読み込まれるのが見える
はずだ。ここで一覧をクリアし、パスワードの入力欄をクリックして、打ち込んでみる。

これから見えるのは次のものだ。ここは売り込みではなく、正確に書く。

- **入力欄をクリックした瞬間、リクエストが一本飛ぶ。**それはあなたのパスワードでは
  ない——まだ何も打っていない——。解析を担うライブラリだ。`zxcvbn-ja.min.js` という
  ファイルで、中には照合に使う単語や名前、キーボードの並び、既知のパスワードの一覧が
  入っている。欄に触れた時点で password.es から降ってくる。あなたが打っているあいだに
  届くようにするためだ。同じドメインから出ていて、静的ファイルで、このページを開いた
  誰にとっても同じものである——サイトには言語別のいくつかの版があり、これは日本語版を
  読み込む——。
- **そこから先は、何を打っても一覧は動かない。**一文字でも、二十文字でも、消しても、
  やり直しても、長い文章を貼りつけても。リクエストはゼロ。カウンターは動かない。
  辞書はすでにあなたのブラウザの中にあり、検索はあなたの機械のメモリに対して行われる。

この区別がすべての差だ。**リクエストがパスワードを運んでいないと信じる話ではない。
リクエストがない、という話だ。**何かを解釈する必要も、コードを読む必要もない。
増えないカウンターを見るだけでいい。

## 都合の悪いところも含めた棚卸し

議論の骨が「確かめてくれ」である以上、確かめれば見つかるものを隠すのは筋が通らない。
password.es の正直な棚卸しはこうだ。

**アナリティクスはない。**Google Analytics も、控えめな代替も、ピクセルも。かつて
一つあり、全ページから外した。**cookie はない。**サイトは一つも書き込まない。
ブラウザに保存されるものが一つだけある。ライトテーマとダークテーマのどちらが好みか、
それをあなた自身の端末のローカルストレージに置く。どこにも送られないし、同じ
開発者ツールから消せる。**登録もアカウントもフォームもない**。何かを預けたくても、
預ける場所がない。

そして都合の悪いところ。あるから書く。**ページは読み込み時に、Google のサーバーへ
フォントを二つ取りにいく。**つまり、あなたの IP の誰かがこのドメインのページを開いた
ことを Google は見ている。ごまんとあるサイトと同じように。打った文字は見えない——
そのリクエストは前に起きて、二度と繰り返されない——。それでも第三者へのリクエスト
であり、同じ*ネットワーク*タブに現れる。開発者ツールを開けと言っておいて、これに
触れないのは筋が通らない。直すべきものの一覧に載っている。

## なぜこれを書くのか

「リクエストはゼロ、プライバシーは完璧」と書いて澄ましていることもできた。響きは
よかっただろうし、細部で嘘になっていた。辞書のリクエストが一本あり、フォントがある。
**確かめられると崩れる主張は、主張ではなかった。宣伝だ。**

正確な版は締まりが悪く、そのかわり検証に耐える。あなたが打った文字はブラウザから
出ない。そしてそれは、すでに手元に入っている道具で三十秒あれば見える。

そして、これはそのままあなたの物差しとして返ってくる。**次にどこかのサイトが何かの
ために「パスワードを入れてください」と言ってきたら、あのタブを開いて、キーを叩いた
瞬間にリクエストが出るかどうかを見てほしい。**出たなら、あなたのパスワードはもう
出ていった。プライバシーポリシーに何が書いてあろうと、フォームの鍵アイコンが
どれだけ立派だろうと、会社がどれだけ堅そうに見えようと関係ない。ぐるぐる回る
アイコンのあとで解析済みのパスワードを見せてくるサイトなら、それがどこを通ったかは
もうわかっている。

セキュリティでいちばん語られない規則は、パスワードの話ではない。検証の話だ。
信じるのはいい。**確かめるほうがいい。ここではタダだ。**

---

*出典：password.es 自体のアーキテクチャ。どのブラウザの開発者ツールでも検証できる
——チェッカーは入力欄にフォーカスした時点で、解析ライブラリとその一覧
(`zxcvbn-ja.min.js`) を自身のドメインから読み込み、入力中は一切のリクエストを
発しない ·
`crypto.getRandomValues()`、暗号用の乱数のための Web Crypto API の標準 API ·
サイトのコードにアナリティクス、ピクセル、cookie は含まれない。ローカルに保存される
唯一のデータはテーマの設定である · フォントは Google Fonts から配信される。*
