今回はセキュリティ項目の一つ、暗号化とデジタル署名について解説するよ。
もうセキュリティお腹いっぱいなんですけど、まだやるんですか…?
うん、やるよ~笑
今回の暗号化とデジタル署名っていうのは通信を行うときの話だからこれまでとは違って、名前を覚えるっていうよりかは仕組みを理解するって感じだから構えすぎなくて大丈夫だよ。
よ、世の中の通信が安心して使える理由でもありそうですね。
やきそばくん、いいこと言う!
その通り、暗号化とデジタル署名で世の中の通信は安心して使うことができるようになっているんだ。
じゃあそんな暗号化とデジタル署名について解説していくよ!
盗聴対策の暗号化とは
前回まででネットワークは比較的他社の通信を盗聴しやすい構造を持っていたのがわかったよね。
構造自体を直すのは大変だから、盗聴されたとしても暗号化された通信ならば中身を見られずに済むという対策が盗聴対策だった。
暗号化を今回は詳しく紹介するよ。
素のままの文書(平文)を暗号にする暗号化、暗号化されば文章を元に平文にする復号、両方をしっかりと押さえた上で本人たちにしか解くことができない暗号が今回のテーマだ。
なんだか難しそうです…
大丈夫、難しい計算は確かに大変だけど
概念や仕組みを理解するのは家のドアと似ているからわかりやすいと思うよ!
共通鍵暗号
暗号化、復号には鍵と呼ばれるものを使うんだ。
まずは一般的な鍵として共通鍵暗号を紹介するよ。
共通鍵暗号は暗号化と復号に同じ鍵を使う。通信の送信者と受信者がそれぞれ同じ鍵を持つことで、他の人には暗号で読めないものを同じ鍵を持つ二人なら復号できて平文に直せるんだ。
ただ第三者に共通鍵がバレてしまうと解読されてしまう。
さらに共通鍵はシンプルな方式ではあるものの、通信相手が増えると鍵の数が際限無く増えてしまう点、鍵の配布が面倒というデメリットがあるんだ。
共通の鍵をどうやって送るのかという問題もあるし。
メールで送ってしまったら共通鍵を盗聴される場合もあるからね!
同じ鍵をみんなに渡せばいいんじゃないですか?
グループで同じ鍵を一つ持つのはどうですか?家族一人一人が家の鍵持つイメージで!
おーなかなか良い着眼点だね~。
だけど、それだとグループ内なら良いかもしれないけど、どこにつながるかわからないネットの世界だと世界が限られすぎちゃうね。
グループをどこまでにするかも曖昧になってしまうし、メール相手だけが通信相手というわけではなくてWebサイトなんかもこの場合だと通信相手になるんだ。
でも着眼点としては良い、鍵の本数を減らすために同じ鍵を使い回すというアイデアは次に紹介する公開鍵では実際に導入されているんだ。
公開鍵暗号
公開鍵暗号はまず、二つの鍵を用意する。一本は暗号化専用、もう一方が復号専用の鍵。
これによって暗号化専用の鍵を誰でも手に入れる状態を作ることができるんだ。
誰でも手に入れる状態にする鍵(暗号化専用の鍵)を公開鍵、自分だけが持っていて人には教えない(復号専用の鍵)を秘密鍵と呼ぶよ。
公開鍵は暗号化しかできないから公開しても問題ないんだ。
というのも、仮に公開鍵を悪用しようと通信を盗聴して、暗号を手に入れても暗号化しかできない鍵(公開鍵)しか手元にはないから復号はできない。
公開鍵からどうにか頑張って秘密鍵を作れればいいんだけど、それもできない仕組みになっているんだ。
これによって公開鍵で他の人には暗号化してもらって、自分は秘密鍵で暗号化された文章を復号することができる。
図にまとめるとこんな感じだ。
鍵の数の問題もこれで解消する。「僕と通信したい場合は僕の公開鍵を使って暗号化して送ってください」として公開鍵を配布すれば、鍵の種類は2本で済む。
公開鍵自体は人の数だけあるけど復号の鍵(秘密鍵)は一本で済むから。
あ、暗号化の鍵(公開鍵)からは、本当に本当に復号はできないんですか?
ITパスポートでは問われないから解説も省いているけど、RSA暗号と言われる計算で算出されるんだけど基本公開鍵から復号鍵(秘密鍵)は復元できないから安心して。
かなり単純だけど複雑な計算をしているから秘密鍵がないと暗号を解くことは基本できないという考えでいい。
基本と言っているのは、今後コンピュータの進化によって計算能力がとんでもなくなったらもしかしたら秘密鍵を復元できる可能性もあるってことになる。
デジタル署名と認証局
公開鍵っていうのは、署名という部分でも活躍しているんだ。
誰が送ったのかを裏付けすることがITの世界では難しかったけど、公開鍵とデジタル署名によってそれが可能になった。
デジタル署名によって、誰が送信者であるか、データの改ざんはされていないかを証明することができるようになったんだよ。
デジタル署名の仕組み
デジタル署名の流れはこんな感じ。
送信者が送信者の秘密鍵で署名をする。署名した内容を送信者の公開鍵で受信者は検証する。
署名というのは暗号化と思ってくれてもいい。
秘密鍵は復号専門ではあるものの、暗号化も実はすることができる。
公開鍵もペアとなっている秘密鍵の暗号であれば復号することができるよ。
これによってこんな図が成り立って、送信者が本人であるかがわかるんだ。
仮に、悪意のあるAさんが、送信者の通信を勝手に奪い取って、送信者の公開鍵で署名を開いたとしても署名されている情報しかなく。
しかもその通信を受信者に送り直そうとしても今度は秘密鍵でしか開けることができない公開鍵での暗号化しかできなくなってしまうんだ。
これによって誰が送っているかの証明と改ざんが行われていない証明が、デジタル署名で証明されることになる。
ご、ごめんなさい。秘密鍵でも暗号化ってできるんですか?
公開鍵で開けれて?ごめんなさい。頭が混乱して。
専用って言葉を使ってしまったから混乱しちゃったね。ごめん。
公開鍵と秘密鍵の関係はこんな図にするとわかりやすいと思う。
ペアになっている二つはお互いに、一方の鍵で暗号化したらもう一方の鍵でしか復号できないんだ。
この特徴を利用して、公開鍵での通信では公開鍵で暗号化して秘密鍵でしか復号ができない通信をして盗聴を防ぐ。
デジタル署名では秘密鍵で暗号化して公開鍵でしか復号ができない通信を行う。
あーなるほどですね。
公開鍵と秘密鍵はペアで、一方を使ったらもう一方を使うしか方法はなくて復号と暗号化をやるには両方が必要ってことですか!
あ、あの、デジタル署名で暗号化するっていうのはメールでいう本文とかを暗号化するんですか?
そうなると本文を盗聴される場合ってありそうだと思うんですが。
暗号化がよくわかっている良い質問だね。
署名の時は大した情報は暗号化しないというのが回答だね。
あくまで公開鍵で暗号が解読できるっていうのが重要だから、通信自体という通信情報にちょっとだけ名前という公開鍵の暗号を1文字追加して送る感じだ。
仮に別の人が公開鍵を使ってデジタル署名を復号しても何の意味のない文字列しか見えないイメージだよ。
認証局(CA)
そもそも公開鍵と秘密鍵のペアを作った人自体が、本当に通信したい本人かどうかわからない場合もあると思う。
実は通信してると思っている人が、最初から目的の人じゃなかった場合だ。
こういったことを防ぐための手段が認証局(CA)だよ。
認証局は公開鍵をチェックして、本人確認をしてくれる第三者機関。
認証局で認められた公開鍵であることは認証局に登録されている情報でわかって、受信者はその認証局に問い合わせることで本物であるか、通信したい本当の相手かどうかを判別することができるんだ。
認証局なんてこれまで意識したことなかったんですけど、私のメール相手とか本当に本当に本人なのでしょうか?
日常使いで意識することはほとんどないね。
基本的にはここら辺は自動でやってくれているからメールアドレスとかが本物なら本人だと思って問題ないよ。
まとめ
今回は、共通鍵、公開鍵、デジタル署名について解説したけど
どうだったかな?
結構難しかったです。暗号化するときの概念がやっぱりいまいちピンとこなくて…
平文がohayoだったら、暗号化する時は1文字ずらすpibzpにして送る。
受け取る側は共通鍵暗号なら1文字ずらすを実行してohayoに戻す。
公開鍵なら別の方法でohayoにするイメージだね。
あ、なんだかわかりそう。家の鍵のイメージよりわかりそうな気がします。
あとは公開鍵についてもうちょっと深掘りしつつ問題を解ければ一気に知識が広がると思うから頑張って。
ぼ、ぼくももう少し問題解いてわからないところを明確にしていきます。
うん、いいね!
じゃあ今回はここまで、また次回!!
はい!ありがとうございました!!