サーバ証明書とハッシュアルゴリズム -SSL/TLS徹底解明 Part.1

2014年は脆弱性の話が多くありましたが、ここでは脆弱性の話を絡めながらSSL/TLSの通信を徹底解明していきます。

ECC証明書について解説したころからまとめたいと思っていたSSL/TLSの通信の流れをすべて説明していきます。

ECC証明書を実際に試してみる。
2010年に暗号の2010年問題とうたわれて、RSA1024bitの暗号強度はセキュリティが弱いため2048bitに移行が推奨されました。 ...
スポンサーリンク

SSL証明書を作成するまで

SSL証明書の発行までは以下のような流れで行われます。

サーバ証明書を発行するまで

1.秘密鍵と公開鍵の作成

以前ご説明した共通鍵を安全に送るための方法として公開鍵制度を利用する。

通常SSL通信というのは暗号/複合の処理が早く暗号強度が高い共通鍵でデータを暗号化をして通信をしています。
共通鍵とは、サーバ側とクライアント側が共通している持っている鍵です。
この共通鍵にて暗号化/複合化してSSL通信を行っています。
ただこの共通鍵にはひとつ問題があり、サーバ側とクライアント側でお互いが共通鍵を持たなければなりません。
しかし、共通鍵をそのままインターネットへ流してしまうと暗号通信が見破られて意味ないですよね。
そこで、使われるのが公開鍵制度です。

公開鍵暗号方式は、SSL/TLSではAu(Authentication)と呼ばれで、現在主流のRSAの他にECC/DSAが存在する。
現在のグローバルスタンダードはRSAの2048bitだが、処理性能や暗号化強度が優れているECCの256bitに移行している会社もある。

2.証明書署名要求(CSRの作成

ディスティングイッシュ・ネーム公開鍵ハッシュアルゴリズムによりハッシュ化し証明書署名要求(CSRを作成

ディスティングイッシュ・ネームとは、URLを含む以下のような証明書の所有者情報のことである。

Country NameCountry (国名)
StateState(都道府県名)
Locality NameLocality(市区町村名)
OrganizationOrganizational Name(組織名)会社名・団体名などの正式英語組織名
Organizational UnitOrganizational Unit(部門名)
Common NameCommon Name(コモンネーム)
Email AddressEMailアドレス※省略可能
password必要であれば入力※省略可能
optional companyほかの組織名※省略可能

ハッシュアルゴリズムとは、移行が騒がれているsha1/sha2とはまた違い、CSRをハッシュ化するのみに使用するアルゴリズムである。
[SHA1 / SHA2]が存在し、ここでの主流はSha1となります。
※Internet Explorでは拇印アルゴリズムとして表示される。

3.証明書署名要求(CSRからSSL証明書の作成

CSRを認証局に送付するとCSRに含まれるディスティングイッシュ・ネームと公開鍵からSSL証明書を発行します。

4.電子署名の発行

サーバ証明書と公開鍵をハッシュアルゴリズムでハッシュ化しハッシュ値を作成します。
作成したハッシュ値を認証局(CA)の秘密鍵で暗号化します。
この暗号化したデータが電子署名となります。
SSL証明書と電子署名が合わさってSSL証明書として認証局より発行されます。

ここでいう、ハッシュアルゴリズムとはサーバ証明書が認証局で発行されたものである証明のために使用します。
※Internet Explorでは署名ハッシュアルゴリズムとして表示される。

0.クライアントはSSL証明書と一緒に電子署名を受け取ります。
1.電子署名を認証局の公開鍵で複合化すると、認証局で計算したハッシュ値を見ることができます。
2.そこでクライントは同じようにSSL証明書と公開鍵よりハッシュ値を計算し電子署名のハッシュ値と比較を行います。
3.比較した結果一致すれば、SSL証明書は認証局より認証された改ざんされていないSSL証明書だと判断できます。

クライアントのハッシュ値計算

仮にSSL証明書が第3者に改ざんされていたとしても、ハッシュ値の比較をし一致するか確認すれば改ざんされているか判断することができます。
ただし、ハッシュアルゴリズムでは以下であることを前提にセキュリティを担保しています。

・同じ計算方式であれば、ハッシュ値が同一であること。

・同一のハッシュ値が限りなく起きないこと(ハッシュ衝突が起きないこと)

すでにsha1ではハッシュ衝突が起こる可能性が高いため、symantecなどではハッシュアルゴリズムのSHA-1からSHA-2への移行を促しています。
sha1のハッシュ長では、衝突が起こる可能性(低いがゼロではない。)がある。
つまり改ざんしても同じハッシュ値になる値が知られてしまうと電子署名が無意味(改ざんされても気づかない)となってしまう。
そのため、現在はSha1ではなく、sha2への移行が進んでいる。
※古い携帯電話やブラウザではsha2が対応できていない場合があるため、sha2への移行には注意が必要である。

まとめ

・秘密鍵と公開鍵のペアを作成する。暗号化として(RSA/DSA/ECC)が存在する。
・CSRにはディスティングイッシュ・ネームと公開鍵の情報が含まれる。
・電子署名の認証のためにハッシュアルゴリズムが使用されている。
・ハッシュアルゴリズムは2種類あり、電子署名のハッシュアルゴリズムが、SHA-1からSHA-2へ移行が促されている。
・SSL証明書は以下の情報を含んで認証局より発行されりる。
SSL証明書」 + 「公開鍵」 + 「電子署名

次の章では、サーバ証明書を受け取った際のクライアントとサーバのやり取りについて説明する。