(57)【要約】【課題】情報を受信する受信装置の公開鍵の真正性を容易に検証でき、公開鍵を用いた安全な通信ができる通信システム、送信装置、受信装置及び通信方法を提供する。【解決手段】端末装置２０が、対象公開鍵と検証用データとを演算した鍵データ演算結果を、秘密情報により暗号化した暗号結果をサーバ１０に送信する。サーバ１０は、端末装置２０から鍵データ演算結果の暗号結果を受信し、秘密情報により復号する。サーバ１０は、その復号結果から検証用データをサーバ１０の公開鍵を用いて演算し、得られた検証用データ演算結果を端末装置２０に送信する。端末装置２０は、サーバ１０が鍵データ演算結果の暗号結果から取得した検証用データ演算結果を受信する。端末装置２０は、検証用データと検証用データ演算結果とを比較することにより、対象公開鍵がサーバ１０の公開鍵であるか否かを判断する。【選択図】図１
2005217665.tif 000002
【特許請求の範囲】
【請求項１】
検証対象の対象公開鍵と検証用データとを演算する鍵データ演算手段と、
該鍵データ演算手段による鍵データ演算結果を、送信装置及び受信装置が共用する秘密情報により暗号化する暗号化手段と、
該暗号化手段による暗号結果を前記受信装置に送信する暗号結果送信手段と、
前記受信装置が前記暗号結果から取得した検証用データ演算結果を受信する演算結果受信手段と、
前記検証用データと前記検証用データ演算結果とを比較し、前記対象公開鍵が前記受信装置の公開鍵であるか否かを判断する判断手段とを備える送信装置と、
前記暗号結果を受信する暗号結果受信手段と、
前記暗号結果を前記秘密情報により復号する復号手段と、
該復号手段による復号結果から前記検証用データを、前記公開鍵を用いて演算する検証用データ演算手段と、
該検証用データ演算手段による前記検証用データ演算結果を前記送信装置に送信する演算結果送信手段とを備える受信装置と
を備えることを特徴とする通信システム。
【請求項２】
前記鍵データ演算手段は、前記検証用データとして乱数データを用い、前記対象公開鍵と前記乱数データとを排他的論理和演算することを特徴とする請求項１に記載の通信システム。
【請求項３】
前記送信装置は、前記秘密情報の基礎データを記憶する基礎データ記憶手段と、
前記基礎データを不可逆に変換して前記秘密情報を生成する生成手段とを備え、
前記受信装置は、前記基礎データを不可逆に変換した秘密情報を記憶する秘密情報記憶手段を備えることを特徴とする請求項１又は２に記載の通信システム。
【請求項４】
検証対象の対象公開鍵と検証用データとを演算する鍵データ演算手段と、
該鍵データ演算手段による鍵データ演算結果を、送信装置及び受信装置が共用する秘密情報により暗号化する暗号化手段と、
該暗号化手段による暗号結果を前記受信装置に送信する暗号結果送信手段と、
前記受信装置が前記暗号結果から取得した検証用データ演算結果を受信する演算結果受信手段と、
前記検証用データと前記検証用データ演算結果とを比較し、前記対象公開鍵が前記受信装置の公開鍵であるか否かを判断する判断手段と
を備えることを特徴とする送信装置。
【請求項５】
送信装置が検証対象の対象公開鍵と検証用データとを演算した鍵データ演算結果を前記送信装置及び受信装置が共用する秘密情報により暗号化した暗号結果を受信する暗号結果受信手段と、
前記暗号結果を前記秘密情報により復号する復号手段と、
該復号手段による復号結果から検証用データを、前記受信装置の公開鍵を用いて演算する検証用データ演算手段と、
該検証用データ演算手段による検証用データ演算結果を前記送信装置に送信する演算結果送信手段と
を備えることを特徴とする受信装置。
【請求項６】
送信装置が、検証対象の対象公開鍵と検証用データとを演算した鍵データ演算結果を、前記送信装置及び受信装置が共用する秘密情報により暗号化し、該暗号結果を前記受信装置に送信し、
前記受信装置が、受信した前記暗号結果を前記秘密情報により復号し、該復号結果から前記検証用データを前記受信装置の公開鍵を用いて演算した検証用データ演算結果を前記送信装置に送信し、
前記送信装置が、前記検証用データと受信した前記検証用データ演算結果とを比較し、前記対象公開鍵が前記受信装置の公開鍵であるか否かを判断することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、送信装置、受信装置及び通信方法に関する。
【背景技術】
【０００２】
従来、不特定多数のユーザが通信を行うインターネットのようなネットワークを安全に利用する技術として、１９７６年に提案された公開鍵暗号が用いられている。公開鍵暗号では、受信者が公開する公開鍵を用いて暗号化する。暗号結果は、公開鍵によっては復号できず、受信者の秘密鍵によってのみ正しく復号できる。このような公開鍵暗号により、暗号化及び復号に同じ鍵を用いる共通鍵暗号における鍵の安全な共有といった課題が解消される。又、公開鍵暗号を用いることにより、情報の作成者や改竄の有無を第三者が検証可能な電子署名を実現できる（例えば、非特許文献１）。
【０００３】
しかし、公開鍵暗号には、あるユーザの公開鍵がそのユーザの真正な公開鍵であるかをどのようにして検証するかという課題がある。公開鍵の真正性が検証できないと、ユーザは、例えば図７に示すような攻撃を受けてしまう。
【０００４】
サーバ４１０が、サーバ４１０の公開鍵（ＰＫａ）を端末装置４２０に対して送信する（Ｓ４０１）。このとき、通信サーバ４１０と端末装置４２０との間の通信経路に存在する攻撃端末４３０が、公開鍵（ＰＫａ）を盗聴して記憶する（Ｓ４０２）。更に、攻撃端末４３０は、サーバ４１０の公開鍵（ＰＫａ）を攻撃端末４３０の公開鍵（ＰＫｍ）に改竄して、端末装置４２０に送信する（Ｓ４０３）。端末装置４２０は、攻撃端末４３０の公開鍵（ＰＫｍ）を、サーバ４１０の公開鍵と誤認し、情報（Ｉ）を公開鍵（ＰＫｍ）により暗号化して、暗号結果ＥＰＫｍ（Ｉ）を得る（Ｓ４０４）。そして、端末装置４２０は、暗号結果ＥＰＫｍ（Ｉ）をサーバ４１０に対して送信する（Ｓ４０５）。
【０００５】
攻撃端末４３０は、暗号結果ＥＰＫｍ（Ｉ）を盗聴し、攻撃端末４３０の秘密鍵ＳＫｍにより復号する。これにより、攻撃端末４３０は、情報（Ｉ）を得る（Ｓ４０６）。更に、攻撃端末４３０は、情報（Ｉ）を記憶しておいたサーバ４１０の公開鍵ＰＫａにより暗号化し、暗号結果ＥＰＫａ（Ｉ）を得る（Ｓ４０７）。そして、攻撃端末４３０は、暗号結結果ＥＰＫａ（Ｉ）をサーバ４１０に送信する（Ｓ４０８）。サーバ４１０は、受信した暗号結果ＥＰＫａ（Ｉ）をサーバ４１０の秘密鍵ＳＫａにより復号し、情報（Ｉ）を得る（Ｓ４０９）。
【０００６】
このように攻撃端末４３０は、ステップ（Ｓ４０２）、（Ｓ４０３）、（Ｓ４０６）〜（Ｓ４０８）のような仲介活動を行うことにより、情報（Ｉ）を送受信する当事者であるサーバ４１０と端末装置４２０に気付かれることなく、情報（Ｉ）を盗聴し、その内容を知ることができる。このような攻撃は仲介者による攻撃（Man−in−the-Middle  Attack）と呼ばれる。
【０００７】
このような攻撃に対する対策として、なりすましや改竄のような攻撃が排除された安全な経路を介して公開鍵を配布しておくことにより、公開鍵の真正性を保証する方法がある。例えば、公開鍵をフロッピー（登録商標）ディスクのような記憶媒体に格納し、郵送により配布する方法、情報の改竄が困難な放送電波により公開鍵を送信する方法（例えば、特許文献１参照）等がある。これによれば、攻撃端末が暗号化された情報を盗聴したとしても、その情報を鍵が分からない状況で正しく復号するためには非現実的な処理時間が必要であることから、その内容を知ることを計算量的に困難とすることができる。
【０００８】
又、信頼できる第三者によって発行される改竄困難な公開鍵証明書と共に公開鍵を配布することにより、公開鍵の真正性を保証する方法がある。この方法は、公開鍵の所持者であるユーザに関する所属や名前等の情報と公開鍵とを合わせたデータに電子署名を施した公開鍵証明書により、公開鍵がそのユーザのものであることを保証するものである（例えば、非特許文献２）。尚、上記電子署名を行う組織を認証機関（Certification  Authority、以下「ＣＡ」という）、ＣＡを用いて公開鍵を安全に配布する仕組みを公開鍵基盤（Public  Key  Infrastructure）という。
【非特許文献１】「安全技術大全」、ソフトバンクパブリッシング、２００３年６月
【非特許文献２】「国際電気通信連合電気通信標準化部門  Ｘ．５０９勧告（INFORMATION TECHNOLOGY -OPEN SYSTEMS INTERCONNECTION- THE DIRECTORY:  AUTHENTICATION FRAMEWORK  ITU-T Recommendation X.509）、１９９７
【特許文献１】特開２００２−１５２１８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、安全な経路を介して公開鍵を配布する方法は、そのような経路が一般的ではないため、利便性に大きく欠ける。インターネットのような利便性の高いネットワークにおいて安全に情報を送受信するために、事前に不便な経路を使用して公開鍵の配布を受けなければならないのでは、全体としての使い勝手が悪くなってしまう。更に、放送電波は利用できるユーザが限られている。又、同一の公開鍵を使用し続けることは攻撃端末による解読の危険が増加するため、公開鍵は更新することが好ましい。しかし、常に上記安全な経路を使用できるとは限らず、しかも、その度に安全な経路を使わなければならないのでは利便性に欠ける。
【００１０】
公開鍵証明書を用いる方法は、公開鍵基盤の構築、運用を行う必要性があり、煩雑である。しかも、公開鍵証明書を検証するために電子署名を行ったＣＡの公開鍵が必要であるため、ＣＡの公開鍵の真正性を検証する必要がある。よって、結局、ユーザの公開鍵の真正性をいかに検証するかという問題が、ＣＡの公開鍵の真正性をいかに検証するかという問題に置換されたに過ぎず、根本的な解決には至っていない。
【００１１】
そこで、本発明は、情報を受信する受信装置の公開鍵の真正性を容易に検証でき、公開鍵を用いた安全な通信ができる通信システム、送信装置、受信装置及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明に係る通信システムは、送信装置と受信装置を備える。送信装置は、受信装置の公開鍵により暗号化した情報を受信装置に送信する。受信装置は、公開鍵を送信装置に送信し、送信装置からその公開鍵により暗号化された情報を受信する。
【００１３】
送信装置は、検証対象の対象公開鍵と検証用データとを演算する鍵データ演算手段と、鍵データ演算手段による鍵データ演算結果を、受信装置及び送信装置が共用する秘密情報により暗号化する暗号化手段と、暗号化手段による暗号結果を受信装置に送信する暗号結果送信手段と、受信装置が暗号結果から取得した検証用データ演算結果を受信する演算結果受信手段と、検証用データと検証用データ演算結果とを比較し、対象公開鍵が受信装置の公開鍵であるか否かを判断する判断手段とを備える。
【００１４】
受信装置は、送信装置が鍵データ演算結果を秘密情報により暗号化した暗号結果を受信する暗号結果受信手段と、暗号結果を秘密情報により復号する復号手段と、復号手段による復号結果から検証用データを、受信装置の公開鍵を用いて演算する検証用データ演算手段と、検証用データ演算手段による検証用データ演算結果を送信装置に送信する演算結果送信手段とを備える。秘密情報とは、送信装置及び受信装置が、鍵データ演算結果の暗号化及び復号に共通して使用する情報をいう。
【００１５】
このような通信システム、送信装置及び受信装置によれば、送信装置が、対象公開鍵と検証用データとを演算した鍵データ演算結果を、秘密情報により暗号化した暗号結果を受信装置に送信する。受信装置は、送信装置から暗号結果を受信し、秘密情報により復号する。受信装置は、その復号結果から検証用データを、受信装置自身の公開鍵を用いて演算し、得られた検証用データ演算結果を送信装置に送信する。送信装置は、受信装置が暗号結果から取得した検証用データ演算結果を受信する。そして、送信装置は、検証用データと検証用データ演算結果とを比較することにより、対象公開鍵が受信装置の公開鍵であるか否かを判断できる。
【００１６】
即ち、送信装置が受信装置の公開鍵であると認識している検証対象の対象公開鍵が、受信装置の公開鍵ではない場合（以下、受信装置の真正な公開鍵を「真正公開鍵」、真正公開鍵ではない公開鍵を「不正公開鍵」という）、送信装置が受信装置に送信する暗号結果は、不正公開鍵と検証用データとの鍵データ演算結果を暗号化したものになる。そのため、受信装置が、真正公開鍵で暗号結果を復号した復号結果から得られる検証用データ演算結果は、送信装置が用いた検証用データとは異なるものになる。よって、送信装置は、検証用データと検証用データ演算結果が一致する場合には、対象公開鍵は真正公開鍵であり、一致しない場合には、対象公開鍵は不正公開鍵であると判断できる。このように、通信システムでは、受信装置の公開鍵の真正性を容易に検証でき、公開鍵を用いて安全な通信ができる。
【００１７】
又、鍵データ演算手段は、検証用データとして乱数データを用い、公開鍵と乱数データとを排他的論理和演算して鍵データ演算結果を得ることが好ましい。これによれば、この鍵データ演算結果を秘密情報により暗号化した暗号結果の解読を非常に困難にできる。よって、通信システムではより安全に通信できる。
【００１８】
更に、送信装置は、秘密情報の基礎データを記憶する基礎データ記憶手段と、基礎データを不可逆に変換して秘密情報を生成する生成手段とを備え、受信装置は、基礎データを不可逆に変換した秘密情報を記憶する秘密情報記憶手段を備えることが好ましい。これによれば、受信装置が記憶する秘密情報が漏洩しても、秘密情報を基礎データに変換することができない。そのため、秘密情報の漏洩が、基礎データの漏洩には繋がらない。よって、秘密情報が漏洩しても、送信装置は、同じ基礎データを用いて新たな秘密情報を生成して使用できる。そして、受信装置が記憶する秘密情報だけを更新すればよい。そのため、通信システムでは、容易に安全な通信が継続できる。
【００１９】
本発明に係る通信方法は、送信装置が、検証対象の対象公開鍵と検証用データとを演算した鍵データ演算結果を、受信装置及び送信装置が共用する秘密情報により暗号化し、その暗号結果を受信装置に送信する。受信装置が、受信した暗号結果を秘密情報により復号し、その復号結果から検証用データを、受信装置自身の公開鍵を用いて演算した検証用データ演算結果を送信装置に送信する。そして、送信装置が、検証用データと受信した検証用データ演算結果とを比較し、対象公開鍵が受信装置の公開鍵であるか否かを判断することを特徴とする。
【発明の効果】
【００２０】
以上説明したように、本発明によれば、情報を受信する受信装置の公開鍵の真正性を容易に検証でき、公開鍵を用いた安全な通信ができる通信システム、送信装置、受信装置及び通信方法を提供することができる。
【発明を実施するための最良の形態】
【００２１】
［第１の実施の形態］
〔通信システム〕
図１に示すように、通信システム１は、サーバ１０と、端末装置２０と、ネットワーク３０とを備える。端末装置２０は、受信装置の公開鍵により暗号化した情報を受信装置に送信する送信装置である。サーバ１０は、公開鍵を送信装置に送信し、送信装置からその公開鍵により暗号化された情報を受信する受信装置である。よって、端末装置２０は、サーバ１０の公開鍵により情報を暗号化してサーバ１０に送信する。サーバ１０は、端末装置２０に公開鍵を送信し、端末装置２０が公開鍵により暗号化した情報を受信する。サーバ１０と端末装置２０は、ネットワーク３０を介して通信する。ネットワーク３０は、例えば、インターネットのような不特定多数のユーザが使用可能なネットワークを用いることができる。
【００２２】
端末装置２０は、通信インタフェース２１と、記憶部２２と、暗号化部２３と、演算部２４と、判断部２５とを備える。記憶部２２は、秘密情報を記憶する秘密情報記憶手段である。秘密情報は、端末装置２０及びサーバ１０が鍵データ演算結果の暗号化及び復号に共通して使用する情報である。秘密情報は、端末装置２０及びサーバ１０のみが知っている情報である。秘密情報は、例えば、受信装置のユーザ認証に用いる情報、又は、送信装置のユーザ認証に用いる情報の少なくとも１つを用いることができる。具体的には、秘密情報として、例えば、各端末装置２０、各サーバ１０、複数の端末装置２０からなるグループ、複数のサーバ１０からなるグループ等に割り当てられているパスワード、ユーザ名、ユーザＩＤ、グループ名、グループＩＤ等を用いることができる。例えば、サーバ１０が端末装置２０のユーザ毎に、サーバ１０にログインするために割り当てているパスワード、ユーザ名やユーザＩＤを用いることができる。
【００２３】
本実施形態では、秘密情報として、端末装置２０のユーザ毎に割り当てられているパスワードを用いる。記憶部２２は、端末装置２０のユーザのユーザ名「Ａ」とパスワード「ＰＷＤａ」を記憶する。
【００２４】
演算部２４は、検証対象の対象公開鍵と検証用データとを演算する鍵データ演算手段である。対象公開鍵は、送信装置が受信装置の公開鍵であると認識している鍵である。演算部２４は、通信インタフェース２１が受信した、サーバ１０の公開鍵であるとして送信されてきた鍵を、通信インタフェース２１から取得する。本実施形態では、このサーバ１０の公開鍵であるとして送信されてきた鍵が、端末装置２０がサーバ１０の公開鍵と認識している対象公開鍵となる。
【００２５】
演算部２４は、検証用データを生成する。検証用データは、受信装置の公開鍵の真正性を検証するためのデータである。演算部２４は、検証用データとして、任意のデータを用いることができるが、乱数データを用いることが好ましい。本実施形態では、演算部２４は、対象公開鍵とデータのサイズが同じ大きさの乱数データを生成する。尚、記憶部２２が検証用データの候補を記憶しておき、演算部２４は、検証用データを生成せずに、記憶部２２が記憶する候補の中から選択してもよい。
【００２６】
演算部２４は、対象公開鍵と検証用データとを演算する。演算部２４は、対象公開鍵と検証用データを用いた演算を行えばその内容は特に限定されないが、検証用データとして乱数データを用い、対象公開鍵と乱数データとを排他的論理和演算することが好ましい。演算部２４は、対象公開鍵と検証用データの演算結果である鍵データ演算結果を、暗号化部２３に入力する。更に、演算部２４は、対象公開鍵と、その検証用データとを対応付けて判断部２５に入力する。
【００２７】
暗号化部２３は、鍵データ演算手段による鍵データ演算結果を秘密情報により暗号化する暗号化手段である。暗号化部２３は、演算部２４から鍵データ演算結果を取得する。暗号化部２３は、記憶部２２から秘密情報を取得する。暗号化部２３は、秘密情報を鍵として鍵データ演算結果を共通鍵暗号方式により暗号化する。本実施形態では、暗号化部２３は、対象公開鍵と乱数データを排他的論理和演算した鍵データ演算結果を、端末装置２０のユーザのパスワード「ＰＷＤａ」により暗号化する。暗号化部２３は、記憶部２２からユーザ名「Ａ」も取得しておき、鍵データ演算結果の暗号結果をユーザ名「Ａ」に対応付けて通信インタフェース２１に入力する。又、暗号化部２３は、判断部２５の指示に従って、端末装置２０がサーバ１０に送信する情報を、サーバ１０の公開鍵を用いて暗号化する。暗号化部２３は、情報の暗号結果を通信インタフェース２１に入力する。
【００２８】
判断部２５は、検証用データと検証用データ演算結果とを比較し、対象公開鍵が受信装置の公開鍵であるか否かを判断する判断手段である。判断部２５は、演算部２４から、対象公開鍵とその検証用データとを取得する。判断部２５は、通信インタフェース２１から、通信インタフェース２１が受信した、サーバ１０が鍵データ演算結果の暗号結果から取得した検証用データ演算結果を取得する。判断部２５は、検証用データと検証用データ演算結果が一致する場合には、サーバ１０の公開鍵であるとして送信されてきた対象公開鍵は、サーバ１０の真正公開鍵であると判断する。一方、判断部２５は、検証用データと検証用データ演算結果が一致しない場合には、対象公開鍵は、サーバ１０の真正公開鍵ではなく、不正公開鍵であると判断する。
【００２９】
このとき、サーバ１０から送信される検証用データ演算結果は、一方向ハッシュ関数により演算されており、ハッシュ値となっている場合がある。そのため、判断部２５は、演算部２４から取得した検証用データを、サーバ１０と同じ一方向ハッシュ関数により演算し、ハッシュ値を求めておく。尚、用いる一方向ハッシュ関数は、予めサーバ１０と端末装置２０との間で設定しておくことができる。判断部２５は、検証用データのハッシュ値と、検証用データ演算結果のハッシュ値とを比較する。そして、判断部２５は、両者のハッシュ値が一致する場合には、対象公開鍵は真正公開鍵、両者のハッシュ値が一致しない場合には、対象公開鍵は不正公開鍵と判断する。
【００３０】
一方向ハッシュ関数とは、対象データから対象データ特有とみなすことができる短いデータであって、元の対象データに変換できないハッシュ値を生成可能な関数である。通常、ハッシュ値は百数ビット程度が一般的である。２つの対象データのハッシュ値が一致する場合には、その基礎となっている対象データも同一であることが非常に高い確率で保証される（例えば、非特許文献１参照）。そのため、判断部２５は、検証用データのハッシュ値と、検証用データ演算結果のハッシュ値を用いて、正しく判断を行うことができる。
【００３１】
判断部２５は、対象公開鍵を真正公開鍵と判断した場合には、対象公開鍵をサーバ１０の公開鍵として暗号化部２３に入力し、サーバ１０の公開鍵でサーバ１０に送信する情報を暗号化するよう暗号化部２３に指示する。一方、判断部２５は、対象公開鍵を不正公開鍵と判断した場合には、対象公開鍵を破棄する。更に、判断部２５は、通信インタフェース２１にサーバ１０との接続の切断を指示する。
【００３２】
通信インタフェース２１は、ネットワーク３０を介してサーバ１０と通信する。通信インタフェース２１は、サーバ１０の公開鍵であるとして送信されてきた鍵を受信し、対象公開鍵として演算部２４に入力する。通信インタフェース２１は、暗号化部２３から、ユーザ名「Ａ」に対応付けられた鍵データ演算結果の暗号結果を取得する。通信インタフェース２１は、取得した暗号結果をサーバ１０に送信する。このようにして、通信インタフェース２１は、暗号化手段による暗号結果を受信装置に送信する暗号結果送信手段として機能する。
【００３３】
更に、通信インタフェース２１は、サーバ１０から、サーバ１０が鍵データ演算結果の暗号結果から取得した検証用データ演算結果を受信し、判断部２５に入力する。このようにして、通信インタフェース２１は、受信装置が暗号結果から取得した検証用データ演算結果を受信する演算結果受信手段として機能する。又、通信インタフェース２１は、暗号化部２３から、端末装置２０がサーバ１０に送信する情報の暗号結果を取得する。通信インタフェース２１は、取得した情報の暗号結果をサーバ１０に送信する。
【００３４】
サーバ１０は、通信インタフェース１１と、鍵生成部１２と、鍵記憶部１３と、パスワードデータベース１４と、検索部１５と、復号部１６と、演算部１７とを備える。鍵生成部１２は、サーバ１０の公開鍵と秘密鍵を生成する。鍵生成部１２は、生成した公開鍵と秘密鍵を鍵記憶部１３に格納する。鍵記憶部１３は、サーバ１０の公開鍵と秘密鍵を記憶する。鍵生成部１２は、生成した公開鍵を通信インタフェース１１に入力する。
【００３５】
パスワードデータベース１４は、秘密情報を記憶する秘密情報記憶手段である。パスワードデータベース１４は、ユーザ名やユーザＩＤ、グループ名やグループＩＤ等に対応付けて、秘密情報を記憶する。本実施形態では、パスワードデータベース１４は、複数の端末装置２０のユーザのユーザ名「Ａ」、「Ｂ」、「Ｃ」に対応付けて、それぞれのユーザのパスワード「ＰＷＤａ」、「ＰＷＤｂ」、「ＰＷＤｃ」を記憶する。
【００３６】
検索部１５は、鍵データ演算結果の暗号結果を復号する秘密情報を取得する取得手段である。検索部１５は、通信インタフェース１１から、通信インタフェース１１が受信した、ユーザ名「Ａ」に対応付けられた鍵データ演算結果の暗号結果を取得する。検索部１５は、ユーザ名に基づいてパスワードデータベース１４を検索し、ユーザ名「Ａ」に対応するパスワード「ＰＷＤａ」を、復号に用いる秘密情報として取得する。検索部１５は、鍵データ演算結果の暗号結果と、取得した秘密情報、即ち、パスワード「ＰＷＤａ」とを対応付けて復号部１６に入力する。
【００３７】
復号部１６は、鍵データ演算結果の暗号結果を、秘密情報により復号する復号手段である。復号部１６は、検索部１５から、鍵データ演算結果の暗号結果と秘密情報を取得する。本実施形態では、復号部１６は、パスワード「ＰＷＤａ」により暗号結果を復号する。復号部１６は、鍵データ演算結果の暗号結果を復号した復号結果を、演算部１７に入力する。又、復号部１６は、通信インタフェース１１から、通信インタフェース１１が受信した端末装置２０からの情報の暗号結果を取得する。復号部１６は、鍵記憶部１３からサーバ１０の秘密鍵を取得する。復号部１６は、サーバ１０の公開鍵により暗号化された暗号結果を、サーバ１０の秘密鍵により復号し、端末装置２０からの情報を得る。
【００３８】
演算部１７は、復号手段による復号結果から検証用データを、受信装置自身の公開鍵を用いて演算する検証用データ演算手段である。演算部１７は、復号部１６から復号結果を取得する。演算部１７は、鍵記憶部１３からサーバ１０の公開鍵を取得する。演算部１７は、端末装置２０において行われた対象公開鍵と検証用データとの演算内容に基づいて、復号結果と公開鍵を演算し、復号結果から検証用データを求める。尚、演算内容は、予めサーバ１０と端末装置２０との間で設定しておくことができる。
【００３９】
本実施形態では、端末装置２０は、検証用データとして乱数データを用い、対象公開鍵と乱数データを排他的論理和演算する。そのため、演算部１７は、復号結果とサーバ１０の公開鍵とを排他的論理和演算し、検証用データを求める。演算部１７は、復号結果からサーバ１０の公開鍵を用いて演算した検証用データを、検証用データ演算結果として通信インタフェース１１に入力する。このとき、演算部１７は、検証用データ演算結果を一方向ハッシュ関数により演算することが好ましい。この場合、演算部１７は、検証用データ演算結果を一方向ハッシュ関数により演算して求めたハッシュ値を通信インタフェース１１に入力する。
【００４０】
このように、復号部１６が鍵データ演算結果の暗号結果を秘密情報により復号し、演算部１７が復号結果とサーバ１０の公開鍵を演算することにより、サーバ１０は、鍵データ演算結果の暗号結果から検証用データ演算結果を取得する。
【００４１】
通信インタフェース１１は、ネットワーク３０を介して端末装置２０と通信する。通信インタフェース１１は、鍵生成部１２からサーバ１０の公開鍵を取得し、端末装置２０にサーバ１０の公開鍵として送信する。通信インタフェース１１は、端末装置２０から、ユーザ名「Ａ」に対応付けられた鍵データ演算結果の暗号結果を受信する。通信インタフェース１１は、受信した暗号結果を検索部１５に入力する。このようにして、通信インタフェース１１は、暗号結果を受信する暗号結果受信手段として機能する。更に、通信インタフェース１１は、演算部１７から検証用データ演算結果を取得し、端末装置２０に送信する。このように、通信インタフェース１１は、検証用データ演算手段による検証用データ演算結果を送信装置に送信する演算結果送信手段として機能する。
【００４２】
〔通信方法〕
次に、通信システム１を用いた通信方法について図２を用いて説明する。図２では、秘密情報を「ＳＥＣ」、乱数データを「ＲＮＤ」、サーバ１０の公開鍵を「ＰＫｓ」、対象公開鍵を「ＰＫｔ」、秘密鍵を「ＳＫ」、端末装置２０がサーバ１０に送信する情報を「Ｉ」、鍵ＸによるデータＹの暗号化及びその暗号結果を「Ｅｘ（Ｙ）」、データＸとデータＹとの排他的論理演算及びその演算結果を「Ｘ  ＥＯＲ  Ｙ」、データＸの一方向ハッシュ関数による演算を「Ｈ（Ｘ）」、Ｈ（Ｘ）の演算結果であるデータＸのハッシュ値を、サーバ１０が求めたハッシュ値を「ＦＰｘ」、端末装置２０が求めたハッシュ値を「ＦＰｘ’」と表記する。
【００４３】
サーバ１０が、サーバ１０の公開鍵（ＰＫｓ）を生成し、端末装置２０に送信する（Ｓ１０１）。端末装置２０は、サーバ１０の公開鍵であるとして送信されてきた鍵を対象公開鍵（ＰＫｔ）とする。端末装置２０は、検証用データとして、対象公開鍵（ＰＫｔ）と同じ大きさの乱数データ（ＲＮＤ）を生成する（Ｓ１０２）。端末装置２０は、対象公開鍵（ＰＫｔ）と乱数データ（ＲＮＤ）を排他的論理和演算し、鍵データ演算結果（ＰＫｔ  ＥＯＲ  ＲＮＤ）を求める（Ｓ１０３）。端末装置２０は、秘密情報（ＳＥＣ）として端末装置２０のユーザのパスワード「ＰＷＤａ」を用い、秘密情報（ＳＥＣ）を鍵として、鍵データ演算結果（ＰＫｔ  ＥＯＲ  ＲＮＤ）を共通鍵暗号方式により暗号化「Ｅｓｅｃ（ＰＫｔ  ＥＯＲ  ＲＮＤ）」する（Ｓ１０４）。
【００４４】
端末装置２０は、鍵データ演算結果の暗号結果「Ｅｓｅｃ（ＰＫｔ  ＥＯＲ  ＲＮＤ）」を、端末装置２０のユーザ名「Ａ」に対応付けてサーバ１０に送信する（Ｓ１０５）。更に、端末装置２０は、検証用データである乱数データ（ＲＮＤ）を用いて一方向ハッシュ関数による演算「Ｈ（ＲＮＤ）」を行い、検証用データのハッシュ値ＦＰＲＮＤ’を求めておく（Ｓ１０６）。
【００４５】
サーバ１０は、受信したユーザ名「Ａ」に基づいてパスワードデータベース１４を検索し、ユーザ名「Ａ」に対応するパスワード「ＰＷＤａ」を、復号に用いる秘密情報（ＳＥＣ）として取得する（Ｓ１０７）。サーバ１０は、鍵データ演算結果の暗号結果「Ｅｓｅｃ（ＰＫｔ  ＥＯＲ  ＲＮＤ）」を、秘密情報（ＳＥＣ）であるパスワード「ＰＷＤａ」により復号し、鍵データ演算結果（ＰＫｔ  ＥＯＲ  ＲＮＤ）を求める（Ｓ１０８）。
【００４６】
サーバ１０は、復号結果である鍵データ演算結果（ＰＫｔ  ＥＯＲ  ＲＮＤ）と、サーバ１０の公開鍵（ＰＫｓ）とを排他的論理和演算「（ＰＫｔ  ＥＯＲ  ＲＮＤ）  ＥＯＲ  ＰＫｓ」し、検証用データである乱数データ（ＲＮＤ）を検証用データ演算結果として求める（Ｓ１０９）。サーバ１０は、求めた乱数データ（ＲＮＤ）を用いて一方向ハッシュ関数による演算「Ｈ（ＲＮＤ）」を行い、検証用データ演算結果のハッシュ値ＦＰＲＮＤを求める（Ｓ１１０）。サーバ１０は、検証用データ演算結果のハッシュ値ＦＰＲＮＤを、端末装置２０に送信する（Ｓ１１１）。
【００４７】
端末装置２０は、ステップ（Ｓ１０６）において求めた検証用データである乱数データ（ＲＮＤ）のハッシュ値ＦＰＲＮＤ’と、サーバ１０から受信した検証用データ演算結果である乱数（ＲＮＤ）のハッシュ値ＦＰＲＮＤとを比較する（Ｓ１１２）。ステップ（Ｓ１１２）において、端末装置２０は、ハッシュ値ＦＰＲＮＤ’とハッシュ値ＦＰＲＮＤが一致しない場合には、対象公開鍵（ＰＫｔ）はサーバ１０の公開鍵（ＰＫｓ）と同じではなく、不正公開鍵であると判断する。そして、端末装置２０は、サーバ１０との接続を切断する。
【００４８】
一方、ステップ（Ｓ１１２）において、端末装置２０は、ハッシュ値ＦＰＲＮＤ’とハッシュ値ＦＰＲＮＤが一致する場合には、対象公開鍵（ＰＫｔ）はサーバ１０の公開鍵（ＰＫｓ）と同じであり、真正公開鍵であると判断する。そして、端末装置２０は、サーバ１０の公開鍵（ＰＫｓ）であると判断された対象公開鍵（ＰＫｔ）を用いて、端末装置２０がサーバ１０に送信する情報（Ｉ）を暗号化ＥＰＫｔ（Ｉ）する（Ｓ１１４）。端末装置２０は、情報（Ｉ）の暗号結果ＥＰＫｔ（Ｉ）をサーバ１０に送信する（Ｓ１１５）。サーバ１０は、受信した暗号結果ＥＰＫｔ（Ｉ）をサーバ１０の秘密鍵（ＳＫ）により復号し、端末装置２０からの情報（Ｉ）を得る（Ｓ１１６）。
【００４９】
このような通信方法は、端末装置２０から入力されたパスワードとパスワードデータベース１４が記憶するパスワードとを比較し、正しいパスワードの入力により正規のユーザであることを認証するようなサーバに適用できる。具体的には、「暗号のすべて−ユビキタス社会の暗号技術」（電波新聞社、２００２年９月発行）等に記載されているチャレンジレスポンス型の認証を行うメールサーバと、そのクライアントである端末装置との間で、このような通信方法を用いることができる。他にも、サーバ１０として、例えば、複数の端末装置２０が使用する時間帯を分けて共用する時分割共有型サーバ、会員制のウェブサイトを提供するウェブサーバ等を用いることができる。
【００５０】
〔効果〕
このような通信システム１、端末装置２０、サーバ１０及び通信方法によれば、端末装置２０が、対象公開鍵と検証用データとを演算した鍵データ演算結果を、秘密情報により暗号化した暗号結果をサーバ１０に送信する。サーバ１０は、端末装置２０から鍵データ演算結果の暗号結果を受信し、秘密情報により復号する。サーバ１０は、その復号結果から検証用データをサーバ１０の公開鍵を用いて演算し、得られた検証用データ演算結果を端末装置２０に送信する。端末装置２０は、サーバ１０が鍵データ演算結果の暗号結果から取得した検証用データ演算結果を受信する。そして、端末装置２０は、検証用データと検証用データ演算結果とを比較することにより、対象公開鍵がサーバ１０の公開鍵であるか否かを判断できる。
【００５１】
例えば、図７に示したようにして、サーバ１０から端末装置２０に送信したサーバ１０の公開鍵が、攻撃端末により攻撃端末の公開鍵に改竄された場合、サーバ１０の公開鍵であるとして送信されてきた対象公開鍵は、サーバ１０の公開鍵とは異なる不正公開鍵となる。この場合、端末装置２０がサーバ１０に送信する鍵データ演算結果の暗号結果は、不正公開鍵と検証用データとの鍵データ演算結果を暗号化したものになる。そのため、サーバ１０が、真正公開鍵で鍵データ演算結果の暗号結果を復号した復号結果から得られる検証用データ演算結果は、端末装置２０が用いた検証用データとは異なるものになる。よって、端末装置２０は、対象公開鍵が、検証用データと検証用データ演算結果が一致する場合には真正公開鍵であり、一致しない場合には不正公開鍵であると判断できる。そのため、端末装置２０は、攻撃の事実を検出できる。
【００５２】
しかも、対象公開鍵と検証用データとの鍵データ演算結果は、攻撃端末が知らない秘密情報により暗号化されている。そのため、攻撃端末は、鍵データ演算結果の暗号結果を、端末装置２０とサーバ１０との間で盗聴しても復号できない。よって、攻撃端末は、復号結果に含まれる不正公開鍵を真正公開鍵に書き替えてサーバ１０に送信し、辻褄をあわせることにより攻撃を気付かれないようにすることもできない。
【００５３】
このように、通信システム１では、サーバ１０と端末装置２０が、真正公開鍵と秘密情報を用いない限り、正しい検証用データを取り出せない情報を交換することにより、配布されたサーバ１０の公開鍵の真正性、即ち、攻撃端末によって改竄されたものではなく、確かにサーバ１０の公開鍵であることを容易に検証できる。よって、通信システム１では、サーバ１０の公開鍵を安全に配布でき、サーバ１０の真正な公開鍵を用いて安全な通信ができる。
【００５４】
そのため、通信システム１は、非常に利便性が高いが、攻撃端末が存在し、なりすましや改竄、盗聴のような攻撃の危険性があるインターネットのようなネットワーク３０を用いたとしても、安全に通信ができる。しかも、電子商取引等の場面では、サーバ１０の利用を適切に管理すること等を目的として、サーバ１０が端末装置２０のユーザ毎に、サーバ１０にログインするためのユーザ名とパスワードを割り当て、認証を行うことが一般的に行われている。そのため、通信システム１は、一般的に用いられているパスワードを秘密情報に利用して、容易に実現できる。
【００５５】
加えて、端末装置２０の演算部２４は、検証用データとして乱数データを用い、対象公開鍵と乱数データとを排他的論理和演算して鍵データ演算結果を得る。そのため、鍵データ演算結果を秘密情報により暗号化した暗号結果の解読を非常に困難にできる。
【００５６】
例えば、秘密情報としてパスワードを用いた場合、パスワードが持つ乱雑性は十分とは言えない場合がある。その結果、攻撃端末が、端末装置２０のユーザがパスワードとして選択しそうな文字列をしらみつぶしに用いて鍵データ演算結果の暗号結果の解読を試みる辞書攻撃を行い、パスワードを探り当ててしまう可能性を完全には否定できない。
【００５７】
しかし、通信システム１では、対象公開鍵と乱数データとを排他的論理和演算して得た鍵データ演算結果を用いることにより、攻撃端末に、鍵データ演算結果の暗号結果の解読の手がかりを与えないようにできる。しかも、サーバ１０の演算部１７は、取得した検証用データ演算結果をそのままではなく、一方向ハッシュ関数により演算し、元の検証用データに変換できないハッシュ値の形にして端末装置２０に送信する。そのため、サーバ１０は、攻撃端末に解読の手がかりをより一層与えないようにできる。これらの結果、通信システム１では、鍵データ演算結果を秘密情報により暗号化した暗号結果の解読を非常に困難にできる。
【００５８】
［第２の実施の形態］
〔通信システム〕
図３に示すように、通信システム２０１は、サーバ２１０と、端末装置２２０と、ネットワーク３０とを備える。端末装置２２０は、通信インタフェース２１と、記憶部２２２と、暗号化部２２３と、演算部２４と、判断部２５と、秘密情報生成部２２６とを備える。サーバ２１０は、通信インタフェース１１と、鍵生成部１２と、鍵記憶部１３と、パスワードデータベース２１４と、秘密情報生成部２１５と、復号部２１６と、演算部１７とを備える。図３において、図１に示した通信システム１と実質的に同様の構成については、同一の符号を付して説明を省略する。
【００５９】
まず、端末装置２２０について説明する。記憶部２２２は、秘密情報の基礎データを記憶する基礎データ記憶手段である。基礎データは、秘密情報を生成する基礎となるデータで、基礎データを用いて秘密情報が生成される。基礎データは、端末装置２２０及びサーバ２１０のみが知っている情報である。基礎データは、例えば、受信装置のユーザ認証に用いる情報、又は、送信装置のユーザ認証に用いる情報の少なくとも１つを用いることができる。具体的には、基礎データとして、例えば、各端末装置２２０、各サーバ２１０、複数の端末装置２２０からなるグループ、複数のサーバ２１０からなるグループ等に割り当てられているパスワード、ユーザ名、ユーザＩＤ、グループ名、グループＩＤ等を用いることができる。例えば、サーバ２１０が端末装置２２０のユーザ毎に、サーバ２１０にログインするために割り当てているパスワード、ユーザ名やユーザＩＤを用いることができる。
【００６０】
本実施形態では、基礎データとして、端末装置２２０のユーザ毎に割り当てられているパスワードを用いる。記憶部２２２は、端末装置２２０のユーザのユーザ名「Ａ」とパスワード「ＰＷＤａ」を記憶する。
【００６１】
秘密情報生成部２２６は、基礎データを不可逆に変換して秘密情報を生成する生成手段である。秘密情報生成部２２６は、記憶部２２２から基礎データを取得する。秘密情報生成部２２６は、例えば、基礎データを一方向ハッシュ関数により演算して変換し、秘密情報として用いる変換データを生成する。秘密情報生成部２２６は、例えば、基礎データである文字列のパスワードを一方向ハッシュ関数により演算し、鍵データ演算結果を暗号化する鍵としてより適切なバイナリデータの変換データに変換する。秘密情報生成部２２６は、基礎データを不可逆に変換できれば、特にその変換方法は限定されない。本実施形態では、秘密情報生成部２２６は、端末装置２２０のユーザのパスワード「ＰＷＤａ」を一方向ハッシュ関数により演算して変換データに変換し、秘密情報を生成する。秘密情報生成部２２６は、生成した変換データを秘密情報として暗号化部２２３に入力する。
【００６２】
暗号化部２２３は、演算部２４から鍵データ演算結果を取得する。暗号化部２２３は、秘密情報生成部２２６から秘密情報として変換データを取得する。本実施形態では、暗号化部２２３は、対象公開鍵と乱数データを排他的論理和演算した鍵データ演算結果を、端末装置２２０のユーザのパスワード「ＰＷＤａ」を一方向ハッシュ関数により演算して変換した変換データにより暗号化する。これらの点以外は、暗号化部２２３は、図１に示した暗号化部２３と実質的に同様である。
【００６３】
次に、サーバ２１０について説明する。パスワードデータベース２１４は、秘密情報の基礎データを記憶する基礎データ記憶手段である。パスワードデータベース２１４は、ユーザ名やユーザＩＤ、グループ名やグループＩＤ等に対応付けて、基礎データを記憶する。本実施形態では、パスワードデータベース２１４は、複数の端末装置２２０のユーザのユーザ名「Ａ」、「Ｂ」、「Ｃ」に対応付けて、それぞれのユーザのパスワード「ＰＷＤａ」、「ＰＷＤｂ」、「ＰＷＤｃ」を記憶する。
【００６４】
秘密情報生成部２１５は、鍵データ演算結果の暗号結果を復号する秘密情報を取得する取得手段である。秘密情報生成部２１５は、基礎データを不可逆に変換して秘密情報を生成することにより秘密情報を取得する。秘密情報生成部２１５は、通信インタフェース１１から、通信インタフェース１１が受信した、ユーザ名「Ａ」に対応付けられた鍵データ演算結果の暗号結果を取得する。秘密情報生成部２１５は、ユーザ名に基づいてパスワードデータベース２１４を検索し、ユーザ名「Ａ」に対応するパスワード「ＰＷＤａ」を、秘密情報の生成に用いる基礎データとして取得する。
【００６５】
秘密情報生成部２１５は、端末装置２２０において行われた基礎データの変換方法に基づいて、基礎データを変換して秘密情報を生成する。尚、変換方法は、予めサーバ２１０と端末装置２２０との間で設定しておくことができる。秘密情報生成部２１５は、例えば、基礎データを一方向ハッシュ関数により演算して変換し、秘密情報として用いる変換データを生成する。秘密情報生成部２１５は、鍵データ演算結果の暗号結果と生成した秘密情報とを対応付けて復号部２１６に入力する。本実施形態では、秘密情報生成部２１５は、パスワード「ＰＷＤａ」を一方向ハッシュ関数により演算して変換データに変換し、秘密情報を生成する。
【００６６】
復号部２１６は、秘密情報生成部２１５から、鍵データ演算結果の暗号結果と、生成した秘密情報を取得する。本実施形態では、復号部２１６は、パスワード「ＰＷＤａ」を一方向ハッシュ関数により演算して変換した変換データにより、鍵データ演算結果の暗号結果を復号する。これらの点以外は、復号部２１６は、図１に示した復号部１６と実質的に同様である。
【００６７】
〔通信方法〕
次に、通信システム２０１を用いた通信方法について図４を用いて説明する。図４では、端末装置２２０のユーザのパスワード「ＰＷＤａ」の一方向ハッシュ関数による演算を「Ｈ（ＰＷＤａ）」、パスワードを演算「Ｈ（ＰＷＤａ）」により変換した変換データを「Ｄａ」と表記する。尚、これら以外の表記は、図２と同様である。
【００６８】
サーバ２１０が、サーバ２１０の公開鍵（ＰＫｓ）を生成し、端末装置２２０に送信する（Ｓ２０１）。端末装置２２０は、端末装置２２０のユーザのパスワード「ＰＷＤａ」を基礎データとして用いる。端末装置２２０は、一方向ハッシュ関数による演算「Ｈ（ＰＷＤａ）」を行って、パスワード「ＰＷＤａ」を変換データ「Ｄａ」に変換し、秘密情報を生成する（Ｓ２０２）。次に、端末装置２２０は、図２に示したステップ（Ｓ１０２）、（Ｓ１０３）と同様のステップ（Ｓ２０３）、（Ｓ２０４）を行う。次に、端末装置２２０は、秘密情報（ＳＥＣ）として、ステップ（Ｓ２０２）で生成した変換データ「Ｄａ」を用い、秘密情報（ＳＥＣ）を鍵として、鍵データ演算結果（ＰＫｔ  ＥＯＲ  ＲＮＤ）を共通鍵暗号方式により暗号化「Ｅｓｅｃ（ＰＫｔ  ＥＯＲ  ＲＮＤ）」する（Ｓ２０５）。次に、端末装置２２０は、図２に示したステップ（Ｓ１０５）、（Ｓ１０６）と同様のステップ（Ｓ２０６）、（Ｓ２０７）を行う。
【００６９】
サーバ２１０は、受信したユーザ名に基づいてパスワードデータベース２１４を検索し、ユーザ名「Ａ」に対応するパスワード「ＰＷＤａ」を秘密情報（ＳＥＣ）の生成に用いる基礎データとして取得する（Ｓ２０８）。サーバ２１０は、一方向ハッシュ関数による演算「Ｈ（ＰＷＤａ）」を行って、パスワード「ＰＷＤａ」を変換データ「Ｄａ」に変換し、秘密情報を生成する（Ｓ２０９）。サーバ２１０は、鍵データ演算結果の暗号結果「Ｅｓｅｃ（ＰＫｔ  ＥＯＲ  ＲＮＤ）」を、秘密情報（ＳＥＣ）である変換データ「Ｄａ」により復号し、鍵データ演算結果（ＰＫｔ  ＥＯＲ  ＲＮＤ）を求める（Ｓ２１０）。そして、サーバ２１０と端末装置２２０は、図２に示したステップ（Ｓ１０９）〜（Ｓ１１６）と同様のステップ（Ｓ２１１）〜（Ｓ２１８）を行う。
【００７０】
このような通信方法も、端末装置２２０から入力されたパスワードとパスワードデータベース２１４が記憶するパスワードとを比較し、正しいパスワードの入力により正規のユーザであることを認証するようなサーバに適用できる。同様に、サーバ２１０として、例えば、時分割共有型サーバ、ウェブサーバ等を用いることができる。
【００７１】
〔効果〕
このような通信システム２０１、端末装置２２０、サーバ２１０及び通信方法によれば、図１、２に示した通信システム１、端末装置２０、サーバ１０及び通信方法によって得られる効果に加えて、以下の効果を得ることができる。
【００７２】
端末装置２２０、サーバ２１０は、秘密情報の基礎データを記憶する記憶部２２２、パスワードデータベース２１４と、基礎データを不可逆に変換して秘密情報を生成する秘密情報生成部２２６，２１５とを備える。そのため、端末装置２２０、サーバ２１０は、秘密情報そのものを記憶せずに、使用する際に基礎データを不可逆に変換して生成できる。
【００７３】
よって、秘密情報が盗聴され、漏洩しても、秘密情報を基礎データに変換することができない。そのため、秘密情報の漏洩が、基礎データの漏洩には繋がらない。よって、秘密情報が漏洩しても、端末装置２２０、サーバ２１０は、同じ基礎データを用いて新たな秘密情報を生成して使用できる。そのため、通信システム２０１では、容易に安全な通信が継続できる。
【００７４】
しかも、秘密情報として単にパスワードを用いた場合は、辞書攻撃によりパスワード、即ち、秘密情報を探り当てられてしまう可能性を完全には否定できない。しかし、通信システム２０１では、基礎データを不可逆に変換した変換データを秘密情報として用いる。そのため、通信システム２０１は、攻撃端末に解読の手がかりを与えないようにできる。その結果、通信システム２０１では、鍵データ演算結果を秘密情報により暗号化した暗号結果の解読を非常に困難にできる。
【００７５】
［第３の実施の形態］
〔通信システム〕
図５に示すように、通信システム３０１は、サーバ３１０と、端末装置３２０と、ネットワーク３０とを備える。端末装置３２０は、通信インタフェース３２１と、記憶部２２２と、暗号化部３２３と、演算部２４と、判断部２５と、秘密情報生成部３２６とを備える。サーバ３１０は、通信インタフェース３１１と、鍵生成部１２と、鍵記憶部１３と、変換データデータベース３１４と、検索部３１５と、復号部３１６と、演算部１７とを備える。図５において、図１、２に示した通信システム１，２０１と実質的に同様の構成については、同一の符号を付して説明を省略する。
【００７６】
まず、端末装置３２０について説明する。秘密情報生成部３２６は、基礎データを不可逆に変換して秘密情報を生成する生成手段である。秘密情報生成部３２６は、記憶部２２２から基礎データ及びユーザ名「Ａ」を取得する。秘密情報生成部３２６は、取得したユーザ名「Ａ」を指定してサーバ３１０にソルト値を要求する要求メッセージを、通信インタフェース３２１に入力する。ソルト値は、基礎データを変換する際に、基礎データに付加する可変要因である。ソルト値を基礎データに付加して変換することによって、同一の基礎データを同一の変換方法により変換した場合であっても、異なる変換データを生成できる。ソルト値は、端末装置のユーザ毎に設定される。本実施形態では、一方向ハッシュ関数による演算の際に基礎データに付加するソルト値を用いる。
【００７７】
秘密情報生成部３２６は、通信インタフェース３２１が受信した、要求メッセージに対するサーバ３１０からの応答メッセージを、通信インタフェース３２１から取得する。応答メッセージは、要求メッセージに対する応答であって、指定したユーザ名「Ａ」に対応するソルト値「Ｓａ」が含まれる。秘密情報生成部３２６は、応答メッセージからソルト値を取得する。秘密情報生成部３２６は、基礎データにソルト値を付加したものを不可逆に変換し、秘密情報として変換データを生成する。
【００７８】
秘密情報生成部３２６は、例えば、ソルト値を付加した基礎データを一方向ハッシュ関数により演算して変換し、秘密情報として用いる変換データを生成する。秘密情報生成部３２６は、基礎データを不可逆に変換できれば、特にその変換方法は限定されない。本実施形態では、秘密情報生成部３２６は、端末装置３２０のユーザのパスワード「ＰＷＤａ」を基礎データとして用い、端末装置３２０のユーザのソルト値「Ｓａ」を付加したパスワード「ＰＷＤａ」を一方向ハッシュ関数により演算して変換データに変換し、秘密情報を生成する。秘密情報生成部３２６は、生成した変換データを秘密情報として暗号化部３２３に入力する。
【００７９】
暗号化部３２３は、演算部２４から鍵データ演算結果を取得する。暗号化部３２３は、秘密情報生成部３２６から秘密情報として変換データを取得する。
【００８０】
本実施形態では、暗号化部３２３は、対象公開鍵と乱数データを排他的論理和演算した鍵データ演算結果を、端末装置３２０のユーザのソルト値「Ｓａ」を付加したパスワード「ＰＷＤａ」を一方向ハッシュ関数により演算して変換した変換データにより暗号化する。これらの点以外は、暗号化部３２３は、図１に示した暗号化部２３と実質的に同様である。
【００８１】
通信インタフェース３２１は、秘密情報生成部３２６から要求メッセージを取得し、サーバ３１０に送信する。又、通信インタフェース３２１は、サーバ３１０から応答メッセージを受信し、秘密情報生成部３２６に入力する。これらの点以外は、通信インタフェース３２１は、図１に示した通信インタフェース２１と実質的に同様である。
【００８２】
次に、サーバ３１０について説明する。変換データデータベース３１４は、基礎データを不可逆に変換した秘密情報を記憶する秘密情報記憶手段である。変換データデータベース３１４は、ユーザ名やユーザＩＤ、グループ名やグループＩＤ等に対応付けて、ソルト値と、秘密情報である変換データとを記憶する。変換データデータベース３１４は、基礎データに付加したソルト値と、そのソルト値を付加した基礎データを変換した変換データとを対応付けて記憶する。
【００８３】
本実施形態では、変換データデータベース３１４は、複数の端末装置３２０のユーザのユーザ名「Ａ」、「Ｂ」、「Ｃ」に対応付けて、それぞれのユーザのパスワード「ＰＷＤａ」、「ＰＷＤｂ」、「ＰＷＤｃ」に付加したソルト値「Ｓａ」、「Ｓｂ」、「Ｓｃ」と、各ソルト値「Ｓａ」、「Ｓｂ」、「Ｓｃ」を各パスワード「ＰＷＤａ」、「ＰＷＤｂ」、「ＰＷＤｃ」にそれぞれ付加し、一方向ハッシュ関数により変換した変換データ「Ｋａ」、「Ｋｂ」、「Ｋｃ」を記憶する。このように、通信システム３０１では、端末装置３２０のユーザのパスワードをソルト値と一方向ハッシュ関数を用いて不可逆に変換した変換データを、サーバ３１０が変換データデータベース３１４に格納して記憶する。
【００８４】
検索部３１５は、通信インタフェース３１１から、通信インタフェース３１１が受信した要求メッセージを取得する。検索部３１５は、要求メッセージにおいて指定されているユーザ名に基づいて変換データデータベース３１４を検索し、ユーザ名「Ａ」に対応するソルト値「Ｓａ」を取得する。検索部３１５は、取得したソルト値「Ｓａ」を含む応答メッセージを生成し、通信インタフェース３１１に入力する。
【００８５】
更に、検索部３１５は、通信インタフェース３１１から、通信インタフェース３１１が受信した、ユーザ名「Ａ」に対応付けられた鍵データ演算結果の暗号結果を取得する。検索部３１５は、ユーザ名に基づいて変換データデータベース３１４を検索し、ユーザ名「Ａ」に対応する変換データ「Ｋａ」を、復号に用いる秘密情報として取得する。検索部３１５は、鍵データ演算結果の暗号結果と、取得した秘密情報、即ち、変換データ「Ｋａ」とを対応付けて復号部３１６に入力する。
【００８６】
復号部３１６は、検索部３１５から、鍵データ演算結果の暗号結果と秘密情報を取得する。本実施形態では、復号部３１６は、ソルト値「Ｓａ」をパスワード「ＰＷＤａ」に付加し、一方向ハッシュ関数により変換した変換データ「Ｋａ」により暗号結果を復号する。これらの点以外は、復号部３１６は、図１に示した復号部１６と実質的に同様である。
【００８７】
通信インタフェース３１１は、端末装置３２０から要求メッセージを受信し、検索部３１５に入力する。通信インタフェース３１１は、検索部３１５から応答メッセージを取得し、端末装置３２０に送信する。これらの点以外は、通信インタフェース３１１は、図１に示した通信インタフェース１１と実質的に同様である。
【００８８】
〔通信方法〕
次に、通信システム３０１を用いた通信方法について図６を用いて説明する。
【００８９】
図４では、端末装置２２０のユーザのソルト値「Ｓａ」を付加したパスワード「ＰＷＤａ」の一方向ハッシュ関数による演算を「Ｈ（Ｓａ，ＰＷＤａ）」と表記する。尚、これら以外の表記は、図２と同様である。
【００９０】
サーバ３１０が、サーバ３１０の公開鍵（ＰＫｓ）を生成し、端末装置３２０に送信する（Ｓ３０１）。端末装置３２０は、端末装置３２０のユーザ名「Ａ」を指定した要求メッセージをサーバ３１０に送信する（Ｓ３０２）。サーバ３１０は、要求メッセージに含まれるユーザ名「Ａ」に基づいて変換データデータベース３１４を検索し、ソルト値「Ｓａ」を取得する（Ｓ３０３）。サーバ３１０は、ソルト値「Ｓａ」を含む応答メッセージを端末装置３２０に送信する（Ｓ３０４）。
【００９１】
端末装置３２０は、端末装置３２０のユーザのパスワード「ＰＷＤａ」を基礎データとして用いる。端末装置３２０は、応答メッセージに含まれるソルト値「Ｓａ」をパスワード「ＰＷＤａ」に付加し、一方向ハッシュ関数による演算「Ｈ（Ｓａ，ＰＷＤａ）」を行って、パスワード「ＰＷＤａ」を変換データ「Ｋａ」に変換し、秘密情報を生成する（Ｓ３０５）。次に、端末装置３２０は、図２に示したステップ（Ｓ１０２）、（Ｓ１０３）と同様のステップ（Ｓ３０６）、（Ｓ３０７）を行う。
【００９２】
次に、端末装置３２０は、秘密情報（ＳＥＣ）として、ステップ（Ｓ３０５）で生成した変換データ「Ｋａ」を用い、秘密情報（ＳＥＣ）を鍵として、鍵データ演算結果（ＰＫｔ  ＥＯＲ  ＲＮＤ）を共通鍵暗号方式により暗号化「Ｅｓｅｃ（ＰＫｔ  ＥＯＲ  ＲＮＤ）」する（Ｓ３０８）。次に、端末装置３２０は、図２に示したステップ（Ｓ１０５）、（Ｓ１０６）と同様のステップ（Ｓ３０９）、（Ｓ３１０）を行う。
【００９３】
サーバ３１０は、受信したユーザ名に基づいて変換データデータベース３１４を検索し、ユーザ名「Ａ」に対応する変換データ「Ｋａ」を秘密情報として取得する（Ｓ３１１）。サーバ３１０は、鍵データ演算結果の暗号結果「Ｅｓｅｃ（ＰＫｔ  ＥＯＲ  ＲＮＤ）」を、秘密情報（ＳＥＣ）である変換データ「Ｋａ」により復号し、鍵データ演算結果（ＰＫｔ  ＥＯＲ  ＲＮＤ）を求める（Ｓ３１２）。そして、サーバ３１０と端末装置３２０は、図２に示したステップ（Ｓ１０９）〜（Ｓ１１６）と同様のステップ（Ｓ３１３）〜（Ｓ３２０）を行う。
【００９４】
このような通信方法は、ワークステーションタイプの計算機オペレーティングシステムの代表例であるＵＮＩＸ（登録商標）におけるログイン認証を行うサーバに適用できる。この場合、サーバ３１０は、端末装置３２０から入力されたパスワードを、変換データデータベース３１４が記憶する変換データを生成する際に用いた一方向ハッシュ関数、ソルト値により演算し、その演算結果と変換データデータベース３１４が記憶する変換データとを比較して認証を行う。
【００９５】
〔効果〕
このような通信システム３０１、端末装置３２０、サーバ３１０及び通信方法によれば、図１、２に示した通信システム１、端末装置２０、サーバ１０及び通信方法によって得られる効果に加えて、以下の効果を得ることができる。
【００９６】
端末装置３２０は、秘密情報の基礎データを記憶する記憶部２２２と、基礎データを不可逆に変換して秘密情報を生成する秘密情報生成部３２６とを備える。サーバ３１０は、基礎データを不可逆に変換した変換データを秘密情報として記憶する変換データデータベース３１４を備える。そのため、サーバ３１０が変換データデータベース３１４に記憶する変換データが漏洩しても、その変換データを基礎データに変換して、基礎データを復元することができない。よって、変換データデータベース３１４が記憶する秘密情報である変換データが漏洩したとしても、それが直ちには、基礎データそのものの漏洩には繋がらない。その結果、変換データが漏洩しても、端末装置３２０は、同じ基礎データを用いて新たな変換データを生成して、秘密情報として使用できる。そして、サーバ３１０が記憶する変換データだけを更新すればよい。そのため、通信システム３０１では、容易に安全な通信が継続できる。
【００９７】
しかも、秘密情報として単にパスワードを用いた場合は、辞書攻撃によりパスワード、即ち、秘密情報を探り当てられてしまう可能性を完全には否定できない。しかし、通信システム３０１では、基礎データを不可逆に変換した変換データを秘密情報として用いる。更に、通信システム３０１では、ソルト値を用いて生成した秘密情報を用いる。そのため、通信システム３０１は、攻撃端末に解読の手がかりをより与えないようにできる。その結果、通信システム３０１では、鍵データ演算結果を秘密情報により暗号化した暗号結果の解読を非常に困難にできる。
【００９８】
尚、本発明は上記第１〜第３の実施形態に限定されるものではなく、種々の変更が可能である。図１〜図６では、サーバ１０，２１０，３１０と端末装置２０，２２０，３２０との間の通信を例にとって説明したが、本発明は、端末装置間やサーバ間の通信にも適用できる。更に、公開鍵の真正性が確認できた後は、その公開鍵を利用して共通鍵を交換するといった処理を行ってもよい。これによれば、以降の通信を安全にかつ効率的に行うことができる。
【図面の簡単な説明】
【００９９】
【図１】本発明の第１の実施の形態に係る通信システムの構成を示す図である。
【図２】本発明の第１の実施の形態に係る通信方法の手順を示すフロー図である。
【図３】本発明の第２の実施の形態に係る通信システムの構成を示す図である。
【図４】本発明の第２の実施の形態に係る通信方法の手順を示すフロー図である。
【図５】本発明の第３の実施の形態に係る通信システムの構成を示す図である。
【図６】本発明の第３の実施の形態に係る通信方法の手順を示すフロー図である。
【図７】従来の攻撃の手順を示すフロー図である。
【符号の説明】
【０１００】
１，２０１，３０１  通信システム
１０，２１０，３１０，４１０  サーバ
１１，３１１  通信インタフェース
１２  鍵生成部
１３  鍵記憶部
１４，２１４  パスワードデータベース
１５，３１５  検索部
１６，２１６，３１６  復号部
１７  演算部
２０，２２０，３２０，４２０  端末装置
２１，３２１  通信インタフェース
２２，２２２  記憶部
２３，２２３，３２３  暗号化部
２４  演算部
２５  判断部
３０  ネットワーク
２１５，２２６，３２６  秘密情報生成部
３１４  変換データデータベース
４３０  攻撃端末
【図１】
2005217665.tif 000003
【図２】
2005217665.tif 000004
【図３】
2005217665.tif 000005
【図４】
2005217665.tif 000006
【図５】
2005217665.tif 000007
【図６】
2005217665.tif 000008
【図７】
2005217665.tif 000009