(57)【特許請求の範囲】
【請求項１】
予め定められたアルゴリズムで暗号化鍵を生成する鍵生成処理装置と、この鍵生成処理装置にデータを提供する外部データ提供手段とを備えた動的暗号化鍵生成システムであって、
前記外部データ提供手段は、グループＩＤに対応したＩＤ対応データと、２つ以上のプログラム制御要素を含んだプログラム制御値とからなる外部データをグループＩＤの求めに応じて提供するものであり、
前記鍵生成処理装置は、
暗号化された外部データを復号してＩＤ対応データとプログラム制御値とを生成する外部データ復号手段と、
予め搭載されたアルゴリズムに沿って、得られたＩＤ対応データから第１鍵情報を生成する第１鍵情報生成手段と、
予め搭載された別のアルゴリズムに沿って、得られたプログラム制御値から第２鍵情報を生成する第２鍵情報生成手段と、
予め搭載された更に別のアルゴリズムに沿って、得られた第１鍵情報と第２鍵情報とから暗号化鍵を生成する暗号化鍵生成手段とを備えることを特徴とする動的暗号化鍵生成システム。
【請求項２】
前記外部データ提供手段で提供される外部データが、ＩＤ対応データとプログラム制御値とを結合したものを予め定められた暗号化アルゴリズムで共通鍵Ａを用いて暗号化したものであることを特徴とする請求項１に記載の動的暗号化鍵生成システム。
【請求項３】
前記外部データ復号手段が、前記暗号化された外部データを共通鍵Ａを用いて復号し、前記ＩＤ対応データとプログラム制御値とに分割することを特徴とする請求項２に記載の動的暗号化鍵生成システム。
【請求項４】
前記第１鍵情報生成手段が、制御変数Ｂ１と制御変数Ｂｎとを備え、
制御変数Ｂ１で唯一選択される正規の関数と、１つ以上のダミー関数と、制御変数Ｂｎで唯一選択され、正規の関数を経た中間データを用いて鍵情報を選定する正規の鍵情報選定手段と、１つ以上のダミーの鍵情報選定手段とを含み、
前記制御変数Ｂ１により選択された正規の関数に前記ＩＤ対応データを入力して中間データを作成し、
前記制御変数Ｂｎにより選択された正規の鍵情報選定手段に前記中間データを入力して第１鍵情報を生成するものであることを特徴とする請求項１〜３の何れか１項に記載の動的暗号化鍵生成システム。
【請求項５】
前記第２鍵情報生成手段が、プログラム制御値を２つ以上のプログラム制御要素に分割する制御要素分割手段と、事前に組込まれている予め定められた大きさのメッセージＣと、予め定められた関数によって第２鍵情報を選定する鍵情報選定手段とを備え、
前記制御要素分割手段によってプログラム制御値から変換された２つ以上のプログラム制御要素の１つと、メッセージＣとから中間データを生成し、
前記関数に中間データを入力して第２鍵情報を生成するものであることを特徴とする請求項１〜４の何れか１項に記載の動的暗号化鍵生成システム。
【請求項６】
前記暗号化鍵生成手段が、１つ以上の予め定められた個数(Ｎ１個)の第１鍵情報と１つ以上の予め定められた個数(Ｎ２個)の第２鍵情報とから暗号化鍵を生成するものであり、
前記Ｎ１個の第１鍵情報とＮ２個の第２鍵情報とに対して、予め定められた演算処理を行って暗号化鍵を得ることを特徴とする請求項１〜５の何れか１項に記載の動的暗号化鍵生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、関数多重化方式によって暗号化鍵を隠蔽する技術に関するものである。
【背景技術】
【０００２】
インターネットの普及に伴い、ますます多くのユーザがコンピュータシステム内に保存されている機密データの転送・送受信を、ネットワークを介して行っている。この場合に、コンピュータに保存されたデータは、何らかの保護メカニズムによって保護されていなければ、悪意のある第三者に盗まれる可能性がある。また、悪意を持ったハッカー（コンピュータ技術に通じた人）がインターネット回線を介して他者のデータを故意に盗んでしまうことも多々ある。
【０００３】
このため、ネットワーク回線上等で転送・送受信するデータを如何に保護するかは重要な課題となっている。
【０００４】
一般的に、ユーザは、何らかの暗号化技術によってデータを暗号化することができる。こうしておけば、たとえ被暗号化データが漏洩しても、正しい鍵がなければ被暗号化データを正しく復号することができず、悪意を持ったハッカー等は、被暗号化データの正しいコンテンツにアクセスすることができないので、データの安全性が確保される。
【０００５】
現行の暗号化技術の大部分は、ユーザにパスワードの入力を要求し、パスワードに基づいてデータを暗号化する。ユーザは、被暗号化データを復号したいとき、元のデータを取得するためにパスワードを再入力するだけでよい。しかしながら、データの転送に合わせてパスワードを安全に交換しなけれなならないため、ユーザは不便を被ることになる。
【０００６】
別のタイプの暗号化方法は、データを暗号化するために鍵を用いる（例えば、特許文献１参照）。このような暗号化方法では、ソフトウェアシステム内に鍵を生成するロジックを組み込むことにより安全性を保っている。しかしながら、同じソフトウェアシステムを利用している限り、異なるグループ間での被暗号化データが復号可能となってしまう。従って、この暗号化方法も十分に安全ではない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−２０９９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来のデータの暗号化装置では、ソフトウェアシステム内に鍵を生成するロジックを組み込むため、同じソフトウエアシステムにおいては、グループ毎に異なる鍵を生成することが出来なかった。
【０００９】
本発明は、会社等のグループ単位で異なる鍵を安全に生成できるようにする暗号化技術を得ることを目的とする。具体的には、(a) グループ単位で異なる鍵を生成することができ、(b) 悪意のある第三者がプログラムを入手した場合、鍵の奪取が困難となるという２つの課題を解決することを目的とする。更に、既存のプログラムの大規模な修正を行うことなく、グループ毎に異なる暗号化鍵を安全に生成するシステムを提供する。
【課題を解決するための手段】
【００１０】
請求項１に記載された発明に係る動的暗号化鍵生成システムは、予め定められたアルゴリズムで暗号化鍵を生成する鍵生成処理装置と、この鍵生成処理装置にデータを提供する外部データ提供手段とを備えた動的暗号化鍵生成システムであって、
前記外部データ提供手段は、グループＩＤに対応したＩＤ対応データと、２つ以上のプログラム制御要素を含んだプログラム制御値とからなる外部データをグループＩＤの求めに応じて提供するものであり、
前記鍵生成処理装置は、
暗号化された外部データを復号してＩＤ対応データとプログラム制御値とを生成する外部データ復号手段と、
予め搭載されたアルゴリズムに沿って、得られたＩＤ対応データから第１鍵情報を生成する第１鍵情報生成手段と、
予め搭載された別のアルゴリズムに沿って、得られたプログラム制御値から第２鍵情報を生成する第２鍵情報生成手段と、
予め搭載された更に別のアルゴリズムに沿って、得られた第１鍵情報と第２鍵情報とから暗号化鍵を生成する暗号化鍵生成手段とを備えることを特徴とするものである。
【００１１】
請求項２に記載された発明に係る動的暗号化鍵生成システムは、請求項１に記載の外部データ提供手段で提供される外部データが、ＩＤ対応データとプログラム制御値とを結合させたものを予め定められた暗号化アルゴリズムで共通鍵Ａを用いて暗号化したものであることを特徴とするものである。
【００１２】
請求項３に記載された発明に係る動的暗号化鍵生成システムは、請求項２に記載の外部データ復号手段が、前記暗号化された外部データを共通鍵Ａを用いて復号し、前記ＩＤ対応データとプログラム制御値とに分割することを特徴とするものである。
【００１３】
請求項４に記載された発明に係る動的暗号化鍵生成システムは、請求項１〜３の何れか１項に記載の第１鍵情報生成手段が、制御変数Ｂ１と制御変数Ｂｎとを備え、
制御変数Ｂ１で唯一選択される正規の関数と、１つ以上のダミー関数と、制御変数Ｂｎで唯一選択され、正規の関数を経た中間データを用いて鍵情報を選定する正規の鍵情報選定手段と、１つ以上のダミーの鍵情報選定手段とを含み、
前記制御変数Ｂ１により選択された正規の関数に前記ＩＤ対応データを入力して中間データを作成し、
前記制御変数Ｂｎにより選択された正規の鍵情報選定手段に前記中間データを入力して第１鍵情報を生成するものであることを特徴とするものである。
【００１４】
請求項５に記載された発明に係る動的暗号化鍵生成システムは、請求項１〜４の何れか１項に記載の第２鍵情報生成手段が、プログラム制御値を２つ以上のプログラム制御要素に分割する制御要素分割手段と、事前に組込まれている予め定められた大きさのメッセージＣと、予め定められた関数によって第２鍵情報を選定する鍵情報選定手段とを備え、
前記制御要素分割手段によってプログラム制御値から変換された２つ以上のプログラム制御要素の１つと、メッセージＣとから中間データを生成し、
前記関数に中間データを入力して第２鍵情報を生成するものであることを特徴とするものである。
【００１５】
請求項６に記載された発明に係る動的暗号化鍵生成システムは、請求項１〜５の何れか１項に記載の暗号化鍵生成手段が、１つ以上の予め定められた個数(Ｎ１個)の第１鍵情報と１つ以上の予め定められた個数(Ｎ２個)の第２鍵情報とから暗号化鍵を生成するものであり、
前記Ｎ１個の第１鍵情報とＮ２個の第２鍵情報とに対して、予め定められた演算処理を行って暗号化鍵を得ることを特徴とするものである。
【発明の効果】
【００１６】
本発明は、同一ソフトウエアシステムにおいても、会社等のグループ単位で異なる鍵を安全に生成できるようにする暗号化技術を得ることができる。具体的には、(a) グループ単位で異なる鍵を生成することができ、(b) 悪意のある第三者がプログラムを入手した場合、鍵の奪取が困難となるという２つの課題を解決することができる。更に、既存のプログラムの大規模な修正を行うことなく、グループ毎に異なる暗号化鍵を安全に生成するシステムを提供することができるという効果がある。
【図面の簡単な説明】
【００１７】
【図１】本発明の動的暗号化鍵生成システムの一実施例の概要を示す説明図である。
【図２】図１の外部データを作成する外部データ作成装置の一実施例の概要を示す説明図である。
【図３】図２の装置による外部データ作成処理工程を示す工程図である。
【図４】外部データの送受信システムの一実施例の概要を示す説明図である。
【図５】図４のシステムにおける外部データの送受信処理工程を示す工程図である。
【図６】図１の鍵生成処理装置の外部データ復号手段の一実施例の概要を示す説明図である。
【図７】図６の復号手段における外部データ復号手段の処理工程を示す工程図である。
【図８】図１の鍵生成処理装置の第１鍵情報生成手段の一実施例の概要を示す説明図である。
【図９】図８の第１鍵情報生成処理工程を示す工程図である。
【図１０】図１の鍵生成処理装置の第２鍵情報生成手段の一実施例の概要を示す説明図である。
【図１１】図１０の第２鍵情報生成処理工程を示す工程図である。
【図１２】図１の鍵生成処理装置の暗号化鍵生成手段の一実施例の概要を示す説明図である。
【図１３】図１２の暗号化鍵生成処理工程を示す工程図である。
【発明を実施するための形態】
【００１８】
本発明においては、予め定められたアルゴリズムで暗号化鍵を生成する鍵生成処理装置と、この鍵生成処理装置にデータを提供する外部データ提供手段とを備えた動的暗号化鍵生成システムであって、
前記外部データ提供手段は、グループＩＤに対応したＩＤ対応データと、２つ以上のプログラム制御要素を含んだプログラム制御値とからなる外部データをグループＩＤの求めに応じて提供するものであり、
前記鍵生成処理装置は、
暗号化された外部データを復号してＩＤ対応データとプログラム制御値とを生成する外部データ復号手段と、
予め搭載されたアルゴリズムに沿って、得られたＩＤ対応データから第１鍵情報を生成する第１鍵情報生成手段と、
予め搭載された別のアルゴリズムに沿って、得られたプログラム制御値から第２鍵情報を生成する第２鍵情報生成手段と、
予め搭載された更に別のアルゴリズムに沿って、得られた第１鍵情報と第２鍵情報とから暗号化鍵を生成する暗号化鍵生成手段とを備える。これにより、会社等のグループ単位で異なる鍵を安全に生成できるようにする暗号化技術を得ることができる。
【００１９】
本発明のＩＤ対応データは、例えば、乱数生成器を用いて予め定められたビット列（例えば、６４、４８、３２、２４ビットの何れかのビット列）を予め定められた個数生成される。尚、既に利用されている既存の乱数生成器としては、線形合同法、メルセンヌ・ツイスタ、ハードウェア乱数生成器等の乱数生成器から選択して用いればよい。
【００２０】
本発明のプログラム制御値は、復号化処理以降に利用する制御値であり、２つ以上のプログラム制御要素からなり、予め定められたアルゴリズムで生成されていればよい。例えば、乱数を用いて整数値ｎを１つ決定し、乱数を用いて予め定められた個数の整数値を決定されたｎ個生成し、生成した値をプログラム制御要素としたり、乱数を用いて予め定められた個数の整数値を重複なく生成して生成した値をプログラム制御要素としたり、乱数を用いて予め定められた範囲の整数値を重複なく予め定められた個数生成して、生成した値をプログラム制御要素としたり、これら要素の１つ又は１つ以上を組み合わせてプログラム制御値として用いることができる。
【００２１】
本発明の外部データは、ＩＤ対応データとプログラム制御値とを結合したものを予め定められた暗号化アルゴリズムで共通鍵Ａを用いて暗号化したものである。即ち、前述のこれらプログラム制御要素を選択して結合してプログラム制御値とする。ＩＤ対応データとプログラム制御値のデータを結合し、生成した値を暗号化前外部データとし、鍵の値として共通鍵Ａを用いて、暗号化前外部データを暗号化し、生成した値を外部データとする。
【００２２】
従って、本発明の外部データ提供手段で提供される外部データは、好ましくは、ＩＤ対応データとプログラム制御値とを結合させたものを予め定められた暗号化アルゴリズムで共通鍵Ａを用いて暗号化したものである。
【００２３】
尚、暗号化前外部データを暗号化する共通鍵Ａについては、後述する外部データ復号手段で利用される共通鍵Ａと同じ値を用いることとなるが、外部データ復号手段は、プログラム内固有値を用いた鍵情報生成手段によって共通鍵Ａを得ている。暗号化前外部データの暗号化を行う外部データ作成装置においては、共通鍵Ａの値を直接保存することが可能である。これは、外部データ作成装置自体は、外部に公開されないプログラムとして構成されるために可能となる。
【００２４】
本発明の外部データ提供手段は、鍵生成処理装置とは個別に存在し、尚且つ、１つの鍵生成処理装置から問い合わせられたグループＩＤに対応した外部データを問い合わせた先の鍵生成処理装置に提供するものであればよい。例えば、通信回線上のサーバー内に装備されたり、場合によっては、メモリーチップ内に装備されてもよく、必要な場合には、鍵生成処理装置とメモリーチップとを繋いで使用してもよい。
【００２５】
外部データ提供手段からの外部データを取得するためには、具体的には、ユーザがグループＩＤと認証コードとを入力し、グループＩＤと認証コードをサーバーに送信する。サーバー上でグループＩＤと認証コードの値を確認し、どちらか一方、もしくは、両方の値が異なる場合は、エラーとする。両方の値が合致した場合には、サーバー上でグループＩＤに対応した外部データを取得し、サーバーから鍵生成処理装置へ外部データを送るようなシステムとすればよい。
【００２６】
本発明の外部データ復号手段は、前記暗号化された外部データを共通鍵Ａを用いて復号して暗号化前外部データとし、この暗号化前外部データをＩＤ対応データとプログラム制御値とに分割する。この分割されたＩＤ対応データとプログラム制御値とを用いて、本発明の鍵生成処理装置によって、以降の鍵情報を作成する。
【００２７】
即ち、鍵生成処理装置の第１鍵情報生成手段よって、予め搭載されたアルゴリズムに沿って、ＩＤ対応データから第１鍵情報を生成し、同じく第２鍵情報生成手段によって、予め搭載された別のアルゴリズムに沿って、得られたプログラム制御値から第２鍵情報を生成する。更に、同じく暗号化鍵生成手段によって、予め搭載された更に別のアルゴリズムに沿って、得られた第１鍵情報と第２鍵情報とから暗号化鍵を生成する。これにより、会社等のグループ単位で異なる鍵を安全に生成できるようにする暗号化技術を得ることができる。
【００２８】
本発明の第１鍵情報生成手段は、制御変数Ｂ１と制御変数Ｂｎとを備え、制御変数Ｂ１で唯一選択される正規の関数と、１つ以上のダミー関数と、制御変数Ｂｎで唯一選択され、正規の関数を経た中間データを用いて第１鍵情報を選定する正規の鍵情報選定手段と、１つ以上のダミーの鍵情報選定手段とを含むものである。
【００２９】
制御変数Ｂ１により選択された正規の関数にＩＤ対応データを入力して中間データを作成する。この際に、ＩＤ対応データをそのまま正規の関数に入力するのではなく、鍵生成処理装置内のプログラム内に保存していたデータを加えて入力することも可能となる。正規の関数により、中間データが生成される。
【００３０】
正規の関数及びダミー関数としては、四則演算、ビット演算の組み合わせでもよく、一方向性関数の一種である種々の暗号学的ハッシュ関数を組合せた関数を採用してもよい。暗号学的ハッシュ関数としては、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２５６を用いる。組合せの例としては、ＳＨＡ−２５６×ＭＤ５、ＭＤ５×ＳＨＡ−１×ＭＤ５などである。ＳＨＡ−２５６×ＭＤ５の場合は、ＳＨＡ−２５６を先に実行し、その出力（ハッシュ値）をＭＤ５へ入力する。ＭＤ５の出力をＳＨＡ−２５６×ＭＤ５の出力とする。
【００３１】
最終的には、制御変数Ｂｎにより選択された正規の鍵情報選定手段に中間データを入力して第１鍵情報を生成する。この際に、用いる中間データは制御変数Ｂ１により選択された正規の関数、好ましくは正規の一方向性関数を用いてもよいし、更に、別の中間データであってもよい。
【００３２】
例えば、制御変数Ｂ２で唯一選択される別の正規の一方向性関数に制御変数Ｂ１による中間データを入力して別の中間データを生成したもの、更には制御変数をＢ３，Ｂ４…と、これを予め定められた回数を繰り返してもよい。
【００３３】
また、制御変数Ｂ１で選択された正規の一方向性関数を繰り返し使用することも想定可能である。即ち、前述の通り、鍵生成処理装置内のプログラム内に保存していたデータを加えて入力したが、このプログラム内に保存していたデータを制御変数Ｂ１による中間データに変えて、この中間データを加えて入力して制御変数Ｂ１による正規の一方向性関数で中間データを生成することを予め定められた回数を繰り返してもよい。
【００３４】
中間データより第１鍵情報を生成するアルゴリズムとしては、例えば、所定の個数のデータから幾つかのデータを選択するアルゴリズム等が選択可能である。どの値を選択するかは、事前にプログラム内に組込まれている。選択された選定アルゴリズムを用いて、中間データから所定の大きさ（ビット数）のデータを選定する。残りのデータは使用せずにダミーとなる。この選定されたデータが第１鍵情報となる。
【００３５】
以上のように、ダミーの演算を鍵生成処理装置のプログラム内に組み込み、第１鍵情報生成手段で利用することにより、鍵の推測を困難にする効果が奏される。尚、実際に計算を行うのは正規の関数であり、ダミー関数全てを用いるのではなく、実際には計算が行われないダミー関数が多数存在するため、極端なパフォーマンス低減を回避することが可能である。
【００３６】
また、制御変数Ｂを用いることにより、どの関数が正規の関数であるのかの特定を困難にしている。
【００３７】
本発明の第２鍵情報生成手段は、好ましくは、プログラム制御値を２つ以上のプログラム制御要素に変換する制御要素分割手段と、事前に組込まれている予め定められた大きさのメッセージＣと、予め定められた関数によって第２鍵情報を選定する鍵情報選定手段とを備え、
前記制御要素分割手段によってプログラム制御値から変換された２つ以上のプログラム制御要素の１つと、メッセージＣとから中間データを生成し、
前記関数に中間データを入力して第２鍵情報を生成するものであることを特徴とするものである。
【００３８】
本発明のメッセージＣは、事前に組込まれている予め定められた大きさを有するものであれば良い。
【００３９】
本発明の制御要素分割手段としては、プログラム制御値を構成する２つ以上のプログラム制御要素へ変換する。即ち、前述の通り、乱数を用いて予め定められた個数の整数値を重複なく生成して生成した値としてのプログラム制御要素や、乱数を用いて整数値ｎを１つ決定し、乱数を用いて予め定められた個数の整数値を決定されたｎ個生成し、生成した値としてのプログラム制御要素や、乱数を用いて予め定められた範囲の整数値を重複なく予め定められた個数生成して、生成した値としてのプログラム制御要素等を１つ又は１つ以上組み合わせたプログラム制御値を構成する各制御要素を得る。
【００４０】
これらの制御要素の何れかと、メッセージＣとから中間データが生成される。そして、この中間データを一方向性関数に入力して鍵情報が生成される。一方向性関数に入力される中間データとしては、１つのプログラム制御要素とメッセージＣとから生成された中間データと同一でなくても、更に別のプログラム制御要素と中間データから生成された第２の中間データ、更に別のプログラム制御要素と第２の中間データとから生成されるように多重処理を行ってもよい。但し、多重に生成した場合には、パフォーマンス低減を招く短所が生じるため、１〜３重処理程度が良好である。
【００４１】
本発明の第２鍵情報生成手段の予め定められた関数は、四則演算、ビット演算の組み合わせでもよく、一方向性関数の一種である種々の暗号学的ハッシュ関数を組合せた関数を採用してもよい。一方向性関数の一種である種々の暗号学的ハッシュ関数を組合せた関数としては、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２５６を用いる。組合せの例としては、ＳＨＡ−２５６×ＭＤ５、ＭＤ５×ＳＨＡ−１×ＭＤ５などである。ＳＨＡ−２５６×ＭＤ５の場合は、ＳＨＡ−２５６を先に実行し、その出力（ハッシュ値）をＭＤ５へ入力する。ＭＤ５の出力をＳＨＡ−２５６×ＭＤ５の出力とする。プログラム制御要素の値から、組合せる数、利用する暗号学的ハッシュ関数を決定する。
【００４２】
本発明の暗号化鍵生成手段は、好ましくは、１つ以上の予め定められた個数(Ｎ１個)の第１鍵情報と１つ以上の予め定められた個数(Ｎ２個)の第２鍵情報とから暗号化鍵を生成するものであり、Ｎ１個の第１鍵情報とＮ２個の第２鍵情報とに対して、予め定められた演算処理を行って暗号化鍵を得る。尚、第１鍵情報と第２鍵情報のサイズが大きく異なり必要な暗号化鍵のサイズに満たない場合も想定できるため、より好ましくは、Ｎ２個の第１鍵情報とＮ２個の第２鍵情報とを連結し、連結したデータを、鍵サイズのブロックに分割する操作を行うことを追加してもよい。この場合、分割したデータを予め定められた演算処理を行うことを行って暗号化鍵を得る。
【００４３】
本発明における予め定められた演算処理としては、四則演算処理、ビット演算処理を指し、特にビット処理演算処理の１つである排他的論理和演算をも含む。
【実施例】
【００４４】
図１は本発明の動的暗号化鍵生成システムの一実施例の概要を示す説明図である。図に示す通り、本実施例の動的暗号化鍵生成システムとしては、予め定められたアルゴリズムで暗号化鍵を生成する鍵生成処理装置(10)と、この鍵生成処理装置(10)に提供する外部データ(21)を予め保持する外部データ提供手段(30)との２つに分けられる。外部データ提供手段(30)で提供される外部データ(21)は、ＩＤ対応データ(40)とプログラム制御値(50)とからなる暗号化前外部データを暗号化したものである。
【００４５】
鍵生成処理装置(10)は、暗号化された外部データ(21)を復号してＩＤ対応データ(40)とプログラム制御値(50)とを生成する外部データ復号手段(60)と、ＩＤ対応データ(40)から第１鍵情報(90)を生成する第１鍵情報生成手段(80)と、プログラム制御値(50)から第２鍵情報(110) を生成する第２鍵情報生成手段(100) と、第１鍵情報(90)と第２鍵情報(110) とから暗号化鍵(130) を生成する暗号化鍵生成手段(120) とを備える。
【００４６】
図２は図１の外部データを作成する外部データ作成装置の一実施例の概要を示す説明図である。図３は図２の装置による外部データ作成処理工程を示す工程図である。図に示す通り、ＩＤ対応データ(40)は、外部データ作成装置(20)のＩＤ対応データ生成手段(22)で生成される。本実施例では、乱数生成器を用いて１２ビット列を１２個生成し、これをＩＤ対応データ(40)とし、第１鍵情報を１０個生成するため、ＩＤ対応データを１０個生成した。尚、ビット列、個数については、種々の選択が可能であることは言うまでもない。
【００４７】
プログラム制御値(50)は、復号化処理以降に利用する制御値であり、２つ以上のプログラム制御要素からなる。プログラム制御値生成手段(23)でプログラム制御値(50)を生成している。本実施例では、乱数を用いて１以上４以下の整数値ｎを１つ決定し、乱数を用いて１以上３以下の整数値をｎ個生成し、生成した値をプログラム制御要素１とする。
【００４８】
乱数を用いて１以上３００以下の整数値を１６個重複なく生成して生成した値をプログラム制御要素２とする。乱数を用いて０以上３１以下の整数値を１６個生成して、生成した値をプログラム制御要素３とする。これら要素１〜３を組み合わせてプログラム制御値(50)とした。尚、各制御要素の生成については、これらに限定されるものではないことは言うまでもない。尚、プログラム制御要素３については、重複も可である。本実施例ではプログラム制御値を５個生成した。
【００４９】
得られたＩＤ対応データ(40)とプログラム制御値(50)とはデータ結合手段(24)で結合され、暗号化前外部データ(25)となる。ＩＤ対応データ(40)とプログラム制御値(50)とのデータの結合は、種々のアルゴリズムが選択可能である。単純にＩＤ対応データ(40)の後にプログラム制御値(50)を繋げてもよいし、各々を所定の長さの群に分けて、この群を交互に繋げる等の手法を選択することができる。得られた暗号化前外部データ(25)は暗号化手段(26)によって、共通鍵Ａ(27)を用いて暗号化され、外部データ(21)となる。
【００５０】
図１に示す通り、鍵生成処理装置(10)が暗号化鍵(130) を得るためには、外部データ(21)が必要となる。外部データ(21)は外部データ提供手段(30)によって、鍵生成処理装置(10)とは個別に存在する。このため、鍵生成処理装置(10)にグループＩＤに対応した外部データを受信する必要がある。図４は外部データの送受信システムの一実施例の概要を示す説明図である。図５は図４のシステムにおける外部データの送受信処理工程を示す工程図である。
【００５１】
図に示す通り、鍵生成処理装置(10)には、外部データ取得機能(13)が備えられ、通信回線上のサーバー内の外部データ提供手段(30)内の外部データ(21)を受信する。グループＩＤ(11)と認証コード(12)とが鍵生成処理装置(10)に入力されると、鍵生成処理装置(10)内の外部データ取得機能(13)のサーバー送信機能(14)を介して外部データ提供手段(30)の認証機能(31)に送られ、グループＩＤ(11)と認証コード(12)との値を確認し、どちらか一方、もしくは、両方の値が異なる場合は、エラーとする。
【００５２】
両方の値が合致した場合には、外部データ選択手段(32)でグループＩＤ(11)に対応した外部データ(21)を取得し、外部データ提供手段(30)から鍵生成処理装置(10)の外部データ受信機能(15)へ外部データ(21)を送る。
【００５３】
受信された外部データ(21)は鍵生成処理装置(10)の外部データ復号手段(60)で復号化され、暗号化前外部データ(25)を経て、ＩＤ対応データ(40)とプログラム制御値(50)とを得る。図６は図１の鍵生成処理装置の外部データ復号手段の一実施例の概要を示す説明図である。図７は図６の復号手段における外部データ復号処理工程を示す工程図である。
【００５４】
図に示す通り、外部データ(21)の入力を開始サインとして、外部データ復号手段(60)では、プログラム内固定値(61)を用いて鍵情報生成手段(62)によって共通鍵Ａ(27)が生成される。この共通鍵Ａ(27)は、前述の暗号化前外部データを暗号化する共通鍵Ａ(27)と同じ値であり、この共通鍵Ａ(27)を用いて、外部データ復号手段(63)によって外部データ(21)は暗号化前外部データ(25)に復号される。
【００５５】
引き続き、分割機能手段(64)によってＩＤ対応データ(40)とプログラム制御値(50)とに分割される。この分割機能手段(64)は、前述の外部データ作成装置(20)のデータ結合手段(24)の操作の逆を行うものである。得られたＩＤ対応データ(40)とプログラム制御値(50)とから、鍵生成処理装置によって以降の鍵情報が作成される。
【００５６】
先ず、ＩＤ対応データ(40)を用いて第１鍵情報を得る。図８は図１の鍵生成処理装置の第１鍵情報生成手段の一実施例の概要を示す説明図である。図９は図８の第１鍵情報生成処理工程を示す工程図である。図に示す通り、分割されたＩＤ対応データ(40)は第１鍵情報生成手段(80)に入力される。
【００５７】
第１鍵情報生成手段(80)は制御変数Ｂ１(91)と制御変数Ｂｎ(93)とを備え、制御変数Ｂ１(91)で唯一選択される正規の一方向性関数(84)と、１つ以上のダミー関数(85)と、制御変数Ｂｎ(93)で唯一選択され、正規の一方向性関数を経た中間データ(92)を用いて第１鍵情報(90)を選定する正規の鍵情報選定手段(87)と、１つ以上のダミーの鍵情報選定手段(88)とを含む。
【００５８】
前述の通り、本実施例のＩＤ対応データ(40)は、１２×１２ビットの整数値である。この第１鍵情報生成手段(80)に入力されたＩＤ対応データ(40)の整数値にデータの組合せ手段(82)によって、プログラム内データ(81)が加えられる。加えられたデータは、制御変数Ｂ１(91)を用いた一方向性関数の選択手段(83)によって選択された正規の一方向性関数(84)に入力されて中間データ(92)が作成される。
【００５９】
多数のダミー関数は悪意のある第三者が正規の一方向性関数を特定するのを阻害する。また、実際に計算を行うのは正規の一方向性関数であり、ダミー関数全てを用いるのではなく、実際には計算が行われないダミー関数が多数存在するため、極端なパフォーマンス低減を回避することが可能である。
【００６０】
制御変数Ｂｎ(93)を用いて選定アルゴリズムの選択手段(86)によって選択された正規の鍵情報選定手段(87)に中間データ(92)を入力して第１鍵情報(90)を生成する。この場合、多数のダミー選定装置によって、悪意のある第三者が正規の鍵情報選定装置(87)を特定するのを阻害する。
【００６１】
さて、第１鍵情報(90)を生成する際に、用いる中間データ(92)は制御変数Ｂ１(91)により選択された正規の一方向性関数(84)を用いてもよいし、更に、別の中間データであってもよい。１つの他の実施例では、図の一点鎖線に示す通り、制御変数Ｂ２(94)で唯一選択される別の正規の一方向性関数に制御変数Ｂ１による中間データを入力して別の中間データ(95)を生成したもの、更には制御変数をＢ３，Ｂ４…と、これを予め定められた回数を繰り返した中間データ(96)を用いてもよい。
【００６２】
尚、一方向性関数としては、種々の暗号学的ハッシュ関数を組合せた関数を採用してもよい。例えば、暗号学的ハッシュ関数としては、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２５６を用いる。また、組合せの例としては、ＳＨＡ−２５６×ＭＤ５、ＭＤ５×ＳＨＡ−１×ＭＤ５などを選択することが可能である。例えば、制御変数Ｂ１で選択される正規の一方向性関数をＭＤ５×ＳＨＡ−２５６とし、ダミー関数をＳＨＡ−２５６×ＭＤ５、ＭＤ５×ＳＨＡ−１×ＭＤ５としてもよい。
【００６３】
また、別の他の実施例では、図の破線に示す通り、制御変数Ｂ１(91)で選択された正規の一方向性関数(84)で得られた中間データ(92)をプログラム内データ(81)に加えて再度正規の一方向性関数(84)で中間データを生成する操作を少なくとも１回以上繰り返してもよい。
【００６４】
プログラム制御値(50)を用いて第２鍵情報(110) を得る。図１０は図１の鍵生成処理装置の第２鍵情報生成手段の一実施例の概要を示す説明図である。図１１は図１０の第２鍵情報生成処理工程を示す工程図である。図に示す通り、第２鍵情報生成手段(100) は、プログラム制御値を２つ以上のプログラム制御要素に分割する制御要素分割手段(101) と、事前に組込まれている予め定められた大きさのメッセージＣ(102) と、予め定められた関数によって第２鍵情報を生成する鍵情報生成手段(108) とを備えている。
【００６５】
プログラム制御値(50)が第２鍵情報生成手段(100) に入力されると、制御要素分割手段(101) によって、プログラム制御値(50)を構成している２つ以上のプログラム制御要素(103) に分割される。即ち、前述の通り、本実施例では、プログラム制御要素１とプログラム制御要素２とプログラム制御要素３とを組み合わせてプログラム制御値(50)としているが、制御要素分割手段(101) によってこの組合せの操作の逆処理を行って、プログラム制御要素１とプログラム制御要素２とプログラム制御要素３とに分割される。
【００６６】
制御要素分割手段(101) によってプログラム制御値(50)から変換された２つ以上のプログラム制御要素の１つと、メッセージＣ(102) とから中間データ１(105)を生成する。例えば、メッセージＣをサイズが３２ビットの３００個のデータとし、この３００個のデータとプログラム制御要素２とを用いて、データ選定手段(104) により、計算に利用する１６個のデータを選択し、１６個のデータを中間データ１(105) としてもよい。
【００６７】
また、この中間データ１とプログラム制御要素３と合わせて、データ生成手段(106) によって中間データ２(107) を生成した後に、鍵情報生成手段(108) によって予め定められた関数に中間データ２(107) を入力して第２鍵情報(110) を生成させ、第２鍵情報(110) を出力する。尚、データ生成手段(106) は、中間データ１の１６個の数値それぞれに対して、プログラム制御要素３で与えられた数値の分だけ右へ巡回シフトを行う。シフト後の１６個のデータを繋げた５１２ビットのデータを中間データ２とした。
【００６８】
予め定められた関数としては、四則演算、ビット演算の組み合わせでもよく、一方向性関数の一種である種々の暗号学的ハッシュ関数を組合せた関数を採用してもよい。例えば、一方向性関数の一種である種々の暗号学的ハッシュ関数としては、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２５６を用いる。組合せの例としては、ＳＨＡ−２５６×ＭＤ５、ＭＤ５×ＳＨＡ−１×ＭＤ５などである。ＳＨＡ−２５６×ＭＤ５の場合には、ＳＨＡ−２５６を先に実行し、その出力（ハッシュ値）をＭＤ５へ入力する。ＭＤ５の出力をＳＨＡ−２５６×ＭＤ５の出力とする。具体的には、プログラム制御要素１の数字の値が暗号学的ハッシュ関数の種類、数字の数が組合せる数となる。例えば、２２１という数字の場合は、ＳＨＡ−１×ＳＨＡ−１×ＭＤ５となる。
【００６９】
得られた第１鍵情報(90)及び第２鍵情報(110) から暗号化鍵を(130) を得る。図１２は図１の鍵生成処理装置の暗号化鍵生成手段の一実施例の概要を示す説明図である。図１３は図１２の暗号化鍵生成処理工程を示す工程図である。図に示す通り、暗号化鍵生成手段(120) は、第１鍵情報(90)と第２鍵情報(110) を用いて、暗号化鍵を(130) 生成する。本実施例では、暗号化鍵生成手段(120) は、１つ以上のＮ１個の第１鍵情報(90)として、例えば前述の通り１０個の第１鍵情報(90)と、１つ以上のＮ２個の第２鍵情報(110) として、例えば前述の通り５個の第２鍵情報(110)とをビット演算処理して、暗号化鍵(130) とした。
【００７０】
第１鍵情報、第２鍵情報のサイズは、関数によって異なる。例えば、ＭＤ５は１２８ビット、ＳＨＡ−１は１６０ビット、ＳＨＡ−２５６は２５６ビットとなる。例えば、ＳＨＡ−２５６×ＭＤ５の場合は、最後に実行するＭＤ５のサイズ１２８ビットになる。このため、第１鍵情報と第２鍵情報のサイズが大きく異なり必要な暗号化鍵のサイズに満たない場合を想定して、具体的には、Ｎ２個の第１鍵情報とＮ２個の第２鍵情報とを連結し、連結したデータを、鍵サイズのブロックに分割する操作を行い、分割したデータを排他的論理和演算処理を行うことを行って暗号化鍵を得た。
【００７１】
以上の通り、会社等のグループ単位で異なる鍵を安全に生成できるようにする暗号化技術を得ることができる。また、グループ単位で異なる鍵を生成することができ、悪意のある第三者がプログラムを入手した場合、鍵の奪取が困難となるという効果を奏する。更に、既存のプログラムの大規模な修正を行うことなく、グループ毎に異なる暗号化鍵を安全に生成するシステムを提供することができるという効果がある。
【符号の説明】
【００７２】
(10)  …鍵生成処理装置、
(11)  …グループＩＤ、
(12)  …認証コード、
(13)  …外部データ取得機能、
(14)  …サーバー送信機能、
(15)  …外部データ受信機能、
(20)  …外部データ作成装置、
(21)  …外部データ、
(22)  …ＩＤ対応データ生成手段、
(23)  …プログラム制御値生成手段、
(24)  …データ結合手段、
(25)  …暗号化前外部データ、
(26)  …暗号化手段、
(27)  …共通鍵Ａ、
(30)  …外部データ提供手段、
(31)  …認証機能、
(32)  …外部データ選択手段、
(40)  …ＩＤ対応データ、
(50)  …プログラム制御値、
(60)  …外部データ復号手段、
(61)  …プログラム内固定値、
(62)  …鍵情報生成手段、
(63)  …外部データ復号手段、
(64)  …分割機能手段、
(80)  …第１鍵情報生成手段、
(81)  …プログラム内データ、
(82)  …データの組合せ手段、
(83)  …選択手段、
(84)  …正規の一方向性関数、
(85)  …ダミー関数、
(86)  …選定アルゴリズムの選択手段、
(87)  …正規の鍵情報選定手段、
(88)  …ダミーの鍵情報選定手段、
(90)  …第１鍵情報、
(91)  …制御変数Ｂ１、
(92)  …中間データ、
(93)  …制御変数Ｂｎ、
(94)  …制御変数Ｂ２、
(95)  …中間データ、
(96)  …中間データ、
(100) …第２鍵情報生成手段、
(101) …制御要素分割手段、
(102) …メッセージＣ、
(103) …プログラム制御要素、
(104) …データ選定手段、
(105) …中間データ１、
(106) …データ生成手段、
(107) …中間データ２、
(108) …鍵情報選定手段、
(110) …第２鍵情報、
(120) …暗号化鍵生成手段、
(130) …暗号化鍵、
【要約】
【課題】  会社等のグループ単位で異なる鍵を安全に生成できるようにする暗号化技術を得る。
【解決手段】  ＩＤ対応データとプログラム制御要素を含んだプログラム制御値とを予め暗号化して得た外部データを提供した外部データ提供手段と；暗号化された外部データを復号してＩＤ対応データとプログラム制御値とを生成する外部データ復号手段と、得られたＩＤ対応データから第１鍵情報を生成する第１鍵情報生成手段と、得られたプログラム制御値から第２鍵情報を生成する第２鍵情報生成手段と、得られた第１鍵情報と第２鍵情報とから暗号化鍵を生成する暗号化鍵生成手段とを備えた暗号化処理装置と；を備えた動的暗号化鍵生成システム。
【選択図】      図１【図１】
0005586758.tif 000002
【図２】
0005586758.tif 000003
【図３】
0005586758.tif 000004
【図４】
0005586758.tif 000005
【図５】
0005586758.tif 000006
【図６】
0005586758.tif 000007
【図７】
0005586758.tif 000008
【図８】
0005586758.tif 000009
【図９】
0005586758.tif 000010
【図１０】
0005586758.tif 000011
【図１１】
0005586758.tif 000012
【図１２】
0005586758.tif 000013
【図１３】
0005586758.tif 000014