ハッシュ/暗号

AES Encrypt/Decrypt

パスワードを使ってAES-GCMまたはAES-CBCでテキストを暗号化・復号(鍵はPBKDF2で導出)。

AES is the standard for symmetric encryption: the same password is used to both encrypt and decrypt. This tool derives an encryption key from your password with PBKDF2 and encrypts text with AES-GCM or AES-CBC — all locally in your browser.

How to use it

Common uses

Things to keep in mind

The IV (initialization vector) must be unique for every encryption performed with the same key — reusing a key+IV pair in GCM completely breaks the encryption's security.

AES-CBC without a separate integrity check (a MAC) is vulnerable to ciphertext-tampering attacks — that's why GCM, which combines encryption and authentication in one mode, is the safer default.

このツールに関する記事: AES:共通鍵暗号の仕組み

よくある質問

ここでAESが対応する鍵長は何で、どれを使うべきですか?

AESは128、192、256ビットの鍵に対応しています。新しいアプリケーションにはAES-256が一般的に推奨されます。128ビットもすでに安全とされていますが、256ビットは実質的なコストをほとんどかけずに余裕を持たせられます。

暗号モード(CBC、GCMなど)の違いは何ですか?

GCMは暗号化と同時に暗号文を認証するため、改ざんも検出でき、推奨されるデフォルトです。CBCは暗号化のみで、完全性のために別途MACが必要であり、安全性を保つには暗号化ごとにランダムなIVも必要です。

私の鍵や平文はどこかに送信されますか?

いいえ。すべての暗号化・復号はWeb Crypto APIを使ってブラウザ内でローカルに実行され、サーバーには何も送信されません。

なぜECBモードを使うべきではないのですか?

ECBは各ブロックを独立して同じ方法で暗号化するため、同じ平文ブロックは同じ暗号文ブロックになります——これはデータの構造を露呈させます(例えば、画像内の繰り返しパターンは暗号化後も見えたままになります)。一意のIVを使うCBCやGCMはこの問題を解消します。

同じ鍵で同じIVを再利用するとどうなりますか?

GCMにとってこれは致命的な誤りです——鍵とIVの組み合わせを再利用すると、暗号化の機密性と真正性が完全に損なわれます。IVは同じ鍵での暗号化ごとに常に一意でなければなりません。

記事: ハッシュ/暗号

Hash Generator:MD5、SHA-1、SHA-256はどう違うのか

MD5が今もファイルの整合性検証に使われるが、パスワードには使われない理由。

Checksum Verifier:ファイルが壊れていないか確認する方法

一致するチェックサムがファイルの整合性を確認する一方、誰が作成したかは確認しない理由。

HMAC:鍵付きハッシュが通常のハッシュとどう違うか

通常のSHA-256がメッセージの改ざんから保護しない理由と、HMACがそれを可能にする理由。

Bcrypt:パスワードが速くではなく遅くハッシュ化される理由

速いSHA-256がパスワードに向かない理由と、遅いbcryptが適切な選択である理由。

UUID:ほとんど重複しない識別子はどう生成されるか

UUID v4が数百万台のマシンで独立して、衝突リスクなしに生成できる理由。

パスワード生成ツール:パスワードを本当に強くするものは何か

辞書の単語からなる長いパスワードが、記号や数字を含む短いパスワードより強い理由。

Argon2:このアルゴリズムがパスワードハッシュコンペティションで優勝した理由

Argon2が古いパスワードハッシュ化アルゴリズムよりGPUを使った攻撃に対してどう優れた防御を行うか。

Scrypt:このアルゴリズムがなぜこれほど多くのメモリを必要とするか

scryptがASICデバイスでのクラッキングを困難にするために意図的に大量のメモリを要求する理由。

TOTP:認証アプリのワンタイムコードはどう機能するか

Google Authenticatorのコードがインターネットなしで動作し、時刻だけでサーバーと同期する理由。

PBKDF2:最も古い鍵ストレッチング標準

PBKDF2の推奨反復回数が毎年増え続ける理由。

X.509:SSL証明書の中身は何か

緑色の錠前を表示する前に、ブラウザがサイトの証明書で正確に何をチェックしているか。

PGP:公開鍵と秘密鍵による暗号化の仕組み

PGPの公開鍵は自由に共有できるが、秘密鍵は決して共有してはいけない理由。