OpenSSL Security SSL/TLS 暗号 認証

【SSL/TLS】【公開鍵暗号方式/x.509証明書】サーバ認証の仕組み

2018年8月30日


暗号化について触れながら、サーバ認証の流れを解説します。

SSL/TLS暗号化通信の種類

暗号化通信の種類は3種類存在します。それぞれについて通信の流れを記載します。

Ⅰ.共通鍵暗号方式(主な暗号スイート:RC4、DES、3DES、AES)

❶クライアントは、共通鍵を作成する
❷クライアントは、共通鍵をサーバへ送信する
❸サーバは、その共通鍵でデータを暗号化して、クライアントへ送信する
❹クライアントは、共通鍵でデータを復号して、データを取得する

欠点:共通鍵交換時に、第3者に通信傍受される危険性あり

Ⅱ.公開鍵暗号方式(主な暗号スイート:RSA、DSA、ECDSA)

❶サーバは、公開鍵と秘密鍵を作成し、公開鍵を公開する
❷クライアントは、サーバの公開鍵でデータを暗号化して、サーバへデータを送信する
❸サーバは、サーバの秘密鍵でデータを復号して、データを取得する

欠点:鍵のビット長、平文が長いから、暗号、復号に時間がかかる

Ⅲ.共通鍵と公開鍵のハイブリット方式

現在主流であり、初回の共通鍵交換を安全に行うのが目的となります。

❶サーバは、公開鍵と秘密鍵を作成し、公開鍵を公開する
❷クライアントは、共通鍵を作成する
❸クライアントは、サーバの公開鍵で共通鍵を暗号化する
❹クライアントは、暗号化した共通鍵をサーバに送信する
❺サーバは、サーバの秘密鍵で共通鍵を復号して、共通鍵を取得する
❻サーバは、共通鍵でデータを暗号化して、クライアントに送信する
❼クライアントは、共通鍵でデータを復号して、データを取得する

サーバ認証の流れ

クライアントからサーバへのSSL/TLS暗号化通信において、上記の「Ⅲ.共通鍵と公開鍵のハイブリット方式」を使用した通信の流れを記載します。

Ⅰ.サーバ証明書の作成

❶サーバは、秘密鍵と公開鍵を作成する
❷サーバは、サーバ情報と秘密鍵を元にCSRを作成して、認証局(CA)へ申請する

❸CAは、ハッシュ関数を用いてCSRをハッシュ化する
❹CAは、CAの秘密鍵でハッシュ化したCSRを暗号化(デジタル署名)して、サーバ証明書を作成する。それをサーバに送信する
❺サーバは、サーバ証明書をローカルに配置する

通常はCA(認証局)が持つ秘密鍵で署名しますが、Serverの秘密鍵自身でCSRに署名することもできます。信頼性の低い自己署名証明書(オレオレ証明書)となります。

Ⅱ.サーバ証明書の真正性(改ざんの有無)チェック

❶クライアントからサーバに接続要求
❷サーバは、サーバ証明書をクライアントに送信する
❸クライアントは、証明書上の認証局に問い合わせる
❹CAは、クライアントにCAの公開鍵を送信する
❺クライアントは、CAの公開鍵でデジタル署名を復号して、CSRのハッシュ値を取り出す
❻クライアントは、CSR文書をハッシュ化して、❺のハッシュ値と比較する
❼❺と❻のハッシュ値が一致すれば、証明書の真正性が担保される

Ⅲ.共通鍵交換

❶クライアントは共通鍵を作成する
❷クライアントは、サーバの公開鍵で自分の共通鍵を暗号化する
❸クライアントは、暗号化した共通鍵をサーバに送信する
❹サーバは、サーバの秘密鍵で復号して、共通鍵を取得する

Ⅳ.共通鍵暗号によるデータのやり取り

❶クライアントは、データを共通鍵で暗号化する
❷クライアントは、暗号化したデータをサーバに送信する
❸サーバは、共通鍵でデータを復号して、データを取得する

サーバ認証の要素まとめ

参考:
https://qiita.com/izuki_y/items/15f755d150d251c0533b

CATEGORIES & TAGS

OpenSSL, Security, SSL/TLS, 暗号, 認証,

Author:


  1. […] 参考:【SSL/TLS】サーバ認証の仕組み […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

カテゴリー

むるし

フリーランスのインフラ系エンジニア。
備忘録で色々書いていきます。
お問い合わせは↓
mo-gyu@murci.net
LPIC303 Security
%d人のブロガーが「いいね」をつけました。