バックナンバー
■
その116「DLNAの仕組み」
[2007/03/26]
■
その115「ドメインとActive Directory」
[2007/03/19]
■
その114「ワークグループができること」
[2007/03/12]
■
その113「WPSの仕組み」
[2007/03/05]
■
その112「Gopherの生い立ちと現在」
[2007/02/26]
■
その111「Wikiの使われ方」
[2007/02/19]
■
その110「文字コードとは」
[2007/02/05]
■
その109「IISの生い立ち」
[2007/01/29]
■
その108「NASの登場と一般への普及」
[2007/01/22]
■
その107「HomePNAのいろいろ」
[2007/01/15]
■
その106「Ogg Vorbisの成り立ち」
[2006/12/25]
■
その105「MIDIの原理とSMFの構造」
[2006/12/18]
■
その104「AIFFの構造」
[2006/12/11]
■
その103「WAVの構造と現状」
[2006/12/04]
■
その102「WMAの歴史」
[2006/11/27]
■
その101「AACの特徴」
[2006/11/20]
■
その100「MP3/MPEG Audioの仕組み」
[2006/11/13]
■
その99「HSDPAの仕組み」
[2006/11/06]
■
その98「H.264・MPEG-4 AVCの特徴」
[2006/10/30]
■
その97「IEEE 802.16e(モバイルWiMAX)の特徴」
[2006/10/23]
■
その96「TIFFの特徴」
[2006/10/16]
■
その95「PNGの現状と今後」
[2006/10/02]
■
その94「GIFの構造」
[2006/09/25]
■
その93「10GBASEの種類(2)」
[2006/09/11]
■
その92「10GBASEの種類」
[2006/09/04]
■
その91「GbEのいろいろ」
[2006/08/28]
■
その90「JPEGの特徴」
[2006/08/21]
■
その89「DivXの広がり」
[2006/08/07]
■
その88「MPEGの仕組み」
[2006/07/31]
■
その87「WMVのこれまで」
[2006/07/24]
■
その86「AVIの生い立ちとそのコーデック」
[2006/07/10]
■
その85「QuickTimeの変遷」
[2006/07/03]
■
その84「Realのこれまでと今後」
[2006/06/26]
■
その83「ShareとWinny」
[2006/06/19]
■
その82「DOCSISの仕組み」
[2006/06/12]
■
その81「SQLインジェクションの流れ」
[2006/06/05]
■
その80「RSSの動作」
[2006/05/29]
■
その79「Skypeの仕組み」
[2006/05/22]
■
その78「BitTorrentの特徴と今後」
[2006/05/15]
■
その77「Winnyの仕組みと現状」
[2006/05/08]
■
その76「WinMXの特徴」
[2006/04/24]
■
その75「Gnutellaの歴史と構造」
[2006/04/17]
■
その74「Napsterの歴史」
[2006/04/10]
■
その73「P2Pのいろいろ」
[2006/04/03]
■
その72「IEEE 802.11nの動向」
[2006/03/27]
■
その71「ActiveX Scriptingの動作」
[2006/03/20]
■
その70「Ajaxの仕組み」
[2006/03/13]
■
その69「DHTMLの動作」
[2006/03/06]
■
その68「Scriptの定義」
[2006/02/27]
■
その67「JavaScriptの仕組み」
[2006/02/20]
■
その66「Javaの動作」
[2006/02/13]
■
その65「RFCのプロセス」
[2006/02/06]
■
その64「ActiveX DocumentとActiveX Controlの違いと共通点」
[2006/01/30]
■
その63「ActiveX Controlの機能」
[2006/01/23]
■
その62「ActiveXを構成するもの」
[2006/01/16]
■
その61「Cookieの仕組みと用途」
[2005/12/26]
■
その60「malwareとその分類」
[2005/12/19]
■
その59「rootkitの動作」
[2005/12/12]
■
その58「CSSの役割」
[2005/12/05]
■
その57「HTMLの変遷」
[2005/11/28]
■
その56「PONとその種類」
[2005/11/21]
■
その55「FWAの仕組み」
[2005/11/14]
■
その54「DoSとDDoS」
[2005/11/07]
■
その53「SNMPとMIBの動作」
[2005/10/03]
■
その52「Jumbo Frameとフレームサイズ」
[2005/09/12]
■
その51「WPA2の仕組み」
[2005/09/05]
■
その50「WPAとWPA-PSKの違い」
[2005/08/29]
■
その49「WPAの仕組み」
[2005/08/22]
■
その48「WebDAVの動作」
[2005/08/08]
■
その47「OFDMAの仕組みとOFDMとの違い」
[2005/08/01]
■
その46「OFDMの仕組み」
[2005/07/25]
■
その45「WiMAXの特徴」
[2005/07/11]
■
その44「Wi-Fiの役割」
[2005/07/04]
■
その43「FTPの目的と動作」
[2005/06/27]
■
その42「UPnPの動作」
[2005/06/20]
■
その41「ネットマスクの仕組み」
[2005/06/13]
■
その40「ARPの機能」
[2005/06/06]
■
その39「DNSの原理」
[2005/05/30]
■
その38「デフォルトゲートウェイの役割」
[2005/05/23]
■
その37「MACアドレスの仕組み」
[2005/05/16]
■
その36「スイッチとその進化」
[2005/05/09]
■
その35「ルータによるメリット」
[2005/04/25]
■
その34「ブリッジの原理」
[2005/04/18]
■
その33「リピータの機能」
[2005/04/11]
■
その32「IPアドレスのクラス」
[2005/04/04]
■
その31「ブロードキャスト/マルチキャスト/ユニキャスト」
[2005/03/28]
■
その30「SMTP AUTHと認証の種類」
[2005/03/14]
■
その29「Submissionポートとスパムメール対策」
[2005/03/07]
■
その28「Outbound Port25 Blockingとは」
[2005/02/28]
■
その27「PGPの仕組み」
[2005/02/21]
■
その26「PKIと認証局」
[2005/02/14]
■
その25「公開鍵暗号方式とは」
[2005/02/07]
■
その24「共通鍵暗号とは」
[2005/01/31]
■
その23「SSHの仕組みと応用」
[2005/01/24]
■
その22「SSLの役割」
[2005/01/17]
■
その21「POP3とIMAP4の違い」
[2004/12/27]
■
その20「POP3の役割と機能」
[2004/12/20]
■
その19「SMTPの機能と問題点」
[2004/12/13]
■
その18「SPIとパケットフィルタリング」
[2004/12/06]
■
その17「LANの概念とその広がり」
[2004/11/29]
■
その16「SIPの役割」
[2004/11/15]
■
その15「プロキシの利用」
[2004/11/08]
■
その14「VoIPの仕組み」
[2004/11/01]
■
その13「イーサネットとは」
[2004/10/25]
■
その12「IP/TCP/UDP/ICMPとは」
[2004/10/18]
■
その11「DHCPの役割」
[2004/10/04]
■
その10「MIMOとは」
[2004/09/27]
■
その9「DMZとその効果」
[2004/09/13]
■
その8「ファイアウォールとは」
[2004/09/06]
■
その7「NATとNAPTの違いとIPマスカレード」
[2004/08/30]
■
その6「VPNとVPNパススルーの仕組み」
[2004/08/23]
■
その5「無線LANの問題とWEP」
[2004/08/09]
■
その4「IEEE 802.11a/b/gって何を意味しているの?」
[2004/08/02]
■
その3「ダイナミックDNSって?」
[2004/07/26]
■
その2「グローバルIPアドレスとプライベートIPアドレス」
[2004/07/12]
■
その1「PPPoEって何だろう?」
[2004/07/05]
その25「公開鍵暗号方式とは」
■
公開鍵暗号とは
前回
は、共通鍵暗号について説明しました。ここで、共通鍵暗号をインターネットで使う場合に問題になるのは「鍵の受け渡し」であるという点も、ご理解いただけたかと思います。これは、暗号の性質というよりも、暗号化と復号化に同じ「鍵」を使う場合には避けられない問題です。
この問題に解決案を出したのが、公開鍵暗号という方式です。名前の通り「鍵を公開する」、つまり誰でも鍵をアクセスできる状態に置いておくという方式により、鍵の受け渡しに関する問題がかなりクリアされることになりました。
普通に考えれば、「鍵を公開してしまったら、鍵の意味がないのでは」と思われるかもしれません。厳重な金庫の上に鍵と暗証番号を置いておくとか、クレジットカードの裏に暗証番号を貼っておくような方法を想像するのならば、確かに鍵の意味がないように思われるでしょう。そこで今回は、この点についてもう少し詳しく説明していきましょう。
■
2種類の鍵
一般に「鍵」は、開ける場合と閉める場合で同じものを使います。家の鍵しかり、金庫の鍵しかりです。従って、その家なり、金庫なりを使う人は、必ず鍵を持っていなければなりません。これが、不特定多数で鍵を共有できない最大の理由だったりもします。
ところが、不特定多数が鍵を持たずに利用できるものもあります。代表例は「郵便ポスト」です。郵便ポストでは、誰でも投函することができます。しかし、投函はできても取り出せるのは、ポストの鍵を持った郵便局の係員です。この例の場合、投函には鍵がいらないので、ちょっと適切な例ではないのですが、広義にはポストの投函口から手紙を投函するという行為が鍵をかける行為の一種と考えるとわかりやすいでしょう。
こうした仕組みをインターネット上で実現するのが、公開鍵暗号方式です。まず、公開鍵暗号の仕組みを簡単に説明すれば、図1のようになります。暗号の利用者は、あらかじめ「公開鍵」と「秘密鍵」という、2つの鍵を用意します。
郵便ポストの例で言えば、公開鍵とはポストの投函口、秘密鍵はポスト本体についてる扉の鍵のようなものです。実際に暗号を使う場合、公開鍵を使って暗号化を行ないますが、その公開鍵を使って復号化することはできません。復号化するには秘密鍵が必要になります。その逆もまた真なりで、秘密鍵を使って暗号化したデータは公開鍵でしか復号化できません。
図1:公開鍵暗号での暗号化/復号化
この仕組みの素晴らしい点は、公開鍵を文字通り公開してしまっても、実害がないことです。悪意を持った利用者が公開鍵を入手したところで、暗号化メッセージを解読することはできません。せいぜいが、ゴミメッセージを暗号化して送りつけることができる程度でしょう。
公開鍵を改竄して再配布、というのはもう少しシビアな問題ですが、これは運用面でカバーできる範囲ですし、改竄された公開鍵で暗号化されたデータは誰にも読めなくなるだけなので、暗号が破られる危険性はなくなります。
ではこれをどうやって使うかという話になります。図2は、AさんとBさんが公開鍵暗号を使って通信する、つまりこの図の場合ではAさんからBさんへメッセージを送る例です。まず、お互いに2種類の鍵を用意した上で(1)、相互の公開鍵を送り合います。次にAさんはBさんに送るメッセージを用意して(2)、Bさんの公開鍵を使ってメッセージを暗号化し(3)、それをBさんに送ります(4)。
Bさんはこれを受け取ったら(5)、自分の秘密鍵を使ってこれを復号化し(6)、元のメッセージを受け取るという仕組みです。逆に、Bさんからメッセージを送る場合は、Aさんの公開鍵を使って暗号化すれば済むわけで、非常に便利なことがわかります。
図2:AさんからBさんへの通信の流れ
■
実際の公開鍵暗号
この公開鍵暗号は、共通鍵暗号の欠点を補うものとして幅広く利用されています。「それでは、共通鍵暗号は要らないじゃないか」というようにならないのは、公開鍵暗号にもそれなりに欠点があるからです。
公開鍵暗号の仕組みが1976年に発表されて以来、さまざまな方式のアルゴリズムが開発されてきていますが、全体的に共通するのは「効率が悪い」ということです。アルゴリズムによって細かな数値は変わってきますが、例えば56bitのDESと同等の強度(=破られにくさ)を持つ公開鍵暗号を作る場合、鍵の長さは384bitが必要になるとされます。
前回紹介した通り、すでに56bit DESでは強度が十分にないということでDESを3回施す3DES(トリプルDES)という方式が一般的になっている現在では、これと同等の強度を持たせようとすると公開鍵の鍵長は2,000ビットを超えてしまいます。
暗号化/復号化の処理は、鍵の長さが長いほど手間がかかるわけで、複雑な通信をすべて公開鍵暗号で行なうのは非効率なわけです。
第22回
でSSLを取り上げましたが、実際の
通信手順
を見ると最初だけは公開鍵暗号を使っていますが、その後は共通鍵暗号に切り替えています。これは、公開鍵暗号で全部通信するとあまりに効率が悪いからであり、公開鍵暗号の利用には共通鍵を送るまでにとどめているわけです。
とはいえ、複雑な通信が発生しないケースでは、公開鍵暗号は十分実用的です。例えば、メールを暗号化するPGPや、電子証明書(PKI)といった用途には、公開鍵暗号が全面的に利用されています。このあたりについては、次回以降でもう少し掘り下げて見ましょう。
2005/02/07 11:01
槻ノ木 隆
国内某メーカーのネットワーク関係「エンジニア」から「元エンジニア」に限りなく近いところに流れてきてしまった。ここ2年ほどは、企画とか教育、営業に近いことばかりやっており、まもなく肩書きは「退役エンジニア」になると思われる。(イラスト:Mikebow)
Broadband Watch ホームページ
Copyright (c) 2005 Impress Corporation, an Impress Group company. All rights reserved.