ホームページ  >  記事  >  ウェブフロントエンド  >  httpsの時代なのに、まだ彼のことを何も知らないのですか?

httpsの時代なのに、まだ彼のことを何も知らないのですか?

PHPz
PHPzオリジナル
2017-03-12 17:24:531148ブラウズ

この記事の著者: Qie Guo、フロントエンド開発の分野に焦点を当てています。その他の記事については、Zhihu コラム「フロントエンドの小さなこと」に注目してください

今、すべての有名な Web サイトを開いてください。アドレスバーに小さな緑色の鍵が追加されていることに気づきましたか?

httpsの時代なのに、まだ彼のことを何も知らないのですか?

そう、これはhttpsです、httpsの時代です。

ところで、httpsって分かりますか?

簡単に言うと、https は SSL/TLS でラップされた http であり、安全な http です。安全とは何ですか?安全なネットワーク通信環境は、次の 3 つの問題を解決する必要があります:

  1. 通信内容の機密性

  2. 通信双方の正体

  3. 通信内容の完全性

そして、https はこれら 3 つの主要な問題を解決します。そして誕生したもの(正確にはsslのはずですが)、これら3つの問題の解決策をそれぞれ見ていきましょう。

通信内容の機密性

通信内容の機密性は暗号化によって実現する必要があります。私たちのインターネット環境は非常に透過的であり、通信は受信者に到達するまでに多くの中継を通過する必要があります。この状況は、授業中に最前列のシャオホンにメモを渡すのに似ています。メモには、「今夜真夜中に遊び場で会いましょう」と直接書くのではなく、巧みに「同じ場所で会いましょう」と書きます。 」この古い場所について知っているのはあなたとシャオホンだけなので、シャオミンとシャオリがメモを見ても、古い場所が図書館なのか英語コーナーなのかはわかりません。これは暗号化されており、古い場所はいわゆるです。鍵。

もちろん、この例はあまり正確ではありません。簡単に言うと、暗号化と復号化は関数であり、キーはこの関数のパラメータです。たとえば、単純な暗号化関数 f(x)=x+b を定義します。x は入力平文、b はキーです。復号化関数は暗号化関数の逆関数、つまり g(x) です。 =x-b. bが分からない場合は、暗号文を見ても実際の内容を推測することができないため、暗号化が成立します。この種の暗号化と復号化では同じキーが使用され、対称暗号化と呼ばれます。

しかし、ここでパラメータ b はどのようにネゴシエートされるのでしょうか?

あなたと小紅は 1 ~ 2 か月前に B 値の予約を取ることができますが、実際のネットワーク環境では、すべての通信が小明と小利のメモの受け渡しに依存している場合、あなたと小紅が直接通信することはできません。 、どうしたらいいでしょうか?ここでは、非対称暗号化アルゴリズムを使用する必要があります。このアルゴリズムには、公開鍵と秘密鍵のペアがあり、公開鍵は誰でも取得できる鍵であり、秘密鍵は

サービス

サーバーによって秘密に保持される鍵です。 。非対称暗号アルゴリズムでは、公開鍵で暗号化されたコンテンツは秘密鍵でのみ復号でき、秘密鍵で暗号化されたコンテンツは公開鍵でのみ復号できます。そのため、Xiaohong の公開キーを使用してメモを暗号化すると、Xiaoming や Xiaoli など、メモの配信を手伝ってくれる他の人は、秘密キーを持っている Xiaohong だけがあなたの情報を読み取ることができます。

対称暗号化アルゴリズムは暗号化と復号化に同じ秘密鍵を使用しますが、非対称暗号化アルゴリズムでは暗号化と復号化に 2 つの秘密鍵が必要です。その 2 つの秘密鍵は公開鍵 (公開鍵
、略して公開鍵) です。 (略して秘密鍵)。非対称暗号化アルゴリズムの原理に興味があるかもしれませんが、ここではアルゴリズムについては説明しませんので、興味のある学生は自分で調べてください。

それでは、Xiaohong もあなたへの応答を暗号化したい場合はどうすればよいでしょうか?

Xiaohong が秘密鍵で暗号化すると、クラスの全員が公開鍵を知っており、公開鍵で秘密鍵を復号化できるため、全員が Xiaohong の応答メッセージを復号化できることになります。賢明な方なら、解決策を思いついたはずです:

非対称暗号化アルゴリズムを使用して Xiaohong への対称キーを暗号化し、Xiaohong は彼女の秘密キーを使用して対称キーを読み取り、あなたはこの対称キーを対称暗号化に使用します。 , そうすれば楽しいデートができるでしょう。

もちろん、https も同じことを行います。

