(57)【特許請求の範囲】
【請求項１】
平文と暗号鍵を１文字ずつ数値とみなして加え、その和を並べた列を暗号文とし、復号化においては暗号文を１文字ずつ数値とみなして暗号鍵を１文字ずつ数値とみなした値を引くことにより元の平文を得るストリーム暗号処理を行う可変長鍵暗号システムにおいて、
任意の長さの暗号鍵を生成する可変長鍵生成処理部と、文字列の長さを検出するデータ列長さ検出処理部を備え、
前記可変長鍵生成処理部は、記号または記号列をその長さを上回る長さの記号列に変換する変換規則を保持する変換規則保持部と、初期記号列から前記変換規則を用いた記号変換を繰り返すことにより新たな記号列を生成する変換記号列生成処理部とを備え、
前記平文の暗号化においては、前記データ列長さ検出部が平文の長さを検出し、前記可変長鍵生成処理部が、前記初期記号列と変換規則とを用いて、前記検出された平文長さと同一の長さの記号列を生成し、生成された記号列に基づいて暗号鍵を生成してストリーム暗号処理に利用し、
前記暗号文の復号化においては、前記データ列長さ検出処理部が暗号文の長さを検出し、前記可変長鍵生成処理部が、前記検出された暗号文長さに基づき、前記平文の暗号化で用いられたものと同じ初期記号列と変換規則とを用いることにより、前記平文の暗号化で用いられた前記暗号鍵と同一の暗号鍵を生成してストリーム復号処理に利用する可変長鍵暗号システム。
【請求項２】
平文と暗号鍵を１文字ずつ数値とみなして加え、その和を並べた列を暗号文とし、復号化においては暗号文を１文字ずつ数値とみなして暗号鍵を１文字ずつ数値とみなした値を引くことにより元の平文を得るストリーム暗号処理を行う可変長鍵暗号システムにおいて、
任意の長さの暗号鍵を生成する可変長鍵生成処理部と、文字列の長さを検出するデータ列長さ検出処理部とを備え、
前記可変長鍵生成処理部は、記号または記号列をその長さを上回る長さの記号列に変換する変換規則の組を複数保持する変換規則保持部と、変換される記号列の長さに基づいて前記複数の変換規則の組から一つの変換規則の組を選択する変換規則選択関数処理部と、初期記号列から前記変換規則を用いた記号変換を繰り返して新たな記号列を生成する変換記号列生成処理部と、ハッシュ関数を用いて文字列からハッシュ値を求めるハッシュ関数処理部とを備え、
前記平文の暗号化においては、前記データ列長さ検出部が平文の長さを検出し、前記可変長鍵生成処理部が、前記初期記号列と前記変換規則選択関数処理部により選択された変換規則とを用いて、前記検出された平文長さと同一の長さの記号列を生成し、生成された記号列に基づいて暗号鍵を生成してストリーム暗号処理に利用し、前記ハッシュ関数処理部が前記ストリーム暗号処理に利用された暗号鍵のハッシュ値を生成し、生成した暗号文と併せて前記ハッシュ値を送信し、
前記暗号文の復号化においては、前記データ列長さ検出処理部が暗号文の長さを検出し、前記可変長鍵生成処理部が、前記平文の暗号化で用いられたものと同じ初期記号列と、前記複数の変換規則の組とを用いて、前記検出された暗号文長さと同一の長さの暗号鍵を複数個生成し、生成された前記複数個の暗号鍵のそれぞれに対するハッシュ値を生成し、前記送信されたハッシュ値と等しいハッシュ値を有する暗号鍵をストリーム復号処理に利用する可変長鍵暗号システム。
【請求項３】
前記ハッシュ関数としてあらかじめ送信者と受信者が秘密保持する共通の真性乱数列を用いる請求項２に記載の可変長鍵暗号システム。
【請求項４】
前記変換記号列生成処理部において、前記初期記号列を前記暗号鍵を構成する記号とは異なる種類の記号の初期記号列とし、前記変換規則を前記暗号鍵を構成する記号とは異なる種類の記号に対する記号変換規則とし、当該初期記号列と記号変換規則を用いて記号変換を繰り返し、
前記可変長鍵生成処理部が、前記変換記号列生成処理部により生成された記号列の各記号を前記暗号鍵を構成する記号に変換する第２の記号変換により前記暗号鍵を生成する暗号鍵変換部をさらに備えた、請求項１または２に記載の可変長鍵暗号システム。
【請求項５】
前記変換記号列生成処理部において、前記初期記号列を前記暗号鍵生成に利用される記号と当該記号とは異なるダミー記号との合成初期記号列とし、前記変換規則を前記暗号鍵生成に用いられる記号に対する記号変換規則と前記記号とは異なるダミー記号に対する記号変換規則との合成変換規則とし、
前記合成初期記号列と前記合成変換規則を用いて記号変換を繰り返し、生成した記号列から前記暗号鍵生成に利用される記号のみを抽出して暗号鍵を生成する請求項１または２に記載の可変長鍵暗号システム。
【請求項６】
前記変換記号列生成処理部が、平文の長さに達した生成した変換記号列の長さが既に過去の暗号鍵の生成に利用された長さであれば、記号変換を継続して過去の暗号鍵の生成に利用されていない長さの変換記号列を生成し、当該変換記号列のうち、平文の長さまでの部分を採用して平文の長さを超える部分については廃棄して前記暗号鍵を生成する請求項１〜５のいずれかに記載の可変長鍵暗号システム。
【請求項７】
前記変換記号列生成処理部が、前記平文の長さに達した生成した変換記号列の長さが前記平文の長さを超えるものとなった場合に、当該変換記号列のうち、平文の長さまでの部分を採用して平文の長さを超える部分については廃棄して前記暗号鍵を生成する請求項１〜５のいずれかに記載の可変長鍵暗号システム。
【請求項８】
前記変換記号列生成処理部が、過去に使われた暗号鍵の長さの履歴情報を記録する使用済み鍵リストを備えた請求項６に記載の可変長鍵暗号システム。
【請求項９】
平文と暗号鍵を１文字ずつ数値とみなして加え、その和を並べた列を暗号文とする第１のコンピュータと、前記第１のコンピュータから送信された暗号文を１文字ずつ数値とみなして暗号鍵を１文字ずつ数値とみなした値を引くことにより元の平文を得る第２のコンピュータとを備えた、ストリーム暗号処理を行う可変長鍵暗号システムにおいて、前記第１のコンピュータに暗号化処理を実行させるための処理プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記処理プログラムは、
前記第１のコンピュータへ入力された平文の長さを検出するデータ列長さ検出処理ステップと、
記号または記号列をその長さを上回る長さの記号列に変換する変換規則を保持した前記第１のコンピュータの変換規則保持メモリを参照し、初期記号列から前記変換規則を用いた記号変換を繰り返して前記データ列長さ検出処理ステップにより検出された平文の長さと同一の長さの記号列を生成し、生成された記号列に基づいて暗号鍵を生成し、前記第１のコンピュータのメモリに格納する暗号鍵生成処理ステップと、
前記メモリから暗号鍵を読み出して前記平文へ加えることによりストリーム暗号を生成するストリーム暗号生成処理ステップと、
前記ストリーム暗号を前記第２のコンピュータへ送信する送信ステップとを、
前記第１のコンピュータのプロセッサに実行させることを特徴とする、コンピュータ読取り可能な記録媒体。
【請求項１０】
平文と暗号鍵を１文字ずつ数値とみなして加え、その和を並べた列を暗号文とする第１のコンピュータと、前記第１のコンピュータから送信された暗号文を１文字ずつ数値とみなして暗号鍵を１文字ずつ数値とみなした値を引くことにより元の平文を得る第２のコンピュータとを備えた、ストリーム暗号処理を行う可変長鍵暗号システムにおいて、前記第２のコンピュータに復号化処理を実行させるための処理プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記処理プログラムは、
前記第１のコンピュータから受け取った暗号文の長さを検出するデータ列長さ検出処理ステップと、
記号または記号列をその長さを上回る長さの記号列に変換する変換規則であってかつ前記第１のコンピュータにおいて暗号化の際に用いられたものと同じ変換規則と、前記第１のコンピュータにおいて暗号化の際に用いられたものと同じ初期記号列とを保持した前記第２のコンピュータの変換規則保持メモリを参照し、前記検出された暗号文長さに基づき、前記初期記号列と前記変換規則とを用いることにより、前記平文の暗号化で用いられた前記暗号鍵と同一の暗号鍵を生成し、前記第２のコンピュータのメモリに格納する暗号鍵生成処理ステップと、
前記メモリから暗号鍵を読み出して前記平文から差し引くことにより前記暗号文を復号するストリーム暗号復号処理ステップとを、
前記第２のコンピュータのプロセッサに実行させることを特徴とする、コンピュータ読取り可能な記録媒体。
【請求項１１】
平文と暗号鍵を１文字ずつ数値とみなして加え、その和を並べた列を暗号文とする第１のコンピュータと、前記第１のコンピュータから送信された暗号文を１文字ずつ数値とみなして暗号鍵を１文字ずつ数値とみなした値を引くことにより元の平文を得る第２のコンピュータとを備えた、ストリーム暗号処理を行う可変長鍵暗号システムにおいて、前記第１のコンピュータに暗号化処理を実行させるための処理プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記処理プログラムは、
前記第１のコンピュータへ入力された平文の長さを検出するデータ列長さ検出処理ステップと、
記号または記号列をその長さを上回る長さの記号列に変換する変換規則を複数組保持した前記第１のコンピュータの変換規則保持メモリを参照し、変換される記号列の長さに基づいて前記複数の変換規則の組から一つの変換規則の組を選択する変換規則選択関数処理ステップと、
前記変換規則選択関数処理ステップで選択した変換規則を用いて初期記号列から記号変換を繰り返すことにより、前記データ列長さ検出処理ステップにより検出された平文の長さと同一の長さの記号列を生成し、生成された記号列に基づいて暗号鍵を生成し、前記第１のコンピュータのメモリに格納する暗号鍵生成処理ステップと、
前記メモリに格納された暗号鍵を読み出して前記平文へ加えることによりストリーム暗号を生成するストリーム暗号生成処理ステップと、
前記メモリに格納された暗号鍵のハッシュ値をハッシュ関数により生成し、生成されたハッシュ値を前記ストリーム暗号と併せて前記第２のコンピュータへ送信する暗号送信処理ステップとを、
前記第１のコンピュータのプロセッサに実行させることを特徴とする、コンピュータ読取り可能な記録媒体。
【請求項１２】
平文と暗号鍵を１文字ずつ数値とみなして加え、その和を並べた列を暗号文とする第１のコンピュータと、前記第１のコンピュータから送信された暗号文を１文字ずつ数値とみなして暗号鍵を１文字ずつ数値とみなした値を引くことにより元の平文を得る第２のコンピュータとを備えた、ストリーム暗号処理を行う可変長鍵暗号システムにおいて、前記第２のコンピュータに復号化処理を実行させるための処理プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記処理プログラムは、
前記第１のコンピュータから暗号文とハッシュ値とを受信する受信処理ステップと、
前記第１のコンピュータから受信した暗号文の長さを検出するデータ列長さ検出処理ステップと、
記号または記号列をその長さを上回る長さの記号列に変換する変換規則であってかつ前記第１のコンピュータにおいて暗号化の際に用いられ得るものと同じ変換規則を複数組と、前記第１のコンピュータにおいて暗号化の際に用いられたものと同じ初期記号列とを保持した前記第２のコンピュータの変換規則保持メモリを参照し、前記初期記号列と前記複数組の変換規則とを用いて、前記データ列長さ検出処理ステップにより検出された暗号文の長さと同一の長さの暗号鍵を複数個生成し、前記第２のコンピュータのメモリに格納する暗号鍵生成処理ステップと、
前記複数個の暗号鍵のそれぞれに対するハッシュ値を生成し、前記第１のコンピュータから受信したハッシュ値と等しいハッシュ値を有する暗号鍵を前記メモリから読み出して前記平文から差し引くことにより、前記暗号文を復号するストリーム暗号復号処理ステップとを、
前記第２のコンピュータのプロセッサに実行させることを特徴とする、コンピュータ読み取り可能な記録媒体。
【請求項１３】
前記処理プログラムは、前記暗号鍵生成処理ステップにおいて、前記初期記号列を前記暗号鍵生成に利用される記号と当該記号とは異なるダミー記号との合成初期記号列とし、前記変換規則を前記暗号鍵生成に用いられる記号に対する記号変換規則と前記記号とは異なるダミー記号に対する記号変換規則との合成変換規則とし、前記合成初期記号列と前記合成変換規則を用いて記号変換を繰り返し、生成した記号列から前記暗号鍵生成に利用される記号のみを抽出して暗号鍵を生成する処理を前記プロセッサに実行させる、請求項９〜１２のいずれかに記載の記録媒体。
【請求項１４】
前記処理プログラムは、前記暗号鍵生成処理ステップにおいて、過去に利用された暗号鍵に関する情報を記憶した使用済み鍵リストを参照し、平文の長さに達した生成した変換記号列の長さが既に過去の暗号鍵の生成に利用された長さであれば、記号変換を継続して過去の暗号鍵の生成に利用されていない長さの変換記号列を生成し、当該変換記号列のうち、平文の長さまでの部分を採用して平文の長さを超える部分については廃棄して前記暗号鍵を生成する処理を前記プロセッサに実行させる、請求項９〜１３のいずれかに記載の記録媒体。
【請求項１５】
前記処理プログラムは、前記暗号鍵生成処理ステップにおいて、前記平文の長さに達した生成した変換記号列の長さが前記平文の長さを超えるものとなった場合に、当該変換記号列のうち、平文の長さまでの部分を採用して平文の長さを超える部分については廃棄して前記暗号鍵を生成する処理を前記プロセッサに実行させる、請求項９〜１３のいずれかに記載の記録媒体。
【請求項１６】
前記処理プログラムは、前記暗号鍵生成処理ステップにおいて、過去に使われた暗号鍵の長さの履歴情報を含む使用済み鍵リストを記録したメモリを前記プロセッサに参照させる、請求項１４に記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は暗号システムに関する。例えば、コンピュータネットワークを介した機密性を必要とする通信内容の暗号化および復号化、機密性を必要とする情報の記録メディアへの蓄積時の暗号化および読み出し時の復号化などに利用できる。
【０００２】
【背景技術】
従来の暗号システムとしては、大別して秘密鍵暗号と公開鍵暗号があり、秘密鍵暗号はさらにストリーム暗号とブロック暗号に大別されて多くの方式が考案されている。
【０００３】
秘密鍵暗号方式は、暗号鍵および復号鍵を共に秘密として当事者のみが保持し、暗号文を送る者が暗号鍵を用いて平文を暗号化し、当該暗号文を通信相手に送信し、通信相手は復号鍵を用いて暗号文を復号することにより平文を得る。ここで、暗号システムの強度を考えると、暗号鍵と復号鍵が秘密に保たれていることと、通信される暗号文をモニタする者が当該暗号文を学習して平文を得る規則を簡単に見つけることができないことの２点が重要なファクターとなる。前者の点については、通信当事者間で暗号鍵および復号鍵を共有するため最低１回は必要となる鍵配送を如何に安全に行なうかという点が重要になり、後者の点については、規則性が簡単に見つからないように規則の複雑性を高める工夫や、ハッシュ関数など規則性を持たないものを用いる工夫や、毎回用いる鍵や規則をランダムに変更する工夫など多様なものが開発されつつある。
【０００４】
公開鍵暗号方式は、十分に大きい素数同士の積の値を素因数分解する困難性や、楕円曲線の解を求める困難性を利用し、暗号化のための暗号鍵を公開し、平文を送りたい者は当該公開された要素を用いて暗号文を作成し、正当な者のみが秘密鍵を用いて復号化するものである。公開鍵から秘密鍵を得るのは非常に困難であるという性質を利用してセキュリティを確保し、かつ、秘密鍵暗号方式で問題となる鍵配送自体が不要となり、その点でもセキュリティを向上させたものである。
【０００５】
しかし、公開鍵暗号方式は、暗号化及び復号化に多大な計算時間を要するため、長い（おおよそ１０００文字以上）の平文を取り扱うのは時間コストが非常にかかるため実用には不便である。
【０００６】
従来知られている秘密鍵暗号方式では主にブロック暗号が用いられているが、これも暗号化及び復号化に長い計算時間を必要とし、長い平文を取り扱うのは同様に時間コストが非常にかかるため実用には不便である。また、従来秘密鍵暗号方式において標準的に良く用いられてきたＤＥＳ暗号方式は原理的に解読され得ることが判明し、安全性に問題が生じている。
【０００７】
一方、秘密鍵暗号方式のうちのストリーム暗号方式の中で、真性乱数列を暗号化鍵として用い、過去に１度使った鍵は２度と使わない方式（バーナム暗号方式）は暗号化及び復号化に要する時間も少なく、原理的に解読不可能であるが、暗号文と同じ長さの暗号化鍵をあらかじめ安全な手段で受信者に送っておく必要があるため、鍵配送の問題が生じる。この鍵配送のセキュリティ確保のためのコストがかかるため、この鍵配送コストを度外視しても高度な機密性を必要とする特殊な通信にしか用いられない。
【０００８】
【発明の開示】
上記従来の暗号装置の問題点に鑑み、本発明の可変長鍵暗号システムは、ストリーム暗号方式の鍵生成メカニズムとして、真性乱数列と同程度の乱数性を持ち、即ち解読困難な性質を持ち、平文及び暗号文の長さにより必要な鍵が選択でき、かつ、送信者と受信者があらかじめ共通して保持すべき鍵生成のパラメータは暗号文と比べて小量で済む、セキュリティが高くかつ計算コストが小さい暗号システムを提供することを目的としている。
【０００９】
上記目的を達成するために、本発明の可変長鍵暗号システムにおいては、まず、特定の長さの記号列をあらかじめ与えられた定数個以下しか持たない鍵生成メカニズムを用いる。与えられた定数がｋであるとき、そのような鍵生成メカニズムをｋ疎言語と呼ぶ。
【００１０】
１疎言語の可変長鍵生成装置を利用した本発明の可変長鍵暗号システムは、任意の長さの暗号化鍵を生成する可変長鍵生成処理部と、文字列の長さを検出するデータ列長さ検出処理部を備え、前記平文の暗号化においては、前記データ列長さ検出部が平文の長さを検出し、前記可変長鍵生成処理部が前記検出された平文長さに基づいて特定の長さの暗号化鍵をただ一つだけ生成してストリーム暗号処理に利用し、前記暗号文の復号化においては、前記データ列長さ検出処理部が暗号文の長さを検出し、前記可変長鍵生成処理部が検出された暗号文長さに基づいて前記暗号化に用いた特定の長さの暗号化鍵と同一の暗号鍵をただ一つだけ生成してストリーム復号処理に利用することを特徴とする。
【００１１】
上記構成によれば、本発明の可変長鍵暗号システムにおいて、疎言語を発生させるために必要なパラメータは初期列、変換規則の組、変換規則選択関数のみである。これらはいずれも安全な手段で受信側に送る必要があるが、データ量は少量であるため、従来のストリーム暗号に比べてはるかに鍵配送が容易になる。また、暗号化鍵は使いすてにするため、暗号文のみから平文が解読される恐れはない。また、暗号化鍵生成は記号変換の繰り返しであり並列実行も可能だから少ない計算時間で鍵を生成することが出来る。ひとたび鍵が生成されれば暗号化及び復号化は加算と減算だけで行なわれるため極めて高速である。従って大量のデータの暗号化を高速に行なうことが出来る。
【００１２】
２以上のｋに対してｋ疎言語を可変長鍵生成装置として用いる本発明の可変長鍵暗号システムは、任意の長さの暗号化鍵を生成する可変長鍵生成処理部と、文字列の長さを検出するデータ列長さ検出処理部と、文字列とハッシュ関数値を対応づけるハッシュ関数を備え、前記平文の暗号化においては、前記データ列長さ検出処理部が平文の長さを検出し、前記可変長鍵生成処理部が検出された平文長さに基づいて特定の長さの暗号化鍵を所定数個以下生成してそのうち一つの暗号化鍵を選択してストリーム暗号処理に利用し、前記ハッシュ関数が前記暗号化する平文に対するハッシュ値を生成し、生成した暗号文と併せて前記ハッシュ値を送信し、前記暗号文の復号化においては、前記データ列長さ検出処理部が暗号文の長さを検出し、前記可変長鍵生成処理部が検出された暗号文長さに基づいて特定の長さの暗号化鍵を所定数個以下生成してストリーム復号処理に利用し、前記ハッシュ関数が前記復号された複数の平文それぞれに対するハッシュ値を生成し、前記送信されたハッシュ値と等しい平文を選択することを特徴とする。
【００１３】
上記構成によれば、２以上のｋに対してｋ疎言語を可変長鍵生成装置として用いるときは可能なｋ個の記号列のうち１つを用いて暗号化・復号化処理を行なうため、平文の特徴を小さな正の整数で表わすハッシュ関数を用い、ｋ個の記号列のうち任意に選んだ一つを鍵として暗号化した暗号文とハッシュ関数値を受信者に送り、受信者は暗号文の長さから生成されるｋ個の記号列すべてについて鍵として復号化を行ない、得られた記号列からハッシュ関数値を求め、送られてきたハッシュ関数値と一致したものを平文として選ぶことができる。ハッシュ関数値自体の長さは極く短い（数十ビット程度）ため、従来用いられてきた真性乱数値を鍵とするストリーム暗号を用いても鍵配送の問題は生じない。
【００１４】
乱数列と同じような性質を持つｋ疎言語を発生するために、初期列と変換規則の組及び変換規則選択関数を持つシステムを用いる。ここで初期列は、暗号化鍵と同じ記号からなる短い列である。変換規則は一つの記号を長さ１以上の記号列に変換する規則ですべての記号についてただ一つの規則が与えられている。そのような規則の組をいくつか持つ。変換規則選択関数は記号列の長さから変換規則の組の一つを選ぶ関数である。このシステムにおいて、一つの記号列はその長さから変換規則選択関数によって選ばれた変換規則の組の変換規則を、その記号列のすべての記号にあてはめて得られた記号列に変換される。初期列から上記の変換方式によって次々と記号列を変換して平文の長さと同じかそれ以上の長さの記号列が得られたときにそれを暗号化鍵とする。ここで述べた記号列変換システムは必ずｋ疎言語を発生することが数学的に証明される。変換規則選択関数には任意の複雑な関数を用いることが出来るため、解読を不可能にすることが出来る。
【００１５】
上記のシステムの記号列生成能力をさらに高めるために、前記変換記号列生成処理部において、前記初期記号列を前記暗号化鍵に用いられる記号と当該記号とは異なる種類の記号との合成初期記号列とし、前記変換規則を前記暗号鍵に用いられる記号に対する記号変換規則と前記記号とは異なる種類の記号に対する記号変換規則との合成変換規則とし、前記合成初期記号列と前記合成変換規則を用いて記号変換を繰り返し、生成した記号列から前記暗号鍵に用いられる記号のみを抽出して暗号化鍵を生成する。
【００１６】
また、変換記号列生成処理部において、前記初期記号列を前記暗号化鍵に用いられる記号とは異なる種類の記号の初期記号列とし、前記変換規則を前記暗号鍵に用いられる記号とは異なる種類の記号に対する記号変換規則とし、当該初期記号列と記号変換規則を用いて記号変換を繰り返し、生成された記号列の各記号を前記暗号化鍵に用いる記号に変換する第２の記号変換により前記暗号化鍵を生成する。
【００１７】
このように冗長な記号を用いるために暗号強度が向上する。上記の方式においても必ずｋ疎言語を発生することが数学的に証明される。
【００１８】
以上の暗号方式において、平文の長さと等しい暗号化鍵が生成されないときや平文の長さが既に過去に利用された長さであれば、記号変換を継続して過去の暗号化鍵として利用されていない長さの変換記号列を生成し、当該変換記号列のうち、平文の長さまでの部分を採用して平文の長さを超える部分については廃棄して前記暗号化鍵を生成する。このように一旦使った暗号化鍵の長さを使用済みとして送信者、受信者が共に記録しておくことにより同じ使用済み鍵を二度以上用いることを防止でき、セキュリティ強度向上を図ることができる。
【００１９】
次に、本発明の可変長鍵暗号システムの処理ステップを実現する処理プログラムを記録したコンピュータ読み取り可能な記録媒体は、任意の長さの暗号化鍵を生成する可変長暗号鍵生成処理ステップと、文字列の長さを検出するデータ列長さ検出処理ステップと、指定された暗号鍵を利用してストリーム暗号を生成するストリーム暗号生成処理ステップと、指定された暗号鍵を利用してストリーム暗号を復号するストリーム暗号復号処理ステップと、前記平文の暗号化において、前記可変長暗号鍵生成処理ステップが、前記データ列長さ検出処理ステップにおいて検出した平文長さに基づいて特定の長さの暗号化鍵を生成する処理と、前記ストリーム暗号生成処理ステップが前記可変長暗号鍵生成処理ステップにより生成した暗号鍵を用いてストリーム暗号を生成する暗号鍵生成処理ステップと、前記暗号文の復号化において、前記可変長暗号鍵生成処理ステップが、前記データ列長さ検出処理ステップにおいて検出した暗号文の長さに基づいて前記暗号化に用いた特定の長さの暗号化鍵と同一の暗号鍵を生成する処理と、前記ストリーム暗号復号処理ステップが前記可変長暗号鍵生成処理ステップにより生成した暗号鍵を用いてストリーム暗号を復号する暗号鍵復号処理ステップとを備えた記録媒体であることを特徴とする。
【００２０】
上記記録媒体を提供することにより、当該記録媒体を読み取り可能なコンピュータ装置を用いて本発明の可変長鍵暗号システムを提供することができる。
【００２１】
【発明の実施の形態】
以下、本発明の実施形態にかかる可変長鍵暗号システムについて、図面を参照しながら説明する。
【００２２】
（実施形態１）
実施形態１の可変長鍵暗号システムは、１疎言語の可変長鍵生成装置を利用したものである。ここで、特定の長さの記号列をあらかじめ与えられた定数個以下しか持たない鍵生成メカニズムにおいて与えられた定数がｋであるとき、そのような鍵生成メカニズムをｋ疎言語と呼ぶ。実施形態１では長さが指定されればその長さの暗号鍵を１つ（１通り）のみ生成するものである。
【００２３】
図１は、本発明の実施形態１の可変長鍵暗号システムの構成例である。図１において、１００は送信者側のシステム、つまり平文を暗号化するもの、２００は受信者側のシステム、つまり暗号文を復号化して平文を生成するものである。３００は送信者１と受信者２のデータをやりとりする通信路である。
【００２４】
送信者システム１００には、データ入力部１０、データ列長さ検出処理部２０、可変長鍵生成処理部３０、ストリーム暗号化処理部４０、通信インタフェース５０が備えられている。なお、システムの制御に必要なコントローラ、メモリなどは図示を省略している。
【００２５】
データ入力部１０は、データの入出力を行なう部分である。暗号化にあたっては平文が入力される。
【００２６】
データ列長さ検出処理部２０は、与えられたデータ列の長さを検出する部分である。ここでは平文の長さを検出する。
【００２７】
可変長鍵生成処理部３０は、後述するように初期記号列と変換規則を用いて任意の長さの暗号鍵を生成する部分である。暗号鍵の長さは検出した平文の長さに基づいて生成する。可変長鍵生成処理部３０は、変換規則保持部３１、変換記号列生成処理部３２、使用済み鍵リスト３３、暗号鍵変換部３４を備えている。
【００２８】
変換規則保持部３１が保持する変換規則の例を図２（ａ）に示す。図２（ａ）の例は、説明の便宜上、３つの記号Ａ，ａ，ｂについての極めて簡単な例を示している。図２（ａ）の例の変換規則は、一部の記号“Ａ”については長さ１のものが長さ２（“ａＡ”）の記号列に変換されている。つまり、１回記号変換すると生成される記号列の長さが２倍になることが分かる。変換を多段階行なうことにより生成される記号列の長さを調整することができる。
【００２９】
実際に用いる変換規則としては、記号種類を増やすことができ、またより複雑な変換規則を用意することが可能であることは言うまでもない。また、図２の例の変換規則は、一部の記号について長さを２倍の記号列に変換しているが、一部の記号に対してはそれ以上の３倍にしたりするなどの工夫も可能である。
【００３０】
変換記号列生成処理部３２は、初期記号列を変換規則保持部３１が保持している変換規則を用いて任意の長さの変換記号列を生成する部分である。任意の長さの変換記号列を得るために変換記号列生成処理部３２は、以下の４つの処理段階を持っている。
【００３１】
第１の処理は、変換規則保持部３１が保持している変換規則を用いて初期記号列を変換して平文の長さに達する変換記号列を得る処理である。例えば図２の変換規則と初期記号列Ａを用いれば、図２（ｂ）のように変換記号列が生成されて行く。記号変換が１回実行される度に変換記号列の長さが１ずつ増えて行く。データ列長さ検出処理部２０により平文の長さが検出されているので、当該平文の長さに達するまで変換を繰り返して変換記号列の長さを増やして行く。いまデータ列長さ検出処理部２０により検出した平文の長さを例えば“７”とすると、第１の処理によれば、変換規則を６回行なって長さ７の変換記号列“ｂａｂａｂａＡ”が生成される。
【００３２】
第２の処理は、第１の処理で生成した平文の長さに達した変換記号列が過去の暗号化鍵生成に利用されたものであるか否かをチェックし、既に過去に利用されていれば採用せず、過去に利用されていない記号変換列となるまで記号変換を継続する処理である。そのため、可変長鍵生成処理部３０は、使用済み鍵リスト３３を備え、過去に利用した変換記号列の長さの情報を保持しておき、第２の処理において参照する。本発明の可変長鍵暗号システムでは、暗号強度の向上、セキュリティ確保のため、一度用いた暗号鍵は二度と使わず使いきりにする。使いきりにすることにより、定型的な電子メールなど平文の長さが同じものを頻繁に送っても、毎回使用される暗号鍵が異なるので、当該暗号文通信をモニタする第３者がいても容易には暗号文を解読することができない。この例において、長さ７の変換記号列が既に過去に利用されていた場合、第２の処理において、記号変換が継続される。例えば、次段階の第７回目の変換処理による長さ８の記号変換列が過去に用いられたことのないものであれば、第２の処理により、当該長さ８の記号変換列“ａｂａｂａｂａＡ”が第２の処理の出力とされる。
【００３３】
第３の処理は、第２の処理までで得られている平文の長さに達した変換記号列の長さが平文の長さを超えるものとなっている場合に、変換記号列の長さを平文の長さとなるように調整する処理である。変換規則の作り方により長さが１つきざみで増えるとは限らず、また、上記第２の処理により平文より長い長さ変換記号列が生成される場合もあり、かならずしも平文の長さと丁度同じ長さになるとは限らない。そこで、生成した変換記号列のうち、平文の長さまでの部分を採用し、平文の長さを超える部分については廃棄する処理を行なって平文と同一の長さの変換記号列を得る。この例では、第２の処理までで得られた長さ８の変換記号列から、平文の長さ７に相当する前半部分の７つの記号列を採用し、後半部分の残り１つの記号列を廃棄する。つまり第３の処理により得られた変換記号列は“ａｂａｂａｂａ”となる。
【００３４】
第４の処理は、暗号鍵変換部３４を用いて、変換記号列生成処理部３２が生成した変換記号列を暗号鍵として用いる記号列に変換する処理である。変換記号列生成処理部３２が生成する変換記号列が当初から暗号鍵として用いる記号列であれば、当該第４の処理は必要ない。この例では、暗号鍵を“０”と“１”の２進数列とする。図２（ｃ）に示されるように、Ａ→“１”，ａ→“１”，ｂ→“０”と変換すると暗号鍵“１０１０１０１”が得られる。
【００３５】
変換記号列生成処理部３２は、以上の４つの処理により平文の長さの変換記号列を生成する。可変長鍵生成処理部３０は、変換記号列生成処理部３２が生成した変換記号を暗号鍵として利用する。つまり図２の例では“１０１０１０１”を暗号鍵とする。
【００３６】
ストリーム暗号化処理部４０は、可変長鍵生成処理部３０が生成した暗号鍵を用いて平文からストリーム暗号文を生成する部分である。ここでは、平文の各記号に対して暗号鍵の記号を加えあわせる。平文と暗号鍵の長さは同じなので平文の各文字に対応する暗号鍵の記号が加えられる。図２の例では長さ７の平文に対して対応する暗号鍵の７つの２進数列“１０１０１０１”が各々加えられる。
【００３７】
通信インタフェース５０は、ネットワーク３００を介した通信のインタフェースを提供する部分であり、ストリーム暗号化処理部４０が生成したストリーム暗号文を受信者システム２００に対して送信する。なお、暗号化処理に使用した暗号鍵の長さに関する情報を使用済み鍵リスト３３および後述する受信者システム２００の使用済み鍵リスト３３に内容を同期させつつ保持するために当該情報も通信し合う。
【００３８】
次に、受信者システム２００における復号化処理を説明する。
【００３９】
受信者システム２００は、データ入力部１０、データ列長さ検出処理部２０、可変長鍵生成処理部３０、ストリーム暗号化処理部４０、通信インタフェース５０が備えられている。なお、システムの制御に必要なコントローラ、メモリなどは図示を省略している。
【００４０】
データ入力部１０は、データの入出力を行なう部分である。受信者システム２００では、通信インタフェース５０から受け取った暗号文を受け付ける。
【００４１】
データ列長さ検出処理部２０は、送信者システム１００におけるデータ列長さ検出処理部２０と同様、与えられた文字列の長さを検出する部分である。受信者システム２００においては、受け取った暗号文の長さを検出する。
【００４２】
可変長鍵生成処理部３０は、送信者システム１００における可変長鍵生成処理部３０と同じものであり、初期記号列と変換規則を用いて任意の長さの復号に用いる鍵（つまり暗号鍵と同一のもの）を生成する部分である。受信者システム２００では、暗号鍵の長さは検出した暗号文の長さに基づいて生成する。受信者システム２００の可変長鍵生成処理部３０も同様に、変換規則保持部３１、変換記号列生成処理部３２、使用済み鍵リスト３３、暗号鍵変換部３４を備えている。ここで、変換規則保持部３１が保持する変換規則は、送信者システム１００の変換規則保持部３１が保持する変換規則と同一のものであり、事前に安全な方法で送信者システム１００および受信者システム２００相互に配送されているものとする。また、用いる初期記号列も送信者システム１００が利用するものと同一であり、同様に事前に安全な方法で送信者システム１００および受信者システム２００相互に配送されているものとする。これらの配送には例えば、公開鍵暗号方式などを用いることができる。
【００４３】
ここでは、変換規則保持部３１が保持する変換規則は図２に示したものと同様のものである。送信者システム１００の場合と同様、一部の記号について長さ１のものが長さ２の記号列に変換されており、１回記号変換すると生成される記号列の長さは１つずつ増えてゆく。変換を多段階行なうことにより生成される記号列の長さを調整することができる。
【００４４】
変換記号列生成処理部３２は、初期記号列を変換規則保持部３１が保持している変換規則を用いて暗号文の長さの変換記号列を生成する部分である。暗号文の長さの変換記号列を得るために変換記号列生成処理部３２は、以下の４つの処理段階を持っている。
【００４５】
第１の処理は、変換規則保持部３１が保持している変換規則を用いて初期記号列を変換して暗号文の長さに達する変換記号列を得る処理である。図２（ａ）の変換規則と初期記号列Ａを用いれば、同様に、図２（ｂ）のように変換記号列が生成されて行く。データ列長さ検出処理部２０により暗号文の長さが検出されているので、当該暗号文の長さに達するまで変換を繰り返して変換記号列の長さを増やして行く。ここでは暗号文の長さは“７”であるので、第１の処理によれば、変換規則を６回行なって長さ７の変換記号列が生成される。
【００４６】
第２の処理は、第１の処理で生成した暗号文の長さに達した変換記号列が過去の暗号化鍵生成に利用されたものであるか否かをチェックし、既に過去に利用されていれば採用せず、過去に利用されていない記号変換列となるまで記号変換を継続する処理である。そのため、可変長鍵生成処理部３０は、使用済み鍵リスト３３を備え、送信者システム１００の使用済み鍵リスト３３と履歴情報内容の同期をとりながら、過去に利用した変換記号列の長さの情報を保持しておき、第２の処理において参照する。ここでは、使用済み鍵リスト３３の情報は送信者システム１００の使用済み鍵リスト３３と情報内容の同期が図られており、長さ７の変換記号列が既に過去に利用されていた旨が格納されており、当該記号列を用いることができないと判断される。この第２の処理において記号変換が継続される。次段階の長さ８の記号変換列は使用済み鍵リスト３３には用いられた旨の情報が保持されておらず、第２の処理により、当該長さ８の記号変換列が第２の処理の出力とされる。
【００４７】
第３の処理は、第２の処理までで得られている暗号文の長さに達した変換記号列の長さが暗号文の長さを超えるものとなっている場合に、変換記号列の長さを暗号文の長さとなるように調整する処理である。生成した変換記号列のうち、暗号文の長さまでの部分を採用し、暗号文の長さを超える部分については廃棄する処理を行なって暗号文と同一の長さの変換記号列を得る。図２の例では、第２の処理までで得られた長さ８の変換記号列から、暗号文の長さ７に相当する前半部分の７つの記号列を採用し、後半部分の残り１つの記号列を廃棄する。つまり第３の処理により得られた変換記号列は“ａｂａｂａｂａ”となる。
【００４８】
第４の処理は、暗号鍵変換部３４を用いて、変換記号列生成処理部３２が生成した変換記号列を暗号鍵として用いる記号列に変換する処理である。変換記号列生成処理部３２が生成する変換記号列が当初から暗号鍵として用いる記号列であれば、当該第４の処理は必要ない。この例では、暗号鍵を“０”と“１”の２進数列とする。図２（ｃ）に示されるように、Ａ→“１”，ａ→“１”，ｂ→“０”と変換すると暗号鍵“１０１０１０１”が得られる。
【００４９】
変換記号列生成処理部３２は、以上の４つの処理により暗号文の長さの変換記号列を生成する。可変長鍵生成処理部３０は、変換記号列生成処理部３２が生成した変換記号を暗号鍵として利用する。つまり送信者システム１００と同様、受信者システム２００においても暗号鍵“１０１０１０１”が生成される。
【００５０】
このように、送信者システム１００が用いた暗号鍵と同一の暗号鍵が受信者システム２００においても得られる。
【００５１】
ストリーム暗号化処理部４０は、可変長鍵生成処理部３０が生成した暗号鍵を用いてストリーム暗号文から平文を復号化する部分である。ここでは、ストリーム暗号文の各記号に対して暗号鍵の記号を差し引く。暗号文と暗号鍵の長さは同じなので暗号文の各記号に対応する暗号鍵の記号が差し引かれる。この例では長さ７の暗号文の各文字に対して対応する暗号鍵の７つの記号“１０１０１０１”が各々差し引かれ、平文が得られる。
【００５２】
最後に以上の可変長鍵暗号システムの処理の流れをフローチャートとして表わす。当該フローチャートに記載された処理ステップを用いれば、本発明の可変長暗号処理を実行する方法が理解される。図３に送信者システム１００における処理ステップ、図４に受信者システム２００における処理ステップを記載した。
【００５３】
図３のように、送信者システム１００において、データ入力部１０からの平文の入力処理（ステップＳ３０１）、データ列長さ検出処理部２０による平文の長さ検出処理（ステップＳ３０２）、可変長鍵生成処理部３０による第１の処理（ステップＳ３０３）、第２の処理（ステップＳ３０４）、変換記号列が過去に利用されていた場合の記号変換継続処理（ステップＳ３０５）、変換記号列が過去に利用されていないものである場合の第３の処理（ステップＳ３０６）、第４の処理（ステップＳ３０７）、ストリーム暗号処理部４０によるストリーム暗号化処理（ステップＳ３０８）が実行される。
【００５４】
同様に図４のように、受信者システム２００において、通信インタフェース部５０を介したデータ入力部１０からの暗号文の入力処理（ステップＳ４０１）、データ列長さ検出処理部２０による暗号文の長さ検出処理（ステップＳ４０２）、可変長鍵生成処理部３０による第１の処理（ステップＳ４０３）、第２の処理（ステップＳ４０４）、変換記号列が過去に利用されていた場合の記号変換継続処理（ステップＳ４０５）、変換記号列が過去に利用されていないものである場合の第３の処理（ステップＳ４０６）、第４の処理（ステップＳ４０７）、ストリーム暗号処理部４０によるストリーム暗号復号化処理（ステップＳ４０８）が実行される。
【００５５】
以上の送信者システム１００による暗号化処理および受信者システム２００による復号化処理により、ストリーム暗号方式の暗号鍵を鍵配送することなく、平文の長さ、暗号文の長さに基づいて、暗号鍵を生成することができ、高いセキュリティを実現できる。疎言語を発生させるために必要なパラメータは初期列、変換規則の組のみである。暗号化鍵は使いすてにするため、暗号文のみから平文が解読される恐れはない。また、暗号化鍵生成は記号変換の繰り返しであり並列実行も可能だから少ない計算時間で鍵を生成することが出来る。ひとたび鍵が生成されれば暗号化及び復号化は加算と減算だけで行なわれるため極めて高速である。従って大量のデータの暗号化を高速に行なうことが出来る。
【００５６】
（実施形態２）
実施形態２の可変長鍵暗号システムは、ｋ（ｋは２以上の整数）疎言語の可変長鍵生成装置を利用したものである。実施形態１に比べ、変換規則の組を複数セット用意しておき、記号変換の際に動的に１組の変換規則を選び出して記号変換を行ない、どの変換規則の組を用いたかを識別するための情報として、ハッシュ関数を利用するものである。本実施形態２では、説明の便宜上、２疎言語の可変長鍵生成装置を説明する。
【００５７】
図５は、本発明の実施形態２の可変長鍵暗号システムの構成例である。図５において、１００ａは送信者側のシステム、つまり平文を暗号化するもの、２００ａは受信者側のシステム、つまり暗号文を復号化して平文を生成するものである。３００は送信者１と受信者２のデータをやりとりする通信路である。
【００５８】
送信者システム１００ａには、データ入力部１０、データ列長さ検出処理部２０、可変長鍵生成処理部３０ａ、ストリーム暗号化処理部４０、通信インタフェース５０が備えられている。なお、システムの制御に必要なコントローラ、メモリなどは図示を省略している。
【００５９】
データ入力部１０、データ列長さ検出処理部２０、ストリーム暗号化処理部４０、通信インタフェース５０のそれぞれは、実施形態１で説明した送信者システム１００において同一の番号を付した構成要素と同様のものであり、ここでの説明は適宜省略する。
【００６０】
可変長鍵生成処理部３０ａは、後述するように初期記号列と変換規則を用いて任意の長さの暗号鍵を生成する部分であり、実施形態１と同様、検出した平文の長さに基づいて暗号鍵を生成するものであるが、本実施形態２の可変長鍵生成処理部３０ａは、変換規則保持部３１ａ、変換記号列生成処理部３２ａ、使用済み鍵リスト３３、暗号鍵変換部３４に加え、変換規則選択関数処理部３５およびハッシュ関数処理部３６を備えている。
【００６１】
変換規則保持部３１ａは変換規則を保持する部分であるが、実施形態２では図６に示すように変換規則の組を複数セット保持している。図６の例は、説明の便宜上、１組あたり３つの記号についての簡単な変換規則の組とし、変換規則１と変換規則２の２組のみ保持している例を示している。実際に用いる変換規則としては、記号数を増やすことができ、また、セット数も多く持たせることができることは言うまでもない。図６の例の変換規則は、一部の記号については長さ１のものを長さ２の記号列に変換するものであるが、実施形態１と同様、変換前後で長さを３倍にしたりなどの工夫も可能である。
【００６２】
変換規則選択関数処理部３５は、変換規則保持部３１ａが保持している複数セットの変換規則の組から動的に１組の変換規則の組を選択するものである。変換規則選択関数には多様なものが想定できるが、ここでは、一例として平文の長さが素数の場合には“１”つまり変換規則１を選択し、素数でない場合には“２”つまり変換規則２を選択する関数とする。この関数によれば、原理的には素数の分布が解明されていない現在、変換規則１と変換規則２がどのように選択されるかという傾向を解明することはできない。本実施形態２でも例として平文の長さを７とすると、７は素数なので変換規則選択関数により変換規則１が選択される。
【００６３】
可変長鍵生成処理部３０ａは、実施形態１と同様、選択された変換規則１と初期記号列を用いて変換記号列生成処理部３２ａにより平文の長さに応じた変換記号列を生成する。なお、実施形態２においても変換記号列生成処理部３２ａは、実施形態１で述べた第１の処理〜第４の処理を実行する。この例では選択された変換規則１は実施形態１で説明した図２（ａ）のものと同じであるので生成される記号列も図２（ｂ）に示したものと同様になり、ここでは、変換記号“ａｂａｂａｂａ”が生成されたものとする。可変長鍵生成処理部３０ａは、“１０１０１０１”を暗号鍵とする。
【００６４】
ハッシュ関数処理部３６は、変換記号列生成処理部３２ａにより生成された変換記号列を基にハッシュ関数を計算し、ハッシュ値を求める。セキュリティ強度向上のため、ハッシュ関数としては、規則性がなく見破られにくいものが好ましく、真性乱数列であることが好ましい。この例では、暗号鍵“１０１０１０１”に対してハッシュ値Ｈ１が計算されたものとする。
【００６５】
ストリーム暗号化処理部４０は、実施形態１と同様、可変長鍵生成処理部３０ａが生成した暗号鍵を用いて平文からストリーム暗号文を生成する部分である。ここでは、７文字の平文の各文字に対して対応する暗号鍵の７つの記号“１０１０１０１”が各々加えられる。
【００６６】
通信インタフェース５０は、ネットワーク３００を介した通信のインタフェースを提供する部分である。実施形態２ではストリーム暗号化処理部４０が生成したストリーム暗号文およびハッシュ関数値Ｈ１を受信者システム２００ａに対して送信する。なお、暗号化処理に使用した暗号鍵の長さに関する情報も使用済み鍵リスト３３の内容を同期させるために通信する。
【００６７】
次に、受信者システム２００ａにおける復号化処理を説明する。
【００６８】
受信者システム２００ａは、データ入力部１０、データ列長さ検出処理部２０、可変長鍵生成処理部３０ａ、ストリーム暗号化処理部４０、通信インタフェース５０が備えられている。なお、システムの制御に必要なコントローラ、メモリなどは図示を省略している。
【００６９】
データ入力部１０、データ列長さ検出処理部２０、ストリーム暗号化処理部４０、通信インタフェース５０のそれぞれは、実施形態１で説明した受信者システム２００において同一の番号を付した構成要素と同様のものであり、ここでの説明は適宜省略する。
【００７０】
通信インタフェース５０を介してデータ入力部１０から暗号文とハッシュ値が受信される。この例ではハッシュ値はＨ１である。
【００７１】
可変長鍵生成処理部３０ａは、初期記号列と変換規則を用いて任意の長さの復号に用いる鍵（つまり暗号鍵と同一のもの）を生成する部分であるが、本実施形態では変換規則の組が複数セットあり、どの変換規則の組を用いて生成した暗号鍵が正しいものかを決定する必要がある。
【００７２】
可変長鍵生成処理部３０ａは、変換規則保持部３１ａ、変換記号列生成処理部３２ａ、使用済み鍵リスト３３、暗号鍵変換部３４に加え、ハッシュ関数処理部３６を備えている。ここで、変換規則保持部３１ａが保持する変換規則の組の複数のセットそれぞれは、送信者システム１００ａの変換規則保持部３１ａが保持する変換規則の組の複数のセットそれぞれと同一のものであり、また、ハッシュ関数処理部３６の保持するハッシュ関数は、送信者システム１００ａのハッシュ関数処理部３６が保持するハッシュ関数と同一のものであり、事前に安全な方法で送信者システム１００ａおよび受信者システム２００ａ相互に配送されているものとする。また、用いる初期記号列も送信者システム１００ａが利用するものと同一であり、同様に事前に安全な方法で送信者システム１００ａおよび受信者システム２００ａ相互に配送されているものとする。
【００７３】
変換記号列生成処理部３２ａは、初期記号列を変換規則保持部３１ａが保持している変換規則の組のそれぞれを用いて暗号文の長さの変換記号列を生成する。つまり、この例では、図６に示した変換規則１と初期記号列を用いて暗号鍵１を生成し、また、変換規則２と初期記号列を用いて暗号鍵２を生成する。なお、暗号鍵の生成は実施形態１で説明した第１の処理〜第３の処理を用いる点は同様である。変換規則１と初期記号列から第１の変換記号列“ａｂａｂａｂａ”および第１の暗号鍵“１０１０１０１”が生成され、また、変換規則２と初期記号列から第２の変換記号列“ｂａｂａｂａｂ”および“０１０１０１０”が生成されたものとする。
【００７４】
可変長鍵生成処理部２３０ａは、ハッシュ関数処理部２３６を用いて生成されたそれぞれの暗号鍵からハッシュ値を求める。この例では第１の暗号鍵“１０１０１０１”からハッシュ値Ｈ１を生成し、第２の暗号鍵“０１０１０１０”からハッシュ値Ｈ２を生成したものとする。可変長鍵生成処理部３０ａは、生成したハッシュ値と送信者システム１００ａから送信されたハッシュ値とを比較して、正しいハッシュ値となったものを正しい暗号鍵として決定する。この例では同じハッシュ値Ｈ１となった暗号鍵１“１０１０１０１”が正しい暗号鍵であると決定する。
【００７５】
ストリーム暗号化処理部４０は、可変長鍵生成処理部３０ａが生成した暗号鍵を用いてストリーム暗号文から平文を復号化する。この例では、長さ７の暗号文に対して暗号鍵１の７つの記号“１０１０１０１”が各々差し引かれ、平文が得られる。
【００７６】
以上の送信者システム１００ａによる暗号化処理および受信者システム２００ａによる復号化処理により、ストリーム暗号方式の暗号鍵を鍵配送することなく、平文の長さ、暗号文の長さに基づいて、暗号鍵を生成することができ、また、複数の変換規則の組から動的に１組の変換規則を選択して暗号化を行なうため、より高いセキュリティを実現できる。暗号化鍵は使いすてにするため、暗号文のみから平文が解読される恐れはない。また、復号化においても複数の暗号化鍵の生成は並列実行も可能であり少ない計算時間で暗号鍵を生成することが出来る。暗号化及び復号化は加算と減算だけで行なわれるため極めて高速である。従って大量のデータの暗号化を高速に行なうことが出来る。
【００７７】
（実施形態３）
実施形態３の可変長鍵暗号システムは、変換規則を複数持ち、変換規則選択関数により記号変換の各段階において用いる変換規則を切り替えるものである。変換規則選択関数として記号変換の各段階において変換記号の長さに応じて変換規則を切り替える関数を採用する。本実施形態３では、変換記号の長さが素数か否かにより変換規則を切り替える例を示す。例として１疎言語の可変長鍵生成処理のものを説明する。
【００７８】
実施形態３の可変長鍵暗号システムの構成自体は、実施形態２と同様のもので良く、図５に示すものである。本実施形態３の例は、変換規則選択関数として記号変換の各段階においてその記号列の長さが素数であるか否かを判断して変換規則を切り替えるものである。変換記号列の長さが素数であれば変換規則１を用い、変換記号列の長さが素数でなければ変換規則２を用いる。
【００７９】
変換規則保持部３１ａは、図７（ａ）のように変換規則１と変換規則２の２つの変換規則を保持している。変換規則選択関数処理部３５の持つ変換規則選択関数は、記号変換する各ステップで記号列の長さが素数であれば変換規則１を用い、素数でなければ変換規則２を用いるというものである。
【００８０】
可変長鍵生成処理部３０ａは、その第１の処理において、図７（ｂ）に示すようにＡから始めて、各記号変換の段階において記号列の長さが素数であるか否かにより変換規則を切り替えて記号列を生成してゆく。この例では、平文の長さを７とすると、図７（ｂ）のように初期記号列Ａから生じる変換記号列の長さに基づいて用いられる変換規則が切り替えられてゆき、長さ７の変換記号列“ｂａｂａａｂＡ”が得られる。なお、第２の処理〜第４の処理は実施形態２と同様であるのでここでの詳しい説明は省略する。この例では、使用済み鍵リスト３３の情報を参照して長さ７の変換記号列は過去に利用されていることが検知され、長さ８の変換記号列“ａｂａｂｂａａＡ”を基に“１０１００１１１”に変換され、上位７ビットが暗号鍵“１０１００１１”が生成され、この暗号鍵を基にストリーム暗号が生成される。
【００８１】
受信者システムの可変長鍵生成処理部においても暗号文の長さ７に基づいて長さ７の変換記号列“ｂａｂａａｂＡ”が生成され、使用済み鍵リストの情報を参照して長さ７の変換記号列は過去に利用されていることが検知され、長さ８の変換記号列“ａｂａｂｂａａＡ”を基に“１０１００１１１”が生成され、上位７ビット“１０１００１１”が暗号鍵として生成される。この暗号鍵を基にストリーム暗号が復号され、平文が得られる。
【００８２】
（実施形態４）
実施形態４の可変長鍵暗号システムは、実施形態３と同様、変換規則を複数持ち、変換規則選択関数により記号変換の各段階において用いる変換規則を切り替えるものであり、変換規則選択関数として記号変換の各段階において変換記号の長さに応じて変換規則を切り替える関数を採用したものである。本実施形態４では、変換記号の長さの剰余算の結果により変換規則を切り替える例を示す。例として１疎言語の可変長鍵生成処理のものを説明する。
【００８３】
実施形態４の可変長鍵暗号システムの構成自体は、実施形態２と同様、図５に示すものである。本実施形態４の例は、変換規則選択関数として剰余算を用いるものである。
【００８４】
変換規則保持部３１ａは、図８（ａ）のように変換規則１〜変換規則４までの４つの変換規則を保持している。変換規則選択関数処理部３５の持つ変換規則選択関数は、ｘを記号列の長さとしたとき、３xｍｏｄ５の剰余算の結果の番号の変換規則を用いるというものである。つまり、記号変換が行なわれ、記号列の長さが変化するごとにその長さの剰余算を行ない、得られる数値の番号の規則をもって次段階の記号変換を実行するものである。
【００８５】
可変長鍵生成処理部３０ａは、その第１の処理において、図８（ｂ）に示すように初期記号列ＡＢＣＤから始めて、各記号変換の段階において記号列の長さの剰余算を実行してその結果により変換規則を切り替えて記号列を生成してゆく。第１回目の記号変換は、初期記号列ＡＢＣＤは長さ４であり、３xｍｏｄ５＝１により変換規則１が採用され“ａＡＢＣＤ”が得られる。次に、その変換記号列の長さは５であるので、３xｍｏｄ５＝３となり、変換規則３が採用され“ｂＡＢｃＣＤ”となる。このように変換が進み、長さ７の“ａＡＢｂＣｄＤ”が得られる。なお、第２の処理〜第４の処理は実施形態２と同様であるのでここでの説明は省略する。この例では、使用済み鍵リスト３３の情報を参照して長さ７の変換記号列は過去に利用されていることが検知され、長さ８の変換記号列“ｂＡｂＢａＣｃＤ”が生成され、図８（ｂ）に示すように記号と数値の対応から数値に変換され、数値列“０００１１０１１”が生成される。上位７ビット分が抽出され、暗号鍵“０００１１０１”が得られる。この暗号鍵を基にストリーム暗号が生成される。
【００８６】
受信者システムの可変長鍵生成処理部においても暗号文の長さ７に基づいて長さ７の変換記号列“ａＡＢｂＣｄＤ”が生成され、この例では、使用済み鍵リスト３３の情報を参照して長さ７の変換記号列は過去に利用されていることが検知され、長さ８の変換記号列“ｂＡｂＢａＣｃＤ”が生成され、数値列“０００１１０１１”が生成され、上位７ビットが抽出されて最終的に“０００１１０１”の暗号鍵が生成される。この暗号鍵を基にストリーム暗号が復号され、平文が得られる。
【００８７】
（実施形態５）
実施形態５の可変長鍵暗号システムは、初期記号列を暗号化鍵生成に利用される記号と当該記号とは異なるダミー記号との合成初期記号列とし、変換規則を暗号鍵生成に用いられる記号に対する記号変換規則と当該記号とは異なるダミー記号に対する記号変換規則との合成変換規則とし、合成初期記号列と合成変換規則を用いて記号変換を繰り返し、生成した記号列から暗号鍵生成に利用される記号のみを抽出して暗号化鍵を生成するものである。例として１疎言語のものを説明する。
【００８８】
実施形態５の可変長鍵暗号システムの構成は、図９に示すものである。図９において、１００ｂは送信者側のシステム、つまり平文を暗号化するもの、２００ｂは受信者側のシステム、つまり暗号文を復号化して平文を生成するものである。３００は送信者１と受信者２のデータをやりとりする通信路である。
【００８９】
送信者システム１００ｂには、データ入力部１０、データ列長さ検出処理部２０、可変長鍵生成処理部３０ｂ、ストリーム暗号化処理部４０、通信インタフェース５０が備えられている。なお、システムの制御に必要なコントローラ、メモリなどは図示を省略している。
【００９０】
データ入力部１０、データ列長さ検出処理部２０、ストリーム暗号化処理部４０、通信インタフェース５０のそれぞれは、実施形態１で説明した送信者システム１００において同一の番号を付した構成要素と同様のものであり、ここでの説明は適宜省略する。
【００９１】
可変長鍵生成処理部３０ｂは、変換規則保持部３１ｂ、変換記号列生成処理部３２ｂ、使用済み鍵リスト３３、暗号鍵変換部３４、変換規則選択関数処理部３５、ハッシュ関数処理部３６に加え、ダミー記号除去処理部３７を備えている。
【００９２】
ここで、ダミー記号除去処理部３７は、変換記号列生成処理部３２ｂが生成した変換記号列からダミー記号を除去して暗号鍵生成に関与する記号のみを抽出する部分である。
【００９３】
実施形態５は、初期記号列として、最終的に暗号鍵記号生成に関与しないダミー記号を含むものを利用する。ここでは例として、実施形態４で用いた“ＡＢＣＤ”とするが、ここでＢとｂは最終的に暗号鍵記号生成に関与しないダミー記号とする。また、実施形態５は、変換規則の組を複数セット持つが、ダミー記号に関する変換規則も含むものである。例として、実施形態４と同様、変換規則保持部３１ｂは、図１０（ａ）のように変換規則１〜変換規則４までの４つの変換規則を保持しているが、この変換規則において、Ｂおよびｂは最終的に暗号鍵生成に関与しないダミー記号であるものとする。
【００９４】
変換規則選択関数処理部３５の持つ変換規則選択関数は、実施形態４と同様、ｘを記号列の長さとしたとき、３xｍｏｄ５の剰余算の結果の番号の変換規則を用いるというものとする。
【００９５】
可変長鍵生成処理部３０ｂは、実施形態４と同様、その第１の処理において、図１０（ｂ）に示すようにＡＢＣＤから始めて、各記号変換の段階において記号列の長さの剰余算を実行してその結果により図１０（ａ）に示した変換規則を切り替えて記号列を生成してゆく。
【００９６】
本実施形態５では、実施形態２で説明した第２の処理の前に、以下の第５の処理を実行する。第５の処理とは、ダミー記号除去処理部３７により、変換記号列生成処理部３２ｂが生成した変換記号列からダミー記号を除去して暗号鍵生成に関与する記号のみを抽出し、当該変換記号列の長さが平文の長さに達していなければ、第１の処理を継続して記号変換を実行し、抽出した暗号鍵生成に関与する記号のみから構成される変換記号列の長さが平文の長さに達するまで記号変換を繰り返す処理である。この例では、平文の長さを７とすると、図１０（ｂ）のように第１の処理による変換記号列の長さが７の場合は“ａＡＢｂＣｄＤ”、第５の処理によりダミー記号を除去すれば“ａＡＣｄＤ”と長さは５となるので、第１の処理を継続実行する。長さ８の変換記号列“ｂＡｂＢａＣｃＤ”は第５の処理によりダミー記号を除去すれば“ＡａＣｃＤ”と長さは５となるのでさらに第１の処理を継続実行する。長さ１０の変換記号列“ｃｂＡｃＢｂｃＣｄＤ”まで求めるとダミー記号を除去したものは“ｃＡｃｃＣｄＤ”で長さは７となるので、第５の処理により“ｃＡｃｃＣｄＤ”が得られる。
【００９７】
第２の処理〜第４の処理は、実施形態２と同様である。この例では、使用済み鍵リスト３３には長さ７の変換記号列は使用されていなかったとする。最終的に“ｃＡｃｃＣｄＤ”が暗号鍵を構成する２進数に変換されて暗号鍵“１０１１００１”が得られる。当該暗号鍵をもってストリーム暗号を生成する。
【００９８】
受信者側のシステム２００ｂの可変長鍵生成処理部においても、暗号鍵の長さ７を基に初期記号列“ＡＢＣＤ”から変換を始めて第１の処理から第５の処理を経て、“ｃＡｃｃＣｄＤ”から暗号鍵“１０１１００１”が得られる。当該暗号鍵をもってストリーム暗号を復号し、平文を得る。
【００９９】
（実施形態６）
本発明の可変長鍵暗号システムは、上記に説明した構成を実現する処理ステップを記述したプログラムをコンピュータ読み取り可能な記録媒体に記録して提供することにより、各種コンピュータを用いて構築することができる。本発明の可変長鍵暗号システムを実現する処理ステップを備えたプログラムを記録した記録媒体は、図１１に図示した記録媒体の例に示すように、ＣＤ−ＲＯＭ４０２やフレキシブルディスク４０３等の可搬型記録媒体４０１だけでなく、ネットワーク上にある記録装置内の記録媒体４００や、コンピュータのハードディスクやＲＡＭ等の記録媒体４０５のいずれであっても良く、プログラム実行時には、プログラムはコンピュータ４０４上にローディングされ、主メモリ上で実行される。
【０１００】
なお、本発明の可変長鍵暗号システムは、上記の発明の概念から逸脱することなく、上記の方法及び装置に種々の変更及び変形を成し得ることが理解されよう。従って、本発明は上記実施形態に限定されるものではないことに注意する必要がある。
産業上の利用可能性
本発明は、以上説明したように構成されているので以下に記載されるような効果を奏する。
【０１０１】
本発明の可変長鍵暗号システムでは、平文及び暗号文の長さにより暗号化及び復号化の鍵が選択されるので鍵配送の手数が不要になる。
【０１０２】
暗号化及び復号化装置が共通して持つべき秘密のパラメータは、可変長鍵生成処理部を構成するための初期列、変換規則の組、変換規則選択関数及びハッシュ関数値を暗号化するための真性乱数列である。これらはいずれも少ない情報量で表わすことが出来る。そのため、例えば公開鍵暗号方式を用いて安全かつ手軽に送ることが出来る。
【０１０３】
本発明の暗号システムでは鍵を使いすてにするため、暗号文のみから解読される恐れはない。任意に得られた鍵から可変長鍵生成処理部を推測することも、可変長鍵生成処理部を構成するパラメータの組み合わせが無限にあるため不可能である。従って本暗号システムの安全性は極めて高い。
【０１０４】
可変長鍵生成処理部による鍵生成は記号変換と変換規則選択関数の実行の繰り返しである。変換規則選択関数を計算が容易な関数にしておけば、鍵生成は高速に行なえる。
【０１０５】
ひとたび鍵が生成されれば暗号化は加算、復号化は減算のみで行なわれるため、極めて高速に実行できる。平文、暗号文及び鍵がいずれも０と１より成る場合は暗号化と復号化は共に排他的論理和演算により行なわれ、さらに高速に実行できる。
【０１０６】
暗号化と復号化装置は同じ構成要素、例えば可変長鍵生成処理部を含むため、実際に構築するのが簡単になる。
【図面の簡単な説明】
【図１】  本発明の実施形態１の可変長鍵暗号システムの構成例を示す図
【図２】  本発明の実施形態１の変換規則保持部３１が保持する変換規則の例を示す図
【図３】  本発明の実施形態１の送信者システム１００における処理ステップを示すフローチャート
【図４】  本発明の実施形態１の受信者システム２００における処理ステップを示すフローチャート
【図５】  本発明の実施形態２の可変長鍵暗号システムの構成例を示す図
【図６】  本発明の実施形態２の変換規則保持部３１ａが保持する変換規則の例を示す図
【図７】  本発明の実施形態３の変換規則保持部３１ａが保持する変換規則の例を示す図
【図８】  本発明の実施形態４の変換規則保持部３１ａが保持する変換規則の例を示す図
【図９】  本発明の実施形態５の可変長鍵暗号システムの構成例を示す図
【図１０】  本発明の実施形態５の変換規則保持部３１ｂが保持する変換規則の例を示す図
【図１１】  本発明の可変長鍵暗号システムの処理プログラムを記録した記録媒体の例を示す図
【図１】
0003782351.tif 000002
【図２】
0003782351.tif 000003
【図３】
0003782351.tif 000004
【図４】
0003782351.tif 000005
【図５】
0003782351.tif 000006
【図６】
0003782351.tif 000007
【図７】
0003782351.tif 000008
【図８】
0003782351.tif 000009
【図９】
0003782351.tif 000010
【図１０】
0003782351.tif 000011
【図１１】
0003782351.tif 000012