第9章

ネットワークセキュリティ


revised on 09/04/24


1.ネットワークセキュリティとは

2.暗号

3. 「e-Japan戦略」と「電子政府」


1. ネットワークセキュリティとは

1.1 はじめに

 2000年正月,霞ヶ関の名だたる官庁のWWWサーバーが次からつぎとクラッカーにアタックされたというニュースは,各方面に大きな衝撃を与えました.犯人はパスワードを盗んで侵入していますが,手口から見るとサーバー管理者のルート権限で侵入したのではないかと思われます.もしそうなら,ルートのパスワードが割れた瞬間に一網打尽にやられてしまいます.しかも設置者自身が外部の管理業者に任せっぱなしで自らは管理しないか,管理能力が無い場合などには事態は深刻です.
 安土桃山時代の大盗賊石川五右衛門の辞世の歌石川や浜の真砂(まさご)は尽きるとも世に盗人の種は尽きまじ」程ではないが,ネットワーク社会にも悪の種が無数に存在します.インターネットが,その黎明期のように善意のボランティアによる構築の時代を終えて,2億人が参加するごく日常的なインフラストラクチャとなった現在,ネットワークセキュリティは必須の事柄です.
 ここでは,ネットワークセキュリティについて入門的なお話を致しましょう.「明日は我が身」,決してこれが他人事だなどと思わないで下さい.また,この事件は,有名なサイトで起こったことで自分たちのような無名のネットワークは関係が無い,などと達観?してはいませんか? クラッカーにとって有名・無名は関係ありません.入り易いネットワークから侵入し,そこであなたに「なりすまし」て,他のサイトを攻撃するための前線基地とします.また,管理のずさんなサイトをいくつもクラッキングしておいて,これらのサイトを次々と飛び移りながら最終的にターゲットサイトをクラックするという場合に利用します.こうすると,どういう経路から入ってきたかをログ記録をたどることで捜索しても,ログの記録の無いサイトやすでに記録が更新されて破棄されていたりして足跡が消えてしまい,発見されずにすみます.このように一度クラッカーに踏み台を許してしまいますと,あなた又はあなたの組織は,ネットワーク社会から追放されてしまいます.インターネットで,こういう管理のずさんなサイトがあると,賢明な管理者はそういうサイトのIPアドレスを記録して,そこから来るパケットを受け付けないようにゲートウェイにパケットフィルタを設定する手段を講じるかもしれません.そうなるともはやネットワーク社会から排除されてしまいます.
 今まで,電話やファクシミリなど電気通信分野のサービスでこのような不正は無かったのに,一体これは何ゆえだと疑問を持たれる方も多いことでしょう.電話やファクシミリは通信事業者の固有のサービスでした.だから電話網であれば,電話のサービスだけが業者から提供され,ここに勝手にユーザが新しいサービスを作り出すというようなことは許されないし,またできなかったのです.つまりすべて業者が作り上げた体系に従って通信がなされ,ユーザは電話という音声通信を使って様々な会話をする自由だけが保障されていたのです.現在ではダイアルアップ接続のように電話網にコンピュータの信号を伝送するサービスも許されてはいますが,これとても基本的には通信事業者がこれを制御し,回線を保守しているのです.
 これに対してインターネットは,たしかに第一種通信事業者の回線を使ってなされている通信なのですが,通信事業者は契約している距離区間に限定してコンピュータデータを契約の品質で伝送する(物理層とデータリンク層の提供)だけであって,その伝送経路の制御(ネットワーク層)やパケットの到着順序・速度制御(トランスポート層),その上でなされるアプリケーションサービス(OSI参照プロトコルの上位3層)には一切関与しません.したがってインターネットの加入者は,インターネットサービスプロバイダと呼ばれる第一種または第二種通信事業者を介して加入していようとも原則的に自律した存在です.しかもインターネットにはそれを全体として統括する中心が存在しない,原理的に水平な構造のネットワークです.このような情報ネットワークは過去には全く存在しなかったものです.この自由さが,革新的な技術を育み,日々の進歩を促している反面,クラッカーの「技術?」をも育んでしまいます.
 中心性のないインターネットに参加しているということは,「自律・分散・協調」を理念とする運命共同体に参加しているということです.それゆえ,自己の自律ネットワークに関して責任ある管理体制を構築することは,自分だけでなく世界中の人々と共生するためのネットワーク市民としての義務なのです.

1.2 ネットワークセキュリティ問題とは何か

