説明

無限乱数発生装置を用いた無限暗号化・復号装置及び無限暗号化装置

【課題】メモリディスクに簡単に利用できる高性能の暗号化復号化の必要が増大している。 本発明は小規模コンピュータシステム、携帯端末にて使用できる効率の良い疑似乱数を生成するものである。 疑似乱数発生装置に対して、n個の暗号鍵を備え、この暗号鍵の組み合わせで疑似乱数の性能を最大限引き出せるようし、堅牢なメモリディスク用の暗号化復号化を行うものである。
【解決手段】再現性のある疑似乱数の生成する乱数列はN-1の周期を備える事から、生成する乱数列をこの周期の中で使用するようにし、次の周期にまたがらない機構を開発した。 また、疑似乱数が生成する乱数列N-1の中で重複無く乱数列を取り出す機構を備え、乱数の無秩序性が最大になるようにして、乱数発生装置の性能を最大に引き出すようにしたものである。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、認証装置、被認証装置、認証システム、認証方法、被認証方法、プログラムまたはプログラムを記録したコンピュータ読み取り可能な記録媒体に関す
るものである。特に、少リソースな、組込機器、家電品、携帯機器、小型情報端末、小型ゲーム端末機器に用いられる認証及び被認証装置等に関するものであ
る。
【背景技術】
【0002】
一般的な乱数生成の技術として、タイマーを備え電源起動からの時間情報および、これに前回の最終情報を加えるシードとし乱数生成を行い、外部からの解析に
も耐えるための手段が開示されている(特許文献1参照)。
【0003】
また、直近の乱数のやり取りを覚えておき、使った乱数値を使わないようにすることで認証の安全性を高めようとする方法が開示されている(特許文献2参
照)。
【0004】
また、少ないリソースで乱数生成を実現しようとするもので、自装置内で乱数生成する手段が開示されている(特許文献3参照)。
【0005】
メルセンヌ素数を利用したメルセンヌ・ツイスタ(Mersenne
twister)は1997年(論文発表は1998年1月)に松本眞と西村拓士によって開発された擬似乱数生成器である。周期が2の19937乗-1つま
り623ワード(19937ビット、2492バイト)の表現力で、623次元超立方体の中に 均等に分布することが証明されている。
【0006】
メルセンヌ・ツイスタは内部構造として32ビット版は、1ワード増やし、624ワード(19968ビット、2496バイト)の内部変数を持つ。
【0007】
この内部変数の組み合わせで624ワード(19968ビット、2496バイト)の乱数表を生成する。
【0008】
この乱数表は、内部の624ワード(19968ビット、 2496バイト)の組み合わせだけ異なる乱数表が存在する。
【0009】
以上より、均等に分布することを証明された最低でも624ワード(19968ビット、
2496バイト)の乱数表が2の19937乗-1の個数が存在すると説明できる(非特許文献1参照)。
【0010】
外務省により公開している暗号の紹介のページである。有限乱数式、無限乱数式暗号を判りやすく紹介している。ここでは無限乱数式暗号は論理的に解読できな
いという事実を述べている(非特許文献2参照)。
【0011】


