いきなりですが問題です.
先生の授業で,PGPで暗号化をするとき,配布資料には「メッセージは圧縮してから暗号化する」と書いてあったんですが,授業中のスクリーンの表示は,「メッセージは暗号化の前に圧縮する」になっていました.
これも配布資料を訂正しておいたほうがいいんでしょうか.
さっそくですが教員です.配布資料は,スクリーンに表示する中から12枚を厳選しており,穴埋めや,数は少ないですが訂正してもらう箇所を入れています.訂正の例としては,初回授業で「(計算機管理を怠ると)踏み台攻撃の被害者になる」を「踏み台攻撃の加害者になる」に書き換えるよう,指示したことがあります.
さて今回の質問ですが,
- メッセージは圧縮してから暗号化する
と
- メッセージは暗号化の前に圧縮する
を並べて考えれば分かるとおり,2つは同じ意味になる文です.なので訂正する必要はありません.
ただし,この2つの文のあいだで,細かな違いもあります.
手順を書く場合には,文章や箇条書きにおいても,先に行うことを先に,あとで行うことをあとに書くのが鉄則です.
この観点では,配布資料の「メッセージは圧縮してから暗号化する」のほうが優れていると言えます.
なのですが「メッセージは暗号化の前に圧縮する」のほうがより良いという理由を言うこともできます.ここはPGPの「暗号化」の説明であり,主従関係としては圧縮は従,暗号化が主となります.
そういうときには,主の方を先に示すのも可能となります.知っている情報すなわち「暗号化」を先に,読み手が知らない(新たに学ぶ)情報となる「圧縮」をあとに書く,というルールなのです.
書く順序ではなく,処理として「なぜ圧縮が先,暗号化があとなのか」については,授業で「直感的には」を付けた上で,次のように解説しています:
人間が読み書きするメッセージには冗長性があり,そこで,圧縮してサイズを減らすことが可能です.
圧縮したデータは,コンピュータ上で0と1の不規則な並びで構成された,人間が読めない(一見して意味の分からない)情報であり,さらに圧縮をかけても,サイズの縮小は期待できません.
暗号文も同様に,0と1の人間が読めない情報ですので,暗号化したものに対する圧縮は,効きにくいのです.*1
だからデータ量を減らすには,先に暗号化し,それから圧縮をかけるのではなく,先に圧縮し,それから暗号化するのです.
*1:なお,暗号化処理によるサイズの増減ですが,ブロック暗号を用いる場合,ブロック長の整数倍となるので,メッセージよりも大きくなる可能性はあります.ただし,メッセージがある程度のサイズであれば,得られる暗号文のサイズは大きく変わりません.