平文と暗号化
当ブログは、元々は「ゲーム攻略サイト」として成長していました。脱出ゲームというものが流行る前に着目し、私のブログで様々な脱出ゲームを紹介してきました。
脱出ゲームとは、ゲームスタート時にプレイヤーが閉じ込められていて、ひとつひとつ手がかりを見つけながら暗号を解いて「鍵」を手に入れ、部屋から脱出するゲームです。
私も脱出ゲームの制作に携わったことがありますが、暗号は簡単すぎてもいけないし、難しすぎてもいけない。とても頭を悩ませました。
暗号文 → かくちみのんらな
脱出ゲームの中でもスタンダードな暗号文です。リフレッシュのためにも、ゆみちゃんの暗号文8文字の解読にチャレンジしてみてくださいね。
- 平文と暗号文
- 暗号化と復号化
第19講
まず、用語解説です。
- 平文
- 原文のまま
- 暗号化
- 平文を何らかのルールに基づいて読みづらくしたもの
- 暗号技術
- 暗号化するための技術
- 復号化
- 暗号化したものを平文に戻すこと
暗号の歴史と基本的な暗号技術について学習しましょう。
暗号化は、データの秘密を守るために古くから利用されてきました。その歴史は非常に長く、古代から現代に至るまで、さまざまな暗号技術が開発されてきました。
ここでは、暗号の歴史を振り返りつつ、基本的な暗号技術について学んでいきます。
古代の暗号技術
シーザー暗号
暗号の歴史の中で、最も有名なものが、古代ローマ時代の「シーザー暗号」です。この暗号は、文字をアルファベット順に一定数だけずらすことで暗号化を行います。
例えば、「A」を「D」に、「B」を「E」に置き換えるように、文字を3つずらすことで暗号文を生成します。
シンプルに1文字ずらしの例で見てみましょう。
- 平 文:Hello World
- 暗号文:Ifmmp Xpsme
スキュタレー
古代ギリシャでは、スキュタレーという暗号技術が使用されていました。これは、皮の帯を棒に巻き付け、文字を書き込むことで暗号文を作成する方法です。
特定の太さの棒に巻き付けなければ、メッセージを読むことができないという仕組みです。これも、一種の文字の並び替えによる暗号化の一例です。
これを考えた人は天才だね
中世の暗号技術
ヴィジュネル暗号
中世になると、より複雑な暗号技術が登場しました。
その一つが「ヴィジュネル暗号」です。この暗号は、異なるシーザー暗号を複数の文字に対して適用する方法で、暗号化の強度を高めるために使用されました。アルファベット表を用いて、キーに基づいた文字の変換を行うことで、暗号文を生成します。
キー1を決め、キー2は平文と同じ文字列になるまで繰り返し、そのキー2のアルファベット順に暗号文を置き換えるといった手法です。
- 平 文:HELLO
- キー1:ABF
- キー2:ABFAB
- 文字数:1・2・6・1・2
- 暗号文:IGRMQ
これは面倒くさい!
エニグマ暗号
近代の暗号技術で有名なのは、第二次世界大戦中(1939年~1945年)に使用された「エニグマ暗号」です。エニグマ暗号は、ナチス・ドイツが電気機械を使って、アルファベットを複雑に置き換える暗号機で、非常に高度な暗号化が可能でした。
アラン・チューリングを中心としたイギリスの暗号解読チーム(特にブレッチリー・パークのチーム)が解読に成功します。エニグマの解読は、連合国にとって非常に重要であり、戦争の行方に大きな影響を与えたとされています。
エニグマ暗号機は、ローターと呼ばれる回転する円盤を使って、文字を複雑に置き換える装置です。送信者と受信者が同じ設定を共有することで、暗号化されたメッセージを復号できます。エニグマは、暗号化と復号を同じ手順で行う対称暗号の一種のようです。
コンピュータも今みたいには発達していない時代に、こんな装置を作るほうもすごいし、解読するほうもすごいや
現代の暗号技術
ブロック暗号
現代の暗号技術の基盤となっているのが「ブロック暗号」です。ブロック暗号は、データを固定長のブロックに分割し、各ブロックを一つずつ暗号化する方法です。
代表的なブロック暗号には、DES(データ暗号化標準)やAES(Advanced Encryption Standard)があります。これらの暗号は、データの一部を変更すると暗号文全体が変わるため、非常に強力です。
例えば、AESブロック暗号を使用して「Hello World」を8文字のブロックで暗号化する場合を考えてみます。
- 平文: 「Hello World」
- ブロック1: 「Hello Wo」
- ブロック2: 「rld」
各ブロックを個別に暗号化します。例えば、AESによる暗号化の結果は以下のようになるかもしれません。
- ブロック暗号化: 「Xy7gF12k」「9lmNO1aB」
ストリーム暗号
一方で、「ストリーム暗号」は、データを1ビットまたは1バイト単位で逐次暗号化する方法です。ストリーム暗号は、データが連続的に送信される場合に適しており、リアルタイムでの暗号化が必要なシナリオでよく使用されます。
RC4などが代表的なストリーム暗号です。
- 平文: 「Hello World」
- ストリーム暗号化: 「Ifmmp Xpsme」
シーザー暗号のような例ですが、もっと複雑な疑似乱数を用いています。ポイントは逐次暗号化をしているという点です。
盗聴されずに相手にメッセージを送る。インターネットの発達よりもずっと前から暗号化技術というものがあったんだね
第19講のまとめ
暗号技術は、時代とともに進化を遂げてきました。古代の単純な置き換え暗号から、現代の高度な数学的手法に基づく暗号まで、その目的は常に一つ、情報を守ることです。
これらを踏まえて、次からは「共通鍵暗号方式」と「公開鍵暗号方式」のお話に入ってまいります。暗号化技術では避けて通れないお話ですね。
冒頭のクイズの暗号は解読できたかな? キーボードがあれば、簡単に解読できるから、1文字ずつ照らし合わせてみてね