魔方陣数列を用いるセキュリティ強化方法
【課題】管理が簡単で解読が困難なセキュリティシステムを提案することである。
【解決手段】2進数化した平文と、2進数化した魔方陣数列との排他的論理和演算を行い、その出力を送信し、受信側では受信した2進数信号と、受信側から入手した魔方陣数列との排他的論理和を演算し、2進数化された平文を得、それに基づいて平文を復号する。
【解決手段】2進数化した平文と、2進数化した魔方陣数列との排他的論理和演算を行い、その出力を送信し、受信側では受信した2進数信号と、受信側から入手した魔方陣数列との排他的論理和を演算し、2進数化された平文を得、それに基づいて平文を復号する。
【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は情報・通信分野における通信傍受や不当な視聴などの被害防止対策が可能なセキュリティ強化方法及びセキュリティシステムに関するものである。
【0002】
【従来の技術】機密を保持したい情報などを通常では解読できないような情報へ変換するために暗号化が行われる。このとき、元の情報を平文、暗号化された情報を暗号文と呼び、暗号文から平文を復元する変換を復号化と呼ぶ。
【0003】暗号化及び復号化には鍵が必要であり、一般に暗号の強度はこの鍵の大きさに比例する。この鍵を知らない第三者が暗号文から平文を得ることを解読と呼び、解読に時間がかかる暗号ほど強度が高いことになる。
【0004】従来から、指数関数、分数、乱数を用いる暗号コード化方法が使われているが、これらの方法は、数値範囲の縮小や退化現象を避けることが出来なかった。乱数列を2進数化したものは実用上128ビット以下が主流であり、暗号化してもコンピュータによって解読される懸念があった。
【0005】
【発明が解決しようとする課題】本発明の目的は、取り扱いが簡単でしかも解読が困難な暗号化技術を提案することである。
【0006】
【課題を解決するための手段】本発明の1特徴は、第1の情報と、前記第1の情報を2進数に変換するステップと、魔方陣数列を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化された第1の情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化されるとともに交信時間短縮用コード文化された第2の情報を作成するステップと、前記第2の情報および前記魔方陣数列に関する鍵情報を正規利用者へ供給するステップとを備えたものである。
【0007】本発明は、代数学整数論における高次魔方陣のクロス入替え、拡張クロス入替えに拠って生成される正規化魔方陣の総数が、理論上膨大な数になることに基づいている。魔方陣とは、縦、横、斜めの数字の合計が同一になるよう、方形に配置された数の連なりであり、例えば、正規形十魔方陣の種類は10の300べき乗(10300)に達する。
【0008】これらの魔方陣から形成される数列は、種類が膨大であるばかりでなくクロス入れ替え、拡張クロス入替えに基づき生成されるので管理が容易であり、各種の乱数表や物理乱数との混在・包含も容易である。本発明では暗号化に用いられる魔方陣の数列に関する鍵は、正規の送信者だけが発行し、受信者に伝えられる。通常、同一な鍵の再発行はしない。拡張クロス入替えのプロシジュア数は、現在50種類以上存在するが、鍵の種類を尚一層膨大化して機密度を高めることが可能である。
【0009】本発明はIC化が容易である。更に非解読性を徹底するために幾つかの系の正規形十魔方陣をROM化する。補数演算プロシジュア及び拡張クロス入れ替えプロシジュアをROM化する。演算バッファエリア用のRAMを含めて、IC化、マイクロプロセッサ化を図ることが可能である。
【0010】本発明は、高次魔方陣数列を用いIT時代の発展の妨害や障害となる不当な傍受などを防ぐのに役立つ。
【0011】本発明は、インターネット産業に関係する家電・情報・通信・電気・電子、などの機器やHDD・FD・CD・DVD始め各種媒体を含め、IT時代の産業の発展を支える基盤になる。
【0012】本発明は、日本語用のANKコード表、非漢字コード表並びに漢字コード表を利用する通信方式に属する。コード表を利用する際や16進数2進数変換を施す際に本発明ではずらしを施す。
【0013】プログラムを有する正規の送信者、受信者だけが、このずらしを戻し解読ができる。例えばANKコード表を16進数で(1100)16ずらす。非漢字コード表並びに漢字コード表を16進数(1111)16毎にコード表記載の配置をずらし、(9FFF)16などとの差を補数として算出してずらす。16進数2進数変換表を8ずらす。この様なずらしを施して元文がそのままでは読めないように処理する。
【0014】本発明では更に魔方陣を根源とする2進数列を使用して情報を暗号コード化している。すなわち、本発明は、十魔方陣のような高次魔方陣は、莫大な数の正規形魔方陣をその子孫として代数的に生産できることを見出したことに基づいている。
【0015】十魔方陣の推定総数は約10300である。そこで、本発明においては管理し易くて短い「いろはにほへと7個の2桁数列」を利用する。本発明においては、送信の度に送信者に660億を超す多数の正規形魔方陣の中から乱数発生方式により自動算出して「い17ろ35は6に26ほ17へ21と8」のように与える。
【0016】本発明のプログラムを所有している受信者は、「いろはにほへと7個の2桁数列の内容」を送信者から安全な伝達手段、たとえば、電話回線などを経由して入手し、鍵として使い、予め入手しているプログラムの演算に従って解読し原情報を入手することができる。
【0017】
[発明の詳細な説明]図1は、本発明の一実施形態を示すブロックダイアグラムである。送信側では送信すべき平文を2進数化手段2を用いて2進数へ変換する。一方後述するように選択した魔方陣4の数列を2進数化手段6を用いて2進数化する。これらの2進数は、排他的論理和手段8の入力側A、Bに与えられ、排他的論理和演算される。
【0018】排他的論理和演算では、いずれか一方の入力が1で、他方の入力が0の時だけ出力が1となる。すなわち、平文が1で魔方陣の数列が0の時、あるいは平文が0で魔方陣の数列が1の時だけ出力が1となる演算を行う。このようにして平文を暗号化し、2進数列に変換した後、送信手段10を介して送信するのである。
【0019】魔方陣4は、例えば十魔方陣を使用する。この魔方陣4は、10行、10列の方眼状に1から100の数値を配置し、その行方向、列方向、対角線方向の和がすべて同じ505になるようにしたものである。この魔方陣4は、基準となる魔方陣を後述するようにクロス入れ替え、拡張クロス入れ替え操作により変形可能であり、しかも簡単に最終魔方陣を特定できるのである。
【0020】すなわち、設定された基準魔方陣と、入れ替え操作に関する情報を鍵として正規受信者、あるいは正規利用者に供給すれば、正規受信者、正規利用者はその鍵を用いて送信された2進数から元の平文を復元することができるのである。
【0021】例えば、平文が1,魔方陣数列が0の場合は、排他的論理演算の結果は1であり、1が送信される。受信側では受信信号1と、送信側から入手した同じ魔方陣数列0を排他的論理和演算を行い1を得る。同様にして平文が0で魔方陣の数列が1の場合にも受信側は最終的に2進数列0を得る。このようにして暗号化された平文を入手した正規受信者、正規利用者は鍵を利用して暗号化された平文を簡単に元の平文にすることができる。図2は、平文が数字の「13」の場合の暗号化、復号化の例を示している。
【0022】鍵を入手することができない正規利用者、正規受信者以外は仮に暗号化された2進数列を入手しても元の平文を得ることは不可能である。例えば、十魔方陣は600億以上存在し、どの魔方陣が使用されているか特定するのは不可能であるからである。
【0023】平文を暗号化するプログラム、あるいは暗号化された情報から平文を復号化するプログラムは予め正規受信者、正規利用者に付与しても良いし、送信情報に含めても良い。送信する際は平文を入力するとともに、基準となる魔方陣、その魔方陣に対する入れ替え操作手順を、たとえば、いろはにほへとで選択し、それを正規利用者へ鍵として知らせるだけでよい。しかも、送信側は、基準となる魔方陣、入れ替え操作を簡単に変更することができる。利用者は、入手した鍵情報をプログラムに入力するだけで、もとの平文を再現できるのである。
【0024】次に図3の通信送受のセキュリティ強化策を施したコード信号を用いる送受信方式のフロチャートを用いて本発明の1実施形態を説明する。送信者と受信者は図3以下で詳述する演算機能付きの専用のプログラム群を所有しているものとする。
【0025】受信者は当初、例えば2桁、7世代(基準魔方陣を7回クロス入れ替え、あるいは拡張クロス入れ替え操作することを意味する)の数列からなる鍵(間接鍵方式の鍵)を扱えばよい。
【0026】以後は専用プログラム一式によって、元と同長な長さ全域に亘る非繰り返しコードや介在させたずらし(一定値での加減算)処理などの自動演算処理を司るから、受信者は短時間に容易に元の情報を再現し目的を達成できる。
【0027】他方、コンピュータを用いても専用のプログラム群を所有しない非正規利用者は、たとえ2進数や16進数、32進数、64進数、128進数列コードの信号情報を傍受、入手しても送信内容が毎回異なるコードで非繰り返し方式で行われているために、解読は不可能である。
【0028】本方法では「2桁数列n個でn世代目の正規形高次魔方陣を形成させる間接鍵方式の部分」、「16進数などに幾つかのずらしを施して2進数を形成する部分」、「選出された正規形高次魔方陣を加工して2進数を形成する部分」、「通信文を形成して交信する部分」「受信して解読する部分」を備えている。
【0029】ここで、非繰り返し数列として魔方陣を使用している。例えば、魔方陣要素の数値が100ならば16進数パック化した数(64)16を2進数(01100100)2化し、8ビットの情報として使用する。十魔方陣ならば、100個の数列800ビット中で(01100100)2の2進数列は1回しか出現しない。
【0030】正規化魔方陣や補数変換した魔方陣並びに表裏を回転させた各魔方陣の要素を行列の逐次順に辿って得られる内容の数列値1や93などは、十魔方陣ならば100回に1回の頻度で使用され、他の乱数列と異なり重複使用や縮退化現象などは呈しない。
【0031】2進数値化された図面や写真の電送、FD・CDやDVD等々の媒体内容の加工や音楽や映像のオンライン電送の際も16進数4桁、それぞれ異なるずらし、例えば、(84A3)16を施して同一の2進数値であっても若干分散してぼかして分かりにくくし、更に非繰り返し2進数値との排他的和(EXOR)演算処理を施して2進数値やそれを16進数、32進数、64進数、128進数コード文字化した文を形成して送受コードに使用するプログラムとしている。
【0032】本方法は図3以降に詳述するとおり、新たな正規型十魔方陣を形成し得る方式であるため、送信する元文は1文字以上の長大文でよい。長大な文や2進数値化した長大な文は256字以内に区切って送受信に備えているFDなどの媒体に記憶させ易いプログラムとして纏めている。
【0033】本方法では更にプログラム内に「このような2桁数列鍵の有効な時限」を有している。例えば、受信待ち時限15分間を経過すれば送信、受信とも専用プログラムの再起動を行わせている。また盗難などの対策としてプログラム内に「プログラムの使用期限」を設定、表示し、期限を過ぎたものは使えぬようにしている。
【0034】新しいプログラムと交換させ、通信ファイルオープンを契約者だけと行なう法秩序を維持する方式を採用している。その際のメインテナンス方法として、ディレクトリ内容である魔方陣系の交換、拡張クロス入替え用プロシジュア順序の変更、それらに伴うRAM・ROMの更新などを行なう。
【0035】以上の説明では、情報を送信する場合を説明しているが、本発明は情報が記録された記録媒体、例えば、DVD、CD−ROMなどを用いる時も適用できる。この場合には、記録媒体には先に説明したような方法で情報を記録して、相手側に伝達し、鍵を入手した正規の利用者はプログラムを使用して元の情報を復元することができる。
【0036】図4は、本発明に適用可能な魔方陣である十魔方陣の解の1例を示すマトリックスであり、2桁の乱数表と似ている。以下このマトリクスを例にして説明する。縦10列×横10行、計100個の方眼内に整数1…100を配し、1から100までの自然数を総て1回だけ使用し、且つ、各行10個の和、各列10個の和、主対角線1個の和及び副対角線1個の和の全てが505である配列を十魔方陣と称する。
【0037】100個の要素に対して連立方程式数22個の不定式で構成される集合演算で解は求められるが、膨大な試行・計算をしても1つの数値解を得ることは至難である。一般に6次以上の高次魔方陣は、コンピュータのプログラムで形成することさえ困難である。
【0038】膨大な試行をして得た十魔方陣の解を1つの系と称する。添字2桁の左側は行を表わし、右側は列を示している。自行内や自列内の入替えを拡張と言い、他行、他列に亘る入替えをクロス入替えと称する。主対角線と縦中心線とで囲まれる第2象限左上の面積約1/8の範囲(R1)に整数値1を置くものを正規形と称し、整数値1の所在で分類している。
【0039】すなわち、第1行第1列に整数値1を置くのをA型とし、順次第1行第2列、第1行第3列第1行第4列、第1行第5列に整数値「1」を配置するものを、それぞれB、C、D、E型とする。第3行第3列、第3行第4列、第3行第5列に整数値1を置くのをそれぞれF、G、H型とする。
【0040】第5行第5列に整数値「1」を配置するものをI型、第2行第2列、第2行第3列、第2行第4列、第2行第5列に整数値「1」を配置するものをそれぞれacde型とする。また、第4行第4列、第4行第5列に整数値「1」を配置するものをfh型とする。クロス入替えで形成されるb型、g型は、B型G型と同じ位置に回転移動する。
【0041】その際整数値「1」が主対角線上に在る、A、a、F、fおよびI型では整数値「1」が左上の位置になる正方形を考え、左下角の数値<右上角の数値とする。B型およびG型では整数値「1」が左上に位置する長方形を考え、左下角の数値<右上角の数値とする。b型およびg型は、整数値「1」が左上に位置する長方形で、左下角の数値>右上角の数値とする。
【0042】ここでいう正方形や長方形はいずれも中心線対象とする。その他の型では整数値「1」が在ればよい。正規形として上述したような型で大分類し、正方形や長方形の各コーナーの数値で中分類する。一般に十魔方陣は、横中心線に近い特定行の諸数値で小分類することができる。
【0043】十魔方陣の総数は10の数百べき乗10300と推定される。魔方陣で総数が確定しているのは、低次元である三、四、五魔方陣であり、三魔方陣は8個、四魔方陣は7040個、五魔方陣は15億3962万1040個である(表裏90度回転して幾何学的に8倍された総数)。六魔方陣の総数は10の約18べき乗1018と推定されるが、現在では六以上の高次元魔方陣の総数確定は不可能である。
【0044】四次元以上の魔方陣は相隣り合う4つの素子(魔方陣を構成する数値を指す)のクロス入替えによってA型はa型に変換でき、B型はb型に変換できる。4素子のクロス入替えをするとともに縦横の入替えを加えた拡張クロス入替えによる変換は、五次元以上の魔方陣に適用される。十魔方陣では、中心点対象や中心線対象に、相隣り合う4素子間の拡張クロス入替えならば同時に1か所、4か所、9か所、16か所、或いは25か所で行なえる。
【0045】更に、離れた4素子間の拡張クロス入替えによる変換ならば同時に1か所、2か所、3か所、4か所、5か所、25か所で行なえる。他の入替え領域をまたがないように拡張クロス入替えをしただけでも、30種類を超す新たな正規形十魔方陣(子)を形成できる。
【0046】図5は、各象限内における拡張及びクロス入替えの例である。以下入れ替えを⇔で示すこととする。第二象限内で言えば、外陣側4個a11⇔a22、a12⇔a21、a31⇔a42、a32⇔a41のクロス入替え及び内陣側4個a13⇔a24、a14⇔a23、a33⇔a44、a34⇔a43のクロス入替えを行なう。
【0047】さらに、拡張a15⇔a25、a35⇔a45、a51⇔a52、a53⇔a54を行う。他の象限についても同様に行列及び対角線の各和を505にするように、拡張、クロス入れ替えを行う。
【0048】図6は、他象限に亘る拡張クロス入替えの例である。第二象限で言えば、第四象限に亘って対角線上で、外陣側の左上、右下をクロス入替えa11⇔a00するとともに内陣側左上、右下のクロス入替えa44⇔a77を行う。さらに、行列及び対角線の各和を505にするように、第1行第10行及び第4行第7行と第1列第10列及び第4列第7列の拡張入替えを行う。
【0049】図7は、拡張クロス入替えx1x2変換(非可逆)の演算例である。図4に、x1として図5を、x2として図6を使用して変換した例である。前出した何れとも内容の異なる新たな魔方陣を生成し得たことを示している。図7に更に例えばx3として図5のような変換を施せば、a11とa99とが入れ替った何れとも内容の異なる新たな高次魔方陣を生成し得る。
【0050】発明者は、魔方陣は、同一の拡張クロス入替えを続けると元に戻るという後退演算を呈すること、異なる拡張クロス入替えを続けると新たな魔方陣を生成するという非可逆な前進演算を呈することを発見した。
【0051】35種類を超す拡張クロス入替え技法の一つを、たとえばx1、他の一つをx2と置く。複数回の演算x1x1やx1x2x2x1は元どおりに戻す演算例であるが、x1やx2、x1x2やx2x1とかx1x2x1やx1x2x1x2などは非可逆な演算となって新たな正規形十魔方陣(孫や曾孫に相当する)を形成できる。
【0052】35種類の拡張クロス入れ替えを例えば24種類の系に施した場合には、正規形十魔方陣(子や孫や曾孫の子や孫や曾孫を含む)総数は重複組合せと順列との積で求められ、24×35H6×6!=24×40C6×6!=24×35×36×37×38×39×40/6!×6!=663億2720万6400種もの正規形十魔方陣を形成できる。
【0053】図8は、高次魔方陣の補数演算例である。次元数nの高次魔方陣の行列内の各要素数は、図4に示した通り1、22,…n2である。十魔方陣ではn=10であり、n2=100である。魔方陣の行列内の各要素に対する加減算としてマトリクス演算が成り立つ。一般には補数として何を選んでもよい。
【0054】ここで上げ底にしない場合は、補数としてn2+1を選ぶ。十魔方陣ではn2+1=101を使用し、行列内の各要素を1..100にする。更に正規形魔方陣になるように回転処理を施しておく。一部をn2+1+dなど(例えば上げ底d=1、各行列対角線の和=505+10d)にする方式も形成できプログラムとして利用できる。
【0055】図9は、図4に縦中心線を軸として回転を施した例である。数列を左側第1列から右側第10列の順に読む方式とする場合には、図9は図4とは異なる数列を算出できる。
【0056】図10は、図4に対角線を軸として回転を施した例である。数列を左側第1列から右側第10列の順に読む方式とする場合には、図10は図4と異なる数列を算出できる。
【0057】各正規形十魔方陣は、自身並びに補数変換を施して作られる二つの正規形十魔方陣を回転するだけで16種の十魔方陣を算出できる。これらの各行を左右方向に辿るだけで、「1..100を使用した」「非繰り返しな」「1600個から成る」「十進数列」を算出できる。
【0058】これらの十進数列を16進数化し、8ビット(1バイト)にパック化した数列、さらには0と1の「非繰り返しな」「12800個から成る」2進数列に変形できる。また、子や孫や曾孫を整然と組み込める。このようにして、「非繰り返しな」「12800の倍数個から成る」「2進数化された通信文の長さに合致させた」2進数列鍵を容易に構成できる。
【0059】このようにして得られた2進数列鍵の構成は、1が39.9%、0が60.1%であり、暗号通信に必要なEXOR処理用の2進数列鍵に適している。ANK文字8単位コード表や漢字コード表から構成された片仮名、平仮名、漢字や英数字を含む日本語や英語の通信文を2進数列化し、上記2進数列鍵でEXOR処理した暗号文では1の構成比が60%から40%の範囲に収まる。
【0060】なお、1..256を16進化し8ビット1バイトにパック化すれば、2進数列鍵の構成比は、理論上1が50%、0が50%になるが、通信回線では偶数パリティ方式が採用されるなどその必要性は少ない。
【0061】図11は、高次魔方陣の配列内に他の数列CをQ字形に包含させ、25個を置換した例である。マトリクス演算と無関係に置換できる。各行各列の和や対角線の和は505から外れた値となっている。別途、魔方陣演算プログラムを利用すれば、図4どおりの元の25個の数値及び他の数列Cの25個の数値をそれぞれ算出できる。これを数値秘匿技法の一つに応用できる。
【0062】図12は、図3に掲げた本発明の方式をANKコード表の半角文字に適用した場合の2進数暗号コードの例である。
【0063】図13は、図3に掲げた本発明の方式を漢字コード表の全角文字に適用した場合の2進数暗号コードの例である。
【0064】図14は、半角文字「1」を例にとり送受信する際のコード生成順序を説明するフロー図である。ステップ2では、数字「1」をANKコード化し、(31)16に変換する。このコードをステップ3で(1100)16を加えてずらすと(1131)16となる。
【0065】ステップ4ではコード(1131)をそれぞれ2進数コード(0001)2、(0001)2,(0011)2,(0001)2へそれぞれ変換する。ステップ5ではこのコードへそれぞれ(1000)2を加えてずらしを行い、2進数コード(1001)2、(1001)2,(1011)2,(1001)2を得る。
【0066】次にステップ6では、送信側から別途入手した鍵を利用して選択された魔方陣数列から例えば1及び93を入手する。この魔方陣は既に説明したように1,93,のように1から100までの整数が正方形にその行、列、対角線方向の和が505になるように配置されたものである。この魔方陣要素1,93を16進数化するとそれぞれ(01)16、(5D)16となる。
【0067】ステップ8ではこのコードを2進数に変換し、それぞれ(0000)2、(0001)2,(0101)2,(1101)2へと変換する。ステップ9ではステップ5、及び8で作られた二つの2進数列を排他的論理和演算し、(1001)2,(1000)2、(1110)2,(0100)2を得る。このコードをそのまま送信しても良いが、ここで通信時間を短縮するために一旦2進数4ビット、5ビット、6ビット、7ビットや8ビットを纏めてANKコード表やシフトJISコード表の一部を用いて、半角文字記号や漢字に置き換える。ANKコードの文字、記号は1バイトで送信できるから、ANKコード化した方が効果があがる。ステップ10ではこの2進数を4ビットずつ纏めて16進数で用いる英数字表現(98E4)16へ変換したものを掲げた。さらにステップ11で2進数へ変換し、受信側へ送信する。他の文字についても同様に変換される。
【0068】一方受信側では予め送信側から入手している鍵に基づいて魔方陣の数列である(1)10、(93)10を選択する。
【0069】ステップ13でこの数列をそれぞれ16進数化すると、それぞれ(01)16及び(5D)16となる。ステップ14では、この16進化コードを2進数化し、(0000)2,(0001)2,(0101)2,(1101)2のコードを得る。
【0070】ステップ15ではステップ11で得られた2進数とステップ14で得られた2進数とを排他的論理和演算を行い、2進数列(1011)2,(1001)2,(1011)2、(1001)2を作成する。
【0071】ステップ16では、この2進数列にずらしを与えるために2進数列(1000)2を減算することにより(0001)2,(0001)、(0011)2、(0001)2を得る。このコードを16進化コードで表すと(1131)16となる。
【0072】さらにステップ18でずらしを施すためにこのコードから(1100)16引くと(31)16となる。このコードをANKコード半角文字表示にすると「1」となる。これは送信された原情報である数字「1」である。他の文字についても上述と同じようにして変換され送受信される。
【0073】ここではANKコードずらし例(1100)16を示したが。また2進数4桁毎にそれぞれ同一なずらし8を施すことも可能である。
【0074】各桁毎に異なるずらし(8645)16ずらしを施してもよい。図14の(10)通信文字列欄においては、2進数を4ビットずつ纏め、例えば16進数暗号コード(98E4)16(BFB7)16に置換したりして、通信回線使用時間を短縮することができる。また、図3に掲げたとおり、文字列の先頭や末尾に番号を付加し、分割した通信文を管理することができる。
【0075】図15は、本発明の一実施形態の暗号化方法を説明するものであり、図13の中で、全角文字「関」を例にして送受信時のコード生成順序を説明するフロー図である。ステップ2では、漢字「関」をシフトJISコード(8AD6)16に変換する。
【0076】ステップ3ではこのコードをJIS16進コード(3458)16へ変換する。ステップ4ではコード3458をそれぞれ2進数コード(0011)2、(0100)2,(0101)2,(1000)2へそれぞれ変換する。ステップ5ではこのコードへそれぞれ1000を加えてずらしを行う。
【0077】次にステップ6では、送信側から別途入手した鍵を利用して選択された魔方陣数列から例えば1及び93を入手する。この魔方陣は既に説明したように1,93のように1から100までの整数が正方形内にそれぞれ行、列、対角線方向の和が505になるように配置されたものである。この魔方陣要素1,93を16進数化するとそれぞれ(01)16、(5D)16となる。
【0078】ステップ8ではこのコードを2進数に変換し、それぞれ(0000)2、(0001)2,(0101)2,(1101)2へと変換する。ステップ9ではステップ5、及び8で作られた二つの2進数列を排他的論理演算し、(1011)2,(1101)2、(1000)2,(1101)2を得る。ステップ10ではこの2進数をそれぞれ4ビットずつ纏め(BD8D)16へ変換し、受信側へ送信する。他の文字についても同様に変換される。
【0079】一方、受信側ではこのコードを受信し、ステップ11で2進数に変換する。したがってその結果はステップ9の結果と同じ(1011)2,(1101)2、(1000)2,(1101)2である。一方受信側では予め送信側から入手している鍵に基づいて魔方陣の数列である(1)10、(93)10を選択する。
【0080】ステップ13でこの数列をそれぞれ16進数化すると、それぞれ(01)16及び(5D)16となる。ステップ14では、この16進化コードを2進数化し、(0000)2,(0001)2,(0101)2,(1101)2のコードを得る。
【0081】ステップ15ではステップ11で得られた2進数とステップ14で得られた2進数とを排他的論理和演算を行い、2進数列(1011)2,(1100)2,(1101)2、(0000)2を作成する。
【0082】ステップ16では、この2進数列にずらしを与えるために2進数列(1000)2を加算することにより(0011)2,(0100)、(0101)2、(1000)2を得る。このコードを16進化コードで表すと(3458)16となる。
【0083】さらにステップ18でこのコードをシフトJISコード化すると(8AD6)16となり、これは送信された原情報である漢字「関」である。他の文字についても上述と同じようにして変換され送受信される。
【0084】ここでは4桁に同一である(1000)2だけのずらし(数字8だけずらす)を例示したが各桁毎に異なる(8645)16だけずらすことも可能である。
【0085】図15は、図3に示すような漢字コード化ずらしを行う例を示す。漢字「関」はシフトJISコードで表すと(8AD6)16である。これはJIS16進コードで表すと(3458)16である。ここで添え字16は16進数を表す。このコードを+(1111)16ずらすと(4569)16に替わり漢字「悼」になる。
【0086】さらに任意に選択したシフトJISコード(9FFF)16からこのコード(9FFF)16を差し引く演算を実行すると((9FFF)16−(4569)16)、「晉」(5A96)16に変わる。この操作を逆方向に行えば「晉」→「悼」→「関」で復元できる。
【0087】図15のステップ10においては、通信文字列4ビットを一文字に纏めて、16進数暗号コード(BD8D)16に置換している。ANKコード表の英数字・片仮名記号を使用すれば128個の半角文字(各1バイト)が得られる。さらに、5ビット、6ビット、7ビットを纏めて通信文字列を短縮したものとする。8ビット以上を纏める場合には、シフトJISコードの平仮名や漢字の一部を纏め表に追加しておく。このように置換することにより通信回線使用時間を短縮することができる。
【0088】また、図3に掲げたとおり、文字列の先頭や末尾に分割番号を付加し通信文全体を管理することができる。図13から図15では、半角文字の例、全角文字の例について説明したが送信受信に亘って半角文字と全角文字が混在する日本語向きのプログラムにすることができる。
【0089】以上の説明では、送受信を対象として説明したが、本発明の間接鍵方式は通信分野のみならず、情報記録媒体内にスクランブル処理加工を介在させて販売される映像・音楽などの分野にも適用しうる。
【0090】また、以上の説明では、拡張クロス入替えに富む十魔方陣を主体に述べているが、電算機器を使用しても未だ総数が確定していない六次以上の高次魔方陣を利用しても本発明を実施することが可能である。
【図面の簡単な説明】
【図1】本発明の一実施形態を示すブロックダイアグラムである。
【図2】暗号化、復号化の一例を示す図である。
【図3】図1で使用するセキュリテを説明するためのフローチャートである。
【図4】本発明で使用する高次魔方陣を説明する図で、十次魔方陣を示す。
【図5】図4に示す魔方陣に同一象限内で拡張及び、拡張クロス替えを施した例を示す図である。
【図6】図4に示す魔方陣に他象限に亘り拡張クロス替えを施した例を示す図である。
【図7】図4に示す魔方陣に図5の拡張及び拡張クロス替えX1及び図6に示すクロス替えX2を施した例を示す図である。
【図8】補数演算を施した例を示す図である。
【図9】図4示す魔方陣に縦中心線を軸に回転を施した例を示す図である。
【図10】図4に示す魔方陣に対角線を軸に回転を施した例を示す図である。
【図11】高次魔方陣の配列内に他の数列CをQ字形状に包含させ、25個を置換した例を示す図である。
【図12】2進数コードの例を示す図である。
【図13】平文及びそれを2進数コード化した例を示す図である。
【図14】図12の半角文字「1」の送受信時のコード生成順序を説明する図である。
【図15】図13の全角文字「関」の送受信時のコード生成順序を説明するための図である。
【符号の説明】
2…2進数化手段、4…魔方陣、6…2進数化手段、8…排他的論理和手段。
【0001】
【発明の属する技術分野】本発明は情報・通信分野における通信傍受や不当な視聴などの被害防止対策が可能なセキュリティ強化方法及びセキュリティシステムに関するものである。
【0002】
【従来の技術】機密を保持したい情報などを通常では解読できないような情報へ変換するために暗号化が行われる。このとき、元の情報を平文、暗号化された情報を暗号文と呼び、暗号文から平文を復元する変換を復号化と呼ぶ。
【0003】暗号化及び復号化には鍵が必要であり、一般に暗号の強度はこの鍵の大きさに比例する。この鍵を知らない第三者が暗号文から平文を得ることを解読と呼び、解読に時間がかかる暗号ほど強度が高いことになる。
【0004】従来から、指数関数、分数、乱数を用いる暗号コード化方法が使われているが、これらの方法は、数値範囲の縮小や退化現象を避けることが出来なかった。乱数列を2進数化したものは実用上128ビット以下が主流であり、暗号化してもコンピュータによって解読される懸念があった。
【0005】
【発明が解決しようとする課題】本発明の目的は、取り扱いが簡単でしかも解読が困難な暗号化技術を提案することである。
【0006】
【課題を解決するための手段】本発明の1特徴は、第1の情報と、前記第1の情報を2進数に変換するステップと、魔方陣数列を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化された第1の情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化されるとともに交信時間短縮用コード文化された第2の情報を作成するステップと、前記第2の情報および前記魔方陣数列に関する鍵情報を正規利用者へ供給するステップとを備えたものである。
【0007】本発明は、代数学整数論における高次魔方陣のクロス入替え、拡張クロス入替えに拠って生成される正規化魔方陣の総数が、理論上膨大な数になることに基づいている。魔方陣とは、縦、横、斜めの数字の合計が同一になるよう、方形に配置された数の連なりであり、例えば、正規形十魔方陣の種類は10の300べき乗(10300)に達する。
【0008】これらの魔方陣から形成される数列は、種類が膨大であるばかりでなくクロス入れ替え、拡張クロス入替えに基づき生成されるので管理が容易であり、各種の乱数表や物理乱数との混在・包含も容易である。本発明では暗号化に用いられる魔方陣の数列に関する鍵は、正規の送信者だけが発行し、受信者に伝えられる。通常、同一な鍵の再発行はしない。拡張クロス入替えのプロシジュア数は、現在50種類以上存在するが、鍵の種類を尚一層膨大化して機密度を高めることが可能である。
【0009】本発明はIC化が容易である。更に非解読性を徹底するために幾つかの系の正規形十魔方陣をROM化する。補数演算プロシジュア及び拡張クロス入れ替えプロシジュアをROM化する。演算バッファエリア用のRAMを含めて、IC化、マイクロプロセッサ化を図ることが可能である。
【0010】本発明は、高次魔方陣数列を用いIT時代の発展の妨害や障害となる不当な傍受などを防ぐのに役立つ。
【0011】本発明は、インターネット産業に関係する家電・情報・通信・電気・電子、などの機器やHDD・FD・CD・DVD始め各種媒体を含め、IT時代の産業の発展を支える基盤になる。
【0012】本発明は、日本語用のANKコード表、非漢字コード表並びに漢字コード表を利用する通信方式に属する。コード表を利用する際や16進数2進数変換を施す際に本発明ではずらしを施す。
【0013】プログラムを有する正規の送信者、受信者だけが、このずらしを戻し解読ができる。例えばANKコード表を16進数で(1100)16ずらす。非漢字コード表並びに漢字コード表を16進数(1111)16毎にコード表記載の配置をずらし、(9FFF)16などとの差を補数として算出してずらす。16進数2進数変換表を8ずらす。この様なずらしを施して元文がそのままでは読めないように処理する。
【0014】本発明では更に魔方陣を根源とする2進数列を使用して情報を暗号コード化している。すなわち、本発明は、十魔方陣のような高次魔方陣は、莫大な数の正規形魔方陣をその子孫として代数的に生産できることを見出したことに基づいている。
【0015】十魔方陣の推定総数は約10300である。そこで、本発明においては管理し易くて短い「いろはにほへと7個の2桁数列」を利用する。本発明においては、送信の度に送信者に660億を超す多数の正規形魔方陣の中から乱数発生方式により自動算出して「い17ろ35は6に26ほ17へ21と8」のように与える。
【0016】本発明のプログラムを所有している受信者は、「いろはにほへと7個の2桁数列の内容」を送信者から安全な伝達手段、たとえば、電話回線などを経由して入手し、鍵として使い、予め入手しているプログラムの演算に従って解読し原情報を入手することができる。
【0017】
[発明の詳細な説明]図1は、本発明の一実施形態を示すブロックダイアグラムである。送信側では送信すべき平文を2進数化手段2を用いて2進数へ変換する。一方後述するように選択した魔方陣4の数列を2進数化手段6を用いて2進数化する。これらの2進数は、排他的論理和手段8の入力側A、Bに与えられ、排他的論理和演算される。
【0018】排他的論理和演算では、いずれか一方の入力が1で、他方の入力が0の時だけ出力が1となる。すなわち、平文が1で魔方陣の数列が0の時、あるいは平文が0で魔方陣の数列が1の時だけ出力が1となる演算を行う。このようにして平文を暗号化し、2進数列に変換した後、送信手段10を介して送信するのである。
【0019】魔方陣4は、例えば十魔方陣を使用する。この魔方陣4は、10行、10列の方眼状に1から100の数値を配置し、その行方向、列方向、対角線方向の和がすべて同じ505になるようにしたものである。この魔方陣4は、基準となる魔方陣を後述するようにクロス入れ替え、拡張クロス入れ替え操作により変形可能であり、しかも簡単に最終魔方陣を特定できるのである。
【0020】すなわち、設定された基準魔方陣と、入れ替え操作に関する情報を鍵として正規受信者、あるいは正規利用者に供給すれば、正規受信者、正規利用者はその鍵を用いて送信された2進数から元の平文を復元することができるのである。
【0021】例えば、平文が1,魔方陣数列が0の場合は、排他的論理演算の結果は1であり、1が送信される。受信側では受信信号1と、送信側から入手した同じ魔方陣数列0を排他的論理和演算を行い1を得る。同様にして平文が0で魔方陣の数列が1の場合にも受信側は最終的に2進数列0を得る。このようにして暗号化された平文を入手した正規受信者、正規利用者は鍵を利用して暗号化された平文を簡単に元の平文にすることができる。図2は、平文が数字の「13」の場合の暗号化、復号化の例を示している。
【0022】鍵を入手することができない正規利用者、正規受信者以外は仮に暗号化された2進数列を入手しても元の平文を得ることは不可能である。例えば、十魔方陣は600億以上存在し、どの魔方陣が使用されているか特定するのは不可能であるからである。
【0023】平文を暗号化するプログラム、あるいは暗号化された情報から平文を復号化するプログラムは予め正規受信者、正規利用者に付与しても良いし、送信情報に含めても良い。送信する際は平文を入力するとともに、基準となる魔方陣、その魔方陣に対する入れ替え操作手順を、たとえば、いろはにほへとで選択し、それを正規利用者へ鍵として知らせるだけでよい。しかも、送信側は、基準となる魔方陣、入れ替え操作を簡単に変更することができる。利用者は、入手した鍵情報をプログラムに入力するだけで、もとの平文を再現できるのである。
【0024】次に図3の通信送受のセキュリティ強化策を施したコード信号を用いる送受信方式のフロチャートを用いて本発明の1実施形態を説明する。送信者と受信者は図3以下で詳述する演算機能付きの専用のプログラム群を所有しているものとする。
【0025】受信者は当初、例えば2桁、7世代(基準魔方陣を7回クロス入れ替え、あるいは拡張クロス入れ替え操作することを意味する)の数列からなる鍵(間接鍵方式の鍵)を扱えばよい。
【0026】以後は専用プログラム一式によって、元と同長な長さ全域に亘る非繰り返しコードや介在させたずらし(一定値での加減算)処理などの自動演算処理を司るから、受信者は短時間に容易に元の情報を再現し目的を達成できる。
【0027】他方、コンピュータを用いても専用のプログラム群を所有しない非正規利用者は、たとえ2進数や16進数、32進数、64進数、128進数列コードの信号情報を傍受、入手しても送信内容が毎回異なるコードで非繰り返し方式で行われているために、解読は不可能である。
【0028】本方法では「2桁数列n個でn世代目の正規形高次魔方陣を形成させる間接鍵方式の部分」、「16進数などに幾つかのずらしを施して2進数を形成する部分」、「選出された正規形高次魔方陣を加工して2進数を形成する部分」、「通信文を形成して交信する部分」「受信して解読する部分」を備えている。
【0029】ここで、非繰り返し数列として魔方陣を使用している。例えば、魔方陣要素の数値が100ならば16進数パック化した数(64)16を2進数(01100100)2化し、8ビットの情報として使用する。十魔方陣ならば、100個の数列800ビット中で(01100100)2の2進数列は1回しか出現しない。
【0030】正規化魔方陣や補数変換した魔方陣並びに表裏を回転させた各魔方陣の要素を行列の逐次順に辿って得られる内容の数列値1や93などは、十魔方陣ならば100回に1回の頻度で使用され、他の乱数列と異なり重複使用や縮退化現象などは呈しない。
【0031】2進数値化された図面や写真の電送、FD・CDやDVD等々の媒体内容の加工や音楽や映像のオンライン電送の際も16進数4桁、それぞれ異なるずらし、例えば、(84A3)16を施して同一の2進数値であっても若干分散してぼかして分かりにくくし、更に非繰り返し2進数値との排他的和(EXOR)演算処理を施して2進数値やそれを16進数、32進数、64進数、128進数コード文字化した文を形成して送受コードに使用するプログラムとしている。
【0032】本方法は図3以降に詳述するとおり、新たな正規型十魔方陣を形成し得る方式であるため、送信する元文は1文字以上の長大文でよい。長大な文や2進数値化した長大な文は256字以内に区切って送受信に備えているFDなどの媒体に記憶させ易いプログラムとして纏めている。
【0033】本方法では更にプログラム内に「このような2桁数列鍵の有効な時限」を有している。例えば、受信待ち時限15分間を経過すれば送信、受信とも専用プログラムの再起動を行わせている。また盗難などの対策としてプログラム内に「プログラムの使用期限」を設定、表示し、期限を過ぎたものは使えぬようにしている。
【0034】新しいプログラムと交換させ、通信ファイルオープンを契約者だけと行なう法秩序を維持する方式を採用している。その際のメインテナンス方法として、ディレクトリ内容である魔方陣系の交換、拡張クロス入替え用プロシジュア順序の変更、それらに伴うRAM・ROMの更新などを行なう。
【0035】以上の説明では、情報を送信する場合を説明しているが、本発明は情報が記録された記録媒体、例えば、DVD、CD−ROMなどを用いる時も適用できる。この場合には、記録媒体には先に説明したような方法で情報を記録して、相手側に伝達し、鍵を入手した正規の利用者はプログラムを使用して元の情報を復元することができる。
【0036】図4は、本発明に適用可能な魔方陣である十魔方陣の解の1例を示すマトリックスであり、2桁の乱数表と似ている。以下このマトリクスを例にして説明する。縦10列×横10行、計100個の方眼内に整数1…100を配し、1から100までの自然数を総て1回だけ使用し、且つ、各行10個の和、各列10個の和、主対角線1個の和及び副対角線1個の和の全てが505である配列を十魔方陣と称する。
【0037】100個の要素に対して連立方程式数22個の不定式で構成される集合演算で解は求められるが、膨大な試行・計算をしても1つの数値解を得ることは至難である。一般に6次以上の高次魔方陣は、コンピュータのプログラムで形成することさえ困難である。
【0038】膨大な試行をして得た十魔方陣の解を1つの系と称する。添字2桁の左側は行を表わし、右側は列を示している。自行内や自列内の入替えを拡張と言い、他行、他列に亘る入替えをクロス入替えと称する。主対角線と縦中心線とで囲まれる第2象限左上の面積約1/8の範囲(R1)に整数値1を置くものを正規形と称し、整数値1の所在で分類している。
【0039】すなわち、第1行第1列に整数値1を置くのをA型とし、順次第1行第2列、第1行第3列第1行第4列、第1行第5列に整数値「1」を配置するものを、それぞれB、C、D、E型とする。第3行第3列、第3行第4列、第3行第5列に整数値1を置くのをそれぞれF、G、H型とする。
【0040】第5行第5列に整数値「1」を配置するものをI型、第2行第2列、第2行第3列、第2行第4列、第2行第5列に整数値「1」を配置するものをそれぞれacde型とする。また、第4行第4列、第4行第5列に整数値「1」を配置するものをfh型とする。クロス入替えで形成されるb型、g型は、B型G型と同じ位置に回転移動する。
【0041】その際整数値「1」が主対角線上に在る、A、a、F、fおよびI型では整数値「1」が左上の位置になる正方形を考え、左下角の数値<右上角の数値とする。B型およびG型では整数値「1」が左上に位置する長方形を考え、左下角の数値<右上角の数値とする。b型およびg型は、整数値「1」が左上に位置する長方形で、左下角の数値>右上角の数値とする。
【0042】ここでいう正方形や長方形はいずれも中心線対象とする。その他の型では整数値「1」が在ればよい。正規形として上述したような型で大分類し、正方形や長方形の各コーナーの数値で中分類する。一般に十魔方陣は、横中心線に近い特定行の諸数値で小分類することができる。
【0043】十魔方陣の総数は10の数百べき乗10300と推定される。魔方陣で総数が確定しているのは、低次元である三、四、五魔方陣であり、三魔方陣は8個、四魔方陣は7040個、五魔方陣は15億3962万1040個である(表裏90度回転して幾何学的に8倍された総数)。六魔方陣の総数は10の約18べき乗1018と推定されるが、現在では六以上の高次元魔方陣の総数確定は不可能である。
【0044】四次元以上の魔方陣は相隣り合う4つの素子(魔方陣を構成する数値を指す)のクロス入替えによってA型はa型に変換でき、B型はb型に変換できる。4素子のクロス入替えをするとともに縦横の入替えを加えた拡張クロス入替えによる変換は、五次元以上の魔方陣に適用される。十魔方陣では、中心点対象や中心線対象に、相隣り合う4素子間の拡張クロス入替えならば同時に1か所、4か所、9か所、16か所、或いは25か所で行なえる。
【0045】更に、離れた4素子間の拡張クロス入替えによる変換ならば同時に1か所、2か所、3か所、4か所、5か所、25か所で行なえる。他の入替え領域をまたがないように拡張クロス入替えをしただけでも、30種類を超す新たな正規形十魔方陣(子)を形成できる。
【0046】図5は、各象限内における拡張及びクロス入替えの例である。以下入れ替えを⇔で示すこととする。第二象限内で言えば、外陣側4個a11⇔a22、a12⇔a21、a31⇔a42、a32⇔a41のクロス入替え及び内陣側4個a13⇔a24、a14⇔a23、a33⇔a44、a34⇔a43のクロス入替えを行なう。
【0047】さらに、拡張a15⇔a25、a35⇔a45、a51⇔a52、a53⇔a54を行う。他の象限についても同様に行列及び対角線の各和を505にするように、拡張、クロス入れ替えを行う。
【0048】図6は、他象限に亘る拡張クロス入替えの例である。第二象限で言えば、第四象限に亘って対角線上で、外陣側の左上、右下をクロス入替えa11⇔a00するとともに内陣側左上、右下のクロス入替えa44⇔a77を行う。さらに、行列及び対角線の各和を505にするように、第1行第10行及び第4行第7行と第1列第10列及び第4列第7列の拡張入替えを行う。
【0049】図7は、拡張クロス入替えx1x2変換(非可逆)の演算例である。図4に、x1として図5を、x2として図6を使用して変換した例である。前出した何れとも内容の異なる新たな魔方陣を生成し得たことを示している。図7に更に例えばx3として図5のような変換を施せば、a11とa99とが入れ替った何れとも内容の異なる新たな高次魔方陣を生成し得る。
【0050】発明者は、魔方陣は、同一の拡張クロス入替えを続けると元に戻るという後退演算を呈すること、異なる拡張クロス入替えを続けると新たな魔方陣を生成するという非可逆な前進演算を呈することを発見した。
【0051】35種類を超す拡張クロス入替え技法の一つを、たとえばx1、他の一つをx2と置く。複数回の演算x1x1やx1x2x2x1は元どおりに戻す演算例であるが、x1やx2、x1x2やx2x1とかx1x2x1やx1x2x1x2などは非可逆な演算となって新たな正規形十魔方陣(孫や曾孫に相当する)を形成できる。
【0052】35種類の拡張クロス入れ替えを例えば24種類の系に施した場合には、正規形十魔方陣(子や孫や曾孫の子や孫や曾孫を含む)総数は重複組合せと順列との積で求められ、24×35H6×6!=24×40C6×6!=24×35×36×37×38×39×40/6!×6!=663億2720万6400種もの正規形十魔方陣を形成できる。
【0053】図8は、高次魔方陣の補数演算例である。次元数nの高次魔方陣の行列内の各要素数は、図4に示した通り1、22,…n2である。十魔方陣ではn=10であり、n2=100である。魔方陣の行列内の各要素に対する加減算としてマトリクス演算が成り立つ。一般には補数として何を選んでもよい。
【0054】ここで上げ底にしない場合は、補数としてn2+1を選ぶ。十魔方陣ではn2+1=101を使用し、行列内の各要素を1..100にする。更に正規形魔方陣になるように回転処理を施しておく。一部をn2+1+dなど(例えば上げ底d=1、各行列対角線の和=505+10d)にする方式も形成できプログラムとして利用できる。
【0055】図9は、図4に縦中心線を軸として回転を施した例である。数列を左側第1列から右側第10列の順に読む方式とする場合には、図9は図4とは異なる数列を算出できる。
【0056】図10は、図4に対角線を軸として回転を施した例である。数列を左側第1列から右側第10列の順に読む方式とする場合には、図10は図4と異なる数列を算出できる。
【0057】各正規形十魔方陣は、自身並びに補数変換を施して作られる二つの正規形十魔方陣を回転するだけで16種の十魔方陣を算出できる。これらの各行を左右方向に辿るだけで、「1..100を使用した」「非繰り返しな」「1600個から成る」「十進数列」を算出できる。
【0058】これらの十進数列を16進数化し、8ビット(1バイト)にパック化した数列、さらには0と1の「非繰り返しな」「12800個から成る」2進数列に変形できる。また、子や孫や曾孫を整然と組み込める。このようにして、「非繰り返しな」「12800の倍数個から成る」「2進数化された通信文の長さに合致させた」2進数列鍵を容易に構成できる。
【0059】このようにして得られた2進数列鍵の構成は、1が39.9%、0が60.1%であり、暗号通信に必要なEXOR処理用の2進数列鍵に適している。ANK文字8単位コード表や漢字コード表から構成された片仮名、平仮名、漢字や英数字を含む日本語や英語の通信文を2進数列化し、上記2進数列鍵でEXOR処理した暗号文では1の構成比が60%から40%の範囲に収まる。
【0060】なお、1..256を16進化し8ビット1バイトにパック化すれば、2進数列鍵の構成比は、理論上1が50%、0が50%になるが、通信回線では偶数パリティ方式が採用されるなどその必要性は少ない。
【0061】図11は、高次魔方陣の配列内に他の数列CをQ字形に包含させ、25個を置換した例である。マトリクス演算と無関係に置換できる。各行各列の和や対角線の和は505から外れた値となっている。別途、魔方陣演算プログラムを利用すれば、図4どおりの元の25個の数値及び他の数列Cの25個の数値をそれぞれ算出できる。これを数値秘匿技法の一つに応用できる。
【0062】図12は、図3に掲げた本発明の方式をANKコード表の半角文字に適用した場合の2進数暗号コードの例である。
【0063】図13は、図3に掲げた本発明の方式を漢字コード表の全角文字に適用した場合の2進数暗号コードの例である。
【0064】図14は、半角文字「1」を例にとり送受信する際のコード生成順序を説明するフロー図である。ステップ2では、数字「1」をANKコード化し、(31)16に変換する。このコードをステップ3で(1100)16を加えてずらすと(1131)16となる。
【0065】ステップ4ではコード(1131)をそれぞれ2進数コード(0001)2、(0001)2,(0011)2,(0001)2へそれぞれ変換する。ステップ5ではこのコードへそれぞれ(1000)2を加えてずらしを行い、2進数コード(1001)2、(1001)2,(1011)2,(1001)2を得る。
【0066】次にステップ6では、送信側から別途入手した鍵を利用して選択された魔方陣数列から例えば1及び93を入手する。この魔方陣は既に説明したように1,93,のように1から100までの整数が正方形にその行、列、対角線方向の和が505になるように配置されたものである。この魔方陣要素1,93を16進数化するとそれぞれ(01)16、(5D)16となる。
【0067】ステップ8ではこのコードを2進数に変換し、それぞれ(0000)2、(0001)2,(0101)2,(1101)2へと変換する。ステップ9ではステップ5、及び8で作られた二つの2進数列を排他的論理和演算し、(1001)2,(1000)2、(1110)2,(0100)2を得る。このコードをそのまま送信しても良いが、ここで通信時間を短縮するために一旦2進数4ビット、5ビット、6ビット、7ビットや8ビットを纏めてANKコード表やシフトJISコード表の一部を用いて、半角文字記号や漢字に置き換える。ANKコードの文字、記号は1バイトで送信できるから、ANKコード化した方が効果があがる。ステップ10ではこの2進数を4ビットずつ纏めて16進数で用いる英数字表現(98E4)16へ変換したものを掲げた。さらにステップ11で2進数へ変換し、受信側へ送信する。他の文字についても同様に変換される。
【0068】一方受信側では予め送信側から入手している鍵に基づいて魔方陣の数列である(1)10、(93)10を選択する。
【0069】ステップ13でこの数列をそれぞれ16進数化すると、それぞれ(01)16及び(5D)16となる。ステップ14では、この16進化コードを2進数化し、(0000)2,(0001)2,(0101)2,(1101)2のコードを得る。
【0070】ステップ15ではステップ11で得られた2進数とステップ14で得られた2進数とを排他的論理和演算を行い、2進数列(1011)2,(1001)2,(1011)2、(1001)2を作成する。
【0071】ステップ16では、この2進数列にずらしを与えるために2進数列(1000)2を減算することにより(0001)2,(0001)、(0011)2、(0001)2を得る。このコードを16進化コードで表すと(1131)16となる。
【0072】さらにステップ18でずらしを施すためにこのコードから(1100)16引くと(31)16となる。このコードをANKコード半角文字表示にすると「1」となる。これは送信された原情報である数字「1」である。他の文字についても上述と同じようにして変換され送受信される。
【0073】ここではANKコードずらし例(1100)16を示したが。また2進数4桁毎にそれぞれ同一なずらし8を施すことも可能である。
【0074】各桁毎に異なるずらし(8645)16ずらしを施してもよい。図14の(10)通信文字列欄においては、2進数を4ビットずつ纏め、例えば16進数暗号コード(98E4)16(BFB7)16に置換したりして、通信回線使用時間を短縮することができる。また、図3に掲げたとおり、文字列の先頭や末尾に番号を付加し、分割した通信文を管理することができる。
【0075】図15は、本発明の一実施形態の暗号化方法を説明するものであり、図13の中で、全角文字「関」を例にして送受信時のコード生成順序を説明するフロー図である。ステップ2では、漢字「関」をシフトJISコード(8AD6)16に変換する。
【0076】ステップ3ではこのコードをJIS16進コード(3458)16へ変換する。ステップ4ではコード3458をそれぞれ2進数コード(0011)2、(0100)2,(0101)2,(1000)2へそれぞれ変換する。ステップ5ではこのコードへそれぞれ1000を加えてずらしを行う。
【0077】次にステップ6では、送信側から別途入手した鍵を利用して選択された魔方陣数列から例えば1及び93を入手する。この魔方陣は既に説明したように1,93のように1から100までの整数が正方形内にそれぞれ行、列、対角線方向の和が505になるように配置されたものである。この魔方陣要素1,93を16進数化するとそれぞれ(01)16、(5D)16となる。
【0078】ステップ8ではこのコードを2進数に変換し、それぞれ(0000)2、(0001)2,(0101)2,(1101)2へと変換する。ステップ9ではステップ5、及び8で作られた二つの2進数列を排他的論理演算し、(1011)2,(1101)2、(1000)2,(1101)2を得る。ステップ10ではこの2進数をそれぞれ4ビットずつ纏め(BD8D)16へ変換し、受信側へ送信する。他の文字についても同様に変換される。
【0079】一方、受信側ではこのコードを受信し、ステップ11で2進数に変換する。したがってその結果はステップ9の結果と同じ(1011)2,(1101)2、(1000)2,(1101)2である。一方受信側では予め送信側から入手している鍵に基づいて魔方陣の数列である(1)10、(93)10を選択する。
【0080】ステップ13でこの数列をそれぞれ16進数化すると、それぞれ(01)16及び(5D)16となる。ステップ14では、この16進化コードを2進数化し、(0000)2,(0001)2,(0101)2,(1101)2のコードを得る。
【0081】ステップ15ではステップ11で得られた2進数とステップ14で得られた2進数とを排他的論理和演算を行い、2進数列(1011)2,(1100)2,(1101)2、(0000)2を作成する。
【0082】ステップ16では、この2進数列にずらしを与えるために2進数列(1000)2を加算することにより(0011)2,(0100)、(0101)2、(1000)2を得る。このコードを16進化コードで表すと(3458)16となる。
【0083】さらにステップ18でこのコードをシフトJISコード化すると(8AD6)16となり、これは送信された原情報である漢字「関」である。他の文字についても上述と同じようにして変換され送受信される。
【0084】ここでは4桁に同一である(1000)2だけのずらし(数字8だけずらす)を例示したが各桁毎に異なる(8645)16だけずらすことも可能である。
【0085】図15は、図3に示すような漢字コード化ずらしを行う例を示す。漢字「関」はシフトJISコードで表すと(8AD6)16である。これはJIS16進コードで表すと(3458)16である。ここで添え字16は16進数を表す。このコードを+(1111)16ずらすと(4569)16に替わり漢字「悼」になる。
【0086】さらに任意に選択したシフトJISコード(9FFF)16からこのコード(9FFF)16を差し引く演算を実行すると((9FFF)16−(4569)16)、「晉」(5A96)16に変わる。この操作を逆方向に行えば「晉」→「悼」→「関」で復元できる。
【0087】図15のステップ10においては、通信文字列4ビットを一文字に纏めて、16進数暗号コード(BD8D)16に置換している。ANKコード表の英数字・片仮名記号を使用すれば128個の半角文字(各1バイト)が得られる。さらに、5ビット、6ビット、7ビットを纏めて通信文字列を短縮したものとする。8ビット以上を纏める場合には、シフトJISコードの平仮名や漢字の一部を纏め表に追加しておく。このように置換することにより通信回線使用時間を短縮することができる。
【0088】また、図3に掲げたとおり、文字列の先頭や末尾に分割番号を付加し通信文全体を管理することができる。図13から図15では、半角文字の例、全角文字の例について説明したが送信受信に亘って半角文字と全角文字が混在する日本語向きのプログラムにすることができる。
【0089】以上の説明では、送受信を対象として説明したが、本発明の間接鍵方式は通信分野のみならず、情報記録媒体内にスクランブル処理加工を介在させて販売される映像・音楽などの分野にも適用しうる。
【0090】また、以上の説明では、拡張クロス入替えに富む十魔方陣を主体に述べているが、電算機器を使用しても未だ総数が確定していない六次以上の高次魔方陣を利用しても本発明を実施することが可能である。
【図面の簡単な説明】
【図1】本発明の一実施形態を示すブロックダイアグラムである。
【図2】暗号化、復号化の一例を示す図である。
【図3】図1で使用するセキュリテを説明するためのフローチャートである。
【図4】本発明で使用する高次魔方陣を説明する図で、十次魔方陣を示す。
【図5】図4に示す魔方陣に同一象限内で拡張及び、拡張クロス替えを施した例を示す図である。
【図6】図4に示す魔方陣に他象限に亘り拡張クロス替えを施した例を示す図である。
【図7】図4に示す魔方陣に図5の拡張及び拡張クロス替えX1及び図6に示すクロス替えX2を施した例を示す図である。
【図8】補数演算を施した例を示す図である。
【図9】図4示す魔方陣に縦中心線を軸に回転を施した例を示す図である。
【図10】図4に示す魔方陣に対角線を軸に回転を施した例を示す図である。
【図11】高次魔方陣の配列内に他の数列CをQ字形状に包含させ、25個を置換した例を示す図である。
【図12】2進数コードの例を示す図である。
【図13】平文及びそれを2進数コード化した例を示す図である。
【図14】図12の半角文字「1」の送受信時のコード生成順序を説明する図である。
【図15】図13の全角文字「関」の送受信時のコード生成順序を説明するための図である。
【符号の説明】
2…2進数化手段、4…魔方陣、6…2進数化手段、8…排他的論理和手段。
【特許請求の範囲】
【請求項1】 第1の情報と、前記第1の情報を2進数に変換するステップと、魔方陣数列を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化された第1の情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化されるとともに交信時間短縮用コード文化された第2の情報を作成するステップと、前記第2の情報および前記魔方陣数列に関する鍵情報を正規利用者へ供給するステップとを備えたことを特徴とする魔方陣数列を用いるセキュリティ強化方法。
【請求項2】 送信すべき第1の情報を2進数に変換するステップと、魔方陣数列を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化された第1の情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化されるとともに交信時間短縮用コード化文された第2の情報を作成するステップと、前記第2の情報を通信手段を介して正規受信者へ送信するとともに、前記魔方陣数列に関する鍵情報を正規受信者へ提供するステップを備えたことを特徴とする魔方陣数列を用いる情報送信方法。
【請求項3】 送信されるべき第1の情報が2進数化されるとともに交信時間短縮用コード文化されている通信情報を通信手段を介して受信するステップと、送信側から予め鍵を入手するステップと、前記入手した鍵に基づいて使用する魔方陣数列を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記受信された通信情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化された受信情報を作成するステップと、前記2進数化された受信情報から前記第1の情報を復元する情報受信方法。
【請求項4】 送信すべき第1情報と、前記第1情報を2進数コードに変換するステップと、魔方陣数列を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化された第1情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化されるとともに交信時間短縮用コード文化された通信情報を作成するステップと、前記通信情報を送信するステップと、前記通信情報を受信するステップと、予め送信側から入手した鍵に基づいて使用する魔方陣を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、受信された前記通信情報と前記魔方陣数列との排他的論理和をとり、2進数化された受信情報を作成するステップと、前記2進数化された受信情報から第1情報を復元するステップを備えた情報送受信方法。
【請求項5】 送信すべき情報をANKコード化、或いはシフトJISコード化するステップと、前記シフトJISコード化情報をJIS16進コード化するステップと、前記ANKコード化情報やJIS16進コード化情報を2進数化するステップと、前記2進数化情報に所定の2進数を加えることによってずらしを行うステップと、選択した魔方陣数列を16進数化するステップと、前記16進数化魔方陣数列を2進数化するステップと、前記2進数化ずらし情報と前記2進数化魔方陣数列との排他的論理和をとり、送信情報を作成する情報送信方法。
【請求項6】 通信情報を受信するするステップと、前記受信情報を2進数化するステップと、送信側から予め鍵を入手するステップと、前記鍵に基づいて使用する魔方陣を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化情報と前記2進数化魔方陣数列との排他的論理和をとるステップと、前記排他的論理和情報に所定の2進数を加えることによってずらしを行うステップと、前記ずらし情報を16進数化するステップと、前記16進数化情報をシフトJISコード化、或いはANKコード化するステップと、前記シフトJISコード化情報、或いはANKコード化情報から受信すべき情報を得るステップを備える情報送受信方法。
【請求項7】 入力された送信すべき第1情報を2進数コードに変換するステップと、入力された指令に基づき魔方陣を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化された情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化されるとともに交信時間短縮用コード文化された通信情報を作成するステップと、前記通信情報を送信するステップと、前記通信情報を受信するステップと、予め送信側から入手した鍵に基づいて使用する魔方陣を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記受信された情報と2進数化された魔方陣数列との排他的論理和をとるステップと、前記2進数化された情報から第1情報を復元するステップとが記憶された記憶媒体。
【請求項8】 送信すべき情報をANKコード化情報やシフトJISコード化するステップと、前記シフトJISコード化情報をJIS16進コード化するステップと、前記ANKコード化情報やJIS16進コード化情報を2進数化するステップと、前記2進数化情報に所定の2進数を加えることによってずらしを行うステップと、選択した魔方陣数列を16進数化するステップと、前記16進数化魔方陣数列を2進数化するステップと、前記2進数化ずらし情報と前記2進数化魔方陣数列との排他的論理和をとり、送信情報を作成するステップと、送信すべき2進数列情報をANKコード文字やシフトJISコード文字化し、2進数列文字数を低減するステップと、通信情報を受信するステップと、前記受信情報を2進数化するステップと、送信側から予め鍵を入手するステップと、前記鍵に基づいて使用する魔方陣を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化情報と前記2進数化魔方陣数列との排他的論理和をとるステップと、前記排他的論理和情報に所定2進数を加えることによってずらしを行うステップと、前記ずらし情報を16進数化するステップと、前記16進数化情報をシフトJISコード化、或いはANKコード化するステップと、前記シフトJISコード化情報およびANKコード化情報から受信すべき情報を得るステップとを遂行するプログラムが記録された記録媒体。
【請求項1】 第1の情報と、前記第1の情報を2進数に変換するステップと、魔方陣数列を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化された第1の情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化されるとともに交信時間短縮用コード文化された第2の情報を作成するステップと、前記第2の情報および前記魔方陣数列に関する鍵情報を正規利用者へ供給するステップとを備えたことを特徴とする魔方陣数列を用いるセキュリティ強化方法。
【請求項2】 送信すべき第1の情報を2進数に変換するステップと、魔方陣数列を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化された第1の情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化されるとともに交信時間短縮用コード化文された第2の情報を作成するステップと、前記第2の情報を通信手段を介して正規受信者へ送信するとともに、前記魔方陣数列に関する鍵情報を正規受信者へ提供するステップを備えたことを特徴とする魔方陣数列を用いる情報送信方法。
【請求項3】 送信されるべき第1の情報が2進数化されるとともに交信時間短縮用コード文化されている通信情報を通信手段を介して受信するステップと、送信側から予め鍵を入手するステップと、前記入手した鍵に基づいて使用する魔方陣数列を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記受信された通信情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化された受信情報を作成するステップと、前記2進数化された受信情報から前記第1の情報を復元する情報受信方法。
【請求項4】 送信すべき第1情報と、前記第1情報を2進数コードに変換するステップと、魔方陣数列を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化された第1情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化されるとともに交信時間短縮用コード文化された通信情報を作成するステップと、前記通信情報を送信するステップと、前記通信情報を受信するステップと、予め送信側から入手した鍵に基づいて使用する魔方陣を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、受信された前記通信情報と前記魔方陣数列との排他的論理和をとり、2進数化された受信情報を作成するステップと、前記2進数化された受信情報から第1情報を復元するステップを備えた情報送受信方法。
【請求項5】 送信すべき情報をANKコード化、或いはシフトJISコード化するステップと、前記シフトJISコード化情報をJIS16進コード化するステップと、前記ANKコード化情報やJIS16進コード化情報を2進数化するステップと、前記2進数化情報に所定の2進数を加えることによってずらしを行うステップと、選択した魔方陣数列を16進数化するステップと、前記16進数化魔方陣数列を2進数化するステップと、前記2進数化ずらし情報と前記2進数化魔方陣数列との排他的論理和をとり、送信情報を作成する情報送信方法。
【請求項6】 通信情報を受信するするステップと、前記受信情報を2進数化するステップと、送信側から予め鍵を入手するステップと、前記鍵に基づいて使用する魔方陣を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化情報と前記2進数化魔方陣数列との排他的論理和をとるステップと、前記排他的論理和情報に所定の2進数を加えることによってずらしを行うステップと、前記ずらし情報を16進数化するステップと、前記16進数化情報をシフトJISコード化、或いはANKコード化するステップと、前記シフトJISコード化情報、或いはANKコード化情報から受信すべき情報を得るステップを備える情報送受信方法。
【請求項7】 入力された送信すべき第1情報を2進数コードに変換するステップと、入力された指令に基づき魔方陣を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化された情報と前記2進数化された魔方陣数列との排他的論理和をとり、2進数化されるとともに交信時間短縮用コード文化された通信情報を作成するステップと、前記通信情報を送信するステップと、前記通信情報を受信するステップと、予め送信側から入手した鍵に基づいて使用する魔方陣を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記受信された情報と2進数化された魔方陣数列との排他的論理和をとるステップと、前記2進数化された情報から第1情報を復元するステップとが記憶された記憶媒体。
【請求項8】 送信すべき情報をANKコード化情報やシフトJISコード化するステップと、前記シフトJISコード化情報をJIS16進コード化するステップと、前記ANKコード化情報やJIS16進コード化情報を2進数化するステップと、前記2進数化情報に所定の2進数を加えることによってずらしを行うステップと、選択した魔方陣数列を16進数化するステップと、前記16進数化魔方陣数列を2進数化するステップと、前記2進数化ずらし情報と前記2進数化魔方陣数列との排他的論理和をとり、送信情報を作成するステップと、送信すべき2進数列情報をANKコード文字やシフトJISコード文字化し、2進数列文字数を低減するステップと、通信情報を受信するステップと、前記受信情報を2進数化するステップと、送信側から予め鍵を入手するステップと、前記鍵に基づいて使用する魔方陣を選択するステップと、前記選択された魔方陣数列を2進数化するステップと、前記2進数化情報と前記2進数化魔方陣数列との排他的論理和をとるステップと、前記排他的論理和情報に所定2進数を加えることによってずらしを行うステップと、前記ずらし情報を16進数化するステップと、前記16進数化情報をシフトJISコード化、或いはANKコード化するステップと、前記シフトJISコード化情報およびANKコード化情報から受信すべき情報を得るステップとを遂行するプログラムが記録された記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2003−76273(P2003−76273A)
【公開日】平成15年3月14日(2003.3.14)
【国際特許分類】
【出願番号】特願2001−266203(P2001−266203)
【出願日】平成13年9月3日(2001.9.3)
【出願人】(399070697)
【Fターム(参考)】
【公開日】平成15年3月14日(2003.3.14)
【国際特許分類】
【出願日】平成13年9月3日(2001.9.3)
【出願人】(399070697)
【Fターム(参考)】
[ Back to top ]