【ふくごう】

復号 とは?

最終更新:
💡 暗号文を、鍵と方式を使って平文へ戻す

暗号文を、暗号方式と鍵を使って元のデータである平文へ戻す操作。暗号化との関係、Base64やハッシュとの違い、正しい鍵でも失敗する場合を解説します。

📌 このページのポイント
復号:鍵と方式で元のデータへ戻す暗号文元のデータを暗号化したもの復号平文文章・画像・ファイルなど方式と鍵・必要な情報を合わせる例:IV・認証タグ認証付き復号では失敗する場合もある成功した場合に元のデータを得るBase64のデコード・ハッシュ照合とは別失敗した結果を元データとして扱わない
矢印は復号のデータの流れです。暗号文は文字列とは限らず、正しい鍵だけで必ず成功する保証ではありません。必要な情報は方式によって異なります。
ひよこ ひよこ
復号は、暗号化の逆?
ペンギン先生 ペンギン先生
そうだね。暗号化が平文を暗号文へ変換する操作なら、復号は暗号方式と鍵を使い、元の平文へ戻す操作だ。平文は読める文章だけでなく、画像やファイルの元データも指すよ。
ひよこ ひよこ
鍵さえあれば、必ず戻せる?
ペンギン先生 ペンギン先生
方式や設定、必要な情報、データが合っていることも必要だ。例えばAES-GCMではIVや認証タグなども使う。鍵が合っていても、データが壊れたり改変されたりすれば復号に失敗する場合がある。
ひよこ ひよこ
暗号化と復号で、同じ鍵を使う?
ペンギン先生 ペンギン先生
共通鍵暗号では同じ秘密の鍵を使う。公開鍵暗号で公開鍵を使って暗号化した場合は、対応する秘密鍵で復号する。方式と鍵の役割を分けて確認しよう。
ひよこ ひよこ
暗号があれば、絶対に読まれない?
ペンギン先生 ペンギン先生
そのようには保証しない。暗号方式だけでなく、実装や鍵の管理、利用する環境も関わる。復号したデータは利用できる状態になるので、暗号化していたときと同じ保護が続くとは限らないよ。
ひよこ ひよこ
Base64を元に戻すのも、復号?
ペンギン先生 ペンギン先生
暗号の復号とは別だ。Base64はデータを文字で表すための符号化で、元に戻すデコードに秘密の鍵は使わない。見た目が読めない文字列でも、それだけで暗号とは判断できない。
もっと詳しく知りたい人へ

ハッシュ値も、鍵があれば元へ戻せる?

暗号学的ハッシュは、元データを復号して取り出す方式ではありません。候補のデータを同じ方法でハッシュ化して照合することはできますが、それを元データの復号と呼ぶわけではありません。入力の候補が少ない場合の推測と、復号を区別します。

認証付きの復号が失敗したら、確認を無視して読んでよい?

失敗を無視して元データとして扱いません。Web CryptoのAES-GCMでは、認証に失敗するとOperationErrorを返します。鍵・IV・追加認証データ・タグなど、方式が要求する情報が一致するかを確認し、検証を省略する方法へ替えないようにします。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「復号」って出てきたら「暗号文を、鍵と暗号方式を使って元のデータへ戻す操作」と思えばだいたいOK!
📖 おまけ:英語の意味
「Decryption」 = 暗号文を平文へ変換すること
💬 このページでは「復号」と表記します。「復号化」と書かれているだけで、その資料の内容が誤りだとは判定しません。名前より、暗号文・方式・鍵・必要な情報の関係を確認します。

参考資料

← 用語集にもどる