DigiCert証明書の正規代理店株式会社アールエムエス
DigiCert サーバー証明書利用団体
  1. ホーム
  2. サポート
  3. 技術情報
  4. SSL暗号化の舞台裏

SSL暗号化の舞台裏

SSLプロトコルを支える暗号化のしくみ

SSL(Secure Sockets Layer)は、サーバーとクライアントの間の通信、(Webサーバーとブラウザの間の通信、メールサーバーとメールクライアントの間の通信)を暗号化し傍受不能にする標準的な技術です。
これにより、クレジットカード情報・ログインパスワード・個人情報などの機密を要する情報を安全に通信できます。
この安全な通信を確立するためにはSSLサーバ証明書が必要です。

SSLは広く普及していますので、SSLによって暗号化された通信が行われていることは広く知られていると思います。
しかし、たとえスーパーコンピュータを使っても誰にも解読不可能なこの暗号化がどのように行われているか知っていますか?
このページでは、SSL暗号化の舞台裏の技術についてわかりやすく説明しています。

非対称暗号化と対称暗号化

SSL暗号化の舞台裏では、非対称鍵と対称鍵が連動しています。
そして解読が事実上不可能な強度でこれらの鍵を生成するために、いくつかの数式を使ったアルゴリズムも使われています。

SSL証明書の基本については、以下のページを参照してください。
SSLサーバ証明書の基本>>

非対称暗号化

公開鍵暗号とも呼ばれる非対称暗号化では、公開鍵と秘密鍵という二つの異なる鍵を使います。
公開鍵は誰でも使えるように公開し、秘密鍵は公開しません。公開鍵で暗号化した情報は、秘密鍵でのみ複合化できます。

Asymmetric encryption diagram

非対称鍵は現時点で一般的に、1024bit鍵長のものと2048bit鍵長のものが使われていますが、すでに1024bit鍵長は安全ではないとされています。
2048bit鍵長は617桁であり、重複のない暗号化を行うことができます。2048bitよりも長い鍵長の鍵を作ることはできますが、実際にはほとんど使われていません。現在の一般的なコンピュータ能力で2048bit鍵長を解読するには、14億年以上かかるとされています。

対称暗号化

対称暗号化(または事前共有鍵暗号)は、暗号化と復号化に同一の鍵を使います。そのため、送信側と受信側の両方が同一の鍵を持っている必要があります。

Symmetric encryption diagram

対称鍵の鍵長は、一般的に128bitまたは256bitになります。鍵長が長いほど解読が困難になります。
例えば、128 bitの鍵長は、2の128乗、10進法では39桁の数値 340,282,366,920,938,463,463,374,607,431,768,211,456 になります。
総当たり攻撃(brute force)で 128bit暗号を解読するためにはかなりの時間を要するため、対称鍵が使い捨てされるSSLでは128bitで安全と考えられています。

対称鍵でどちらの鍵長が使われるかは、サーバーとクライアントソフトウェアの両方の暗号化機能によって決まります。
SSLサーバ証明書が対称鍵の鍵長を決めることはできません。

対称暗号化と非対称暗号化のメリットデメリット

非対称暗号化で使われる非対称鍵は、対称暗号化で使われる対称鍵よりもよりも鍵長が長いので、非対称鍵で暗号化されたデータのほうが、対称鍵で暗号化されたデータよりも解読しにくいのは確かです。
しかし、このことが直ちに非対称鍵を利用した暗号化の方が優れているということにつながるわけではありません。
鍵長が長いということは暗号化/復号化する際のコンピューターの負荷も高いということを意味します。
SSLではこの2タイプの鍵の特徴をうまく利用しています。

対称鍵は非対称鍵よりも小さいので、暗号化/復号化でのコンピューターの負荷も少なく処理時間も短くなります。
しかし、対称鍵方式は暗号化/復号化で同じ鍵をつかわなければならないため、受信者と送信者が同じ鍵を持っている必要があり、その鍵の受け渡しを通信を使って安全に行わなければならないという問題があります。

