[アプリケーション層]HTTPSとSSL


HTTPのセキュリティ・ホール


HTTPは暗号化されていないデータを交換するプロトコルです.
  • は他の人に盗聴され、
  • 不確定通信先、
  • の中間データは、
  • に改ざんすることができる.
    =>したがって、SSLを介してセキュリティ機能を追加するプロトコルはHTTPSである.

    たいしょうキー


    同じ鍵を使用して暗号化および復号化を行います.
    しかし,暗号を送信した者同士で対称鍵を渡す場合,対称鍵が漏洩すれば外部復号によりデータを傍受できるため,セキュリティが劣る.

    公開鍵


    異なる鍵による暗号化/復号化
    2つのキーがあります. Aキーで暗号化すればBキーで復号でき、Bキーで暗号化すればAキーで復号できる.このとき、2つの鍵のうちの1つを秘密鍵(private key,秘密鍵,秘密鍵)とし、もう1つを公開鍵(public key)として指定する.秘密鍵は自分だけが所有し、公開鍵は他人に提供される.

    公開鍵方式

  • 情報提供者に公開鍵を送信する.
  • 公開鍵を受け取った情報提供者は、公開鍵を用いて情報を暗号化し、秘密鍵を持っている人に送信する.
  • 秘密鍵の所有者は、秘密鍵を使用して暗号化された情報を復号する.
  • この過程で公開鍵が漏れても公開鍵が分からなければ情報を解読することができないので安全である.

    電子署名


    秘密鍵の所有者は、秘密鍵を使用して情報を暗号化し、秘密鍵とともに暗号化された情報を伝送する.情報と公開鍵を取得した者は、公開鍵を用いて暗号化された情報を復号する.
    この過程で,公開鍵が漏洩すると,何気ない攻撃者にデータが復号される危険があるが,この方法の目的はデータを保護することではない.
    暗号化されたデータは、公開鍵と対をなす秘密鍵によって暗号化されることを意味する公開鍵を使用して復号することができる.すなわち、公開鍵は、データを提供する者の身元を保証することができる.これらを電子署名と呼ぶ.

    対称鍵と公開鍵の長所と短所


    公開鍵暗号化はセキュリティに有利であるが、大量のコンピュータリソースが使用されている.
    逆に,対称鍵方式は有効であるが,セキュリティの問題もある.
    =>SSLはこの2つの方式の利点の結合である.公開鍵として鍵を暗号化し,実際のデータを交換する際に対称鍵を用いてデータを交換する.(詳細は以下の通り)

    SSL


    SSLデジタル証明書とは


    SSL証明書は、サードパーティがクライアントとサーバ間の通信を保証する電子化されたドキュメントです.
    クライアントがサーバに接続されると、サーバはこの証明書情報をクライアントに渡します.クライアントは、証明書情報が信頼できるかどうかを確認し、次の手順に従います.

    SSLの長所

  • 漏洩防止通信内容
  • 接続するサーバの信頼性判断は
  • である.
  • 通信内容変更防止
  • SSLの振る舞い


    SSLは,データの転送に公開鍵と対称鍵を混在させる.
  • 実際に送受信するデータは、対称鍵を用いて
  • を暗号化する.
  • 復号時に用いる対称鍵(セッション鍵)は、公開鍵を用いて
  • を暗号化する.
    コンピュータとコンピュータはネットワークを利用して通信し,内部には3段階ある.
    1. 악수 -> 2. 전송 -> 3. 세션종료

    1.握手(握手)


    SSL方式で通信するブラウザやサーバでも握手をするとSSL証明書が交換されます.

  • クライアントHello:クライアントはサーバに接続されています.
  • クライアントが生成するランダムデータ
  • セッションID:SSL握手が既に行われている場合、既存のセッションが再利用され、使用する接続の識別子がサーバ側に送信されます.

  • サーバHello:サーバ応答クライアントHello:
  • サーバ側で生成するランダムデータ
  • SSL証明書

  • データを暗号化するための鍵を作成し、公開鍵で渡す

  • サーバ証明書の検証:クライアントは クライアント内のCAリストを確認し、証明書がCAから発行されたかどうかを確認します.CAリストに証明書がない場合は、警告メッセージをユーザに出力します.クライアント内蔵CAの公開鍵を使用して証明書を復号し、証明書がCAによって発行されるかどうかを確認します.復号に成功した場合、証明書はCAの秘密鍵で暗号化された文書である.これにより、証明書を送信するサーバが信頼性が向上します.

  • クライアントは ランダムデータとクライアント生成 ランダムデータを組み合わせてpremastersecret(対称鍵)という鍵を生成します.

  • このpre-master secret値をサーバに渡すときに公開鍵方式を使用します. pre master secret値をサーバの公開鍵(サーバから受信した証明書)で暗号化してサーバに送信することで、サーバは独自の秘密鍵を使用して安全に復号することができる.

  • サーバはクライアントから送信されるpre master secret 値を自分の秘密鍵に復号します.サーバとクライアントはpre master secret 値を共有し、master secret値にします.master secretはセッションキーを生成し、サーバとクライアントはこのセッションキー値を使用してデータを対称鍵で暗号化し、データを交換します.

  • クライアントとサーバは互いに相手に通知し合い,ハンドフェーズは終了する.
  • 2.セッション


    セッションは、実際にはサーバとクライアント間のデータ交換です.sessionkey値を使用して対称鍵で暗号化します.

    3.セッションの終了


    データ転送終了後、SSL通信終了を相互に通知する.通信で使用されているセッションキーは破棄されます.

    Reference


    生活コードHTTPSとSSL証明書