(58)【調査した分野】(Int.Cl.,DB名)
幾何代数幾何積およびマルチベクトルの逆元の評価は、加算、減算、乗算、および除算の基本的な算術演算を用いて、前記送信元演算装置および前記送信先演算装置に対して実施される、請求項1に記載の方法。
前記送信元演算装置および前記送信先演算装置上での前記幾何代数幾何積およびマルチベクトルの逆元の実施は、素数の選択、対数関数の演算、および/または自然対数関数の複雑な演算を含まない、請求項2に記載の方法。
前記標準的なコンピュータ文字コード化特徴は、前記当初の英数字テキストメッセージのテキスト文字についてのASCII(情報交換用米国標準コード)コードである、請求項4に記載の方法。
前記追加の特徴データは、暗号化セキュリティを向上させるためのダミーデータと、追加の演算のためのコマンド指示と、前記追加の演算のための構成データとを含む群から選択される少なくとも1つからなる、請求項14に記載の方法。
幾何代数幾何積およびマルチベクトルの逆元の評価は、前記送信元演算装置および前記送信先演算装置によって、加算、減算、乗算、および除算の基本的な算術演算を用いて実施される、請求項26に記載のEDCEシステム。
前記送信元演算装置および前記送信先演算装置上での前記幾何代数幾何積およびマルチベクトルの逆元の実施は、素数の選択、対数関数の演算、および/または自然対数関数の複雑な演算を含まない、請求項27に記載のEDCEシステム。
前記標準的なコンピュータ文字コード化特徴は、前記当初の英数字テキストメッセージのテキスト文字についてのASCII(情報交換用米国標準コード)コードである、請求項29に記載のEDCEシステム。
前記追加の特徴データは、暗号化セキュリティを向上させるためのダミーデータと、追加の演算のためのコマンド指示と、前記追加の演算のための構成データとを含む群から選択される少なくとも1つからなる、請求項39に記載のEDCEシステム。
【発明を実施するための形態】
【0011】
実施形態は、有利に幾何代数を利用して、中間演算システム(例えば、現在一般的に「クラウド」もしくは「クラウドコンピューティング」と称される、広域ベースの演算システム)を通じて伝送され得る、および記憶され得る数値メッセージの暗号化および復号化を提供し得る。幾何代数ベースの暗号化/復号化を用いて送信元/送信側システムから送信先/受信側システムへデータを安全に転送する暗号化/復号化機能を実行する幾何代数暗号化/復号化システムの実施形態は、「高度データ中心型暗号化(EDCE)システム」と称され得る。
【0012】
幾何代数は、物理的な世界における物体の物理的相互作用を数学的に表すことを意図してベクトルおよび他のオブジェクトの幾何的相互作用を説明する、数学の領域である。暗号への幾何代数の使用は、本来の現実の物理的な世界における物体の物理的な相互作用を表す幾何代数の基礎からは完全に離れた目的のために生み出された新しい幾何代数の用法である。本明細書において使用されるように、数学のこの領域は、幾何代数、共形幾何代数、およびクリフォード代数(本明細書において、これらをまとめて「幾何代数」という)を含む。概して、幾何代数は、幾何積、逆元、および単位元などの演算を規定し、本明細書に開示される例示的なEDCEシステム実施形態の実施形態の多くの特徴を促進する。さらに、幾何代数は、データをマルチベクトルの「ペイロード」に組織化および表現することを可能とし、ペイロード内のデータは、例えば平文、暗号原文、もしくは識別署名を表し得る。このため、EDCEシステムの実施形態は、幾何代数の特性を上手く利用することで、演算が比較的単純な方法での暗号化および復号化演算を提供するとともに、動的なデータおよび静的なデータ(例えば、クラウドに記憶されているデータ)についての堅牢な保護を提供する。
【0013】
暗号化データが中間演算システムを介して転送される場合、例えばクラウドベースの演算で行われる場合、送信元演算装置から中間演算システムを介して暗号化データ値をユーザが伝達したい時またはネットワークに接続して伝達を行う時まで、暗号化データ値は中間演算システムに保存され得る。代替的に、暗号化データ値は、対象となる暗号化データ値が中間演算システムによって受信されるとすぐに中間演算システムによって送信先演算装置へ転送され得る。しかし、当業者が認識し得るように、中間演算システムで暗号化データ値を受信する処理は、本質的に、すぐに使用および消去される中間演算システムの演算サブシステムのランダムアクセスメモリ(RAM)箇所または演算レジスタ箇所での束の間の使用であったとしても暗号化データ値を中間演算システムに記憶することを含む。
【0014】
EDCEシステム実施形態の実施形態は、機能ブロックから構成され得て、各ブロックは、以下でより詳細に説明するように、範囲、性能、および安全性の目的に応じて、適合され得る。以下のセクションにおいては、これらの機能ブロックについて、数学的かつ数値的な説明をする。
【0015】
本明細書において記載される複雑な主題についての混乱を最小限とするために、以下の説明は、EDCEシステムの実施形態に関する様々な基本的なトピックを別個にカバーするよう分けられている。このような点から、セクション1では、EDCEシステムの基礎的な演算の実施形態の概要について説明する。セクション2では、マルチベクトルへの情報のパッキング、このようなマルチベクトルの暗号化および復号化、ならびに当初の情報を復元するアンパッキングを含む、基礎的なEDCEシステムの実施形態についてさらに説明する。付録Aは、幾何代数の概要を提供する。概して、この説明において、典型的な慣例のように、演算の特定の例については、アリス(Alice)およびボブ(Bob)が、送信/送信元主体および受信/送信先主体としてそれぞれ使用される。したがって、本開示の配置は、以下のように要約される。
【0016】
セクション1:EDCEメッセージ暗号化/復号化の概要
【0017】
A.EDCE実施形態のハードウェアでの実施(
図1)
【0018】
B.EDCE演算の概略フローチャート(
図2〜
図4)
【0019】
セクション2:EDCEメッセージ暗号化/復号化についてのさらなる説明
【0020】
A.マルチベクトルのパッキングおよびアンパッキング
【0029】
E.EDCEフローチャート(
図5〜
図6)
【0030】
F.0ブレード換算演算からの対称鍵ペア暗号化/復号化(
図7)
【0033】
*3次元における二重共有秘密を用いた暗号化および復号化の数字例
【0034】
G.幾何代数および算術関数を用いる解読不能原始関数
【0035】
*秘密共有および3Dマルチベクトルの例
【0037】
セクション1:EDCEメッセージ暗号化/復号化の概要
【0038】
インターネットおよび多くの形態の携帯装置の到来により、暗号化データの容量が指数関数的に増加している。「サムドライブ」、「スマートカード」、およびソリッドステートディスク(SSD)のような携帯装置は、平文および/または暗号化「受動型」データストレージの両方を含む。受動型データストレージは、インターネット・オブ・シングス(IoT)のための小さな装置ならびにサーバファームにおける大きなメモリに設けられる。
【0039】
データがストレージを離れ、動いている時には、データはより攻撃を受けやすい。現在の暗号化技術は、ネットワークセキュリティインフラとともに進化してきたわけではなく、動いている莫大な量のデータに良好に適してはいない。我々が「クラウドコンピューティング」に向けて動き、携帯装置が我々を「外周のない」ネットワークセキュリティへと動かすにつれ、産業はネットワーク、サーバ、もしくはアプリケーションのセキュリティをただ信頼することから離れ、データ中心型暗号化に注目する。データ中心型暗号化および認証を用いると、制御はアプリケーション層もしくはネットワークにおける最終送信先でただ行われるのではなく、データとともに移動する。
【0040】
しかし、この動くデータの流動性は、現在の暗号化インフラの核心であり続ける演算集約的な数学によって失速する。RSA(Rivest−Shamir−Adleman)、DES(データ暗号化規格)、および/またはAES(高度暗号化規格)等の暗号は、通信効率を行き詰まらせる静的「マシン」と大差はない。実際の問題は非常に大きい。以下の場合にどのように堅牢なセキュリティが提供できるのかである。
【0041】
a)拠点演算リソースが限られている(例えば、インターネット・オブ・シングス(IoT))。
【0042】
b)暗号化/復号化がほぼリアルタイムでなければならない。
【0043】
c)送信元および送信先の認証が継続的に示されなければならない。
【0044】
実施形態は、高度データ中心型暗号化もしくはEDCEとして説明され得る。現在の暗号化スキームと比較すると、EDCEは、通信チャネルのスパンにわたって堅牢なセキュリティを提供しながらも、演算が単純である。EDCEセキュリティは、小さな埋め込みIoT(インターネット・オブ・シングス)装置からサーバファームまで拡張可能である。EDCE機能により、現在の方法よりも速度および帯域幅が有利な多くの暗号スキームを可能にする。データの暗号化/復号化における速度の向上をもたらすEDCEの一局面は、EDCE暗号化/復号化が加法、減法、乗法、および除法の基本的な算術演算を用いて実施され得ることである。とりわけ、EDCEは、複雑な演算、大きな素数の選択、対数関数の演算、自然対数関数の演算、および/または他の複雑かつ演算集約的な数学的関数の演算を必要としない(すなわち、本明細書中で開示される幾何代数演算においては、素数、対数、自然対数、および/または他の複雑な数学的演算は必要ではない)。
【0045】
様々な実施形態の中心的特徴は、過去に暗号化において利用されてこなかった数学の領域である幾何代数を使用していることにある。本明細書中において使用される幾何代数は、幾何代数、共形幾何代数、およびクリフォード代数(本明細書中において、まとめて「幾何代数」という)を含む数学の領域である。幾何代数は、データをマルチベクトルの「ペイロード」に組織化および表現することを可能にし、データは、例えば、平文、暗号原文、または署名であり得る。幾何代数は、様々な実施形態の暗号化/復号化演算を可能にする要素である、幾何積、逆元、および単位元等の演算を規定する。
【0046】
マルチベクトルは、スカラ、ベクトル、2次元ベクトル、その他n次元ベクトルを単に加法により組み合わせたものである。しかし、単位ベクトルは、四元の代数構造(ハミルトン)および非可換代数(グラスマン)に従う。これら二種類の代数により、クリフォードは、EDCEシステムの実施形態の「原始関数」のうちの1つとしての、様々な実施形態において使用される幾何積を着想した。
【0053】
様々な実施形態において、「ペイロード」は、マルチベクトル要素のスカラおよび係数の値においてパッキングされ得る。EDCEシステムが適切に動作することを確実にするためには、マルチベクトルのために選択される係数値にいくつかの制限を加える必要がある。例えば、すべてのマルチベクトル係数が等しい場合、マルチベクトルに対して有理化演算を行うことによってゼロが得られる。すべてが等しい係数を有するこのようなマルチベクトルは、逆元を有しておらず、他のマルチベクトルとすべて等しい係数を有するこのようなマルチベクトルの幾何積は、逆元を有していない。以下でより詳細に説明するように、EDCEシステムの復号化方法は、復号化されている暗号原文マルチベクトルの逆元およびセキュリティ鍵マルチベクトルの逆元を利用して、復号化を行う。このため、復号化されている暗号原文マルチベクトルは、すべて等しい値の係数を有するべきではない。復号化されている暗号原文マルチベクトルがすべて等しい値の係数を有さないことを確実にするための1つの手段は、パッキング/係数分配方法により、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時にすべての係数が互いに等しくない(すなわち、少なくとも1つの係数が他の係数とは異なる必要がある)ことを確実にすることである。データメッセージを単純に転送するEDCEの実施形態については、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時にすべての係数が互いに等しくないことを確実にすることにより、復号化される暗号原文マルチベクトルがすべて等しい係数を有さないことが確実となる。
【0054】
加えて、別個のマルチベクトルが、共有秘密(以下で定義される)、認証情報、およびタイムスタンプ等の多くの目的のためにコード化され得る。メッセージの暗号化および復号化に加えて、EDCE実施形態におけるEDCEマルチベクトル形式および幾何代数の基礎により、単一の伝送において、単に暗号原文だけでなく、暗号化セキュリティを向上させるためのダミーデータ、追加の演算のためのコマンド指示、および/または追加の演算のための構成データを含むことが可能になる。
【0055】
A.EDCE実施形態のハードウェア実装(
図1)
【0056】
図1は、実施形態に係るハードウェア実装を示すブロック
図100である。第1演算装置102は、電子的なネットワーク/バス接続104を介して第2演算装置106に接続される。
図1に示される実施形態において、第1演算装置102は、ネットワーク/バス接続104を介して暗号化メッセージ108を送信する送信元装置102である。第2演算装置106は、ネットワーク/バス接続104から暗号化メッセージ108を受信する送信先装置106である。概して、暗号化通信を含む通信は、第1演算装置102および第2演算装置106が必要に応じて送信元装置102および送信先装置106としての役割を変更して第1演算装置102と第2演算装置106との間でのデータの相互の転送が可能となるように、双方向である。
【0057】
さらに、
図1に示されるように、第1演算装置102はラップトップコンピュータとして示され、第2演算装置106はタブレット装置として示される。概して、任意の形態の電子的ネットワークもしくはバス通信プラットフォームを介して通信可能な演算装置であれば、第1演算装置102および第2演算装置106の一方または両方であっても良い。さらに、第1演算装置102および第2演算装置106は、実際には、内部バス接続104を通じて自身と通信するが未暗号化形式の機密データ通信を得るために攻撃者が内部通信バス104をモニタリングできないことを確実にするために暗号化通信を必要とする同一の物理演算装置であり得る。
【0058】
様々な実施形態は、第1演算装置102と第2演算装置106との間で電子データを転送可能な任意の通信チャネル104を用いてネットワーク/バス通信チャネル104を実施し得る。例えば、ネットワーク/バス通信接続104は、第1演算装置102から第2演算装置106への伝送時に1つ以上の異なる通信チャネルを介してルーティングされたインターネット接続であり得る。同様に、ネットワーク/バス通信接続104は、演算装置の内部通信バス、またはメモリチップもしくは中央処理装置(CPU)チップ等の処理もしくはメモリストレージ集積回路(IC)チップの内部バスであり得る。ネットワーク/バス通信チャネル104は、優先通信、無線電磁通信、光ファイバーケーブル通信、光/レーザ通信、音波/音通信等、およびこれらの様々な通信チャネルの任意の組み合わせを含むがこれらに限定されない通信で電子データを伝送することが可能な任意の媒体を利用し得る。
【0059】
様々な実施形態は、第1演算装置102および/または第2演算装置106上で動作するアプリケーションを介して、本明細書において詳述される制御および管理関数を提供し得る。第1演算装置102および/または第2演算装置106の各々は、コンピュータもしくはコンピュータシステム、または実施形態の通信および演算を行うことが可能な任意の他の電子装置であり得る。第1演算装置102および第2演算装置104は、汎用コンピュータ、ラップトップ/携帯型コンピュータ、タブレット装置、スマートフォン、産業制御コンピュータ、データストレージシステム制御部、CPU、グラフィカル処理ユニット(GPU)、特定用途向け集積回路(ASI)、および/またはフィールドプログラマブルゲートアレイ(FPGA)を含み得るが、これらに限定されない。とりわけ、第1演算装置102および第2演算装置106は、攻撃者が未暗号化データにアクセスする能力を制限するようにデータストレージ媒体に対して送達されるデータが常に暗号化されるようなデータストレージ媒体のストレージ制御部(例えば、ハードディスクドライブ用の制御部)であり得る。実施形態は、様々な実施形態に基づく単一もしくは複数の処理を行うためにコンピュータ(もしくは他の電子装置)またはコンピュータシステムをプログラミング/操作するために使用され得る命令を記憶したコンピュータ読み取り可能もしくは機械読み取り可能媒体を含み得るコンピュータプログラム製品として提供され得る。コンピュータ読み取り可能媒体は、ハードディスクドライブ、フロッピーディスク、光ディスク、コンパクトディスク読み取り可能メモリ(CD−ROM)、デジタル多用途ディスクROMS(DVD−ROM)、ユニバーサルシリアルバス(USB)メモリスティック、光磁気ディスク、ROM、ランダムアクセスメモリ(RAM)、消去可能プログラム可能ROM(EPROM)、電気的消去可能プログラム可能ROM(EEPROM)、磁気光カード、フラッシュメモリ、または電子命令を記憶するのに適した他の種類の媒体/機械読み取り可能媒体を含み得るが、これらに限定されない。コンピュータプログラム命令は、単一のコンピュータ/電子装置上で常駐して動作し得る、または様々な部分が、コンピュータシステムを備える複数のコンピュータ/装置にわたって分散し得る。また、実施形態は、コンピュータプログラム製品としてダウンロードされ得て、プログラムは、通信リンク(例えば、有線/ケーブル接続および無線接続の両方を含む、モデムもしくはネットワーク接続)を介して搬送波もしくは他の伝搬媒体で具現化されるデータ信号によって遠隔コンピュータから要求元コンピュータへ転送され得る。
【0060】
B.概略的なEDCE演算のフローチャート(
図2〜
図4)
【0063】
再び、様々な実施形態について、「ペイロード」は、スカラの値およびマルチベクトル要素の係数においてパッキングされ得る。EDCEシステムが適切に動作することを確実とするために、マルチベクトルについて選択される係数値に対していくつかの制限をかける必要がある。例えば、すべてのマルチベクトル係数が等しい場合、マルチベクトルに対する有理化演算ではゼロが得られる。すべて等しい係数を有するこのようなマルチベクトルは逆元を有さず、すべて等しい係数を有するこのようなマルチベクトルの幾何積は逆元を有さない。以下でより詳細に説明するように、EDCEシステムのための暗号化方法は、暗号化されている暗号原文マルチベクトルの逆元およびセキュリティ鍵のマルチベクトルの逆元を利用して暗号化を行う。このため、復号化されている暗号原文マルチベクトルはすべて等しい値の係数を有するべきではない。復号化されている暗号原文マルチベクトルがすべて等しい値の係数を有さないことを確実にするための1つの手段は、パッキング/係数分配方法により、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時にすべての係数が互いに等しくない(すなわち、少なくとも1つの係数が他の係数とは異なる必要がある)ことを確実にすることである。データメッセージを単純に転送するEDCEの実施形態については、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時にすべての係数が互いに等しくないことを確実にすることにより、復号化される暗号原文マルチベクトルがすべて等しい係数を有さないことが確実となる。
【0083】
加えて、フローチャートおよび
図2〜
図4に関して上で説明したフローチャートの詳細は、方法もしくは処理として具現化され得る方法を記載したものであるが、他の実施形態は、フローチャートおよび
図2〜
図4の詳細に係るフローチャートで説明した処理を実施することによってデータの暗号化、データの転送、およびデータの復号化を行う、コンピュータシステムとして、および/または送信元コンピュータシステムおよび送信先コンピュータシステムとして認識され得る。さらに、データの暗号化、データの転送、およびデータの復号化を行う、コンピュータシステム、および/または送信元コンピュータシステムおよび送信先コンピュータシステムの説明において、上記の方法のための上記の1つ以上の個別の処理は、分けられて、全体の暗号化コンピュータシステムのサブシステムとして表され得る。データの暗号化、データの転送、およびデータの復号化を行う、コンピュータシステム、および/または送信元コンピュータシステムおよび送信先コンピュータシステムのサブシステムは、その全体もしくは一部において、用途特定集積回路(ASIC)もしくはフィールドプログラマブルゲートアレイ(FPGA)等の特定のハードウェア実装システムに割り当てられる。1つ以上のサブシステムは、その全体もしくは一部において、ソフトウェアもしくはファームウェア命令として実施される1つ以上のサブシステムに関して具体的なコンピュータシステムの演算を規定するソフトウェアもしくはファームウェア命令として代替的に実施され得る。ソフトウェアもしくはファームウェア命令により、コンピュータシステムの中央処理装置、メモリ、および/または他のシステムが特定の1つ以上のサブシステム割当特徴に基づいて動作し得る。
【0084】
セクション2:EDCEメッセージ暗号化/復号化についてのさらなる説明
【0085】
以下の開示は、EDCE実施形態の動作中の演算およびデータの関係の単純化された例を提供する。例において示され記載されるデータの量、データの種類、および特定のデータ値は、特定の現実のシステムを表す意図はなく、実施形態の演算およびデータの関係を示すのみの目的のために提供される。さらに、以下に記載の実施形態は、特定のデータ種類、暗号化共有秘密鍵交換技術、テキストから数字およびその逆の変換技術、および/または数字からマルチベクトル係数割当技術に演算を限定する意図はない。
【0086】
新しい暗号化原始関数としての幾何代数幾何積の利用に加え、様々な実施形態は、機能ブロックからなり得て、各機能ブロックは、範囲、性能、およびセキュリティの目的によって記載されるように適合され得る。以下のセクションは、これらの機能ブロックの1つ以上の例示的な実施形態の数学的および数的な説明を提供する。例における数的結果は、概してCプログラミング言語を実行する幾何代数から得られる。
【0087】
A.マルチベクトルのパッキングおよびアンパッキング
【0095】
本明細書中に記載の例示的なEDCE実施形態について、各テキストメッセージは、すべてのEDCE演算のための有効な演算単位とするために、数字に変換される必要がある。本明細書中に示される実施形態については、数字は、典型的に10進数で示されるが、様々な実施形態では、システム設計者によって他の所望の進数が選択され得る。例えば、ASCII規格はxFFの16進数によって表される典型的な8ビットよりも1つ小さい2のべき乗(すなわち、16進数は2
8である)である0〜127(すなわち、2
7)に基づく表現を有していることから、16進(16進数)表現により、ASCIIの数的表現に対応する場合には、特定の利点が得られる。ASCII文字コード化スキームによれば、a、b、cの文字等の記号は、他の形式(2進数、10進数、8進数、100進数等)で表され、これらは、形式間の関係を示す表であるASCII印字可能コードチャートに記載されている。このため、文字「a」、「b」、および「c」は、ASCII10進コードでは、それぞれ97、98、および99となる。
【0096】
例えば、平文メッセージが「message」であるとする。ASCII10進コードでは、以下のように示される。
【0098】
109 101 115 115 97 103 101
【0099】
この記号と10進数との関係により、テキスト「message」を用いた10進数でのテキストから文字への変換が、以下のように行われる。
【0100】
変数nは、テキストから数字への変換の最後の数を表す。この変数をゼロと規定して開始する。このため、n=0である。
【0101】
そして、メッセージの各文字についてASCII10進むコードで列を作成する。
【0103】
ASCII_array_from_“message” = [109, 101, 115, 115, 97, 103, 101]
【0104】
この列は、7つの要素のサイズを有することから、列サイズは7である。
【0105】
そして、ASCII文字の列の各値について、繰り返し、以下を行う。
【0106】
(i)nを256で掛け合わせる。(256が選択されたのは、ASCII印字可能コードチャートにおいて最大の数よりも2つ大きい乗数であるためであり、2
8=256であることから8ビットのスペースを確保している。)
【0107】
(ii)同等のASCII10進コードで合計し、結果を同じ初期n変数に以下のように割り当てる。
【0108】
For i=0; i < array_size; i++
n = n * 256 + ascii_array_from_message[i]
【0111】
上記の演算を行うことにより、nの最後の値は30792318992869221となる。
【0112】
このため、平文「message」は10進数では30792318992869221に等しい。ひとたび10進数を得ると、本明細書中に記載のメッセージ暗号化の演算を行うことができる。望む場合は、加法もしくは剰余演算等、ASCIIコード上の変換を行うことによってこのステップにエントロピーを加えても良い。以下の例においては、このようなエントロピーを追加する変換は使用されない。
【0114】
様々な演算を行ったあと、10進数が伝送されて受信される。メッセージマルチベクトルの上記の例から、係数が繋がれて数列が形成される。この数列への「数字からテキスト」変換処理では、ASCII印字可能コードチャートが使用されるが、復元ルーティンは「テキストから数字」変換とは異なる。以下に手順を記載する。
【0115】
入力数字から復元される最終テキストとなる空列である変数から開始する。(記号“ “” ”は、C言語で使用されるものであり、空列を意味する。)
【0117】
入力数字は30792318992869221である。
【0118】
n=30792318992869221
【0119】
ここで、この数字が実際のテキストメッセージを参照することから、nが空となるまでループを実行する。つまり、nがゼロになったときにループが止まる。各ループ反復において、最後から最初まで復元を行い、各ASCII10進コードは、復元しているテキストに対応する。このために、値0xFF(16進数形式もしくは16進数である256−1)を用いてビット単位のAND演算を行う。コードを文字記号に変換し、現在の列に繋ぎ、常に最も最近の復元された文字を列の前に置く。最後に、8ビットの右シフトを行うことにより、nの値を更新する。
【0120】
関数「get_char」は、ASCII10進コードを文字記号に変換する。
【0122】
while n > 0
s = get_char(n AND 0xFF) + s
【0124】
s = “”
n = 30792318992869221
while n > 0
s = get_char(n AND 0xFF) + s
【0126】
このため、数字30792318992869221は、テキスト列「message」に変換され、当初の平文と一致する。
【0128】
本明細書中で説明される例示的な実施形態について、任意の10進数の数字がマルチベクトル要素の係数であり得る。マルチベクトルは、無作為データ、または一連の演算の結果であるデータを含み得る。10進数は、マルチベクトルにおける係数にこの数列の部分を分配することによってマルチベクトルの形態でも表され得る。2Dであるマルチベクトルは、この数列の部分とともにパッキングに利用可能な4つの要素/係数を有し、3Dマルチベクトルは8つの要素、4Dは16の要素を有する。EDCEは、7Dまでで表現される。16の要素を有する4Dマルチベクトルは、以下の通り記載される。
【0131】
10進数列が30792318992869221とする場合、この列は、以下の通り、2Dマルチベクトルの単一の係数であり得る。
【0133】
EDCEは、マルチベクトルの要素へ分配される数列が4,000桁を超えるものが示された。しかし、この例における10進数は、以下のように、すべてのマルチベクトルにわたって典型的にその場限りで「分配」される。
【0135】
上記の分配は、「数字からマルチベクトル」と呼ばれる。EDCE実施形態について、数列を分配する方法は、方法が送信主体および受信主体の両方に認識されて使用されるのであれば、様々なアルゴリズムのうちの任意のものに基づき得る。暗号の「撹乱」を増加させるために、分配アルゴリズムは、要素への割当のシャッフリング、要素に割り当てられた数字に対する関数演算の実行、または会話におけるメッセージ間でのアルゴリズムの変更を含み得る。さらなる演算により、暗号化エントロピーが増加する。
【0136】
再び、様々な実施形態について、「ペイロード」は、マルチベクトル要素のスカラおよび係数の値においてパッキングされ得る。EDCEシステムが適切に動作することを確実にするために、マルチベクトルに選択された係数値に制限を設ける必要がある。例えば、すべてのマルチベクトル係数が等しい場合、マルチベクトルに対する有理化演算の結果はゼロとなる。すべて等しい係数を有するこのようなマルチベクトルは逆元を有さず、すべて等しい係数を有するこのようなマルチベクトルの幾何積は逆元を有さない。以下でより詳細に説明するように、EDCEシステムのための暗号化方法は、暗号化されている暗号原文マルチベクトルの逆元およびセキュリティ鍵のマルチベクトルの逆元を利用して復号化を行う。このため、復号化されている暗号原文マルチベクトルはすべて等しい値の係数を有するべきではない。復号化されている暗号原文マルチベクトルがすべて等しい値の係数を有さないことを確実にするための1つの手段は、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時に、パッキング/係数分配方法によって、すべての係数が互いに等しいわけではない(すなわち、少なくとも1つの係数が他の係数とは異なっている)ことを確実にすることである。データメッセージを単に転送するEDCEの実施形態については、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時にすべての係数が互いに等しいわけではないことを確実にすることにより、復号化される暗号原文マルチベクトルがすべて同等の係数を有さないことが確実となる。
【0137】
加えて、共有秘密(以下で定義する)、認証情報、およびタイムスタンプ等の多くの目的のために、別個のマルチベクトルがコード化され得る。メッセージの暗号化および復号化に加えて、EDCE実施形態のEDCEマルチベクトル形式および幾何代数の基礎により、単に暗号原文のみならず暗号化セキュリティを向上させるためのダミーデータ、追加の演算のためのコマンド指示、および/または追加の演算のための構成データを含むような単一伝送が可能になり得る。
【0141】
そして、当初の10進数およびそのサイズ(17)、マルチベクトル構造(2D、8つの要素)、および各要素の長さ(5)を得た。新しいマルチベクトルの係数として各部分を分配するために、10進数を「スライス」する必要がある。
【0144】
これにより、以下のマルチベクトルが作成される。
【0146】
第1の代替的な「数字からマルチベクトル」分配方法
【0147】
エントロピーを増加させるために、数字からマルチベクトルへの変換は、10進数表現の桁をシャッフルする中間ステップを含み得る。
【0148】
上記のように、10進数=30792318992869221とする。この数字が奇数の桁(17)であるが、以下の通りに2つの数字列に分けることができる。
【0157】
上記のマルチベクトルから当初の数字を復元する手順は以下の通りである。
【0158】
現在のマルチベクトルが2Dであることから、数字列を2段階で復元する。ステップの数は、数字列の数に等しい。数字列を復元するために、二値演算子である論理積(AND)および右シフト(>>)を用いて以下の式を適用する。
【0162】
第2代替的な「数字からマルチベクトル」分配方法
【0163】
マルチベクトルの係数をパッキングするための他の関係は、平文数値メッセージのマルチベクトル表現の係数が平文数値メッセージの値と平文数値メッセージのマルチベクトル表現の係数の値のうちの少なくとも1つとの数学的データ組織化に従うことを確実にすることであり、ここでマルチベクトル係数の1つ以上の値を組み込む数学的演算は、当初の平文数値メッセージの値に等しい結果を有する。数学的関係は、マルチベクトル係数の少なくとも1つの係数の加算、マルチベクトル係数の少なくとも1つの係数の減算、一定値の加算、一定値の減算、マルチベクトル係数の少なくとも1つの係数と一定値の乗算、マルチベクトル係数の少なくとも1つの係数と一定値との除算を含む。マルチベクトル表現における係数の特定の箇所に対する様々な数学的演算の箇所は、マルチベクトルに変換されたすべての送信元数値データメッセージ、および特定の暗号化/復号化経路における結果としての数値データ値へ変換されたマルチベクトルに対して一貫して適用されるべきである。例えば、加算および減算の演算の両方を含む数学的、およびマルチベクトル表現に8つの可能な係数を有する3次元マルチベクトル(例えば、各係数に感付けられた単位ベクトルに対応するように番号が振られたc
0、c
1、c
2、c
3、c
12、c
13、c
23、およびc
123)については、e
2およびe
12単位ベクトルの係数(すなわち、c
2およびc
12)が送信元数値データメッセージをマルチベクトルに変換する数学的関係の演算において減算される場合、送信先数値メッセージは、同じ数学的関係でマルチベクトルから数字の変換を行う時に、c
2およびc
12係数が減算されたものと扱うべきである。実際、数学的関係を用いて「パッキングされる」数値データメッセージマルチベクトルの係数から数値を取得することは、比較的単純かつ明確である。数値データメッセージ値を取得するために、数学的関係式に関連付けられたマルチベクトル係数の値を用いて、数値データメッセージマルチベクトルについての数学的関係式が単に実行される。係数の数学的関係における加算および減算の箇所以外では、暗号化されている当初の数値に数学的関係が等しくなるように、ユーザが望んだ場合には係数の実際の値が選択され得る。当業者は、上述の基準/制限が満たされ、上述の基準/制限が実際に満たされるように満足なEDCE実施形態をこれらの方法によって実現される係数値を選択する方法は多くあり、およそ無限にあるということを認識するであろう。
【0165】
分配の方法に関わらず、いかなる係数においても最初の桁は非ゼロとしなければならない。例えば、マルチベクトルへ変換される数字は、30792318990869221とする。上に示す分配方法を適用すると、以下のとおりとなる。
【0170】
以下のEDCE実施形態の例において使用される分配方法は、以下の通りである。
【0171】
10進数の列表現をパースして係数値を取得するための、上に開示の分配(すなわち、「パッキング」)方法について、マルチベクトルの10進数への変換は、10進数を形成するためにマルチベクトルの係数を繋ぐ処理と単に逆の処理である。
【0176】
A.「共有秘密」は、暗号における基本的な要素である。共有秘密により、2つ以上の主体間で安全な通信が可能となる。様々な実施形態について、共有秘密は、上記の方法でマルチベクトルにパッキングされ得る桁の数列である。「共有秘密マルチベクトル」は、共有秘密マルチベクトルとメッセージマルチベクトルとの幾何積を作成するなど、他のマルチベクトルに対して演算を行うために使用され得る。
【0177】
送信元と送信先との間の共有秘密を確立するための様々な方法が既に実施されている。本明細書中に開示されるように、「共有秘密」数字から「共有秘密マルチベクトル」への変換は完全に新規である。通信拠点装置は、システム管理者のみに認識される固有の識別子(数列)を用いて「事前調整」され得る。RSA等の公開/秘密鍵環境において、共有秘密は、送信先の公開鍵のみを用いて送信元によって暗号化され得る。この例において使用される以下の方法は、ディフィー・ヘルマン鍵交換プロトコルである。これは、数列共有秘密を確立するための、便利かつ広く採用されている方法である。しかし、様々な実施形態との使用には、安全に共有数列を作成する任意の方法が適している。
【0178】
ディフィー・ヘルマンプロトコルは、整数剰余pの乗法群を使用し(例えば、https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n参照)、pは素数であり(例えば、https://en.wikipedia.org/wiki/Prime_number参照)、gは原始関数根剰余pである(例えば、https://en.wikipedia.org/wiki/Primitive_root_modulo_nおよびhttps://en.wikipedia.org/wiki/Modular_arithmetic参照)。これら2つの値は、得られた共有秘密が1からp−1の値を確実にとるように、この方法により選択される。ディフィー・ヘルマンの単純な例は、以下の通りである。
【0179】
・アリスとボブは、同じ根剰余pおよび基本数gを用いることに最初に同意する。
【0183】
・アリスとボブによって演算された鍵は同じである。これが共有秘密である。
【0184】
なお、ディフィー・ヘルマンプロトコルは、2つのみの参加者による鍵共有の交渉に限定されない。任意の数のユーザが、プロトコルの反復および中間データの交換を行うことによってこの同意に参加することができる。
【0192】
上記の共有秘密数列は、上記のように分配され、共有秘密マルチベクトルが作成され得る。
【0196】
暗号原文は、メッセージマルチベクトルと1つ以上の他のマルチベクトルとの幾何積であるEDCE原始関数を用いて作成される。最も基本的な形態において、暗号原文マルチベクトルは、メッセージマルチベクトルと共有秘密マルチベクトルとの幾何積であり得る。
【0197】
手順は、以下の通りに規定される。平文メッセージが「this is a test」とする。「テキストから数字」変換を適用することにより、平文メッセージを以下の数字として得る。
【0198】
2361031878030638688519054699098996
【0199】
2Dマルチベクトル構造を用いる「数字からマルチベクトル」変換を適用することにより、平文マルチベクトルは以下の通りとなる。
【0201】
上で定められた共有秘密マルチベクトルを用いて、以下を得る。
【0203】
暗号原文マルチベクトルは、以下の幾何積として定義され得る。
【0222】
最後に、この数字は、上記の「数字からテキスト」手順を用いてテキストに変換され、以下が得られる。
【0224】
E.EDCEフローチャート(
図5〜
図6)
【0225】
図5は、幾何積「sandwich」を用いることによって行われる高度データ中心型暗号化(EDCE)暗号化/復号化についての実施形態に係るフローチャート500である。
【0226】
設定(502):署名および共有秘密マルチベクトルを確立することにより、数字列が開始される。ここで、ディフィー・ヘルマン手順508が示されるが、RSA等の他の非対称鍵暗号を使用して、送信元504および送信先506のみに認識される数列を生成してもよい。代替的に、拠点装置は、セッションマルチベクトルが構築され得る、システム管理者のみに認識される秘密(数列)を用いて「事前調整」され得る。ディフィー・ヘルマン手順508により、共有秘密鍵510が設定/作成され、そして、設定502により、マルチベクトル設定512においてディフィー・ヘルマン鍵510のマルチベクトルが作成される。
【0227】
送信元(504):メッセージASCIIコード列を数列に繋ぎ、その数字を514においてメッセージマルチベクトルの係数に分配することにより、メッセージマルチベクトル516がメッセージ作成演算516において構築される。係数への分配の方法では、送信元504および送信先506の両方に認識されて使用される所定のアルゴリズムが使用される。
【0230】
図6は、シルベスター方程式を用いたEDCE暗号化/復号化についての実施形態のフローチャート600である。
【0231】
設定(602):数字列は、署名および共有秘密マルチベクトルを確立することによって開始される。ここで、ディフィー・ヘルマン手順608が示されるが、RSA等の他の非対称鍵暗号を使用して、送信元604および送信先606のみによって認識される数列を生成しても良い。代替的に、代替的に、拠点装置は、セッションマルチベクトルが構築され得る、システム管理者のみに認識される秘密(数列)を用いて「事前調整」され得る。ディフィー・ヘルマン手順608により、共有秘密鍵610が設定/作成され、そして、設定602により、マルチベクトル設定612においてディフィー・ヘルマン鍵のマルチベクトル612が作成される。
【0232】
送信元(604):メッセージASCIIコード列を数列に繋ぎ、その数字を614においてメッセージマルチベクトルの係数に分配することにより、メッセージマルチベクトル616がメッセージ作成演算614において構築される。係数への分配方法では、送信元604および送信先606の両方に認識されて使用される所定のアルゴリズムが使用される。
【0235】
F.0ブレード換算演算からの対称鍵ペア暗号化/復号化(
図7)
【0244】
原始関数1−「Sandwich」/三重積
【0246】
第1暗号化原始関数は、以下のように、0ブレード換算演算(本明細書中において、上で説明した)によって生成された鍵のペアを用いた幾何積の数字列を通じて作成することができる。
【0249】
復号化処理では、以下のように、事前に定義された逆元マルチベクトルが使用される。
【0251】
原始関数2−マルチベクトルベースのシルベスター方程式
【0253】
ここで、周知のシルベスター方程式が採用され、第2暗号化原始関数が生成される。ここでも、0ブレード換算演算によって、対称暗号化鍵のペアが以下のように生成される(本明細書中において、上で説明した)。
【0256】
復号化演算には、以下のように、3次元マルチベクトルについてのシルベスター方程式の閉解が伴う。
【0259】
3次元における二重共有秘密を用いた暗号化および復号化の数値例
【0268】
幾何積「sandwich」または幾何三重積
【0273】
マルチベクトルベースのシルベスター方程式
【0278】
G.幾何代数および算術関数を用いた解読不能原始関数
【0279】
秘密共有および3Dマルチベクトルの例
【0281】
マルチベクトルは、多次元およびクリフォードkベクトルの成分が得られるような幾何代数として機能し得る。例えば、以下の通りである。
【0293】
なお、他のマルチベクトルのバリエーションも可能である。
【0303】
ここまでで、暗号化は、既知の暗号原文攻撃のペアを受けやすかった。しかし、以下で部分的に示すように、最終的な解読不能性が実現された。
【0305】
原始関数1−「Sandwich」/三重積
【0307】
第1暗号化原始関数は、以下のように、0ブレード換算演算(上に記載)によって生成された鍵のペアを用いる幾何積の数字列によって作成され得る。
【0317】
復号化処理は、以下のステップを含み得る。
【0325】
原始関数2−マルチベクトルベースのシルベスター方程式
【0327】
ここでは、以下のように、0ブレード換算演算(上で説明)によって生成された対称共有秘密鍵のペアを用いる第2暗号化原子関数を生成するためにマルチベクトルベースのシルベスター方程式採用がされ得る。
【0329】
「sandwich」/三重積を用いる暗号化原子関数について上で行ったように、XORマスキングのために上記の同じ処理を使用することによってセキュリティの他の層を追加することが好ましい。
【0332】
復号化演算には、3次元マルチベクトル空間についてのマルチベクトルベースのシルベスター方程式の閉解を伴い、XORは、上記の「sandwich」/三重積について「アンマスク」する。処理の概要は、以下の通りである。
【0338】
メッセージマルチベクトルは、マルチベクトルベースのシルベスター方程式についての以下の閉解を用いて復元される。
【0345】
単純な二次元ベクトルのペアは以下の通りである。
【0358】
マルチベクトル間の幾何積を演算する他の方法では、上で示したドット積およびウェッジ積の規則が組み合わされ、一般的な幾何積を拡大して、以下の規則が定義される。
【0363】
マルチベクトルを形成するオブジェクト(もしくは要素)を記載する他の方法は、「ブレード」もしくは「kブレード」の定義を使用することである。この取り決めにおいて、例えば、k=0ではスカラを得て、k=1ではベクトルを得て、k=2では二重ベクトルを得る。
【0364】
マルチベクトルは、以下によって形成される。
【0367】
上記の例において示されたように、2つの1ブレードマルチベクトルの幾何積により、0ブレードに2ブレードマルチベクトルを加えたものが得られる。
【0371】
上記の特定の例において、以下が得られる。
【0375】
実施形態は、一部が幾何代数マルチベクトル演算の固有の特徴に依存している。演算における鍵は、以下の通りである。
【0394】
2ブレードもしくは3ブレードのマルチベクトルの振幅は、以下のとおり演算される。
【0396】
例えば、2ブレードのマルチベクトルについて考える。
【0404】
マルチベクトル転置は、以下の通り規定される。
【0413】
マルチベクトルが1ブレードの下位代数となるような特殊なケースにおいて、逆元は、以下の関係による逆転を用いても演算され得る。
【0415】
例えば、以下のマルチベクトルについて考える。
【0417】
この場合の逆転は、以下の通りである。
【0419】
これは、当初のマルチベクトルと同一である。その逆元を演算すると、以下の通りとなる。
【0429】
このクリフォード結合は、以下により得られる。
【0433】
クリフォード結合によって規定される当初の逆元式を用いて、以下が得られる。
【0437】
マルチベクトル逆元の使用は、様々な実施形態において重要である。逆元を演算するために使用される幾何代数におけるアルゴリズムは、マルチベクトルの空間次元nによって異なる。この幾何代数の概要は、余すところなく記載することを意図しておらず、単に本明細書において示される実施形態の特徴および例についての説明に充分とすることを意図したものである。より余すところのない詳述については、「参考文献1」を参考にされたい。
【0438】
署名、封止、送達メッセージにおけるシルベスター方程式の使用
【0439】
暗号原文の「署名および封止」の方法においては、シルベスター方程式「参考文献2」と呼ばれる数学の分野における周知の行列方程式を用いる。
【0443】
これは、以下の形態のマルチベクトルに対する線形関数を規定した場合に得られる。
【0445】
ここで、シルベスター方程式の要素は、以下の通りに定義される。
【0450】
「参考文献2」における四次元数もしくは行列を用いた結果に類似の解は、以下のように「参考文献1」に記載されている。
【0452】
そして、復号化処理の前に暗号原文をアンパックするために送信先によって使用される。
【0453】
[参考文献1]「Functions of Multivector Variables」 PLOS ONE | DOI:10.1371/journal.pone.0116943 March 16, 2015, James M. Chappell, Azhar Iqbal, Lachlan J. Gunn, Derek Abbott, School of Electrical and Electronic Engineering, University of Adelaide, Adelaide, South Australia, Australia}
【0454】
[参考文献2]Janovska D, Opfer G (2008) Linear equations in quaternionic variables. Mitt Math Ges Hamburg 27: 223-234
【0455】
本発明についての上記の説明は、例示および説明を目的としたものである。本発明を余すところなく伝えることや開示された形態に正確に限定することは意図していない。また、上記の教示を元に他の変形や変更を行うことは可能である。実施形態は、本発明の減速およびその実施につい対して最良となるように選択および記載されたものであり、考えられる特定の使用に適するように様々な実施形態および様々な変形例で本発明を他の当業者が実施できるものである。添付の本発明に関する先生は、先行技術によって限定されない範囲で本発明の他の代替的な実施形態を含むものと解釈されることを意図している。