通信相手の正体暗号化後、通信プロセスは完璧に見えますか?ちょっと待ってください、Xiaohong の公開鍵はどのようにして世界に知られるのでしょうか?

ネットワーク環境におけるすべての情報のやりとりはメモの受け渡しによって行われることを知っておく必要があり、Xiaohong の公開鍵も例外ではなく、Xiaoming の手に渡ったときに交換されたらどうなるでしょうか。あなたの手元にあるXiaohong公開鍵が本物のXiaohong公開鍵であることを確認するにはどうすればよいでしょうか?クラスの狂気の男女についてのメモがさまざまな方法で交換されているのを見て、芸能委員のフェン姉妹が名乗り出ることにしました。フェン姉妹は、自分の身元を証明するために、すべての暗号化通信に証明書を持ち歩く方法を考え出しました。この証明書は、クラスの独身者全員のためにフェン姉妹が特別に作成したもので、証明書には公開キーに加えて、学生番号などのさまざまな情報も含まれています。 、名前、さらには星座、身長、寸法まで。証明書には大きな識別シールが押されていますが、これはフェン姉妹独自のシールであり、証明書の情報の信頼性がフェン姉妹によって保証されていることを意味します。実質シングル。

この情報により、相手がXiaohongかRuhuaかを知ることができます。これが証明書の仕組みです。

証明書に記載されているフェン姉妹の公印が偽造されたのではないかと疑われるのは明らかですが、その疑いは正当です。したがって、証明書の公印も非対称暗号化されており、暗号化方法は上記とは逆であり、馮姉妹の秘密鍵で暗号化され、馮姉妹の公開鍵で復号化されるため、証明書の信頼性が保証されます。確認されました。この公式シールは証明書のデジタル署名です。具体的には、まずハッシュ アルゴリズムを使用して証明書の ダイジェスト を抽出し、次にそのダイジェストを暗号化するプロセスです。さらに、証明書を持って Feng シスターに直接行くこともでき、Feng シスターが証明書の有効性を確認するお手伝いをします。 (証明書には期限があり、本物の証明書でも期限切れになる可能性があるので注意が必要です)

このメカニズムはかなり完成されているように見えますが、Feng 姉妹が保証しているのは、セキュリティメカニズムを構築するためにすべてを疑う必要があるということです。信頼できる。

しかし、フェン姉妹は本当にフェン姉妹なのでしょうか? ? ?

httpsの時代なのに、まだ彼のことを何も知らないのですか?

つまり、フェン姉妹自身も証明書によって保証されなければなりません。フェン姉妹の証明書は校長によって発行され、校長の証明書は校長によって発行されます...この連鎖は最も長く続きます。 https システムにある権威機関。いわゆるルート CA です。根は疑いようのない権威であり、自分自身に塩をもたらし、自分が誰であるかを証明します。 https 証明書システムでは、ルート証明書がオペレーティング システム/ブラウザーに付属しており、これらの組織によって認証された証明書を信頼して、Fengjie のレベルまで階層ごとに取得できます。

さらに、証明書は実際に取得するのが非常に簡単なので、地下鉄の入り口で1枚あたり10元かかり、ハーバードとスタンフォードの両方で10元かかります!したがって、有名な 12306 のように、ルート CA 組織にまったくアクセスせずに独自の証明書を作成する企業もあります。独自の証明書を作成し、ユーザーがダウンロードしてブラウザにインポートできるようにオンラインに公開することもできます。ただし、あなたにはフェン姉妹の影響力がないため、誰も信じません。もちろん、フェン姉妹さえ信じない人もいます。 ...

httpsの時代なのに、まだ彼のことを何も知らないのですか?

通信の内容

のパスワードが追加され、フェン姉妹の公式シールが押されました この仕組みは完璧ですか?

いいえ、考えてみてください。あなたに片思いしているシャオミンは、あなたがシャオホンにメモを送っているのを見たら、間違いなく不快に思うでしょう。たとえ理解できなくても、秘密のテキストを変更することはできます。当初、あなたはシャオホンに真夜中に運動場で会うように頼むつもりでしたが、シャオミンが暗号文の前半を削除し、解読した結果、たまたま「運動場で会いましょう」となったので、シャオホンは授業が終わるとすぐに運動場に走って行きました。 、でも、シャワーを浴びるために走って寮に戻りました。 。 。その後、シャオホンはシャオミンと一緒に逃げました~~

通信コンテンツの改ざんというシナリオについては誰もが深く理解していると思いますが、いくつかのサイトにアクセスすると、オペレーターからの広告が理由もなく表示されます。追加した! !したがって、コンテンツの整合性も保証する必要があります。これは比較的簡単です。最初にハッシュ アルゴリズムを使用してコンテンツの概要を抽出し、次にその概要を暗号化してデジタル署名を検証することで、通信内容の完全性。

