説明

鍵共有方式、鍵共有方法及び鍵共有プログラム

【課題】端末自身が擬似乱数のランダム性の検証を行わないようにすることにより、端末が検証を行う際の評価基準等の設定や情報漏洩リスクの問題をなくす。
【解決手段】鍵共有・公開鍵暗号化手段112は、擬似乱数生成手段113の内部状態を更新するための状態更新用データの一部を取り出し、それを公開鍵暗号化してサーバ120へ送信する。ランダム性評価手段124は、端末110から受信した状態更新用データの一部を更新したデータと所定の閾値との比較結果に基づいて得られた擬似乱数生成手段113の内部状態のランダム性判定結果を、鍵共有・公開鍵復号手段123を通して端末110へ送信する。ランダム性評価手段124は、ランダム性判定結果が合格のときには鍵共有処理を実行し、ランダム性判定結果が不合格であるときには、鍵共有・公開鍵復号手段123が受信して復号したデータに基づいて、ランダム性評価・更新処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は鍵共有方式、鍵共有方法及び鍵共有プログラムに係り、特にホスト機器となるサーバと端末との間の通信の暗号化に使用する鍵共有方式、鍵共有方法及び鍵共有プログラムに関する。
【背景技術】
【0002】
通信秘匿のために暗号化は必須の技術となっている。現代暗号は、アルゴリズムを公開しても暗号の鍵を秘密にすることによって通信秘匿を実現する。暗号を用いた通信ではデータを暗号化するための秘密鍵を、通信を行う送信側と受信側との間でどのように共有するのかが課題となる。
【0003】
現代暗号は、大きく共通鍵暗号と公開鍵暗号とに分類される。前者はDES(Data Encryption Standard)やAES(Advanced Encryption Standard)などのブロック暗号が代表的で、送信側と受信側とが予め同一の秘密鍵を持っていることを前提とする。後者はRSA暗号が代表的で、暗号化と復号で使用する鍵が異なり、暗号化で使用する鍵は公開鍵、復号で使用する鍵は秘密鍵と呼ばれる。公開鍵暗号は、公開鍵から秘密鍵を推測することは非常に困難という性質を持つ。このため、公開鍵は公開してあっても、秘密鍵の漏洩がなければ公開鍵で暗号化した情報は秘密鍵を持つ者のみが復号可能となる。ただし、公開鍵暗号は共通鍵暗号よりも非常な大きな計算量が必要である。このため、公開鍵暗号を用いて共通鍵暗号で使用する秘密鍵(セッション鍵と呼ばれる)を共有し、実際のデータは共通鍵暗号を用いて暗号化処理を行うことが多い。
【0004】
公開鍵暗号を使用する際には、公開鍵暗号で使用する演算を定義するドメインパラメータや公開鍵が正しいことを保証する必要がある。有限体上の離散対数を用いる方式の場合には、ドメインパラメータは剰余系演算を定める素数pと、離散対数問題の生成元となるmod_pの元g (mod p)とからなる。また、秘密鍵x mod qに対して公開鍵は、y=gx mod pと一般に定められる。ここで、素数qは元gの位数、つまりga=1 mod pとなる最小の自然数aである。qはp−1の約数となる。本明細書では、ドメインパラメータと公開鍵とを併せて公開パラメータと呼ぶことにする。
【0005】
公開鍵暗号を使用した代表的な鍵共有アルゴリズムである、ディフィー(Diffie)とヘルマン(Hellman)により発表されたDiffie-Hellman鍵共有アルゴリズムは、公開鍵のgr mod pやgs mod pを盗聴して秘密情報を求める受動的な攻撃には強いが、なりすましなどの能動的な攻撃には弱いことが知られている。そこで、Diffie-Hellman鍵共有アルゴリズムを用いる際には、通信相手を認証することが必須となる。認証付鍵共有に関しては、例えば米国標準技術局(National Institute of Standards and Technology;NIST)が発行する非特許文献1に記載されている方法が知られている。
【0006】
ところで、公開鍵パラメータの正当性保証に関しては認証局による公開鍵証明書に基づく方式がよく知られている。その一方で、閉じた暗号通信システムでは、信頼できる機関から公開情報を直接入手することによって、信頼性を確保することが可能となる。
【0007】
図12は、上記の閉じた暗号通信システムの一例のブロック図を示す。同図に示すように、この暗号通信システム500は、パラメータ生成手段501、ホスト機器となるサーバ502及び端末503からなる。1台のサーバ502に対して端末503は複数存在し、それぞれの端末503はサーバ502と通信を行う。パラメータ生成手段501は、端末配布時に公開鍵暗号のパラメータ、鍵情報を生成し、サーバ502と端末503に必要な情報を設定してから端末503をユーザに渡す。
【0008】
この暗号通信システム500では、サーバ502と端末503の安全性は大きく異なる状況を想定する。つまり、サーバ502は安全な場所にあり、秘密情報の漏洩や不正な処理などのリスクは非常に小さいと仮定する。一方、端末503は盗難や情報流出の危険性が高いと仮定する。公開鍵パラメータを端末503に事前に設定しておく場合、その端末503は比較的長期にわたってその設定を利用することになる。そのために、攻撃者が端末503のそれらの情報を入手した際には、比較的長期にわたってその公開鍵パラメータに対しての攻撃機会が発生することになる。
【0009】
高強度セキュリティを要求されるアプリケーションにおいては、そのような状況は望ましくなく、攻撃者が端末503から得られる情報は極力小さくすることが望まれる。そのためには、端末503には何の鍵情報も事前に格納せずに、セッション開始時に公開鍵パラメータをサーバ502が端末503に送信する方法が考えられる。
【0010】
しかしながら、このとき、サーバ502のなりすましが容易に行えてしまうという問題が発生する。また、不正なサーバが不正なドメインパラメータを端末503に送付した場合には、秘密鍵がたとえ漏洩していなくても安全性が損なわれる場合がある。例えば、非常に小さな位数を持つ元gを攻撃者が設定した場合には、攻撃者がたとえ秘密鍵を知らなくても、Diffie-Hellmanアルゴリズムで共有される鍵情報の推測が可能になってしまう。
【0011】
そこで、この課題に対処する鍵共有システムが特許文献1に開示されている。特許文献1に記載の鍵共有システムは、本発明者により開示された鍵共有方式で、以下、図13及び図14を用いてその発明の概略を説明する。図13及び図14中、図12と同一構成部分には同一符号を付してある。なお、鍵共有は、有限体上のDiffie-Hellman鍵共有アルゴリズムを使用しているが、有限体上の楕円曲線の有理点のなす加群を用いても同様の鍵共有を行うことができる。
【0012】
図13は、図12のパラメータ生成手段501で生成する情報と、サーバ502及び端末503が保持する情報を示す。図13において、パラメータ生成手段501は、端末503が与えられたときにドメインパラメータのリスト{p(i),q(i),g(i):i=1,2,3,...}を生成すると共に、対応する秘密鍵と公開鍵の(x(i),y(i))を設定する。また、パラメータ生成手段501は、p(i)とg(i)とを連接したビット列であるp(i)||g(i)を入力データとするハッシュ値h(i)(=Hash(p(i)||g(i)))を計算する。
【0013】
サーバ502は、パラメータ生成手段501から入力されるドメインパラメータのリストと秘密鍵と公開鍵の(x(i),y(i))とからなるリスト601を端末503毎に保持する。端末503は、パラメータ生成手段501から入力されるハッシュ値h(i)を公開鍵y(i)と併せたリスト602を格納する。
【0014】
次に、図14のフローチャートを用いて、特許文献1記載の鍵共有システムの動作について説明する。まず、端末503は、サーバ502に対して端末IDを送信する(ステップS401)。これにより、サーバ502は、送信元の端末503に対してのパラメータリストの中で使用するパラメータのインデックスiを決定する(ステップS402)。続いて、サーバ502は、インデックスiと対応するp=p(i)とg=g(i)とを連接したビット列p||gを生成し、それを送信する(ステップS403、S404)。
【0015】
端末503は、受信したビット列p||gに対してハッシュ値Hash(p||g)を計算し、格納しているハッシュ値h(i)と比較する(ステップS405)。一致していない場合は不正なパラメータが送付されたとして鍵共有処理を終了する。端末503は、ステップS405でp,gの正当性を確認できた場合は、以下のDiffie-Hellman鍵共有アルゴリズムによる鍵共有処理を実行する。
【0016】
すなわち、端末503は、乱数rを発生し(ステップS406)、その乱数rを用いてw(=gr mod p)を計算し(ステップS407)、それをサーバ502へ送信する(ステップS408)。サーバ502は、秘密鍵x(i)を使って受信したビット列wからZ(=wx(i) mod p)を計算し(ステップS409)、その値Zから鍵導出関数kdf()を用いて秘密鍵Kを生成する(ステップS410)。
【0017】
一方、端末503は、公開鍵y(i)と乱数rを使ってz(=y(i)r mod p)を計算し(ステップS411)、その値zから鍵導出関数kdf()を用いて秘密鍵kを生成する(ステップS412)。ステップ310、312の鍵導出関数kdf()の入力である「otherinfo」は、サーバ502と端末503との間で事前に共有している情報である(公開情報でよい)。これにより、端末IDなどの端末503に固有の情報を情報「otherinfo」に含ませることで、なりすましの防止を図ることができる。なお、鍵導出関数kdf()には、ハッシュ関数などを適用する。
【0018】
図14に示したフローチャートから分かるように、特許文献1記載の鍵共有方式の安全性は、端末503の生成する乱数rのランダム性(攻撃者に対しての予測の困難さ)に大きく依存する。乱数生成器は、物理現象に基づく真性乱数生成器(非決定性ランダムビット生成器)と擬似乱数生成器(決定性ランダムビット生成器)とに大きく分類される。後者は乱数生成器の内部状態に基づいて出力を決定するが、出力されるビット列を観測しても内部状態や次の出力を推測することが困難であるという性質を持ち、ハッシュ関数やブロック暗号を用いて乱数を発生する。擬似乱数発生器は、例えば非特許文献2に詳細に記載されている。
【0019】
ハードウェアを利用した真性乱数生成器を使用することが理想的ではあるが、これは環境や時間の経過によって特性も変わり、その評価が難しいことなどから端末503には擬似乱数生成器を用いることが適切となる場合が多い。
【0020】
図15は、擬似乱数生成器の一例の動作機能図を示す。擬似乱数生成器700は、内部状態(メモリ)701に基づいて、出力生成処理702により出力するビット列である擬似乱数を決定する。この擬似乱数のビット幅は、出力生成処理702で使用するハッシュ関数やブロック暗号のデータ幅によって決まる。出力生成処理702を実行するときには、アルゴリズムによって定められているタイミングで内部状態の更新処理703を実行し、次の出力に備える。
【0021】
擬似乱数生成器700は、攻撃者がある時点で内部状態701の推測に成功した場合、その先のすべての系列を攻撃者が決定できてしまうため、外部からランダム性を取り入れて内部状態701を更新するリフレッシュ処理704が必要となる。また、擬似乱数生成器700は、起動時に内部状態701を設定する起動時処理705も必要となる。
【0022】
外部のランダム性は、端末の機器におけるランダム性を持つ要素である“エントロピーソース”から取得する。端末503が計算機であれば、エントロピーソースとしてプロセス番号、サーバ502との通信にかかった時間、ハードディスクへのアクセス速度などが候補として挙げられる。これらのデータを表すビット列を図15ではエントロピー情報706と呼んでいる。リフレッシュ処理704は、状態更新用データであるエントロピー情報706も用いて内部状態701を更新する処理であるため、攻撃者がある時点の内部状態701の推測に成功したとしても、エントロピー情報706を入手できなければ、攻撃者がリフレッシュ処理後の状態の推定を行うことは困難になる。
【0023】
図15の起動時処理705の入力となる固有情報は、計算機であればMAC(Media Access Control)アドレスやIP(Internet Protocol)アドレスといった機器固有の情報であり、固定値である。起動時に起動時処理705がこの固有情報を利用して内部状態701を設定することで、機器毎に異なる内部状態701を設定することができる。また、更新処理703、リフレッシュ処理704の入力となる付加情報707は、例えば公開鍵などのランダム性はないがテンポラリの情報である。この付加情報707も、固有情報と同様に、なりすましなどに対する実用的な対策の一つとなる。
【0024】
上記の更新処理703は、非特許文献2に記載されている擬似乱数生成処理の更新処理(Update())を適用することができる。また、上記の出力生成処理702は、非特許文献2に記載されている擬似乱数生成処理の出力生成処理(Output())を適用することができる。
【0025】
図16(a)は、非特許文献2に記載の擬似乱数生成処理の更新処理(Update())を示し、鍵付きハッシュ関数であるHMAC(Hashed based Message Authentication Code)を利用した更新処理を示す。また、図16(b)は、非特許文献2に記載の擬似乱数生成処理の出力生成処理(Output())の具体的構成を示す。図16(a)、(b)において、(K,V)が内部状態となる。図16(a)、(b)中の「HMAC」については、非特許文献3に開示されている。
【0026】
なお、特許文献2には、2台の通信装置間の鍵共有方式において、一方の通信装置が公開鍵を生成して他方の通信装置へ送信する構成が開示されている。また、特許文献3には、乱数検証手段にて受信した乱数と一致するかどうかを比較し、その比較結果に基づいて鍵が共有されたと認識することが開示されている。
【先行技術文献】
【特許文献】
【0027】
【特許文献1】特開2009−239737号公報
【特許文献2】特開2006−140743号公報
【特許文献3】特開平9−312643号公報
【非特許文献】
【0028】
【非特許文献1】NIST Special Publication (SP) 800-56A,「Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography」,2006年
【非特許文献2】NIST Special Publication 800-90,「Recommendation for Random Number Generator Using Deterministic Random Bit Generators (Rivised)」,2007年
【非特許文献3】NIST Federal Information Processing Standards (FIPS) Publication 198,「The Keyed-Hash Message Authentication Code(HMAC)」,2002年
【発明の概要】
【発明が解決しようとする課題】
【0029】
図12に示した、安全なサーバ502と、攻撃などに対して脆弱な端末503とを含む暗号通信システム500における鍵共有で生成される秘密鍵の安全性は、端末503で使用する乱数の推測困難性に大きく依存する。この端末503の脆弱性に対する課題を解決することを目的とする特許文献1に記載の鍵共有方式は、秘密鍵の安全性が端末の生成する乱数に依存し、その乱数を発生する乱数生成器としては、擬似乱数生成器を用いることが適切となることが多く、擬似乱数生成器として非特許文献2に記載されたものを用いることができる。
【0030】
しかしながら、そのような擬似乱数生成器を用いたとしても、特許文献1記載の鍵共有方式では、安全性を保証するために端末が生成した擬似乱数の乱数性を端末自身で検証することが望ましく、その検証を行うことには計算リソースや評価基準の設定や端末からの統計情報の漏洩リスクなどの問題がある。
【0031】
また、特許文献2及び特許文献3では、乱数生成器は安全であるという前提の下での構成が開示されているに過ぎず、特許文献3に記載の乱数検証手段は乱数生成器の検証を行ってはいない。
【0032】
本発明は以上の点に鑑みなされたもので、安全なサーバと、攻撃などに対して脆弱な端末とを含む暗号通信システムにおいて、端末自身が擬似乱数のランダム性の検証を行わないようにすることにより、端末が検証を行う際の評価基準等の設定や情報漏洩リスクの問題をなくすことが可能な鍵共有方式、鍵共有方法及び鍵共有プログラムを提供することを目的とする。
【課題を解決するための手段】
【0033】
上記の目的を達成するため、本発明の鍵共有方式は、ホスト機器であるサーバと1台以上の端末との間の鍵共有方式であって、
端末は、擬似乱数を生成すると共に、その内部状態を更新するための状態更新用データの一部を抽出する擬似乱数生成手段と、擬似乱数生成手段により抽出された状態更新用データの一部である抽出データを、擬似乱数を使用して所定の公開鍵アルゴリズムに基づき公開鍵暗号化してサーバへ送信する公開鍵暗号化手段とを有し、
サーバは、端末から送信された公開鍵暗号を受信して抽出データを復号する公開鍵復号手段と、復号された抽出データに基づいて、端末の擬似乱数生成手段の現在の内部状態のランダム性を見積もるための数値である累積エントロピーを生成し、累積エントロピーと所定の閾値との比較結果に基づいて擬似乱数生成手段の内部状態のランダム性判定結果を生成するランダム性評価手段と、ランダム性判定結果が合格のときに所定の第1の鍵共有アルゴリズムによる鍵共有処理を実行する第1の鍵共有手段とを有することを特徴とする。
【0034】
また、上記の目的を達成するため、本発明の鍵共有方法は、ホスト機器であるサーバと1台以上の端末との間の鍵共有方法であって、端末内にて、擬似乱数生成手段により擬似乱数を生成させると共に、擬似乱数生成手段の内部状態を更新するための状態更新用データの一部を抽出する第1のステップと、端末が、第1のステップで抽出された状態更新用データの一部である抽出データを、擬似乱数を使用して所定の公開鍵アルゴリズムに基づき公開鍵暗号化してサーバへ送信する第2のステップと、サーバが、端末から送信された公開鍵暗号を受信して抽出データを復号する第3のステップと、サーバ内にて、復号された抽出データに基づいて、端末の擬似乱数生成手段の現在の内部状態のランダム性を見積もるための数値である累積エントロピーを生成する第4のステップと、第4のステップで生成された累積エントロピーと所定の閾値との比較結果に基づいて擬似乱数生成手段の内部状態のランダム性判定結果を生成する第5のステップと、サーバ内にて、ランダム性判定結果が合格のときに所定の第1の鍵共有アルゴリズムによる鍵共有処理を実行する第6のステップとを含むことを特徴とする。
【0035】
また、上記の目的を達成するため、本発明の鍵共有プログラムは、ホスト機器であるサーバに接続された1台以上の端末が有するコンピュータに鍵共有処理を行わせる鍵共有プログラムであって、コンピュータに、
擬似乱数を生成すると共に、擬似乱数生成の内部状態を更新するための状態更新用データの一部を抽出する抽出ステップと、抽出ステップで抽出された状態更新用データの一部である抽出データを、擬似乱数を使用して所定の公開鍵アルゴリズムに基づき公開鍵暗号化してサーバへ送信する公開鍵暗号化及び送信ステップとを実行させることを特徴とする。
【発明の効果】
【0036】
本発明によれば、公開鍵暗号化を適用することで端末は秘密鍵を保持する必要がなく、また、端末が発生する擬似乱数のランダム性の判定をサーバが行うため、端末自身が擬似乱数のランダム性の検証を行う必要がなく、これにより端末が検証を行う際の評価基準等の設定や情報漏洩リスクの問題をなくすことができる。
【図面の簡単な説明】
【0037】
【図1】本発明の鍵共有方式の一実施形態のブロック図である。
【図2】図1中の端末の鍵共有モジュールの動作説明用フローチャートである。
【図3】図2中のステップS104の詳細動作説明用フローチャートである。
【図4】図1中の端末の擬似乱数生成手段がビット若しくはシンボル単位で1個おきにビット(列)を抽出してデータSを生成するルールを模式的に示す図である。
【図5】図3中のステップS205の詳細動作説明用フローチャートである。
【図6】図1中のサーバの鍵共有処理の動作説明用フローチャートである。
【図7】図6中のステップS301の詳細動作説明用フローチャートである。
【図8】図6中のステップS304の詳細動作説明用フローチャートである。
【図9】エントロピー情報の頻度テーブルの一例の模式図である。
【図10】エントロピー情報の頻度テーブルの他の例の模式図である。
【図11】端末内の擬似乱数生成手段の動作の一例の説明図である。
【図12】暗号通信ステムの一例のブロック図である。
【図13】図12中のパラメータ生成手段で生成する情報と、サーバ及び端末が保持する情報を示す図である。
【図14】図12の動作説明用フローチャートである。
【図15】擬似乱数生成器の一例の動作機能図である。
【図16】非特許文献2に記載されている擬似乱数生成処理の更新処理と出力生成処理とを示す図である。
【発明を実施するための形態】
【0038】
次に、本発明の実施形態について、図面を参照して説明する。
【0039】
図1は、本発明になる鍵共有方式の一実施形態のブロック図を示す。同図において、本実施形態の鍵共有方式100は、端末110とサーバ120とから構成される。端末110は複数台がサーバ120に接続されていてもよい。
【0040】
端末110は、鍵共有モジュール111を構成要素として持つ。鍵共有モジュール111は、鍵共有・公開鍵暗号化手段112及び擬似乱数生成手段113から構成される。また、端末110は、擬似乱数生成手段113にエントロピー情報を供給するエントロピーソースを持つ。鍵共有・公開鍵暗号化手段112は、擬似乱数生成手段113が生成する擬似乱数を使用して例えばDiffie-Hellman鍵共有アルゴリズムに基づき鍵共有処理を行う。また、鍵共有・公開鍵暗号化手段112は、擬似乱数生成手段113の内部状態を更新するための状態更新用データの一部を取り出し、それを例えばElGamal暗号アルゴリズムに基づき公開鍵暗号化してサーバ120へ送信する。
【0041】
サーバ120は、乱数生成手段121及び鍵共有モジュール122を備える。乱数生成手段121は、鍵共有モジュール122の外部にある信頼できる乱数生成手段であり、鍵共有モジュール122が鍵共有処理で使用する乱数を鍵共有モジュール122に供給する。鍵共有モジュール122は、鍵共有・公開鍵復号手段123とランダム性評価手段124とを構成要素として持つ。
【0042】
ランダム性評価手段124は、端末110から受信した状態更新用データの一部を更新したデータ(後述する累積エントロピーE)と所定の閾値との比較結果に基づいて得られた擬似乱数生成手段113の内部状態のランダム性判定結果を、鍵共有・公開鍵復号手段123を通して端末110へ送信する。また、ランダム性評価手段124は、上記のランダム性判定結果に応じて、鍵共有処理の実行を制御する。すなわち、ランダム性評価手段124は、ランダム性判定結果が合格のときには、例えばDiffie-Hellman鍵共有アルゴリズムに基づき鍵共有処理を実行する。また、ランダム性評価手段124は、ランダム性判定結果が不合格であるときには、鍵共有・公開鍵復号手段123が受信して復号した端末110から送信された公開鍵暗号化されたデータに基づいて、ランダム性評価・更新処理を行う。なお、上記の鍵共有処理と公開鍵暗号には同一の公開鍵パラメータが使用される。
【0043】
次に、本実施形態の鍵共有方式100の動作について説明する。
【0044】
まず、端末110の鍵共有モジュール111の動作について、図2のフローチャートを併せ参照して説明する。
【0045】
端末110の鍵共有モジュール111は、起動と共に擬似乱数生成手段113が起動時処理を実行し、擬似乱数生成手段113の状態ステータスを初期状態であることを示す“0”に設定する(ステップS101)。この擬似乱数生成手段113の起動時処理では、端末110の固有情報によって擬似乱数生成関数の内部状態の初期化が行われる。
【0046】
続いて、擬似乱数生成手段113は起動後“スタンバイ”の動作となり、定期的に若しくは不定期的にエントロピーソースからエントロピー情報を更新する(ステップS102)。次に、鍵共有モジュール111は、ユーザ/アプリケーションから鍵共有処理実行の要求があるか否かを判定する(ステップS103)。鍵共有処理実行の要求がない場合は、ステップS102のスタンバイ動作を継続するが、鍵共有処理実行の要求がある場合は、鍵共有・公開鍵暗号化手段112が鍵共有処理を実行する(ステップS104)。この鍵共有処理では、鍵共有・公開鍵暗号化手段112は、後述するように、擬似乱数生成手段113からの出力である擬似乱数列も用いてサーバ120と通信を行い、擬似乱数生成手段113の内部状態のランダム性の検証の上で鍵共有アルゴリズムによる鍵共有処理を実行する。
【0047】
続いて、鍵共有モジュール111は、ユーザ/アプリケーションから鍵共有モジュールの停止要求があるか否かを判定する(ステップS105)。鍵共有モジュール111は、鍵共有モジュールの停止要求がない場合は、ステップS102のスタンバイ動作に戻るが、鍵共有モジュールの停止要求がある場合は、動作を終了する。
【0048】
次に、ステップS104の詳細動作について図3と共に説明する。
【0049】
図3は、鍵共有処理ステップS104の詳細動作説明用フローチャートを示す。鍵共有・公開鍵暗号化手段112は、鍵共有処理起動時に、サーバ120に状態ステータスを送信し、サーバ120からはランダム性判定結果を受信する(ステップS201)。続いて、鍵共有・公開鍵暗号化手段112は、送信する状態ステータスが初期状態を示す“0”ではなく、かつ、受信したランダム性判定結果が合格であるかどうかを判定する(ステップS202)。鍵共有・公開鍵暗号化手段112は、ステップS202の判定条件を満たしているときには後述するステップS208に進んで鍵共有アルゴリズムによる鍵共有処理を実行するが、判定条件を満たしていないときには、擬似乱数生成手段113と共にステップS203〜S207の処理を実行する。
【0050】
ステップS203では、擬似乱数生成手段113が、エントロピー情報からサーバ120に送信するデータを抽出し、鍵共有・公開鍵暗号化手段112に出力する。この抽出データは、擬似乱数生成手段113の内部状態を更新するための状態更新用データの一部であり、これを以下、抽出データSと呼ぶ。続くステップS204では、擬似乱数生成手段113がリフレッシュ処理を実行する。続くステップS205では、鍵共有・公開鍵暗号化手段112が、抽出データSを後述するように公開鍵暗号化してサーバ120に送信する、エントロピー情報送信処理を実行する。
【0051】
続いて、ステップS206では、鍵共有・公開鍵暗号化手段112がサーバ120からランダム性判定結果を受信すると共に、状態ステータスが“0”のときには状態ステータスを初期状態でないことを示す“1”に設定する。そして、ステップS207では、鍵共有・公開鍵暗号化手段112がサーバ120から受信したランダム性判定結果が合格を示しているか否かを判定する。ランダム性判定結果が合格を示していないときには、端末鍵共有処理を終了するが、ランダム性判定結果が合格を示しているときには、鍵共有アルゴリズムによる鍵共有処理を実行する(ステップS208)。
【0052】
図4は、ステップS203のエントロピー情報抽出処理を実行するために必要な、擬似乱数生成手段113の構成要素を示す。同図において、擬似乱数生成手段113は、エントロピー情報114から抽出手段115によりサーバ120に送信するデータSを抽出する。エントロピー情報114はメモリであり、エントロピーソースの種類に対応したデータ#1〜#4・・・を保持している。抽出手段115は、エントロピー情報114の一部の情報を取り出し、送信用の抽出データSを生成する。
【0053】
図4は、ビット若しくはシンボル単位で1個おきにビット(列)を抽出してデータSを生成するルールを模式的に示している。また、図4のソース#3のようなランダム性が保証されているソースに関しては、サーバ120への送信を行わない設定も考えられる。図4に示すように、これらの抽出ルールをサーバ120から端末110に動的に設定することも考えられる。
【0054】
次に、図3のステップS205の詳細動作について、図5と共に説明する。
【0055】
図5は、エントロピー情報送信処理ステップS205の詳細動作説明用フローチャートを示す。ステップS205のエントロピー情報送信処理において、まず、擬似乱数生成手段113が、公開鍵暗号化で使用する擬似乱数(一定長のビット列)Rを生成して出力する(ステップS2051)。続いて、鍵共有・公開鍵暗号化手段112は、上記のビット列Rを乱数として使用して、擬似乱数生成手段113により擬似乱数生成手段113の内部状態を更新するための状態更新用データから抽出された抽出データSを公開鍵で暗号化したデータを生成する(ステップS2052)。そして、鍵共有・公開鍵暗号化手段112は、ステップS2052で暗号化した抽出データSをサーバ120に送信する(ステップS2053)。
【0056】
次に、サーバ120の鍵共有処理について、図6と共に説明する。
【0057】
図6は、サーバ120の鍵共有処理の動作説明用フローチャートを示す。まず、サーバ120内のランダム性評価手段124は、端末110の擬似乱数生成手段113の内部状態のランダム性判定処理を実行する(ステップS301)。このランダム性判定処理ステップS301の詳細動作は後述する。
【0058】
続いて、サーバ120内の鍵共有・公開鍵復号手段123は、ステップS301で得られたランダム性判定結果が合格であるか否かを判定する(ステップS302)。鍵共有・公開鍵復号手段123は、ランダム性判定結果が合格であればステップS306に進んで鍵共有アルゴリズムによる鍵共有処理を実行し、ランダム性判定結果が不合格であれば、以下のステップS303〜S305の処理を実行する。
【0059】
ステップS303では、鍵共有・公開鍵復号手段123が、端末110から図5のステップS2053で送信された暗号化データを受信し、これを復号して端末110のエントロピー情報からの抽出データSを得る。続くステップS304では、ランダム性評価手段124が、鍵共有・公開鍵復号手段123から入力された抽出データSに基づき、端末110の現在のエントロピー情報のランダム性(情報量)を算出してランダム性判定を行い、ランダム性評価手段124における抽出データの統計値を更新する。このランダム性評価・更新処理ステップS304の詳細動作は後述する。
【0060】
そして、ステップS305では、鍵共有・公開鍵復号手段123が、ステップS304で得られたランダム性判定結果が合格であるか否かを判定する。鍵共有・公開鍵復号手段123は、ランダム性判定結果が合格であればステップS306に進んで鍵共有アルゴリズムによる鍵共有処理を実行し、ランダム性判定結果が不合格であれば、鍵共有処理を終了する。
【0061】
次に、図6のステップS301の詳細動作について図7と共に説明する。
【0062】
図7は、ランダム性判定処理ステップS301の詳細動作説明用フローチャートを示す。ランダム性評価手段124は、ステップS301において、各端末110毎の現在の内部状態のランダム性を見積もるための数値(以下、これを累積エントロピーEと呼ぶ)を管理する。以下、図7のフローチャートを説明する。
【0063】
ランダム性評価手段124は、端末110が送信した状態ステータスを鍵共有・公開鍵復号手段123を通して受信し(ステップS3011)、その状態ステータスが“0”である否かを判定する(ステップS3012)。ランダム性評価手段124は、状態ステータスが“0”であると判定したときには、端末110が起動時の状態と判断して、その端末110に対応する累積エントロピーEを“0”にリセットし(ステップS3013)、その端末110に対して不合格を示すランダム性判定結果を、鍵共有・公開鍵復号手段123を通して通知する(ステップS3014)。
【0064】
一方、ランダム性評価手段124は、ステップS3012で状態ステータスが“0”でないと判定したときには、端末110が起動時の状態ではないと判断して、その端末に対応する累積エントロピーEの値が予め設定した閾値T以上であるか否かを判定する(ステップS3015)。ステップS3015にて累積エントロピーEが閾値T未満であると判定したときには、ステップS3014に進んで不合格を示すランダム性判定結果を鍵共有・公開鍵復号手段123を通して端末110に通知する。
【0065】
他方、ランダム性評価手段124は、ステップS3015で累積エントロピーEが閾値T以上であると判定したときには、その端末110に対して合格を示すランダム性判定結果を、鍵共有・公開鍵復号手段123を通して通知する(ステップS3016)。続いて、ランダム性評価手段124は、その端末110の累積エントロピーEを更新する(ステップS3017)。この更新は、鍵共有アルゴリズムで使用する乱数列の量に応じて小さくするもので、鍵共有アルゴリズムでは一定量の乱数列を使用するため、典型的には累積エントロピーEに対して定数を減ずる形で行われる。
【0066】
次に、ステップS304の詳細動作について図8と共に説明する。
【0067】
図8は、ランダム性評価・更新処理ステップS304の詳細動作説明用フローチャートを示す。ランダム性評価・更新処理ステップS304において、まず、ランダム性評価手段124は、保持しているエントロピー情報の頻度テーブルを用いて、ステップS303で復元された抽出データSに基づいて、端末110における現在のエントロピー情報が保持するエントロピーを推定する(ステップS3041)。このステップS3041では、頻度テーブルが例えば、復元された抽出データにおけるビットパタンと頻度とからなる頻度テーブルの場合は、受信して復元された抽出データのビットパタンの発生確率を頻度テーブルに基づいて推定する。
【0068】
続いて、ランダム性評価手段124は、ステップS3041で推定したエントロピーを用いて、端末110の擬似乱数生成手段113の内部状態の累積エントロピーEを更新する(ステップS3042)。この更新は、典型的には擬似乱数生成アルゴリズムから決定される上限の下、ステップS3041で推定したエントロピーを累積エントロピーEに加算する形で行われる。
【0069】
続いて、ランダム性評価手段124は、保持しているエントロピー情報の頻度テーブルを、受信して復元された抽出データSに基づいて更新する(ステップS3043)。この頻度テーブルの更新のタイミングは、ステップS3042の処理に続いて行う必要はなく、鍵共有処理の終了後に実行することもできる。
【0070】
続いて、ランダム性評価手段124は、前記のステップS3015と同様に、端末110に対応する累積エントロピーEの値が予め設定した閾値T以上であるか否かを判定する(ステップS3044)。ステップS3044にて累積エントロピーEが閾値T未満であると判定したときには、ステップS3047に進んで不合格を示すランダム性判定結果を鍵共有・公開鍵復号手段123を通して端末110に通知する。
【0071】
他方、ランダム性評価手段124は、ステップS3044で累積エントロピーEが閾値T以上であると判定したときには、その端末110に対して合格を示すランダム性判定結果を、鍵共有・公開鍵復号手段123を通して通知する(ステップS3045)。続いて、ランダム性評価手段124は、その端末110の累積エントロピーEをステップS3017と同様に更新する(ステップS3046)。
【0072】
図9は、ステップS3041、S3043で使用されるエントロピー情報の頻度テーブルの一例の模式図を示す。頻度テーブルは、図9(A)に模式的に示すように、各端末とエントロピーソースの各ソースとを対応させたテーブルであり、そのテーブルの各欄は図9(B)に示すようにサーバ120が復号した抽出データにおけるビットパタンとその頻度から構成される。ここで、「頻度」は、対応するビットパタンがどの程度発生するかの確率を示す。なお、各ソースに対して端末のトータルを計算した頻度テーブルも考えられる。また、起動時からの時間経緯を考慮して、このような頻度テーブルを複数用意することも考えられる。
【0073】
図10は、ステップS3041、S3043で使用されるエントロピー情報の頻度テーブルの他の例の模式図を示す。他の例の頻度テーブルは、図10(A)に模式的に示すように、各端末毎に起動回数とエントロピーソースの各ソースとを対応させたテーブルであり、そのテーブルの各欄は図10(B)に示すように起動後のエントロピー情報のビットパタンとその頻度から構成される。この頻度テーブルを用いた場合は、起動後のエントロピー情報の変化を考慮して擬似乱数生成手段113の内部状態のエントロピーを推定することが可能となる。
【0074】
次に、上記の実施形態の要部について更に具体的かつ詳細に説明する。
【0075】
端末110におけるステップS208の鍵共有アルゴリズム、及びサーバ120におけるステップS306の鍵共有アルゴリズムには、前述したDiffie-Hellman鍵共有アルゴリズムを適用することができる。このとき、ステップS205において用いられる抽出データSの公開鍵暗号化アルゴリズムとしては、鍵共有アルゴリズムと同一ドメインパラメータと公開鍵とを用いてのElGamal暗号を適用するのが自然である。
【0076】
このステップS205におけるElGamal暗号化は、図14で用いた記述を用いると、Diffie-Hellman鍵共有アルゴリズムのドメインパラメータp(法となる素数)、g(生成元)に対して、擬似乱数生成手段113からの出力である乱数Rを用いて、抽出データSを次式による暗号文Cに変換することである。
【0077】
C=(gR mod p,S・y(i)R mod p) (1)
サーバ120は、ステップS113において、秘密鍵x(i)と受信した暗号文C中のgR mod pとから
y(i)R mod p=(gRx(i) mod p (2)
を求め、更に次式により抽出データSを復号する。
【0078】
S・y(i)R /y(i)R mod p=S (3)
上記のp、g、y(i)の正当性の保証は、図14で説明したと同様に実現することができる。
【0079】
端末110が計算機の場合の典型的なエントロピーソースとしては、前述のようにプロセスID、ハードディスクのシーク時間、サーバ120との通信時間、プログラムの実行時間などが挙げられるが、真性乱数生成器やオペレーティングシステムが提供する外部乱数生成手段をエントロピーソースとして用いることも考えられる。
【0080】
このとき、図11に示すように、外部乱数生成手段の出力の一部を擬似乱数生成手段113のエントロピー情報114に保持されるエントロピーソースとして用い、外部乱数生成手段の出力の残りを擬似乱数生成手段113の出力生成処理116で得られた出力系列と加算器117にて加算して最終的な擬似乱数を生成する方式が考えられる。
【0081】
また、端末110内の擬似乱数生成手段113で使用する擬似乱数生成アルゴリズムとしては、例えば非特許文献2に記載されている任意の安全性の保証されたアルゴリズムを使用することができる。図16に示したHMACを用いる擬似乱数アルゴリズムでHMACのハッシュ関数としてSHA−256を使用する場合には、セキュリティ強度の最大値が256(ビット)であるため、累積エントロピーEも「256」以下とすることが自然となる。このとき、サーバ120におけるステップS3042の累積エントロピーEの更新時には、この値を上限として更新処理を行う。また、ステップS3015、S3044にて用いられる閾値Tは、システムが設定するセキュリティパラメータであり、SHA−256のHMACを使用する擬似乱数生成アルゴリズムでは、通常、「112」以上に設定される。
【0082】
また、抽出データSのソース#1、#2、#3、・・・に対応するビットパタンを(s_1,s_2,s_3,・・・)として、図9に示した頻度テーブルから求められるビットパタンs_iの推定確率をp_iとすると、抽出データSのランダム性(情報量)は各ソースが独立であるという仮定の下、次式により見積もることができる。
【0083】
h(S)=−log p_1−log p_2−log p_3・・・ (4)
ここで、(4)式中logの底は2とする。また、h(S)の単位はビットである。頻度テーブルの統計量が十分でない場合は、ベイズ推定などに基づいて補正値を考慮して推定確率p_iを決めることが適切である。また、事前に十分に学習して頻度テーブルを生成してから使用することも考えられる。
【0084】
また、図9に示した頻度テーブルでは、抽出データSに対して推定確率p_iが各端末110及び端末のトータルに対してそれぞれ求められるため、h(S)もこれに応じて算出することができる。このとき抽出データSのランダム性は、その最小値で見積もることが適切となる。このように、本実施形態では、サーバ120に各端末110のエントロピー情報を集約することによって、他の端末に対してのランダム性も測ることができるため、ランダム性評価の精度を向上させることができる。
【0085】
なお、サーバ120内のランダム性評価手段124で使用する抽出データSは、疑似乱数生成手段113のエントロピー情報の一部であるため、疑似乱数生成手段113のエントロピー情報のランダム性の推定値Hは、(4)式に対して
H=λh(S) (5)
と係数λを設定して導出する方式が考えられる。
【0086】
エントロピー情報全体から比率ρでビットを抜き出して抽出データSを生成する場合には、単純には上記係数λを1/ρに設定することになる。しかし、抽出データSと前述したエントロピー情報の残りの部分とが独立とはみなせない場合には、係数λは1/ρより小さな値に設定することが適切となる。また、この独立性は仮定するが、サーバ120への送信時の漏洩を仮定する場合には、上記係数λを1/(ρ−1)に設定することが考えられる。これらの事項を総合的に考えて、サーバ120は抽出データSから端末110のエントロピー情報のランダム性を定量化する。
【0087】
また、図7のステップS3017及び図8のステップS3046の累積エントロピーEの更新は、鍵共有で使用した乱数列の量に応じて累積エントロピーEを減少させる処理となる。擬似乱数生成手段113の内部状態をランダムに設定して系列を発生させたテーブルを作成して、実際に発生した乱数列とのマッチングをとって内部状態を推定する攻撃を考えると、同一のテーブルであれば攻撃の成功確率は実際に取得した乱数列の長さに比例する。
【0088】
そこで、鍵共有アルゴリズムで長さLの乱数列を使用するとすれば、上記ステップS3017及びステップS3046の累積エントロピーEの更新では、次式のAで表される定数を現在の累積エントロピーEから減ずる処理を行う。
【0089】
E←E−A,A=log(L)+c (6)
ただし、(6)式中、cは適切な定数である。
【0090】
ステップS205の抽出データSの公開鍵暗号化処理の際にも、鍵共有アルゴリズムと同一長の乱数列を使用するため、図8のステップS3042の累積エントロピーEの更新は、次式のBで表される値を現在の累積エントロピーEに加算する処理を行う。
【0091】
E←E+B,B=max(H−A,0) (7)
ただし、(7)式中、H、Aはそれぞれ(5)式、(6)式で示される値であり、またmax(x,y)は、xとyとで値が大きい方を選択する関数である。
【0092】
このように、本実施形態の鍵共有方式では、端末110が発生する擬似乱数のランダム性の判定(擬似乱数生成手段113の内部状態のランダム性の判定)をサーバ120が行うため、端末110自身が擬似乱数のランダム性の検証を行う必要がなく、これにより端末110が検証を行う際の評価基準等の設定や情報漏洩リスクの問題をなくすことができる。
【0093】
また、本実施形態の鍵共有方式では、端末110のエントロピー情報を端末110自身が公開鍵暗号化してからサーバ120へ送信するため、通信路上のデータを第三者に取得されたとしても漏洩する情報を抑えることができる。また、本実施形態では、公開鍵暗号化を適用することで端末110には秘密鍵を保持する必要がなく、また、鍵共有アルゴリズムと公開鍵暗号とでドメインパラメータや公開鍵の公開情報を端末110とサーバ120とが共有するようにしているため、その正当性チェックなどの追加処理も不要となる。更に、本実施形態では、サーバ120において、各端末110のエントロピー情報を集約するようにしたため、ランダム性評価の精度を向上させることができる。
【0094】
なお、本発明は以上の実施形態に限定されるものではなく、例えば、鍵共有モジュール111や122の各動作をそれぞれ端末110内やサーバ120内のコンピュータにより実行させる鍵共有プログラムも包含するものである。
【0095】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0096】
(付記1)
ホスト機器であるサーバと1台以上の端末との間の鍵共有方式であって、
前記端末は、
擬似乱数を生成すると共に、その内部状態を更新するための状態更新用データの一部を抽出する擬似乱数生成手段と、
前記擬似乱数生成手段により抽出された前記状態更新用データの一部である抽出データを、前記擬似乱数を使用して所定の公開鍵アルゴリズムに基づき公開鍵暗号化して前記サーバへ送信する公開鍵暗号化手段と
を有し、
前記サーバは、
前記端末から送信された公開鍵暗号を受信して前記抽出データを復号する公開鍵復号手段と、
前記復号された抽出データに基づいて、前記端末の前記擬似乱数生成手段の現在の内部状態のランダム性を見積もるための数値である累積エントロピーを生成し、前記累積エントロピーと所定の閾値との比較結果に基づいて前記擬似乱数生成手段の内部状態の前記ランダム性判定結果を生成するランダム性評価手段と、
前記ランダム性判定結果が合格を示しているときに所定の第1の鍵共有アルゴリズムによる鍵共有処理を実行する第1の鍵共有手段と
を有することを特徴とする鍵共有方式。
【0097】
(付記2)
前記ランダム性評価手段は、前記ランダム性判定結果を前記端末へ送信する機能を備え、
前記端末は、前記サーバから送信された前記ランダム性判定結果を受信し、そのランダム判定結果が不合格を示しているときに前記公開鍵暗号化手段による前記公開鍵暗号化を実行させ、前記ランダム判定結果が合格を示しているときに所定の第2の鍵共有アルゴリズムによる鍵共有処理を実行する第2の鍵共有手段を有することを特徴とする付記1記載の鍵共有方式。
【0098】
(付記3)
前記ランダム性評価手段は、前記累積エントロピーが前記閾値以上であるとき合格を示し、前記閾値未満のときは不合格を示す前記ランダム性判定結果を生成することを特徴とする付記1記載の鍵共有方式。
【0099】
(付記4)
前記サーバは、前記端末の前記擬似乱数生成手段に対して、前記状態更新用データの一部を抽出する抽出ルールを動的に設定する設定手段を有することを特徴とする付記1記載の鍵共有方式。
【0100】
(付記5)
前記端末は、外部乱数生成手段を有し、
前記擬似乱数生成手段は、前記外部乱数生成手段の出力の一部を前記擬似乱数生成手段のエントロピーソースとして用い、前記外部乱数生成手段の出力の残りを出力系列と加算して、前記公開鍵暗号化手段へ供給する最終的な擬似乱数を生成することを特徴とする付記1記載の鍵共有方式。
【0101】
(付記6)
前記ランダム性評価手段は、前記復号された抽出データにおけるビットパタンの頻度テーブルを備え、受信して復号された前記抽出データのビットパタンの発生確率を、前記頻度テーブルを用いて推定し、その推定結果で前記累積エントロピーを更新し、更新後の前記累積エントロピーを前記端末の前記擬似乱数発生手段の内部状態のランダム性の判定に利用することを特徴とする付記1記載の鍵共有方式。
【0102】
(付記7)
前記頻度テーブルは、前記サーバに接続された個々の前記端末毎に、又はすべての前記端末をまとめた頻度テーブルであることを特徴とする付記6記載の鍵共有方式。
【0103】
(付記8)
前記ランダム性評価手段は、前記累積エントロピー更新後に前記頻度テーブルを前記復号された抽出データに基づいて更新することを特徴とする付記6又は7記載の鍵共有方式。
【0104】
(付記9)
前記公開鍵暗号化手段による公開鍵暗号化と、前記第1の鍵共有手段による鍵共有処理とは同一の公開鍵パラメータを使用することを特徴とする付記1乃至8のうちいずれか一項記載の鍵共有方式。
【0105】
(付記10)
前記公開鍵暗号化手段は、ElGamal暗号により公開鍵暗号化を行い、前記第1及び第2の鍵共有手段は、Diffie-Hellman鍵共有アルゴリズムにより鍵共有処理を行うことを特徴とする付記2乃至8のうちいずれか一項記載の鍵共有方式。
【0106】
(付記11)
ホスト機器であるサーバと1台以上の端末との間の鍵共有方法であって、
前記端末内にて、擬似乱数生成手段により擬似乱数を生成させると共に、前記擬似乱数生成手段の内部状態を更新するための状態更新用データの一部を抽出する第1のステップと、
前記端末が、前記第1のステップで抽出された前記状態更新用データの一部である抽出データを、前記擬似乱数を使用して所定の公開鍵アルゴリズムに基づき公開鍵暗号化して前記サーバへ送信する第2のステップと、
前記サーバが、前記端末から送信された公開鍵暗号を受信して前記抽出データを復号する第3のステップと、
前記サーバ内にて、前記復号された抽出データに基づいて、前記端末の前記擬似乱数生成手段の現在の内部状態のランダム性を見積もるための数値である累積エントロピーを生成する第4のステップと、
前記第4のステップで生成された前記累積エントロピーと所定の閾値との比較結果に基づいて前記擬似乱数生成手段の内部状態の前記ランダム性判定結果を生成する第5のステップと、
前記サーバ内にて、前記ランダム性判定結果が合格のときに所定の第1の鍵共有アルゴリズムによる鍵共有処理を実行する第6のステップと
を含むことを特徴とする鍵共有方法。
【0107】
(付記12)
前記第5のステップで生成された前記ランダム性判定結果を前記端末へ送信する第7のステップと、
前記端末が、前記サーバから送信された前記ランダム性判定結果を受信して、そのランダム性判定結果が合格を示しているか否かを判定する第8のステップと、
前記第8のステップで前記ランダム判定結果が不合格を示しているときに前記第2のステップによる前記公開鍵暗号化を実行させ、前記ランダム判定結果が合格を示しているときに所定の第2の鍵共有アルゴリズムによる鍵共有処理を実行する第9のステップと
を含むことを特徴とする付記11記載の鍵共有方法。
【0108】
(付記13)
前記第5のステップは、前記累積エントロピーが前記閾値以上であるとき合格を示し、前記閾値未満のときは不合格を示す前記ランダム性判定結果を生成することを特徴とする付記11記載の鍵共有方法。
【0109】
(付記14)
前記サーバが、前記端末の前記第1のステップにおいて前記状態更新用データの一部を抽出する抽出ルールを動的に設定する第10のステップを含むことを特徴とする付記11記載の鍵共有方法。
【0110】
(付記15)
前記第1のステップは、外部乱数生成手段の出力の一部をエントロピーソースとして用いて前記状態更新用データの一部を抽出し、前記外部乱数生成手段の出力の残りを出力系列と加算して、前記第2のステップで使用する最終的な擬似乱数を生成することを特徴とする付記11記載の鍵共有方法。
【0111】
(付記16)
前記第5のステップは、受信して復号された前記抽出データのビットパタンの発生確率を、前記復号された抽出データにおけるビットパタンの頻度テーブルを用いて推定し、その推定結果で前記累積エントロピーを更新し、更新後の前記累積エントロピーを前記端末の前記擬似乱数発生手段の内部状態のランダム性の判定に利用することを特徴とする付記11記載の鍵共有方法。
【0112】
(付記17)
前記頻度テーブルは、前記サーバに接続された個々の前記端末毎に、又はすべての前記端末をまとめた頻度テーブルであることを特徴とする付記16記載の鍵共有方法。
【0113】
(付記18)
前記第5のステップは、前記累積エントロピー更新後に前記頻度テーブルを前記復号された抽出データに基づいて更新することを特徴とする付記16又は17記載の鍵共有方法。
【0114】
(付記19)
前記第2のステップによる公開鍵暗号化と、前記第6のステップによる鍵共有処理とは同一の公開鍵パラメータを使用することを特徴とする付記11乃至18のうちいずれか一項記載の鍵共有方法。
【0115】
(付記20)
前記第2のステップは、ElGamal暗号により公開鍵暗号化を行い、前記第6のステップ及び前記第8のステップは、Diffie-Hellman鍵共有アルゴリズムにより鍵共有処理を行うことを特徴とする付記12乃至18のうちいずれか一項記載の鍵共有方法。
【0116】
(付記21)
ホスト機器であるサーバに接続された1台以上の端末が有するコンピュータに鍵共有処理を行わせる鍵共有プログラムであって、
前記コンピュータに、
擬似乱数を生成すると共に、擬似乱数生成の内部状態を更新するための状態更新用データの一部を抽出する抽出ステップと、
前記抽出ステップで抽出された前記状態更新用データの一部である抽出データを、前記擬似乱数を使用して所定の公開鍵アルゴリズムに基づき公開鍵暗号化して前記サーバへ送信する公開鍵暗号化及び送信ステップと
を実行させることを特徴とする鍵共有プログラム。
【0117】
(付記22)
前記サーバが受信した前記公開鍵暗号化された前記抽出データを復号し、復号されて前記抽出データに基づいて生成して送信した前記擬似乱数の内部状態のランダム性判定結果を受信して、そのランダム性判定結果が合格を示しているか否かを判定する判定ステップと、
前記判定ステップで前記ランダム判定結果が不合格を示しているときに前記公開鍵暗号化及び送信ステップによる前記公開鍵暗号化を実行させ、前記ランダム判定結果が合格を示しているときに所定の鍵共有アルゴリズムによる鍵共有処理を実行する鍵共有ステップと
を更に実行させることを特徴とする付記21記載の鍵共有プログラム。
【0118】
(付記23)
1台以上の端末に接続されたホスト機器であるサーバが有するコンピュータに鍵共有処理を行わせる鍵共有プログラムであって、
前記コンピュータに、
前記端末が、擬似乱数を生成して、その擬似乱数の内部状態を更新するための状態更新用データの一部を所定の公開鍵アルゴリズムに基づき公開鍵暗号化して送信した公開鍵暗号を受信して、前記状態更新用データの一部である抽出データを復号する復号ステップと、
前記復号された抽出データに基づいて、前記端末の前記擬似乱数の現在の内部状態のランダム性を見積もるための数値である累積エントロピーを生成する累積エントロピー生成ステップと、
生成された前記累積エントロピーと所定の閾値との比較結果に基づいて前記擬似乱数の内部状態の前記ランダム性判定結果を生成するランダム性判定結果生成ステップと、
前記ランダム性判定結果が合格のときに所定の第1の鍵共有アルゴリズムによる鍵共有処理を実行する鍵共有ステップと
を実行させることを特徴とする鍵共有プログラム。
【符号の説明】
【0119】
100 鍵共有方式
110、503 端末
112 鍵共有・公開鍵暗号化手段
113 擬似乱数生成手段
114 エントロピー情報(メモリ)
115 抽出手段
116 出力生成処理
117 加算器
120、502 サーバ
121 乱数生成手段
122、111 鍵共有モジュール
123 鍵共有・公開鍵復号手段
124 ランダム性評価手段
500 暗号通信システム
501 パラメータ生成手段

【特許請求の範囲】
【請求項1】
ホスト機器であるサーバと1台以上の端末との間の鍵共有方式であって、
前記端末は、
擬似乱数を生成すると共に、その内部状態を更新するための状態更新用データの一部を抽出する擬似乱数生成手段と、
前記擬似乱数生成手段により抽出された前記状態更新用データの一部である抽出データを、前記擬似乱数を使用して所定の公開鍵アルゴリズムに基づき公開鍵暗号化して前記サーバへ送信する公開鍵暗号化手段と
を有し、
前記サーバは、
前記端末から送信された公開鍵暗号を受信して前記抽出データを復号する公開鍵復号手段と、
前記復号された抽出データに基づいて、前記端末の前記擬似乱数生成手段の現在の内部状態のランダム性を見積もるための数値である累積エントロピーを生成し、前記累積エントロピーと所定の閾値との比較結果に基づいて前記擬似乱数生成手段の内部状態の前記ランダム性判定結果を生成するランダム性評価手段と、
前記ランダム性判定結果が合格を示しているときに所定の第1の鍵共有アルゴリズムによる鍵共有処理を実行する第1の鍵共有手段と
を有することを特徴とする鍵共有方式。
【請求項2】
前記ランダム性評価手段は、前記ランダム性判定結果を前記端末へ送信する機能を備え、
前記端末は、前記サーバから送信された前記ランダム性判定結果を受信し、そのランダム判定結果が不合格を示しているときに前記公開鍵暗号化手段による前記公開鍵暗号化を実行させ、前記ランダム判定結果が合格を示しているときに所定の第2の鍵共有アルゴリズムによる鍵共有処理を実行する第2の鍵共有手段を有することを特徴とする請求項1記載の鍵共有方式。
【請求項3】
前記サーバは、前記端末の前記擬似乱数生成手段に対して、前記状態更新用データの一部を抽出する抽出ルールを動的に設定する設定手段を有することを特徴とする請求項1記載の鍵共有方式。
【請求項4】
前記端末は、外部乱数生成手段を有し、
前記擬似乱数生成手段は、前記外部乱数生成手段の出力の一部を前記擬似乱数生成手段のエントロピーソースとして用い、前記外部乱数生成手段の出力の残りを出力系列と加算して、前記公開鍵暗号化手段へ供給する最終的な擬似乱数を生成することを特徴とする請求項1記載の鍵共有方式。
【請求項5】
前記ランダム性評価手段は、前記復号された抽出データにおけるビットパタンの頻度テーブルを備え、受信して復号された前記抽出データのビットパタンの発生確率を、前記頻度テーブルを用いて推定し、その推定結果で前記累積エントロピーを更新し、更新後の前記累積エントロピーを前記端末の前記擬似乱数発生手段の内部状態のランダム性の判定に利用することを特徴とする請求項1記載の鍵共有方式。
【請求項6】
ホスト機器であるサーバと1台以上の端末との間の鍵共有方法であって、
前記端末内にて、擬似乱数生成手段により擬似乱数を生成させると共に、前記擬似乱数生成手段の内部状態を更新するための状態更新用データの一部を抽出する第1のステップと、
前記端末が、前記第1のステップで抽出された前記状態更新用データの一部である抽出データを、前記擬似乱数を使用して所定の公開鍵アルゴリズムに基づき公開鍵暗号化して前記サーバへ送信する第2のステップと、
前記サーバが、前記端末から送信された公開鍵暗号を受信して前記抽出データを復号する第3のステップと、
前記サーバ内にて、前記復号された抽出データに基づいて、前記端末の前記擬似乱数生成手段の現在の内部状態のランダム性を見積もるための数値である累積エントロピーを生成する第4のステップと、
前記第4のステップで生成された前記累積エントロピーと所定の閾値との比較結果に基づいて前記擬似乱数生成手段の内部状態の前記ランダム性判定結果を生成する第5のステップと、
前記サーバ内にて、前記ランダム性判定結果が合格のときに所定の第1の鍵共有アルゴリズムによる鍵共有処理を実行する第6のステップと
を含むことを特徴とする鍵共有方法。
【請求項7】
前記第5のステップで生成された前記ランダム性判定結果を前記端末へ送信する第7のステップと、
前記端末が、前記サーバから送信された前記ランダム性判定結果を受信して、そのランダム性判定結果が合格を示しているか否かを判定する第8のステップと、
前記第8のステップで前記ランダム判定結果が不合格を示しているときに前記第2のステップによる前記公開鍵暗号化を実行させ、前記ランダム判定結果が合格を示しているときに所定の第2の鍵共有アルゴリズムによる鍵共有処理を実行する第9のステップと
を含むことを特徴とする請求項6記載の鍵共有方法。
【請求項8】
前記サーバが、前記端末の前記第1のステップにおいて前記状態更新用データの一部を抽出する抽出ルールを動的に設定する第10のステップを含むことを特徴とする請求項6記載の鍵共有方法。
【請求項9】
ホスト機器であるサーバに接続された1台以上の端末が有するコンピュータに鍵共有処理を行わせる鍵共有プログラムであって、
前記コンピュータに、
擬似乱数を生成すると共に、擬似乱数生成の内部状態を更新するための状態更新用データの一部を抽出する抽出ステップと、
前記抽出ステップで抽出された前記状態更新用データの一部である抽出データを、前記擬似乱数を使用して所定の公開鍵アルゴリズムに基づき公開鍵暗号化して前記サーバへ送信する公開鍵暗号化及び送信ステップと
を実行させることを特徴とする鍵共有プログラム。
【請求項10】
前記サーバが受信した前記公開鍵暗号化された前記抽出データを復号し、復号されて前記抽出データに基づいて生成して送信した前記擬似乱数の内部状態のランダム性判定結果を受信して、そのランダム性判定結果が合格を示しているか否かを判定する判定ステップと、
前記判定ステップで前記ランダム判定結果が不合格を示しているときに前記公開鍵暗号化及び送信ステップによる前記公開鍵暗号化を実行させ、前記ランダム判定結果が合格を示しているときに所定の鍵共有アルゴリズムによる鍵共有処理を実行する鍵共有ステップと
を更に実行させることを特徴とする請求項9記載の鍵共有プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2011−193180(P2011−193180A)
【公開日】平成23年9月29日(2011.9.29)
【国際特許分類】
【出願番号】特願2010−56878(P2010−56878)
【出願日】平成22年3月15日(2010.3.15)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】