No182 どうして暗号化には鍵が必要なの?

前回まで暗号化で必要となる鍵交換の方法について解説をしました。

今回はその前提となる話ですが、そもそも暗号化には鍵というもの
が必要なのでしょうか?
鍵なしで、第三者に知られることなく情報をやりとりする方法は
ないのでしょうか?

そして、鍵というのはどのように使われるものなのでしょうか?
今回はその点を解説します。


1. 暗号化の目的は第三者に知られないこと

今回も、アリスとボブに登場してもらいます。

余談ですが、暗号通信の話をする時には、Aさん、Bさんと言わず
に、アリス(Alice)、ボブ(Bob)、チャーリー(Charlie)などを使う
のが定番です。それぞれ頭文字がA,B,Cなんですね。

ここでの役割は次の通りです。
 アリス  :元のメッセージ(平文(ひらぶん))を持つ人
 ボブ   :メッセージを受け取る人
 チャーリー:メッセージを盗聴しようとする人

アリスは、ボブにメッセージを伝えたいのですが、チャーリーには
知られずに送信したいとします。一方、チャーリーはいつでも
アリスやボブが送った内容を盗み見ることができるものとします。

この前提だと、アリスはメッセージをそのまま送信するわけには
いきません。チャーリーに盗み見られてしまいます。

アリスはどうにかしてメッセージを盗まれないように工夫しないと
いけません。そこで登場するのが暗号化という方法です。


2. 暗号の考え方

アリスはチャーリーに見られても大丈夫にするため、元メッセージ
に手を加え、内容がわからないようにしてボブに送ります。

こうすれば、メッセージ内容をチャーリーに見られてもメッセージ
がばれません。ですが、今度はボブにも正しいメッセージを伝え
られません。

ボブだけは何らかの方法で元メッセージを復元できる方法を教えて
あげなければなりません。

もうおわかりでしょうが、元メッセージに手を加えることを暗号化
と言い、逆に元メッセージに復元することを復号と言います。
(復号化とは言いません)

次の問題はどうやって暗号化を行いどうやって復号するか?という
点になります。

一般的に暗号化は2種類に分けられます。
一つは暗号を解く方法そのものを秘密にしておくやり方で、もう一つ
は鍵を秘密にしておいて暗号化や復合の方法はバレてもいいや、という
やり方です。

暗号を解く方法そのものを秘密にする方法は、古典的な方法です。
子供のころに「逆読み」とか「1文字飛ばしで読む」といった暗号を
作りませんでしたか?あれは「解く方法自体を秘密にする方法」です。

一方で、現代暗号と言えば、鍵を秘密にしておき手順はバレても良い
(手順は公開されている)方法となります。

この計算には鍵と呼ばれるデータが必要になります。
鍵の大きさは、暗号方式によってまちまちですが、通常は数十文字
程度のデータ量です。

この鍵がバレれば、せっかく暗号化した情報も元に戻せるわけですから、
鍵を知られずに交換する方法は非常に重要です。この手順の詳細は当
メルマガのNo179からNo181で解説しています。
バックナンバーをお持ちでない方は、以下のURLからご覧ください。
 https://note.com/egao_it/

鍵という秘密情報がなければ、チャーリーもボブと同じ情報を入手できて
しまいます。それを防ぐためには鍵が必要なのです。

と、鍵の役割はわかったとして、鍵というのはどんな風に使うもの
なのでしょうか?


3. 鍵の使われ方

暗号化にはいろんな方式があります。

今回は、鍵の使われ方をイメージしていただくためにごくシンプル
な暗号を想定します。

一言でいえば、鍵で示された数を文字に加算するという方式です。

例:
 元メッセージ: A (1文字だけ)
 鍵: 3
 暗号化計算: Aの次の次の次(3文字後)の文字→D
 暗号化の結果: D

例2:
 元メッセージ: APPLE
 鍵: 3
 暗号化計算: A+3→D、P+3→S、L+3→O、E+3→H
 暗号化の結果: DSSOH

ですが、鍵が上記のように1文字だと1~9のパターンを試せば、
正解が得られてしまいます。上記の例2でも暗号化後のDSSOHでは
2文字目と3文字目が同じ文字になっているなど、元のメッセージ
の情報が残ってしまっています。

さすがにこれではバレバレなのですが、鍵を長くすることでこの
欠点は隠せます。
例えば、鍵を12345 と5文字にしてみます。
すると、先ほどと同じ元メッセージでも次のようになります。

すると次のようになります。
 元 暗号化 結果
 A → A+1 → B
 P → P+2 → R
 P → P+3 → S
 L → L+4 → P
 E → E+5 → J

鍵が1ケタだった時に比べるとパターンがずっと複雑になることが
わかりますね。5ケタの鍵でも組み合わせは10万通りもあります。

一般的に鍵の桁数が大きくなればなるほど組み合わせが増え、鍵と
して強くなるというのはこういった事情によるものです。

4. もう少し複雑な例

もう少し実際的なメッセージの例として、"This is a SECRET message"
を暗号化してみましょう。使う鍵は上と同じく12345とします。
元メッセージの方が鍵よりも長いですから、鍵を繰り返し使うこと
になります。

 元 暗号化 結果
 TT+1 → U
 h → h+2 → j
 i → i+3 → l
 s → s+4 → w
 i → i+5 → m
 s → s+1 → t
 a → a+2 → c
 S → S+3 → V
 E → E+4 → I
 C → C+5 → H
 R → R+1 → S
 E → E+2 → G
 TT+3 → W
 m → m+4 → q
 e → e+5 → j
 s → s+1 → t
 s → s+2 → u
 a → a+3 → d
 g → g+4 → k
 e → e+5 → j

まとめて書くとこんな感じです。
 元メッセージ:This is a SECRET message
       ↓
 暗号化の結果:Ujlw mt c VIHSGW qjtudkj

元のメッセージからはかなりわかりにくい変換が施されていること
がおわかりでしょうか。

実用的な暗号では、上記のような鍵との計算を行う前に元データの
位置を交換するといった技法や、暗号化したものを何度も再暗号化
するといった手間をかけます。

暗号化に手間をかければ、逆算するのにもそれだけ手間をかける
ことが必要です。つまり暗号の強度を上げることになるのですね。

今回は意外に知らない暗号鍵について解説を行いました。
次回もお楽しみに。

このNoteは私が主宰するメルマガ「がんばりすぎないセキュリティ」からの転載です。
誰もが気になるセキュリティに関連するトピックを毎週月曜日の早朝に配信しています。
無料ですので、是非ご登録ください。
https://www.mag2.com/m/0001678731.htm

この記事が気に入ったらサポートをしてみませんか?