(57)【特許請求の範囲】
【請求項１】
共有鍵暗号方式で暗号通信を行うＩＣカードにおいて、暗号鍵の桁数の２倍以上の桁数の共有秘密情報を保持する手段と、部分桁の加減算と連接操作のみで大きい数から小さい数を生成する一方向性関数を用いて前記共有秘密情報から暗号鍵を生成する手段と、前記共有秘密情報を数回だけの加減乗算からなる更新用関数により更新する手段と、一回の取引を終了するごとに前記暗号鍵を更新するように制御する手段とを具備することを特徴とするＩＣカード。
【請求項２】
前記更新用関数は、８ワードの共有秘密情報に対して１ワード（３２ビット）の数の加減乗算を８回行う関数であることを特徴とする請求項１記載のＩＣカード。
【請求項３】
共有鍵暗号方式で暗号通信を行う携帯端末において、暗号鍵の桁数の２倍以上の桁数の共有秘密情報を保持する手段と、部分桁の加減算と連接操作のみで大きい数から小さい数を生成する一方向性関数を用いて前記共有秘密情報から暗号鍵を生成する手段と、前記共有秘密情報を数回だけの加減乗算からなる更新用関数により更新する手段と、一回の通信を終了するごとに前記暗号鍵を更新するように制御する手段とを具備することを特徴とする携帯端末。
【請求項４】
前記更新用関数は、８ワードの共有秘密情報に対して１ワード（３２ビット）の数の加減乗算を８回行う関数であることを特徴とする請求項３記載の携帯端末。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、暗号鍵更新方法に関し、特に、共有鍵暗号を用いた暗号通信において、暗号鍵を簡単かつ安全に更新する暗号鍵更新方法に関する。
【０００２】
【従来の技術】
インターネットを用いて電子商取引を行う時には、第３者に知られることなく、安全に２点Ａ,Ｂ間で通信を行うために、データは暗号化して伝送されている。その時に利用される暗号技術として、現在広く使用されているのは、AESやDESに代表される共有鍵暗号方式である。これは、通信を行うＡ,Ｂ間でのみ共有している共通暗号鍵をもとに、送信するデータを第３者に分からないデータに変換する方法である。
【０００３】
DES(Data Encryption Standard)は、これまでアメリカ合衆国政府の国立標準研究所(NIST)が、データ暗号の標準として推奨してきた共有鍵暗号方式である。AES(Advanced Encryption Standard)は、DESに代わるデータ暗号の標準としてNISTが公募し、数学者J.Daemen,V.Rijmenによって開発されたRijndaelと呼ばれる暗号化方式である。どちらも共有鍵を利用して、固定サイズのブロックに区切られたデータを高速に暗号化する共有鍵暗号方式であり、ブロックサイファーと呼ばれる。この変換に必要な計算量は大変小さい。８ビットの２数の積を求める計算と、鍵と同じビット数（64,128,196,256ビットのいずれか）の２数の和を求める計算が必要なだけである。
【０００４】
ここで使われる共有鍵は、第３者に知られてはならないものである。しかし、同じ鍵を何度も使い続けると、知られてしまう可能性がある。これを避けるために、通信を何度か行うごとに、鍵を交換し直している。この鍵交換では、最も安全とされるDiffie-Hellman(1976)の鍵交換方式が利用されることが多い。すなわち、公開された大きな素数ｐと、位数ｐの有限体GF(ｐ)の乗法群の生成元ｇを用いて、ＡとＢがそれぞれ乱数ａ,ｂを発生させる。ＡはＢに(ｇa modｐ)を送り、ＢはＡに（ｇb modｐ）を送る。それぞれ、
ｋ＝(ｇb)a mod p＝(ｇa)b modｐ
を計算し、秘密鍵として共有する。この鍵交換方法は、DES,AESの変換に比べ大変安全だが、256ビット(128または512ビットの場合もある)の数同士の冪乗を計算するため、計算量がとても大きく、低速である。
【０００５】
安全性を維持しながら、鍵交換の負荷を少なくするために、各種の方法が提案されている。特開2000-278258号公報に開示された「共通鍵交換方法」は、共通鍵暗号方式を用いた秘密通信を行うための通信量が少なく、効率的で安全な鍵交換方法である。１回目の鍵交換は、Diffie-Hellman鍵交換方式において必要な全てのパラメータの生成を行ない、公開情報の共有処理を行った上で、鍵交換処理を行う。２回目以降の鍵交換においては、既に共有されている秘密情報を、新たな鍵交換における公開情報の一つとして使用し、このパラメータの生成および共有処理は行わずに、鍵交換処理を行う。２回目以降の鍵交換処理時に、共有すべき公開情報の一部を生成する必要が無いため、鍵交換処理において任意数発生の処理が省略できる。また、通知すべきパラメータが少なくなるため、共有すべき公開情報を含むパケットのサイズが小さくなる。ひいては、通信量を少なくすることができ、通信路に公開情報を送信する必要をなくすことができる。
【０００６】
また、特開2001-60256号公報に開示された「データ更新機能付きICカード」は、鍵更新のための特別なカード処理のためのセンターを不要にし、安全に鍵更新できるようにするものである。ICカードに暗号用鍵の更新予定日を登録しておき、外部からの時間情報と更新予定日に基づいて更新時期を判別し、更新予定日以降に、現在の暗号用鍵データと取引回数データとから演算して新しい鍵を生成し、更新する。
【０００７】
【発明が解決しようとする課題】
しかし、従来の暗号鍵更新方法においては、Diffie-Hellman鍵交換方式で通信中に鍵交換を行うと、その計算を行っている間、電子商取引をストップさせることになり、定期的に待ち時間と通信コストが生じるという問題があった。
【０００８】
本発明は、上記従来の問題を解決して、通信を必要としない効率的で安全な鍵更新方法により、鍵更新を通信終了後に行うことで、待ち時間と通信コストを削減することを目的とする。
【０００９】
【課題を解決するための手段】
上記の課題を解決するために、本発明では、共有鍵暗号方式で暗号通信を行う二点間の共有秘密情報に基づいて、更新暗号鍵を同じ一方向性関数に従って二点それぞれで別々に生成することにより、通信をせずに暗号鍵更新を行う暗号鍵更新方法を、暗号鍵のサイズより大きい共有秘密情報を二点で共有し、共通秘密情報を含む情報から、一方向性関数により共通秘密情報よりも情報量が少ない新しい暗号鍵を生成する構成とした。
【００１０】
このように構成したことにより、簡単かつ安全に暗号鍵を更新することができる。また、暗号鍵交換のためのデータのやり取りをしない代わりに、最初に交換する共通秘密情報のサイズを、暗号鍵サイズより大きくとっておくことで、通信時に共通秘密情報の一部しか外に現れないようにして、暗号鍵を更新するごとに、その前の暗号鍵にはなかった新たな情報が加わるようにして、新たに選び直すことに相当する安全性を得ている。通信では元の共通秘密情報の一部しか見せないことで、新規に暗号鍵を生成したと同様な状態を作り出し、安全性を高めることができる。また、暗号鍵更新のための情報を通信しないため、その情報を漏らさないための処理が不要となる。さらに、次の暗号鍵を生成できることが本人であることの証明にもなり、認証としての役割を得ることもできる。
【００１１】
また、一方向性関数を、あらかじめ取り決めた合成数Ｎを法とする剰余環における乗算を行う関数としたので、素数を法とした場合に比べ乱数度と強度を高めることができる。暗号鍵更新のための計算量も、通信を利用して新たな鍵を安全に交換するよりも少なくできる。
【００１２】
また、一回の通信を終了するごとに暗号鍵を更新するので、暗号鍵更新を通信終了後に行えるようになり、暗号鍵更新のための通信中の待ち時間と通信コストを削減できる。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態について、図１〜図６を参照しながら詳細に説明する。
【００１４】
（第１の実施の形態）
本発明の第１の実施の形態は、最初にDiffie-Hellman鍵交換方式で256ビットの基本鍵を交換して、基本鍵を二乗して１とならないことを確認し、これを更新基本鍵とし、そのうちの64ビットをDESの暗号鍵とし、２回目からは、更新基本鍵を二乗した新更新基本鍵のうちの64ビットをDESの暗号鍵とする暗号鍵更新方法である。
【００１５】
図１は、本発明の第１の実施の形態における暗号鍵更新方法の概念図である。図２は、本発明の第１の実施の形態における暗号鍵更新方法の概略の流れ図である。この方法は、平方剰余により疑似乱数を生成するBlum-Blum-Shub（ＢＢＳ）法を利用した方法であるので、仮にＢＢＳ法と呼ぶ。最初に、図１と図２を参照して、本発明の第１の実施の形態における暗号鍵更新方法の概略を説明する。
【００１６】
図１に示すように、256ビットの基本鍵ｋを二乗して、更新基本鍵ｈを求める。更新基本鍵ｈのうちの64ビットを抽出して、暗号鍵ｇとする。図２の流れ図に示すステップ１で、剰余計算に使う法Ｎと鍵交換に使う乱数ｒを用意する。ステップ２で、Diffie-Hellman鍵交換方式により256ビットの基本鍵ｋを、通信相手と交換する。ステップ３で、基本鍵ｋを二乗して更新基本鍵ｈとする。ステップ４で、更新基本鍵ｈのうちの64ビットを抽出して、暗号鍵ｇとする。ステップ５で、暗号鍵ｇをDESの暗号鍵として、暗号通信を行う。ステップ６で、更新基本鍵ｈを二乗して新しい更新基本鍵ｈとする。ステップ７で、新しい更新基本鍵ｈのうちの64ビットを抽出して、次の暗号鍵ｇとする。ステップ５に戻り、暗号通信を行う。これを繰り返す。
【００１７】
以下、各ステップについて、詳しく説明する。DES方式の暗号を用いて暗号通信を行う場合を例として説明する。DESでは64ビットの暗号鍵を用いる。送りたいデータ（平文）を64ビットに区切って、暗号鍵で暗号文に変換する。DESを利用した通信では、同じ暗号鍵を長く使い続けると、暗号鍵が破られて、その後のすべての文書を解読されてしまう。これを回避するため、一回の通信を終了する度に暗号鍵を更新して、安全性を確保する。
【００１８】
暗号鍵の更新における計算は、素数ｐを法とする剰余での計算（GF(ｐ)での計算）ではなく、合成数Ｎ（＝ｓ×ｔ）を法とする剰余環での計算とする。GF(ｐ)での演算では除算及び平方根を求める簡単な計算方法が存在するが、合成数を法とする剰余環では、与えられた元に逆元があっても因数分解を知らずにこれを求めるには膨大な計算量がかかるため、除算及び平方根を求めることも事実上不可能で、因数を求める効率の良い計算方法も見つかっていないので、暗号鍵の逆算が困難になるためである。
【００１９】
あらかじめ、合成数Ｎを準備しておく。128ビットの素数ｓ,ｔで、(ｓ−１)／２も(ｔ−１)／２も素数となるものを選び、Ｎ＝ｓ×ｔ（256ビット）とする。例えば、２進125ビットの乱数ｘを次々に発生させる。1x1(乱数ｘのMSBの上位桁に１を連接し、LSBの下位桁にも１を連接した127ビットの数、すなわち、２126＋２ｘ＋１)に素数検定をかける。これが素数ならば、1x11（さらにLSBの下位桁に１を連接した128ビットの数、２127＋４ｘ＋３）に素数検定をかける。これが素数検定に合格すれば、この数を使う。これを、２回の素数検定に合格するまで繰り返す。このようにして、素数ｓ＝1x11を見つけることができる。素数ｔも同様にして見つける。
【００２０】
また、256ビットの乱数ｒで、
ｒ(s-1)≠１ modＮ
ｒ(t-1)≠１ modＮ
となるものを選んで装備しておく。ｓ,ｔは非公開とする。この場合には、
ｒe＝１ modＮ
をみたす最小の正の整数ｅは(ｓ−１)(ｔ−１)／２となり、十分に大きく、ｓ,ｔを知らない人が、ｅを求めることは難しい。
【００２１】
通信を行う人も、以下の計算過程でｓ,ｔを知る必要はないので、Ｎ,ｒは、システムとしてあらかじめ装備しておく。利用者それぞれが複数の通信相手を持つ場合にも、積の計算はすべて同じmodＮで行うことにする。
【００２２】
最初の基本鍵ｋの交換には、最も安全な方法と考えられているDiffie-Hellman鍵交換方式を、素数での剰余の代わりに合成数Ｎでの剰余に置き換えたものを用いる。ここでは、有限体上のDiffie-Hellman鍵交換方式と同様な剰余環上の鍵交換方式も、Diffie-Hellman鍵交換方式と呼ぶことにする。すなわち、以下の方法で、256ビットの基本鍵ｋを交換する。
【００２３】
通信を行うＡとＢは、それぞれ256ビットの乱数ａ,ｂを発生させて、ＡはＢに、（ｒa modＮ）を送り、ＢはＡに、（ｒb modＮ）を送り、それぞれが、
ｋ＝(ｒb)a modＮ＝(ｒa)b modＮ
を計算し、ｋを基本鍵として秘密に共有する。Diffie-Hellman鍵交換方式以外の方法で、基本鍵ｋを交換してもよい。例えば、公開鍵方式で基本鍵ｋを相手に送ることもできる。
【００２４】
基本鍵ｋをこのように選ぶと、合成数Ｎを法とする剰余環において、基本鍵ｋのべき乗で生成される乗法群の位数ｅ、すなわち、
ｋe＝１ modＮ
をみたす最小の正の整数ｅは、
ｋ2≠１ modＮ
であれば、(ｓ−１)(ｔ−１)／２，(ｓ−１)(ｔ−１)／４，(ｓ−１)，(ｔ−１)，(ｓ−１)／２，(ｔ−１)／２のいずれかであり、どれも十分に大きい。また、ｓ,ｔを知らない人がこれを求めるには、Ｎを因数分解するか、全数チェックすることが必要となる。この計算量は十分に多いため、現在の技術では事実上求めることができないものとみなせる。
【００２５】
１回目の通信に用いる暗号鍵ｇ(ｋ,１)は、
ｈ(ｋ,１)＝ｋ2 modＮ
の最初の64ビットとする。すなわち、基本鍵ｋを二乗して更新基本鍵ｈを求め、256ビットの更新基本鍵の最初の64ビットを取り出して、暗号鍵ｇとする。ｉ回目の通信に利用する暗号鍵ｇ(ｋ,ｉ)は、
ｈ(ｋ,ｉ)＝ｈ(ｋ,ｉ−１)2 modＮ
のｉ（mod 256）ビット目（MSBを１ビット目とする）から、mod 256ビットで見て連続する64ビットとする。
【００２６】
ｉ番目の暗号鍵ｇ(ｋ,ｉ)を用いての通信時には、暗号鍵ｇ(ｋ,ｉ)の他に、更新基本鍵ｈ(ｋ,ｉ)を保存しておき、その通信の終了後、次の通信までの間に、それぞれが、
ｈ(ｋ,ｉ＋１)＝ｈ(ｋ,ｉ)2 modＮ
を計算し、（ｉ＋１）番目の暗号鍵ｇ(ｋ,ｉ＋１)を生成し、次の通信に用いる。もちろん、速度に問題がなければ、通信中に並行して次の暗号鍵ｇを計算しておき、必要となった場合、すぐに暗号鍵ｇを更新するようにしてもよい。
【００２７】
２回目以降の鍵更新を、通信中には行わないので、暗号鍵更新のための待ち時間と通信コストを削減できる。また、２回目以降の暗号鍵ｇを生成するための計算量も、256ビットの数２つの積の計算１回分に相当し、冪乗の計算を行うDiffie-Hellman鍵交換方式を用いる場合に比べれば、はるかに小さい。そのため、通信の度に暗号鍵ｇを取り替えることが可能となり、DESのように十分に安全とは言えなくなった暗号方式で通信を行っても、通信相手以外の者が暗号鍵を推定することは困難となる。
【００２８】
さらに、ｉ番目の暗号鍵ｇ(ｋ,ｉ)を用いての通信のデータから、第三者がDESを解読して暗号鍵ｇ(ｋ,ｉ)を推定できたとしても、更新基本鍵ｈ(ｋ,ｉ)を推定するには、残りのビットに相当する２192通りの可能性を考えなくてはならず、DESの64ビット鍵を求める以上の計算量が必要となる。
【００２９】
また、このように基本鍵ｋを次々に二乗して、未知の２つの素数の積Ｎでの剰余ｈ(ｋ,ｉ)を作り、これを並べて作った列が、乱数として大変優れたもの、すなわち連続するいくつものデータを集めても、次のビットをランダムより良い確率で予測することが難しい、という性質をもつ乱数列になっていることは、文献［L. Blum, M. Blum, M. Shub: "A Simple Unpredictable Psudo-Random Number Generator", SIAM J. Comput. Vol15, No.2, May 1986］で示されている。よって、いくつかの暗号鍵ｇ(ｋ,ｉ)を推定しても、法則を見つけることは大変に難しく、他の暗号鍵を推定するには、やはり全数チェック相当の計算が必要となると考えられ、安全に通信を行うことができる。
【００３０】
上記のように、本発明の第１の実施の形態では、暗号鍵更新方法を、最初にDiffie-Hellman鍵交換方式で256ビットの基本鍵を交換して、基本鍵を二乗して更新基本鍵とし、そのうちの64ビットをDESの暗号鍵とし、２回目からは、更新基本鍵を二乗した新更新基本鍵のうちの64ビットをDESの暗号鍵とする構成としたので、暗号鍵の交換のための通信をすることなく、簡単な計算で安全に暗号鍵を更新できる。
【００３１】
(第２の実施の形態)
本発明の第２の実施の形態は、最初に、鍵管理センターから256ビットの基本鍵を取得して共有し、基本鍵から加減算で64ビットのDES暗号鍵を生成し、２回目からは、32ビットの加減乗算で基本鍵を更新し、更新した基本鍵から加減算で64ビットのDES暗号鍵を生成する暗号鍵更新方法である。
【００３２】
図３は、本発明の第２の実施の形態における暗号鍵更新方法の概念図である。図４は、本発明の第２の実施の形態における暗号鍵更新方法の概略の流れ図である。この方法は、加減算により暗号鍵を生成するので、仮に加減算法と呼ぶ。携帯端末やICカードなどでは、電子商取引を行うために信頼できる暗号処理が必要にもかかわらず、メモリやCPUや待ち時間の上限等の制約がある。大きな暗号鍵データをいくつも保存することも、32ビット以上の２つの数の冪乗の計算を行うことも難しい。十分に安全な暗号方式でデータを暗号化することが困難である。データの変換方式を簡易なものに変えるかわりに、暗号鍵の更新を、計算量も少なく、しかも頻繁に、例えば、電子商取引を行うたびに行うことで、十分な安全性を確保する。図３と図４を参照して、本発明の第２の実施の形態における暗号鍵更新方法の概略を説明する。
【００３３】
図３に示すように、256ビットの基本鍵ｋを32ビットずつに分け、上位128ビットについて32ビットずつの加減算を行い、64ビットの暗号鍵ｇの上位32ビットとする。下位128ビットについて32ビットずつの加減算を行い、64ビットの暗号鍵ｇの下位32ビットとする。図４の流れ図に示すステップ12で、センターから256ビットの基本鍵ｋを取得する。ステップ13で、基本鍵ｋから加減算により暗号鍵ｇを計算する。ステップ14で、暗号鍵ｇをDESの暗号鍵として、暗号通信を行う。ステップ15で、加減乗算により、基本鍵ｋから新しい基本鍵ｋを生成する。ステップ16で、新しい基本鍵ｋから加減算により暗号鍵ｇを計算する。ステップ14に戻り、暗号通信を行う。これを繰り返す。
【００３４】
以下、各ステップについて、詳しく説明する。商取引には、64ビットの暗号鍵を用いたDESまたはストリームサイファーで情報の変換をする。上記のような制約がある場合には、暗号鍵情報を、通信路を利用して安全に交換することはできないため、一回目の電子商取引を始める前には、鍵管理センターに直接アクセスしてデータを取り込むことで、256ビットの基本鍵ｋを共有しておく。
【００３５】
しかし、鍵管理センターに頻繁に直接アクセスして256ビットの基本鍵を共有させるのは、手間がかかりすぎて実用上問題があるため、現在保有している情報から、実現可能な計算量で次回の通信に使う暗号鍵を生成する。
【００３６】
商取引を始める直前に、共有する基本鍵ｋから、通信に用いる64ビットの暗号鍵ｇを得るため、次のような計算をする。まず、図３に示すように、基本鍵ｋを32ビットごとに区切り、x1,x2,x3,x4,x5,x6,x7,x8とする。以下、計算はすべてmod２32で行う。商取引に用いる64ビット鍵ｇは、上位32ビットを、x1-x2+{x3(EXOR)x4}で求める。下位32ビットを、{x5(EXOR)x6}+x7-x8で求める。ここで、(EXOR)は、ビットごとに排他的論理和をとる関数とする。基本鍵ｋから64ビットの暗号鍵ｇを求める計算は、和と(EXOR)だけからなる。これは大変簡単な計算で、時間もほとんどかからない。
【００３７】
商取引終了直後に、基本鍵ｋを更新するための計算を、次のように行う。すなわち、
ｙ1＝ｘ1×ｘ5
ｙ2＝ｘ2×ｘ7
ｙ3＝ｘ3(EXOR)x8
ｙ4＝ｘ4−ｘ6
ｙ5＝ｘ3×ｘ6
ｙ6＝ｘ4×ｘ8
ｙ7＝ｘ1(EXOR)ｘ7
ｙ8＝ｘ2(EXOR)ｘ5
として、ｘiをｙiに代えて基本鍵ｋを更新し、次の通信まで保存しておく。携帯端末なら、通信終了後に計算すれば良い。ICカードなら、電子商取引終了時に上の計算をして基本鍵ｋを更新し、書き換えておくようにすれば良い。
【００３８】
32ビットの積を４回計算する他は、和と(EXOR)しか計算していないため、かなり制約の大きい通信装置でも、簡単に計算することができる。また、自身が保有するデータだけを利用して、通信することなく次の暗号鍵を生成できるため、暗号鍵の更新が容易に行える。
【００３９】
さらに、通信及び電子商取引終了後には、必ず自動的に暗号鍵を更新しているため、次の暗号鍵を生成できることが、本人であることの証明にもなる。第三者によるなりすまし、すなわち、取引のために暗号化して送ったデータをそのまま送ることで同じ取引を実現すること、を防止することも可能になる。
【００４０】
上記のように、本発明の第２の実施の形態では、暗号鍵更新方法を、最初に、鍵管理センターから256ビットの基本鍵を取得して共有し、基本鍵から加減算で64ビットのDES暗号鍵を生成し、２回目からは、32ビットの加減乗算で基本鍵を更新し、更新した基本鍵から加減算で64ビットのDES暗号鍵を生成する構成としたので、１回通信するのみで、きわめて簡単な計算で安全に暗号鍵を更新できる。
【００４１】
(第３の実施の形態)
本発明の第３の実施の形態は、最初に、Diffie-Hellman鍵交換方式で512ビットの基本鍵ｋを交換し、基本鍵ｋのうちの下位256ビットをS-box処理してｋ乗した結果の下位256ビットをAESの暗号鍵とし、２回目からは、前回の暗号鍵をS-box処理したものをｋ乗した結果の下位256ビットをAESの暗号鍵とする暗号鍵更新方法である。
【００４２】
図５は、本発明の第３の実施の形態における暗号鍵更新方法の概念図である。図６は、本発明の第３の実施の形態における暗号鍵更新方法の概略の流れ図である。この方法は、べき乗により暗号鍵を生成するので、仮にべき乗法と呼ぶ。これからの共有鍵暗号方式の標準として推奨されるAES暗号方式のうち、もっとも安全性の高い256ビット暗号鍵を用いた暗号化方式を用いる。ある程度の計算量はかかっても良いから、更に安全性を強化して、できるだけ外部に情報を漏らさずに通信を行いたい場合の暗号鍵更新方法である。図５と図６を参照して、本発明の第３の実施の形態における暗号鍵更新方法の概略を説明する。
【００４３】
図５に示すように、512ビットの基本鍵ｋの下位256ビットを抽出して、最初の暗号鍵ｇとする。暗号鍵ｇをS-box処理して、ｆ(ｇ)とする。これをｋ乗して、512ビットの法Ｎの剰余を求め、その下位256ビットを次回の暗号鍵ｇとする。図６の流れ図に示すステップ21で、剰余計算に使う法Ｎと鍵交換に使う乱数ｒを用意する。ステップ22で、Diffie-Hellman鍵交換方式により512ビットの基本鍵ｋを、通信相手と交換する。ステップ23で、基本鍵ｋの下位256ビットをS-box処理してｋ乗した結果の下位256ビットを暗号鍵ｇとする。ステップ24で、暗号鍵ｇをDESの暗号鍵として、暗号通信を行う。ステップ25で、基本鍵ｋと暗号鍵ｇのビットパターンに応じて暗号鍵ｇの更新を行うかどうかを判断する。更新を行う場合は、ステップ26で、暗号鍵ｇをS-box処理してｋ乗した結果の下位256ビットを新しい暗号鍵ｇとする。ステップ24に戻り、暗号通信を行う。これを繰り返す。
【００４４】
以下、各ステップについて、詳しく説明する。第１の実施の形態と同様に、256ビットの素数ｓ,ｔで、(ｓ−１)／２も(ｔ−１)／２も素数となるものを生成する。計算は、Ｎ＝ｓ×ｔ（512ビット）を法とする剰余環で行う。通信を行うＡ,Ｂは、最初の基本鍵ｋを、Diffie-Hellman鍵交換方式で交換する。交換し共有した512ビットの基本鍵ｋは、それぞれ秘密に保存し続ける。
【００４５】
AESにおけるデータの変換には、S-boxと呼ばれる８ビットの情報の一対一対応を与える関数を使う。256ビットの２進数を８ビットごとに区切り、それぞれにS-boxを施す関数をｆとする。また、任意の数に対して、mod２256をとる関数をＭ256とし、modＮをとる関数をＭNとする。
【００４６】
まず、基本鍵ｋの下位256ビットを取り出し、ｇ(ｋ,０)とする。すなわち、
ｇ(ｋ,０)＝Ｍ256(ｋ)
とする。実際の通信に用いる最初の暗号鍵ｇ(ｋ,１)は、ｇ(ｋ,０)をS-box処理し、その結果のｋ乗の法Ｎでの剰余を求め、その下位256ビットを使う。すなわち、
ｇ(ｋ,１)＝Ｍ256(ＭN(ｆ(ｇ(ｋ,０))k))
とする。２回目以降の暗号鍵は、それぞれが、
ｇ(ｋ,ｉ＋１)＝Ｍ256(ＭN(ｆ(ｇ(ｋ,ｉ))k))
を計算することにより、ｉ番目の鍵ｇ(ｋ,ｉ)から（ｉ＋１）番目の鍵ｇ(ｋ,ｉ＋１)を生成する。
【００４７】
次回に使う暗号鍵ｇは、通信中でもそうでなくても、暗号鍵更新後１時間以内に計算しておく。ｉ番目の暗号鍵ｇ(ｋ,ｉ)を利用している間に保存しておく情報は、ｇ(ｋ,ｉ),ｇ(ｋ,ｉ＋１),ｋの合わせて1024ビットである。
【００４８】
暗号鍵更新のタイミングは、AESを用いた通信をスタートさせるときに、Ａ,Ｂの時計を同期させることで決める。通信中でもそれ以外でも、１時間ごとに基本鍵ｋと暗号鍵ｇを見て、最後に暗号鍵更新をしてからｉ時間目には、基本鍵ｋのｉ番目のビットと、その時に共有鍵としている暗号鍵ｇのｉ番目のビットを比べて、一致している場合に、次の暗号鍵に取り替える。24時間経過したら、一致しなくても取り替える。
【００４９】
ここで用いるS-boxは、AESのために装備されているものなので、新たに大きな関数を書き加える必要はない。２回目以降の暗号鍵を生成するための計算量は、冪計算を行っているので、Diffie-Hellman鍵交換方式を用いるのと同程度に大きくなるが、暗号鍵の安全性も同程度に高くなる。また、暗号鍵更新のための信号を送らないため、暗号鍵更新のタイミングも第三者にはわからず、機密性の高い暗号通信装置を実現することができる。
【００５０】
上記のように、本発明の第３の実施の形態では、暗号鍵更新方法を、最初に、Diffie-Hellman鍵交換方式で512ビットの基本鍵ｋを交換し、基本鍵ｋのうちの下位256ビットをS-box処理してｋ乗した結果の下位256ビットをAESの暗号鍵とし、２回目からは、前回の暗号鍵をS-box処理したものをｋ乗した結果の下位256ビットをAESの暗号鍵とする構成としたので、通信することなく、安全に暗号鍵を更新できる。
【００５１】
【発明の効果】
以上の説明から明らかなように、本発明では、共有鍵暗号方式で暗号通信を行う二点間の共有秘密情報に基づいて、次に使う暗号鍵を同じ一方向性関数に従って二点それぞれで別々に生成することにより、通信をせずに暗号鍵更新を行う暗号鍵更新方法を、共通秘密情報を一方向性関数により更新し、更新した共通秘密情報の情報量を削減することにより新しい暗号鍵を生成する構成としたので、暗号鍵更新を、高い安全性を損なうことなく、通信をせずに行うことが可能となり、待ち時間と通信コストの削減を実現できるという効果が得られる。
【００５２】
また、暗号鍵更新のための情報を通信しないため、その情報を漏らさないための処理が不要となる。暗号鍵更新のための計算量も、通信を利用して新たな鍵を安全に交換するよりも少なくできる。これにより、頻繁に共有鍵を取り替えることが可能となり、同じコストで、これまで以上に信頼性の高い暗号通信装置を実現することができる。
【００５３】
また、携帯端末やICカードを用いて電子商取引を行う場合など、信頼できる暗号処理が必要にもかかわらず、メモリやCPUの制約により、AES等の十分に安全な共有鍵暗号方式でデータを変換することが困難な場合にも、データの変換方式を簡易なものに変えるかわりに、鍵の更新を頻繁に行うことで、高い安全性を確保することが可能となる。
【００５４】
すでに設計済みの暗号を強化したい場合にも、用いる鍵の倍のサイズの鍵を共有して、通常より頻繁に鍵更新を行うことで、通信を必要とする鍵交換の回数は増やさずに、同じ暗号で安全性を高めることもできる。この場合、鍵更新に必要な情報を通信する必要がないため、あらかじめ取り決めた鍵情報がなければわからないタイミングで鍵更新を行えば、鍵更新したことすら気づかせずに鍵を代えることもできる。
【００５５】
さらに、大切な電子商取引を行う場合には、終了後には必ず自動的に鍵を更新することにより、次の鍵を生成できることが本人であることの証明にもなり、第三者によるなりすまし、すなわち、取引のために暗号化して送ったデータをそのまま送ることで同じ取引を実現することを防止する効果も得られる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態における暗号鍵更新方法の概念図、
【図２】本発明の第１の実施の形態における暗号鍵更新方法の概略の流れ図、
【図３】本発明の第２の実施の形態における暗号鍵更新方法の概念図、
【図４】本発明の第２の実施の形態における暗号鍵更新方法の概略の流れ図、
【図５】本発明の第３の実施の形態における暗号鍵更新方法の概念図、
【図６】本発明の第３の実施の形態における暗号鍵更新方法の概略の流れ図である。
【符号の説明】
ｋ  基本鍵
ｈ  更新基本鍵
ｇ  暗号鍵
【図１】
0003695526.tif 000002
【図２】
0003695526.tif 000003
【図３】
0003695526.tif 000004
【図４】
0003695526.tif 000005
【図５】
0003695526.tif 000006
【図６】
0003695526.tif 000007