![](/images/common/spacer.gif) |
|
1 2 3 次のページ
|
![](/images/common/spacer.gif) |
SSL(Secure Sockets Layer)とは?
|
こんにちは。ビーブレイクシステムズの木下です。前回の「第5回:ApacheをWindowsへインストールするのだ!」ではApacheをWindowsへインストールする方法を説明しました。
今回はApacheでSSLを利用する方法について、「SSLとは何か?」「SSLはどのようなメカニズムなのか?」という点から解説していきます。
SSLとはNetscape Communication社で開発された、WebブラウザとWebサーバの間でやり取りする情報を暗号化して通信するためのプロトコルです。
インターネット上では、クレジットカード番号やユーザID、パスワードなど第三者には知られてはいけない情報がやり取りされています。これらの情報をHTTP通信で送信した場合、盗聴や改ざんされる可能性があります。そこでSSLを利用し、大切な情報をインターネット上で安全に送信する必要がある のです。また、最近増えている「フィッシング詐欺」もSSLを利用することで回避することができます。
|
SSLのメカニズム
|
続いてSSLのメカニズムである「暗号化のメカニズム(盗聴への対策)」「デジタル署名・デジタル証明書のメカニズム(改ざんへの対策、フィッシング詐欺への対策)」について解説します。
|
暗号化のメカニズム
|
暗号化とは、通常なら平文でやり取りされている情報を、当事者以外はわからない形式に変換することです。
そのメカニズムは「鍵」と「計算方法(アルゴリズム)」という概念に基づいています。「鍵」とは「データを暗号化するための計算をする際、個々のユーザごとに異なった可変要素」のことです。同じ「計算方法」でも、「鍵」の情報が異なると暗号化結果はまったく異なります。
|
SSLで利用している暗号化のメカニズム
|
SSLでは「共通鍵暗号化方式」と「公開鍵暗号化方式」を組み合わせたハイブリット方式を利用するのが一般的です。まずは、共通鍵暗号化方式と公開鍵暗号化方式、それぞれのメカニズムを解説しましょう。
|
共通鍵暗号化方式とは
|
共通鍵暗号化方式とは、データの暗号化と復号化で同一の鍵を利用して行う方式です。暗号化されたデータは正しい共通鍵でなければ復号化することはできません。共通鍵暗号化アルゴリズムにはDES(Data Encryption Standard)、3DES(トリプルDES)などがあります。
共通鍵暗号化方式は、暗号化・復号化速度は速いのですが、共通の鍵が必要なためその受け渡しに難点があります。
|
公開鍵暗号化方式とは
|
公開鍵暗号化方式とは、データの暗号化に用いる鍵と復号化に用いる鍵が異なる方式です。
公開鍵暗号化方式では、「秘密鍵」と「公開鍵」の2種類があり、秘密鍵で暗号化したデータは正しいペアの公開鍵でした復号化できません。また、公開鍵で暗号化したデータは正しいペアの秘密鍵でしか復号化できません。この「正しい鍵の組み合わせ」を利用することで、身元証明に応用することが可能です。このメカニズムは公開鍵暗号化方式とは別の話のため、別途解説します。
公開鍵暗号方式アルゴリズムにはRSA(Rivest Shamir Adleman)、EPOC(Efficient Probabilistic Public-Key Encryption)などがあります。
公開鍵暗号化方式の暗号化・復号化速度は共通鍵暗号化方式に比べて約1,000倍の時間がかかります。ただし、同じ鍵で暗号化・復号化を行うわけではないので鍵の受け渡しの心配をする必要がありません。
|
ハイブリット方式のメカニズム
|
SSLでは共通鍵暗号化方式と公開鍵暗号化方式を組み合わせたハイブリット形式を利用しています。
読者の皆さんの中には「インターネット上で暗号化通信をするなら、公開鍵暗号化方式で良いのでは?」と感じる方もいらっしゃるかと思います。しかし、公開鍵暗号化方式では暗号化・復号化処理に時間がかかります。そのため、SSLではこれらの方式を組み合わせたハイブリット方式が利用されているのです。ハイブリット方式の流れは次の通りです。
以上がSSLで利用している暗号化のメカニズムです。続いて、デジタル署名・デジタル証明書のメカニズムについて解説します。
|
1 2 3 次のページ
|
![](/images/common/spacer.gif)
|
|
![株式会社ビーブレイクシステムズ 木下 喜雄](/images/common/tyosya.gif)
|
著者プロフィール
株式会社ビーブレイクシステムズ 木下 喜雄
Javaスペシャリスト。前職ではCOBOL、Visual Basicを用いた大規模流通業向けシステム開発を行う。その現場で大規模システム構築時の開発効率の向上を目指してオブジェクト指向的な考え方を身につける。その後独学でJava言語を習得し、Java専業ベンダーであるビーブレイクシステムズに転職、現在は、Javaを用いた開発だけではなくお客様とのリアルコミュニケーションを実現できるマルチなエンジニアを目指し、日々奮闘中。
|
|
|
|