JP2003500681A - 暗号テキストの分散性を高めるためにデータアレイに基数変換、論理演算及び疑似乱数ジェネレータを用いる暗号化エンジン - Google Patents

暗号テキストの分散性を高めるためにデータアレイに基数変換、論理演算及び疑似乱数ジェネレータを用いる暗号化エンジン

Info

Publication number
JP2003500681A
JP2003500681A JP2000619156A JP2000619156A JP2003500681A JP 2003500681 A JP2003500681 A JP 2003500681A JP 2000619156 A JP2000619156 A JP 2000619156A JP 2000619156 A JP2000619156 A JP 2000619156A JP 2003500681 A JP2003500681 A JP 2003500681A
Authority
JP
Japan
Prior art keywords
array
att
data
byte
bytes
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
JP2000619156A
Other languages
English (en)
Inventor
サターフィールド,リチャード,シー
Original Assignee
サターフィールド,リチャード,シー
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 サターフィールド,リチャード,シー filed Critical サターフィールド,リチャード,シー
Priority claimed from PCT/US1999/010967 external-priority patent/WO2000070819A1/en
Publication of JP2003500681A publication Critical patent/JP2003500681A/ja
Pending legal-status Critical Current

Links

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/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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/04Masking or blinding
    • 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/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

(57)【要約】 平文がブロックごとに区分され、ブロックの大きさは2をユーザが選択可能な数で累乗した大きさとされる(ステップ1)。入力ブロック中のデータバイトは、並べ替えアドレス指定でもって、M≧2として一度にMバイトずつ選択され、単一の連結データバイトCDBが形成される。CDBはランダムビット距離だけ循環(又はバレルシフト)させることによって変更される(ステップ7)。CDBはまた、循環の前後における簡単な算術/論理演算によっても変更されうる(ステップ12)。変更後、CDBはMバイトごとに区分され、それぞれのMバイトは並べ替えアドレス指定でもって出力ブロックに置かれる(ステップ4)。この出力ブロック、即ち暗号テキストは、再度入力ブロックとして用いられてもよく、この処理は新たな出力ブロックについて繰り返される。この方式はそれ自体を暗号化方法として使用することができ、或いは他のブロック暗号化方法と組み合わせて使用することもできる。後者は、ブロック化されたデータに対する他の暗号化方法の連続するステージの間、或いは他の方法の内部ステージの間にこの方式を用いることで達成しうる。ランダムな循環演算のための距離を決定するのに用いられる乱数(ステップ2)のソースは、疑似乱数ジェネレータ、サンプリングされた音楽CD、テーブル、アレイ、バッファその他のデジタルソース中のエントリであってよい。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は暗号化及び解読のための装置及び方法に関し、そこでは暗号テキスト
が生成される。より具体的には、本発明は対称秘密キー暗号化の使用に関連して
いる。本発明は、得られる暗号テキストのセキュリティを向上させる変更を含み
、また情報を暗号化するのに用いたアレイを暗号テキストの統計的分析に対して
マスク(覆い隠す)ために役立つ特徴を含んでいる。
【0002】
【従来の技術】
Man Young Rhee博士は著書である「Cryptography and Secure Communications
」(1994年マグローヒル社)の12ページにおいて次のように述べている。「膨大
な計算を行うことが許されるとした場合に、どのような暗号解読の攻撃にも耐え
ることのできる暗号化システムは、絶対的に安全である。ワンタイムパッドは、
使用時に絶対に安全な唯一の暗号である。最も注目すべき暗号の一つは、暗号テ
キストが平文と、これと同じ長さの非繰り返しキーストリームとのビットごとの
排他的論理和からなるワンタイムパッドである。しかしながら、非繰り返しキー
のサイズが大きくなるため、このワンタイムパッドは殆どの用途にとって実用的
でない。」 「RANDOM CHOICE CIPHER SYSTEM AND METHOD」と題する1992年5月12日発行の
米国特許第5,113,444号は、「第一に、乱数列は比較的不足している。第二に、
受信者は送信者が使用したのと全く同じ乱数列を手元に持っているか、或いはそ
れを再現しなければならない。これらの選択肢のうち最初のものは、莫大な量の
キー資料を共有することを必要とする。莫大な量のキー資料を共有することは非
現実的である。後の方の選択肢は不可能である。」と記載している。この記載の
第一と第二の結論は正確でない。デジタルソース(特に16ビットのサウンドフ
ァイル)のサンプリングの統計的分析が示すところでは、デジタルコンピュータ
環境においては、ランダム又は任意の数又はバイトが容易に得られる。こうした
乱数(ランダム数)の入手容易性は、暗号化技術の当業者、及び専門家の教示や
意見に反するものである。
【0003】 当業者にとって支配的な別の見方は、疑似乱数は殆どが、本来的に弱点を有す
るというものである。なぜなら、それらは式によって生成されるものであり、こ
の式を再度構築し、次いで系列中にある数を予測することが可能かも知れないか
らである。
【0004】 「SUBSTITUTION PERMUTATION ENCIPHERING DEVICE」と題する米国特許第4,751
,733号はその要約において、「並べ替え交換暗号化デバイスである。このデバイ
スは、キーの制御の下に、並べ替えと交換の連続によって、2進ワードを別の2
進ワードに変換するように適合されており...」と記載している。米国特許第4,7
51,733号により記載された、この並べ替えメモリの使用は、この特許がバイト中
のビットに対する変更のみを開示し教示しているという限定を有している。
【0005】 「CRYPTOGRAPHIC SYSTEM AND PROCESS AND ITS APPLICATION」と題する米国特
許第5,001,753号は、アキュムレータにおける循環オペレータの使用を記載して
いる。循環演算は、アキュムレータビットをメモリ位置ではなくキャリービット
に一時的に格納するために用いられ、このキャリービットは(その値に関わらず
)最終的に、その元の位置に循環し戻される。この循環演算は3欄61行から4欄
6行に詳細に説明されている。また、8ビット(1バイト)のアキュムレータを
用いたマイクロプロセッサ内部の処理も記載されている。この753号特許は、ア
キュムレータとの関連においての循環演算に限定されている。
【0006】 「RANDOM CODING CIPHER SYSTEM AND METHODS」と題する米国特許第5,113,444
号、及び米国特許第5,307,412号は、類義語及び/又は同義語を算術/論理演算
と一緒に用いてデータやマスクを組み合わせ、エンコード/デコードを達成する
ことを教示している。これらの特許は従って、類義語や同義語の使用に限定され
ている。
【0007】 「DEVICE AND METHOD FOR DATA ENCRYPTION」と題する米国特許第5,412,729号
は、クリアテキスト中のバイトを多重化するために行列演算を用いるという概念
を導入し、それによって暗号テキスト中の1つのバイトが1を超えるクリアテキ
ストバイトの要素を含むことができるようにしている。この特許は、暗号テキス
トの生成のためにデータ要素の多重使用を行うことを教えている。これは、数バ
イトを一緒に連結すること(連結に際しての順番の入れ替えを伴う)により単一
の作業要素を生成すること、得られた単一の要素を2進循環すること、及びこの
単一の要素を元の多数のバイトに分けて出力バッファに置くこと(やはり順番の
入れ替えを伴う)の組み合わせとは異なる。ある条件の下では、循環演算の効果
を表すために、行列表現を用いることができる。しかしながら、注意深く調べて
みると、循環演算の行列表現は、線形システムに伴うルールに従っておらず、従
ってこの特許とは全く異なることがわかる。この特許の方法は、幾つかの異なる
データ要素を一緒に多重化することを教示していることによって限定される。そ
こでは各々のデータ要素は1回よりも多く使用されうる。しかし本明細書の方式
は、一回に一つのデータ要素しか変更しない。
【0008】 「RESIDUE NUMBER ENCRYPTION AND DECRYPTION SYSTEM」と題する米国特許第5
,077,793号は「これらの係数を相互に素であるように選択すると、ゼロからこれ
らの係数の積引く1までの範囲にある全ての整数を一意に表すことができる。数
値処理に対するこの剰余数システムの重要性は、加算、減算、及び乗算という演
算を、係数の間での桁上げ演算の使用なしに実行可能なことにある。換言すれば
、n個組の中の各々の数字は、個別且つ並列に演算することができる。」と教示
し(3欄40行から4欄8行)、数値X及びYの和であるZについて、i番目の数
がzi=(xi+yi) mod miで与えられること、及び「16ビットの2進数は剰余数シス
テムにおいて、5つの係数5, 7, 11, 13, 17を用いて表すことができる」こと
を示している。係数(mi)は、相互に相対的に素であるように選択される。発
明の詳細な説明では5欄及び6欄において、Z=(X+Y) mod M(式中、Mは全ての
係数の積、即ちM=m1×m2...mn)がVigenere暗号を一般化したものであることを
規定している。Yを用いてXを暗号化するためにZ=(X-Y) mod Mが用いられる場
合には、XはZからX=(Y-Z) mod Mによって回復することができるが、これはBea
ufort暗号の一般化である。
【0009】 Bruce Schneier氏の「応用暗号化技術、第二版」1996年ジョンウィリー・サン
ズの305及び306ページは、Madryga暗号化法を記載している。「Madrygaは二つの
入れ子式サイクルからなる。外側のサイクルは8回繰り返され(セキュリティが
保証されるなら、より多くしてもよい)、内側サイクルを平文に適用することか
らなる。内側サイクルは平文を暗号テキストに変換し、これを平文の8ビット(
1バイト)ブロックのそれぞれに一度ずつ繰り返す。従ってこのアルゴリズムは
、平文全体を連続して8回パスすることになる。内側サイクルの1回の繰り返し
は、作業フレームと呼ばれる3バイトのデータウィンドウに演算を行う[図面の
参照は省略]。このウィンドウは繰り返しごとに1バイト進められる。(最後の
2バイトを処理する場合、データは循環しているとする。)作業フレームの最初
の2バイトは共に、可変数だけ位置を循環されるが、最後のバイトは何らかのキ
ービットとXORされる。作業フレームが進められるにつれて、全てのバイトが
順次循環され、キー材料とXORされる。順次連続される循環は、それまでのX
OR及び循環の結果と重なり合い、XORからのデータが用いられて循環に影響
を及ぼす。これにより、プロセス全体が可逆的になる。データのそれぞれ全ての
バイトが、その左にある2バイトと右にある1バイトに影響するから、8回のパ
スの後には、暗号テキストの全てのバイトは、左側の16バイトと右側の8バイト
に依存することになる。暗号化に際し、内側サイクルの繰り返しの各々は、平文
の最後から二番目のバイトで作業フレームを始動させ、平文の最後から三番目の
バイトまで循環して進める。最初に、全てのキーがランダムな定数とXORされ
、次いで左に3ビット循環される。作業フレームの下位バイトの下位3ビットは
保存される。これらは他の2バイトの循環を制御することになる。次いで作業フ
レームの下位バイトは、キーの下位バイトとXORされる。次に、上位2バイト
の連結が、可変数ビット分だけ(0から7)左に循環される。最後に作業フレー
ムは1バイトだけ右にシフトされ、プロセス全体が繰り返して行われる。」306
ページによれば、「キーと暗号テキストの2バイトの両者が右にシフトされる。
そしてXORは循環より前に行われる。」このMadryga法は、連結に先立ってバ
イトの順序をよりランダムにすること、及び循環距離の情報(それが暗号化され
ていたとしても)をデータ自体に格納しないことによって、恐らく改善可能であ
る。この方法の弱点は、連結前にはバイトの順序が変更されておらず、従ってよ
り簡単に破られることにある。
【0010】 ここでは、エンジン、デコーダ、及びエンクリプタ(暗号化装置)といった用
語は、相互に互換性のあるものとして使用する。
【0011】 ここでは相対アドレスポインタ(rap又はRAP)を、バイトのテーブル、
バイトのアレイ又はI/Oバッファ内にあるエントリを指す相対アドレス索引と
して定義する。相対アドレスがカウンタから供給される場合、そのカウンタは、
それが関連するI/Oバッファ、マスクアレイ、或いはテーブルの大きさのモジ
ュロをカウントするように構成される。アレイ又はI/Oバッファの大きさが2
の累乗長である場合には、相対アドレスポインタを供給するために、通常の2進
カウンタを普通に用いることができる。
【0012】 ここではアドレススクランブルを、加算(又は減算)値、マスク値又はテーブ
ルルックアップ値によるXOR(排他的論理和)の何らかの組み合わせの使用を
通じて値が変化するようにし、スクランブルされた(混ぜられた)相対アドレス
ポインタ(srap又はSRAP)が生成されるような相対アドレスポインタ(
RAP)の変更として定義する。
【0013】 ここではアドレス変換テーブル演算を、ATT演算として定義する。これは、
相対アドレスポインタ(RAP)をスクランブルされた相対アドレスポインタ(
SRAP)に変換することを意味している。
【0014】 ここでは、ATTエントリ、又はATTブロックエントリ、又はATTブロッ
クを、大きさが2Nで0から2N−1の値を有する、相対アドレスポインタ又は変
更された相対索引値のテーブルとして定義する。他の大きさのATTブロックエ
ントリは、2の非累乗XORn及びATTブロックエントリモジュロ演算に使用
できる。例えば1014エントリのATTブロックは、XORn(13を基数とする)
及び1014のモジュロ演算を用いる。各々のATTブロックは、その範囲内に一意
の値は1つだけしか持たない。ダブっているエントリ値はなく、従ってATTブ
ロックは、米国特許第5,113,444号又は米国特許第5,307,412号の何れに定義され
た類義語とも全く異なる。なぜなら同義語や二重エントリを存在しないからであ
る。I/Oバッファやマスクアレイの大きさは、それらについて用いられるAT
Tブロックエントリの整数倍でなければならない。従って、I/OのためのAT
Tブロックエントリが1000あったとすると、I/Oバッファの大きさは1000バイ
トの整数倍でなければならない。マスクアレイの大きさが64Kであったとすると
、それらのためのATTブロックエントリの大きさは、64K以下の2の累乗でな
ければならない。3バイト(24ビット幅)の算術/論理演算が選択される場合に
は、1014というバッファサイズは面白い。
【0015】 ここではATTコラムを、一度に一つが使用される1以上のATTブロックの
集合として定義する。従って、多数のATTブロックの集合は全て同じエントリ
を、恐らくは異なる順序でもって含んでいるが、それらは米国特許第5,113,444
号又は米国特許第5,307,412号の何れかに定義された同義語のテーブルではない
。またこれらのATTブロックは、相対アドレスポインタの値を変更するために
用いられ、これらの米国特許で行われているように暗号化又は解読するデータを
変更するために用いられてはいない。
【0016】 ここにおいてATTNは、ATTコラムにあるATTブロックの数である。こ
こにおいてATTSIZEはATTコラム内のATTブロックの大きさであり、ATT BAS
EはこのATTブロックの大きさについて用いられるXORnマスク演算につい
ての基数の数である。ここにおいてATTBは、ATTコラム内で用いられてい
るATTブロックエントリの数(0からカウントアップされる)である。ここに
おいてアドレス変換テーブルは、1以上のATTコラムからなる。
【0017】 ここでは複数バイトフェッチ(MF)を、マスクアレイ、テーブル又はバッフ
ァからの、2以上のバイトに対するアクセスであって、これらの回復されるバイ
トの論理的な連結からなる単一の要素を生成するものとして定義する。ここでは
MFは、複数バイトフェッチ演算を示す。
【0018】 ここでは脱連結又は分離を、先に個々のバイトを連結することによって生成さ
れた単一の複数バイト幅のエンティティを、もとの個々のバイトへとばらばらに
することとして定義する。
【0019】 ここでは複数バイトプット(MP)を、バイトの論理的連結を2以上の個々の
バイトへとばらばらに、即ち分離し、それらをテーブル又はバッファに配置する
こととして定義する。
【0020】 ここではバイトを、2ビット以上の任意の長さのものとする。
【0021】 ここではバレルシフタを、シフトレジスタの何れかの端からシフトして出され
る何らかのビットが、同時にそのシフトレジスタの他方の端にシフトして戻され
るように配置されたシフトレジスタとして定義する。このプロセスにおいて、追
加、喪失、又は変更される情報はない。バレルシフタはまた、簡単なラッチレジ
スタと、このラッチの入力に対する多数のセレクトを用いて構成することができ
、どのような大きさの循環を行うについても1クロック周期しか必要としないバ
レルシフタが生成される。循環はまた、殆どの一般的なCPUの内部にあるレジ
スタで実行することもできる。通常は、この動作を行うCPUに固有の命令があ
る。
【0022】 ここではワード、循環、回転動作、又は循環演算は、バレルシフト動作を参照
したものである。
【0023】 ここではエンコーダパス、即ちPASSは、クリアテキストのブロックを中間
テキスト又は暗号テキストのブロックにエンコードすること、或いは暗号テキス
トのブロックを中間テキストにデコードすることを意味するものとして定義され
る。
【0024】 ここではBCNを、ある数を2進数から基数n変換し、この基数nの数を2進
数で示された数値で表すこととして定義する。一般的な例は(基数10)はBCD
であり(2進コード化10進数)、そこでは0から9までの値が4つの2進ビット
で表される。
【0025】
【発明が解決しようとする課題】
本発明の課題は、暗号化/解読プロセス及び装置に用いられる、乱数、疑似乱
数及び任意数のソースを提供することである。
【0026】 本発明の課題は、より小さな要素から単一のデータ要素を生成するのに用いら
れる連結演算を提供することであり、この単一のデータ要素は変更後、再度より
小さな要素へと分割されるが、これらより小さな要素の各々は一度しか使用され
ない。
【0027】 本発明のさらに別の課題は、類義語や同義語の使用を排除することである。
【0028】 本発明のなお別の課題は、ユーザ間で安全に転送される情報データが並べ替え
られシフトされる、暗号化/解読装置及び方法を提供することである。得られる
情報は次いで、ランダム、疑似ランダム又は任意ソースからのマスクデータと組
み合わせられ、さらなるセキュリティのための、レベルの異なる暗号化/解読が
もたらされる。
【0029】
【課題を解決するための手段】
上記の課題は、入力データを暗号化し解読する、アドレスポインタスクランブ
ラ、バイト連結器、バレルシフタ、及び分離器を提供する暗号化装置及び方法に
よって達成される。
【0030】 本発明が提供する暗号化/解読方法においては、2進データは、バイトを連結
(順番を並べ替えて)して単一のデータ項目を形成すること、このデータ項目を
任意の量だけ循環シフトさせること、及びデータ項目を個々のバイトへと(順番
を並べ替えて)戻す分離演算又は脱連結演算の組み合わせを、多数回適用して使
用することを通じて暗号化される。この方法及び装置はまた、この処理の間にお
けるデータの算術的/論理的な変更を行うことができる。
【0031】 他の好ましい実施例が、上記した装置に加わってくる。長さNの1又は2のマ
スクアレイM1及びM2、任意バイト(RDT)のランダムデータのテーブル、
追加的な多ビット幅の循環演算、内部カウンタ及び制御変数などであり、これら
はデータの変更及び相対アドレスポインタの変更を指令し、制御する。
【0032】 送り手と受け手は前もって、並べ替え方式、即ち並べ替え方式のソースについ
て合意しなければならない。そして使用する場合には、マスクバイトに用いられ
るソース、及びこれらのソースをどのようにサンプリング及び/又は結合して、
メッセージの暗号化及び解読に用いるマスクバイト、テーブル、変数、カウンタ
及びポインタを生成するかについての合意がなければならない。
【0033】 エンコード又はデコードは、クリアテキストメッセージに対する1回以上のパ
スからなり、これはアドレススクランブル(順序の並べ替え)を伴っての入力バ
ッファからの複数バイトフェッチ(MF連結)、単一の要素(連結により生成さ
れた)の任意量だけの循環、及びアドレススクランブル(順序の並べ替え)を伴
っての出力バッファへの複数バイトプット(MP分離)、の組み合わせを伴う。
【0034】 先の段落に記載した方法に対しては、論理的/数学的なデータ変更や、マスク
アレイから回復した値に対する循環演算の使用などを追加して行うことができる
。マスクアレイから回復したバイトに対する循環オペレータの適用は、マスクア
レイの有効統計的サイズをNから8Nへと増大させる(8ビットバイトとして)
。従って、組み合わせてなるマスクアレイの有効な統計的サイズは、64N2へと
増大する。この組み合わせによる有効サイズは、ALV変数中の他方の制御ビッ
トの効果を考えれば、64N2以上に増大することになる(図4A参照)。加えて
、マスクアレイからアドレススクランブルを伴う複数バイトフェッチ(MF)を
導入すると、エンコーダは、データ全体にわたるパスの各々がそれぞれ別個のマ
スクアレイのセットを有するかのように動作し、それによって暗号テキストのセ
キュリティが高められる。
【0035】 本発明の興味ある側面は、アドレススクランブル機構と、I/OバッファA及
びBから、及び2つのマスクアレイから選択されたアドレスの順序を並べ替える
ための、アドレス変換テーブルエントリ(ATTコラム及びATTブロックエン
トリ)の使用にある。この方式は、ATTコラムエントリを生成するために、完
全な乱数を必要としない。平文を含めて、どのようなデジタルソースを用いても
構わない。
【0036】 本発明の別の側面は、ATT演算に適用されているオフセットやマスクの使用
を通じて同じATTブロックエントリから、スクランブルされた相対アドレス指
定ポインタの異なるシーケンス(SRAP値)を発生するという、ATT機構の
融通性にある。
【0037】 この方式は、異なる大きさのATTコラムエントリを用いることもできる。例
えば4KBの入力バッファは、4つの異なる1KBのATTコラムブロックエン
トリをソースとする(データフェッチを受ける)ことができ、別の単一の4KB
のATTコラムブロックエントリを用いて書き出しを行うことができる。唯一の
制約は、ATTブロックの大きさが、アクセスされているバッファ又はテーブル
の大きさを超えられず、バッファがATTブロックの大きさの整数倍でなければ
ならないことである。
【0038】 ここではXORn(XOR+及びXOR−)は、次のように定義される排他的
論理和演算(基数n)を記述する。数A及びBが基数nとして(m桁について)
次の通りであるとすると、
【0039】
【数1】
【0040】 基数2については、XORnは標準的なXOR演算と同じである。2進数をj
桁(基数n)に変換することは、この数を連続的にnで除算することによって行
われ、各々の除算の剰余がi=0からj−1についてのi番目の数値となる。あ
る数(基数n)の桁の数値は、和=0にセットし、i=j−1から0について和
=(和×n)+i桁の数値を実行することによって2進数に変換し戻される。
【0041】 式1はXOR+を用いたVigenere暗号の一種であり、式2はXOR−を用いる
Variant Beaufort暗号である。これら二つの暗号は、2進数から基数nの数への
変換により得られた桁の数値に対して適用され、その後元の基数の数へと再度変
換することは、ここでは基数nの数をXORする(XORn)として定義する。
【0042】 任意数及び乱数は、普通のデジタル処理によって生成される。CD−ROMで
提供されるデジタル化された音楽は殆どが、44.1キロヘルツの割合でサンプリン
グされた16ビットのステレオである。これは1分当たり、約10.5メガバイトを生
成する。これらのうち約半分、即ち約5メガバイトを任意データバイトとして使
用することができる。音楽を構成しているデジタルデータストリームを読み込み
、音の最初の8ビットを捨て、下位8ビットだけをサンプリングして任意数又は
乱数を生成することにより、適当にランダムなデータバイトが発生される。得ら
れたデータバイトストリームのフーリエ解析によれば、何ら特定のパターンは示
されなかった。留意しなければならないのは、静かな楽節は避けるべきだという
ことである。曲のすべてのバイトを順番に取っていくことが望ましくない場合に
は、n番目のバイトごとを用いると、nが11から17の間の小さな値の場合に非常
に良好である。音楽CD−ROMに固有のエラー訂正は完全ではなく、ユーザは
CD−ROMフォーマットをWAVE(.WAV)ファイルフォーマットに変換
し、次いでこのWAVE(.WAV)ファイルをモデム、大容量リムーバブルド
ライブ、デジタル磁気テープカートリッジの何れかにより、或いはWAVE(.
WAV)ファイルを含むデジタルCD−ROMを作成することによって、誰かに
送信する場合もあり得ることに留意されたい。
【0043】 デジタル的なランダムさの別のソースは、やはり下位バイトに着目して、フォ
トCD−ROMからの幾つかの画像を画素ごとに変更(XOR、加算、減算)す
ることである。コンピュータのジップファイル(.ZIP)その他の圧縮ファイ
ルフォーマットを用いることができる。
【0044】 他の好ましい実施例では、暗号化のために用いられたバイトストリームを再構
築するのを少なくするために、デジタルソースの知的サンプリングを有利に用い
ることができる。加えて、デジタルソースをその使用前に変化させるために、暗
号化及びハッシングアルゴリズムを使用することができる。さらに、テーブル、
アレイ、及び/又はマスクのための疑似乱数の変更も、好ましく用いることがで
きる。
【0045】 エンコーダにおいては、RDTから8ビットバイトを回復するために、汎用ポ
インタGeneral Pointer(GP)が用いられる。General Pointerは使用されるた
びに、RDTからバイトを回復した後、その値がインクリメントされる。Genera
l PointerはRDTの長さのモジュロだけインクリメントされる。
【0046】 このエンコード方式に対して事前又は事後の循環演算を付加すると、暗号化さ
れたもののセキュリティが向上する。好ましい実施例では、32ビットの算術/論
理演算が用いられるが、これは入力バッファから一回に4バイトのデータをフェ
ッチし、我々の出力バッファに対して4バイトのデータとして書き戻さねばなら
ないことを意味している。これらの4バイトは、1から31ビットの間の任意の数
だけ、左又は右に循環させることができる。通常、ゼロ又は8の倍数は循環値に
は用いられない。
【0047】 インタフェースがエンコーダに対するゼロ循環値を受け取った場合には、エラ
ーメッセージが返されるが、このゼロ循環値は指定された循環距離変数(MRV1,
MRV2, RV1又はRV2)にロードされる。エンコーダの動作中に、RDTからのバイ
トの回復(General Pointerを介して)によって(或いはRDTと他のテーブル
又はマスクアレイバイトエントリとの算術的/論理的組み合わせによって)ゼロ
循環値が得られた場合には、General Pointerの値、又は他のポインタの値がイ
ンクリメントされ(それぞれの長さのモジュロだけ)、非ゼロの結果が得られる
まで、回復プロセスが繰り返される。説明を簡単にするために、このエンコーダ
にはGeneral Pointerしか示していない。別の好ましい実施例では、変数は各々
、個々に独自のソースポインタを有している。これらのポインタは、使用される
1以上のテーブル又はマスクアレイ内部における位置を示し、またこれらの回復
したバイトの値をどのように組み合わせて、変数、カウンタ又はポインタの値を
更新するためのバイトをエンコーダに供給するかを示す。加えて、インクリメン
トモード以外のアドレス指定モードを使用することができる。この場合、テーブ
ルに対する個々の相対アドレスポインタは、+1でない値だけインクリメントさ
れ、或いは相対アドレスポインタの次の値は、バイトアレイ又はテーブルに現在
入っている1以上のエントリから計算され、あちこちに飛ぶポインタを生成する
ことができる。1つのGeneral Pointerから個別のソースポインタに展開するこ
とは、当業者にとって実施困難な事項ではない。
【0048】 別の好ましい実施例では、選択可能な数だけのポインタが、ユーザインタフェ
ースからエンコーダに対して送られた情報によって決定される手法により、変数
に対して割り当てられる。エンコーダの変数及びカウンタに対するポインタの割
当を変更することにより、同じクリアテキスト、同じRDT、及び同じマスクア
レイから、異なる暗号テキスト出力を生成することができる。
【0049】 位置的なスクランブルが望ましくない場合には、EVC2にあるATT Modeビッ
トのそれぞれを11(3の2進数)にセットし、或いはエントリが順次の順番にな
っているATTブロックエントリを生成し、ATT Offset及びMask値として0を用
いることにより、入力RAPと同じSRAPとすることができる。
【0050】 また図示を簡単にするために、各々の変数に組み合わせられる個々のカウンタ
は省略している。全ての好ましい実施例について、これらのカウンタが存在する
ことが了解されるべきである。手短に言うと、エンコーダ制御変数ALV, RV1, RV
2, MRV1及びMRV2に組み合わせられるエンコーダカウンタについて、4バイトの
フェッチ(1MF)又はプット(1MP)の各組が、1カウンタデクリメント動
作とみなされる。ATT演算のATTSIZEの各々(1つの全ATTブロックエント
リの利用に等しい)は、そのATT演算に関連する全てのATT変数についての
1カウンタデクリメント動作とみなされる。カウンタ動作の詳細は、図2Cに関
する記述において説明される。
【0051】 本出願では、Data Modifier(DM)の具現化は、基数2のシステムを用いた
算術/論理演算を示す。他の好ましい実施例は、基数2に限定されるものではな
い。それらの具体化には、データパス中のXOR演算に対する僅かな変更を必要
とする。別の好ましい実施例では、マスク値の補数を取ることが、マスク値の否
定を取ることに置き換えられる。別のエンコーダ制御変数ECV、或いは通常の
変数(及び関連するカウンタ)を使用することを通じて、回復されたマスクアレ
イ値は、補数を取ること、否定を取ること、ハッシング、又はBCN桁数値(基
数n)への変換の何れかによって変更することができる。加えて、ALVを2バ
イトに拡張するとデータの否定が可能になり、またXORn(2の累乗でない)
の使用といった他のA/Lオプションへの拡張が可能になる。第二のALV演算
とカウンタ(ALV2及びALV2C)を用いる別の好ましい実施例は、MF値(マスク
アレイ及びデータ)、中間又は最終の変更データ要素がビット反転されるか否か
を示すビットを含む。他の好ましい実施例は、現在DMユニットにあるデータを
変更するために、先に変更されたデータを使用する(直接に、又は追加的なMF
演算を介して)ことを許容する。こうした変更には、循環、ビット反転、データ
又はマスク要素内部でのビットのスワップ、並びに算術/論理演算の適用が含ま
れる。
【0052】 RDTはパスワード文字列(米国特許出願08/336,766号に先に定義されている
如き)中のキャラクタを置換し、回復されたバイトは次いで算術/論理演算及び
循環演算の順序を制御すると共に、エンコーダ内部でのこれらの演算の帰還を制
御するカウンタ値を提供する。
【0053】 General Pointer、アレイ1ポインタ(Array #1 Pointer)、アレイ2ポイン
タ(Array #2 Pointer)についての開始オフセット値、並びに変数、カウンタ、
マスク又はオフセットについての他のいかなる初期値も、パスワード文字列(Pa
ssword String)、ハッシング又は他の数学的機能、及びGPを介して回復した
値の何らかの組み合わせによって得ることができる。GPのためのデフォルト開
始値は、RDTの始まり(RAP=0)と仮定される。
【0054】 32ビット演算の選択は任意のものであり、所望ならば16ビット、24ビット、又
は64ビットといった他の大きさで実行することができる。別の好ましい実施例で
は、2バイト即ち16ビットの算術/論理演算と循環演算が用いられる。図4Cに
示す好ましい実施例では、付加的な循環演算が第一と第二の算術/論理演算の間
に挿入されている。この循環演算、及び事前又は事後の循環演算はまた、値又は
マスクアレイを統計的プロセスによる検出からさらに隠蔽するという効果を有す
る。
【0055】 並べ替えアドレス指定(ATT演算)を伴う個々のバイトのフェッチ及びプッ
トを使用すると、あるバイトのビットが循環演算によって分割され、I/Oバッ
ファにある別のバイトに移されたならば、別の処理パスの間の後続のI/O動作
によって、それらのビットが元のバイトへと戻されることは考えにくい。バイト
中のビットを別のバイト(又はセグメント)へと分散させるための以下に示す式
は、いったんビットがバイトから移動されたなら、それらがそのバイトに戻され
ることはないであろうという仮定を用いて、統計的シミュレーションから導かれ
たものである。この仮定は、図8によって示される情報の根底にある。
【0056】 図8は、実行されるスクランブル/循環パスの数の関数として、元の8ビット
バイトを含む8ビットセグメント(バイト)の最小、平均、及び最大数を示して
いる。プラス又はマイナス1から7位置の循環だけが許されるようにシミュレー
タが構築され、ビットがひとたび別のバイトに移動されたならば、その別のバイ
トは元のバイトとは別個のものとして扱った。循環機能(アドレススクランブル
を伴う)の7パスの後に、元の8ビットを含むバイトの最大数は8である。これ
は、各々の循環が各パスで1ビットを分離する結果である。明らかに、これはそ
れほど頻繁には生じていない。7パスは平均して5.6という結果を有し、元の8
ビットが5から6の他のバイトにわたって分散されたことを意味している(図8
参照)。
【0057】 Pパス数の関数としての、元のnビット幅のバイトを含んでいるセグメントの
平均数は、次式によって近似される。
【0058】
【数2】
【0059】 最初、循環演算はnビットのデータバイトを二つの部分に分割する効果を有す
る。小さい方の部分(SP)の大きさは式4によって与えられ、大きい方の部分
(LP)は式5によって与えられる。
【0060】
【数3】
【0061】 循環演算は、各々のPASSについて、バイトを最大で二つの部分に分割でき
るだけである。'729号米国特許は、分割の程度(データ多重化)は行列の大きさ
と、使用される行列のそれぞれにある整数エントリの数によってのみ限定されて
いる。式4及び式5は、nがバイト幅に等しい最初の循環パスについて良好に働
く。
【0062】 図8に示すように、元の8ビットが分散されるバイトの数は、実行される追加
パスの各々と同じ割合で増大するわけではない。これは、バイト当たりの「マー
クされた」ビットの数が減少すると、何らかのランダムな循環が必ずしも、ビッ
トをバイト境界を越えて分割するとは限らないからである。しかし図8から明ら
かなことは、こうした多重パス又は循環をアドレススクランブルと組み合わせる
と、バッファ内部でバイト中のビットを多数のバイトにわたって分散するのに非
常に有効だということである。事実、暗号化されたデータそれ自体を分散媒体と
して使用して、それにより別個の点在化機構に対する必要性を排除することがで
きる(米国特許第5,307,412号及び第5,113,444号参照)。このデータ変更はまた
、暗号解析がRDTや、マスクアレイの何れかの内容をもたらす可能性を低減さ
せる。
【0063】 このエンコーダは対称秘密キー暗号化法を使用しており、メッセージの送り手
と受け手は共に前もって、どのようなソースを使用するか、またそれらのソース
をどのようにアクセス及び使用してATTエントリ及び他の内部テーブル、マス
クアレイ、カウンタ、変数及びポインタを構築するかを決定しておかねばならな
い。
【0064】 他の好ましい実施例では、暗号化に用いるバイトストリームの再構築を減らす
ために、デジタルソースの知的サンプリングを有利に用いることができる。加え
て、デジタルソースをその使用前に変更しておくために、暗号化及びハッシング
アルゴリズムを使用することができる。さらに、テーブル、アレイ及び/又はマ
スクのための疑似乱数の変更も、有利に用いることができる。
【0065】 I/Oバッファにアクセスするための有効なアドレススクランブル方式との組
み合わせでの、任意の循環演算の使用は、このエンコーダによって生成される暗
号テキストのポリアルファベット暗号解析を妨げる手段を提供する。
【0066】 他の課題、特徴及び利点は、添付図面との関連において参照される、本発明の
好ましい実施例についての以下の詳細な説明から明らかなところである。
【0067】
【発明の実施の形態】
図1は、エンコーダ/デコーダエンジンの基本的なブロック図である。ユー
ザインターフェース1は、ユーザとの情報のやりとりを行うためにコントローラ
6によって使用される。通信バス20は、ユーザインターフェースとコントロー
ラとの間で情報を転送するために使用される。コントローラは、tエンコーダの
ために一般的なハウスキーピングの細部を管理する。コントローラは、さらに、
マスクアレイ13及び14、ランダムデータテーブル(RDT)2、パラメータ保
存テーブル3、アドレス変換テーブル4、データモディファイア7、及びI/Oバ
ッファ15または16にデータバイトを配置するように、または、以前のI/Oバ
ッファからデータバイトを読み戻すように、コントローラに命令するユーザイン
ターフェースからコマンドを取り出す。
【0068】 エンコーダ制御変数♯1(ECV1:図2A及び2C参照)の2進ステータスビッ
トBUFSET(図2C参照)は、2つのI/Oバッファのうちのどれを入力及び出力用
に指定するかを決定する。BUFSEL=0の場合は、A I/O バッファ(I/O-A)15
6が入力バッファであり、B I/Oバッファ(I/O-B)が出力バッファであり、こ
こから、情報が取り出されて、コントローラへのライン57、そして、ユーザイ
ンターフェースへのライン20を介してユーザに送られる。BUFSEL=1の場合は
、I/O-Aが出力バッファであり、I/O-Bが入力バッファである。I/Oアドレスと制
御ライン56及び57は、I/O-A及びI/O-Bへデータバイトをロードし、及びそれ
らからデータバイトを読み出すためにコントローラによって使用される。
【0069】 I/O、アドレスライン32及び制御ライン37は、マスクアレイ♯1(MA♯
1)13とマスクアレイ♯2(MA♯2)14にそれぞれデータバイトを送るた
めに使用される。同様に、ライン21は、ランダムデータテーブル(RDT)にデ
ータバイトをロードするために使用される。
【0070】 RDTは、バイトの大きなテーブルであり、そのバイトのいくつかは、ライン2
6を介してデータモディファイア7に定期的に送られて、データモディファイア
(DM)に方向及び制御情報を供給する。汎用ポインタ(General Pointer(GP)
:図2A参照)は、どのバイトをDMユニットに送るかを指定するRDTへのRAPであ
る。GPによる各アクセスの後には、GPの値はインクリメント(増分)される
(RDTの長さのモジュロ)。従って、RDTは、米国親特許出願08/336,766号におい
てパスワード列により既に提供されている方向及び制御機能を有し、それを拡張
したものである。
【0071】 1〜16までのパス番号(PN)は、コントローラ内に常に維持されているカウ
ンタ値である。これは、どの処理パスが実行されているか、どこにパラメータを
記憶するか、及び、DMが処理パスについて必要とするであろう他の情報を示すた
めに使用される。ユーザは、また、コントローラに送られた情報によって、I/O
バッファロード当たりいくつの処理パスを実行するかを決定する。
【0072】 エンコーダ内の各エンコードパスによって使用されるパラメータ(ポインタ、
変数、カウンター等)を、コントローラから直接I/O、アドレス及び制御ライン
23を介するか、または、データモディファイア7から直接、別のI/O、アドレ
ス及び制御ライン27を介するか、という2つの手段のうちの1つによってパラ
メータ保存テーブル(PST)にロードすることができる。後者の場合は、パラメ
ータを先ず、DMにロードし、次に、DMからPSTに保存しなければならない。適切
なPN情報が、コントローラにより供給されて、当該情報が、PSTの適正なセクシ
ョンに記憶される。PSTは、通常、16組までのパラメータを保持しているが、
この数は任意であり、その値は実施中に変更することができる。PSTは、1つの
パスに対するI/Oバッファを処理した後、エンコーダが、データモディファイア
7のパラメータの状態を保存し、次の処理パスのために以前に保存されたデータ
モディファイアのパラメータを再ロードする場所である。従って、入力バッファ
と出力バッファの指定は、各処理パスの後で交換される。処理パスの後、BUFSEL
は補完されない(または補数をとられない)ため、それは、完全な暗号文を保持
する出力バッファを正しく指示するということに留意されたい。
【0073】 アドレス変換テーブル(ATT)4は、MA31、MA32、I/O-A及びI/O-Bにアクセス
するためのSRAPを計算するために4つのATTプロセッサ(5A、5B、5C、5
D)によって使用される1つ以上のATTカラム(ATT列)を保持する。ATTカラム
は、エンコーダの外部で計算され、ユーザインターフェース2、ライン20、コ
ントローラ、I/Oアドレス及び制御ライン24を介してATT内にロードされる。
【0074】 全てのテーブル、I/Oバッファ及びマスクアレイが作成されると、コントロー
ラは、パスカウンタをP=1にセットし、DMに、そのパラメータをPSTから27
を介してロードし、入力バッファを処理するよう命じる。
【0075】 先ず、ライン28a〜28dを介してDMは、MA31 RAP(アレイ31ポインタ、図
2A)を、M1 ATTプロセッサに送り、MA31から取り出される最初の8ビットバイ
トについてSRAPを取り戻す。SRAPは、36aを介してMA31に送られ、アレイ♯1
ポインタ値がインクリメントされる。MA♯1から取り出されたバイトは、33を
介してMF♯1に送られる。これがさらに3回繰り返された後には、MF♯1は、3
2ビット幅の値(M1、図4A)を有しており、これは、34を介してDMユニット
に送られる。同様に、ライン29a〜29dを使用してM2 ATTプロセッサ5Bに
よりSRAPに変換されるMA♯2(アレイ♯2ポインタ、図2A)に対するRAPにつ
いて処理が開始され、SRAPは、41aを介してMA♯2に送られ、アレイ♯2ポイ
ンタ値がインクリメントされる。生成されたMA♯2からのバイトは、38を介し
てMF♯2に送られる。ここでも、この処理が3回繰り返され、その結果生成され
た32ビット幅値(M2、図4A)は、39を介してDMユニットに送られる。次に、
入力バッファRAP入力ポインタ(RAP Input Pointer:図2A)が30aと30d
を介して入力ATTプロセッサに送られ、結果として生成されたSRAPは、140を
介してI/Oバッファ選択ロジック(BSL)12に送られ、ここで、46aを介して
入力I/Oバッファに送られ、入力ポインタ値がインクリメントされる。BUFSEL=
0の場合は、BUFSELは、I/O-Aバッファが入力SRAPを受け入れることができるよ
うにする。I/O-Aは、1バイトの平文(または、次のパスにおける中間テキスト
)をBSLへの53を介してMF♯3に送り、次に、41を介してMF♯3に送る。再
び、32ビットのデータがI/Oバッファから取り出されるまで、この処理が3回
繰り返される。32ビット入力データバイトは43を介してDMユニットに送られ
る。DMユニットは、エンコーダ変数及び操作の制御下、取り出した2つの32ビ
ットマスクバイトM1及びM2(図4A及び図4C参照)を32ビット幅入力データ
バイト(図4B及び図4C)と組み合わせて32ビット幅の出力データバイトを
形成する。32ビット幅出力データバイトは51を介してMP♯1に送られる。
同時に、出力ポインタ(Output Pointer:図2A)RAPが141を介してBSLに送
られ、次に、47aを介して出力I/Oバッファ(I/O-B)に送られる。出力SRAPは
、47Aを介してI/O-Bに行き、NOT(BUFSEL)によりバッファが書き込みイネー
ブルになる。MP♯1は、32ビット幅入力データ入力を一連の4つの8ビット
バイトに分解する。各バイトは、49を介してDMから出力I/Oバッファに送られ
、このバッファに書き込まれる。MP♯1処理は、4つの全てのバイトが、I/O
バッファに書き込まれるまで、(1回ごとに新しいSRAPを使用して)さらに3回
繰り返される(図4A、4B及び4C参照)。この4つのバイトの読み出し及び
書き込みによって、DM機能に関連する全ての非ATTカウンタが1回デクリメント
(減分)される。任意の変数カウンタが0にデクリメントされると、ECV1とECV2
のステータスフラグ(図2C参照)に応じて、GPを使用して新しい値でカウン
タを更新すること、あるいは、GPを使用して変数に対して新しい値を取り出す
こと、ができる。I/OバッファのATTブロックエントリの処理が完了したときのみ
、そのバッファに対するATTカウンタが1回デクリメントされる。
【0076】 入力バッファ内の全てのバイトが出力バッファまで処理されると、DMユニット
は、27を介してそのパラメータの値をPSTに保存する。パスカウンタ値Pはイ
ンクリメントされ、最後のエンコーダパスに到達しなかった場合には、DMは、2
7を介してPSTから(次のパス用の)パラメータを再ロードし、新しいP値を使
用して、BUFSELの値を補完し(または、BUFSELの値の補数をとり)、新しい入力
バッファを処理する(以下、「補完する」とは、「補数をとる」の意であるか、
あるいは、「補数をとる」の意味を含む)。(既に)最後のエンコーダパスが処
理されていると、出力バッファの内容(暗号文)が、57を介してコントローラ
に送られ、20を介してコントローラからユーザインターフェースそしてユーザ
へ送られる。この時点で、処理が再始動され、Pが1にセットされ(P=1)、
BUFSEL=0とされ、平文(クリアテキスト)の新しい入力バッファがロードされ
る。平文のバッファの全てを利用できるわけではない場合には、入力バッファの
残存しているエントリをランダムなバイト値で充填しなければならない。
【0077】 ED(図2Cの60参照)の値が0か1かに関係なく、エンコーダ内のフローは
同じである。実際、操作を反転することができ、暗号解読モードでエンコーダを
動作させることにより暗号化を行うことができるが、この場合、暗号解読には、
暗号化モードでエンコーダを動作させることが必要となる。
【0078】 図2A及び2Bは、情報のバッファリングを適正に処理するために、DMがロー
ドしておく必要があるパラメータのリストを示す。
【0079】 ECV1及びECV2は、エンコーダ制御変数であり、これらのビットは、DM(図2C
参照)に制御情報を提供する。
【0080】 ALVは、算術/論理制御変数である。ALVは、DMに対して、フェッチしたアレイ
値をどのように変更すべきか、及び、それらを入力バッファからフェッチしたデ
ータとどのように組み合わせるべきかについて指示する。
【0081】 RV1、RV2は、第1及び第2の循環(回転)変数である。それらは、エンコーダ
に対して、ローテータが(左または右に)いくつのビットだけデータを変化させ
る必要があるかを知らせる。MRV1及びMRV2は、取り出されたマスクアレイ値に対
する循環値である。詳しくは図4Aを参照されたい。2つのマスクアレイからフ
ェッチされた値に対するMRV1及びMRV2循環(回転)操作の合同作用により、実質
上のアレイの統計的組合せサイズは64N2まで増加する。これは、組合せサイ
ズを増加させる他の任意の機能が考慮される前においてである。
【0082】 汎用ポインタ(GP)は、RDT内のエントリを指示し、そこから、ランダムデ
ータの次のバイトが取り出される。全てのバイトがGPを介して取り出された後
に、GP自体がインクリメントされる(RDTの長さのモジュロ)。本出願で示す
簡略化した形態では、1つだけのGPが、全ての変数、カウンタ、マスク及びオ
フセットを更新するために使用される。ユーザは、前もって、DM内で使用される
カウンタのサイズを決定しておく必要がある。例えば、わずか1バイトのカウン
タを使用する場合には、最大のカウンタサイズは(変数について)256である
。2バイトを使用する場合には、最大カウンタサイズは65536であり、以下
同様である。2バイトが決定された場合には、カウンタを更新する必要が生じる
たびに、GPを2回アクセスしなければならない。ポインタ値は、それらの各テ
ーブル、アレイまたはバッファ用の完全な相対アドレス空間を収容するのに十分
広いものである必要がある。
【0083】 同様に、入力ポインタ、出力ポインタ、アレイ♯1ポインタ及びアレイ♯2ポ
インタを使用して、RAPを各ATTプロセッサに提供し、情報のバイトを取り出す位
置を示すために使用されるSRAPを取得する。アレイ♯2ポインタを除いて、各ポ
インタは、それぞれが使用された後に1回インクリメントされる。アレイ♯1ポ
インタのRAPが0にラップアラウンドすると、アレイ♯2ポインタは、再度イン
クリメントされるということに留意されたい。これにより、マスクアレイポイン
タはインクリメントされ、それらの組合せ使用が最大化される。
【0084】 M1、M2、入力及び出力ATTプロセッサの各々について、以下の変数、カウンタ
、マスク及びオフセットが使用される。それらは、ATTカラム番号(ATT Column
Number)、ATTブロック番号(ATT Block Number)、オフセット♯1(Offset♯
1)、マスク♯1(Mask♯1)、オフセット♯2(Offset♯2)、マスク♯2(
Mask♯2)である。さらに、ATTカラム番号の各々には、その列についての変数A
TTN及びATTSIZEが含まれる。ATTNは、列に含まれるATTブロックエントリの数で
ある。ATTカラム内の全てのATTブロックのサイズは同じでなければならない。AT
TSIZEは、そのATTカラム番号についてのATTブロックエントリのサイズの2のべ
き乗である。例えば、ATTブロックエントリが1024のエントリ(0〜102
3まで任意の順)を含む場合、ATTSIZEの値は、210=1024なので10であ
る。また、ATTブロックサイズは、これと共に使用されるバッファ、テーブルま
たはアレイのサイズより小さいかまたは等しくなければならない。ATT処理につ
いては、図3Cに関連して、後でより十分に説明する。
【0085】 パラメータ領域の最後は、カウンタに対する初期値が保存されるセクション(
図2Bでオプションと表示されている)である。これらの初期値は、そのカウン
タに関連するモードビットが、カウンタが0までデクリメントされた後にカウン
タを再ロードするためにセットされる(より詳しくは図2C参照)場合に、使用
することができる。
【0086】 図2Cには、制御バイトECV1及びECV2内のビット、並びに、循環変数であるRV
1、RV2、MRV1、MRV2のフォーマット、及び、ALV変数内の制御ビットについて詳
しく示している。
【0087】 ECV1の内部で、BUFSELは、どのI/Oバッファが入力バッファであり、どれを出
力用に選択するかを決定する。BUFSEL=0の場合は、I/O-Aが入力バッファであ
り、I/O-Bが出力バッファである。BUFSEL=1の場合は、I/O-Bが入力バッファで
あり、I/O-Aが出力バッファである。BUFSELは通常、エンコーダパス操作の間に
補完される。モードフラグビットがECV1における1に等しくセットされる場合は
、その特定のモードフラグに関連する変数により、それのカウンタは、最初にロ
ードされたカウンタ値から再ロードすることになる。そうではなく、モードフラ
グビットが0に等しくセットされる場合は、その変数に関連するカウンタが0に
デクリメントされると、次のカウンタ値がGPを介して取り出される。
【0088】 ECV2には、M1、M2、出力及び入力ATT変数に対するATT モードビットを表す4
つのビット対がある。ATTモードビットにより、ATT処理に関連するATTカウンタ
(ATTC)が0にデクリメントされたときに、ATT変数をどのように更新するかが
決定される。
【0089】 ATTモードビット=00で、ATTCが0にデクリメントされたときは、ATTBだけ
がインクリメントされる。ATTBが、ATTカラム内の最後のATTブロックを示してい
る場合は、新しいATTB値は0で、新しいオフセット及びマスク値は、GPを介し
てRDTから取得される。ATTCは、保存されている初期値から再ロードされる。
【0090】 ATTモードビット=01で、ATTCが0にデクリメントされたときは、ATTBだけ
がインクメントされる。全てのATTオフセット及びマスクは変更されない。ATTC
は、保存されている初期値から再ロードされる。
【0091】 ATTモードビット=10で、ATTCが0にデクリメントされたときは、ATTBは変
更されず、全てのATTオフセット及びマスク値は、GPにより更新される。ATTC
は、保存されている初期値から再ロードされる。
【0092】 ATTモードビット=11で、ATT操作がディスエーブル(禁止)されているとき
は、SRAPは、変更されていないRAPに等しい。
【0093】 他の代替的な好ましい実施形態では、ATTモードビット=11のとき、操作は
、ATTCがGPにより更新されることを除いて、ATTモードビット=00のときと
同じである。
【0094】 他の代替的な好ましい実施形態では、算術/論理ビットの幅は16ビットであ
り(2つのデータフェッチ/プット操作)、2つのマスクアレイに対するATTア
ドレスのスクランブル操作は除去される。
【0095】 ATTCに対するATTモードビットの操作をまとめると以下の表のようになる。
【0096】
【表1】
【0097】 この実施例の場合のRV変数の値は通常、8、16または24を除き、31±1
である。実施例の細部に依存して、RVを、3つの符号ビット及び5ビットの距離
を有する2の補数、または、3つの符号ビットと循環距離を示す5ビットの正の
数からなる数のいずれかとすることができる。フォーマットの選択についての細
部は、この方法の実施者に委ねられる。MF及びMP操作について他のバイト幅を
使用する他の好適な実施態様は、異なる循環操作幅を有している必要があり、従
って、RVのフォーマットを変更する必要があろう。これを実施するのは当業者に
は全く簡単なことである。EDが変わったときに循環の方向を変えるために、RV変
数についての符号ビットがEDビットとXOR(排他的論理和)演算されることに留
意されたい。従って、例えば、ED=0及びRV=5が5ビットの右循環を示す場合
は、ED=1及びRV=5は、5ビットの左循環を示すことになる。RV2がとりうる
値についての制限は、必要であれば除去することができる。
【0098】 循環操作により、マルチバイト幅データバイト内のビットが、バイト境界を横
断して分割される可能性をあげるために、RV1とRV2の両方に対してではなくても
、少なくともRV1に対して、上述の値の制限が課されるということは重要である
【0099】 ALV内のビットは右から左へ、DCF、CF1、CF2、MSF、A/L(3ビット)、RFであ
る。RF、A/L(最上位ビット)及びMSFは、EDビット(ECV1)の値とXOR演算され
ることによって変更される。詳しくは図4A及び4Cを参照されたい。
【0100】 DCFはデータコンプリメントフラグ(DATA COMPLEMENT FLAG)であり、これが
1にセットされると処理中にデータが補完される。
【0101】 ビットCF1及びCF2が1にセットされると、マスクアレイ♯1及び♯2から(そ
れぞれ)取り出された値が補完される。図4Aに、CF1、CF2及びMSFの動作を詳
しく示す。
【0102】 MSFはマスクスワップフラグであり、これが1にセットされると、マスクアレ
イから取り出された値が交換される。これについての詳細は図4Aに示されてい
る。
【0103】 A/Lビット(3ビット)は、2つのマスクアレイの8つの算術/論理組合せの
どれを使用して処理するデータを変更するか、を決定するために使用される。以
下の表は、データを変更するために使用される算術/論理組合せをまとめたもの
である。詳しくは図4Cを参照されたい。
【0104】
【表2】
【0105】 EDの作用によりMSFとA/Lの3ビットを補完し、循環操作を無視する方法の1例
を以下に説明する。MSF=DCF=CF1=CF2=0とし、ED=0(暗号化)、DB=5(
連結された平文データバイト)、M1=1、M2=2と仮定し、A/Lの3つのビット
が0と仮定すると、M1 XOR DBは5 XOR 1=4、そして、4 ADD 2=6(暗号文)
となる。ここで、DB=6(連結された暗号文データバイト)及びED=1(暗号解
読)と仮定すると、M1=2、M2=1、及びA/Lは今度は0ではなく4になるよう
にMSFは補完されることになる。従って、DB SUB M1は、6−2=4であり、そし
て、4 XOR M2は、4 XOR 1=5となり、これは、元の始めの値である。
【0106】 他の例では、暗号化(ED=0)についてA/L=2であり、暗号解読(ED=1)
についてA/L=6である。この場合にも、データバイト=DB=5とする。2つのA
/L操作はADD(加算)とSUB(減算)である。DB ADD M1は5+1=6で、そして
、SUB M2は、6−2=4(暗号文)である。ED=1の場合、MSFは1となり、M1
=2、M2=1、A/L=6で、これは、さらにADD、次いでSUBがなされる。従っ
て、4(暗号文)ADD M1は、4 ADD 2=6、次に、6 SUB 1は5(平文)である。
XOR及びADD(SUBも)について順番の先後は重要であるが、ADDとSUBだけが使用
される場合には重要ではない。
【0107】 RFビットは、ROTATE FIRSTビットである。1にセットされると、データは、M1
値によって変更される前に循環される。RF=0の場合は、最後のA/L操作の後に
、変更されたデータが循環されることになる。2つのA/Lデータ変更の間に、循
環操作があることに留意されたい。
【0108】 他の実施態様では、算術/論理演算は、非2進数システムを使用して行われる
。以下の表に、XOR演算を使用して、3ビットのA/Lコードを2のべき乗でない基
数に対して実施する方法の1例を示す。
【0109】
【表3】
【0110】 通常、XOR演算の場合、この演算の結果生じる数は、通常の循環操作を使用で
きるようにするために2進表現に変換される。演算結果を2進数に変換すること
によって、循環操作によってもたらされるビットのばらつきが最大になる。他の
好適な実施態様(不図示)では、別の変数ALNB(A/L基数)を、XOR+及びXOR−
操作に関連して使用して、これらの操作に使用する基数を指定する。この変数を
、ALV変数が更新されるときに更新することができる。さらに他の好適な実施態
様(不図示)では、個別のカウンタALNBCが、ALV変数を更新するのとは別個に変
数ALNBを変更するために使用される。このカウンタは、他のカウンタについて説
明したのと同じようにして更新される。ADD及びSUBの操作は、使用される基数に
関係なく同じであるので、基数をシフトしたり変更する利点は、主として、XOR
+及びXOR−操作に対して与えられる。変数ALNBを、ディジタルソースから選択
したり、あるいは、任意の算術または論理演算の組合せを使用して計算すること
ができるが、その値は2以上でなければならない。2のべき乗ではない基数を使
用する1つの利点は、XOR+及びXOR−の操作については、メッセージまたはメッ
セージの一部を互いとXOR演算(基数2)することによって有用な暗号文解読情
報を取り出すことがより困難になるということである。異なる基数を使用するこ
とにより、暗号化された情報の安全性を高めることができる。
【0111】 算術/論理演算が、通常の2進表現に戻されないBCN数を使用して計算される
場合には、循環操作を少しだけ変更しなければならないということに留意された
い。ローテータは、ビットではなくディジット(桁または数)をシフトしなけれ
ばならず、RV変数の距離部分は別様に解釈されなければならないであろう。以下
のテーブルには、各ディジットが要求するビット数が記載されている。基数2の
場合は、1ディジットは1ビットである。
【0112】
【表4】
【0113】 他のECV制御バイト(ECV3)を使用して、エンコーダパスに対して基数を含め
ることができる。以下の表に、指定された基数を使用して、8ビットバイト以内
のBCN数を用いて表すことができる最大の値を示す。
【0114】
【表5】
【0115】 BCN数計算では、選択された最初の基数は、エンコードされるデータを含むこ
とができる必要がある。例えば、10010の値を有する8ビットバイトを、基数
3、9または10で使用することはできない。また、新しい基数が、古い基数に
よって可能な最大の値を含むことができる限り、パスの間で基数を変更すること
ができる。
【0116】 バイトの8ビット全部を完全には使用しないデータバイトについて、BCN数を
使用することの利点は、データビットが、集まり合うのではなく、バイト内の8
ビット全体により完全に分散する可能性が(新しい基数について)高くなること
である。これは、文字を狭い範囲の値である0〜6310または0〜9610にマッ
ピングすることが可能なテキストファイルについてある程度有用である。例えば
、(データバイトが、0〜6310の範囲内の値を有する場合)基数3を使用して
、バイトの下位6ビットの元のデータは、バイトの全8ビットに変換される。
【0117】 他の好適な実施態様(不図示)では、MF♯1及びMF♯2操作は、マスクアレイ
から取り出した要素を(丸めを用いて)BCN数に変換することによって、(連結
する前に)それらを変更する。他の変更態様(不図示)では、連結操作の後に、
基数の変換が行われる。
【0118】 他の好適な実施態様(不図示)では、MF操作の結果生じる4バイト(32ビッ
ト)の順番が逆にされる。すなわち、最初と4番目のバイト、並びに、2番目と
3番目のバイトが交換される。この態様に対する制御は、他の暗号化制御バイト
ECV3を生成し、及び、3ビットをMF操作の各々に割り当てることによって行われ
る。さらに、MP操作の実際の連結分離部分の前に、反転をMP操作に適用する
こともできる。MP反転が望まれる場合は、4番目のビットがECV3バイトに割り
当てられる。この特定の反転は、ソフトウエアまたはハードウエアのいずれかで
簡単に実施することができる。ソフトウエアの場合には、多くのCPUが、この反
転を非常に簡単に実現する命令を有している。(32ビットまたは他のマルチバ
イト構成について)他のバイト交換や入れ替え(シャッフリング)方式を、ECV3
内の他のビット(または、他の追加のECV制御バイトを生成することもできる)
を用いて利用することができる。適切なオフセット及びマスク値を用いて、RAP
上のATT処理は、これらのバイト反転を実施することができる。
【0119】 図3A及び3Bの「エンコーダ/デコーダ シーケンス」は、エンコーダの処
理のシーケンスを示すフローチャートである。
【0120】 ステップ1は初期化処理であり、このステップでは、全てのテーブルがエンコ
ーダに入れられる。これらのテーブルには、RDT、ATT、及び、2つのマスクアレ
イMA♯1及びMA♯2が含まれる。さらに、パス番号PNは1にセットされ、実施さ
れる処理パスの全体数PASSESがエンコーダに渡される。ローカル変数SVは、使用
される第1のパス番号(1またはPASSESのいずれか)に設定され、一方、他のロ
ーカル変数D(±1)は、パス番号がカウントアップされるのかカウントダウン
されるのかを示す。従って、エンコードするときに、ステップ4で、パス番号が
1からPASSESまでカウントアップされ、デコードするときには、パス番号はPASS
ESから1までカウントダウンされる。
【0121】 ステップ2及び3では、各処理パスについてのパラメータを初期化してPSTに
格納する。
【0122】 ステップ4は、初期化シーケンスの後の最初のステップである。パス番号PNは
SV(1またはPASSESのいずれか)にセットされ、BUFSELは0にセットされ、I/O-
Aは処理される情報で満たされる。ローカルカウンタKは1にセットされる。
【0123】 ステップ5では、処理パスPNに関するパラメータがPSTからDMにロードされる
。これにより、実行されるパスについてDMが初期化される。
【0124】 ステップ6では、DMが、入力バッファを出力バッファ中に処理する。どのバッ
ファが入力用であり、どれが出力用であるかの指定は、BUFSELの値によって決ま
る。
【0125】 ステップ7(図3B)は、I/Oバッファ処理が完了した後に行われる。パスPN
に関するパラメータがPSTテーブル中に保存される。
【0126】 ステップ8では、D内の値によってパスカウンタPNを更新し、ローカルカウン
タKがインクリメントされる。
【0127】 ステップ9で、K値がPASSESより小さくて、追加の処理パスが同じI/Oバッフ
ァで実行されるということを示している場合には、BUFSELの値が補完され(ステ
ップ10)、処理は図3Aの「2」に戻り、追加処理のために上記ステップ5に
行く。そうではない場合には、バッファについて全ての処理パスが実行されると
、BUFSELは、出力バッファを指示し、出力バッファは、コントローラによりユー
ザインターフェース、従ってユーザに送られる(ステップ11)。
【0128】 ステップ12で、追加情報を処理する必要がある場合には、処理は図3Aの「
3」に行ってステップ4に戻るか、または、処理は終了する。
【0129】 図3Cの「アドレス変換プロセッサ処理」には、ATT処理が詳細に示されてい
る。ステップ1には、必要とされる変数が示されている。ATT処理は、少なくと
も1つのATTブロックエントリを有するATTカラム、RAP、変数ATTB、オフセット
♯1、マスク♯1、オフセット♯2及びマスク♯2を必要とする。ATTカラムに
は、ATTN、ATTSIZE及びATTBASE(図5B参照)が含まれる。ATTNは、ATTカラム
内のATTブロックエントリの数であり、ATTSIZEはATTブロックエントリのサイズ
である。ATTBASEはATT操作で使用される基数である。
【0130】 I/Oバッファ、アクセスされるテーブルまたはマスクアレイは、ATTSIZEのサイ
ズの整数倍であると仮定している。ステップ2において、値UPPERは、ATTSIZEに
よって除されたRAPであり、LOWERは、RAPとATTSIZEのモジュロ演算の結果(また
は、RAP mod ATTSIZE)である。これは、UPPERがRAP/ATTSIZEの商で、LOWERは
その余りであると考えることができる。
【0131】 ステップ3で、値LOWERは、それにオフセット♯1を加えることによって変更
される。RAPをカウンタの出力として扱う(または読み出す)場合には、オフセ
ットを加えることは、カウンタを段階的に調整することと同じである。加算の結
果は、MASK♯1とXOR演算され、この演算の結果とATTSIZEとをモジュロ演算(ま
たは、mod ATTSIZEを)する。XOR演算により、段階的に調整された値に非線形的
局面が導入される。最後のATTSIZEとのモジュロ演算(または、mod ATTSIZE)は
、ATTブロックのアドレス空間とのADD及びXOR演算の結果を維持するために必要
である。
【0132】 ステップ4では、生成されたLOWER値が、ATTカラム内のATTBによって指示され
るATTブロック中へのRAPとして使用される。このRAP(LOWER)は、ATTブロック
エントリからLOOKUPを取得するために使用される。
【0133】 ステップ5は、RAP LOOKUPを最初に変更するステップである。ここでは、LOOK
UPは、ステップ3におけるLOWERに類似のやり方で処理される。LOOKUPは、オフ
セット♯2を加え、次に、マスク♯2とXORすることによって段階的に調整され
る。
【0134】 ステップ6では、UPPERとLOOKUPを再結合して、SRAP(スクランブルされた相
対アドレスポインタ)を生成する。これは、UPPERにATTSIZEを乗じて、その結果
にLOOKUPを加えることにより実現される。
【0135】 図3Dのマルチ(複数)バイトプット(MULTIPLE BYTE PUT)は、MP操作を
説明するものである。この説明のために、Kは4であると仮定する。ステップ1
には、MP操作のために必要な変数が示されている。単一のデータアイテムPUTB
YPE(Kビット幅)、出力バッファ用のRAP、及び、関連するATT処理情報が、RAP
をSRAPに変換するために必要である。
【0136】 ステップ2では、TEMP=PUTBYTE、及びJ=0にセットされる。Jは、MP処
理内の一時的なカウンタとして使用される。
【0137】 ステップ3では、出力RAPと他のATT変数を取得して、それらを出力ATTプロセ
ッサに送る。生成されたSRAPは、PUTBYTEから分離されたデータのバイトが、BUF
SELによって指定される出力バッファに書き込まれるアドレスである。BUFSEL=
0の場合、出力はI/O-Bに行き、BUFSEL=1の場合は、出力バッファはI/O-Aであ
る。SRAPは、ステップ5での使用のために保存される。
【0138】 ステップ4は、MP操作における次の繰り返しの間に使用するために出力ポイ
ンタをインクリメントする。TEMPの下位8ビット(1バイト)はDATABYTEに移さ
れる。次に、TEMPの値が28(すなわち、8ビットバイトの場合256)で割り
算され、割り算の結果の整数部がTEMPに戻される。これは、TEMP8ビットの内容
を右にシフトすることと同じである。次にJが1だけインクリメントされる。こ
こで、Jは、いくつのバイトが出力バッファに配置されているか追跡するために
カウンタとして使用される。
【0139】 ステップ5では、使用される8ビットDATABYTEと出力SRAPが、BUFSELによって
指定される出力バッファに送られる。
【0140】 ステップ6は、分離して出力バッファに入れるべき他のバイトがまだあるか否
かを判定するために使用される。Jは、ローカルカウンタであるので、(カウン
トが0から開始するために)JがKに等しい場合は、処理は終了するか、あるい
は、全てのバイトが処理されるまで、ステップ3〜6までを繰り返す必要がある
【0141】 図3Eのマルチ(複数)バイトフェッチ(MULTIPLE BYTE FETCH)は、MF操作
を説明するものである。この説明のために、Kは4に等しいと仮定する。ステッ
プ1には、MF操作のために必要な変数が示されている。アクセスされるソース
用のRAP、及び、関連するATT処理情報が、RAPをSRAPに変換するために必要であ
る。
【0142】 ステップ2で、TEMP及びJの両方が0にセットされる。Jは、MF処理において一
次的なカウンタとして使用される。
【0143】 ステップ3で、各ポインタからRAPを、さらに他のATT変数を取得し、それらを
適切なATTプロセッサに送る。生成されたSRAPは、ソースバッファまたはアレイ
内のアドレスであり、そこで、1バイトのデータが取り出されて、単一の連結さ
れたデータアイテムを作成するために使用される。
【0144】 ステップ4で、取り出した8ビットデータアイテムDATABYTEを取得し、それに
、28Jを乗じる。これには、データバイトを一時的な変数TEMPに加算する前に8
Jビットだけデータバイトを左シフトするという効果がある。Jは、次の回で、DA
TABYTEをTEMPに加える前にさらに8ビット左にシフトするために、インクリメン
トされる。使用されるRAPに関連するアドレスポインタは、MF操作における次の
繰り返し中に使用するためにインクリメントされる。
【0145】 ステップ5では、適切な数のバイトがフェッチされたか否かを調べるためにチ
ェックを行う。より多くのフェッチ操作が必要な場合には、適正な数のバイトが
取り出されるまでステップ3と4を繰り返す。適正な数のバイトが取り出された
ときには、TEMPには、MF操作の結果であり、MF操作の出力である単一の連結され
たデータアイテムが含まれる。
【0146】 ステップ3で特に留意すべきことは、MF操作が、2つのマスクアレイのどちら
かに関係する場合には、それらのポインタ値のインクリメントはある特定のルー
ルに従う。マスクアレイ内のエントリの組合せシーケンスを最大化するためには
、マスクアレイ♯1ポインタが、アレイの終わりからその開始点までラップアラ
ンドするときは常に、マスクアレイ♯2に対するポインタを、再度(それの長さ
のモジュロ)インクリメントする必要があろう。マスクアレイ♯1ポインタもMA
♯1の長さのモジュロ(または、modulo (MA♯1の長さ))だけインクリメント
されるので、アレイ♯1ポインタのインクリメントが0値となった場合には、ア
レイ♯2も再度インクリメントしなければならない。これには、マスクアレイポ
インタだけが含まれ、入力ポインタは含まれないということに留意されたい。
【0147】 図4Aは、マスクバイトをマスクアレイから取り出して、マスクレジスタM1及
びM2に配置する前に、ALVからの制御変数によって変更する方法を示す詳細図で
ある。
【0148】 制御ライン28d及び29dを使用して、M1 ATTプロセッサ5AとM2 ATTプロ
セッサ5Bを同期させ、これによって、M1 ATTプロセッサが、アレイ♯1ポイン
タカウンタ96を0までラップアラウンドさせる。OR 100に行く追加のインクリ
メント制御パルス28eは、同じくOR 100に行くM2 ATTプロセッサのインクリメ
ント制御パルス29cと、これら2つのパルスが互いに干渉し合わないようなや
り方でタイミングが合わされる。101を介してOR 100から出るインクリメント
制御パルスにより、アレイ♯2ポインタ97がインクリメントされる。
【0149】 マスクアレイ#1から1組のバイトを取り出すためのステップについて次に説
明する。アレイ#1ポインタのRAPを含むカウンタ96は、ライン28aを介して
M1 ATT プロセッサに送られ、生成されたSRAPは、28bを介してM1 SRAPレジス
タ110に送られる。インクリメント制御パルス28cにより、アレイ#1ポイ
ンタカウンタは、RAPがM1 ATT プロセッサに送られた後にインクリメントされる
。M1 SRAPレジスタの内容は、36aを介してマスクアレイ#1のアドレス入力
に送られ、制御ライン36b及び35は、(M1 SRAPによってアドレス指定され
る)マスクデータバイトのMF#1(8)への転送を同期化する。この処理が4回
行われると、MF#1には、ライン34を介してローテータ118に送られる32
ビット幅のマスク値が含まれる。距離及び方向情報は、ライン108を介してMR
V1(92)によりローテータ118に供給される。ローテータ118の出力は、
ライン122を介してXOR112に送られる。XOR112は、32入力ビットの各
々とALVからのステータスビットCF1(76)の値とをXOR演算するように構成さ
れる。CF1情報は、ライン102を介してXORに転送される。CF1=0の場合は、
ライン114のXOR操作結果である32ビット値は変化せず、ライン34上のMF
#1からの32ビット値と同じである。しかしながら、CF1=1の場合は、XORか
ら出力されるライン114上の32ビットは、ライン34上のデータの1の補数
である。
【0150】 アレイ#2ポインタのRAPを含むカウンタ97は、ライン29aを介してM2 AT
Tプロセッサに送られ、生成されたSRAPは、29bを介してM2 SRAPレジスタ11
1に送られる。インクリメント制御パルス29cにより、アレイ#2ポインタカ
ウンタ(97)は、RAPがM2 ATTプロセッサに送られた後、OR100及びライン
101を介してインクリメントされる。M2 SRAPレジスタの内容は、41aを介
してマスクアレイ#2のアドレス入力に送られる。制御ライン41b及び40に
より、(M2 SRAPによりアドレス指定された)マスクデータバイトのMF#2(9
)への転送が同期化される。この処理が4回行われると、MF#2には、ライン3
9を介してローテータ121に転送される32ビット幅のマスク値が含まれる。
距離及び方向情報は、ライン109を介してMRV2(93)によりローテータ12
1に供給される。ローテータ121の出力は、ライン125を介してXOR113
に送られる。XOR113は、32入力ビットの各々と、ALVからのCF2(77)ス
テータスビットの値とをXOR演算するように構成される。CF2情報はライン103
を介してXORに転送される。CF2=0の場合には、ライン115上のXOR演算の結
果である32ビット幅の値は変化せず、ライン39上のMF#2からの32ビット
値と同じである。しかしながら、CF2=1の場合は、ライン115上にXORから出
力される32ビットは、ライン39上のデータの1の補数である。
【0151】 XOR112の出力であるライン114は、MUX116の選択0入力と、MUX11
9の選択1入力に向う。XOR113の出力であるライン115は、MUX119の選
択0入力とMUX116の選択1入力に向う。ED60及びMSF78はいずれもALV内
のステータスビットであり、ライン105及び106をそれぞれ介してXOR10
4に送られる。このXORの結果は、MUX116とMUX119の両方の選択入力に行
くライン107に置かれる。従って、選択ライン107が0に等しい場合は、ラ
イン117上のMUX116の出力は、ライン114上の32ビット幅データとな
り、ライン120上のMUX119の出力は、ライン115上の32ビット幅デー
タとなる。しかしながら、選択ライン107が1に等しい場合は、ライン117
上のMUX116の出力は、ライン115上の32ビット幅データとなり、ライン
120上のMUX119の出力は、ライン114上の32ビット幅データとなる。
【0152】 ライン117上のMUX116の32ビット幅出力は、M1レジスタ123に行き
、そこで、データモディファイア(図4C参照)による使用のために保持される
。ライン120上のMUX119の32ビット幅出力は、M2レジスタ126に行き
、そこで、データモディファイア(図4C参照)による使用のために保持される
【0153】 図4Bは、入力及び出力MF及びMP操作を示す詳細図である。ED60は暗号化の
場合は0であり、暗号解読の場合は1である。ED60は、ECV1内のビットである
。EDは、ライン134及び135によって2つのセレクタ136及び137にそ
れぞれ送られる。入力ポインタを含むカウンタ94は、ライン130を介してセ
レクタ136に行き、出力ポインタを含むカウンタ95は、ライン132を介し
て同じセレクタ136に行く。ED=0のときは、入力ポインタRAPは、28aを
介してセレクタから入力ATTプロセッサ5Cに行き、出力ポインタRAPは、ライン
29aを介してセレクタから出力ATTプロセッサ5Dに行く。ED=1の場合は、
行先が入れ替わる。すなわち、セレクタは、入力ポインタRAPを29aを介して
出力ATTプロセッサ5Dに送り、同時に、セレクタは、出力ポインタRAPを28a
を介して入力ATTプロセッサ5Cに送る。これにより、暗号解読に際して、暗号
化の間に行われたアドレススクランブルを解除することができるようになる。
【0154】 同様なやり方で、セレクタ137は、インクリメント制御パルス28c及び2
9cを適切なアドレスカウンタに送る。ED=0のときは、入力ATTプロセッサイ
ンクリメント制御パルス28cは、セレクタ137を通り、ライン131を介し
て入力ポインタを含むカウンタ94に行く。出力ATTプロセッサインクリメント
制御パルス29cは、セレクタ137を通り、ライン133を介して出力ポイン
タを含むカウンタ95に行く。ED=1のときは、セレクタ137は、入力ATTプ
ロセッサインクリメント制御パルス28cをライン133を介して、出力ポイン
タを含むカウンタ95に送る。また、セレクタ137は、出力ATTプロセッサイ
ンクリメント制御パルス29cを、ライン131を介して入力ポインタを含むカ
ウンタ94に送る。制御ライン28d及び29dは、ATTプロセッサ5Cと5D
を同期させるために使用され、この場合、MF#3とMP#1の操作の残りの部分の
タイミングが合わされる。
【0155】 入力ATTプロセッサ5cからのSRAPは、28bを介して入力SRAPレジスタ13
8に送られる。出力ATTプロセッサ5DからのSRAPは、29bを介して出力SRAP
レジスタ139に送られる。入力SRAP138は、ライン140を介してセレクタ
142に行き、出力SRAP139は、ライン141を介してセレクタ142に行く
。セレクタ142の動作は、ライン143を介してBUFSEL65によって制御され
る。BUFSEL=0のときは、セレクタ142は、入力SRAP138を、ライン46a
を介してA I/Oバッファ15のアドレス入力に送り、また、出力SRAP139を、
ライン47aを介してB I/Oバッファ16のアドレス入力に送る。BUFSEL=1の
ときは、セレクタ142は、出力を反転し、入力SRAP138を、ライン47aを
介してB I/Oバッファ16のアドレス入力に送り、次に、出力SRAP139を、ラ
イン46aを介してA I/Oバッファ15のアドレス入力に送る。
【0156】 BUFSEL65及びそれのコンプリメントBUFSEL-(または補数BUFSEL-:ライン1
46上のインバータ149の出力)は、I/Oバッファ15及び16の出力を選択
的にイネーブルまたはディスエーブルにするために使用される。ライン143及
び146上においてBUFSEL=0及びBUFSEL-=1の場合は、A I/Oバッファは読み
出し可能になり、B I/Oバッファは書き込み可能になる。ライン143及び14
6上においてBUFSEL=1及びBUFSEL-=0の場合は、B I/Oバッファは読み出し可
能(読み出しイネーブル)になり、A I/Oバッファは書き込み可能(書き込みイ
ネーブル)になる。BUFSEL65はまた、ライン143を介してMUX147の選択
入力に行く。A I/Oバッファ15の出力は、ライン53を介してMUX147の0選
択入力に行き、B I/Oバッファ16の出力は、ライン55を介してMUX147の1
選択入力に行く。BUFSEL=0のときは、MUX147は、A I/Oバッファからの8ビ
ットデータを(53を介して)選択して、データバイトをライン41を介してMF
#3プロセッサ10に送る。BUFSEL=1のときは、MUX147は、B I/Oバッファ
からの8ビットデータを(55を介して)選択して、データバイトをライン41
を介してMF#3プロセッサ10に送る。
【0157】 読み出し処理が4回実施されると、MF#3の出力は、32ビット幅の連結され
たデータバイトとなり、これは、43を介して入力データ(INPUT DATA)レジス
タ148に送られる。
【0158】 (MP#1(11)に行く)制御ライン52、(MF#3(10)に行く)44、
(A I/Oバッファ15に行く)46a及び(B I/Oバッファ16に行く)47bは
、I/O処理を同期させて、任意のアドレス、データ、またはタイミングの衝突を
防止するために使用される。
【0159】 32ビット幅の変更されたデータバイトであるOUTPUT DATA218は、51を
介してMP#1プロセッサ11に行く。MP#1プロセッサ11の出力は、8ビット
幅のデータバイトであり、これは、49を介して2つのI/Oバッファのデータ入
力に送られる。データ入力がBUFSELによってイネーブルにされているバッファだ
けが、ライン49上の8ビットデータバイトを実際に取得し、それをそのバッフ
ァに書き込む。前述したように、書き込みがイネーブルにされたバッファは、セ
レクタ142を介して送られてきたOUTPUT SRAPを、データバイトを書き込むア
ドレスとして使用する。
【0160】 図4Cは、図1のアイテム7のデータ変更操作DMを詳細に示す図である。EC
V1バイトからの1ビットステータスビットであるED60は、174を介してイン
バータ175に送られる。インバータ175の出力はED-であり、これは、17
6を介してAND177に送られる。ED=0のときは、ライン176上の値は、1
(論理的真)であり、これによって、AND177の出力は、ライン180を介し
てDCF75の値を反映することになる。DCF=0のときは、ライン178上のAND
177の出力は0であり、DCF=1の場合には、ライン178上のAND177の出
力も1である。ED=1のときは、ED-は0であり、176上のこの0値によって
、AND177の出力(ライン178)は常に0になり、XOR161に行くこの0は
XOR内の処理を実際上変化させない。従って、ED=0(暗号化の場合)のときの
み、DCFの値がXOR161に渡される。ED=1のときは、DCFの値は無視され、XOR
161の出力162は、ライン160上のXORへの入力に等しい。
【0161】 XOR161は、ライン178上の入力をライン160上に送られる32入力ビ
ットの各々とXOR演算するように構成される。従って、ライン162上に出力と
して送られる32ビットは、ライン160上の32入力ビットと同じであるか、
または、ライン160上の32ビットの1の補数であるかのいずれかである。す
なわち、DCF(データコンプリメントフラグ)=1かつED=0のときのみ、XOR1
61の出力は、XOR入力の1の補数である。
【0162】 XOR161の出力は、32ビット幅データバイトであり、これは、32ビット
幅循環操作164への入力となる。ED(暗号化/暗号解読フラグ)60は、また
、ライン163を介して第1の循環操作164に行き、そこで、ライン189を
介してローテータに送られる変数であるRV1(90)の符号(方向)ビットの値
の補数をとるために使用される。循環操作164の32ビット幅出力は、ライン
165に送り出される。
【0163】 (ALV変数から(図2C参照)の)RF(循環第1)フラグ82は、ライン18
1を介するXOR182への入力である。XOR182への他方の入力は、ライン17
9を介するED60である。XOR182の出力は、ライン183を介して第1の循
環操作164のイネーブル入力に行く。従って、第1の循環操作は、ED=0でRF
=1のときか、または、ED=1でRF=0のときのいずれかのときのみイネーブル
になる。換言すれば、RFフラグが暗号化中にセットされるとき、または、RFフラ
グが暗号解読中にクリアされるときのみ、この第1の循環操作はイネーブルにな
る。
【0164】 図4Cの右下の部分には、第3の循環操作204がどのようにしてイネーブル
にされるかが示されている。RF82は、206を介してインバータ207に行く
。インバータ207の出力RF-は、XOR209への入力となる208である。XOR
209への他方の入力は、ライン211を介するED60である。XOR209の出
力は、ライン210を介して第3の循環操作204のイネーブル入力に行く。第
3の循環操作の循環方向及び距離は、変数RV1(90)によって供給される。変
数RV1は、ライン212を介して循環操作204に行く。ライン211を介するE
D60は、第3の循環操作204に行き、そこで、ED=1のときのみ、(RV1によ
って供給される)循環の方向を変更するために使用される。こうではなく、ED=
0のときには、循環方向は変化しない。第3の循環操作は、ED=0でRF=0のと
きか、ED=1でRF=1のときのいずれかのときのみイネーブルになる。
【0165】 DCF(データコンプリメントフラグ)75は、ライン215を介してAND213
に行く。AND213の他方の入力は、ライン211を介するED60である。AND2
13の出力は、ライン214を介してXOR216に行き、そこで、(205を介
する)XORの入力の32入力ビットの各々とのXOR演算のために使用される。この
結果、ED=1のときのみ、DCFは、XOR216への入力を変更する可能性を有する
ことになる。ED=0のときは、AND213の出力は常に0となり、従って、XOR2
16の出力(ライン217)は常に、XOR216に向う入力(ライン205)と
同じになる。
【0166】 下の表に、データモディファイア219における3つの循環操作に対するED
とRFの作用を示す。
【0167】
【表6】
【0168】 この好適な実施態様では、第2の循環操作は、常にイネーブルであり、第1と
第3の循環操作は同時にイネーブルになり、同時にディスエーブルになるという
ことに留意されたい。別の好適な実施態様では、(ALVに)RFフラグはなく、第
3の循環操作204のためにRV3(変数及びカウンタ)を使用する。
【0169】 下の表に、データモディファイア219で使用される32ビット幅XORの各々
からのデータフローに対するED及びDCFの作用を示す。
【0170】
【表7】
【0171】 第1の循環操作164に戻る。この循環操作の32ビット幅出力は、ライン1
65を介してXOR166、AND167、及びSUB168に行く。さらに、マスクア
レイ#1から得られる32ビット幅マスク値であるM1(123)(図4A参照)
は、ライン124を介してXOR166、ADD167、及びSUB168に行く。XOR1
66の32ビット幅出力は、ライン170を介してMUX169の選択0及び1入
力に行く。ADD167の32ビット幅出力は、ライン171を介してMUX169の
選択2、3、5及び6入力に行く。そして、SUB168の32ビット幅出力は、
ライン172を介してMUX169の選択4及び7入力に行く。
【0172】 MUX169とMUX202の両方の選択0入力s0は、ライン188及び191
をそれぞれ介して、ALVビット、A/Lビット1(79)によって制御される。選択
1入力s1は、ライン187及び190を介して、ALVビット、A/Lビット2(8
0)によって制御される。ALVビット、A/Lビット3(81)は、ライン184を
介してXOR185に行き、ED60もまた、ライン179を介してXOR185に行く
。XOR185の出力WAL3は、ライン186を介して、MUX169とMUX202の両
方の選択2入力s2に行く。MUXの入力は、EDがA/Lビット3の補数であるとき(
または補完するとき)に、(EDが循環符号ビットとMSF制御ビットの補数となる
(または補完する)と共に)入力データに対して逆算術/論理演算を実施するよ
うに構成されている。図2Cの説明を参照されたい。
【0173】 MUX169の32ビット幅出力は、ライン173を介して第2の循環操作19
4の入力(32ビット幅)に行く。この循環操作は、常にイネーブルである。ラ
イン192上の循環値変数RV2(91)は、この循環操作の方向及び距離を指定
し、ライン193上のED60は、ED=1のときの循環方向を反転する。第2の循
環操作194の32ビット幅出力は、ライン195を介してADD196、XOR19
7及びSUB198に行く。さらに、マスクアレイ#2から得られる32ビット幅
マスク値であるM2(126:図4A参照)は、ライン127を介してADD196
、XOR197及びSUB198に行く。ADD196の32ビット幅出力は、ライン1
99を介してMUX202の選択0及び選択3入力に行く。XOR197の32ビット
幅出力は、ライン200を介してMUX202の選択4及び5入力に行く。SUB19
8の32ビット幅出力は、ライン201を介してMUX202の選択1、2、6及
び7入力に行く。
【0174】 MUX202の32ビット幅出力は、203を介して第3の循環操作204に行
く(この循環操作についての前述した説明を参照されたい)。第3の循環操作2
04の32ビット幅出力は、ライン205を介してXOR216に行き(これにつ
いても前述の説明を参照されたい)、次に、ライン217を介して32ビット幅
出力データレジスタ218(図4B参照)に行く。
【0175】 図5Aは、ATTブロックエントリを作成する方法を示すフローチャートである
。ステップ1において、ATTSIZEは、作成されるATTブロックのサイズである。ス
テップ2はローカルカウンタJを0にセットし、Kを構築するブロックのサイズに
等しくセットする。RAPエントリは、0からATTSIZE−1の範囲になければならな
いことに留意されたい。
【0176】 ステップ3では、K個のレコードを生成する。各レコードには2つのフィール
ドが含まれる。第1のフィールドは、RAPエントリになる整数を保持し、第2の
フィールドは、あるディジタルソースから抜き取った8ビットバイトを含んでい
る。この8ビットバイトは、疑似乱数発生器からのバイトストリーム、あるいは
、テキストファイルとすることもできる。
【0177】 ステップ4及び5では、第1のフィールド全てをJの一連の値(0〜ATTSIZE−
1)で満たし、第2のフィールドを、抜き取った(任意の)8ビットバイトで満
たす。この処理が完了すると、ステップ5からステップ4にはもはや戻らず、ス
テップ6に行く。
【0178】 ステップ6では、第2のフィールドの内容によって全てのKレコードを昇順に
並べ替える。並べ替えが行われると、フィールド1エントリは、シャッフルされ
る。
【0179】 ステップ7では、シャッフルされたフィールド1エントリが、ATTブロックエ
ントリに転送される。
【0180】 図5Bは、アドレス変換テーブルを構成するATTカラムの構造を示す。ATTカラ
ムの数は、利用可能な記憶容量によってのみ制限される。各ATTカラムは、それ
自体に割り当てられた独自の番号を有し、これにより、ATTプロセッサは、使用
するATTカラムを知ることができる。列内の次のエントリは、いくつのATTブロッ
クエントリがその列内にあるかを指定するATTNである。ATTNの次は、列内のATT
ブロックエントリのサイズを指定するATTSIZEである。その次は、ATTBASEであり
、これは、このATTカラムのATTブロックエントリと共にATT計算に使用される基
数である。各ブロックエントリには、ごちゃまぜになった一連のRAPが含まれて
いる。図5Bに示す例には、2つのATTカラムが含まれており、1つは、3つの
1024エントリブロックを含んでおり、もう1つは、5つの16384エント
リブロックを含んでいる。
【0181】 図6に、簡略化したデータモディファイア232を示す。これは、前述したデ
ータモディファイア219と置き換えることができる。データモディファイア(
または、データ変更)には、ただ1つの循環操作235が含まれる。236を介
してローテータ235に行くED60により、234を介して235に行くRV1(
90)によって示される循環の方向がED=1の場合の方向から切り換えられる。
従って、暗号解読のための循環操作は、暗号化のために使用された方向と逆のも
のとなる。
【0182】 図7には、4段パイプラインエンコーダ/デコーダを示す。これは、4つの個
別のエンコーダ(250a〜254a、250b〜254b、250c〜254c、及び250d〜254d)から
なる。共通のRAPカウンタ257は、4つの全てのエンコーダで使用するためのR
APを供給するためにライン249を介して使用される。最初に平文248が、25
0aの入力バッファにロードされる。ロードが終了すると、第1のエンコーダは、
254a内の出力バッファに中間テキストを含む。次に、別のバッファの平文が24
8を介して250a内の入力バッファにロードされると、253aの出力バッファが、2
55を介して第2のエンコーダの入力バッファ250bに送られる。この処理は、後
続のエンコーダについて繰り返される。254d内の第4のエンコーダの出力バッフ
ァが一杯になると、平文は、ある方式でユーザに配信するために256を介して
転送される。この時点で、暗号化/暗号解読の4つのパスを処理する際の唯一の
遅延は、1つのバッファを処理するために必要な時間のみである。従って、複数
のエンコーダを有するパイプライン構造は、情報を暗号化及び暗号解読するのに
非常に高速かつ有効な手段である。
【0183】 図8は、元の8ビットを含むセグメントの平均数(バイト)を1〜32の間の
パスの数の関数として、表形式で表したものである。また、セグメント当たりの
並べ替えられた元のビットの平均密度(バイト)も示している。エントリは、ソ
フトウエアシミュレータから得られたものである。並べ替えされていない密度の
1例では、パス1から生じる2つのセグメントは、それぞれが4ビットを含む等
しい確率を平均して有する。これは、ときには、大きな部分が元のバイト境界の
一方の側にあり、ときには、他の側にある場合があるからである。従って、並べ
替え統計の場合は、ビット密度は、以前の分布中に平均化される前に、降順で並
べ替えられる。その結果、5つのパスの後では、(バッファ内のバイトのある位
置における)およその平均ビット密度は、(丸めを施して)3、2、1、1、1
となるであろう。すなわち、バイトの元の8ビットは、出力バッファ内の5つの
他のバイト内に、あるバイトは元のバイトの3ビットを含み、他のバイトは元の
バイトの2ビットを含み、他の3つのバイトは各々が元のバイトの1ビットを含
むといったように分散されるであろう。従って、データは、それ自体が分散媒体
となる。
【0184】 元の8ビットを並べ替えたビット密度の最大セグメント(X1P)のサイズはパ
スの数の関数として、以下に示す式(式6)で近似的に表すことができる。
【0185】
【数4】
【0186】 本願発明の別の好適な実施態様は、2者間で鍵(キー)情報の交換を容易にす
るために安全なプライベートキープロトコルを用いる。これについては、米国特
許第5、583、939号「SECURE,SWIFT CRYPTOGRAPHIC KEY EXCHANGE」を参照されたい
【0187】 要約すると、入力バッファからの複数バイトを(順番を並べ替えて)1つのア
イテムに連結し、このアイテムを任意の量だけ循環させ、アイテムを個々のバイ
トに分離し、それらのバイトを出力バッファに(順番を並べ替えて)配置するこ
とにより、有効な暗号化/暗号解読法が得られる。
【0188】 使用する方式及び構成は、送信者及び受信者の創造力と、思想及び計画によっ
てのみ制限され、本発明を用いることにより、本願の抜き取り方式においてソー
スから選択すべき大量のディジタル情報がある場合に、1回だけエンコードされ
たメッセージ(one-time pad encoded message)を簡単に作成することができる
。本発明の安全性は、利用する論理/算術演算の安全性には依存せず、使用する
鍵、ランダムデータテーブル及びパスワードの秘密度に依存する。上記例及び使
用法以外の変更態様も可能である。
【0189】 上記に開示した本発明の文言及び思想、及び、本発明の範囲内のものと一貫性
のある他の実施態様、改良、細部及び使用法を構築できるということは当業者に
は明らかであろう。本発明は、均等論を含む特許法に従って解釈される特許請求
の範囲によってのみ限定される。
【図面の簡単な説明】
【図1】 図1は、暗号化エンジンのブロック図である。
【図2A】 各I/Oパス用に保存し復元する必要のある、変数、カウンタ、ポインタ及び制
御バイトのリストである。
【図2B】 各I/Oパス用に保存し復元する必要のある、変数、カウンタ、ポインタ及び制
御バイトのリストである。
【図2C】 エンコーダ制御変数内のエントリ、並びに、循環値及び算術/論理変数のフォ
ーマットを示す。
【図3A】 暗号化/暗号解読シーケンスのフローチャートである。
【図3B】 暗号化/暗号解読シーケンスのフローチャートである。
【図3C】 アドレス変換処理操作を詳細に示すフローチャートである。
【図3D】 複数バイトプット(MP)操作を詳細に示すフローチャートである。
【図3E】 複数バイトフェッチ(MF)操作を詳細に示すフローチャートである。
【図4A】 マスクアレイ及び制御ビットによるそれらの変更に関する情報の取り出しに適
用されるMF操作を示す図である。
【図4B】 データI/O操作に適用するときのMF及びMP操作を示す図である。
【図4C】 データ変更操作を詳細に説明する図である。
【図5A】 ATTブロックエントリを作成する方法を示すフローチャートである。
【図5B】 アドレス変換列の構造を示す表である。
【図6】 循環要素が1つのみの場合のサンプルデータ変更操作を示す図である。
【図7】 複数のエンコーダを共にパイプライン化する方法を示す図である。
【図8】 複数アドレスのスクランブル/循環パスの結果として生じる統計的なビットの
分布を示す表である。
───────────────────────────────────────────────────── 【要約の続き】 ことで達成しうる。ランダムな循環演算のための距離を 決定するのに用いられる乱数(ステップ2)のソース は、疑似乱数ジェネレータ、サンプリングされた音楽C D、テーブル、アレイ、バッファその他のデジタルソー ス中のエントリであってよい。

Claims (27)

    【特許請求の範囲】
  1. 【請求項1】 暗号化/解読装置であって、 a.第1の要素のアレイD1を定義する情報から、符号化/復号化される情報を
    取得するための手段と、 b.前記アレイD1の前記第1の要素を変更して、第2の要素の第2のアレイD
    2を形成するための第1の変更手段であって、前記第2の要素の数が前記第1の
    要素の数未満であり、前記第2の要素のうち少なくともいくつかが前記第1の要
    素より大きくなるように変更する前記第1の変更手段と、 c.前記アレイD2の前記第2の要素のうち少なくとも一つを循環させるための
    手段と、 d.前記循環されたアレイD2の第2の要素を変更し、前記アレイD1の前記第
    1の要素の中へ戻すための第2の変更手段と、 からなる装置。
  2. 【請求項2】 前記第1の変更手段が並べ替え手段を含み、かつ前記第2の変更手段が並べ戻
    し手段を含む、請求項1の装置
  3. 【請求項3】 前記第1の変更手段が連結手段を含み、前記第2の変更手段が分離手段を含む
    、請求項1の装置。
  4. 【請求項4】 第3の要素と、 前記アレイD2の前記第2の要素のうち少なくとも一つを前記第3の要素と結
    合し、第3のアレイD3を形成するための結合手段と、 前記アレイD3を変換して前記アレイD2の中へ戻すための変換手段と、 をさらに含む、請求項1の装置。
  5. 【請求項5】 前記結合手段が、加算手段、減算手段、排他的論理和手段、循環手段からなる
    一群から選択された算術的及び論理的な結合手段を含む、請求項4の装置。
  6. 【請求項6】 前記算術的及び論理的な結合手段が、別の基数への変換手段である、請求項5
    の装置。
  7. 【請求項7】 前記第3の要素が、パスワード、定数、アドレスレジスタ、カウンタ、マスク
    アレイ、乱数ソース、 擬似乱数ソース、任意数ソース、記憶場所の内容、から
    なる一群から選択されること、をさらに含む請求項4の装置。
  8. 【請求項8】 前記結合手段の実行時間を制御するための手段、をさらに含む請求項4の装置
  9. 【請求項9】 前記結合手段がクロックとカウンタからなる、請求項4の装置。
  10. 【請求項10】 前記アレイ内へ索引を設ける手段、をさらに含む請求項1の装置。
  11. 【請求項11】 前記索引を設ける手段が任意の基数の数からなる、請求項10の装置。
  12. 【請求項12】 暗号化/解読装置であって、 a.第1の要素のアレイD1を定義する情報から、符号化/復号化される情報を
    取得するための手段と、 b.前記アレイD1の前記第1の要素を変更し、アレイD2を形成するための変
    更手段と、 c.前記アレイD2を循環させるための循環手段と、 d.前記循環された前記アレイD2から前記アレイD1を再形成するための再形
    成手段と、 からなる装置。
  13. 【請求項13】 e.第3の要素と、 f.前記アレイD2の前記第2の要素のうち少なくとも一つを前記第3の要素と
    結合し、アレイD3を形成するための結合手段と、 g.前記アレイD3を変換して前記アレイD2内へ戻すための変換手段と、 をさらに含む請求項12の装置。
  14. 【請求項14】 前記結合手段が、加算手段、減算手段、排他的論理和手段、循環手段からなる
    一群から選択された算術的及び論理的な結合手段を含む、請求項13の装置。
  15. 【請求項15】 前記算術的及び論理的に結合された手段が、別の基数への変換手段である、請
    求項14の装置。
  16. 【請求項16】 前記第3の要素が、パスワード、定数、アドレスレジスタ、カウンタ、マスク
    アレイ、乱数ソース、擬似乱数ソース、任意数ソース、からなる一群から選択さ
    れること、をさらに含む請求項13の装置。
  17. 【請求項17】 前記結合手段の実行時間を制御するための手段、をさらに含む請求項13の装
    置。
  18. 【請求項18】 前記アレイ内へ索引を設ける手段、をさらに含む請求項12の装置。
  19. 【請求項19】 前記変更手段が並び替え手段を含む、請求項12の装置。
  20. 【請求項20】 前記変更手段が連結手段を含む、請求項12の装置。
  21. 【請求項21】 暗号化/解読の方法であって、 第1の要素のアレイD1を定義する情報から、符号化/復号化される情報を取
    得するステップと、 前記アレイD1の前記第1の要素を変更して、第2のアレイD2を形成するス
    テップと、 前記アレイD2を循環するステップと、 前記循環されたアレイD2からアレイD1を再形成するステップと、 からなる方法。
  22. 【請求項22】 第3の要素を取得するステップと、 前記アレイD2の第2の要素のうち少なくとも一つを前記第3の要素と結合し
    、アレイD3を形成するステップと、 前記アレイD3を変換して、前記アレイD2内へ戻すステップと、 をさらに含む請求項21の方法。
  23. 【請求項23】 前記結合を行うステップが、加算、減算、排他的論理和、循環、からなる一群
    から選択された算術的及び論理的な結合を行うステップ、をさらに含む請求項2
    1の方法。
  24. 【請求項24】 前記算術的及び論理的な結合が別の基数への変換からなる、請求項21の方法
  25. 【請求項25】 前記第3の要素が、パスワード、定数、アドレスレジスタ、カウンタ、マスク
    アレイ、乱数ソース、擬似乱数ソース、任意数ソース、記憶場所の内容、からな
    る一群から選択されること、をさらに含む請求項21の装置。
  26. 【請求項26】 前記結合手段の実行時間を制御するステップ、をさらに含む請求項21の方法
  27. 【請求項27】 前記アレイ内へ索引を設けるステップ、をさらに含む請求項21の方法。
JP2000619156A 1999-05-18 1999-05-18 暗号テキストの分散性を高めるためにデータアレイに基数変換、論理演算及び疑似乱数ジェネレータを用いる暗号化エンジン Pending JP2003500681A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1999/010967 WO2000070819A1 (en) 1998-02-07 1999-05-18 Cryptographic engine using base conversion, logic operations and prng in data arrays to increase dispersion in ciphertext

Publications (1)

Publication Number Publication Date
JP2003500681A true JP2003500681A (ja) 2003-01-07

Family

ID=22272781

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000619156A Pending JP2003500681A (ja) 1999-05-18 1999-05-18 暗号テキストの分散性を高めるためにデータアレイに基数変換、論理演算及び疑似乱数ジェネレータを用いる暗号化エンジン

Country Status (3)

Country Link
EP (1) EP1179243A4 (ja)
JP (1) JP2003500681A (ja)
CA (1) CA2371452A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005309148A (ja) * 2004-04-22 2005-11-04 Hitachi Ltd データ変換装置およびデータ変換方法
JP2008503162A (ja) * 2004-06-14 2008-01-31 ザ・ユニバーシティ・オブ・ノース・カロライナ・アット・グリーンズボロ デジタルコンテンツセキュリティのためのシステムおよび方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113542196B (zh) * 2020-04-16 2023-03-24 北京威努特技术有限公司 一种数据报文加密判定方法、装置、系统及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005309148A (ja) * 2004-04-22 2005-11-04 Hitachi Ltd データ変換装置およびデータ変換方法
JP2008503162A (ja) * 2004-06-14 2008-01-31 ザ・ユニバーシティ・オブ・ノース・カロライナ・アット・グリーンズボロ デジタルコンテンツセキュリティのためのシステムおよび方法

Also Published As

Publication number Publication date
EP1179243A1 (en) 2002-02-13
EP1179243A4 (en) 2005-07-20
CA2371452A1 (en) 2000-11-23

Similar Documents

Publication Publication Date Title
US6125182A (en) Cryptographic engine using logic and base conversions
US5008935A (en) Efficient method for encrypting superblocks of data
US6259789B1 (en) Computer implemented secret object key block cipher encryption and digital signature device and method
EP0839418B1 (en) Cryptographic method and apparatus for non-linearly merging a data block and a key
AU767323B2 (en) Block encryption device using auxiliary conversion
JP3229148B2 (ja) 暗号化方法およびシステム
JP3029381B2 (ja) データ変換装置
KR101246490B1 (ko) 갈루아 폐체 암호 시스템
JP4828068B2 (ja) コンピュータで効率的な線形フィードバック・シフト・レジスタ
US6185304B1 (en) Method and apparatus for a symmetric block cipher using multiple stages
US7801307B2 (en) Method of symmetric key data encryption
KR20010024562A (ko) 가상 매트릭스 암호화(vme)와 가상 키 암호 방법 및 장치
JP4025722B2 (ja) データ暗号化のための方法および装置
US7499542B2 (en) Device and method for encrypting and decrypting a block of data
US20020114451A1 (en) Variable width block cipher
JPH08179690A (ja) プロダクト暗号装置
JPH10240500A (ja) 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム
JP3769804B2 (ja) 解読化方法および電子機器
US20040120521A1 (en) Method and system for data encryption and decryption
WO2003053001A1 (en) Programmable data encryption engine for advanced encryption standard algorithm
US7103180B1 (en) Method of implementing the data encryption standard with reduced computation
JP2003500681A (ja) 暗号テキストの分散性を高めるためにデータアレイに基数変換、論理演算及び疑似乱数ジェネレータを用いる暗号化エンジン
Islam et al. Data encryption standard
KR100350207B1 (ko) 디지털 데이터의 엘-비트 입력 블록들을 엘-비트 출력비트들로 암호 변환하는 방법
EP0035048B1 (en) Cipher system using a variant key matrix