piapia123
ja

AES / DES / 3DES の暗号化と復号

エンコード

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

共通鍵によるテキストの暗号化です。AES は今日選ぶべき唯一の方式で、ブラウザが Web Crypto として標準実装しておりハードウェアで高速化されます。DES の 56 ビット鍵は 1998 年には専用機で数日で全探索されていました —— 残っているのは古いデータを読むためだけです。3DES はそれを3回の暗号化で補い、実効強度を 112 ビットに上げたものですが、同じく変更できない旧システムとの接続にしか使いません。アルゴリズムよりモードの選択のほうが間違えやすいところです:CBC は長年の既定で 16 バイトの IV が必要、GCM は完全性の検証を追加するので暗号文が1バイト書き換わっても検出できます(CBC にはできません)、CTR はブロック暗号をストリームとして使うためパディング不要、そして ECB は同じ平文ブロックを同じ暗号文ブロックにするためパターンがそのまま漏れます —— 本ツールが ECB を残しているのは旧システム互換のためだけで、AES では受け付けません。計算はすべてブラウザ内で完結し、鍵も平文も送信されません。

機能

  • 3つのアルゴリズム:AES(128 / 192 / 256 ビット)・DES・3DES
  • 4つのモード:CBC・GCM・CTR・ECB —— それぞれの用途を明記
  • 鍵と IV はテキスト・16進数・Base64 で指定可能。16進数は空白・コロン・0x 接頭辞を許容します
  • AES はブラウザ標準の Web Crypto(ハードウェア高速化)、DES / 3DES は内蔵実装
  • GCM の認証タグは暗号文の末尾に付加され、他のツールの出力形式と一致します
  • 長さが違うときは、実際の長さと必要な長さの両方を示します(「無効な鍵」だけでは何も伝わりません)

使い方

  1. 方向を選びます:暗号化または復号
  2. アルゴリズムとモードを選びます(新規なら AES + CBC または GCM)
  3. 鍵と IV を入力し、必要なら形式を切り替えます
  4. 内容を貼り付け、Ctrl/⌘ + Enter か「実行」を押して結果をコピーします

よくある質問

CBC・GCM・CTR・ECB はどう選びますか?
新規なら GCM(AES の場合)です —— 機密性に加えて完全性も検証するため、暗号文が1バイトでも書き換われば復号に失敗します。CBC はそうではなく、改ざんされたデータでも「正常に」復号してゴミを返します。旧システムとの接続では通常 CBC しか使えません(数十年の既定で、ほぼすべてのライブラリが対応しています)。CTR はブロック暗号をストリーム暗号として使うのでパディングが不要で、長さが不定のデータに向きます。ECB は使わないでください —— 同じ平文ブロックが同じ暗号文ブロックになるため、ビットマップを暗号化すると元の輪郭がそのまま透けます(有名な「ECB ペンギン」の図が分かりやすい例です)。
IV とは何ですか?固定してもよいのですか?
IV(初期化ベクトル)は、同じ平文を同じ鍵で暗号化しても毎回違う暗号文になるようにするためのものです。CBC と CTR では秘密にする必要はありませんが、絶対に再利用してはいけません:CBC で IV が重複すると2つの平文が同一かどうかが見抜かれ、CTR や GCM ではさらに深刻で、2つの暗号文を XOR すると鍵ストリームが消えて平文がそのまま露出します。暗号化のたびにランダムな IV を生成し、暗号文と一緒に保存してください(IV 自体は保護不要です)。ECB に IV がないことも、それが安全でない理由の一つです。
AES に ECB モードがないのはなぜですか?
使用しているブラウザ標準のインターフェース(Web Crypto)が提供していないためです。これは漏れではなく、前述のパターン漏洩を理由に仕様が意図的に除外しています。接続先の旧システムが AES-ECB しか受け付けない場合、本ツールでは対応できません。DES / 3DES の ECB は残してあります(そちらの古いシステムでは ECB のほうが一般的だからです)。
鍵はどれくらいの長さにすればよいですか?長さのエラーがよく出ます
長さはアルゴリズムごとに決まっており、交渉の余地はありません:AES は 16・24・32 バイト(128 / 192 / 256 ビット)、DES は 8 バイト、3DES は 24 バイトちょうどです。16進数では2文字で1バイトである点に注意してください —— 16進数で32文字書くと 16 バイト(AES-128)になり、32 バイトにはなりません。IV も同様で、AES-CBC は 16 バイト、AES-GCM は 12、DES と 3DES は 8 バイトです。
鍵が間違っているとどうなりますか?
GCM 以外のモードではエラーになりません —— 「正常に」ランダムなバイト列へ復号され、本ツールがそれを UTF-8 として解釈する段階で失敗し、鍵か IV が違う可能性を伝えます。これは共通鍵暗号の本質的な性質です:暗号文に検証情報が含まれないため、復号側は結果の正しさを判断できません。GCM は認証タグがあるので鍵の誤りを即座に検出します。新規システムで GCM を勧める理由は改ざん検知だけでなく、鍵の打ち間違いに早く気づけることでもあります。

関連ツール