(57)【要約】  幾何代数を用いてデータメッセージを暗号化および復号化する方法およびシステムが開示される。送信元演算装置上で行われる暗号化演算では、暗号化鍵、送信元の識別、および／または他のデータ中心情報を搬送する１つ以上の他のマルチベクトルを用いてデータメッセージの平文／データから作成されたマルチベクトルの幾何積（クリフォード積）が用いられる。送信元演算装置は、暗号化メッセージを送信先演算装置に送信する。マルチベクトル逆元、クリフォード共役、および他の幾何積等の幾何代数演算を採用することで、送信先演算装置上で行われる復号化演算により、当初のメッセージマルチベクトルが復元され、最終的に、当初のデータメッセージが復元される。様々な実施形態は、メッセージと暗号化／共有秘密鍵との幾何積を採用し得る、または、様々な実施形態は、幾何積「ｓａｎｄｗｉｃｈ」および／またはマルチベクトルベースのシルベスター方程式を利用して、暗号化システムの撹乱および／または拡散を増加させる。
2019528028.tif 000002
【特許請求の範囲】
【請求項１】
2019528028.tif 000242
【請求項２】
幾何代数幾何積およびマルチベクトルの逆元の評価は、加算、減算、乗算、および除算の基本的な算術演算を用いて、前記送信元演算装置および前記送信先演算装置に対して実施される、請求項１に記載の方法。
【請求項３】
前記送信元演算装置および前記送信先演算装置上での前記幾何代数幾何積およびマルチベクトルの逆元の実施は、素数の選択、対数関数の演算、および／または自然対数関数の複雑な演算を含まない、請求項２に記載の方法。
【請求項４】
2019528028.tif 000243
【請求項５】
前記標準的なコンピュータ文字コード化特徴は、前記当初の英数字テキストメッセージのテキスト文字についてのＡＳＣＩＩ（情報交換用米国標準コード）コードである、請求項４に記載の方法。
【請求項６】
2019528028.tif 000244
【請求項７】
2019528028.tif 000245
【請求項８】
2019528028.tif 000246
【請求項９】
2019528028.tif 000247
【請求項１０】
2019528028.tif 000248
【請求項１１】
2019528028.tif 000249
【請求項１２】
2019528028.tif 000250
【請求項１３】
2019528028.tif 000251
【請求項１４】
2019528028.tif 000252
【請求項１５】
前記追加の特徴データは、暗号化セキュリティを向上させるためのダミーデータと、追加の演算のためのコマンド指示と、前記追加の演算のための構成データとを含む群から選択される少なくとも１つからなる、請求項１４に記載の方法。
【請求項１６】
2019528028.tif 000253
【請求項１７】
2019528028.tif 000254
【請求項１８】
2019528028.tif 000255
【請求項１９】
2019528028.tif 000256
【請求項２０】
2019528028.tif 000257
2019528028.tif 000258
【請求項２１】
2019528028.tif 000259
【請求項２２】
2019528028.tif 000260
【請求項２３】
2019528028.tif 000261
【請求項２４】
2019528028.tif 000262
【請求項２５】
2019528028.tif 000263
【請求項２６】
2019528028.tif 000264
【請求項２７】
幾何代数幾何積およびマルチベクトルの逆元の評価は、前記送信元演算装置および前記送信先演算装置によって、加算、減算、乗算、および除算の基本的な算術演算を用いて実施される、請求項２６に記載のＥＤＣＥシステム。
【請求項２８】
前記送信元演算装置および前記送信先演算装置上での前記幾何代数幾何積およびマルチベクトルの逆元の実施は、素数の選択、対数関数の演算、および／または自然対数関数の複雑な演算を含まない、請求項２７に記載のＥＤＣＥシステム。
【請求項２９】
2019528028.tif 000265
【請求項３０】
前記標準的なコンピュータ文字コード化特徴は、前記当初の英数字テキストメッセージのテキスト文字についてのＡＳＣＩＩ（情報交換用米国標準コード）コードである、請求項２９に記載のＥＤＣＥシステム。
【請求項３１】
2019528028.tif 000266
【請求項３２】
2019528028.tif 000267
【請求項３３】
2019528028.tif 000268
【請求項３４】
2019528028.tif 000269
【請求項３５】
2019528028.tif 000270
【請求項３６】
2019528028.tif 000271
【請求項３７】
2019528028.tif 000272
【請求項３８】
2019528028.tif 000273
【請求項３９】
2019528028.tif 000274
【請求項４０】
前記追加の特徴データは、暗号化セキュリティを向上させるためのダミーデータと、追加の演算のためのコマンド指示と、前記追加の演算のための構成データとを含む群から選択される少なくとも１つからなる、請求項３９に記載のＥＤＣＥシステム。
【請求項４１】
2019528028.tif 000275
【請求項４２】
2019528028.tif 000276
【請求項４３】
2019528028.tif 000277
【請求項４４】
2019528028.tif 000278
【請求項４５】
2019528028.tif 000279
【請求項４６】
2019528028.tif 000280
【請求項４７】
2019528028.tif 000281
【請求項４８】
2019528028.tif 000282
【請求項４９】
2019528028.tif 000283
【請求項５０】
2019528028.tif 000284
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本出願は、２０１６年８月２日に出願された「幾何代数を用いた高度データ中心型暗号化システムのための方法およびシステム（Methods and Systems for Enhanced Data-Centric Encryption Systems Using Geometric Algebra）」と題された米国特許仮出願第６２／３７０，１８３号、２０１７年１月３０日に出願された「幾何代数を用いた高度データ中心型暗号化加法準同形システムのための方法およびシステム（Methods and Systems for Enhanced Data-Centric Encryption Additive Homomorphic Systems Using Geometric Algebra）」と題された米国特許仮出願第６２／４５２，２４６号、および２０１７年４月７日に出願された「幾何代数を用いた強化データ中心スカラ乗法準同形暗号化システムのための方法およびシステム（Methods and Systems for Enhanced Data-Centric Scalar Multiplicative Homomorphic Encryption Systems Using Geometric Algebra）」と題された米国特許仮出願第６２／４８３，２２７号に基づくとともに、これらの優先権を主張するものであり、これらの仮出願は、その開示および教示のすべてについて、本明細書中において具体的に引用により援用される。
【背景技術】
【０００２】
過去数十年間において、パーソナルコンピュータならびに携帯型装置およびスマートフォン等の他の消費者向け演算装置は、一般大衆に広く普及した。パーソナルコンピュータおよび他の演算装置が急増するにつれ、コンピュータおよびパーソナルコンピュータの有用性は、様々な電子的ネットワーク通信システムを介した異なるコンピュータ／演算装置間での相互接続通信によって高度化した。公共でアクセス可能なインターネットの出現、およびインターネット上のコンピュータおよび／または他の演算装置間の共通の通信のためのワールドワイドウェブ（ＷＷＷ）の確立により、公共でアクセス可能なインターネットを通じて個人識別情報および金融情報が転送されることが一般的となった。個人情報に関与することを意図していない者によって個人情報がアクセスされないことを確実にするために、インターネットを通じて転送される個人データに対しては、様々な暗号化技術が適用されてきた。公共からアクセス可能なインターネットを含むネットワーク技術を通じてデータストレージがアクセス可能となるにつれ、暗号化された形式で機密データを記憶することが賢明となっている。
【０００３】
近代の暗号化においては、正整数もしくは二進ビットを操作する数学的手法が採用されている。ＲＳＡ（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ）等の非対称暗号化は、予想通りに因数分解することが難しいとともに暗号化鍵のサイズを大きくすることによってさらに難しくなり得る、整数論一方向関数を必要とする。ＤＥＳ（データ暗号化規格）およびＡＥＳ（高度暗号化規格）等の対称暗号化は、レジスタ内でのビット操作を用いて暗号原文をシャッフルして「拡散」を高めるとともに、共通鍵を用いたレジスタベースの演算を行って「撹乱」を高める。拡散および撹乱は、伝送されているデータのペイロードに対する統計的エントロピーの増加に対する措置である。暗号化における拡散および撹乱の概念は、１９４０年代にクロード・シャノンによって最初に特定されたものと通常知られている。拡散は、未暗号化（平文）データを暗号化（暗号原文）データから生成する数学的処理を複雑化して、これによって暗号化（暗号原文）データのいくつかのデータ片に対する未暗号化（平文）データの各データ片の影響を分散させることによって暗号化処理の暗号化鍵の発見を難しくするものと一般的には考えられている。このため、拡散の度合いの高い暗号化システムは、通常、未暗号化（平文）データの１つの文字を変化させるために暗号化（暗号原文）データのいくつかの文字を変化させ、攻撃者が未暗号化（平文）データの変化を認識することを難しくしている。撹乱は、未暗号化（平文）データと暗号化（暗号原文）データとの間の関係を不明確にするものと一般的には考えられている。このため、撹乱の度合いの高い暗号化システムは、攻撃者が暗号化方法（ＲＳＡ、ＤＥＳ、および／またはＡＥＳ等の公的な規格）の演算を認識したとしても暗号化鍵を推測することが依然として難しいような方法で未暗号化（平文）データを暗号化（暗号原文）データへ大幅に変更する処理を必然的に伴う。
【発明の概要】
【０００４】
2019528028.tif 000003
【０００５】
2019528028.tif 000004
【０００６】
2019528028.tif 000005
【０００７】
2019528028.tif 000006
【０００８】
2019528028.tif 000007
【０００９】
2019528028.tif 000008
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るハードウェア実装を示すブロック図である。
【図２】実施形態に係る演算の概略を示すフローチャートである。
【図３Ａ】実施形態に係る送信元演算装置の対称鍵演算のフローチャートである。
【図３Ｂ】実施形態に係る送信先演算装置の対称鍵演算のフローチャートである。
【図４Ａ】実施形態に係る送信元演算装置の対称鍵および暗号原文マスキング演算のフローチャートである。
【図４Ｂ】実施形態に係る送信先演算装置の対称鍵および暗号原文マスキング演算のフローチャートである。
【図５】幾何積「ｓａｎｄｗｉｃｈ」を用いる高度データ中心型暗号化（ＥＤＣＥ）暗号化／復号化の実施形態のフローチャートである。
【図６】シルベスター方程式を用いるＥＤＣＥ暗号化／復号化、および／またはＥＤＣＥセキュアメッセージ配列インデックスの実施形態のフローチャートである。
【図７】実施形態に係る当初の共有秘密マルチベクトルからの第２共有秘密鍵の生成／抽出／取得を示すブロック図である。
【発明を実施するための形態】
【００１１】
実施形態は、有利に幾何代数を利用して、中間演算システム（例えば、現在一般的に「クラウド」もしくは「クラウドコンピューティング」と称される、広域ベースの演算システム）を通じて伝送され得る、および記憶され得る数値メッセージの暗号化および復号化を提供し得る。幾何代数ベースの暗号化／復号化を用いて送信元／送信側システムから送信先／受信側システムへデータを安全に転送する暗号化／復号化機能を実行する幾何代数暗号化／復号化システムの実施形態は、「高度データ中心型暗号化（ＥＤＣＥ）システム」と称され得る。
【００１２】
幾何代数は、物理的な世界における物体の物理的相互作用を数学的に表すことを意図してベクトルおよび他のオブジェクトの幾何的相互作用を説明する、数学の領域である。暗号への幾何代数の使用は、本来の現実の物理的な世界における物体の物理的な相互作用を表す幾何代数の基礎からは完全に離れた目的のために生み出された新しい幾何代数の用法である。本明細書において使用されるように、数学のこの領域は、幾何代数、共形幾何代数、およびクリフォード代数（本明細書において、これらをまとめて「幾何代数」という）を含む。概して、幾何代数は、幾何積、逆元、および単位元などの演算を規定し、本明細書に開示される例示的なＥＤＣＥシステム実施形態の実施形態の多くの特徴を促進する。さらに、幾何代数は、データをマルチベクトルの「ペイロード」に組織化および表現することを可能とし、ペイロード内のデータは、例えば平文、暗号原文、もしくは識別署名を表し得る。このため、ＥＤＣＥシステムの実施形態は、幾何代数の特性を上手く利用することで、演算が比較的単純な方法での暗号化および復号化演算を提供するとともに、動的なデータおよび静的なデータ（例えば、クラウドに記憶されているデータ）についての堅牢な保護を提供する。
【００１３】
暗号化データが中間演算システムを介して転送される場合、例えばクラウドベースの演算で行われる場合、送信元演算装置から中間演算システムを介して暗号化データ値をユーザが伝達したい時またはネットワークに接続して伝達を行う時まで、暗号化データ値は中間演算システムに保存され得る。代替的に、暗号化データ値は、対象となる暗号化データ値が中間演算システムによって受信されるとすぐに中間演算システムによって送信先演算装置へ転送され得る。しかし、当業者が認識し得るように、中間演算システムで暗号化データ値を受信する処理は、本質的に、すぐに使用および消去される中間演算システムの演算サブシステムのランダムアクセスメモリ（ＲＡＭ）箇所または演算レジスタ箇所での束の間の使用であったとしても暗号化データ値を中間演算システムに記憶することを含む。
【００１４】
ＥＤＣＥシステム実施形態の実施形態は、機能ブロックから構成され得て、各ブロックは、以下でより詳細に説明するように、範囲、性能、および安全性の目的に応じて、適合され得る。以下のセクションにおいては、これらの機能ブロックについて、数学的かつ数値的な説明をする。
【００１５】
本明細書において記載される複雑な主題についての混乱を最小限とするために、以下の説明は、ＥＤＣＥシステムの実施形態に関する様々な基本的なトピックを別個にカバーするよう分けられている。このような点から、セクション１では、ＥＤＣＥシステムの基礎的な演算の実施形態の概要について説明する。セクション２では、マルチベクトルへの情報のパッキング、このようなマルチベクトルの暗号化および復号化、ならびに当初の情報を復元するアンパッキングを含む、基礎的なＥＤＣＥシステムの実施形態についてさらに説明する。付録Ａは、幾何代数の概要を提供する。概して、この説明において、典型的な慣例のように、演算の特定の例については、アリス（Ａｌｉｃｅ）およびボブ（Ｂｏｂ）が、送信／送信元主体および受信／送信先主体としてそれぞれ使用される。したがって、本開示の配置は、以下のように要約される。
【００１６】
セクション１：ＥＤＣＥメッセージ暗号化／復号化の概要
【００１７】
Ａ．ＥＤＣＥ実施形態のハードウェアでの実施（図１）
【００１８】
Ｂ．ＥＤＣＥ演算の概略フローチャート（図２〜図４）
【００１９】
セクション２：ＥＤＣＥメッセージ暗号化／復号化についてのさらなる説明
【００２０】
Ａ．マルチベクトルのパッキングおよびアンパッキング
【００２１】
１）テキストから数字
【００２２】
２）数字からテキスト
【００２３】
３）マルチベクトルデータ構造
【００２４】
４）数字からマルチベクトル
【００２５】
５）マルチベクトルから数字
【００２６】
Ｂ．共有秘密
【００２７】
Ｃ．暗号原文作成
【００２８】
Ｄ．復号化
【００２９】
Ｅ．ＥＤＣＥフローチャート（図５〜図６）
【００３０】
Ｆ．０ブレード換算演算からの対称鍵ペア暗号化／復号化（図７）
【００３１】
＊０ブレード換算演算
【００３２】
＊幾何代数暗号化原始関数
【００３３】
＊３次元における二重共有秘密を用いた暗号化および復号化の数字例
【００３４】
Ｇ．幾何代数および算術関数を用いる解読不能原始関数
【００３５】
＊秘密共有および３Ｄマルチベクトルの例
【００３６】
付録Ａ：幾何代数の概要
【００３７】
セクション１：ＥＤＣＥメッセージ暗号化／復号化の概要
【００３８】
インターネットおよび多くの形態の携帯装置の到来により、暗号化データの容量が指数関数的に増加している。「サムドライブ」、「スマートカード」、およびソリッドステートディスク（ＳＳＤ）のような携帯装置は、平文および／または暗号化「受動型」データストレージの両方を含む。受動型データストレージは、インターネット・オブ・シングス（ＩｏＴ）のための小さな装置ならびにサーバファームにおける大きなメモリに設けられる。
【００３９】
データがストレージを離れ、動いている時には、データはより攻撃を受けやすい。現在の暗号化技術は、ネットワークセキュリティインフラとともに進化してきたわけではなく、動いている莫大な量のデータに良好に適してはいない。我々が「クラウドコンピューティング」に向けて動き、携帯装置が我々を「外周のない」ネットワークセキュリティへと動かすにつれ、産業はネットワーク、サーバ、もしくはアプリケーションのセキュリティをただ信頼することから離れ、データ中心型暗号化に注目する。データ中心型暗号化および認証を用いると、制御はアプリケーション層もしくはネットワークにおける最終送信先でただ行われるのではなく、データとともに移動する。
【００４０】
しかし、この動くデータの流動性は、現在の暗号化インフラの核心であり続ける演算集約的な数学によって失速する。ＲＳＡ（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ）、ＤＥＳ（データ暗号化規格）、および／またはＡＥＳ（高度暗号化規格）等の暗号は、通信効率を行き詰まらせる静的「マシン」と大差はない。実際の問題は非常に大きい。以下の場合にどのように堅牢なセキュリティが提供できるのかである。
【００４１】
ａ）拠点演算リソースが限られている（例えば、インターネット・オブ・シングス（ＩｏＴ））。
【００４２】
ｂ）暗号化／復号化がほぼリアルタイムでなければならない。
【００４３】
ｃ）送信元および送信先の認証が継続的に示されなければならない。
【００４４】
実施形態は、高度データ中心型暗号化もしくはＥＤＣＥとして説明され得る。現在の暗号化スキームと比較すると、ＥＤＣＥは、通信チャネルのスパンにわたって堅牢なセキュリティを提供しながらも、演算が単純である。ＥＤＣＥセキュリティは、小さな埋め込みＩｏＴ（インターネット・オブ・シングス）装置からサーバファームまで拡張可能である。ＥＤＣＥ機能により、現在の方法よりも速度および帯域幅が有利な多くの暗号スキームを可能にする。データの暗号化／復号化における速度の向上をもたらすＥＤＣＥの一局面は、ＥＤＣＥ暗号化／復号化が加法、減法、乗法、および除法の基本的な算術演算を用いて実施され得ることである。とりわけ、ＥＤＣＥは、複雑な演算、大きな素数の選択、対数関数の演算、自然対数関数の演算、および／または他の複雑かつ演算集約的な数学的関数の演算を必要としない（すなわち、本明細書中で開示される幾何代数演算においては、素数、対数、自然対数、および／または他の複雑な数学的演算は必要ではない）。
【００４５】
様々な実施形態の中心的特徴は、過去に暗号化において利用されてこなかった数学の領域である幾何代数を使用していることにある。本明細書中において使用される幾何代数は、幾何代数、共形幾何代数、およびクリフォード代数（本明細書中において、まとめて「幾何代数」という）を含む数学の領域である。幾何代数は、データをマルチベクトルの「ペイロード」に組織化および表現することを可能にし、データは、例えば、平文、暗号原文、または署名であり得る。幾何代数は、様々な実施形態の暗号化／復号化演算を可能にする要素である、幾何積、逆元、および単位元等の演算を規定する。
【００４６】
マルチベクトルは、スカラ、ベクトル、２次元ベクトル、その他ｎ次元ベクトルを単に加法により組み合わせたものである。しかし、単位ベクトルは、四元の代数構造（ハミルトン）および非可換代数（グラスマン）に従う。これら二種類の代数により、クリフォードは、ＥＤＣＥシステムの実施形態の「原始関数」のうちの１つとしての、様々な実施形態において使用される幾何積を着想した。
【００４７】
2019528028.tif 000009
【００４８】
2019528028.tif 000010
【００４９】
2019528028.tif 000011
【００５０】
2019528028.tif 000012
【００５１】
2019528028.tif 000013
【００５２】
2019528028.tif 000014
【００５３】
様々な実施形態において、「ペイロード」は、マルチベクトル要素のスカラおよび係数の値においてパッキングされ得る。ＥＤＣＥシステムが適切に動作することを確実にするためには、マルチベクトルのために選択される係数値にいくつかの制限を加える必要がある。例えば、すべてのマルチベクトル係数が等しい場合、マルチベクトルに対して有理化演算を行うことによってゼロが得られる。すべてが等しい係数を有するこのようなマルチベクトルは、逆元を有しておらず、他のマルチベクトルとすべて等しい係数を有するこのようなマルチベクトルの幾何積は、逆元を有していない。以下でより詳細に説明するように、ＥＤＣＥシステムの復号化方法は、復号化されている暗号原文マルチベクトルの逆元およびセキュリティ鍵マルチベクトルの逆元を利用して、復号化を行う。このため、復号化されている暗号原文マルチベクトルは、すべて等しい値の係数を有するべきではない。復号化されている暗号原文マルチベクトルがすべて等しい値の係数を有さないことを確実にするための１つの手段は、パッキング／係数分配方法により、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時にすべての係数が互いに等しくない（すなわち、少なくとも１つの係数が他の係数とは異なる必要がある）ことを確実にすることである。データメッセージを単純に転送するＥＤＣＥの実施形態については、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時にすべての係数が互いに等しくないことを確実にすることにより、復号化される暗号原文マルチベクトルがすべて等しい係数を有さないことが確実となる。
【００５４】
加えて、別個のマルチベクトルが、共有秘密（以下で定義される）、認証情報、およびタイムスタンプ等の多くの目的のためにコード化され得る。メッセージの暗号化および復号化に加えて、ＥＤＣＥ実施形態におけるＥＤＣＥマルチベクトル形式および幾何代数の基礎により、単一の伝送において、単に暗号原文だけでなく、暗号化セキュリティを向上させるためのダミーデータ、追加の演算のためのコマンド指示、および／または追加の演算のための構成データを含むことが可能になる。
【００５５】
Ａ．ＥＤＣＥ実施形態のハードウェア実装（図１）
【００５６】
図１は、実施形態に係るハードウェア実装を示すブロック図１００である。第１演算装置１０２は、電子的なネットワーク／バス接続１０４を介して第２演算装置１０６に接続される。図１に示される実施形態において、第１演算装置１０２は、ネットワーク／バス接続１０４を介して暗号化メッセージ１０８を送信する送信元装置１０２である。第２演算装置１０６は、ネットワーク／バス接続１０４から暗号化メッセージ１０８を受信する送信先装置１０６である。概して、暗号化通信を含む通信は、第１演算装置１０２および第２演算装置１０６が必要に応じて送信元装置１０２および送信先装置１０６としての役割を変更して第１演算装置１０２と第２演算装置１０６との間でのデータの相互の転送が可能となるように、双方向である。
【００５７】
さらに、図１に示されるように、第１演算装置１０２はラップトップコンピュータとして示され、第２演算装置１０６はタブレット装置として示される。概して、任意の形態の電子的ネットワークもしくはバス通信プラットフォームを介して通信可能な演算装置であれば、第１演算装置１０２および第２演算装置１０６の一方または両方であっても良い。さらに、第１演算装置１０２および第２演算装置１０６は、実際には、内部バス接続１０４を通じて自身と通信するが未暗号化形式の機密データ通信を得るために攻撃者が内部通信バス１０４をモニタリングできないことを確実にするために暗号化通信を必要とする同一の物理演算装置であり得る。
【００５８】
様々な実施形態は、第１演算装置１０２と第２演算装置１０６との間で電子データを転送可能な任意の通信チャネル１０４を用いてネットワーク／バス通信チャネル１０４を実施し得る。例えば、ネットワーク／バス通信接続１０４は、第１演算装置１０２から第２演算装置１０６への伝送時に１つ以上の異なる通信チャネルを介してルーティングされたインターネット接続であり得る。同様に、ネットワーク／バス通信接続１０４は、演算装置の内部通信バス、またはメモリチップもしくは中央処理装置（ＣＰＵ）チップ等の処理もしくはメモリストレージ集積回路（ＩＣ）チップの内部バスであり得る。ネットワーク／バス通信チャネル１０４は、優先通信、無線電磁通信、光ファイバーケーブル通信、光／レーザ通信、音波／音通信等、およびこれらの様々な通信チャネルの任意の組み合わせを含むがこれらに限定されない通信で電子データを伝送することが可能な任意の媒体を利用し得る。
【００５９】
様々な実施形態は、第１演算装置１０２および／または第２演算装置１０６上で動作するアプリケーションを介して、本明細書において詳述される制御および管理関数を提供し得る。第１演算装置１０２および／または第２演算装置１０６の各々は、コンピュータもしくはコンピュータシステム、または実施形態の通信および演算を行うことが可能な任意の他の電子装置であり得る。第１演算装置１０２および第２演算装置１０４は、汎用コンピュータ、ラップトップ／携帯型コンピュータ、タブレット装置、スマートフォン、産業制御コンピュータ、データストレージシステム制御部、ＣＰＵ、グラフィカル処理ユニット（ＧＰＵ）、特定用途向け集積回路（ＡＳＩ）、および／またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含み得るが、これらに限定されない。とりわけ、第１演算装置１０２および第２演算装置１０６は、攻撃者が未暗号化データにアクセスする能力を制限するようにデータストレージ媒体に対して送達されるデータが常に暗号化されるようなデータストレージ媒体のストレージ制御部（例えば、ハードディスクドライブ用の制御部）であり得る。実施形態は、様々な実施形態に基づく単一もしくは複数の処理を行うためにコンピュータ（もしくは他の電子装置）またはコンピュータシステムをプログラミング／操作するために使用され得る命令を記憶したコンピュータ読み取り可能もしくは機械読み取り可能媒体を含み得るコンピュータプログラム製品として提供され得る。コンピュータ読み取り可能媒体は、ハードディスクドライブ、フロッピーディスク、光ディスク、コンパクトディスク読み取り可能メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスクＲＯＭＳ（ＤＶＤ−ＲＯＭ）、ユニバーサルシリアルバス（ＵＳＢ）メモリスティック、光磁気ディスク、ＲＯＭ、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラム可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラム可能ＲＯＭ（ＥＥＰＲＯＭ）、磁気光カード、フラッシュメモリ、または電子命令を記憶するのに適した他の種類の媒体／機械読み取り可能媒体を含み得るが、これらに限定されない。コンピュータプログラム命令は、単一のコンピュータ／電子装置上で常駐して動作し得る、または様々な部分が、コンピュータシステムを備える複数のコンピュータ／装置にわたって分散し得る。また、実施形態は、コンピュータプログラム製品としてダウンロードされ得て、プログラムは、通信リンク（例えば、有線／ケーブル接続および無線接続の両方を含む、モデムもしくはネットワーク接続）を介して搬送波もしくは他の伝搬媒体で具現化されるデータ信号によって遠隔コンピュータから要求元コンピュータへ転送され得る。
【００６０】
Ｂ．概略的なＥＤＣＥ演算のフローチャート（図２〜図４）
【００６１】
2019528028.tif 000015
【００６２】
2019528028.tif 000016
【００６３】
再び、様々な実施形態について、「ペイロード」は、スカラの値およびマルチベクトル要素の係数においてパッキングされ得る。ＥＤＣＥシステムが適切に動作することを確実とするために、マルチベクトルについて選択される係数値に対していくつかの制限をかける必要がある。例えば、すべてのマルチベクトル係数が等しい場合、マルチベクトルに対する有理化演算ではゼロが得られる。すべて等しい係数を有するこのようなマルチベクトルは逆元を有さず、すべて等しい係数を有するこのようなマルチベクトルの幾何積は逆元を有さない。以下でより詳細に説明するように、ＥＤＣＥシステムのための暗号化方法は、暗号化されている暗号原文マルチベクトルの逆元およびセキュリティ鍵のマルチベクトルの逆元を利用して暗号化を行う。このため、復号化されている暗号原文マルチベクトルはすべて等しい値の係数を有するべきではない。復号化されている暗号原文マルチベクトルがすべて等しい値の係数を有さないことを確実にするための１つの手段は、パッキング／係数分配方法により、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時にすべての係数が互いに等しくない（すなわち、少なくとも１つの係数が他の係数とは異なる必要がある）ことを確実にすることである。データメッセージを単純に転送するＥＤＣＥの実施形態については、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時にすべての係数が互いに等しくないことを確実にすることにより、復号化される暗号原文マルチベクトルがすべて等しい係数を有さないことが確実となる。
【００６４】
2019528028.tif 000017
【００６５】
2019528028.tif 000018
【００６６】
2019528028.tif 000019
【００６７】
2019528028.tif 000020
【００６８】
2019528028.tif 000021
【００６９】
2019528028.tif 000022
【００７０】
2019528028.tif 000023
【００７１】
2019528028.tif 000024
【００７２】
2019528028.tif 000025
【００７３】
2019528028.tif 000026
【００７４】
2019528028.tif 000027
【００７５】
2019528028.tif 000028
【００７６】
2019528028.tif 000029
【００７７】
2019528028.tif 000030
【００７８】
2019528028.tif 000031
【００７９】
2019528028.tif 000032
【００８０】
2019528028.tif 000033
【００８１】
2019528028.tif 000034
【００８２】
2019528028.tif 000035
【００８３】
加えて、フローチャートおよび図２〜図４に関して上で説明したフローチャートの詳細は、方法もしくは処理として具現化され得る方法を記載したものであるが、他の実施形態は、フローチャートおよび図２〜図４の詳細に係るフローチャートで説明した処理を実施することによってデータの暗号化、データの転送、およびデータの復号化を行う、コンピュータシステムとして、および／または送信元コンピュータシステムおよび送信先コンピュータシステムとして認識され得る。さらに、データの暗号化、データの転送、およびデータの復号化を行う、コンピュータシステム、および／または送信元コンピュータシステムおよび送信先コンピュータシステムの説明において、上記の方法のための上記の１つ以上の個別の処理は、分けられて、全体の暗号化コンピュータシステムのサブシステムとして表され得る。データの暗号化、データの転送、およびデータの復号化を行う、コンピュータシステム、および／または送信元コンピュータシステムおよび送信先コンピュータシステムのサブシステムは、その全体もしくは一部において、用途特定集積回路（ＡＳＩＣ）もしくはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等の特定のハードウェア実装システムに割り当てられる。１つ以上のサブシステムは、その全体もしくは一部において、ソフトウェアもしくはファームウェア命令として実施される１つ以上のサブシステムに関して具体的なコンピュータシステムの演算を規定するソフトウェアもしくはファームウェア命令として代替的に実施され得る。ソフトウェアもしくはファームウェア命令により、コンピュータシステムの中央処理装置、メモリ、および／または他のシステムが特定の１つ以上のサブシステム割当特徴に基づいて動作し得る。
【００８４】
セクション２：ＥＤＣＥメッセージ暗号化／復号化についてのさらなる説明
【００８５】
以下の開示は、ＥＤＣＥ実施形態の動作中の演算およびデータの関係の単純化された例を提供する。例において示され記載されるデータの量、データの種類、および特定のデータ値は、特定の現実のシステムを表す意図はなく、実施形態の演算およびデータの関係を示すのみの目的のために提供される。さらに、以下に記載の実施形態は、特定のデータ種類、暗号化共有秘密鍵交換技術、テキストから数字およびその逆の変換技術、および／または数字からマルチベクトル係数割当技術に演算を限定する意図はない。
【００８６】
新しい暗号化原始関数としての幾何代数幾何積の利用に加え、様々な実施形態は、機能ブロックからなり得て、各機能ブロックは、範囲、性能、およびセキュリティの目的によって記載されるように適合され得る。以下のセクションは、これらの機能ブロックの１つ以上の例示的な実施形態の数学的および数的な説明を提供する。例における数的結果は、概してＣプログラミング言語を実行する幾何代数から得られる。
【００８７】
Ａ．マルチベクトルのパッキングおよびアンパッキング
【００８８】
内容
【００８９】
１）テキストから数字
【００９０】
２）数字からテキスト
【００９１】
３）マルチベクトルデータ構造
【００９２】
４）数字からマルチベクトル
【００９３】
５）マルチベクトルから数字
【００９４】
１）テキストから数字
【００９５】
本明細書中に記載の例示的なＥＤＣＥ実施形態について、各テキストメッセージは、すべてのＥＤＣＥ演算のための有効な演算単位とするために、数字に変換される必要がある。本明細書中に示される実施形態については、数字は、典型的に１０進数で示されるが、様々な実施形態では、システム設計者によって他の所望の進数が選択され得る。例えば、ＡＳＣＩＩ規格はｘＦＦの１６進数によって表される典型的な８ビットよりも１つ小さい２のべき乗（すなわち、１６進数は２8である）である０〜１２７（すなわち、２7）に基づく表現を有していることから、１６進（１６進数）表現により、ＡＳＣＩＩの数的表現に対応する場合には、特定の利点が得られる。ＡＳＣＩＩ文字コード化スキームによれば、ａ、ｂ、ｃの文字等の記号は、他の形式（２進数、１０進数、８進数、１００進数等）で表され、これらは、形式間の関係を示す表であるＡＳＣＩＩ印字可能コードチャートに記載されている。このため、文字「ａ」、「ｂ」、および「ｃ」は、ＡＳＣＩＩ１０進コードでは、それぞれ９７、９８、および９９となる。
【００９６】
例えば、平文メッセージが「ｍｅｓｓａｇｅ」であるとする。ＡＳＣＩＩ１０進コードでは、以下のように示される。
【００９７】
ｍｅｓｓａｇｅ
【００９８】
１０９  １０１  １１５  １１５  ９７  １０３  １０１
【００９９】
この記号と１０進数との関係により、テキスト「ｍｅｓｓａｇｅ」を用いた１０進数でのテキストから文字への変換が、以下のように行われる。
【０１００】
変数ｎは、テキストから数字への変換の最後の数を表す。この変数をゼロと規定して開始する。このため、ｎ＝０である。
【０１０１】
そして、メッセージの各文字についてＡＳＣＩＩ１０進むコードで列を作成する。
【０１０２】
text=“message”
【０１０３】
ASCII_array_from_“message” = [109, 101, 115, 115, 97, 103, 101]
【０１０４】
この列は、７つの要素のサイズを有することから、列サイズは７である。
【０１０５】
そして、ＡＳＣＩＩ文字の列の各値について、繰り返し、以下を行う。
【０１０６】
（ｉ）ｎを２５６で掛け合わせる。（２５６が選択されたのは、ＡＳＣＩＩ印字可能コードチャートにおいて最大の数よりも２つ大きい乗数であるためであり、２8＝２５６であることから８ビットのスペースを確保している。）
【０１０７】
（ｉｉ）同等のＡＳＣＩＩ１０進コードで合計し、結果を同じ初期ｎ変数に以下のように割り当てる。
【０１０８】
For i=0; i < array_size; i++
n = n * 256 + ascii_array_from_message[i]
【０１０９】
各反復の詳細は以下のとおりである。
【０１１０】
2019528028.tif 000036
【０１１１】
上記の演算を行うことにより、ｎの最後の値は３０７９２３１８９９２８６９２２１となる。
【０１１２】
このため、平文「ｍｅｓｓａｇｅ」は１０進数では３０７９２３１８９９２８６９２２１に等しい。ひとたび１０進数を得ると、本明細書中に記載のメッセージ暗号化の演算を行うことができる。望む場合は、加法もしくは剰余演算等、ＡＳＣＩＩコード上の変換を行うことによってこのステップにエントロピーを加えても良い。以下の例においては、このようなエントロピーを追加する変換は使用されない。
【０１１３】
２）数字からテキスト
【０１１４】
様々な演算を行ったあと、１０進数が伝送されて受信される。メッセージマルチベクトルの上記の例から、係数が繋がれて数列が形成される。この数列への「数字からテキスト」変換処理では、ＡＳＣＩＩ印字可能コードチャートが使用されるが、復元ルーティンは「テキストから数字」変換とは異なる。以下に手順を記載する。
【０１１５】
入力数字から復元される最終テキストとなる空列である変数から開始する。（記号“ “” ”は、Ｃ言語で使用されるものであり、空列を意味する。）
【０１１６】
s=“”
【０１１７】
入力数字は３０７９２３１８９９２８６９２２１である。
【０１１８】
ｎ＝３０７９２３１８９９２８６９２２１
【０１１９】
ここで、この数字が実際のテキストメッセージを参照することから、ｎが空となるまでループを実行する。つまり、ｎがゼロになったときにループが止まる。各ループ反復において、最後から最初まで復元を行い、各ＡＳＣＩＩ１０進コードは、復元しているテキストに対応する。このために、値０ｘＦＦ（１６進数形式もしくは１６進数である２５６−１）を用いてビット単位のＡＮＤ演算を行う。コードを文字記号に変換し、現在の列に繋ぎ、常に最も最近の復元された文字を列の前に置く。最後に、８ビットの右シフトを行うことにより、ｎの値を更新する。
【０１２０】
関数「get_char」は、ＡＳＣＩＩ１０進コードを文字記号に変換する。
【０１２１】
手順は以下の通りである。
【０１２２】
while n > 0
s = get_char(n AND 0xFF) + s
【０１２３】
各反復の詳細は以下の通りである。
【０１２４】
s = “”
n = 30792318992869221
while n > 0
s = get_char(n AND 0xFF) + s
【０１２５】
2019528028.tif 000037
【０１２６】
このため、数字３０７９２３１８９９２８６９２２１は、テキスト列「ｍｅｓｓａｇｅ」に変換され、当初の平文と一致する。
【０１２７】
３）マルチベクトルデータ構造
【０１２８】
本明細書中で説明される例示的な実施形態について、任意の１０進数の数字がマルチベクトル要素の係数であり得る。マルチベクトルは、無作為データ、または一連の演算の結果であるデータを含み得る。１０進数は、マルチベクトルにおける係数にこの数列の部分を分配することによってマルチベクトルの形態でも表され得る。２Ｄであるマルチベクトルは、この数列の部分とともにパッキングに利用可能な４つの要素／係数を有し、３Ｄマルチベクトルは８つの要素、４Ｄは１６の要素を有する。ＥＤＣＥは、７Ｄまでで表現される。１６の要素を有する４Ｄマルチベクトルは、以下の通り記載される。
【０１２９】
2019528028.tif 000038
【０１３０】
４）数字からマルチベクトル
【０１３１】
１０進数列が３０７９２３１８９９２８６９２２１とする場合、この列は、以下の通り、２Ｄマルチベクトルの単一の係数であり得る。
【０１３２】
2019528028.tif 000039
【０１３３】
ＥＤＣＥは、マルチベクトルの要素へ分配される数列が４，０００桁を超えるものが示された。しかし、この例における１０進数は、以下のように、すべてのマルチベクトルにわたって典型的にその場限りで「分配」される。
【０１３４】
2019528028.tif 000040
【０１３５】
上記の分配は、「数字からマルチベクトル」と呼ばれる。ＥＤＣＥ実施形態について、数列を分配する方法は、方法が送信主体および受信主体の両方に認識されて使用されるのであれば、様々なアルゴリズムのうちの任意のものに基づき得る。暗号の「撹乱」を増加させるために、分配アルゴリズムは、要素への割当のシャッフリング、要素に割り当てられた数字に対する関数演算の実行、または会話におけるメッセージ間でのアルゴリズムの変更を含み得る。さらなる演算により、暗号化エントロピーが増加する。
【０１３６】
再び、様々な実施形態について、「ペイロード」は、マルチベクトル要素のスカラおよび係数の値においてパッキングされ得る。ＥＤＣＥシステムが適切に動作することを確実にするために、マルチベクトルに選択された係数値に制限を設ける必要がある。例えば、すべてのマルチベクトル係数が等しい場合、マルチベクトルに対する有理化演算の結果はゼロとなる。すべて等しい係数を有するこのようなマルチベクトルは逆元を有さず、すべて等しい係数を有するこのようなマルチベクトルの幾何積は逆元を有さない。以下でより詳細に説明するように、ＥＤＣＥシステムのための暗号化方法は、暗号化されている暗号原文マルチベクトルの逆元およびセキュリティ鍵のマルチベクトルの逆元を利用して復号化を行う。このため、復号化されている暗号原文マルチベクトルはすべて等しい値の係数を有するべきではない。復号化されている暗号原文マルチベクトルがすべて等しい値の係数を有さないことを確実にするための１つの手段は、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時に、パッキング／係数分配方法によって、すべての係数が互いに等しいわけではない（すなわち、少なくとも１つの係数が他の係数とは異なっている）ことを確実にすることである。データメッセージを単に転送するＥＤＣＥの実施形態については、共有セキュリティマルチベクトルおよびデータメッセージマルチベクトルの作成時にすべての係数が互いに等しいわけではないことを確実にすることにより、復号化される暗号原文マルチベクトルがすべて同等の係数を有さないことが確実となる。
【０１３７】
加えて、共有秘密（以下で定義する）、認証情報、およびタイムスタンプ等の多くの目的のために、別個のマルチベクトルがコード化され得る。メッセージの暗号化および復号化に加えて、ＥＤＣＥ実施形態のＥＤＣＥマルチベクトル形式および幾何代数の基礎により、単に暗号原文のみならず暗号化セキュリティを向上させるためのダミーデータ、追加の演算のためのコマンド指示、および／または追加の演算のための構成データを含むような単一伝送が可能になり得る。
【０１３８】
2019528028.tif 000041
【０１３９】
2019528028.tif 000042
【０１４０】
2019528028.tif 000043
【０１４１】
そして、当初の１０進数およびそのサイズ（１７）、マルチベクトル構造（２Ｄ、８つの要素）、および各要素の長さ（５）を得た。新しいマルチベクトルの係数として各部分を分配するために、１０進数を「スライス」する必要がある。
【０１４２】
演算上、手順は以下の通りである。
【０１４３】
2019528028.tif 000044
【０１４４】
これにより、以下のマルチベクトルが作成される。
【０１４５】
2019528028.tif 000045
【０１４６】
第１の代替的な「数字からマルチベクトル」分配方法
【０１４７】
エントロピーを増加させるために、数字からマルチベクトルへの変換は、１０進数表現の桁をシャッフルする中間ステップを含み得る。
【０１４８】
上記のように、１０進数＝３０７９２３１８９９２８６９２２１とする。この数字が奇数の桁（１７）であるが、以下の通りに２つの数字列に分けることができる。
【０１４９】
2019528028.tif 000046
【０１５０】
2019528028.tif 000047
【０１５１】
2019528028.tif 000048
【０１５２】
2019528028.tif 000049
【０１５３】
2019528028.tif 000050
【０１５４】
2019528028.tif 000051
【０１５５】
2019528028.tif 000052
【０１５６】
2019528028.tif 000053
【０１５７】
上記のマルチベクトルから当初の数字を復元する手順は以下の通りである。
【０１５８】
現在のマルチベクトルが２Ｄであることから、数字列を２段階で復元する。ステップの数は、数字列の数に等しい。数字列を復元するために、二値演算子である論理積（ＡＮＤ）および右シフト（＞＞）を用いて以下の式を適用する。
【０１５９】
2019528028.tif 000054
【０１６０】
2019528028.tif 000055
【０１６１】
2019528028.tif 000056
【０１６２】
第２代替的な「数字からマルチベクトル」分配方法
【０１６３】
マルチベクトルの係数をパッキングするための他の関係は、平文数値メッセージのマルチベクトル表現の係数が平文数値メッセージの値と平文数値メッセージのマルチベクトル表現の係数の値のうちの少なくとも１つとの数学的データ組織化に従うことを確実にすることであり、ここでマルチベクトル係数の１つ以上の値を組み込む数学的演算は、当初の平文数値メッセージの値に等しい結果を有する。数学的関係は、マルチベクトル係数の少なくとも１つの係数の加算、マルチベクトル係数の少なくとも１つの係数の減算、一定値の加算、一定値の減算、マルチベクトル係数の少なくとも１つの係数と一定値の乗算、マルチベクトル係数の少なくとも１つの係数と一定値との除算を含む。マルチベクトル表現における係数の特定の箇所に対する様々な数学的演算の箇所は、マルチベクトルに変換されたすべての送信元数値データメッセージ、および特定の暗号化／復号化経路における結果としての数値データ値へ変換されたマルチベクトルに対して一貫して適用されるべきである。例えば、加算および減算の演算の両方を含む数学的、およびマルチベクトル表現に８つの可能な係数を有する３次元マルチベクトル（例えば、各係数に感付けられた単位ベクトルに対応するように番号が振られたｃ0、ｃ1、ｃ2、ｃ3、ｃ12、ｃ13、ｃ23、およびｃ123）については、ｅ2およびｅ12単位ベクトルの係数（すなわち、ｃ2およびｃ12）が送信元数値データメッセージをマルチベクトルに変換する数学的関係の演算において減算される場合、送信先数値メッセージは、同じ数学的関係でマルチベクトルから数字の変換を行う時に、ｃ2およびｃ12係数が減算されたものと扱うべきである。実際、数学的関係を用いて「パッキングされる」数値データメッセージマルチベクトルの係数から数値を取得することは、比較的単純かつ明確である。数値データメッセージ値を取得するために、数学的関係式に関連付けられたマルチベクトル係数の値を用いて、数値データメッセージマルチベクトルについての数学的関係式が単に実行される。係数の数学的関係における加算および減算の箇所以外では、暗号化されている当初の数値に数学的関係が等しくなるように、ユーザが望んだ場合には係数の実際の値が選択され得る。当業者は、上述の基準／制限が満たされ、上述の基準／制限が実際に満たされるように満足なＥＤＣＥ実施形態をこれらの方法によって実現される係数値を選択する方法は多くあり、およそ無限にあるということを認識するであろう。
【０１６４】
特殊なケースの扱い
【０１６５】
分配の方法に関わらず、いかなる係数においても最初の桁は非ゼロとしなければならない。例えば、マルチベクトルへ変換される数字は、３０７９２３１８９９０８６９２２１とする。上に示す分配方法を適用すると、以下のとおりとなる。
【０１６６】
2019528028.tif 000057
【０１６７】
2019528028.tif 000058
【０１６８】
2019528028.tif 000059
【０１６９】
2019528028.tif 000060
【０１７０】
以下のＥＤＣＥ実施形態の例において使用される分配方法は、以下の通りである。
【０１７１】
１０進数の列表現をパースして係数値を取得するための、上に開示の分配（すなわち、「パッキング」）方法について、マルチベクトルの１０進数への変換は、１０進数を形成するためにマルチベクトルの係数を繋ぐ処理と単に逆の処理である。
【０１７２】
例えば、以下の通りである。
【０１７３】
2019528028.tif 000061
【０１７４】
2019528028.tif 000062
【０１７５】
Ｂ．共有秘密
【０１７６】
Ａ．「共有秘密」は、暗号における基本的な要素である。共有秘密により、２つ以上の主体間で安全な通信が可能となる。様々な実施形態について、共有秘密は、上記の方法でマルチベクトルにパッキングされ得る桁の数列である。「共有秘密マルチベクトル」は、共有秘密マルチベクトルとメッセージマルチベクトルとの幾何積を作成するなど、他のマルチベクトルに対して演算を行うために使用され得る。
【０１７７】
送信元と送信先との間の共有秘密を確立するための様々な方法が既に実施されている。本明細書中に開示されるように、「共有秘密」数字から「共有秘密マルチベクトル」への変換は完全に新規である。通信拠点装置は、システム管理者のみに認識される固有の識別子（数列）を用いて「事前調整」され得る。ＲＳＡ等の公開／秘密鍵環境において、共有秘密は、送信先の公開鍵のみを用いて送信元によって暗号化され得る。この例において使用される以下の方法は、ディフィー・ヘルマン鍵交換プロトコルである。これは、数列共有秘密を確立するための、便利かつ広く採用されている方法である。しかし、様々な実施形態との使用には、安全に共有数列を作成する任意の方法が適している。
【０１７８】
ディフィー・ヘルマンプロトコルは、整数剰余ｐの乗法群を使用し（例えば、https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n参照）、ｐは素数であり（例えば、https://en.wikipedia.org/wiki/Prime_number参照）、ｇは原始関数根剰余ｐである（例えば、https://en.wikipedia.org/wiki/Primitive_root_modulo_nおよびhttps://en.wikipedia.org/wiki/Modular_arithmetic参照）。これら２つの値は、得られた共有秘密が１からｐ−１の値を確実にとるように、この方法により選択される。ディフィー・ヘルマンの単純な例は、以下の通りである。
【０１７９】
・アリスとボブは、同じ根剰余ｐおよび基本数ｇを用いることに最初に同意する。
【０１８０】
2019528028.tif 000063
【０１８１】
2019528028.tif 000064
【０１８２】
2019528028.tif 000065
【０１８３】
・アリスとボブによって演算された鍵は同じである。これが共有秘密である。
【０１８４】
なお、ディフィー・ヘルマンプロトコルは、２つのみの参加者による鍵共有の交渉に限定されない。任意の数のユーザが、プロトコルの反復および中間データの交換を行うことによってこの同意に参加することができる。
【０１８５】
数字例
【０１８６】
以下を想定する。
【０１８７】
2019528028.tif 000066
【０１８８】
2019528028.tif 000067
【０１８９】
2019528028.tif 000068
【０１９０】
2019528028.tif 000069
【０１９１】
2019528028.tif 000070
【０１９２】
上記の共有秘密数列は、上記のように分配され、共有秘密マルチベクトルが作成され得る。
【０１９３】
2019528028.tif 000071
【０１９４】
2019528028.tif 000072
【０１９５】
Ｃ．暗号原文作成
【０１９６】
暗号原文は、メッセージマルチベクトルと１つ以上の他のマルチベクトルとの幾何積であるＥＤＣＥ原始関数を用いて作成される。最も基本的な形態において、暗号原文マルチベクトルは、メッセージマルチベクトルと共有秘密マルチベクトルとの幾何積であり得る。
【０１９７】
手順は、以下の通りに規定される。平文メッセージが「this is a test」とする。「テキストから数字」変換を適用することにより、平文メッセージを以下の数字として得る。
【０１９８】
２３６１０３１８７８０３０６３８６８８５１９０５４６９９０９８９９６
【０１９９】
２Ｄマルチベクトル構造を用いる「数字からマルチベクトル」変換を適用することにより、平文マルチベクトルは以下の通りとなる。
【０２００】
2019528028.tif 000073
【０２０１】
上で定められた共有秘密マルチベクトルを用いて、以下を得る。
【０２０２】
2019528028.tif 000074
【０２０３】
暗号原文マルチベクトルは、以下の幾何積として定義され得る。
【０２０４】
2019528028.tif 000075
【０２０５】
2019528028.tif 000076
【０２０６】
2019528028.tif 000077
【０２０７】
2019528028.tif 000078
【０２０８】
2019528028.tif 000079
【０２０９】
2019528028.tif 000080
【０２１０】
2019528028.tif 000081
【０２１１】
Ｄ．復号化
【０２１２】
2019528028.tif 000082
【０２１３】
2019528028.tif 000083
【０２１４】
2019528028.tif 000084
【０２１５】
2019528028.tif 000085
【０２１６】
2019528028.tif 000086
【０２１７】
2019528028.tif 000087
【０２１８】
従って、以下が得られる。
【０２１９】
2019528028.tif 000088
【０２２０】
2019528028.tif 000089
【０２２１】
2019528028.tif 000090
【０２２２】
最後に、この数字は、上記の「数字からテキスト」手順を用いてテキストに変換され、以下が得られる。
【０２２３】
2019528028.tif 000091
【０２２４】
Ｅ．ＥＤＣＥフローチャート（図５〜図６）
【０２２５】
図５は、幾何積「ｓａｎｄｗｉｃｈ」を用いることによって行われる高度データ中心型暗号化（ＥＤＣＥ）暗号化／復号化についての実施形態に係るフローチャート５００である。
【０２２６】
設定（５０２）：署名および共有秘密マルチベクトルを確立することにより、数字列が開始される。ここで、ディフィー・ヘルマン手順５０８が示されるが、ＲＳＡ等の他の非対称鍵暗号を使用して、送信元５０４および送信先５０６のみに認識される数列を生成してもよい。代替的に、拠点装置は、セッションマルチベクトルが構築され得る、システム管理者のみに認識される秘密（数列）を用いて「事前調整」され得る。ディフィー・ヘルマン手順５０８により、共有秘密鍵５１０が設定／作成され、そして、設定５０２により、マルチベクトル設定５１２においてディフィー・ヘルマン鍵５１０のマルチベクトルが作成される。
【０２２７】
送信元（５０４）：メッセージＡＳＣＩＩコード列を数列に繋ぎ、その数字を５１４においてメッセージマルチベクトルの係数に分配することにより、メッセージマルチベクトル５１６がメッセージ作成演算５１６において構築される。係数への分配の方法では、送信元５０４および送信先５０６の両方に認識されて使用される所定のアルゴリズムが使用される。
【０２２８】
2019528028.tif 000092
【０２２９】
2019528028.tif 000093
【０２３０】
図６は、シルベスター方程式を用いたＥＤＣＥ暗号化／復号化についての実施形態のフローチャート６００である。
【０２３１】
設定（６０２）：数字列は、署名および共有秘密マルチベクトルを確立することによって開始される。ここで、ディフィー・ヘルマン手順６０８が示されるが、ＲＳＡ等の他の非対称鍵暗号を使用して、送信元６０４および送信先６０６のみによって認識される数列を生成しても良い。代替的に、代替的に、拠点装置は、セッションマルチベクトルが構築され得る、システム管理者のみに認識される秘密（数列）を用いて「事前調整」され得る。ディフィー・ヘルマン手順６０８により、共有秘密鍵６１０が設定／作成され、そして、設定６０２により、マルチベクトル設定６１２においてディフィー・ヘルマン鍵のマルチベクトル６１２が作成される。
【０２３２】
送信元（６０４）：メッセージＡＳＣＩＩコード列を数列に繋ぎ、その数字を６１４においてメッセージマルチベクトルの係数に分配することにより、メッセージマルチベクトル６１６がメッセージ作成演算６１４において構築される。係数への分配方法では、送信元６０４および送信先６０６の両方に認識されて使用される所定のアルゴリズムが使用される。
【０２３３】
2019528028.tif 000094
【０２３４】
2019528028.tif 000095
【０２３５】
Ｆ．０ブレード換算演算からの対称鍵ペア暗号化／復号化（図７）
【０２３６】
０ブレード換算演算
【０２３７】
2019528028.tif 000096
【０２３８】
2019528028.tif 000097
【０２３９】
2019528028.tif 000098
【０２４０】
2019528028.tif 000099
【０２４１】
2019528028.tif 000100
【０２４２】
2019528028.tif 000101
【０２４３】
幾何代数暗号化原始関数
【０２４４】
原始関数１−「Ｓａｎｄｗｉｃｈ」／三重積
【０２４５】
暗号化
【０２４６】
第１暗号化原始関数は、以下のように、０ブレード換算演算（本明細書中において、上で説明した）によって生成された鍵のペアを用いた幾何積の数字列を通じて作成することができる。
【０２４７】
2019528028.tif 000102
【０２４８】
復号化
【０２４９】
復号化処理では、以下のように、事前に定義された逆元マルチベクトルが使用される。
【０２５０】
2019528028.tif 000103
【０２５１】
原始関数２−マルチベクトルベースのシルベスター方程式
【０２５２】
暗号化
【０２５３】
ここで、周知のシルベスター方程式が採用され、第２暗号化原始関数が生成される。ここでも、０ブレード換算演算によって、対称暗号化鍵のペアが以下のように生成される（本明細書中において、上で説明した）。
【０２５４】
2019528028.tif 000104
【０２５５】
復号化
【０２５６】
復号化演算には、以下のように、３次元マルチベクトルについてのシルベスター方程式の閉解が伴う。
【０２５７】
2019528028.tif 000105
【０２５８】
2019528028.tif 000106
【０２５９】
３次元における二重共有秘密を用いた暗号化および復号化の数値例
【０２６０】
2019528028.tif 000107
【０２６１】
2019528028.tif 000108
【０２６２】
2019528028.tif 000109
【０２６３】
2019528028.tif 000110
【０２６４】
2019528028.tif 000111
【０２６５】
2019528028.tif 000112
【０２６６】
2019528028.tif 000113
【０２６７】
2019528028.tif 000114
【０２６８】
幾何積「ｓａｎｄｗｉｃｈ」または幾何三重積
【０２６９】
2019528028.tif 000115
【０２７０】
2019528028.tif 000116
【０２７１】
2019528028.tif 000117
【０２７２】
2019528028.tif 000118
【０２７３】
マルチベクトルベースのシルベスター方程式
【０２７４】
2019528028.tif 000119
【０２７５】
2019528028.tif 000120
【０２７６】
2019528028.tif 000121
【０２７７】
2019528028.tif 000122
【０２７８】
Ｇ．幾何代数および算術関数を用いた解読不能原始関数
【０２７９】
秘密共有および３Ｄマルチベクトルの例
【０２８０】
設定
【０２８１】
マルチベクトルは、多次元およびクリフォードｋベクトルの成分が得られるような幾何代数として機能し得る。例えば、以下の通りである。
【０２８２】
2019528028.tif 000123
【０２８３】
ここで、以下の成分が示される。
【０２８４】
2019528028.tif 000124
【０２８５】
2019528028.tif 000125
【０２８６】
2019528028.tif 000126
【０２８７】
2019528028.tif 000127
【０２８８】
解読不能原始関数
【０２８９】
2019528028.tif 000128
【０２９０】
2019528028.tif 000129
【０２９１】
2019528028.tif 000130
【０２９２】
2019528028.tif 000131
【０２９３】
なお、他のマルチベクトルのバリエーションも可能である。
【０２９４】
2019528028.tif 000132
【０２９５】
2019528028.tif 000133
【０２９６】
2019528028.tif 000134
【０２９７】
2019528028.tif 000135
【０２９８】
2019528028.tif 000136
【０２９９】
2019528028.tif 000137
【０３００】
2019528028.tif 000138
【０３０１】
2019528028.tif 000139
【０３０２】
2019528028.tif 000140
【０３０３】
ここまでで、暗号化は、既知の暗号原文攻撃のペアを受けやすかった。しかし、以下で部分的に示すように、最終的な解読不能性が実現された。
【０３０４】
解読不能暗号を用いた暗号化原始関数
【０３０５】
原始関数１−「Ｓａｎｄｗｉｃｈ」／三重積
【０３０６】
暗号化
【０３０７】
第１暗号化原始関数は、以下のように、０ブレード換算演算（上に記載）によって生成された鍵のペアを用いる幾何積の数字列によって作成され得る。
【０３０８】
2019528028.tif 000141
【０３０９】
2019528028.tif 000142
【０３１０】
2019528028.tif 000143
【０３１１】
2019528028.tif 000144
【０３１２】
2019528028.tif 000145
【０３１３】
2019528028.tif 000146
【０３１４】
2019528028.tif 000147
【０３１５】
2019528028.tif 000148
【０３１６】
復号化
【０３１７】
復号化処理は、以下のステップを含み得る。
【０３１８】
2019528028.tif 000149
【０３１９】
2019528028.tif 000150
【０３２０】
2019528028.tif 000151
【０３２１】
2019528028.tif 000152
【０３２２】
2019528028.tif 000153
【０３２３】
2019528028.tif 000154
【０３２４】
2019528028.tif 000155
【０３２５】
原始関数２−マルチベクトルベースのシルベスター方程式
【０３２６】
暗号化
【０３２７】
ここでは、以下のように、０ブレード換算演算（上で説明）によって生成された対称共有秘密鍵のペアを用いる第２暗号化原子関数を生成するためにマルチベクトルベースのシルベスター方程式採用がされ得る。
【０３２８】
2019528028.tif 000156
【０３２９】
「ｓａｎｄｗｉｃｈ」／三重積を用いる暗号化原子関数について上で行ったように、ＸＯＲマスキングのために上記の同じ処理を使用することによってセキュリティの他の層を追加することが好ましい。
【０３３０】
2019528028.tif 000157
【０３３１】
復号化ｉｏｎ
【０３３２】
復号化演算には、３次元マルチベクトル空間についてのマルチベクトルベースのシルベスター方程式の閉解を伴い、ＸＯＲは、上記の「ｓａｎｄｗｉｃｈ」／三重積について「アンマスク」する。処理の概要は、以下の通りである。
【０３３３】
2019528028.tif 000158
【０３３４】
2019528028.tif 000159
【０３３５】
2019528028.tif 000160
【０３３６】
2019528028.tif 000161
【０３３７】
2019528028.tif 000162
【０３３８】
メッセージマルチベクトルは、マルチベクトルベースのシルベスター方程式についての以下の閉解を用いて復元される。
【０３３９】
2019528028.tif 000163
【０３４０】
2019528028.tif 000164
【０３４１】
付録Ａ：幾何代数の概要
【０３４２】
2019528028.tif 000165
【０３４３】
2019528028.tif 000166
【０３４４】
2019528028.tif 000167
【０３４５】
単純な二次元ベクトルのペアは以下の通りである。
【０３４６】
2019528028.tif 000168
【０３４７】
2019528028.tif 000169
【０３４８】
2019528028.tif 000170
【０３４９】
2019528028.tif 000171
【０３５０】
2019528028.tif 000172
【０３５１】
結果として、以下となる。
【０３５２】
2019528028.tif 000173
【０３５３】
2019528028.tif 000174
【０３５４】
例えば、以下とする。
【０３５５】
2019528028.tif 000175
【０３５６】
2019528028.tif 000176
【０３５７】
2019528028.tif 000177
【０３５８】
マルチベクトル間の幾何積を演算する他の方法では、上で示したドット積およびウェッジ積の規則が組み合わされ、一般的な幾何積を拡大して、以下の規則が定義される。
【０３５９】
2019528028.tif 000178
【０３６０】
2019528028.tif 000179
【０３６１】
2019528028.tif 000180
【０３６２】
マルチベクトルおよびブレードの定義
【０３６３】
マルチベクトルを形成するオブジェクト（もしくは要素）を記載する他の方法は、「ブレード」もしくは「ｋブレード」の定義を使用することである。この取り決めにおいて、例えば、ｋ＝０ではスカラを得て、ｋ＝１ではベクトルを得て、ｋ＝２では二重ベクトルを得る。
【０３６４】
マルチベクトルは、以下によって形成される。
【０３６５】
2019528028.tif 000181
【０３６６】
ｎは、マルチベクトルの次元である。
【０３６７】
上記の例において示されたように、２つの１ブレードマルチベクトルの幾何積により、０ブレードに２ブレードマルチベクトルを加えたものが得られる。
【０３６８】
2019528028.tif 000182
【０３６９】
2019528028.tif 000183
【０３７０】
2019528028.tif 000184
【０３７１】
上記の特定の例において、以下が得られる。
【０３７２】
2019528028.tif 000185
【０３７３】
2019528028.tif 000186
【０３７４】
マルチベクトル演算
【０３７５】
実施形態は、一部が幾何代数マルチベクトル演算の固有の特徴に依存している。演算における鍵は、以下の通りである。
【０３７６】
2019528028.tif 000187
【０３７７】
2019528028.tif 000188
【０３７８】
2019528028.tif 000189
【０３７９】
2019528028.tif 000190
【０３８０】
2019528028.tif 000191
【０３８１】
2019528028.tif 000192
【０３８２】
2019528028.tif 000193
【０３８３】
2019528028.tif 000194
【０３８４】
2019528028.tif 000195
【０３８５】
2019528028.tif 000196
【０３８６】
2019528028.tif 000197
【０３８７】
2019528028.tif 000198
【０３８８】
2019528028.tif 000199
【０３８９】
2019528028.tif 000200
【０３９０】
2019528028.tif 000201
【０３９１】
2019528028.tif 000202
【０３９２】
従って、以下となる。
【０３９３】
2019528028.tif 000203
【０３９４】
２ブレードもしくは３ブレードのマルチベクトルの振幅は、以下のとおり演算される。
【０３９５】
2019528028.tif 000204
【０３９６】
例えば、２ブレードのマルチベクトルについて考える。
【０３９７】
2019528028.tif 000205
【０３９８】
2019528028.tif 000206
【０３９９】
2019528028.tif 000207
【０４００】
2019528028.tif 000208
【０４０１】
2019528028.tif 000209
【０４０２】
このため、以下が得られる。
【０４０３】
2019528028.tif 000210
【０４０４】
マルチベクトル転置は、以下の通り規定される。
【０４０５】
2019528028.tif 000211
【０４０６】
これにより、以下が得られる。
【０４０７】
2019528028.tif 000212
【０４０８】
2019528028.tif 000213
【０４０９】
2019528028.tif 000214
【０４１０】
このため、以下が得られる。
【０４１１】
2019528028.tif 000215
【０４１２】
2019528028.tif 000216
【０４１３】
マルチベクトルが１ブレードの下位代数となるような特殊なケースにおいて、逆元は、以下の関係による逆転を用いても演算され得る。
【０４１４】
2019528028.tif 000217
【０４１５】
例えば、以下のマルチベクトルについて考える。
【０４１６】
2019528028.tif 000218
【０４１７】
この場合の逆転は、以下の通りである。
【０４１８】
2019528028.tif 000219
【０４１９】
これは、当初のマルチベクトルと同一である。その逆元を演算すると、以下の通りとなる。
【０４２０】
2019528028.tif 000220
【０４２１】
これは、以下の理由による。
【０４２２】
2019528028.tif 000221
【０４２３】
2019528028.tif 000222
【０４２４】
2019528028.tif 000223
【０４２５】
2019528028.tif 000224
【０４２６】
2019528028.tif 000225
【０４２７】
この一般式の例として、以下がある。
【０４２８】
2019528028.tif 000226
【０４２９】
このクリフォード結合は、以下により得られる。
【０４３０】
2019528028.tif 000227
【０４３１】
2019528028.tif 000228
【０４３２】
2019528028.tif 000229
【０４３３】
クリフォード結合によって規定される当初の逆元式を用いて、以下が得られる。
【０４３４】
2019528028.tif 000230
【０４３５】
2019528028.tif 000231
【０４３６】
2019528028.tif 000232
【０４３７】
マルチベクトル逆元の使用は、様々な実施形態において重要である。逆元を演算するために使用される幾何代数におけるアルゴリズムは、マルチベクトルの空間次元ｎによって異なる。この幾何代数の概要は、余すところなく記載することを意図しておらず、単に本明細書において示される実施形態の特徴および例についての説明に充分とすることを意図したものである。より余すところのない詳述については、「参考文献１」を参考にされたい。
【０４３８】
署名、封止、送達メッセージにおけるシルベスター方程式の使用
【０４３９】
暗号原文の「署名および封止」の方法においては、シルベスター方程式「参考文献２」と呼ばれる数学の分野における周知の行列方程式を用いる。
【０４４０】
2019528028.tif 000233
【０４４１】
2019528028.tif 000234
【０４４２】
2019528028.tif 000235
【０４４３】
これは、以下の形態のマルチベクトルに対する線形関数を規定した場合に得られる。
【０４４４】
2019528028.tif 000236
【０４４５】
ここで、シルベスター方程式の要素は、以下の通りに定義される。
【０４４６】
2019528028.tif 000237
【０４４７】
2019528028.tif 000238
【０４４８】
2019528028.tif 000239
【０４４９】
2019528028.tif 000240
【０４５０】
「参考文献２」における四次元数もしくは行列を用いた結果に類似の解は、以下のように「参考文献１」に記載されている。
【０４５１】
2019528028.tif 000241
【０４５２】
そして、復号化処理の前に暗号原文をアンパックするために送信先によって使用される。
【０４５３】
［参考文献１］「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}
【０４５４】
［参考文献２］Janovska D, Opfer G (2008) Linear equations in quaternionic variables. Mitt Math Ges Hamburg 27: 223-234
【０４５５】
本発明についての上記の説明は、例示および説明を目的としたものである。本発明を余すところなく伝えることや開示された形態に正確に限定することは意図していない。また、上記の教示を元に他の変形や変更を行うことは可能である。実施形態は、本発明の減速およびその実施につい対して最良となるように選択および記載されたものであり、考えられる特定の使用に適するように様々な実施形態および様々な変形例で本発明を他の当業者が実施できるものである。添付の本発明に関する先生は、先行技術によって限定されない範囲で本発明の他の代替的な実施形態を含むものと解釈されることを意図している。
【図１】
2019528028.tif 000285
【図２】
2019528028.tif 000286
【図３Ａ】
2019528028.tif 000287
【図３Ｂ】
2019528028.tif 000288
【図４Ａ】
2019528028.tif 000289
【図４Ｂ】
2019528028.tif 000290
【図５】
2019528028.tif 000291
【図６】
2019528028.tif 000292
【図７】
2019528028.tif 000293
【国際調査報告】
2019528028.tif 000294