パスワードに関する不正

 クラッカーによる不正アクセスの最たるものはパスワード盗聴です.パスワードは,利用者がネットワークシステムに入るときのいわばパスポートです.だから,これが盗まれると大変,正当なユーザが有している権利の全てが奪い取られることになります.わけてもシステム管理者のパスワードが奪われますと,この管理者の権限の及ぶイントラネットワーク内の全ての仕組みや情報がアタックされることになります.
 ネットワークに入る(これをログインと言います)場合のパスワードの仕組みを簡単に説明しておきましょう.ネットワーク利用者のパスワードは,システム管理者が管理しているパスワードファイルに保管されています.利用申請が受理された時にシステム管理者は暫定的なパスワードを発行します.これはあくまでも暫定的なものですから,最初にログインしたときに利用者は必ず違うパスワードに変更すること.そうしないと少なくとも管理者にはユーザのパスワードが使えることになります.その場合,説明書にある目一杯の字数を使うようにしましょう.
 さて,こうして設定されたパスワードは,人間には分からないように一方向性ハッシュ関数という変換式を使って一定の字数の,意味不明の文字列に変換されます.暗号に似ていますが,暗号のように元の平文に復号することができないのがこの関数の特徴です.だからこれを読み出しても何も分かりません.つまり,変換されたパスワードをログインパスワードとして入力しても,それはハッシュ関数で変換されていたのですからログインはできません.つまりパスワードファイルを盗み出して,それをプリンタで打ち出して見ても何も情報は得られないのです.
 それなら,これで万事OKかというとさにあらず,蛇の道はヘビで,クラッカーたちは特別の道具を持っています.手当たり次第にパスワードを入れて,一方向性ハッシュ関数をつかって変換し,それが盗んだパスワードと同じになるかどうかを調べるのです.もちろん手入力などという面倒なことはしません.予め辞書を作っておいてそれを自動的に入力して調べるのです.
 この場合,あなたのパスワードが,たとえば「Taro」や「hanako」「19400127」などというような単純なアルファベットの羅列(こういうのを弱いパスワードと言います)だと,これはまず必ず辞書にあるはずですから,あっという間に見破られます.文字や数字のみの羅列ではどうしても意味が生じ,そのために辞書に掲載されてしまいます.つまりパスワードには,「h!a1n#ak9o」などのように文字や数字に混ぜて記号をはさみますと,意味が破壊されて「強いパスワード」になります.
 しかし,それでもクラッカーにはもっと奥の手があります.キーボードにあるコードの順列を総当りで確かめるやり方です.この方法では,パスワードを割り出すために組み合わせの数が無茶苦茶増えて解読に時間がかかりますが,それでもコンピュータの性能がどんどんよくなりますから,絶対安全とはいえません.この対策としては字数をできるだけ多く使うことです.管理者から指示された最大数の字数のパスワードを使うのがよいというのはこのためです.
 自分にも分からないようなパスワードを設定したはいいが忘れてしまいそうで不安だというので,紙に書いてディスプレイに貼り付けている人がいますが,あれはもう処置なしです.「盗人に追銭」の愚行であることを肝に銘じておきましょう.パスワードのタイプインすら他人には見せないように心がけたいものです.
 山梨大学では,4,500人のユーザの中にいくら注意しても,「Yamadataro」とか「19750127」などという自分の名前や誕生日とおぼしき数値をパスワードにしているものが跡を絶ちません.そこで,管理者が定期的にパスワードファイルにアクセスして,クラッカーが持っているのと同じレベルの辞書を使ってチェックし,これに引っかかったものはすべてその場で無効にしています.そして当人が反省するまで再発行しないようにしています.
 また,パスワードはどんな理由で強要されても他人に教えてはいけません.セキュリティ会社では,「システム更新に必要だからあなたのパスワードを教えてください」というような偽電話をかけて,それに素直に応えて正直にパスワードを教えてきたらそのユーザのアカウントを剥奪するというような荒っぽいチェックをしているところがあります.お金を出して管理を依頼して,アカウントを剥奪されてはたまらないと言いたいでしょうが,これはお金を出していればこそ当然のことなのです.パスワードだけは,親兄弟はもちろん恋人でも夫婦でも教え合ってはいけません.
 パスワードについてもう一言.これは少なくとも3ヶ月に一回は更新しましょう.クラッカーがせっかく盗み出したパスワードでしたが,変更されてしまうと使えなくなるからです.そのやりかたは,TELNETでログインして,プロンプトに促されて,passwdと入力すればサーバーは新しいパスワードの入力を求めてきます.新しいパスワードを入力してエンターキーを押して入力します.再度確認の指示が来ますから再度今記入したのと同じものをキーインすればこれで更新完了です.

Eメールに関する不正

 電子メールは現代ビジネスではもはやなくてはならない必須メディアに成長しました.それゆえに,電子メールに関するトラブルが多発しています.
 電子メールで多発している不正は「なりすまし」です.単純なものは,差出人自身のメールアカウントやメールアドレスを故意に書き換えて,誰だか判らないようにして送るというものです.これは郵便などにも見られるケースです.ただし,この手の単純なものは簡単に調べられますので怪しいメールだなと思ったらチェックしましょう.メールを開いて,そのプロパーティを調べるのです.受信メールを開いておいて,そのメニューバーの「ファイル」→「プロパーティ」の順でクリックすると,そのメールの発信サイト,そこからどういうメールサーバーをバケツリレーしてあなたの手元に届いたかのメールの履歴情報が表示されます.これは電子メールがインターネットのSMTPというプロトコルに準拠しているためです.
 しかし,プロのクラッカーならこんな単純な「なりすまし」は致しません.上述のようにしてパスワードを盗んでおいて,それを使ってネットワークに侵入し,その被害者に完璧になりすましてメールを発送します.これだとインターネットプロトコル上は合法ですからプロパーティでは見抜けません.この種の悪事から自己防衛する唯一の方法は,署名を暗号化することです.暗号については次の章でお話しましょう.
 なりすましではないが,押し売りや意味不明のアンケートなどあまり愉快でないメールが近頃よく来ます.これをSPAM(スパム)と言います.こういう迷惑メールも困ったものですが,違法ではないだけに対策に困ります.こういうものについてはメールを受理しないように設定することができます.迷惑メールが来たら,すぐにメールソフトの設定でこのメールアドレスのメールは受理しないように設定しましょう.
 こうしても,大量のメールを一箇所に送りつけてメールを扱うメールサーバーの機能を不能にしてしまうような悪質なものがあります.こういうのをメール爆弾などといいますが,いまのところこの種のものに対するよい対策はありません.公権力を使って犯人を逮捕する以外には根本的な解決方法は無いようです.
 善意の人を騙してメールを次々と送らせるチェーンメールというのがあります.郵便では幸福の手紙などというのがこれに当ります.「この手紙を読んだら何人かの人に同じことを伝えてください.そうしないとあなたに不幸が訪れます」などと言って,何通も手紙を出させる.これがいつの間にか世界中に広まる.騙した者は,ただ面白がって楽しむという愉快犯です.電子メールでは,「某月某日に新型のウィルスが流されるので友達に注意するよう知らせてください」などと書いて送りつける.善意の人は,これは大変だというので,多くの友人達に知らせる.これがねずみ算式に増えて,ネットワーク内がこの怪しげなメールで占有される.犯人はそれを見て楽しむというわけです.この種のメールがきたら絶対に転送などしないで即座に破棄しましょう.
 
また,メールにワームと呼ばれる不正ソフトを添付して,それを開けるとWarm(虫)が這い出して端末に悪さをするものがあります.2000年2月25日,PretyPark.exeというファイルが添付されているあるホテルからの電子メールを受け取った人が山梨大学にいました.このMIMEを展開したところパソコンはフリーズしてしまいました.翌日改めてPCを立ち上げたところ,この「虫」が蠢き始め,つぎつぎとアドレス帖から宛先を引き出して,ついに200通の電子メールを自動的に発送してしまいました.学内は一大汚染地になって大騒ぎになりました.

パケット略取

 皆さんが自宅からダイアルアップでインターネットにログインして,電子メールを送信したり受信したりする場合を考えてみましょう.まず,電話やCATV回線を通ってインターネットサービスプロバイダのダイアルアップルータに接続され,これでインターネットに入ります.電子メールを発信しますと,あなたのパソコンはPOP3というプロトコルによってプロバイダのメールサーバーに一旦メール本文やメールID番号,発信者・受信者のアドレスなどプロトコルが要求するデータを送りつけます.メールサーバーは,常時メールの存在を確認するデーモンと呼ばれる機能が動作していて,受信したメールの宛先アドレスから,DNSというシステムによって着信地のサーバーのIPアドレスを探し出し,そこへ向けてメールを送り出します.
 着信先の組織が大きい場合には,宛先のメールサーバーに到着する前にまず入り口のメールサーバーに一旦格納されたメールは,バケツリレーをしながら宛先のローカルネットのメールサーバーに転送されます.最終的に,受信者がパソコンであればPOPによってメールサーバーのスプールに保管されている自分宛メールを引き出しに行って受理します.
 この一連の流れの中に悪意の管理者がいますと,メールサーバーに保管されたメールを横取りすることができます.これがパケット略取です.
 このメールの中に重要なデータや情報が入っていますと,具合の悪い事態が起きるかもしれません.クレジットカードデータなどを送信してこれが騙し取られたというような報道が跡を絶ちません.
 
