説明

効率的相互認証方法,プログラム,及び装置

【課題】認証時に、共通鍵暗号ベースの相互認証と同等の処理速度を達成する公開鍵暗号ベースの相互認証方法を実現すること。
【解決手段】署名生成において、事前計算により署名対象データが入力された際の処理量を軽減できる署名方法と、公開鍵暗号の暗号化において、事前計算により暗号化対象データが入力された際の処理量を軽減できる公開鍵暗号方法を組み合わせ、チャレンジレスポンス型の相互認証を構成し、認証を行う一方に事前計算を行うことができる手順を集中させることで、実際の認証時の処理時間を共通鍵暗号ベースの相互認証と同等レベルに軽減する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュリティ技術に係り、特に相互に相手や機器を認証しあう技術に関する。
【背景技術】
【0002】
認証技術は通信や対話の相手が意図した人あるいは物であることを確認する技術であり、インターネット通信や不特定多数がアクセス可能な機器において、セキュリティを確保するための根幹にある技術である。認証には、暗号技術を用いた方法や、生体情報を元に本人確認を行う生体認証などがある。
【0003】
いずれにおいても、通信などの最初に認証を行い、意図した相手である場合には、入室の許可や、鍵共有プロトコル実行後にその共有鍵による暗号化通信を行う。その際、認証が安全でなく、相手の正当性があやふやな状態ならば、その後に行われるサービス提供や重要な情報の送受信などで、サービス不正利用や機密情報漏洩を防止していることを保証することはできない。認証の安全性は慎重に検討されるべきものである。
【0004】
暗号技術を用いた認証では、あるユーザ(あるいは物)は、自身のみが知っている秘密情報をもとにあるデータを作成し、それを相手に確認してもらう形で実行される。認証の課程、あるいは認証後にユーザの秘密情報が相手にもれないよう暗号技術を用いて構成されなければならない。
【0005】
暗号技術を用いた認証方法としては、主に共通鍵暗号技術をベースにしたものと公開鍵暗号技術をベースにしたものに分けられる(例えば、非特許文献1、2参照。)。
【0006】
ここでは認証しあう二者で事前に秘密鍵(Secret key)を共有しておき、一方が他者を認証する際、その秘密鍵(Secret key)を持っているもののみが可能な処理を実行できるか否かで判断する方法を共通鍵暗号技術ベースの認証と呼ぶ。共通鍵暗号を用いて、乱数を暗号化し、相手が正しく復号できるか否かを確認する、共通鍵暗号ベースのチャレンジレスポンス型認証や、乱数に対して相手にメッセージ認証子(Message Authentication Code、MAC)を生成してもらい、正しいMACであるかどうかを確認する、MACベースの認証などが代表的である。
【0007】
公開鍵暗号技術ベースの認証は、証明者(自己を証明する人(物))のみが秘密鍵(Private key)を持ち、検証者は、対応する公開鍵を用いて秘密鍵(Private key)を持っているもののみが可能な処理を実行できるか否かで正しい証明者か否かを判断する方法のことをさす。RSA暗号などの公開鍵暗号を用いて、暗号化した乱数を相手が正しく復号できるか否かを確認する、公開鍵暗号ベースの認証や、乱数に対して相手にデジタル署名を生成してもらい、正しい署名であるかどうかを確認する、デジタル署名ベースの認証、また、認証専用に設計された公開鍵暗号技術ベースの認証方法(例えば、非特許文献3参照。)などがある。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】Needham, Roger; Schroeder, Michael (December 1978), "Using encryption for authentication in large networks of computers.", Communications of the ACM 21 (12): 993999.
【非特許文献2】Needham, R. M.; Schroeder, M. D. (1987). "Authentication revisited". ACM SIGOPS Operating Systems Review 21 (1): 7.
【非特許文献3】C.P. Schnorr, Efficient identification and signatures for smart cards, in G. Brassard, ed. Advances in CryptologyCrypto '89, 239-252, Springer-Verlag, 1990. Lecture Notes in Computer Science 435.
【発明の概要】
【発明が解決しようとする課題】
【0009】
暗号技術を用いた認証において、共通鍵暗号技術ベースの認証は一般に認証する二者における処理速度が速く、実装規模も比較的小さいため、ICカードなどの低リソースデバイスでの認証や、大量のユーザを同時に処理しなければならないサーバ、また、非常に短時間に認証を終えなければならない改札機などで利用されている。
【0010】
しかし、鍵の事前共有のためのコストや、ユーザ数の増大による必要な秘密鍵(Secret key)の個数の爆発的増大などの問題があり、システムによっては複数ユーザにひとつの秘密鍵(Secret key)を割り当てるなどの妥協が採用されている場合もある。しかし明らかにこのような妥協は安全性に問題がある。例えば極端な例として、システムで共通のひとつの秘密鍵(Secret key)で運用する場合などは、あるひとりのユーザからの鍵の漏洩によりシステム全体の安全性が損なわれ、鍵の総入れ替えなどの大規模な復旧処理が発生する。このように、ユーザ数の多いシステムでは安全性を確保するためには、鍵管理のコストをかけなければならない。
【0011】
一方、公開鍵暗号技術ベースの認証では、各ユーザがひとつの秘密鍵(Private key)を持ち、対応する公開鍵を公開するため、共通鍵暗号技術ベースの認証に比べ、鍵の管理コストが少なくて済む。すなわち、ひとりのユーザから漏れる可能性のある秘密情報は、そのユーザ自身の秘密鍵(Private key)であり、システム全体に及ぼす影響は最小限である。
【0012】
しかし一般に処理速度は共通鍵暗号技術ベースの認証に比べ、100倍〜1000倍程度遅く、また実装に必要なメモリ領域や、回路規模も大きくなる。ICカードに実装し利用されている例もあるが、認証のための処理時間を1秒から数秒かけてもよいシステムでなければならない。
【0013】
公共交通機関の改札でのICカードと改札機との相互の認証ではその処理時間は許容できず、共通鍵暗号技術ベースの認証を用いざるを得ないのが現状である。また、高速ですれ違う車と車との間の通信などで瞬時に認証する必要がある場合にも公開鍵暗号技術ベースの認証では間に合わない。
【0014】
このように、暗号技術を用いた認証において、公開鍵暗号技術ベースの認証のような鍵管理の容易さを持ちつつ、共通鍵暗号技術ベースのような処理速度を達成する認証方法の実現が求められている。
【課題を解決するための手段】
【0015】
本明細書では、相互認証において、事前計算を実施することにより、実際の処理対象が入力された後の処理が共通鍵暗号並みに高速に実行できる公開鍵暗号と、デジタル署名(online/offline公開鍵暗号、online/offline署名とも呼ばれる)と、を組み合わせて利用する相互認証技術が開示される。
【0016】
開示にされるように、事前計算を行うことで、実際の認証時には共通鍵暗号技術ベースの相互認証と同等の処理速度を達成することが可能となる。
【0017】
これにより、鍵管理のコストを抑えつつ、ICカードなどの低リソースデバイスでの相互認証や、瞬時の処理が必要な、高速な相互認証、また、大量ユーザの同時処理を行うサーバの高速化が可能となる。
【0018】
一例として、開示されるのは、通信でデータの送受信が可能な二種類の装置Aと装置Bを備えるシステムにおいて、上記装置Aと上記装置Bとが互いに相手装置の正当性を確認する相互認証方法である。
【0019】
上記相互認証方法は、
上記装置Aが、上記装置Bの正当性を確認するステップにおいて、
上記装置Aによる、
認証時に、乱数rAを生成するステップと、
生成した上記乱数rAを上記装置Bに送信するステップと、
上記装置Bによる、
上記乱数rAを受信した後、記憶する署名生成用事前計算データを利用して、上記乱数rAに対する署名を生成するステップと、
生成した上記署名を上記装置Aに送信するステップと、
上記装置Aによる、
上記装置Bの署名検証鍵を用いて、受信した上記署名を検証するステップと、
上記署名が正しいと判断すれば上記装置Bを正当と判断し、正しくないと判断すれば上記装置Bを不当と判断するステップと、を備えることを特徴とする。
【0020】
さらに、上記相互認証方法は、相互認証を行う上記装置Bが、上記装置Aの正当性を確認するステップにおいて、
上記装置Bによる、
認証時に、乱数rBを生成するステップと、
上記乱数rBを、記憶する暗号化用事前計算データを用いて公開鍵暗号化をするステップと、
上記暗号化の結果である暗号文を上記装置Aに送信するステップと、
上記装置Aによる、
上記装置Aの秘密鍵(Private key)を用いて、受信した上記暗号文を復号化するステップと、
上記復号化結果を上記装置Bに送信するステップと、
上記装置Bによる、
上記記憶した乱数rBと、上記装置Aから受信した復号化結果とを照合するステップと、
上記乱数rBと上記復号化結果とが一致していれば上記装置Aを正当と判断し、一致していなければ上記装置Aを不当と判断するステップと、を備えることを特徴とする。
【発明の効果】
【0021】
本発明により、鍵管理コストを抑え、かつ、高速な相互認証が可能になる。
【図面の簡単な説明】
【0022】
【図1】第一の実施形態である相互認証装置の概略を例示する図。
【図2】相互認証における署名利用部分のシーケンスを例示する図。
【図3】相互認証における公開鍵暗号利用部のシーケンスを例示する図。
【図4】第二の実施形態におけるリーダライタとICカードの構成を例示する図。
【図5】第二の実施形態における代理事前計算処理のシーケンスを例示する図。
【図6】第三の実施形態における大量ユーザとサーバの構成を例示する図。
【図7】第四の実施形態における走行車両と路側機の構成を例示する図。
【発明を実施するための形態】
【0023】
本発明の実施の形態を図面を用いて説明する。
【実施例1】
【0024】
図1は、本発明の第一の実施形態である相互認証装置A100と相互認証装置B200が実行する相互認証の概略図である。
【0025】
図示するように、相互認証装置A100は、処理部110と、記憶部120と、乱数生成部131と、外部通信部132と、を備える。
【0026】
相互認証装置Bは、処理部210と、記憶部220と、乱数生成部231と、外部通信部232と、を備える。
【0027】
相互認証装置A100の外部通信部132と、相互認証装置B200の外部通信部232は、通信線310と、ネットワークを介し、通信可能である。
【0028】
本実施形態では、相互認証装置A100と相互認証装置Bの相互認証をおこなう。
【0029】
相互認証装置A100の処理部110は、署名検証部111と、公開鍵暗号復号化部112と、を備える。相互認証装置A100の記憶部120は、相互認証装置B200の署名検証鍵を記憶する署名検証鍵記憶領域121と、相互認証装置A100の復号鍵を記憶する公開鍵暗号復号鍵記憶領域122と、を備える。
【0030】
相互認証装置B200の処理部210は、署名生成部211と、公開鍵暗号暗号化部212と、署名生成、公開鍵暗号暗号化に用いる事前データ計算部213と、を備える。相互認証装置B200の記憶部220は、相互認証装置200の署名生成鍵を記憶する署名生成鍵記憶領域221と、相互認証装置Aの公開鍵を記憶する公開鍵暗号暗号鍵記憶領域222と、事前計算データ記憶領域223と、一時データ記憶領域224と、を備える。
【0031】
署名検証部111は、署名検証鍵記憶領域121から署名検証鍵を読み出し、外部通信部132を経て得られた署名検証対象データに対して署名検証を行う。
【0032】
公開鍵暗号復号化部112は、公開鍵暗号復号鍵記憶領域122から復号鍵を読み出し、外部通信部132を経て得られた復号対象データの復号を行う。
【0033】
署名生成部211は、署名生成鍵記憶領域221から署名生成鍵を読み出し、事前計算データ記憶領域223から事前計算データを読み出し、乱数生成部231から乱数を得て、外部通信部232を経て得られた署名生成対象データに対して署名生成を行う。
【0034】
公開鍵暗号暗号化部212は、公開鍵暗号暗号鍵記憶領域222から暗号鍵を読み出し、事前計算データ記憶領域223から事前計算データを読み出し、乱数生成部231から得られた乱数を暗号化する。
【0035】
事前データ計算部213は、相互認証装置A100と相互認証装置B200とが相互認証を行う前の任意の時点で、署名生成鍵記憶領域221から読み出した署名生成鍵と、乱数生成部231から得られた乱数を用いて、署名対象のデータが与えられる前に実行可能な、署名生成に必要な全ての計算を行い、その結果を事前計算データ記憶領域223に保存する。また事前データ計算部213は相互認証装置A100と相互認証装置B200とが相互認証を行う前の任意の時点で、公開鍵暗号暗号鍵記憶領域222から読み出した暗号鍵と、乱数生成部231から得られた乱数を用いて、暗号化対象のデータが与えられる前に実行可能な、暗号化に必要な全ての計算を行い、その結果を事前計算データ記憶領域223に保存する。
【0036】
相互認証装置A100と相互認証装置B200の、上記処理部110,210の各機能は、それぞれ、CPUと記憶装置と通信装置とを備えた計算機において、記憶装置に格納されたプログラムをCPUが実行することにより、実現される。また、乱数生成部131、231は、同様に、CPUがプログラムを実行することにより実現されても良いし、ハードウェアによって実現されてもよい。
【0037】
プログラムは、予め記憶装置に格納されていても良いし、必要に応じて、図示しない外部インタフェースや通信装置と、上記計算機が利用可能な媒体を介して、他の装置から上記記憶装置に導入されてもよい。媒体とは、たとえば、外部インタフェースに着脱可能な記憶媒体、または通信媒体(すなわち有線、無線、光などのネットワーク、または当該ネットワーク320を伝搬する搬送波やディジタル信号)を指す。
【0038】
相互認証装置A100と相互認証装置B200との間の相互認証は、まず相互認証装置Aが乱数生成部131から乱数rAを得て、外部通信部132から相互認証装置Bに送信する。乱数rAは通信線310、ネットワーク320などを経由して外部通信部232に送られる。
【0039】
相互認証装置Bは送られた乱数rAに対し、上記手順で署名sBを生成する。さらに乱数生成部231から乱数rBを得て、これを一時データ記憶領域224に記憶する。さらに上記手順でrBを暗号化して暗号文Cを計算する。外部通信部232はsBとCを相互認証装置Aに送信する。
【0040】
相互認証装置Aは外部通信部132を経て得られたsBとCに対し、まずsBについて、上記手順で署名検証を行う。この署名を正しいと判断した場合は、相互認証装置Bを正しいと判断し、次にCを上記手順で復号し、復号結果rB’を再び外部通信部132を経て相互認証装置Bに送信する。署名を正しいと判断しない場合は相互認証装置Bを正しいと判断しない。
【0041】
相互認証装置Bは、外部通信部232を経て受信したrB’と一時データ記憶領域224から読み出したrBとを比較して一致していれば相互認証装置Aを正しいと判断する。一致していなければ相互認証装置Aを正しいと判断しない。
【0042】
上記相互認証で用いる署名方法は、署名生成において署名対象のデータが入力される前に事前計算をすることにより署名対象データが入力された際の処理量を削減できる方法ならば何でも良い。また、上記相互認証方法で用いる公開鍵暗号方法は、暗号化において暗号化対象のデータが入力される前に事前計算をすることにより暗号化対象データが入力された際の処理量を削減できる方法ならば何でも良い。
【0043】
図2は署名方法の例として楕円シュノア署名(非特許文献3参照)を用いた場合の相互認証の署名利用部分の処理を示すシーケンス図である。
【0044】
楕円シュノア署名に適した楕円曲線上の有理点Pが固定されていて、相互認証装置A100の署名検証鍵記憶領域121と、相互認証装置B200の署名生成鍵記憶領域に記憶されている。相互認証装置B200の秘密鍵(Private key)xは署名生成鍵記憶領域221に記憶され、公開鍵Q=xPは署名検証鍵記憶領域121に記憶されている。
【0045】
まず相互認証装置B200側の事前計算として、署名生成鍵記憶領域から有理点Pのデータを読み出し(S10)、次に乱数生成部231で乱数rを生成し、事前データ計算部213に送る(S11)。事前データ計算部213はR=rPを計算し、rとRを事前計算データ記憶領域223に記憶させる(S12)。
【0046】
次に、相互認証装置A100が相互認証装置Bを認証する場合、まず、乱数生成部131で乱数rAを生成して外部通信部132を通じて相互認証装置B200に送信する(S13)。
【0047】
相互認証装置B200はrAを外部通信部232を通じて受信した後、事前計算データ記憶領域223からrとRを読み出し(S14)、また署名生成鍵記憶領域221から署名生成鍵xを読み出す(S15)。
【0048】
署名生成部211は、S=r+H(rA,R)を計算する。ここでHはハッシュ関数である。相互認証装置B200は[R,H(rA,R)、S]をrAに対する署名値として外部通信部232を通じて相互認証装置A100に送信する(S16)。
【0049】
署名値[R,H(rA,R),S]を外部通信部132を通じて受信した相互認証装置A100は、署名検証部111において、まず署名検証鍵記憶領域121から相互認証装置B200の公開鍵QとシステムパラメータPを読み出し(S17)、R=SP+H(rA,R)Qが成立するか否かをチェックする。
【0050】
成立した場合には相互認証装置B200を正しいと判断し、そうでない場合には不正と判断する。
【0051】
本実施例で用いる署名方法は上記楕円シュノア署名以外にも、署名生成処理において事前計算をすることで署名対象データの入力後の処理が大幅に軽減され、かつ署名として安全であるような方法であれば適用可能である。
【0052】
図3は公開鍵暗号の例として変形エルガマル暗号を用いた場合の相互認証の公開鍵暗号利用部分の処理を示すシーケンス図である。
【0053】
変形エルガマル暗号に適した楕円曲線上の有理点P’が固定されていて、相互認証装置B200の公開鍵暗号暗号鍵記憶領域に記憶されている。相互認証装置A100の秘密鍵(Private key)x’は公開鍵暗号復号鍵記憶領域122に記憶され、公開鍵Q’=x’P’は公開鍵暗号暗号鍵記憶領域222に記憶されている。
【0054】
まず相互認証装置B200側の事前計算として、公開鍵暗号暗号鍵記憶領域222から有理点P’、Q’のデータを読み出し(S20)、次に乱数生成部231で乱数r1を生成し、事前データ計算部213に送る(S21)。事前データ計算部213はR1=r1P’と、Q1=r1Q’と、を計算し、事前計算データ記憶領域223に記憶させる(S22)。
【0055】
次に、相互認証装置B200が相互認証装置A100を認証する場合、まず、乱数生成部131で乱数r2、rBを生成して公開鍵暗号化部212に送る(S23)。
【0056】
また、rBは一時データ記憶領域224にも送られ記憶される(S24)。
【0057】
公開鍵暗号暗号化部212は公開鍵暗号暗号鍵記憶領域222から定数c0を読み出し(S26)、共通鍵暗号Eを用いてC=E(Q1,c0||r2||rB)を計算する。ここで共通鍵暗号Eの鍵はQ1、暗号化対象データはc0||r2||rBである。また||はデータの結合を表す。
【0058】
相互認証装置B200は外部通信部232を通じて相互認証装置A100に[R1,C]を送信する(S27)。
【0059】
相互認証装置A100は外部通信部132を通じて[R1,C]を受信した後、公開鍵暗号復号鍵記憶領域122から復号鍵x’を読み出し(S28)、Q1=x’R1、c0||r2||rB’=D(Q1,C)を計算する。ここでDは共通鍵暗号Eの復号化関数で、鍵はQ1、復号化対象データはCである。
【0060】
公開鍵暗号復号化部112は定数c0が正しいものであることを確認し、正しければrB’を外部通信部132を通じて相互認証装置B200に送信する(S29)。
【0061】
外部通信部232を通じてrB’を受信した相互認証装置B200は、一時データ記憶領域224からrBを読み出し(S30)、rBとrB’が一致するならば相互認証装置A100を正しいと判断し、異なるなら不正と判断する。
【0062】
本実施例で用いる公開鍵暗号は上記変形エルガマル暗号以外にも、暗号化処理において事前計算をすることで暗号化対象データの入力後の処理が大幅に軽減され、かつ暗号として安全であるような方法であれば適用可能である。
【0063】
本実施例において、署名を用いた処理部分と、公開鍵暗号を用いた処理部分の順番は入れ替えても良い。
【実施例2】
【0064】
次に、第二の実施形態である、ICカードなどの低リソースデバイスと比較的計算能力の高いサーバなどとの相互認証の方法について説明する。
【0065】
例えば図4は、ICカード400とそのリーダライタ300の構成図である。これらは通信手段501、および502を持ち、データの送受信が可能である。通信手段は接触、非接触を問わない。
【0066】
第一の実施形態における相互認証装置A100としてリーダライタ300を、相互認証装置B200としてICカード400を適用する。
【0067】
ICカード400の事前データ計算部は通電している間に、以降の想定される相互認証の回数に必要な事前計算を実施して、事前計算データを記憶しても良いし、出荷時などに事前に事前計算データを計算し、記憶領域に保存していても良い。これらの場合、事前計算データの消費を管理しながら、相互認証の度に、毎回、新しい事前計算データを用いればよい。
【0068】
また、図5で説明するように、各相互認証が正常に終了した段階で信頼したサーバに次回用の事前計算を代理で実行してもらい、計算結果を受信して保存する方法でもよい。
【0069】
図5は第n回目の相互認証の手順を示すシーケンス図である。
【0070】
ICカード400は第n回目の相互認証に必要な事前計算データを記憶している。リーダライタ300とICカード400は実施例1に記載の方法で相互認証を行う(S13、S16、S27、S29)。ここで通信S16とS27は並行して行ってもよい。また、S13、S16とS27、S29の順番を入れ替え、S27、S29、S13、S16の順番で通信してもよい。その場合、通信S29とS13とを並行して行ってもよい。
リーダライタ300がICカード400を正しいと判断し、またICカード400がリーダライタ300を正しいと判断した場合、リーダライタ300はICカード400の第n+1回目の認証のために必要な事前計算を代理で実行する。その事前計算データをICカード400に送信する(S40)。
【0071】
ICカード400はその事前計算データを事前計算データ記憶領域に記憶させ、第n+1回目の相互認証時に利用する。
【0072】
リーダライタ300が代理で行う事前計算は、事前計算を行う専用の計算機を別途利用しても良い。
【0073】
相互認証においてどちらか一方が他方を正しいと判断しなかった場合には、その後の処理やサービスを停止してもよいし、再度、相互認証要求をしてもよい。その場合でも、規定の回数の相互認証を行い、全て正しいと判断しなかった場合にはその後の処理やサービスを停止する。
【実施例3】
【0074】
次に、第三の実施形態である、大量のユーザとの相互認証を同時に行うサーバでの実施形態について説明する。
【0075】
大量のユーザは、センサネットワークにおける各センサや、スマートグリッドにおいて用いられる、各ユーザの消費電力状況などの情報をサーバに送信する機能を持つタップ(スマートタップ)などでもよい。
【0076】
図4は、大量のユーザとの相互認証を行うサーバの構成図である。
【0077】
サーバ600は、ネットワーク700を通じて大量のユーザ500と通信可能である。
【0078】
第一の実施形態における相互認証装置A100としてサーバ600を、相互認証装置B200として大量のユーザ500における各ユーザを適用する。サーバ600は事前計算を実施する事前計算サーバ900と通信路800を通じて通信可能で、事前計算サーバは相互認証装置A100における事前計算を実施するとしてもよい。
【0079】
サーバ600は、ユーザ数や頻度に応じて、必要な回数分の事前計算データを用意する。
【0080】
実際に、大量ユーザ500からの相互認証要求がほぼ同時に来た場合、上記事前計算データを用いて、各ユーザ毎に実施例1に記載の方法で相互認証を実施する。
【実施例4】
【0081】
第四の実施形態である、走行中の車両と、道路に設置された、車両との通信装置(以下、路側機)との相互認証を行う実施形態について説明する。
【0082】
図7は走行車両1020と、路側機1010の構成図である。
【0083】
走行車両1020と路側機1010は無線通信1030によりデータの送受信ができる。
【0084】
第一の実施形態における相互認証装置A100として車両1020を、相互認証装置B200として路側機1010を適用する。
【0085】
路側機1010は、通信部1011と、相互認証装置A1012を備える。
【0086】
車両1020は、通信部1021と、相互認証装置B1022を備える。
【0087】
車両1020は、相互認証を実行する前までに実施例1に記載の事前計算データを計算し、相互認証装置B1022内の記憶部に記憶する。
【0088】
車両1020が走行中に、路側機1010との無線通信1031および1032が可能な範囲に近づいたとき、通信を開始し、実施例1に記載の手順で相互認証を実施する。
【0089】
相互認証の結果、車両1020、または路側機1010のいずれかが他方を正しいと判断しなかった場合、認証エラーであることを他方に通知し、それ以降に発生した通信内容に従った処理は実行しない。車両1020が他の路側機との無線通信が可能な範囲に近づいたときには、再度、相互認証をおこなう。
【符号の説明】
【0090】
100:点生成装置、111:記憶部、112:有理関数記憶領域、113:基底記憶領域、114:パラメータ記憶領域、120:処理部、121:有理関数計算部、122:有限体演算計算部、131:入力部、132:出力部、133:通信部。

