JP2004530919A - Method for performing mathematical operations in an electronic device, generating pseudorandom numbers in an electronic device, and encrypting and decrypting electronic data - Google Patents

Method for performing mathematical operations in an electronic device, generating pseudorandom numbers in an electronic device, and encrypting and decrypting electronic data Download PDF

Info

Publication number
JP2004530919A
JP2004530919A JP2002548877A JP2002548877A JP2004530919A JP 2004530919 A JP2004530919 A JP 2004530919A JP 2002548877 A JP2002548877 A JP 2002548877A JP 2002548877 A JP2002548877 A JP 2002548877A JP 2004530919 A JP2004530919 A JP 2004530919A
Authority
JP
Japan
Prior art keywords
calculation
data
mathematical system
variable
solution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002548877A
Other languages
Japanese (ja)
Other versions
JP2004530919A5 (en
Inventor
メッテ・ヴェステラガー・ペーターセン
ハンス・マルティン・ベスゴー・セレンセン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cryptico AS
Original Assignee
Cryptico AS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cryptico AS filed Critical Cryptico AS
Publication of JP2004530919A publication Critical patent/JP2004530919A/en
Publication of JP2004530919A5 publication Critical patent/JP2004530919A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/001Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using chaotic signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/586Pseudo-random number generators using an integer algorithm, e.g. using linear congruential method
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/26Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Mathematical Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Abstract

数学的システムにおいて数値計算を実行する方法は、この数学的システムを複数の離散的な項で表現することと、計算に固定小数点の変数を使用することと、数値のディジットのうちのサブセットを抽出することとを含む。ディジットのサブセットは、乱数又は擬似乱数を表現することが可能である。当該数学的システムは、カオス的システムのような、例えば正のリヤプノフ指数を有するシステムのような、複数の非線形微分方程式にてなるシステムであるか、あるいは、ロジスティックマップ、アノーソフ又はエノンマップのような離散的マッピングであることが可能である。本方法は、ストリーム暗号及びブロック暗号を含む暗号化及び復号化アルゴリズムと、ディジタル署名を発生するシステムと、ハッシュ関数と、MAC(メッセージ認証コード)関数とに適用可能である。当該数学的システムに対する解の周期的な挙動に対するテストが提供される。The method of performing numerical calculations in a mathematical system is to represent the mathematical system with multiple discrete terms, use fixed-point variables in the calculation, and extract a subset of the numerical digits. And doing. The subset of digits can represent a random or pseudo-random number. The mathematical system may be a system of a plurality of nonlinear differential equations, such as a chaotic system, e.g., a system having a positive Lyapunov exponent, or a logistic map, an Anosov or Ennon map. It can be a discrete mapping. The method is applicable to encryption and decryption algorithms, including stream ciphers and block ciphers, systems for generating digital signatures, hash functions, and MAC (message authentication code) functions. A test is provided for the periodic behavior of the solution for the mathematical system.

Description

【技術分野】
【0001】
本発明は、少なくとも1つの関数、特に非線形関数を含む数学的システムにおいて数値計算を実行する方法に関する。この数学的システムは、カオス的挙動を呈する複数の微分方程式にてなる非線形なシステムであることが可能である。本発明はまた、暗号化及び復号化方法に適用可能な擬似乱数発生器に関し、かつこのような暗号化及び復号化方法に関する。計算を実行するためには、好適には電子装置が使用される。
【背景技術】
【0002】
暗号法は、データへの無許可のアクセスを防止しながら当該データを記憶しかつ送信できるようにするためにデータを変換することに関連した科学及び技術の範囲を含む、一般に使われる用語である。暗号法により、データは、そのデータに係る意図された1人又は複数の受信者以外の誰にも理解できないようにされる。従って、暗号法は、技術の進歩が大量のデータの安全な伝送及び記憶を必要とするのに伴い、著作権保護を含む知的財産権の保護においてますます重要な役割を果たす。
【0003】
暗号化及び復号化アルゴリズムでは、特定のデータ変換は、アルゴリズムへの入力、いわゆる鍵に依存する。データの送信者及び受信者が適正な鍵セットを有する場合、送信者及び受信者はデータを正しく暗号化しかつ復号化することができるが、第三者はいずれも、暗号化されたデータへアクセスできることがあっても、彼女又は彼が適正な鍵を所有していないために、暗号化されたデータの正しく復号化されたバージョンを目にすることはできない。
【0004】
一般に、暗号化されるデータのセットは“平文”又は“元のデータ”と呼ばれ、このデータのセットの復号化されたバージョンは“暗号文”又は“暗号化されたデータ”と呼ばれる。
【0005】
対称暗号アルゴリズムの2つのタイプに、いわゆる“ブロック暗号法”といわゆる“ストリーム暗号法”がある。両方のタイプのアルゴリズムは対称鍵を使用する。すなわち、暗号化及び復号化に使用される鍵は等しいか、あるいは自明な関係にある。ブロック暗号は、元のデータのセットを、与えられたサイズの、例えば1ブロック毎に64ビットの複数のブロックに分割する暗号アルゴリズムである。各ブロックに対して数学的演算及び論理演算が実行され、これにより、所定量の元のデータは、通常は、擬似ランダムデータの複数のブロックに変換される。正しい復号化鍵を用いて復号化が開始される場合、元のデータを、暗号化に使用される数学的演算及び論理演算を反転することによって復元(re-call)することが可能である。
【0006】
(同期的な)ストリーム暗号法では、擬似乱数発生器は鍵に基づいて擬似乱数のシーケンスを発生する。このシーケンスは鍵ストリームと呼ばれる。鍵ストリームは、算術演算及び/又は論理演算によって、元のデータのセットのうちの複数のサブセットと混合される。データのサブセットの和は、暗号化される元のデータを定義する。混合したことの結果は、暗号化されたデータになる。暗号化されたデータのセットは、暗号化されたデータから擬似ランダムシーケンスが抽出されるように手順を反復することで元の復号化されたデータに到達することによって、復号化可能である。
【0007】
平文は、多くの場合、
【数1】

Figure 2004530919
の記号によって表され、“排他的論理和”演算子とも呼ばれるいわゆるXOR演算子である論理演算子を使用して鍵ストリームと混合される。XORは、2つの1ビット引数から1ビットの結果を発生させる。可能なすべての組み合わせは、次式のようになる。
【0008】
【数2】
Figure 2004530919
【数3】
Figure 2004530919
【数4】
Figure 2004530919
【数5】
Figure 2004530919
【0009】
平文及び擬似ランダム鍵ストリームに対してXOR演算子を利用することが、暗号文を生じさせる。復号化中に同一の鍵ストリームが発生され、このとき鍵ストリーム及び暗号文に対してXOR演算子が利用され、結果的に元の平文が発生される。同一の鍵ストリームは、暗号化のための鍵ストリームが最初に基礎とした鍵を使用することによってのみ発生されうる。
【0010】
さらに、いわゆる公開鍵システムが開発され、こうしたシステムは1対の非対称鍵、すなわち異なる2つの鍵である公開鍵と秘密鍵とによって特徴付けられる。このようなシステムでは、通常は公開鍵が暗号化に使用され、通常は秘密鍵が復号化に使用される。秘密鍵と公開鍵は、所定の方法で互いに対応する。暗号化に使用された鍵を復号化に使用することはできず、その逆もまたできない。従って、公開鍵は、元のデータのアクセス可能性に関する安全性を脅かすことなく公開可能である。そのため、暗号化されたデータをコンピュータ通信ネットワークを介して伝送するときには、データの受信者はまず、公開鍵及び秘密鍵を含む鍵のセットを発生する。次いで、公開鍵は例えばデータの送信者へ提供され、それに対して秘密鍵は安全な場所に記憶される。データの送信者は公開鍵を利用して元のデータを暗号化し、暗号化されたデータは次に受信者へ転送される。受信者がこの暗号化されたデータを受信すると、先に暗号化に利用された公開鍵に対応している秘密鍵が復号化システムに提供され、復号化システムは、上記暗号化されたデータを処理することで、復号化された元のデータに到達する。公開鍵システムは主として、例えばブロック暗号又はストリーム暗号において利用される鍵の伝送に使用され、このブロック暗号又はストリーム暗号が次にデータの暗号化及び復号化を実行する。
【0011】
本発明による方法は、複数の暗号方法に適用可能であり、特に、ストリーム暗号アルゴリズム、ブロック暗号アルゴリズム、ハッシュ関数、及びMAC(メッセージ認証コード)関数に適用可能であるが、この限りではない。このような方法、関数及びアルゴリズムは、再現可能な方法で擬似乱数を発生可能な擬似乱数発生器、すなわち、2つの異なるサイクルで擬似乱数発生器への入力として同じ鍵が使用されるとき、結果的にこの2つの異なるサイクルで同じ数値が発生されるような方法で擬似乱数を発生可能な擬似乱数発生器を含むことがある。
【0012】
擬似乱数を発生するため、カオス的システム、すなわちカオス的な挙動を示す複数の非線形微分方程式の系(システム)又は複数のマッピング(写像)の系(システム)の数値解を利用することが提案されている。“カオス的”という用語は、厳密な数学的意味では連続な系のコンテキストにおいてのみ使用可能である。しかしながら、本願明細書では、少なくとも1つの正のリヤプノフ指数を有する離散的な系又は有限な系も、“カオス的”であると呼ぶ。
【0013】
カオス的システムは、標準的には少なくとも1つの状態変数Xを決定している。こうしたシステムの数値解法は、標準的には複数の反復又は積分のステップを実行することを含んでいる。カオス的システムでは、与えられた瞬間における解Xは、初期条件Xでの小さなずれが結果的に解Xでの巨大なずれをもたらすように初期条件Xに依存する。このシステムはしばしば、初期条件に対して敏感であると呼ばれる。従って、擬似乱数発生器、すなわちカオス的システムを数値的に解くアルゴリズムが、擬似乱数の再現可能なストリームを与えるためには、正確な初期条件Xが知られている必要がある。このように、カオス的システムに依存する暗号アルゴリズムでは、カオス的システムの数値解法に使用される初期条件Xは、暗号システムのユーザによって入力された鍵から導出され、これにより、例えばデータの暗号化及び復号化のために、擬似乱数の同一のストリームが発生可能となる。
【0014】
リヤプノフ指数は、隣接する2つの軌道、すなわち解曲線の発散又は収束の速さを測る尺度となり、様々なタイプの解の安定性を決定するために、すなわちその解が例えば周期的であるかそれともカオス的であるかを決定するために使用可能である。リヤプノフ指数は、基準軌道と変位された軌道との比較に基づいてこのような尺度を提供する。基準軌道は初期条件xの反復で表され、変位された軌道は初期条件x+yの反復で与えられる。ここで、yは無限に小さい長さのベクトルであり、変位の初期値を表す。変位の初期値に係る向きの初期値は、u=y/│y│で与えられる。この表記法を使用すると、リヤプノフ指数h(x,y)は次式のように定義される。
【0015】
【数6】
Figure 2004530919
【0016】
ここでyは、xのn番目の反復によって与えられる、変位された軌道の、基準軌道からのずれである。次元が1より大きいシステムの場合、複数のリヤプノフ指数のセット又はスペクトルであって、各々がある特定方向への軌道の発散又は収束を特徴付けるものが存在する。従って、システムが自由度Nを有していれば、これはN個のリヤプノフ指数を有することになる。しかしながら、これらは必ずしも別個のものではない。あらゆる実際的状況において、正のリヤプノフ指数はカオスを表す。ハイパーカオス(hyperchaos)と呼ばれる不規則な挙動のタイプは、2つ以上の正のリヤプノフ指数によって特徴付けられる。リヤプノフ指数の数値計算は、ティー.エス.パーカー(T. S. Parker)及びエル.オー.チュア(L. O. Chua)によるカオス的システムの実用数値アルゴリズム(Practical Numerical Algorithms for Chaotic Systems)の73−81ページに提案された方法に従って実行してもよい。
【0017】
ハイパーカオス的なシステムよりさらに不規則なシステムはいわゆる乱流を呈し、これは、正のリヤプノフ指数の連続スペクトルを有するシステムが示すタイプの挙動に関連してる。乱流は、例えば公知のナビエ・ストークス方程式のような偏微分方程式によってモデル化可能である。
【0018】
多数の従来技術文献が、特に暗号アルゴリズムに使用されるカオス的システムの解法に関連し、またカオス的システムに依存するストリーム暗号アルゴリズムも含んでいる。
以下、背景技術への一般的な導入として、そのうちのいくつかに簡単に言及する。
【0019】
ローラル・エアロスペース・コーポレーション(Loral Aerospace Corp.)に譲渡された米国特許第5,007,087号の明細書は、カオスを使用して乱数を発生する方法及び装置を開示している。この特許は、乱数シーケンスを発生するためのカオス的システムの解法について記述し、かつ暗号法におけるその使用の可能性について、特に鍵の発生及び管理の分野におけるその使用の可能性について言及している。この明細書では、数値シーケンスの反復可能性が回避される必要があると記載されている。
【0020】
ヒューズ・エアクラフト・カンパニー(Hughes Aircraft Company)に譲渡された米国特許第5,048,086号は、カオス理論に基づく暗号化システムに関連している。このシステムは、所定の値のμに対してカオスを呈するマッピングである、ロジスティック方程式xn+1=μx(1−x)を使用する。この計算では、浮動小数点演算が使用される。
【0021】
川崎市の株式会社東芝に譲渡された米国特許第6,014,445号の明細書は、ランダム変数及び鍵ストリームの発生を組み込んだ暗号化/復号化の装置及び方法を開示している。この開示内容はカオス的ストリーム暗号に関連し、浮動小数点計算が使用されていると記載している。
【0022】
アップル・コンピュータ・インコーポレイテッド(Apple Computer, Inc.)に譲渡されたPCT出願公開WO98/36523号の明細書は、カオス的システムを使用して秘密鍵から公開鍵及び調整可能な裏口(バックドア)を発生する方法を開示している。カオス的システム上で計算する間での精度の規則を確立する必要性が記載されている。この明細書は、一例として、丸めのための特定の標準とともに、特定された浮動小数点又は固定小数点の精度が識別可能であると記載している。
【0023】
ディー.カハナー(D. Kahaner),シー.モラー(C. Moler)及びエス.ナッシュ(S. Nash)による“数値的方法とソフトウェア(Numerical Methods and Software)”(プレンティスホール・インターナショナル・エディションズ(Prentice-Hall International Editions)、1989年)は、(擬似)乱数の発生に関する概論を含んでいる。この文献は、(擬似)乱数発生器の性能を判定するための下記のような基準を記載している。
a)高品質:発生器は、すべての統計的テストに合格し、かつ極めて長い寿命を持たねばならない。
b)効率:実行は迅速であり、記憶装置の必要量は最小でなければならない。
c)反復可能性:同じ開始条件を指定すると、同じシーケンスが発生される。ユーザはいつでも発生器を再スタートできる必要があるが、明示的な初期化は不要である。開始手順におけるわずかの変化は、結果的に、異なるランダムシーケンスをもたらす。
d)マシンの独立性と移植性:アルゴリズムは、異なる種類のコンピュータ上で動作しなければならない。特に、如何なる演算もプログラムを停止させる原因となってはならない。発生器をまったく同様に初期化することにより、異なるコンピュータ上で同じ乱数のシーケンスが発生されなければならない。
e)簡単さ:アルゴリズムは、実装及び使用が容易でなければならない。
この文献はさらに、どんな発生器もこれらすべての基準を首尾良く満足させることはできないと述べている。
【0024】
エイチ.カマタ(H. Kamata),イー.テツロ(E. Tetsuro)及びワイ.イシダ(Y. Ishida)による“DSPの実装によるカオスを用いた安全な通信システム(Secure Communication System Using Chaos via DSP Implementation)”(IEEE、1996年)は、システムの実装にディジタル信号プロセッサ(DSP)が使用された、カオス回路に基づく通信システムについて記述している。固定小数点DSPを使用することにより、このシステムはアナログ回路よりも頑健にされている。送信されたメッセージの復元は、カオス受信システムを送信システムに同期化することに基づいている。
【0025】
数値計算において、例えばインテル(Intel)のマンデルブロ計算において、固定小数点の変数を使用することが知られている。インテル(2001年12月7日に、http://developer.intel.com/software/idap/resources/technical_collateral/mmx/MANDEL.HTMで公にアクセス可能な、MMX(商標)テクノロジー・アプリケーション・ノーツ(MMXTMTechnology Application Notes)“MMX(商標)テクノロジーを用いたフラクタルの実装(Implementing Fractals with MMXTMTechnology)”を参照。)は、MMX技術(特定の計算を高速化する、インテルのプロセッサへのアドオン)を使用してマンデルブロ集合(非線形なシステムから導出可能な集合)を高速に計算しうる方法について説明している。これは、固定小数点計算を用いて実行される。
【0026】
マンデルブロ集合は、次式のマッピングによって計算される。
【0027】
【数7】
Figure 2004530919
【0028】
インテルは、それらの計算において一定の小数点分離記号の位置を使用する。いわゆる5.11が利用される。すなわち、16ビットの数が利用され、小数点分離記号は5番目のビットの後に置かれ、“5”は小数点分離記号より後の5つのビットを示し、“11”は小数点分離記号より後の11のビットを示す。
【発明の開示】
【発明が解決しようとする課題】
【0029】
一般にコンピュータでは、実数は浮動小数点型の数によって表される。浮動小数点の数は、例えば31415・10−4のように、仮数と指数よりなる数として定義され、ここで“31415”が仮数であり、“−4”が指数である。コンピュータが浮動小数点の変数で計算を実行する場合、コンピュータは毎回結果が一致するように指数を再計算する。“浮動小数点”という名称は、複数の計算において、指数の変化に起因して小数点分離記号が移動するという事実を示している。しかしながら、浮動小数点の算術は様々なプロセッサアーキテクチャで異なって定義されるので、精度及び丸めの処理に違いが生じる。浮動小数点の数の代わりに、固定小数点の数が使用可能である。固定小数点の数はコンピュータ上で整数型の数として表され、ここでは、実数の整数部と小数部とを分離するために、仮想小数点又は分離記号(想像上の小数点分離記号とも呼ばれる)が“手動で”、すなわちプログラマによって導入される。ゆえに固定小数点の数での計算は簡単な整数演算によって実行され、この演算は、異なる2つのプロセッサ上で実行される同じ計算が、負の数の表現が異なる可能性のあることを除いてこれらの2つのプロセッサで同一の結果を生じるという意味で、すべてのプロセッサ上で同一である。こうした異なる表現の可能性は、いくつかのプロセッサが1の補数を利用し、他のプロセッサが2の補数を利用することの結果として生じることがある。さらにまた、これらの演算は、通常は、対応する浮動小数点演算よりも高速である。
【0030】
一般に、固定小数点の数のタイプはΦ(α.β)で表され、αは整数部を保持するために使用されるビット数であり、βは小数部を保持するためのビット数である。α及びβの値と、従って小数点の位置とは、通常は予め決定されていて定常的である。固定小数点の数は符号なしの場合と符号ありの場合のいずれかが可能であるが、その場合はΦが各々U又はSで表される。後者の場合、符号を保持するために1ビットが必要とされるので、S(α.β)を保持するためにα+β+1ビットが必要とされる。U(α.β)の範囲は[0;2α−2−β]であり、S(α.β)の範囲は[−2α;2α−2−β]である。これにより、固定小数点の数の分解能は2−βである。
【0031】
固定小数点の数における小数点分離記号の位置は、数の整数部のディジットと小数部のディジットとの間の重み付けになる。最良の計算結果を達成するために、通常は、小数点分離記号の後に可能な限り多くのディジットを含んで最高の分解能を得ることが望ましい。しかしながら、整数部にも、オーバーフローが発生しないことを保証するのに十分なビットを割り当てることが重要であるかもしれない。オーバーフローとは、ロード又は計算される値と同程度の大きさの数値を保持できないレジスタへ値をロードする、又は当該レジスタにおいて値を計算することである。オーバーフローは、結果的に、最上位のビット(ディジット)と起こりうる符号の変化とを削除する。
【0032】
本発明の様々な態様においては、小数点分離記号の位置は設計の時点で割り当てられてもよい。適正な位置を選択するため、好適には、位置が選択されるべき可能な数の範囲が解析される。可能な最大の正の値と可能な最小の負の値とが決定され、これら2つのうちの絶対値の最大値が次式に挿入されてαの値が決定される。
【0033】
【数8】
Figure 2004530919
【0034】
小数点の位置は、異なる複数の固定小数点の変数の間で変化する可能性がある。しかしながら、加算及び減算演算は、同様の位置を有する数の入力を必要とする。ゆえに、時として小数点の位置をシフトさせる必要がある。nビットの右シフトは、Φ(α.β)からΦ(α+n.β−n)への変換に対応する。nビットの左シフトは、Φ(α.β)をΦ(α−n.β+n)へ変換する。符号なしの数の変換は論理シフト演算によって行われるのに対して、符号付きの数には算術シフトが使用される。
【0035】
固定小数点の数での数学的演算である加算、減算、乗算及び除算は、簡単な整数演算として実行される。加算及び減算演算は、桁上げに起因して結果的にサイズΦ(α+1.β)の数になる可能性がある。しかしながら、通常、この結果は、入力と同じフォーマットの数にするために切り捨てられる。
【0036】
乗算及び除算は、引数の小数点分離記号が同様の位置にあることを必要としない。しかしながら、除算の場合、分子は分母及び結果の2倍の長さを有する必要があるので、分子は除算の前に予め展開される。結果は次のようなフォーマット:S(α.β)・S(c.d)=S(α+c+1.β+d)及びS(α+c+1.β+d)/S(α.β)=S(c.d)を有することになる。符号なしの乗算及び除算の場合は、S(α+c+1.β+d)がU(α+c.β+d)で置換される。乗算において、予め決められた結果のフォーマットよりも超過したディジットは、目標のレジスタサイズに合わせて切り捨てられる。
【0037】
固定小数点での計算に関する別の情報は、アール.イェーツ(R. Yates)による“固定小数点算術:概論(Fixed-Point Arithmetic: An Introduction)”(この文献は、2001年12月7日において、http://personal.mia.bellsouth.net/lig/y/a/yatesc/fp/pdfで取得可能である。)で見つけることができる。
【0038】
数学的システムの数値解法における浮動小数点の変数の利用は、予測不可能な切り捨て及び/又は丸めの誤差を生じさせる可能性がある。解を求める数学的システムが非線形である場合、かつ特に当該システムがカオス的である場合は、1つのステップにおける小さなずれが後続のステップでは大きなずれとなる可能性があるので、すべての積分ステップでの解の精度が最重要となる。切り捨て及び/又は丸めの誤差があらゆる計算で同じように一貫して発生されれば、同一の初期条件に基づく2つの解は同一であり、よってその計算は再現可能である。しかしながら、ほとんどの場合において、浮動小数点の数の切り捨て及び/又は丸めの誤差はソフトウェアによって完全に制御されるのではなく、当該ソフトウェアを実行しているハードウェアによっても制御される。従って切り捨て及び/又は丸めの誤差はハードウェアに依存し、その結果として、異なる2つのハードウェアプロセッサでは切り捨て及び/又は丸めが異なって実行される可能性がある。大部分の計算では、切り捨て及び丸めが、計算に必要な精度よりずっと小さな程度のオーダーの不正確さを発生しているために、この点は重要でない。しかしながら、例えばカオス的システムの解では、切り捨てが実行される方法における小さなずれが、後の計算ステップでは解に大きなずれをもたらす可能性がある。
【0039】
従って、本発明の目的は、切り捨て及び/又は丸めの誤差が予測可能であるか、又はこのような誤差がソフトウェアによって完全に制御されうる、すなわち計算の精度がハードウェアとは独立である、数学的システムにおいて数値計算を実行する方法と、擬似乱数を発生する方法とを提供することにある。本発明の別の目的は、こうした数値計算を実行する方法と、擬似乱数を再現可能な方法で発生する方法とであって、コンピュータ上で実行されるときに高速である、すなわち利用可能なハードウェアプロセッサ能力を最適に使用する方法を提供することにある。本発明のさらに別の目的は、コンピュータで実行されるときに高速な、データを暗号化しかつ復号化する方法及びシステムを提供することにある。
【課題を解決するための手段】
【0040】
ここのコンテキストにおいて“擬似乱数”という用語が使用される場合、これは、再現可能な方法及び/又は決定論的方法で発生されることが可能な、すなわち、ある1つの擬似乱数発生アルゴリズムの異なる2回の実行において、その2回の実行での擬似乱数発生アルゴリズムへの入力として同一の鍵又はシード(種)値が使用されれば同一の擬似乱数が結果的にもたらされるような方法で発生されることが可能な乱数として理解される必要がある。
【0041】
ここのコンテキストにおいて、固定小数点の変数は、仮想小数点分離記号を有する整数型の数として定義され、整数は小数点分離記号より後にディジットを持たない数として定義される。従って、実数は、仮想小数点分離記号(又は小数点)を整数におけるどこか予め決められた固定位置に、例えば左から4番目のディジットに挿入して表現される。この位置は、数に対する数学的演算の結果として変更される可能性もある。このk位置はまた、論理演算の使用によって変更を余儀なくされる場合もある。
【0042】
上述の議論から想起される通り、固定小数点の数は整数であり、これに仮想小数点分離記号が付加される。数は、小数点分離記号より前のビットを示すいわゆる“整数部”と、小数点分離記号から後のビットを示す“分数部”とで構成される。ここのコンテキストではビットはディジットとも呼ばれ、かつこの逆も行われる。
【0043】
固定小数点の数の計算を含むコンピュータプログラムにおいて、又は固定小数点の計算を実行するための電子回路又は装置においては、小数点分離記号の適正な位置を決定するための手段が提供されていることがある。従って、当該プログラム、回路又は装置は、計算中に、発生しうるオーバーフローを検出することができ、発生しうるオーバーフローが検出された場合は、小数点分離記号のいずれかの側のビット数を変更する、すなわち問題となっている1つ又は複数の変数を記憶するレジスタにおける小数点分離記号の位置を変更することができる。この変更は、小数点分離記号を1桁又はそれ以上だけ右又は左へ移動させることによって実行可能である。好適には、レジスタ内で使用されない可能性のあるビット数を最小化するために、できるだけ多くのビットを小数点分離記号より右側で使用し、これにより最適な計算の精度を達成する。小数点分離記号の位置を変更することにより、発生しうるオーバーフローを検出するための付加的演算に係る必要条件に起因して計算速度はある程度損なわれるものの、コンピュータプログラム、回路又は装置を組み込むアプリケーションの設計者又はプログラマが設計又はプログラミングの段階で精度及びオーバーフローに関して考慮することを必要とせずに、計算の精度は最適化され、それと同時にオーバーフローの危険性は除去されるか低下される。それに代わって、あるいはそれに加えて、計算中のどの時点又はどの場所でオーバーフローが発生するのか又は発生しそうであるのかを決定するテストプログラムを提供することも可能であり、従って、当該プログラムのプログラマ又は設計者は、オーバーフローが発生しないように、1つ又は複数の変数における小数点分離記号の位置を固定でき、それによって、最終的な実装において、発生しうるオーバーフローに関する決定が一切不要となる。しかしながら、発生しうるオーバーフローの決定は、付加的な保護手段的機能として最終的実装に組み込まれてもよい。さらに、プログラマ又は設計者は、計算中の、予め決められ、固定された段階において、小数点分離記号の変更を実装することを選択してもよい。
【0044】
先に議論したように、実数は、1つ又は複数の固定小数点の数によって表現されることが可能である。同様に、i=−1とするとき、複素数c=a+ibは、1つ又は複数の固定小数点の数によって、例えば実数部a及び/又は虚数部bを固定小数点の数として表すことによって、表現されることが可能である。実数部及び虚数部の一方だけが固定小数点の数として表現される場合に、他方は、浮動小数点の数又は整数のような他の任意のタイプの数によって表現されてもよい。
【0045】
ここのコンテキストにおいて、“データキャリア”又は“コンピュータが読み取り可能なデータキャリア”という用語は、コンピュータ又はコンピュータシステムによってアクセス可能な、データを記憶する能力のある任意の装置又は媒体として理解される必要がある。従って、コンピュータが読み取り可能なデータキャリアは、例えば、RAM、ROM、EPROM又はEEPROM等のメモリ、コンパクトフラッシュカード、メモリースティックカード、フロッピー又はハードディスクドライブ、コンパクトディスク(CD)、DVD、データテープ又はDATテープを含むことが可能である。
【0046】
本発明に係る方法によって導出されるデータ及びこのような方法において使用されるデータを含む信号は、例えば電気的な回線又は光回線等の通信回線か、あるいは無線又は光送信を使用する無線通信手段を介して伝送されることが可能である。例としては、インターネット、LAN(ローカルエリアネットワーク)、MAN(メトロポリタンエリアネットワーク)、WAN(広域ネットワーク)、電話回線、賃借された専用回線、私設の専用回線、及びケーブル又は衛星テレビネットワークがある。
【0047】
ここのコンテキストにおいては、“電子装置”という用語は、電子的なインパルス又は光インパルスによってデータを処理する任意の装置として理解される必要がある。本発明に係る方法に適用可能な電子装置の例としては、CPU、マイクロコントローラ又はDSP(ディジタル信号プロセッサ)等のプロセッサがあり、また、パーソナルコンピュータ、メインフレームコンピュータ、携帯用装置、スマートカード、例えば暗号化のような所定の目的に合わせて特別に設計されたチップを含む、コンピュータ、あるいはプロセッサ又は数学的演算を実行するための他の電子回路を組み込んだ他の任意の装置がある。電子装置の例にはさらに、計算及び/又は演算を実行するように適応化又は設計されたマイクロチップがある。
【0048】
プロセッサは、通常は、(a)演算されるデータのサイズ、(b)命令サイズ、及び(c)メモリモデルによって分類される。これらの特性は、標準的には、4ビットと128ビットの間(例えば15、16、32、64ビット)の異なるサイズを有することが可能であり、2の累乗に限定されない。
【0049】
ここのコンテキストにおいては、“プロセッサ”という用語は、下記のものを含む任意のタイプのプロセッサを包含するが、これらに限定されるものではない。
− “組み込みプロセッサ”とも呼ばれる“マイクロコントローラ”。“マイクロコントローラ”及び“組み込みプロセッサ”は通常、小型プロセッサを示す(通常は大型プロセッサより少ないトランジスタで構成され、制限された電力消費量を有する。)。マイクロコントローラアーキテクチャの例として次のものがある。
− Z80
− 8051(例えば、インテル製)
− CPU8/6800(例えばモトローラ(Motorola)製の、例えば68HC05、68HC08及び68HC11)
− CPU32/68k(モトローラ製の68000ドラゴンボール(68000 Dragonball)等)
− 典型的には異なる複数の種類のコンピュータ及び制御システムで使用される他のプロセッサ。アーキテクチャの例として次のものがある。
− アルファ21xxx(21164、21264、21364等)
− AMD x86−64(スレッジハマー(Sledgehammer)等)
− ARM(ARM10、ストロングARM(StrongARM)等)
− CPU32/68k(例えばモトローラ製の例えば68000、68030、68040)
− IA32(例えばインテル製(i486、ペンティアム(Pentium)等)、AMD製(K6、K7等)及びサイリクス(Cyrix)製のx86ファミリ)
− IA64(HP/インテル(HP/Intel)製のアイテニアム(Itanium)等)
− MIPS(SGI製のR4000、R10000等)
− PA−RISC(HP製の8000等)
− パワーPC(PowerPC)(IBM/モトローラ(IBM/Motorola)製のG3、G4等)
−SPARC(サン(SUN)製のウルトラSPARC II(UltraSPARC II)、ウルトラSPARC III(UltraSPARC III)等)
− DSP。例として次のものがある。
− DSP56300(モトローラ製)
− MSC8100(モトローラ製)
− TI TMS320C6711(テキサス・インスツルメンツ(Texas Instruments)製)
【0050】
ここのコンテキストにおいては、“レジスタ”という用語は、数値のようなデータを含む任意のメモリ空間として理解されるべきものであり、メモリ空間は、例えば、CPUレジスタ、RAM、電子回路内のメモリ、又はハードディスク、フロッピーディスク、コンパクトディスク(CD)、DVD、データテープ又はDATテープ等の任意のデータキャリアである。
【0051】
本発明はまた、独立した態様において、本発明の方法によって導出されるデータにも関するということは理解される必要がある。また、本発明が諸方法に関連する場合、これはまた、独立した態様において、このような諸方法を実行するように適応化されているコンピュータプログラム、このようなコンピュータプログラムがロードされたデータキャリア又はメモリ手段、及び/又は当該諸方法を実行するためのコンピュータシステムに関するということも理解される必要がある。
【0052】
本発明の方法に含まれるあらゆる計算演算は、電子装置上で、又は電子装置によって実行されることが可能である。
【0053】
第1の態様において、本発明は、少なくとも1つの関数を含む数学的システムにおいて数値計算を実行する方法を提供する。当該方法は、
− 上記数学的システムを離散的な的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
− 固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように、上記計算を実行するステップと、
− 上記複数の計算から、結果として得られる数を取得するステップとを含み、上記結果として得られる数は、
−a.上記数学的システムに対する解の少なくとも一部と、
−b.上記数学的システムの数値解に関連する別の計算において使用可能な数との少なくとも一方を表現し、
当該方法はさらに、
−i.上記結果として得られる数のディジットのサブセットと、
−ii.上記結果として得られる数から導出される数のディジットのサブセットと
の少なくとも一方を表現するデータのセットを抽出することを含む。
【0054】
数のサブセットは、その数のディジット又はビットのすべてである必要はないがそのいくつかであるような、当該数の一部と見なすことが可能である。例えば、16ビットの数の最下位の8ビットは、当該16ビット数のサブセットと見なすことができる。
【0055】
“抽出する”という用語は、問題となる数又はサブセットを、例えばキーストリームとしてか又はキーストリームの一部として、もしくは計算処理の他の任意の最終結果又は中間結果として出力することと、問題となる数又はサブセットを、例えば当該サブセットに対するその後の計算等のその別の使用を見込んで、レジスタに記憶することとを含むが、これらに限定されない。
【0056】
数全体を抽出する代わりに数の複数のディジットのうちのサブセットを抽出することにより、当該方法が、擬似乱数発生器において、例えば暗号化及び/又は復号化目的で使用される場合のランダム特性が改善される。さらに、ただ1つのサブセットのみが抽出されるので、抽出されたデータのセットに含まれる、数学的システムの内部状態に関する情報量は少なくなり、このことは、本発明に係る方法を組み込んだ暗号化/復号化システムのセキュリティを強化する。
【0057】
数学的システムは、例えば複数の微分方程式にてなるシステムのような連続的なシステムを含んでいてもよいが、これはまた、もしくは代替として、例えばマップの場合におけるように元は離散的な項で定義されたシステムを含んでいてもよい。数学的システムの少なくとも1つの関数は、後に詳述するように非線形であってもよい。
【0058】
通常は、複数のディジットのうちのサブセットは、k≦mとして、mビットの数のうちのkビットを含み、例えば32ビットの数のうちの8ビットが抽出される。サブセットが抽出される数と、及び/又は抽出されたデータのセットとは、1つ又は複数の2進数、8進数、10進数、16進数などで表現されることが可能である。kビットは当該数の最下位のビットであってもよく、又は、当該ビットが抽出される数の中の、予め決められた位置又はランダムな位置から選択されたkビットであってもよい。例えば、64ビットの数からは、42、47、53、55、56、57、61及び63番目のビットを抽出すること、又は47乃至54番目のビットを抽出することができる。
【0059】
本発明の第1の態様による方法は、制御システムにおける、暗号化及び復号化、電波の変調、雑音を低下させるような画像及び音声信号におけるカオスの同期化、データ圧縮に適用可能であり、また、例えば文書を音声ファイルの最下位ビットで記憶してディジタル送信において文書を隠すための、電子透かしの埋め込み(ウォーターマーキング)、画像深層暗号(ステガノグラフィ)に適用可能である。
【0060】
固定小数点の数の使用には、固定小数点の数の計算において発生する丸め及び/又は切り捨て誤差がすべてのプロセッサで同一に定義されるという、浮動小数点の数に対する優位点がある。固定小数点の変数の使用により、小数(decimal number)は、数の中に仮想小数点分離記号が置かれる整数型の数として表現されることが可能である。浮動小数点の変数が使用される場合には、切り捨て/丸めの誤差が異なるタイプのプロセッサ上で同一に生じることはない。
【0061】
切り捨て/丸めの誤差が制御可能であるか又は予測可能であることの結果として、切り捨て/丸めの誤差に敏感な数学的システムにおける数値計算が、再現可能な方法で実行可能になる。従って、例えば非線形システム、特にカオス的システムが、再現可能な方法で数値的に解かれうる。これにより、不正確さを防止するためのフィードバック又は訂正のアルゴリズム又はレジスタを必要とすることなく、もしくは、暗号化におけるシステムの解が復号化におけるときと同一になることを保証する同期化技術を必要とすることなく、暗号化/復号化アルゴリズムなどでの擬似乱数発生器においてカオス的システムを利用できるようになる。このことは次いで計算に寄与し、擬似乱数発生器及び/又は暗号化/復号化アルゴリズムは、こうしたフィードバック又は訂正アルゴリズムもしくは同期化技術を含んだアルゴリズムに比べて高速である。さらに、暗号化されたデータとともに同期化データを送信する必要がない。こうした同期化データはしばしば、暗号化されたデータのサイズに匹敵するサイズにまで達し、例えば、インターネットを介してデータを送信する場合に帯域幅が不十分であることに起因して、この点が大きな問題になる可能性がある。さらに、こうしたデータの送信は、システムのセキュリティを危うくする。またこの計算は、問題となる変数に関する浮動小数点の変数を含む方法における計算よりも高速に実行されるが、これは、固定小数点の数を含む計算ではハードウェアのプロセッサが計算を整数の計算として実行するからであり、整数での計算は一般に浮動小数点の数での計算よりも高速だからである。
【0062】
ここのコンテキストにおいては、“結果として得られる数”という用語は、計算において発生する任意の数として理解される必要がある。1つよりも多くの結果として得られる数が取得される場合もある。結果として得られる数は、上述の通り、数学的システムに対する解の一部及び/又は中間結果、すなわち数学的システムの任意の変数又はパラメータもしくは計算に使用される他の任意の変数又はパラメータに割り当てられた数であることが可能である。本方法の実装においては、結果として得られる数又はその一部は、例えば暗号化/復号化システムで使用するための擬似乱数として抽出されることが可能である。代替として、結果として得られる数又は複数の結果として得られる数に対して1つ又は複数の数学的演算及び/又は論理演算を実行し、抽出される別の数を求めることも可能である。2進数で表示された、結果として得られる数の、すべてのビット又は選択されたビットのみを抽出することができる。計算中に発生する数の選択されたビットから発生された数は、結果として得られる数と呼ばれうるということは理解される必要がある。従って、“結果として得られる数”という用語はまた、計算中に発生する数の任意の部分をも含んでいる。
【0063】
本発明の第1の態様による方法は、先に議論した通り、暗号法において、例えば、対称暗号アルゴリズム、公開鍵(又は非対称鍵)アルゴリズム、セキュアハッシュ関数又は暗号ハッシュ関数、もしくはメッセージ認証コード(MAC)の実装において有用である。これらのアルゴリズムは、例えば下記のタスクのうちの1つ以上を達成するときに使用可能である。
− ディジタルデータの機密性を保証して、無許可アクセスからデータを保護する。
− ディジタルデータの完全性を保証して、情報が正確である、もしくは改ざんされていないことを保証する。
− 例えば所定のタスク又は演算を実行する許可を与えるための認証。
− 他の関係者の身元を照合するためのユーザ認証、又はデータの発信元を照合するためのデータ発信元認証のような認証。
− 電子商取引に関与した証拠を提供して、例えば第1の人物Aが第2の人物Bにメッセージを送り、その後で、このメッセージを送信したことを否定することを防止するための否認防止。この目的のために、ディジタル署名が使用される。ディジタル署名の発生には、公開鍵アルゴリズムとハッシュ関数との使用を組み込むことが可能である。
【0064】
本発明の第1の態様による方法はまた、いわゆるハッシュ関数にも適用可能である。ハッシュ関数は、少量のデータが、通常は上述の少量のデータより遙かに大きいデータのセットである他のデータを識別する働きをする、ある種のディジタル指紋を提供する。ハッシュ関数は通常、秘密鍵を含まない公開された関数である。ハッシュ関数はまた、認証及び完全性の尺度を提供することもできる。ハッシュ関数は、ディジタル署名アルゴリズムにとって、及びパスワードの保護にとって不可欠である場合が多いが、これは、パスワードの制御のためにパスワード自体に代わってパスワードのハッシュ値が使用されてもよく、それによって通信ネットワーク等を介して送信される必要があるのはパスワード自体ではなくハッシュ値のみになるからである。
【0065】
秘密鍵を入力として使用するハッシュ関数は、しばしばMACアルゴリズム又は“鍵付きハッシュ関数”と呼ばれる。MACアルゴリズムは、認証及びデータの完全性を保証するために使用される。これは、特定のメッセージが、当該メッセージに発信元であったと表示されている人物又はエンティティから着信したこと(認証)と、当該メッセージが伝送(中継)中に変更されなかったこと(完全性)とを保証する。これは、IPsecプロトコル(2001年12月7日において、http://www.rfc-editor.org で利用可能な、RFC 2401を参照。)において、例えば、複数のIPパケットが、それらが送信されるときと、それらがその最終的な宛先へ到達するときとの間に変更されていないことを保証するために使用される。これはまた、あらゆる種類の銀行間の送金プロトコルにも使用される。
【0066】
先に議論した通り、本発明の第1の態様による方法は、ハッシュ又はMACアルゴリズムに実装可能である。ハッシュ又はMACアルゴリズムは、所定量の任意長さのデータのチェックサムを計算し、そのチェックサムを結果として与える。この処理は不可逆(一方向)でなければならず、入力値の小さな変化が結果的に大幅に異なる出力を生じさせる必要がある。従って、データ入力への感度は高くなければならない。ハッシュ関数は鍵をシード値として使用しないのに対して、MACアルゴリズムは、アルゴリズムのためのシード値を表すか又は決定するこうした鍵を使用し、それにより結果が鍵に依存する。ハッシュ関数は、鍵の代わりに、例えば数πからの所定のビットであるような定数に依存する。代替として、ハッシュ関数が適用されるデータの一部がシード値として使用されてもよい。
【0067】
ハッシュ/MACアルゴリズムは、下記のように実装可能である。
− 当該アルゴリズムでは、ロジスティックマップの形式の数学的システムが使用される。ロジスティックマップは、λをパラメータとして、xn+1=λx(1−x)の形式を有する。後に詳細に議論されるローレンツ(Lorenz)システムのような他のカオス的システムが使用されてもよい。
− そのチェックサムが計算されるべきメッセージmに対して当該アルゴリズムが依存する結果として、メッセージは当該システムにその1つの構成要素として組み込まれている。例えば、メッセージと動的変数xとのある種の結合が、式xn+1=λx(1−x)+ε(x−m)を用いて行われてもよい。
− パラメータλ及びεと初期値xとは、メッセージから予め決定され、及び/又はメッセージから導出されてもよい。MACアルゴリズムの場合、パラメータλ及びεと初期値xとは、秘密鍵から完全に又は部分的に決定されることが可能である。
− 当該システムは、メッセージの終わりに到達するまで反復される。x又は最下位ディジットのようなその一部の最終的な計算値は、例えばハッシュ値、MAC又はチェックサムとして表される。代替として、結果として得られる数の抽出に先行して、多くの追加の反復を実行することもできる。xの最終的な計算値を抽出する代わりに、もしくはこれを抽出することに加えて、計算で無視されていた所定のビットをハッシュ値として抽出することもできる。
− メッセージmを力学システム(系)へ導入する方法は変更されうる。例えば、メッセージの一部を使用して、各反復においてx変数に影響を与えることができる。このような影響は、例えばメッセージの複数の所定のビットに対してXOR(排他的論理和)演算を実行してxの最下位ディジットを得ることにより達成可能である。
【0068】
ハッシュ/MAC関数に関する別の詳細は、ブルース・シュナイアー(Bruce Schneier)による“応用暗号学(Applied Cryptography)”第2版,ジョン・ワイリー・アンド・サンズ(John Wiley & Sons),1996年で参照される。
【0069】
本発明の第1の態様による方法の利用分野としての1つの可能性は、非対称アルゴリズムとも呼ばれる公開鍵暗号化である。復号化に使用される鍵は、暗号化に使用される鍵とは異なる。例えば、鍵発生関数は、1つは暗号化のための鍵であり、もう1つは復号化のための鍵である1対の鍵を発生する。一方は秘密鍵であり、他方は公開鍵である。後者は、暗号化されていないバージョンでインターネットを介して送信されてもよい。暗号化鍵は、カオス的システムのための複数のパラメータ及び/又は初期条件を構成するか、もしくは含むことが可能である。平文は、秘密鍵によって開始されない限り非可逆であるカオス的システムを変調するために用いられる。復号化のためには、暗号化に使用されるシステムのダイナミクス(力学)とは逆のダイナミクスを有する数学的システムが使用される。
【0070】
本発明の第1の態様による方法においては、固定小数点の数として表現された変数を含む計算が、浮動小数点の数及び整数のような他の種類の数として表現された1つ又は複数の変数を含む、他のタイプの変数での計算を含む可能性がある。
【0071】
数学的システムは、離散的なシステムであっても、連続的なシステムであってもよい。以下、様々なタイプの数学的システムについて検討する。
【0072】
計算は、各固定小数点の数が小数点分離記号を有する少なくとも第1及び第2の固定小数点の数を含むことが可能であり、第1の固定小数点の数の小数点分離記号は第2の固定小数点の数の小数点分離記号の位置とは異なる位置に位置決めされている。第1及び第2の固定小数点の数の小数点分離記号は、選択された位置に位置決めされてもよい。
【0073】
結果として得られる数は、
整数と、
浮動小数点の数と、
固定小数点の数と
で構成されるグループから選択された変数として表現されることが可能である。
【0074】
一般に、数学的システムは、1つ又は複数の微分方程式か、もしくは1つ又は複数の離散的マップ又はマッピングを含むことが可能である。微分方程式の場合、数学的システムは、1つ又は複数の常微分方程式及び/又は1つ又は複数の偏微分方程式を含むことが可能である。離散的マッピングの場合、数学的システムは、1つ又は複数の領域を保存するマップ、及び/又は1つ又は複数の領域を保存しないマップを含むことが可能である。数学的システムの少なくとも1つの関数は、非線形であることが可能である。
【0075】
本発明の方法はまた、積分方程式を含む他のタイプの関数又は方程式に適用可能である。少なくとも1つの非線形微分方程式又はマッピングはカオス的挙動を呈する可能性がある。すなわち、これは、少なくとも1つの正のリヤプノフ指数を有することがあり、この場合、本方法は、数学的計算の間に少なくとも1回はリヤプノフ指数を計算することを含むことが可能である。数学的システムがカオス的挙動を呈する場合には、本発明の方法は、擬似乱数発生方法において、例えば暗号化/復号化方法において効果的に適用されることが可能である。当該数学的システムがカオス的挙動を呈するか否かを決定するために、数学的計算の間に少なくとも1回だけ少なくとも1つのリヤプノフ指数が計算されてもよい。当該数学的システムがカオス的挙動を呈していないとき、例えば計算されたリヤプノフ指数が正でないときには、計算は中断され、他の初期値及び/又は他のパラメータから再開されることが可能である。
【0076】
少なくとも非線形な微分方程式又はマッピングは、好適には、少なくとも1つの独立変数tの関数でありうる少なくとも1つの状態変数Xを決定する。
【0077】
特に、数学的システムは以下のシステムのうちの1つ又は複数のものを含むことが可能である。
− 以下のものを含む連続な微分方程式、
− ナビエ・ストークス方程式等の偏微分方程式、
− 以下のものを含む常微分方程式、
− ローレンツシステム、結合されたローレンツシステム、レスラー(Roessler)システム、結合されたレスラーシステム、ハイパーカオス的レスラーシステム、ウエダ(Ueda)システム、最も単純な2次の散逸的なカオス的フロー、最も単純な区分的な線形の散逸的なカオス的フローを含む散逸フローのような自律システム、
− N≧3とするとき、天体力学からのN体問題を含むハミルトニアンシステム、
− 強制ダフィング方程式、強制負性抵抗発振子、強制ブリュセレータ(forced brusselator)、強制減衰振り子方程式、結合された振子、強制二重井戸発振子、強制ファン・デル・ポール発振子のような強制システムを含む非自律システム、
−遅延ロジスティック方程式、母集団モデル(population model)を含む遅延微分方程式。
【0078】
− 以下のものを含む離散的マッピング、
− 以下のものを含む、領域を保存する及び領域を保存しないマップ、
− テントマップ、非対称テントマップ、2xモジュロ1マップ及びアノーソフ(Anosov)マップと、一般化されたベーカー(Baker's)マップ、ロジ(Lozi)マップとのような、任意次元の区分的に線形のマップとともに、区分的に線形なマップの、より高次への一般化及び/又は結合、
− ロジスティックマップ、エノン(Henon)マップ及びN連結ロジスティックマップを含む(2次又はより高次の)多項式マップと、N連結エノンマップ等の多項マップの、より高次への一般化及び/又は結合、
− サインサークル(Sine circle)マップ、サイン(正弦)マップ、チリコフ(Chirikov)標準マップ、シナイ(Sinai)マップ、標準マップを含む三角関数マップと、三角関数マップの、より高次への一般化及び/又は結合、
− ベルヌーイシフト、10進シフト、馬蹄形マップ、イケダ(Ikeda)マップ、パイコネ(pastry)マップ、ディジタルフィルタのモデル、1次元の任意マップからの2次元のエノン型マップの構成、デボジェラエーレ(DeVogelaere)マップを含むその他のマップ。
− セルオートマトン。
− ニューラルネットワーク。
【0079】
上述のレスラーシステムは、次式の形式を有する。
【0080】
【数9】
Figure 2004530919
【数10】
Figure 2004530919
【数11】
Figure 2004530919
【0081】
ここで、典型的なパラメータ値は、a=b=0.2,c=5.7である。レスラーシステムについては、オー.イー.レスラー(O. E. Roessler),フィジカル・レターズ(Phys. Lett.),57A,397−398,(1976年)にさらに詳しく記述されている。
【0082】
上述のエノンマップは、次式の形式を有する。
【0083】
【数12】
Figure 2004530919
【0084】
ここで、典型的なパラメータ値は、a=1.4,b=0.3である。詳細に関しては、エム.エノン(M. Henon),コミュニケーションズ・イン・マセマティカル・フィジクス(Commun. Math. Phys.),50,69−77,(1976年)を参照されたい。
【0085】
n+1=μx(1−x)の形式のロジスティックマップが使用されてもよい。次式の形式を有し、しばしば猫写像(cat map)と呼ばれるアノーソフマップが使用されてもよい。
【0086】
【数13】
Figure 2004530919
【0087】
マップは、i)線形の行列乗算と、ii)非線形のモジュロ演算との2つのステップで構成され、後者は、反復を単位正方形内部に保持させる。アノーソフマップは、任意個数の変数に一般化することが可能である。さらに行列は、領域保存性であることとシステムに対して少なくとも1つの正のリヤプノフ指数を有することとの必要条件によってのみ制限される任意の係数を有することが可能である。これらの指数は、このようなシステムに対して解析的に計算可能である。詳細に関しては、エー.ジェイ.リヒテンベルク(A.J. Lichtenberg)及びエム.エー.リーバーマン(M. A. Liebermann),正則及びカオス力学(Regular and Chaotic Dynamics),シュプリンガー(Springer),1992年,(p.305)を参照されたい。
【0088】
さらに、結合マップの1つのタイプであるマップ格子が使用されてもよい。下記の例では、xは(複数の点にてなるN次元アレーで表現された)格子上の変数を表し、格子は、M個の点を有する1次元アレーである。格子上の各点は、矢印の右側の関数によって更新される。ここで、関数fは、例えばロジスティックマップであってもよい。例から分かるように、格子上の隣接する点は線形に結合し、ここで、線形の結合はパラメータγ及びεによって調整される。境界条件は、格子要素1及びMが扱われる方法を示す。
【0089】
【数14】
Figure 2004530919
【0090】
最後に、ある簡単な3次元の流動方程式(flow equation)を使用することが可能である。システムは通常、ローレンツシステム及びレスラーシステムより少ない項で構成される。すなわち、5つの項及び2つの非線形項(nonlinearity)、又は6つの項及び1つの非線形項のいずれかである。これに比べてローレンツ及びレスラーシステムは各々、7つの項で構成されている。ジェイ.シー.スプロット(J. C. Sprott),フィジカル・レビュー(Phys. Rev.),E50,R647−R650,(1994年)を参照されたい。適正なシステムは、下記のリストで与えられる。
【0091】
【数15】
Figure 2004530919
【数16】
Figure 2004530919
【数17】
Figure 2004530919
【数18】
Figure 2004530919
【数19】
Figure 2004530919
【数20】
Figure 2004530919
【数21】
Figure 2004530919
【数22】
Figure 2004530919
【数23】
Figure 2004530919
【数24】
Figure 2004530919
【数25】
Figure 2004530919
【数26】
Figure 2004530919
【数27】
Figure 2004530919
【数28】
Figure 2004530919
【数29】
Figure 2004530919
【数30】
Figure 2004530919
【数31】
Figure 2004530919
【数32】
Figure 2004530919
【数33】
Figure 2004530919
【0092】
ローレンツシステムは、次式の微分方程式を含む。
【0093】
【数34】
Figure 2004530919
【数35】
Figure 2004530919
【数36】
Figure 2004530919
【0094】
ここで、X=(x,y,z)は状態変数であり、tは独立変数であり、σ、r及びbはパラメータである。
【0095】
次式の条件が満たされる場合には、ローレンツシステムの定常点は安定ではなく、この場合のローレンツシステムは、おそらくカオス的挙動を呈している。
【0096】
【数37】
Figure 2004530919
【0097】
複数のパラメータは一定であっても、あるいは可変であってもよく、複数の可変なパラメータであれば、例えば計算結果がより予測不可能となることに寄与し、これは、擬似乱数発生方法又は暗号化/復号化方法においては有益である可能性がある。
【0098】
非線形マッピングの場合、計算は非線形関数の数値的な反復を含むことができ、反復は、状態変数Xの初期条件Xに基づいている。
【0099】
計算を実行するステップは、m≦n+1として1つ又は複数の以前の解Xと独立変数tのステップ長ΔTとに基づいて解Xn+1を反復して計算することにより、非線形微分方程式を数値積分することを含んでもよい。好適には、状態変数Xの少なくとも1つの初期条件Xと、ステップ長の初期値ΔTとが提供される。ステップ長は、計算が開始される前に与えられてもよく、又は、計算の進行に伴って計算されてもよい。例えば、ステップ長の初期値ΔTは、初期条件Xから計算されてもよい。
【0100】
ローレンツシステムの離散化された定式化では、解Xn+1は、ステップ長ΔT=(Δtx,n,Δty,n,Δtz,n)を使用して次式のように計算可能である。
【0101】
【数38】
Figure 2004530919
【数39】
Figure 2004530919
【数40】
Figure 2004530919
【0102】
ここで、
Δtx,nはxn+1の計算に使用されるステップ長であり、
Δty,nはyn+1の計算に使用されるステップ長であり、
Δtz,nはzn+1の計算に使用されるステップ長である。
【0103】
上述した通り、ステップ長ΔTは、計算を通して一定であってもよく、又は変化してもよい。例えば、積分ステップの各々又はいくつかにおいて、ステップ長ΔTの要素(Δtx,n,Δty,n,Δtz,n)のうちの少なくとも1つが、計算に関わる、もしくは計算から導出される1つ又は複数の数の関数であってもよい。また、各積分ステップにおいて、ステップ長ΔTの要素(Δtx,n,Δty,n,Δtz,n)のうちの少なくとも1つが、当該数学的システムに対する現在の解又は以前の解である、少なくとも1つの解Xの関数であってもよい。積分ステップの各々又はいくつかにおいては、ステップ長ΔTの要素(Δtx,n,Δty,n,Δtz,n)のうちの少なくとも1つが、現在又は以前の積分ステップである、少なくとも1つのステップ長ΔTの関数である。変化するステップ長ΔTは、本発明による方法だけでなく、微分方程式の任意の数値解にも使用可能であり、従って、本発明はまた、独立した態様として、可変なステップ長を使用して微分方程式を数値的に解く方法にも関連する。暗号化/復号化方法におけるような擬似乱数発生方法では、可変なステップ長は、システムのセキュリティの改善、すなわち結果として得られる鍵ストリームをさらに予測不可能なものにすることに寄与しうる。
【0104】
擬似乱数発生方法では、初期条件X及び/又はステップ長の初期値ΔTは、シード値から計算されてもよく、もしくはシード値を表現してもよい。暗号化/復号化方法では、初期条件Xの少なくとも一部及び/又はステップ長の初期値ΔTの少なくとも一部は、暗号化鍵から計算されてもよく、もしくは暗号化鍵を表現してもよい。また、数学的システムの少なくともいくつかのパラメータの少なくとも一部は、シード値又は暗号化鍵から計算されてもよく、もしくはシード値又は暗号化鍵を表現してもよい。鍵は、公開鍵であっても、秘密鍵であってもよい。
【0105】
抽出されたデータのセットは、暗号化に使用可能な擬似乱数を含む可能性がある。計算から結果として得られる複数の数が抽出されうる。抽出するステップは、結果となる1つ又は複数の数からのk個の最下位ビットのような、結果として得られる数の複数k個のビットから導出される1つ又は複数の数を抽出することを含んでもよく、このことは、導出される数の予測不可能性に寄与する。抽出されるkビットは、例えば、結果となる1つ又は複数の数にモジュラス又は論理“積”関数を適用することによって導出可能である。抽出するステップは、最下位のkビットを抽出することの代替として、結果として得られる数の予め決められた位置又は可変な位置におけるkビットを抽出することを含んでもよい。数kは、16−64、24−32のような、8と128との間の範囲から選択された整数値であることが可能である。複数の数が抽出される場合、抽出される数は異なる値のkによって導出されてもよく、このことがさらに、導出される数の予測不可能性に寄与する。抽出された1つ又は複数の数は、結合されたデータのセットを得るために、算術演算及び/又は論理演算によって操作されることが可能であれる。抽出された1つ又は複数の数及び/又は結合されたデータのセットは、元のデータを暗号化するために、算術演算及び/又は論理演算において元のデータと結合されることが可能である。同様に、抽出された1つ又は複数の数及び/又は結合されたデータのセットは、暗号化されたデータを復号化して元のデータを得るために、算術演算及び/又は論理演算において暗号化されたデータと結合されることが可能である。算術演算及び/又は論理演算は、XOR演算、乗算又は加算を含むことが可能である。例えば、算術演算及び/又は論理演算は、暗号化のための、元のデータと結合されたデータのセットとの加算と、復号化のための、暗号化されたデータからの結合されたデータのセットの減算とを含んでもよい。代替として、算術演算及び/又は論理演算は、暗号化のための、元のデータからの結合されたデータのセットの減算と、復号化のための、結合されたデータのセットと暗号化されたデータとの加算とを含む。数の減算又は加算を行うときには、モジュラス関数を適用することが必要な場合がある。抽出されたデータのセットが、複数の数から導出されたデータを含む場合、例えば最下位のkビットである、複数のビットにてなる1つのセットは、1つの数から抽出されることが可能であり、それに対して、例えば64ビット数における47−54番目のビットである他のビットは、他の数から抽出されることが可能である。
【0106】
ブロック暗号の暗号化/復号化システムでは、例えば暗号文を出力として与える暗号化システムに対して平文と鍵とが入力されるように、計算は、平文のブロックを表現するデータに作用することができる。ブロック暗号の暗号化及び復号化システムでは、平文のブロックに対する少なくとも1つの演算を定義するために、抽出されたデータのセットが使用されてもよい。本発明の第1の態様による方法はブロック暗号アルゴリズムに適用可能であり、ここで、平文のブロックは2つのサブブロックに分割され、一方のサブブロックは、他方のサブブロックに影響を与えるために使用される。ここでは、例えば、変更されたバージョンの最初のブロック(又はその一部)が、XOR関数等によって他方(又はその一部)に影響を与えるために使用される。このようなアルゴリズムは一般にフェイステル(Feistel)ネットワークと呼ばれる。ブルース・シュナイアーによる応用暗号学,第2版,ジョン・ワイリー・アンド・サンズ,1996年が参照される。このような場合、第1のサブブロック又はその変更されたバージョンは、本方法に依存するハッシュ関数によって変換されることが可能である。このハッシュ関数は、入力として暗号鍵を与えられる。反復毎に、ハッシュ関数には新たな暗号鍵を入力として与えてもよい。代替として、ハッシュ関数にはすべてのラウンドで同じ暗号鍵を与えることもできる。別の代替として、例えば、同じ暗号鍵を各ブロックの全ラウンドで入力として与えることにより、もしくは異なる暗号鍵を各ラウンドで各ブロックに対して入力として与えることにより、暗号鍵をブロック毎に変化させることもできる。
【0107】
抽出されたデータは、復号化鍵又は暗号化鍵として使用可能である。計算が2つの数学的システムで実行されるシステムでは、一方のシステムから抽出されたデータのセットは、他方のシステムの鍵の発生に使用されるか、もしくは他方のシステムの鍵として使用されることが可能である。抽出されたデータはまた、ディジタル署名を表現するデータの発生に、及び/又はディジタルデータへの電子透かしの埋め込みにも使用可能である。
【0108】
本発明の第1の態様による方法において、電子装置は所定のレジスタ幅を有する電子処理装置を備えてもよく、これにより当該方法は、
− 上記レジスタ幅より大きいビット幅の少なくとも1つの整数を、高々上記レジスタ幅に等しいビット幅をそれぞれ有する少なくとも2つのサブナンバーとして表現するステップと、
− 上記計算の少なくとも1つを上記サブナンバーの各々に対するサブ計算として実行し、高々上記処理装置のレジスタ幅に等しい、より小さなビット幅の整数として表された少なくとも2つの部分的結果に到達するステップと、
− 上記部分的結果を連結して、上記少なくとも1つの計算の結果の表現を発生させるステップとを含む。
【0109】
同様に、プロセッサのレジスタ幅より小さい幅の数の計算も実行可能であって、それによって、例えば論理積のような演算が実行可能であり、例えば64ビットレジスタの場合、32ビットの数に関する計算には64ビットレジスタの上位半分は使用されない。問題となる数の符号を保持するため、例えば32ビットの数の最上位ビットは、64ビットレジスタの上位32ビットへコピーされてもよい。
【0110】
整数は、通常、計算に使用される1つ又は複数の固定小数点の数を含み、もしくは表現している。整数型の数として表現される固定小数点の数は、実数を表すことが可能である。
【0111】
本発明の第1の態様による方法は、以下本発明の他の態様に関連して議論される任意のステップと組み合わされうるということは理解される必要がある。
【0112】
本発明はまた、少なくとも1つの関数を含む数学的システムにおいて数値計算を実行するコンピュータプログラムに関し、当該コンピュータプログラムは、
− 上記数学的システムを複数の離散的な項で表現することと、
− 上記数学的システムの少なくとも1つの変数を固定小数点の数として表現することと、
− 固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように、上記計算を実行することと、
− 上記計算から、結果として得られる数を取得することとに適応化され、上記結果として得られる数は、
− a.上記数学的システムに対する解の少なくとも一部と、
− b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
当該コンピュータプログラムはさらに、
− i.上記結果として得られる数のディジットのうちのサブセットと、
− ii.上記結果として得られる数から導出された数のディジットのうちのサブセットと
の少なくとも一方を表現するデータのセットを抽出するように適応化されている。
【0113】
本コンピュータプログラムはさらに、本願明細書で検討されている任意の演算及び方法のステップを実行するように適応化されていてもよい。本発明はまた、このようなコンピュータプログラムがロードされる、コンピュータが読み取り可能なデータキャリアに関し、かつこのようなコンピュータが読み取り可能なデータキャリアを備えたコンピュータ、又はこのようなコンピュータが読み取り可能なデータキャリアに接続されたコンピュータに関し、上記コンピュータは、当該プログラムを実行するプロセッサ手段を備えている。
【0114】
本発明はまた、数学的システムにおける計算から導出されている抽出されたデータのセットを含む信号に関し、抽出されたデータのセットに到達することを目的として、
− 上記数学的システムは複数の離散的な項で表現され、
− 上記数学的システムの少なくとも1つの変数は固定小数点の数として表現され、
− 上記計算は、固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように実行され、かつ、
− 結果として得られる数は上記計算から取得され、上記結果として得られる数は、
− a.上記数学的システムに対する解の少なくとも一部と、
− b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
これにより、抽出されたデータのセットは、
− i.上記結果として得られる数のディジットのうちのサブセットと、
− ii.上記結果として得られる数から導出された数のディジットのうちのサブセットと
の少なくとも一方を表現する。
【0115】
本発明はさらに、平文と、数学的システムにおける計算から抽出された少なくとも1つのデータのセットとの組み合わせとして導出されている暗号化されたデータのセットを含む信号に関し、上記抽出されたデータのセットに到達することを目的として、
− 上記数学的システムは複数の離散的な項で表現され、
− 上記数学的システムの少なくとも1つの変数は固定小数点の数として表現され、
− 上記計算は、固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように実行され、かつ、
− 結果として得られる数は上記計算から取得され、上記結果として得られる数は、
− a.上記数学的システムに対する解の少なくとも一部と、
− b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
これにより、抽出されたデータのセットは、
− i.上記結果として得られる数のディジットのうちのサブセットと、
− ii.上記結果として得られる数から導出された数のディジットのうちのサブセットと
の少なくとも一方を表現する。
【0116】
本発明の任意の方法及び/又はコンピュータプログラムから導出される任意のデータ及びこのようなデータを含む任意の信号もまた、添付された請求の範囲に含まれるということは理解される必要がある。さらに、後述される本発明の別の態様に関して以下に記述される任意の特徴、方法のステップ、又は機能は、本発明の第1の態様による方法と組み合わされうるということは理解される必要がある。
【0117】
第2の態様において、本発明は、少なくとも1つの独立変数に関連した少なくとも1つの状態変数を決定する少なくとも1つの非線形関数を含む数学的システムに対する解における周期的な挙動を検出する方法に関し、当該方法は、
− 数学的システムを複数の離散的な項で表現することと、
− 計算を実行して、結果として得られる数を取得することを含み、上記結果として得られる数は上記数学的システムに対する解の少なくとも一部を表現し、
− 選択された解を電子装置のメモリにおけるアレーAに記憶することを含み、上記アレーは有限個数n+1個の解を記憶するように適応化され、
当該方法は、
− 現在の解と、
− 上記アレーに記憶された上記解の特定の1つと
の少なくとも一方が、上記アレーに記憶された他の解と実質的に同一であるか否かを決定することを含む。
【0118】
計算を実行するステップと、選択された解を記憶するステップと、決定するステップとは、計算の間に連続して、すなわち計算の間に、例えば各反復に関連して、例えば各計算ステップで繰り返し実行されてもよい。
【0119】
現在の解又はアレーに記憶された解の特定の1つが、アレーに記憶された1つ又は複数の他の解と実質的に同一であれば、数学的システムの解はおそらく周期的な挙動を示している。本発明の第2の態様による方法が擬似乱数発生方法において使用される場合、特にこれが暗号化/復号化方法に使用されるとすれば、このような周期的な挙動は、発生された擬似乱数又は鍵ストリームの予測不可能性に悪影響を及ぼすことから望ましくない。上述の方法を適用すれば、周期的な挙動を検出することができる。
【0120】
現在の解又はアレーに記憶された解の特定の1つが、アレーに記憶された1つ又は複数の他の解と実質的に同一であるか否かを決定するステップは、好適には、解が完全に同一であるか否かを決定することを含む。状態変数Xのアレーを表す数学的システムを解く場合、この決定するステップは、Xのエントリのうちの一部のみが実質的に同一であるか否かを決定することを含んでもよい。
【0121】
計算時間及び/又はメモリを節約するために、選択された解のみがメモリに記憶されてもよい。
【0122】
当該方法において、アレーにおける各エントリは、アレーレベルA,0≦i≦n毎に増大している経過時間を有する解を含んでもよく、当該方法は、
− 選択された解をアレーに記憶するステップにおいて、現在の解をアレーAにおける0番目のレベルAに記憶し、これにより、アレーAにおける0番目のレベルで記憶された古い値に上書きすることと、
− 0番目の予め決められた基準が満たされているとき、0番目のレベルが現在の解によって上書きされる前に古い値をアレーAにおける1番目のレベルへ移動することとを含み、
アレーにおける第1のレベル及びそれ以上の各レベルiに対しては、
− レベルiに対するi番目の予め決められた基準が満たされているとき、i番目のレベルがi−1番目のレベルから移動される値によって上書きされる前に、i番目のレベルに記憶された古い値をアレーAにおけるi+1番目のレベルへ移動することを含み、
n番目のレベルが更新されるとき、n番目のレベルに以前に記憶された古い値を廃棄することを含む。
【0123】
アレー内の各レベルiに対して、i番目のレベルに記憶された古い値がi+1番目のレベルへ移動されることなく新しい値によって上書きされている回数を計数してもよく、予め決められた回数だけ古い値が移動されなかったならときにi番目の予め決められた基準は満たされる。この予め決められた回数は、アレーAのすべてのレベルで同一であってもよく、又は、それは複数のレベルの間で変化してもよい。アレーAのi番目のレベルに対するこの予め決められた回数は、例えば、1つ又は複数の値において符号の変化が発生する時などのように、アレーに記憶された1つ又は複数の値に依存してもよい。
【0124】
現在の解又はアレーに記憶された上記解の特定の1つが、アレーに記憶された1つ又は複数の他の解と実質的に同一であるか否かを決定するステップは、所定のテスト基準が満たされている場合にのみ実行されてもよい。例えば、テスト基準は、少なくとも1つの状態変数の符号が+から−へ変化する場合、又は−から+へ変化する場合、もしくはこれらの両方の場合に満たされうる。テスト基準はまた、少なくとも1つの独立変数に関する、少なくとも1つの状態変数の少なくとも1つの導関数の符号に変化が生じるときに満たされうるが、この場合は、当該方法はさらに導関数の計算を含む。
【0125】
当該方法において、テスト値は少なくとも1つの状態変数から、及び/又は導関数から計算されてもよく、テスト基準はこのテスト値に基づいている。テスト基準は、テスト値の符号又はテスト値の導関数の符号に変化が生じるときに満たされてもよく、もしくは予め決められた値が提供されてもよい。
【0126】
計算を実行するステップは、本発明の第1の態様による方法を適用することによって実行されてもよく、本発明の第1の態様に関連して議論される任意のステップとともに、本発明の別の態様による方法に関連して後述される任意のステップとが含まれてもよい。
【0127】
第3の態様において、本発明は擬似乱数を発生する方法に関し、当該方法は、
I)数学的システムを複数の離散的な項で表現することと、
II)数学的システムの少なくとも初期条件を表現するシード値を定義することと、
III)数学的システムの少なくとも1つの変数を固定小数点の数として表現することと、
IV)固定小数点の数として表現された少なくとも1つの変数を含む計算を実行し、かつ、上記計算から、結果として得られる数を取得することを含み、結果として得られる数は、
a.数学的システムに対する解の少なくとも一部と、
b.数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
V)計算の間に発生した少なくとも1つの数から導出された数を擬似乱数として抽出することを含む。
【0128】
当該方法が暗号化/復号化方法に適用される場合、シード値は、暗号化/復号化鍵のようなユーザが定義する値であってもよい。
【0129】
擬似乱数は、例えば1つ又は複数の数の最下位のkビット又は選択されたkビットであるような、計算の間に発生した1つ又は複数の数のk個のディジットから導出された数として抽出されてもよい。
【0130】
当該方法は、所定量の擬似乱数が発生されるまでステップIV)及びステップV)を反復することを含んでもよい。
【0131】
所定量の擬似乱数がスペアのシード値として発生されて、電子装置のメモリに記憶されてもよく、これは、例えば、本発明の第2の態様による方法によって、もしくは他の方法によって周期的な挙動が検出された場合に使用可能である。所定量の擬似乱数は、アルゴリズム内に記憶されてもよい。
【0132】
当該方法はさらに、先に議論したように、本発明の第2の態様による周期的な挙動を検出するための方法を含んでもよい。その場合、本発明の第3の態様による擬似乱数を発生するための方法は、
現在の解又はアレーに記憶された上記解の特定の1つが、アレーに記憶された1つ又は複数の他の解と実質的に同一であるか否かを決定するステップが、現在の解又は特定の解が1つ又は複数の他の解と同一であることを示すときに、
擬似乱数の発生を中断する、すなわちステップIV)及びステップV)の反復を中断することと、
スペアのシード値をステップII)においてシード値として使用することと、
擬似乱数の発生を再開する、すなわちステップIV)及びステップV)の反復を再開することを含むことができる。
【0133】
従って例えば、暗号化/復号化方法においては、周期的な挙動が検出されれば、スペアの暗号化/復号化鍵が使用されうる。
【0134】
擬似乱数の発生を再開するステップに先行して、所定量の擬似乱数が新たなスペアのシード値として発生されて、電子装置のメモリに記憶されてもよい。ステップIV)及びステップV)がステップII)における新たなシード値を用いて開始されるときには、アレーAの各レベルは、好ましくはステップIV)に先行してリセットされる。
【0135】
本発明の第3の態様による方法は、本発明の第1の態様に関連して上述されたステップ、及び/又は本発明の別の態様に関連して後述されるステップを含んでもよい。
【0136】
第4の態様において、本発明は、元のデータのセットを、暗号化されたデータのセットに暗号化する方法に関し、当該方法は、
A)擬似乱数を、
I)数学的システムを複数の離散的な項で表現するステップと、
II)数学的システムの少なくとも初期条件を表現する暗号化鍵を定義するステップと、
III)数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
IV)固定小数点の数として表現された少なくとも1つの変数を含む計算を実行し、かつ上記計算から、結果として得られる数を取得するステップであって、結果として得られる数は、
a.数学的システムに対する解の少なくとも一部と、
b.数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現するステップと、
V)計算の間に発生した少なくとも1つの数から導出された数を擬似乱数として抽出するステップとを実行することによって発生するステップと、
B)元のデータ及び擬似乱数を、
i.算術演算と、
ii.論理演算と
の少なくとも一方によって操作し、結合されたデータのセットを取得するステップとを含み、上記結合されたデータのセットは暗号化されたデータである。
【0137】
ステップA)に先行して、元のデータのサブセットがデータのセットから分離されてもよく、ステップB)はこのデータのサブセットに対して実行されてもよい。このステップは、元のデータのセット全体を共同で構成する複数のサブセットが暗号化されるまで反復されることが可能である。
【0138】
擬似乱数は、例えば最下位のkビット又は選択されたkビットであるような、計算の間に発生した1つ又は複数の数のk個のディジットから導出された数として抽出されてもよい。
【0139】
ステップIV)及びステップV)は、所定量の擬似乱数が発生されるまで反復されてもよい。
【0140】
所定量の擬似乱数がスペアの暗号化鍵として発生されて、電子装置のメモリに記憶されてもよい。例えば、計算の少なくとも1つの積分又は反復ステップから結果として得られる、もしくは生じる数は、スペアの暗号化鍵として記憶されることが可能である。スペアの暗号化鍵は、例えば、数学的システムに対する解における周期的な挙動の発生に起因して暗号化が中断されるときに使用されうる。スペアの暗号化鍵を出力することが不要である場合には、これは暗号化アルゴリズム内に記憶されてもよい。当該方法が復号化に使用される場合、スペアの鍵は復号化鍵である。
【0141】
上記記述から明らかであるように、当該方法は、本発明の第2の態様による周期的な挙動を検出するための方法を含んでもよく、その場合、本発明の第4の態様による暗号化するための方法は、
現在の解又はアレーに記憶された上記解の特定の1つが、アレーに記憶された1つ又は複数の他の解と実質的に同一であるか否かを決定するステップが、現在の解又は特定の解が1つ又は複数の他の解と同一であることを示すとき、
擬似乱数の発生を中断する、すなわちステップIV)及びステップV)の反復を中断することと、
スペアの暗号化鍵をステップII)において暗号化鍵として使用することと、
擬似乱数の発生を再開する、すなわちステップIV)及びステップV)の反復を再開することを含むことができる。
【0142】
擬似乱数の発生を再開するステップに先行して、所定量の擬似乱数が新たなスペアの暗号化鍵として発生されて、電子装置のメモリに記憶されてもよい。
【0143】
好適には、ステップIV)及びステップV)がステップII)における新たなシード値を用いて開始されるときには、アレーAの各レベルは、ステップIV)に先行してリセットされる。
【0144】
本発明の第4の態様による暗号化のための方法はさらに、本発明の第1、第2及び第3の態様による方法に関連して上述された任意のステップ、及び/又は本発明の別の態様に関連して後述される任意のステップを含んでもよい。
【0145】
第5の態様において、本発明は、本発明の第4の態様による方法によって暗号化されている暗号化されたデータのセットを復号化する方法に関し、この第5の態様による復号化するための方法は、
a)暗号化方法に関連して先に定義されたステップA)を実行することで、暗号化方法のステップV)において抽出されたものと同じ擬似乱数を抽出するステップと、
b)暗号化されたデータ及び擬似乱数を算術演算及び/又は論理演算によって操作し、元のバージョンのデータ、すなわち復号化されたバージョンのデータを取得するステップとを含む。
【0146】
ステップa)に先行して、暗号化されたデータのサブセットは暗号化されたデータのセットから分離されてもよく、かつデータのサブセットが上述の暗号化方法によって暗号化されている場合、復号化する方法は、このデータのサブセットに対してステップa)及びステップb)を実行することを含みうる。このステップは、暗号化されたデータのセット全体を共同で構成する複数のサブセットが復号化されるまで反復されてもよい。
【0147】
暗号化されたデータを復号化するときに、暗号化方法のいずれのステップも、元のデータを暗号化する以前のシーケンスの間と同じ方法で適用されることが可能である。
【0148】
本発明の第1、第2、第3及び第4の態様に関連して上述されたいずれのステップも、本発明の第4の態様による復号化する方法にさらに適用されてもよい。さらに、本発明の第5の態様によるステップは、後述される本発明の別の態様に含まれてもよい。
【0149】
第6の態様において、本発明は、データのセットを暗号化しかつ復号化するコンピュータプログラムに関し、上記コンピュータプログラムは暗号化モード及び復号化モードで実行するように適応化され、上記コンピュータプログラムはさらに、
i)下記のステップ、すなわち、
− 数学的システムを複数の離散的な項で表現するステップと、
− 数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
− 固定小数点の数として表現された少なくとも1つの変数を含む計算を実行するステップと、
− 上記計算から、結果として得られる数を取得するステップであって、結果として得られる数は、
a.数学的システムに対する解の一部と、
b.数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現するステップと、
− 計算の間に発生した少なくとも1つの数から導出された数を擬似乱数として抽出するステップと
を実行することにより、擬似乱数を再現可能な方法で発生し、
ii)データ及び擬似乱数を、
− 算術演算と、
− 論理演算と
の少なくとも一方によって操作し、結合されたデータのセットを取得するように適応化され、
− 上記コンピュータプログラムが暗号化モードで実行されている場合、上記結合されたデータのセットは上記データの暗号化されたバージョンを表現し、
上記コンピュータプログラムが復号化モードで実行されている場合、上記結合されたデータのセットは上記データの復号化されたバージョンを表現している。
【0150】
操作するステップは、上述の任意の論理関数及び/又は算術関数を含んでもよい。データを操作するためにXOR演算子が使用される場合、暗号化モードと復号化モードとは同一のステップを含むことが可能である。
【0151】
擬似乱数を発生するステップは、本発明の第3の態様による方法に関連して上述された任意のステップをさらに含んでもよい。
【0152】
本発明の第6の態様によるコンピュータプログラムは、本発明の第1、第2、第3、第4及び第5の態様に関連して上述された任意のステップとともに、本発明の別の態様に関連して後述される任意のステップを実行するように適応化されてもよい。
【0153】
本発明はさらに、本発明の第6の態様によるコンピュータプログラムがロードされる、コンピュータが読み取り可能なデータキャリアに関し、かつこのようなコンピュータが読み取り可能なデータキャリアを備えたコンピュータ、又はこのようなコンピュータが読み取り可能なデータキャリアに接続されたコンピュータに関し、上記コンピュータは、当該プログラムを実行するプロセッサ手段を備えている。
【0154】
第7の態様において、本発明は擬似乱数を発生する方法に関し、当該方法は、1つのインスタンスにおいて、
I)数学的システムを複数の離散的な項で表現することと、
II)数学的システムの少なくとも初期条件を表現するシード値を定義することと、
III)数学的システムの少なくとも1つの変数を固定小数点の数として表現することと、
IV)固定小数点の数として表現された少なくとも1つの変数を含む計算を実行して、結果として得られる数を取得することを含み、結果として得られる数は、
a.数学的システムに対する解の一部と、
b.数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
V)計算の間に発生した少なくとも1つの数から導出された数を擬似乱数として抽出することと、
ステップI)乃至V)を複数のインスタンスで並列に実行することを含む。
【0155】
2つ以上のインスタンスにおける計算は、同時に実行されるか、連続して実行されるかのいずれかであることが可能である。従って、2つ以上のインスタンスにおける計算は、複数の計算を同時に処理する命令を実行することにより、もしくは一時に単一の計算のみを処理する命令を実行することにより、行うことができる。
【0156】
従って、並列な複数のインスタンスにおける擬似乱数の発生は、いくつかの場合には、特に当該方法が実行されるハードウェアが並列処理をサポートしているときには、ステップが1つのインスタンスのみで実行されるときより高速である。さらに、2つ以上のインスタンスを結合することにより、1つしか使用されなかった場合よりも、暗号化においてはより長い鍵を適用することができる。例えば、暗号化鍵の1つの部分を第1のインスタンスに使用し、暗号化鍵の他の部分を第2のインスタンスに使用することができる。
【0157】
任意の高次元の数学的システムは、より低い次元の複数のシステムを結合することによって構成されうる。例えば、N個のロジスティックマップを結合すれば、N次元システムを生み出すことができる。結合するメカニズムは、N個の異なる変数に対応するN個の異なるマップにおける線形関数又は非線形関数のいずれかを含むことによって構成されることが可能である。1つの変数を決定するマップ内の結合関数は、他のすべての変数に依存する場合も依存しない場合もある。代替として、結合は、N個の変数のうちの1つを残りのN−1個のマップのうちの1つ又は複数に代入することによって実行されうる。
【0158】
2つ以上のロジスティックマップは、線形な結合項を介して結合されてもよい。以下に示された例では、結合項の前のパラメータε及びεは、結合の強度、すなわち2つのロジスティックマップの各々が他方に対して有する影響の程度を制御する。
【0159】
【数41】
Figure 2004530919
【0160】
数又はデータは、少なくともインスタンスの各々についてステップIV)を実行する間は、複数のインスタンスの間で送信されてもよい。ステップV)についても、同じことが当てはまる。
【0161】
当該方法は、インスタンスの各々におけるステップV)で抽出された複数の擬似乱数を、算術演算及び/又は論理演算を使用して共通の擬似乱数に結合することを含んでもよい。
【0162】
パラメータ値及び/又は変数値、もしくはこれらの一部は、2つのインスタンスの間で交換されてもよい。従って、例えば一方のインスタンスのxn+1ともう一方のインスタンスのxn+1とが各反復ステップの後で交換されてもよく、もしくは一方のインスタンスのxn+1がもう一方のインスタンスのyn+1と交換されてもよい。同様に、ステップ長Δtも2つのインスタンス間で交換されうる。変数値又はパラメータ値の交換はまた、第1のインスタンスの値に対して、その値が第2のインスタンスの値の変更に使用される前に、論理演算及び/又は算術演算を実行することにより達成されうる。
【0163】
本発明の第7の態様による方法は、本発明の他の態様に関連して上述された、もしくは後述される任意のステップを含んでもよい。
【0164】
第8の態様において、本発明は、少なくとも1つの関数を含む数学的システムにおいて数値計算を実行する方法に関し、当該方法は、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
− 固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように、上記計算を実行するステップと、
− 上記計算から、結果として得られる数を取得するステップとを含み、上記結果として得られる数は、
a.上記数学的システムに対する解の少なくとも一部と、
b.上記数学的システムの数値解に関連した別の計算において使用可能な数と
の少なくとも一方を表現し、
上記計算を実行するステップは、
− 少なくとも1つの以前の解X,m≦n+1に基づいて解Xn+1を反復して計算することを含み、これにより上記計算を実行するステップは、状態変数Xの少なくとも1つの初期条件Xに基づいて開始され、
当該方法はさらに、
− 暗号鍵を上記計算への入力として提供することを含み、これにより上記暗号鍵は初期条件Xの発生に使用される。
【0165】
ここのコンテキストにおいて、“以前の解”という用語は現在の解Xn+1も含むということは理解される必要がある。
【0166】
ここで本発明の他の態様に関連して記述された任意のかつすべてのコメント及び議論は、本発明の第8の態様による方法にも当てはまる。
【0167】
第9の態様において、本発明は、データのセットを識別するための識別値を決定する方法に関し、当該方法は少なくとも1つの関数を含む数学的システムにおいて数値計算を実行することを含み、当該方法は、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
− 固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように、上記計算を実行するステップと、
− 上記計算から、結果として得られる数を取得するステップとを含み、上記結果として得られる数は、
a.上記数学的システムに対する解の少なくとも一部と、
b.上記数学的システムの数値解に関連した別の計算において使用可能な数と
の少なくとも一方を表現し、
これにより、データのセットの少なくとも一部の表現は上記計算において使用され、
当該方法はさらに、
− 上記結果として得られる数の少なくとも一部を上記識別値として抽出することを含む。
【0168】
従って、本発明の第9の態様による方法は、先に詳述されたハッシュ関数又はハッシュアルゴリズムと見なされてもよい。識別値は、数値計算における異なる計算ステージで抽出された多数の被抽出数によって構成されることが可能である。抽出は、各計算ステップにおいて、又は各反復ステップにおいて発生してもよく、あるいは、それは、選択された計算ステージでのみ発生してもよい。
【0169】
“識別値”という用語は、データのセットを識別するハッシュ値又は暗号チェックサムであることが可能である。ブルース・シュナイアーによる応用暗号学,第2版,ジョン・ワイリー・アンド・サンズ,1996年が参照される。暗号鍵が計算のシード値として使用される場合、ハッシュ関数はMAC関数(メッセージ認証コード)と呼ばれる。
【0170】
数学的システムは、偏微分方程式又は常微分方程式等の微分方程式、もしくは領域を保存するマップ又は領域を保存しないマップ等の離散的マッピングを含んでもよい。数学的システムは、少なくとも1つの状態変数Xを決定する少なくとも1つの非線形マッピング関数を含んでもよい。
【0171】
非線形マッピング関数は、例えば、xn+1=λx(1−x)の形式を有するロジスティックマップを含んでもよい。ここで、λはパラメータであり、xn+1は計算の(n+1)番目のステージにおける状態変数xの値であり、xは計算のn番目のステージにおける状態変数xの値である。
【0172】
ロジスティックマップは、xn+1=λx(1−x)+ε(x−m)の形式に変形されもよい。ここで、λ及びεはパラメータであり、xn+1は計算の(n+1)番目のステージにおける状態変数xの値であり、xは計算のn番目のステージにおける状態変数xの値であり、mはデータのセットのn番目の部分の表現を含む。
【0173】
暗号鍵は、λ、ε及び状態変数xの初期値xのうちの少なくとも1つを少なくとも部分的に決定するために使用されてもよい。
【0174】
数学的システムは、
− 次式の形式を有するアノーソフマップ、
【数42】
Figure 2004530919
又は、
− 次式の形式を有するエノンマップ
【数43】
Figure 2004530919
等の、複数の非線形マッピング関数にてなるセットを含んでもよい。
【0175】
数学的システムは、少なくとも1つの非線形微分方程式、及び/又は複数の非線形微分方程式にてなるセットを含んでもよい。
【0176】
好適には、数学的システムは少なくとも1つの正のリヤプノフ指数を有し、これにより、ある程度の不規則さ、又はカオス的挙動が達成され、これにより、システムのランダムな特性とセキュリティとが強化される。
【0177】
数学的システムがカオス的挙動を呈しているか否かを決定するために、数学的計算の間に、少なくとも1つのリヤプノフ指数が少なくとも1回計算されてもよい。これがカオス的挙動を呈していなければ、すなわち計算されたリヤプノフ指数が正でなければ、計算は中断され、他の初期値及び/又は他のパラメータから再開されることが可能である。
【0178】
少なくとも1つの非線形微分方程式は、好適には、少なくとも1つの独立変数tの関数である少なくとも1つの状態変数Xを決定する。複数の非線形微分方程式にてなるセットは、例えばローレンツシステムを含んでもよい。
【0179】
ここで本発明の他の態様に関連して記述された任意のかつすべてのコメント及び議論は、本発明の第9の態様による方法にも当てはまる。
【0180】
第10の態様において、本発明は、少なくとも1つの関数を含む数学的システムにおいて数値計算を実行する方法に関し、当該方法は、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記関数の少なくとも1つの選択された変数の範囲を制限するステップとを含み、上記範囲は、上記範囲によって制限されない場合に上記選択された変数が上記関数によって有したであろう値を除外するように十分に狭く、
− 計算を実行して、結果として得られる数を取得するステップを含み、上記結果として得られる数は、
a.上記数学的システムに対する解の一部と、
b.上記数学的システムの数値解に関連した別の計算において使用可能な数と
の少なくとも一方を表現し、
− 計算の結果として得られる選択された変数の値が上記範囲を超えているとき、上記選択された変数に上記範囲内の値を割り当てるステップを含む。
【0181】
例えば、上記範囲を超えている値の上位ビットが切り捨てられると、上記範囲内の値を割り当てるステップはモジュラス関数と考えることができる。従って、本発明の第10の態様による方法のこれらのステップは、暗号化/復号化システムのランダムな特性を強化するため、及び/又は暗号化されたデータから数学的システムの内部状態に関する情報を導出することをより困難にするために、意図的なオーバーフローをもたらすことができる。
【0182】
ここで本発明の他の態様に関連して記述された任意のかつすべてのコメント及び議論は、本発明の第9の態様による方法にも当てはまる。特に、暗号化及び復号化に関連して記述された任意のかつすべてのコメントが当てはまり、また、本発明の第10の態様による方法も同様に、本発明の任意のかつすべての態様に、特に暗号化及び復号化に関する態様に当てはまる。
【0183】
従って本発明の第10の態様による方法は、例えば暗号化及び復号化の少なくとも一方に使用される擬似乱数を発生する、擬似乱数発生方法の一部であってもよい。数学的システムは、好適には、少なくとも1つの正のリヤプノフ指数を有する。
【0184】
第11の態様において、本発明は、少なくとも1つの関数を含む数学的システムにおいて数値計算を実行する方法を提供し、当該方法は、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を整数として表現するステップと、
− 上記整数内に仮想小数点分離記号を配置するステップとを含み、これにより上記整数は実数を表現し、
− 整数として表現された少なくとも1つの変数を含む計算を実行して、結果として得られる数を取得するステップを含み、上記結果として得られる数は整数として表され、
− 下記ステップ、すなわち、
− 上記整数における上記仮想小数点分離記号の位置を訂正するステップと、
− 上記結果として得られる数に仮想分離記号を配置するステップと
の少なくとも一方を実行することにより、結果として得られる数における上記仮想小数点分離記号を、予め決められた位置に位置決めするステップを含む。
【0185】
結果として得られる数は、通常は、固定された位置の小数点分離記号を有する固定小数点の数である。代替として、結果として得られる数における小数点分離記号の位置は、計算が完了した後に訂正されてもよい。第3の可能性は、小数点分離記号の位置を計算を実行する前と後で訂正することである。結果として得られる数における小数点分離記号から左の位置のすべてが使用されていない場合であって、かつ、計算においては、結果として得られる数の分解能より相対的に高い分解能を保持することが望ましい場合には、このことが適切なときがある。例えば、結果として得られる数は、S(10.21)のフォーマットを有することが望ましい。従って、例えば2つのS(7.24)フォーマットの数の加算は、S(8.23)のフォーマットで実行されてもよく、次いで、これは、S(10.21)のフォーマットの、結果として得られる数に変換される。これにより、引数における最下位ビットから2番目及び3番目のビットの桁上げが結果を左右する可能性がある。
【0186】
最後に、計算によっては、任意の小数点分離記号の位置を訂正することが不要である、又は必要のない場合がある。
【0187】
小数点分離記号の位置の訂正は、通常はシフト演算によって実行される。
【0188】
ここで本発明の他の態様に関連して記述された任意のかつすべてのコメント及び議論は、本発明の第9の態様による方法にも当てはまる。
【0189】
第12の最も広範な態様において、本発明は、少なくとも1つの関数を含む数学的システムにおいて数値計算を実行する方法を提供し、当該方法は、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
− 固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように、上記計算を実行するステップと、
− 上記計算から、結果として得られる数を取得するステップとを含み、上記結果として得られる数は、
a.上記数学的システムに対する解の少なくとも一部と、
b.上記数学的システムの数値解に関連した別の計算において使用可能な数と
の少なくとも一方を表現する。
【0190】
ここで本発明の他の態様に関連して記述された任意のかつすべてのコメント及び議論は、本発明の第9の態様による方法にも当てはまる。
【0191】
第13の態様において、本発明は、少なくとも1つの関数を含む非線形な数学的システムにおいて数値計算を実行する回路を提供し、
上記回路は、数学的システムが、上記回路又はコンピュータプログラムコードにおいて、上記数値計算のうちの少なくとも選択された1つが整数演算を含むように変形された項で表現されるように設計又はプログラムされ、これにより、数学的システムの変形されていない表現における上記選択された数値計算は、1つ又は複数の浮動小数点演算か、又は1つ又は複数の固定小数点の数における小数点分離記号の位置決めを制御することかを必要とし、
上記回路は、上記選択された計算は1つ又は複数の整数に対する少なくとも1つの置換計算によって置き換えられるように設計又はプログラムされ、これにより数学的システムは、上記回路又はコンピュータプログラムコードにおいて、上記少なくとも1つの置換計算が仮想小数点分離記号の位置決めを必要としないように表される。
【0192】
数学的システムは、カオス的挙動を呈することが可能である。
【0193】
従って、例えば下記計算、
【数44】
Figure 2004530919
及び、
【数45】
Figure 2004530919
は、まずxn+1を計算することによって実行可能である。次に、yn+1の式は次式によって計算可能である。
【0194】
【数46】
Figure 2004530919
【0195】
これにより、yに2を乗算する計算ステップを省略することができる。
【0196】
従って、置換計算の実行により、計算時間を節約することができる。
【0197】
同様に、本発明はまた、電子回路において、少なくとも1つの関数を含む非線形な数学的システムにおいて数値計算を実行する方法を提供し、当該方法は、上記回路において、又は上記回路の動作のよりどころとなるコンピュータプログラムセグメントにおいて、
− 上記数学的システムを、上記数値計算の少なくとも選択された1つが整数演算を含むように変形された項で表現するステップを含み、これにより、数学的システムの変形されていない表現における上記選択された数値計算は、1つ又は複数の浮動小数点演算か、あるいは1つ又は複数の固定小数点の数における小数点分離記号の位置決めの制御を必要とし、
− 上記選択された計算を、1つ又は複数の整数に対する少なくとも1つの置換計算によって置き換えるステップを含み、これにより数学的システムは、上記回路又はコンピュータプログラムコードにおいて、上記少なくとも1つの置換計算が仮想小数点分離記号の位置決めを必要としないように表され、かつ、
上記置換計算を実行するステップを含む。
【発明を実施するための最良の形態】
【0198】
図1は、ディジタルデータを暗号化し、送信し、復号化するシーケンスの概要図である。図2は、ブロック暗号システムにおける暗号化シーケンスを示す図であり、図3は、ストリーム暗号システムにおける暗号化シーケンスを示す図である。ブロック暗号システム及びストリーム暗号システムについては、先の本発明の背景技術についての議論において述べられている。
【0199】
次に、本発明の様々な態様による好適な実施形態として、データを暗号化/復号化するための方法とアルゴリズムについて説明する。本アルゴリズムは、データの暗号化/復号化における大部分の目的に適用可能である。しかしながら、本アルゴリズムは、本質的に、大きなファイル、ライブ又は予め記録された音声/ビデオ、著作権で保護された素材(コンピュータゲーム又は他のソフトウェア等)、及び記憶するためのデータ(バックアップ及び/又は移動(transportation)等)といった、データストリーム又は他の連続的なデータの暗号化において有利である。さらに、本アルゴリズムは、その速さにより、これらの目的に特に適合するものとなっている。本アルゴリズムは、その計算方法に起因して、非常に小さなプロセッサ上でも使用可能である。
【0200】
本アルゴリズムは、擬似ランダムシーケンス・ストリーム暗号システム(PRSSC)に依存する。PSSRCシステムは擬似乱数発生器(図4の外側のボックスの内容物)によって特徴付けられ、当該発生器は、2進数の鍵に基づいて、擬似ランダムなデータのシーケンスを発生する。図4で参照されるように、いわゆる鍵ストリームであるこのシーケンスは、暗号化及び復号化に使用される。鍵ストリームは、可能な各鍵に固有のものである。
【0201】
平文に対して論理XOR関数(図面の中では
【数47】
Figure 2004530919
の記号で表されている)を適用すると、同量の鍵ストリームが平文を暗号化する。XOR関数の出力が暗号文である。この暗号文にもう一度同じアプローチを適用すると、暗号文が復号化されて平文になる。復号化に使用された鍵が暗号化に使用された鍵と完全に同一であれば、復号化は、暗号化された平文のみを復号化する。
【0202】
暗号化されたデータの完全性は、暗号文を復号化する能力のある鍵に存在している。従って、鍵の推測は困難でなければならない。これを保証するため、本アルゴリズムの基本設計は、少なくとも128ビットの鍵を使用している。128ビットの鍵サイズは、約3.4・1038個の異なる鍵を生み出す。
【0203】
本アルゴリズムは、次の3つの常微分方程式で構成されるローレンツシステムのような、カオス的挙動を呈するシステムを使用する。
【0204】
【数48】
Figure 2004530919
【数49】
Figure 2004530919
【数50】
Figure 2004530919
【0205】
ここで、σ,r,bはパラメータであり、x,y,zは状態変数である。
【0206】
図5は、ローレンツシステムの数値解のプロットを示す。
【0207】
システムでカオスが発生するためには、次式のパラメータ基準が満たされる必要がある。
【0208】
【数51】
Figure 2004530919
【0209】
これが満たされたとしても、すべての解がカオス的となるわけではない。パラメータ空間には、いわゆる周期窓が存在することがあり、これは、周期解を発生させる、複数のパラメータの組み合わせを示す。システムを実装する前に、リヤプノフ指数の計算を使用してパラメータ空間の解析が行われる。一般に、正のリヤプノフ指数は、数学的システムに対する解がカオス的であることを示す。エドワード・オット(Edward Ott),力学系におけるカオス(Chaos in Dynamical Systems),ケンブリッジ大学出版局(Cambridge University Press),1993年を参照されたい。
【0210】
複数のパラメータは、典型的には、暗号化鍵のような又は暗号化鍵の一部のようなシード値から決定される。好適には、本発明による方法を具体化するアルゴリズムは、予め定義された区間内にあるパラメータ値のみが可能にされるように設計され、これにより、システムが正のリヤプノフ指数を有することの確率が高くなることを保証する。従って、数学的システムは、カオス的挙動を呈することについて高い確率を有する。それに加えて、又はそれに代わって、リヤプノフ指数は、数学的システムに対する解のカオス的でない挙動を検出できるように、数学的計算の開始ときに、もしくは数学的計算の間に決定されてもよい。
【0211】
数学的システムはまた、他の連続的なシステム(レスラーシステム等)又は離散的マップ(エノンマップ等)である可能性もある。
【0212】
積分は、数値積分ルーチンを使用して実行される。初期条件及び積分ステップ長が提供されると、数値積分ルーチンは、例えばオイラー法又はルンゲ・クッタ法を使用して、離散的なメッシュ点における解を計算する。オイラー法を使用してローレンツ方程式を離散的な項で表現すると、次の方程式から解を計算することができる。
【0213】
【数52】
Figure 2004530919
【数53】
Figure 2004530919
【数54】
Figure 2004530919
【0214】
計算は、後に説明する固定小数点の数を使用して実行可能である。
【0215】
複数の微分方程式にてなるシステムの数値積分の間、従属変数ではない連続変数(時間t又は空間s等)は離散化される。この処理は、連続的な区間[a;b]を離散的な点のセットで置換することを示す。こうしたシステムでは、ΔT=(Δt,Δt,Δt)は通常、積分のステップ長、又は積分ステップと呼ばれる。
【0216】
図7は、複数のカオス的システムのような、同一のシステム又は異なるシステムの2つ以上のインスタンスを同時に計算する可能な方法を示す。本方法は、より高速の計算速度及び改善されたセキュリティをもたらし、より大きな鍵が使用可能である。好適には、2つのシステム間に、例えばΔt,Δt及び/又はΔtの交換等のステップ長の交換のような何らかの通信又は結合が存在すべきである。
【0217】
内部変数は、基本設計では各々32ビット幅であるが、任意の可変幅も使用可能である。ローレンツシステムを使用する場合は、6つの内部変数(3つの状態変数及び3つのパラメータ)が存在する。従って、内部変数セットによって与えられた発生器の内部状態を表現するために、(基本設計では)192ビットが使用される。128ビット鍵を192ビットまでパディングすることは、不正な値を回避するように、すなわち、すべての変数が、許容された値を含むように、かつ鍵からのビットが無視されることを防止するように実行される必要がある。パディングは、予め決められた0及び1の値を挿入することか、又は鍵からのビットを反復することを含むことが可能である。図6は、パディングによる鍵の拡張を示す図である。
【0218】
積分は、例えば任意の1つの状態変数から計算可能な、可変な時間ステップを使用して実行されることが可能である。基本設計では、ステップ長Δtは、各積分ステップで変化する。この変動は、状態変数Xに結合される。
【0219】
鍵ストリームは、複数の状態変数に関連するデータのうちのいくつかのものから抽出される。これは、y変数から最下位の8ビットを抽出することによって、又は、例えば1つのステップの計算において実行された1つ又は複数の乗算から、計算で消去されたデータのうちのいくつかのものを収集することによって実行可能である。
【0220】
一般に、カオス的システムの計算は、コンピュータ上で浮動小数点の変数を使用して実行される。しかしながら、この方法は複数の問題を発生させる。1つの問題点は、浮動小数点の変数を使用すると、浮動小数点を異なるコンピュータシステムへ実装するときの僅かな差に起因して、同一の鍵が使用された場合でも異なるコンピュータで異なる鍵ストリームを発生させうることにある。
【0221】
従って、固定小数点の変数が使用される。固定小数点の変数は整数のデータ型に基づき、これは様々なコンピュータシステム上で等しく実装される。実数のような数を表すためには、小数点より後のディジットが必要とされ、小数点は、数の終わり以外のどこかに人為的に配置される(例えば12345ではなく12.345)。
【0222】
本アルゴリズムの適正な演算を保証するため、好適にはいくつかのテストが実行される必要がある。これらのテストはのうちのあるものは実行ときに行われ、他のものは設計ときに行われる。
【0223】
初期化処理の一部として、状態変数の完全なデータコンテンツ(例えば192ビット)に等しいか、もしくは所定量の完全な鍵(例えば128ビット)に等しい量の鍵ストリームが本アルゴリズムを使用して発生され、周期解又は定常点の検出のために鍵が再ロードされる必要がある場合には、上記鍵ストリームは保存される。この場合、保存されたシーケンスは新しい鍵としてロードされ、余分な鍵(extra key)の抽出を含む初期化が再度実行される。
【0224】
コンピュータ上での数の有限な表現に起因して、どの数値解も周期的となる。しかしながら、いくつかの鍵は、やや短い周期を有する鍵ストリームを結果的にもたらすことがある。これは、システムのセキュリティを損なう可能性があるために望ましくない。従って、本発明は、このような周期解を検出するためのアルゴリズムを含んでいる。このアルゴリズムは、変数の符号又は変数の勾配を監視する。ローレンツシステムを使用する場合は、xに対してチェックが実行される。符号がマイナスからプラスへ変化する(又はプラスからマイナスへ、もしくは単に変化する)と、位置チェックが実行される(位置チェックは、全反復の後でも実行可能である)。位置チェックは、状態変数の完全なセットを、以前からのバッファリングされたセットと比較する。完全な一致が発見されれば、周期解が検出される。
【0225】
力学システムの定常点は、反復の間も変化しないままである、複数の状態変数のセットである。このような定常点は、複数の状態変数の現在のセットを最終のセットと比較することによって、又はすべての変数の勾配がゼロであるか否かをチェックすることによって、もしくは1つの変数の現在の勾配とその以前の勾配とが両方ともゼロであるか否かをチェックすることによって検出可能である。
【0226】
カオス的システムは何らかの理由で周期解に入る。システムのセキュリティを損なわないためには、周期解を検出して訂正しなければならない。システムの解が周期的になれば、数学的システムの解から抽出される数もまた周期的になり、よって擬似ランダムではなくなるので、好ましくは、暗号化は停止されるものとする。周期解のテストは、解の座標を以前に計算された座標と比較することを含む。完全な一致が発見されれば、システムは周期解に入っている。
【0227】
以前に計算された座標を記憶するのに必要なメモリの量を減らすため、かつ座標のテストに必要な処理時間を短縮するため、座標キャッシュには選択された座標のみが記憶される。周期解をテストするために必要なプロセッサ時間を短縮するため、テストは、座標が所定の基準を満たす場合にのみ実行される。図8は、周期解のチェックを実行する原理を示している。
【0228】
図9は周期解を有する数学的システムを示し、特に、周期解を有する2次元非線形システムを示している。本システムは決定論的である。これは、解がその初期条件によって完全に特定されることを意味する。理論上、この解は連続となり、よって無限に多い点で構成される。システムを数値的に解く場合は、時間区間が離散化され、これらの点で解が計算される。数学的システムに対する数値解は、単なる座標セットのシーケンスである。2次元システムについて考察すると、解は、図9の曲線上の点で示された、多数の点(x,y)において特定される。システムの決定論的性質は、解が前にも来たことのある1つの点をヒットすることがあれば、その解は周期的であり、今後も周期的であり続けることを含意している。本テストでは、この性質が使用されている。
【0229】
数値積分の間に周期解をテストするためには、計算された現在の座標セットを以前の値と比較する必要がある。これを実行するため、座標セットは、それらが計算されたときに記憶される。この記憶は待ち行列(キュー)のように機能し、座標キャッシュと呼ばれる。計算された座標セットは、座標キャッシュ内のすべての座標セットと比較される。完全な一致(2つの座標セット中のすべての値が等しい)が発見されると、システムは周期的状態にある。完全な一致が存在せず、テストに合格すれば、周期的挙動は検出されず、計算を続けることができる。テストされた座標は、計算の継続の前に、後の計算用にキャッシュに追加される。
【0230】
計算されたシステムの座標セットのすべてをキャッシュに保存するためには、あまりに多くのメモリ及びプロセッサ時間が必要になる。従って、図10に示されたように、選択された座標のみが記憶される。
【0231】
キャッシュは多くのレベルよりなり、その各々がレベル毎に増大する経過時間の座標を含んでいる。各テストの後、又は多くのテストの後、テストされた座標はレベル0に書き込まれる。座標がレベル0に2度目(又は他の任意のとき)に書き込まれる毎に、古い値は、それが上書きされる前にレベル1へ書き込まれる。他のレベルにおいて座標を書き込む方法も同様であり、値が任意のレベルに2度目に書き込まれる毎に、古い値は、それが現在のレベルで上書きされる前に次のレベルへ移動される。
【0232】
本方法により、座標キャッシュは指数関数的に増える経過時間を有する座標を含むことになる。レベル0は、1又は2の経過時間(以前にチェックされた座標か、又は以前にチェックされた座標より1つ前の座標)を有する座標を記憶し、レベル1は3−6の経過時間(座標が書き込まれた後のテストにおいて3であり、次いで次の座標が書き込まれるまで順次6まで増加する)を有する座標を記憶し、レベル2は7−14の経過時間を有する座標を記憶する、等々となる。
【0233】
実施例Iにおける擬似プログラムコードは、キャッシュが実装されうる方法を示す。
【0234】
レベルの経過時間は変化しているので、周期解を即座に発見することはできない。11回のテストの周期長さを有する周期解は、レベル2におけるデータの経過時間が7と14との間にあることから、キャッシュのレベル2において検出されることになる。しかしながら、テストは、座標が正確に11回のテストの分だけ経過するまでは、周期解を発見しないであろう。従って、周期的な挙動が検出される前にテストが12回まで実行される可能性がある。この場合、このことは、それが検出されるまでにシステムは12/11周期まで経過していく可能性があるということを意味する。
【0235】
上述のアルゴリズムへの拡張として可能性のあるものが、変化するTransportAgeである。例Iの擬似コードのプログラムを参照されたい。いくつかの座標が、他の座標よりも周期解の一部をなす可能性が高いと識別されうるならば、例Iの擬似コードのプログラムで参照されるInesrtCoordinate手順がこれらを認識し、それらに対する低減されたTransportAgeの値を使用することが可能である。これは、キャッシュ中の臨界座標(critical coordinate)にとって有利に働き、多くの臨界座標が記憶されている場合はキャッシュ内のデータをより新しいものにする。キャッシュ内の、経過時間がより短いデータは、周期解の検出を、当該周期解に含まれるより少ない反復の後に可能にする。
【0236】
テストは、各反復の後に実行可能である。これは、解の新しい座標セットを計算した毎であることを意味する。しかしながら、プロセッサ資源を節約するためには、それに代わって、テストは周期的間隔で実行される必要がある。テストを有効なものにするためには、テストは、解が認識可能な位置にある時点で実行される必要がある。テストが毎回その同じ位置で実行されることを確実にするための1つの方法は、解のグラフィックなプロットにおける認識可能な点を発見することにある。これを行うためには、システムは、その特徴的な挙動について解析される必要があり、かつ基準が選択される必要がある。先に示した非線形システムの場合、図11乃至図13に示された基準の例が使用可能である。
【0237】
第1の可能な基準は、図11に示されたように、xの符号がマイナスからプラスへ変化することにある。すなわち、xの符号がマイナスからプラスへ変化するとき、テストが実行される。第2の基準は、図12に示されたように、dxの符号がプラスからマイナスへ変化することにある。第3の基準は、図13に示されたように、dyがプラスからマイナスへ変化することにある。
【0238】
基準を選択するときには、2つのことが考慮される必要がある。まず第1に、周期解として可能性のあるすべてのものが基準を満たしうることを必要とする。第2は、プロセッサの負荷を減らすために、テスト回数が最も少ない基準を選択する必要がある。
【0239】
設計の時点では、システム及び選択されたパラメータ空間に関するいくつか特別なテストを行って、システムの効率、安定性及び正確さを確認することができる。これらのテストには、グラム・シュミットの直交化法を使用するリヤプノフ指数の計算を含むとともに、鍵ストリームの統計的解析を含むことができる。
【0240】
実施例I
以下の擬似コードのプログラムは、1度に1バイトを暗号化する、本発明によるデータの暗号化及び復号化のためのプログラムの一例を示している。本プログラムは、図15乃至図22のフローチャートに従って動作する。本プログラムは、32ビットのレジスタを用いて動作する。図15は、データを含むファイルを暗号化する方法を示す。図16乃至図22は、周期解のチェックとローレンツシステムを使用するストリーム暗号とに関連する、下記の擬似コードで示された関数に対応する。
【0241】
固定小数点ライブラリの擬似コード
FloatToFixedPoint:浮動小数点の数Xを固定小数点の数に変換する。この関数の結果は、S(a.b)又はU(a.b)のフォーマットを有する。
【0242】
[擬似コード1]
Figure 2004530919
【0243】
FixedPointToFloat:フォーマットS(a.b)又はU(a.b)を有する固定小数点の数Xを浮動小数点の数に変換する。
【0244】
[擬似コード2]
Figure 2004530919
【0245】
ConvertFixedPoint:入力されたフォーマットS(a.b)又はU(a.b)を有する固定小数点の数Xを、要求されたフォーマットS(c.d)又はU(c.d)に変換する。引数Xが符号付きであれば結果は符号付きであり、かつその反対も成り立つ。
【0246】
[擬似コード3]
Figure 2004530919
【0247】
同じフォーマットの複数の固定小数点の数に関する加算及び減算は、通常の整数の加算及び減算関数を使用して実行される。
【0248】
MulFixedPoint:2つの固定小数点の数X及びYを乗算する。XはフォーマットS(a.b)又はU(a.b)を有し、YはフォーマットS(c.d)又はU(c.d)を有する。結果として得られる固定小数点の数は、フォーマットS(e.f)又はU(e.f)を有する。結果は、X及びYと同様に、必ず符号付きの値又は符号なしの値のいずれかであり、32ビットレジスタに記憶される。“>>”は、符号付き乗算の場合は右への算術シフトであり、符号なし乗算の場合は右への論理シフトである。
【0249】
[擬似コード4]
Figure 2004530919
【0250】
周期解のチェックのための擬似コード
周期解をチェックするためのサブシステムにおけるグローバルな定数。変曲点の個数がTransportAgeCacheDepth−1より少ないとき、当該コードは周期を検出することができる(変曲点は反復回数の高々2分の1の個数だけ存在しうるということに注意する)。
【0251】
[擬似コード5]
Figure 2004530919
【0252】
周期解をチェックするためのサブシステムは、例えば古い座標のキャッシュと、周期解が発見されたときにロードされるスペア鍵とを記憶するための、多くのグローバルな変数を有する。
【0253】
[擬似コード6]
Figure 2004530919
【0254】
SetupCoordinteCheck:周期解をチェックするためのサブシステムをセットアップする。(0,0,0)はローレンツシステムの定常点であり、よって、これは鍵の再ロードが必要であることを指示する座標値であることから、座標キャッシュのすべての位置は(x,y,z)=(0,0,0)にリセットされる。
【0255】
[擬似コード7]
Figure 2004530919
【0256】
InsertCoordinate:所定のレベルに記憶された以前の値の経過時間が所定のしきい値を超えると、座標を座標キャッシュの所定のレベルに書き込む。当該レベルにおける古い値は、上書きされる前に次のレベルに書き込まれる。
【0257】
[擬似コード8]
Figure 2004530919
【0258】
CheckCoordinate:変数xの解曲線が、当該曲線の勾配の符号が正から負に変化する変曲点を有するか否かをチェックする。変化がなければ、関数は終了する。そうでなければ関数は、座標キャッシュに等しい座標が記憶されているか否かをチェックする。一致が発見されれば、関数はスペア鍵をアルゴリズムにロードする。最後に、座標が座標キャッシュに書き込まれる。
【0259】
[擬似コード9]
Figure 2004530919
【0260】
ローレンツシステムを使用するストリーム暗号用の擬似コード
ここのコンテキストにおいては、引数qをとるモジュラス関数MODは、範囲[0;q[の正の値を返す。
【0261】
ローレンツ方程式のσ変数は、“s”と名称変更されている。
【0262】
固定小数点の変数のフォーマットは、表1に従って定義される。
【0263】
【表1】
Figure 2004530919
【0264】
Crypt関数に使用される一時的な固定小数点の変数のフォーマットは、表2に従って定義される。
【0265】
【表2】
Figure 2004530919
【0266】
パラメータr,b及びsの許容された値、及び座標x,y及びzの許容された開始条件は、表3に示されている。
【0267】
【表3】
Figure 2004530919
【0268】
Crypt:暗号化、復号化及びPRNG関数。引数は、PData(暗号化/復号化する第1のバイトへのポインタ)及びPEnd(暗号化/復号化する最後のバイトへのポインタ)である。関数が、擬似乱数を発生させることを目的としていれば、関数には、要求された擬似ランダムデータと同じサイズの、所定量にてなる暗号化すべきデータ(複数のゼロ等)が与えられる必要がある。
【0269】
[擬似コード10]
Figure 2004530919
【0270】
MaskParameters:拡張鍵又は擬似ランダムシーケンスをロードした後に初期条件及びパラメータが有効であることを保証するために、この関数を使用して条件及びパラメータを変更する必要がある。訂正は、表3で定義された拘束条件に従って実行される。
【0271】
[擬似コード11]
Figure 2004530919
【0272】
Init192:(PSeedポインタで指定された)192ビットのシードをシステムのステートにロードする。
【0273】
[擬似コード12]
Figure 2004530919
【0274】
Init128:(PSeedポインタで指定された)128ビットのシード(又は鍵)を、鍵セットアップ手順を実行するシステムのステートにロードする。
【0275】
[擬似コード13]
Figure 2004530919
【0276】
システムの出力、すなわち鍵ストリームの統計的特性は、NIST(米国国立標準技術局)のテストスイートに従ってテストされることが可能である。‘暗号アプリケーション用の乱数及び擬似乱数発生器のための統計的テストスイート(A statistical test suite for random and pseudo-random number generators for cryptographic applications)’,NISTスペシャル・パブリケーション(NIST Special Publication),800−22が参照される。また、http://csrc.nist.gov/rng/rng2.html も参照されたい。NISTのテストスイートは、以下で簡単に要約された16個の異なるテストを含んでいる。これらのテストは、例えば、ローレンツシステムを使用するストリーム暗号用の上述の擬似コードに類似するプログラムに対して実行されることが可能である。
【0277】
これらのテストは、ランダム性に関してほとんど重複のない多数の定義を与えている。以下ではより簡単な定義が記述されているが、それに対して、確率論からのより複雑な概念を必要とする定義は、“真のランダムシーケンスに対して、計算されうる/期待されるもの”という言い回しによって示される。上述のNISTの出版物は、適正な定義と、確率論における研究への参考文献とを含んでいる。
【0278】
頻度モノビット(monobit)テスト:このテストは、鍵ストリームシーケンスの全体に対する0及び1の比率を決定する。真にランダムな鍵ストリームシーケンスである場合、1の個数は0の個数とほぼ同じであることが期待される。テスト中は、問題となる鍵ストリームシーケンスに対してこの特性が成り立っているか否かが調査される。
【0279】
頻度ブロックテスト:このテストでは、鍵ストリームシーケンスがMビットのブロックに分割される。真にランダムな鍵ストリームシーケンスでは、各ブロック内の1の個数は約M/2個である。このことがまた、テストされた鍵ストリームシーケンスを特徴付けていれば、このテストは成功とされる。
【0280】
ラン(Runs)テスト:鍵ストリームシーケンス内のラン(run)は、同一の複数のビットにてなるサブシーケンスとして定義される。このテストは、異なる長さのランをチェックする。このとき、長さkのランは、そのランにおけるビットとは逆の値のビットを境界とする同一のkビットによって構成される。異なる長さのランの発生は、真のランダムシーケンスの場合に期待されるものと比較される。
【0281】
0の最長ラン:このテストでは、シーケンスは、各々Mビットであるブロックに分割され、各ブロック内で最長の1のランが発見される。ブロックに対するランの長さの分布は、ランダムシーケンスでのブロックに対する分布と比較される。期待される1の最長ランの長さの不規則さは、期待される0の最長ランの長さにも不規則さが存在することを示す。
【0282】
2値行列の階数テスト:このテストでは、鍵ストリームシーケンスのうちの固定された長さのサブシーケンスが使用され、M・Qビットのセグメントを集めてM×Q行列にすることにより多数の行列が形成される。これらの行列の階数を計算することにより、当該テストはサブシーケンス間の線形従属をチェックする。
【0283】
離散フーリエ変換テスト:離散フーリエ変換を適用することにより、このテストは鍵ストリームシーケンスの周期特性をチェックする。結果として得られる周波数成分の高さが、真のランダムシーケンスから定義されるしきい値と比較される。
【0284】
重なりのないテンプレートの一致テスト:このテストの実行に当たっては、非周期的なmビットパターンが定義され、特定パターンの出現がカウントされる。
【0285】
重なりのあるテンプレートの一致テスト:このテストは重なりのないテンプレートの一致テストによく似たものであり、mビットのパターンの構造と、パターンの探索が実行される方法とだけが異なる。この場合、mビットのパターンは、m個の1よりなるシーケンスである。
【0286】
モーラー(Maurer)のユニバーサル統計テスト:このテストは、鍵ストリームシーケンスにおける、一致する複数のパターンの間の距離を計算する。これを行うことにより、鍵ストリームシーケンスの圧縮性の尺度が得られる。圧縮性が極めて高い鍵ストリームシーケンスは、非ランダムであるとされる。
【0287】
レンペル・ジブ圧縮テスト:このテストでは、累積的かつ明確に区別されるパターンの個数が計算され、こうして鍵ストリームシーケンスの圧縮性の尺度がもたらされる。結果は、多数の明確に区別される特徴的なパターンを有するランダムシーケンスと比較される。
【0288】
線形複雑度テスト:このテストは、線形フィードバックシフトレジスタの長さを計算し、シーケンスが、ランダムであると見なされるほど十分に複雑であるか否かを決定する。
【0289】
系列(serial)テスト:このテストは、シーケンス全体にわたる、重なりのある、すべての可能なmビットパターンの頻度を計算する。真にランダムな鍵ストリームシーケンスの場合は、2個の可能なmビットパターンのすべてが同じ確率で発生する。問題となる鍵ストリームシーケンスに対して、この確率からの偏差が計算される。
【0290】
近似エントロピーテスト:このテストの焦点は系列テストと同じであるが、mビット及び(m+1)ビットパターンの頻度を計算するという特徴が追加されている。異なる長さのパターンについて得られた結果が比較され、シーケンスをランダム又は非ランダムのいずれかとして特徴付けるために使用される。
【0291】
累積和テスト:このテストでは、+1及び−1にそれぞれ対応する1及び0を用いたランダムウォークを定義するために、シーケンスが使用される。部分的な鍵ストリームシーケンスの累積和の振幅が、真にランダムな鍵ストリームシーケンスに期待されるものとしては大きすぎるか否か、又は小さすぎるか否かが決定される。
【0292】
ランダム偏差(Random excursion)テスト:このテストでは、シーケンスは、累積和テストの場合と同様にランダムウォークに変換される。ランダムウォークが潜在的に通過しうる所定のステート(累積和が保持しうる値)を訪れる回数は、シーケンスをランダム又は非ランダムのいずれかとして特徴付けるために使用される。検討されるステートは、−4,−3,−2,−1,1,2,3,4である。
【0293】
変形ランダム偏差テスト:ランダム偏差テストとほぼ同じ。このテストでは、18個のステートが使用される。
【0294】
各テストについて、実際のシーケンスと仮定された真にランダムなシーケンスとの定量的な比較を提供するP値、すなわちPvalが計算される。P値の定義は、実際のテストに依存する(NISTの文書を参照)。Pval>αである値はランダム性を示す。ここで、αは区間0.001≦α≦0.01における値であり、αの正確な値は各テスト毎に定義されている。これ以外の値のときは、非ランダム性が宣言される。
【0295】
NISTのテストスイートは、各テストに対して、そのP値が基準Pval>αに合格しなければならないサンプルの比率を定義している。ランダム偏差テストを除く上述のすべてのテストでは、そのそれぞれのP値であるPvalが適正な基準に合格するサンプルの比率は少なくとも0.972766でなければならない。ランダム偏差テストに関して、NISTによって与えられた比率は、少なくとも0.967813である。
【0296】
本発明の好適な実施形態では、無作為に選択された鍵を使用して取得された少なくとも10個のサンプルの平均として、好適には次のような比率、すなわち、少なくとも0.975、例えば少なくとも0.98、例えば少なくとも0.985以上、例えば少なくとも0.99、例えば少なくとも0.995、例えば少なくとも0.998、が達成される。
【0297】
下記の表4では、NISTのテストスイートに対する可能な入力パラメータが、NISTのテストスイートに添付された文書で使用されている表記法で示されている。
【0298】
【表4】
Figure 2004530919
【0299】
実施例II
表5は、本発明の方法による暗号化の速さを示すとともに、様々な既知の暗号化方法による暗号化の速さを示している。本発明による暗号化方法の速さは、本発明による暗号化/復号化プログラムの特徴を組み込んだ試作品において達成された。鍵サイズは256ビットキーであり、暗号化/復号化速度は、400MHzのペンティアムIIプロセッサ上で、暗号化/復号化アルゴリズムの実行に費やされたクロックサイクル数をカウントすることによって測定された。当該アルゴリズムの試作品は、図7に例示されているように、2つのインスタンスを含むシステム上に、MMX(商標)命令を用いたアッセンブリ言語で実装された。この試作品は、カオス的挙動を呈する2つのローレンツシステムを解き、各積分ステップにおいて、すなわち2つのインスタンスにてなる組み合わされた積分ステップの各々において、合計64ビットを抽出した。この試作品が、図15乃至図22を参照して例Iで説明した擬似コードプログラムのアルゴリズムと異なる点は、主に次の通りであった。
− この試作品は、2つのシステムを並列に解くことによりMMX(商標)技術を利用した。
− この試作品は、各積分ステップにおいて合計64ビットを抽出した。
− この試作品は周期解のテストを行わなかった。
【0300】
測定値から速度が計算され、
450MHzのペンティアムIIプロセッサ上での1010メガビット/秒の暗号化/復号化速度に等しいと計算された。
【0301】
【表5】
Figure 2004530919
【0302】
速度は、異なる出典に基づいて評価される。表5の“速度[クロック/バイト]”欄における上付き文字は、出典となる以下の参考文献を示す。
1.Crypto++ 4.0 ベンチマークス,www.eskimo.com/~weidai/benchmarks.html,MS C++(インテル、セルロン(Celeron)850MHz),2001年12月7日に利用可能。
2.ブルース・シュナイアーほか,高速なソフトウェア暗号化:インテルのペンティアムプロセッサ上での最適ソフトウェア速度のための暗号化アルゴリズムの設計(Fast Software Encryption: Designing Encryption Algorithms for Optimal Software Speed on the Intel Pentium Processor)。
3.アオキ・カズマロ(Kazumaro Aoki)ほか,AES候補の高速な実装(128ビット鍵、128ビットブロック、ペンティアムII)(Fast Implementation of AES Candidates (128 bit keys, 128 bit blocks, Pentium II))。
4.NESSIE第1フェーズの性能評価(ドラフト3.0版)(Performance Evaluation of NESSIE First Phase (draft version 3.0))。2001年12月7日に利用可能なhttp://www.cosic.esat.kuleuven.ac.be/nessie/。
【0303】
一般に、多くの実装において、例えばより多くのメモリを必要とするが処理時間を節約することができるルックアップテーブルを用いることによって、速度とメモリの条件が互いに取捨されうる。
実施例IIの終わり.
【0304】
例えば2つの数を加算又は乗算する場合のように、2進数で表現された数に対する計算を実行する場合、その加算又は乗算の結果として得られる数のビットが省略されうるか又は無視されうるものであれば、加算又は乗算に含まれる計算の一部を省略することができる。従って、結果として得られる数の最下位ビットが不要であれば、もしくは結果として得られる数の最上位ビットが無視されうるものであれば(擬似乱数発生器の場合、必要なものは計算の真の結果ではなく単に擬似乱数であることから、このことが成り立つ)、結果として得られる数の最下位ビット及び/又は最上位ビットは計算される必要がない。
【0305】
従って、別の態様において、本発明は、計算が実行される処理装置のレジスタ幅より大きい所定のビット幅の整数に対して数学的演算を実行するための方法に関する。固定小数点の数での数学的演算又は計算は整数の演算として実行され、これにより、整数は2進数として表現される。整数の2進表現は、所定のレジスタ幅を、例えば32ビットを必要とする。当該2進数の表現に要する幅より小さいレジスタ幅、例えば8ビットを有する処理装置によって加算又は乗算等の数学的演算を実行する場合には、当該2進数は、処理装置のレジスタ幅に等しいかもしくはこれより小さい幅によってそれぞれ表される複数の2進サブナンバーに分割されることが可能である。従って、2つの32ビット数は、4個の8ビットサブナンバーにてなる2組に分割されることが可能であり、乗算又は加算は、8ビット処理装置によって8ビットのサブナンバーに対して実行可能である。例えば、
数A=11011001101101010110101010110111と、
数B=10000111011110111111010101001001と
の加算によって結果R=A+Bに到達することは、以下のステップを行うことによって実行可能である。
【0306】
1.数A及びBを各々、4つのサブナンバーA1,A2,A3及びA4と、B1,B2,B3及びB4とに分割する。A1は数Aの最上位の8ビットを表し、A4は数Aの最下位の8ビットを表す、等である。従って、上述の例では、サブナンバーは下記の通りとなる。
A1=11011001,
A2=10110101,
A3=01101010,
A4=10110111,
B1=10000111,
B2=01111011,
B3=11110101,
B4=01001001。
【0307】
2.次に、最下位のサブナンバーA4及びB4を加算する:R4=A4+B4。A4及びB4の加算から結果的に生じる任意の桁上げC4を記憶する。
【0308】
3.次に、第2の最下位サブナンバーA3及びB3、及び上記ステップ2からの桁上げC4を加算する:R3=A3+B3+C4。この加算から結果的に生じる任意の桁上げC3を記憶する。
【0309】
4.ステップ3と同様にA2とB2を加算してR2及びC2を得る。
【0310】
5.ステップ3及び4と同様にA1とB1を加算してR1を得る。この加算から結果的に生じる任意の桁上げC1は、オーバーフローと見なし、考慮しない。
【0311】
6.AとBの加算によって得られる数を4つのサブナンバーR1,R2,R3及びR4として記憶し、及び/又はサブナンバーR1,R2,R3及びR4から構成された32ビット幅の列で表現する。
【0312】
乗算演算の結果として得られる数におけるすべてのビットが別の計算に使用されるわけではない場合、及び/又はすべてのビットが別の計算にとって重要なわけではなく無視されうる場合、乗算される数のビット幅より小さいレジスタ幅を有する処理装置上での乗算演算に関わる処理時間は、以下で説明するように部分的乗算のみを実行することによって短縮可能である。例えば、8ビット処理装置上での2つの16ビット数D及びE、すなわち、
D=1101100110110101と、
E=0110101010110111と
の乗算によって32ビット数Fに到達することは、以下のステップによって実行可能である。
【0313】
1.数D及びEを各々、2つのサブナンバーD1,D2及びE1,E2に分割する。D1はDの最上位の8ビットを表し、D2はDの最下位の8ビットを表す、等である。従って、上述の例では、サブナンバーは下記の通りとなる。
D1=11011001,
D2=10110101,
E1=01101010,
E2=10110111。
【0314】
2.D1にE1を乗算し、2つの8ビット数G1及びG2で表される16ビット数を得る。
【0315】
3.D1にE2を乗算し、2つの8ビット数H1及びH2で表される16ビット数を得る。
【0316】
4.D2にE1を乗算し、2つの8ビット数I1及びI2で表される16ビット数を得る。
【0317】
5.D2にE2を乗算し、2つの8ビット数J1及びJ2で表される16ビット数を得る。
【0318】
6.結果として得られる32ビット数Fを4つの8ビット数F1,F2,F3及びF4で表す。ここで、図14に示されたように、
F4=J2,
F3=H2+I2+J1,
F2=G2+H1+I1+[F3の計算から結果的に生じる任意の桁上げ],
F1=G1+[F2の計算から結果的に生じる任意の桁上げ]
である。ここで、MSは“最上位の8ビット”を示し、LSは“最下位の8ビット”を示す。
【0319】
処理時間は、F4、すなわち乗算の結果として得られる数の最下位ビットを無視することにより、かつF3をもたらす加算においてJ1を無視することによって節約可能である。従って、ステップ5のD2とE2の乗算は省略されることが可能であり、よって実行される数学的演算はより少なくなり、処理時間の節約に繋がる。この省略は計算結果に影響するが、省略が例えば擬似乱数発生器における、例えば暗号化/復号化アルゴリズムでの計算を通じて一貫して実行されるならば、かつこれが暗号化と復号化の両方で実行されるならば、この省略は許容されうる。一般に、暗号化/復号化等の問題となるコンテキストにおいて重要な、カオス的挙動等の数学的システムの特性は、1つ又は複数の計算ステップの省略が計算に与える影響に関わらず保持されることは保証されなければならない。
【0320】
別の態様では、本発明は、第1の2進数及び第2の2進数に対して乗算演算を実行する方法に関する。本方法は、多くの中間結果を総和することを含み、これにより、中間結果の総和は2つの数の積に等しくなる。各中間結果は、第1の数のうちの単一のビット(1又は0)と、第2の数αの全体との積として得られ、これにより、この積と、従って中間結果とは、簡単な“if...then”アルゴリズム及び/又は論理積演算によって、積1・α=αとして、かつ積0・α=0として決定されることが可能である。
【0321】
中間の数の計算に引き続き、中間の数は、所定数の位置だけ左へ移動される。上記移動される位置の数は、その特定の中間の数を計算する基礎となる第1の数のビットの位置に対応する。代替として、第2の数、又は第1の数の特定ビットのいずれかが左にスイッチングして移動される。従って、2つの数のうちの第1のものの1ビットを乗算するステップが、第1の数の各ビットに対して反復される。例えば、第1の数0110と第2の数1010の積は、次のように計算される。すなわち、第1の数の最下位ビット0は第2の数1010と乗算され、第1の中間の数0000が取得される。次に、第1の数の最下位ビットから2番目のビット1が第2の数と乗算され、かつ1つの位置だけ左にシフトされて第2の中間の数10100が取得される。次に、第1の数の最下位ビットから3番目のビット1が第2の数と乗算され、かつ2つの位置だけ左にシフトされて第3の中間の数101000が取得される。最後に、第1の数の最上位ビット0が第2の数と乗算され、かつ3つの位置だけ左にシフトされて第4の中間の数0000000が取得される。結果として得られる数は、下に示した通り、4つの中間の数の総和として取得される。下線は、個々のステップでどのビットが乗算されているかを示す。
【0322】
[式1]
Figure 2004530919

【図面の簡単な説明】
【0323】
【図1】電子データを暗号化し、伝送し、復号化するシーケンスを示す図である。
【図2】ブロック暗号システムにおける暗号化シーケンスを示す図である。
【図3】ストリーム暗号システムにおける暗号化シーケンスを示す図である。
【図4】本発明の様々な態様による暗号化/復号化アルゴリズムにおける鍵要素を示す図である。
【図5】ローレンツシステムの数値解のプロットである。
【図6】パディングによる鍵の拡張を示す図である。
【図7】2つ以上の同一又は異なるカオス的システムのインスタンスを同時に計算する可能な方法を示す図である。
【図8】周期解のチェックを実行する原理を示す図である。
【図9】周期解を有する数学的システムを示す図である。
【図10】以前に計算された座標を記憶する座標キャッシュにおける複数のレベル間の移動を示している。
【図11】周期解を検出するための様々な基準を示す図である。
【図12】周期解を検出するための様々な基準を示す図である。
【図13】周期解を検出するための様々な基準を示す図である。
【図14】8ビットプロセッサ上での16ビット数の乗算方法を示す図である。
【図15】本発明による暗号化方法の一実施形態の動作を示すフローチャートである。
【図16】本発明による暗号化方法の一実施形態の動作を示すフローチャートである。
【図17】本発明による暗号化方法の一実施形態の動作を示すフローチャートである。
【図18】本発明による暗号化方法の一実施形態の動作を示すフローチャートである。
【図19】本発明による暗号化方法の一実施形態の動作を示すフローチャートである。
【図20】本発明による暗号化方法の一実施形態の動作を示すフローチャートである。
【図21】本発明による暗号化方法の一実施形態の動作を示すフローチャートである。
【図22】本発明による暗号化方法の一実施形態の動作を示すフローチャートである。
【符号の説明】
【0324】
D1,D2,E1,E2…サブナンバー、
F…32ビット数、
F1乃至F4,G1,G2,H1,H2,I1,I2,J1,J2…8ビット数。【Technical field】
[0001]
The invention relates to a method for performing numerical calculations in a mathematical system that includes at least one function, in particular a non-linear function. This mathematical system can be a non-linear system consisting of a plurality of differential equations exhibiting chaotic behavior. The invention also relates to a pseudo-random number generator applicable to the encryption and decryption methods, and to such an encryption and decryption method. An electronic device is preferably used to perform the calculations.
[Background Art]
[0002]
Cryptography is a commonly used term that includes a range of science and technology related to transforming data so that it can be stored and transmitted while preventing unauthorized access to the data. . Cryptography makes the data invisible to anyone but the intended recipient or recipients of the data. Thus, cryptography plays an increasingly important role in protecting intellectual property rights, including copyright protection, as technological advances require secure transmission and storage of large amounts of data.
[0003]
In encryption and decryption algorithms, the specific data transformation depends on the input to the algorithm, the so-called key. If the sender and receiver of the data have the correct key set, the sender and receiver can correctly encrypt and decrypt the data, but no third party can access the encrypted data. If you can, you will not see a correctly decrypted version of the encrypted data because she or he does not have the proper key.
[0004]
Generally, the set of data to be encrypted is called "plaintext" or "original data" and the decrypted version of this set of data is called "ciphertext" or "encrypted data."
[0005]
There are two types of symmetric encryption algorithms, so-called "block encryption" and so-called "stream encryption". Both types of algorithms use symmetric keys. That is, the keys used for encryption and decryption are equal or have a trivial relationship. Block cipher is an encryption algorithm that divides an original data set into a plurality of blocks of a given size, for example, 64 bits per block. Mathematical and logical operations are performed on each block, whereby a predetermined amount of the original data is typically converted into a plurality of blocks of pseudo-random data. If the decryption is started with the correct decryption key, the original data can be re-called by inverting the mathematical and logical operations used for encryption.
[0006]
In (synchronous) stream cryptography, a pseudo-random number generator generates a sequence of pseudo-random numbers based on a key. This sequence is called a key stream. The key stream is mixed with multiple subsets of the original set of data by arithmetic and / or logical operations. The sum of the subsets of the data defines the original data to be encrypted. The result of the mixing is encrypted data. The set of encrypted data can be decrypted by reaching the original decrypted data by repeating the procedure such that a pseudo-random sequence is extracted from the encrypted data.
[0007]
Plain text is often
(Equation 1)
Figure 2004530919
And is mixed with the key stream using a logical operator, a so-called XOR operator, also referred to as an "exclusive OR" operator. XOR produces a one-bit result from two one-bit arguments. All possible combinations are:
[0008]
(Equation 2)
Figure 2004530919
[Equation 3]
Figure 2004530919
(Equation 4)
Figure 2004530919
(Equation 5)
Figure 2004530919
[0009]
Using the XOR operator on plaintext and pseudo-random key streams produces ciphertext. During decryption, the same key stream is generated, at which time the XOR operator is used on the key stream and the ciphertext, resulting in the generation of the original plaintext. The same key stream can only be generated by using the key on which the key stream for encryption was originally based.
[0010]
In addition, so-called public key systems have been developed, which are characterized by a pair of asymmetric keys, namely two different keys, a public key and a private key. In such systems, a public key is typically used for encryption and a private key is typically used for decryption. The private key and the public key correspond to each other in a predetermined manner. The key used for encryption cannot be used for decryption and vice versa. Thus, the public key can be made public without compromising security regarding the accessibility of the original data. Thus, when transmitting encrypted data over a computer communication network, the data recipient first generates a set of keys, including a public key and a private key. The public key is then provided, for example, to the sender of the data, while the private key is stored in a secure location. The data sender encrypts the original data using the public key, and the encrypted data is then transferred to the recipient. When the recipient receives this encrypted data, a secret key corresponding to the public key previously used for encryption is provided to the decryption system, and the decryption system converts the encrypted data to By processing, the original data that has been decrypted is reached. Public key systems are mainly used for transmitting keys used, for example, in block ciphers or stream ciphers, which in turn perform the encryption and decryption of data.
[0011]
The method according to the invention is applicable to a plurality of encryption methods, in particular, but not exclusively, to stream encryption algorithms, block encryption algorithms, hash functions, and MAC (message authentication code) functions. Such a method, function and algorithm would produce a pseudo-random number generator capable of generating pseudo-random numbers in a reproducible manner, ie, when the same key is used as input to the pseudo-random number generator in two different cycles. In some cases, a pseudo random number generator capable of generating a pseudo random number in such a manner that the same numerical value is generated in these two different cycles may be included.
[0012]
To generate pseudorandom numbers, it has been proposed to use the numerical solution of a chaotic system, ie a system of non-linear differential equations exhibiting chaotic behavior or a system of mappings. ing. The term "chaotic" can only be used in the context of a continuous system in a strict mathematical sense. However, a discrete or finite system having at least one positive Lyapunov exponent is also referred to herein as "chaotic".
[0013]
Chaotic systems typically determine at least one state variable X. The numerical solution of such a system typically involves performing multiple iteration or integration steps. In a chaotic system, the solution X at a given moment n Is the initial condition X 0 Small deviation at the end results in solution X n Condition X to bring about a huge shift in 0 Depends on. This system is often called sensitive to initial conditions. Therefore, the pseudo-random number generator, an algorithm that numerically solves a chaotic system, requires accurate initial conditions X to provide a reproducible stream of pseudo-random numbers. 0 Need to be known. Thus, in a cryptographic algorithm that depends on a chaotic system, the initial condition X used for the numerical solution of the chaotic system is 0 Is derived from a key entered by the user of the cryptographic system, so that an identical stream of pseudo-random numbers can be generated, for example, for encryption and decryption of data.
[0014]
The Lyapunov exponent is a measure of the speed of divergence or convergence of two adjacent trajectories, i.e., the solution curve, to determine the stability of various types of solutions, i.e., whether the solution is periodic or not. Can be used to determine if it is chaotic. The Lyapunov exponent provides such a measure based on a comparison of the reference trajectory and the displaced trajectory. The reference trajectory is the initial condition x 0 And the displaced trajectory is the initial condition x 0 + Y 0 Given by the repetition of Where y 0 Is a vector of infinitely small length, and represents the initial value of the displacement. The initial value of the direction related to the initial value of the displacement is u 0 = Y 0 / │y 0 │ is given. Using this notation, the Lyapunov exponent h (x 0 , Y 0 ) Is defined as:
[0015]
(Equation 6)
Figure 2004530919
[0016]
Where y n Is x 0 Is the deviation of the displaced trajectory from the reference trajectory given by the nth iteration of. For systems with dimensions greater than one, there are multiple sets or spectra of Lyapunov exponents, each characterizing the divergence or convergence of a trajectory in a particular direction. Thus, if the system has N degrees of freedom, it will have N Lyapunov exponents. However, they are not necessarily distinct. In all practical situations, a positive Lyapunov exponent represents chaos. A type of irregular behavior called hyperchaos is characterized by two or more positive Lyapunov exponents. The numerical calculation of the Lyapunov exponent is based on Tee. S. Parker (TS Parker) and El. Oh. It may be performed according to the method proposed on pages 73-81 of Practical Numerical Algorithms for Chaotic Systems by LO Chua.
[0017]
Even more irregular systems than hyperchaotic systems exhibit so-called turbulence, which is related to the type of behavior exhibited by systems having a continuous spectrum of positive Lyapunov exponents. Turbulence can be modeled by a partial differential equation, such as the well-known Navier-Stokes equation.
[0018]
Numerous prior art documents relate specifically to the solution of chaotic systems used in cryptographic algorithms, and also include stream cipher algorithms that rely on chaotic systems.
In the following, some of them are briefly mentioned as a general introduction to the background art.
[0019]
U.S. Pat. No. 5,007,087, assigned to Loral Aerospace Corp., discloses a method and apparatus for generating random numbers using chaos. This patent describes the solution of a chaotic system for generating random number sequences and mentions its potential use in cryptography, especially in the field of key generation and management. . This document states that the repeatability of the numerical sequence needs to be avoided.
[0020]
U.S. Pat. No. 5,048,086, assigned to Hughes Aircraft Company, relates to an encryption system based on chaos theory. The system consists of a logistic equation x, a mapping that exhibits chaos for a given value of μ. n + 1 = Μx n (1-x n ). This calculation uses floating point arithmetic.
[0021]
U.S. Patent No. 6,014,445, assigned to Toshiba Corporation of Kawasaki, discloses an apparatus and method for encryption / decryption that incorporates the generation of random variables and key streams. This disclosure relates to chaotic stream ciphers and states that floating point arithmetic is used.
[0022]
The specification of PCT Application Publication No. WO 98/36523, assigned to Apple Computer, Inc., uses a chaotic system from a private key to a public key and an adjustable backdoor. Are disclosed. The need to establish rules of precision during calculations on chaotic systems is described. The specification states, as an example, that the specified floating-point or fixed-point precision is identifiable, along with specific standards for rounding.
[0023]
Dee. D. Kahaner, C. C. Moler and S.M. "Numerical Methods and Software" by P. Nash (Prentice-Hall International Editions, 1989) provides an overview of (pseudo) random number generation. Contains. This document describes the following criteria for determining the performance of a (pseudo) random number generator.
a) High quality: the generator must pass all statistical tests and have a very long lifetime.
b) Efficiency: execution must be fast and storage requirements must be minimal.
c) Repeatability: Given the same start condition, the same sequence is generated. The user must be able to restart the generator at any time, but no explicit initialization is required. Small changes in the starting procedure result in different random sequences.
d) Machine independence and portability: Algorithms must run on different types of computers. In particular, no operation should cause the program to stop. By initializing the generator in exactly the same way, the same sequence of random numbers must be generated on different computers.
e) Simplicity: The algorithm must be easy to implement and use.
The document further states that no generator can successfully satisfy all these criteria.
[0024]
H. H. Kamata, e. E. Tetsuro and Y. “Secure Communication System Using Chaos via DSP Implementation” by Y. Ishida (IEEE, 1996) uses a digital signal processor (DSP) to implement the system. A communication system based on chaotic circuits used is described. By using a fixed point DSP, the system is made more robust than analog circuits. Restoration of the transmitted message is based on synchronizing the chaotic receiving system with the transmitting system.
[0025]
In numerical calculations, for example, it is known to use fixed-point variables in Intel's Mandelbrot calculation. Intel (MMX ™ Technology Application Notes, publicly accessible at http://developer.intel.com/software/idap/resources/technical_collateral/mmx/MANDEL.HTM on December 7, 2001 MMX TM Technology Application Notes) “Implementing Fractals with MMX ™ technology TM Technology) ”) is a method that can quickly compute a Mandelbrot set (a set that can be derived from a nonlinear system) using MMX technology (an add-on to Intel processors that speeds up certain computations). This is performed using fixed-point calculations.
[0026]
The Mandelbrot set is calculated by the following mapping.
[0027]
(Equation 7)
Figure 2004530919
[0028]
Intel uses certain decimal separator positions in those calculations. The so-called 5.11 is used. That is, a 16-bit number is used, the decimal separator is placed after the fifth bit, "5" indicates the five bits after the decimal separator, and "11" is 11 bits after the decimal separator. Indicate the bits of
DISCLOSURE OF THE INVENTION
[Problems to be solved by the invention]
[0029]
Generally, in a computer, a real number is represented by a floating-point type number. The floating point number is, for example, 31415.10 -4 Is defined as a number consisting of a mantissa and an exponent, where "31415" is a mantissa and "-4" is an exponent. Whenever the computer performs calculations on floating-point variables, the computer recalculates the exponents so that the results match each time. The name "floating point" refers to the fact that in several calculations the decimal separator moves due to a change in exponent. However, floating-point arithmetic is defined differently in various processor architectures, resulting in differences in precision and rounding. Instead of floating point numbers, fixed point numbers can be used. Fixed-point numbers are represented on the computer as integer-type numbers, where a virtual decimal point or separator (also called an imaginary decimal separator) is used to separate the real integer part from the decimal part. Manually ", ie, introduced by the programmer. Therefore, calculations on fixed-point numbers are performed by simple integer arithmetic, which performs the same calculations performed on two different processors, except that the representation of negative numbers may be different. Is the same on all processors in the sense that the two processors produce the same result. These different representation possibilities may result from some processors utilizing one's complement and other processors utilizing two's complement. Furthermore, these operations are typically faster than the corresponding floating point operations.
[0030]
In general, the type of fixed-point number is represented by Φ (α.β), where α is the number of bits used to hold the integer part and β is the number of bits to hold the decimal part. The values of α and β, and thus the position of the decimal point, are usually predetermined and stationary. The fixed-point number can be either unsigned or signed, in which case Φ is represented by U or S, respectively. In the latter case, one bit is needed to hold the code, so α + β + 1 bits are needed to hold S (α.β). The range of U (α.β) is [0; 2 α -2 −β ], And the range of S (α.β) is [−2]. α ; 2 α -2 −β ]. This gives a fixed point number resolution of 2 −β It is.
[0031]
The position of the decimal separator in a fixed-point number is the weight between the integer and decimal digits of the number. To achieve the best calculation results, it is usually desirable to get the highest resolution with as many digits as possible after the decimal separator. However, it may be important to also allocate enough bits to the integer part to ensure that no overflow occurs. Overflow refers to loading a value into a register that cannot hold a value as large as the value being loaded or calculated, or calculating a value in that register. Overflow consequently eliminates the most significant bits (digits) and possible sign changes.
[0032]
In various aspects of the invention, the location of the decimal separator may be assigned at the time of design. To select the correct position, preferably the possible number range in which the position is to be selected is analyzed. The maximum possible positive value and the minimum possible negative value are determined, and the maximum of the absolute values of these two is inserted into the following equation to determine the value of α.
[0033]
(Equation 8)
Figure 2004530919
[0034]
The position of the decimal point can vary between different fixed point variables. However, addition and subtraction operations require a number of inputs having similar positions. Therefore, it is sometimes necessary to shift the position of the decimal point. A right shift of n bits corresponds to a conversion from Φ (α.β) to Φ (α + n.β-n). An n-bit left shift converts Φ (α.β) to Φ (α-n.β + n). The conversion of an unsigned number is performed by a logical shift operation, whereas an arithmetic shift is used for a signed number.
[0035]
Mathematical operations on fixed-point numbers, such as addition, subtraction, multiplication, and division, are performed as simple integer operations. Addition and subtraction operations can result in numbers of size Φ (α + 1.β) due to carry. However, usually this result is truncated to have the same number of formats as the input.
[0036]
Multiplication and division do not require that the decimal separator of the argument be in the same position. However, in the case of division, the numerator must be twice as long as the denominator and the result, so the numerator is pre-expanded before the division. The result is in the following format: S (α.β) · S (cd) = S (α + c + 1.β + d) and S (α + c + 1.β + d) / S (α.β) = S (cd) Will have. In the case of unsigned multiplication and division, S (α + c + 1.β + d) is replaced by U (α + c.β + d). In multiplication, digits that exceed a predetermined result format are truncated to the target register size.
[0037]
Additional information on fixed-point calculations can be found in "Fixed-Point Arithmetic: An Introduction" by R. Yates (this document was published on December 7, 2001 at http://personal.mia.bellsouth.net/lig/ It is available at y / a / yatesc / fp / pdf.)
[0038]
The use of floating point variables in the numerical solution of mathematical systems can cause unpredictable truncation and / or rounding errors. If the mathematical system for which the solution is found is non-linear, and especially if the system is chaotic, small deviations in one step can be large in subsequent steps, so all integration steps The accuracy of the solution is of paramount importance. If the truncation and / or rounding error is generated in the same way and consistently in every calculation, then the two solutions under the same initial conditions are the same and the calculation is therefore reproducible. However, in most cases, the truncation and / or rounding errors of floating point numbers are not controlled entirely by software, but are also controlled by the hardware running the software. Thus, the truncation and / or rounding error is hardware dependent, and as a result, the truncation and / or rounding may be performed differently on two different hardware processors. For most calculations, this is not important because truncation and rounding have produced inaccuracies of the order of magnitude less than the accuracy required for the calculations. However, for example, in the solution of a chaotic system, small deviations in the way truncation is performed can lead to large deviations in the solution in later computation steps.
[0039]
Therefore, it is an object of the present invention to provide a mathematical algorithm in which the truncation and / or rounding errors are predictable or such errors can be completely controlled by software, ie the accuracy of the calculations is independent of the hardware. It is an object of the present invention to provide a method for performing a numerical calculation in a dynamic system and a method for generating a pseudo random number. It is another object of the present invention to provide a method for performing such numerical calculations and a method for generating pseudo-random numbers in a reproducible manner, which is fast when executed on a computer, i.e. It is an object of the present invention to provide a method for optimally using the wear processor power. It is yet another object of the present invention to provide a method and system for encrypting and decrypting data that is fast when executed on a computer.
[Means for Solving the Problems]
[0040]
When the term “pseudo-random number” is used in the context herein, it can be generated in a reproducible and / or deterministic way, ie, different in one pseudo-random number generation algorithm Generated in such a way that if the same key or seed value is used as input to the pseudorandom number generation algorithm in the two runs, the same pseudorandom number results. Need to be understood as a random number that can be done.
[0041]
In the present context, a fixed-point variable is defined as an integer type number with a virtual decimal separator, and an integer is defined as a number that has no digits after the decimal separator. Thus, a real number is represented by inserting a virtual decimal separator (or decimal point) at some predetermined fixed position in the integer, for example, in the fourth digit from the left. This position may be changed as a result of mathematical operations on the numbers. This k position may also have to be changed by using logical operations.
[0042]
As will be recalled from the above discussion, the fixed point number is an integer, to which the virtual point separator is appended. The number is composed of a so-called “integer part” indicating a bit before the decimal separator and a “fractional part” indicating a bit after the decimal separator. In the context here, bits are also called digits, and vice versa.
[0043]
In computer programs involving fixed-point number calculations, or in electronic circuits or devices for performing fixed-point calculations, means may be provided for determining the proper location of the decimal separator. . Therefore, the program, the circuit, or the device can detect a possible overflow during the calculation, and change the number of bits on either side of the decimal separator when a possible overflow is detected. That is, the position of the decimal separator in the register storing the variable or variables in question can be changed. This change can be made by moving the decimal separator one or more places to the right or left. Preferably, as many bits as possible are used to the right of the decimal separator to minimize the number of bits that may not be used in the register, thereby achieving optimal calculation accuracy. Designing an application that incorporates a computer program, circuit, or device, although changing the position of the decimal separator may impair the computational speed to some extent due to the requirements of additional operations to detect possible overflow. The accuracy of the calculations is optimized while the risk of overflow is eliminated or reduced, without requiring a person or programmer to consider precision and overflow at the design or programming stage. Alternatively, or in addition, it is possible to provide a test program that determines at what point or in the course of a calculation an overflow is or is likely to occur, and therefore the programmer or the programmer of the program. The designer can fix the position of the decimal separator in one or more variables so that overflow does not occur, so that no final overflow decisions need to be made in the final implementation. However, the determination of possible overflows may be incorporated into the final implementation as an additional safeguard. In addition, the programmer or designer may choose to implement a change in decimal separator at a predetermined, fixed stage during the computation.
[0044]
As discussed above, real numbers can be represented by one or more fixed-point numbers. Similarly, i 2 When ==-1, the complex number c = a + ib can be represented by one or more fixed-point numbers, for example, by representing the real part a and / or the imaginary part b as fixed-point numbers. It is. Where only one of the real and imaginary parts is represented as a fixed-point number, the other may be represented by any other type of number, such as a floating-point number or an integer.
[0045]
In the context herein, the terms "data carrier" or "computer readable data carrier" need to be understood as any device or medium accessible by a computer or computer system and capable of storing data. is there. Thus, a computer readable data carrier may be, for example, a memory such as a RAM, ROM, EPROM or EEPROM, a compact flash card, a memory stick card, a floppy or hard disk drive, a compact disk (CD), a DVD, a data tape or a DAT tape. Can be included.
[0046]
The data derived by the method according to the invention and the signal containing the data used in such a method may be a communication line, for example an electrical or optical line, or a wireless communication means using wireless or optical transmission Can be transmitted via Examples include the Internet, LANs (Local Area Networks), MANs (Metropolitan Area Networks), WANs (Wide Area Networks), telephone lines, leased leased lines, private leased lines, and cable or satellite television networks.
[0047]
In the context herein, the term "electronic device" should be understood as any device that processes data by means of electronic or optical impulses. Examples of electronic devices applicable to the method according to the invention include processors such as CPUs, microcontrollers or DSPs (Digital Signal Processors), and also personal computers, mainframe computers, portable devices, smart cards, e.g. There are computers or any other device that incorporates a processor or other electronic circuitry for performing mathematical operations, including chips specially designed for certain purposes, such as encryption. Examples of electronic devices further include microchips adapted or designed to perform calculations and / or operations.
[0048]
Processors are typically categorized by (a) the size of the data being operated on, (b) the instruction size, and (c) the memory model. These characteristics can typically have different sizes between 4 and 128 bits (eg, 15, 16, 32, 64 bits) and are not limited to powers of two.
[0049]
In the context herein, the term "processor" encompasses any type of processor, including but not limited to:
-"Microcontrollers", also called "embedded processors". "Microcontroller" and "embedded processor" typically refer to small processors (usually composed of fewer transistors than large processors and have limited power consumption). Examples of microcontroller architectures include:
− Z80
-8051 (for example, manufactured by Intel)
-CPU 8/6800 (for example from Motorola, for example 68HC05, 68HC08 and 68HC11)
-CPU32 / 68k (68000 Dragonball made by Motorola, etc.)
-Other processors, typically used in different types of computers and control systems. Examples of architectures include:
-Alpha 21xxx (21164, 21264, 21364, etc.)
-AMD x86-64 (Sledgehammer, etc.)
-ARM (ARM10, StrongARM, etc.)
-CPU 32 / 68k (eg Motorola made 68000, 68030, 68040 for example)
-IA32 (e.g. x86 family from Intel (i486, Pentium etc.), AMD (K6, K7 etc.) and Cyrix (Cyrix))
IA64 (HP / Intel Itanium, etc.)
-MIPS (SGI R4000, R10000, etc.)
-PA-RISC (8000 made by HP, etc.)
-PowerPC (IBM / Motorola G3, G4, etc.)
-SPARC (Ultra SPARC II (UltraSPARC II), Ultra SPARC III (UltraSPARC III), etc., manufactured by SUN)
-DSP. Examples include:
-DSP56300 (made by Motorola)
-MSC8100 (made by Motorola)
-TI TMS320C6711 (Texas Instruments)
[0050]
In the context herein, the term "register" is to be understood as any memory space containing data such as numerical values, for example, CPU registers, RAM, memory in electronic circuits, Or any data carrier such as a hard disk, floppy disk, compact disk (CD), DVD, data tape or DAT tape.
[0051]
It should be understood that the invention also relates in an independent manner to data derived by the method of the invention. Also, when the present invention relates to methods, it also in an independent manner is a computer program adapted to perform such methods, a data carrier loaded with such computer programs It also has to be understood that it relates to a memory means and / or to a computer system for performing the methods.
[0052]
Any computations involved in the method of the present invention can be performed on or by the electronic device.
[0053]
In a first aspect, the present invention provides a method for performing a numerical calculation in a mathematical system including at least one function. The method is
-Representing the mathematical system in discrete terms;
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing the calculation such that the calculation includes the at least one variable expressed as a fixed-point number;
Obtaining a resulting number from the plurality of calculations, wherein the resulting number is
-A. At least part of the solution to the mathematical system;
-B. Representing at least one of the numbers available in another calculation related to the numerical solution of the mathematical system,
The method further comprises:
-I. A subset of the resulting number of digits;
-Ii. A subset of the digits of the number derived from the resulting number;
Extracting a set of data representing at least one of the following.
[0054]
A subset of a number may be considered to be a part of the number, such as not necessarily all but some of the digits or bits of the number. For example, the least significant 8 bits of a 16-bit number can be considered a subset of the 16-bit number.
[0055]
The term “extract” refers to outputting the number or subset in question, for example, as a key stream or as part of a key stream, or as any other final or intermediate result of computation, Storing the number or subset in a register in anticipation of its further use, such as subsequent calculations on the subset, for example, but not limited to.
[0056]
By extracting a subset of a plurality of digits of a number instead of extracting the entire number, the method can be used in a pseudo-random number generator to reduce the random nature when used, for example, for encryption and / or decryption purposes. Be improved. Moreover, since only one subset is extracted, the information set contains less information about the internal state of the mathematical system, which means that the encryption set incorporating the method according to the invention / Enhance the security of the decryption system.
[0057]
A mathematical system may include a continuous system, such as, for example, a system of differential equations, but this may also or alternatively include elements that are originally discrete, such as in the case of maps. May be included. At least one function of the mathematical system may be non-linear as described in more detail below.
[0058]
Usually, the subset of the plurality of digits includes k bits of the number of m bits, where k ≦ m, and, for example, 8 bits of the number of 32 bits are extracted. The number from which the subset is extracted and / or the set of extracted data can be represented in one or more binary, octal, decimal, hexadecimal, and the like. The k bits may be the least significant bits of the number, or may be k bits selected from a predetermined or random position in the number from which the bits are extracted. For example, from the 64-bit number, the 42nd, 47th, 53th, 55th, 56th, 57th, 61th and 63rd bits can be extracted, or the 47th to 54th bits can be extracted.
[0059]
The method according to the first aspect of the invention is applicable to encryption and decryption, modulation of radio waves, synchronization of chaos in image and audio signals to reduce noise, data compression in control systems, and For example, the present invention is applicable to embedding of a digital watermark (watermarking) and image deep encryption (steganography) for storing a document at the least significant bit of an audio file and hiding the document in digital transmission.
[0060]
The use of fixed-point numbers has the advantage over floating-point numbers that the rounding and / or truncation errors that occur in calculating fixed-point numbers are defined identically on all processors. Through the use of fixed-point variables, decimal numbers can be represented as integer-type numbers with a virtual point separator placed in the number. If floating point variables are used, the truncation / rounding error will not be the same on different types of processors.
[0061]
As a result of the truncation / rounding error being controllable or predictable, numerical calculations in mathematical systems that are sensitive to the truncation / rounding error can be performed in a reproducible manner. Thus, for example, non-linear systems, especially chaotic systems, can be solved numerically in a reproducible manner. This provides a synchronization technique that does not require feedback or correction algorithms or registers to prevent inaccuracies, or that ensures that the system solution in encryption is the same as in decryption. Without the need, chaotic systems can be used in pseudorandom number generators, such as in encryption / decryption algorithms. This in turn contributes to the computation, and the pseudo-random number generator and / or encryption / decryption algorithms are faster than algorithms that include such feedback or correction or synchronization techniques. Furthermore, there is no need to send synchronization data with the encrypted data. Such synchronized data often reaches a size comparable to the size of the encrypted data, for example, due to insufficient bandwidth when transmitting data over the Internet. This can be a big problem. In addition, the transmission of such data compromises the security of the system. This calculation is also faster than calculations involving floating-point variables for the variables in question, but for calculations involving fixed-point numbers, the hardware processor treats the calculation as an integer calculation. This is because calculations are performed on integers, which are generally faster than calculations on floating point numbers.
[0062]
In the present context, the term "resulting number" has to be understood as any number that occurs in a calculation. More than one resulting number may be obtained. The resulting number is assigned to a part and / or intermediate result of the solution to the mathematical system, ie any variable or parameter of the mathematical system or any other variable or parameter used in the calculation, as described above. It can be a given number. In an implementation of the method, the resulting number, or a portion thereof, can be extracted, for example, as a pseudo-random number for use in an encryption / decryption system. Alternatively, one or more mathematical and / or logical operations can be performed on the resulting number or results number to determine another number to be extracted. All bits or only selected bits of the resulting number, expressed in binary, can be extracted. It should be understood that the number generated from the selected bits of the number generated during the calculation may be referred to as the resulting number. Thus, the term "resulting number" also includes any portion of the number that occurs during a calculation.
[0063]
The method according to the first aspect of the invention, as discussed above, may be used in cryptography, for example in symmetric cryptographic algorithms, public key (or asymmetric key) algorithms, secure or cryptographic hash functions, or message authentication codes (MAC This is useful in implementations. These algorithms can be used, for example, to accomplish one or more of the following tasks.
-Ensure the confidentiality of digital data and protect it from unauthorized access.
-Ensuring the integrity of the digital data to ensure that the information is accurate or has not been tampered with;
-Authorization, for example, to authorize the execution of certain tasks or operations.
-Authentication, such as user authentication to verify the identities of other parties, or data origin authentication to verify the origin of data.
-Non-repudiation to provide evidence of being involved in e-commerce, for example to prevent a first person A from sending a message to a second person B and subsequently denying having sent this message. For this purpose, a digital signature is used. The generation of digital signatures can incorporate the use of public key algorithms and hash functions.
[0064]
The method according to the first aspect of the invention is also applicable to so-called hash functions. The hash function provides a type of digital fingerprint where a small amount of data serves to identify other data, which is typically a much larger set of data than the small amount of data described above. A hash function is typically a public function that does not include a private key. Hash functions can also provide a measure of authentication and integrity. Although the hash function is often essential for digital signature algorithms and for password protection, it is possible that the hash value of the password may be used instead of the password itself for control of the password, thereby enabling communication. This is because only the hash value need be transmitted over the network or the like, not the password itself.
[0065]
Hash functions that use a secret key as input are often referred to as MAC algorithms or “keyed hash functions”. MAC algorithms are used to guarantee authentication and data integrity. This means that the particular message arrived from a person or entity that was indicated to be the source of the message (authentication) and that the message was not modified during transmission (relay) (integrity) And guarantee. This is because, in the IPsec protocol (see RFC 2401, available at http://www.rfc-editor.org on December 7, 2001), for example, multiple IP packets are transmitted as they are transmitted. Used to ensure that they have not changed between the time they arrive and when they reach their final destination. It is also used for any kind of inter-bank remittance protocol.
[0066]
As discussed above, the method according to the first aspect of the invention can be implemented in a hash or MAC algorithm. A hash or MAC algorithm calculates a checksum of a given amount of arbitrary length data and gives the checksum as a result. This process must be irreversible (one way) and small changes in the input values must result in significantly different outputs. Therefore, the sensitivity to data input must be high. A hash function does not use a key as a seed value, whereas a MAC algorithm uses such a key to represent or determine a seed value for the algorithm, so that the result depends on the key. The hash function relies on a constant instead of a key, for example a predetermined bit from the number π. Alternatively, a portion of the data to which the hash function is applied may be used as a seed value.
[0067]
The hash / MAC algorithm can be implemented as follows.
-The algorithm uses a mathematical system in the form of a logistic map. The logistic map uses x as a parameter and x n + 1 = Λx n (1-x n ). Other chaotic systems may be used, such as the Lorenz system discussed in detail below.
As a result of the algorithm's dependence on the message m whose checksum is to be calculated, the message has been incorporated into the system as one of its components. For example, some kind of connection between a message and a dynamic variable x is represented by the expression x n + 1 = Λx n (1-x n ) + Ε (x n -M n ) May be performed.
Parameters λ and ε and initial value x 0 May be predetermined from the message and / or derived from the message. For the MAC algorithm, the parameters λ and ε and the initial value x 0 Can be completely or partially determined from the secret key.
The system repeats until the end of the message is reached. The final calculated value, such as x or the least significant digit, is represented as a hash value, MAC or checksum, for example. Alternatively, many additional iterations can be performed prior to extracting the resulting number. Instead of or in addition to extracting the final calculated value of x, predetermined bits that have been ignored in the calculation can be extracted as a hash value.
The way in which the message m is introduced into the dynamic system can change. For example, a portion of the message can be used to affect the x variable at each iteration. Such an effect can be achieved, for example, by performing an XOR (exclusive OR) operation on a plurality of predetermined bits of the message to obtain the least significant digit of x.
[0068]
Additional details regarding the hash / MAC function can be found in Bruce Schneier, "Applied Cryptography," Second Edition, John Wiley & Sons, 1996. You.
[0069]
One possibility of application of the method according to the first aspect of the invention is public key encryption, also called asymmetric algorithm. The key used for decryption is different from the key used for encryption. For example, the key generation function generates a pair of keys, one for encryption and the other for decryption. One is a secret key and the other is a public key. The latter may be sent over the Internet in an unencrypted version. An encryption key may constitute or include multiple parameters and / or initial conditions for a chaotic system. Plaintext is used to modulate chaotic systems that are irreversible unless initiated by a secret key. For decryption, a mathematical system is used which has the opposite dynamics of the system used for encryption.
[0070]
In the method according to the first aspect of the invention, the calculation including the variable represented as a fixed-point number is performed on one or more variables represented as other types of numbers, such as floating-point numbers and integers. And may include calculations on other types of variables, including
[0071]
The mathematical system may be a discrete system or a continuous system. In the following, various types of mathematical systems will be considered.
[0072]
The calculation may include at least a first and a second fixed-point number where each fixed-point number has a decimal separator, wherein the first fixed-point number has a second fixed-point separator. Are located at positions different from the positions of the decimal separators. The first and second fixed-point number decimal separators may be positioned at selected locations.
[0073]
The resulting number is
Integer and
A floating point number,
Fixed-point number and
Can be expressed as a variable selected from the group consisting of
[0074]
In general, a mathematical system may include one or more differential equations, or one or more discrete maps or mappings. In the case of a differential equation, the mathematical system may include one or more ordinary differential equations and / or one or more partial differential equations. In the case of discrete mapping, the mathematical system may include a map that preserves one or more regions and / or a map that does not preserve one or more regions. At least one function of the mathematical system can be non-linear.
[0075]
The method of the present invention is also applicable to other types of functions or equations, including integral equations. At least one nonlinear differential equation or mapping may exhibit chaotic behavior. That is, it may have at least one positive Lyapunov exponent, in which case the method may include calculating the Lyapunov exponent at least once during the mathematical calculation. If the mathematical system exhibits chaotic behavior, the method of the present invention can be effectively applied in a pseudorandom number generation method, for example, in an encryption / decryption method. At least one Lyapunov exponent may be calculated at least once during the mathematical calculation to determine whether the mathematical system exhibits chaotic behavior. When the mathematical system is not exhibiting chaotic behavior, for example when the calculated Lyapunov exponent is not positive, the calculation can be interrupted and restarted from other initial values and / or other parameters.
[0076]
The at least non-linear differential equation or mapping preferably determines at least one state variable X, which can be a function of at least one independent variable t.
[0077]
In particular, the mathematical system can include one or more of the following systems.
A continuous differential equation, including:
-Partial differential equations such as Navier-Stokes equations,
-ODEs, including:
-Lorenz systems, combined Lorenz systems, Roessler systems, combined wrestler systems, hyperchaotic wrestler systems, Ueda systems, the simplest second-order dissipative chaotic flows, the simplest Autonomous systems such as dissipative flows, including piecewise linear dissipative chaotic flows,
A Hamiltonian system including the N-body problem from celestial mechanics, where N ≧ 3,
− Forced systems such as forced duffing equations, forced negative resistance oscillators, forced brusselator, forced damped pendulum equations, coupled pendulums, forced double well oscillators, forced van der Pol oscillators. Non-autonomous systems, including
-Delay logistic equations, delay differential equations including population models.
[0078]
A discrete mapping, including:
A map that preserves and does not preserve the area, including:
-With any dimension piecewise linear maps, such as tent maps, asymmetric tent maps, 2x modulo 1 maps and Anosov maps and generalized Baker's maps, Lozi maps. Generalizing and / or combining piecewise linear maps to higher orders,
Generalization and / or combining higher order polynomial maps (second or higher order), including logistic maps, Henon maps and N-connected logistic maps, and polynomial maps such as N-connected Enone maps ,
-Generalization of trigonometric maps, including sine circle maps, sine maps, Chirikov standard maps, Sinai maps, standard maps, and trigonometric maps to higher orders and / Or binding,
-Bernoulli shift, decimal shift, horseshoe-shaped map, Ikeda map, Paikone (pastry) map, digital filter model, construction of two-dimensional Enone type map from arbitrary one-dimensional map, DeVogelaere map Other maps including.
A cellular automaton.
A neural network.
[0079]
The wrestler system described above has the form:
[0080]
(Equation 9)
Figure 2004530919
(Equation 10)
Figure 2004530919
(Equation 11)
Figure 2004530919
[0081]
Here, typical parameter values are a = b = 0.2 and c = 5.7. For the wrestler system, see E. It is described in more detail in OE Roessler, Physical Letters (Phys. Lett.), 57A, 397-398 (1976).
[0082]
The above-mentioned enon map has the following formula.
[0083]
(Equation 12)
Figure 2004530919
[0084]
Here, typical parameter values are a = 1.4 and b = 0.3. For more information, see M. See M. Henon, Communications in Mathematical Physics, Commun. Math. Phys., 50, 69-77, (1976).
[0085]
x n + 1 = Μx n (1-x n ) May be used. An Ansov map, often of the form: cat map, may be used.
[0086]
(Equation 13)
Figure 2004530919
[0087]
The map consists of two steps: i) linear matrix multiplication and ii) non-linear modulo operation, the latter keeping the iterations inside the unit square. An Ansov map can be generalized to any number of variables. Further, the matrix can have any coefficients limited only by the requirements of being region conservative and having at least one positive Lyapunov exponent for the system. These indices can be calculated analytically for such a system. For details, see A. Jay. AJ Lichtenberg and M. Lichtenberg A. See MA Liebermann, Regular and Chaotic Dynamics, Springer, 1992, (p. 305).
[0088]
In addition, one type of joint map, a map grid, may be used. In the example below, x i Represents a variable on a grid (represented by an N-dimensional array of points), where the grid is a one-dimensional array with M points. Each point on the grid is updated by the function to the right of the arrow. Here, the function f may be, for example, a logistic map. As can be seen from the example, adjacent points on the grid combine linearly, where the linear combination is adjusted by the parameters γ and ε. The boundary conditions indicate how the grid elements 1 and M are handled.
[0089]
[Equation 14]
Figure 2004530919
[0090]
Finally, it is possible to use some simple three-dimensional flow equations. The system usually consists of fewer terms than the Lorentz system and the wrestler system. That is, either five terms and two nonlinearities, or six terms and one nonlinear term. In comparison, the Lorentz and wrestler systems each consist of seven terms. Jay. C. See JC Sprott, Physical Review (Phys. Rev.), E50, R647-R650, (1994). A suitable system is given in the list below.
[0091]
(Equation 15)
Figure 2004530919
(Equation 16)
Figure 2004530919
[Equation 17]
Figure 2004530919
(Equation 18)
Figure 2004530919
[Equation 19]
Figure 2004530919
(Equation 20)
Figure 2004530919
(Equation 21)
Figure 2004530919
(Equation 22)
Figure 2004530919
[Equation 23]
Figure 2004530919
(Equation 24)
Figure 2004530919
(Equation 25)
Figure 2004530919
(Equation 26)
Figure 2004530919
[Equation 27]
Figure 2004530919
[Equation 28]
Figure 2004530919
(Equation 29)
Figure 2004530919
[Equation 30]
Figure 2004530919
[Equation 31]
Figure 2004530919
(Equation 32)
Figure 2004530919
[Equation 33]
Figure 2004530919
[0092]
The Lorentz system includes the following differential equation:
[0093]
(Equation 34)
Figure 2004530919
(Equation 35)
Figure 2004530919
[Equation 36]
Figure 2004530919
[0094]
Here, X = (x, y, z) is a state variable, t is an independent variable, and σ, r, and b are parameters.
[0095]
If the following condition is satisfied, the stationary point of the Lorentz system is not stable, and the Lorentz system in this case probably exhibits chaotic behavior.
[0096]
(37)
Figure 2004530919
[0097]
The plurality of parameters may be constant or variable, and if a plurality of variable parameters contributes to, for example, the calculation result becoming more unpredictable, this may be a pseudo-random number generation method or It can be beneficial in encryption / decryption methods.
[0098]
For a non-linear mapping, the computation may include a numerical iteration of the non-linear function, the iteration comprising the initial condition X of the state variable X 0 Based on
[0099]
The step of performing the calculation includes one or more previous solutions X, where m ≦ n + 1. m And the step length ΔT of the independent variable t n X based on n + 1 May be included to numerically integrate a nonlinear differential equation by repeatedly calculating. Preferably, at least one initial condition X of the state variable X 0 And the initial value of the step length ΔT 0 And are provided. The step length may be given before the calculation is started, or may be calculated as the calculation proceeds. For example, the initial value ΔT of the step length 0 Is the initial condition X 0 May be calculated from
[0100]
In the discrete formulation of the Lorentz system, the solution X n + 1 Is the step length ΔT = (Δt x, n , Δt y, n , Δt z, n ) Can be calculated as follows:
[0101]
[Equation 38]
Figure 2004530919
[Equation 39]
Figure 2004530919
(Equation 40)
Figure 2004530919
[0102]
here,
Δt x, n Is x n + 1 Is the step length used to calculate
Δt y, n Is y n + 1 Is the step length used to calculate
Δt z, n Is z n + 1 Is the step length used in the calculation of
[0103]
As described above, the step length ΔT may be constant throughout the calculation or may vary. For example, in each or some of the integration steps, an element of the step length ΔT (Δt x, n , Δt y, n , Δt z, n ) May be one or more numbers of functions involved in or derived from the calculation. Also, in each integration step, an element of the step length ΔT (Δt x, n , Δt y, n , Δt z, n At least one of the solutions X is a current solution or a previous solution to the mathematical system. m Function. In each or some of the integration steps, an element of the step length ΔT (Δt x, n , Δt y, n , Δt z, n ) Is at least one of the current or previous integration steps, at least one step length ΔT m Is a function of The varying step length ΔT can be used not only for the method according to the invention, but also for any numerical solution of the differential equation, so that the invention also provides, as an independent aspect, It also relates to how to solve equations numerically. In pseudo-random number generation methods, such as in encryption / decryption methods, a variable step length can contribute to improving system security, ie, making the resulting key stream more unpredictable.
[0104]
In the pseudo random number generation method, the initial condition X 0 And / or the initial value of the step length ΔT 0 May be calculated from the seed value or may represent the seed value. In the encryption / decryption method, the initial condition X 0 And / or the initial value of the step length ΔT 0 May be calculated from the encryption key or may represent the encryption key. Also, at least some of the at least some parameters of the mathematical system may be calculated from or represent the seed value or the encryption key. The key may be a public key or a private key.
[0105]
The extracted set of data may include pseudo-random numbers that can be used for encryption. A plurality of numbers resulting from the calculation may be extracted. The extracting step extracts one or more numbers derived from the resulting number of k bits, such as the k least significant bits from the resulting one or more numbers. And this contributes to the unpredictability of the derived number. The extracted k bits can be derived, for example, by applying a modulus or logical "product" function to the resulting number or numbers. The step of extracting may include, as an alternative to extracting the least significant k bits, extracting the resulting number of k bits at a predetermined or variable position. The number k can be an integer value selected from a range between 8 and 128, such as 16-64, 24-32. If multiple numbers are extracted, the extracted number may be derived by different values of k, which further contributes to the unpredictability of the derived number. The extracted one or more numbers can be manipulated by arithmetic and / or logical operations to obtain a combined set of data. The extracted set of one or more numbers and / or combined data can be combined with the original data in arithmetic and / or logical operations to encrypt the original data. . Similarly, the extracted set of one or more numbers and / or the combined data may be encrypted in arithmetic and / or logical operations to decrypt the encrypted data to obtain the original data. Can be combined with the data. Arithmetic and / or logic operations can include XOR operations, multiplications or additions. For example, arithmetic and / or logical operations may involve adding the original data to the combined set of data for encryption and combining the combined data from the encrypted data for decryption. Set subtraction may be included. Alternatively, the arithmetic and / or logical operations may be performed by subtracting the combined set of data from the original data for encryption and encrypting the combined set of data for decryption. And addition with data. When subtracting or adding numbers, it may be necessary to apply a modulus function. If the set of extracted data includes data derived from multiple numbers, one set of multiple bits, eg, the least significant k bits, can be extracted from one number Whereas the other bits, for example the 47th to 54th bits in a 64 bit number, can be extracted from other numbers.
[0106]
In a block cipher encryption / decryption system, for example, the computation may operate on data representing a block of plaintext, such that the plaintext and key are input to an encryption system that provides ciphertext as output. it can. In a block cipher encryption and decryption system, an extracted set of data may be used to define at least one operation on a block of plaintext. The method according to the first aspect of the invention is applicable to a block cipher algorithm, wherein the plaintext block is divided into two sub-blocks, one sub-block being used to affect the other sub-block. used. Here, for example, the first block (or a part thereof) of the modified version is used to influence the other (or a part thereof) by an XOR function or the like. Such an algorithm is commonly called a Feistel network. See Bruce Schneier, Applied Cryptography, Second Edition, John Wiley and Sons, 1996. In such a case, the first sub-block or its modified version can be transformed by a hash function that depends on the method. This hash function is given an encryption key as input. At each iteration, the hash function may be provided with a new encryption key as input. Alternatively, the hash function can be given the same encryption key in all rounds. As another alternative, the encryption key is changed from block to block, for example, by providing the same encryption key as input in every round of each block, or by providing a different encryption key as input to each block in each round. You can also.
[0107]
The extracted data can be used as a decryption key or an encryption key. In systems where calculations are performed in two mathematical systems, a set of data extracted from one system is used to generate a key for the other system or to be used as a key for the other system Is possible. The extracted data can also be used to generate data representing a digital signature and / or to embed a watermark in digital data.
[0108]
In the method according to the first aspect of the present invention, the electronic device may comprise an electronic processing device having a predetermined register width, whereby the method comprises:
Representing at least one integer with a bit width greater than the register width as at least two sub-numbers each having a bit width at most equal to the register width;
Performing at least one of said calculations as a sub-calculation for each of said sub-numbers to arrive at at least two partial results expressed as smaller bit-width integers at most equal to the register width of said processing unit. When,
Concatenating the partial results to generate a representation of the result of the at least one calculation.
[0109]
Similarly, calculations can be performed on numbers with a width smaller than the register width of the processor, so that operations such as AND can be performed, for example, for 64-bit registers, calculations on 32-bit numbers Does not use the upper half of the 64-bit register. To hold the sign of the number in question, the most significant bit of a 32-bit number, for example, may be copied to the upper 32 bits of a 64-bit register.
[0110]
An integer typically includes or represents one or more fixed-point numbers used in the calculations. Fixed-point numbers represented as integer-type numbers can represent real numbers.
[0111]
It should be understood that the method according to the first aspect of the invention can be combined with any of the steps discussed below in connection with other aspects of the invention.
[0112]
The invention also relates to a computer program for performing a numerical calculation in a mathematical system including at least one function, said computer program comprising:
-Representing said mathematical system by a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing said calculation such that said calculation includes said at least one variable expressed as a fixed-point number;
-Adapted from the above calculation to obtain the resulting number, wherein the resulting number is
-A. At least part of the solution to the mathematical system;
-B. Numbers available for further calculations related to the numerical solution of the mathematical system
Express at least one of
The computer program further comprises:
-I. A subset of the resulting number of digits;
-Ii. A subset of the number of digits derived from the resulting number and
Is adapted to extract a set of data representing at least one of the following.
[0113]
The computer program may be further adapted to perform any of the operations and method steps discussed herein. The invention also relates to a computer readable data carrier, loaded with such a computer program, and to a computer with such a computer readable data carrier, or to such a computer readable data carrier. Regarding the computer connected to the carrier, the computer has a processor means for executing the program.
[0114]
The invention also relates to a signal comprising an extracted set of data derived from calculations in a mathematical system, with the aim of reaching the extracted set of data,
-The mathematical system is represented by a plurality of discrete terms,
-At least one variable of the mathematical system is represented as a fixed-point number;
The calculation is performed such that the calculation includes the at least one variable expressed as a fixed-point number, and
-The resulting number is obtained from the above calculation, and the resulting number is
-A. At least part of the solution to the mathematical system;
-B. Numbers available for further calculations related to the numerical solution of the mathematical system
Express at least one of
This allows the extracted set of data to:
-I. A subset of the resulting number of digits;
-Ii. A subset of the number of digits derived from the resulting number and
At least one of
[0115]
The invention further relates to a signal comprising a set of encrypted data derived as a combination of plaintext and at least one set of data extracted from calculations in a mathematical system, wherein said set of extracted data is For the purpose of reaching
-The mathematical system is represented by a plurality of discrete terms,
-At least one variable of the mathematical system is represented as a fixed-point number;
The calculation is performed such that the calculation includes the at least one variable expressed as a fixed-point number, and
-The resulting number is obtained from the above calculation, and the resulting number is
-A. At least part of the solution to the mathematical system;
-B. Numbers available for further calculations related to the numerical solution of the mathematical system
Express at least one of
This allows the extracted set of data to:
-I. A subset of the resulting number of digits;
-Ii. A subset of the number of digits derived from the resulting number and
At least one of
[0116]
It should be understood that any data derived from any of the methods and / or computer programs of the present invention and any signals that include such data are also within the scope of the appended claims. Further, it should be understood that any features, method steps, or functions described below with respect to other aspects of the invention described below may be combined with the method according to the first aspect of the invention. is there.
[0117]
In a second aspect, the present invention relates to a method for detecting periodic behavior in a solution for a mathematical system including at least one non-linear function that determines at least one state variable associated with at least one independent variable. The method is
-Representing the mathematical system with a plurality of discrete terms;
Performing a calculation to obtain a resulting number, wherein the resulting number represents at least a part of a solution to the mathematical system;
-Storing the selected solution in an array A in the memory of the electronic device, said array being adapted to store a finite number n + 1 of solutions;
The method is
− The current solution,
-A particular one of the solutions stored in the array;
Determining whether at least one is substantially the same as another solution stored in the array.
[0118]
Performing the calculations, storing the selected solution, and determining are performed consecutively during the calculation, i.e., during the calculation, for example, in connection with each iteration, for example, at each calculation step. It may be repeatedly executed.
[0119]
If the current solution or a particular one of the solutions stored in the array is substantially identical to one or more other solutions stored in the array, the solution of the mathematical system will probably exhibit periodic behavior. Is shown. If the method according to the second aspect of the invention is used in a pseudo-random number generation method, such a periodic behavior may occur if the method is used in an encryption / decryption method. Or, it is undesirable because it adversely affects the unpredictability of the key stream. By applying the above method, a periodic behavior can be detected.
[0120]
Determining whether the current solution or a particular one of the solutions stored in the array is substantially identical to one or more other solutions stored in the array, preferably, Determining whether are completely identical. When solving a mathematical system representing an array of state variables X, this determining step may include determining whether only some of the entries of X are substantially identical.
[0121]
To save computation time and / or memory, only selected solutions may be stored in memory.
[0122]
In the method, each entry in the array has an array level A i , 0 ≦ i ≦ n, the method may include a solution having an elapsed time that is increasing each time.
In the step of storing the selected solution in the array, storing the current solution in the 0th level A in the array A; 0 , Thereby overwriting the old value stored at the 0th level in array A;
Moving the old value to the first level in array A before the zeroth level is overwritten by the current solution when the zeroth predetermined criterion is met,
For the first level and each higher level i in the array,
When the i-th predetermined criterion for level i is fulfilled, the i-th level is stored at the i-th level before being overwritten by the value moved from the (i-1) -th level Including moving the old value to the (i + 1) th level in array A,
When the nth level is updated, it involves discarding old values previously stored at the nth level.
[0123]
For each level i in the array, the number of times the old value stored at the i-th level is overwritten by the new value without being moved to the (i + 1) -th level may be counted, and may be predetermined. The i-th predetermined criterion is met when the old value has not been moved a number of times. This predetermined number may be the same at all levels of array A, or it may vary between multiple levels. This predetermined number of times for the i-th level of array A depends on one or more values stored in the array, such as when a sign change occurs in one or more values. May be.
[0124]
Determining whether the current solution or a particular one of the above solutions stored in the array is substantially the same as one or more other solutions stored in the array, comprises determining a predetermined test criterion. May be executed only when is satisfied. For example, a test criterion may be satisfied if the sign of at least one state variable changes from + to-, or from-to +, or both. The test criteria may also be satisfied when a change occurs in the sign of at least one derivative of the at least one state variable with respect to the at least one independent variable, in which case the method further includes calculating the derivative. .
[0125]
In the method, a test value may be calculated from at least one state variable and / or from a derivative, and the test criterion is based on the test value. The test criteria may be met when a change occurs in the sign of the test value or the sign of the derivative of the test value, or a predetermined value may be provided.
[0126]
The step of performing the calculations may be performed by applying a method according to the first aspect of the present invention, together with any steps discussed in connection with the first aspect of the present invention. And any of the steps described below in connection with the method according to the aspect.
[0127]
In a third aspect, the invention relates to a method for generating a pseudo-random number, the method comprising:
I) representing the mathematical system with a plurality of discrete terms;
II) defining a seed value representing at least an initial condition of the mathematical system;
III) expressing at least one variable of the mathematical system as a fixed-point number;
IV) performing a calculation involving at least one variable expressed as a fixed-point number, and obtaining the resulting number from the calculation, wherein the resulting number comprises:
a. At least part of the solution to the mathematical system,
b. Numbers available for other calculations related to the numerical solution of the mathematical system
Express at least one of
V) including extracting as a pseudo-random number a number derived from at least one number generated during the calculation.
[0128]
If the method is applied to an encryption / decryption method, the seed value may be a user-defined value such as an encryption / decryption key.
[0129]
The pseudorandom number is a number derived from one or more numbers of k digits generated during the computation, such as the least significant k bits of one or more numbers or a selected k bits. May be extracted as
[0130]
The method may include repeating steps IV) and V) until a predetermined amount of pseudo-random numbers has been generated.
[0131]
A predetermined amount of pseudo-random numbers may be generated as a spare seed value and stored in the memory of the electronic device, such as, for example, by the method according to the second aspect of the invention or by other methods. Available when behavior is detected. The predetermined amount of pseudorandom numbers may be stored in the algorithm.
[0132]
The method may further include a method for detecting periodic behavior according to the second aspect of the present invention, as discussed above. In that case, the method for generating a pseudo-random number according to the third aspect of the present invention comprises:
Determining whether the current solution or a particular one of the above solutions stored in the array is substantially the same as one or more other solutions stored in the array, wherein determining whether the current solution or one or more other solutions stored in the array is substantially the same. When indicating that a particular solution is identical to one or more other solutions,
Interrupting the generation of the pseudo-random number, ie, interrupting the iterations of steps IV) and V);
Using the spare seed value as a seed value in step II);
Restarting the generation of the pseudo-random numbers, ie restarting the repetition of steps IV) and V), may be included.
[0133]
Thus, for example, in an encryption / decryption method, if a periodic behavior is detected, a spare encryption / decryption key can be used.
[0134]
Prior to the step of restarting the generation of the pseudorandom number, a predetermined amount of the pseudorandom number may be generated as a new spare seed value and stored in the memory of the electronic device. When steps IV) and V) are started with the new seed value in step II), each level of array A is preferably reset prior to step IV).
[0135]
The method according to the third aspect of the invention may include the steps described above in relation to the first aspect of the invention and / or the steps described below in relation to another aspect of the invention.
[0136]
In a fourth aspect, the present invention relates to a method for encrypting an original set of data into an encrypted set of data, the method comprising:
A) Pseudo random numbers
I) representing the mathematical system with a plurality of discrete terms;
II) defining an encryption key representing at least the initial conditions of the mathematical system;
III) expressing at least one variable of the mathematical system as a fixed-point number;
IV) performing a calculation including at least one variable expressed as a fixed-point number and obtaining a resulting number from the calculation, wherein the resulting number comprises:
a. At least part of the solution to the mathematical system,
b. Numbers available for other calculations related to the numerical solution of the mathematical system
Expressing at least one of:
V) extracting as a pseudo-random number a number derived from at least one number generated during the calculation;
B) Original data and pseudo-random numbers
i. Arithmetic operations,
ii. Logical operations and
And obtaining a combined set of data, wherein the combined set of data is encrypted data.
[0137]
Prior to step A), a subset of the original data may be separated from the set of data, and step B) may be performed on this subset of data. This step can be repeated until multiple subsets that together make up the entire set of original data are encrypted.
[0138]
The pseudo-random number may be extracted as a number derived from one or more numbers of k digits generated during the calculation, for example, the least significant k bits or a selected k bits.
[0139]
Steps IV) and V) may be repeated until a predetermined amount of pseudorandom numbers has been generated.
[0140]
A predetermined amount of pseudorandom numbers may be generated as spare encryption keys and stored in a memory of the electronic device. For example, a number resulting or resulting from at least one integration or iteration step of the calculation can be stored as a spare encryption key. Spare encryption keys can be used, for example, when encryption is interrupted due to the occurrence of periodic behavior in the solution to the mathematical system. If it is not necessary to output a spare encryption key, this may be stored in the encryption algorithm. If the method is used for decryption, the spare key is the decryption key.
[0141]
As is apparent from the above description, the method may include a method for detecting periodic behavior according to the second aspect of the invention, in which case encrypting according to the fourth aspect of the invention. The method for
Determining whether the current solution or a particular one of the above solutions stored in the array is substantially the same as one or more other solutions stored in the array, wherein the step When indicating that a particular solution is identical to one or more other solutions,
Interrupting the generation of the pseudo-random number, ie, interrupting the iterations of steps IV) and V);
Using the spare encryption key as an encryption key in step II);
Restarting the generation of the pseudo-random numbers, ie restarting the repetition of steps IV) and V), may be included.
[0142]
Prior to the step of restarting the generation of the pseudo-random number, a predetermined amount of the pseudo-random number may be generated as a new spare encryption key and stored in the memory of the electronic device.
[0143]
Preferably, when steps IV) and V) are started with the new seed value in step II), each level of array A is reset prior to step IV).
[0144]
The method for encryption according to the fourth aspect of the invention may further comprise any of the steps described above in relation to the method according to the first, second and third aspects of the invention, and / or other steps of the invention. May be included in the following.
[0145]
In a fifth aspect, the present invention relates to a method for decrypting a set of encrypted data which has been encrypted by a method according to the fourth aspect of the present invention, the method for decrypting according to this fifth aspect. The method is
a) extracting the same pseudo-random number as extracted in step V) of the encryption method by performing step A) defined above in connection with the encryption method;
b) manipulating the encrypted data and the pseudo-random numbers by arithmetic and / or logical operations to obtain the original version of the data, ie, the decrypted version of the data.
[0146]
Prior to step a), a subset of the encrypted data may be separated from the set of encrypted data, and if the subset of data has been encrypted by the above-described encryption method, decryption The method may include performing steps a) and b) on this subset of data. This step may be repeated until a plurality of subsets that together make up the entire set of encrypted data are decrypted.
[0147]
When decrypting the encrypted data, any steps of the encryption method can be applied in the same way as during the previous sequence of encrypting the original data.
[0148]
Any of the steps described above in relation to the first, second, third and fourth aspects of the invention may be further applied to a decoding method according to the fourth aspect of the invention. Furthermore, the steps according to the fifth aspect of the present invention may be included in another aspect of the present invention described below.
[0149]
In a sixth aspect, the present invention relates to a computer program for encrypting and decrypting a set of data, wherein said computer program is adapted to execute in an encryption mode and a decryption mode, said computer program further comprising:
i) the following steps:
-Representing the mathematical system with a plurality of discrete terms;
Representing at least one variable of the mathematical system as a fixed-point number;
Performing a calculation involving at least one variable expressed as a fixed-point number;
Obtaining a resulting number from the above calculation, wherein the resulting number is:
a. Part of the solution to the mathematical system,
b. Numbers available for other calculations related to the numerical solution of the mathematical system
Expressing at least one of:
-Extracting as a pseudo-random number a number derived from at least one number generated during the calculation;
Generates a pseudo-random number in a reproducible manner,
ii) data and pseudo-random numbers
Arithmetic operations;
− Logical operations and
And adapted to obtain a combined set of data, operated by at least one of
-If the computer program is running in an encrypted mode, the combined set of data represents an encrypted version of the data;
When the computer program is running in the decryption mode, the combined set of data represents a decrypted version of the data.
[0150]
The step of manipulating may include any of the logical and / or arithmetic functions described above. When the XOR operator is used to manipulate data, the encryption mode and the decryption mode can include the same steps.
[0151]
Generating the pseudorandom number may further include any of the steps described above in connection with the method according to the third aspect of the present invention.
[0152]
The computer program according to the sixth aspect of the present invention, together with any of the steps described above in relation to the first, second, third, fourth and fifth aspects of the present invention, can be implemented in another aspect of the present invention. It may be adapted to perform any of the steps described below in connection.
[0153]
The invention further relates to a computer-readable data carrier, loaded with a computer program according to the sixth aspect of the invention, and to a computer with such a computer-readable data carrier, or to such a computer A computer connected to a readable data carrier, said computer comprising processor means for executing said program.
[0154]
In a seventh aspect, the invention relates to a method for generating a pseudo-random number, the method comprising, in one instance:
I) representing the mathematical system with a plurality of discrete terms;
II) defining a seed value representing at least an initial condition of the mathematical system;
III) expressing at least one variable of the mathematical system as a fixed-point number;
IV) performing a calculation involving at least one variable expressed as a fixed-point number to obtain a resulting number, wherein the resulting number comprises:
a. Part of the solution to the mathematical system,
b. Numbers available for other calculations related to the numerical solution of the mathematical system
Express at least one of
V) extracting as a pseudo-random number a number derived from at least one number generated during the calculation;
Performing steps I) through V) in parallel on multiple instances.
[0155]
Calculations in two or more instances can be performed either simultaneously or sequentially. Thus, calculations in two or more instances can be performed by executing instructions that process multiple calculations simultaneously, or by executing instructions that process only a single calculation at a time.
[0156]
Thus, the generation of pseudo-random numbers in multiple instances in parallel may, in some cases, be performed in only one instance, especially when the hardware on which the method is performed supports parallel processing. Sometimes faster. In addition, by combining two or more instances, longer keys can be applied in encryption than if only one was used. For example, one part of the encryption key can be used for a first instance and another part of the encryption key can be used for a second instance.
[0157]
Any higher dimensional mathematical system can be constructed by combining lower dimensional systems. For example, an N-dimensional system can be created by combining N logistic maps. The combining mechanism can be configured by including either a linear or non-linear function in the N different maps corresponding to the N different variables. The combination function in the map that determines one variable may or may not depend on all other variables. Alternatively, the combination may be performed by substituting one of the N variables into one or more of the remaining N-1 maps.
[0158]
Two or more logistic maps may be combined via a linear combination term. In the example shown below, the parameter ε before the connection term 1 And ε 2 Controls the strength of the connection, ie the degree of influence each of the two logistic maps has on the other.
[0159]
(Equation 41)
Figure 2004530919
[0160]
The number or data may be transmitted between the multiple instances, at least while performing step IV) for each of the instances. The same applies for step V).
[0161]
The method may include combining the plurality of pseudorandom numbers extracted in step V) in each of the instances into a common pseudorandom number using arithmetic and / or logical operations.
[0162]
Parameter values and / or variable values, or parts thereof, may be exchanged between the two instances. Thus, for example, x of one instance n + 1 And x of the other instance n + 1 May be exchanged after each iteration step, or x in one instance n + 1 Is the y of the other instance n + 1 It may be exchanged with. Similarly, the step length Δt n Can also be exchanged between the two instances. The exchange of a variable or parameter value may also be performed by performing a logical and / or arithmetic operation on the value of the first instance before that value is used to change the value of the second instance. Can be achieved.
[0163]
The method according to the seventh aspect of the invention may include any of the steps described above or below in connection with other aspects of the invention.
[0164]
In an eighth aspect, the present invention relates to a method for performing a numerical calculation in a mathematical system comprising at least one function, the method comprising:
-Representing said mathematical system in a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing the calculation such that the calculation includes the at least one variable expressed as a fixed-point number;
Obtaining the resulting number from the calculation, wherein the resulting number comprises:
a. At least part of the solution to the mathematical system;
b. Numbers available in other calculations related to the numerical solution of the mathematical system
Express at least one of
The step of performing the above calculation includes:
-At least one previous solution X m , M ≦ n + 1, the solution X n + 1 And iterative calculation of the state variable X includes performing at least one initial condition X 0 Started based on
The method further comprises:
Providing the cryptographic key as an input to the calculation, whereby the cryptographic key 0 Used to generate
[0165]
In the context here, the term "previous solution" is used to refer to the current solution X n + 1 It is to be understood that also includes
[0166]
Any and all comments and discussions described herein in relation to other aspects of the invention also apply to the method according to the eighth aspect of the invention.
[0167]
In a ninth aspect, the invention relates to a method for determining an identification value for identifying a set of data, the method comprising performing a numerical calculation in a mathematical system including at least one function, the method comprising: Is
-Representing said mathematical system in a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing the calculation such that the calculation includes the at least one variable expressed as a fixed-point number;
Obtaining the resulting number from the calculation, wherein the resulting number comprises:
a. At least part of the solution to the mathematical system;
b. Numbers available in other calculations related to the numerical solution of the mathematical system
Express at least one of
Thereby, at least a representation of the set of data is used in the above calculation,
The method further comprises:
-Extracting at least a portion of the resulting number as the identification value.
[0168]
Therefore, the method according to the ninth aspect of the present invention may be regarded as a hash function or a hash algorithm as detailed above. The identification value can be constituted by a number of extracted numbers extracted at different calculation stages in the numerical calculation. Extraction may occur at each calculation step or at each iteration step, or it may only occur at selected calculation stages.
[0169]
The term "identification value" can be a hash value or a cryptographic checksum that identifies a set of data. See Bruce Schneier, Applied Cryptography, Second Edition, John Wiley and Sons, 1996. If the encryption key is used as a seed value for the calculation, the hash function is called a MAC function (message authentication code).
[0170]
The mathematical system may include a differential equation, such as a PDE or an ODE, or a discrete mapping, such as a map that preserves regions or a map that does not preserve regions. The mathematical system may include at least one non-linear mapping function that determines at least one state variable X.
[0171]
The nonlinear mapping function is, for example, x n + 1 = Λx n (1-x n ) May be included. Where λ is a parameter and x n + 1 Is the value of the state variable x at the (n + 1) th stage of the calculation, x n Is the value of the state variable x at the nth stage of the calculation.
[0172]
The logistic map is x n + 1 = Λx n (1-x n ) + Ε (x n -M n ) May be modified. Where λ and ε are parameters and x n + 1 Is the value of the state variable x at the (n + 1) th stage of the calculation, x n Is the value of the state variable x at the nth stage of the calculation, m n Contains the representation of the nth part of the set of data.
[0173]
The encryption key is λ, ε and the initial value x of the state variable x. 0 May be used to at least partially determine at least one of
[0174]
The mathematical system is
An Anosov map having the form:
(Equation 42)
Figure 2004530919
Or
-An enon map having the form
[Equation 43]
Figure 2004530919
, Etc., may be included.
[0175]
The mathematical system may include at least one nonlinear differential equation and / or a set of multiple nonlinear differential equations.
[0176]
Preferably, the mathematical system has at least one positive Lyapunov exponent, whereby a certain degree of randomness or chaotic behavior is achieved, thereby enhancing the random nature and security of the system You.
[0177]
At least one Lyapunov exponent may be calculated at least once during the mathematical calculation to determine whether the mathematical system is exhibiting chaotic behavior. If it does not exhibit chaotic behavior, that is, if the calculated Lyapunov exponent is not positive, the calculation can be interrupted and restarted from other initial values and / or other parameters.
[0178]
The at least one nonlinear differential equation preferably determines at least one state variable X that is a function of at least one independent variable t. The set of nonlinear differential equations may include, for example, the Lorentz system.
[0179]
Any and all comments and discussions described herein in relation to other aspects of the invention also apply to the method according to the ninth aspect of the invention.
[0180]
In a tenth aspect, the present invention relates to a method for performing a numerical calculation in a mathematical system comprising at least one function, the method comprising:
-Representing said mathematical system in a plurality of discrete terms;
Limiting the range of at least one selected variable of said function, said range excluding values that said selected variable would have had by said function if not limited by said range. So narrow enough
Performing a calculation to obtain a resulting number, said resulting number comprising:
a. Part of the solution to the mathematical system above,
b. Numbers available in other calculations related to the numerical solution of the mathematical system
Express at least one of
-When the value of the selected variable resulting from the calculation exceeds the range, assigning a value within the range to the selected variable.
[0181]
For example, if the upper bits of a value outside the range are truncated, the step of assigning a value within the range can be considered a modulus function. Accordingly, these steps of the method according to the tenth aspect of the present invention may be used to enhance the random nature of the encryption / decryption system and / or to extract information about the internal state of the mathematical system from the encrypted data. An intentional overflow can be provided to make derivation more difficult.
[0182]
Any and all comments and discussions described herein in relation to other aspects of the invention also apply to the method according to the ninth aspect of the invention. In particular, any and all comments stated in connection with encryption and decryption apply, and the method according to the tenth aspect of the invention applies equally to any and all aspects of the invention, in particular This applies to aspects relating to encryption and decryption.
[0183]
Thus, the method according to the tenth aspect of the present invention may be part of a pseudorandom number generation method, for example, generating pseudorandom numbers used for at least one of encryption and decryption. The mathematical system preferably has at least one positive Lyapunov exponent.
[0184]
In an eleventh aspect, the present invention provides a method for performing a numerical calculation in a mathematical system including at least one function, the method comprising:
-Representing said mathematical system in a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as an integer;
Placing a virtual decimal separator within said integer, whereby said integer represents a real number;
Performing a calculation involving at least one variable represented as an integer to obtain a resulting number, wherein the resulting number is represented as an integer;
-The following steps:
Correcting the position of the virtual decimal separator in the integer;
Placing the virtual separator in the resulting number;
Positioning the virtual decimal separator in the resulting number to a predetermined location by performing at least one of the following.
[0185]
The resulting number is typically a fixed point number with a fixed position decimal separator. Alternatively, the position of the decimal separator in the resulting number may be corrected after the calculation is completed. A third possibility is to correct the position of the decimal separator before and after performing the calculation. If all of the positions to the left of the decimal separator in the resulting number are not used, and it is desirable to keep the computation relatively higher than the resolution of the resulting number In some cases, this is appropriate. For example, it is desirable that the resulting number has a format of S (10.21). Thus, for example, the addition of two S (7.24) format numbers may be performed in the S (8.23) format, which then results in the S (10.21) format. Converted to the number obtained. Thus, the carry of the second and third bits from the least significant bit in the argument may affect the result.
[0186]
Finally, depending on the calculation, it may not be necessary or necessary to correct the position of any decimal separator.
[0187]
Correction of the position of the decimal separator is usually performed by a shift operation.
[0188]
Any and all comments and discussions described herein in relation to other aspects of the invention also apply to the method according to the ninth aspect of the invention.
[0189]
In a twelfth broadest aspect, the invention provides a method for performing a numerical calculation in a mathematical system including at least one function, the method comprising:
-Representing said mathematical system in a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing the calculation such that the calculation includes the at least one variable expressed as a fixed-point number;
Obtaining the resulting number from the calculation, wherein the resulting number comprises:
a. At least part of the solution to the mathematical system;
b. Numbers available in other calculations related to the numerical solution of the mathematical system
At least one of
[0190]
Any and all comments and discussions described herein in relation to other aspects of the invention also apply to the method according to the ninth aspect of the invention.
[0191]
In a thirteenth aspect, the present invention provides a circuit for performing a numerical calculation in a non-linear mathematical system including at least one function,
The circuit is designed or programmed such that the mathematical system is represented in the circuit or computer program code by a term in which at least one of the numerical calculations is modified to include an integer operation; Thereby, the selected numerical computation in the unmodified representation of the mathematical system controls the positioning of one or more floating-point operations or decimal separators in one or more fixed-point numbers. Need that
The circuit is designed or programmed such that the selected computation is replaced by at least one permutation computation on one or more integers, such that a mathematical system, in the circuit or computer program code, comprises One permutation calculation is represented as not requiring positioning of the virtual decimal separator.
[0192]
Mathematical systems can exhibit chaotic behavior.
[0193]
Therefore, for example, the following calculation:
[Equation 44]
Figure 2004530919
as well as,
[Equation 45]
Figure 2004530919
Is x n + 1 Can be performed by calculating Next, y n + 1 Can be calculated by the following equation.
[0194]
[Equation 46]
Figure 2004530919
[0195]
This gives y n The calculation step of multiplying by 2 can be omitted.
[0196]
Therefore, execution of the replacement calculation can save calculation time.
[0197]
Similarly, the present invention also provides a method for performing a numerical calculation in a non-linear mathematical system including at least one function in an electronic circuit, the method comprising: In the computer program segment
-Representing said mathematical system in terms wherein at least a selected one of said numerical computations has been modified to include integer operations, whereby said selected ones in an unmodified representation of the mathematical system are included. Numerical calculations require one or more floating-point operations or control over the positioning of the decimal separator in one or more fixed-point numbers,
-Replacing the selected calculation by at least one permutation calculation for one or more integers, whereby the mathematical system includes, in the circuit or the computer program code, the at least one permutation calculation being a virtual point Is represented as not requiring the positioning of the separator, and
Performing the permutation calculation.
BEST MODE FOR CARRYING OUT THE INVENTION
[0198]
FIG. 1 is a schematic diagram of a sequence for encrypting, transmitting, and decrypting digital data. FIG. 2 is a diagram showing an encryption sequence in the block cipher system, and FIG. 3 is a diagram showing an encryption sequence in the stream cipher system. The block cipher system and the stream cipher system have been described in the above discussion on the background of the present invention.
[0199]
Next, methods and algorithms for encrypting / decrypting data will be described as preferred embodiments according to various aspects of the present invention. The algorithm is applicable for most purposes in data encryption / decryption. However, the algorithm is essentially a large file, live or pre-recorded audio / video, copyrighted material (such as computer games or other software), and data for storage (backup and / or Or in the encryption of data streams or other continuous data, such as transportation. Furthermore, the speed of the algorithm makes it particularly suited for these purposes. The algorithm can be used even on very small processors due to its calculation method.
[0200]
The algorithm relies on a pseudo-random sequence stream cipher system (PRSSC). The PSSRC system is characterized by a pseudo-random number generator (the contents of the outer box in FIG. 4), which generates a sequence of pseudo-random data based on a binary key. As referred to in FIG. 4, this sequence, a so-called key stream, is used for encryption and decryption. The key stream is specific to each possible key.
[0201]
Logical XOR function for plain text (in the drawing,
[Equation 47]
Figure 2004530919
), The same amount of key stream encrypts the plaintext. The output of the XOR function is a ciphertext. Applying the same approach to this ciphertext again, the ciphertext is decrypted into plaintext. If the key used for decryption is exactly the same as the key used for encryption, the decryption decrypts only the encrypted plaintext.
[0202]
The integrity of the encrypted data resides in the key capable of decrypting the ciphertext. Therefore, guessing the key must be difficult. To guarantee this, the basic design of the algorithm uses a key of at least 128 bits. The key size of 128 bits is about 3.4.10 38 Generate different keys.
[0203]
The algorithm uses a system that exhibits chaotic behavior, such as a Lorentz system composed of three ordinary differential equations:
[0204]
[Equation 48]
Figure 2004530919
[Equation 49]
Figure 2004530919
[Equation 50]
Figure 2004530919
[0205]
Here, σ, r, and b are parameters, and x, y, and z are state variables.
[0206]
FIG. 5 shows a plot of the numerical solution of the Lorentz system.
[0207]
In order for chaos to occur in the system, the following parameter criterion must be satisfied.
[0208]
(Equation 51)
Figure 2004530919
[0209]
Even if this is satisfied, not all solutions will be chaotic. There may be a so-called periodic window in the parameter space, which indicates a combination of a plurality of parameters that generate a periodic solution. Before implementing the system, an analysis of the parameter space is performed using the calculation of the Lyapunov exponent. In general, a positive Lyapunov exponent indicates that the solution to the mathematical system is chaotic. See Edward Ott, Chaos in Dynamical Systems, Cambridge University Press, 1993.
[0210]
The plurality of parameters are typically determined from a seed value, such as an encryption key or a portion of an encryption key. Preferably, the algorithm embodying the method according to the invention is designed such that only parameter values that are within a predefined interval are allowed, whereby the probability that the system has a positive Lyapunov exponent Is guaranteed to be high. Therefore, mathematical systems have a high probability of exhibiting chaotic behavior. Additionally or alternatively, the Lyapunov exponent may be determined at the beginning of the mathematical calculation or during the mathematical calculation so that non-chaotic behavior of the solution to the mathematical system can be detected.
[0211]
The mathematical system can also be another continuous system (such as a wrestler system) or a discrete map (such as an Enon map).
[0212]
The integration is performed using a numerical integration routine. Given the initial conditions and the integration step length, the numerical integration routine calculates the solution at the discrete mesh points using, for example, Euler's method or Runge-Kutta method. If the Lorentz equation is represented by discrete terms using the Euler method, the solution can be calculated from the following equation.
[0213]
(Equation 52)
Figure 2004530919
(Equation 53)
Figure 2004530919
(Equation 54)
Figure 2004530919
[0214]
The calculations can be performed using fixed point numbers, described below.
[0215]
During numerical integration of a system of differential equations, continuous variables that are not dependent variables (such as time t or space s) are discretized. This process indicates that a continuous section [a; b] is replaced by a set of discrete points. In such a system, ΔT = (Δt x , Δt y , Δt z ) Is commonly referred to as the integration step length, or integration step.
[0216]
FIG. 7 illustrates a possible method of calculating two or more instances of the same system or different systems simultaneously, such as multiple chaotic systems. The method results in faster computation speed and improved security, and larger keys can be used. Preferably, for example, Δt x , Δt y And / or Δt z There should be some communication or coupling, such as an exchange of step lengths, such as an exchange of
[0219]
The internal variables are each 32 bits wide in the basic design, but any variable width can be used. When using the Lorentz system, there are six internal variables (three state variables and three parameters). Therefore, 192 bits are used (in the basic design) to represent the internal state of the generator given by the internal variable set. Padding the 128-bit key to 192 bits avoids illegal values, ie, all variables contain allowed values and prevents bits from the key from being ignored. Need to be performed as follows. Padding can include inserting predetermined 0 and 1 values or repeating bits from the key. FIG. 6 is a diagram illustrating key expansion by padding.
[0218]
The integration can be performed using a variable time step, which can be calculated, for example, from any one state variable. In the basic design, the step length Δt changes at each integration step. This variation is coupled to the state variable X.
[0219]
The key stream is extracted from some of the data associated with the plurality of state variables. This can be done by extracting the least significant 8 bits from the y variable or from one or more multiplications performed in a single step calculation, for example, from some of the data that has been eliminated in the calculation. This can be done by collecting
[0220]
Generally, the computation of a chaotic system is performed on a computer using floating point variables. However, this method raises several problems. One problem is that the use of floating point variables causes different key streams on different computers even when the same key is used, due to slight differences in implementing floating point on different computer systems. It can be done.
[0221]
Therefore, fixed point variables are used. Fixed-point variables are based on integer data types, which are implemented equally on various computer systems. Digits after the decimal point are required to represent numbers such as real numbers, and the decimal point is artificially placed somewhere other than the end of the number (eg, 12.345 instead of 12345).
[0222]
Several tests should preferably be performed to ensure proper operation of the algorithm. Some of these tests are performed at run time, others at design time.
[0223]
As part of the initialization process, an amount of key stream generated using the present algorithm equal to the complete data content of the state variable (eg, 192 bits) or equal to a predetermined amount of the complete key (eg, 128 bits). The key stream is saved if the key needs to be reloaded for periodic solutions or stationary point detection. In this case, the saved sequence is loaded as a new key, and the initialization including extraction of extra keys is performed again.
[0224]
Due to the finite representation of numbers on a computer, any numerical solution is periodic. However, some keys may result in a key stream having a rather short period. This is undesirable because it can compromise the security of the system. Therefore, the present invention includes an algorithm for detecting such a periodic solution. The algorithm monitors the sign of the variable or the slope of the variable. If the Lorentz system is used, a check is performed on x. When the sign changes from minus to plus (or from plus to minus, or just changes), a position check is performed (the position check can be performed after every iteration). The position check compares the complete set of state variables to a previously buffered set. If a perfect match is found, a periodic solution is detected.
[0225]
The stationary point of a dynamical system is a set of state variables that remain unchanged during the iteration. Such a stationary point may be determined by comparing the current set of state variables to the final set, or by checking whether the slope of all variables is zero, or by determining the current state of one variable. Can be detected by checking whether both the slope of the previous and the previous slope are both zero.
[0226]
Chaotic systems go into periodic solutions for some reason. In order not to compromise the security of the system, periodic solutions must be detected and corrected. Preferably, if the solution of the system becomes periodic, the number extracted from the solution of the mathematical system will also be periodic, and thus will not be pseudo-random, so encryption should preferably be stopped. Testing a periodic solution involves comparing the coordinates of the solution with previously calculated coordinates. If a perfect match is found, the system is in a periodic solution.
[0227]
In order to reduce the amount of memory required to store the previously calculated coordinates and to reduce the processing time required for testing the coordinates, only the selected coordinates are stored in the coordinate cache. To reduce the processor time required to test a periodic solution, the test is performed only if the coordinates meet a predetermined criterion. FIG. 8 illustrates the principle of performing the check of the periodic solution.
[0228]
FIG. 9 illustrates a mathematical system having a periodic solution, and in particular, a two-dimensional nonlinear system having a periodic solution. The system is deterministic. This means that the solution is completely specified by its initial conditions. Theoretically, this solution is continuous and thus consists of an infinite number of points. When solving the system numerically, the time interval is discretized and the solution is calculated at these points. A numerical solution to a mathematical system is simply a sequence of coordinate sets. Considering a two-dimensional system, the solution is identified at a number of points (x, y), indicated by points on the curve in FIG. The deterministic nature of the system implies that if a solution hits one point that has come before, the solution is periodic and will continue to be periodic. . This property is used in this test.
[0229]
To test the periodic solution during numerical integration, it is necessary to compare the computed current set of coordinates with previous values. To do this, the coordinate sets are stored when they are calculated. This storage functions like a queue and is called a coordinate cache. The calculated coordinate set is compared to all coordinate sets in the coordinate cache. When a perfect match is found (all values in the two coordinate sets are equal), the system is in a periodic state. If there is no perfect match and the test passes, no periodic behavior is detected and the calculation can continue. The tested coordinates are added to the cache for later calculations before continuing with the calculations.
[0230]
To cache the entire set of computed system coordinates requires too much memory and processor time. Therefore, only the selected coordinates are stored, as shown in FIG.
[0231]
The cache is made up of a number of levels, each of which contains the coordinates of an elapsed time that increases with each level. After each test, or after a number of tests, the tested coordinates are written to level 0. Each time a coordinate is written to level 0 a second time (or any other time), the old value is written to level 1 before it is overwritten. The method of writing coordinates at other levels is similar, each time a value is written a second time to any level, the old value is moved to the next level before it is overwritten with the current level.
[0232]
With this method, the coordinate cache will contain coordinates with exponentially increasing elapsed time. Level 0 stores coordinates having an elapsed time of 1 or 2 (coordinates that were previously checked or coordinates that are one before the previously checked coordinates), and level 1 stores an elapsed time of 3-6. Level 3 stores coordinates having an elapsed time of 7-14, and coordinates 2 are 3 in the test after the coordinates are written, and then sequentially increasing to 6 until the next coordinate is written. And so on.
[0233]
The pseudo program code in Example I illustrates how a cache can be implemented.
[0234]
Since the elapsed time of the level is changing, a periodic solution cannot be found immediately. A periodic solution having a cycle length of 11 tests will be detected at level 2 of the cache since the elapsed time of the data at level 2 is between 7 and 14. However, the test will not find a periodic solution until the coordinates have passed exactly 11 tests. Thus, up to 12 tests may be performed before a periodic behavior is detected. In this case, this means that by the time it is detected, the system may have gone through 12/11 cycles.
[0235]
A potential extension to the above algorithm is the changing TransportAge. See the pseudo-code program in Example I. If some coordinates can be identified as more likely to be part of a periodic solution than others, the InesrtCoordinate procedure referenced in the pseudo-code program of Example I recognizes these and takes It is possible to use a reduced value of TransportAge. This favors the critical coordinates in the cache and makes the data in the cache more up-to-date if many critical coordinates are stored. Shorter elapsed time data in the cache allows for the detection of a periodic solution after fewer iterations included in the periodic solution.
[0236]
The test can be run after each iteration. This means that each time a new set of coordinates for the solution is calculated. However, to conserve processor resources, the tests must instead be performed at periodic intervals. For a test to be valid, it must be performed when the solution is at a recognizable location. One way to ensure that the test is performed at that same location each time is to find a recognizable point on the graphical plot of the solution. To do this, the system needs to be analyzed for its characteristic behavior and criteria need to be selected. In the case of the non-linear system shown above, the example criteria shown in FIGS. 11 to 13 can be used.
[0237]
The first possible criterion is that the sign of x changes from minus to plus, as shown in FIG. That is, a test is performed when the sign of x changes from negative to positive. The second criterion is that the sign of dx changes from plus to minus as shown in FIG. The third criterion is that dy changes from plus to minus as shown in FIG.
[0238]
When choosing a criterion, two things need to be considered. First of all, it requires that all possible periodic solutions can meet the criteria. Second, in order to reduce the load on the processor, it is necessary to select a criterion with the least number of tests.
[0239]
At the time of design, some special tests on the system and the selected parameter space can be performed to confirm the efficiency, stability and accuracy of the system. These tests can include calculating the Lyapunov exponent using the Gram-Schmidt orthogonalization method and can include statistical analysis of the key stream.
[0240]
Example I .
The following pseudo-code program is an example of a program for encrypting and decrypting data according to the present invention, which encrypts one byte at a time. This program operates according to the flowcharts of FIGS. This program operates using a 32-bit register. FIG. 15 shows a method for encrypting a file containing data. 16 to 22 correspond to the functions shown in the following pseudo code relating to the check of the periodic solution and the stream cipher using the Lorentz system.
[0241]
Pseudo code for fixed-point library .
FloatToFixedPoint: Converts a floating point number X to a fixed point number. The result of this function has the format of S (ab) or U (ab).
[0242]
[Pseudo code 1]
Figure 2004530919
[0243]
FixedPointToFloat: Converts a fixed-point number X having the format S (ab) or U (ab) to a floating-point number.
[0244]
[Pseudo code 2]
Figure 2004530919
[0245]
ConvertFixedPoint: Converts a fixed-point number X having an input format S (ab) or U (ab) into the required format S (cd) or U (cd). If the argument X is signed, the result is signed, and vice versa.
[0246]
[Pseudo code 3]
Figure 2004530919
[0247]
Additions and subtractions for multiple fixed-point numbers of the same format are performed using ordinary integer addition and subtraction functions.
[0248]
MulFixedPoint: Multiplies two fixed-point numbers X and Y. X has a format S (ab) or U (ab), and Y has a format S (cd) or U (cd). The resulting fixed-point number has the format S (ef) or U (ef). The result, like X and Y, is always either a signed or unsigned value and is stored in a 32-bit register. ">>" is an arithmetic shift to the right for signed multiplication and a logical shift to the right for unsigned multiplication.
[0249]
[Pseudo code 4]
Figure 2004530919
[0250]
Pseudo code for checking periodic solutions .
Global constants in the subsystem for checking periodic solutions. The number of inflection points is TransportAge CacheDepth-1 When less, the code can detect the period (note that inflection points can be at most one half of the number of repetitions).
[0251]
[Pseudo code 5]
Figure 2004530919
[0252]
The subsystem for checking periodic solutions has a number of global variables, for example, to store a cache of old coordinates and a spare key to be loaded when a periodic solution is found.
[0253]
[Pseudo code 6]
Figure 2004530919
[0254]
SetupCoordinateCheck: Set up a subsystem to check for periodic solutions. Since (0,0,0) is a stationary point of the Lorentz system, and thus is a coordinate value indicating that a key reload is required, all locations in the coordinate cache are (x, y). , Z) = (0, 0, 0).
[0255]
[Pseudo code 7]
Figure 2004530919
[0256]
InsertCoordinate: When the elapsed time of a previous value stored at a predetermined level exceeds a predetermined threshold, the coordinates are written to a predetermined level of the coordinate cache. Old values at that level are written to the next level before being overwritten.
[0257]
[Pseudo code 8]
Figure 2004530919
[0258]
CheckCoordinate: Checks whether the solution curve of variable x has an inflection point where the sign of the slope of the curve changes from positive to negative. If there is no change, the function ends. Otherwise, the function checks if the coordinates stored in the coordinate cache are equal. If a match is found, the function loads the spare key into the algorithm. Finally, the coordinates are written to the coordinate cache.
[0259]
[Pseudo code 9]
Figure 2004530919
[0260]
Pseudo code for stream cipher using Lorentz system .
In this context, the modulus function MOD taking an argument q returns a positive value in the range [0;
[0261]
The σ variable in the Lorentz equation has been renamed “s”.
[0262]
The format of the fixed-point variable is defined according to Table 1.
[0263]
[Table 1]
Figure 2004530919
[0264]
The format of the temporary fixed-point variable used for the Crypt function is defined according to Table 2.
[0265]
[Table 2]
Figure 2004530919
[0266]
The allowed values of the parameters r, b and s and the allowed starting conditions of the coordinates x, y and z are shown in Table 3.
[0267]
[Table 3]
Figure 2004530919
[0268]
Crypt: encryption, decryption and PRNG functions. The arguments are PData (pointer to the first byte to encrypt / decrypt) and PEnd (pointer to the last byte to encrypt / decrypt). If the function is to generate a pseudo-random number, the function needs to be given a predetermined amount of data to be encrypted (eg, a plurality of zeros) of the same size as the requested pseudo-random data. is there.
[0269]
[Pseudo code 10]
Figure 2004530919
[0270]
MaskParameters: The conditions and parameters need to be changed using this function to ensure that the initial conditions and parameters are valid after loading the extended key or pseudo-random sequence. The correction is performed according to the constraints defined in Table 3.
[0271]
[Pseudo code 11]
Figure 2004530919
[0272]
Init 192: Loads a 192-bit seed (specified by the PSeed pointer) into the state of the system.
[0273]
[Pseudo code 12]
Figure 2004530919
[0274]
Init 128: Loads a 128-bit seed (or key) (specified by the PSeed pointer) into the state of the system that performs the key setup procedure.
[0275]
[Pseudo code 13]
Figure 2004530919
[0276]
The output of the system, ie, the statistical characteristics of the key stream, can be tested according to the NIST (National Institute of Standards and Technology) test suite. 'A statistical test suite for random and pseudo-random number generators for cryptographic applications', NIST Special Publication, 800-22. Is referred to. Also, refer to http://csrc.nist.gov/rng/rng2.html. NIST's test suite includes 16 different tests, briefly summarized below. These tests can be performed, for example, on a program similar to the above pseudo code for stream ciphers using the Lorentz system.
[0277]
These tests give a number of definitions with little overlap for randomness. In the following, a simpler definition is described, whereas a definition that requires a more complex concept from probability is "what can be computed / expected for a true random sequence" Is indicated by the phrase The NIST publications mentioned above contain the proper definitions and references to research in probability theory.
[0278]
Frequency monobit test: This test determines the ratio of 0 and 1 to the entire key stream sequence. For a truly random key stream sequence, the number of ones is expected to be approximately the same as the number of zeros. During the test, it is investigated whether this property holds for the key stream sequence in question.
[0279]
Frequency block test: In this test, the key stream sequence is divided into M-bit blocks. For a truly random key stream sequence, the number of 1s in each block is about M / 2. The test is successful if this also characterizes the key stream sequence tested.
[0280]
Runs test: A run in a key stream sequence is defined as a sub-sequence of identical bits. This test checks for runs of different lengths. At this time, the run of length k is constituted by the same k bits bounded by a bit having a value opposite to the bit in the run. The occurrence of runs of different lengths is compared to what would be expected for a true random sequence.
[0281]
Longest run of 0: In this test, the sequence is divided into blocks, each M bits, and the longest run of 1 is found in each block. The run length distribution for the block is compared to the distribution for the block in the random sequence. The expected longest run length irregularity of one indicates that there is also an irregularity in the expected zero longest run length.
[0282]
Binary matrix rank test: In this test, a fixed length subsequence of the key stream sequence is used, and a large number of matrices are obtained by collecting the M and Q bit segments into an M × Q matrix. It is formed. By calculating the rank of these matrices, the test checks for linear dependence between subsequences.
[0283]
Discrete Fourier Transform Test: By applying a discrete Fourier transform, this test checks the periodic characteristics of a key stream sequence. The height of the resulting frequency component is compared to a threshold defined from a true random sequence.
[0284]
Non-overlapping template match test: In performing this test, a non-periodic m-bit pattern is defined and the occurrence of a particular pattern is counted.
[0285]
Overlapping template match test: This test is very similar to the non-overlapping template match test, only the structure of the m-bit pattern and the way the pattern search is performed. In this case, the m-bit pattern is a sequence of m 1s.
[0286]
Maurer's Universal Statistical Test: This test calculates the distance between matching patterns in a key stream sequence. By doing this, a measure of the compressibility of the key stream sequence is obtained. Key stream sequences that are highly compressible are considered non-random.
[0287]
Lempel-Jib compression test: This test calculates the number of patterns that are cumulative and distinct, thus providing a measure of the compressibility of the key stream sequence. The result is compared to a random sequence having a number of distinctive characteristic patterns.
[0288]
Linear complexity test: This test calculates the length of the linear feedback shift register and determines whether the sequence is complex enough to be considered random.
[0289]
Serial test: This test calculates the frequency of all possible overlapping m-bit patterns over the entire sequence. 2 for a truly random key stream sequence m All of the possible m-bit patterns occur with the same probability. The deviation from this probability is calculated for the key stream sequence in question.
[0290]
Approximate entropy test: The focus of this test is the same as the sequence test, with the added feature of calculating the frequency of m-bit and (m + 1) -bit patterns. The results obtained for different length patterns are compared and used to characterize the sequence as either random or non-random.
[0291]
Cumulative sum test: In this test, a sequence is used to define a random walk with 1 and 0 corresponding to +1 and -1, respectively. It is determined whether the amplitude of the cumulative sum of the partial key stream sequence is too large or too small as expected for a truly random key stream sequence.
[0292]
Random excursion test: In this test, the sequence is converted to a random walk as in the cumulative sum test. The number of times a random walk visits a given state (a value that a cumulative sum can hold) that can potentially pass through is used to characterize the sequence as either random or non-random. The states considered are -4, -3, -2, -1, 1, 2, 3, 4.
[0293]
Modified random deviation test: almost the same as the random deviation test. In this test, 18 states are used.
[0294]
For each test, a P value that provides a quantitative comparison of the actual sequence to the hypothesized truly random sequence, ie, P val Is calculated. The definition of the P value depends on the actual test (see NIST documentation). P val A value> α indicates randomness. Here, α is a value in the section 0.001 ≦ α ≦ 0.01, and an accurate value of α is defined for each test. Any other value declares non-randomness.
[0295]
The NIST test suite has a P value for each test val > Α is defined as the proportion of samples that must pass. In all of the above tests except the random deviation test, the respective P value, P val Must pass at least 0.972766 for samples to pass the appropriate criteria. For the random deviation test, the ratio given by NIST is at least 0.967813.
[0296]
In a preferred embodiment of the present invention, at least 10 obtained using a randomly selected key 4 As an average of the samples, the ratio is preferably at least 0.975, for example at least 0.98, for example at least 0.985 or more, for example at least 0.99, for example at least 0.995, for example at least 0.998 is achieved.
[0297]
In Table 4 below, possible input parameters for the NIST test suite are shown in the notation used in the documentation attached to the NIST test suite.
[0298]
[Table 4]
Figure 2004530919
[0299]
Example II .
Table 5 shows the speed of encryption according to the method of the present invention and the speed of encryption according to various known encryption methods. The speed of the encryption method according to the invention has been achieved in a prototype incorporating the features of the encryption / decryption program according to the invention. The key size was a 256 bit key, and the encryption / decryption speed was measured by counting the number of clock cycles spent executing the encryption / decryption algorithm on a 400 MHz Pentium II processor. A prototype of the algorithm was implemented in an assembly language using MMX ™ instructions on a system containing two instances, as illustrated in FIG. This prototype solved two Lorentzian systems exhibiting chaotic behavior and extracted a total of 64 bits at each integration step, ie, at each of the combined instances of the two instances. The differences between this prototype and the algorithm of the pseudo code program described in Example I with reference to FIGS. 15 to 22 were mainly as follows.
-This prototype utilized MMX ™ technology by solving the two systems in parallel.
-This prototype extracted a total of 64 bits in each integration step.
-This prototype did not test for a periodic solution.
[0300]
The speed is calculated from the measurements,
It was calculated to be equivalent to an encryption / decryption rate of 1010 Mbit / s on a 450 MHz Pentium II processor.
[0301]
[Table 5]
Figure 2004530919
[0302]
Speed is evaluated based on different sources. The superscripts in the “speed [clock / byte]” column of Table 5 indicate the following references that are sources.
1. Cryptto ++ 4.0 Benchmarks, www.eskimo.com/~weidai/benchmarks.html, MS C ++ (Intel, Celeron 850 MHz), available December 7, 2001.
2. Bruce Schneier et al., Fast Software Encryption: Designing Encryption Algorithms for Optimal Software Speed on the Intel Pentium Processor.
3. Kazumaro Aoki, et al., Fast Implementation of AES Candidates (128 bit keys, 128 bit blocks, Pentium II).
4. Performance Evaluation of NESSIE First Phase (draft version 3.0). Http://www.cosic.esat.kuleuven.ac.be/nessie/, available December 7, 2001.
[0303]
In general, in many implementations, speed and memory requirements can be neglected from each other, for example, by using a look-up table that requires more memory but can save processing time.
End of Example II.
[0304]
When performing calculations on numbers expressed in binary, for example, when adding or multiplying two numbers, the bits of the number resulting from the addition or multiplication may be omitted or ignored. If so, some of the calculations included in the addition or multiplication can be omitted. Thus, if the least significant bits of the resulting number are unnecessary or if the most significant bits of the resulting number are negligible (for a pseudo-random number generator, what is needed is the true This is true because it is simply a pseudo-random number, not the result of), so the least significant and / or most significant bits of the resulting number need not be calculated.
[0305]
Accordingly, in another aspect, the invention relates to a method for performing a mathematical operation on an integer having a predetermined bit width that is greater than a register width of a processing device on which the computation is performed. Mathematical operations or calculations on fixed-point numbers are performed as integer operations, whereby the integer is represented as a binary number. The binary representation of an integer requires a predetermined register width, for example, 32 bits. When a mathematical operation such as addition or multiplication is performed by a processing device having a register width smaller than the width required for expressing the binary number, for example, 8 bits, the binary number is equal to or smaller than the register width of the processing device. It can be divided into a plurality of binary sub-numbers, each represented by a smaller width. Thus, two 32-bit numbers can be divided into two sets of four 8-bit sub-numbers, and the multiplication or addition is performed on the 8-bit sub-numbers by an 8-bit processor. It is possible. For example,
The number A = 110100110110101010110101010110111;
The number B = 100001110111110111111010101001001 and
Arriving at the result R = A + B by the addition of is possible by performing the following steps.
[0306]
1. Each of the numbers A and B is divided into four subnumbers A1, A2, A3 and A4 and B1, B2, B3 and B4. A1 represents the most significant 8 bits of the number A, A4 represents the least significant 8 bits of the number A, and so on. Therefore, in the above example, the sub numbers are as follows.
A1 = 1101001,
A2 = 10110101,
A3 = 01101010,
A4 = 10110111,
B1 = 100000111,
B2 = 01111011
B3 = 11110101,
B4 = 01001001.
[0307]
2. Next, the lowest sub-numbers A4 and B4 are added: R4 = A4 + B4. Store any carry C4 resulting from the addition of A4 and B4.
[0308]
3. Next, add the second least significant sub-numbers A3 and B3 and the carry C4 from step 2 above: R3 = A3 + B3 + C4. Any carry C3 resulting from this addition is stored.
[0309]
4. As in step 3, A2 and B2 are added to obtain R2 and C2.
[0310]
5. As in steps 3 and 4, A1 and B1 are added to obtain R1. Any carry C1 resulting from this addition is considered an overflow and is not considered.
[0311]
6. The number resulting from the addition of A and B is stored as four subnumbers R1, R2, R3 and R4 and / or represented as a 32-bit wide column composed of subnumbers R1, R2, R3 and R4.
[0312]
The number to be multiplied if not all bits in the number resulting from the multiplication operation are used for another calculation and / or if all bits are not significant and can be ignored for another calculation The processing time involved in a multiplication operation on a processing device having a register width smaller than the bit width of .gamma. Can be reduced by performing only partial multiplication, as described below. For example, two 16-bit numbers D and E on an 8-bit processor, ie,
D = 1101100110110101;
E = 0110101010110111 and
Reaching the 32-bit number F by multiplication can be performed by the following steps.
[0313]
1. Divide the numbers D and E into two subnumbers D1, D2 and E1, E2, respectively. D1 represents the most significant 8 bits of D, D2 represents the least significant 8 bits of D, and so on. Therefore, in the above example, the sub numbers are as follows.
D1 = 1101001,
D2 = 10110101,
E1 = 01101010,
E2 = 10110111.
[0314]
2. Multiply D1 by E1 to obtain a 16-bit number represented by two 8-bit numbers G1 and G2.
[0315]
3. Multiply D1 by E2 to obtain a 16-bit number represented by two 8-bit numbers H1 and H2.
[0316]
4. Multiply D2 by E1 to obtain a 16-bit number represented by two 8-bit numbers I1 and I2.
[0317]
5. Multiply D2 by E2 to obtain a 16-bit number represented by two 8-bit numbers J1 and J2.
[0318]
6. The resulting 32-bit number F is represented by four 8-bit numbers F1, F2, F3 and F4. Here, as shown in FIG.
F4 = J2
F3 = H2 + I2 + J1,
F2 = G2 + H1 + I1 + [arbitrary carry resulting from calculation of F3],
F1 = G1 + [Any carry resulting from the calculation of F2]
It is. Here, MS indicates “most significant 8 bits”, and LS indicates “least significant 8 bits”.
[0319]
Processing time can be saved by ignoring F4, the least significant bit of the number resulting from the multiplication, and by ignoring J1 in the addition resulting in F3. Thus, the multiplication of D2 and E2 in step 5 can be omitted, thus performing less mathematical operations and saving processing time. This omission affects the result of the calculation, but if the omission is performed consistently, for example in a pseudo-random number generator, for example through calculation in an encryption / decryption algorithm, and this is performed in both encryption and decryption If omitted, this omission is acceptable. In general, properties of a mathematical system, such as chaotic behavior, that are important in problematic contexts such as encryption / decryption, are preserved regardless of the effect on the computation of omitting one or more computation steps. Must be guaranteed.
[0320]
In another aspect, the invention relates to a method for performing a multiplication operation on a first binary number and a second binary number. The method includes summing a number of intermediate results so that the sum of the intermediate results is equal to the product of the two numbers. Each intermediate result is obtained as the product of a single bit (1 or 0) of the first number and the whole of the second number α, so that this product and thus the intermediate result is With a simple “if ... then” algorithm and / or AND operation, it is possible to determine the product 1 · α = α and the product 0 · α = 0.
[0321]
Following the calculation of the intermediate number, the intermediate number is shifted left by a predetermined number of positions. The number of positions moved corresponds to the position of the first number of bits on which the particular intermediate number is calculated. Alternatively, either the second number or the first number of specific bits is switched to the left. Thus, the step of multiplying one bit of the first of the two numbers is repeated for each bit of the first number. For example, the product of the first number 0110 and the second number 1010 is calculated as follows. That is, the least significant bit 0 of the first number is multiplied by the second number 1010 to obtain the first intermediate number 0000. Next, the second bit 1 from the least significant bit of the first number is multiplied by the second number and shifted one position to the left to obtain the second intermediate number 10100. Next, the third bit 1 from the least significant bit of the first number is multiplied by the second number and shifted two positions to the left to obtain the third intermediate number 101000. Finally, the most significant bit 0 of the first number is multiplied by the second number and shifted left three positions to obtain the fourth intermediate number 00000000. The resulting number is taken as the sum of the four intermediate numbers, as shown below. Underlines indicate which bits have been multiplied in each step.
[0322]
[Equation 1]
Figure 2004530919

[Brief description of the drawings]
[0323]
FIG. 1 is a diagram showing a sequence for encrypting, transmitting, and decrypting electronic data.
FIG. 2 is a diagram showing an encryption sequence in a block encryption system.
FIG. 3 is a diagram showing an encryption sequence in the stream encryption system.
FIG. 4 illustrates key elements in an encryption / decryption algorithm according to various aspects of the invention.
FIG. 5 is a plot of a numerical solution of the Lorentz system.
FIG. 6 is a diagram illustrating key expansion by padding.
FIG. 7 illustrates a possible way of calculating instances of two or more identical or different chaotic systems simultaneously.
FIG. 8 is a diagram showing a principle of executing a check of a periodic solution.
FIG. 9 illustrates a mathematical system having a periodic solution.
FIG. 10 illustrates movement between levels in a coordinate cache storing previously calculated coordinates.
FIG. 11 is a diagram showing various criteria for detecting a periodic solution.
FIG. 12 is a diagram showing various criteria for detecting a periodic solution.
FIG. 13 is a diagram showing various criteria for detecting a periodic solution.
FIG. 14 is a diagram illustrating a method of multiplying a 16-bit number on an 8-bit processor.
FIG. 15 is a flowchart showing the operation of an embodiment of the encryption method according to the present invention.
FIG. 16 is a flowchart showing the operation of an embodiment of the encryption method according to the present invention.
FIG. 17 is a flowchart showing the operation of an embodiment of the encryption method according to the present invention.
FIG. 18 is a flowchart showing the operation of an embodiment of the encryption method according to the present invention.
FIG. 19 is a flowchart showing the operation of an embodiment of the encryption method according to the present invention.
FIG. 20 is a flowchart showing the operation of an embodiment of the encryption method according to the present invention.
FIG. 21 is a flowchart showing the operation of an embodiment of the encryption method according to the present invention.
FIG. 22 is a flowchart showing the operation of an embodiment of the encryption method according to the present invention.
[Explanation of symbols]
[0324]
D1, D2, E1, E2 ... sub number,
F ... 32 bit number,
F1 to F4, G1, G2, H1, H2, I1, I2, J1, J2... 8 bit numbers.

Claims (126)

少なくとも1つの関数を含む数学的システムにおいて数値計算を実行する方法であって、当該方法は、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
− 固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように、上記計算を実行するステップと、
− 上記計算から、結果として得られる数を取得するステップとを含み、上記結果として得られる数は、
− a.上記数学的システムに対する解の少なくとも一部と、
− b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
当該方法はさらに、
− i.上記結果として得られる数のディジットのうちのサブセットと、
− ii.上記結果として得られる数から導出された数のディジットのうちのサブセットと
の少なくとも一方を表現するデータのセットを抽出するステップを含む方法。
A method of performing a numerical calculation in a mathematical system including at least one function, the method comprising:
-Representing said mathematical system in a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing the calculation such that the calculation includes the at least one variable expressed as a fixed-point number;
Obtaining the resulting number from the calculation, wherein the resulting number comprises:
-A. At least part of the solution to the mathematical system;
-B. Representing at least one of the numbers available for another calculation related to the numerical solution of the mathematical system,
The method further comprises:
-I. A subset of the resulting number of digits;
-Ii. Extracting a set of data representing at least one of a subset of the digits of the number derived from the resulting number.
上記データのセットは擬似乱数を表現する請求項1記載の方法。The method of claim 1, wherein the set of data represents a pseudo-random number. 上記計算は少なくとも第1及び第2の固定小数点の数を含み、各固定小数点の数は小数点分離記号を有し、上記第1の固定小数点の数の小数点分離記号は上記第2の固定小数点の数の小数点分離記号の位置とは異なる位置に位置決めされる請求項1又は2記載の方法。The calculation includes at least first and second fixed-point numbers, each fixed-point number having a decimal separator, and the first fixed-point number having a decimal separator of the second fixed-point number. 3. A method as claimed in claim 1 or claim 2, wherein the position is different from the position of the decimal separator of the number. 上記計算を実行するステップは、上記第1及び第2の固定小数点の数の小数点分離記号を、選択された位置に位置決めすることを含む請求項3記載の方法。4. The method of claim 3, wherein performing the calculation comprises positioning the first and second fixed-point number decimal separators at selected locations. 上記少なくとも1つの関数は非線形である請求項1乃至4のうちの任意の請求項に記載の方法。A method according to any one of claims 1 to 4, wherein said at least one function is non-linear. 上記結果として得られる数は、
− 整数と、
− 浮動小数点の数と、
− 固定小数点の数と
で構成されるグループから選択された変数として表現される先行する請求項のうちの任意の請求項に記載の方法。
The resulting number is
An integer;
A floating point number;
A method according to any of the preceding claims, expressed as a variable selected from the group consisting of: a fixed-point number;
上記数学的システムは、
− 微分方程式と、
− 離散的マッピングと
の少なくとも一方を含む先行する請求項のうちの任意の請求項に記載の方法。
The mathematical system is
− Differential equations,
-The method according to any of the preceding claims, including at least one of a discrete mapping.
上記微分方程式は、
− 偏微分方程式と、
− 常微分方程式と
の少なくとも一方を含む請求項7記載の方法。
The above differential equation is
− Partial differential equations,
8. The method of claim 7, comprising at least one of an ordinary differential equation.
上記離散的マッピングは、
− 領域を保存するマップと、
− 領域を保存しないマップと
の少なくとも一方を含む請求項7記載の方法。
The discrete mapping above
A map to save the area;
8. The method of claim 7 including at least one of: a map that does not preserve regions.
上記数学的システムは、少なくとも1つの状態変数Xを決定する少なくとも1つの非線形関数を含む請求項7又は9記載の方法。The method according to claim 7 or 9, wherein the mathematical system includes at least one non-linear function for determining at least one state variable X. 上記数学的システムは、複数の非線形マッピング関数にてなるセットを含む請求項10記載の方法。The method of claim 10, wherein the mathematical system includes a set of a plurality of non-linear mapping functions. 上記マップは、
− 次式の形式を有するロジスティックマップと、
Figure 2004530919
− 次式の形式を有するアノーソフマップと、
Figure 2004530919
− 次式の形式を有するエノンマップと
Figure 2004530919
のうちの少なくとも1つを含む請求項9乃至11のうちの任意の請求項に記載の方法。
The above map is
A logistic map having the form:
Figure 2004530919
An Anosov map having the form:
Figure 2004530919
-An enon map having the form:
Figure 2004530919
12. A method according to any one of claims 9 to 11, comprising at least one of the following.
上記数学的システムは少なくとも1つの非線形微分方程式を含む請求項1乃至8のうちの任意の請求項に記載の方法。9. A method according to any one of the preceding claims, wherein the mathematical system includes at least one nonlinear differential equation. 上記数学的システムは、複数の非線形微分方程式にてなるセットを含む請求項13記載の方法。14. The method of claim 13, wherein the mathematical system includes a set of a plurality of nonlinear differential equations. 上記数学的システムは少なくとも1つの正のリヤプノフ指数を有する請求項7乃至14のうちの任意の請求項に記載の方法。15. A method according to any one of claims 7 to 14, wherein the mathematical system has at least one positive Lyapunov exponent. 数学的計算の間に少なくとも1回だけ少なくとも1つのリヤプノフ指数を計算することを含む請求項7乃至14のうちの任意の請求項に記載の方法。15. A method according to any one of claims 7-14, comprising calculating at least one Lyapunov exponent at least once during a mathematical calculation. 上記少なくとも1つの非線形微分方程式は、少なくとも1つの独立変数tの関数である少なくとも1つの状態変数Xを決定する請求項13乃至16のうちの任意の請求項に記載の方法。17. A method according to any one of claims 13 to 16, wherein said at least one nonlinear differential equation determines at least one state variable X that is a function of at least one independent variable t. 上記複数の非線形微分方程式にてなるセットはローレンツシステムである請求項14乃至17のうちの任意の請求項に記載の方法。18. A method according to any one of claims 14 to 17, wherein the set of nonlinear differential equations is a Lorentz system. 上記ローレンツシステムは、次式の微分方程式、
Figure 2004530919
Figure 2004530919
Figure 2004530919
から構成され、X=(x,y,z)は状態変数であり、tは独立変数であり、σ、r及びbはパラメータである請求項18記載の方法。
The above Lorentz system uses the following differential equation:
Figure 2004530919
Figure 2004530919
Figure 2004530919
19. The method of claim 18, wherein X = (x, y, z) is a state variable, t is an independent variable, and σ, r, and b are parameters.
上記計算を実行するステップは、少なくとも1つの以前の解X,m≦n+1と、独立変数tのステップ長ΔTとに基づいて解Xn+1を反復して計算することにより、
− 上記非線形微分方程式と、
− 上記複数の非線形微分方程式にてなるセットのうちの上記複数の非線形微分方程式との少なくとも一方を数値積分することを含む請求項13乃至19のうちの任意の請求項に記載の方法。
The step of performing the above calculation comprises repeatedly calculating the solution X n + 1 based on at least one previous solution X m , m ≦ n + 1 and the step length ΔT n of the independent variable t,
-The above nonlinear differential equation,
20. The method according to any of claims 13 to 19, comprising numerically integrating at least one of said plurality of nonlinear differential equations with said set of nonlinear differential equations.
上記積分するステップは、上記状態変数Xの少なくとも1つの初期条件Xとステップ長の初期値ΔTとを提供することを含む請求項20記載の方法。The method of claim 20 including providing an initial value [Delta] T 0 of the at least one initial condition X 0 and step length of the state variable X for the integration. 上記計算を実行するステップは、上記非線形マッピング関数を数値的に反復することを含む請求項10乃至12のうちの任意の請求項に記載の方法。The method according to any of claims 10 to 12, wherein performing the calculation comprises numerically iterating the non-linear mapping function. 上記反復するステップは上記状態変数Xの少なくとも1つの初期条件Xを提供することを含む請求項22記載の方法。The method of claim 22 further comprising the step of the iteration to provide at least one initial condition X 0 of the state variable X. 上記ローレンツシステムの離散化された定式化において、解Xn+1は、ステップ長ΔT=(Δtx,n,Δty,n,Δtz,n)を使用して、
Figure 2004530919
Figure 2004530919
Figure 2004530919
のように計算され、
Δtx,nはxn+1の計算に使用されるステップ長であり、
Δty,nはyn+1の計算に使用されるステップ長であり、
Δtz,nはzn+1の計算に使用されるステップ長である請求項20又は21記載の方法。
In the above discretized formulation of the Lorentz system, the solution X n + 1 is calculated using the step length ΔT = (Δt x, n , Δty , n , Δtz , n )
Figure 2004530919
Figure 2004530919
Figure 2004530919
Is calculated as
Δt x, n is the step length used in calculating x n + 1 ,
Δty , n is the step length used in the calculation of y n + 1 ,
22. A method as claimed in claim 20 or claim 21 wherein [Delta] tz, n is the step length used in the calculation of zn + 1 .
上記ステップ長ΔTは上記計算を通じて一定である請求項20乃至24のうちの任意の請求項に記載の方法。The method according to any one of claims 20 to 24, wherein the step length ΔT is constant throughout the calculation. 各積分ステップにおいて、上記ステップ長ΔTの要素(Δtx,n,Δty,n,Δtz,n)のうちの少なくとも1つは、上記計算に関連する少なくとも1つの数の関数である請求項20乃至25のうちの任意の請求項に記載の方法。In each integration step, claim the step length ΔT elements at least one of (Δt x, n, Δt y , n, Δt z, n) is at least one function of the number associated with the calculation The method according to any of claims 20 to 25. 各積分ステップにおいて、上記ステップ長ΔTの要素(Δtx,n,Δty,n,Δtz,n)のうちの少なくとも1つは、上記数学的システムに対する解である少なくとも1つの解Xの関数である請求項26記載の方法。In each integration step, the step length ΔT elements at least one of (Δt x, n, Δt y , n, Δt z, n) is at least one solution X m is a solution to the mathematical system 27. The method of claim 26, which is a function. 各積分ステップにおいて、上記ステップ長ΔTの要素(Δtx,n,Δty,n,Δtz,n)のうちの少なくとも1つは、少なくとも1つの与えられたステップ長ΔTの関数である請求項26又は27記載の方法。In each integration step, the elements of the step length ΔT (Δt x, n, Δt y, n, Δt z, n) at least one of is a function of at least one given step length [Delta] T m according Item 29. The method according to Item 26 or 27. 暗号化鍵及び復号化鍵から選択される鍵は、上記数学的システムにおける少なくとも1つの変数の少なくとも1つの値を決定するために使用される先行する請求項のうちの任意の請求項に記載の方法。A key selected from an encryption key and a decryption key, wherein the key selected from the preceding claims is used to determine at least one value of at least one variable in the mathematical system. Method. 上記鍵は上記初期条件Xの少なくとも一部を決定するために使用される請求項29記載の方法。The key The method of claim 29 used to determine at least a portion of the initial condition X 0. 上記鍵は上記ステップ長の初期値ΔTの少なくとも一部を決定するために使用される請求項29又は30記載の方法。Claim 29 or 30 method described is used for the key for determining at least part of the initial value [Delta] T 0 of the step length. 上記鍵は少なくとも1つのパラメータの少なくとも一部を決定するために使用される請求項29乃至31のうちの任意の請求項に記載の方法。32. A method as claimed in any one of claims 29 to 31, wherein the key is used to determine at least a part of at least one parameter. 上記鍵は公開鍵である請求項29乃至32のうちの任意の請求項に記載の方法。33. A method according to any one of claims 29 to 32, wherein the key is a public key. 上記鍵は秘密鍵である請求項29乃至32のうちの任意の請求項に記載の方法。33. A method according to any one of claims 29 to 32, wherein the key is a secret key. 上記計算から結果として得られる複数の数を抽出することを含む先行する請求項のうちの任意の請求項に記載の方法。A method according to any of the preceding claims, comprising extracting a plurality of numbers resulting from said calculation. 上記抽出するステップは、上記結果として得られる数のkビットから導出された少なくとも1つの数を抽出することを含む先行する請求項のうちの任意の請求項に記載の方法。A method according to any of the preceding claims, wherein the extracting step comprises extracting at least one number derived from the resulting number of k bits. 上記抽出するステップは、上記結果として得られる数の最下位のkビットを抽出することを含む先行する請求項のうちの任意の請求項に記載の方法。The method of any of the preceding claims, wherein the extracting step comprises extracting the least significant k bits of the resulting number. kは8、16、32、64及び128よりなるグループから選択された値である請求項36又は37記載の方法。The method according to claim 36 or 37, wherein k is a value selected from the group consisting of 8, 16, 32, 64 and 128. 複数の数が抽出される請求項36乃至38のうちの任意の請求項に記載の方法。A method according to any one of claims 36 to 38, wherein a plurality of numbers are extracted. 上記抽出されたデータのセットは、
− 算術演算と、
− 論理演算と
の少なくとも一方によって操作され、結合されたデータのセットを取得する、先行する請求項のうちの任意の請求項に記載の方法。
The set of data extracted above is
Arithmetic operations;
-A method according to any of the preceding claims, wherein the method is operated by at least one of logical operations to obtain a combined set of data.
− 上記抽出されたデータのセットと、
− 上記結合されたデータのセットと
の少なくとも一方は元のデータと結合され、上記元のデータが暗号化される請求項40記載の方法。
-The set of data extracted above;
41. The method of claim 40, wherein at least one of the combined set of data is combined with original data and the original data is encrypted.
− 抽出されたデータのセットと、
− 上記結合されたデータのセットと
の少なくとも一方は暗号化されたデータと結合され、上記暗号化されたデータが復号化されて元のデータが取得される請求項40記載の方法。
A set of extracted data;
41. The method of claim 40, wherein at least one of the combined set of data is combined with encrypted data, and the encrypted data is decrypted to obtain the original data.
上記データを結合することはXOR演算を含む請求項40乃至42のうちの任意の請求項に記載の方法。43. The method of any of claims 40-42, wherein combining the data comprises an XOR operation. 上記計算は、ブロック暗号の暗号化及び復号化システムにおいて平文のブロックを表現するデータに対して作用する、先行する請求項のうちの任意の請求項に記載の方法。A method according to any of the preceding claims, wherein said computation operates on data representing plaintext blocks in a block cipher encryption and decryption system. 上記抽出されたデータのセットは、ブロック暗号の暗号化及び復号化システムにおいて、平文のブロックに対する少なくとも1つの演算を定義するために使用される先行する請求項のうちの任意の請求項に記載の方法。The method according to any of the preceding claims, wherein the extracted set of data is used in a block cipher encryption and decryption system to define at least one operation on a block of plaintext. Method. 上記データを結合することは、暗号化のための上記元のデータと上記結合されたデータのセットとの加算を含み、かつ復号化のための上記暗号化されたデータからの上記結合されたデータのセットの減算を含む請求項41乃至45のうちの任意の請求項に記載の方法。Combining the data includes adding the original data for encryption and the set of combined data, and combining the combined data from the encrypted data for decryption. 46. A method according to any one of claims 41 to 45, comprising subtracting a set of 上記データを結合することは、暗号化のための上記元のデータからの上記結合されたデータのセットの減算を含み、かつ復号化のための上記結合されたデータのセットと上記暗号化されたデータとの加算を含む請求項41乃至45のうちの任意の請求項に記載の方法。Combining the data includes subtracting the combined set of data from the original data for encryption, and combining the combined set of data with the encrypted set for decryption. 46. A method according to any one of claims 41 to 45, comprising adding with data. 上記抽出されたデータのセットは、暗号化鍵及び復号化鍵の少なくとも一方として使用される請求項1乃至47のうちの任意の請求項に記載の方法。48. The method according to any of the preceding claims, wherein the extracted set of data is used as at least one of an encryption key and a decryption key. 上記抽出されたデータのセットは、暗号化鍵及び復号化鍵の少なくとも一方を発生するために使用される請求項1乃至47のうちの任意の請求項に記載の方法。48. The method according to any of the preceding claims, wherein the extracted set of data is used to generate at least one of an encryption key and a decryption key. 上記抽出されたデータのセットは、ディジタル署名を表現するデータの発生に使用される先行する請求項のうちの任意の請求項に記載の方法。A method as claimed in any of the preceding claims, wherein the extracted set of data is used to generate data representing a digital signature. 上記抽出されたデータのセットは、ディジタルデータへの電子透かしの埋め込みに使用される先行する請求項のうちの任意の請求項に記載の方法。A method according to any of the preceding claims, wherein the extracted set of data is used for embedding a watermark in digital data. 上記計算は、所定のレジスタ幅を有する電子処理装置を備えた電子装置上で実行される先行する請求項のうちの任意の請求項に記載の方法であって、
− 上記レジスタ幅より大きいビット幅の少なくとも1つの整数を、高々上記レジスタ幅に等しいビット幅をそれぞれ有する少なくとも2つのサブナンバーとして表現するステップと、
− 上記計算の少なくとも1つを上記サブナンバーの各々に対するサブ計算として実行し、高々上記処理装置のレジスタ幅に等しい、より小さなビット幅の整数として表された少なくとも2つの部分的結果に到達するステップと、
− 上記部分的結果を連結して、上記少なくとも1つの計算の結果の表現を発生させるステップとを含む方法。
The method according to any of the preceding claims, wherein the calculation is performed on an electronic device with an electronic processing device having a predetermined register width,
Representing at least one integer with a bit width greater than the register width as at least two sub-numbers each having a bit width at most equal to the register width;
Performing at least one of said calculations as a sub-calculation for each of said sub-numbers to arrive at at least two partial results expressed as smaller bit-width integers at most equal to the register width of said processing unit. When,
Concatenating the partial results to generate a representation of the result of the at least one calculation.
少なくとも1つの関数を含む数学的システムにおいて数値計算を実行するコンピュータプログラムであって、当該コンピュータプログラムは、
− 数学的システムの少なくとも1つの変数を固定小数点の数として表現することと、
− 固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように、上記計算を実行することと、
− 上記計算から、結果として得られる数を取得することとに適応化され、上記結果として得られる数は、
− a.上記数学的システムに対する解の少なくとも一部と、
− b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
当該コンピュータプログラムはさらに、
− i.上記結果として得られる数のディジットのうちのサブセットと、
− ii.上記結果として得られる数から導出された数のディジットのうちのサブセットと
の少なくとも一方を表現するデータのセットを抽出することに適応化されたコンピュータプログラム。
A computer program for performing a numerical calculation in a mathematical system including at least one function, the computer program comprising:
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing said calculation such that said calculation includes said at least one variable expressed as a fixed-point number;
-Adapted from the above calculation to obtain the resulting number, wherein the resulting number is
-A. At least part of the solution to the mathematical system;
-B. Representing at least one of the numbers available for another calculation related to the numerical solution of the mathematical system,
The computer program further comprises:
-I. A subset of the resulting number of digits;
-Ii. A computer program adapted to extract a set of data representing at least one of a subset of a number of digits derived from the resulting number.
請求項53記載のコンピュータプログラムがロードされた、コンピュータが読み取り可能なデータキャリア。54. A computer readable data carrier loaded with the computer program of claim 53. 請求項54記載のコンピュータが読み取り可能なデータキャリアに動作可能に接続されたコンピュータであって、上記プログラムを実行するプロセッサ手段を備えたコンピュータ。55. A computer operably connected to a computer readable data carrier according to claim 54, comprising computer means for executing the program. 数学的システムにおける計算から導出されている抽出されたデータのセットを含む信号であって、上記抽出されたデータのセットに到達することを目的として、
− 上記数学的システムは複数の離散的な項で表現され、
− 上記数学的システムの少なくとも1つの変数は固定小数点の数として表現され、
− 上記計算は、固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように実行され、かつ、
− 結果として得られる数は上記計算から取得され、上記結果として得られる数は、
− a.上記数学的システムに対する解の少なくとも一部と、
− b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
それによって、上記抽出されたデータのセットは、
− i.上記結果として得られる数のディジットのうちのサブセットと、
− ii.上記結果として得られる数から導出された数のディジットのうちのサブセットと
の少なくとも一方を表現する信号。
A signal comprising a set of extracted data derived from calculations in a mathematical system, with the aim of reaching said set of extracted data,
-The mathematical system is represented by a plurality of discrete terms,
-At least one variable of the mathematical system is represented as a fixed-point number;
The calculation is performed such that the calculation includes the at least one variable expressed as a fixed-point number, and
-The resulting number is obtained from the above calculation, and the resulting number is
-A. At least part of the solution to the mathematical system;
-B. Representing at least one of the numbers available for another calculation related to the numerical solution of the mathematical system,
Thereby, the set of extracted data is
-I. A subset of the resulting number of digits;
-Ii. A signal representing at least one of a subset of the digits of the number derived from the resulting number.
平文と、数学的システムにおける計算から抽出された少なくとも1つのデータのセットとの組み合わせとして導出されている暗号化されたデータのセットを含む信号であって、上記抽出されたデータのセットに到達することを目的として、
− 上記数学的システムは複数の離散的な項で表現され、
− 上記数学的システムの少なくとも1つの変数は固定小数点の数として表現され、
− 上記計算は、固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように実行され、かつ、
− 結果として得られる数は上記計算から取得され、上記結果として得られる数は、
− a.上記数学的システムに対する解の少なくとも一部と、
− b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
それによって、上記抽出されたデータのセットは、
− i.上記結果として得られる数のディジットのうちのサブセットと、
− ii.上記結果として得られる数から導出された数のディジットのうちのサブセットと
の少なくとも一方を表現する信号。
A signal comprising a set of encrypted data derived as a combination of plaintext and at least one set of data extracted from calculations in a mathematical system, wherein the signal reaches the set of extracted data. For that purpose,
-The mathematical system is represented by a plurality of discrete terms,
-At least one variable of the mathematical system is represented as a fixed-point number;
The calculation is performed such that the calculation includes the at least one variable expressed as a fixed-point number, and
-The resulting number is obtained from the above calculation, and the resulting number is
-A. At least part of the solution to the mathematical system;
-B. Representing at least one of the numbers available for another calculation related to the numerical solution of the mathematical system,
Thereby, the set of extracted data is
-I. A subset of the resulting number of digits;
-Ii. A signal representing at least one of a subset of the digits of the number derived from the resulting number.
少なくとも1つの独立変数に関連した少なくとも1つの状態変数を決定する少なくとも1つの非線形関数を含む数学的システムに対する解における周期的な挙動を検出する方法であって、当該方法は、
− 上記数学的システムを複数の離散的な項で表現することと、
− 電子装置において計算を実行して、結果として得られる数を取得することとを含み、上記結果として得られる数は上記数学的システムに対する解の少なくとも一部を表現し、
当該方法は、
− 選択された解を上記電子装置のメモリにおけるアレーAに記憶することを含み、上記アレーは有限個数n+1個の解を記憶するように適応化され、
当該方法は、
− 現在の解と、
− 上記アレーに記憶された上記解の特定の1つと
の少なくとも一方が、上記アレーに記憶された他の解と実質的に同一であるか否かを決定することを含む方法。
A method for detecting periodic behavior in a solution to a mathematical system including at least one non-linear function that determines at least one state variable associated with at least one independent variable, the method comprising:
-Representing said mathematical system by a plurality of discrete terms;
Performing a calculation in the electronic device to obtain a resulting number, wherein the resulting number represents at least a part of a solution to the mathematical system;
The method is
-Storing the selected solution in an array A in a memory of said electronic device, said array being adapted to store a finite number n + 1 of solutions;
The method is
− The current solution,
A method comprising determining whether at least one of the particular solutions stored in the array is substantially identical to another solution stored in the array.
選択された解のみが上記メモリに記憶される請求項58記載の方法。The method of claim 58, wherein only selected solutions are stored in said memory. 上記アレーにおける各エントリは、アレーレベルA,0≦i≦n毎に増大している経過時間を有する解を含む請求項58又は59記載の方法であって、
− 選択された解を上記アレーに記憶する上記ステップにおいて、現在の解をアレーAにおける0番目のレベルに記憶し、これにより、上記アレーAにおける0番目のレベルで記憶された古い値に上書きすることと、
− 0番目の予め決められた基準が満たされているとき、上記0番目のレベルが上記現在の解によって上書きされる前に上記古い値を上記アレーAにおける1番目のレベルへ移動することとを含み、
上記アレーにおける第1のレベル及びそれ以上の各レベルiに対しては、
− レベルiに対するi番目の予め決められた基準が満たされているとき、i番目のレベルがi−1番目のレベルから移動される値によって上書きされる前に、i番目のレベルで記憶された古い値を上記アレーAにおけるi+1番目のレベルへ移動することを含み、
n番目のレベルが更新されるとき、n番目のレベルで以前に記憶された古い値を廃棄することを含む方法。
60. The method of claim 58 or 59, wherein each entry in the array includes a solution having an elapsed time that increases for each array level Ai , 0 <i <n.
In the step of storing the selected solution in the array, storing the current solution at the 0th level in the array A, thereby overwriting the old value stored at the 0th level in the array A; That
Moving the old value to the first level in the array A before the zeroth level is overwritten by the current solution when the zeroth predetermined criterion is fulfilled. Including
For the first level and each higher level i in the array,
When the i-th predetermined criterion for level i is fulfilled, the i-th level is stored at the i-th level before being overwritten by the value moved from the i-l-th level Moving the old value to the (i + 1) th level in array A,
A method comprising, when the nth level is updated, discarding old values previously stored at the nth level.
上記アレー内の各レベルiに対して、i番目のレベルに記憶された古い値がi+1番目のレベルへ移動されることなく上記古い値が新しい値によって上書きされている回数を計数することをさらに含み、予め決められた回数だけ古い値が移動されなかったときにi番目の予め決められた基準は満たされる請求項60記載の方法。For each level i in the array, counting the number of times the old value stored in the i-th level is overwritten by the new value without being moved to the i + 1-th level. 61. The method of claim 60, wherein the i-th predetermined criterion is satisfied when the old value has not been moved a predetermined number of times. 上記予め決められた回数は、上記アレーAのすべてのレベルで同一である請求項61記載の方法。62. The method of claim 61, wherein the predetermined number is the same at all levels of the array A. 上記予め決められた回数は、上記アレーAの各レベル間で変化する請求項61記載の方法。62. The method of claim 61, wherein said predetermined number of times varies between each level of said array A. 上記アレーAのi番目のレベルに対する上記予め決められた回数は、上記アレーに記憶された少なくとも1つの値に依存する請求項61又は63記載の方法。64. The method of claim 61 or 63, wherein the predetermined number of times for the ith level of the array A depends on at least one value stored in the array. 上記決定するステップは所定のテスト基準が満たされたときのみ実行される請求項58乃至64のうちの任意の請求項に記載の方法。65. The method of any one of claims 58 to 64, wherein said determining is performed only when predetermined test criteria are met. 上記テスト基準は、少なくとも1つの状態変数の符号が変化するときに満たされる請求項65記載の方法。66. The method of claim 65, wherein the test criteria is met when a sign of at least one state variable changes. 上記少なくとも1つの独立変数の1つに関して少なくとも1つの状態変数の少なくとも1つの導関数を計算することをさらに含み、上記テスト基準は、上記少なくとも1つの導関数の符号の変化が発生するときに満たされる請求項66記載の方法。Further calculating at least one derivative of at least one state variable with respect to one of the at least one independent variable, wherein the test criterion is satisfied when a change in the sign of the at least one derivative occurs. 67. The method of claim 66, wherein テスト値を、
− 上記少なくとも1つの状態変数と、
− 上記導関数と
の少なくとも一方から計算することをさらに含み、上記テスト基準は上記テスト値に基づく請求項66及び67記載の方法。
Test value,
-At least one said state variable;
68. The method of claims 66 and 67, further comprising calculating from at least one of the derivative, wherein the test criterion is based on the test value.
擬似乱数を発生する方法であって、当該方法は、
I)数学的システムを複数の離散的な項で表現することと、
II)上記数学的システムの少なくとも初期条件を表現するシード値を定義することと、
III)上記数学的システムの少なくとも1つの変数を固定小数点の数として表現することと、
IV)電子装置において、固定小数点の数として表現された上記少なくとも1つの変数を含む計算を実行し、かつ上記計算から、結果として得られる数を取得し、上記結果として得られる数は、
a.上記数学的システムに対する解の少なくとも一部と、
b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
当該方法は、
V)上記計算の間に発生した少なくとも1つの数から導出された数を擬似乱数として抽出することを含む方法。
A method for generating a pseudo-random number, comprising:
I) representing the mathematical system with a plurality of discrete terms;
II) defining a seed value representing at least an initial condition of the mathematical system;
III) expressing at least one variable of the mathematical system as a fixed-point number;
IV) in the electronic device, performing a calculation including the at least one variable expressed as a fixed-point number, and obtaining a resulting number from the calculation, wherein the resulting number comprises:
a. At least part of the solution to the mathematical system;
b. Representing at least one of the numbers available for another calculation related to the numerical solution of the mathematical system,
The method is
V) A method comprising extracting a number derived from at least one number generated during said calculation as a pseudo-random number.
上記擬似乱数は、上記計算の間に発生した上記少なくとも1つの数のk個のディジットから導出された数として抽出される請求項69記載の方法。70. The method of claim 69, wherein the pseudorandom number is extracted as a number derived from the at least one number of k digits generated during the calculation. 上記擬似乱数は、上記少なくとも1つの数の最下位のk個のディジットから導出された数として抽出される請求項70記載の方法。71. The method of claim 70, wherein the pseudorandom number is extracted as a number derived from the least significant k digits of the at least one number. 所定量の擬似乱数が発生されるまでステップIV)及びステップV)を反復するステップを含む請求項69乃至71のうちの任意の請求項に記載の方法。72. The method according to any one of claims 69 to 71, comprising repeating steps IV) and V) until a predetermined amount of pseudo-random numbers is generated. スペアのシード値として、所定量の擬似乱数が発生されて上記電子装置のメモリに記憶される請求項69乃至72のうちの任意の請求項に記載の方法。73. The method according to any one of claims 69 to 72, wherein a predetermined amount of pseudo-random numbers is generated as a spare seed value and stored in a memory of the electronic device. 請求項58乃至68のうちの任意の請求項に記載のステップをさらに含む請求項69乃至73のうちの任意の請求項に記載の方法であって、
上記決定するステップが、
− 現在の解と、
− 特定の解と
の少なくとも1つが他の解と同一であることを示すとき、
上記擬似乱数の発生を中断する、すなわちステップIV)及びステップV)の反復を中断することと、
上記スペアのシード値をステップII)においてシード値として使用することと、
上記擬似乱数の発生を再開する、すなわちステップIV)及びステップV)の反復を再開することとを含む方法。
The method of any of claims 69 to 73, further comprising the steps of any of claims 58 to 68,
The determining step includes:
− The current solution,
-Indicates that at least one of the particular solutions is identical to the other solutions;
Interrupting the generation of the pseudorandom number, ie, interrupting the repetition of steps IV) and V);
Using the spare seed value as a seed value in step II);
Resuming the generation of the pseudo-random numbers, ie resuming the repetition of steps IV) and V).
上記擬似乱数の発生を再開するステップに先行して、新たなスペアのシード値として、所定量の擬似乱数を発生して上記電子装置のメモリに記憶することをさらに含む請求項74記載の方法。75. The method of claim 74, further comprising, prior to the step of resuming generation of the pseudorandom number, generating a predetermined amount of the pseudorandom number as a new spare seed value and storing the pseudorandom number in a memory of the electronic device. ステップIV)及びステップV)がステップII)における新たなシード値を用いて開始されると、アレーAの各レベルはステップIV)に先行してリセットされる請求項69乃至75のうちの任意の請求項に記載の方法。78. When steps IV) and V) are started with the new seed value in step II), each level of array A is reset prior to step IV). The method according to claim. 請求項1乃至47のうちの任意の請求項に記載のステップをさらに含む請求項69乃至76のうちの任意の請求項に記載の方法。78. The method according to any of claims 69-76, further comprising the steps of any of the claims 1-47. 元のデータのセットを、暗号化されたデータにセットに暗号化する方法であって、
A)以下のステップ、すなわち、
I)数学的システムを複数の離散的な項で表現するステップと、
II)上記数学的システムの少なくとも初期条件を表現する暗号化鍵を定義するステップと、
III)上記数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
IV)固定小数点の数として表現された上記少なくとも1つの変数を含む計算を実行し、かつ、上記計算から、結果として得られる数を取得するステップであって、上記結果として得られる数は、
a.上記数学的システムに対する解の少なくとも一部と、
b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現するステップと
V)上記計算の間に発生した少なくとも1つの数から導出された数を擬似乱数として抽出するステップと
を実行することによって、擬似乱数を発生するステップと、
B)上記元のデータ及び上記擬似乱数を、
i.算術演算と、
ii.論理演算と
の少なくとも一方によって操作し、結合されたデータのセットを取得するステップとを含み、上記結合されたデータのセットは暗号化されたデータである方法。
A method of encrypting a set of original data into a set of encrypted data,
A) The following steps:
I) representing the mathematical system with a plurality of discrete terms;
II) defining an encryption key representing at least the initial conditions of the mathematical system;
III) expressing at least one variable of the mathematical system as a fixed-point number;
IV) performing a calculation including the at least one variable expressed as a fixed-point number and obtaining a resulting number from the calculation, wherein the resulting number comprises:
a. At least part of the solution to the mathematical system;
b. Representing at least one of the numbers available for another calculation associated with the numerical solution of the mathematical system; and V) extracting as a pseudorandom number a number derived from at least one number generated during the calculation. Generating a pseudo-random number by performing the steps of:
B) The original data and the pseudo random number are
i. Arithmetic operations,
ii. Operating with at least one of logical operations to obtain a combined set of data, wherein the combined set of data is encrypted data.
ステップA)に先行して、上記元のデータのサブセットが上記データのセットから分離され、ステップB)は上記データのサブセットに対して実行される請求項78記載の方法。79. The method of claim 78, wherein prior to step A), the subset of the original data is separated from the set of data, and step B) is performed on the subset of data. 請求項60記載のステップをさらに含み、上記元のデータのセット全体を共同で構成する複数のサブセットが暗号化されるまで上記請求項60記載のステップを反復する請求項79記載の方法。80. The method of claim 79, further comprising the steps of claim 60, wherein the steps of claim 60 are repeated until a plurality of subsets that together make up the entire set of original data are encrypted. 上記擬似乱数は、計算の間に発生した上記少なくとも1つの数のk個のディジットから導出された数として抽出される請求項78乃至80のうちの任意の請求項に記載の方法。81. The method according to any of claims 78 to 80, wherein the pseudo-random number is extracted as a number derived from the at least one number k digits generated during a calculation. 上記擬似乱数は、計算の間に発生した上記少なくとも1つの数の最下位のk個のディジットから導出された数として抽出される請求項78乃至80のうちの任意の請求項に記載の方法。81. The method according to any of claims 78 to 80, wherein the pseudo-random number is extracted as a number derived from the least significant k digits of the at least one number generated during a calculation. 所定量の擬似乱数が発生されるまでステップIV)及びステップV)を反復するステップを含む請求項78乃至82のうちの任意の請求項に記載の方法。83. The method according to any one of claims 78 to 82, comprising the step of repeating steps IV) and V) until a predetermined amount of pseudorandom numbers has been generated. スペアの暗号化鍵として、所定量の擬似乱数が発生されて上記電子装置のメモリに記憶される請求項80乃至83のうちの任意の請求項に記載の方法。84. The method according to any of claims 80 to 83, wherein a predetermined amount of pseudo-random numbers are generated as spare encryption keys and stored in a memory of the electronic device. 請求項58乃至68のうちの任意の請求項に記載のステップをさらに含む請求項84記載の方法であって、
上記決定するステップが、
− 現在の解と、
− 特定の解と
の少なくとも1つが他の解と同一であることを示すとき、
− 上記擬似乱数の発生を中断する、すなわちステップIV)及びステップV)の反復を中断することと、
− 上記スペアの暗号化鍵をステップII)において暗号化鍵として使用することと、
− 上記擬似乱数の発生を再開する、すなわちステップIV)及びステップV)の反復を再開することとを含む方法。
84. The method of claim 84, further comprising the steps of any of claims 58-68.
The determining step includes:
− The current solution,
-Indicates that at least one of the particular solutions is identical to the other solutions;
Interrupting the generation of said pseudo-random numbers, ie interrupting the repetition of steps IV) and V);
Using said spare encryption key as an encryption key in step II);
Restarting the generation of said pseudo-random numbers, i.e. restarting the repetition of steps IV) and V).
上記擬似乱数の発生を再開するステップに先行して、新たなスペアの暗号化鍵として、所定量の擬似乱数を発生して上記電子装置のメモリに記憶することをさらに含む請求項85記載の方法。86. The method of claim 85, further comprising, prior to resuming the generation of the pseudorandom number, generating a predetermined amount of the pseudorandom number as a new spare encryption key and storing the pseudorandom number in a memory of the electronic device. . ステップIV)及びステップV)がステップII)における新たなシード値を用いて開始されると、アレーAの各レベルはステップIV)に先行してリセットされる請求項78乃至86のうちの任意の請求項に記載の方法。87. Any of claims 78 to 86 wherein when steps IV) and V) are started with the new seed value in step II), each level of array A is reset prior to step IV). The method according to claim. 請求項1乃至47のうちの任意の請求項及び/又は請求項58乃至68のうちの任意の請求項に記載のステップをさらに含む請求項78乃至87のうちの任意の請求項に記載の方法。The method according to any one of claims 78 to 87, further comprising the steps of any of claims 1 to 47 and / or any of claims 58 to 68. . 請求項78乃至88のうちの任意の請求項に記載の方法によって暗号化されている、暗号化されたデータのセットを復号化する方法であって、
a)請求項78記載のステップA)を実行することで、請求項78記載のステップV)において抽出されたものと同じ擬似乱数を抽出するステップと、
b)上記暗号化されたデータ及び上記擬似乱数を、
− 算術演算と、
− 論理演算と
の少なくとも一方によって操作し、元のバージョンのデータ、すなわち復号化されたバージョンのデータを取得するステップとを含む方法。
90. A method for decrypting an encrypted set of data, said method being encrypted by a method according to any of claims 78-88,
a) extracting the same pseudorandom number as that extracted in step V) according to claim 78 by performing step A) according to claim 78;
b) converting the encrypted data and the pseudo-random number into
Arithmetic operations;
Operating by at least one of logical operations to obtain an original version of the data, i.e., a decoded version of the data.
ステップa)に先行して、上記暗号化されたデータのセットから上記暗号化されたデータのサブセットが分離され、上記データのサブセットは請求項78記載の方法によって暗号化され、
上記復号化する方法は、上記データのサブセットに対してステップa)及びステップb)を実行することを含む請求項89記載の方法。
Prior to step a), a subset of the encrypted data is separated from the set of encrypted data, wherein the subset of data is encrypted by the method of claim 78;
90. The method of claim 89, wherein the method of decoding comprises performing steps a) and b) on the subset of data.
上記暗号化されたデータのセット全体を共同で構成する複数のサブセットが復号化されるまで、請求項90記載のステップを反復することを含む請求項90記載の方法。90. The method of claim 90, comprising repeating the steps of claim 90 until a plurality of subsets that together make up the entire set of encrypted data are decrypted. 上記暗号化されたデータを復号化するときに、元のデータを暗号化する以前のシーケンスの間と同一の方法で請求項83乃至87のうちの任意の請求項に記載のステップを適用することをさらに含む請求項89乃至91のうちの任意の請求項に記載の方法。Applying the steps of any one of claims 83 to 87 in decrypting the encrypted data in the same way as during the sequence before encrypting the original data 92. The method of any of claims 89-91, further comprising: 請求項1乃至47のうちの任意の請求項及び/又は請求項58乃至68のうちの任意の請求項に記載のステップをさらに含む請求項89乃至92のうちの任意の請求項に記載の方法。93. The method according to any of claims 89 to 92, further comprising the steps of any of claims 1 to 47 and / or any of claims 58 to 68. . データのセットを暗号化しかつ復号化するコンピュータプログラムであって、上記コンピュータプログラムは暗号化モード及び復号化モードで実行するように適応化され、上記コンピュータプログラムはさらに、
i)以下のステップ、すなわち、
− 数学的システムを複数の離散的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
− 固定小数点の数として表現された上記少なくとも1つの変数を含む計算を実行するステップと、
− 上記計算から、結果として得られる数を取得するステップであって、上記結果として得られる数は、
a.上記数学的システムに対する解の一部と、
b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現するステップと、
− 計算の間に発生した少なくとも1つの数から導出された数を擬似乱数として抽出するステップと
を実行することにより、擬似乱数を再現可能な方法で発生し、
ii)上記データ及び上記擬似乱数を、
− 算術演算と、
− 論理演算と
の少なくとも一方によって操作し、結合されたデータのセットを取得するように適応化され、
− 上記コンピュータプログラムが暗号化モードで実行されている場合、上記結合されたデータのセットは上記データの暗号化されたバージョンを表現し、
上記コンピュータプログラムが復号化モードで実行されている場合、上記結合されたデータのセットは上記データの復号化されたバージョンを表現するコンピュータプログラム。
A computer program for encrypting and decrypting a set of data, wherein the computer program is adapted to execute in an encryption mode and a decryption mode, the computer program further comprising:
i) the following steps:
-Representing the mathematical system with a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing a calculation involving said at least one variable expressed as a fixed-point number;
Obtaining a resulting number from the calculation, wherein the resulting number is:
a. Part of the solution to the mathematical system above,
b. Representing at least one of a number available for another calculation associated with a numerical solution of the mathematical system;
Extracting as a pseudo-random number a number derived from at least one number generated during the calculation, thereby generating the pseudo-random number in a reproducible manner;
ii) the data and the pseudo-random number are
Arithmetic operations;
-Operated by at least one of logical operations, adapted to obtain a combined set of data;
-If the computer program is running in an encrypted mode, the combined set of data represents an encrypted version of the data;
A computer program wherein the combined set of data represents a decrypted version of the data when the computer program is running in a decryption mode.
上記擬似乱数を発生するステップは、請求項1乃至47のうちの任意の請求項に記載のステップをさらに含む請求項94記載の方法。95. The method of claim 94, wherein generating the pseudo-random number further comprises the steps of any one of claims 1-47. 上記操作するステップは、請求項78乃至93のうちの任意の請求項の請求項によって定義されかつ適用された操作に含まれる任意のステップを含む請求項94又は95記載の方法。97. A method according to claim 94 or 95, wherein said operating steps include any steps included in the operations defined and applied by any of the claims of claims 78-93. 請求項94乃至96のうちの任意の請求項に記載のコンピュータプログラムがロードされた、コンピュータが読み取り可能なデータキャリア。A computer readable data carrier loaded with a computer program according to any one of claims 94 to 96. 請求項97記載のコンピュータが読み取り可能なデータキャリアに動作可能に接続されたコンピュータであって、上記プログラムを実行するプロセッサ手段を備えたコンピュータ。100. A computer operably connected to a computer readable data carrier according to claim 97, comprising computer means for executing the program. 擬似乱数を発生する方法であって、当該方法は、1つのインスタンスにおいて、
I)数学的システムを複数の離散的な項で表現することと、
II)上記数学的システムの少なくとも初期条件を表現するシード値を定義することと、
III)上記数学的システムの少なくとも1つの変数を固定小数点の数として表現することと、
IV)固定小数点の数として表現された上記少なくとも1つの変数を含む計算を実行して、結果として得られる数を取得することとを含み、上記結果として得られる数は、
a.上記数学的システムに対する解の一部と、
b.上記数学的システムの数値解に関連した別の計算に使用可能な数と
の少なくとも一方を表現し、
V)計算の間に発生した少なくとも1つの数から導出された数を擬似乱数として抽出することを含み、
ステップI)乃至V)を複数のインスタンスで並列に実行する方法。
A method for generating a pseudo-random number, comprising: in one instance:
I) representing the mathematical system with a plurality of discrete terms;
II) defining a seed value representing at least an initial condition of the mathematical system;
III) expressing at least one variable of the mathematical system as a fixed-point number;
IV) performing a calculation involving the at least one variable expressed as a fixed-point number to obtain a resulting number, wherein the resulting number comprises:
a. Part of the solution to the mathematical system above,
b. Representing at least one of the numbers available for another calculation related to the numerical solution of the mathematical system,
V) extracting as a pseudo-random number a number derived from at least one number generated during the calculation;
A method in which steps I) to V) are executed in parallel on a plurality of instances.
上記複数のインスタンスのそれぞれで少なくともステップIV)を実行する間に、上記複数のインスタンス間でデータを送信することを含む請求項99記載の方法。100. The method of claim 99, comprising transmitting data between the plurality of instances while performing at least step IV) on each of the plurality of instances. 上記複数のインスタンスのそれぞれでステップV)を実行する間に、上記複数のインスタンス間でデータを送信することをさらに含む請求項99又は100記載の方法。110. The method of claim 99 or 100, further comprising transmitting data between the plurality of instances while performing step V) on each of the plurality of instances. 上記各インスタンスにおいてステップV)で抽出された複数の擬似乱数を、
− 算術演算と、
− 論理演算と
の少なくとも一方を使用して共通の擬似乱数に結合することを含む請求項99乃至101のうちの任意の請求項に記載の方法。
In each of the above instances, the plurality of pseudorandom numbers extracted in step V) are
Arithmetic operations;
102. A method according to any one of claims 99 to 101, comprising combining at least one of a logical operation with a common pseudo-random number.
少なくとも1つの関数を含む数学的システムにおいて数値計算を実行する方法であって、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
− 固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように、上記計算を実行するステップと、
− 上記計算から、結果として得られる数を取得するステップとを含み、上記結果として得られる数は、
a.上記数学的システムに対する解の少なくとも一部と、
b.上記数学的システムの数値解に関連した別の計算において使用可能な数と
の少なくとも一方を表現し、
上記計算を実行するステップは、
− 少なくとも1つの以前の解X,m≦n+1に基づいて解Xn+1を反復して計算することを含み、これにより、上記計算を実行するステップは、状態変数Xの少なくとも1つの初期条件Xに基づいて開始され、
当該方法はさらに、
− 暗号鍵を上記計算への入力として提供することを含み、これにより上記暗号鍵は初期条件Xの発生に使用される方法。
A method of performing a numerical calculation in a mathematical system including at least one function,
-Representing said mathematical system in a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing the calculation such that the calculation includes the at least one variable expressed as a fixed-point number;
Obtaining the resulting number from the calculation, wherein the resulting number comprises:
a. At least part of the solution to the mathematical system;
b. Representing at least one of the numbers available in another calculation associated with the numerical solution of the mathematical system,
The step of performing the above calculation includes:
-Iteratively calculating the solution X n + 1 based on at least one previous solution X m , m ≦ n + 1, whereby performing said calculation comprises: at least one initial condition X of the state variable X 0 based on
The method further comprises:
- comprises providing a cryptographic key as an input to the calculation, thereby method the encryption key used for generating initial conditions X 0.
データのセットを識別するための識別値を決定する方法であって、当該方法は少なくとも1つの関数を含む数学的システムにおいて数値計算を実行することを含み、当該方法は、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
− 固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように、上記計算を実行するステップと、
− 上記計算から、結果として得られる数を取得するステップであって、上記結果として得られる数は、
a.上記数学的システムに対する解の少なくとも一部と、
b.上記数学的システムの数値解に関連した別の計算において使用可能な数と
の少なくとも一方を表現するステップとを含み、
これにより、上記データのセットの少なくとも一部の表現は上記計算において使用され、
当該方法はさらに、
− 上記結果として得られる数の少なくとも一部を上記識別値として抽出することを含む方法。
A method for determining an identification value for identifying a set of data, the method comprising performing a numerical calculation in a mathematical system including at least one function, the method comprising:
-Representing said mathematical system in a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing the calculation such that the calculation includes the at least one variable expressed as a fixed-point number;
-Obtaining a resulting number from said calculation, wherein said resulting number comprises:
a. At least part of the solution to the mathematical system;
b. Representing at least one of the numbers available in another calculation associated with the numerical solution of the mathematical system;
Thereby, at least a part of the representation of the set of data is used in the calculation,
The method further comprises:
-A method comprising extracting at least a part of said resulting number as said identification value.
上記計算のためのシード値として暗号鍵が使用される請求項104記載の方法。105. The method of claim 104, wherein an encryption key is used as a seed value for the calculation. 上記数学的システムは、
− 微分方程式と、
− 離散的マッピングと
の少なくとも一方を含む請求項104又は105記載の方法。
The mathematical system is
− Differential equations,
106. The method according to claim 104 or 105, comprising at least one of discrete mapping.
上記微分方程式は、
− 偏微分方程式と、
− 常微分方程式と
の少なくとも一方を含む請求項106記載の方法。
The above differential equation is
− Partial differential equations,
107. The method of claim 106, comprising at least one of an ordinary differential equation.
上記離散的マッピングは、
− 領域を保存するマップと、
− 領域を保存しないマップと
の少なくとも一方を含む請求項106記載の方法。
The discrete mapping above
A map to save the area;
107. The method of claim 106, comprising at least one of: a map that does not preserve regions.
上記数学的システムは、少なくとも1つの状態変数Xを決定する少なくとも1つの非線形関数を含む請求項106又は108記載の方法。109. The method of claim 106 or 108, wherein the mathematical system includes at least one non-linear function that determines at least one state variable X. 上記非線形マッピング関数は、xn+1=λx(1−x)の形式のロジスティックマップを含み、λはパラメータであり、xn+1は上記計算の(n+1)番目のステージにおける状態変数xの値であり、xは上記計算のn番目のステージにおける状態変数xの値である請求項109記載の方法。The non-linear mapping function includes a logistic map of the form x n + 1 = λx n (1-x n ), where λ is a parameter and x n + 1 is the value of the state variable x at the (n + 1) th stage of the calculation. 110. The method of claim 109, wherein xn is the value of the state variable x at the nth stage of the calculation. 上記ロジスティックマップはxn+1=λx(1−x)+ε(x−m)の形式に変形され、λ及びεはパラメータであり、xn+1は上記計算の(n+1)番目のステージにおける状態変数xの値であり、xは上記計算のn番目のステージにおける状態変数xの値であり、mは上記データのセットのn番目の部分の表現を含む請求項110記載の方法。The logistic map is modified in the form of x n + 1 = λx n ( 1-x n) + ε (x n -m n), the λ and epsilon is a parameter, x n + 1 is calculated above in (n + 1) -th stage state the value of the variable x, x n is the value of the state variable x in the n-th stage of the calculation, m n the method of claim 110 further comprising a representation of the n-th part of said set of data. 暗号鍵は、λ、ε及び状態変数xの初期値xのうちの少なくとも1つを少なくとも部分的に決定するために使用される請求項110又は111記載の方法。The method of claim 110 or 111, wherein the cryptographic key is used to at least partially determine at least one of λ, ε, and the initial value x 0 of the state variable x. 上記数学的システムは、複数の非線形マッピング関数にてなるセットを含む請求項104のうちの任意のものに記載の方法。105. The method of any of claims 104, wherein the mathematical system includes a set of a plurality of non-linear mapping functions. 上記複数のマッピング関数にてなるセットは、
− 次式の形式を有するアノーソフマップ、
Figure 2004530919
及び、
− 次式の形式を有するエノンマップ
Figure 2004530919
の少なくとも一方を含む請求項113記載の方法。
The set consisting of the above multiple mapping functions is:
An Anosov map having the form:
Figure 2004530919
as well as,
-An enon map having the form
Figure 2004530919
114. The method of claim 113 comprising at least one of the following.
上記数学的システムは少なくとも1つの非線形微分方程式を含む請求項104乃至107のうちの任意の請求項に記載の方法。108. The method according to any one of claims 104 to 107, wherein said mathematical system includes at least one nonlinear differential equation. 上記数学的システムは、複数の非線形微分方程式にてなるセットを含む請求項115記載の方法。The method of claim 115, wherein the mathematical system includes a set of a plurality of nonlinear differential equations. 上記数学的システムは少なくとも1つの正のリヤプノフ指数を有する請求項104乃至116のうちの任意の請求項に記載の方法。The method according to any of claims 104 to 116, wherein said mathematical system has at least one positive Lyapunov exponent. 数学的計算の間に少なくとも1回だけ少なくとも1つのリヤプノフ指数を計算することを含む請求項104乃至117のうちの任意の請求項に記載の方法。118. The method of any of claims 104-117, comprising calculating at least one Lyapunov exponent at least once during a mathematical calculation. 上記少なくとも1つの非線形微分方程式は、少なくとも1つの独立変数tの関数である少なくとも1つの状態変数Xを決定する請求項115乃至118のうちの任意の請求項に記載の方法。118. The method according to any of claims 115-118, wherein said at least one nonlinear differential equation determines at least one state variable X that is a function of at least one independent variable t. 上記複数の非線形微分方程式にてなるセットはローレンツシステムを含む請求項116乃至119のうちの任意の請求項に記載の方法。120. The method of any of claims 116-119, wherein the set of non-linear differential equations comprises a Lorentz system. 少なくとも1つの関数を含む数学的システムにおいて数値計算を実行する方法であって、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記関数の少なくとも1つの選択された変数の範囲を制限するステップとを含み、上記範囲は、上記範囲によって制限されない場合に上記選択された変数が上記関数によって有したであろう値を除外するように十分に狭く、
上記方法は、
− 計算を実行して、結果として得られる数を取得するステップを含み、上記結果として得られる数は、
a.上記数学的システムに対する解の一部と、
b.上記数学的システムの数値解に関連した別の計算において使用可能な数と
の少なくとも一方を表現し、
上記方法は、
− 計算の結果として得られる上記選択された変数の値が上記範囲を超えているとき、上記選択された変数に上記範囲内の値を割り当てるステップを含む方法。
A method of performing a numerical calculation in a mathematical system including at least one function,
-Representing said mathematical system in a plurality of discrete terms;
Limiting the range of at least one selected variable of said function, said range excluding values that said selected variable would have had by said function if not limited by said range. So narrow enough
The above method
Performing a calculation to obtain a resulting number, said resulting number comprising:
a. Part of the solution to the mathematical system above,
b. Representing at least one of the numbers available in another calculation associated with the numerical solution of the mathematical system,
The above method
-The method comprising, when the value of the selected variable resulting from the calculation exceeds the range, assigning the selected variable a value within the range.
上記方法は擬似乱数発生方法の一部である請求項121記載の方法。The method of claim 121, wherein said method is part of a pseudorandom number generation method. 上記擬似乱数発生方法は暗号化及び復号化の少なくとも一方に使用する擬似乱数を発生する請求項122記載の方法。The method according to claim 122, wherein the pseudorandom number generation method generates a pseudorandom number used for at least one of encryption and decryption. 上記数学的システムは少なくとも1つの正のリヤプノフ指数を有する請求項121乃至123のうちの任意の請求項に記載の方法。123. The method of any of claims 121-123, wherein said mathematical system has at least one positive Lyapunov exponent. 少なくとも1つの関数を含む数学的システムにおいて数値計算を実行する方法であって、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を整数として表現するステップと、
− 上記整数内に仮想小数点分離記号を配置するステップとを含み、これにより上記整数は実数を表現し、
上記方法は、
− 整数として表現された上記少なくとも1つの変数を含む計算を実行して、結果として得られる数を取得するステップを含み、上記結果として得られる数は整数として表され、
上記方法は、
− 上記整数における上記仮想小数点分離記号の位置を訂正するステップと、
− 上記結果として得られる数に想像上の分離記号を配置するステップと
の少なくとも一方を実行することにより、上記結果として得られる数における上記仮想小数点分離記号を、予め決められた位置に位置決めするステップを含む方法。
A method of performing a numerical calculation in a mathematical system including at least one function,
-Representing said mathematical system in a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as an integer;
Placing a virtual decimal separator within said integer, whereby said integer represents a real number;
The above method
Performing a calculation involving said at least one variable expressed as an integer to obtain a resulting number, wherein the resulting number is represented as an integer;
The above method
Correcting the position of the virtual decimal separator in the integer;
Positioning the virtual decimal separator in the resulting number in a predetermined position by performing at least one of placing an imaginary separator in the resulting number. A method that includes
少なくとも1つの関数を含む数学的システムにおいて数値計算を実行する方法であって、
− 上記数学的システムを複数の離散的な項で表現するステップと、
− 上記数学的システムの少なくとも1つの変数を固定小数点の数として表現するステップと、
− 固定小数点の数として表現された上記少なくとも1つの変数を当該計算が含むように、上記計算を実行するステップと、
− 上記計算から、結果として得られる数を取得するステップとを含み、上記結果として得られる数は、
a.上記数学的システムに対する解の少なくとも一部と、
b.上記数学的システムの数値解に関連した別の計算において使用可能な数と
の少なくとも一方を表現する方法。
A method of performing a numerical calculation in a mathematical system including at least one function,
-Representing said mathematical system in a plurality of discrete terms;
-Expressing at least one variable of the mathematical system as a fixed-point number;
Performing the calculation such that the calculation includes the at least one variable expressed as a fixed-point number;
Obtaining the resulting number from the calculation, wherein the resulting number comprises:
a. At least part of the solution to the mathematical system;
b. A method of expressing at least one of a number available in another calculation associated with a numerical solution of the mathematical system.
JP2002548877A 2000-12-07 2001-12-07 Method for performing mathematical operations in an electronic device, generating pseudorandom numbers in an electronic device, and encrypting and decrypting electronic data Pending JP2004530919A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DKPA200001838 2000-12-07
PCT/DK2001/000814 WO2002047272A2 (en) 2000-12-07 2001-12-07 A method of performing mathematical operations in an electronic device, a method of generating pseudo-random numbers in an electronic device, and a method of encrypting and decrypting electronic data

