[クリア]HTTPSのセキュリティ低下


HTTPSは、HTTPにセキュリティ機能(SSL)が付加されている
SSLは公開鍵を用いてサーバと対称鍵を交換する.
対称鍵を使用してデータを安全に交換

HTTPS(Hyper Text Transfer Protocol Secure)


HTTPは、ハイパーテキストHTMLを伝送するための通信プロトコルであり、セキュリティが付加されているのがHTTPSである.HTTPSは、ソケット通信において純粋なテキストを使用するのではなく、Web上で情報を暗号化するSSLまたはTLS(SSLで開発されたバージョン)プロトコルによってセッションデータを暗号化する.また、HTTPはポート80を使用し、HTTPSは443を使用する.

暗号化方法


HTTPSは公開鍵暗号化方式と対称鍵暗号化方式を用いる.

  • 公開鍵の暗号化
    公開鍵暗号化は、公開鍵と2つの秘密鍵を使用する.公開鍵は相手に渡されますが、秘密鍵は私だけです.
    相手が公開鍵でデータを暗号化して私に伝えると、私は秘密鍵で解読することができます.△相手は私にしか開かないデータを送ることができます.
    逆に、私が秘密鍵で暗号化して相手に送信すれば、相手は私の秘密鍵でデータを確認することができます.△私が秘密鍵で暗号化したと伝え、私が送ったデータであることを知らせる.
    	대신 공개키 암호화는 서버의 자원을 많이 사용해 지속적으로 쓰기는 힘들다.
    (したがって、互いに存在すると判定された場合に使用されるか、対称鍵を渡すために使用される)

  • 対称鍵暗号化
    公開鍵とは異なり,対称鍵の暗号化と復号化方式は同じである.
    だからデータを交換するときに対称鍵を交換します.
    対称鍵で暗号化してデータを交換します.
    (対称鍵を渡すときに公開鍵を使用します.)
  • 簡単に言えば
    公開鍵を介して対称鍵を渡す.
    対称鍵を使用してデータを交換します.

    SSL証明書


    上記では、互いに存在することを確認する際に公開鍵を使用し、この公開鍵にアクセスしたのはSSL証明書である.この証明書はサードパーティから発行されたCA(Certificate Authority、認証機関).CAは厳格に認められた企業しか参加できない.
    クライアントはサーバからSSL証明書を受信します.
    まず最初にやるべきことは、ブラウザに格納されているCAリストで証明書を発行するCAを検索することです.
    可能であれば、CAが提供する公開鍵を使用して暗号化されたハッシュ値を復号することができる.
    証明書が復号されると、サーバ上のコンテンツのハッシュ値はCAの秘密鍵によって確かに暗号化されるので、証明書は信頼できる.
    alicek106のブログの説明です.
    CAは証明書のハッシュ値を暗号化し、暗号化された値を証明書に入れる:

    そして、CAの公開鍵を用いて暗号化されたハッシュ値を復号し、証明書の証明書ハッシュ値と比較する.

    復号化すると、クライアントはサーバを信頼できます.
    さらに、Google CAもより高いレベルの認証を取得しています.

    Google CAは、最も権威のあるCA(Root CA)Geotrustの公開鍵を使用して、上記のような方法で認証されたCAであることを証明します.この原理をChain of Trustと呼ぶ.ここで,中間CA機構をICAと呼ぶ.
    誰もがRoot CAの認証を受けておらず、真ん中にICAが置かれている理由は
    これは、認証を実行する機関の証明書の破損や鍵の漏洩時に取り消すことができるためです.これを通じて、安保体制が強化された.

    SSL通信プロセス


    SSL通信プロセスは3種類ある.

    具体的には以下の通り.

    (HTTPはTCP/IPベースで、当然3ウェイ握手を行います.)
    手影段階を見るだけです.

  • clinet hello
    これは、どのような暗号化方式を使用するかについての交渉段階です.
    3種類のメッセージを送信します.
  • クライアントによって生成されたランダムデータ:
  • プリプライマリ・キーの作成
  • クライアントがサポートする暗号化方法
  • セッションID

  • server hello
    これはクライアントへの応答です.暗号化方式で協議して証明書を送信します.
    送信内容
  • サーバによって生成されたランダムデータ:
  • プリプライマリ・キーの作成
  • サーバが選択する暗号化方式
  • ssl証明書

  • サーバ上の証明書を検証し、対称鍵を生成
    上記の認証証明書を使用する方法.
    互いに交換されたランダムデータを組み合わせてpremaster secretを生成する.これは,後でセッション鍵を生成する材料であり,露出できない.
    また,このようなpremastersecretはサーバの公開鍵を用いて暗号化伝送を行う.

  • 対称鍵交換の完了
    サーバの秘密鍵で送信されたpre master secretを復号します.
    その後、premasterkeyを互いにmastersecretに変更し、sessionkeyを作成します.次に、このセッションキーをデータを交換する対称キーとして使用します.

  • ハンドエンド
    握手の終わりを告げる.
  • リファレンス


    alicek106
    公開チュートリアル
    12me