非対称鍵には鍵の安全な受け渡しのネックはありません。
公開鍵と秘密鍵を使うので、送受信の一方が秘密鍵を持ち、もう一方に公開鍵を渡します。
この段階では通信は暗号化されていません。そして通信を希望する誰に渡しても構いません。
公開鍵を受け取った通信相手が、公開鍵を使って暗号化した通信を開始します。この通信内容は秘密鍵を持っているもう一方の通信相手だけが復号できるのです。

SSLでは非対称鍵と対称鍵の両方を使う

以下は、SSLが非対称鍵と対称鍵を使って安全な通信を行える原理を解説したものです。
実際は、通信相手のサーバーが真正のサーバーなのかをサーバ証明書で検証していますが、それについては省略した説明になっています。

Browser Server Communication
  1. サーバーは公開鍵が含まれたSSL証明書を送信します。公開鍵は非対称鍵です。
  2. ブラウザは受け取った公開鍵で暗号化したセッション鍵をサーバーに送信します。セッション鍵は対称鍵です。
  3. サーバーは暗号化されたセッション鍵を非対称鍵である秘密鍵で復号化します。
  4. サーバーブラウザは以降、対称鍵であるセッション鍵を使って暗号化された通信を行います。セッション鍵を知っているのは、発行したブラウザとサーバーだけです。これにより該当するブラウザとサーバー間だけに限定された安全な通信が確立します。セッション鍵は同一のセッションだけで有効です。ブラウザがサーバーへの接続を終了し、改めて接続を開始した場合は、新しいセッション鍵がつくられます。

公開鍵暗号化アルゴリズム

公開鍵暗号は、公開鍵と秘密鍵を作成するために、RSAおよび楕円曲線暗号(ECC)のような暗号化アルゴリズムを使用しています。
これらのアルゴリズムは計算複雑性理論によって、現実的には解読不能とされています。

非対称暗号化では、「公開鍵と秘密鍵を生成すること」、「公開鍵でメッセージを暗号化すること」、「秘密鍵でメッセージを復号化すること」を行える仕組みになっています。
しかし、公開鍵から秘密鍵を算出することは現実的には不可能です。

RSA

RSAは、桁数が大きい二つの素数から作成された合成数の素因数分解が困難であることを理論的根拠としています。

RSAでは、大きな2つの素数 {p ,q } を生成し、それらの積 n (=pq) を使って公開鍵を作成します。
この公開鍵で暗号化されたデータを秘密鍵を使わないで解読するためには、大きな2つの素数 {p ,q }を知っている必要があります。

RSAの名称は、1977年に初めてアルゴリズムを公開した Ron Rivest、Adi Shamir、Leonard Adleman 三人の名前に由来します。

ECC

楕円曲線暗号は1985年に Neal Koblitzと Victor S. Miller によって別々に提案され、 2004年に一般に利用されるようになりました。
楕円曲線暗号 (ECC) は、楕円曲線の代数構造に依存しています。
自然数が分かっている場合、楕円曲線の起点と自然数から別の点を特定することはできるますが、こうして特定された楕円曲線の起点と、別の点の位置から自然数を求めることは困難とされています。
RSA と比較して、約10分の1程度の鍵長で同程度の安全性を保証できるため、暗号化・復号化の処理スピードが速くなります。
しかし現時点ではECCに未対応のSSLがありますので、採用に当たっては注意が必要です。

共有鍵暗号化アルゴリズム

共有鍵(対称鍵)暗号化アルゴリズムには、Twofish、 AES、Blowfish 等があります。
共有鍵生成では AES が最も普及しています。共有鍵(対称鍵)暗号化アルゴリズムは、ストリーム暗号化あるいはブロック暗号化で鍵を生成します。ストリーム暗号化ではデータをビット単位あるいはバイト単位などで順次暗号化します。
一方、ブロック暗号化ではブロック暗号化が一般に利用されており、データを64bitや128bitなどの固定長のブロックに分割して暗号化します。

SSL サーバ証明書とは?
30日間テスト証明書
30日間返金保証制度あり!
コードサイニング証明書
ドキュメントサイニング証明書
デジタル証明書ニュース
HTTPS入門
digicert.comトピックス&ニュース