【特許請求の範囲】
【請求項1】
通信でデータの送受信が可能な二種類の装置Aと装置Bを備えるシステムにおいて、前記装置Aと前記装置Bとが互いに相手装置の正当性を確認する相互認証方法であって、
前記装置Aが、前記装置Bの正当性を確認するステップにおいて、
前記装置Aによる、
認証時に、乱数rAを生成するステップと、
生成した前記乱数rAを前記装置Bに送信するステップと、
前記装置Bによる、
前記乱数rAを受信した後、記憶する署名生成用事前計算データを利用して、前記乱数rAに対する署名を生成するステップと、
生成した前記署名を前記装置Aに送信するステップと、
前記装置Aによる、
前記装置Bの署名検証鍵を用いて、受信した前記署名を検証するステップと、
前記署名が正しいと判断すれば前記装置Bを正当と判断し、正しくないと判断すれば前記装置Bを不当と判断するステップと、を備える
ことを特徴とする相互認証方法。
【請求項2】
請求項1に記載の相互認証方法であって、
相互認証を行う前記装置Bが、前記装置Aの正当性を確認するステップにおいて、
前記装置Bによる、
認証時に、乱数rBを生成するステップと、
前記乱数rBを、記憶する暗号化用事前計算データを用いて公開鍵暗号化をするステップと、
前記暗号化の結果である暗号文を前記装置Aに送信するステップと、
前記装置Aによる、
前記装置Aの秘密鍵(Private key)を用いて、受信した前記暗号文を復号化するステップと、
前記復号化結果を前記装置Bに送信するステップと、
前記装置Bによる、
前記記憶した乱数rBと、前記装置Aから受信した復号化結果とを照合するステップと、
前記乱数rBと前記復号化結果とが一致していれば前記装置Aを正当と判断し、一致していなければ前記装置Aを不当と判断するステップと、を備える
ことを特徴とする相互認証方法。
【請求項3】
請求項1または2に記載の相互認証方法であって、
前記装置Aと前記装置Bとが互いに相手装置を正当と判断した場合、前記暗号化用事前計算データまたは、前記署名生成用事前計算データを、前記装置Aが計算し、前記装置Bに送信する
ことを特徴とする相互認証方法。
【請求項4】
請求項1または3に記載の相互認証方法であって、
前記装置Aまたは前記装置Bによる、前記署名生成用事前計算データを計算するステップとして、
乱数rを生成するステップと、
楕円曲線上の点のスカラー倍算R=rPを計算するステップと、
前記乱数rと前記スカラー倍算結果Rを記憶するステップと、を備える
ことを特徴とする相互認証方法。
【請求項5】
請求項2または3に記載の相互認証方法であって、
前記装置Aまたは前記装置Bによる、前記暗号化用事前計算データを計算するステップとして、
乱数r1を生成するステップと、
楕円曲線上の点のスカラー倍算R1=r1P’を計算するステップと、
楕円曲線上の点のスカラー倍算Q1=r1Q’を計算するステップと、
R1、Q1を記憶するステップと、を備える
ことを特徴とする相互認証方法。
【請求項6】
請求項4に記載の相互認証方法であって、
前記装置Aと前記装置Bが、楕円曲線上の固定された有理点Pと、前記装置Bの署名検証鍵であるQ=xPと、を記憶し、
前記装置Bが、署名生成鍵xを記憶し、
前記装置Bによる前記乱数rAに対する署名を生成するステップにおいて、
受信した前記乱数rAと、前記スカラー倍算結果Rと、に基づき、ハッシュ値H(rA,R)を計算し、S=r+H(rA,R)を計算し、[R,H(rA,R),S]を前記乱数rAに対する署名とするステップと、を備え、
前記装置Aによる受信した前記署名を検証するステップにおいて、
受信した前記署名[R,H(rA,R),S]について、前記装置Bの署名検証鍵Qを用いて、R=SP+H(rA,r)Qが成立するかどうかを調べることにより、前記署名[R,H(rA,R),S]を検証するステップと、を備える
ことを特徴とする相互認証方法。
【請求項7】
請求項5に記載の相互認証方法であって、
相互認証を行う前記装置Aと前記装置Bが、楕円曲線上の固定された有理点P’と、前記装置Aの公開鍵Q’=x’P’と、を保持し、
前記装置Aが、復号化鍵x’を記憶し、
前記装置Bによる、前記装置Aの正当性を確認するステップにおいて、
乱数r2と乱数rBを生成するステップと、
前記装置A、前記装置Bが共通に記憶する定数c0、並びに、Q1を鍵とし、および、c0||r2||rBを暗号化対象データとする共通鍵暗号E、を用いて、C=E(Q1,c0||r2||rB)を計算するステップと、
[R1,C]をAに送信するステップと、
前記装置Aによる、
前記装置Aの復号化鍵x’を用いて、受信した[R1,C]について、
Q1=x’R1を計算するステップと、
Q1を鍵とし、復号化対象データをCとする、前記共通鍵暗号Eに対応した復号化関数D、を用いて、c0||r2||rB’=D(Q1,C)を計算するステップと、
記憶する定数c0と、前記復号結果のc0とを照合するステップと、
前記定数c0と前記復号結果c0とが一致していれば、前記rB’を前記復号化結果とするステップと、を備える
ことを特徴とする相互認証方法。
【請求項8】
請求項1から7のいずれか一に記載の相互認証方法であって、
前記システムは、さらに、前記装置Bと通信可能な装置B’を備え、
前記装置B’による、
請求項4に記載の署名生成用事前計算データを計算するステップ、または、請求項5に記載の暗号化用事前計算データを計算するステップと、
計算した前記署名生成用事前計算データ、または、前記暗号化用事前計算データを、前記装置Bに送信するステップと、を備える
ことを特徴とする相互認証方法。
【請求項9】
請求項1から7のいずれか一に記載の相互認証方法であって、
前記システムは、複数の前記装置Aを備え、
1つの前記装置Aと、前記装置Bとの相互認証において、前記装置Aおよび/または前記装置Bを不当と判断した場合に、前記装置Bと他の前記装置Aとによる、請求項1または請求項2に記載のステップを実行するステップを備える
ことを特徴とする相互認証方法。
【請求項10】
通信でデータの送受信が可能な二種類の装置Aと装置Bを備え、前記装置Aと前記装置Bとが互いに相手装置の正当性を確認する相互認証システムであって、
前記装置Aは、
乱数rAを生成する手段と、
生成した前記乱数rAを前記装置Bに送信する手段と、
前記装置Bの署名検証鍵を用いて、前記装置Bが生成した署名を検証する手段と、
前記署名が正しいと判断すれば前記装置Bを正当と判断し、正しくないと判断すれば前記装置Bを不当と判断する手段と、を備え、
前記装置Bは、
記憶する署名生成用事前計算データを利用して、前記装置Aから受信した前記乱数rAに対する署名を生成する手段と、
生成した前記署名を前記装置Aに送信する手段と、を備える
ことを特徴とする相互認証システム。
【請求項11】
請求項10に記載の相互認証システムであって、
前記装置Bは、
乱数rBを生成する手段と、
前記乱数rBを、記憶する暗号化用事前計算データを用いて公開鍵暗号化をする手段と、
前記暗号化の結果である暗号文を前記装置Aに送信する手段と、
前記乱数rBと、前記装置Aから受信した復号化結果とを照合する手段と、
前記乱数rBと前記復号化結果とが一致していれば前記装置Aを正当と判断し、一致していなければ前記装置Aを不当と判断する手段と、を備え、
前記装置Aは、
前記装置Aの秘密鍵(Private key)を用いて、受信した前記暗号文を復号化して前記復号化結果とする手段と、
前記復号化結果を前記装置Bに送信する手段と、を備える
ことを特徴とする相互認証システム。
【請求項12】
通信でデータの送受信が可能な二つのコンピュータAとコンピュータBに、互いに相手コンピュータの正当性を確認する相互認証システムを実現させるプログラムであって、
前記コンピュータAが、前記コンピュータBの正当性を確認するステップとして、
前記コンピュータAに、
乱数rAを生成するステップと、
生成した前記乱数rAを前記コンピュータBに送信するステップと、
前記コンピュータBの署名検証鍵を用いて、前記コンピュータBが生成した署名を検証するステップと、
前記署名が正しいと判断すれば前記コンピュータBを正当と判断し、正しくないと判断すれば前記コンピュータBを不当と判断するステップと、を実行させ、
前記コンピュータBに、
記憶する署名生成用事前計算データを利用して、前記コンピュータAから受信した前記乱数rAに対する署名を生成するステップと、
生成した前記署名を前記コンピュータAに送信するステップと、を実行させる
ことを特徴とするプログラム。
【請求項13】
請求項12に記載のプログラムであって、
前記コンピュータBが、前記コンピュータAの正当性を確認するステップとして、
前記コンピュータBに、
乱数rBを生成するステップと、
前記乱数rBを、記憶する暗号化用事前計算データを用いて公開鍵暗号化をするステップと、
前記暗号化の結果である暗号文を前記コンピュータAに送信するステップと、
前記乱数rBと、前記コンピュータAから受信した復号化結果とを照合するステップと、
前記乱数rBと前記復号化結果とが一致していれば前記コンピュータAを正当と判断し、一致していなければ前記コンピュータAを不当と判断するステップと、を実行させ、
前記コンピュータAに、
前記コンピュータAの秘密鍵(Private key)を用いて、受信した前記暗号文を復号化して前記復号化結果とするステップと、
前記復号化結果を前記コンピュータBに送信するステップと、を実行させる
ことを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2011−250335(P2011−250335A)
【公開日】平成23年12月8日(2011.12.8)
【国際特許分類】
【出願番号】特願2010−123722(P2010−123722)
【出願日】平成22年5月31日(2010.5.31)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】