DES 暗号化・復号化ツール
DES と Triple DES(3DES)に対応、5種類の暗号モードを搭載
暗号設定
DES とは?
DES(Data Encryption Standard)は1977年にIBMが開発し、NSAの修正を経て米国の連邦標準となった暗号アルゴリズムです。Feistelネットワーク構造を採用し、64ビットの平文を左右に分割して16ラウンドの変換を施します。鍵は名目上64ビットですが、8ビットはパリティチェック用に予約されており、実効鍵長は56ビットです。 当時56ビットは十分な安全性がありましたが、計算能力の急速な向上により、1999年には専用ハードウェアで22時間以内に総当たり破解が可能になりました。その後、DESの寿命を延ばすためにTriple DES(3DES)が開発されました。3つの異なる鍵でDES暗号を3回適用し、実効鍵長168ビットの大幅な安全性向上を実現しています。3DESは今でもEMVチップカードや多くの銀行プロトコルなど、金融分野で広く使われています。 AESがDESに代わる新しい暗号標準となったものの、レガシーシステムや金融プロトコル、組み込みデバイスではDESと3DESがまだ現役です。本ツールはDESと3DESの両アルゴリズムに対応し、CBC、ECB、CFB、OFB、CTRの5モードを搭載しています。
使い方
基本操作
- 暗号アルゴリズムを選択:DES(56ビット鍵)または 3DES(168ビット鍵)
- 暗号モードを選択 — CBC がおすすめ
- パディング方式を選択 — ほとんどの場合 PKCS#7 でOK
- 鍵を入力するか「ランダム鍵を生成」をクリック
- IVが必要なモードでは、IVを入力または生成
- 左側に平文(暗号化時)または暗号文(復号化時)を入力
- 右側に自動的に結果が表示されます
暗号モードの説明
アドバイス
- AESが使えるならそちらを優先 — DESは主にレガシー互換用
- 3DESはDESよりはるかに安全だが、速度は約3分の1
- 暗号化ごとに異なるランダムIVを使うこと
- 8バイト超のデータにECBモードを使うのは避ける
- 覚えやすい文字列ではなく、ランダム生成した鍵を使うのが確実
使用例
DES-CBC 暗号化
CBCモードでテキストを暗号化
平文:Hello World
鍵(hex):0123456789abcdef
IV(hex):fedcba9876543210
モード:CBC / PKCS#7
出力:Base64形式の暗号文3DES 暗号化
Triple DESでより強固なセキュリティを
アルゴリズム:Triple DES
鍵(hex):24バイト(48文字のhex)
モード:CBC / PKCS#7
168ビット鍵は現在も安全な水準ECB単一ブロック
ECBはちょうど8バイトのデータに適している
平文:8バイト
鍵:0123456789abcdef
モード:ECB / PKCS#7
注意:8バイト超のデータにECBは使わないことよくある質問
Q: DESと3DESの違いは?
A: DESは56ビットの実効鍵を使用し、現在では安全とは見なされていません。通常のPCで数日以内に総当たり破解が可能です。3DESは3つの異なる鍵でDESを3回適用し、実効鍵長168ビットで大幅に安全性が向上します。レガシーシステムとの互換性が必要ないなら、3DESを使うか、いっそAESに切り替えましょう。
Q: DESはまだ安全ですか?
A: DES単体では安全ではありません。1999年に専用マシンが22時間で鍵の全探索に成功しました。現在ではGPUクラスターを使えば数時間で破解できます。本当にセキュリティが必要ならAESか3DESを使ってください。ただし、暗号学の学習やレガシーシステムの互換性テストにはDESで問題ありません。
Q: なぜ暗号文が毎回変わるのですか?
A: これは正常な動作です。ECBモードを除き、他のモードではランダムなIV(初期化ベクトル)を使用するため、同じ平文を同じ鍵で暗号化しても毎回異なる暗号文が生成されます。正しい鍵とIVがあれば、復号化は必ず元のデータを復元します。
Q: IVとは何ですか?
A: IV(Initialization Vector、初期化ベクトル)は暗号化時に使用する追加パラメータです。同じ平文を同じ鍵で暗号化しても毎回異なる暗号文を生成し、攻撃者がパターンを読み取ることを防ぎます。IVは秘密にする必要はありませんが、暗号化ごとに異なるランダム値を使うべきです。DESのIVは常に8バイトです。
Q: 鍵のフォーマットは Hex、Text、Base64 のどれがいい?
A: これらは同じ鍵の異なる表現形式です。Hexは1バイトあたり2文字で最も直感的。Textは入力した文字のバイト列そのもので便利ですがエンコーディングの影響を受けます。Base64はよりコンパクトです。Hexがおすすめ — エラーが起きにくいです。「ランダム鍵を生成」を選択した形式で自動生成します。
Q: 暗号文が平文より長くなるのはなぜ?
A: ブロック暗号はデータが8バイトの倍数である必要があるため、PKCS#7パディングで1〜8バイト追加されます。出力形式の影響もあります:Base64は約33%のオーバーヘッド、Hexはデータサイズが倍になります。NoPaddingを選択した場合、平文は正確に8バイトでなければなりません。
Q: ECBモードは使えますか?
A: 使えますが、状況によります。ECBは各8バイトブロックを独立して暗号化するため、同じブロックは同じ結果を生成します。8バイトの単一ブロックならECBでも問題ありません。テキストやファイルなどより長いデータではECBはパターンを露出するので避けるべきです。短いデータはOK、長いデータはNGです。
Q: このツールは安全ですか?データは漏洩しませんか?
A: すべての暗号化・復号化処理はブラウザ内で完結し、crypto-jsという成熟した暗号ライブラリを使用しています。データがサーバーに送信されることはありません。ただし、ブラウザ環境は専用ハードウェアほど安全ではなく、鍵がブラウザ拡張機能や開発者ツールで露出する可能性があります。学習・テスト・日常用途には十分ですが、本番環境では専用の暗号化ソリューションをご検討ください。