暗号の普及が急がれますが,国際間で,また国内でも官民間で思惑が錯綜してなかなか解決が得られていない現状にあります.

セキュリティホールを利用した不正

 インターネットで使われるプロトコルは有名なTCP/IPですが,これはデータパケットの伝送と授受を規定しています.その上にインターネットサービスと呼ばれるアプリケーションプロトコルが置かれています.私たちがインターネットを利用するのは専らこちらです.上述のEメールのSMTPはメール転送に関するアプリケーションプロトコルです.
 ホームページをやり取りするプロトコルはHTTPと名づけられています.その他ファイルの転送にはFTP,遠隔のコンピュータを利用するにはTELNET,インターネットニュースの転送にはNNTP,ファイルサーバーの利用にはNFS等々,インターネットには多数のアプリケーションプロトコルがあります.
 インターネットでは,これらアプリケーションプロトコルを具体化して実行するためのアプリケーションソフトウェアがサーバー等に格納されてサービスを実行しているのです.たとえば,EメールのSMTPやPOPを実行するアプリケーションソフトウェアとして多くのサイトでSENDMAILやIMAPというソフトウェアが使われています.インターネットニュースにはINNというアプリケーションソフトウェアが広く使われています.WWWの機能を拡張して利用者に使いやすいサービスを提供するので有名なCGI-BIN( Common Gateway Interface)などもこのジャンルのアプリケーションソフトウェアです.
 こういうソフトウェアには,しばしばソフトウェアの欠陥があります.この欠陥のうちネットワークからサーバーへの侵入口となるようなもののことをセキュリティホールと言います.セキュリティホールは文字通りセキュリティの抜け穴で,この蟻の一穴を通ってクラッカーは侵入します.
 セキュリティホールを塞ぐことを「パッチを当てる」といいます.文字通り抜け穴を塞ぐツギハギのことです.この種のホールが見つかった場合には,その情報が世界中に流されます.そして世界では,これがCERT/CC(Computer Emergency Response Team/Coordination Center)に集められます.これは米国にありますが,日本でもJPCERT/CC(JPはJapanの略号です)という機関があって危険情報を流しています.同時にパッチの在り処も公表しています.にもかかわらず,これを無視したり知らないでいたりすると,この情報は悪意のクラッカーも受け取りますから,対応を怠っているとクラッカーの跋扈するところとなります.クラッカーは,セキュリティホール情報からそのバージョン情報を調べ,インターネットでそのバージョンを使っているサイトを調べてアタックを仕掛けてきます.
 サーバーを設置するときには必ず最新のソフトウェアをインストールするようにしましょう.雑誌の付録についているCDなどで古いバージョンのソフトを使いますと,すでに有名なセキュリティホールがあったりして,格好の餌食になることがありますので,必ずCERTの情報から安全なバージョンであるか否かを確かめることが大切です.
 朝には安全だといわれていたものが夕方には危険ソフトに登録されたなどという例は枚挙にいとまがありません.ネットワーク管理者は一日に一度JPCERTの情報を見ておくように致しましょう.そのURLは,
http://www.jpcert.or.jp です.また,CERTには,UNIXサーバ上で動作するセキュリティ管理用の便利なツールが用意されています.無料で提供されていますから http://info.cert.org/pub/tools からダウンロードして使うことをお勧めします.
 なお,この種のセキュリティホールのアタックは,利用頻度の少ない不活性なサーバーに多く見られます.管理が手薄で,惰性設置されているものが,しばしば大規模なLAN内にはあります.大学の研究室などがそうで,張り切ってローカルネットを構築したはいいが,何時の間にやら関心が薄れて殆ど管理も更新もしないというような場合です.このようなシステムでは,動作の不調が管理者にもユーザにも知られないまま,クラッカーの跳梁を許してしまいます.
 また,使われないサービスのためのアプリケーションソフトは削除しておきましょう.いらざるトラブルのもとになります.

1.3 おわりに

 サイバー社会で生きるには,悪も可能ですが,善を主体的に選択して行動すること,これが情報倫理の基本です.しかし,残念ながらこの社会にもクラッカーのような悪がはびこっています.それゆえ,サイバー社会で生きる現代人にとって,ネット犯罪から自らを防衛できるネットワークリテラシーが必須です.特に,この国の人々は,これまで犯罪発生率が比較的低かったこともあってセキュリティに対する考え方が極端に甘いと言われています.インターネットには国境も自然の障壁大海原も無い以上,攻撃される機会は絶え間なく存在します.
 役所や会社や学校だけでなく,家庭からもインターネットに常時接続する時代がすぐそこにきています.こうなると,私たちはもはや単なるインターネットユーザではなく,システム管理者でもなくてはなりません.

 

2.暗号

BS00048A.gif (1605 バイト)

2.1 はじめに

 インターネットの普及に伴って情報のセキュリティが重要な問題となってきました.ネットワークで生ずる危険には,つぎのようなものがあります.

盗聴

改竄(かいざん)

なりすまし

盗聴

 伝送中,第三者によってネットワークの何処かでデータが盗まれること.かりに盗まれても,当事者にはほとんど判らないことが特徴ですから深刻です.

改竄

 伝送中にデータが何者かによって書き換えられてしまうこと.デジタルデータの性格から,筆跡などは残りませんから,受信者には,受信したデータが改竄されたデータか正しいデータか全く分からないのが特徴です.

なりすまし

 他人のネットワークIDやパスワードを何らかの方法で入手して,そのユーザになりすましてネットワークに侵入し,データの削除・改竄やデータの盗聴を行ったり,他人になりすまして情報を送受信したりする行為です.こういう不正を防止するためには「暗号化」と「認証」システムが必要です.
 ここでは,暗号について,特に今後利用が増加するであろうと思われる「公開鍵暗号方式」と呼ばれる近代的な暗号システムについて主として説明します.

