説明

鍵認証方式

【課題】少なくとも1組の通信者間で情報を送受信するのに用いる通信システムにおいてセキュリティを向上させる方法を提供すること。
【解決手段】一般に、通信者間で行われる通信は、一方の通信者が、所定のアルゴリズムの算術的属性に応じた鍵対を生成し、その一方の鍵、即ち公開鍵を証明書付きで相手側に送信すると共に、鍵対のうち秘密鍵を用いて署名を生成および送信する工程と、受信者が、相手側の通信者に上記署名を送信して上記署名を確認する工程とを有する。本発明は、さらに、上記所定のアルゴリズムの要件により決定される算術的属性に合致する公開鍵を確認する工程を提供する。

【発明の詳細な説明】
【技術分野】
【0001】
(発明の属する技術分野)
本発明は、通信システムのセキュリティ確保(secure)に関するものであり、特に、そのようなシステムにおけるパラメータや鍵の妥当性検証(認証;validate)を行う方式(手順;scheme)に関する。
【背景技術】
【0002】
(従来の技術)
セキュリティ機能を持つ(secure)データ通信システムを用いて、1組の通信者間で情報の送受信が行われる。交換される情報の少なくとも一部は、送信者が所定の数学的演算を行うことによって、暗号化される。そして、受信者は、上記の数学的演算に応じた相補的な数学的演算を行って、その暗号を解読する。公開鍵あるいは対称型鍵システムでは、通信者同士がいくつかのパラメータを予め知っておく必要がある。例えば、これまでにも、様々な方式やプロトコルが考案されており、送信者の公開鍵や身元などの妥当性検証(認証;validate)が行われている。これらのシステムのセキュリティ(security)あるいは妥当性は、署名が妥当なものか否かに依存し、システムパラメータ(もしあれば)が妥当であり、公開鍵が妥当であり、かつ、署名が確認(検証;verify)された場合に限り確保される。さらに、非対称型システムのセキュリティが確保されるのは、システムパラメータ(もしあれば)が妥当であり、暗号化公開鍵が妥当であり、対称型鍵が指定通りにフォーマットされており、かつ、対称型鍵の復号検査(recovery checks )でフォーマットの妥当性が検査された場合に限られる。
【0003】
一方、鍵一致プロトコルのセキュリティが確保されるのは、システムパラメータ(もしあれば)が妥当であり、鍵一致公開鍵が妥当であり、かつ、共有秘密および対称型鍵が規格の指定通り生成された場合に限られる。以上の全てにおいては、公開鍵あるいは対称型鍵、即ち共有秘密が、プロトコル方式にて指定された通りに生成され、妥当であるということを前提として考えている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、これらのパラメータが偽物である場合や何らかの形で欠陥がある場合には、問題が生じてしまう。
【0005】
以下の例を用いて、公開鍵暗号システムの1つあるいは複数のパラメータにおける欠陥が、どのようなことを意味するかについて説明する。例えば、ディジタル署名を用いて送信者の正当性(authenticity)を示す場合を考える。受信者Aが送信者Bから証明書付きの公開鍵を受信すると、Aは証明書を確認する。次に、BがAに署名付きのメッセージを送信すると、Aは署名を確認し、さらなる通信が可能と判断することができる。しかしながら、この場合、Bが公開鍵を故意に改ざんすれば、この妥当でない公開鍵を受信者Aが識別できなくなる。同様に、参加者Cが鍵対を生成し、続いて公開鍵証明書を受信し、その後に、上記参加者Cが、証明書に含まれている公開鍵が妥当であると仮定して、証明書とそれに続いて署名付きのメッセージをBに送信した場合を考える。上記参加者Bは、Cの鍵情報を決定することができる。上記の両方の場合から分かるように、署名を確認する際に認証されていないパラメータを使用することに起因して問題が生じる可能性がある。
【0006】
鍵送信プロトコルでは、通信者Aが誤って違う相手に対称型鍵を送信してしまうことがある。例えば、通信者Aが証明書付きの公開鍵を送信者Bから受信した場合に、Aは該証明書を確認し、公開鍵により暗号化された対称型鍵および対称型鍵により暗号化されたメッセージをBに送信する。これにより、Aが承認される。逆に、通信者の1人であるCが鍵対を生成し、公開鍵証明書を得た後にそれをAに送信する。この場合、Aは公開鍵を用いて対称型鍵およびメッセージを暗号化し、それをCに返信する。したがって、この場合、Cが承認される。
【0007】
鍵一致プロトコルにおいては、通信者の1人であるAが、例えば、Bから証明書付きの公開鍵を受信し、Aの証明書付き公開鍵をBに送信する。AおよびBはそれぞれ相手側の証明書を確認し、互いに一致した対称型鍵を有する。この例では、Aが2度承認されることになる。
【0008】
以上の例から分かるように、公開鍵システムのセキュリティが確保されていても、システムのセキュリティは、通信者の一方あるいは両方に大きく依存しており、要求された所定の鍵が実際のところ使用されている特定のアルゴリズムの所定の鍵であることに依存している。典型的には、受信者は、ビット列を受信すると、このビット列が要求される鍵を実際に表すものであるとみなしてしまうが、そのために対称型鍵システムでは特に問題が生じる。即ち、対称型鍵システムでは、典型的にはサイズが正しければどのようなビット列でも鍵であると解釈されてしまう。このビット列の中の1ビットが所定の鍵と異なっていても、別の鍵として解釈されるので、その鍵が誤ったものでない限り、妥当な暗号演算(crypto operation)を行うことができる。
【0009】
非対称型秘密鍵システムでは、秘密鍵の所有者はその秘密鍵について全て知っているので、それが正しいか否かの妥当性を検証することができる。しかしながら、第3者が上記所有者のシステムに公開鍵を送信した場合、受信した鍵が公開鍵の算術的要件に合致するものか否か、あるいはその要求された公開鍵を用いて演算(operation)を行った場合に機密性が確保された暗号演算となるか否かについては、疑問が生じる。所有者のシステムが検査を行わなければ確実には分からないので、所有者にしか分からないことになる。
【0010】
以上のことから分かるように、鍵の確立は安全でない場合がある。Crypto ’97で発表されたリン(Lim)およびリー(Lee)による論文では、上記問題点が、Diffie−Hellman方式において次数(order)が正しくない偽公開鍵を用いた場合に、相手側の秘密鍵に関する情報を得ることができるという例を用いて指摘された。RSAあるいはRabin方式においては、公開鍵および秘密鍵を1組の大きな素数の関数とすることで、そのような大きな数の因数分解の困難性からセキュリティを確保している。これらの鍵は、2つの任意の大きな素数の積から生成している。しかしながら、nが素数であって、2つの素数の積でないとすると、phi(n)=n−1が成り立つので、偽の「公開鍵」(n,e)から誰でもdを決定することができる。これらは、公開鍵の使用者が、要求された公開鍵についてアルゴリズムの要件に合致する算術的属性の妥当性を検証することができないが為に生じる問題であると言える。
【0011】
本発明は、セキュリティ機能を持つ通信システムにおいて、改良された妥当性検証を行うことを目的としている。さらに、本発明は、誰でもいつでも公開情報のみを用いてそのような妥当性検証を行えるようにすることを目的としている。
【課題を解決するための手段】
【0012】
本発明の公開鍵通信システムにおけるディジタル署名の妥当性検証方法によれば、公開鍵の算術的属性がシステムアルゴリズムに合致することを確認する工程と、上記ディジタル署名を確認する工程とを含む。
【0013】
さらに、システムパラメータを確認する工程が設けられる。
【0014】
さらに、要求された公開鍵がアルゴリズムと算術的に合致するか否かの妥当性検証が実行されたことを示す情報と、および適切な場合には、さらに、実行された妥当性検証の回数を示す情報とを証明書情報内に含める工程が設けられる。
(項目1)
データ通信システムにおいて、一方から他方の通信者に送信されるディジタル情報の妥当性を検証する方法において、
所定の算術的属性とシステムパラメータとを有する所定の暗号化方式に応じて公開鍵を生成する工程と、
上記公開鍵が上記暗号化方式の算術的属性に合致することを確認する工程と、
確認された上記公開鍵を受信者に送信する工程とを含むことを特徴とする方法。
(項目2)
上記公開鍵の妥当性が検証されたことを示す情報を、確認された上記公開鍵と共に送信することを特徴とする項目1に記載の方法。
(項目3)
上記公開鍵は楕円曲線公開鍵Qであり、上記暗号化方式は楕円曲線方式であることを特徴とする項目1に記載の方法。
(項目4)
上記公開鍵を確認する工程は、上記公開鍵Qが上記楕円曲線E上にあることを確認する工程を含むことを特徴とする項目3に記載の方法。
(項目5)
上記システムパラメータを確認する工程をさらに含むことを特徴とする項目1に記載の方法。
(項目6)
公開鍵および対称型鍵を有するセキュリティが確保された非対称型通信システムを提供する方法において、
上記公開鍵が妥当であると確認する工程と、
上記対称型鍵が所定のフォーマットを有することを確認する工程と、
上記対称型鍵を復号する工程と、
復号された上記対称型鍵が所定の妥当なフォーマットを有することを確認する工程とを含むことを特徴とする方法。
(項目7)
上記システムパラメータが妥当であると確認する工程をさらに含むことを特徴とする項目6に記載の方法。
(項目8)
公開鍵、対称型鍵、および秘密情報を有する通信システムにてセキュリティが確保された鍵一致を提供する方法において、
上記公開鍵が妥当であると確認する工程と、
上記秘密情報が妥当であると確認する工程と、
上記対称型鍵が妥当であると確認する工程とを含むことを特徴とする方法。
(項目9)
システムパラメータが妥当であると確認する工程をさらに含むことを特徴とする項目8に記載の方法。
(項目10)
上記鍵の検証を示す情報を証明書情報に含める工程をさらに含むことを特徴とする項目8に記載の方法。
【図面の簡単な説明】
【0015】
【図1】通信システムの概略図である。
【発明を実施するための形態】
【0016】
(発明の実施の形態)
図1に示すように、データ通信システム10は、1組の通信者を含み、該1組の通信者は、送信者12および受信者14であり、互いに通信チャネル16により接続されている。送信者12および受信者14は、通信チャネル16を介した送受信用に備えてディジタル情報を処理する暗号化ユニット18および20をそれぞれ有している。データ通信システム10は、証明書発行局(CA;certification authority、認証機関とも言う)22をさらに有していてもよい。
【0017】
以下、本発明の実施の形態として、公開鍵アルゴリズムを用いた場合について説明する。鍵一致は、以下に示す6つのルーチンを有している。即ち、システムパラメータの生成、システムパラメータの妥当性検証、鍵対の生成、公開鍵の妥当性検証、共用機密の導出(derivation)、および対称型鍵の導出である。上記鍵検証工程においては、誰でもいつでも公開情報のみを用いて公開鍵の妥当性を検証することができる。これらのルーチンにより、公開鍵の値域(range)および次数(order)が検証される。公開鍵の妥当性が検証されれば、論理的にはそれに対応する秘密鍵が存在する可能性があるが、実際に存在することは証明されない。
【0018】
楕円曲線ディジタル署名アルゴリズム(ECDSA)にも、6つのルーチンが含まれる。即ち、システムパラメータの生成、システムパラメータの妥当性検証、鍵対の生成、公開鍵の妥当性検証、署名の生成、および署名の確認(signature verification)である。一方、DSAの第1のタイプには、4つのルーチン、即ち、システムパラメータの生成、鍵対の生成、署名の生成、および署名の確認が含まれる。より最近のDSAでは、5つのルーチン、即ち、システムパラメータの生成、(非明示の(implicit))システムパラメータの妥当性検証、鍵対の生成、署名の生成、および署名の確認が含まれる。鍵の妥当性検証を行うために、DSAパラメータであるp、q、およびgは既に妥当性が検証されているものとみなす。秘密鍵をx、公開鍵yはy=gmod pである。そして、yの値域について、1<y<pであることを確認することによって妥当性を検証するとともに、yの次数について、ymod p=1であることを確認することによって妥当性を検証する。これらの妥当性検証により、ある要求されたDSA公開鍵が、そのような鍵に対する算術的要件を満たすものであるということが確認される。これらの妥当性検証は、誰もがいつでも公開情報のみを用いて実行することが可能である。
【0019】
RSAあるいはRabin署名アルゴリズムには、一般に3つのルーチン、即ち、鍵対の生成、署名の生成、および署名の確認が含まれる。RSA公開鍵(n,e)の検証は以下の3つのステップを含む。即ち、まず最初にeの妥当性を検証し、次にnの妥当性を検証し、その次にeおよびnが互いに矛盾していないことを検証する。公開指数eの妥当性を検証するためには、指数eが2≦e≦2(k−160) (kは法(modulus)nのビット長(length))であることを利用する。指数eの範囲が上記のような特定された範囲であるべきというこの要件は、特に、ここでの検証を実現可能にしている。e>2であれば、eは奇数でなければならない。さらに、閉じたネットワークの場合には、公開指数eは他の全ての判定基準を満たすべきであることが知られている。即ち、例えばeは3か、65537か、あるいは65537より大きな任意の数でなければならないといった判定基準である。これらの検証は、鍵の妥当性をさらに確認するために行ってもよい。これらの検証については、RSA公開鍵部分認証ルーチン(public key partial validation routine)の仕様(specification)の一部として含まれていてもよい。上記の指数eの検証は簡略なもののように見えるが、この検証により、RSA/Rabinアルゴリズムで選択が試みられるdよりも前にeが選択されたことが確認できる。なぜなら、この検証により、de=1 mod(lcm(p−1,q−1))であり、法nに比べてeでは桁数を表すゼロが少なくとも160個多いことが分かり、これはdを先に選択すると実現不可能だからである。
【0020】
法nの妥当性を検証するためには、nの大きさを求める。nは、正確に(1024+128s)ビット(ただし、s=0,1,2,3,…等)を含まなければならないことが知られている。このことは、簡単に検証でき、部分鍵認証の一部とすることができる。法nは2つの素数の積で、2より大きい全ての素数が奇数であることから、法nが奇数であるか否か判断することによって、法nに対してさらなる妥当性検証を行ってもよい。したがって、奇数同士の積は奇数であるので、nは奇数でなければならない。さらに、Rabinアルゴリズムでe=2の場合には、p=3 mod n、およびq=7 mod 8でなければならないことが分かっている。このことから、n=pq=21 mod 8=5 mod 8でなければならない。このことは、e=2のときにn=5 mod 8であることを確認することで検証できる。さらに、nは完全な累乗(perfect power)であってはならないことが分かっている。このことから、nが2つの異なる素因数からなることが確実に分かり、単純な検査により妥当性が検証できる。上記検証については、Menezes、van Oorschot、およびVanstoneによる”Handbook of Applied Cryptography(応用暗号手法ハンドブック)”に記述されている。
【0021】
また、nは合成数でなければならないことも知られている。したがって、nが素数の場合には、容易に逆変換が可能になるため、セキュリティが全く確保されなくなる。nが合成数であるか否かの検証は、nが合成数であると実際に証明されると予想してMiller−Rabin確率的素数検証(probable prime test)を行うことによって、実現可能である。法nの検証を行うためのさらなる検査は、以下のことに基づくものである。即ち、nが2つの大きな素数の積であって、因数分解が難しく、したがって単純な方法で因数分解しようとしても成功しないものであることが分かっていることに基づいている。例えば:iとして小さな奇数の素数からある程度の大きさまでの全ての素数、例えば最初の50000(50K)個の奇数の素数について、GCD(n,i)を計算してみてもよい。
【0022】
前述の2つの検証により、前者からは少なくとも1つの因子が法のビットの半分以下の大きさでなければならないことが分かり、後者からは各因子が検証した最大素数よりも大きくなければならないことが分かる。さらに、ポテンシャル因子(p,q,r,…)は、上記で検証した最大素数の大きさに依存した限られた数しか存在しなくなる。
【0023】
以上の複数の検証を組み合わせると、相乗効果が得られる。検証の目的は、敵のとりうる行動の自由度を大幅に小さくすることである。攻撃がほぼ不可能な場合であっても、部分的鍵認証を行うことによって、攻撃をより一層困難にし、望ましくは攻撃を不可能あるいは少なくとも非経済的なものにすることができる。
【0024】
さらに、pおよびqの値は近くなりすぎてはならないものであるから、法nを検証する際には、これらが近接した値であると仮定し、nの因数分解を試みる。nの平方根をpおよびqの初期予想値とする。pを減少させる一方、qを増加させ、nが所定の限度まで因数分解できるか決定する。さらに、RSAの法のセットでは素数が繰り返してはならないことが分かっているため、RSAのある法のセットn1、n2に対して、GCD(ni,nj)を計算し、全ての計算結果が1に等しいことを確認することができる。
【0025】
上述のオフライン検証には限界が存在するが、パラメータの所有者が特定の情報、例えばnの因数分解を知っているので、これらの検証を拡張することができる。よって、所有者をオンラインオラクル(oracle)として利用してもよい。このオラクルに関してなされる質問に対する回答が不正解であることを識別することで、誰もが公開鍵が無効であると断言できることになる。
【0026】
Vanstoneらの”Handbook of Applied Cryptography”によれば、所有者は(平方根 mod n)を計算できるが、他者にはできない。検証者は、(任意値 mod n)のヤコビ符号(ヤコビアン;Jacobi Symbol)を1または−1に決定し、半分は1、他方の半分は−1に決定する。1の場合には、その数が平方数か否かで、再度半々に分けられる。検証者は、(ある数 mod n)を平方する。平方数のヤコビ符号は、常に1である。
【0027】
検証者は、既知の平方数uおよびヤコビ符号が1である任意の要素rのいずれかを選択する。そして、所有者にこの2種類の要素に対して「これは平方数であるか」と質問する。所有者は、イエスかノーかで回答する。uが選択された場合、所有者がイエスと答えなければ鍵の法(modulus)は無効となる。rが選択された場合、所有者がイエスと答える回数とノーと答える回数とがそれぞれ約半分でなければ、鍵の法が無効となる。
【0028】
これを何度も繰り返すことにより、信頼性が高まる。検証者が全て平方数について所有者に質問した場合には、所有者は常にイエスと答えなければならない。検証者が全てヤコビ符号が1である任意の要素について所有者に質問した場合には、所有者はその半分にはイエスと答え、半分にはノーと答えなければならない。偽鍵の所有者は、少なくとも半分の答えがイエスであることを知っているだけである。しかしながら、秘密鍵の所有者であれば、nの因数分解を知っており、平方数を知っているので、擬似平方数についてそれらが平方数であると嘘をついて、検証者を騙しさえすればよい。検証者は、既知の擬似平方数を用いて「これは平方数であるか」と質問するだけでよい。通常、法の因数分解を知らなければ、ある数がその法の擬似平方数であると決定することは不可能である。しかしながら、所有者は、上述の質問に対して、ヤコビが1である数のいくつかは擬似平方数であると答えなければならない。検証者は、既知の擬似平方数と(平方数mod n)とを掛け合わせることによって、任意の既知の擬似平方数を生成することはできる。検証者は、その結果として得られた値については、擬似平方数であると知っている。この3つめのタイプの数t(既知の擬似平方数)について所有者に尋ねると、この場合には、所有者がいくつかの擬似平方数は平方数であると嘘をついても、その嘘が検証者に知られる。
【0029】
eとnとを共に検証するには、GCD(e,p−1)=1、かつGCD(e,
q−1)=1でなければならない。eが奇数の場合には、整数xおよびpに対してpがxe+1の形で表されない数であり、かつ、整数yに対してqがye+1の形で表されない数でなければならないことが分かっている。pとqとの両方が不正な場合には、nがxye+xe+ye+1の形で表されないものであり、かつn≠1 mod eが成り立たなければならない。
【0030】
eとnとを共に検証する別の方法について以下に説明する。GCD(e,phi(n))が1でなければならないことが分かっている。phi(n)=(p−1)(q−1)であることが分かっているので、式が2つで未知数が2つであるから、検証者は、nを因数分解することができる。
【0031】
鍵対に対する他の要件が満たされているとする。GCD(e,phi(n))=1を満たす必要があるのは、eを用いた演算を確実に1:1対応(逆変換可能)の関数とするためである。さもなければ、eを用いた演算が多数:1になってしまう。eを用いた演算が多数:1対応の場合には、d(eの逆元(inverse))が存在しなくなるか、少なくとも通常では導き出せなくなる。所有者はdが実際に存在するという証拠を提示しなければならない。しかしながら、上記質問は、秘密鍵の所有者の管理の元で行うべきではない。即ち、所有者自身で署名した証明書要求(self−signed certificate request)では、十分な証拠とはならない。
【0032】
挑戦者は、承認を要求された所有者にダミーメッセージをいくつか送信して署名させることもできる。秘密鍵の所有者は、それらがダミーメッセージであると確認し、署名し、挑戦者に返信する。これは、dが存在するオンライン確率的オラクル検証(online
probabilistic oracle test)である。
【0033】
したがって、誰でもオフライン検証がいつでも実行できる。所有者がオンライン状態にあれば、誰でもオンライン検証を実行できる。所有者は、オフラインおよびオンライン検証を行って、自身の秘密鍵が有効であることを確認することができる。CAは、オンライン検証を行って、公開鍵証明書において何の妥当性がどの程度まで検証されているかを他者に伝える。
【0034】
ECDSAにおけるシステムパラメータは、フィールドサイズq=pまたは2である。オプションの種(optional seed)によって(a,b)が生成され、(a,b)によって、曲線の次数がhnとなるように、Fで表される楕円曲線、この曲線上の特異点P、Pの大きな素数の次数(large prime order)であるn、および余因子(cofactor)hを定義する。(a,b)で定義されるフィールドサイズECおよび点Pは主要パラメータである。
【0035】
ECシステムパラメータだけでなく、EC公開鍵についても確認することが重要である。例えば、楕円曲線公開鍵Qを想定し、QがE上にあるとする。鍵一致において素数の次数の曲線を使用している場合、Qの次数を検査する必要はない。なぜなら、Qが曲線上にあれば正確な次数を有していることが確かであるからである。Qが曲線上にあることを検査することは重要である。なぜなら、Qが曲線上になければ、偽鍵が、aQを計算する際に秘密鍵aを明かしてしまうからである。公開鍵が曲線上にあると確認することは、曲線の式に代入するか、検証を行うことにより可能である。
【0036】
以上のことから、鍵認証を行うことにより、攻撃にさらされることが抑制され、不慮のエラーの検出が助けられ、CAが行う価値のあるサービスが提供されることになる。当業者ならば理解できるように、上記の技術および方法は、本発明の工程を実行する適切なプロセッサにおいて実現することができる。さらに、上述の様々な方法は、汎用のコンピュータを使用し、ソフトウェアにて選択的に起動あるいは再構成して実行するのが便利がよいが、当業者ならば理解できるように、そのような方法は、必要な各工程を実行するように構成された、ハードウェア、ファームウェア、あるいはより特殊な装置において実現してもよい。
(発明の効果)
【0037】
本発明によれば、セキュリティ機能を持つ通信システムにおいて、改良された妥当性検証を行うことができる。さらに、本発明によれば、誰でもいつでも公開情報のみを用いてそのような妥当性検証を行うことが可能となる。

【特許請求の範囲】
【請求項1】
本願明細書に記載された発明。

【図1】
image rotate


【公開番号】特開2013−42555(P2013−42555A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2012−251231(P2012−251231)
【出願日】平成24年11月15日(2012.11.15)
【分割の表示】特願2010−5363(P2010−5363)の分割
【原出願日】平成10年10月14日(1998.10.14)
【出願人】(397071791)サーティコム コーポレーション (38)
【Fターム(参考)】