(57)【要約】【課題】特別な記憶領域を必要とせずに配布された暗号鍵の安全な消去機能と誤った暗号鍵の配布防止機能を実現する暗号鍵保管装置を提供する。【解決手段】暗号鍵取り出し識別情報Ａをｓビットのバイナリ列全ての空でない真部分集合とし、１ビット目からｓビット分がＡの要素に含まれているようなｓ＋１ビット以上のｔビットの暗号鍵データを暗号鍵記憶部に保管し、暗号鍵データの読み出し依頼によりデータの左から１ビット目からｓビット分がＡの要素に含まれている場合、暗号鍵データを送信し、暗号鍵データの送信後、データの左から１ビット目からｓビット分がＡの要素に含まれていないようなｔビットのバイナリ列を生成しその列を暗号鍵記憶部に書き込むことを複数回繰り返し、次の暗号鍵データ読み出し依頼を受信した場合、読み出したデータの左から１ビット目からｓビット分がＡの要素に含まれていないため、エラーを送信する。【選択図】図３
2004336660.tif 000002
【特許請求の範囲】
【請求項１】
暗号鍵データを記憶する暗号鍵記憶部、乱数を生成する算術演算部、暗号鍵取り出し識別情報の有無を検査する暗号鍵取り出し識別情報検査部、他装置との送受信を行う通信部、および各部を制御する制御部、からなる暗号鍵保管装置であって、
ｓを正の整数とし、暗号鍵取り出し識別情報Ａをｓビットのバイナリ列全ての空でない真部分集合とし、暗号鍵データをｓ＋１以上の正の整数であるｔビット長のデータとし、
制御部は、
ｔビットの長さを持つ記憶領域をそれぞれ暗号鍵記憶部に用意する手段と、
データの左から１ビット目からｓビット分がＡの要素に含まれているようなｔビットの暗号鍵データを通信部で受信して暗号鍵記憶部に保管する手段と、
暗号鍵データの読み出し依頼を通信部で受信した場合、暗号鍵取り出し識別情報検査部のデータの左から１ビット目からｓビット分がＡの要素に含まれていたとする検査結果により、暗号鍵記憶部に予め記憶させていたｔビットの暗号鍵データを通信部を用いて送信する手段と、
ｔビットの暗号鍵データを通信部を用いて送信した後、算術演算部を用いてデータの左から１ビット目からｓビット分がＡの要素に含まれていないようなｔビットのバイナリ列を生成しその列を暗号鍵記憶部に保管することを複数回繰り返す手段と、
データ読み出し依頼を通信部で受信した場合、暗号鍵取り出し識別情報検査部のデータの左から１ビット目からｓビット分がＡの要素に含まれていなかったとする検査結果により、通信部を用いてエラーを送信する手段と、からなる暗号鍵保管装置。
【請求項２】
請求項１に記載の暗号鍵保管装置において、
Ａをｓビットのバイナリ列全ての空でない真部分集合でｓビットのバイナリ列０００・・・０を要素として含まないとする場合、
暗号鍵取り出し識別情報検査部は、
算術演算部を用いてｔビットの乱数を発生させるがこの乱数の左から１ビット目からｓビット分はＡの要素に含まれていないものとする手段と、
制御部は、
ｔビットの暗号鍵データを通信部を用いて送信した後、上記ｔビットの乱数列を暗号鍵記憶部に保管する手段と２回実施し、最後にｔビットの数０を暗号鍵記憶部に保管する手段と、からなる暗号鍵保管装置。
【請求項３】
ｓを正の整数とし、暗号鍵取り出し識別情報Ａをｓビットのバイナリ列全ての空でない真部分集合とし、暗号鍵データをｓ＋１以上の正の整数であるｔビット長のデータとし、
ｔビットの長さを持つ記憶領域をそれぞれ暗号鍵記憶部に用意する処理と、
データの左から１ビット目からｓビット分がＡの要素に含まれているようなｔビットの暗号鍵データを受信して暗号鍵記憶部に保管する手段と、
暗号鍵データの読み出し依頼を受信した場合、データの左から１ビット目からｓビット分がＡの要素に含まれていたとする検査結果により、暗号鍵記憶部に予め記憶させていたｔビットの暗号鍵データを送信する処理と、
ｔビットの暗号鍵データを送信した後、データの左から１ビット目からｓビット分がＡの要素に含まれていないようなｔビットのバイナリ列を生成しその列を暗号鍵記憶部に保管することを複数回繰り返す処理と、
次のデータ読み出し依頼を受信した場合、データの左から１ビット目からｓビット分がＡの要素に含まれていなかったとする検査結果により、エラーを送信する処理と、をコンピュータに実行させる暗号鍵保管プログラム。
【請求項４】
請求項３に記載の暗号鍵保管プログラムにおいて、
Ａをｓビットのバイナリ列全ての空でない真部分集合でｓビットのバイナリ列０００・・・０を要素として含まないとする場合、
左から１ビット目からｓビット分はＡの要素に含まれていないｔビットの乱数を発生させる処理手段と、
ｔビットの暗号鍵データを送信した後、上記ｔビットの乱数列を暗号鍵記憶部に保管する手段と２回実施し、最後にｔビットの数０を暗号鍵記憶部に保管する処理と、からなる暗号鍵保管プログラム。
【請求項５】
ｓを正の整数とし、暗号鍵取り出し識別情報Ａをｓビットのバイナリ列全ての空でない真部分集合とし、暗号鍵データをｓ＋１以上の正の整数であるｔビット長のデータとし、
ｔビットの長さを持つ記憶領域をそれぞれ暗号鍵記憶部に用意する処理と、
データの左から１ビット目からｓビット分がＡの要素に含まれているようなｔビットの暗号鍵データを受信して暗号鍵記憶部に保管する手段と、
暗号鍵データの読み出し依頼を受信した場合、データの左から１ビット目からｓビット分がＡの要素に含まれていたとする検査結果により、暗号鍵記憶部に予め記憶させていたｔビットの暗号鍵データを送信する処理と、
ｔビットの暗号鍵データを送信した後、データの左から１ビット目からｓビット分がＡの要素に含まれていないようなｔビットのバイナリ列を生成しその列を暗号鍵記憶部に保管することを複数回繰り返す処理と、
次のデータ読み出し依頼を受信した場合、データの左から１ビット目からｓビット分がＡの要素に含まれていなかったとする検査結果により、エラーを送信する処理と、をコンピュータに実行させる暗号鍵保管プログラムを記録した記録媒体。
【請求項６】
請求項５に記載の暗号鍵保管プログラムを記録した記録媒体において、
Ａをｓビットのバイナリ列全ての空でない真部分集合でｓビットのバイナリ列０００・・・０を要素として含まないとする場合、
左から１ビット目からｓビット分はＡの要素に含まれていないｔビットの乱数を発生させる処理手段と、
ｔビットの暗号鍵データを送信した後、上記ｔビットの乱数列を暗号鍵記憶部に保管する手段と２回実施し、最後にｔビットの数０を暗号鍵記憶部に保管する処理と、コンピュータに実行させる暗号鍵保管プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、主に暗号技術で用いられる暗号鍵保管処理に関し、特に安全な暗号鍵消去機能と暗号鍵の配布の防止機能を有する暗号鍵保管装置、及び暗号鍵保管プログラム、そのプログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
データを秘匿するためには暗号化技術が有効である。データの暗号化には、共通鍵暗号と公開鍵暗号がある。公開鍵暗号ではデータを暗号化する鍵と復号化する鍵が異なっており、通常は暗号化に用いる鍵を一般に公開し、復号化に用いる鍵は利用者が秘密に保持する。公開される暗号化に用いる鍵から復号化に用いる鍵を求めることは、現在の数学的理論および計算機の計算能力をもってしても現実的な時間には完了しないものと信じられている。
上記性質をもつ公開鍵暗号の具体的な実現にはいくつかの方法があるが、もっとも有名な方法としてＲＳＡ暗号がある。ＲＳＡ暗号は初めての公開鍵暗号として１９７７年に発表されたもので、素因数分解の困難性を安全性の根拠としている（非特許文献１）。
【０００３】
素因数分解の困難性とは、素数ｐとｑがあった場合、乗算ｎ＝ｐｑを行うことは簡単であるが、逆にｎからｐとｑを求めることは難しいことをいう。ｎの桁数が大きくなるにつれて必要な計算時間は増大し、例えば６４桁と６５桁の素数の乗算結果である１２９桁の数を素因数分解するために、１９９４年に６００台の計算機を８カ月用いたことが報告されている（非特許文献２）。
ＲＳＡ暗号では、素数ｐ，ｑを生成し、これを用いて秘密鍵ｄ、公開鍵ｅ，ｎが生成する、すなわち、素数ｐ，ｑを生成し、ｎ＝ｐｑ，λ（ｎ）＝ＬＣＭ（ｐ−１，ｑ−１）を計算し、ＧＣＤ（ｅ，λ（ｎ））＝１を定め、ｄ＝１／ｅｍｏｄλ（ｎ）を計算する（非特許文献２）。
【０００４】
他にも、素因数分解の困難性を用いた公開鍵暗号方式としてＥＳＩＧＮ署名がある（非特許文献２）。ＥＳＩＧＮ署名では、素数ｐ，ｑを生成し、これを用いて秘密鍵ｐ，ｑ、公開鍵ｎが生成される。なお、公開鍵のうちｋは、ｐ，ｑと独立に決められるパラメータである。すなわち、素数ｐ，ｑを生成し、ｎ＝ｐ２ｑを計算し、整数ｋ（＞３）の値を定める。
【０００５】
素数を生成する方法としては、乱数により候補となる数を選択し、素数判定法によって素数か否かを判定する方法が一般的である。判定法として用いられる方法としては、Ｍｉｌｌｅｒ−Ｒａｂｉｎ法が有名である。処理速度は素数の桁数に依存するが、５１２ビット程度であればパソコンあるいはワークステーションで実行した場合、平均で３〜５秒程度である。上記暗号鍵の場合、２つの素数が必要であるため、平均６〜１０秒程度が必要となる。また、５１２ビットの素数ｐとｑを掛け合わせたｎの長さが１０２３ビットとなる場合があるため、再度素数を判定する必要がある場合も予想される。
このように素数生成には一定の処理コストが必要となるため、専用の暗号鍵生成装置を使って暗号鍵を生成し、必要となるユーザー（あるいは端末）に配布するモデルが考えられる。フロッピー（登録商標）やＩＣカードへ書き出して配布することや、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）などの安全な通信路を利用したネットワーク経由での配布が可能である。
【０００６】
上述したように、ＲＳＡの場合、暗号鍵さえあればｅ，ｄといった鍵が全て導出できるため、専用の暗号鍵生成装置では、配布した後暗号鍵を完全に消去することが望まれる。記憶情報消去の方法は様々な方法があり、特に安全性が必要なものについては標準が定められている。例えば米国国家安全保障局方式（ＮＳＡ）は当該記憶箇所においては乱数を記憶させ、再び乱数を記憶させ、最後にゼロを記憶させる方式である（すなわち、乱数→乱数→ゼロの書き込み（上書き）を行うことにより記憶情報を消去する）。また、米国陸軍方式（ＡＲ３８０−１９）は当該記憶箇所において乱数を記憶させ、次にある固定値を記憶させ、最後にある固定値（直前の固定値とは独立の関係にある）を記憶させる方式（すなわち、乱数→固定値１→固定値２の書き込み）である。さらに、米国海軍方式（ＮＡＶＳＯＰ−５２３９−２６）は当該記憶箇所においてある固定値を記憶させ、次にある固定値（直前の固定値とは独立の関係にある）を記憶させ、最後に乱数を記憶させる方式（固定値１→固定値２→乱数の書き込み）である。
【０００７】
ところで既存の暗号鍵保管装置の安全性を高めるために上述の暗号鍵消去方法を追加する場合、次のような問題点があった。すなわち、ネットワーク経由での暗号鍵配布において複数からのネットワーク接続を許可する場合に、同じ暗号鍵に対する暗号鍵配布要求がほぼ同時に起こる可能性がある。安全な暗号鍵消去を実施する時間はゼロではないため、消去処理を実施中に別のネットワーク接続からの暗号鍵配布要求を受け付けてしまう恐れがある。すなわち、消去処理中の不正な暗号鍵が配布される可能性がある。また、処理中か否かを示す特別な記憶領域を追加することも考えられるが、既存の装置では必ずしも自由に記憶領域を追加できるとは限らない。
【０００８】
【非特許文献１】
岡本、山本、「現代暗号」、産業図書、ｐ．１１０、１９９７
【非特許文献２】
岡本、太田、「暗号・ゼロ知識証明・数論」、共立出版、ｐ．１５０，ｐ．２２０，ｐ．２２１、１９９５
【０００９】
【発明が解決しようとする課題】
本発明はこのような背景のもとになされたものであり、複数の暗号鍵配布要求に対してネットワーク接続を許可するような暗号鍵保管装置に対し、特別な記憶領域を必要とせず、配布された暗号鍵の安全な消去機能と誤った暗号鍵の配布防止機能を実現するものである。
【００１０】
【課題を解決するための手段】
上記課題を解決するために、本発明は、
ｓを正の整数とし、Ａ（暗号鍵の取り出し識別情報）をｓビットのバイナリ列全ての空でない真部分集合とする。ｔをｓ＋１以上の正の整数とし、ｔビットの長さを持つ記憶領域（暗号鍵記憶領域）を用意する。
データの左から１ビット目からｓビット分がＡの要素に含まれているようなｔビットの暗号鍵をデータとして通信部で受信し、暗号鍵記憶部へ保管する。
暗号鍵のデータの読み出し（配布）依頼を通信部で受信した場合、データの左から１ビット目からｓビット分がＡの要素に含まれていれば、暗号鍵記憶部に予め記憶させていたｔビットのデータを暗号鍵として通信部を用いて暗号鍵配布依頼装置に送信する。
その後、暗号鍵の消去を行うために以下の処理を複数回繰り返す。すなわち、データの左から１ビット目からｓビット分がＡの要素に含まれていないようなｔビットのバイナリ列（前記暗号鍵とは異なる）を生成し、その列を暗号鍵記憶部に保管する（書き込む）。
データ読み出し依頼を通信部で受信した場合、データの左から１ビット目からｓビット分がＡの要素に含まれなかった時には、既に暗号鍵はこの暗号鍵保管装置から取り出された後であるため、通信部を用いてエラー信号を暗号鍵配布依頼装置に送信する。
【００１１】
（作用）
ネットワーク経由での暗号鍵配布において複数からのネットワーク接続を許可する場合に、同じ暗号鍵に対する暗号鍵配布要求がほぼ同時に起こる場合が想定される。
最初の暗号鍵配布要求では、データの左から１ビット目からｓビット分がＡの要素に含まれているため、暗号鍵記憶部に予め記憶させていたｔビットのデータが暗号鍵として通信部を用いて暗号鍵配布依頼装置へ送信される。
その後、ｔビットのバイナリ列を生成し、暗号鍵記憶部に保管（書き込む）する。この時、左から１ビット目からｓビット分はＡの要素に含まれていないようなバイナリ列とする。
同じ暗号鍵に対する２回目以降の暗号鍵配布要求において、データの左から１ビット目からｓビット分はＡの要素に含まれていないように構成されているためエラーを通知することができ、暗号鍵の安全な配布が可能となる。
【００１２】
【発明の実施の形態】
以下、図を用いて本発明に基づく実施例を説明する。
図１は本発明の暗号鍵保管装置の実施例を示す構成図である。
通信部は他装置との情報送受信に用いられ、暗号鍵取り出し要求を受け付け、これに対する結果（暗号鍵配布あるいはエラー）を出力する箇所である。算術演算部は与えられた正の整数ｔに対してｔビット（暗号鍵のデータ長）の乱数を生成し、また固定値を保持しｔビットの連続するビット列を生成する箇所である。乱数、固定値は、暗号鍵が暗号鍵記憶部から取り出された場合に書き込まれる。暗号鍵記憶部では、暗号鍵の保管を行う。暗号鍵取り出し識別情報検査部は、暗号鍵記憶部から暗号鍵データを取り出し、暗号鍵取り出し識別情報の有無を検査する。制御部は、これら各部を制御する箇所である。
【００１３】
暗号鍵データ列について説明する。
ｓ＝８ビット，ｔ＝４８８８ビットとする。１０２４ビットＲＳＡの暗号鍵を対象とする。ＲＳＡ鍵については形式などの仕様が定められている。（Ｂ．Ｋａｌｉｓｋｉ，“ＰＫＣＳ＃１：ＲＳＡ  Ｅｎｃｒｙｐｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．５”，ＲＦＣ２３１３）
この形式によると、ＲＳＡ秘密鍵はｖｅｒｓｉｏｎ，ｎ，ｅ，ｄ，ｐ，ｑ，ｄｍｏｄ（ｐ−１），ｄｍｏｄ（ｑ−１），ｑ−１ｍｏｄ  ｐから成る。１０２４ビット、すなわち１２８バイトのＲＳＡ鍵の場合、これらの数のバイトサイズは、それぞれ次のようになる。
ｖｅｒｓｉｏｎは０を表すので、１バイトである。ｎは１２８バイトである、ｅは、通常６５５３７ビットであることが多いので、３バイトである。ｄは多少上下するが、ここではｎと同様の１２８バイトとする。ｐ，ｑはｎの約数であるが、通常ｎの半分のサイズであるので、それぞれ６４バイトである。よって、ｄｍｏｄ（ｐ−１）  ，ｄｍｏｄ（ｑ−１）  ，ｑ−１ｍｏｄ  ｐも多少上下するが、ここではｐ，ｑと同様の６４バイトとする。なお、ｎ，ｄ，ｐ，ｑ，ｄｍｏｄ（ｐ−１），ｄｍｏｄ（ｑ−１），ｑ−１ｍｏｄ  ｐについては、最上位バイトの最上位ビットは１であるとする。
【００１４】
さて、ＰＫＣＳ（Ｐｕｂｌｉｃ−Ｋｅｙ  Ｃｒｙｐｔｇｒａｐｈｙ  Ｓｔａｎｄａｒｄｓ）＃１によると、これらはＡＳＮ．１（Ａｂｓｔｒａｃｔ  Ｓｙｎｔａｘ  Ｎｏｔａｔｉｏｎ  Ｏｎｅ：「情報の構造を定義する」ための言語）で表現される。ＡＳＮ．１はＸ．２０８（ＯＳＩ参照モデル、記述に関するＩＴＵ−Ｔ勧告）で定義されており、データ送受信に用いられる表現方法である。（ＣＣＩＴＴ．Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｘ．２０８：Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｏｆ  Ａｂｓｔｒａｃｔ  Ｓｙｎｔａｘ  Ｎｏｔａｔｉｏｎ  Ｏｎｅ（ＡＳＮ．１）．１９８８）ＡＳＮ．１で定義された表現に従って、具体的にデータ送受信を行う場合には、バイトの並びなどに一定の規則を与える必要があるが、そのための規則としてＢＥＲ（Ｂａｓｉｃ  Ｅｎｃｏｄｉｎｇ  Ｒｕｌｅｓ：バイナリ変換規則）がある。（ＣＣＩＴＴ．Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｘ．２０９：Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｏｆ  Ｂａｓｉｃ  Ｒｕｌｅｓ  ｆｏｒ  Ｓｙｎｔａｘ  Ｎｏｔａｔｉｏｎ  Ｏｎｅ（ＡＳＮ．１）．１９８８）この規則に従って、具体的なＲＳＡ秘密鍵が与えられると、ＰＫＣＳ＃１で定義されたＡＳＮ．１形式に従ってＸ．２０９（ＯＳＩ参照モデル、記述に関するＩＴＵ−Ｔ勧告）で定義されたエンコーディングを行い、データ列が決定される。
上記の各バイトサイズであると想定したとき、識別名等（各２〜３バイト）が付加されて最終的にデータ列の長さは６１１バイト、すなわち４８８８ビットとなる。
また、このＰＫＣＳ＃１での秘密鍵のＡＳＮ．１形式、およびＸ．２０９でのエンコーディング規則から、データ列の最初の１バイトは１６進数で３０となる（１０進数では４８）。以後、１６進数を表すために、数字の最後に“Ｈ”をつけることとする。Ａ＝｛３０Ｈ｝とする。
【００１５】
図３を参照して暗号鍵保管方法を説明する。
（Ｓ１）まず、ｔ＝４８８８ビットのＲＳＡ暗号鍵（図２（ａ）参照）を通信部で受信し、それを暗号鍵記憶部に保管する。
（Ｓ２）外部より最初の暗号鍵配布要求、すなわちデータ読み出し依頼を通信部で受信した場合、（Ｓ３）データの左から１ビット目からｓ＝８ビット分の部分データ（暗号鍵取り出し識別情報）を取り出す。（Ｓ４）最初の暗号鍵配布要求であるから、暗号鍵記憶部に保管されているデータは暗号鍵そのものであり、Ｘ．２０９エンコーディング規則に従っているので、１ビット目から８ビット分は３０Ｈである。これはＡ（暗号鍵取り出し識別情報）の要素でもある。（Ｓ５）従ってｔ＝４８８８ビットのデータ（すなわち、暗号鍵データ）を暗号鍵記憶部から読み出し、通信部を用いて送信する。
（Ｓ６）その後、算術演算部においてｔ＝４８８８ビットの乱数を生成する。このとき、１ビット目から８ビット分についてはＡの要素｛３０Ｈ｝にならないように生成する。すなわち、１ビット目から８ビット分が３０Ｈであった場合には、新たに乱数を生成し直す。こうして得られた４８８８ビットの乱数を、暗号鍵記憶部へ保管する。もう一度別の乱数を生成して、同じように記憶部へ保管する。最後に、４８８８ビットのバイナリ列０００・・・０を生成し、暗号鍵記憶部へ保管する。
【００１６】
この暗号鍵消去処理の過程において、（Ｓ７）別の暗号鍵配布要求を通信部で受信した場合を考える。（Ｓ８）まず、暗号鍵記憶部からｔ＝４８８８ビットの暗号鍵データ列（暗号鍵データが消去されたデータ列）を読み出す。（Ｓ９）１ビット目から８ビット分の部分データ（暗号鍵取り出し識別情報部分）を取り出してＡの要素になっているかを検査する。既に乱数が暗号鍵記憶部に保管されている（暗号鍵データが消去されている）場合、当該箇所にはＡの要素でない乱数が記されているため、部分データはＡの要素ではない。また、既にバイナリ列０００・・・０が記憶部に保管されている場合、当該箇所の部分データは８ビットの長さのバイナリ列０００・・・０、すなわち００Ｈであるが、これはＡの要素ではない。（Ｓ１０）そのため、暗号鍵記憶部から読み出した４８８８ビットのデータ（消去された暗号鍵データ）は暗号鍵として送信することはなく、エラーが送信される。
このように乱数の記憶→乱数の記憶→ゼロの記憶（３回の書き込み）といった方式で安全な消去を行う方法は、従来の技術にて記載したように米国国家安全保障局方式として定められている。
【００１７】
次に、米国陸軍方式に沿った安全な消去方法への適用を例として記述する。
まず、ｓ＝８ビット，ｔ＝４８８８ビットとする。この方式では固定値が最大２つ必要であるので、１回目の書き込み固定値Ｃ１＝５５Ｈ，２回目の書き込み固定値Ｃ２＝０ＡＡＨとする。本例ではＣ１≠Ｃ２としたが、Ｃ１＝Ｃ２としても構わない。Ａ＝｛３０Ｈ｝とする。
（Ｓ１）ｔ＝４８８８ビットの暗号鍵データ列を記憶する手順、および暗号鍵配布要求を通信部で受信した場合の手順は上記と同様である。
（Ｓ２）〜（Ｓ５）外部より最初の暗号鍵配布要求、すなわち暗号鍵データ読み出し依頼を通信部で受信した後、（Ｓ６）ｔ＝４８８８ビットの算術演算部において乱数を生成する。この時、１ビット目から８ビット分についてはＡの要素にならないように生成する。すなわち、１ビット目から８ビット分が３０Ｈであった場合には、新たに乱数を生成し直す。こうして得られた４８８８ビットの乱数を、暗号鍵記憶部へ保管する。次に、図２（ｂ）に示すように５５Ｈを連続して連結させる。すなわち、５５５５５５・・・５５というバイト列を作成し、左からｎ＝４８８８ビット分を暗号鍵記憶部へ保管する。最後に、０ＡＡＨについても同様に暗号鍵記憶部へ保管させる。
（Ｓ７）この暗号鍵消去処理過程において、別の暗号鍵配布要求を通信部で受信した場合を考える。（Ｓ８）まず、暗号鍵記憶部からｎ＝４８８８ビットのデータ列を読み出す。（Ｓ９）１ビット目から８ビット分の部分データを取り出してＡの要素になっているかを検査する。既に乱数が暗号鍵記憶部に保管されている場合、当該箇所にはＡの要素でない乱数が記されているため、部分データはＡの要素ではない。また、既に５５５５５５・・・５５あるいは０ＡＡＡＡ・・・ＡＡが暗号鍵記憶部に保管されている場合、当該箇所の部分データは８ビットのバイナリ列０１０１０１０１あるいは１０１０１０１０、すなわち５５Ｈあるいは０ＡＡＨであるが、これはＡの要素ではない。（Ｓ１０）そのため、記憶部から読み出した４８８８ビットのデータは暗号鍵として送信することはなく、エラーが送信される。
【００１８】
次に、従来の技術を記載した米国海軍方式に沿った安全な消去方法への適用を例として記述する。例として用いる値は、上記と全く同じとして記述する。
（Ｓ１）ｔ＝４８８８ビットのデータ列を記憶する手順、および暗号鍵配布要求を通信部で受信した場合の手順は上記と同様である。
（Ｓ２）〜（Ｓ５）外部より最初の暗号鍵配布要求、すなわちデータ読み出し依頼を通信部で受信した後、（Ｓ６）５５Ｈを連続して連結させる。すなわち、５５５５５５・・・５５というバイト列を作成し、左からｔ＝４８８８ビット分を暗号鍵記憶部へ保管する（図２（ｂ）参照）。次に、０ＡＡＨについても同様にして暗号鍵記憶部へ保管させる。最後に、ｔ＝４８８８ビットの乱数を生成する。この時、１ビット目から８ビット分についてはＡの要素にならないように生成する。すなわち、１ビット目から８ビット分が３０Ｈであった場合には、新たに乱数を生成し直す。こうして得られた４８８８ビットの乱数を、暗号鍵記憶部へ保管する。
この方式は正しく動くことは上記に記載したことから明らかである。
【００１９】
本発明の暗号鍵保管装置は、ＣＰＵやメモリ等を有するコンピュータ、利用者端末、ＣＤ−ＲＯＭ，磁気ディスク装置，半導体メモリ等の機械読み取り可能な記録媒体とから構成することができる。
記録媒体に記録された暗号鍵保管プログラム、あるいは通信回線を介して電送された暗号鍵プログラムはコンピュータに読み取られコンピュータ上に前述した構成要素、及び処理を実現する。
【００２０】
【発明の効果】
以上のように本発明は、主に暗号技術で用いられる暗号鍵保管処理に関するものであって、複数からの暗号鍵配布を要求するネットワーク接続を許可するような暗号鍵保管装置に対し、特別な記憶領域を必要とせずに配布された暗号鍵の安全な消去機能と不正な暗号鍵の配布防止機能を実現するものである。
【図面の簡単な説明】
【図１】本発明の暗号鍵保管装置の構成図。
【図２】暗号鍵記憶部に保管された（ａ）暗号鍵データ列と（ｂ）固定値Ｃ１書き込みデータ列を示す図。
【図３】暗号鍵保管方法の処理フローを示す図。
【図１】
2004336660.tif 000003
【図２】
2004336660.tif 000004
【図３】
2004336660.tif 000005