2.2 暗号アルゴリズム

 暗号とは,元の情報(=平文<ひらぶん>と読む)を特定の法則(=暗号鍵)によって意味不明の「暗号文」とし,それを受信者に向かって送ることです.受信者は,受け取った暗号文を「暗号鍵」によって復元し,意味のある情報(=平分)に直します.これを暗号の「復号化」といいます.つまり,暗号とは,鍵を持っている人には容易に解読できるが,これを持っていない人には復号化できない手法のことです.
 平文を暗号化するにはさまざまな手法があります.映画『2001年宇宙の旅』に出てくる人工知能コンピュータ「HAL」は,アルファベットを1文字ずつずらすと「IBM」となって,あるコンピュータメーカーの社名になります.この場合,「IBM」が平文,「HAL」が暗号文です.ここでは,文字をずらすことで暗号化しているので,こういうやり方を「シーザー暗号」といいますが,これが「暗号化アルゴリズム」,そしてこの場合1文字ずらした「1」が「暗号鍵」に相当します.こんな単純な方法では,アルファベットなら最大26回試行すれば解読できてしまいますから,いまどき暗号としては使いものにはなりません.
 これに対して,平文を一定文字数で等分に分割し,分割された一かたまりについて,乱数を引いて換字数を一つ一つ決定することによって暗号化する方法があります.たとえば,「KUREOPATORA」を3文字ずつ「KUREOPATORA」のように分割して,「2,5,3」を暗号鍵として暗号化すると,「MZUGTSCYRTF」となります.こういうやり方を「単文字換字法」といいます.この場合には,仮に3文字ずつが一組だということが分かっていても,一文字一文字総当たりで調べるとすれば,アルファベット26文字を3組の組み合わせとして調べますから,シーザー暗号より一層強固な暗号アルゴリズムだといえます.しかし,現在ではコンピュータがありますから総当りでやればそう難しいことではありません.これをもっと強固にしたものが,第二次世界大戦当時には使われました.上の例でいえば,3文字のそれぞれの組に対して異なる換字数の組み合わせを取るのです.こうすると解読者は作業が一段と多くなります.こういうアルゴリズムのことを「多表式暗号化法」といいます.
  上のシーザー暗号から多表式暗号までのやり方を「共通鍵暗号」といいます.暗号化も復号化も同じ鍵で行うからに他なりません.
 このような暗号アルゴリズムは古典的なもので,あまりスマートなやり方ではありません.この共通鍵である乱数表が敵の手に渡ったらもうおしまいです.盗まれないまでも,何度も使っていると,暗号を使ってなされた行為の結果から逆算して判読されてしまいます.戦時中日本軍が使っていた紫暗号やドイツ軍が使用していたエニグマ暗号などは,ほとんど米軍によって解読されていたそうです.嘘か本当か私は真偽の程は知りませんが,真珠湾攻撃もその計画が暴露されていたと言われています.つまり,この方法の欠点は,鍵を持ち運びすることが難しく,そのために頻繁に鍵を交換できないことにあります.
 いま,ネットワーク時代.インターネットでやり取りしている情報が誰かによって盗聴されているかもしれません.もし,あなたのメールが誰かによってこっそり読まれていたとしたらどうでしょう.特に金銭やプライバシーにかかわるものだとしたら大変です.
 そこで暗号化をすることにしますが,共通鍵を使うとすれば情報のやり取りをする相手のすべての人に鍵を渡さなくてはなりません.この鍵の運搬方法が難しいのです.それでもうまい方法がありますのでそれを最初に紹介しましょう.

2.3 アルゴリズム公開型暗号方式

 安全に鍵を送る方法が実はあります.下の図を見ましょう.
@ Bobは暗号鍵を頑丈な金属製の容器に入れて扉を閉じ,扉に頑丈な鍵をかけてAlice宛に送ります.虎視眈々と狙っているEveに途中で奪われてもEveは鍵を持っていないのでふたを開けられる心配はありません.
A Aliceはこれをたしかに受け取りますが,残念ながらAliceも鍵を持っていませんので,中身を受け取ることはできません.
B そこでAliceは,容器の扉に頑丈な自分の鍵をかけてもう一度Bob宛に送り返します.
C これを受け取ったBobは,自分の鍵をはずします.Aliceの鍵は開けられませんから,この状態で再度配送します.
D Aliceはこれを受け取りますが,今度は自分がかけた鍵しかついていませんから,扉を開けて中の暗号鍵を取り出すことができます.


 図 9.2.1 安全な鍵の搬送 

 
 しかし,この方法を実際の暗号使用の現場に適用するのには無理があります.戦争のような手段を選ばない場面では,「頑丈な容器」など原理として存在しないからです.また,暗号鍵は実際には乱数表のような数値や暗号文のようなテキストであり,暗号鍵はそれ自身を暗号化しているからです.
 つまり,上述の方法を暗号鍵の運搬に使うとすれば,Bobは平文を自分の鍵で暗号化し,それをAliceに渡し,Aliceは彼女の暗号鍵でその暗号を再度暗号化して,Bobに返送し,Bobは自分の鍵を使ってBobがかけた暗号を解除するのですが,これができません.Aliceが上から暗号化してしまっているからです.シーザー暗号のような単純な暗号では問題は無いのですが,暗号文がさらに別の鍵で暗号化されるとその暗号文を最初の鍵で復号しても元にはもどらないのです.つまり,「掛けた順とは逆の順序で鍵をはずす」,これが共通鍵暗号の鉄則なのです.
 つまり,この方法は使いものにはなりません.それでも,解決方法があります.
@ BobとAliceはあらかじめ,次の数学的な式を使うことを約束しておきます.このことはEveに知られてもかまいません.

Y (mod P)  (ただし,Y<P)

 この「mod(モジュラーと読む)」という計算については後に説明しますが,Windowsなどのパソコンにはかならず付加されている関数「電卓」ではこの計算が容易にできますからやってみましょう.
A さて,この公式を認めておいて,BobとAliceは暗号世界では安全とはいえない電話でも手紙でもよい,二人の間でつかう「Y」,「P」を決めます.たとえば,Y=7,P=11のように.間違いなくEveに傍受されていることでしょうが...

7 (mod11) 

B ここで,Bobは「独自に」xの値を決めます.これは誰にも口外しないBobだけの秘密鍵です.たとえば,x=3のように.同じようにAliceも「独自に」x=6のように決めます.こうしてそれぞれに上式の数値計算をします.すなわち,Bobは, 73(mod 11)=2.またAliceも, 76(mod 11)=4 となります.

