15.7.2. 共通鍵暗号
共通鍵暗号による暗号化と復号について,確認しましょう。
普通の人が思いつく暗号は、共通鍵暗号と思われます。 簡単な例として、 1文字ずつおきかえる換字暗号を考えましょう.
どの文字をどの文字で置き換えるかという換字表が暗号化の鍵になります。
一文字ずらす場合は,右の表のようになります.
復号の際は同じ表を使って、逆向きの換字を行います。
| 前 | a | b | .. | y | z |
|---|---|---|---|---|---|
| 後 | b | c | .. | z | a |
表を利用して置き換えるという部分がアルゴリズムで,具体的にどの文字をどの文字に置き換えるのかが _鍵_に相当します.
次のボタンから、文字をずらす変換を Colab で試すことができます。 HWB-Caesar.ipynb
分かりやすさのために換字暗号で例を紹介しましたが、換字暗号は安全ではありません。
鍵を知らなくても対応を全部試せば解ける (鍵空間が狭い) とか、文字毎の変換では統計情報がそのまま保存される (e.g., 英文ではeが多い) など、いろいろな弱点があります。安全な共通鍵暗号には、たとえば AES256 があります。
どのアルゴリズムでも共通鍵暗号の場合は、 暗号化する側と復号する側で、あらかじめ鍵を共有する必要があります。 人同士の場合は、この点が、困る点になります (鍵配送問題と言います)。 コンピュータ同士なら、その場で安全に使い捨ての鍵を決める、鍵交換アルゴリズムも利用可能です。