Publications (2)

Publication Number Publication Date
JP2004530919A true JP2004530919A (en) 2004-10-07
JP2004530919A5 JP2004530919A5 (en) 2005-12-22

Family

ID=8159894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002548877A Pending JP2004530919A (en) 2000-12-07 2001-12-07 Method for performing mathematical operations in an electronic device, generating pseudorandom numbers in an electronic device, and encrypting and decrypting electronic data

Country Status (5)

Country Link
EP (1) EP1360767A2 (en)
JP (1) JP2004530919A (en)
AU (1) AU2002220534A1 (en)
CA (1) CA2430858A1 (en)
WO (1) WO2002047272A2 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005529364A (en) * 2002-06-06 2005-09-29 クリプティコ・アクティーゼルスカブ How to improve the unpredictability of pseudorandom number generator output
US7097107B1 (en) 2003-04-09 2006-08-29 Mobile-Mind, Inc. Pseudo-random number sequence file for an integrated circuit card
GB2462876A (en) * 2008-08-26 2010-03-03 Cambridge Silicon Radio Ltd Estimating the component of a signal via random sampling
EP2681672B1 (en) * 2011-03-01 2015-11-04 King Abdullah University Of Science And Technology Fully digital chaotic differential equation-based systems and methods
CN107094072B (en) * 2017-03-28 2020-10-16 广东工业大学 Mixed chaotic encryption method based on generalized Henon mapping
CN111279310B (en) 2017-10-24 2023-09-12 华为国际有限公司 Vehicle-mounted equipment upgrading method and related equipment
CN108898640B (en) * 2018-05-31 2022-05-10 吉林大学 Image encryption method based on DNA coding
CN116521210B (en) * 2023-04-18 2024-05-03 宁夏隆基宁光仪表股份有限公司 Method for upgrading firmware difference of Internet of things water meter

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014445A (en) * 1995-10-23 2000-01-11 Kabushiki Kaisha Toshiba Enciphering/deciphering apparatus and method incorporating random variable and keystream generation
US6285761B1 (en) * 1998-03-04 2001-09-04 Lucent Technologies, Inc. Method for generating pseudo-random numbers