C BobはAliceに電話をかけて2という結果を伝えます.AliceもBobに電話をかけて4という結果を教えます.
D これらの数値をつかって,両者は再度つぎのように計算します.BobはAliceから教えられた4を使って, 43(mod 11)=9 を得ます.またAliceも同様にBobから教えてもらった2を使って, 26(mod 11)=9 を得ます.この共通の数値「9」こそが二人の間の暗号鍵です.

 この方法は実にスマートです.1976年,米国のマーティン・ヘルマン,ホイットフィールド・ディフィーらによって発明されました.鍵の配送のアルゴリズムを公開しながら,それでいて誰にも知られずに鍵の配送ができるからです.同じ年1976年11月23日,アメリカ政府はDES( Data Encryption Standard )という「アルゴリズム公開型暗号」を発表しました.これも共通鍵暗号ですから,鍵の配送の問題は深刻ですが,デフィーらの配送アルゴリズムを使えば安全な暗号体系が実用化されたことになります.

 しかし,不特定多数の人とやり取りする電子メールなどでは,メール送受信の前にいちいち共通鍵を決めるなどは面倒で事実上不可能です.そこで共通鍵を使わずに済ます方法が望まれます.そのために今もっとも注目を集めているのが「公開鍵暗号方式」です.
 公開鍵暗号とは,たとえてみれば,こうです.南京錠を開ける鍵を私は一つだけ持っています.もちろんこれは秘密の鍵です.そして南京錠の方は,同じものを駅や空港の待合室,郵便局の窓口やコンビニのカウンターなどところかまわず世界中にばらまいておきます.南京錠のかけ方を知らない人などいませんから,私に手紙を出す人はこの鍵で暗号化します.ひとたび鍵がかけられてしまうと,開ける鍵は私しか持っていませんから誰にも開けられません.送られてきた暗号文は私の鍵で復号化できます.公開鍵の原理とはこういうものです.これについて以下で見ていきましょう.


海賊キッドの宝探し

2.4 公開鍵暗号

 公開鍵暗号方式というのは,自分の暗号鍵を世界中に公表してしまうのです.鍵を公開したら誰にでも開けられてしまうじゃないかと思うでしょう.ところが大丈夫なのです.公開鍵とは別に奥の手の秘密鍵がもう一つあって,復号化はこれが無ければ不可能です.
 いま,私は暗号鍵を公開しているとします.私に情報を送る人には,この私の公開鍵を使って情報を暗号化してもらいます.@公開鍵では,暗号化した人自身にも復号化はできません.そんなうまいものがあるのかと疑う人がいると思います.無理も無いことですがあるのです.種明かしは後でします.いまは,そういううまい鍵があるということだけ信じましょう.もちろん暗号化鍵と一定の関係があるのですが,この関係が見つけられないところに暗号の意味があるのです.
 さて,これを受け取った私は,私だけが持っているA秘密鍵で復号化できますこれも種明かしは後でしますが,こういうすごいものがあるのです.
 ただし,後述の公開鍵暗号方式には,もう一つの優れた機能があります.個人のB秘密鍵で暗号化した暗号文は,その人の公開鍵で復号化できるのです.この機能は暗号の役割は果たしませんが,実はこれも,後述するように公開鍵暗号方式の優れた特長です.
 このように,公開鍵暗号方式という暗号化アルゴリズムは,二つの鍵を使うことで公開性と秘密性という全く正反対の要求に応えるのです.いってみれば,公開鍵で鍵をかけたトランクの鍵,右に廻すとロックできるのですが,左に廻そうとするとピンが刺さって開けられない.しかし私が持っている秘密鍵はこのピンを倒して左に廻せるというわけです.
 これを使ってはたして,盗聴・改竄・なりすましが防止できるのでしょうか?盗聴や改竄については,上の説明が本当ならできっこありませんから,説明の必要はありませんね.しかし,なりすましはどうでしょう? これは,暗号鍵が公開してありますから誰にでもできます.

なりすまし対策

 公開鍵暗号方式でもっとも弱点は[なりすまし]です.なりすましには二種類あります.私に情報を送ってきた人が誰かに「なりすます」場合と,私が誰かに「なりすましている」場合です.
 こういう場合には,公開鍵を権威有る公証役場(認証機関と言います)のようなところに預けておくことにすると一挙に解決します.すべてをこの役場の権威に委ねるのです.
 まず,私に暗号文を送る人は必ず公証役場に行って私の公開鍵を確認し,それを使って暗号化してもらいます.これで私の鍵の信憑性は間違いありません.もちろんこの一連のやり取りには暗号を使ってインターネットなどで行います.
 一方,差出人は,私の確認済みの公開鍵で暗号化した本文と,併せて,差出人自身の秘密鍵で暗号化した公開鍵を添付します.私は,暗号文を読む前にこの差出人の公開鍵と称する鍵で暗号化されている差出人公開鍵を取り出します.これは差出人の秘密鍵で暗号化したのですから問題はないのですが,念のためこの鍵の預けられている公証役場に問い合わせ,両者が一致していることを確認します.これで差出人のなりすましは「完全に?」防止できます.
 疑いだすときりは無いもので,公証役場に問い合わせるのにネットワークを使うと途中で盗聴や改竄をされてしまうかもしれません.したがって,これら一連の問い合わせにも公開鍵を使って暗号化してやり取りをします.すなわち,公証役場の公開鍵を使って暗号化した暗号文で問い合わせをするのです.公証役場に,役場が認めた公開鍵で問い合わせてきたのですからなりすましはできっこないと判断できます.そして,それぞれの問い合わせ人の公開鍵は(それぞれのまたは一箇所の)役場で保管しているのですから確実に確認できて,それらをそれぞれに送ってあげればよいのです.
 公証役場がなりすましたらどうなるか?これはもうお手上げです.こういう事態が起きたときには情報化社会は崩壊です.そこまで疑いを拡大しなくても良い社会を作ること,これが私たちの役目です.
 このように,少し手続きが面倒なようですが,どうせコンピュータとネットワーク上でやることですから,一連の手続きをカスタマイズしておけば自動的にやってくれるますから,そう煩雑ともいえないでしょう.
 これは実にスマートでしかもインターネット時代にうまく適用できそうです.こんなうまい話が本当にできるのか以下に説明します.

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

 暗号化アルゴリズムとは,一言で言えば「行きはよいよい帰りは怖い」式の,すなわち暗号化は簡単だが,復号化は大変難しい,というもののことです.「大変難しい」のではなく「絶対にできない」と言いたいところですが,「絶対にできない」では正当な受信者にも解読できなくなりますから,これは駄目です.受信者に解読できるのですから,原理として他人にも解読できるのであって,それゆえ復号鍵を持たないものには「大変難しい」ということで我慢するしかないのです.「大変」では心もとないという人には,いかなる手段を使っても暗号文の内容が効力を持っている期間中には復号化できない,ということで我慢することにしましょう.暗号文の内容が100年間有効で,この間情報を秘匿したいのであれば,いかなる手段でも100年以上かけないと解読できないようになっているというわけです.具体的には,100年間にわたって世界最高速のコンピュータを使いつづけてもなお解読できない,ということとします.
 それでは,「行きはよいよい帰りは怖い」というものとは何でしょうか? 数学では,こういうものがいくつかあります.掛け算と割り算を比較すると,筆算では掛け算より割り算の方が回答を出すのに時間がかかります.ある数値の二乗は掛け算ですが,その平方根を求めるのはこれが3桁以上になるとちょっと難物です.しかし,現在では電卓が普及してこれらは簡単にやってのけます.これは,答を出すアルゴリズムがあって,それを電卓の中に入れてあるからに他なりません.微分は力ずくでやればやれますが,積分はできるものとできないものがあります.しかし,近頃は記号処理ソフトが発達して,たとえばMathematicaを使うと難解な積分も難なくやってくれたりしますので,これも暗号アルゴリズムとしては不具合です.
 51221という数値が131と391の積であるというのはなかなか分からないのに,131と391の積51221を求めるのはそう難しいことではありません.これは,素因数分解というのですが,数学嫌いの出発が,因数分解にあるのは今も昔も変わりません.事ほど左様,(素)因数分解は厄介なのですが,これはコンピュータにとっても同様に厄介なのです.現在まで,素因数分解のうまいアルゴリズムが発見されていないからです.そして暗号化はこういう一方向には簡単に計算ができるが,その逆方向にはうまいアルゴリズムが無くて答が簡単に求まらず,したがって総当りまたはそれと同程度の野蛮さでやるしか方法が無いというような関係の一方向関数が利用されるのです.そういうものとして,素因数分解や後述する離散対数などがあります.
 素因数分解がどのくらい手間隙のかかるかを実際に示した好い例があります.1977年8月『サイエンティフィックアメリカン』という雑誌に,次の数の素因数分解は解けないだろうという記事が,後述のRSA暗号の紹介と共に掲載されました.この素因数を見つけたら百ドルをくれるというインセンティブをつけて.

