Httpsがどのように機能するかの簡単な説明


OpenSSLを使用して自己署名されたcertsを作成する方法について学ぶとき、それは私にとって、利用できる情報の大部分が証明書が何であるかについてわかっていると仮定して、そして、どのように彼らがHTTPSに収まるかについてわかりました.
私はHTTPSを説明することに決めました.そして、どのようにコミュニケーションが安全にされるか、すなわちDiffie - Hellmanキー交換とデジタル証明書がどのように働くかを説明しました.これが私のテイクです.

HTTPSは、安全でないチャネル(例えば空港で開いているWiFiネットワークの上で)の上で安全に通信するのを許します.HTTPSとの通信は暗号化されているので安全です.
通信はlisten to all network trafficを使用して暗号化される.暗号化のこの特定のタイプは、送付者とレシーバーが同じキーを持っているのを必要とします(すなわち、同じキーはデータを暗号化して、解読するのに用いられます).
しかし、送付者とレシーバーが不安定なチャンネルを通して互いに鍵を送る必要があるならば、これはこの全体の運動を無意味にしません?
これは、送信側と受信側が秘密鍵を送信する方法を持っている場合にのみ動作することができます.
これはsymmetric key encryptionが遊びに来るところです.
Diffie Hellman key exchange
ディフィヘルマン
Diffie Hellmanは2つの当事者が秘密の秘密鍵を作成することを可能にします.秘密鍵を公開することはできません.
それは魔法のように聞こえる、右?いいえ、それはちょうど数学です.
以下に簡単な例を示します.最初の2つの番号が選択され、それらは通常PとGと呼ばれています.Pはプライムのために短いです、Gはジェネレータのために短いです.
1とそれ以外の除数がない1より大きい .
素数pの発電機Gは、1×p−1のxに対するg ^ x mod pが1からp−1までの全ての数値を「生成」するような数である.
mod(short for for modulo)は正確な除算の剰余を返す関数です.例えば、5 mod 3は2です.なぜなら、5から3の正確な除算は1で、残りは2(3 * 1 + 2 = 5)ですからです.
Modが何であるかを知っている今、プライムのための発電機の例があります.3は7のためのジェネレータです.
- 3^1 mod 7 = 3
- 3^2 mod 7 = 2
- 3^3 mod 7 = 6
- 3^4 mod 7 = 4
- 3^5 mod 7 = 5
- 3^6 mod 7 = 1
1、2、3、4、5、6の結果を得ると、1からp - 1までのすべての数字であることがわかります.これは、G = 3の場合、P = 7のためのジェネレータです.
私たちは知っているすべての作品をディフェーヘルマン“手で実行する”.
例として、アリスとボブはお互いに手紙を書きたい.残念ながら、誰かが彼らの通信を読んでいるので、彼らは秘密に通信できるようにDiffie Hellmanを使用することを決定.
アリスはGとPを選びます、例えば、G = 3、そして、P = 7、そして、彼らとボブに手紙を送ります.
アリスも、例えば、Pより小さい秘密番号を選びます.
ボブがPとGを受け取ると、例えばPより小さい秘密番号を選ぶ.
それから、ボブは、これを計算します:G ^ Secretbob Mod P、この場合3 ^ 5 mod 7 = 5です.ボブはアリスにこの番号を送ります.
同時に、アリスはG ^ Secretice Mod Pを計算します.この場合、3 ^ 2 mod 7 = 2で、ボブにそれを送ります.
アリスは番号5でボブの手紙を受け取ります.彼女はそれからNumberbobsend ^ Secretice Mod Pを計算します.
ボブはアリスの手紙を受け取り、同じことをします.
共有秘密は4です.文字を読む人は、P、G、NumberaleCentとNumberBbbsentを読むことができます.しかし、彼らはアリスもボブの秘密の番号も共有秘密を知らない.AliceとBobは、暗号化と復号化のために共有秘密を使用することができます.
これは、大部分のプライムについては、盗聴者がアクセスする(P、G、およびNumberBbbsentとNumberalesent)情報を持っている共有秘密を把握するのに禁止費用がかかるためです.
prime is a natural number
デジタル証明書
我々は現在、Webサーバーとブラウザのクライアントは、誰かが交換されたすべての情報へのアクセスを持っている場合でも、通信を暗号化する秘密鍵を確立するためにDiffie Hellmanを使用することができます知っている.
これは安全な通信の問題を解決します.まあ、本当に.
アリスとボブの例に戻ると、誰もが自分の通信を読んでいる、イブを言うと、積極的な役割を取る想像してください.イブは、アリスの手紙をつかむと自分でそれらを置き換えると、ボブと同じように行います.
彼女はアリスとボブの秘密鍵を確立することができます.アリスはボブと、ボブとアリスに対応していると思います.
彼女はその後、アリスの文字を受信する必要があります、彼女はアリスと一緒に設立キーを解読し、それらを読んで、彼女はボブと一緒に設立キーを暗号化し、彼に送信します.
AliceとBobが彼らのコミュニケーションがプライベートでないということを知る方法はありません.
これは「中身攻撃の男」と呼ばれています.
では、どのようにしてこの問題を解決できますか?
それはデジタル証明書が遊びに来るところです、しかし、我々が非対称キー暗号化について話す必要がある前に.

