IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ バッフル インコーポレイテッドの特許一覧

特表2022-531593AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法
<>
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図1
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図2
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図3
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図4
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図5
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図6
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図7
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図8
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図9
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図10
  • 特表-AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-07
(54)【発明の名称】AESカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法
(51)【国際特許分類】
   G09C 1/00 20060101AFI20220630BHJP
   H04L 9/20 20060101ALI20220630BHJP
【FI】
G09C1/00 650Z
H04L9/20
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021564919
(86)(22)【出願日】2020-05-01
(85)【翻訳文提出日】2021-12-24
(86)【国際出願番号】 US2020031156
(87)【国際公開番号】W WO2020223691
(87)【国際公開日】2020-11-05
(31)【優先権主張番号】16/401,085
(32)【優先日】2019-05-01
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】521477156
【氏名又は名称】バッフル インコーポレイテッド
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【弁理士】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100170209
【弁理士】
【氏名又は名称】林 陽和
(72)【発明者】
【氏名】コルテ プリヤダーシャン
(72)【発明者】
【氏名】ジャクソン スペンス
(72)【発明者】
【氏名】シャンムガヴェラユサム パラニヴェル ラジャン
(72)【発明者】
【氏名】ベラレ ミヒール
(57)【要約】
パブリッククラウドにおけるプライベート計算に対処し、暗号化データの演算を実行する能力を提供する暗号化システムおよび方法が提供される。
【選択図】図1
【特許請求の範囲】
【請求項1】
サーバによって受信される第1の暗号データ項目および第2の暗号データ項目を生成するために、Q群暗号化を使用して、クライアントからの第1の平文データ項目および第2の平文データ項目を暗号化することと、
前記暗号化されたデータに対して演算を実行するための前記第1および第2の暗号データ項目に対する演算要求を前記クライアントから前記サーバで受信することと、
前記サーバに返される暗号化結果を生成するために、前記サーバに接続されたセキュアマルチパーティ計算(SMPC)クラスタを使用して、前記第1および第2の暗号データ項目に対して演算を実行することと、
Q群復号化を使用して前記暗号化結果を復号することを含む、平文の結果を前記クライアントに戻すことと、
を含む、方法。
【請求項2】
前記暗号化されたデータに対する演算は、暗号化加算演算および暗号化未満演算のうちの1つをさらに含む、
請求項1に記載の方法。
【請求項3】
前記第1および第2の平文データ項目を暗号化することは、擬似ランダムパッドおよび前記平文データの一部によるQ群加算演算を使用して第1のデータ項目および第2のデータ項目の各々についての暗号データを生成することをさらに含む、
請求項1に記載の方法。
【請求項4】
前記第1および第2の平文データ部分を暗号化することは、擬似ランダム関数、ノンス、および前記平文データの長さを使用して、各平文データ部分について前記擬似ランダムパッドを生成することをさらに含む、
請求項3に記載の方法。
【請求項5】
前記擬似ランダム関数は、暗号化法および暗号メッセージダイジェストの一方である、
請求項4に記載の方法。
【請求項6】
前記暗号化結果を復号することは、擬似ランダムパッドによるQ群Lsubを使用して前記暗号化結果に対する前記平文の結果を生成することをさらに含む、
請求項1に記載の方法。
【請求項7】
前記暗号化結果を復号することは、擬似ランダム関数、ノンスおよび前記暗号化結果の長さを使用して前記擬似ランダムパッドを生成することをさらに含む、
請求項6に記載の方法。
【請求項8】
前記擬似ランダム関数は、暗号化法および暗号メッセージダイジェストの一方である、
請求項7に記載の方法。
【請求項9】
前記第1および第2の平文データ項目を暗号化することは、擬似ランダムパッドおよび前記データ項目によるQ群加算を使用して前記第1および第2のデータ項目の各々について暗号データを生成することをさらに含み、前記暗号化結果を復号することは、擬似ランダムパッドによるQ群Lsubを使用して前記暗号化結果としての結果を生成することをさらに含む、
請求項1に記載の方法。
【請求項10】
前記暗号化されたデータに対する演算を実行することは、前記第1および第2の暗号データ項目に対して暗号化加算演算を実行することをさらに含む、
請求項9に記載の方法。
【請求項11】
前記暗号化加算演算を実行することは、第2のノンスおよび第2の擬似ランダムパッドを前記SMPCクラスタのコンピュータ上で生成することと、前記第1および第2の暗号データ項目、前記第2のノンスおよび前記第2の擬似ランダムパッドに基づく暗号化和を前記SMPCクラスタのコンピュータ上で計算することと、をさらに含む、
請求項10に記載の方法。
【請求項12】
前記暗号化されたデータに対する演算を実行することは、前記SMPCクラスタを使用して、前記第1および第2の暗号データ部分に対して暗号化未満演算を実行することをさらに含む、
請求項9に記載の方法。
【請求項13】
前記暗号化未満演算を実行することは、前記平文データの長さ未満のランダム整数を前記サーバで生成することと、前記ランダム整数に等しい値によりVを計算することと、Vの順序開示暗号化の値であるWを計算することと、をさらに含む、
請求項12に記載の方法。
【請求項14】
前記暗号化未満演算を実行することは、前記第1および第2の平文データ項目のノンスおよび前記ランダム整数に基づく未満結果を前記SMPCクラスタの第1のコンピュータ上で生成することと、第2の鍵および前記未満結果を使用して順序開示暗号化未満結果を計算することと、をさらに含む、
請求項13の記載の方法。
【請求項15】
前記暗号化未満演算を実行することは、Wに対するoreCompare演算および前記順序開示暗号化未満結果を前記SMPCクラスタの第2のコンピュータ上で計算することと、結果Lを前記サーバに送信することと、をさらに含む、
請求項14に記載の方法。
【請求項16】
サーバと、
前記サーバに接続し、暗号化されたデータの演算を前記サーバに発行することが可能なクライアントと、
前記クライアントと前記サーバとの間に接続されたQ群暗号化エンジンであって、前記サーバによって受信される第1の暗号データ項目および前記第2の暗号データ項目を生成するために、前記クライアントからの第1および第2の平文データ項目を暗号化するQ群暗号化エンジンと、
前記サーバに接続されたセキュアマルチパーティ計算(SMPC)クラスタであって、前記第1および第2の暗号データ項目を受信し、暗号化されたデータに対する演算に応じて暗号化結果を生成するセキュアマルチパーティ計算(SMPC)クラスタと、
を備え、
前記Q群暗号化エンジンは、結果を生成するために前記暗号化結果を復号し、前記サーバは、前記結果を前記クライアントに戻す、
システム。
【請求項17】
前記暗号化されたデータに対する演算は、暗号化加算演算および暗号化未満演算のうちの1つをさらに含む、
請求項16に記載のシステム。
【請求項18】
前記Q群暗号化エンジンは、擬似ランダムパッドおよび前記平文データ項目によるQ群加算を使用して前記第1のデータ項目および前記第2のデータ項目の各々について暗号データを生成する、
請求項16に記載のシステム。
【請求項19】
前記Q群暗号化エンジンは、各平文データ項目について、擬似ランダム関数、ノンスおよび前記平文データ項目の長さを使用して前記擬似ランダムパッドを生成する、
請求項18に記載のシステム。
【請求項20】
前記擬似ランダム関数は、暗号化法および暗号メッセージダイジェストの一方である、
請求項19に記載のシステム。
【請求項21】
前記Q群暗号化エンジンは、擬似ランダムパッドによるQ群Lsubを使用して前記暗号化結果から結果を生成する、
請求項16に記載のシステム。
【請求項22】
前記Q群暗号化エンジンは、擬似ランダム関数、ノンスおよび前記暗号化結果の長さを使用して前記擬似ランダムパッドを生成する、
請求項21に記載のシステム。
【請求項23】
前記擬似ランダム関数は、暗号化法および暗号メッセージダイジェストの一方である、
請求項22に記載のシステム。
【請求項24】
前記Q群暗号化エンジンは、擬似ランダムパッドおよび前記平文データ項目によるQ群加算を使用して前記第1のデータ項目および前記第2のデータ項目の各々についての暗号データを生成し、擬似ランダムパッドによるQ群Lsubを使用して前記暗号化結果から結果を生成する、
請求項16に記載のシステム。
【請求項25】
前記SMPCクラスタは、前記第1および第2の暗号データ項目に対して暗号化加算演算を実行する、
請求項24に記載のシステム。
【請求項26】
前記SMPCクラスタは、第2のノンスおよび第2の擬似ランダムパッドを前記SMPCクラスタのコンピュータ上で生成し、第1および第2の暗号データ項目、前記第2のノンスおよび前記第2の擬似ランダムパッドに基づく暗号化和を前記SMPCクラスタのコンピュータ上で計算する、
請求項25に記載のシステム。
【請求項27】
前記SMPCクラスタは、前記第1および第2の暗号データ項目に対して暗号化未満演算を実行する、
請求項24に記載のシステム。
【請求項28】
前記サーバは、前記平文データの長さ未満のランダム整数を生成し、前記ランダム整数に等しい値によりVを計算し、Vの順序開示暗号化の値であるWを計算する、
請求項27に記載のシステム。
【請求項29】
前記SMPCクラスタの第1のコンピュータは、前記第1および第2の平文データ項目のノンスおよび前記ランダム整数に基づく未満結果を生成し、第2の鍵および前記未満結果を使用して順序開示暗号化未満結果を計算する、
請求項28に記載のシステム。
【請求項30】
前記SMPCクラスタの第2のコンピュータは、Wに対するoreCompare演算および前記順序開示暗号化未満結果を計算し、結果Lを前記サーバに送信する、
請求項29に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に暗号化法に関し、具体的にはコンピュータデータ機密性のために使用される暗号化法に関する。
【背景技術】
【0002】
現行のNIST標準AESカウンタモード(CTR-XOR)の対称鍵暗号化スキームでデータが暗号化される場合、暗号化データに対して実行できる動作は復号だけである。詳細には、両方の暗号文を最初に復号することなく、2つの暗号化された整数を(未満(Less Than)について)加算または比較することはできない。標準CTR-XOR暗号化は、加算および未満演算などの暗号化データに対する有用な演算を妨げるので、データのセキュリティを提供しながらも暗号化データに対する有用な演算を可能にする暗号化技術を提供することが望まれる。
【0003】
上記の問題は、パブリッククラウドにおけるプライベート計算の概念において特に重大であるが、他のエリアにも存在する。今日でも、上記の問題に対して4つの解決策が存在し、各々が制限および/または欠点を有していた。現行の解決策は、
a.インテルソフトウェアガードエクステンションズ(SGX)などのセキュアハードウェアエクステンション。
b.マイクロソフト社のシンプル暗号化算術ライブラリ(SEAL)などの完全準同型暗号化(FHE)スキーム。
c.サイバーネティカ社のSharemindなどのセキュアマルチパーティ計算(SMPC)スキーム。
d.Q群(QGoup)は、アドホックストリーム暗号、非対称鍵暗号システム、およびメッセージダイジェストを生成するために暗号化法研究において以前から提案されてきた。
【0004】
SGXなどのハードウェアエクステンションの解決策は、優れた性能を有するが、これらは、インテル社の専用ハードウェアおよびソフトウェア認証インフラストラクチャの使用を必要とする。さらに、特にSGXは、機密性を損ねる可能性がある、Spectra、Meltdown、およびForeshadowなどのサイドチャネル攻撃に脆弱であり、そのため、新しいプロセッサに対して緩和技術が活発に開発されている。
【0005】
FHE技術は、優れたセキュリティが期待できるが、低速で実際的ではない。たとえば、従来のFHE実装では、ハードウェアにおけるAESのナノ秒に比べて、シングルAES暗号化演算を評価するのに数秒を要する。現在の研究では、これらの計算を高速化するための方法を探しているが、現在のところ上記の問題の商業的に実用可能な解決策を提供していない。
【0006】
既知のSMPC技術は、性能とセキュリティの間の良好なバランスを有する。しかしながら、Sharemindなどの現在の解決策は、これらがより厳しいセキュリティを保証するためのより複雑なプロトコルを使用する理由から遅すぎる。
【0007】
Q群を使用して構築されるアドホックストリーム暗号は高速であるが、これらは、大きなメッセージを暗号化するという異なる問題を解決する。Q群に基づく公開鍵暗号システムおよびメッセージダイジェストは、また異なる問題を目標にしており、上記で記載された問題は目標にしていない。
【0008】
従って、パブリッククラウドにおけるプライベート計算に対処し、暗号化データの演算を実行する能力を提供する暗号化システムおよび方法を提供することが望ましく、これを本開示の目的とする。
【図面の簡単な説明】
【0009】
図1】暗号化を実行し且つ暗号化データに関する演算を容易にするシステムの実施形態例を示す図である。
図2図1のシステムを使用して実行することができる暗号化プロセスを示す図である。
図3図1のシステムを使用して実行することができる暗号化演算プロセスを示す図である。
図4図1のシステムを使用して実行することができる復号プロセスを示す図である。
図5図2に示す暗号化プロセスの更なる詳細を示す図である。
図6図4に示す復号プロセスの更なる詳細を示す図である。
図7図1のシステムを使用して実行することができる暗号化加算プロセスの暗号化プロセスを示す図である。
図8図1のシステムを使用して実行することができる暗号化加算プロセスを示す図である。
図9】暗号化加算プロセスの復号プロセスを示す図である。
図10図1のシステムを使用して実行することができる暗号化未満プロセスの暗号化プロセスを示す図である。
図11図1のシステムを使用して実行することができる暗号化未満プロセスを示す図である。
【発明を実施するための形態】
【0010】
本開示は、パブリッククラウド内のデータに対する演算中にデータの機密性が維持されるようにプライベート計算をパブリッククラウドにアウトソーシングするシステムにとりわけ適用可能であり、この文脈で本開示を説明する。しかしながら、このシステムおよび方法は、セキュリティのための暗号化を提供する一方で暗号化データに対して演算が実行されることも可能にすることが望ましいあらゆるシステムのために/と共に使用できるので、非常に有用であると理解されるであろう。本システムおよび方法は、従来のCTR-XORのXor関数を準群(Q群として短縮する)演算に置き換えて、パブリッククラウドにおける機密性を維持するために復号なしで実行できる計算を可能にする。また、本システムおよび方法は、SMPCシステムを活用することができる。
【0011】
図1は、暗号化を実行し暗号化データに対する演算を促進するシステム100の実施形態例を示す。この実施形態例では、互いに通信するクライアント102およびサーバ104が示されているが、本システムは互いに通信する複数のクライアントおよび複数のサーバを使用して実施することができる。各クライアント102は、プロセッサ、メモリ、I/O装置、およびディスプレイを有するコンピュータ装置とすることができ、暗号化データに対して実行される加算演算または未満演算などの1または2以上の演算を要求している命令/コンピュータコードの複数のライン(アプリケーション、コードの一部、モバイルアプリケーションなど)を実行することができる。たとえば、各クライアント102のコンピュータ装置は、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、および端末などとすることができる。各サーバ104は、プロセッサ、メモリ、I/O装置およびディスプレイを有するコンピュータとすることができ、クライアントが要求した1または2以上の演算を管理して暗号化データに対する演算を容易化する命令/コンピュータコードの複数のライン(アプリケーション、コードの一部、モバイルアプリケーションなど)を実行することができる。たとえば、各サーバ104のコンピュータは、サーバコンピュータ、1または2以上のクラウドコンピューティングリソース、1または2以上の仮想コンピュータリソース、1または2以上のブレードサーバなどとすることができる。
【0012】
システム100は、各クライアントと各サーバの間に接続されて後述する暗号化および復号演算を管理するQ群暗号化/復号部106をさらに含むことができる。このQ群暗号化/復号部106は、少なくとも1つのプロセッサ、メモリ、I/O装置を有する1または2以上のコンピュータシステムとして実施することができ、後述するような各クライアント102とサーバ104との間の暗号化および復号演算を実行する命令/コンピュータコードの複数のライン(1または2以上のアプリケーション、コードの一部、モバイルアプリケーションなど)を実行することができる。
【0013】
本システムは、以下でさらに詳細に説明するような暗号化データに対する要求された演算の実行を支援する、サーバ104に接続された既知のセキュアマルチパーティ計算(SMPC)クラスタ108をさらに含むことができる。SMPCクラスタ108は、少なくとも1つのプロセッサ、メモリ、I/O装置を有する1または2以上のコンピュータシステムとして実施することができ、以下でさらに詳細に説明するような暗号化データに対する要求される演算の実行を支援する命令/コンピュータコードの複数のライン(1または2以上のアプリケーション、コードの一部、モバイルアプリケーションなど)を実行することができる。Q群暗号化/復号部106およびSMPCクラスタ108は、それぞれ互いに同じまたは異なるコンピュータ上に実装することができる。より詳細には、Q群暗号化部106は、クライアント102と同じシステムまたは別のシステム上に実装することができるが、サーバ104上で暗号化鍵が利用可能になるという理由で決してサーバ104と同じシステム上には実装されない。さらに、Q群暗号化/復号部106およびSMPCクラスタ108の各々は、サーバ104と同じまたは異なるコンピュータ上に実装することもできる。図1に示すように、Q群暗号化/復号部106およびSMPCクラスタ108の各々には、暗号化/復号および暗号化データに対する演算を実行するように時々暗号化鍵110を提供することができる。各クライアントは、暗号化データにおける1または2以上の演算112を生成することができ、サーバ104は、後述するようにこれらの演算の結果114をクライアントに戻す。
【0014】
図2は暗号化プロセス200を示し、図3は暗号化演算プロセス300を示し、図4図1のシステムを使用して実行することができる復号プロセス400を示す。これらのプロセスの各々は、図1に示されたシステム要素100-110の1または2以上を使用してプロセスを実行することができる。SMPCクラスタ108のプロトコルでは、クライアント102が平文データ項目(plain data items)を生成し、サーバ104が図2に示すように暗号データ項目(cipher data items)(暗号化データ(encrypted data))を格納する。たとえば図1のシステムを用いた暗号化データに対して演算を実行する全体的演算は、3つのフェーズ、暗号化200、暗号化演算300、および復号400を含むことができる。
【0015】
第1のフェーズ200は、秘密鍵(暗号化スキームを使用して事前に生成されたか、またはQ群暗号化スキームなどの暗号化スキームを使用して暗号化時に生成された)を使用して、Q群演算要素106と共にクライアントからの平文データを暗号化し、暗号化後、サーバ104に格納される。第2のフェーズ300は、サーバ104と、クライアントデータを暗号化するために用いられた同じ秘密鍵にアクセスできる機械のSMPC108クラスタとの間でSMPCプロトコルを使用してクライアント102によって開始される演算112を実行する。SMPC108プロトコルは、サーバ104とクラスタ108内の他のコンピュータとの間で暗号データおよび他の情報を交換し、これによってサーバまたはクラスタ内のコンピュータのいずれか1つにおけるネットワークトラフィック、メモリ、および内部計算状態が攻撃者によって観測されていた場合でも、データの機密性が不正侵入されることがないようにする。SMPCクラスタ108内のコンピュータの一部は、秘密鍵にアクセスできるが、SMPCプロトコルは、攻撃者がサーバ104を同時に攻撃しない限りは、秘密鍵を保持するコンピュータの1つが攻撃者によって観測されている場合でも、機密性が不正侵入されないことを保証する。第3のフェーズ400は、サーバ104から暗号データを受け取り、Q群復号演算106を用たる同じ秘密鍵を使用してこれを復号し、クライアント102に対して平文データを生成する。
【0016】
図5は、図2に示した暗号化プロセス200の更なる詳細を示し、図6は、図4に示した復号プロセス400の更なる詳細を示す。図1のシステムは、暗号化スキームとしてQ群暗号化500およびQ群復号600演算を用いることができる。両方の演算の第1のステップ502、602は、AES暗号化またはHMAC-SHAメッセージダイジェストなどの暗号関数である擬似ランダム関数(Prf)を使用して擬似ランダムパッドを生成し、これが第2のステップでQ群加算またはLsub演算504、604を使用してデータと組み合わされて、結果(図5の暗号データまたは図6の平文データのいずれか)を生成する。
【0017】
より詳細には、第1のステップ502、602は、1度だけ用いられる乱数であるノンスN、データにおけるビットの数である長さL、およびPrfによって用いられる秘密鍵Kを取る。NIST標準AESカウンタモード(CTR-XOR)はPrfとしてAES暗号化関数と、Q群演算としてXor関数を用いる。NIST標準は、CTR-XOR暗号化が、長さLビット、ノンスN、および秘密鍵Kの平文データMを取って、最初にN、N+1、...、N+m-1から各々得られる128ビットのm=シーリング(L/128)入力ブロックの集合を生成し、次に鍵Kを有するAES暗号化を使用して各入力ブロックを暗号化して、m出力ブロックを生成し、最終的に全てのm出力ブロックを連結して、長さLビットの擬似ランダムパッドPを生成する方法を記載している。CTR-XOR暗号化の第2のステップでは、擬似ランダムパッドPが平文データMとXORされ、暗号テキスト(N,C)としてノンスNと共に格納されるLビットを有する暗号データCを生成する。システムおよび開示されるプロセスは、いずれかの暗号擬似ランダム関数であるように、CTR-XORの第1のステップにて用いられる既知のPrf関数を一般化し、いずれかのQ群演算504であるように、CTR-XORの第2のステップにおけるXor演算を一般化する。
【0018】
Q群Gは、長さLの全ての2進列と、G.Add、G.Lsub、およびGRsubという3つの演算とを含む集合G.Sからなる。G.Add演算は、集合G.Sからいずれか2つの要素AおよびBを取り出して集合G.S内の別の要素Cを生成する。G.Lsub演算は、集合G.Sからいずれか2つの要素AおよびCを取り出して、G.Add(A,B)=Cであるように集合から一意的な要素Bを生成する。G.Rsub演算は、集合G.Sからいずれか2つの要素BおよびCを取り出して、G.Add(A,B)=Cであるように集合内の一意的な要素Aを生成する。G.Lsub演算は、左逆元(left-inverse)として知られており、G.Rsub演算は、G.Add演算の右逆元(right-inverse)として知られている。
【0019】
図5および6に示されたCTR-Q群スキームは、Q群を選択し、次にNIST標準CTR-XORのXor演算を、図示のように暗号化用のQ群Add504および復号用のQ群Lsub506に置き換える。選択されたQ群がGである場合、鍵Kを使用してノンスNを暗号化することにより生成された中間暗号ブロックは、擬似ランダムパッドP=Prf(K,N,L)であり、平文データMのQ群暗号によって生成された暗号データは、暗号データC=G.Add(P,M)である。暗号データCのQ群復号関数は、G.Lsub関数への入力として同じ擬似ランダムパッドP=Prf(K,N,L)を使用して、暗号データCを復号して平文データM=G,Lsub(P,C)を生成する。
【0020】
NIST標準CTR-XORは、XOR.Add、XOR.Lsub、およびXOR.Rsub関数が以下に示すように全てXorであるQ群スキームの特定のインスタンシエイションと見なすことができる。
XOR.Add(P,M)=Xor(P,M)
XOR.Lsub(P,C)=Xor(P,C)
XOR.Rsub(M,C)=Xor(M,C)
【0021】
標準CTR-XORのわずかの変形は、長さLビットの定数Hを導入して、以下に示すように定数Hによって入力のXorを実行することである。
XOR2.Add(P,M) =Xor(P,M,H)
XOR2.Lsub(P,C)=Xor(P,C,H)
XOR2.Rsub(M,C)=Xor(M,C,H)
【0022】
たとえば、全ての1ビットの定数Hを使用して、CTR-XNOR暗号化スキームを生成する。CTR-XNORスキームは、標準CTR-XORとは異なるが、CTR-XORに優る何らかの大きな利点を提供することはない。
【0023】
以下に記載するプロセスを使用して、パブリッククラウドへプライベート計算をアウトソーシングする問題に対処し、データセキュリティに暗号化を提供するが暗号化データに対する演算を(セキュリティを犠牲にすることなく)許可する技術的解決策を提供することができ、これらの演算の例をここで説明する。
【0024】
図5および6に示された第1のQ群暗号化は、モジュロ2L加算および減算を使用して、以下のようにCTR-ADD対称暗号化スキームを生成することができる。
ADD.Add(P,M) =(P+M) mod 2L-
ADD.Lsub(P,C)=(C-P) mod 2L-
ADD.Rsub(M,C)=(C-M) mod 2L-
【0025】
第2のQ群は、モジュロ2L加算および減算を使用して、以下のようにCTR-SUBを生成する。
SUB.Add(P,M) =(P-M) mod 2L-
SUB.Lsub(P,C)=(P-C) mod 2L-
SUB.Rsub(M,C)=(C+M) mod 2L-
【0026】
CTR-ADDに優るCTR-SUBの利点は、SUB.AddおよびSUB.Lsub関数が構造的に同一であることであり、よって同じ関数実施構成が、暗号化および復号の両方に用いられる。
【0027】
XorをいずれかのQ群加算演算に置き換えることでNIST標準AES CTR-XOR暗号化と同程度にセキュアである対称鍵暗号化スキームが得られるというセキュリティ証明に起因して、暗号化に他の多くのQ群演算を用いることができる。N要素を有する集合に関するQ群は、各エントリがAdd(row_index、column_index)の結果である、0からN-1にインデックスされたN行およびN列を包含する2次元ケイリーテーブルによって表される加算関数により定義される。Lsub関数は列のエントリが繰り返されないことを要求し、Rsub関数が何れの行のエントリも繰り返されないことを必要とするので、Q群の加算テーブルはラテン方格である。従って、加算関数の可能性の数は少なくともN!(N-1)!…2!1!であり、多数のセキュア暗号化スキームが実施可能である。
【0028】
全ての可能性のあるQ群暗号化スキームの中で、開示されるシステムおよびプロセスは、次式の長さLの2進列およびG.加算関数の2L要素を包含する集合G.Sを備えたQ群Gを用いることができる。
G.Add(P,M)=(D*P+E*M+H) mod 2L-
ここで、+はモジュロ-2L-加算を示し、*はモジュロ-2L-乗算を示し、DおよびEは双方とも、2Lに対して互いに素である集合G.Sからの定数であり、Hは集合G.Sからの別の定数である。
【0029】
G.Addの定義において、D=1、E=1、H=0を選択することで、CTR-ADD暗号化スキームのQ群が得られるが、D=1、E=-1,H=0を選択することで、CTR-SUB暗号化スキームのQ群が得られる。
【0030】
モジュロ-2L-算術演算の代数的性質を使用して、定義G.Add=(D*P+E*M+H) mod 2Lの小再構成は、このようなQ群Gが、全てのPおよび全てのMに対して、G.Add(P,M)=(G.Add(P,0)+E*M) mod 2L-を有する制約を満足させることを明らかにし、ここで0は、Lが0ビットのストリングである。この制約は、式F(X,Y)=(A*X+B*Y+Q) mod 2Lの何らかの関数Fに対して、モジュロ-2L-等式F(G.Add(P1,M1)、G.Add(P2,M2))=F(G.Add(P1,0)、G.Add(P2,0))+E*F(M1,M2)を有することを意味する。従って、平文(plain texts)における演算の結果E*F(M1,M2)は、サーバ104の暗号テキストの関数の結果F(C1,C2)をSMPC108クラスタコンピュータ1のパッドFの関数の結果(Add(P1,0)、Add(P2,0))と組み合わせることによって取得することができる。
【0031】
等式F(X,Y)=(A*X+B*Y+Q) mod 2Lにおいて、A=1、B=1、Q=0を選択することで、F(X,Y)=X+Yを結果として生じ、これにより、P=P3およびM=E*(M1+M2)での制約G.Add(P,M)=G.Add(P,0)+E*Mと組み合わされたE*(M1+M2)の式が得られ、図8に示すように加算SMPCプロトコル/プロセスでC3およびSをコンピュータ計算するための式が求められる。定義F(X,Y)=(A*X+B*Y+Q) mod 2LにおいてA=-1、B=1、Q=Rを選択することで、F(X,Y)=Y-X+Rを結果として生じ、これにより図10および11に示した未満プロトコル/プロセスでVおよびXをコンピュータ計算するための式が求められる。
【0032】
<暗号化加算演算>
図7-9は暗号化加算プロセスの暗号化プロセス、暗号化加算プロセスおよび暗号化加算プロセスの復号プロセスを示す。CTR-XORに優るCTR-ADDおよびCTR-SUBの利点は、これらのQ群暗号化スキームのいずれかによって暗号化されたデータは、2つの暗号データを加えるための図7-9に示した以下のSMPCプロトコル/プロセスで示されるように追加することができることである。
【0033】
暗号化された加算プロセスは以下のプロセスを含むことができる。
a.クライアント102が、これらのステップ:
i.ノンスNIを備えたQ群106を使用して平文データM1を暗号化し、サーバ104へのストレージのために暗号テキスト(N1、C1)を生成するステップ、
ii.ノンスN2を備えたQ群106を使用して平文データM2を暗号化、サーバ104へのストレージのために暗号テキスト(N2、C2)を生成するステップ、および
iii.サーバ104で2つの暗号テキストの加算演算を開始するステップ。
b.サーバ104がSMPCクラスタ108コンピュータ1に(N1、N2)を送信するステップ、
を実行する。
c.SMPCクラスタ108コンピュータ1が、これらのステップ:
i.サーバ104から(N1、N2)を受信するステップ、
ii.新しいノンスN3を生成するステップ、
iii.i=1、2、および3に対してパッドPi=Prf(K、Ni、L)および平文データMi=0によって、
S=(Prf(K,N3,L)-Prf(K,N1,L)-Prf(K,N2,L)) mod 2Lに単純化するS=Add(P3,0)-Add(P1,0)-Add(P2,0)をコンピュータ計算するステップ、および
iv.サーバ104に(N3,S)を返送するステップ、
を実行する。
d.サーバ104がこれらのステップ:
i.SMPCクラスタ108コンピュータ1から(N3,S)を受信するステップ、
ii.C3=(C1+C2+S) mod 2Lをコンピュータ計算するステップ、および
iii.クライアント102に和の暗号テキストとして(N3,C3)を送信するステップ、
によってサーバのプロセスを継続する。
e.クライアント102がLsubを使用して暗号テキスト(N3,C3)を復号し、図9に示すように加算M1+M2の平文データを回復する。
【0034】
このようにして、開示されるシステムおよび方法は、解決される技術的問題であるプライベートコンピューティングがパブリッククラウドで実行されている状況におけるセキュリティを維持しながら、暗号化データを加算する技術的解決策を提供する。1つの例として、各行が人の名前とSALARYの暗号化番号を包含するPAYROLLと呼ばれるテーブルを包含するパブリッククラウドにおけるデータベースを提案する。データベースの攻撃者は、暗号化鍵なしには何れのサラリー情報も復号することができないことになる。しかしながら、このデータベースおよびテーブルの所有者(クライアント)は、上述した加算演算を使用して、以下:
SELECT SUM(salary)FROM payroll
のようなSQLクエリを発行することによって部門の合計支出をコンピュータ計算することができる。
【0035】
加算演算は、SMPCプロトコルを使用して、次に適切な暗号化鍵を備えたQ群復号によって復号する必要がある暗号化和をコンピュータ計算することになる。
【0036】
<暗号化未満演算>
図10は、暗号化未満プロセスの暗号化プロセスを示し、図11は、暗号化未満プロセスを示す。CTR-ADDおよびCTR-SUB暗号化スキームによって生成される暗号テキストは、以下のプロトコル/プロセスによる未満プロセスにおいて比較することができる。
【0037】
未満プロセスでは、本システムは、SMPC108を有するが、演算が以下に記載される図11に示すようなSMPCコンピュータ1 108AおよびSMPCコンピュータ2 108Bである、SMPCクラスタにおける2つのコンピュータを用いる。このプロセスは、1つには、2016年にNathan Chenette他によって教示された「漏洩を制限した実用的順序開示暗号化(Practical Order-Revealing Encryption with Limited Leakage)」などの順序開示暗号化(ORE)スキームに依拠する。OREスキームは、サーバ104とSMPCクラスタ108Aコンピュータ1との間で共有される追加の秘密鍵K2を使用して、関数OreEncryptを使用してオペランドを暗号化する。秘密鍵K2は、SMPCクラスタコンピュータ2 108Bで利用可能ではないが、SMPCクラスタコンピュータ2 108Bは、関数OreCmpを実行して、オペランド間の差の最上位ビットだけをリークしながら未満の2つのオペランドを比較する。
【0038】
暗号化未満プロセスは、以下のプロセスを含むことができる。
a.クライアント102がこれらのステップ:
i.ノンスN1を備えたQ群暗号化によって平文データM1を暗号化してサーバへのストレージのための暗号テキスト(N1,C1)を生成するステップ、
ii.ノンスN2を備えたQ群暗号化によって平文データM2を暗号化してサーバへのストレージのための暗号テキスト(N2,C2)を生成するステップ、および
iii.サーバ104で2つの暗号テキストの未満演算を開始するステップ、
を実行する。
b.サーバ104がこれらのステップ:
i.L未満のランダム整数Rを生成するステップ、
ii.V=(C2-C1)+Rをコンピュータ計算するステップ、
iii.W=OreEncrypt(K2,V)をコンピュータ計算するステップ、
iv.(N1,N2,R)をSMPCクラスタコンピュータ1 108Aに送信するステップ、および
v.WをSMPCクラスタコンピュータ2 108Bに送信するステップ、
を実行する。
c.SMPCクラスタコンピュータ1 108Aがこれらのステップ:
i.サーバ104から(N1,N2,R)を受信するステップ、
ii.i=1および2に対するパッドPi=Prf(K,Ni,L)および平文データMi=0によって、X=(Prf(K,N2,L)-Prf(K,N1,L))+Rに単純化するX=(Add(P2,0)-Add(P1,0)+Rをコンピュータ計算するステップ、
iii.Y=OreEncrypt(K2,X)をコンピュータ計算するステップ、および
iv.YをSMPCクラスタコンピュータ2 108Bに送信するステップ、
を実行する。
d.SMPCクラスタコンピュータ2 108Bがこれらのステップ:
i.サーバ104からWを受信するステップ、
ii.SMPCクラスタコンピュータ1 108AからYを受信するステップ、
iii.Z=OreCompare(W,Y)をコンピュータ計算するステップ、および
iv.Zの最上位非ゼロビットに依存する結果Lをサーバ104に送信する、
を実行する。
e.サーバ104が、クライアント102に戻すことができるM1<M2かどうかを決定する結果Lを受信する。「L」は未満プロトコルの結果である。M1<M2である場合、次にLは1に設定されM1>=M2である場合、Lは0に設定される。
【0039】
たとえば、パブリッククラウドにおけるデータベースが、人の名前の暗号化を保持する暗号化列LASTNAMEを包含するPEOPLEと呼ばれるテーブルと、誕生日の暗号化を保持する暗号化列BIRTHDATE(暗号化された誕生日付の暗号テキスト)とを含むと仮定する。データベースの攻撃者は、正しい鍵なしでは暗号化BIRTHDATE値の何れも復号することができない。しかしながら、クライアントは、暗号化未満演算を使用して、以下のようなクエリに応答することができる。
SELECT lastname FROM people WHERE birthdate < ‘2000-01-01’
【0040】
データベースの攻撃者は、復号化鍵なしにはどの誕生日がクエリされているかが分からない。攻撃者は、フィルタにマッチするよう選択された結果の数を見ることができるが、復号化鍵なしにはラストネームを見ることができない。適切な鍵によるQ群復号演算は、クエリの結果セットにおけるラストネームを復号することができる。
【0041】
<結果の要約>
Q群暗号化法およびこの暗号化に基づくSMPCプロトコルは、証明可能なセキュリティおよび良好な性能を有する。インテルSGXなどのハードウェア解決策ほど高速ではないが、開示されるプロセスは、特定のハードウェアに依存せず、上記の背景技術に記載されるようなサイドチャネルアタックに対して脆弱ではない。開示されるSMPC未満プロトコルは、サーバとSMPCクラスタコンピュータとの間の通信の複数のラウンドを単一のラウンドに低減するので、Sharemindシステムなどにおける事前に公開されたプロトコルよりも遙かに高速である。Q群を使用して構築されたアドホックストリーム暗号は、Q群演算を秘匿することによって暗号テキストの機密性を維持し、開示されるシステムおよび方法は、Q群並びに暗号化関数を公開するが鍵だけを秘匿する証明された方法を用いる。開示されたシステムおよび方法の結果および有効性は、Cassandra、MySQL、MariaDB、Postgres、MongoDB、Oracle、およびAmazonウェブサービスおよびMicrosoft Azureなどのパブリッククラウドで開発されたMicrosoftSQLサーバなどの商用データベースに実施されたときに示される。
【0042】
上述の説明は、特定の実施形態に関して説明の目的で記載されている。しかしながら、上記の例証の論議は、本開示を網羅すること、または本開示を開示された厳密な形態に限定することを意図するものではない。多くの修正および変形形態が上記の教示の点で実施可能である。本実施形態は、本開示の原理および実施可能な用途を最も良く説明し、これにより企図される特定の用途に適するような本開示および様々な修正を有する様々な実施形態を最も良好に利用可能にするように選択し且つ説明してきた。
【0043】
本明細書で開示されるシステムおよび方法は、1または2以上のコンポーネント、システム、サーバ、アプライアンス、他のサブコンポーネントを介して実施することができ、またはこのような要素間に分散させることができる。システムとして実施される場合、このようなシステムは、とりわけ、汎用コンピュータにおいて見られるソフトウェアモジュール、汎用CPU、RAM、その他のコンポーネントを含むおよび/または包含することができる。本発明がサーバに存在する実施構成では、このようなサーバが、汎用コンピュータにおいて見られるCPU、RAM、その他のコンポーネントを含むまたは包含することができる。
【0044】
加えて、本明細書のシステムおよび方法は、上述されたものに加えて、異なるまたは全く別のソフトウェア、ハードウェアおよび/またはファームウェアコンポーネントによる実施構成を介して達成することができる。本発明に関連付けられるまたはこれを具現化するこのような他のコンポーネント(たとえば、ソフトウェア、処理コンポーネント、その他)および/またはコンピュータ可読媒体に関して、たとえば、本明細書の発明の態様は、多数の汎用または専用コンピュータシステムまたは構成と適合するように実施することができる。本明細書の発明と共に使用するのに好適とすることができる様々な例示的コンピュータシステム、環境、および/または構成は、限定ではないが、パーソナルコンピュータ内またはパーソナルコンピュータで具現化されたソフトウェアまたは他のコンポーネント、ルーティング/接続コンポーネントなどの1または複数のサーバコンピュータ装置、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、家電デバイス、ネットワークPC、他の既存のコンピュータプラットフォーム、上記のシステムまたはデバイスのうちの1または2以上を含む分散コンピュータ環境、その他を含むことができる。
【0045】
一部の事例では、システムおよび方法の態様は、たとえばこのようなコンポーネントまたは回路に関連して実行されるプログラムモジュールを含むロジックおよび/または論理命令を介して達成されるかまたはこれによって実行することができる。一般的に、プログラムモジュールは、本明細書の特定のタスクを実行するまたは特定の命令を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、その他を含むことができる。また、本発明は、回路が、通信バス、回路またはリンクを介して接続される分散ソフトウェア、コンピュータ、または回路設定の関連において実施することができる。分散設定では、制御/命令は、メモリストレージデバイスを含むローカルおよびリモート双方のコンピュータストレージ媒体から生じることができる。
【0046】
本明細書においてソフトウェア、回路およびコンポーネントは、コンピュータ可読媒体の1または2以上のタイプを含むおよび/または利用することもできる。コンピュータ可読媒体は、このような回路および/またはコンピュータコンポーネント上に存在するか、またはこれに関連付けられる、もしくはこれによってアクセスすることができるいずれかの利用可能な媒体とすることができる。例として、および限定ではなく、コンピュータ可読媒体は、コンピュータストレージ媒体および通信媒体を含むことができる。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報ストレージのためのいずれかの方法または技術で実施される揮発性および不揮発性の取り外し可能および固定の媒体を含む。コンピュータストレージ媒体は、限定ではないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD-ROM、デジタル多機能ディスク(DVD)または他の光学ストレージ、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、或いは、要求される情報を格納するのに使用できコンピュータコンポーネントによってアクセスすることができるいずれかの他の媒体を含む。通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよび/または他のコンポーネントを含むことができる。さらに、通信媒体は、有線ネットワークまたは直接有線ネットワークなどの有線媒体を含むことができるが、本明細書のこのようないずれかのタイプの媒体は一時的媒体を含まない。上記のいずれかの組み合わせもまた、コンピュータ可読媒体の範囲内に含まれる。
【0047】
本明細書において、コンポーネント、モジュール、デバイスなどの用語は、多種多様な方法で実施することができるいずれかのタイプの論理的または機能的ソフトウェアコンポーネント、回路、ブロックおよび/またはプロセスを指すことができる。たとえば、様々な回路および/またはブロックの機能は、互いに組み合わせていずれかの他の数のモジュールにすることができる。各モジュールは、中央処理ユニットによって読み取られる有形メモリ(たとえば、ランダムアクセスメモリ、読取専用メモリ、CD-ROMメモリ、ハードディスクドライブなど)に格納されたソフトウェアプログラムとして実装されて、本明細書の発明の機能を実施することができる。或いは、モジュールは、送信搬送波を介して汎用コンピュータまたは処理/グラフィクスハードウェアに送信されるプログラミング命令を含むことができる。また、モジュールは、本明細書の発明によって包含される機能を実施するハードウェア論理回路として実装することができる。最終的に、モジュールは、所望のレベルの性能およびコストを提供する特殊用途命令(SIMD命令)、フィールドプロプログラマブルロジックアレイまたはこれらのいずれかの混合物を使用して実施することができる。
【0048】
本明細書で開示されるように、本開示と適合する特徴は、コンピュータハードウェア、ソフトウェアおよび/またはハードウェアを介して実施することができる。たとえば、本明細書で開示されるシステムおよび方法は、たとえば、データベース、デジタル電子回路、ファームウェア、ソフトウェア、またはこれらの組み合わせも含むコンピュータなどのデータプロセッサを含む様々な形態で具現化することができる。さらに、開示される実施構成の一部は、特定のハードウェアコンポーネントを記載するが、本明細書の発明に適合するシステムおよび方法は、ハードウェア、ソフトウェアおよび/またはファームウェアのいずれかの組み合わせによって実施することができる。さらに、本明細書の発明の上述の特徴および他の態様並びに原理は、様々な環境で実施することができる。このような環境および関連の応用は、本発明による様々なルーチン、プロセスおよび/または演算を実行するよう特別に構成することができ、またはこれらは、要な機能を提供するコードによって選択的に起動または再構成された汎用コンピュータまたはコンピュータプラットフォームを含むことができる。本明細書で開示されるプロセスは、いずれかの特定のコンピュータ、ネットワーク、アーキテクチャ、環境、または他の装置に固有に関連しておらず、ハードウェア、ソフトウェア、および/またはファームウェアの適切な組み合わせによって実施することができる。たとえば、様々な汎用機械を本発明の教示に従って記述されたプログラムと共に用いることができ、または必要とされる方法および技術を実行するための専用装置またはシステムを構成することが好都合とすることができる。
【0049】
本明細書で説明したロジックなどの方法およびシステムの態様は、フィールドプログラマブルゲートアレイ(「FPFA」)、プログラマブルアレイロジック(「PAL」)デバイス、電気的プログラマブルロジックおよびメモリデバイスおよび標準セルベースデバイス、並びに特定用途向け集積回路などのプログラマブルロジックデバイス(「PLD」)を含む多種多様な回路のいずれかにプログラムされた機能として実施することができる。態様を実施するための一部の他の可能性は、メモリデバイス、メモリを備えたマイクロコントローラ(EEPRMなど)、組込式マイクロプロセッサ、ファームウェア、ソフトウェア、その他を含む。さらに、ソフトウェアベースの回路エミュレーション、離散的ロジック(順次的および組み合わせ)、カスタムデバイス、ファジー(ニューラル)ロジック、量子デバイス、および上記のデバイスタイプのいずれかの混成を有するマイクロプロセッサにて具現化することができる。ベースとなるデバイス技術は、たとえば、相補型金属酸化膜半導体(「CMOS」)のような金属酸化膜半導体電界効果トランジスタ(「MOSFET」)技術、エミッタ結合型ロジック(「ECL」)のようなバイポーラ技術、ポリマー技術(たとえば、シリコン共役ポリマーおよび金属共役ポリマー金属構造体)、アナログとデジタルの混合など、多種多様なコンポーネントタイプで提供することができる。
【0050】
また、本明細書で開示した様々なロジックおよび/または機能は、挙動特性、レジスタ転送特性、論理コンポーネント特性および/またはその他の特性の観点から、ハードウェア、ファームウェアのあらゆる数の組み合わせを使用して、および/または機械可読またはコンピュータ可読媒体に具体化されたデータおよび/または命令として有効にすることができる。このようなフォーマットデータおよび/または命令を具体化できるコンピュータ可読媒体は、限定的な意味ではなく様々な形態の不揮発性記憶媒体(たとえば、光学記憶媒体、磁気記憶媒体または半導体記憶媒体)を含むことができるが、ここでも一時的媒体は含まない。本明細書全体を通じ、「備える(comprise,comprising)」などの用語は、文脈上明らかに他の意味を必要としない限り、排他的または網羅的な意味の対語である包括的な意味で、すなわち「~を含むけれどもそれに限定されない(including,but not limited to)」という意味で解釈されたい。また、単数または複数を用いた単語は、それぞれ複数または単数も含む。また、「本明細書において(herein)」、「本明細書に従って(hereunder)」、「上記の(above)」、「以下の(below)」、および同様の意味の単語は、本出願のいずれかの特定の部分ではなく本出願全体を示す。2または3以上の項目のリストへの言及において「または(or)」という単語を使用している場合、この単語は、リスト内のいずれかの項目、リスト内の全ての項目、およびリスト内の項目のいずれかの組み合わせ、という解釈を全て含む。
【0051】
本発明の現在好ましい特定の実施構成について、本明細書で具体的に説明してきたが、本明細書に図示および記載された様々な実施構成の変形および修正が本発明の精神および範囲から逸脱することなく行い得ることは、本発明が関係する当業者には明らかであろう。従って、本発明は、適用可能な規則によって必要とされる範囲までのみ限定されないものとする。
【0052】
上述の部分は、本開示の特定の実施形態を参照してきたが、本実施形態の変更が本開示の原理および精神、添付の請求項によって定義される本開示の範囲から逸脱することなく行い得ることは当業者には理解されるであろう。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
【国際調査報告】