(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-11-30
(54)【発明の名称】行列演算を用いてデータを暗号化するための方法
(51)【国際特許分類】
G09C 1/00 20060101AFI20231122BHJP
【FI】
G09C1/00 610A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023546369
(86)(22)【出願日】2020-10-10
(85)【翻訳文提出日】2023-06-06
(86)【国際出願番号】 CL2020050126
(87)【国際公開番号】W WO2021174373
(87)【国際公開日】2021-09-10
(81)【指定国・地域】
(71)【出願人】
【識別番号】523131623
【氏名又は名称】ハイメ・リカルド・グティエレス・サラサール
(71)【出願人】
【識別番号】523131634
【氏名又は名称】ハイメ・アンドレス・ロペス・リスボア
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ハイメ・リカルド・グティエレス・サラサール
(72)【発明者】
【氏名】ハイメ・アンドレス・ロペス・リスボア
(57)【要約】
データを暗号化するための方法であって、連続する行列並べ替え操作を用いてベースメッセージを中間メッセージに変換することと、これもまた行列並べ替え操作を用いて新しい数値順序に変換される数集合を定義することと、置換アルファベットを定義することと、変位の最初の大きさから始めて、変位の大きさを徐々に大きくして行く、新しい数値順序によって定義されたコマンドに従って、置換アルファベットの1つの文字で中間メッセージ内の1つの文字を置き換えることを含む、置換操作を確定することとを含む方法が提供される。
【特許請求の範囲】
【請求項1】
データを暗号化するための方法であって、計算形式またはデジタル集積回路で実装されるシステムにおいて、「数集合」は「ベースメッセージ」を暗号化してその内容を理解できなくするために使用され、
a)「ベースメッセージ」を、対応する当事者間で事前に合意された内容に従って使用することが可能である「文字」のタイプのうちから選択された、特定のタイプの「文字」で定義し、この「ベースメッセージ」に含まれる文字の総数から、前記「ベースメッセージ」内に含まれる文字の前記総数がそれらの行列に含まれるように、1つまたは複数の[A1]行列が構築される、段階、
b)行列[A1]と同じサイズの行列[B1]内にランダムに分布する、「1」から前記行列の「サイズ」(行の数と列の数との積に等しい)までの連続する数によって形成される「数集合」を定義する、段階、
c)前記「ベースメッセージ」を含む行列[A1]に適用され、それを「中間メッセージ」[A2]に変換する、一連の4つの連続する並べ替え操作を確定し、
並べ替え操作のタイプは、行を転置するステップと、列を転置するステップと、同心平行四辺形を回転(時計回り/反時計回りに)するステップと、前記行列を対称移動(垂直、水平、右または左への対角、正方行列の場合はこれらの少なくとも2つ)するステップを含み、
前記一連の操作はキーワードCK1を形成する適用される4つの操作で符号化される、段階、
d)前記「数集合」を含む行列[B1]に適用され、それを「新しい順列」[B2]に変換する、別の一連の4つの連続する並べ替え操作を確定し、
行列[B1]に対する前記並べ替え操作は、行列[A1]を並べ替えるために使用されるのと同じタイプの操作であり、
前記一連の操作はキーワードCK2を形成する適用される前記4つの操作で符号化される、段階、
e)前記「ベースメッセージ」[A1]を並べ替えるためにキーワードCK1を適用し、それにより前記「中間メッセージ」[A2]を生成し、前記「数集合」[B1]を並べ替えるためにキーワードCK2を適用し、それにより前記「新しい順列」[B2]を生成する、段階、
f)「置換アルファベット」[A0]を、含まれる文字の数およびタイプを、それらの各々が前記アルファベット内に有する前記位置とともに、指定することによって定義し、
前記「置換アルファベット」は輪状構造を有する、すなわち、最後の文字の後に続く次の文字が前記一連の操作における最初の文字である、段階、
g)前記「新しい順列」[B2]を使用することによって、前記置換が始まるものとする前記「中間メッセージ」[A2]内の前記位置と前記メッセージ内の巡回方向(末尾に向かうまたは先頭に向かう)とを確定し、
これは「暗号化メッセージ」[C1]を構築するために従うべき前記操作を指定することによってキーワードCK3内で符号化される、段階、
h)前記「置換アルファベット」[A0]内で置き換えられる前記文字の元の配置を特定の数の位置の分だけ変位することによって取得される別の文字によって置換される前記「中間メッセージ」[A2]の各文字について「置換操作」を確定し、
前記メッセージ内の前記文字の前記置き換えのための前記変位は、進行方向(前方)または後退方向(後方)に、および前記置換を続行するためにCK3において定義されているような前記メッセージの前記巡回方向に行われ、
空白、アスタリスク、前記数、前記「置換アルファベット」において定義されていない他の任意の特殊文字は、前記「暗号化メッセージ」において修正されずそのままであり(アクセント記号付き母音を除く、これはアクセント記号なしの母音として扱われるべきである)、前記「中間メッセージ」内に大文字で出現する前記「置換アルファベット」で定義される文字を置換しなければならない場合に対応する置換文字も大文字で表示される、段階、
i)前記暗号化を、前記「新しい順列」[B2]内で、前記置換が開始する位置番号を識別し(初期暗号)、前記「中間メッセージ」[A2]内の前記位置に配置されている前記文字を識別することによって、開始する、段階、
j)置換する先頭文字のアルファベット[A0]内の前記位置を識別し、前記置換文字の配置を、置き換えする前記文字の前記元の位置から前記置換アルファベット内を前記初期暗号で指示された数だけ移動することによって確定する、段階、
k)前記「中間メッセージ」[A2]の前記元の文字を、前記識別された置換文字によって置き換え、それにより前記「暗号化メッセージ」[C1]内の前記先頭文字を確定し、
この操作は、キーワードCK3で定義された前記巡回方向に従って、前記「中間メッセージ」[A2]内の各連続する文字について、段階(1.i)から(1.k)まで繰り返し、それにより前記「暗号化メッセージ」[C1]を生成する、段階、
l)受信側通信者に、保護される必要のない通信チャネルを使用して、前記「数集合」[B1](またはその識別符号)および前記「暗号化メッセージ」[C1]を伝送する、段階、
m)前記受信側通信者に、事前合意された保護チャネルを通じて、前記「置換アルファベット」[A0](またはその識別符号)およびキーワードCK1からCK3を伝送する、段階、
n)前記受信側通信者による前記メッセージを、前記「置換アルファベット」、キーワードCK1からCK3、前記「暗号化メッセージ」、および前記元の「数集合」に基づき、段階(1iから1k)において説明されているのと逆に前記方法を適用することによって復号する、段階を含む方法。
【請求項2】
段階(1.a)から(1.k)を含み、「好ましい実施形態」であって、
a)段階(1a)において、前記ブロックの前記サイズは、キーワードCK1の先頭で符号化されるべきであり、
b)段階(1a)において、前記「ベースメッセージ」内の前記文字は、「アルファベット」(任意の言語)、数、英数字、記号、表意文字、音素、画像または他のものであってよく、ASCII、UTF-8、Unicode、または他の任意の形式のデジタルもしくはアナログ符号化で符号化されてよく、
c)段階(1a)において、行列[A1]は、前記「ベースメッセージ」内の文字の前記数に基づき選択されるべきである(16×4)、(16×8)、または(16×16)の文字のサイズで定義され、
d)段階(1a)において、前記「ベースメッセージ」内の文字の前記数が前記行列の前記サイズを超える場合、前記メッセージは64文字ブロック(16×4の行列サイズに対して)、128文字ブロック(16×8の行列サイズに対して)、または256文字ブロック(16×16の行列サイズに対して)で断片化されるべきであり、
e)段階(1a)において、前記「ベースメッセージ」内の文字の前記数(または前記メッセージの前記最後の断片内の文字の前記数)が使用される行列[A1]の前記サイズより小さい場合、前記行列の内容を完成させるために、必要な量の「空白」が「パディング文字」として追加されるべきであり、
f)段階(1a)において、前記文字「空白」は行列[A1]の前記定義を完成させるために、前記「ベースメッセージ」内の単語間隔として使用されるべきであり、
g)段階(1b)において、前記「数集合」は、必ずしも連続しない、級数、順序、または数列を構成する、(M×N)個の数の昇順または降順の集合から形成されてもよく、
h)段階(1b)において、「数集合」[B1]は、また、関わっているパラメータを考慮する(16×4)、(16×8)および(16×16)の行列サイズに対する、この目的のために設計された数集合生成器を用いて、または以前に定義され、明確に識別された「数集合」のレパートリーを含むリポジトリからそれを選択することによって、取得されてよく、
i)段階(1bおよび2h)において、前記「数集合」の識別子は、キーワードCK2の先頭で符号化されるべきであり、
j)段階(1c)、(1d)、および(1e)において、行列[A1]を並べ替えるために、キーワードCK1は、それぞれの行列に対して定義されていたであろう前記4つの操作の前記符号化とともに使用されるべきであり、
k)段階(1c)、(1d)、および(1e)において、行列[B1]を並べ替えるために、キーワードCK2は、それぞれの行列に対して定義されていたであろう前記4つの操作の前記符号化とともに使用されるべきであり、
l)段階(1f)において、前記「置換アルファベット」[A0]は、前記関わっているパラメータを考慮する、(16×4)、(16×8)および(16×16)の行列に対するこの目的のために設計されたアルファベット生成器から、または以前に定義され、明確に識別されたアルファベットのレパートリーを含むリポジトリからそれを選択することによって、取得されてよく、
m)段階(1f)において、前記「置換アルファベット」は、「アルファベット文字」、英数字文字、特殊文字、スペリングアクセントを有する母音もしくは子音、数、正負符号、記号、アイコン、および使用される言語および/または符号化の形態に対応する他のものを含むものとしてよく、
n)段階(1f)から(1k)において、キーワードCK3における前記符号化は、前記置換を開始する前記位置、および行列[A2]の前記暗号化を達成するために両方とも使用される前記「新しい順列」[B1]の前記巡回方向に対して使用されるべきであり、
o)段階(1g)において、ただ1つの「新しい順列」およびただ1つの「置換アルファベット」が、すべての行列[A2]を暗号化するために使用されるべきであり、
p)段階(1f)および(1g)において、段階(1l)および(1m)の受信者通信者に伝送する必要性を回避するために、使用されるべき前記「数集合」もキーワードCK2内で識別される必要があり、使用されるべき前記「置換アルファベット」もキーワードCK3内で識別される必要があり、
q)段階(1c)から(1g)において、キーワードCK1からCK3は、前記関わっているパラメータを考慮する(16×4)、(16×8)および(16×16)の行列サイズに対する、この目的のために設計されたキーワード生成器を用いて取得され得るか、またはそれらは以前に定義され、明確に識別されたキーワードのレパートリーを含むリポジトリから選択され、
r)前記方法に対する「暗号化ラウンド」をなす段階(1a)から(1k)において、これらは行列サイズ(16×16)で1回のみ、行列サイズ(16×8)で2回、(16×4)要素の行列サイズで3回適用されるべきであり、各場合において、キーワードトリオCK1、CK2、CK3の対応する数は、定義され得るか、またはすべての「暗号化ラウンド」において1つのキーワードトリオのみが使用されてよく、
s)方法の「暗号化ラウンド」をなす段階(1a)から(1k)は、(16x16)、(16x8)または(16x4)要素のサイズの行列に対して、確定され、前記受信側通信者と合意されるべき回数だけ適用され、各場合において、キーワードトリオCK1、CK2、CK3の前記対応する数は、定義され得るか、またはすべての「暗号化ラウンド」において1つのキーワードトリオのみが使用されてよく、
t)方法の「暗号化ラウンド」をなす段階(1a)から(1k)は、サイズが関わっている当事者間で確定されるべきである(M×N)要素の行列に対して、確定され、前記受信者通信者と合意されるべき回数だけ適用され、各場合において、キーワードトリオCK1、CK2、CK3の前記対応する数は、定義され得るか、または前記「暗号化ラウンド」のすべてにおいて1つのキーワードトリオのみも使用されてよい、と考えられるべきである請求項1に記載の方法。
【請求項3】
段階(1a)および(1b)において、
a)行列[A1]は、また[M×N]文字のサイズに対して定義され得ること、
b)「単語間隔」に対して、また前記「ベースメッセージ」内の「パディング文字」として「空白」を使用する代わりに、前記「置換アルファベット」からの別の文字、または行列[A1]の前記定義を完成するために使用する他のいくつかのものも使用することができること、
c)前記「ベースメッセージ」を含めるために複数の行列[A1]を定義する必要があった場合に、行列[A1]と同じサイズおよび数の、各々異なる「数集合」を有する、いくつかの行列[B1]を定義(生成または選択)することもできることをさらに含む請求項1および2に記載の方法。
【請求項4】
その段階(1c)および(1d)において、a)前記「ベースメッセージ」[A1]の前記並べ替えは、また、前記暗号化の後に実行されるように省かれてもよく、前記「数集合」[B1]を以前に並べ替えたことがあるだけでよく、このようにして、順序付けし直されるのは行列[C1]となり、前記「暗号化され並べ替えられたメッセージ」を有する行列[C2]を生成することをさらに含む請求項1および2に記載の方法。
【請求項5】
その段階(1c)、(1d)、および(1e)において、
a)前記行列[A1]および[B1]の各1つに対して、われわれはそれぞれ異なる並べ替え操作の等しい4分の1を適用することもできるか、または代替的に、それぞれ、異なる並べ替え操作の異なる4分の1を互いに適用することもでき、これらの代替的手段の各々において、行列[A2]および[B2]を生成するために前記並べ替え操作を定義する前記異なる方法のうちから1つを選択する必要があり、またそれらを適用するために使用される前記順序を選択する必要もあり、これは、キーワードCK1およびCK2にわたって前記対応する効果を有し、これは前記新しい並べ替え操作およびそれらの適用に使用される前記順序を反映しなければならないこと、
b)行列[A1]および[B1]の前記並べ替え操作は、繰り返すことによって(または新しいものを作成することによって)、4つよりも多い操作にすることもできることをさらに含む請求項1および2に記載の方法。
【請求項6】
段階(1f)において、
a)前記「ベースメッセージ」と同様に、前記「置換アルファベット」内の前記文字は、アルファベット(任意の言語)、英数字、記号、表意文字、音素、画像、または他のものであってよく、前記文字はASCII、UTF-8、Unicode、または符号化の他の任意の形態のデジタルもしくはアナログ方式で符号化され得ること、
b)前記「置換アルファベット」内のすべての「文字」の前記位置を決定するために、それが含み得る前記「文字の数」を並べ替える前記異なる方法のうちから1つを選択することが必要であること、
c)前記「ベースメッセージ」を含むように複数の行列[A1]が定義される場合、異なる「置換アルファベット」も、各行列に対して定義されてよく、これはキーワードCK3にわたる前記対応する効果を有し、これは識別符号を通じて前記「置換アルファベット」の前記新しい定義を反映しなければならないこと、
d)各[A2]行列に対して異なる「置換アルファベット」を使用するときに、前記「暗号化メッセージ」を含む行列[C1]を生成する間にそれらの適用に使用される前記順序を決定する必要があり、このことは、キーワードCK3にわたって前記対応する効果を有し、これは各断片にどのアルファベットが適用されるべきかを反映しなければならないことをさらに含む請求項1および2に記載の方法。
【請求項7】
段階(1g)および(1h)において、
a)前記「ベースメッセージ」を含むように複数の[A1]行列が定義される場合、異なる「置換の初期位置」が各行列[A2]に対して定義されてよく、このことは、キーワードCK3にわたって前記対応する効果を有し、これは各断片に対して前記異なる「置換の初期位置」を反映しなければならないこと、
b)前記「ベースメッセージ」を含むように複数の[A1]行列が定義される場合、異なる「置換操作」も、各[A2]行列に対して定義されてよく、これは、キーワードCK3にわたって前記対応する効果を有し、これは各断片にどの「置換関数」が適用されるべきかを反映しなければならないこと、
c)前記「置換操作」において、前記置換文字の前記位置を取得するために必要な前記変位は、性質(ほかにもあるがとりわけ、偶数か奇数か、素数か素数でないか、所与の数または所与の数のグループの倍数、所与の数の約数または数のグループの約数)、数値範囲(ほかにもあるがとりわけ、前記数集合のサイズまたは前記置換アルファベットのサイズの半分、3分の1、四分位数、五分位数、または十分位数)、前記「数集合」内の前記位置番号の他の何らかの特性、および/または処理される前記「新しい順列」の他の何らかの特性に基づき決定されてよく、前記変位は、また、この目的に合わせて定義された関数に基づき取得されてよく、これは、キーワードCK3にわたって前記対応する効果を有し、これはどのタイプまたはグループの文字にこれらの異なる変位が適用されるべきかを反映しなければならないこと、
d)したがって、置換関数の一例は、「s」が処理中の前記「新しい順列」の前記対応する数である場合、前記「置換アルファベット」内の前記置換文字の前記位置は、「s」が「偶数」である場合に、(s+1)個の位置だけ「昇格」(もしくは「降格」)することによって、または「s」が「奇数」である場合に、「s」個の位置だけ前記文字を「昇格」(もしくは「降格」)することによって取得され、それにより異なる置換操作を生成し各位置について使用されるべき前記置換文字を取得することを可能にすること、
e)複数の「暗号化ラウンド」に適用される前記「置換操作」において、各ラウンドで使用されるべき昇格操作および降格操作は、前記パラメータの残りを維持したまま、交互に行うことができること、
f)各[A2]行列に対して異なる「置換操作」を使用している間、前記「中間メッセージ」を含む行列[A2]を暗号化して前記「暗号化メッセージ」を含む行列[C1]を生成するために、異なる操作を適用しながら使用されるべき前記順序を決定する必要があり、これは、キーワードCK3にわたって前記対応する効果を有し、これは前記並べ替え操作を適用するために使用されるべき前記順序を反映しなければならず、前記置換に使用される前記「新しい順列」も反映しなければならないこと、
g)前記「ベースメッセージ」を含むように複数の行列[A1]を定義する場合、段階(1.e)において[A1]を並べ替えないと決定された場合に、各行列[A1]に対して異なる「新しい順列」[B2]を使用することによって[A1]行列のすべてが暗号化されるものとしてよく、そうでない場合、[A2]行列のすべては、前記同じ「新しい順列」[B2]を使用するか、または各「A2」行列に対して異なる「新しい順列」[B2]を使用することによって、暗号化され得ること、
h)各[A1]行列を暗号化するために異なる「新しい順列」を使用する間(段階(1e)において並べ替えることをしないと決定された場合)、または各[A2]行列を暗号化するために異なる「新しい順列」を使用する間、前記「暗号化メッセージ」を含む行列[C1]を生成するために行列[A1]または[A2]を暗号化している間に異なる順列を適用するために使用される前記順序を決定する必要もあり、このことは、キーワードCK3にわたって前記対応する効果を有し、これは前記メッセージの前記断片に各「新しい順列」を適用するために使用される前記順序を反映しなければならないことをさらに含む請求項1および2に記載の方法。
【請求項8】
段階(1g)から(1k)について、
a)段階(1e)において、前記暗号化操作の前に前記(1つまたは複数の)行列[A1]を並べ替えることをスキップすることが決定された場合、(1つまたは複数の)行列[C1]に前記並べ替えを適用することが必要になり、これはキーワードCK2およびCK3にわたって前記対応する効果を有し、これは並べ替えおよび暗号化を行っている間に使用されるべき前記順序を反映しなければならないことをさらに含む請求項1、2、および5に記載の方法。
【請求項9】
段階(1f)および(1g)について、
a)前記暗号化プロセスは、また、複数回実行されてもよく、前記追加の置換操作、前記初期置換位置のすべて、および前記巡回方向のすべてを含むようにキーワードCK3の前記定義を拡張し、前記置換操作は、繰り返されるか、または代替的に請求項7に記載の新しい置換操作を適用することができることをさらに含む請求項1、7、および8に記載の方法。
【請求項10】
段階(1f)から(1k)を実行した後に、
a)前記「暗号化メッセージ」の最終的転置を、前記「新しい順列」を開始するための初期位置を選択する「転写操作」を定義することによって、および前記順列を巡回するための方向(前記順列の先頭または末尾に向かう)を定義することによって、行うことができ、この場合、前記順列は周期的構造(末尾から先頭に接続する)を有すると想定され、
b)行列[C1]と同じサイズおよび同じ数の断片を有する行列[C3]を作成し、前記暗号化メッセージのすべての断片を、各断片について、前記転写を開始するために選択された可能性のある前記初期位置から始まる前記「新しい順列」の前記順序に従って転写し、これはキーワードCK3にわたって前記対応する効果を有し、これは[C3]を作成するために前記暗号化メッセージのすべての断片の前記転写操作を反映しなければならない請求項1から8のいずれか一項に記載の方法。
【請求項11】
段階(1a)から(1k)において、
a)説明された前記複数の選択肢のうちの可能な選択肢のどれが使用されることになるか、および/または前記方法を適用するために生成することが可能である前記複数の選択肢のうちの選択された選択肢を適用する間に使用する前記順序に関する決定であって、前記選択肢は、適宜、すべてのCK1、CK2およびCK3キーワードに符号化されなければならない、決定をさらに含む請求項1から8のいずれか一項に記載の方法。
【請求項12】
段階(1l)において、
a)段階(1a)において前記「ベースメッセージ」を含むように複数の行列[A1]を定義することを決定した場合、前記受信者通信者に、前記「数集合」[B1]のすべての前記識別子、および前記「置換アルファベット」[A0]の前記識別子のすべてを、前記定義されたリポジトリのすべてが安全保護下にあるという了解の下で保護される必要がない通信チャネルを使用して、伝送しなければならないことをさらに含む請求項1および2に記載の方法。
【請求項13】
段階(1m)において、
a)段階(1a)において、前記「ベースメッセージ」を含むように複数の行列[A1]を定義することを決定した場合、前記受信者通信者に、事前に合意した安全な通信チャネルを使用することによって、定義されているであろう行列[C1](または[C2]、または[C3])に含まれている前記暗号化メッセージのすべて、および定義されているであろう前記キーワードCK1からCK3(またはその識別子)のすべてを、伝送しなければならないことをさらに含む請求項1および2に記載の方法。
【請求項14】
段階(1n)において、
a)段階(1a)において発出側通信者が前記「ベースメッセージ」を含むように複数の[A1]行列を定義することを決定した場合、前記メッセージを復号するために、前記受信側通信者は前記「置換アルファベット」(またはその識別子)、前記キーワードCK1からCK3(またはその識別子)、前記「暗号化メッセージ」を含む前記行列[C1]、[C2]または[C3]、および前記元の「数集合」(またはその識別子)を含む前記行列[B1]に基づき、説明されているように逆に前記方法を適用しなければならないことをさらに含む請求項1および2に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化方法およびそれを使用する装置を用いる電子通信に関係し、所与のデータ列、同様に、理解できる原文は、級数、数列、もしくは連続する数を再配置することに基づき、事前定義済みシステムに従って、データもしくはデータグループを転置することを用いて、またはそれらを他のデータに置き換えることを用いて、理解できないデータ列に変換される。特に、これは、対称キーワードを用いる、そのようなキーワードを復号する試みに耐える強度がキーワードの長さに依存しない、ブロック暗号化アルゴリズムを取り扱う。
【0002】
産業用途
これは、人間の通信者同士の間、またはインターネットに接続されているデジタル通信機器、コンピュータ、もしくは他の機器もしくはデバイスの間で交換されるデジタルメッセージおよび異なる電子商取引を保護するために適用され得る。
【背景技術】
【0003】
すべての暗号システムは、独立して、または組み合わされて適用される2つの操作、すなわち、「ベースメッセージ(base message)」(今日では任意のデジタルまたはアナログメッセージ形式を有することができる、受信側通信者(recipient correspondent)に送信したい情報)の文字を「転置」(または「再配置」)する操作および「ベースメッセージ」内の文字を「置換」する(置き換える)操作に基づく隠蔽メカニズムを有する。われわれが達成しようとする効果は、「ベースメッセージ」を「暗号化メッセージ」に変換するために、どの転置および置換操作が実行されたかを知らないすべての人、およびそのような操作を適用する際にどのような順序が使用されたかを知らないすべての人への「ベースメッセージ」の暗号化(隠蔽)である。
【0004】
われわれが「ベースメッセージ」を、暗号化方法によって処理されるべき文字のブロックに断片化する場合、このことを「ブロック暗号化」と称することができる。コンピュータの計算能力および速度に起因する、代替的方法は、ベースメッセージ内のすべてのデータチャンクまたは文字を暗号化することであり、これを「ストリーム暗号化」と称する。メッセージを復号するのに必要な鍵が、暗号化するために使用されたものと同じである場合、われわれは「対称」暗号システムを有する。異なるキーワードが暗号化と復号に必要な場合、われわれは「非対称」暗号システムを有する。
【0005】
今日では、これら2つのタイプのシステムはいくつかあり、通常、商取引、電子メールメッセージ、さまざまなデジタルまたはアナログコンテンツのファイルを伝送するために、および「重要」または「通常」の性質を持つ多くの情報パケットのインターネット経由の伝送に適用されている。これらのシステムのうちとりわけ、われわれは、たとえば、以下のものを見つけることができる。
【0006】
RSA:対称アルゴリズムRC5(1994年に設計された)を使用するが、これは32、64、または128ビットブロック(64ビットが推奨設定である)を扱い、キーワード長は最大1024ビット(128ビットが推奨設定である)であり、2^128(=3.40×10^38)の「鍵空間」を与え、18から20暗号化ラウンド(12ラウンドが推奨設定である)を処理する。
【0007】
1991年から2007年にかけて、RSA Securityは、特許譲受人として、2048ビットまでのキーワードを「クラック」することができた人に報酬を提供し、したがって2003年までに、推奨は、1024ビットキーワード(128文字に相当する)を使用し、1ラウンドあたりの鍵空間のサイズを(2^1024)=1.79×10^308に増やすことであった。最近の結果のうちのとりわけ、2019年12月に、795ビットキーワードへの攻撃の成功が発表されている。
【0008】
AES:これは128ビットブロックのみを使用し、128ビットキーワード(および10暗号化ラウンド)、192ビットキーワード(および12暗号化ラウンド)、ならびに256ビットキーワード(14暗号化ラウンド)を有し、1ラウンドあたりの鍵空間はそれぞれ2^128(=3.40×10^38)、2^192(=6.27×10^57)、および2^256(=1.15×10^77)である。
【0009】
TWOFISH:このアルゴリズムは、128ビットブロック、12暗号化ラウンド、ならびに128、192、および256ビットのキーワードサイズ(1ラウンドあたりの鍵空間は最大で(2^256)=1.15×10^77となる)で動作する。
【0010】
IDEA:64ビットブロックならびに連続する回転および断片化を通して52×16ビットキーワード((2^16)^52=2.86×10^250の鍵空間に相当する)を生成するために使用される128ビットキーワードで動作する。
【0011】
DES:1975年に作成された規格であり、64ビットブロック、16暗号化ラウンド、および56ビットキーワードで動作し、(2^56=7.2×10^16)の組合せの1ラウンドあたりの鍵空間を有していた。これは1999年に、3×56ビットキーワード((2^56)^3=3.74×10^50の1ラウンドあたりの鍵空間となる)で動作する3DESに置き換えられた。
【0012】
2012年に56ビットDESキーワードを26時間以内にクラックできるオンライン無料サービスが簡単に利用できるようになったので、現在もキーワードのサイズは拡大し続けている[https://crack.sh]。
【0013】
改善領域
現在利用可能なシステムのほとんどは、その「強度」の基礎を暗号化キーワードの長さに置いている。そうであれば「強度」は「総当たり」攻撃に耐える能力である、すなわち、キーワードの長さに基づき、またキーワードに含まれる異なるタイプの文字に基づき、すべての可能なキーワード選択肢をテストすることによって、キーワードを「推測」する試みに抵抗できる能力である。したがって、キーワードが含む文字が多ければ多いほど、システムの「強度」は高くなる。
【0014】
たとえば、AES-128では、128ビットキーワード(16文字に相当する)は、(2^128)の鍵空間を生成し、AES-192では、192ビットキーワード(24文字に相当する)は(2^192)の鍵空間を生成し、AES-256では、256ビットキーワード(32文字に相当する)は(2^256)の鍵空間を生成する。コンピュータの設計の成果を鑑みると、このことは暗号システムの弱点となっている、なぜなら、集積密度が1チップ当たり(5×10^10)のトランジスタに近づいたことで(2018年時点において)利用可能になったコンピューティングパワーにより、128ビットキーワード、さらには192ビットキーワードさえも、「機密性のない」SWアプリケーションに対してであっても「安全ではない」と考えられる。
【0015】
他方、「大きい長さ」のキーワードの作成は、キーワード生成の多様性(ランダム性)を実際に保証することならびにその取り扱いおよび関係者への拡散を確実にすることを困難にするので、「長い」キーワードの使用は、既存のシステムに別の弱点をもたらすことになる。これは、生成済みキーワード(1024ビット鍵は128個の英数字または他のタイプの文字に相当する)をユーザが「覚えておく」ことをより困難にする、「真の」ランダムなキーワードを生成することを含む、何らかのキーワード管理メカニズムを確定することを強制するからである。
【0016】
さらに、既存のシステムのいくつかは、複雑度の低い転置および置換の操作に基づく「暗号化」メカニズムを有しており、いくつかの「暗号化ラウンド」を適用することによって、すなわち、暗号化に必要なステップを繰り返す(10から16回)ことによって、この効果を相殺することが必要になるが、そうすると復号プロセスに影響を及ぼすので、さらに不便になり得る。
【0017】
発明の新規性
本発明に類似する他の交付済み特許に関する態様を参照すると、暗号化/復号プロセスを実行するための数列の使用は、2011年8月9日に公開された米国特許第7995748-B2号、名称「Method and Apparatus for providing encryption/decryption using two sequences of numbers」において言及されている。しかしながら、そのようなシステムは、数列の種類を、本発明において使用され得る数列のサブセットに制限している。
【0018】
実際、前記特許では、提案された方法は、サイズ(8×8)の行列に基づいており、「ナイト巡回問題」(チェスのナイトで、チェス盤(8×8)のすべてのマス目を1度ずつ訪れ、どのマス目も2度訪れないようにできるか、という問題)の解を扱うもので、その解は、(1.06×10^14)と推定される[参照:G. P. Jellissのウェブサイト「Knight's Tours Notes」にある「Some enumerations of Classes of Knight's Tours」[_www.mayhematics.com/t/8a.html]]が、しかしながら、ここで紹介されている方法で(8×8)行列に対して生成することが可能な数列の個数は64!(64の階乗=1.26×10^89)であり、これは最初のものよりかなり大きい数である。
【0019】
「ナイト問題」の解を数列として使用することは、2016年12月29日に公開された米国特許出願第2016/379527号(放棄されたとおり)において説明されている暗号化方法でも言及されており、暗号化プロセスに解を使用する別の異なる方法が提案されている。
【0020】
両方の場合において、(10^14)個より少し多い解に利用できるレパートリーはまだないが、1862年にフランスの修道院長Philippe Jolivaldが「ナイト問題」に対する413,000個を超える解を公開したが、これは(自動アルゴリズムを用いて)「総当たり」攻撃を大幅に容易にするであろう。
【0021】
本発明では、暗号化方法の段階のいずれに、「ナイト巡回問題」の解を使用しない。同様に、本発明において数列、級数、および連続する数に与えられる使用は、前に参照された2つの特許で与えられた使用との関係を有しない。さらに、本発明では、順列の使用を考慮しているが、その順列の数列は使用することが可能な多くのケースのうちの特定のケースにすぎない。
【先行技術文献】
【特許文献】
【0022】
【特許文献1】米国特許第7995748-B2号
【特許文献2】米国特許出願第2016/379527号
【非特許文献】
【0023】
【非特許文献1】G. P. Jellissのウェブサイト「Knight's Tours Notes」にある「Some enumerations of Classes of Knight's Tours」[_www.mayhematics.com/t/8a.html]
【発明の概要】
【発明が解決しようとする課題】
【0024】
本発明によれば、これは生成済み鍵に対する必要なランダム性を解決するが、本発明の方法では、キーワードはランダムではなく、それらが適用されるべき各段階で実行されるアクションを符号化するときにそれらが生成されるからである。
【0025】
本発明によれば、これは、キーワードの長さ(1024ビット以上)を通じて方法の強度を得ることに関係する、現行システムの弱点も解決するが、それは、その強度が暗号化プロセスで実行される異なる操作を通じて、それらの操作のうちの各操作について利用可能な非常に多くの選択肢と組み合わされて、達成されるからである。実際、(好ましい実施形態において)使用されるべきキーワードは、320ビット(40個の英数字、または他のタイプの文字)以下であり、それにもかかわらず、この方法の強度は影響を受けない。
【0026】
本発明によれば、後者は、キーワードが、関わっている操作を通じて達成されるべき所望の効果に従って「設計」され、「符号化」されるべきであるか、または以前に生成されたキーワードのレパートリーから選択されるべきであるので、大きいサイズのキーワードを管理する必要性によって生じる弱点をも解決する。したがって、鍵がデジタルリポジトリから(ランダムにまたは順次的に)選択される場合でも、これらはランダムに生成されるわけではない。
【0027】
本発明によれば、方法の強度を改善する可能性は、(自動アルゴリズムを用いて)「総当たり」攻撃で探索されるべき選択肢の数を増やすパラメータのいくつかにおける異なる変更を実行することによっても利用可能であり、その結果、RSA-1024(2^1024=1.79×10^308)のものと同等になる。その中でも、特筆すべきは以下の点である。
【0028】
* 使用する「数列」のサイズを増やすことによる:たとえば、64個の数の集合を使用するとき、その異なる並べ方の数は64!(64の階乗=1.26×10^89)である。その一方で、この集合が128個に増やされた場合、異なる順列の数は128!(128の階乗=3.85×10^215)に増える。
【0029】
* 使用する順列の数を増やすことによる:たとえば、各々64個の2つの数集合を使用しているが、異なる並べ方の数は(64!×64!)、すなわち64の階乗×64の階乗に増える。すなわち、1.61×10^178であるが、われわれが128個の数からなる2つの集合を使用する場合、これは128!×128!(128の階乗×128の階乗、すなわち、1.48×10^431)に増える。
【0030】
* 使用される「置換アルファベット」の数を増やすことによる:たとえば、26文字アルファベットでは、われわれが生成することができる異なるアルファベットの数は26!(26の階乗=4.03×10^26)である。しかし、われわれが2つの26文字アルファベットを使用する場合、その数は(26!)^2([26の階乗]の二乗、すなわち1.62×10^53)に増える。
【0031】
* 使用される「置換アルファベット」のサイズを増やすことによる:たとえば、われわれが文字の個数を二倍する(文字を繰り返すことなく、たとえば、大文字および小文字を含めることによって、または特殊文字、およびアクセント記号付き母音を追加することによって)場合、異なるアルファベットの数は52!(52の階乗=8.06×10^67)に増える。
【0032】
* したがって、われわれが128個の数の順列と4個の26文字「置換アルファベット」とを使用する効果を組み合わるだけの場合、異なる選択肢の数は(128!×(26!)^4)、すなわち(1.02×10^322)となるので、RSA-1024のうちの1つを超える強度を有することになる。
【0033】
最後に、本発明および前の段落で述べたことによれば、われわれは方法の強度を改善するためにいくつかの「暗号化ラウンド」を適用しなければならないという不便さを軽減することも可能であり(いくつかの「暗号化ラウンド」を適用することも方法の強度を改善する方法の1つであるが)、この結果、暗号化および復号の適用が容易になるが、このことは「総当たり」攻撃(自動アルゴリズムを用いる)において探索される必要がある選択肢の数の減少を意味しない。
【課題を解決するための手段】
【0034】
ここに提示される方法は、予備段階を実行することを用いて、データ転置と置換が行われる3つのプロセスを適用することによって、デジタル方式でまたはアナログ方式で符号化された、データ列(「ベースメッセージ」)を暗号化し、暗号化を行うために適用される方法を無視する第三者にとって理解できないもの(「暗号化メッセージ」)にすることを可能にする。説明のために、われわれは、データ列が「英数字文字」を含むと仮定するが、付属の請求項に記載されているとおり、その構成はもっと広範囲で多様であり得る。
【0035】
予備段階:定義および前のステップ
・ 暗号化されるべき「ベースメッセージ」を定義する、
・ 「ベースメッセージ」を並べ替えるための4つの操作を定義する、
・ 暗号化の際に使用する「ブロックサイズ」(64、128、または256個の文字を含む)を選ぶ、
・ 定義された「ブロックサイズ」に従って、「ベースメッセージ」を収容する「行列サイズ」を選択する、すなわち、64文字ブロックについては(16×4)を選択し、128文字ブロックについては(16×8)を選択し、256文字ブロックについては(16×16)を選択する、
・ サイズが「ブロックサイズ」と同じである、暗号化プロセスにおいて使用されるべき「数集合」を定義する。「数集合」は、「1」から選択されたブロックのサイズ(64、128、または256)までの連続する数を含む、
・ 「数集合」を並べ替えるための4つの操作を定義する、
・ 「置換アルファベット」(26文字のアルファベット)を定義する、
・ 「暗号化メッセージ」を生成するために発出側通信者によって、また前記「暗号化メッセージ」を復号するために受信側通信者によって使用されるキーワードCK1、Ck2、およびCK3を定義する、
・ 「置換アルファベット」をサイズ(26×1)の行列[A0]に転写する、ただし、「26」はアルファベットにおける文字の個数である、
・ 選択された「ブロックサイズ」に従って、「ベースメッセージ」を断片化する、
・ 「ベースメッセージ」を複数の行列[A1]に転写する。使用する行列の数は、「ベースメッセージ」内の文字の数と「ブロックサイズ」と間の商に依存する、
・ 「数集合」を行列[A1]と同じサイズの行列[B1]に転写する。
【0036】
プロセス1:「ベースメッセージ」[A1]を並べ替えて「中間メッセージ」[A2]を生成する
・ 操作1:キーワードCK1を指示するものに基づき、[A1]行列内の行を転置する、
・ 操作2:キーワードCK1を指示するものに基づき、[A1]行列内の列を転置する、
・ [A1]行列内の同心平行四辺形を定義する、
・ 操作3:キーワードCK1を指示するものに基づき、各同心平行四辺形内の文字を回転させる、
・ 操作4:キーワードCK1を指示するものに基づき、[A1]行列を対称移動する、
・ 説明したばかりのこれら4つの操作を適用している間に、「中間メッセージ」を含む行列[A2]が生成される。
【0037】
プロセス2:「数集合」[B1]を並べ替えて「新しい順列」[B2]を生成する
・ 操作1:キーワードCK2を指示するものに基づき、[B1]行列内の行を転置する、
・ 操作2:キーワードCK2を指示するものに基づき、[B1]行列内の列を転置する、
・ [B1]行列内の同心平行四辺形を定義する、
・ 操作3:キーワードCK2を指示するものに基づき、各同心平行四辺形内の文字を回転させる、
・ 操作4:キーワードCK2を指示するものに基づき、[B1]行列を対称移動する、
・ 説明したばかりのこれら4つの操作を適用している間に、「新しい順列」を含む行列[B2]が生成される。
【0038】
プロセス3:「中間メッセージ」[A2]を暗号化して「暗号化メッセージ」[C1]を生成する
・ 「新しい順列」とともに「置換アルファベット」をどのように使用するかに関してキーワードCK3を指示するものに基づき、「中間メッセージ」に対して文字置換を実行し、「暗号化メッセージ」[C1]を生成する、
・ 未保護チャネルを用いて受信側通信者に、「暗号化メッセージ」および元の「数集合」を伝送する、
・ 事前合意した保護チャネルを用いて受信側通信者に、キーワードCK1、CK2、およびCK3、ならびに「置換アルファベット」を伝送する。
【0039】
本発明は、(5×4)行列上の実装例とその対応する任意選択の代替的形態のいくつかとを説明する添付図面とともに読んだときに次の説明からより完全に理解できるが、これらは説明を目的として提供されているだけであり、その実装形態および使用をいかなる形でも、または付属の請求項において定義されているものに関して、制限することを意図するものではない。
【図面の簡単な説明】
【0040】
【
図1】アプリケーション例を示す図であって、 行列[A1](図中の101)は「ベースメッセージ」の一般的な例を示し、行列[A1a]、[A1b]、[A1c]、および[A2](図中102から106)は、キーワードCK1で記述される基本操作が初期「ベースメッセージ」を並べ替えてそれを「中間メッセージ」を含む行列[A2](図中106)に変換する一例を示し、 行列[B1](図中201)は「数集合」の一般的な例を示し、行列[B1a]、[B1b]、[B1c]、および[B2](図中202から206)は、キーワードCK2で記述される基本操作が初期「数集合」を並べ替えてそれを「新しい順列」を含む行列[B2](図中206)に変換する一例を示し、 行列[C1](図中303)は、キーワードCK3で記述されている「置換関数」を適用することによって、行列[A2](図中302)上の「中間メッセージ」が、「新しい順列」[B2](図中301)を用いて「暗号化メッセージ」に変換される一例を示し、
図1の同じすでに言及されている行列は、後ろ方向に見たときに、行列[A1](図中101)に示されている「ベースメッセージ」を取得するための行列[C1](図中303)からのメッセージに対する復号操作を例示する、図である。
【
図2】「数集合」、「新しい順列」、および「置換アルファベット」との位置関係における、各行列に対する構成要素を示す図であって、図中の6個の行列は、前の図で説明されている例について、各行列に対する構成要素文字(図中の402、403、405、407、409、および411)、アルファベット(401)に対する連番、それらの行列に対する文字構成要素(図中の404、406、408、410、412)の、「新しい順列」の各位置(図中の409および410)に対する、座標を詳細に示し、行列[A1]および[A2]は、元の「ベースメッセージ」(図中の403および404)および「中間メッセージ」(図中の405および406)を示し、行列[B1]および[B2]は、「初期数集合」(図中の407および408)および「新しい順列」(図中の409および410)を示し、最後に、行列[C1]は「暗号化メッセージ」(図中411)を示す、図である。
【発明を実施するための形態】
【0041】
図面の詳細な説明
例:
図1-本発明において説明されている方法の適用:
暗号化プロセス:
この図では、暗号化を達成するために必要なステップのすべてを示す完全な例が示されている。前記の例は、(5×4)行列を使用して作成されたもので、受信側通信者に配信されるべき20文字メッセージを、(1)→(2)→(3)のように説明されるステップ(プロセス)を実行した後に暗号化する。
【0042】
1)「中間メッセージ」を生成する:
(101)元の(秘密)の「ベースメッセージ」:
(5×4)「ベースメッセージ」を暗号化するために、われわれはキーワード「CK1=4231ACBED-04V」を含む「中間メッセージ」を生成しなければならないことを知った上で、
図1において、前記「中間メッセージ」を生成するためのすべての必要なプロセスのステップを詳細に見ることができる。
【0043】
(102)行列[A1]内の行を転置する:
キーワードCK1の先頭4文字(「4231」)を用いて、われわれは、行列[A1]内の行を、キーワード内の指令に従い、(この場合に)その相対位置を「4321」から「4231」に変更することによって、垂直方向に転置し
図1に示されている行列[A1a]を生成する。したがって、[A1]内の行「4」は第4の位置([A1a]内の上端)を維持し、[A1]内の行「3」は[A1]の第2の行から[A1a]内の第3の行に移動し(下端から数える)、[A1]内の行「2」は[A1]の第3の行から[A1a]内の第2の行に移動し、[A1]内の行「1」はその位置([A1a]内の下端)を維持する。
【0044】
(103)行列[A1a]内の列を転置する:
キーワードCK1内の次の5文字(「ACBED」)を用いて、われわれは、行列[A1a]内の列を、キーワード内の指令に従い、その相対位置を「ABCDE」から「ACBED」に変更して、水平方向に転置し、
図1に示されている行列[A1b]を生成する。
【0045】
したがって、行列[A1a]内の列「A」は、その位置を行列[A1b]内の第1の列(一番左の列)として維持し、列「B」は[A1a]内の第2の列から[A1b]内の第3の列に移動し、列「C」は[A1a]内の第3の列から[A1b]内の第2の列に移動し、列「D」は[A1a]内の第4の列から[A1b]内の第5の列(一番右の列)に移動し、列「E」は[A1a]内の第5の列から[A1b]内の第4の列に移動する。(
図1参照)。
【0046】
(104)[A1b](シフトなし)内の同心平行四辺形の定義:
行列[A1c]内の同心平行四辺形を転置すること(次のステップで)を円滑にするために、「ベースメッセージ」の位置の分布が行列[A1b]内に示され、行と列はすでに転置されているが、ただしキーワードCK1で定義されている文字の回転を行う前である。
【0047】
(105)行列[A1c]内の同心平行四辺形を転置する:
キーワードCK1内の次の3文字(「-04」)を用いて、われわれは、行列[A1c]「シフトなし」(
図1の104)に示されている同心長方形内のセルの内容を、そのような内容を反時計回りに「4」位置だけ移動することによって(反時計回り回転は「マイナス」記号「-」で指示される)、転置する。
【0048】
したがって、(たとえば)行列104内の内側の同心長方形の上行内の文字「t-s-s」は、同じ長方形の行列[A1c]「シフト済み」(
図1の105)内の座標(d,3)-(d,2)-(c,2)に移動し、一方(たとえば)行列104(
図1)内の文字「h-l-o」は、座標(a,4)-(b,4)-(c,4)から行列[A1c]「シフト済み」(
図1の105)内の外側同心長方形内の座標(b,1)-(a,1)-(a,2)に移動する。
【0049】
(106)行列[A1c]を対称移動プロセスを用いて転置し、行列[A2]を取得する:
キーワードCK1内の最後の文字(「V」)を用いて、プロセス(105)で生成された行列は、垂直方向に対称移動され、「中間メッセージ」(
図1の106)の行列である、行列[A2]を生成し、それにより、われわれが「垂直方向対称移動」を実行しているので、行列の行への新しい転置が生成され、行4([A1c]の上端)は行1([A2]の下端)に移動し、[A1c]の行3は[A2]の行2に移動し、以下同様に、行列[A1c]内のすべての行が転置されて[A2]を形成するまで続く(
図1参照)。
【0050】
キーワードCK1の構造および長さ:
ここまでで、キーワードCK1の構造および長さは、以下のように定義されると言える:
CK1=「(N)行並べ替え」+「(M)列並べ替え」
+「回転方向」(「+/-」)+「回転変位(G)」
+「対称移動のタイプ」(「H」=水平、「V」=垂直、「R」=右対角、「L」=左対角)=「N」文字+「M」文字+1文字
+2数字+1文字。
この例の場合、キーワード長は=4+5+1+2+1=13文字=104ビットである。
【0051】
2)「新しい数列」(行列[B2])を生成する:
(201)「数集合」[B1]を定義する:
「数集合」が定義されているか、またはリポジトリ(行列[B1])から選択されていると仮定すると、キーワード「CK2=3142BDAEC+03H」に従って、
図1において、われわれは、次の段階を含む、「新しい順列」を生成するプロセスのすべてのステップを詳細に見ることができる:
【0052】
(202)行列[B1a]内の行転置:
キーワードCK2内の先頭4文字(「3142」)を用いて、われわれは、行列[B1]内の行を、キーワード内の指令に従い、その相対位置を「4321」から「3142」に変更して、垂直方向に転置し
図1に示されている行列[B1a]を生成する。
【0053】
したがって、行「4」は第1の位置(行列[B1]内の下端)から行列[B1a]内の第3の行に移動し、行「3」は[B1]内の第2の行から行列[B1a]内の第1の行に移動し、行「2」は[B1]内の第3の行から行列[B1a]内の第4の行に移動し、行「1」は[B1]内の第4の行から行列[B1a]内の第3の行に移動する(
図1参照)。
【0054】
(203)行列[B1b]内の列を転置する:
キーワードCK2内の次の5文字(「BDAEC」)を用いて、行列[B1a]内の列は、キーワード内の指令に従い、その相対位置を「ABCDE」から「BDAEC」に変更して、水平方向に転置され、行列[B1b]を生成する。
【0055】
したがって、列「A」は行列[B1a]内の第1の位置(一番左の列)から行列[B1b]内の第3の列に移動し、列「B」は[B1a]内の第2の位置から[B1b]内の第1の列に移動し、列「C」は[B1a]内の第3の列から行列[B1b]内の第5の列に移動し、列「D」は[B1a]内の第4の列から行列[B1b]内の第2の列に移動し、列「E」は[B1a]内の第5の列から行列[B1b]内の第4の列に移動する。(
図1参照)
【0056】
(204)[B1c](シフトなし)内の同心平行四辺形を定義する:
行列[B1c]内の同心平行四辺形を転置すること(次のステップで)を円滑にするために、「数集合」の位置の分布が行列[B1b]「シフトなし」内に示され、行と列はすでに転置されているが、ただしキーワードCK2で定義されている回転を行う前である。
【0057】
(205)行列[B1c](シフト済み)内の同心平行四辺形を転置する:
キーワードCK2内の次の3文字(「+03」)を用いて、われわれは、行列[B1b]に示されている同心長方形内のセルの内容を、前記内容を時計回りに「3」位置だけ移動することによって(その回転は「プラス」記号「+」で指示される)、転置する。
【0058】
したがって、(たとえば)行列[B1c]「シフトなし」の内側同心長方形の上行の数字「14-1-19」は、「19-1-14」として、同じ長方形の下行に移動し、(たとえば)行列[B1c]「シフトなし」内の外側長方形の最上行の数字「6」(その同心長方形内の数の残りとともに)は、右へ位置3つ分移動する(
図1内の行列[B1c]参照)。
【0059】
(206)行列[B1c]を対称移動プロセスを用いて転置し、行列[B2]を取得する:
キーワードCK2内の最後の文字(「H」)を用いて、行列[B1c]は前のステップで生成され、「新しい順列」(
図1の206)の行列である、行列[B2]を生成し、それにより、われわれが「水平方向対称移動」を実行しているので、行列の列への新しい転置が生成され、列1(一番左の列)は位置5に移動し、列2は位置4に移動し、行列内のすべての列が転置されるまでこれを続ける(
図1参照)。
【0060】
キーワードCK2の構造および長さ:
ここまでで、キーワードCK1およびCK2の構造および長さは、以下のように同じ構成要素によって定義されると言える:
CK2=「(N)行並べ替え」+「(M)列並べ替え」
+「回転方向」(「+/-」)+「回転変位(G)」+「対称移動のタイプ」(「H」=水平、「V」=垂直、「R」=右対角、「L」=左対角)
=「N」文字+「M」文字+1文字+2数字+1文字
この例の場合、キーワードの長さは=4+5+1+2+1=13文字=104ビットである。
【0061】
3)暗号化メッセージを生成する:
「新しい順列」(301:行列[B2])および「中間メッセージ」(302:行列[A2])を使用して、キーワードCK3=「01A」により「暗号化メッセージ」(303:行列[C1])を生成する:
【0062】
(301)「新しい順列」:
視覚的参照のためだけに含まれる(プロセス206と同じ)。
【0063】
(302)「中間メッセージ」:
視覚的参照のためだけに含まれる(プロセス106と同じ)。
【0064】
(303)「暗号化メッセージ」:
キーワードCK3内の3文字(「01A」)を用いて、われわれは暗号化を、「中間メッセージ」内のテキストを置換し、文字を「新しい順列」で指示される位置の数だけ進め、それにより行列[C1]を、位置(「01」)で始まる順列を読み込み、キーワードで定義されているように、昇順で数列を巡回する(巡回方向は「Ascending」の「A」で示される)ことによって生成することによって実行する。
図1では、われわれはメッセージを暗号化している間にプロセスのすべてのステップを詳細に見ることができる。
【0065】
したがって、(たとえば)「新しい順列」内の位置「01」(行列[B2]内の座標(c,2)に対応する)から始めることで、行列[A2]内の座標(c,2)にある文字「m」は、行列[C1]内の座標(c,2)において、位置1つ分前にある文字(「01A」)で置換されなければならないことを指示する。置換アルファベット内の文字「m」の次の文字は文字「n」である。したがって、行列[C1]内の座標(c,2)において、「中間メッセージ」からの文字「m」は、暗号化メッセージ内の文字「n」で置換される。
【0066】
「新しい順列」内の位置「02」(行列[B2]内の座標(a,4))において、文字「l」(行列[A2]内の座標(a,4))は、文字「n」(置換アルファベット内で文字「l」の位置2つ分先にある)で置換され、行列[C1]内の座標(a,4)のところに挿入される。
【0067】
「新しい順列」における位置「03」(行列[B2]内の座標(e,4))については、「中間メッセージ」内の文字は、ワードスペーサとして使用されている「*」であり、これはすでに述べたように、置換されないので、行列[C1]内の座標(e,4)には同じ文字「*」が挿入される。
【0068】
位置「04」([B2]内の座標(d,4))により、行列[A2]内の文字「c」は、行列[C1]内の座標(d,4)で文字「g」(置換アルファベット内の文字「c」の位置4つ分先にある)で置換され、というように、「中間メッセージ」内のすべての文字を置換するまで続き、暗号化を終了して行列[C1]を生成する。
【0069】
推定されるように、「新しい順列」内の位置番号が使用されている置換アルファベット内の文字の数を超えたときに、われわれはそれを昇順の巡回では最初の文字へ、降順の巡回では最後の文字へ移動する、輪状文字列と考えなければならない。
【0070】
キーワードCK3の構造および長さ:
見ると分かるように、キーワードCK3の構造および長さは、以下のように定義される:
CK3=「置換を開始する開始位置」
+「巡回方向(A=昇順/D=降順)」
この例の場合、キーワードの長さは=2数字+1文字=3文字=24ビットである。
【0071】
図2:初期「数集合」、「新しい順列」、および「置換アルファベット」との位置関係における、各行列に対する構成要素。
【0072】
図2は、「置換アルファベット」[A0]のすべての位置に対する、「ベースメッセージ」[A1]に対する、「中間メッセージ」[A2]に対する、「数集合」[B1]に対する、「新しい順列」[B2]に対する、および「暗号化メッセージ」[C1]に対する、
図1において作成された例の中の6個の行列の各々の内容の詳細を示している。
【0073】
行列[A0]:置換アルファベット。
(401): 「置換アルファベット」内の文字に対する位置「1」から「26」、
(402): 「中間メッセージ」を暗号化している間に、置換に使用され得る可能性のある文字に対する最も単純な分布を有するアルファベットに対するテキスト。
【0074】
行列[A1]:「ベースメッセージ」
(403): 作成された例における秘密「ベースメッセージ」に対する元のテキスト、
(404): 行列[A1]内の「ベースメッセージ」の各文字に対する座標。
【0075】
行列[A2]:「中間メッセージ」
(405): 例における「中間メッセージ」に対する転置されたテキスト、
(406): 行列[A2]内の「中間メッセージ」の各文字に対する座標。
【0076】
行列[B1]:「初期数集合」
(407): 例において使用される「数集合」に対する位置「1」から「20」、
(408): 行列[B1]内の「数集合」の各位置の座標。
【0077】
行列[B2]:「新しい順列」
(409): 例において生成された「新しい順列」に対する位置「1」から「20」、
(410): 行列[B2]内の「新しい順列」に対する各位置に対する座標。
【0078】
行列[C1]:「暗号化メッセージ」
(411): 例において生成された「暗号化メッセージ」に対するテキスト、
(412): 行列[C1]内の「暗号化メッセージ」の各文字に対する座標。
【0079】
復号プロセス:
図1において、暗号化例を説明するために詳細に記述した内容は、復号プロセスのための必要なすべてのステップを説明するためにも使用され得る。発出側通信者が暗号化メッセージを受信者に送信したこと、(非保護チャネルを通じて)公開数集合とともにそれを受信したこと、および(事前に合意した保護チャネルを通じて)対応するキーワードも受信したことを想定すると、次のステップは、復号プロセスについて次のように記述される(適用される順序を例示するため、また「復号」するためにわれわれは「暗号化」の効果を戻さなければならないという事実をより明らかにするために、暗号化プロセスのステップ番号が保持されていることに注意):
(1a→1d)→(3)→(2d→2a)
【0080】
1 「新しい順列」(行列[B2])を生成する:
元の「数集合」(行列[B1])を用い、受信者によって発出側通信者から受信されたキーワード「CK2=3142BDAEC+03H」を使用することによって、次の操作を含むプロセスにより、「新しい順列」の生成が実行され得る:
1a)行列[B1]内の行を転置し、
図1に示されている行列[B1a]を生成する、
1b)行列[B1a]内の列を転置し、
図1に示されている行列[B1b]を生成する、
1c)行列[B1b]「シフトなし」内の同心平行四辺形を転置し、
図1に示されている行列[B1c]を生成する、
1d)行列[B1c]の「水平方向対称移動」を行い、
図1に示されている行列[B2]を生成する、
【0081】
3)「暗号化メッセージ」から「中間メッセージ」を復元する。
発出側通信者から受信された暗号化メッセージ[C1]およびキーワードCK3=「01A」を取り出して、
図1において、われわれはキーワードCK3を使用することによって実行される置換操作を元に戻して行列[A2]を生成することを用いて「中間メッセージ」を復元するプロセスを詳細に見ることができる:
【0082】
メッセージを暗号化するプロセスと同様に、われわれが行ったのは、「中間メッセージ」からの各文字を、「新しい順列」の位置を使用して置換が行われている順列の位置で指示される文字の数だけ文字を「進める」ことによって置換し、「中間メッセージ」を復元することであり、暗号化メッセージの文字を、置換が適用されている順列の位置によって指示される置換アルファベット内の位置の数だけ、「後退」させるだけでよい。
【0083】
したがって、暗号化メッセージの位置「01」(行列[C1]内の座標(c,2)にある文字「n」)については、われわれは文字「n」から位置1つ分「戻」らなければならない、すなわち、行列[A2]内の座標(c,2)において、今は、「m」(置換アルファベット内で「n」の前の文字である)がなければならない。
【0084】
暗号化メッセージの位置「02」(行列[C1]内の座標(a,4)にある文字「n」)については、われわれは文字「n」を位置2つ分「後退」させなければならない、すなわち、行列[A2]内の座標(a,4)において、今は、文字「l」(置換アルファベット内で「n」から位置2つ分前の文字である)がなければならない。
【0085】
暗号化メッセージの位置「03」(行列[C1]内の座標(e,4))については、文字「*」がワードスペーサとして使用されているので変化はなく、行列[A2]内の座標(e,4)において、同じ文字が出現しなければならない。
【0086】
以下同様に、巡回で行列[C1]内のすべての位置を訪れ、置き換えてしまうまで続けた。
【0087】
最後に、われわれは「暗号化メッセージ」から「中間メッセージ」を「復元」する間に、アクセント記号付き母音が置換アルファベットに含まれていない限り、それらのアクセント記号付き母音は、「中間メッセージ」に表示されないことに留意すべきである。
【0088】
2)「中間メッセージ」から「ベースメッセージ」を復元する:
発出側通信者から受信された「中間メッセージ」(前のプロセスによって生成された行列[A2])およびキーワード「CK1 = 4231ACBED-04V」を取り出して、
図1において、われわれはキーワードCK1を使用して実行される転置操作の逆操作を行い行列[A1]を生成することを用いて元の「ベースメッセージ」の復元プロセスを詳細に見ることができる:これは、適用される操作の効果を戻すことを必要とする、つまり、この場合に、4つの異なる方法を逆方向に適用して元の(および「秘密」)ベースメッセージを転置するが、これはすべてキーワードCK1に記述される。
【0089】
2d)適用された対称移動を元に戻し、行列[A1c]を取得する:
キーワードは「垂直方向対称移動」(「V」=キーワードCK1内の位置#13)を示すので、これは行列[A2]内の行への転置に対応し、行列[A1c]は、行列[A2]内の第4の行(最上行)を第1の行(最下行)の位置に移動し、というように4つの行を移動し終えるまで、移動することによって取得される。
【0090】
2c)同心長方形の回転を元に戻し、行列[A1b]を取得する:
適用された回転が「-04」(文字をレボギルス(levogirus)方向に位置4つ分だけ転置する)であったので、効果を元に戻すために、反対方向「+04」に回転を適用する、すなわち、行列[A2]内の同心長方形の文字をデキストロギルス(dextrogirus)方向に位置4つ分だけ転置し、行列[A1b]を取得する必要がある。
【0091】
したがって(たとえば)、行列[A1c]内の座標(b,3)-(c,3)-(d,3)にある文字「o-m-t」(内側同心長方形の最上行)は、回転を戻した後に、行列[A1b]内の座標(c,2)-(b,2)-(b,3)に移動される。同様に(たとえば)、外側同心長方形内の第1の行内の文字「a-a-o-y-?」は、回転を戻した後に、その座標を行列[A1c]内の(a,4)-(b,4)-(c,4)-(d,4)-(e,4)から行列[A1b]内の(e,4)-(e,3)-(e,2)-(e,1)-(d,1)に変える。
【0092】
2b)列転置を元に戻し、行列[A1a]を取得する:
列転置は、[A1a]内の列「ABCDE」を[A1b]内の列「ACBED」に変換することを意味するので、行列[A1a]を復元するために、行列[A1b]へのプロセスを反転するだけでよい。したがって、行列[A1b]内の第1の列(一番左の列)は、転置されていないので移動せず、行列[A1a]内で変更なくそのままである。行列[A1b]内の第2の列は、行列[A1a]内の第3の列(左から右へ数える)に戻らなければならず、列「ACBED」を「ABCDE」に変換することに従って、以下同様に続け、行列[A1a]を取得する(
図1参照)。
【0093】
2a)行転置を元に戻し、行列[A1]を取得する:
行転置(上端から下端へ数える)は、行列[A1]内の「4321」から行列[A1a]内の「4231」に行を変換することを意味するので、行列[A1](元の「ベースメッセージ」を含む)を復元するために、われわれは行列[A1a]への転置プロセスを反転するだけでよい。したがって、行列[A1a]内の第4の行(最上端行)は、転置されていなかったので移動せず、行列[A1a]内で変更なくそのままである。行列[A1a]内の第3の行は、行列[A1]内の第2の行(上端から数える)に移動しなければならず、「4231」から「4321」に行を変換することに従って、以下同様に続け、行列[A1]を取得する(
図1参照)。
【0094】
説明した例による、計算方法の強度:
a)「中間メッセージ」を生成する:
選択された行列サイズは[5×4]であるので、行の数(M)は「5」であり、列の数(N)は「4」である。「ベースメッセージ」は20文字長(M×N)で定義された。
「ベースメッセージ」を並べ替えるための定義済み操作は以下のとおりである:
a.1)列転置:(Na1=120個の選択肢)。
列を転置するために、それをするのにM!(Mの階乗)通りの方法がある。例では、5!=120である。
a.2)行転置:(Na2=24個の選択肢)。
行を転置するために、それをするのにN!(Nの階乗)通りの方法がある。例では、4!=24である。
a.3)同心平行四辺形を回転する:(Na3=336個の選択肢)。
同心平行四辺形の内容を回転させるために、(N/2)個の同心平行四辺形の各々1つについて「正」(時計回り)または「負」(反時計回り)の回転を考える(「N」に対する奇数値については回転しないサイズ(M×1)の中心平行四辺形があるので商の整数部分のみを考える)(2^(N/2))個の選択肢を含む、そうするのにNa3通りの異なる方法がある。選択肢の数に対する式は以下のとおりである:
Na3={2×[(M+N)-2×(2n+1)]}×(2^(N\2))の積演算子、ただし積演算子インデックス{n=0からk}の値に対してである。
Nの偶数値に対して(N-2k=2)となるような(n=k)で、
Na3={2×[(M+N)-2×(2n+1)]}×[M-2(k+1)]×(2^(N\2)+1)の積演算子、ただし積演算子インデックス{n=0からk}の値に対してである。
Nの奇数値に対して(N-(2k+1)=2)となるような(n=k)で、(N\2)=商の整数部分である。
因数[M-2(k+1)]はNの奇数値を有する行列において適用可能であるサイズ(M×1)の中心平行四辺形の「循環回転」に対する選択肢の数を与えることに注意されたい。
例では、M=5 y N=4について、われわれはk=1を有する:
Na23={2×[(5+4)-2×(2×0+1)]}×{2×[(5+4)-2×(2×1+1)]}×(2^2)
=({14}×{6}×4)=336。
a.4)行列対称移動:(Na4=4個の選択肢)。
行列を対称移動するために、そうするのに水平、垂直、左対角、右対角の4つ異なる方法がある。対角対称移動は、真に、対称移動と回転との組合せであり、したがって[M×N]行列は[N×M]行列となり、この方法を適用している間に[N×M]行列を使用し続けることが必要になることに留意されたい。
a.5)これら4つのステップの適用順序:(Na5=24個の選択肢)。
それに加えて、前の4つのステップを適用するために使用される順序は、別の4!=24個の選択肢を生成し、最終的に、ベースメッセージを並べ替えることができる数は、以下の数まで増える。
プロセス(a)に対する選択肢の数:
Na=Na1×Na2×Na3×Na4×Na5
=(M!×N!×[{2×[(M+N)-2×(2n+1)]}×2^(N/2)の積演算子]×4×4!)
Na=(5!×4!×[({14}×{6})×2^2]×4×4!)=(120×24×[(84)×4]×4×24)
=92,897,280=(9.28×10^7)
ただし積演算子インデックス{n=0からk}の値に対してである。
【0095】
「ベースメッセージ」における長さ(文字数)が、複数の(M×N)行列を定義することを必要とし、各新しい行列についてわれわれが「数集合」、「置換アルファベット」、ならびに並べ替えおよび暗号化に使用されるキーワードを変更する場合、選択肢の数Naは、それぞれの寄与に応じて乗数効果で増大する。
【0096】
b)「新しい順列」を生成する:
選択された行列は[5×4]なので、「数集合」における数は20であり、級数を生成するのに20!(20の階乗=2.43×10^18)通りの異なる方法がある。複数の「数集合」が使用されるべきであった場合、各新しい順列は、別の(M×N)!(M×Nの階乗)個の選択肢を乗数効果で与える。
「数集合」を並べ替えるために定義された操作は以下のとおりである:
b.0)「数集合」を定義する(Nb0=20!個の選択肢)。
b.1)列を転置:(Nb1=120個の選択肢)。
b.2)行を転置する:(Nb2=24個の選択肢)。
b.3)同心平行四辺形を回転させる:(Nb3=336個の選択肢)。
b.4)行列を対称移動する:(Nb4=4個の選択肢)。
b.5)4つのステップを適用するための順序を定義する:(Nb5=24個の選択肢)。
プロセス(b)に対する選択肢の数: Nb=Nb0×Nb1×Nb2×Nb3×Nb4×Nb5
Nb=(M×N)!×(M!×N!×({2×[(M+N)-2×(2n+1)]}に対する積演算子)×2^(N/2)×4×4!)、ただし積演算子インデックス{n=0からk}の値に対してである。
例では、
Nb=20!×(5!×4!×({14×6}×4)×4×4!)=(2.43×10^18)×(120×24×336×4×24)
Nb=(2.26×10^26)
【0097】
c)「中間メッセージ」を暗号化する:
暗号化を行うために、われわれは「置換アルファベット」を定義する(または選択する)ことをしなければならない。アルファベットがP個の文字を含む場合、そのアルファベットを並べ替えるP!(Pの階乗)通りの異なる方法がある。この例では、われわれは26文字アルファベットを使用し、したがってアルファベットを並べ替える26!(26の階乗=4.03×10^26)通りの異なる方法がある。複数の「置換アルファベット」が使用されるべきであった場合、各新しいアルファベットは、P!(Pの階乗)個の選択肢を乗数効果で与える。
【0098】
暗号化において、われわれはまた(M×N)!(M×Nの階乗)通りの異なる方法を与える「新しい順列」を使用して「新しい順列」を生成し、したがってわれわれが複数の「数集合」を使用することを決めた場合(「ベースメッセージ」がいくつかのブロックに断片化されなければならなかった場合)、各新しい順列は(M×N)!(MxNの階乗)個の選択肢を、乗数効果で与える。使用される「数集合」がプロセス(b)で作成されたものと同じである場合に、与えられる選択肢の数はそのようなプロセスにおいてすでに考慮されているであろうことに留意されたい。
【0099】
「中間メッセージ」を暗号化するために定義された操作は以下のとおりである:
c.0)「置換アルファベット」を定義する:(Nc0=26!個の選択肢)。
c.1)初期置換セルを選択する:(Nc1=26個の選択肢)。
【0100】
中間メッセージを暗号化するために、メッセージのどの位置を使用して文字の置換を始めるかを決定することが必要である。(M×N)個の文字を有するメッセージでは、開始する位置を選択する(M×N)通りの異なる方法がある。例では、これは26個の異なる選択肢を意味する。
【0101】
c.2)巡回方向を選択する:(Nc2=2個の選択肢)。
中間メッセージを暗号化するために、文字を置換しながらそのメッセージを巡回している間に使用する方向(時計回り/反時計回り)を決定することも必要である。これはさらに2つの選択肢を与える。
【0102】
c.3)「新しい数集合」の使用:(Nc3=20!個の選択肢)。
説明されている例には適用されない。
【0103】
数集合を変更しないプロセス(c)の選択肢:
Nc=Nc0×Nc1×Nc2=P!×(M×N)×2
Nc=26!×(5×4)×2=(4.03×10^26)×20×2=(1.61×10^28)
【0104】
全体として、この方法に対する選択肢は以下のとおりである:
(Ni)に対する積演算子=Na×Nb×Nc、ただしi={a,b,c}
【0105】
(Ni)に対する積演算子=[(M×N)!]×[M!×N!×({2×[(M+N)-2×(2n+1)]}の積演算子×2^(N/2))×4×4!]^2×[P!×(M×N)×2]、
ただし積演算子インデックス{n=0からk}の値に対してである。
【0106】
例では、
(Ni)に対する積演算子=Na×Nb×Nc、ただしi={a,b,c}
=(9.28×10^7)×(2.26×10^26)×(1.61×10^28)
=(3.38×10^62)
【0107】
説明されている例および「背景技術」について示された内容に基づき、[16×4]、[16×8]または[16×16]の行列サイズ[M×N]を選択することが妥当と思われ、これは、ブロックが64、128、または256文字(512、1024、または2048ビット)であるべきだと述べることと等価である。そして、この方式の強度がそれを許しているので、ただ1つの「数集合」、「P」個の文字(26以上)を有する1つの「置換アルファベット」、および2048ビットのブロックを有するただ1つの「暗号化ラウンド」、1024ビットのブロックを有する2ラウンド、512ビットのブロックに対する3ラウンドを使用すれば十分であるべきである。
【0108】
26文字アルファベットでは、(「総当たり」攻撃で)探索すべき選択肢の数は次のようになる:
a)1つの「数集合」、1つの「置換アルファベット」、3つの「暗号化ラウンド」(すなわち、キーワードCK1、CK2、およびCK3の3つの集合を使用することによって)を有する512ビットのブロックについて:
(Ni)の積演算子=...
={[(16×4)!]×[(16!×4!×(36×28)×(2^2)×4)×4!]^2×[26!×(16×4)×2]}^3
={[1.26×10^89]×[1.94×10^20]^2×[5.16×10^28]}^3=(1.51×10^475)
【0109】
b)1つの「数集合」、1つの「置換アルファベット」、2つの「暗号化ラウンド」(すなわち、キーワードCK1、CK2 y CK3の2つの集合を使用することによって)を有する1024ビットのブロックについて:
(Ni)の積演算子=...
={[(16×8)!]×[(16!×8!×(44×36×28×20)×(2^4)×4)×4!]^2×[26!×(16×8)×2]}^2
={[3.85×10^215]×[1.14×10^27]^2×[1.03×10^29]}^2
=(2.76×10^597)
【0110】
c)2048ビットのブロック、1つの「数集合」、1つの「置換アルファベット」、1つの「暗号化ラウンド」(すなわち、キーワードCk1、Ck2、およびCk3の1つの集合のみを使用することによって)について:
(Ni)の積演算子=...
=[(16×16)!]×[(16!×16!×(60×52×44×36×28×20×12×4)×(2^8)×4)×4!]^2×[26!×(16×16)×2]
=[8.57×10^506]×[1.42×10^42]^2×[2.06×10^29]
=(3.61×10^620)
【0111】
方法の強度を高める他の方法:
乗数効果は、われわれが以下を増やす場合に、この方法(自動アルゴリズムによる「総当たり」攻撃で探索しなければならない)によって生成される選択肢の数にわたって達成される:
・ 「ベースメッセージ」を断片化するために使用するブロックの数(「ベースメッセージ」内の文字の数がそのように必要な場合には、この方法を適用しながら)、
・ 「ベースメッセージ」を並べ替えるために使用される「操作」の数、
・ 「数集合」を並べ替えるために使用される「操作」の数、
・ 「ベースメッセージ」に適用される「並べ替え」の回数、
・ 「数集合」に適用される「並べ替え」の回数、
・ 同じ暗号化プロセスで適用される「置換操作」の数、
・ 同じ暗号化プロセスで使用される「数集合」の数、
・ 同じ暗号化プロセスで使用される「置換アルファベット」の数、
・ 同じ暗号化プロセスで、いくつかの(またはすべての)暗号関係の説明されている方法を組み合わせる。
・ 暗号化プロセス(「中間メッセージ」内の文字置換)の数、
【0112】
われわれが言及したばかりの方法の強度を高めるためのすべての方法は、追加された要素を適用するためにわれわれが決定しているものとしてよい順序を含めてキーワードCK1、CK2 y CK3に符号化されなければならないことに留意されたい。
【0113】
「好ましい実施形態」に対するキーワードの構造および長さ
a)512ビットブロックについて:
CK1の長さ=CK2の長さ(両方のキーワードは同じ構造を共有するので)
CK2の長さ=4個の数字(行の並べ替え:1から4までの数)
+16個の文字(列の並べ替え:「A」から「P」までの文字)
+「回転方向」(「+/-」)
+「回転変位」(0≦G≦64となるような「G」位置)
+「対称移動のタイプ」(V=垂直、H=水平、L=左対角、R=右対角)
+「数集合」符号(たとえば、数集合=17,576個の符号に対して3文字=26^3個の異なる符号)
=4数字+16文字+1文字(正負)+2数字+1文字
+3文字=27文字
=216ビット。
CK3の長さ=「置換に対する初期位置」(「n」、1≦n≦64)
+「巡回方向(A=昇順/D=降順)」
=2数字+1文字=3文字
=24ビット。
【0114】
b)1024ビットブロックについて:
CK1の長さ=CK2の長さ(両方のキーワードは同じ構造を共有するので)
CK2の長さ=8個の数字(行の並べ替え:1から8までの数)
+16個の文字(列の並べ替え:「A」から「P」までの文字)
+「回転方向」(「+/-」)
+「回転変位」(0≦G≦128となるような「G」位置)
+「対称移動のタイプ」(V=垂直、H=水平、L=左対角、R=右対角)
+「数集合符号」(たとえば、3文字=26^3個の異なる数集合符号=17,576個の符号)
=8数字+16文字+1文字(正負)+3数字+1文字
+3文字=32文字
=256ビット。
CK3の長さ=「置換に対する初期位置」(「n」、1≦n≦128)
+「巡回方向(A=昇順/D=降順)」
=3数字+1文字=4文字
=32ビット。
【0115】
c)2048ビットブロックについて:
CK1の長さ=CK2の長さ=16個の数字(新しい行)
+16個の文字(新しい列)+「回転方向」(「+/-」)
+「回転変位」(0≦G≦256となるような「G」位置)
+「対称移動のタイプ」(V=垂直、H=水平、L=左対角、R=右対角)+「数集合符号」
(たとえば、3文字=26^3個の異なる数集合符号
=17,576個の符号)
=16数字+16文字+1文字(正負)+3数字+1文字
+3文字=40バイト
=320ビット。
CK3の長さ=「置換に対する初期位置」(「n」、1≦n≦256)
+「巡回方向(A=昇順/D=降順)」
=3数字+1文字=4文字
=32ビット。
【0116】
われわれが前述の定義において「数集合符号」に言及するときに、そのような目的のために事前に定義され、対応する当事者に知られている「数集合」のリポジトリ内の要素を識別することを可能にすると仮定していることに留意されたい。
【0117】
したがって、われわれは置換アルファベット、並べ替え操作、置換関数、またはさらには使用されるキーワードに対してそのようなリポジトリを有することができる。
【符号の説明】
【0118】
104 行列
【手続補正書】
【提出日】2023-06-08
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0005
【補正方法】変更
【補正の内容】
【0005】
今日では、これら2つのタイプのシステムはいくつかあり、通常、商取引、電子メールメッセージ、さまざまなデジタルコンテンツのファイルを伝送するために、および「重要」または「通常」の性質を持つ多くの情報パケットのインターネット経由の伝送に適用されている。これらのシステムのうちとりわけ、われわれは、たとえば、以下のものを見つけることができる。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0006
【補正方法】変更
【補正の内容】
【0006】
RSA:対称アルゴリズムRC5(1994年に設計された)を使用するが、これは32、64、または128ビットブロック(64ビットが推奨設定である)を扱い、キーワード長は最大1024ビット(128ビットが推奨設定である)であり、2^128(=3.40×10^38)の「鍵空間」(または可能なキーワードの数)を与え、18から20暗号化ラウンド(12ラウンドが推奨設定である)を処理する。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0007
【補正方法】変更
【補正の内容】
【0007】
1991年から2007年にかけて、RSA Securityは、特許譲受人として、2048ビットまでのキーワードを「クラック」することができた人に報酬を提供し、したがって2003年までに、推奨は、1024ビットキーワード(128文字に相当する)を使用し、鍵空間のサイズを(2^1024)=1.79×10^308に増やすことであった。最近の結果のうちのとりわけ、2019年12月に、795ビットキーワードへの攻撃の成功が発表されている。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0008
【補正方法】変更
【補正の内容】
【0008】
AES:これは128ビットブロックのみを使用し、128ビットキーワード(および10暗号化ラウンド)、192ビットキーワード(および12暗号化ラウンド)、ならびに256ビットキーワード(14暗号化ラウンド)を有し、鍵空間はそれぞれ2^128(=3.40×10^38)、2^192(=6.27×10^57)、y 2^256(=1.15×10^77)である。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0009
【補正方法】変更
【補正の内容】
【0009】
TWOFISH:このアルゴリズムは、128ビットブロック、12暗号化ラウンド、ならびに128、192、および256ビットのキーワードサイズ(鍵空間は最大で(2^256)=1.15×10^77となる)で動作する。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0010
【補正方法】変更
【補正の内容】
【0010】
IDEA:64ビットブロックならびに連続する回転および断片化を通して52×16ビットキーワードを生成するために使用される128ビットキーワード(2^128の鍵空間に相当する)で動作する。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0011
【補正方法】変更
【補正の内容】
【0011】
DES:1975年に作成された規格であり、64ビットブロック、16暗号化ラウンド、および56ビットキーワードで動作し、(2^56=7.2×10^16)の組合せの鍵空間を有していた。これは1999年に、3×56ビットキーワード((2^56)^3=3.74×10^50の鍵空間となる)で動作する3DESに置き換えられた。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0014
【補正方法】変更
【補正の内容】
【0014】
たとえば、AES-128では、128ビットキーワード(16文字に相当する)は、(2^128)の鍵空間を生成し、AES-192では、192ビットキーワード(24文字に相当する)は(2^192)の鍵空間を生成し、AES-256では、256ビットキーワード(32文字に相当する)は(2^256)の鍵空間を生成する。コンピュータの設計の成果を鑑みると、このことは暗号システムの弱点となっている、なぜなら、集積密度が1チップ当たり10^9のトランジスタになり(2004年時点において)、1チップ当たり(5×10^10)のトランジスタに近づいたことで(2018年時点において)利用可能になったコンピューティングパワーにより、128ビットキーワード、さらには192ビットキーワードさえも、「機密性のない」SWアプリケーションに対してであっても「安全ではない」と考えられる。
【手続補正9】
【補正対象書類名】明細書
【補正対象項目名】0016
【補正方法】変更
【補正の内容】
【0016】
さらに、既存のシステムのいくつかは、複雑度の低い転置および置換の操作に基づく「暗号化」メカニズムを有しており、いくつかの「暗号化ラウンド」を適用することによって、すなわち、暗号化に必要なステップを繰り返す(10から16回)ことによって、この効果を相殺することが必要になるが、そうすると復号プロセスに影響を及ぼすので、さらに不便になり得る。
したがって、本発明によって解決される技術的問題は、覚えにくいキーワードも暗号化ラウンドの過剰な量も暗黙のうちに使用することのない、より安全な方法の提供の仕方に対応している。
【手続補正10】
【補正対象書類名】明細書
【補正対象項目名】0018
【補正方法】変更
【補正の内容】
【0018】
実際、前記特許では、提案された方法は、サイズ(8×8)の行列に基づいており、「ナイト巡回問題」(チェスのナイトで、連続する経路を辿りながら、チェス盤(8×8)のすべてのマス目を1度ずつ訪れ、どのマス目も2度訪れないようにできるか、という問題)の解を扱うもので、その解は、(1.06×10^14)と推定される[参照:G. P. Jellissのウェブサイト「Knight's Tours Notes」にある「Some enumerations of Classes of Knight's Tours」[_www.mayhematics.com/t/8a.html]]が、しかしながら、ここで紹介されている方法で(8×8)行列に対して生成することが可能な数列の個数は64!(64の階乗=1.26×10^89)であり、これは最初のものよりかなり大きい数である。
【手続補正11】
【補正対象書類名】明細書
【補正対象項目名】0019
【補正方法】変更
【補正の内容】
【0019】
「ナイト問題」の解を数列として使用することは、2016年12月29日に公開された米国特許出願第2016/379527号(付与されていないが、発明者によって放棄されたとおり)において説明されている暗号化方法でも言及されており、暗号化プロセスに解を使用する別の異なる方法が提案されている。
【手続補正12】
【補正対象書類名】明細書
【補正対象項目名】0020
【補正方法】変更
【補正の内容】
【0020】
両方の場合において、(10^14)個より少し多い解に利用できるレパートリーはまだないが、1882年にフランスの修道院長Philippe Jolivaldが「ナイト問題」に対する413,000個を超える解を公開したが、これは(自動アルゴリズムを用いて)「総当たり」攻撃を大幅に容易にするであろう。
【手続補正13】
【補正対象書類名】明細書
【補正対象項目名】0026
【補正方法】変更
【補正の内容】
【0026】
本発明によれば、後者は、キーワードが、関わっている操作を通じて達成されるべき所望の効果に従って「設計」され、「符号化」されるべきであるか、または以前に生成されたキーワードのレパートリーから選択されるべきであるので、大きいサイズのキーワードを管理する必要性によって生じる弱点をも解決する。したがって、鍵がデジタルリポジトリから(ランダムにまたは順次的に)選択される場合でも、これらはランダムに生成されるわけではないが、組み合わせ論によって生成される。
【手続補正14】
【補正対象書類名】明細書
【補正対象項目名】0034
【補正方法】変更
【補正の内容】
【0034】
ここに提示される方法は、予備段階を実行することを用いて、データ転置と置換が行われる3つのプロセスを適用することによって、デジタル方式で符号化された、データ列(「ベースメッセージ」)を暗号化し、暗号化を行うために適用される方法を無視する第三者にとって理解できないもの(「暗号化メッセージ」)にすることを可能にする。説明のために、われわれは、データ列が「英数字文字」を含むと仮定するが、付属の請求項に記載されているとおり、その構成はもっと広範囲で多様であり得る。
【手続補正15】
【補正対象書類名】明細書
【補正対象項目名】0038
【補正方法】変更
【補正の内容】
【0038】
プロセス3:「中間メッセージ」[A2]を暗号化して「暗号化メッセージ」[C1]を生成する
・ 「新しい順列」とともに「置換アルファベット」をどのように使用するかに関してキーワードCK3を指示するものに基づき、「中間メッセージ」に対して文字置換を実行し、「暗号化メッセージ」[C1]を生成する、
・ 未保護チャネルを用いて受信側通信者に、「暗号化メッセージ」を伝送する、
・ 事前合意した保護チャネルを用いて受信側通信者に、元の「数集合」、キーワードCK1、CK2、およびCK3、ならびに「置換アルファベット」を伝送する。
【手続補正16】
【補正対象書類名】明細書
【補正対象項目名】0043
【補正方法】変更
【補正の内容】
【0043】
(102)行列[A1]内の行を転置する:
キーワードCK1の先頭4文字(「4231」)を用いて、われわれは、行列[A1]内の行を、キーワード内の指令に従い、(この場合に)その相対位置を「4321」から「4231」に変更することによって、垂直方向に転置し
図1に示されている行列[A1a]を生成する。したがって、[A1]内の行「4」は第4の位置([A1a]内の上端)を維持し、[A1]内の行「3」は[A1]の第
3の行から[A1a]内の第
2の行に移動し(下端から数える)、[A1]内の行「2」は[A1]の第
2の行から[A1a]内の第
3の行に移動し、[A1]内の行「1」はその位置([A1a]内の下端)を維持する。
【手続補正17】
【補正対象書類名】明細書
【補正対象項目名】0045
【補正方法】変更
【補正の内容】
【0045】
したがって、行列[A1a]内の列「A」は、その位置を行列[A1b]内の第1の列(一番左の列)として維持し、列「B」は
行列[A1a]内の第2の列から[A1b]内の第3の列に移動し、列「C」は
行列[A1a]内の第3の列から
行列[A1b]内の第2の列に移動し、列「D」は
行列[A1a]内の第4の列から
行列[A1b]内の第5の列(一番右の列)に移動し、列「E」は
行列[A1a]内の第5の列から
行列[A1b]内の第4の列に移動する。(
図1参照)。
【手続補正18】
【補正対象書類名】明細書
【補正対象項目名】0049
【補正方法】変更
【補正の内容】
【0049】
(106)行列[A1c]を対称移動プロセスを用いて転置し、行列[A2]を取得する:
キーワードCK1内の最後の文字(「V」)を用いて、プロセス(105)で生成された行列は、垂直方向に対称移動され、「中間メッセージ」(
図1の106)の行列である、行列[A2]を生成し、それにより、われわれが「垂直方向対称移動」を実行しているので、行列の行への新しい転置が生成され、行4(
105の[A1c]の上端)は行1(
106の[A2]の下端)に移動し、
105の[A1c]の行3は
106の[A2]の行2に移動し、以下同様に、行列[A1c]内のすべての行が転置されて[A2]を形成するまで続く(
図1参照)。
【手続補正19】
【補正対象書類名】明細書
【補正対象項目名】0050
【補正方法】変更
【補正の内容】
【0050】
キーワードCK1の構造および長さ:
ここまでで、キーワードCK1の構造および長さは、以下のように定義されると言える:
CK1=「(N)行並べ替え」+「(M)列並べ替え」
+「回転方向」(「+/-」)+「回転変位(G)」
+「対称移動のタイプ」(「H」=水平、「V」=垂直、「R」=右対角、「L」=左対角)=「N」文字+「M」文字+1文字
+2数字+1文字。
この例では、キーワードCK1の長さは=4+5+1+2+1=13文字=104ビットである。
【手続補正20】
【補正対象書類名】明細書
【補正対象項目名】0053
【補正方法】変更
【補正の内容】
【0053】
したがって、行「4」は
下端から数えて第
4の位置(行列[B1]内の
最上端)から行列[B1a]内の第
2の行に移動し、行「3」は[B1]内の第
3の行から行列[B1a]内の第
4の行に移動し、行「2」は[B1]内の第
2の行から行列[B1a]内の第
1の行に移動し、行「1」は[B1]内の第
1の行から行列[B1a]内の第3の行に移動する(
図1参照)。
【手続補正21】
【補正対象書類名】明細書
【補正対象項目名】0060
【補正方法】変更
【補正の内容】
【0060】
キーワードCK2の構造および長さ:
ここまでで、キーワードCK1およびCK2の構造および長さは、以下のように同じ構成要素によって定義されると言える:
CK2=「(N)行並べ替え」+「(M)列並べ替え」
+「回転方向」(「+/-」)+「回転変位(G)」+「対称移動のタイプ」(「H」=水平、「V」=垂直、「R」=右対角、「L」=左対角)
=「N」文字+「M」文字+1文字+2数字+1文字
この例では、キーワードCK2の長さは=4+5+1+2+1=13文字=104ビットである。
【手続補正22】
【補正対象書類名】明細書
【補正対象項目名】0064
【補正方法】変更
【補正の内容】
【0064】
(303)「暗号化メッセージ」:
キーワードCK3内の3文字(「01A」)を用いて、われわれは暗号化を、「中間メッセージ」内のテキストを置換し、
アルファベットにおいて定義されている文字を「新しい順列」で指示される位置の数だけ進め、それにより行列[C1]を、位置(「01」)で始まる順列を読み込み、キーワードで定義されているように、昇順で数列を巡回する(巡回方向は「Ascending」の「A」で示される)ことによって生成することによって実行する。
図1では、われわれはメッセージを暗号化している間にプロセスのすべてのステップを詳細に見ることができる。
【手続補正23】
【補正対象書類名】明細書
【補正対象項目名】0067
【補正方法】変更
【補正の内容】
【0067】
「新しい順列」における位置「03」(行列[B2]内の座標(e,4))については、「中間メッセージ」内の文字は、ワードスペーサとして使用されている「*」であり、置換されないので、行列[C1]内の座標(e,4)には同じ文字「*」が挿入される。
【手続補正24】
【補正対象書類名】明細書
【補正対象項目名】0070
【補正方法】変更
【補正の内容】
【0070】
キーワードCK3の構造および長さ:
見ると分かるように、キーワードCK3の構造および長さは、以下のように定義される:
CK3=「置換を開始する開始位置」
+「巡回方向(A=昇順/D=降順)」
この例では、キーワードCK3の長さは=2数字+1文字=3文字=24ビットである。
【手続補正25】
【補正対象書類名】明細書
【補正対象項目名】0094
【補正方法】変更
【補正の内容】
【0094】
説明した例による、計算方法の強度:
a)「中間メッセージ」を生成する:
選択された行列サイズは[5×4]であるので、行の数(M)は「5」であり、列の数(N)は「4」である。「ベースメッセージ」は20文字長(M×N)で定義された。
「ベースメッセージ」を並べ替えるための定義済み操作は以下のとおりである:
a.1)列転置:(Na1=120個の選択肢)。
列を転置するために、それをするのにM!(Mの階乗)通りの方法がある。例では、5!=120である。
a.2)行転置:(Na2=24個の選択肢)。
行を転置するために、それをするのにN!(Nの階乗)通りの方法がある。例では、4!=24である。
a.3)同心平行四辺形を回転する:(Na3=336個の選択肢)。
同心平行四辺形の内容を回転させるために、(N/2)個の同心平行四辺形の各々1つについて「正」(時計回り)または「負」(反時計回り)の回転を考える(「N」に対する奇数値については回転しないサイズ(M×1)の中心平行四辺形があるので商の整数部分のみを考える)(2^(N/2))個の選択肢を含む、そうするのにNa3通りの異なる方法がある。選択肢の数に対する式は以下のとおりである:
Na3={2×[(M+N)-2×(2n+1)]}×(2^(N\2))の積演算子、ただし積演算子インデックス{n=0からk}の値に対してである。
Nの偶数値に対して(N-2k=2)となるような(n=k)で、
Na3={2×[(M+N)-2×(2n+1)]}×[M-2(k+1)]×(2^(N\2)+1)の積演算子、および同じインデックス。
Nの奇数値に対して(N-(2k+1)=2)となるような(n=k)で、(N\2)=商の整数部分である。
因数[M-2(k+1)]はNの奇数値を有する行列において適用可能であるサイズ(M×1)の中心平行四辺形の「循環回転」に対する選択肢の数を与えることに注意されたい。
例では、M=5 y N=4について、われわれはk=1を有する:
Na23={2×[(5+4)-2×(2×0+1)]}×{2×[(5+4)-2×(2×1+1)]}×(2^2)
=({14}×{6}×4)=336。
a.4)行列対称移動:(Na4=4個の選択肢)。
行列を対称移動するために、そうするのに水平、垂直、左対角、右対角の4つ異なる方法がある。対角対称移動は、真に、対称移動と回転との組合せであり、したがって[M×N]行列は[N×M]行列となり、この方法を適用している間に[N×M]行列を使用し続けることが必要になることに留意されたい。
a.5)これら4つのステップの適用順序:(Na5=24個の選択肢)。
それに加えて、前の4つのステップを適用するために使用される順序は、別の4!=24個の選択肢を生成し、最終的に、ベースメッセージを並べ替えることができる数は、以下の数まで増える。
プロセス(a)に対する選択肢の数:
Na=Na1×Na2×Na3×Na4×Na5
=(M!×N!×[{2×[(M+N)-2×(2n+1)]}×2^(N/2)の積演算子]×4×4!)
Na=(5!×4!×[({14}×{6})×2^2]×4×4!)=(120×24×[(84)×4]×4×24)
=92,897,280=(9.28×10^7)
ただし積演算子インデックス{n=0からk}の値に対してである。
【手続補正26】
【補正対象書類名】明細書
【補正対象項目名】0099
【補正方法】変更
【補正の内容】
【0099】
「中間メッセージ」を暗号化するために定義された操作は以下のとおりである:
c.0)「置換アルファベット」を定義する:(Nc0=26!個の選択肢)。
c.1)初期置換セルを選択する:(Nc1=20個の選択肢)。
【手続補正27】
【補正対象書類名】明細書
【補正対象項目名】0100
【補正方法】変更
【補正の内容】
【0100】
中間メッセージを暗号化するために、メッセージのどの位置を使用して文字の置換を始めるかを決定することが必要である。(M×N)個の文字を有するメッセージでは、開始する位置を選択する(M×N)通りの異なる方法がある。例では、これは20個の異なる選択肢を意味する。
【手続補正28】
【補正対象書類名】明細書
【補正対象項目名】0110
【補正方法】変更
【補正の内容】
【0110】
c)2048ビットのブロック、1つの「数集合」、1つの「置換アルファベット」、1つの「暗号化ラウンド」(すなわち、キーワードCK1、CK2、およびCK3の1つの集合のみを使用することによって)について:
(Ni)の積演算子=...
=[(16×16)!]×[(16!×16!×(60×52×44×36×28×20×12×4)×(2^8)×4)×4!]^2×[26!×(16×16)×2]
=[8.57×10^506]×[1.42×10^42]^2×[2.06×10^29]
=(3.61×10^620)
【手続補正29】
【補正対象書類名】明細書
【補正対象項目名】0111
【補正方法】変更
【補正の内容】
【0111】
方法の強度を高める他の方法:
乗数効果は、われわれが以下を増やす場合に、この方法(自動アルゴリズムによる「総当たり」攻撃で探索しなければならない)によって生成される選択肢の数にわたって達成される:
・ 「ベースメッセージ」を断片化するために使用するブロックの数(「ベースメッセージ」内の文字の数がそのように必要な場合には、この方法を適用しながら)、
・ 「ベースメッセージ」を並べ替えるために使用される「操作」の数、
・ 「数集合」を並べ替えるために使用される「操作」の数、
・ 「ベースメッセージ」に適用される「並べ替え」の回数、
・ 「数集合」に適用される「並べ替え」の回数、
・ 同じ暗号化プロセスで適用される「置換操作」の数、
・ 同じ暗号化プロセスで使用される「数集合」の数、
・ 同じ暗号化プロセスで使用される「置換アルファベット」の数、
・ 暗号化プロセス(「中間メッセージ」内の文字置換)の数、
・ 同じ暗号化プロセスで、いくつかの(またはすべての)暗号関係の説明されている方法を組み合わせる。
【手続補正30】
【補正対象書類名】明細書
【補正対象項目名】0115
【補正方法】変更
【補正の内容】
【0115】
c)2048ビットブロックについて:
CK1の長さ=CK2の長さ=16個の数字(新しい行)
+16個の文字(新しい列)+「回転方向」(「+/-」)
+「回転変位」(0≦G≦256となるような「G」位置)
+「対称移動のタイプ」(V=垂直、H=水平、L=左対角、R=右対角)+「数集合符号」
(たとえば、3文字=26^3個の異なる数集合符号
=17,576個の符号)
=16数字+16文字+1文字(正負)+3数字+1文字
+3文字=40文字
=320ビット。
CK3の長さ=「置換に対する初期位置」(「n」、1≦n≦256)
+「巡回方向(A=昇順/D=降順)」
=3数字+1文字=4文字
=32ビット。
【手続補正31】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
データを暗号化するための方法であって、計算形式またはデジタル集積回路で実装されるシステムにおいて、「数集合」は「ベースメッセージ」を暗号化してその内容を理解できなくするために使用され、
前記方法は、
a)「ベースメッセージ」を、対応する当事者間で事前に合意された内容に従って使用することが可能である「文字」のタイプのうちから選択された、特定のタイプの「文字」で定義し、この「ベースメッセージ」に含まれる文字の総数から、前記「ベースメッセージ」内に含まれる文字の前記総数がそれらの行列に含まれるように、1つまたは複数の[A1]行列が構築される、段階、
b)行列[A1]と同じサイズの行列[B1]内に
組み合わせ論的に分布する、「1」から前記行列の「サイズ」(行の数と列の数との積に等しい)までの連続する数によって形成される「数集合」を定義する、段階、
c)前記「ベースメッセージ」を含む行列[A1]に適用され、それを「中間メッセージ」[A2]に変換する、一連の4つの連続する並べ替え操作を確定
し、前記並べ替え操作のタイプは、行を転置するステップと、列を転置するステップと、同心平行四辺形を回転(時計回り/反時計回りに)するステップと、前記行列を対称移動(垂直、水平、右または左への対角、正方行列の場合はこれらの少なくとも2つ)するステップ
と、前記一連の操作はキーワードCK1を形成する適用される4つの操作で符号化される、
ステップとである、段階、
d)前記「数集合」を含む行列[B1]に適用され、それを「新しい順列」[B2]に変換する、別の一連の4つの連続する並べ替え操作を確定
し、行列[B1]に対する前記並べ替え操作は、行列[A1]を並べ替えるために使用されるのと同じタイプの操作であ
り、前記一連の操作はキーワードCK2を形成する適用される前記4つの操作で符号化される、段階、
e)前記「ベースメッセージ」[A1]を並べ替えるためにキーワードCK1を適用し、それにより前記「中間メッセージ」[A2]を生成し、前記「数集合」[B1]を並べ替えるためにキーワードCK2を適用し、それにより前記「新しい順列」[B2]を生成する、段階、
f)「置換アルファベット」[A0]を、含まれる文字の数およびタイプを、それらの各々が前記アルファベット内に有する
位置とともに、指定することによって定義
し、前記「置換アルファベット」は輪状構造を有する、すなわち、最後の文字の後に続く次の文字が前記一連の操作における最初の文字である、段階、
g)前記「新しい順列」[B2]を使用することによって、
置換が始まるものとする前記「中間メッセージ」[A2]内の前記位置と前記メッセージ内の巡回方向(末尾に向かうまたは先頭に向かう)とを確定
し、これは「暗号化メッセージ」[C1]を構築するために従うべき前記操作を指定することによってキーワードCK3内で符号化される、段階、
h)前記「置換アルファベット」[A0]内
の元の文字の
配置を特定の数の位置の分だけ
移動することによって取得される別の文字に
よる前記「中間メッセージ」[A2]の各文字
の「置換操作」を確定
し、前記メッセージ内の前記文字の
置き換えのための
変位は、進行方向(前方)または後退方向(後方)に、および前記置換を続行するためにCK3において定義されているような前記メッセージの前記巡回方向に行わ
れ、空白、アスタリスク、前記数、前記「置換アルファベット」において定義されていない他の任意の特殊文字は、前記「暗号化メッセージ」において修正されずそのままであり(アクセント記号付き母音を除く、これはアクセント記号なしの母音として扱われるべきである)、前記「中間メッセージ」内に大文字で出現する前記「置換アルファベット」で定義される文字を置換しなければならない場合に対応する置換文字も大文字で表示される、段階、
i)前記暗号化を、前記「新しい順列」[B2]内で、前記置換が開始する位置番号を識別し(初期暗号)、前記「中間メッセージ」[A2]内の前記位置に配置されている前記文字を識別することによって、開始する、段階、
j)置換する先頭文字のアルファベット[A0]内の前記位置を識別し、前記置換文字の配置を、置き換えする前記文字の前記元の位置から前記置換アルファベット内を前記初期暗号で指示された数だけ移動することによって確定する、段階、
k)前記「中間メッセージ」[A2]の前記元の文字を、前記識別された置換文字によって置き換え、それにより前記「暗号化メッセージ」[C1]内の前記先頭文字を確定
し、この操作は、キーワードCK3で定義された前記巡回方向に従って、前記「中間メッセージ」[A2]内の各連続する文字について、段階(
i)から(
k)まで繰り返し、それにより前記「暗号化メッセージ」[C1]を生成する、段階、
l)受信側通信者に、保護される必要のない通信チャネルを使用して、前記「数集合」[B1](またはその識別符号)および前記「暗号化メッセージ」[C1]を伝送する、段階、
m)前記受信側通信者に、事前合意された保護チャネルを通じて、前記「置換アルファベット」[A0](またはその識別符号)およびキーワードCK1からCK3を伝送する、段階、
および
n)前記受信側通信者による前記メッセージを、前記「置換アルファベット」、キーワードCK1からCK3、前記「暗号化メッセージ」、および前記元の「数集合」に基づき、段階(
iから
k)において説明されているのと逆に前記方法を適用することによって復号する、段階を含む方法。
【請求項2】
段階(
a)から(
k)
において、「好ましい実施形態」であって、
・ 段階(
a)において、
ブロックの
サイズは、キーワードCK1の先頭で符号化されるべきであり、
・ 段階(
a)において、前記「ベースメッセージ」内の前記文字は、「アルファベット」(任意の言語)、数、英数字、記号、表意文字、音素、画像または他のものであってよく、ASCII、UTF-8、Unicode、または他の任意の形式のデジタルもしくはアナログ符号化で符号化されてよく、
・ 段階(
a)において、行列[A1]は、前記「ベースメッセージ」内の文字の前記数に基づき選択されるべきである(16×4)、(16×8)、または(16×16)の文字のサイズで定義され、
・ 段階(
a)において、前記「ベースメッセージ」内の文字の前記数が前記行列の前記サイズを超える場合、前記メッセージは64文字ブロック(16×4の行列サイズに対して)、128文字ブロック(16×8の行列サイズに対して)、または256文字ブロック(16×16の行列サイズに対して)で断片化されるべきであり、
・ 段階(
a)において、前記「ベースメッセージ」内の文字の前記数(または前記メッセージの前記最後の断片内の文字の前記数)が使用される行列[A1]の前記サイズより小さい場合、前記行列の内容を完成させるために、必要な量の「空白」が「パディング文字」として追加されるべきであり、
・ 段階(
a)において、前記文字「空白」は行列[A1]の前記定義を完成させるために、前記「ベースメッセージ」内の単語間隔として使用されるべきであり、
・ 段階(
b)において、前記「数集合」は、必ずしも連続しない、級数、順序、または数列を構成する、(M×N)個の数の昇順または降順の集合から形成されてもよく、
・ 段階(
b)において、「数集合」[B1]は、また、関わっているパラメータを考慮する(16×4)、(16×8)および(16×16)の行列サイズに対する、この目的のために設計された数集合生成器を用いて、または以前に定義され、明確に識別された「数集合」のレパートリーを含むリポジトリからそれを選択することによって、取得されてよく、
・ 段階(
b)および
前の段階において、前記「数集合」の識別子は、キーワードCK2の先頭で符号化されるべきであり、
・ 段階(
c)、(
d)、および(
e)において、行列[A1]を並べ替えるために、キーワードCK1は、それぞれの行列に対して定義されていたであろう前記4つの操作の前記符号化とともに使用されるべきであり、
・ 段階(
c)、(
d)、および(
e)において、行列[B1]を並べ替えるために、キーワードCK2は、それぞれの行列に対して定義されていたであろう前記4つの操作の前記符号化とともに使用されるべきであり、
・ 段階(
f)において、前記「置換アルファベット」[A0]は、前記関わっているパラメータを考慮する、(16×4)、(16×8)および(16×16)の行列に対するこの目的のために設計されたアルファベット生成器から、または以前に定義され、明確に識別されたアルファベットのレパートリーを含むリポジトリからそれを選択することによって、取得されてよく、
・ 段階(
f)において、前記「置換アルファベット」は、「アルファベット文字」、英数字文字、特殊文字、スペリングアクセントを有する母音もしくは子音、数、正負符号、記号、アイコン、および使用される言語および/または符号化の形態に対応する他のものを含むものとしてよく、
・ 段階(
f)から(
k)において、キーワードCK3における前記符号化は、前記置換を開始する前記位置、および行列[A2]の前記暗号化を達成するために両方とも使用される前記「新しい順列」[B1]の前記巡回方向に対して使用されるべきであり、
・ 段階(
g)において、ただ1つの「新しい順列」およびただ1つの「置換アルファベット」が、すべての行列[A2]を暗号化するために使用されるべきであり、
・ 段階(
f)および(
g)において、段階(
l)および(
m)の受信者通信者に伝送する必要性を回避するために、使用されるべき前記「数集合」もキーワードCK2内で識別される必要があり、使用されるべき前記「置換アルファベット」もキーワードCK3内で識別される必要があり、
・ 段階(
c)から(
g)において、キーワードCK1からCK3は、前記関わっているパラメータを考慮する(16×4)、(16×8)および(16×16)の行列サイズに対する、この目的のために設計されたキーワード生成器を用いて取得され得るか、またはそれらは以前に定義され、明確に識別されたキーワードのレパートリーを含むリポジトリから選択され、
・ 前記方法に対する「暗号化ラウンド」をなす段階(
a)から(
k)において、これらは行列サイズ(16×16)で1回のみ、行列サイズ(16×8)で2回、(16×4)要素の行列サイズで3回適用されるべきであり、各場合において、キーワードトリオCK1、CK2、CK3の対応する数は、定義され得るか、またはすべての「暗号化ラウンド」において1つのキーワードトリオのみが使用されてよく、
・ 方法の「暗号化ラウンド」をなす段階(
a)から(
k)は、(16x16)、(16x8)または(16x4)要素のサイズの行列に対して、確定され、前記受信側通信者と合意されるべき回数だけ適用され、各場合において、キーワードトリオCK1、CK2、CK3の前記対応する数は、定義され得るか、またはすべての「暗号化ラウンド」において1つのキーワードトリオのみが使用されてよく、
・ 方法の「暗号化ラウンド」をなす段階(
a)から(
k)は、サイズが関わっている当事者間で確定されるべきである(M×N)要素の行列に対して、確定され、前記受信者通信者と合意されるべき回数だけ適用され、各場合において、キーワードトリオCK1、CK2、CK3の前記対応する数は、定義され得るか、または前記「暗号化ラウンド」のすべてにおいて1つのキーワードトリオのみも使用されてよい、と考えられるべきである請求項1に記載の方法。
【請求項3】
段階(
a)および(
b)において、
・ 行列[A1]は、また[M×N]文字のサイズに対して定義され
得、
・ 「単語間隔」に対して、また前記「ベースメッセージ」内の「パディング文字」として「空白」を使用する代わりに、前記「置換アルファベット」からの別の文字、または行列[A1]の前記定義を完成するために使用する他のいくつかのものも使用することがで
き、
・ 前記「ベースメッセージ」を含めるために複数の行列[A1]を定義する必要があった場合に、行列[A1]と同じサイズおよび数の、各々異なる「数集合」を有する、いくつかの行列[B1]を定義(生成または選択)することもでき
る請求項1
または2に記載の方法。
【請求項4】
その段階(
c)および(
d)において、a)前記「ベースメッセージ」[A1]の前記並べ替えは、また、前記暗号化の後に実行されるように省かれてもよく、前記「数集合」[B1]を以前に並べ替えたことがあるだけでよく、このようにして、順序付けし直されるのは行列[C1]となり、
「暗号化され並べ替えられたメッセージ」を有する行列[C2]を生成す
る請求項1
または2に記載の方法。
【請求項5】
その段階(
c)、(
d)、および(
e)において、
・ 前記行列[A1]および[B1]の各1つに対して、われわれはそれぞれ異なる並べ替え操作の等しい4分の1を適用することもできるか、または代替的に、それぞれ、異なる並べ替え操作の異なる4分の1を互いに適用することもでき、
前記段階(c)、(d)、および(e)の各々
について、行列[A2]および[B2]を生成するために前記並べ替え操作を定義する
異なる方法
のすべてのうちから1つ
が選択され、またそれらを適用するために使用される
順序
が選択され、これは、キーワードCK1およびCK2にわたって前記対応する効果を有し、これは
新しい並べ替え操作およびそれらの適用に使用される前記順序を反映しなければなら
ず、
・ 行列[A1]および[B1]の前記並べ替え操作は、
並べ替え操作を繰り返すことによって(または新しいものを作成することによって)、4つよりも多い操作にすることもでき
る請求項1
または2に記載の方法。
【請求項6】
段階(
f)において、
・ 前記「ベースメッセージ」と同様に、前記「置換アルファベット」内の前記文字は、アルファベット(任意の言語)、英数字、記号、表意文字、音素、画像、または他のものであってよく、前記文字はASCII、UTF-8、Unicode、または符号化の他の任意の形態のデジタルもしくはアナログ方式で符号化され
得、
・ 前記「置換アルファベット」内のすべての「文字」の前記位置を決定するために、それが含み得る前記「文字の数」を並べ替える
異なる方法のうちから1つを選択することが必要であ
り、
・ 前記「ベースメッセージ」を含むように複数の行列[A1]が定義される場合、異なる「置換アルファベット」も、各行列に対して定義されてよく、これはキーワードCK3にわたる前記対応する効果を有し、これは識別符号を通じて前記「置換アルファベット」の
新しい定義を反映しなければなら
ず、
・ 各[A2]行列に対して異なる「置換アルファベット」を使用するときに、
前記「中間メッセージ」を含む行列[A2]を暗号化して前記「暗号化メッセージ」を含む行列[C1]を生成する
ために、前記異なるアルファベットを適用するために使用される
順序を決定する必要があり、
その際にこれは、キーワードCK3にわたって前記対応する効果を有し、これは各断片にどのアルファベットが適用されるべきかを反映しなければならな
い請求項1
または2に記載の方法。
【請求項7】
段階(
g)および(
h)において、
・ 前記「ベースメッセージ」を含むように複数の[A1]行列が定義される場合、異なる「置換の初期位置」が各行列[A2]に対して定義されてよく、このことは、キーワードCK3にわたって前記対応する効果を有し、これは各断片に対して前記異なる「置換の初期位置」を反映しなければなら
ず、
・ 前記「ベースメッセージ」を含むように複数の[A1]行列が定義される場合、異なる「置換操作」も、各[A2]行列に対して定義されてよく、これは、キーワードCK3にわたって前記対応する効果を有し、これは各断片にどの「置換関数」が適用されるべきかを反映しなければなら
ず、
・ 前記「置換操作」において、前記置換文字の前記位置を取得するために必要な前記変位は、性質(ほかにもあるがとりわけ、偶数か奇数か、素数か素数でないか、所与の数または所与の数のグループの倍数、所与の数の約数または数のグループの約数)、数値範囲(ほかにもあるがとりわけ、前記数集合のサイズまたは前記置換アルファベットのサイズの半分、3分の1、四分位数、五分位数、または十分位数)、前記「数集合」内の前記位置番号の他の何らかの特性、および/または処理される前記「新しい順列」の他の何らかの特性に基づき決定されてよく、前記変位は、また、この目的に合わせて定義された関数に基づき取得されてよく、これは、キーワードCK3にわたって前記対応する効果を有し、これはどのタイプまたはグループの文字にこれらの異なる変位が適用されるべきかを反映しなければなら
ず、
・ したがって、置換関数の一例は、「s」が処理中の前記「新しい順列」の前記対応する数である場合、前記「置換アルファベット」内の前記置換文字の前記位置は、「s」が「偶数」である場合に、(s+1)個の位置だけ「昇格」(もしくは「降格」)することによって、または「s」が「奇数」である場合に、「s」個の位置だけ前記文字を「昇格」(もしくは「降格」)することによって取得され、それにより異なる置換操作を生成し各位置について使用されるべき前記置換文字を取得することを可能に
し、
・ 複数の「暗号化ラウンド」に適用される前記「置換操作」において、各ラウンドで使用されるべき昇格操作および降格操作は、前記パラメータの残りを維持したまま、交互に行うことがで
き、
・ 各[A2]行列に対して異なる「置換操作」を使用している間、前記「中間メッセージ」を含む行列[A2]を暗号化して前記「暗号化メッセージ」を含む行列[C1]を生成するために、異なる操作を適用しながら使用されるべき
順序を決定する必要があり、これは、キーワードCK3にわたって前記対応する効果を有し、これは前記並べ替え操作を適用するために使用されるべき前記順序を反映しなければならず、前記置換に使用される前記「新しい順列」も反映しなければなら
ず、
・ 前記「ベースメッセージ」を含むように複数の行列[A1]を定義する場合、段階(
e)において[A1]を並べ替えないと決定された場合に、各行列[A1]に対して異なる「新しい順列」[B2]を使用することによって[A1]行列のすべてが暗号化されるものとしてよく、そうでない場合、[A2]行列のすべては、前記同じ「新しい順列」[B2]を使用するか、または各「A2」行列に対して異なる「新しい順列」[B2]を使用することによって、暗号化され
得、
・ 各[A1]行列を暗号化するために異なる「新しい順列」を使用する間(段階(
e)において並べ替えることをしないと決定された場合)、または各[A2]行列を暗号化するために異なる「新しい順列」を使用する間、前記「暗号化メッセージ」を含む行列[C1]を生成するために行列[A1]または[A2]を暗号化している間に異なる順列を適用するために使用される前記順序を決定する必要もあり、このことは、キーワードCK3にわたって前記対応する効果を有し、これは前記メッセージの前記断片に各「新しい順列」を適用するために使用される前記順序を反映しなければならな
い請求項1
または2に記載の方法。
【請求項8】
段階(
g)から(
k)
において、
・ 段階(
e)において、
暗号化操作の前に前記
1つまたは複数の
行列[A1]を並べ替えることをスキップすることが決定された場合、
1つまたは複数の
行列[C1]に前記並べ替えを適用することが必要になり、これはキーワードCK2およびCK3にわたって前記対応する効果を有し、これは並べ替えおよび暗号化を行っている間に使用されるべき
順序を反映しなければならな
い請求項1、2、および5
のいずれか一項に記載の方法。
【請求項9】
段階(
f)および(
g)
において、
・ 暗号化プロセスは、また、複数回実行されてもよく、
追加の置換操作、
初期置換位置のすべて、および前記巡回方向のすべてを含むようにキーワードCK3の前記定義を拡張し、前記置換操作は、繰り返されるか、また
は請求項7に記載の新しい置換操作を適用することができ
る請求項1、7、および8
のいずれか一項に記載の方法。
【請求項10】
段階(
f)から(
k)を実行した後に、
・ 前記「暗号化メッセージ」の最終的転置を、前記「新しい順列」
において開始位置が選択される「転写操作」を定義することによって、および前記順列を巡回するための方向(前記順列の先頭または末尾に向かう)を定義することによって、行うことができ、
その際にこの場合、前記順列は周期的構造(末尾から先頭に接続する
)を有すると想定され、
・ 行列[C1]と同じサイズおよび同じ数の断片を有する行列[C3]を作成し、前記暗号化メッセージのすべての断片を、各断片について、
転写を開始するために選択された可能性のある
初期位置から始まる前記「新しい順列」の
順序に従って転写し、これはキーワードCK3にわたって前記対応する効果を有し、これは[C3]を作成するために前記暗号化メッセージのすべての断片の
転写操作を反映しなければならない請求項1から8のいずれか一項に記載の方法。
【請求項11】
段階(
a)から(
k)において、
・ 説明された
複数の選択肢のうちの可能な選択肢のどれが使用されることになるか、および/または前記方法を適用するために生成することが可能である前記複数の選択肢のうちの選択された選択肢を適用する間に使用する
順序に関する決定であって、前記選択肢は、適宜、すべてのCK1、CK2およびCK3キーワードに符号化されなければならない、決
定、請求項1から8のいずれか一項に記載の方法。
【請求項12】
段階(
l)において、
・ 段階(
a)において前記「ベースメッセージ」を含むように複数の行列[A1]を定義することを決定した場合、
受信者通信者に、前記「数集合」[B1]のすべての
識別子、および前記「置換アルファベット」[A0]の前記識別子のすべてを、前記定義されたリポジトリのすべてが安全保護下にあるという了解の下で保護される必要がない通信チャネルを使用して、伝送しなければならな
い請求項1
または2に記載の方法。
【請求項13】
段階(
m)において、
・ 段階(
a)において、前記「ベースメッセージ」を含むように複数の行列[A1]を定義することを決定した場合、
受信者通信者に、事前に合意した安全な通信チャネルを使用することによって、定義されているであろう行列[C1](または[C2]、または[C3])に含まれている前記暗号化メッセージのすべて、および定義されているであろう前記キーワードCK1からCK3(またはその識別子)のすべてを、伝送しなければならな
い請求項1
または2に記載の方法。
【請求項14】
段階(
n)において、
・ 段階(
a)において発出側通信者が前記「ベースメッセージ」を含むように複数の[A1]行列を定義することを決定した場合、前記メッセージを復号するために、前記受信側通信者は前記「置換アルファベット」(またはその識別子)、前記キーワードCK1からCK3(またはその識別子)、前記「暗号化メッセージ」を含む前記行列[C1]、[C2]または[C3]、および前記元の「数集合」(またはその識別子)を含む前記行列[B1]に基づき、説明されているように逆に前記方法を適用しなければならな
い請求項1
または2に記載の方法。
【国際調査報告】