【特許文献1】特開2000−242470号公報
【特許文献2】特開2001−177519号公報
【特許文献3】特開平10−247140号公報
【非特許文献1】M. Matsumoto and T. Nishimura, "Mersenne Twister: A 623-dimensionallyequidistributed uniform pseudorandom number generator", ACM Trans. onModeling and Computer Simulation Vol. 8, No. 1, January pp.3-30(1998)http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html
【非特許文献2】外務省大臣官房情報通信課 非常勤講師 奥村定夫「外交と暗号」http://www.mofa.go.jp/mofaj/annai/shocho/e_seifu/toukou2004.html
【発明の開示】
【発明が解決しようとする課題】
【0012】
当発明はデータに対してn個の暗号鍵を設定し、特定個人、特定のコンピュータシステム、特定の機材の接続の全条件を満たした時にデータを読めるようにする
ものである。
条件を満たした時だけデータを正しく復号化できるようにして、データ盗難・データ改ざん・ウイルスやスパイウェア・ピアツーピアによるアプリケーションか
らなる被害を最小にしようというものである。
【課題を解決するための手段】
【0013】
データの暗号化においては、有限乱数式と無限乱数式が存在する。
有限乱数式とは同じ乱数表を繰り返し暗号化に使用する方式である。効率が良い反面一度乱数表を解読されると後は簡単に解読ができる。
無限乱数式は一度使用した乱数表は2度と使わないという方式である。
無限乱数式は同じ乱数を2度使わず1度限りの使用においては絶対に解読できないことが情報理論により証明されている暗号である。
本発明は、疑似乱数の発生装置をきめ細かく制御し重複する乱数の発生を防ぎ、毎回異なる乱数を生成するようにして無限乱数式の強度を取り入れたものであ
る。
【発明を実施するための最良の形態】
【0014】
本発明の実施例について図面を用いて説明する。
【実施例1】
【0015】
これは暗号化と復号を行うプログラムおよび装置である。
図18に本発明の第1実施例のコンピュータシステムの電子機器としての全体構成図を示す。
【0016】
情報処理装置S1811は計算機の全体制御、および各種プログラムを実行する中央処理装置(以下CPU)、各種プログラムやデータがロードされるメモリ装
置S1813、ROMBIOSのS1812、アダプタS1815、S1816で構成されていて、それらはシステムバスS1814で接続される。
アダプタS1815を介してHDDのS1830のホストインタフェースS1820に接続する。アダプタS1816を介して装着可能なストレージデバイスを
接続するリーダライタS1819が接続する。
【0017】
この実施例ではストレージデバイスとして、USB装置S1840を用いる。装置S1840はストレージデバイス機能を備える。なお、本実施例では記憶装置
としてメモリディスク装置を例に説明するが、本実施例の効果を奏する範囲内であれば任意の装置でよい。
【0018】
ROMBIOSのS1812には、HDDのS1830あるいはストレージデバイスなどのシステムブート可能デバイスから一つのデバイスを選択する手段、当
該デバイスからシステムブートローダをメモリ装置S1813に読出す手段、読み出したシステムブートローダに分岐する手段(いわゆるシステムブート機能)
を備える。
HDDのS1830あるいは任意のストレージデバイスから読み出されたOSプログラムは、メモリ装置S1813に格納され、CPUにより実行される。
【0019】
図1に本実施例の乱数の管理方式を説明する。本実施例では疑似乱数発生装置としてメルセンヌ・ツイスタを使用する。疑似乱数はその欠点として周期を持つこ
とである。一定周期で同じ乱数を生成する。図1のS110はそれをリング状にして現したものである。
【0020】
メルセンヌ・ツイスタは、2の19937乗-1。十進法の場合は約10の6000乗の周期を持つ。つまり、約10の6000乗の数の乱数表を繰り返し生成
する。
【0021】
S111にそれを直線に表したものである。2の19937乗-1を要素Nとする巨大な乱数表が存在する。
S112はこの要素数nの重なり合わない事を特徴とする小テーブルである。本実施例の暗号化はこの小テーブルを使用して行う。
【0022】
小テーブルは一度使ったなら
ば2度と使わない。これにより疑似乱数の周期の中で無限乱数式の暗号化と復号化を行う。
また、S112は隙間無く連続して並んでいることが効率上このましいが、空隙があっても良い。
【0023】
メルセンヌ・ツイスタはその内部仕様として内部で2496バイト(624ワード)のテーブルを備え、一つのシードを与えた時発生させる乱数が2496バイ
ト以下とした時S112として使用できる。この場合、一つのシードにおいて生成する乱数を2496バイト以下とし、同じシードを二度と使わないという条件
において重複の起きない乱数を生成し管理できる。
【0024】
下記簡素計算式を1テーブルと見なし上記理論を確立するものとする。
【0025】
(a ≒ s + a' = a'') × n = ∞

a = 10の6000乗
a'= 2492バイト
a'' = 623ワード数
s = 1つのシード
n = テーブル数
∞ = 無限数値
【0026】
図2に本実施例の暗号化の方法を説明する。
【0027】
S210は暗号化したい平文である。
【0028】
S211は乱数表である。乱数表は一つ一つ異なるシードで生成したS112の集合体である。S210の各要素と
S211の各要素を1対1、つまりバイト単位で排他的論理和をとった結果がS212である。
【0029】
このようにS210とS211の間で演算を行うことにより暗号化ができる。演算の種類としては排他的論理和の他に加算ないし減算をしても良いが処理が簡単
と言う理由で排他的論理和を本実施例では採用する。
【0030】
排他的論理和を使用した場合、復号も同一の排他的論理和でよくコンピュータ処理に向いているからである。従い、S210は暗号化されたデータを、S211
は暗号化した時に使用した乱数表を指定したとき、S212に平文を生成することが出来る。
【0031】
図3に本実施例の物理的全体像を示す。
S310はコンピュータのUSBコネクタである。S311は指紋認証装置を内蔵したUSBメモリ装置である。
本実施例は指紋認証装置を内蔵したUSBメモリ装置により試作を行った。
【0032】
本発明はこの指紋認証装置専用ではない。実施例の一つであることを明示する。
【0033】
図4に本実施例で採用したUSBメモリ装置の使い方を説明する。基本制御ソフトには米マイクロソフト社のものを使用している。
【0034】
本USB装置を接続するとコンピュータシステム上にS410のごとく出現する。CD-ROM装置S411とリムーバブルディスクS412が出現する。
【0035】
次にS416の指紋認証を促す画面が出現する。認証を選択するとS417の指紋認証画面が出現する。ここでUSBメモリ装置内蔵のセンサーに指をスライド
させ、認証が通るとS410はS413に切り替わる。
S414とS415は指紋認証した時に始めて出現する保護されたディスク領域である。
【0036】
また、この一連の処理を行うためには同USBメモリ装置付属のツールで指紋を登録しておく必要がある。
【0037】
なお、この指紋認証、同USBメモリ装置付属の使い方をここで述べるのは本発明の理解を促進するためであり、本発明とは直接関係ないことを明示する。
【0038】
図5にn個の暗号鍵の生成を図にて示す。
本実施例では、静的に定まる暗号鍵を持つ。これらは、本装置が作動する上で必須の情報である。
【0039】
S510は、本実施例が暗号化生成用に確保したメモリである。本実施例では624ワード(2496バイト)のサイズを持つ。このサイズは本実施例が採用し
ているメルセンヌ・ツイスタ公開プログラム(2002年版(mt19937ar.c))に設定できるシードの最大桁数にあわしている。
【0040】
624ワードのサイ
ズを確保しているが全てを使う必要はない。誤動作を防ぐためこのメモリ領域を確保した時に一度全てゼロを格納するものとする。その上で内部の各要素を格納
するものとする。
【0041】
またS510の静的に定まる各要素は全て使用するか否かは任意とする。使用する項目には有値を格納する。使わない項目はゼロであるものとする。静的に定ま
る各要素とは、後述する時間情報および連続番号以外の要素のことである。
【0042】
S511は、本発明が作動するコンピュータシステムに記憶する値である。任意の文字列である。本実施例では128バイト以内のアスキー文字列である。この
文字列はヌルコードで終端するものとする。
【0043】
入力項目S515はS511を設定するためのプログラム画面である。このようにして、初期値として設定しコン
ピュータシステムの不揮発性の記憶装置に保存する。
【0044】
S512は、本実施例が動作しているコンピュータシステムもしくは端末のユニークコードを読み取り格納する本実施例では、4バイトの領域とする。
【0045】
米マイク
ロソフト社の基本制御ソフトはディスク装置を使用するにあたり初期化する毎にボリュームシリアル番号と呼称する4バイトのユニークコードを定義する。
【0046】
本実
施例ではこの4バイトの値をS512に書き込むものとする。S516にこの4バイトのユニークコードを示す。S516はディスクの一覧情報を採取したもの
である、ここにS517で表す16進コードがこの4バイトコードである。
【0047】
また、本実施例において、コンピュータシステムのユニークコードのチェックをしたくない場合は常にここにゼロを格納しておくものとする。この場合、どのコ
ンピュータシステムに接続してもゼロとなり暗号鍵のチェックが緩くなる。
【0048】
S513にはS311の製造会社番号、製品番号、シリアル番号を登録するものとする。USB装置は本来の仕様では製造会社番号、製品番号、シリアル番号を
備える。この3つのコードの組み合わせを格納するものとする。
【0049】
通常はこのコードは合計で24バイトである。余裕を持ち64バイトの大きさをS513に割り
振る。
【0050】
S513に登録するUSBの製造会社番号、製品番号は事前に定義しておくものとする。これは異なる会社のUSBを接続した時にその製造会社番号、製品番号
が格納されないようにするための安全装置である。
【0051】
ここでは、USBメモリ装置を接続した時に限り正しくS513に格納するものとする。
【0052】
S514には4バイ
トの生体認証キーを登録する。これは、生体認証の結果出現するS415のボリュームシリアル番号を読み取るものとする。
【0053】
本来生体認証キーを直接読み取るの
が好ましいが、指紋認証の場合は管理者を含め複数の人間が指紋を登録する場合が考えられる。この場合、指紋登録を行った人物毎に異なる生体認証データが出
現する。これより生体認証の結果出現するコードを生体認証コードとして登録する。
【0054】
図6にn個の動的暗号鍵の生成を示す。
【0055】
S610はS510に内包される項目である。
【0056】
S611は8バイトのメモリ領域である。ここにはコンピュータシステム
の時間情報を格納する。基本制御ソフトによるが通常は4バイトないし8バイトで示すシステム秒数を備え、現在の年月日時分秒を一意に決定できる。
【0057】
良くある
システム秒数は1秒単位で西暦1970年1月1日の00:00:00から現在に至るまでの秒数になっている。4バイトの表現力で約130年の幅を確保して
いるので2100年までの日時を表現できるので都合が良い。
【0058】
S611は暗号化を行う時にはその時の現在時間を格納する。この時間情報は、本変換プログラム
が変換したデータを記憶装置に保存する時に、必ず暗号鍵に使用した時間情報を同時に保存するものとする。
【0059】
この保存作業は本変換プログラムを呼び出す上位の
役割であり、本プログラムに属さないことを明記する。また、この時間情報がないと暗号化したデータを復号できない。ゆえに暗号化と復号化をセットで行うう
えで上位のプログラムないし装置は必ず時間情報を保存する必要があることを明記する。
本実施例ではS611は8バイトの領域を確保するものとする。
【0060】
S611は復号化を行う時には、暗号化が行われた時の時間を格納する。時間情報はかならず上位プログラムにより暗号化したデータ一つずつに存在している。
その時間情報をここに登録する。
【0061】
S612にはゼロから始る連続番号を格納する。いま、S613という暗号化もしくは復号化したいデータを与えた時、S614のようにして得られる数字が
S612である。本実施例ではRND_SIZEバイト単位で連続番号を振る。S613の最初のRND_SIZEの時ゼロ、次のRND_SIZEの時1、以
後一つずつ数字が上がっていく。S612は本実施例では4バイトの領域を持つものとする。
※RND_SIZEは2048バイトを示すものとする。
【0062】
RND_SIZEは、任意の大きさで良いのであるが、使用する疑似乱数が保障する重複の無い乱数表の幅に納まる事が好ましい。本実施例ではメルセンヌ・ツ
イスタを使用しており、これの安全な幅が2496バイトなので16進法で切りの良い2048バイトとしている。この幅は使用する疑似乱数発生装置の特性に
合わせて最良の値を選ぶべきものである。
【0063】
S620は空き領域である。全体の領域であるS510が624ワード(2496バイト)確保している。静的決定暗号鍵およびS611,S612を割り振っ
た残りの領域である。
【0064】
本実施例ではこの領域にS611とS612を繰り返し保存する。S620はゼロでクリアしていても本発明は問題なく動作する。本実施
例で、このように値を設定するのは、S510の取る値をできるだけ、かく乱し、より品質の良い乱数の生成をための工夫である。
【0065】
図7に実際に行う暗号化復号化の考え方を示す。S710は暗号化ないし復号化を行いたいデータである。Nバイトの長さを持つものとする。S711は
S510をシードとして生成したRND_SIZEの大きさを持つ乱数表である。先頭からの位置によりS612に格納する連続番号が変化しているので常に異
なる乱数表を生成している。
【0066】
S712は排他的論理和を取った結果である。S710とS711の排他的論理和により生成する。S710が平文の時は暗号化した結果がS712になる。
S710が暗号文の時は復号化し解読した結果がS712となる。
【0067】
図8に本実施例の入出力を示す。
本発明による暗号復号化装置を実現したプログラムの入出力を表したものである。
本実施例では暗号化と復号化は同一の処理を行うので以後、単に変換と記載する。
ここでアドレス型メモリ領域を定義しておく。アドレス型メモリ領域コンピュータシステムおよび携帯端末において実装するメモリ領域を参照する位置を格納す
る物であり、そのコンピュータシステムにより変化する。
【0068】
本実施例は米マイクロソフト社の32ビットの基本制御ソフトで試作したので4バイトである。
【0069】
S810はアドレス型メモリ領域である。その内容としてS510の存在するメモリアドレスを格納する。
【0070】
S811はアドレス型メモリ領域である。その内容は、暗号化もしくは復号化したいデータを格納したS814の存在するメモリアドレスを格納する。
【0071】
S814は暗号化もしくは復号化するデータを格納したテーブルである。
本プログラムは暗号復号化を行う部品である。実際にはプログラムを利用する上位のプログラムが別途存在する。上位プログラムは変換を行うときS817によ
り表すデータの全体像を持つ。
【0072】
S814はS817の任意の写像であるものとする。上位プログラムはS817の変換したい場所をメモリ上のテーブルの形で確保格納しこのメモリアドレスを
S811に格納するものとする。
【0073】
S815はS814に格納したデータがS817のどこから始るデータかを表す位置情報である。先頭であればゼロである。100バイト目であれば100であ
る。
【0074】
S816はS814に格納したデータが何バイトであるかを表す情報である。
【0075】
S812は8バイトのメモリ領域である。内容としてS815を格納する。32ビットの基本制御ソフトにおいて通常は4バイトで十分であるが、本プログラム
は余裕を持ち8バイトとする。S817単純にファイルもしくはメモリ上の小さなデータであれば4バイトで十分である。しかし、ハードディスクを丸ごと変換
する場合がある。この場合変換するデータ全体は数十Gバイトになる。これより8バイトとしている。
【0076】
S813は4バイトのメモリ領域である。内容としてS816を格納する。
【0077】
図9に本実施例の制御の流れを示す。
【0078】
本出願の流れ図の特殊記号はコンピュータ言語であるC言語に準拠する。
%・・・剰余計算を示す記号である。
^ ・・・排他的論理輪を示す記号である。
++ ・・・インクリメント、値を一つ増加を意味する記号である。
[n ] ・・・配列を意味する記号である。nは配列の添字である。
* ・・・アドレス型変数の前に記す場合は、変数の示すアドレス上の値を示す。
【0079】
図8により入出力を定めたプログラムの実際の流れを示す。
【0080】
S910は初期化処理を行なっている。ここでは、4バイトのサイズを持つ変数no、4バイトのサイズを持つ変数ipおよびRND_SIZEの大きさを持つ
配列変数rnd_tblを確保している。no,ip,rnd_tblの内容は初期化する必要はない。
【0081】
S911では、noにS812が格納する値をRNT_TBLで割り算した結果を格納している。これにより、変換に必要な乱数テーブルの連続番号を算出して
いる。
【0082】
S912はS812の剰余を求め、ipに代入している。
【0083】
S913では、S612にnoを代入している。つまり、ここでS612に連続番号を格納している。S612は、S810が格納しているメモリアドレスから
その位置を算出できる。
【0084】
S1010では、メルセンヌ・ツイスタにより乱数表を発生させている。詳細は図10にて説明する。
【0085】
S915はループである。初期値として変数i=ゼロとし、一回りするごとにiを1加算する。そして、iがRND_SIZE回ループする。つまりi=
0...i=RND_SIZE-1の値の間でループを繰り返す。
【0086】
S916は制限子である。ipは、現在使用している乱数表rnd_tblの参照位置を示す。ipがRND_SIZE以下の値を取る時、正しく乱数表を参照
している。オーバーした時は乱数表を使い切ったときである。
【0087】
S917は、実際の変換処理を行っている。S811の示すメモリアドレスの上からi番目の要素とrnt_tblの上からip番目の要素の排他的論理和をと
り、代入している。代入先はS811の示すメモリアドレスの上からi番目の要素である。
【0088】
S918ではipを1つ増加している。これにより、利用する乱数の要素を次にずらしている。
【0089】
S919は連続番号を1つ増加している。この処理はいままで使っていた乱数を使い切った時の処理である。次の乱数表を生成の準備を行っている。
【0090】
S920はipにゼロを代入している。新しい乱数を生成するにあたり使用開始位置を示すipをクリアしている。
【0091】
S921では、S612にnoを代入している。つまり、ここでS612に連続番号を格納している。
【0092】
図10に乱数生成プログラムの入出力を示す。
本発明が内蔵した乱数生成プログラムの入出力を表したものである。
【0093】
S1010はアドレス型メモリ領域である。その内容としてS510の存在するメモリアドレスを格納する。
【0094】
S1011はアドレス型メモリ領域である。その内容は、乱数表の存在するメモリアドレスを格納する。この乱数表は図9に記載のrnt_tblのことであ
る。S910で確保したRND_SIZEの大きさを持つメモリ領域である。
【0095】
図11に乱数生成プログラムの処理を示す。
【0096】
S1110は初期化処理を行う。ここでは、内部で使用する変数を確保している。
noは4バイトサイズの変数である。
ptrはアドレス型変数であり、4バイト単位のメモリを参照する目的で確保する。
iは4バイトサイズの変数である。
【0097】
また、メルセンヌ・ツイスタが使用する内部作業メモリもここで初期化する。これは、内部作業メモリの初期値が不定のためにメルセンヌ・ツイスタの生成する
乱数が不定になることを避けるためである。
【0098】
S1111では乱数のシードを与えている。メルセンヌ・ツイスタが公開している標準関数init_by_array()を実行している。この関数には、
S510をシード発生の鍵として与えている。同関数はシード発生の鍵となるデータを格納しているメモリ領域のアドレスとその長さを指定して呼び出すもので
ある。ここではS510の開始アドレスとその領域の長さを与えている。
【0099】
S1112では変数noにRND_SIZEを4で割った値を代入している。メルセンヌ・ツイスタは1ワードつまり4バイト単位で乱数を発生さ
せる。従いこ
こで、RND_SIZEを充填するのに必要な乱数の発生回数を算出している。
【0100】
S1113は、変数ptrにS1011の値を代入している。
【0101】
S1114はno回ループ処理をしている。
【0102】
S1115は、乱数を発生させている。メルセンヌ・ツイスタの公開関数genrand_int32()を実行している。この関数の帰り値は4バイトの乱数
である。この4バイトの乱数をptrの示すアドレス領域に代入している。一度に4バイトの乱数を格納している。
【0103】
S1116は任意のブラックボックス処理である。この処理はなくても良い。
メルセンヌ・ツイスタが生成する乱数をそのまま採用すると、アルゴリズムが公開しているので暗号用乱数としては好ましくない。これを是正するために任意の
変形をかけるのが好ましい。その変形処理をS1116で行っている。
【0104】
S1116がなくても問題なく動作する。しかし入れることにより信頼性を上げることができる。
【0105】
S1117は変数ptrを増加している。ここでは、ptrの示すメモリアドレスの値を4バイト分加算している。変数ptrは4バイトを参照するアドレス型
変数である。ゆえに、指示する値を一つ増やすと言うことは次の4バイトの領域を示すこととなり、実際にはメモリアドレスが4つ程増加する。
表記上1加算であるが、バイト換算では4加算であることをここに付記する。
【0106】
図12に固有機器のユニークコードを取得するプログラムを記述する。
本実施例は暗号化復号化を行う装置であり、固有機器のユニークコードは上位プログラムないし上位装置にて取得を行い、S513に格納するものである。ここ
では、試作にあたり実装した上位プログラムのユニークコードを取得するプログラムを記述する。ここにおいてユニークコードを取得の取得が可能であることを
証明し、その機構を表す。
固有機器として指紋認証機能内蔵のUSBメモリ装置の認識とその固有コードの識別を行っている。
【0107】
S1220はUSB機器の持つ、製造会社コード、製品番号、シリアル番号を表にして表したものである。16進4バイトの製造会社を識別するコードを持つ。
【0108】
同様に16進4バイトのの製品番号を持つ。そして、16バイトのシリアル番号を持つ。本試作ではシリアル番号の桁数は余裕を持たせ54バイ
ト、合計で64
バイトとしている。
【0109】
S1221は、この会社番号、製造番号、製品番号を米マイクロソフト社の32ビットの基本共通ソフトのレジストリに登録している文字列を参考に表してい
る。
【0110】
基本共通ソフトにより表現方法は異なるが、このように登録して管理している。各コードをアスキー文字列に変換して一つの文字列に連結して管理してい
る。
基本共通ソフトはこのようにして現在接続しているUSB装置のユニークコードを取得できるようにしている。
※レジストリは基本共通ソフトが管理用に内蔵しているデータベースである。
【0111】
S1210は初期化を行っている。当プログラムが終了し、呼び出しもとの上位プログラムに渡す値をゼロクリアするものとする。
【0112】
S1211は永久ループである。
【0113】
S1212は基本共通ソフトから現在接続しているUSB機器のユニークコードを取得する。
本試作では初回は最初の接続機器を取得。ループして2回目には2つめの接続機器を取得。これを繰り返し接続機器の取得を全て行うと取得失敗の動作をする。
【0114】
S1313の接続機器の有無を判定する。なしの場合は、プログラムを終了する。この時、S1210で設定しているゼロクリアしたメモリ領域を上位プログラ
ムに返り値として格納している。
【0115】
S1214では、取得したS1221のごとき値の会社番号を判定する。
【0116】
事前に本プログラムに書き込んでいる製造会社コードとの一致を判定する。プログラム
に組み込む製造会社コードは本プログラムを製造販売する時に純正指定もしくは対応する会社のコードを埋め込むものとする。
【0117】
S1215では、取得したS1221のごとき値の製品番号を判定する。事前に本プログラムに書き込んでいる製品番号コードとの一致を判定する。プログラム
に組み込む製品番号コードは本プログラムを製造販売する時に純正指定もしくは対応する会社のコードを埋め込むものとする。
【0118】
S1216において、製造会社コード、製品番号コード、シリアル番号を帰り値に格納する。
【0119】
本プログラムの機構を利用することによりS513に接続機器のユニークコードを登録し、本実施例の接続機器を利用した暗号鍵の使用を行う。

【実施例2】
【0120】
これは乱数表を発生する装置およびプログラムである。
実施例1における図10、図11で説明しているものである。本プログラムは請求項1、請求項2、請求項3をみたした独立した機構と言えるので、ここに実施
例2として上げる。
【0121】
詳細はすでに実施例1の中で説明しているので記載しない。
【実施例3】
【0122】
これは乱数表を発生する装置およびプログラムである。
実施例1の乱数の生成方法を請求項12にして実現したものである。
実施例1に比し、高速である特徴を持つ。
【0123】
図13に本実施例の変換の簡単な概要を説明する。
S1310,S1311,S1312はRND_SIZEの乱数表である。この乱数表は大きさはそれぞれ任意で良いが管理しやすいという理由でここでは
RND_SIZEとしている。
【0124】
また3つ用意しているのも本来はn個となり任意で良いがRND_SIZEの大きさから現実的な数としと3を割り出している。
【0125】
今、S1310,S1311,S1312にはそれぞれ異なる乱数表を格納しているものとする。
【0126】
S1313は変換を行いたい任意のデータである。
【0127】
S1319は変換を行った結果のデータである。
【0128】
S1314はS1310,S1311,S1312の排他的論理和を取り生成したRND_SIZEの大きさを持つ乱数表である。
S1314の最初の1バイトは、S1310,S1311,S1312それぞれの最初の1バイトと排他的論理和の結果である。S1314の各要素は、
S1310,S1311,S1312の同じ位置の要素と排他的論理和の結果である。
【0129】
S1315は、S1314と同一の工程で生成した乱数表である。ただし、生成する前に、S1314のリングを1バイト回転させた上で生成したものである。
この回転は時計、反時計どちらでも良い。ここでは反時計回りに一バイトしたものとする。
【0130】
S1316、S1317は同様にしてS1311を1バイト回転させてから生成している。このようにして乱数を生成していくとRND_SIZE
回繰り返すとS1311は循環して同じ乱数を生成するようになる。この時、S1312を1バイト反時計回りで回転させる。
【0131】
このようにして、n個の乱数表の組み合わせで長周期の乱数を生成できる。ここでは、RND_SIZEが3個あるので、2048×2048×2048=
8,589,934,592つまり約8Gバイトで循環して元に戻る、つまり周期を持つ乱数表を作ることが出来る。
一つの変換したいデータに対して個別に生成するのであれば8Gバイトは十分な大きさである。
【0132】
S1310,S1311,S1312は、S1319一つごとにそれぞれ乱数表を生成できると最も好ましい。しかし、S1311,S1312を事前に生成し
ておき、S1310だけS1319一つごとに生成しても品質の良い乱数を生成できる。
【0133】
本実施例はこの方式を採用した暗号化復号化を行うプログラムである。暗号化と復号化を行う装置を提供するものである。

図14に本実施例の入出力を示す。

本発明による暗号復号化装置を実現したプログラムの入出力を表したものである。
本実施例では暗号化と復号化は同一の処理を行うので以後、単に変換と記載する。
【0134】
ここでアドレス型メモリ領域を定義しておく。アドレス型メモリ領域コンピュータシステムおよび携帯端末において実装するメモリ領域を参照する位置を格納す
る物であり、そのコンピュータシステムにより変化する。本実施例は米マイクロソフト社の32ビットの基本制御ソフトで試作したので4バイトである。
【0135】
S1410はアドレス型メモリ領域である。その内容は、S1416のメモリ上のアドレスを格納する。
【0136】
S1411はアドレス型メモリ領域である。その内容は、S1417のメモリ上のアドレスを格納する。
【0137】
S1412はアドレス型メモリ領域である。その内容は、S1418のメモリ上のアドレスを格納する。
【0138】
S1413はアドレス型メモリ領域である。その内容は、暗号化もしくは復号化したいデータを格納したS814の存在するメモリアドレスを格納する。
【0139】
S1414は8バイトのメモリ領域である。内容としてS815を格納する。32ビットの基本制御ソフトにおいて通常は4バイトで十分であるが、本プログラ
ムは余裕を持ち8バイトとする。S817単純にファイルもしくはメモリ上の小さなデータであれば4バイトで十分である。しかし、ハードディスクを丸ごと変
換する場合がある。この場合変換するデータ全体は数十Gバイトになる。これより8バイトとしている。
【0140】
S1415は4バイトのメモリ領域である。内容としてS816を格納する。
【0141】
S1416はRND_TBLのサイズを持つ乱数表である。図10、図11のプログラムにより格納データを生成するものとする。
【0142】
S1417はRND_TBLのサイズを持つ乱数表である。図10、図11のプログラムにより格納データを生成するものとする。
【0143】
S1418はRND_TBLのサイズを持つ乱数表である。図10、図11のプログラムにより格納データを生成するものとする。
【0144】
図15に本実施例の制御の流れを示す。
図14により入出力を定めたプログラムの実際の流れを示す。
【0145】
S1510は初期化処理を行う。ここでは、4バイト型の変数i,ip1,ip2,ip3,lwkを確保している。
ip1はS1416が示す乱数表を管理する。
ip2はS1417が示す乱数表を管理する。
ip3はS1418が示す乱数表を管理する。
【0146】
S1511はS1416の示す乱数表の最初に使用する位置を算出しip1に代入している。S1511の乱数はRND_SIZEの大きさのバッファを巡回利
用する。従い、RND_SIZEで剰余を取った結果が最初の使用開始点となる。
【0147】
S1512はS1417の示す乱数表の最初に使用する位置を算出しip2に代入している。S1512はS1416を一回循環することで1バイト循環する。
従い、S1314をRND_SIZEで割り算出している。
【0148】
S1513はS1418の示す乱数表の最初に使用する位置を算出しip3に代入している。S1513はS1517が一回循環することで1バイト循環する。
従い、ip2をRND_SIZEで割り算出している。
【0149】
S1514で、ip2をRND_SIZEで剰余を取り、ip2に代入している。S1512でのip2への代入計算は、S1417が1回転以上循環した時の
処置をしていない。ここで、剰余を取り循環した結果を算出している。
【0150】
S1515で、ip3をRND_SIZEで剰余を取り、ip3に代入している。S1513でのip3への代入計算は、S1418が1回転以上循環した時の
処置をしていない。ここで、剰余を取り循環した結果を算出している。S1418が1回転する自体とは、同じ乱数を発生して再利用することを意味する。従い
本来発生してはいけない事態であるが安全装置として存在している。この安全装置が意味をなす時とは8Gバイトを越す変換したいデータが発生した時である。
通常はまず考えられない。
【0151】
S1516では変数lwkにS1414つまり変換データの位置情報を格納している。
【0152】
S1517はループ処理をする。S1415に格納されている値だけループする。変数iをループカウンタとし、i=0に始まりループごとにiを一つずつ増加
させながらループする。
【0153】
S1518とS1519で、3つの乱数表より変換情報を生成している。
具体的にはS1518で、S1416の上でip1の示す値を要素番号とする値と、S1417の上でip2の示す値を要素番号とする値との排他的論理輪を
wkに格納する。
【0154】
S1519では、wkとS1318の上でip3の示す値を要素番号とする値との排他的論理輪を取りwkに格納している。
【0155】
S1520において、変換したいデータを格納しているS1413の先頭からi番目のデータにwkの排他的論理和を代入している。これにより、S1413
の変換を1バイト行う。
【0156】
S1521では変数ip1の格納値を一つ増加している。乱数表S1416の次に使用する値を設定している。
【0157】
S1522では変数ip2の格納値を一つ増加している。乱数表S1417の次に使用する値を設定している。
【0158】
S1522Aでは変数ip3の格納値を一つ増加している。乱数表S1418の次に使用する値を設定している。
【0159】
S1523では変数lwkの格納値を一つ増加している。lwkは変換したいデータの全体像の中の最初からの位置を示すものである。
【0160】
S1524では、ip1とRND_SIZEと大小比較を行う。
【0161】
S1525では、ip1の格納値がRND_SIZEと同じか大きい時に行う処理である。この判定は乱数表S1416の要素数を超えた時の処理である。
ip1にゼロを設定し、乱数表S1416の使用を先頭に戻している。
【0162】
S1526では、変数ip2の格納値を一つ増加している。乱数表S1417の次に使用する値を設定している。乱数表S1416が一回転したので、
S1417を1バイトずらす処置をここでしている。
【0163】
S1527では、lwkをRND_SIZE2にて剰余求める。結果がゼロの時は、lwkの値はRND_SIZE2の整数倍の時である。この時は、乱数表
S1416,S1417の全組み合わせがなされた時である。有値の時は、乱数表S1416,S1417の全組み合わせが一巡していないときである。
【0164】
S1528では、乱数表S1416,S1417の組み合わせが全組み合わせがなされたとみなし、乱数表S1418を1バイトずらす処理をしている。変数
ip2の格納値を一つ増加している。
【0165】
S1529では、ip2とRND_SIZEと大小比較を行う。
【0166】
S1530では、変数ip2にゼロを代入している。乱数表S1417の使用領域が最後に至ったので初期化して先頭に戻す処理をしている。
【0167】
S1531では、ip3とRND_SIZEと大小比較を行う。
【0168】
S1532では、変数ip3にゼロを代入している。乱数表S1418の使用領域が最後に至ったので初期化して先頭に戻す処理をしている。
【実施例4】
【0169】
これは暗号化復号化を行う簡単なアプリケーションプログラムである。
暗号化には実施例1のプログラムを暗号化装置、復号化装置として使用している。
【0170】
図16に本実施例の処理の流れを記述する。
本実施例は基本制御ソフトより実行し、変換をかけたいファイルを指定する。変換したいファイルを読み変換をし、変換結果をファイルとして記憶装置に保存す
る。
【0171】
本実施例の示すアプリケーションに一回かけると暗号化を行う。生成結果を再度本アプリケーションにかけると復号を行うものである。
【0172】
S1610は初期化を行う。4バイト変数のipとnoとiを確保している。同様にS510として使用するメモリ領域を確保している。同様にファイルの読み
書きの作業用メモリ領域としてdat_tblを確保している。dat_tblはRND_SIZEの大きさである。
【0173】
S1611は変数ipにゼロを代入している。
【0174】
S1612では、S512の記憶領域をゼロクリアしている。S512の領域がメモリの初期値の不定で変換結果が不定になることをここ回避している。
【0175】
S1613で変換元のファイル名を入力している。これは、ディスク上のファイル名パスを対話形式で当アプリケーションの実行者に質問するものである。ここ
で指定したファイルを変換の対象とする。
【0176】
S1614で、変換元のファイル名をバイナリのリードモードでオープン処理する。
【0177】
S1615で、変換先のファイル名をバイナリのライトモードでオープン処理する。オープンする時のファイル名は本実施例では、S1613で取得したファイ
ル名の最後に".enc"という文字列を追加したもので、S1613と同じパスに保存するものとする。
【0178】
S1617では、端末情報を取得している。具体的には本実施例が動くコンピュータシステムの固有情報を取得するものとする。ここでは、S512に
S517を保存するものとする。
【0179】
S1618ではコンピュータシステムに接続している機器情報を取得している。図12のプログラムを実行し、S513に機器情報を登録する。機器が接続して
いない時はここにゼロクリアされた値が入るものとする。
【0180】
S1619では、S1613で取得したファイルのクリエートタイムを取得している。クリエートタイムとはそのファイルを生成した時の時間情報である。この
時間情報をS611に格納する。
【0181】
※ここではクリエートタイムを使用しているがライトタイムつまり、最後に書き込みの発生した時間を使用しても良い。重要なことは暗号鍵として利用する時間
情報を統一することである。本実施例ではクリエートタイムで統一している。
【0182】
S510を構成するこれ以外の暗号鍵はここでは使用しない。未使用の領域にはゼロを値として持つものとする。
【0183】
S1620はiをカウンタとして構成する永久ループである。iの初期値をゼロとし、1回ループするごとにiの値を一つ加算する。
【0184】
S1621では、変換元のファイルをRND_SIZEの大きさだけシーケンシャルにてバイナリモードで読み込みを行う。読み込みデータはdat_tbl
に格納する。ファイルの残りのデータ量がRND_SIZEに満たない時には、存在するだけ読み取るものである。
【0185】
S1622では読み込み1バイトでも成立したかを判定する。1バイトでも読めたときはYesとする。読み込みがゼロバイトの時は全ファイルデータ読み込み
終了とみなしNoに分岐する。
【0186】
S1623で、変数noに、S1621で読み込みに成功したバイト数を代入する。
【0187】
S1624ではS612に連続番号としてiを格納している。乱数のシードを構成するS510の中の動的暗号鍵をここで設定している。
【0188】
S1625では図8、図9で記述の変換プログラムを実行している。S810にはシード情報を格納したS510を格納するものとする。S811には
dat_tblのメモリ開始アドレスを格納するものとする。S812にはipの値を格納するものとする。S813にはnoの値を格納するものとする。
【0189】
S1626では、dat_tblを変換先ファイルにライトする。シーケンシャルでバイナリモードで書き込みを行う。
【0190】
S1627では次のループに備え、ipの値にnoの値を加算している。S1628では変換先ファイルに時間情報をセットする。この時間情報はS1619で
取得した時間情報である。変換先ファイルに対してクリエートタイムとしてこの時間情報を書き込む。
この時間情報をセットすることにより、次回本実施例でこの変換先ファイルを呼んだときに復号ができるのである。
【0191】
S1629では変換元ファイルをクローズ処理する。
【0192】
S1630では変換先ファイルをクローズ処理する。
【実施例5】
【0193】
これは暗号化復号化を行う簡単なアプリケーションプログラムである。
暗号化には実施例3のプログラムを暗号化装置、復号化装置として使用している。
【0194】
図17に本実施例の処理の流れを記述する。
本実施例は基本制御ソフトより実行し、変換をかけたいファイルを指定する。変換したいファイルを読み変換をし、変換結果をファイルとして記憶装置に保存す
る。
【0195】
本実施例の示すアプリケーションに一回かけると暗号化を行う。生成結果を再度本アプリケーションにかけると復号を行うものである。
【0196】
S1710は初期化を行う。4バイト変数のipとnoとiを確保している。同様にS510として使用するメモリ領域を確保している。同様にファイルの読み
書きの作業用メモリ領域としてdat_tblを確保している。
【0197】
dat_tblはRND_SIZEの大きさである。同様に乱数表格納用の配列変数として
rnd_tbl1,rnd_tbl2,rnd_tbl3を確保する。大きさは3つともRND_SIZEである。
【0198】
S1711は変数ipにゼロを代入している。
【0199】
S1712では、S512の記憶領域をゼロクリアしている。S512の領域がメモリの初期値の不定で変換結果が不定になることをここ回避している。
【0200】
S1713で変換元のファイル名を入力している。これは、ディスク上のファイル名パスを対話形式で当アプリケーションの実行者に質問するものである。ここ
で指定したファイルを変換の対象とする。
【0201】
S1714で、変換元のファイル名をバイナリのリードモードでオープン処理する。
【0202】
S1715で、変換先のファイル名をバイナリのライトモードでオープン処理する。オープンする時のファイル名は本実施例では、S1713で取得したファイ
ル名の最後に".enc"という文字列を追加したもので、S1713と同じパスに保存するものとする。
【0203】
S1716では、端末情報を取得している。具体的には本実施例が動くコンピュータシステムの固有情報を取得するものとする。ここでは、S512に
S517を保存するものとする。
【0204】
S1717ではrnd_tbl1に乱数表を格納している。図10、図11のプログラムを実行して乱数を生成rnd_tbl1に格納している。
【0205】
図10のS1010にS510の存在するメモリアドレスを格納する。S1011にrnd_tbl1の存在するメモリアドレスを格納する。そしてこのプログ
ラムを実行してrnd_tbl1に乱数表を得る。
【0206】
S1718ではコンピュータシステムに接続している機器情報を取得している。
【0207】
図12のプログラムを実行し、S513に機器情報を登録する。機器が接続して
いない時はこの領域をゼロクリアした後、先頭の4バイトに16進コードの
FFFFの値が入るものとする。
【0208】
これはゼロであった場合S510の全体の値がS1717で設定したS510と同じとなり、つまり同一のシードを与えること
になり、結果、rnd_tbl1とrnd_tbl2の乱数表の内容が同一となり好ましくない。
【0209】
従い、機器情報を取得できない時にはゼロ以外になるように
FFFFを与えている。
【0210】
S1719ではrnd_tbl2に乱数表を格納している。図10、図11のプログラムを実行して乱数を生成rnd_tbl2に格納している。
【0211】
図10のS1010にS510の存在するメモリアドレスを格納する。S1011にrnd_tbl2の存在するメモリアドレスを格納する。そしてこのプログ
ラムを実行してrnd_tbl2に乱数表を得る。
【0212】
S1720では、S1713で取得したファイルのクリエートタイムを取得している。クリエートタイムとはそのファイルを生成した時の時間情報である。この
時間情報をS611に格納する。ここではクリエートタイムを使用しているがライトタイムつまり、最後に書き込みの発生した時間を使用しても良い。重要なこ
とは暗号鍵として利用する時間情報を統一することである。本実施例ではクリエートタイムで統一している。
【0213】
S510を構成する未設定の暗号鍵はここでは使用しない。未使用の領域にはゼロを値として持つものとする。
【0214】
S1721ではrnd_tbl3に乱数表を格納している。図10、図11のプログラムを実行して乱数を生成rnd_tblに格納している。
【0215】
図10のS1010にS510の存在するメモリアドレスを格納する。S1011にrnd_tbl3の存在するメモリアドレスを格納する。そしてこのプログ
ラムを実行してrnd_tbl3に乱数表を得る。
【0216】
S1722はiをカウンタとして構成する永久ループである。iの初期値をゼロとし、1回ループするごとにiの値を一つ加算する。
【0217】
S1723では、変換元のファイルをRND_SIZEの大きさだけシーケンシャルにてバイナリモードで読み込みを行う。読み込みデータはdat_tbl
に格納する。ファイルの残りのデータ量がRND_SIZEに満たない時には、存在するだけ読み取るものである。
【0218】
S1724では読み込み1バイトでも成立したかを判定する。1バイトでも読めたときはYesとする。読み込みがゼロバイトの時は全ファイルデータ読み込み
終了とみなしNoに分岐する。
【0219】
S1725で、変数noに、S1723で読み込みに成功したバイト数を代入する。
【0220】
S1726ではS612に連続番号としてiを格納している。乱数のシードを構成するS510の中の動的暗号鍵をここで設定している。
【0221】
S1727では図14、図15で記述の変換プログラムを実行している。図14の各入出力への設定を次に記述する。
【0222】
S1410にはrnd_tbl3の存在するメモリ領域開始アドレスを格納する。
【0223】
S1411にはrnd_tbl2の存在するメモリ領域開始アドレスを格納する。
【0224】
S1412にはrnd_tbl1の存在するメモリ領域開始アドレスを格納する。
【0225】
S1413にはdat_tblのメモリ開始アドレスを格納するものとする。S1414にはipの値を格納するものとする。S1415にはnoの値を格納す
るものとする。
【0226】
S1728では、dat_tblを変換先ファイルにライトする。シーケンシャルでバイナリモードで書き込みを行う。
【0227】
S1729では次のループに備え、ipの値にnoの値を加算している。
【0228】
S1730では変換先ファイルに時間情報をセットする。この時間情報はS1713で取得した時間情報である。さらに変換先ファイルに対してクリエートタイ
ムとしてこの時間情報を書き込む。
【0229】
この時間情報をセットすることにより、次回本実施例でこの変換先ファイルを呼んだときに復号ができるのである。
【0230】
S1731では変換元ファイルをクローズ処理する。
【0231】
S1732では変換先ファイルをクローズ処理する。
【実施例6】
【0232】
これは実施例2に請求項4の機構を組み込んだ実施例である。
実施例2において、疑似乱数を発生する装置に対して、常に異なるシードを与える装置およびプログラムを実現している。
【0233】
しかし、内蔵する疑似乱数発生装置に異なるシードを与えた時に発生する乱数にさらに常に異なるかく乱を加え、生成する乱数表毎に重複の可能性を排除するも
のである。
【0234】
実施例2が前提としている乱数発生装置であるメルセンヌ・ツイスタは内部に624ワード(1ワードは4バイト)の内部メモリを備え、非特許文献1によるな
らば、論理上はシードが異なればそのシードに属する624ワード(2496バイト)のうち最低でも1ワードは異なる乱数表を生成することを保障している。
つまり、2496バイト単位で異なる乱数表を生成を保障している。
【0235】
これより、2496以下の小さな表においては部分的に同一の乱数表が出現する可能性を示している。
本実施例は2496バイト単位以下の小さな乱数表の範囲で、時系列変化に従い重複の発生しないかく乱を行い、乱数表内の部分的な重複の可能性を排除する機
構を組み込んだものである。
【0236】
図19にこの機構をプログラムにより実現したものである。図11のS1116の処理を抽出し示した物が図19である。
【0237】
本実施例は実施例2のS1116に図19のプログラムを組み込み実現したものである。
【0238】
S1910はループカウンタiの示す値の3の剰余を調べている。 そして、剰余ゼロの場合はS1911へ分岐。剰余1の場合はS1912に分岐。剰余2の
場合はS1913に分岐する。
【0239】
S1911ではS611つまり時間情報の上位4バイトと変数ptrの示すアドレスのメモリの格納値4バイトと排他的論理和をとり、ptrの示すアドレスに
格納している。
【0240】
S1912ではS611つまり時間情報の下位4バイトと変数ptrの示すアドレスの4バイトと排他的論理和をとり、ptrの示すアドレスに格納している。
【0241】
S1913ではS612つまり4バイトの連続番号と変数ptrの示すアドレスの4バイトと排他的論理和をとり、ptrの示すアドレスに格納している。
【0242】
以上により、12バイト(4バイト×3)単位でかく乱をかけている。この12バイト単位のかく乱は時系列変化の中で重複のないかく乱を行うことが出来る。
【0243】
結果、乱数発生装置が生成した乱数に対して、さらに3バイト単位の間隔で重複のない乱数を生成する事ができる。
【図面の簡単な説明】
【0244】
【図1】擬似乱数の周期を示した説明図である。
【図2】データの暗号化を示した説明図である。
【図3】実施例の物理的全体像を示した図である。
【図4】指紋認証記憶装置の説明を示した図である。
【図5】n個の静的決定暗号鍵を説明した図である。
【図6】動的暗号鍵の説明した図である。
【図7】実際の暗号化復号化の考え方を説明した図である。
【図8】暗号化復号化装置および関数fの入出力を説明した図である。(実施例1)
【図9】変換プログラムの処理を説明した図である。(実施例1)
【図10】乱数表生成プログラムの入出力を表した説明図である。(実施例2)
【図11】乱数表の発生プログラムを表した説明図である。(実施例2)
【図12】固有機器のユニークコードを取得するプログラムの説明図である。
【図13】n個の乱数表による乱数表の合成を示した説明図である。
【図14】暗号化復号化プログラムの入出力を示した説明図である。(実施例3)
【図15】変換プログラムの流れを示した説明図である。(実施例3)
【図16】変換アプリケーションを示した説明図である。(実施例4)
【図17】変換アプリケーションを示した説明図である。(実施例5)
【図18】ホストとなる装置を示した説明図である。
【図19】S1116処理の実施例を示した説明図である。(実施例6)
【符号の説明】
【0245】
S1811…中央処理装置(CPU)。
S1812…ROMBIOS。
S1813…メモリ装置。
S1814,S1817,S1818…システムバス。
S1815,S1816…アダプタ。
S1820…ホストI/F。
S1830…HDD。
S1819…リーダライタ。
S1840…USB装置。



【特許請求の範囲】
【請求項1】
疑似乱数の発生機構を備え、一つのシードで生成する乱数列(以後乱数表と呼称する)に対して使用できる上限の要素番号nを定め、n個目以降の乱数表の要素
を使用しないように制限する機構を備える事を特徴とした乱数表発生装置。
【請求項2】
疑似乱数の発生機構を備え、暗号鍵をn個生成して格納もしくは保存する機構を備え、このn個の暗号鍵をシードとして乱数表を生成する事を特徴とする請求項
1の装置。および乱数表発生装置。
【請求項3】
時間情報を暗号鍵として格納する機能を備えた請求項2の装置。
【請求項4】
生成した乱数表に対して、時間情報を任意の演算をかけることを特徴とする請求項3の装置。

【請求項5】
請求項1、請求項2、請求項3、請求項4のいづれかの機構を内蔵し実現したデータの暗号化復号化装置であること。
加えて、暗号化および復号化するデータ毎に暗号化に使用する疑似乱数表を個別に生成し、一度使用した乱数は以後使わない機構を備え、乱数表を使いきった時
もしくは一定量使った時点でその乱数表を廃棄し異なるシードにより新しい乱数表を作る機構を備えることを特徴とする装置。
【請求項6】
暗号化および復号化を行うデータ単位で時間情報を格納する機能を備えた事を特徴とし、暗号化と復号化に使用する暗号鍵の一つにこの時間情報を使用できるよ
うにした事を特徴とする請求項5の装置。
【請求項7】
メルセンヌ素数を使用した疑似乱数発生機構もしくはメルセンヌ・ツイスタによる疑似乱数発生機構を備えた事を特徴とする請求項1,2,3,4,5,6の装
置。
【請求項8】
携帯端末およびコンピュータシステムに接続している機材の固有のユニーク情報を読む機構を備え、その機材のユニーク情報を暗号鍵の一つとして利用すること
を特徴とする請求項1,2,3,4,5,6,7の装置。
【請求項9】
携帯端末およびコンピュータシステム自体の固有のユニーク情報を読む機構を備え、そのユニーク情報を暗号鍵の一つとして利用することを特徴とする請求項
1,2,3,4,5,6,7の装置。
【請求項10】
生体データを読み取る装置を備え、読み取った生体情報を暗号鍵とする特徴とする請求項1,2,3,4,5,6,7の装置。
【請求項11】
手動ないし自動にて設定したデータを暗号鍵の一つとして設定する機能を備えることを特徴とする請求項1,2,3,4,5,6,7の装置。

【請求項12】
請求項1記載の疑似乱数の発生機構を主とする疑似乱数機構とし、これにより生成したn個の乱数表の要素の組み合わせにより新しい乱数系列を生成する高速の
補助疑似乱数機構を備えた事を特徴とする請求項2の装置。
【請求項13】
全ての請求項を備える事を特徴とするアプリケーションソフトウェアおよび基本制御ソフト(OperatingSystem)および基本制御ソフトのファイ
ル管理装置に組み込み作動するソフトウェア。
【請求項14】
全ての請求項を備える事を特徴とするROM若しくはRAM及び外部記憶媒体への組み込み式制御基盤、制御ソフト及び制御データ保護を特徴とする装置。
【請求項15】
読み取った生体データを複数の記憶装置に登録する機能を備え、認証で読み取った生体データが複数件のどれかに一致した場合、最初に登録した生体データを暗
号鍵とする特徴とする請求項1,2,3,4,5,6,7の装置。
【請求項16】
読み取った生体データを複数に記憶装置へ登録する機能を備え、複数の生体データのただ一つを暗号鍵として指定する機構を備え、記憶装置に登録する時にただ
一つ認証で読み取った生体データが複数件のどれかに一致した場合、ただ一つの暗号鍵を生体データの暗号鍵とする特徴とする請求項1,2,3,4,5,6,
7の装置。
【請求項17】
組込機器、家電品、携帯機器、小型情報端末、小型ゲーム端末機器およびコンピュータシステム自体の固有のユニーク情報としてその内蔵するディスク装置のシ
リアル番号を取得することを特徴とした請求項9の装置。
【請求項18】
暗号化したデータを記憶装置に保存する処理を、基本制御ソフトのファイル管理システムによりファイルとして保存するものとし、時間情報の保存を、そのファ
イルの生成用もしくは書き込みの時間情報として保存することを特徴とした請求項4の装置。

【請求項19】
暗号鍵として使用する時間情報が同一の時に時間情報に対する枝版として連続番号に代表されるユニークコードを格納する機能を備え、異なるシードを生成でき
るようにした事を特徴とした請求項3の装置。
【請求項20】
時間情報を暗号鍵としてn個格納する機能を備えた請求項3の装置。
【請求項21】
全ての請求項を備える事を特徴とする通信自体の情報を暗号化及び複合化させる機能を備えた装置。

【図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

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2009−258141(P2009−258141A)
【公開日】平成21年11月5日(2009.11.5)
【国際特許分類】
【出願番号】特願2006−181941(P2006−181941)
【出願日】平成18年6月30日(2006.6.30)
【出願人】(306039647)
【Fターム(参考)】