seegongsik
セキュリティ

わかりやすく HTTPS なぜ 安全

アドレスバーの前の小さな鍵マークは、HTTPSでつながっているという印です。ネットワークの領域では、この接続がどんな順番でできあがるのか、流れを追いました。今回は問いを変えて、その鍵がなぜ安全なのかを問います。答えは意外となじみのあるものです。証明書、鍵交換、共通鍵暗号、指紋と署名など、この領域で一つずつ学んだ部品が、その鍵の中に全部入っています。

01

どうやってではなく、なぜ安全か

ネットワークの領域でHTTPSに出会ったときは、リクエストが行ってレスポンスが返ってくるあいだに鍵がかかる順番を見ました。それが「どうやって」の視点です。ここでは同じ鍵を「なぜ」の視点で見ます。何が何を防ぐから信頼できるのか、中を開けて確かめるのです。
一つの鍵が防がなければならない脅威は三つあります。本物のサイトのふりをするなりすまし、行き交う中身をのぞく盗聴、途中で中身を書きかえる改ざんです。この三つを一つずつ防ぐ仕組みが、順にかみ合っています。

同じ鍵、二つの見方
二つの見方を押して分けましょう。同じHTTPSを別の目で見ます。

二つの視点を押して比べましょう。ネットワークの領域は流れ、つまり「どうやって」を見て、この回は安全の理由、つまり「なぜ」を見ます。

流れは動作の順番を教えてくれ、理由はその動作を信じてよい根拠を教えてくれます。どちらも必要ですが、この回の主役は理由です。
その理由は三つの輪にまとまります。一つ目、相手が本当にそのサイトかを確かめる。二つ目、二人だけが知る鍵を安全に分ける。三つ目、その鍵で中身を閉め、書きかえられていないかを確かめる。三つの輪がすべて閉じて、はじめて鍵が役目を果たします。

02

本物のサイトか確かめる

一つ目の輪は確認です。鍵をかける前に、まず問うべきことがあります。自分はいま本当にそのサイトと話しているのか、本物のふりをしたにせ物ではないのか。
接続が始まると、サイトは自分の証明書を送ります。ブラウザは前回見たとおり、鎖をさかのぼって信頼できるルートに届くか、署名が正しいか、証明書のドメインがアドレスバーのアドレスと同じか、期限が切れていないかを確かめます。すべて合えば次へ進み、一つでも合わなければそこで止まって警告を出します。

証明書を確かめるサイトを選ぶ
?
保証
サイトを選んで証明書を確かめましょう。

サイトを選んで証明書を確かめると、保証が合えば通過し、にせ物なら止まって警告が出ます。

保証が合うほうだけが緑で通過し、合わないほうは赤で止まりました。見た目をどれだけそっくりにまねても、信頼された機関の署名まではまねできないので、最初のボタンは本物にしかかかりません。これがなりすましを防ぐ輪です。
ただし、相手が本物だと確かめただけで、会話がすぐ安全になるわけではありません。中身はまだ、誰でも見られる道を通っています。次は二人だけの鍵を分ける番です。

03

鍵を安全に分ける

二つ目の輪は鍵の受け渡しです。中身を速く閉めるには、両方が同じ共通鍵を一つずつ持っていなければなりません。問題は、のぞいている人がいる道の上で、その鍵をどう分けるかです。
方法は二つあります。一つは、ブラウザが共通鍵を作り、サイトの公開鍵で包んで送る方法で、下の図が見せているのはこちらです。もう一つは、鍵交換の回で見たように、両方が公開された材料をやり取りして同じ秘密をいっしょに作る方法です。いまの接続はほとんど後者を使い、サイトは自分の材料に証明書の秘密鍵で署名して、途中ですりかえられないようにします。

1相手の公開鍵を受け取る
2秘密の鍵を公開鍵で包む
3秘密鍵だけで開ける
···
まだ共有の鍵はありません。
のぞく人
行き交うものを見ています。

段階を順に押して鍵を分けてみましょう。公開鍵で包んで送った鍵は秘密鍵がなければ開けられないので、のぞく人は手ぶらのままです。

段階をたどると、両方が同じ共通鍵を持つことになりました。途中で見ていた人は包みを見ましたが、開ける秘密鍵がないので手ぶらです。秘密の鍵を別に送ったわけではないのに、結果として二人だけがその鍵を持ったのです。
いっしょに作る方法なら、さらに一歩進みます。接続のたびに新しい秘密を作り、使い終わったら捨てるので、あとでサイトの秘密鍵がもれても過去の会話は開きません。いよいよ、その鍵で実際の会話を閉める番です。