114,381,625,757,888,867,669,235,779,976,146,612,010,218,296,
721,242,362,532,561,842,935,706,935,245,733,897,830,597,123,563,
958,705,058,989,075,147,599,290,026,879,543,541

 この挑戦に応じた600人のボランティアの若い人たちがいました.ただし,彼らがそれぞれに大学などのコンピュータを使って分担して総当りで答えを探し,

3,409,529,510,847,650,949,147,849,619,903,898,133,417,764,638,493,387,843,990,820,577

32,769,132,993,266,709,549,961,988,190,834,461,413,177,642,967,992,942,539,798,288,533

という二つの正解を報告してきたのは,1994年4月26日,すでに17年という年月が経っていました.
 これは129桁の数字ですが,この調子でやるとして,もしコンピュータが進歩しないで計算速度が変わらないとすれば一桁増やして130桁になると170年かかります.更に131桁では1,700年,132桁では17,000年,136桁では1億7千万年,140桁では1兆7千億年かかる勘定です.もちろんこの間にコンピュータ技術も飛躍的に進歩しているでしょう.ちなみに,インテルの創業者ゴードン=ムーアによれば,チップの性能は18ヶ月で2倍,つまり3年で4倍に向上するという「ムーアの法則」なるものがあります.コンピュータだって負けてはいません.しかし,それでも300桁ぐらいの因数分解はやはり人類誕生以来の年数より長い時間を要すると思われます.これほどまでに,素因数分解は厄介です.

2.5 暗号アルゴリズムの数学的基礎

数の世界

  今更なんだなどと言わないで,数の世界について復習しておきましょう.
 私たちが生まれて最初にお目にかかるのは1,2,3・・というような数の世界です.キャラメルが1個,お母さんのオッパイが2つとか,猫の赤ちゃんが3匹生まれたとか.このように一つ,二つ,三つと数える数の世界を自然数と言います.自然数では足し算ができます.2+3=5,5+6=11などです.掛け算もできます.2*3=6,5*6=30などというように.引き算もできます.6-5=1などです.割り算もできます.6÷2=3,27÷3=9のように.
 しかし,5-6=?,2-2=?などは,自然数しか無い世界では計算できません.それでも,こういう場合に0や-1,-2などと,0や負の数を導入すれば計算は可能になります.5-6=-1,2-2=0です.ここまで拡張した数の世界を整数と言いました.自然数が6,7歳までの子供の数の世界だとすれば,整数は10歳以上の子供たちの数の世界です.
 整数まで拡張しても,割り算で2÷4=?,6÷5=?などのように計算できない場合もあります.これを解決するには有理数と呼ばれる数の世界まで拡張する必要があります.2÷4=2/4,6÷5=6/5などのように整数と整数の比で表される数値を有理数と言います.何が有理なのか分かりませんが,有理数は英語で「rational number」と言いますが,この「rational」を有理と訳したのが間違いで,「ratio」から比が取れるというような意味だったのではないでしょうか?.ちなみに,有理数に対する無理数は「irrational」とは言わずに「imaginary number」と言いますから.
 さて,ここまでの数の世界を理解できるようになるには小学校も高学年にならないと無理です.
 2*2=22=4,3*3=32=9などの知識から,4の平方根だとか,9のルートが2や3になることは容易に分かります.それなら5の平方根はいくらかと尋ねられると困ってしまいます.仕方ないのでフジサンロクオウムナクなどと呪文を唱えて記憶しました.あれは何歳頃だったでしょうか? こういうところまで拡張された数の世界を無理数といいました.これも何が無理なのかよく分からないのですが?? 有理数や無理数に加えて,π=3.1415926535897932・・だとか,自然対数の底e=2.71828・・とかいうような数まで含めてこれを実数と言います.
 これで全てかというと未だあります.二乗して負になる数なども持っていないと不都合な場合があります.こういう数まで扱うようになるともはや本格的な数学の世界に入ったような気分になります.こういう数の世界を虚数,実数と虚数を一緒くたにして複素数というのでした.
 さて,有理数までに話をとどめておくことにすれば,加減乗除の四則演算はとりあえずこの世界で完結しています.
 

法演算

 法演算という計算法があります.

a (mod n)

と表記します.意味は,「aをnで割ったときの余りはいくつか?」ということです.たとえば,1(mod7)は1を7で割ると0で余りが1となるので,1(mod7)=1です.同様に,2(mod7)=2,6(mod7)=6,7(mod7)=0です.7を超えると,8(mod7)=1,9(mod7)=2,13(mod7)=6,
14(mod7)=0となって循環していることが分かります.つまり,mod7の世界では,2=9,6=13であり,8より6の方が大きいというように通常の数の世界に慣れ親しんでいる者にとってはちょっと異なった世界が現出します.しかし,こういう世界は私たちにとっては馴染みの世界でもあるのです.法7なら1週間,法365なら1年間,56億7000万年なら仏教世界の1周期です.
 
