見出し画像

SSL復号を美味しく学ぼう!#例えて学ぶセキュリティ

皆様こんにちは!セキュリティエンジニアの浅羽です。
突然ですがこのブログをお読みの皆様、ページのURLを見てみてください。先頭が「https://」から始まっていることに気づくかと思います。

 この先頭、10年程前は「http://」になっているサイトもよく見かけたと思うのですが、今はやりとりの流れの盗聴や不正アクセスを防ぐために、データを暗号化して通信を行うプロトコル「HTTPS」が主流となっています。 

そんな「盗聴やアクセスを防ぐために中身を暗号化する」HTTPS通信ですが、暗号ゆえにネットワーク経路上でアンチウイルス等の検査をしたい場合でも中身を見ることができないため、悪意のある通信もそのまま通してしまうという危険性もあるのです。そのため、暗号化通信を検査するためには復号処理が必要となります。
今日はそんな復号技術の流れについて、例えてご説明したいと思います!


ある組織のユーザが外部のWebサイトを見るとき、組織内でその通信を復号する仕組みのことを「SSLフォワードプロキシ」呼びます。
まずはこの「SSLフォワードプロキシ」がどのような仕組みになっているのか、教科書的な図解と説明から始めます。

教科書的なSSL復号

以下の図の流れでセキュアな通信が実現されています。

通信の間で共通鍵と秘密鍵と公開鍵用意して…一度復号して異なる共通鍵を…う~~ん本当にややこしい!
というあなたに、今回も例えるセキュリティやっていきましょう!

このブログは「公開鍵暗号方式を美味しく学ぼう!#例えて学ぶセキュリティ」の続編となっています。まだ見ていない方はお読みになってから先に進むことを強くお勧めします。

チョコで例えるSSL復号

それぞれの用語を以下の通りに例えて説明していきます。

登場人物
道具たち

世界観

ある世界には、大事な食料が他人に食べられてしまうのを防ぐため「様々な方法で厳重に管理しながら交換する」という文化がありました。そんな警戒心の強い世界に、今年もバレンタインの季節がやってきます。さて、どうやっておいしいチョコレートをセキュアにやり取りするのか、様子を見てみましょう。

クララ母のバレンタイン大作戦

世界中の人とチョコを交換したいクララちゃん、今年は鯖江くんのチョコが欲しいとのこと。クララちゃんと鯖江くんは、おいしいチョコレートを無事に交換できるのか、心配でならないクララ母は、次のルールを用いてチョコを交換することにします。

クララちゃんのチョコを鯖江くんに届け、鯖江くんのチョコをクララちゃんが受け取るまでに、この心配性なお母さんがどのように奮闘するのか見てみましょう。

【その1】チョコ引き渡し準備をしよう!

まず、「チョコを交換したい」とお願いするクララちゃんに、お母さんが準備のためにクララ母特製毒を渡します。
クララちゃんは、「金庫のパスコード」を、「クララ母特製毒入りフォーチュンクッキー」に込めてお母さんに渡します。
受け取ったお母さんは「クララ母解毒剤」を使ってフォーチュンクッキーを食べて、「金庫のパスコード」を入手します。
➡今後、お母さんとクララちゃんは『これからは金庫を使ってチョコを渡そうね』と約束します。

ここまでで、「クララちゃんの共通鍵」を、「お母さんの公開鍵」で暗号化し、「お母さんの秘密鍵」で復号してシェアしたことになります。

その後は、クララちゃんは、鯖江くんと交換するチョコを作り、金庫に隠します。
そして、お母さんは金庫からチョコを取り出して味見をして、美味しいかどうかをチェックしていく流れになります。

お母さんは、早速鯖江くんとチョコを交換するために連絡を取ります。
するとすぐに鯖江くんからも、「鯖江くん特製毒」が届きました。さて準備していきましょう!

【その2】鯖江くんとチョコを交換しよう!

鯖江くんは家の外の人なので、コインロッカーを使うことにします。

お母さんは「コインロッカーのパスコード」を決めて、同様に「鯖江くん特製毒入りフォーチュンクッキー」に込めて鯖江くんに渡します。
鯖江くんは「鯖江くん解毒剤」を使ってフォーチュンクッキーを食べて、「コインロッカーのパスコード」を入手します。
➡今後、鯖江くんとお母さんは『これからはコインロッカーを使ってチョコを渡しましょう』と約束します。