非対称鍵暗号
非対称キーでは、2つのキー、プライベートとパブリックの1つです.両方の暗号化と復号化することができますが、それらのいずれかを使用して暗号化する場合のみ、他の復号化することができます.
公開鍵が自由に誰にでも送ることができる間、秘密鍵は決して送られることになっていません.秘密鍵によって暗号化された何かが公開鍵で解読されることができるので、誰かがあなたに暗号化された何かを送って、公開鍵でそれを解読することができるならば、あなたは秘密鍵の所有者だけが送られたものを暗号化することができたということを知っています.
証明書は、公開鍵の所有者に関する情報(例えば、ウェブページドメインを含んでいる主題名、例えばBlinkingcaret . com)と一緒にバンドルされた公開鍵です.
証明書を信頼できるようにするのは、それが証明書機関によってデジタル署名されているということです(例は、 、以前はVerisignです).しかし、まず、デジタル署名は何ですか?
Symantec
デジタル署名
デジタル署名の目的は、情報の送信者のアイデンティティを証明することであり、情報は途中で変更されなかった.
デジタル署名は2段階で行われる.最初に署名されるべきものの が作成されます(ハッシュ関数は任意の量のデータを一定量に変換します).その後、秘密キーを使用して暗号化されます.暗号化されたハッシュは情報と共にバンドルされる.暗号化されたハッシュは署名です.
誰かが暗号化されたハッシュで情報を受け取るとき、彼らは情報自体(ハッシュ関数の同じタイプを使用して、例えばhash)のハッシュを作成することができます.彼らが一致するならば、情報が変更されなかったということを意味します、それも秘密鍵が属している誰でもによってつくられました.
ハッシュ関数を使用するのではなく、すべての情報を暗号化していないのではないかと考えているのであれば、ハッシュが非常に小さく、情報が不正でないことを保証するために必要なすべてのプロパティを持っているからです.
md5
認証局
証明機関は証明書に署名する実体です.証明書に署名するために、証明書機関は秘密鍵を必要とします、そして、それは証明書にも来ます.
証明書当局の証明書は特別ですが.それらは自己署名されます.そして、それは彼らが証明書の公開鍵と対になる秘密鍵で署名されることを意味します.また、お使いのコンピュータのオペレーティングシステムは、いくつかの認証局の証明書をインストールしました.
誰かが私たちに証明書を与えるとき、その証明書が我々が信頼する証明書機関によって署名されたなら(我々が我々のコンピュータに証明書を持っている証明書当局のいずれか)、我々は証明書を信頼します(それはあなたがグリーンアドレスバーをあなたのブラウザに得る時です).
だから、アリスとボブの例に戻ると、ここで話を変更する必要がありますので、文字との比喩は少し中断します.
ボブとアリスが両手で手紙を届けると想像しなさい.
また、アリスとボブが会ったことがないと想像して、彼らは他のものがどのように見えるかわからない.
より複雑であるが、このシナリオでは、中間攻撃の男性がまだ可能です.誰かを想像して、ジョーは自分自身をボブに渡し、アリスに会い、次にジェーンなどの誰かがアリスによって自分自身を渡し、ボブに会うと言いましょう.ジョンとジェーンは、アリスとボブがDiffie Hellmanを使おうとしたとしても、彼らはそれを知らずにジェーンとジョンと話をすることになるでしょう.
しかし、ボブとアリスが政府によって発行されたIDカードを持っていることを想像してください.
アリスは自分の身分証明書をボブに頼むことができます.カードはボブの名前と彼の絵を持っていて、アリスが知っているという政府によって出されます.ボブはアリスに関して同じことができる.
HTTPSのIDカードは証明書であり、発行者は認証局です.また、httpsでは通常、ウェブサーバだけが証明書を提供します.しかし、証明書を持つユーザーの一般的な認証も可能です.
私は、これがあなたにすべてのこれらの部分がHTTPSを可能にするために一緒に合う方法のより良い考えを与えることを望みます. などの関連コンテンツについては、blogを確認してください.