加法
 0を日曜日,1を月曜日,2を火曜日,・・として順次,土曜日を6とするように定めれば,2+10(mod7)=5は,火曜日から10日後は何曜日か,答えは5=金曜日ということです.法演算の世界で足し算をしても,決められた法以上の数にはなりません.その意味で,通常の数の世界の足し算とは意味が異なります.
 
減法
 同じように引き算も可能です.5-2(mod7)=3は,金曜日の二日前は水曜日,2-10(mod7)=6は火曜日から10日前は土曜日,ということになります.このように小さな数から大きな数を引いても負の数にはならないのがこの演算の特徴です.
 
乗法
 2*3(mod7)=6  8*9(mod7)=1*2=2 
のようにこれも可能であることが分かります.2*3より8*9の方が小さくなるという通常の演算ではあり得ないことが起こっています.このように,法演算の世界では大小性というものは放棄されてしまいます
 
除法
 掛け算が可能ですから,割り算も可能です.上の掛け算の例から,
 6/3(mod7)=2  6/2(mod7)=3  2/8(mod7)=9 2/9(mod7)=8
となります.2/9のように実数の世界では小数点で表されるべき数値が,法演算の世界では整数の範囲内に収まっています.すなわち,法演算の世界では,実数が持っていた連続性が失われています
 
逆数
 最後の二つの例は常識的でないように思えますが法演算の世界ではこれが常識になります.法7の世界では,2*4=1 3*5=1 4*2=1 5*3=1 6*6=1ですから,2の逆数は4,3の逆数は5,以下4は2,5は3,6は6というように不思議な感じもしますが,逆数も取ることができます.「逆数がある」ということは,ある変換をしたときにその逆変換が可能であることを意味しますから,暗号化にはむいています.暗号化には復号化が必要だからに他なりません.
 逆数が取れるのは,常にというわけではありません.法を10とするような世界では,どの数も逆数があるというわけにはいきません.1*1(mod10)=1,  3*7(mod10)=1,  7*3(mod10)=1,  9*9(mod10)=1 となって1,3,7,9の4つの数字では逆数が定義できますが,2,4,5,6,8には逆数が存在しません.なぜでしょうか? 10は2*5の二つの数値の積,つまり合成数です.1から10までの数字の中で,2,4,5,6,8は2または5と関係する数値です.すなわち,10を素因数分解してその素因数2,5のどちらかで割り切れる数値は逆数が無いということです.これについてはExcelを使って確認しておきましょう.
 mod10の世界で,逆数をもてる数値が「4個」あるという事実は後で重要な意味を持ってくることに注意しましょう.

法演算の一般的公式については,

「剰余計算の復習」

を見て確認しておきましょう.

暗号化と法演算の親和性

 法演算が暗号化に適応的なことは以上の話からよく分かります.すなわち,
  @有限な数の世界にとどまること.これは人類が持っている文字コードの数が有限であることと整合している.
  A法演算の世界には負数という概念が無いが,文字コードも同様であること.
  B大小性が失われることは予測不能性として暗号化には適合する.
  C逆数が存在することは,暗号化の逆過程としての復号化が可能であることを意味する.

一方向関数の例 

 つぎの関数,

        (eq.2.5.1)

を考えます.これは指数関数ですから,法をpとするところが少し面倒くさいだけで何の変哲もありません.

表2.3.1 法演算の例
a aの6 mod 2 mod 3 mod 4 mod 5 mod 6 mod 7
1 1 1 1 1 1 1 1
2 64 0 1 0 4 4 1
3 729 1 0 1 4 3 1
4 4096 0 1 0 1 4 1
5 15625 1 1 1 0 1 1
6 46656 0 0 0 1 0 1
7 117649 1 1 1 4 1 0
8 262144 0 1 0 4 4 1
9 531441 1 0 1 1 3 1
10 1000000 0 1 0 0 4 1

  例として(eq.2.5.1)についてaを1から1ずつ変化させ,その6乗についてmod2〜7について計算をしてみた結果が上の表です.表を見ますと,あまり意味のありそうなものは見当たりませんが,唯一mod7の時にすべて1になるのが分かります.
 関数を計算して,答が1になるということは,その逆(関)数が存在することを意味します.すなわち,y=a6という指数関数では,aが1から6の有限な数値に対して,mod7の時にのみ逆関数が求められることを意味しています.指数関数の逆関数は対数関数ですので,こういう対数関数の剰余計算のことを離散対数関数ということがあります.離散というのは,その数値が不規則になっているという意味がこめられています.そして,この離散対数を求める数学的アルゴリズムは存在せず,これは一方向関数です
 ところで,上の表2.3.1で,p=7は素数です.そこで,次のFermatの小定理が成り立ちます. 

Fermatの定理

1<m<pを満たす任意の整数mと任意の素数pに対して,次の式が成立する.

  (eq.2.5.2)

これをフェルマー(Fermat)の(小)定理といいます.
 証明は,省略して実際の計算値の一例を素数p=7として下の表2.3.2に示しました.結果を見ると,m<pのすべてのmについて全部1となっています.
 

表2.3.2 フェルマーの小定理

mの6乗 計算結果
1 1 1
2 64 1
3 729 1
4 4096 1
5 15625 1
6 46656 1
 これに対して,素数でないような場合にはどうなるでしょうか.たとえばmod 10で見てみましょう.10=5*2で,5と2は素数ですが,10は合成数となっています.このような場合には,L=(5-1)*(2-1)=4となる4に意味があります.これをEuler数と言います.すなわち,N=pqが二つの素数pとqの積であるとき,Euler数Lは,

L=(p-1)(q-1)        (eq.2.5.3)

です.

 二つの素数pとqの積の合成数N=p*qを法とする法演算では,mが,NまたはL=(p-1)(q-1)と素な関係にあるときには,Fermatの小定理に類似した次の式が成立します.

     (eq.2.5.4)

 つぎに説明する代表的公開鍵暗号であるRSA暗号では,この式が重要な役割を果たします.これについてp=5,q=2で法10の例をExcelで調べてみましょう.

 以上で,公開鍵暗号の一つRSA暗号のアルゴリズムに関する数学的準備はすべて完了しました.以下では,その具体的な手法について説明します.

