本文へスキップ

テキストの暗号化・復号

Text Encrypt & Decrypt

パスフレーズからAES-GCMでメッセージを暗号化し、それだけで完結するBase64の塊にします。

メッセージをパスフレーズで暗号化して、どこにでも貼り付けられるBase64の文字列1つにし、また元に戻します。PBKDF2で導いた鍵によるAES-GCMです。ソルトとノンスは出力の中に一緒に入るので、その文字列が暗号文のすべてであり、ほかに取っておくものはありません。

🔒 ブラウザの中だけで動きますencryptaescryptotext
モード

取り戻す手立てはありません。パスフレーズを忘れればメッセージは失われ、弱いパスフレーズはメッセージを公開したのと同じです。

メッセージ

暗号化の結果(どこにでも貼り付けられる Base64)

PBKDF2 with HMAC-SHA-256 を 600,000回まわして導いた鍵で AES-256-GCM を使います。毎回新しく作る 16バイトのソルトと 12バイトのノンスが出力の中に一緒に入るので、この Base64 文字列が暗号文のすべてです。ほかに取っておくものはありません。ファイル暗号化ツールと同じコンテナで、すべてこのタブの中で動き、改ざんは復号されるのではなく検出されます。Argon2id ではなく PBKDF2 を使うのは、ブラウザ自身が実装しているのがそちらだからで、繰り返し回数はその PBKDF2 に対する OWASP の下限です。

使い方

  1. 無くさないパスフレーズを選びます

    どんな形の復旧もありません。パスフレーズを忘れればメッセージは消えますし、推測できるものを使えばメッセージは公開されたのと同じです。

  2. 暗号化してBase64をコピーします

    メールもチャットもテキストファイルも、そのまま通り抜けます。添付も、鍵のファイルも、横に一緒に保管するものもありません。

  3. パスフレーズは別の経路で渡します

    パスフレーズが暗号文の隣を一緒に旅してしまえば、すべてが台無しです。別のチャネルで、できれば別の日に送ってください。

よくある質問

Argon2idではなくPBKDF2なのはなぜですか

ブラウザ自身が実装し、プラットフォームが保守しているのがPBKDF2だからです。Argon2を使うにはWebAssemblyのビルドを一緒に配ることになりますが、監査できない暗号のプリミティブは、OWASPの推奨する反復回数で回すよく知られたものに劣ります。ここで使っているのがその推奨値です。

パスフレーズを間違えると、文字化けした文章が出ますか

出ません。はっきり失敗します。AES-GCMは暗号文を認証するので、パスフレーズが違ったり、文字が1つでも変わっていたりすれば、それらしい意味不明な文章ではなくエラーになります。改ざんは復号されるのではなく、検出されます。

これはエンドツーエンドの暗号化ですか

自分の手で、ブラウザの中で、ほかの誰も持たない鍵を使って行う暗号化です。ただしメッセージングのプロトコルではありません。前方秘匿性も、身元も、鍵交換もありません。やりとりを続ける会話なら、その目的で作られた道具を使ってください。

ファイルの暗号化ツールでこれを開けますか

開けます。意図的に同じコンテナを使っているので、2つの道具はお互いの出力を復号できます。監査すべき構造を、2つではなく1つにしておくためです。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。