上記は、https で使用されるテクノロジーの簡略化されたバージョンです。http 通信プロセスは次のとおりです:

httpsの時代なのに、まだ彼のことを何も知らないのですか?

一般的な手順: クライアントは、Client Hello メッセージを送信して SSL 通信を開始します。メッセージには、SSL バージョン、利用可能なアルゴリズムのリスト、キーの長さなどが含まれます。

  1. サーバーが SSL 通信をサポートしている場合、メッセージには、SSL バージョンと、ネゴシエートされた暗号化および復号化アルゴリズムである暗号化アルゴリズム構成も含まれます。

  2. その後、サーバーは Cert

    if

    icate メッセージを送信します。これは、証明書をクライアントに送信することを意味します。
  3. クライアントは、クライアント キー交換メッセージを送信し、3 の証明書公開キーを使用してプレマスター シークレットのランダム パスワード文字列を暗号化し、その後、このパスワードを通信の対称暗号化に使用します。

  4. サーバーは秘密鍵による復号に成功すると、SSL通信環境が構築された旨のレスポンスを返します。

  5. それでは通常の http c/s 通信です。

上記のように、渡された証明書と通信内容が改ざんされていないことを保証するために、ステップ 3 と 6 でダイジェスト アルゴリズムと署名アルゴリズムが使用されます。このプロセスから、https の核心は暗号化、特に鍵情報の送信に何度も使用される非対称暗号化アルゴリズムにあることがわかります。

暗号化を理解し、ネットワークの透明性を認識し、すべてに懐疑的になると、https システムを理解するのが容易になります。

結論

最近、http関連のことを体系的にレビューしています。この記事ではまずhttpsの基本原則を

紹介します。記事内に不適切な点があれば、ご容赦ください。それらを修正することができます!後ほど、実際のアプリケーション静的サーバーの構成などを紹介します~付録

httpsは中間者ハイジャックをどのように回避しますか?

誰かがあなたの DNS サーバーをハイジャックして、wwe.icbc.com をその違法な Web サイトに解決する場合、またはプロキシ サーバーがあなたをその違法な Web サイトに誘導する場合、これは中間者攻撃です。 https がない場合、攻撃が発生します。では、https はどのようにしてそのような攻撃を回避するのでしょうか?

その答えは証明書認証を通じてです。

    証明書を申請する際、CAは申請しているドメイン名に対して制御認証を行うため、隣のLao WangのWebサイトを利用して証明書を申請することはできません。 Lao Wang のサイトをハッキングしたとしても、証明書を申請する限り、Lao Wang はそれを知ることができます。
  1. 権威ある CA によって発行されたものではない証明書を偽造した場合、ブラウザは証明書が違法であることを確認するときに警告を表示します。もちろん、ユーザーは電車の切符などを入手するなどの操作を続けることができます。 。
  2. 実際のサイトの証明書をダウンロードし、証明書のドメイン名は変更されず、公開キーが置き換えられた場合、ブラウザは証明書のデジタル署名を比較するときに、それが正しくないことがわかります。警察を呼んで下さい。
  3. 仲介者が www.icbc.com の本物の証明書を直接使用すると、クライアントのメッセージを受信できますが、復号化できないため、クライアントの要求に応答できず、攻撃は無効になります。
  4. 証明書のデジタル署名

私はこれまでハッシュアルゴリズムとデジタル署名についてあまり知りませんでしたが、理解した後、その原理は実際には非常に単純であることがわかりました。ハッシュ アルゴリズムは大量のデータを固定長の要約に変換でき、その要約は入力に対応し、入力が変化すると要約も変化します。したがって、データにハッシュ アルゴリズムを適用して概要を取得し、その概要を比較することで、データが改ざんされているかどうかを判断できます。証明書は秘密キーを使用してダイジェストを暗号化し、クライアントは公開キーを使用してそれを復号化し、ハッシュ アルゴリズムによって計算されたダイジェストを比較することで、証明書が改ざんされているかどうかを判断できます。一方、公開鍵と秘密鍵はペアになっているため、改ざんされた証明書のダイジェストは取得できますが、署名は暗号化できないため、ダイジェストと暗号化を組み合わせることで証明書の信頼性を確保できます。ここでの秘密鍵は証明書の発行局の秘密鍵です。つまり、CA チェーン上の CA がユーザー サーバー証明書を暗号化し、上位 CA が下位 CA の証明書を暗号化し、トラスト リングを形成します。

この記事の著者: Qieguo、フロントエンド開発の分野に焦点を当てています。その他の記事については、Zhihu コラム「フロントエンドの小さなこと」にご注目ください。

以上がhttpsの時代なのに、まだ彼のことを何も知らないのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。