Also Published As

Publication number Publication date
EP1360767A2 (en) 2003-11-12
WO2002047272A2 (en) 2002-06-13
CA2430858A1 (en) 2002-06-13
WO2002047272A3 (en) 2003-08-28
AU2002220534A1 (en) 2002-06-18

Similar Documents

Publication Publication Date Title
US7170997B2 (en) Method of generating pseudo-random numbers in an electronic device, and a method of encrypting and decrypting electronic data
US20040086117A1 (en) Methods for improving unpredictability of output of pseudo-random number generators
JP2005529364A (en) How to improve the unpredictability of pseudorandom number generator output
KR101246490B1 (en) A closed galois field cryptographic system
US8320557B2 (en) Cryptographic system including a mixed radix number generator with chosen statistical artifacts
US20210165633A1 (en) Protection system and method
JP2005295507A (en) Stream cipher design using rotation buffer
Abdul Hussien et al. A secure environment using a new lightweight AES encryption algorithm for e-commerce websites
Sleem et al. TestU01 and Practrand: Tools for a randomness evaluation for famous multimedia ciphers
Bhattacharjee et al. Unified GPU technique to boost confidentiality, integrity and trim data loss in big data transmission
Jallouli Chaos-based security under real-time and energy constraints for the Internet of Things
JP2004530919A (en) Method for performing mathematical operations in an electronic device, generating pseudorandom numbers in an electronic device, and encrypting and decrypting electronic data
US11070354B2 (en) System and method for generating a symmetrically balanced output
Anashin et al. ABC: A new fast flexible stream cipher
Rose KISS: A bit too simple
Loyka et al. A homomorphic encryption scheme based on affine transforms
Poojari et al. FPGA implementation of random number generator using LFSR and scrambling algorithm for lightweight cryptography
JP2004530919A5 (en)
Mostfa Kamal et al. The design trends of keystream generator for stream cipher for high immunity attacks
Younes et al. CeTrivium: A Stream Cipher Based on Cellular Automata for Securing Real-TimeMultimedia Transmission.
Kundu et al. On the Masking-Friendly Designs for Post-quantum Cryptography
Chakraborty et al. An FPGA based non-feistel block cipher through recursive substitutions of bits on prime-nonprime detection of sub-stream (RSBPNDS)
US20230195943A1 (en) Processor architecture and related techniques
Upadhyay et al. Enhancement of GSM stream Cipher security using variable taps mechanism and nonlinear combination functions on Linear feedback shift registers
Anashin et al. ABC–a New Fast Flexible Stream Cipher Specification, Version 3

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041207

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071120

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080415