平成18年 テクニカルエンジニア(ネットワーク) 午後Ⅰ 問3 リモート接続の見直し 設問3
平成18年 テクニカルエンジニア(ネットワーク) 午後Ⅰ問題
目次
解答
(1) 公開鍵
(2) 場所:v
利点:暗号化と復号を高速にできる
解説
SSL通信の基本的な仕組みについて理解していれば簡単に解答できる問題です。
(1) (2)
SSLでの通信は、次の2点が保証されます。
- 通信相手がなりすましされていない
- 通信中のデータの盗聴・改ざんが行われない
この2点を保証するための仕組みとして、次のように公開鍵暗号方式と秘密鍵暗号方式を組み合わせます。
- なりすましの防止→公開鍵暗号方式
- データの盗聴・改ざん防止→秘密鍵暗号方式
ここで、簡単に秘密鍵暗号方式と公開鍵暗号方式について解説しておきましょう。
秘密鍵暗号方式は、暗号化と復号に同じ暗号鍵(秘密鍵 or 共有鍵 or 共通鍵などといいます)を利用する暗号化方式です。秘密鍵暗号方式を利用して安全にデータを送信するためには、鍵の配送の問題がつねにつきまといます。データの送信者と受信者でどうやって暗号鍵を安全に共有するかを考えなければいけません。
※ 昔は、人が暗号鍵を配送していったりもしていました。
秘密鍵暗号方式の運用上の一番のネックになる鍵配送の問題を解決した暗号方式が公開鍵暗号方式です。公開鍵暗号方式は、暗号化と復号に異なる暗号鍵を利用する暗号化方式です。RSA暗号が典型的な公開鍵暗号方式です。
RSA暗号は、非常に大きな整数の素因数分解には、膨大な時間がかかることを元にしています。非常に大きな素数2個を秘密鍵とします。素数の積の自然数から公開鍵を生成して、公開します。公開鍵で暗号化したデータは秘密鍵でのみ復号できます。あるいは、秘密鍵で暗号化したデータは公開鍵で復号できます。
データの送信者は公開されている公開鍵でデータを暗号化して受信者に送信します。受信者は保持している秘密鍵でデータを復号することができます。自然数を素因数分解すれば秘密鍵がわかってしまうのですが、非常に大きな数の素因数分解を行うには現実的な時間では不可能です。
ただし、公開鍵暗号方式は処理の負荷が大きいという欠点があります。特に暗号データを復号する場合の負荷が非常に大きくなってしまいます。そこで、通常はデータ通信を行うときすべて公開鍵暗号方式を利用することは行いません。
データ通信を行うに当たって、公開鍵暗号方式によって秘密鍵暗号方式で利用する秘密鍵を安全に配送します。そして、実際にデータを暗号化するにはその秘密鍵を利用して、高速な暗号化/復号の処理ができるようにしています。
SSLの通信もこのような仕組みに沿って安全な通信を行います。続いて、SSLの通信の仕組みについて解説します。
まず、証明書を利用して通信相手がなりすまししていないこととその後の通信で利用する秘密鍵を安全にサーバとクライアント間で配送・共有します。SSLの通信を行うためには、認証局(Certification Authority:CA)に証明書の発行を依頼する必要があります。証明書の発行を行うには、公開鍵と秘密鍵を作成しておく必要があります。CAは、証明書の所有者情報を確認した上で証明書を発行します。証明書には、
- 所有者情報
- 所有者の公開鍵
が含まれていて、この情報にCAが電子署名を行っています。CAの電子署名は、所有者情報と所有者の公開鍵のメッセージダイジェストをCAの秘密鍵で暗号化したものです。次の図は、証明書の発行の様子を示したものです。
※ 問題文にあるY社を所有者としています。
サーバにアクセスしたクライアントは、サーバの証明書を受け取り、サーバ証明書によってサーバがなりすましされていない正規のもので確かに実在していることを確認します。そのために、サーバ証明書に含まれているCAの電子署名を利用します。CAの電子署名はCAの秘密鍵で暗号化されているのでCAの公開鍵で復号できます。CA自体の証明書は、ブラウザにあらかじめ登録されていることがほとんどです。電子署名を復号すると、所有者情報と公開鍵のメッセージダイジェストがわかります。サーバ証明書に含まれている所有者情報、公開鍵と電子署名内の所有者情報、公開鍵のメッセージダイジェストを比較することで、なりすましされていないことがわかります。
なりすましされていないことが確認できれば、サーバ証明書に含まれている公開鍵は確実にY社のものであることがCAによって証明されていることになります。また、サーバだけでなくクライアント側にも証明書をインストールすれば、クライアントがなりすましされていない正規のものであるかを確認することができます。
続いて、実際のデータ通信で利用する秘密鍵暗号方式の秘密鍵の作成と共有を行っていきます。クライアント側で秘密鍵の基になるデータを生成して、それをサーバの公開鍵で暗号化してサーバに送信します。サーバは自身の秘密鍵で復号します。こうしてクライアントとサーバ間で安全に秘密鍵の基を共有できます。あとは、同じアルゴリズムで秘密鍵の基から実際の秘密鍵を生成します。
そして、生成した秘密鍵を使って実際のデータを暗号化/復号して、クライアント-サーバ間で安全にデータ通信ができるようになります。
さて、暗号方式とSSLの仕組みの解説が長くなってしまいましたが、問題の解答を考えます。(1)について、下線部③の証明書はCAの証明書のことを指しています。サーバ証明書に含まれている電子署名を復号するための暗号鍵なのでCAの公開鍵です。
(2)について、共通鍵(秘密鍵)が利用されるのは実際のデータ交換なので(v)の場所です。秘密鍵暗号方式を利用するのは、公開鍵暗号方式よりも処理の負荷が小さくて高速な処理が可能だからです。
参考URL
- 基礎知識 SSLの仕組み
http://www.soumu.go.jp/joho_tsusin/security/kiso/k01_ssl.htm - RSA暗号
http://ja.wikipedia.org/wiki/RSA%E6%9A%97%E5%8F%B7 - セキュリティ基本情報 -第7話:電子証明書には何が書いてあるのか?
http://www.verisign.co.jp/basic/pki/content/index.html
思いっきり余談ですが、暗号化のお話ですっごく面白い本があります。
![]() |
暗号解読〈上〉 (新潮文庫) サイモン シン Simon Singh
|
![]() |
暗号解読 下巻 (新潮文庫 シ 37-3) サイモン シン Simon Singh
|
暗号について、シーザー暗号から公開鍵暗号方式にいたるまでわくわくするようなストーリーがいっぱいです。そこら辺の技術書を読むよりわかりやすいし、何より暗号のうらにある数々の人々のドラマがすっごく面白いです。ぜひ、時間があれば一読をオススメします。