(57)【要約】【課題】暗号通信のたびに秘密鍵と公開鍵を変えても大きなメモリを必要とせず、安全性を高くかつ高速に計算処理することができる暗号鍵生成装置を提供する。【解決手段】所定のビット数で表される秘密鍵における所定のビット領域である第１のビット領域に含まれるべき各ビットの値と、第１のビット領域の各ビットの値ごとになされた楕円曲線暗号演算の演算結果とを格納する格納手段１０２と、格納された第１のビット領域の各ビットの値及び演算結果を取得する取得手段１０３と、秘密鍵における第１のビット領域以外のビット領域である第２のビット領域に含まれるべき各ビットの値を生成する秘密鍵部分生成手段１０４と、秘密鍵部分生成手段によって生成された第２のビット領域の各ビットの値ごとに楕円曲線暗号演算を行い、得られた演算結果と取得手段によって取得された演算結果とに基づき、秘密鍵に対応する公開鍵を生成する公開鍵生成手段１０１とを備える。【選択図】図１
2007272048.tif 000002
【特許請求の範囲】
【請求項１】
所定のビット数で表される秘密鍵における所定のビット領域である第１のビット領域に含まれるべき各ビットの値と、前記第１のビット領域の各ビットの値ごとになされた楕円曲線暗号演算の演算結果とを格納する格納手段と、
前記格納手段に格納された前記第１のビット領域の各ビットの値及び前記演算結果を取得する取得手段と、
前記秘密鍵における前記第１のビット領域以外のビット領域である第２のビット領域に含まれるべき各ビットの値を生成する秘密鍵部分生成手段と、
前記秘密鍵部分生成手段によって生成された前記第２のビット領域の各ビットの値ごとに前記楕円曲線暗号演算を行い、得られた演算結果と、前記取得手段によって取得された前記演算結果とに基づいて、前記秘密鍵に対応する公開鍵を生成する公開鍵生成手段とを、
備える暗号鍵生成装置。
【請求項２】
前記第１のビット領域のうちの所定のビット領域である第３のビット領域のビットの値が可変であって、
前記格納手段は、前記第３のビット領域の各ビットの値の組合せ分だけ生じる前記第１のビット領域の各ビットの値の組合せと、前記第３のビット領域の各ビットの値の組合せ分だけ生じる前記第１のビット領域の各ビットの値ごとになされた楕円曲線暗号演算の演算結果の組合せとをそれぞれの前記組合せごとに関連づけて格納する請求項１に記載の暗号鍵生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、公開鍵暗号方式の１つである楕円曲線暗号を用いて生成された公開鍵を生成する暗号鍵生成装置に関する。
【背景技術】
【０００２】
情報を送受信する場合、セキュリティを保つために通常その情報を暗号化して送受信を行う。暗号化に使われている方式には主として２種類あり、ＲＳＡ（Rivest Shamir Adleman）などの公開鍵暗号方式、ＡＥＳ（Advanced Encryption Standard）などの共通鍵暗号方式がある。公開鍵暗号方式は、あらかじめ相手に対して秘密にしておくべき鍵を配送する必要がないため、主に認証や共通鍵暗号方式で利用する鍵の生成などで利用されている。一方、共通鍵暗号方式は、暗号化・復号化の早さからコンテンツなど実際のデータのやりとりで利用されている。よって、セキュリティを考慮した場合の情報の受け渡しでは一般的に最初に公開鍵暗号方式で認証を行い、その次に秘密鍵暗号方式で実際のコンテンツなどを暗号化して情報を流す。公開鍵暗号方式では、秘密鍵から一方向性関数の性質を利用して公開鍵を生成しているため、公開鍵から秘密鍵を求める逆算は計算量的に困難である。公開鍵暗号方式で暗号化された情報を送受信する場合、セキュリティを更に高めるために、定期的又は情報ごとに新たに別の秘密鍵とその秘密鍵に対する公開鍵を生成している。
【０００３】
図９に秘密鍵及び公開鍵の生成、取得の流れを示す。秘密鍵は乱数若しくは任意の値を用いて秘密鍵生成装置によって生成される。この秘密鍵と、秘密鍵から楕円曲線演算装置で楕円曲線演算により生成された公開鍵とを鍵ネゴシエーション装置に渡す。しかしながら、秘密鍵から公開鍵を生成する場合、現実的な利用環境において多少の計算時間が必要で、鍵ネゴシエーション処理に時間がかかり、コンテンツなどのデータのやりとり開始までの時間が遅れてしまう問題がある。そのため計算処理時間を省く方法として、図１０に示すように新たな鍵ネゴシエーションを行う際に、あらかじめ秘密鍵に対する公開鍵情報を保存したデータベースＤ１から、ランダムに秘密鍵と公開鍵のペアを取り出す方法が一般的である。また、秘密鍵のうち一部分のみを格納しておき、足りない秘密鍵部分を再度計算することにより計算処理時間を省く方法が下記の特許文献１に記載されている。
【特許文献１】特開２００３−３０９５５１号公報（要約、段落０００７）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上述したような秘密鍵と公開鍵のデータベースを利用し、暗号通信のたびに秘密鍵を変える場合、あらかじめ多くのデータベース用のメモリが必要になる。また、秘密鍵に対応した公開鍵情報をデータベースに保存するため、情報が盗みとられた場合、公開鍵情報に対応した秘密鍵が読み取られてしまう問題もある。また、特許文献１に記載された技術では計算処理時間の短縮ができるとしても、暗号通信のたびに秘密鍵を変える場合、多くのメモリが必要になる。
【０００５】
本発明は、上記課題を解決するためのものであり、暗号通信のたびに秘密鍵と公開鍵を変えても大きなメモリを必要とせず、安全性を高くかつ高速に計算処理することができる暗号鍵生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明によれば、所定のビット数で表される秘密鍵における所定のビット領域である第１のビット領域に含まれるべき各ビットの値と、前記第１のビット領域の各ビットの値ごとになされた楕円曲線暗号演算の演算結果とを格納する格納手段と、前記格納手段に格納された前記第１のビット領域の各ビットの値及び前記演算結果を取得する取得手段と、前記秘密鍵における前記第１のビット領域以外のビット領域である第２のビット領域に含まれるべき各ビットの値を生成する秘密鍵部分生成手段と、前記秘密鍵部分生成手段によって生成された前記第２のビット領域の各ビットの値ごとに前記楕円曲線暗号演算を行い、得られた演算結果と、前記取得手段によって取得された前記演算結果とに基づいて、前記秘密鍵に対応する公開鍵を生成する公開鍵生成手段とを備える暗号鍵生成装置が提供される。この構成により、暗号通信のたびに秘密鍵と公開鍵を変えても大きなメモリを必要とせず、安全性を高くかつ高速に計算処理することができる。
【０００７】
また、本発明の暗号鍵生成装置において、前記第１のビット領域のうちの所定のビット領域である第３のビット領域のビットの値が可変であって、前記格納手段が、前記第３のビット領域の各ビットの値の組合せ分だけ生じる前記第１のビット領域の各ビットの値の組合せと、前記第３のビット領域の各ビットの値の組合せ分だけ生じる前記第１のビット領域の各ビットの値ごとになされた楕円曲線暗号演算の演算結果の組合せとをそれぞれの前記組合せごとに関連づけて格納することは、本発明の好ましい態様である。この構成により、より多くの鍵候補を生成することができる。
【発明の効果】
【０００８】
本発明の暗号鍵生成装置は、上記構成を有し、暗号通信のたびに秘密鍵と公開鍵を変えても大きなメモリを必要とせず、安全性を高くかつ高速に計算処理することができる。また、計算時間を減らすことで、コンテンツ配送開始前などに行われる認証時間を低減させることができる。
【発明を実施するための最良の形態】
【０００９】
＜第１の実施の形態＞
以下、本発明の第１の実施の形態に係る暗号鍵生成装置について図１から図６を用いて説明する。図１は本発明の第１の実施の形態に係る暗号鍵生成装置の構成の一例を示す構成図である。図２は本発明の第１の実施の形態に係る暗号鍵生成装置における二進展開法について説明するための図である。図３は本発明の第１の実施の形態に係る暗号鍵生成装置における楕円曲線演算処理法を説明するための図である。図４は本発明の第１の実施の形態に係る暗号鍵生成装置における他の楕円曲線演算処理法を説明するための図である。図５は本発明の第１の実施の形態に係る暗号鍵生成装置における二進展開法を利用して秘密鍵から秘密鍵上位部分計算値を利用して公開鍵を求める算出法について説明するための図である。図６は本発明の第１の実施の形態に係る暗号鍵生成装置と従来の暗号鍵生成装置とにおける計算量及び使用するメモリ容量の相違を説明するための図である。
【００１０】
本発明の第１の実施の形態に係る暗号鍵生成装置は、図１に示すように、二進展開法を用いた楕円曲線暗号演算装置（公開鍵生成手段）１０１、データベース（格納手段）１０２、鍵取得装置（取得手段）１０３、秘密鍵下位部分生成装置（秘密鍵部分生成手段）１０４、秘密鍵取得装置１０５、公開鍵取得装置１０６から構成されている。公開鍵を生成する楕円曲線暗号演算装置１０１において、楕円曲線演算（楕円曲線暗号演算とも言う）を行う場合、高速化するために通常、二進展開法という手法が用いられる。この手法は、入力された情報を２進数で表現し、それぞれの桁ごとに上位から順番に計算していくものである。
【００１１】
この二進展開法による公開鍵算出法について図２を用いて説明する。ここでｋは、秘密鍵を２進数で表現できる最小のビット数を表す。まず、１つ前の上位ビットに関する演算結果Ｙ（Ｙ、Ｙとも言う）を入力として、秘密鍵上位ビット側(低いビット番号側)から順番に１ビットずつ、その秘密鍵ビットの値が１か０かによって、それぞれ入力の数が異なる楕円曲線演算を行う。それぞれの楕円曲線演算処理法を図３及び図４に示す。秘密鍵ビットの値が０である場合の演算処理は、前回の演算結果Ｙを入力とした楕円曲線演算を行う。図３に示すように楕円曲線上にある前回の演算結果Ｙの接線と、楕円曲線上で交わる点Ｑのｘ軸に対称な点Ｒが、楕円曲線演算の結果となる。一方、秘密鍵ビットの値が１の場合の演算処理は、前回の演算結果Ｙ、初期座標値Ｐを入力とした楕円曲線演算を行う。図４に示すように、図３と同様の方法で点Ｒを求め、この点Ｒと初期座標点である点Ｐを結ぶ直線と楕円曲線が交わる点Ｓのｘ軸に対称な点Ｔが楕円曲線演算の結果となる。
【００１２】
上述した二進展開法は、秘密鍵上位ビットに関する演算において、その秘密鍵上位ビットより下位のビットがどういう値であっても影響を受けない。そこで、あらかじめ秘密鍵上位ビットだけに二進展開法を利用して楕円曲線演算を行い、その演算結果（以下、秘密鍵上位部分計算値とも言う）を利用することで、共通の上位ビットをもつ別の秘密鍵の利用時に計算量を減らすことができることを以下に述べる。
【００１３】
二進展開法を利用して秘密鍵から秘密鍵上位部分計算値を利用して公開鍵を求める算出法について図５を用いて説明する。まず、データベース１０２は、所定のビット数で表される秘密鍵における所定のビット領域を示す第１のビット領域に含まれるべき各ビットの値と、第１のビット領域の各ビットの値ごとになされた楕円曲線暗号演算の演算結果とを格納している。このときの楕円曲線暗号演算は第１のビット領域の各ビットの値に応じた演算である。すなわち、データベース１０２は、以下に示す上位鍵ｍビット分の値と算出された秘密鍵上位部分計算値を関連付けて格納している。それらの値は以下のように求められる。あらかじめ上位ビット幅である任意の値ｍが定められ、例えば楕円曲線暗号演算装置１０１によって上位鍵ｍビット分（第１のビット領域）の楕円曲線演が行われ、その演算結果である秘密鍵上位部分計算値（第１のビット領域の各ビットの値ごとになされた楕円曲線暗号演算の演算結果）が算出される。そして、この秘密鍵上位部分計算値と秘密鍵下位部分生成装置１０４によって生成された下位部分秘密鍵（下位ビット秘密鍵）（第２のビット領域の値に相当）から公開鍵が求められる。
【００１４】
ここで、図１を用いて本発明の第１の実施の形態に係る暗号鍵生成装置による秘密鍵上位部分計算値を利用した公開鍵の生成について説明する。データベース１０２には、上位部分秘密鍵及びその上位部分秘密鍵によって算出された秘密鍵上位部分計算値が関連付けられて一組保存されている。なお、点線枠内が本発明の第１の実施の形態に係る暗号鍵生成装置の特徴部分である。鍵取得装置１０３は、データベース１０２に保存されている一組の上位部分秘密鍵及び秘密鍵上位部分計算値を取り出し、取り出した秘密鍵上位部分計算値を楕円曲線暗号演算装置１０１に送り、上位部分秘密鍵を秘密鍵取得装置１０５に送る。また、秘密鍵下位部分生成装置１０４は、所定のビット数で表される秘密鍵のうちの第１のビット領域以外のビット領域である第２のビット領域のビットの値を生成する、すなわち乱数により又は任意に下位部分秘密鍵を生成し、生成された下位部分秘密鍵を公開鍵取得装置１０６を介して楕円曲線暗号演算装置１０１に送る。
【００１５】
楕円曲線暗号演算装置１０１は、秘密鍵下位部分生成装置１０４によって生成された下位部分秘密鍵に応じた楕円曲線暗号演算を下位部分秘密鍵の値ごとに行い、得られた演算結果と、鍵取得装置１０３から取得した秘密鍵上位部分計算値とに基づいて、秘密鍵に対応する公開鍵を生成する。生成された公開鍵は、公開鍵取得装置１０６に送られ、公開鍵取得装置１０６は受けた公開鍵を鍵ネゴシエーション装置１０７に送る。一方、秘密鍵下位部分生成装置１０４は下位部分秘密鍵を秘密鍵取得装置１０５に送る。下位部分秘密鍵と上位部分秘密鍵を受けた秘密鍵取得装置１０５は、下位部分秘密鍵と上位部分秘密鍵を合わせて１つの秘密鍵とし、鍵ネゴシエーション装置１０７に渡す。データベース１０２に保存されているデータは、上位部分秘密鍵及びその秘密鍵上位部分計算値であるため、情報が盗みとられた場合であっても、公開鍵の情報がないため公開鍵に対応した秘密鍵が読み取られてしまう問題はない。
【００１６】
従来の暗号鍵生成装置と本発明の第１の実施の形態に係る暗号鍵生成装置とにおける計算量及び使用するメモリ容量の相違の一例を以下に説明する。例えば、１つの秘密鍵の長さが１６０ビットであり、秘密鍵部分計算値及び公開鍵を３２０ビットとする。図６に示すように、まず秘密鍵上位１２８ビットを固定し、秘密鍵上位部分計算値を求めておく。そして残りの下位３２ビットを可変させることにより約４０億通りの秘密鍵を生成することが可能である。これらの秘密鍵の選び方において、生成される公開鍵は暗号の性質上、互いに相関関係がないので秘密鍵の選び方に偏りが生じても問題ない。
【００１７】
そして公開鍵を求める計算量は、従来の方法である秘密鍵から公開鍵を計算する場合と比較して、秘密鍵上位部分計算値の計算量は３２／１６０、すなわち２０％となる。また、必要とするメモリ容量に関してみると、一般的な方法である公開鍵とその秘密鍵のペアをあらかじめ４０億通り保存した方法と比較すると、従来の方法では４０億×（１６０＋３２０）ビットの多くのメモリ容量が必要となるのに対し、本発明の第１の実施の形態の場合は、一つの上位部分秘密鍵１２８ビット及びその上位部分秘密鍵の演算結果である秘密鍵上位部分計算値３２０ビットの３４８ビットのメモリ容量で済む。以上の方法は、組み込み機器など、演算処理時間を多く費やしてしまうデバイスに対して有効であると言える。
【００１８】
＜第２の実施の形態＞
上述した第１の実施の形態では、計算時間を減らしたものの、個人で利用するポータブル機器から複数の人が利用するホームネットワーク機器へ移植するといったケースでは利用される回数が増え、それに伴って認証回数が増えてしまう。そして、生成する鍵の数が現状のままではセキュリティ上問題があるのであれば、生成できる鍵ペアの数を増やす必要がある。そこで、計算にかかる時間を現状のまま維持して、かつ必要とするメモリ容量を最小限度に抑えるための鍵候補の生成法を提供する。その方法は、第１の実施の形態で秘密鍵上位部分計算値を求めるのに利用した秘密鍵上位ビットの中で、一部のビット（第３のビット領域に相当）に対してとり得るビットパターンの楕円曲線演算を行い、それぞれの楕円曲線演算結果のペアをデータベースに保存する。これにより上述した問題を解決することができる。
【００１９】
本発明の第２の実施の形態に係る暗号鍵生成装置の構成の一例を図７に示す。第１の実施の形態と第２の実施の形態との違いを言うと、まず第１の実施の形態を示す図１では一組の上位ビットとその秘密鍵上位部分計算値のペアを保存しているデータベース１０２があり、第２の実施の形態を示す図７では複数の上位ビットとその秘密鍵上位部分計算値のペアを保存しているデータベース７０２がある点が相違する。また、このペアを選択して取得する鍵選択、取得装置７０１がある点で相違する。この選択は、例えば順番に選択するようにしてもよく、ランダムに選択するようにしてもよい。なお、他の構成要素については図１に示した第１の実施の形態の構成要素と基本的に同様である。
【００２０】
以下では、第２の実施の形態に係る暗号鍵生成装置の一例について説明する。第１の実施の形態では秘密鍵下位３２ビット分を可変にすることで約４０億個の鍵ペアを生成することが可能であった。しかし、更に多くの鍵ペアが必要となった場合、図８に示すように固定した上位１２８ビットのうち、例えば任意の４ビット分（第３のビット領域に相当）から１６パターン（第３のビット領域の各ビットの値の組合せ分）の鍵パターンを生成し、残りの１２４ビットを固定してそれぞれの秘密鍵上位部分計算値を求める。この出来上がった１６組の秘密鍵上位部分計算値及び３２ビットの可変の下位秘密鍵により、約４０億×１６個分の鍵候補を生成することが可能となる。なお、計算量は第１の実施の形態と変わらないで済む。また、鍵選択、取得装置７０１によってデータベース７０２から任意の上位部分秘密鍵と秘密鍵上位部分計算値を取得した以降の処理については、基本的に第１の実施の形態における処理と同様であるため説明を省略する。
【産業上の利用可能性】
【００２１】
本発明に係る暗号鍵生成装置は、暗号通信のたびに秘密鍵と公開鍵を変えても大きなメモリを必要とせず、安全性を高くかつ高速に計算処理することができるため、公開鍵暗号方式の１つである楕円曲線暗号を用いて生成された公開鍵を生成する暗号鍵生成装置などに有用である。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施の形態に係る暗号鍵生成装置の構成の一例を示す構成図である。
【図２】本発明の第１の実施の形態に係る暗号鍵生成装置における二進展開法について説明するための図である。
【図３】本発明の第１の実施の形態に係る暗号鍵生成装置における楕円曲線演算処理法を説明するための図である。
【図４】本発明の第１の実施の形態に係る暗号鍵生成装置における他の楕円曲線演算処理法を説明するための図である。
【図５】本発明の第１の実施の形態に係る暗号鍵生成装置における二進展開法を利用して秘密鍵から秘密鍵上位部分計算値を利用して公開鍵を求める算出法について説明するための図である。
【図６】本発明の第１の実施の形態に係る暗号鍵生成装置と従来の暗号鍵生成装置とにおける計算量及び使用するメモリ容量の相違を説明するための図である。
【図７】本発明の第２の実施の形態に係る暗号鍵生成装置の構成の一例を示す構成図である。
【図８】本発明の第２の実施の形態に係る暗号鍵生成装置により多くの鍵候補を生成することが可能となることを説明するための図である。
【図９】従来の公開鍵取得の流れを説明するための図である。
【図１０】従来の公開鍵取得の流れを説明するための他の図である。
【符号の説明】
【００２３】
１０１  楕円曲線暗号演算装置（公開鍵生成手段）
１０２、７０２  データベース（格納手段）
１０３  鍵取得装置（取得手段）
１０４  秘密鍵下位部分生成装置（秘密鍵部分生成手段）
１０５  秘密鍵取得装置
１０６  公開鍵取得装置
１０７  鍵ネゴシエーション装置
７０１  鍵選択、取得装置
【図１】
2007272048.tif 000003
【図２】
2007272048.tif 000004
【図３】
2007272048.tif 000005
【図４】
2007272048.tif 000006
【図５】
2007272048.tif 000007
【図６】
2007272048.tif 000008
【図７】
2007272048.tif 000009
【図８】
2007272048.tif 000010
【図９】
2007272048.tif 000011
【図１０】
2007272048.tif 000012