(57)【要約】【課題】暗号通信装置に係り、同装置内の秘密情報を読み出す困難性（耐タンパ性）を向上させる装置に関するものである。【解決手段】暗号通信装置Ａは、固有情報と固有鍵を予め対応付けて記憶し、暗号通信装置Ｂは、受信した固有情報を入力値としたハッシュ関数処理により得られるハッシュ値に基づく固有鍵を生成し（２１３）、固有鍵を用いて検証用データを生成し（２１５）、暗号通信装置Ａへ送信する（２１６）。暗号通信装置Ａは、固有情報に対応する固有鍵を用いて、受信した検証用データに対する検証を行う（２０５）。【選択図】        図２
2004159063.tif 000002
【特許請求の範囲】
【請求項１】
暗号通信装置Ａと暗号通信装置Ｂからなる暗号通信システムであって、暗号通信装置Ａは、
（１）固有情報と、当該固有情報に対する固有鍵を予め対応付けて記憶し、
（２）記憶している固有情報を暗号通信装置Ｂに送信し、
暗号通信装置Ｂは、
（３）暗号通信装置Ａから固有情報を受信し、
（４）固有情報を入力値としたハッシュ関数処理により得られるハッシュ値に基づく固有鍵を生成し、
（５）固有鍵あるいは前記固有鍵と生成した乱数または暗号通信装置Ａから受信した乱数に基づく一時鍵を用いて、検証用データを生成し、
（６）暗号通信装置Ａへ検証用データを送信し、
暗号通信装置Ａは、
（７）暗号通信装置Ｂから検証用データを受信し、
（８）先に送信した固有情報に対応する固有鍵あるいは前記固有鍵と生成した乱数または暗号通信装置Ｂから受信した乱数に基づく一時鍵を用いて、受信した検証用データに対する検証を行うことを特徴とする暗号通信システム及びそれぞれの暗号通信装置。
【請求項２】
固有情報と、当該固有情報に対する固有鍵を予め対応付けて記憶している不揮発メモリと、固有情報を暗号通信装置Ｂに送信、または、暗号通信装置Ｂから検証用データを受信する通信部と、全体を制御する制御部と、乱数を生成する乱数生成部と、暗号あるいは復号処理を行う暗号処理部とを少なくとも有し、先に送信した固有情報に対応する固有鍵あるいは前記乱数生成部で生成した乱数または暗号通信装置Ｂから受信した乱数に基づく一時鍵を用いて、受信した検証用データに対する検証を行うことを特徴とする請求項１記載の暗号通信装置。
【請求項３】
暗号通信装置Ａから固有情報を受信する通信部と固有情報を入力値としたハッシュ関数処理により得られるハッシュ値に基づく固有鍵を生成する制御部と乱数生成部とを少なくとも有し、前記固有鍵あるいは前記乱数生成部で生成した乱数または暗号通信装置Ａから受信した乱数に基づく一時鍵を用いて検証用データを生成し、暗号通信装置Ａへ検証用データを送信し、検証を行うようにしたことを特徴とする請求項１記載の暗号通信装置。
【請求項４】
固有鍵生成時に、固有情報を入力値としたハッシュ関数により得られるハッシュ値を、暗号化処理し、暗号化結果を固有鍵とすること、または固有情報を入力値としたハッシュ関数により得られるハッシュ値を、復号処理し、復号結果を固有鍵とすることを特徴とする請求項１記載の暗号通信システム及び暗号通信装置。
【請求項５】
暗号通信装置Ａと暗号通信装置Ｂは、乱数を共有化する手段を有し、
暗号通信装置Ｂは、固有鍵あるいは前記固有鍵と生成した乱数または暗号通信装置Ａから受信した乱数に基づく一時鍵を用いて、共有化している乱数を暗号化処理し、暗号結果を検証用データとし、
暗号通信装置Ａは、先に送信した固有情報に対応する固有鍵あるいは前記固有鍵と生成した乱数または暗号通信装置Ｂから受信した乱数に基づく一時鍵を用いて、受信した検証用データを復号し、復号結果が共有化している乱数と一致するかにより検証を行うことを特徴とする請求項１記載の暗号通信システム及び暗号通信装置。
【請求項６】
暗号通信装置Ａと暗号通信装置Ｂは、乱数を共有化する手段を有し、
暗号通信装置Ｂは、固有鍵あるいは前記固有鍵と生成した乱数または暗号通信装置Ａから受信した乱数に基づく一時鍵を用いて、共有化している乱数を復号処理し、復号結果を検証用データとし、
暗号通信装置Ａは、先に送信した固有情報に対応する固有鍵あるいは前記固有鍵と生成した乱数または暗号通信装置Ｂから受信した乱数に基づく一時鍵を用いて、受信した検証用データを暗号化処理し、暗号化結果が共有化している乱数と一致するかにより検証を行うことを特徴とする請求項１記載の暗号通信システム及び暗号通信装置。
【請求項７】
暗号通信装置Ａと暗号通信装置Ｂは、第一及び第二の乱数を共有化する手段を有し、
暗号通信装置Ｂは、固有鍵を用いて、共有化している第一の乱数を暗号化処理し、暗号化結果を一時鍵とし、一時鍵を用いて、共有化している第二の乱数を暗号化処理し、第二の暗号化結果を検証用データとし、
暗号通信装置Ａは、先に送信した固有情報に対応する固有鍵を用いて、共有化している第一の乱数を暗号化処理し、第一の暗号化結果を一時鍵とし、一時鍵を用いて、受信した検証用データを復号処理し、復号結果が共有化している第二の乱数と一致するかにより検証を行うことを特徴とする請求項１記載の暗号通信システム及び暗号通信装置。
【請求項８】
暗号通信装置Ａと暗号通信装置Ｂは、第一及び第二の乱数を共有化する手段を有し、
暗号通信装置Ｂは、固有鍵を用いて、共有化している第一の乱数を暗号化処理し、暗号化結果を一時鍵とし、一時鍵を用いて、共有化している第二の乱数を復号処理し、復号結果を検証用データとし、
暗号通信装置Ａは、先に送信した固有情報に対応する固有鍵を用いて、共有化している第一の乱数を暗号化処理し、第一の暗号化結果を一時鍵とし、一時鍵を用いて、受信した検証用データを暗号化処理し、第二の暗号化結果が共有化している第二の乱数と一致するかにより検証を行うことを特徴とする請求項１記載の暗号通信システム及び暗号通信装置。
【請求項９】
暗号通信装置Ａと暗号通信装置Ｂは、第一及び第二の乱数を共有化する手段を有し、
暗号通信装置Ｂは、固有鍵を用いて、共有化している第一の乱数を復号処理し、復号結果を一時鍵とし、一時鍵を用いて、共有化している第二の乱数を暗号化処理し、暗号化結果を検証用データとし、
暗号通信装置Ａは、先に送信した固有情報に対応する固有鍵を用いて、共有化している第一の乱数を復号処理し、第一の復号結果を一時鍵とし、一時鍵を用いて、受信した検証用データを復号処理し、第二の復号結果が共有化している第二の乱数と一致するかにより検証を行うことを特徴とする請求項１記載の暗号通信システム及び暗号通信装置。
【請求項１０】
暗号通信装置Ａと暗号通信装置Ｂは、第一及び第二の乱数を共有化する手段を有し、
暗号通信装置Ｂは、固有鍵を用いて、共有化している第一の乱数を復号処理し、復号結果を一時鍵とし、一時鍵を用いて、共有化している第二の乱数を復号処理し、第二の復号結果を検証用データとし、
暗号通信装置Ａは、先に送信した固有情報に対応する固有鍵を用いて、共有化している第一の乱数を復号処理し、復号結果を一時鍵とし、一時鍵を用いて、受信した検証用データを暗号化処理し、暗号化結果が共有化している第二の乱数と一致するかにより検証を行うことを特徴とする請求項１記載の暗号通信システム及び暗号通信装置。
【請求項１１】
乱数を共有化する手段は、共有する乱数として、以下のデータのいずれかを用いることを特徴とする請求項１記載の暗号通信システム及び暗号通信装置。
（１）暗号通信装置Ａから暗号通信装置Ｂへ送信されるデータと、暗号通信装置Ｂから暗号通信装置Ａへ送信されるデータの全部
（２）暗号通信装置Ａから暗号通信装置Ｂへ送信されるデータの少なくとも一部と、暗号通信装置Ｂから暗号通信装置Ａへ送信されるデータの少なくとも一部の組合せ
（３）暗号通信装置Ａから暗号通信装置Ｂへ送信されるデータの全部
（４）暗号通信装置Ｂから暗号通信装置Ａへ送信されるデータの全部
（５）暗号通信装置Ａから暗号通信装置Ｂへ送信されるデータの一部
（６）暗号通信装置Ｂから暗号通信装置Ａへ送信されるデータの一部。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、暗号通信システムや暗号通信装置における耐タンパ性の向上、即ち、なりすましや改ざん、通信の回線盗聴などに対して充分なセキュリティを確保するシステムや装置に関するものである。
【０００２】
【従来の技術】
暗号通信分野における認証方法としては数多くの提案がなされているが、通常、ある秘密情報を知っている者を本人と（検証者が）確かめることで、認証が行われる。例えば、特開平２０００−１８２１０２号公報に示された従来の認証方法では、あらかじめ共通鍵をＡ（暗号通信装置）とＢ（暗号通信装置）の双方で保持しておき、以下の手順で相手を認証していた。
（１）Ａは乱数Ｒ１を生成し、Ｂに乱数Ｒ１を送信する。
（２）Ｂは乱数Ｒ１と共通鍵から認証子１を生成し、また、乱数Ｒ２も生成する。そして、認証子１と乱数Ｒ２をＡに送信する。
（３）Ａは乱数Ｒ１と共通鍵から認証子を生成し、Ｂから受信した認証子１と一致するかを検査する（これによりＡはＢを認証）。
（４）次に、Ａは乱数Ｒ２と共通鍵から認証子２を生成し、認証子２をＢに送信する。
（５）Ｂは乱数Ｒ２と共通鍵から認証子を生成し、Ａから受信した認証子２と一致するかを検査する（これによりＢはＡを認証）。
【０００３】
また、共通鍵（秘密鍵）生成のために複数の情報を別々に保持しておき、共通鍵（秘密鍵）を共有せず、認証時や鍵共有時に共通鍵（秘密鍵）を生成することで認証する方法も開示されている。さらに、零知識証明技術に基づいた暗号認証方法（Ｆｉａｔ−Ｓｈａｍｉｒ法等）や、公開鍵と秘密鍵の２つの非対称なデータ暗号鍵を用いる方法（公開鍵暗号方式）、即ち、暗号化を公開された鍵（あるいは秘密鍵）で行い、秘密鍵（あるいは公開鍵）で復号化を行う方法も様々な装置で使用されている。
【０００４】
これらの認証方法が搭載された暗号通信装置では、通常、秘密情報（暗号処理で用いる鍵等）を不揮発性メモリに記録し、これをマイクロプロセッサ等がアクセス制御することや容易でない情報フローを採用することで外部脅威に耐えていた。
また、モバイルコマースシステムの基地局、携帯電話とスマートカード等で構成される複数の暗号通信装置（暗号通信システム）やノンストップ自動料金収受システムの路側機と車載器及びスマートカード等で構成される複数の暗号通信装置（暗号通信システム）では、所定のコマンドを送信（または受信）し、これに対するレスポンスを受信（または送信）するという方法でアクセスが行われる。
【０００５】
このようなコマンドとレスポンスは、暗号通信装置間の通信ラインを介して行われるが、通信ラインは外部から物理的にアクセスすることが比較的容易であるため、通信ラインを流れるデータを外部から観測されたり、不正データを意図的に挿入されたりする可能性が高い。また、共通鍵の解読や漏洩を防ぐために、複数の情報を別々に保持しておき、認証時や鍵共有時に共通鍵（秘密鍵）を生成することに加え、将来の拡張性の観点からは鍵長の異なる複数の暗号アルゴリズムにも容易に対応できることが望ましい。
【０００６】
さらに近年、タイミング解析、電力解析などの各種解析／攻撃法が提案されたことにより、不揮発性メモリ上の秘密情報は読み出せないとする考え方が覆されはじめており、情報フロー（通信手順や認証方法など）の複雑さによる耐タンパ性の向上が必須となっている。
【０００７】
【特許文献１】
特開２０００−１８２１０２号公報
【０００８】
【発明が解決しようとする課題】
上述したような従来の暗号通信システム及び暗号通信装置では、なりすましや改ざん、通信の回線盗聴などに対して充分なセキュリティの確保とともに拡張性に乏しいという課題を有していた。例えば、共通鍵生成時には、通信相手毎に異なる鍵の共有や鍵長の異なる複数の暗号アルゴリズムへの容易な対応は考慮されておらず、さらに、暗号アルゴリズムの寿命などによるアルゴリズム交換というスキームに対しても（対応が考慮されてないという）課題を有していた。
【０００９】
また、暗号通信装置の情報フローに対する対策も不十分であったため、解読等の攻撃機会が増加し、その結果、偽造被害が増加するという問題点があった。
【００１０】
この発明は上記のような問題点を解消するためになされたもので、充分なセキュリティを確保しつつ、拡張性と耐タンパ性に優れた暗号通信システム及び暗号通信装置を得ることを目的とする。特に、情報フロー（通信手順や認証方法など）を複雑にすることで、様々な外部脅威から充分なセキュリティを確保し、拡張性・耐タンパ性に優れた暗号通信装置を得ることを目的とする。例えば、共通鍵（固有鍵）の生成にハッシュ関数を用いて、通信相手毎に異なる鍵の共有や鍵長の異なる複数の暗号アルゴリズムにも容易に対応できるようにすることや暗号アルゴリズムの寿命などによるアルゴリズム交換というスキームにも容易に対応することを得ることを目的とする。
【００１１】
【課題を解決するための手段】
本発明に係る暗号通信システムは、
暗号通信装置Ａと暗号通信装置Ｂからなる暗号通信システムであって、暗号通信装置Ａは、
（１）固有情報と、当該固有情報に対する固有鍵を予め対応付けて記憶し、
（２）記憶している固有情報を暗号通信装置Ｂに送信し、
暗号通信装置Ｂは、
（３）暗号通信装置Ａから固有情報を受信し、
（４）固有情報を入力値としたハッシュ関数処理により得られるハッシュ値に基づく固有鍵を生成し、
（５）固有鍵あるいは前記固有鍵と生成した乱数または暗号通信装置Ａから受信した乱数に基づく一時鍵を用いて、検証用データを生成し、
（６）暗号通信装置Ａへ検証用データを送信し、
暗号通信装置Ａは、
（７）暗号通信装置Ｂから検証用データを受信し、
（８）先に送信した固有情報に対応する固有鍵あるいは前記固有鍵と生成した乱数または暗号通信装置Ｂから受信した乱数に基づく一時鍵を用いて、受信した検証用データに対する検証を行うことを特徴とする暗号通信システム及びそれぞれの暗号通信装置。
【００１２】
【発明の実施の形態】
実施の形態１．
以下、本発明を図面に示す実施例に基づいて説明する。図１は、各暗号通信装置の構成を示す図である。暗号通信装置８は、通信部１、制御部２、不揮発性メモリ３、乱数生成部４、及び暗号処理部５から構成されている。
【００１３】
図１において、通信部１は、少なくともデータフィールドを有した通信データ９の送受信を行う通信部で、例えば、スマートカード用の接触式インタフェースや非接触式インタフェース、セントロニクス社準拠のパラレルインタフェース、ＲＳ２３２Ｃなどのシリアルインタフェース、ＩＥＥＥ１３９４やＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などの有線インタフェース、赤外線通信、Ｂｌｕｅｔｏｏｔｈ、無線ＬＡＮやＤＳＲＣ（Ｄｅｄｉｃａｔｅｄ  ｓｈｏｒｔ  Ｒａｎｇｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）、あるいは携帯電話に用いられているような無線インタフェースや専用のインタフェースなどが用いられる。制御部２は、通信部１で受信した通信データ９を解読するとともに（または送信する通信データ９を生成するとともに）装置全体を制御する制御部であり、例えば、ＣＰＵやロジック回路、あるいは必要に応じてＲＯＭやＲＡＭなどから構成される。また、制御部２は、ハッシュ関数処理も行う場合がある。
不揮発性メモリ３は、暗号処理時に使用するマスター鍵、固有情報や固有鍵等の秘密情報等を記憶し、乱数生成部４は、乱数を生成する。暗号処理部５は、データを暗号あるいは復号処理する（または署名生成あるいは署名検証する）暗号処理部である。
【００１４】
本実施の形態１では通信データ９のやり取りを行うことで、暗号通信装置Ｂ８（図面右側）を暗号通信装置Ａ８（図面左側）が認証する例を示している。つまり、暗号通信装置Ａは、暗号通信装置Ｂが正当な暗号通信装置であるか否かを検証する。また、後述する２２１のように相互に認証するようにすることも有効であるが、一方向の認証だけでも構わないことは言うまでもない。
【００１５】
続いて、各暗号通信装置の動作について説明する。図２は、各暗号通信装置の処理フローと、各処理モジュール間のデータフローを示す図である。
暗号通信装置Ａは、不揮発性メモリ２０１（図１の不揮発性メモリ３と同じ）に固有情報と、固有情報に対応する固有鍵を対応付けて記憶している。固有鍵は、固有情報から所定の処理により生成された鍵である。そして、固有情報送信処理２０２、乱数共有化処理２０３、検証用データ受信処理２０４、及び検証処理２０５を行う。これらの処理を行うモジュールは、ソフトウェア、ファームウェア、あるいはハードウェアのいずれにより構成されていても構わない。
他方、暗号通信装置Ｂは、不揮発性メモリ２１１（図１の不揮発性メモリ３と同じ）に必要なマスター鍵を記憶している。但し、マスター鍵を必要としない形態の場合には、必ずしも記憶していなくてよい。そして、固有情報受信処理２１２、固有鍵生成処理２１３、乱数共有化処理２１４、検証用データ生成処理２１５、及び検証用データ送信処理２１６を行う。これらの処理を行うモジュールは、ソフトウェア、ファームウェア、あるいはハードウェアのいずれにより構成されていても構わない。
装置としては、例えば、半導体チップ、基板、あるいは複数基板を格納したボックス、ＰＣやＷＳなどの態様で実現される。
【００１６】
認証結果として暗号通信装置Ｂが正当と判断された場合には、検証側と被検証側が入れ替わって、同様に検証を行う（２２１）。相互に正当と判断した場合に、データ通信を行う（２２２）。なお、相互認証を行わない場合には、２２１を削除してもかまわない。
【００１７】
以下、処理の詳細について説明する。
本実施の形態による処理の前提として、暗号通信装置Ａの不揮発性メモリ２０１には、固有情報を入力値としてハッシュ関数処理（後述する図３のＳ３０１と同じ関数）されたハッシュ値を固有鍵として、当該固有情報と対応付けて予め記憶している。
【００１８】
検証側（暗号通信装置Ａ側）の通信部１は、固有情報送信処理２０２として、不揮発性メモリ２０１から固有情報を取得し、暗号通信装置Ｂに送信する。被検証側（暗号通信装置Ｂ側）の通信部１は、固有情報受信処理２１２として、暗号通信装置Ａから固有情報を受信する。制御部２は、これを用いて、固有鍵生成処理２１３を行う。
【００１９】
図３は、固有鍵生成処理（例１）フローを示す図である。制御部２は、固有情報を関数への入力値としてハッシュ関数処理を行う（Ｓ３０１）。関数の出力値であるハッシュ値を、固有鍵とする（Ｓ３０２）。
【００２０】
その後、暗号通信装置Ａと暗号通信装置Ｂは、乱数を共有化する処理を行う。この乱数は、検証あるいは一時鍵生成のために生成され、予測困難な値であることが望ましく、また、暗号通信装置Ａから暗号通信装置Ｂへ送信された単体の乱数や暗号通信装置Ａから暗号通信装置Ｂへ送信された乱数と暗号通信装置Ｂから暗号通信装置Ａへ送信された複数の乱数等が該当する。この共有化の処理は、乱数生成部４と制御部２と通信部１により行われる。但し、共有化のタイミングは、検証用データ生成処理２１５より前に行われていればよく、例えば固有情報送信処理２０２と固有情報受信処理２１２の前であっても構わない。以下の実施の形態においても、論理的な矛盾がない限り、乱数共有化以外の通信の手順についても特に限定されない。
【００２１】
続いて、検証用データ生成処理２１５について説明する。図４は、検証用データ生成処理（例１）フローを示す図である。暗号処理部５は、固有鍵を用いて、共有化している乱数を暗号化し（Ｓ４０１）、暗号化結果（暗号化された乱数）を、検証用データとする（Ｓ４０２）。
【００２２】
暗号通信装置Ｂ側の通信部１は、検証用データを暗号通信装置Ａに送信する（２１６）。
暗号通信装置Ａ側では、通信部１により検証用データを受信し（２０４）、検証処理２０５を行う。
【００２３】
図５は、検証処理（例１）フローを示す図である。暗号処理部５は、検証用データ生成処理２１５の暗号化処理（Ｓ４０１）に対応する復号処理により、検証用データを、不揮発メモリから取得した固有鍵により復号する（Ｓ５０１）。制御部２は、復号結果（復号された検証用データ）と共有化している乱数を比較し（Ｓ５０２）、一致する場合に検証成功とする（Ｓ５０３）。つまり、暗号通信装置Ｂが正当なものと判断する。一致しない場合には、検証失敗とする（Ｓ５０４）。つまり、暗号通信装置Ｂが不正なものと判断する。また、送信した乱数を暗号化して、受信した検証データとの一致を比較するようにしてもよく、発明の主旨を逸脱しない範囲で適宜変更可能である。
【００２４】
本実施の形態では、暗号通信装置における固有情報のハッシュ値に基づいて固有鍵を生成しているので、簡単な構成で認証時の耐タンパ性を向上させることができる。また、ハッシュ関数を用いているため、固有情報そのものを用いて固有鍵を生成する場合に比べ耐タンパ性に優れるとともに、固有情報の情報量が少ない場合においても、ハッシュ値が大きくとれるため、鍵長の長い暗号アルゴリズムへの拡張性にも優れている。
【００２５】
暗号通信装置Ｂ側で、固有鍵を用いて、共有化している乱数を暗号化するので、簡単な構成で耐タンパ性を向上させることができる。
【００２６】
実施の形態２．
本実施の形態では、固有情報のハッシュ値を更に暗号化したデータを固有鍵とする形態について説明する。
【００２７】
その為、本実施の形態による処理の前提として、暗号通信装置Ａの不揮発性メモリには、固有情報を入力値としてハッシュ関数処理（後述する図６のＳ６０１と同じ関数）されたハッシュ値を、更に暗号化（後述する図６のＳ６０２と同じマスター鍵を用いた同じ暗号化ロジック）したデータを、固有鍵として、当該固有情報と対応付けて予め記憶している。
【００２８】
処理としては、固有鍵生成処理２１３が実施の形態１と異なる。図６は、固有鍵生成処理（例２）フローを示す図である。制御部２は、固有情報を関数への入力値としてハッシュ関数処理を行う（Ｓ６０１）。暗号処理部５は、関数の出力値であるハッシュ値を、不揮発性メモリ２１１から取得したマスター鍵により暗号化処理し（Ｓ６０２）、暗号化結果（暗号化されたハッシュ値）を固有鍵とする（Ｓ６０３）。
固有情報のハッシュ値を更に暗号化したデータに基づいて固有鍵を生成した場合の他の実施形態を図１９に示す。図中、図２と同一符号は同一または相当部分を示し、図２とは（乱数を先に送信するなどの）通信手順と相互認証を行うようにした点が異なっている。具体的なフローを以下に示す。
（１）暗号通信装置Ｂ側から送信された乱数は、暗号通信装置Ａ側で受信され（２４０）、前記乱数と固有鍵から検証用データが生成される（２４１）。
（２）検証用データ、固有情報及び暗号通信装置Ａ側で生成された乱数は暗号通信装置Ｂ側に順次、あるいは一括して送信される（２４２、２０２、２４３）。
（３）暗号通信装置Ｂ側では、まず、固有情報からのハッシュ値とマスター鍵に基づいて固有鍵が生成され（２１３）、この固有鍵で受信した検証用データを復号処理し、以前に送信した乱数と一致するかを検証する（２３２）。一致すれば、暗号通信装置Ｂ側が暗号通信装置Ａ側を認証したことになり、不一致であれば認証失敗となる。認証が成功した場合には、暗号通信装置Ａ側から受信した乱数を固有鍵で暗号処理して検証用データが生成され（２１５）、暗号通信装置Ａに送信される（２１６）。なお、認証に失敗した場合には、通信トランザクションが異常終了されたり、再送されたりする。
（４）最後に、暗号通信装置Ａ側では、固有鍵で受信した検証用データを復号処理し、暗号通信装置Ａ側から送信した乱数と一致しているかを検証する（２０５）。一致していれば、相互認証が成功し、データ通信（２２２）が行われる。失敗した場合には通信トランザクションが異常終了されたり、再送されたりする。
【００２９】
本実施の形態では、ハッシュ値を暗号化処理し、暗号化結果を固有鍵とするので、更に耐タンパ性を向上させることができる。
【００３０】
実施の形態３．
本実施の形態では、固有情報のハッシュ値を更に復号したデータを固有鍵とする形態について説明する。
【００３１】
その為、本実施の形態による処理の前提として、暗号通信装置Ａの不揮発性メモリには、固有情報を入力値としてハッシュ関数処理（後述する図７のＳ７０１と同じ関数）されたハッシュ値を、更に復号（後述する図７のＳ７０２と同じマスター鍵を用いた同じ復号ロジック）したデータを、固有鍵として、当該固有情報と対応付けて予め記憶している。
【００３２】
処理としては、固有鍵生成処理２１３が前述の実施の形態と異なる。図７は、固有鍵生成処理（例３）フローを示す図である。制御部２は、固有情報を関数への入力値としてハッシュ関数処理を行う（Ｓ７０１）。暗号処理部５は、関数の出力値であるハッシュ値を、不揮発性メモリ２１１から取得したマスター鍵により復号処理し（Ｓ７０２）、復号結果（復号されたハッシュ値）を固有鍵とする（Ｓ７０３）。
【００３３】
本実施の形態では、ハッシュ値を、復号処理し、復号結果を固有鍵とするので、更に耐タンパ性を向上させることができる。
【００３４】
実施の形態４．
本実施の形態では、暗号通信装置Ｂ側で、復号処理により検証用データを生成し、検証側で、検証データを暗号化することにより検証する形態について説明する。
【００３５】
処理としては、検証用データ生成処理２１５と検証処理２０５が前述の実施の形態と異なる。
図８は、検証用データ生成処理（例２）フローを示す図である。暗号処理部５は、固有鍵を用いて、乱数を復号し（Ｓ８０１）、復号結果（復号された乱数）を、検証用データとする（Ｓ８０２）。
【００３６】
図９は、検証処理（例２）フローを示す図である。暗号処理部５は、検証用データ生成処理２１５の復号処理（Ｓ８０１）に対応する暗号化処理により、検証用データを、不揮発メモリ２０１から取得した固有鍵を用いて暗号化する（Ｓ９０１）。制御部２は、暗号化結果（暗号化された検証用データ）と乱数を比較し（Ｓ９０２）、一致する場合に検証成功とする（Ｓ９０３）。つまり、暗号通信装置Ｂが正当なものと判断する。一致しない場合には、検証失敗とする（Ｓ９０４）。つまり、暗号通信装置Ｂが不正なものと判断する。
【００３７】
本実施の形態では、固有鍵を用いて、共有化している乱数を復号するので、簡単な構成で耐タンパ性を向上させることができる。
【００３８】
実施の形態５．
本実施の形態では、暗号通信装置Ｂ側で、固有鍵により第一の乱数を暗号化して一時鍵を生成し、その一時鍵により第二の乱数を暗号化して検証用データを生成し、暗号通信装置Ａ側で、同様に一時鍵を生成し、一時鍵により検証データを復号することにより検証する形態について説明する。
【００３９】
本実施の形態では、暗号通信装置Ａと暗号通信装置Ｂで、第一の乱数と第二の乱数を共有化することと、検証用データ生成処理２１５と検証処理２０５の処理が前述の実施の形態と異なる。
図１０は、検証用データ生成処理（例３）フローを示す図である。暗号処理部５は、固有鍵を用いて、第一の乱数を（第一の）暗号化処理し（Ｓ１００１）、暗号化結果（暗号化された第一の乱数）を、一時鍵とする（Ｓ１００２）。暗号処理部５は、一時鍵を用いて、第二の乱数を（第二の）暗号化処理し（Ｓ１００３）、暗号化結果（暗号化された第二の乱数）を、検証用データとする（Ｓ１００４）。
【００４０】
図１１は、検証処理（例３）フローを示す図である。暗号処理部５は、不揮発メモリ２０１から取得した固有鍵を用いて、検証用データ生成処理２１５の第一の暗号処理（Ｓ１００１）と同様の暗号化ロジックにより、第一の乱数を暗号化処理し（Ｓ１１０１）、暗号化結果（暗号化された第一の乱数）を、暗号通信装置間の一時鍵（セッション鍵）とする（Ｓ１１０２）。更に、暗号処理部５は、一時鍵を用いて、検証用データ生成処理２１５の第二の暗号処理（Ｓ１００３）に対応する復号ロジックにより、検証用データを復号する（Ｓ１１０３）。制御部２は、復号結果（復号された検証用データ）と第二の乱数を比較し（Ｓ１１０４）、一致する場合に検証成功とする（Ｓ１１０５）。つまり、暗号通信装置Ｂが正当なものと判断する。一致しない場合には、検証失敗とする（Ｓ１１０６）。つまり、暗号通信装置Ｂが不正なものと判断する。
検証用データ生成処理２１５と検証処理２０５の処理が前述の実施の形態と異なり、かつ一時鍵生成処理を検証用データ生成処理２１５と検証処理２０５から分離させた場合の実施の形態を図２０に示す。図中、図２や図１９と同一符号は同一または相当部分を示し、図２や図１９とは一時鍵を用いて相互認証を行うようにした点が大きく異なっている。具体的なフローを以下に示す。
（１）暗号通信装置Ａと暗号通信装置Ｂで乱数を共有する（２０３、２１４）。
（２）暗号通信装置Ａ側では、固有情報を暗号通信装置Ｂに送信するとともに、受信した乱数または／かつ生成した乱数と固有鍵により一時鍵を生成する（２６０）。
（３）暗号通信装置Ｂ側では、まず、固有情報からハッシュ値とマスター鍵で固有鍵を生成する（２１３）。次に、固有鍵と受信した乱数または／かつ生成した乱数から一時鍵を生成し（２５０）、前記一時鍵と受信した乱数から検証用データを生成し（２１５）、暗号通信装置Ａに送信する（２１６）。
（４）暗号通信装置Ａ側では、（２）で生成した一時鍵を用いて検証データを復号処理し、以前送信した乱数と一致していれば検証に成功し（２０５）、データ通信２２２が行われる。
【００４１】
本実施の形態では、固有鍵を用いて、共有化している乱数を暗号化して一時鍵を生成し、更に、暗号化するので、耐タンパ性をより向上させることができる。
【００４２】
実施の形態６．
本実施の形態では、暗号通信装置Ｂ側で、固有鍵により第一の乱数を暗号化して一時鍵を生成し、その一時鍵により第二の乱数を復号して検証用データを生成し、暗号通信装置Ａ側で、同様に一時鍵を生成し、一時鍵により検証データを暗号化することにより検証する形態について説明する。
【００４３】
暗号通信装置Ａと暗号通信装置Ｂで、第一の乱数と第二の乱数を共有化し、検証用データ生成処理２１５と検証処理２０５の処理が前述の実施の形態と異なる。
図１２は、検証用データ生成処理（例４）フローを示す図である。暗号処理部５は、固有鍵を用いて、第一の乱数を暗号化処理し（Ｓ１２０１）、暗号化結果（暗号化された第一の乱数）を、一時鍵とする（Ｓ１２０２）。暗号処理部５は、一時鍵を用いて、第二の乱数を復号処理し（Ｓ１２０３）、復号結果（復号された第二の乱数）を、検証用データとする（Ｓ１２０４）。
【００４４】
図１３は、検証処理（例４）フローを示す図である。暗号処理部５は、不揮発メモリ２０１から取得した固有鍵を用いて、検証用データ生成処理２１５の暗号処理（Ｓ１２０１）と同様の暗号化ロジックにより、第一の乱数を（第一の）暗号化処理し（Ｓ１３０１）、暗号化結果（暗号化された第一の乱数）を、一時鍵とする（Ｓ１３０２）。更に、暗号処理部５は、一時鍵を用いて、検証用データ生成処理２１５の復号処理（Ｓ１２０３）に対応する暗号化ロジックにより、検証用データを（第二の）暗号化する（Ｓ１３０３）。制御部２は、暗号化結果（暗号化された検証用データ）と第二の乱数を比較し（Ｓ１３０４）、一致する場合に検証成功とする（Ｓ１３０５）。つまり、暗号通信装置Ｂが正当なものと判断する。一致しない場合には、検証失敗とする（Ｓ１３０６）。つまり、暗号通信装置Ｂが不正なものと判断する。
【００４５】
本実施の形態では、固有鍵を用いて、共有化している乱数を暗号化して一時鍵を生成し、更に、復号するので、耐タンパ性をより向上させることができる。
【００４６】
実施の形態７．
本実施の形態では、暗号通信装置Ｂ側で、固有鍵により第一の乱数を復号して一時鍵を生成し、その一時鍵により第二の乱数を暗号化して検証用データを生成し、暗号通信装置Ａ側で、同様に一時鍵を生成し、一時鍵により検証データを復号することにより検証する形態について説明する。
【００４７】
暗号通信装置Ａと暗号通信装置Ｂで、第一の乱数と第二の乱数を共有化し、検証用データ生成処理２１５と検証処理２０５の処理が前述の実施の形態と異なる。
図１４は、検証用データ生成処理（例５）フローを示す図である。暗号処理部５は、固有鍵を用いて、第一の乱数を復号処理し（Ｓ１４０１）、復号結果（復号された第一の乱数）を、一時鍵とする（Ｓ１４０２）。暗号処理部５は、一時鍵を用いて、第二の乱数を暗号化処理し（Ｓ１４０３）、暗号化結果（暗号化された第二の乱数）を、検証用データとする（Ｓ１４０４）。
【００４８】
図１５は、検証処理（例５）フローを示す図である。暗号処理部５は、不揮発メモリ２０１から取得した固有鍵を用いて、検証用データ生成処理２１５の第一の復号処理（Ｓ１４０１）と同様の復号ロジックにより、第一の乱数を（第一の）復号処理し（Ｓ１５０１）、復号結果（復号された第一の乱数）を、一時鍵とする（Ｓ１５０２）。更に、暗号処理部５は、一時鍵を用いて、検証用データ生成処理２１５の暗号化処理（Ｓ１４０３）に対応する復号ロジックにより、検証用データを（第二の）復号処理する（Ｓ１５０３）。制御部２は、復号結果（復号された検証用データ）と第二の乱数を比較し（Ｓ１５０４）、一致する場合に検証成功とする（Ｓ１５０５）。つまり、暗号通信装置Ｂが正当なものと判断する。一致しない場合には、検証失敗とする（Ｓ１５０６）。つまり、暗号通信装置Ｂが不正なものと判断する。
【００４９】
本実施の形態では、固有鍵を用いて、共有化している乱数を復号して一時鍵を生成し、更に、暗号化するので、耐タンパ性をより向上させることができる。
【００５０】
実施の形態８．
本実施の形態では、暗号通信装置Ｂ側で、固有鍵により第一の乱数を復号して一時鍵を生成し、その一時鍵により第二の乱数を復号して検証用データを生成し、暗号通信装置Ａ側で、同様に一時鍵を生成し、一時鍵により検証データを暗号化することにより検証する形態について説明する。
【００５１】
暗号通信装置Ａと暗号通信装置Ｂで、第一の乱数と第二の乱数を共有化し、検証用データ生成処理２１５と検証処理２０５の処理が前述の実施の形態と異なる。
図１６は、検証用データ生成処理（例６）フローを示す図である。暗号処理部５は、固有鍵を用いて、第一の乱数を（第一の）復号処理し（Ｓ１６０１）、復号結果（復号された第一の乱数）を、一時鍵とする（Ｓ１６０２）。暗号処理部５は、一時鍵を用いて、第二の乱数を（第二の）復号処理し（Ｓ１６０３）、復号結果（復号された第二の乱数）を、検証用データとする（Ｓ１６０４）。
【００５２】
図１７は、検証処理（例６）フローを示す図である。暗号処理部５は、不揮発メモリ２０１から取得した固有鍵を用いて、検証用データ生成処理２１５の第一の復号処理（Ｓ１６０１）と同様の復号ロジックにより、第一の乱数を復号処理し（Ｓ１７０１）、復号結果（復号された第一の乱数）を、一時鍵とする（Ｓ１７０２）。更に、暗号処理部５は、一時鍵を用いて、検証用データ生成処理２１５の第二の復号処理（Ｓ１６０３）に対応する暗号ロジックにより、検証用データを暗号化する（Ｓ１７０３）。制御部２は、暗号化結果（暗号化された検証用データ）と第二の乱数を比較し（Ｓ１７０４）、一致する場合に検証成功とする（Ｓ１７０５）。つまり、暗号通信装置Ｂが正当なものと判断する。一致しない場合には、検証失敗とする（Ｓ１７０６）。つまり、暗号通信装置Ｂが不正なものと判断する。
【００５３】
本実施の形態では、固有鍵を用いて、共有化している乱数を復号して一時鍵を生成し、更に、復号するので、耐タンパ性をより向上させることができる。
【００５４】
実施の形態９．
本実施の形態では、乱数共有化処理について説明する。暗号通信装置Ａと暗号通信装置Ｂは、ともに乱数を生成することができ、相互に乱数に係るデータを交換できるように構成されている。従って、暗号通信装置Ａ側から暗号通信装置Ｂ側へ送信されるデータと、暗号通信装置Ｂ側から暗号通信装置Ａ側へ送信されるデータの一部又は全部を自在に組み合わせて、前述の実施の形態で説明した共有化する乱数として用いることができる。
【００５５】
図１８は、乱数共有化処理フローを示す図である。暗号通信装置Ａでは、乱数要素生成処理（Ｓ１８０１）を行う。具体的には、乱数生成部４により乱数要素（前述の実施の形態で説明した共有化する乱数の一部または全部となるデータであって、一般的な意味での乱数）を生成する。乱数要素含有データ送信処理（Ｓ１８０２）では、上述の乱数要素あるいは上述の乱数要素を含むデータ（乱数要素含有データ）を、暗号通信装置Ｂに送信する。暗号通信装置Ｂは、これを受信する（Ｓ１８１１）。
【００５６】
同様に、暗号通信装置Ｂでは、乱数要素生成処理（Ｓ１８１２）を行う。具体的には、乱数生成部４により乱数要素（前述の実施の形態で説明した共有化する乱数の一部または全部となるデータであって、一般的な意味での乱数）を生成する。乱数要素含有データ送信処理（Ｓ１８１３）では、上述の乱数要素あるいは上述の乱数要素を含むデータ（乱数要素含有データ）を、暗号通信装置Ａに送信する。暗号通信装置Ａは、これを受信する（Ｓ１８０４）。
【００５７】
暗号通信装置Ａでは、自分で生成した乱数要素と、受信した乱数要素含有データに含まれる乱数要素とを組み合わせて、共有化する乱数を抽出する（Ｓ１８０４）。
暗号通信装置Ｂでは、自分で生成した乱数要素と、受信した乱数要素含有データに含まれる検証側乱数要素とを同様に組み合わせて、共有化する乱数を抽出する（Ｓ１８１４）。
【００５８】
上述の例に限らず、暗号通信装置Ａ側で生成した乱数要素のみを用いることも有効である。この場合には、Ｓ１８１２とＳ１８１３とＳ１８０３を要しない。また、暗号通信装置Ｂ側で生成した乱数要素のみを用いることも有効である。この場合には、Ｓ１８０１とＳ１８０２とＳ１８１１を要しない。
【００５９】
Ｓ１８０１とＳ１８０２とＳ１８１１の一連の処理と、Ｓ１８１２とＳ１８１３とＳ１８０３の一連の処理は、前後関係が逆であっても構わない。
【００６０】
以上の処理により、乱数を共有化する手段は、共有する乱数として、以下のデータのいずれかを用いるができる。
（１）暗号通信装置Ａから暗号通信装置Ｂへ送信されるデータと、暗号通信装置Ｂから暗号通信装置Ａへ送信されるデータの全部
（２）暗号通信装置Ａから暗号通信装置Ｂへ送信されるデータの少なくとも一部と、暗号通信装置Ｂから暗号通信装置Ａへ送信されるデータの少なくとも一部の組合せ
（３）暗号通信装置Ａから暗号通信装置Ｂへ送信されるデータの全部
（４）暗号通信装置Ｂから暗号通信装置Ａへ送信されるデータの全部
（５）暗号通信装置Ａから暗号通信装置Ｂへ送信されるデータの一部
（６）暗号通信装置Ｂから暗号通信装置Ａへ送信されるデータの一部
さらに、送受信した乱数に対し、所定の演算や並べ替え、変換などを行っても同様の効果を奏し、また、乱数を暗号化あるいは復号化して固有鍵生成や一時鍵生成あるいは検証用データ生成する場合には、暗号化されたデータ、復号化されたデータ等の全部あるいはその一部を使用したり、検証用データを生成する前後に、所定の演算や並べ替え、変換などを行ったりしても同様の効果を奏することは言うまでもなく、上述した実施の形態すべてに適用される。
【００６１】
本実施の形態により、外部からの乱数の特定が困難になる。
【００６２】
ここで、ハッシュ関数について説明する。
ハッシュ関数とは、任意の長さのデータを固定長のデータに圧縮する関数であり、与えられたメッセージ（今回の場合には固有情報等、必要に応じてアプリケーションＩＤやアルゴリズムＩＤ、携帯情報などを固有情報に付加し、これをメッセージとしてもよい）から固定長（例えば１６、２０、２５６、５１２バイト等）のハッシュ値と呼ばれる擬似乱数（今回の場合は固有鍵や固有鍵生成用処理のための入力値など）を生成する演算手法をさす。ダイジェスト関数などとも呼ばれている。ハッシュ関数としては、ＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｔｈ）のＲＦＣ１３２１で示されるＭＤ５やＮＩＳＴ（Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ）のＦＩＰＳ１８０で示されるＳＨＡ１、ＳＨＡ２５６、ＳＨＡ５１２などを用いることができる。例えば、ＳＨＡ１の詳細は、ｈｔｔｐ：／／ｗｗｗ．ｉｔｌ．ｎｉｓｔ．ｇｏｖ／ｆｉｐｓｐｕｂｓ／ｆｉｐ１８０−１．ｈｔｍ等で公開されている。
【００６３】
通常、ハッシュ関数は、データが通信途中で改ざんされていないかを調べるために使用されているが、今回は、受信した一方の暗号通信装置（例えばクライアント側）の固有情報から他方の装置（例えばサーバー側）で固有鍵を生成するためにハッシュ関数を使用している。固有鍵の生成あるいは固有鍵の生成過程にハッシュ関数を用いたのは、暗号通信相手毎に異なる鍵の共有や鍵長の異なる複数の暗号アルゴリズムにも容易に対応できるようにしたものである。さらに、暗号アルゴリズムの寿命などによるアルゴリズム交換というスキームにも対応しやすい利点を有す。
【００６４】
ハッシュ関数の固定長出力と（暗号通信装置が相互に事前に定めた、あるいは（図示しない）通信トランザクション中の暗号アルゴリズムの交換プロファイル＝アルゴリズムＩＤにて定めた）暗号アルゴリズムの鍵長が異なる場合には以下のようにすることが望ましいが、ハッシュ関数の出力データ数＞＝暗号アルゴリズムの鍵長の関係であることが、装置構成や処理速度及び暗号強度の観点からは好ましい。
（１）ハッシュ関数の出力＞暗号アルゴリズムの鍵長の場合
暗号アルゴリズムの鍵長にあわせて、ハッシュ関数の出力の最上位バイトから鍵長分をそのまま使用したり、最下位バイトから順に使用したり、あるいは所望の演算を施してから暗号アルゴリズムの鍵長分のデータを生成したりする。
（２）ハッシュ関数の出力＝暗号アルゴリズムの鍵長の場合
暗号アルゴリズムの鍵長にあわせて、ハッシュ関数の出力をそのまま使用したり、所望の演算を施してから鍵長分のデータを生成したりする。
（３）ハッシュ関数の出力＜暗号アルゴリズムの鍵長の場合
所望の演算を施してから鍵長分のデータを生成したり、異なるメッセージによる２つ以上のハッシュ関数の出力データを連結したデータから鍵長分のデータを使用したりする。
【００６５】
乱数、固有情報ともに、例えば１から３２バイト程度であり、また、固有鍵長や一時鍵長としては、例えば６４ビット（８バイト）から２５６〜２０４８ビット（１６〜２５６バイト）程度を想定している。使用する乱数が、交換した乱数の一部あるいは全部であることは上述した通りであり、特に限定しない。
【００６６】
共通鍵暗号としては、ＭＩＳＴＹやＤＥＳ、ＡＥＳ等を、公開鍵暗号としては、ＲＳＡや楕円などを適宜用いることができる。
【００６７】
不揮発性メモリには１つではなく複数のマスター鍵を格納してもよい。この場合には、予め取り決めした手順、例えば、受信したアルゴリズムＩＤからどのマスター鍵を使用するかを決めるような手順にしてもよい。
【００６８】
暗号通信装置をコンピュータで構成し、各処理をプログラムにより実行させることもできる。また、プログラムを記憶媒体に記憶させ、記憶媒体からコンピュータに読み取られるようにすることもできる。
【００６９】
【発明の効果】
本発明においては、暗号通信装置Ｂで、受信した固有情報を入力値としたハッシュ関数処理により得られるハッシュ値に基づく固有鍵を生成し、固有鍵あるいは一時鍵を用いて、検証用データを生成するので、転送された固有情報を盗まれても、ハッシュ関数処理あるいは暗号処理等を特定されない限り、固有鍵あるいは一時鍵を特定されない。従って、更に乱数も盗まれた場合であっても、検証用データを再現することが出来ず、成りすますことや改ざんすることなどが困難となる。つまり、秘密情報を読み出す困難性（耐タンパ性）が向上する。また、拡張性のある情報フローであるため、暗号アルゴリズムの変更などにも容易に対応できる。
【図面の簡単な説明】
【図１】各暗号通信装置の構成を示す図である。
【図２】各暗号通信装置の処理フローと、各処理モジュール間のデータフローを示す図である。
【図３】固有鍵生成処理（例１）フローを示す図である。
【図４】検証用データ生成処理（例１）フローを示す図である。
【図５】検証処理（例１）フローを示す図である。
【図６】固有鍵生成処理（例２）フローを示す図である。
【図７】固有鍵生成処理（例３）フローを示す図である。
【図８】検証用データ生成処理（例２）フローを示す図である。
【図９】検証処理（例２）フローを示す図である。
【図１０】検証用データ生成処理（例３）フローを示す図である。
【図１１】検証処理（例３）フローを示す図である。
【図１２】検証用データ生成処理（例４）フローを示す図である。
【図１３】検証処理（例４）フローを示す図である。
【図１４】検証用データ生成処理（例５）フローを示す図である。
【図１５】検証処理（例５）フローを示す図である。
【図１６】検証用データ生成処理（例６）フローを示す図である。
【図１７】検証処理（例６）フローを示す図である。
【図１８】乱数共有化処理フローを示す図である。
【図１９】各暗号通信装置の処理フローと、各処理モジュール間のデータフローを示す図である。
【図２０】各暗号通信装置の処理フローと、各処理モジュール間のデータフローを示す図である。
【符号の説明】
１  通信部、２  制御部、３  不揮発性メモリ、４  乱数生成部、５  暗号処理部。
【図１】
2004159063.tif 000003
【図２】
2004159063.tif 000004
【図３】
2004159063.tif 000005
【図４】
2004159063.tif 000006
【図５】
2004159063.tif 000007
【図６】
2004159063.tif 000008
【図７】
2004159063.tif 000009
【図８】
2004159063.tif 000010
【図９】
2004159063.tif 000011
【図１０】
2004159063.tif 000012
【図１１】
2004159063.tif 000013
【図１２】
2004159063.tif 000014
【図１３】
2004159063.tif 000015
【図１４】
2004159063.tif 000016
【図１５】
2004159063.tif 000017
【図１６】
2004159063.tif 000018
【図１７】
2004159063.tif 000019
【図１８】
2004159063.tif 000020
【図１９】
2004159063.tif 000021
【図２０】
2004159063.tif 000022