2.6 RSA暗号アルゴリズム

 失敗例

 Fermatの小定理を使えば公開鍵暗号方式が作れそうだというので次のようなアルゴリズムを作ってみました.平文をmとして,公開鍵として,(p,q)を指定します.ただし,m<pに制限します.そして,次の演算を暗号化方法として公表します.

このcが暗号文です.ただし,ここにq<pと仮定します.これを対数計算しようとしても上述のように不可能です.だから,一見暗号のように見えます.
 さて,秘密鍵をdとし,暗号文cに対して法pの世界でd乗してみる.すなわち,Fermatの小定理を上手に使いながら演算すると,

となります.したがって,nを整数として,

n(p-1)+1=qd   (eq.2.6.0)

を満たす整数dを秘密鍵とすればよいと考えたくなります.

 しかし,これではダメです.公開鍵暗号方式というのはアルゴリズムも公開していますから,上の考え方からして誰にでも秘密鍵dが計算できてしまいます.離散対数という一方向関数を使ったものの,逆方向からではなく順方向から解けてしまうのであって,これでは暗号にはなりません.

RSA暗号の鍵

 上の失敗はどこから来たかといえば,Fermatの小定理を直接使用したためです.そこでこの欠点を補うために計算アルゴリズムが存在しない素因数分解を導入します.そのために,(eq.2.6.0)のn(p-1)のところを書き換えてp-1とq-1の最小公倍数Lとし、nを-cに置き換えます.すなわち,RSA暗号の小道具として次を用意します.

@ 二つの素数p,q               (eq.2.6.1)
A N=p*q                    (eq.2.6.2)
B p−1,q−1の最小公倍数L        (eq.2.6.3)
C Lと素な数e                  (eq.2.6.4)
D L*c+d*e=1 となるd.           (eq.2.6.5)

 ここで公開する鍵は,

(e,N)・・・・・・・・・・・・・公開鍵        (eq.2.6.6)

であり,秘密鍵は,

d  ・・・・・・・・・・・・・・・・・・・・・・秘密鍵   (eq.2.6.7)

です.

 このようにRSA暗号では,公開鍵だけでなくアルゴリズムも公知です.それなのにこれが暗号として使用に耐えるのは,Nがpとqの積ですが,Nが分かったからといってpとqは有限の時間の中では求められないためです.また,離散対数のアルゴリズムが無いために、dをあてずっぽうに想像して,総当りで暗号文を読むとしても,やはり有限時間では読めないためです.

暗号化

 いま,平文Mがあるとします.Mはたとえば文章ですが,それを一定のルール(JISやASCIIのエンコードルール)でデジタル化し,かつそれを適当な桁数であつめて表現した「数値」です.
 この数値Mを送りたい相手の公開鍵(e,N)で次式のように計算します.ただし,M<Nとなるように制限します.その理由は後で分かります.

      (eq.2.6.8)

 
 このCが暗号文です.この暗号文Cは言うまでも無く,

    (eq.2.6.9)

 

のように逆関数を求めればよいわけです.しかし,これは上述のように(殆ど)不可能です.したがって,平文Mを書いた送信者本人でも,原稿を平文の形で保存しない限り二度と原文を見ることはできなくなります.

 復号化

 暗号文Cを受信した受信者は,秘密鍵dと公開鍵の一部Nを使ってこれを平文に復号します.そのために次の操作を致します.

      (eq.2.6.10)

復号化の証明

 

 これで間違いなく復号化ができることを証明しましょう.eは(eq.2.6.4)にあるようにLまたはNと素な関係にありますから,暗号文MもLまたはNと素な関係にあります.ゆえに,(eq.2.6.10)に(eq.2.6.8)を代入しますと,

      

 ただし,ここで,Lは(p-1)と(q-1)の最小公倍数ですので,sまたはtを整数とすると,

 
なる関係がありますから,

 (eq.2.6.11)

となります.よって,M<Nであれば,復号化が可能であることが分かります.なお,上の計算の途中ではフェルマーの定理(eq.2.4.1)を使っています.

署名

 前述のように差出人は自分が間違いなく自分であるという証明を宛先に対して送る義務があります.そのような折には,署名をしますが,これを暗号文の中に入れたのでは信用されません.誰かが,差出人になりすましていると思われるかもしれないからです.
 そのような場合には,差出人自身の署名を差出人の秘密鍵で暗号化します.いま,その署名をMとしますと,

        (eq.2.6.12)

が,差出人の秘密鍵で暗号化した暗号署名です.
 受取人は認証機関で確認してある差出人の公開鍵eによってこれを復号化します.すなわち,

       (eq.2.6.13)

 ただし,この計算の途中は(eq.2.6.11)の過程と同じなので省略しました.ともかく結果はちゃんと復号化できることです.このように差出人が自分の秘密鍵で暗号化したものは誰でもその差出人の公開鍵で平文に戻せるのです.実に優れものだということが分かります.そして,本人の秘密鍵で暗号化した署名なのですからこれはもう疑う余地はありません.

2.7例題

 それではここで一つ例題をやってみましょう.

@ 二つの素数p=71,q=97                (eq.2.7.1)
A N=p*q=71×97=6887                (eq.2.7.2)
B p−1,q−1の最小公倍数L=3360          (eq.2.7.3)
C Lと素な数e=13                     (eq.2.7.4)
D L*c+d*e=1 となるd=517              (eq.2.7.5)

 ただし(eq.2.6.5)でc=-2とした.ゆえに,公開鍵,秘密鍵はそれぞれつぎのように決まります.

公開鍵  e=13,N=6887   (eq.2.7.6)
        秘密鍵 d=517
                       (eq.2.7.7)    

 いま,平文を十進数で表した文章を,M=1687としましょう.これを暗号化するには(eq.2.6.8)を使って,

            
=
168713 (mod 6887)
=57      (eq.2.7.8)

つまり,C=57が暗号文です.
 これを受け取った受信者は自分の秘密鍵で開けます.それには (eq.2.6.10)を使います.

                                                     
=57517 (mod 6887)
=1687      (eq.2.7.9)

たしかに暗号文57は秘密鍵517によって平文1687になりました.上記の数値計算は,Windowsの関数電卓を使えば簡単にできますから自分で計算してみましょう.
 この例題では,鍵として4桁程度のものを使っていますから,これでは簡単にpとqを割り出せてしまいます.しかし,p,qとも100桁ほどにしてみたらどうでしょうか.十進数で200桁の数値の素因数分解は最新鋭のスーパーコンピュータを使っても数億年はかかります.したがって,暗号文が効力をもっている期間ではまず問題なさそうです.十分秘密鍵を奪われない限り,暗号を解読されることはなさそうです.


3. 「e-Japan戦略」と「電子政府」