04

三つの輪が閉じる

三つ目の輪は閉めることです。二人だけが持つ共通鍵で行き交う中身を暗号化するので、道の上でのぞいても意味のわからない文字しか見えません。共通鍵暗号は速いので、大きなファイルや動画も無理なく閉められます。
閉めるだけではありません。中身のかたまりごとに、共有した鍵で作った検査値をつけて送るので、誰かが途中で一文字でも変えると検査値が合わなくなり、受け取る側がすぐ気づきます。この確認を完全性と呼びます。確認、鍵の受け渡し、暗号化と完全性。この三つがそろって閉じて、はじめて鍵がかかります。

三つの輪を押して閉じる
閉まらない
まだ開いている輪があります。一つでも欠ければ鍵はかかりません。

三つの輪を一つずつ押して閉じてみましょう。三つとも閉じれば、なりすまし、盗聴、改ざんがすべて防がれ、一つでも開いていれば鍵はかかりません。

三つの輪がすべて閉じると、鍵がかかりました。なりすましは証明書の確認が、盗聴は暗号化が、改ざんは完全性の確認が防ぎます。脅威ごとに、対になる輪があるわけです。
一つでも欠ければ意味がありません。確認せずに暗号化だけすれば、にせのサイトととても安全に話すことになり、確認だけして暗号化しなければ、中身は道の上にむき出しです。とはいえ、鍵がすべてを守るわけではありません。のぞく人は、どのサイトに接続したかや行き交う量くらいはまだわかりますし、詐欺サイトも自分のドメインの証明書なら正しく取れます。鍵マークは、相手がそのアドレスの持ち主だという意味で、正直なサイトだという意味ではありません。

05

まとめ

まとめるとこうなります。HTTPSは、この領域で学んだ部品が集まる鍵です。ネットワークの領域では流れを見て、ここではなぜ安全なのかを見ました。安全は三つの輪が閉じることで生まれます。証明書で本物のサイトかを確かめ、公開鍵の技術で二人だけの共通鍵を安全に分け、その共通鍵で中身を暗号化しながら検査値で完全性を確かめます。
なりすまし、盗聴、改ざんを輪ごとに一つずつ防ぎ、三つがそろって閉じてはじめて鍵がかかります。ただし、鍵が守るのは行き交う中身で、サイトの正直さまでではありません。

1なぜ安全か
2証明書の確認
3鍵の安全な受け渡し
4三つの輪が閉じる

四つの要点を順に押してふり返りましょう。なぜ安全か、証明書の確認、鍵を安全に分けること、三つの輪が閉じることの順です。

これで、アドレスバーの小さな鍵マークがちがって見えるはずです。それはただの絵ではなく、三つの輪がすべて閉じたという約束です。証明書で相手を確かめ、二人だけの鍵を安全に分け、その鍵で中身を閉めているという約束です。
けれども、鍵が守るのは、すでに開いた接続の上の中身です。そもそも入ってくるべきでない接続は、誰が入口でふるい落とすのでしょうか。次の回では、その役目を受け持つファイアウォールを見ます。

一言でいうとHTTPSは、この領域で学んだことが一つに集まる鍵です。ネットワークの領域でその流れを見たなら、ここではなぜ安全なのかを見ます。安全は三つの輪が閉じることで生まれます。一つ目に、証明書で相手が本当にそのサイトかを確かめ、なりすましを防ぎます。二つ目に、公開鍵の技術で二人だけの共通鍵を安全に分けます。いまの接続はたいてい両方が同じ秘密をいっしょに作り、サイトがその過程に署名する方式で、接続ごとに新しい鍵を使うので、あとで秘密鍵がもれても過去の会話は安全です。三つ目に、その共通鍵で中身を暗号化して盗聴を防ぎ、かたまりごとにつけた検査値で改ざんを見つけます。三つの輪がそろって閉じてはじめて鍵がかかり、一つでも開いていれば安全ではありません。ただし、鍵マークは相手がそのアドレスの持ち主だという意味で、正直なサイトだという保証ではなく、どのサイトに接続したかといった情報はまだ見えています。
← セキュリティ
このページがお役に立ったなら支援する