BIP39英語リストからランダムに選んだ4〜8語の、覚えやすいパスフレーズを作ります。
AES-GCM暗号化/復号
ツール自体は英語ですが、このページではお客様の言語でその使い方を説明しています。
AES-GCM暗号化/復号 を使用してください
機能の説明
パスフレーズとAES-256-GCMでテキストを暗号化するか、このツールで作成したBase64文字列を復号します。鍵はパスフレーズのSHA-256ハッシュを1回計算しただけのものなので、長くランダムなパスフレーズを使ってください。
すべてブラウザ上で動作します。入力した内容は一切アップロードされません。
AES-GCM暗号化/復号 の使い方
- パスフレーズを入力する. Password / Keyに長くランダムなパスフレーズを入力します。この欄は空の値も受け付けますが、その場合は何も保護されません。
- テキストを貼り付ける. 暗号化するテキスト、またはこのツールで作成したBase64文字列をPlaintext / Ciphertextに入力します。
- 暗号化または復号する. Encrypt(暗号化)を押すとBase64文字列が得られ、Decrypt(復号)を押すとその文字列がテキストに戻ります。
- コピーして安全に共有する. Copyを押し、Base64をある経路で送ります。パスフレーズは、対面や電話など別の経路で伝えてください。
- 復号の失敗に対処する. DecryptでError: wrong key or invalid dataと表示された場合は、パスフレーズを1文字ずつ確認し、Base64文字列全体がコピーされているか確かめてください。
例
短いメッセージ
Meet at the usual place at 10:00.sc/i5ncy6JbuW/+WPWQo6pboxhwf1K3tR7fOW49jHPXbZOVhlKrJEXqGkWJ31PqgI7moKwETaLovN0/tlA==Encrypt(暗号化)は、ランダムな12バイトのIV、暗号文、16バイトのタグをBase64にしたものを返し、実行するたびに結果が変わります。先にPassword / Keyにパスフレーズを入力してください。このツールは空のパスフレーズも受け付けますが、その場合は何も保護されません。
チェック対象
| シグナル | その意味 |
|---|---|
| 鍵 | パスフレーズのSHA-256で、AES-256の鍵として使われます。ソルトも低速な導出もないため、同じパスフレーズからは常に同じ鍵が得られます。 |
| Base64の先頭16文字 | 12バイトのIVです。Encryptは毎回新しいランダムなIVを生成するため、同じテキストでも実行するたびに出力が変わります。 |
| 出力の長さ | 12バイトのIV、テキストのバイト列、16バイトのタグの順で、すべてBase64になっています。空のテキストでは40文字、23バイトのテキストでは68文字になります。 |
| Error: wrong key or invalid data | パスフレーズが異なる(大文字小文字や空白も区別されます)、文字列が変更されたり途中で切れたりしている、またはBase64ではない、のいずれかです。検証に失敗した場合、GCMはテキストを返しません。 |
| 形式ヘッダーなし | 出力にはバージョンやアルゴリズムの印も関連データ(associated data)も含まれないため、他のソフトウェアで読むには、これとまったく同じ配置と鍵導出が必要です。 |
| Base64の入力 | Decryptは、Encryptが出力する標準のBase64を想定しています。メールソフトが追加した空白や改行は無視されますが、文字が欠けていたり変更されていたりすると復号に失敗します。 |
| 空のパスフレーズも受け付ける | その場合、鍵は空文字列のSHA-256となり、誰でも計算できるため、テキストは実質的に暗号化されていません。 |
その他の例
サンプルを復号する
Password / Key: example passphrase, not a real secret; Ciphertext: AAAAAAAAAAAAAAAAmdUgeZatb2KYwe2btQ+qgA3xKNnswXrrQ6AeKTDSu03TnrvNXygfDecryptでHello from PhishDestroyと表示されます。このサンプルは説明のためだけに、すべてゼロのIV(先頭のAAAAAAAAAAAAAAAA)で作成されています。Encryptは常にランダムなIVを使います。
パスフレーズの1文字を変えた場合
The same ciphertext with Password / Key: Example passphrase, not a real secretError: wrong key or invalid data
空のテキストを暗号化する
Plaintext / Ciphertext empty, any passphrase, Encrypt40文字のBase64文字列(12バイトのIVと16バイトのタグ)で、押すたびに異なります。
よくある質問
パスフレーズから鍵はどのように作られますか?
AES-256の鍵は、パスフレーズのSHA-256ハッシュを1回計算したもので、ソルトも、PBKDF2やArgon2のような低速な鍵導出も使っていません。そのため、短いパスフレーズや推測しやすいパスフレーズはオフラインで素早く総当たりされる可能性があります。Passphrase Generatorなどで作成した、長くランダムなパスフレーズを使ってください。
出力には何が含まれ、他のソフトウェアで復号できますか?
ランダムな12バイトのIV、続いて暗号文と16バイトのGCM認証タグをBase64にしたものです。パスフレーズが誤っているか、1バイトでも変更されていると、復号時にError: wrong key or invalid dataと表示されます。他のソフトウェアで復号できるのは、同じSHA-256の鍵とバイト配置を使う場合だけです。
テキストやパスフレーズはどこかへ送信されますか?
いいえ。暗号化はWeb Crypto APIを使ってブラウザ内で行われます。パスフレーズとテキストがアップロードされたり保存されたりすることはありません。
シードフレーズをここで暗号化すべきですか?
いいえ。ウォレットのシードフレーズは決してWebサイトに入力しないでください。また、ソルトなしのSHA-256ハッシュ1回で作られた鍵では、弱いパスフレーズがオフラインで総当たりされる可能性があります。シードフレーズは、紙や金属、ハードウェアウォレットなど、オフラインで保管してください。
他のソフトウェアで出力を復号できますか?
はい。同じ配置に従えば可能です。鍵はUTF-8のパスフレーズのSHA-256、IVは先頭12バイト、タグは末尾16バイトで、関連データはありません。Pythonのcryptographyパッケージやその他のAES-GCMライブラリで復号できます。
1つのパスフレーズを多くのメッセージに使い回してもよいですか?
各メッセージには新しいランダムな12バイトのIVが使われるため、使い回しても実際にIVが重複することはありません。本当のリスクはパスフレーズそのものです。それを知った人は、そのパスフレーズで作られたすべてのメッセージを読むことができます。
GCMは通常のAESに何を加えますか?
認証タグです。IV、暗号文、タグのいずれかが変更されると検出され、改変されたテキストを返す代わりに復号が失敗します。