ここまでで、「お母さんの共通鍵」を、「鯖江くんの公開鍵」で暗号化し、「鯖江くんの秘密鍵」で復号してシェアした」ことになります。

こうして全ての準備が整い、あとはクララちゃんチョコを鯖江くんに渡し、鯖江くんチョコを代理で受け取るだけになりました!
(いちいち毒を混ぜたり、解毒させたりする必要もないためスイスイ交換することができます。安全で便利ですね!)

【その3】クララちゃんにチョコを届けよう!

そして、受け取った鯖江くんのチョコも味見し、美味しいことを確認できたお母さんは、家で待つクララちゃんへ金庫を経由し鯖江くんチョコを渡します。こうすることで安全で美味しいチョコレートをクララちゃんは味わうことができるのです。

例えのまとめ

チョコの受け渡しの流れを書き表すと以下のようになります。

【クララちゃんとお母さん】
➊自宅のみで使用するクララ母特製毒(公開鍵)解毒剤(秘密鍵)をお母さんが生成し、クララ母特製毒のみクララちゃんに共有
➋クララちゃんが決めた金庫パスコードをフォーチュンクッキーに込め(共通鍵)、クララ母特製毒(公開鍵)を使って劇毒菓子にしてお母さんに渡す(暗号化処理)
➌解毒剤(秘密鍵)フォーチュンクッキーを解毒して食べて(復号)、パスコード(共通鍵)を入手
➍クララちゃんのチョコは金庫に入れてパスコードで施錠し(暗号化処理)
➎パスコード(共通鍵)を使って取り出し、お母さんが味見(検査)
➡以降鯖江くんとのやり取りはお母さんが担当(リクエストを代理)

【お母さんと鯖江くん】
➏お母さんとやり取りで使用する鯖江くん特製毒(公開鍵)解毒剤(秘密鍵)を鯖江くんが生成し、鯖江くん特製毒のみお母さんに共有
➐お母さんが決めたコインロッカーパスコード(共通鍵)をフォーチュンクッキーに込め、鯖江くん特製毒(公開鍵)を使って劇毒菓子にして鯖江くんに渡す(公開鍵で暗号化処理)
➑鯖江くんが鯖江くん解毒剤(秘密鍵)フォーチュンクッキーを解毒して食べて(復号)、パスコード(共通鍵)を入手
➒クララちゃんのチョコをコインロッカーに入れて施錠(共通鍵で暗号化処理)
➓パスコードを使ってチョコを取り出し実食(検査/リクエスト確認)
⓫お返しとして鯖江くんがチョコを作って(リクエストへ応答)、コインロッカーに施錠(共通鍵で暗号化処理)
⓬パスコード(共通鍵)を使って取り出し、鯖江くんチョコをお母さんが味見(検査)

【お母さんとクララちゃん】
⓭鯖江くんから貰ったチョコ(リクエスト応答)を、金庫に入れて施錠(共通鍵で暗号化処理)
⓮クララちゃんがパスコード(共通鍵)を使って取り出し、鯖江くんのチョコを入手!

「なぜ内部外部でそれぞれ鍵が必要なのか」、「どっちの共通鍵、どっちの公開鍵/秘密鍵を生成するのか」や、「どうやって共通鍵を安全に受け渡すのか」などのややこしやポイントがなんとなくわかったのではないでしょうか?

今回の例え話は、SSL復号の流れを大分ざっくりと書いたものとなっています。この記事を礎に、より詳細な仕様にも興味を持っていただけますと幸いです!

さいごに

例えて学ぶSSL復号、今回はいつもよりも発展した内容でしたがいかがでしたでしょうか?一見とっつきにくい暗号化/復号技術のお話も、美味しく置き換えてみると前より”チョコっとだけ”飲み込みやすくなるんじゃないかなと、勉強しながら私は思います。

もちろん、正しい通信の流れや技術を知ることが目指すべき最終目標ですが、こんがらがってしまった時には一旦息抜きで楽しくセキュリティ勉強をしてみてもいいのではないでしょうか?

本日はここまで!ご高覧ありがとうございました。

執筆:浅羽 美和子