(57)【要約】      （修正有）【課題】セキュアハッシュテーブル実装の方法等を提供する。【解決手段】プロセス２００において、サーバ装置１０２のサーバエンクレーブ１０４とクライアント装置１１２のクライアントエンクレーブ１１４との間で秘密鍵２０４、２０６の交換を実行し、その交換された秘密鍵を用いてサーバエンクレーブとクライアントエンクレーブとの間に暗号化されたチャネル２０２を確立する。鍵つきハッシュ関数又は疑似ランダム関数のためのランダム鍵２０８を生成し、クライアントエンクレーブへ送る。サーバエンクレーブで入力データのハッシュを受信する。受信したハッシュに含まれる鍵値対に基づきハッシュテーブル１０８を構築する。鍵を含むハッシュテーブルクエリ２１２を受信する。鍵に対応する値を取り出す。鍵に対応する取り出された値２１４又は鍵の１つについてハッシュテーブルに値が挿入されていない場合にはヌル２１６を返す。【選択図】図２
2019121375.tif 000002
【特許請求の範囲】
【請求項１】
セキュアハッシュテーブル実装の方法であって、
サーバ装置のサーバエンクレーブとクライアント装置のクライアントエンクレーブとの間で秘密鍵の交換を実行することと、
前記交換された秘密鍵を用いて、前記サーバエンクレーブと前記クライアントエンクレーブとの間に暗号化されたチャネルを確立することと、
鍵つきハッシュ関数又は疑似ランダム関数のためのランダム鍵を生成することと、
前記暗号化されたチャネルを介して前記クライアント装置の前記クライアントエンクレーブへ前記ランダム鍵を送ることと、
前記クライアントエンクレーブから前記暗号化されたチャネルを介して前記サーバエンクレーブで入力データのハッシュを受信することと、
前記受信されたハッシュに含まれる複数の鍵値対に基づきハッシュテーブルを構築することと、
前記クライアント装置から、複数の鍵を含むハッシュテーブルクエリを受信することと、
前記ハッシュテーブルクエリに応答して、前記複数の鍵に対応する値を取り出すことと、
前記複数の鍵に対応する前記取り出された値を、又は前記ハッシュテーブルクエリに含まれる前記複数の鍵の中の１つについて前記ハッシュテーブルに値が挿入されていない場合にはヌルを返すことと
を有する方法。
【請求項２】
前記ランダム鍵を生成することは、疑似ランダム関数をサンプリングすることを含む、
請求項１に記載の方法。
【請求項３】
前記複数の鍵値対は、（鍵，値）対によって表され、ｋ１・・・ｋｎが鍵を表し、ｖ１・・・ｖｎが値を表し、ｎが前記鍵及び前記値のための最大インデックス変数であるとして、｛（ｋ１，ｖ１），・・・，（ｋｎ，ｖｎ）｝であり、
前記入力データのハッシュは、ｉ∈［１，ｎ］についての式ＨＴ．Ｕｐｄａｔｅ（ＰＲＦｓｋ（ｋπｒｋ（ｉ），ｖπｒｋ（ｉ）））に従って割り当てられ、ＨＴ．Ｕｐｄａｔｅは割り当て関数を表し、ｓｋはランダム鍵を表し、ＰＲＦは疑似ランダム関数を表し、πは［１，ｎ］から［１，ｎ］までの疑似ランダム置換を表し、ｒｋは疑似ランダム置換鍵を表す、
請求項２に記載の方法。
【請求項４】
前記複数の鍵は、鍵セット（ｋ１，・・・，ｋｍ）によって表され、ｋ１・・・ｋｍは鍵を表し、ｍは前記鍵のための最大インデックス変数であり、
前記値を取り出すことは、ｉ∈［１，ｍ］についての式ｖπｒｋ（ｉ）＝ＨＴ．Ｆｉｎｄ（ＰＲＦｓｋ（ｋπｒｋ（ｉ）））に従って実行され、ＨＴ．Ｆｉｎｄは、前記ハッシュテーブルのための読み出し関数を表し、πは、［１，ｍ］から［１，ｍ］までの疑似ランダム置換を表す、
請求項３に記載の方法。
【請求項５】
前記ランダム鍵を生成することは、一度しか起きない、
請求項２に記載の方法。
【請求項６】
前記ランダム鍵は、前記鍵つきハッシュ関数について生成され、
前記鍵つきハッシュ関数は、ＳＨＡ−１、ＳＨＡ−２、又はＳＨＡ−３を含むセキュアハッシュアルゴリズムに基づく、
請求項１に記載の方法。
【請求項７】
暗号化されたメモリに前記ハッシュテーブルを記憶することを更に有する
請求項１に記載の方法。
【請求項８】
前記サーバエンクレーブ及び前記クライアントエンクレーブは、トラステッド・エグゼキューション環境の部分である、
請求項１に記載の方法。
【請求項９】
前記トラステッド・エグゼキューション環境は、ソフトウェア・ガード・エクステンションを含む、
請求項８に記載の方法。
【請求項１０】
クエリコリジョンの分配のみが、権限のないエンティティに公開されることに対して弱い、
請求項１に記載の方法。
【請求項１１】
サーバ装置のサーバエンクレーブとクライアント装置のクライアントエンクレーブとの間で秘密鍵の交換を実行することと、
前記交換された秘密鍵を用いて、前記サーバエンクレーブと前記クライアントエンクレーブとの間に暗号化されたチャネルを確立することと、
鍵つきハッシュ関数又は疑似ランダム関数のためのランダム鍵を生成することと、
前記暗号化されたチャネルを介して前記クライアント装置の前記クライアントエンクレーブへ前記ランダム鍵を送ることと、
前記クライアントエンクレーブから前記暗号化されたチャネルを介して前記サーバエンクレーブで入力データのハッシュを受信することと、
前記受信されたハッシュに含まれる複数の鍵値対に基づきハッシュテーブルを構築することと、
前記クライアント装置から、複数の鍵を含むハッシュテーブルクエリを受信することと、
前記ハッシュテーブルクエリに応答して、前記複数の鍵に対応する値を取り出すことと、
前記複数の鍵に対応する前記取り出された値を、又は前記ハッシュテーブルクエリに含まれる前記複数の鍵の中の１つについて前記ハッシュテーブルに値が挿入されていない場合にはヌルを返すことと
を含む動作を実行するよう又は該実行を制御するよう１つ以上のプロセッサによって実行されるプログラミングコードが符号化されている非一時的なコンピュータ可読媒体。
【請求項１２】
前記ランダム鍵を生成することは、疑似ランダム関数をサンプリングすることを含む、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１３】
前記複数の鍵値対は、（鍵，値）対によって表され、ｋ１・・・ｋｎが鍵を表し、ｖ１・・・ｖｎが値を表し、ｎが前記鍵及び前記値のための最大インデックス変数であるとして、｛（ｋ１，ｖ１），・・・，（ｋｎ，ｖｎ）｝であり、
前記入力データのハッシュは、ｉ∈［１，ｎ］についての式ＨＴ．Ｕｐｄａｔｅ（ＰＲＦｓｋ（ｋπｒｋ（ｉ），ｖπｒｋ（ｉ）））に従って割り当てられ、ＨＴ．Ｕｐｄａｔｅは割り当て関数を表し、ｓｋはランダム鍵を表し、ＰＲＦは疑似ランダム関数を表し、πは［１，ｎ］から［１，ｎ］までの疑似ランダム置換を表し、ｒｋは疑似ランダム置換鍵を表す、
請求項１２に記載の非一時的なコンピュータ可読媒体。
【請求項１４】
前記複数の鍵は、鍵セット（ｋ１，・・・，ｋｍ）によって表され、ｋ１・・・ｋｍは鍵を表し、ｍは前記鍵のための最大インデックス変数であり、
前記値を取り出すことは、ｉ∈［１，ｍ］についての式ｖπｒｋ（ｉ）＝ＨＴ．Ｆｉｎｄ（ＰＲＦｓｋ（ｋπｒｋ（ｉ）））に従って実行され、ＨＴ．Ｆｉｎｄは、前記ハッシュテーブルのための読み出し関数を表し、πは、［１，ｍ］から［１，ｍ］までの疑似ランダム置換を表す、
請求項１３に記載の非一時的なコンピュータ可読媒体。
【請求項１５】
前記ランダム鍵を生成することは、一度しか起きない、
請求項１２に記載の非一時的なコンピュータ可読媒体。
【請求項１６】
前記ランダム鍵は、前記鍵つきハッシュ関数について生成され、
前記鍵つきハッシュ関数は、ＳＨＡ−１、ＳＨＡ−２、又はＳＨＡ−３を含むセキュアハッシュアルゴリズムに基づく、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１７】
前記動作は、暗号化されたメモリに前記ハッシュテーブルを記憶することを更に含む、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１８】
前記サーバエンクレーブ及び前記クライアントエンクレーブは、トラステッド・エグゼキューション環境の部分である、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１９】
前記トラステッド・エグゼキューション環境は、ソフトウェア・ガード・エクステンションを含む、
請求項１８に記載の非一時的なコンピュータ可読媒体。
【請求項２０】
クエリコリジョンの分配のみが、権限のないエンティティに公開されることに対して弱い、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で説明される実施形態は、トラステッド・エグゼキューション環境（Trusted  Execution  Environment）におけるセキュアハッシュ演算に関係がある。
【背景技術】
【０００２】
ハッシュマップと呼ばれることがあるハッシュテーブルは、多数の用途により最も良く使用されているデータ構造の１つである。ハッシュテーブルは、値がハッシュ関数に基づき鍵にマッピングされている連想配列（associative  array）である。ハッシュ関数は、値が見つけられ得る配列内のインデックスを計算する。如何にして値が鍵及びインデックスに関連付けられるかを決定づけるハッシュ関数がいくつかある。
【０００３】
本明細書で請求される主題は、記載されている環境においてしか動作しない実施形態、又は記載されている如何なる欠点も解消する実施形態に制限されない。むしろ、この背景は、本明細書で記載されるいくつかの実施形態が実施され得る技術分野の一例を説明するためにのみ提供されている。
【発明の概要】
【０００４】
実施形態に従って、セキュアハッシュテーブル実装の方法は、サーバ装置のサーバエンクレーブとクライアント装置のクライアントエンクレーブとの間で秘密鍵の交換を実行することを含んでよい。方法は、前記交換された秘密鍵を用いて、前記サーバエンクレーブと前記クライアントエンクレーブとの間に暗号化されたチャネルを確立することを含んでよい。方法は、鍵つきハッシュ関数又は疑似ランダム関数（ＰＲＦ）のためのランダム鍵を生成することを含んでよい。方法は、前記暗号化されたチャネルを介して前記クライアント装置の前記クライアントエンクレーブへ前記ランダム鍵を送ることを含んでよい。方法は、前記クライアントエンクレーブから前記暗号化されたチャネルを介して前記サーバエンクレーブで入力データのハッシュを受信することを含んでよい。方法は、前記受信されたハッシュに含まれる複数の鍵値対に基づきハッシュテーブルを構築することを含んでよい。方法は、前記クライアント装置からハッシュテーブルクエリを受信することを含んでよい。前記ハッシュテーブルクエリは複数の鍵を含んでよい。方法は、前記ハッシュテーブルクエリに応答して、前記複数の鍵に対応する値を取り出すことを含んでよい。方法は、前記複数の鍵に対応する前記取り出された値を、又は前記ハッシュテーブルクエリに含まれる前記複数の鍵の中の１つについて前記ハッシュテーブルに値が挿入されていない場合にはヌルを返すことを含んでよい。
【０００５】
実施形態の目的及び利点は、少なくとも、特許請求の範囲で特に指し示されている要素、特徴、及び組み合わせによって、実現及び達成されるだろう。前述の概要及び以下の詳細な説明は、実例及び説明であって、請求されている発明を制限するものではない点が理解されるべきである。
【図面の簡単な説明】
【０００６】
例となる実施形態は、添付の図面の使用を通じて、更なる特定及び詳細を伴って記載及び説明されることになる。
【０００７】
【図１】本開示で記載されるいくつかの実施形態が実装され得るセキュアハッシュ環境の例のブロック図である。
【図２】図１のセキュアハッシュ環境において実装され得るセキュアハッシングプロセスの例を表す。
【図３】図１のセキュアハッシュ環境の例となる実施形態であるＧＷＡＳ環境の例のブロック図である。
【図４】セキュアハッシュテーブル実装のために構成されるコンピューティングシステムの例のブロック図である。
【図５Ａ】セキュアハッシュテーブル実装の方法の例のフロー図である。
【図５Ｂ】セキュアハッシュテーブル実装の方法の例のフロー図である。
【０００８】
全ては、本開示で記載される少なくとも１つの実施形態に従う。
【発明を実施するための形態】
【０００９】
非セキュアハッシュテーブルは、更新（update）動作及び発見（find）動作をサポートし得る。更新動作は、演算Ｕｐｄａｔｅ（Ｋｅｙ，Ｖａｌｕｅ）によって表されてよく、ＨａｓｈＴａｂｌｅ［Ｋｅｙ］：＝Ｖａｌｕｅを割り当てる。発見動作は、演算Ｆｉｎｄ（Ｋｅｙ）→Ｖａｌｕｅ又はＮｕｌｌによって表されてよく、ＨａｓｈＴａｂｌｅ［Ｋｅｙ］を、又はＵｐｄａｔｅ（Ｋｅｙ，＊）が以前に呼び出されたことがない場合にはヌル（Ｎｕｌｌ）を返す。非セキュアハッシュテーブルでは、ハッシュテーブル鍵はフィールド情報に関連付けられる。これは、非セキュアハッシュテーブルの脆弱性を生じさせる可能性がある。その上、非セキュアハッシュテーブル実装は、キャッシュアクセスパターンに基づく攻撃を受けやすい。然るに、本開示で記載される実施形態は、トラステッド・エグゼキューション環境において実装され得るセキュアハッシュテーブル及びハッシュ演算に関する。
【００１０】
その上、本開示で記載される実施形態は、トラステッド・エグゼキューション環境におけるコンピュータ演算の実行のために構成されたコンピューティングシステムに関する。本開示で記載されるセキュアハッシュ演算は、トラステッド・エグゼキューション環境におけるデータの記憶及び読出の現在の効率の悪さに対する技術的解決法を提供する。その上、本明細書で記載されるセキュアハッシュ演算は、コンピューティングアレイに記憶されたデータの安全性の改善を提供する。特に、いくつかの実施形態は、数ある利点の中でも、トラステッド・エグゼキューション環境において敵対的なエンティティによって開始され得る制御チャネル攻撃（controlled-channel  attacks）及び／又はキャッシュ故障攻撃（cache  fault  attacks）に対する有効な保護を提供する。本開示で記載されるハッシュテーブル演算の使用は、処理オーバーヘッドをそれほど増大させることなしに、そのような脆弱性を減らし得る。
【００１１】
それら及び他の実施形態は、添付の図面を参照して記載される。図面において、同じ参照符号は、別なふうに述べられない限りは、同じ機能及び構造を示す。
【００１２】
図１は、本開示で記載されるいくつかの実施形態が実装され得る、例となるセキュアハッシュ環境１００のブロック図である。セキュアハッシュ環境１００は、トラステッド・エグゼキューション環境１２６を含んでよい。トラステッド・エグゼキューション環境１２６は、サーバ装置１０２のサーバエンレクーブ１０４と、クライアント装置１１２Ａ及び１１２Ｂのクライアントエンクレーブ１１４とを含んでよい。
【００１３】
トラステッド・エグゼキューション環境１２６は、いくつかの実施形態において、ソフトウェア・ガード・エクステンション（Software  Guard  Extensions）（ＳＧＸ）を含んでよい。ＳＧＸは、インテル（登録商標）によって実装又は提供され得る。他の実施形態では、他の適切なトラステッド・エグゼキューション環境テクノロジがセキュアハッシュ環境１００において実装されてよい。一般に、トラステッド・エグゼキューション環境１２６は、セキュアハッシュ環境１００において強力な安全保障を提供し得る。例えば、セキュアハッシュ環境１００は、クライアント装置１１２Ａ及び１１２Ｂがネットワーク１２４によってサーバ装置１０２へ接続されているので、クラウドネットワークと見なされ得る。トラステッド・エグゼキューション環境１２６は、セキュアハッシュ環境１００で通信されるクライアントデータの完全な機密性を含むクラウドネットワーク内の強力な安全保障を提供し得る。トラステッド・エグゼキューション環境によって提供される安全保障は、サーバ装置１０２のサーバエンレクーブ１０４に記憶されているクライアントデータに対して計算が実行される時に提供され得る。
【００１４】
いくつかの既存のトラステッド・エグゼキューション環境において、安全保障は、クライアントデータに関連する秘密をメモリアクセスパターンに基づき推測する敵対者に対して脆弱であり得る。例えば、キャッシュ故障攻撃は、サーバ装置１０２に記憶されている秘密鍵を危殆化し得る。キャッシュ故障攻撃及びトラステッド・エグゼキューション環境のいくつかの詳細は、Xu,  Yuanzhong，Weidong  Cui，及びMarcus  Peinado，“Controlled-channel  attacks:  Deterministic  side  channels  for  untrusted  operating  systems”，Security  and  Privacy  (SP)，2015  IEEE  Symposium  on.  IEEE，２０１５年及びLee,  Sangho,  et  al.，“Inferring  fine-grained  control  flow  inside  SGX  enclaves  with  branch  shadowing”，arXiv  preprint  arXiv:  1611.06952（２０１６年）において与えられている。なお、これらの非特許文献は、それらの全文を参照により本願に援用される。
【００１５】
いくつかの既存のトラステッド・エグゼキューション環境は、そのような脆弱性を緩和しようと試みるために忘却型（oblivious）ランダムアクセスメモリ（ＯＲＡＭ）を実装してよい。ＯＲＡＭは、キャッシュ故障攻撃に対するいくらかの保護を提供し得る。しかし、ＯＲＡＭは有効ではない。例えば、ＯＲＡＭの実装は、リード及びライト動作が起きる比較的に長い期間を含み得る。然るに、ＯＲＡＭの実装は、いくつかの用途では実際的でないことがある。ＯＲＡＭのいくつかの更なる詳細は、Goldreich,  Oded，“Towards  a  theory  of  software  protection  and  simulation  by  oblivious  RAMs”，Proceedings  of  the  nineteenth  annual  ACM  symposium  on  Theory  of  computing.  ACM，１９８７年において見つけられ得る。この非特許文献は、その全文を参照により本願に援用される。
【００１６】
然るに、セキュアハッシュ環境１００は、サーバエンレクーブ１０４とクライアントエンクレーブ１１４との間でセキュアハッシュアルゴリズムを実装するよう構成されてよい。セキュアハッシュアルゴリズムは、上記の脆弱性を緩和しながらＯＲＡＭの欠点のいくつかを解消するデータ記憶構造及び編成技術を提供し得る。例えば、セキュアハッシュ環境１００は、セキュアハッシュ環境１００において記憶されている秘密をメモリアクセスパターンに基づき推測しようと試みる敵対的なキャッシュ故障攻撃及び他の攻撃から保護するのを助け得る。
【００１７】
セキュアハッシュ環境１００は、ネットワーク１２４を介してサーバ装置１０２へ通信上結合されるクライアント装置１１２Ａ及び１１２Ｂ（概して、１つ以上のクライアント装置１１２）を含んでよい。データ及び情報は、ネットワーク１２４を介してクライアント装置１１２とサーバ装置１０２との間でやり取りされてよい。クライアント装置１１２、ネットワーク１２４、及びサーバ装置１０２については、以下で記載される
ネットワーク１２４は、セキュアハッシュ環境１００のクライアント装置１１２のいずれか及びサーバ装置１０２の間の信号の通信のために構成された如何なる通信ネットワークも含んでよい。ネットワーク１２４は有線又は無線であってよい。ネットワーク１２４は、スター構成、トークンリング構成、又は他の適切な構成を含む多数の構成を有してよい。更に、ネットワーク１２４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）（例えば、インターネット）、及び／又は他の相互接続されたデータパスを含んでよい。それらにわたって、複数の装置が通信し得る。いくつかの実施形態において、ネットワーク１２４は、ピア・ツー・ピアネットワークを含んでよい。ネットワーク１２４はまた、多種多様な通信プロトコルにおけるデータの通信を可能にし得る電気通信ネットワークへ結合されるか又はその部分を含んでよい。いくつかの実施形態において、ネットワーク１２４は、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信ネットワーク、Ｗｉ−Ｆｉ通信ネットワーク、ＺｉｇＢｅｅ通信ネットワーク、拡張可能メッセージング及びプレゼンスプロトコル（eXtensible  Messaging  and  Presence  Protocol）（ＸＭＰＰ）通信ネットワーク、セルラー通信ネットワーク、何らかの類似した通信ネットワーク、又はデータを送信及び受信するためのそれらのあらゆる組み合わせを含むか又はそれらを含むよう構成される。ネットワーク１２４で通信されるデータは、ショートメッセージングサービス（ＳＭＳ）、マルチメディアメッセージングサービス（ＭＭＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、直接データ接続、ワイヤレスアプリケーションプロトコル（ＷＡＰ）、電子メール、又はクライアント装置１１２及びサーバ装置１０２により実装され得るあらゆる他のプロトコルを介して通信されるデータを含んでよい。
【００１８】
クライアント装置１１２及びサーバ装置１０２は、如何なるコンピュータベース又はハードウェアベースのコンピューティングシステムも含んでよい。クライアント装置１１２及びサーバ装置１０２は、セキュアハッシュ環境１００においてネットワーク１２４を介してお互いと通信するよう構成されてよい。クライアント装置１１２は、ユーザ又はユーザの集合に関連するか又は彼らによって操作されてよい。クライアント装置１１２に関連したユーザは、見知らぬ人であってよく、あるいは、一般に、お互いに無関係であってよい。
【００１９】
クライアント装置１１２はクライアントエンクレーブ１１４を含んでよく、サーバ装置１０２はサーバエンレクーブ１０４を含んでよい。クライアントエンクレーブ１１４及びサーバエンレクーブ１０４は、夫々クライアント装置１１２及びサーバ装置１０２のメモリ（例えば、図４のメモリ４１２）における保護された実行エリアである。特殊命令が、クライアントエンクレーブ１１４及びサーバエンレクーブ１０４においてアプリケーションコードを記憶するよう実装されてよい。例えば、インテルのＳＧＸを実装する実施形態では、１つ以上のソフトウェア開発キット（ＳＤＫ）又はアプリケーションプログラミングインターフェイス（ＡＰＩ）が設けられてよく、それらは、クライアントエンクレーブ１１４及びサーバエンレクーブ１０４におけるアプリケーションコードの記憶及び実装を可能にする。
【００２０】
一般に、クライアント装置１１２は、データ及び情報をサーバ装置１０２へ送るよう構成されてよい。サーバ装置１０２は、クライアント装置１１２からデータを受信するよう構成されてよく、受信されたデータに対して何らかの演算を実行するよう構成されてよい。例えば、サーバ装置１０２は、ゲノムワイド関連解析（GenomeWide  association  Study）（ＧＷＡＳ）を実装するよう構成されてよい。そのような実施形態では、クライアント装置１１２は、ユーザの遺伝に関する記録又はそれを表すデータをサーバ装置１０２へ送ってよい。サーバ装置１０２は、次いで、疾患に関連し得る遺伝子を識別するようＤＮＡを処理してよい。他の実施形態では、サーバ装置１０２は、調査（survey）、世論調査（poll）、又は国勢調査（census）を実装するよう構成されてよい。そのような及び他の実施形態では、クライアント装置１１２は、個人の応答をサーバ装置１０２へ送るよう構成されてよい。サーバ装置１０２は、世論調査結果、国勢調査結果、又は調査結果を生成するよう応答を処理してよい。
【００２１】
セキュアハッシュ環境１００のいくつかの実施形態では、ネットワーク１２４を介して通信されるデータは機密であり得る。例えば、遺伝に関する記録及び／又は個人の応答は、秘密と見なされ得る。然るに、サーバ装置１０２は、受信されたデータの秘密及び安全性が保たれるように、受信されたデータを受信、編成、及び処理するよう構成されてよい。例えば、サーバ装置１０２は、サーバハッシュモジュール１０６を含んでよく、クライアント装置１１２は、クライアントハッシュモジュール１１６を含んでよい。それらは、受信されたデータの秘密及び安全性を保ち得るセキュアハッシュ演算を実装するよう構成されてよい。
【００２２】
本開示を通して記載されるサーバハッシュモジュール１０６、クライアントハッシュモジュール１１６、及びそれらの１つ以上のコンポーネント又はモジュールは、プロセッサ、マイクロプロセッサ（例えば、１つ以上の演算を実行するか又はその実行を制御する。）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は特定用途向け集積回路（ＡＳＩＣ）を含むハードウェアを用いて実装されてよい。いくつかの他の事例では、サーバハッシュモジュール１０６及びクライアントハッシュモジュール１１６は、ハードウェアとソフトウェアとの組み合わせを用いて実装されてよい。ソフトウェアにおける実装は、コンピューティングシステム（例えば、サーバ装置１０２又はクライアント装置１１２）のハードウェアに含まれ得るような１つ以上のトランジスタ又はトランジスタ素子の急速な活性化及び非活性化を含んでよい。その上、ソフトウェアにより定義された命令は、トランジスタ素子内の情報に対して作用し得る。ソフトウェア命令の実装は、少なくとも一時的に電子通路を再構成し、コンピューティングハードウェアを変形し得る。
【００２３】
セキュアハッシュ演算は、ハッシュテーブル１０８を生成するよう構成されてよい。ハッシュテーブル１０８では、入力データのハッシュが編成及び記憶されてよい。ハッシュテーブル１０８は、メモリ忘却型（memory  oblivious）であってよい。ハッシュは、その後に、セキュアハッシュ環境１００において検索されアクセスされてよい。図１の実施形態では、セキュアハッシュ環境１００はハッシュテーブル１０８を含む。他の実施形態では、セキュアハッシュ環境１００は、連想配列、ディクショナリ、又は他の適切なデータ構造を含んでよい。
【００２４】
例えば、いくつかの実施形態において、サーバ装置１０２のサーバハッシュモジュール１０６は、セキュアハッシュ演算のための１つ以上のセットアッププロセスを実行するよう構成されてよい。セットアッププロセスは、サーバ装置１０２のサーバエンレクーブ１０４とクライアント装置１１２のクライアントハッシュモジュール１１６との間の秘密鍵の交換を含んでよい。セキュアハッシュ環境１００における交換された秘密鍵は、非対称鍵（例えば、秘密及び公開鍵対）及び／又は対称鍵を含んでよい。
【００２５】
サーバハッシュモジュール１０６及び／又はクライアントハッシュモジュール１１６は、サーバエンレクーブ１０４とクライアントエンクレーブ１１４との間に暗号化されたチャネルを確立するよう構成されてよい。例えば、サーバエンレクーブ１０４とクライアントエンクレーブ１１４との間で通信されるデータ及び情報は、交換された秘密鍵を用いて暗号化されてよい。然るに、暗号化されたチャネル上のデータ及び情報の大部分又は全ては、その後に復号化、記憶、処理、などをされてよい。
【００２６】
サーバハッシュモジュール１０６は、疑似ランダム関数（ＰＲＦ）の鍵つきハッシュ関数のためのランダム鍵を生成してよい。鍵つきハッシュ関数は、ＳＨＡ−１、ＳＨＡ−２、又はＳＨＡ−３を含むセキュアハッシュアルゴリズム（ＳＨＡ）に基づいてよい。いくつかの実施形態において、ランダム鍵の生成は、ＰＲＦをサンプリングすることを含んでよい。一般に、ＰＲＦは、疑似ランダム関数族の中の１つ以上の関数を含んでよい。疑似ランダム関数のいくつかの詳細は、Mihir  Belare  and  Phillip  Rogaway，“Introduction  to  Modern  Cryptography”，Chapter  3，“Pseudorandom  Functions”，２００５年において見つけられ得る。なお、この非特許文献は、その全文を参照により本願に援用される。
【００２７】
サーバハッシュモジュール１０６は次いで、暗号化されたチャネルを介してクライアント装置１１２のクライアントエンクレーブ１１４へランダム鍵を送ってよい。クライアント装置１１２はランダム鍵を受信してよい。いくつかの実施形態において、ランダム鍵の生成は、一度しか実行され得ない。ランダム鍵は、然るべくクライアント装置１１２及びサーバ装置１０２において記憶され、それらの間のインタラクションを通じて使用されてよい。
【００２８】
クライアント装置１１２はまた、入力データを受信又は生成してよい。入力データは、サーバ装置１０２へ通信されるか又はサーバ装置１０２へ通信されるデータに関連した如何なるデータ又は情報も含んでよい。例えば、上述されたように、入力データは、遺伝に関する記録又は応答データを含んでよい。クライアントハッシュモジュール１１６は、入力データをハッシングしてよい。例えば、クライアントハッシュモジュール１１６は、入力データに関連する鍵を生成するようハッシュ関数を実装してよい。いくつかの実施形態において、ハッシュモジュール１１６は、入力データをハッシングするよう如何なる非暗号学的ハッシュ関数も使用してよい。非暗号学的ハッシュ関数のいくつかの例には、ＭｕｒｍｕｒＨａｓｈ、ＤＪＢ２、などが含まれ得る。クライアントハッシュモジュール１１６は次いで、入力データのハッシュをサーバエンレクーブ１０４へ送ってよい。ハッシュは、暗号化されたチャネルを介して通信されてよい。
【００２９】
サーバエンレクーブ１０４は、クライアントエンクレーブ１１４からハッシュを受信してよい。受信されたハッシュに含まれている鍵値対に基づき、サーバエンレクーブ１０４はハッシュテーブル１０８を構築してよい。いくつかの実施形態において、ハッシュは入力データを含んでよい。他の実施形態では、入力データはサーバエンレクーブ１０４へ送られてなくてもよい。
【００３０】
表されている実施形態では、ハッシュテーブル１０８は、暗号化されたメモリ１１０において構築及び／又は記憶されてよい。暗号化されたメモリ１１０は、安全性の更なるレベルを提供し得る。他の実施形態では、ハッシュテーブル１０８は他のメモリに含まれてよい。このメモリは暗号化されていなくてもよい。
【００３１】
例えば、ハッシュテーブル１０８は、鍵値対として社会保障番号（ＳＳＮ）及び名前（例えば、（ＳＳＮ，名前））を格納するよう構成されてよい。ハッシュテーブル１０８は、集合単位の更新（setwise  update）にのみ対応するよう構成されてよい。然るに、サーバ装置１０２は、クライアント装置１１２の１つから（（ＳＳＮ＿１，名前＿１），・・・，（ＳＳＮ＿１０，名前＿１０））を受信し得る。ハッシュテーブル１０８は、内部で如何なる規則的な非セキュアハッシュテーブル実装も使用してよい。規則的な非セキュアハッシュテーブル実装は、単要素更新動作に対応し得る。割り当て動作の間にランダム置換を使用することによって、鍵値対はランダムな順序でハッシュテーブル１０８に挿入され得る。ＰＲＦの使用によれば、非セキュアハッシュテーブル鍵は、機密扱いのＳＳＮフィールドから独立している。
【００３２】
ハッシュテーブル１０８の構築に続いて、クライアント装置１１２はハッシュテーブルクエリを生成してよい。クライアントハッシュモジュール１１６は、ハッシュテーブルクエリをサーバエンレクーブ１０４へ送ってよい。ハッシュテーブルクエリに応答して、サーバハッシュモジュール１０６は、ハッシュテーブルクエリに含まれている鍵に対応する値を取り出してよい。サーバハッシュモジュール１０６は、鍵に対応する取り出された値を、又は対応する鍵がハッシュテーブル１０８に挿入されていない場合にはヌルを返してよい。
【００３３】
いくつかの実施形態において、クエリコリジョンがサーバ装置１０２によって漏洩され得る。しかし、残りのハッシュは利用可能でなく、漏洩されない。本開示で使用されるように、“漏洩される”（leaked）は、クエリコリジョンが、サーバ装置１０２とクライアント装置１１２との間のインタラクションの特定の組又は連続の後に、権限のないエンティティに公開されることに対して弱いことを示す。よって、クエリコリジョンの分配は、権限のないエンティティによってアクセスされる場合でさえ、入力データに関する如何なる情報もほとんど暴露し得ない。例えば、クライアント装置１１２が同じハッシュテーブルクエリを複数回生成することに応答して、敵対的なサーバ又は他の権限のないエンティティは、クエリパターンの分布を推定することが可能であり得る。しかし、敵対的なサーバは、クエリの実際の内容を推定することは不可能であり得る。
【００３４】
その上、第１クライアント装置１１２Ａ及び第２クライアント装置１１２Ｂによってサーバ装置１０２へ送られるハッシュは、ハッシュテーブル１０８における異なる部分を生じさせ得る。そのような及び他の状況で、サーバハッシュモジュール１０６は、ハッシュをハッシュテーブル１０８にマージするよう構成されてよい。いくつかの実施形態において、マージは付加的な動作であってよい。例えば、値が同じランダム鍵を含む場合に、ハッシュは、付加的な動作を用いてマージされてよい。
【００３５】
変更、追加、又は削除は、本開示の適用範囲から逸脱することなしに、セキュアハッシュ環境１００に対して行われ得る。例えば、セキュアハッシュ環境１００は、１つ以上のサーバ装置１０２、１つ以上のクライアント装置１１２、１つ以上のネットワーク１２４、又はそれらのあらゆる組み合わせを含んでよい。更に、本明細書で記載される実施形態における様々なコンポーネント及びサーバの分離は、その分離が全ての実施形態で起こることを示すよう意図されない。更に、記載されているコンポーネント及びサーバが一般に単一のコンポーネント又はサーバに一体化されるか、あるいは、複数のコンポーネント又はサーバに分離され得ることは、本開示から理解され得る。
【００３６】
図２は、図１のセキュアハッシュ環境１００又は同様の動作環境で実装され得る、例となるセキュアハッシュプロセス２００を表す。図２は、図１を参照して記載されたサーバ装置１０２、サーバエンレクーブ１０４、ハッシュテーブル１０８、サーバハッシュモジュール１０６、暗号化されたメモリ１１０、クライアント装置１１２、クライアントエンクレーブ１１４、及びクライアントハッシュモジュール１１６を含む。図２において、ネットワーク（例えば、図１のネットワーク１２４）は表されていない。それでもなお、サーバ装置１０２とクライアント装置１１２との間の通信は、ネットワーク１２４のような通信ネットワークを経由してよい。
【００３７】
プロセス２００において、秘密鍵の交換は、サーバ装置１０２のサーバエンレクーブ１０４とクライアント装置１１２のクライアントエンクレーブ１１４との間で起こってよい。例えば、サーバ装置１０２は、サーバ秘密鍵２０４をクライアント装置１１２へ送ってよく、クライアント装置１１２は、クライアント秘密鍵２０６をサーバ装置１０２へ送ってよい。サーバ秘密鍵２０４及びクライアント秘密鍵２０６は、如何なる適切な公開鍵インフラストラクチャ（例えば、ＳＰＫＩ、Ｘ．５０９ベースの証明書、など）に従ってもフォーマットされてよい。
【００３８】
交換された秘密鍵２０４及び２０６を用いて、暗号化されたチャネル２０２は、サーバエンレクーブ１０４とクライアントエンクレーブ１１４との間に確立されてよい。暗号化されたチャネル２０２は、通信ネットワークにおいてサーバ装置１０２及び／又はクライアント装置１１２によって確立されてよい。
【００３９】
サーバハッシュモジュール１０６はランダム鍵２０８を生成してよい。ランダム鍵２０８は、初期化又はセットアップ動作中にサーバハッシュモジュール１０６によって生成されてよい。ランダム鍵２０８は、ＰＲＦをサンプリングすることによって生成されてよい。ランダム鍵２０８は、クライアント装置１１２のクライアントエンクレーブ１１４に加えて、サーバ装置１０２と通信する如何なる他のクライアントエンクレーブへも送られてよい。ランダム鍵２０８は、クライアントエンクレーブ１１４に記憶されてよい。これは、ランダム鍵２０８にアクセスしにくくにし得る。ランダム鍵２０８の通信は、暗号化されたチャネル２０２を経由してよい。いくつかの実施形態において、ランダム鍵２０８の生成は、一度しか起きなくてよい。例えば、ランダム鍵２０８は、クライアント装置１１２とサーバ装置１０２との間のインタラクションを通して使用されてよい。
【００４０】
クライアントハッシュモジュール１１６は、ハッシュ２１０を生成してよい。ハッシュ２１０は次いで、暗号化されたチャネル２０２を介してサーバハッシュモジュール１０６へ送られてよい。ハッシュ２１０は、鍵値対の組を含んでよい。鍵値対は、例えば、（鍵，値）対：
｛（ｋ１，ｖ１），・・・，（ｋｎ，ｖｎ）｝
によって表されてよい。（鍵，値）対において、ｋ１・・・ｋｎは鍵を表す。パラメータｖ１・・・ｖｎは値を表す。パラメータｎは、（鍵，値）対に含まれる鍵及び値のための最大インデックス変数を表す。ハッシュ２１０は、入力データ２２２の鍵及び値であってよい。
【００４１】
サーバハッシュモジュール１０６は、受け取られたハッシュ２１０をハッシュテーブル１０８に割り当てるよう構成されてよい。いくつかの実施形態において、サーバハッシュモジュール１０６は、例となる代入式：
ＰＲＰ鍵ｒｋをサンプリングする；且つ
ｉ∈［１，ｎ］について：
ＨＴ．Ｕｐｄａｔｅ（ＰＲＦｓｋ（ｋπｒｋ（ｉ）），ｖπｒｋ（ｉ））
に従って、受信されたハッシュ２１０を割り当ててよい。代入式において、ｎは最大インデックス変数を表す。ＨＴ．Ｕｐｄａｔｅは、ハッシュテーブル１０８への割り当てを出力する割り当て関数を表す。ＨＴ．Ｕｐｄａｔｅは、集合単位の更新動作である。パラメータｓｋはランダム鍵を表す。関数ＰＲＦは、ランダム鍵をシードされる疑似ランダム関数を表す。パラメータＰＲＰは疑似ランダム置換を表す。疑似ランダム置換のいくつかの詳細は、上記のBelare  &  Rogawayにおいて与えられている。パラメータπは、［１，ｎ］から［１，ｎ］までの疑似ランダム置換を表す。よって、πは、最初のｎ個の自然数の順序を変える。パラメータｒｋは、ＰＲＰからサンプリングされた疑似ランダム置換を表す。
【００４２】
代入式に従って、ｉが１に等しいとして、代入式はＨＴ．Ｕｐｄａｔｅ（ＰＲＦｓｋ（ｋπｒｋ（１）），ｖπｒｋ（１））に縮減する。πｒｋ（１）の値は、Ｙ（ＰＲＰ、π及びｒｋに依存する。）によって表される特定の値に等しくなる。よって、代入式はＨＴ．Ｕｐｄａｔｅ（ＰＲＦｓｋ（ｋＹ），ｖＹ）に縮減し得る。値ｋＹ及びｖＹは、受け取られたハッシュ２１０の鍵値対のうちの１つに対応し得る。ＰＲＦｓｋは入力としてｋＹを受ける。ＰＲＦｓｋ（ｋＹ）の実行は、Ｘ（先と同じく、ＰＲＦ及びｓｋに依存する。）によって表される他の数に等しくなる。代入式は更に、ＨＴ．Ｕｐｄａｔｅ（Ｘ，ｖＹ）に縮減する。割り当て関数は次いで、入力として（Ｘ，ｖＹ）を受け、ハッシュテーブル１０８内のあるインデックスに対応する割り当てを返す。同様の演算の組が、ｉの各値について行われる。
【００４３】
ハッシュテーブル１０８の構築に続いて、サーバハッシュモジュール１０６は、ハッシュテーブルクエリ２１２を受け取ってよい。ハッシュテーブルクエリ２１２は、クライアントハッシュモジュール１１６で生成されてよく、暗号化されたチャネル２０２を介して通信されてよい。ハッシュテーブルクエリ２１２は、例となる鍵セット：
（ｋ１，・・・，ｋｍ）
によって表され得る鍵の組を含んでよい。鍵セットにおいて、ｋ１・・・ｋｍは鍵を表す。パラメータｍは、鍵セットに含まれる鍵のための最大インデックス変数を表す。
【００４４】
サーバハッシュモジュール１０６は、ハッシュテーブルクエリ２１２を受け取ってよい。ハッシュテーブルクエリ２１２に応答して、サーバハッシュモジュール１０６は、ハッシュテーブルクエリ２１２に含まれる鍵に対応する値２１４を取り出してよい。いくつかの実施形態において、サーバハッシュモジュール１０６は、例となる検索式：
ＰＲＰ鍵ｒｋをサンプリングする；且つ
ｉ∈［１，ｍ］について：
ｖπｒｋ（ｉ）＝ＨＴ．Ｆｉｎｄ（ＰＲＦｓｋ（ｋπｒｋ（ｉ）））
に従って値２１４を取り出してよい。検索式において、ＨＴ．Ｆｉｎｄは、ハッシュテーブル１０８のための読み出し関数を表す。ＨＴ．Ｆｉｎｄは、集合単位の発見動作を含んでよい。パラメータπは、［１，ｍ］から［１，ｍ］までの疑似ランダム置換を表す。よって、πは、最初のｍ個の自然数の順序を変える。検索式の実行によれば、代入式を参照して上述された演算の組に対して反対の演算の組が起こる。例えば、ｉが１に等しい場合に、ｋπｒｋ（ｉ）はｋＹに等しくなる。その上、ｖπｒｋ（ｉ）はｖＹに等しくなる。パラメータｋＹ、ｖＹは、上記のハッシュ２１０のうちの１つに対応し得る。値ｋＹはＰＲＫｓｋに入力されてよく、これはＸに等しくなる。然るに、検索式は、ｖＹ＝ＨＴ．Ｆｉｎｄ（ＰＲＦｓｋ（ｋＹ））、次いでｖＹ＝ＨＴ．Ｆｉｎｄ（Ｘ）に縮減し得る。同様の演算は、ｉの各値について行われてよい。検索式は、値２１４において鍵のための値がない場合にはヌル２１６を返す。
【００４５】
サーバハッシュモジュール１０６は次いで、鍵に対応する取り出された値２１４、又はヌル２１６を返してよい。取り出された値２１４及び／又はヌル２１６は、暗号化されたチャネル２０２を介してクライアントハッシュモジュール１１６へ送られてよい。
【００４６】
図３は、図１のセキュアハッシュ環境１００の例となる実施形態である、例となるＧＷＡＳ環境３００のブロック図である。ＧＷＡＳは、Ｃｏｎｔｏｌ（対照）装置３０２と又はＣａｓｅ（疾患）装置３０８と関連し得る幾人かの個人からの遺伝に関する記録の頻度統計を計算するよう構成されてよい。装置３０２及び３０８は、クライアント装置１１２と実質的に同様であり及び／又は対応してよい。遺伝に関する記録は、一塩基多型（ＳＮＰ：Single  Nucleotide  Polymorphism）識別子によって鍵をかけられてよい。ＳＮＰ識別子は数ビット長であってよい。
【００４７】
従来のＧＷＡＳ環境では、インデックスがＳＮＰ識別子自体である配列実装を作ることは、実際的でないことがある。然るに、ＧＷＡＳ環境３００は、ＧＷＡＳ  ＳＧＸエンクレーブ３２８で個人の記録のプライバシー保護マージングを有効に実装するよう、本開示で記載されるセキュアハッシュプロセスを提供してよい。ＧＷＡＳ  ＳＧＸエンクレーブ３２８は次いで、ＳＮＰ頻度３２５及びＳＮＰ３２２の組を出力してよい。一般に、出力されるＳＮＰ頻度３２５のみがクラウドに可視的であってよく、一方、個人の遺伝に関する記録は秘密のままであってよい。
【００４８】
ＧＷＡＳ環境３００では、Ｃｏｎｔｏｌ装置３０２はディクショナリＣｏｎｔｏｌ３０４を通信してよい。ディクショナリＣｏｎｔｏｌ３０４は、上記のハッシュ２１０に類似したハッシュ又は鍵値対を含んでよい。ディクショナリＣｏｎｔｏｌ３０４は、上述されたように確立され得る暗号化されたチャネル３１０を介してＧＷＡＳ  ＳＧＸエンクレーブ３２８へ送られてよい。ディクショナリＣｏｎｔｏｌ３０４は、Ｃｏｎｔｏｌ装置３０２に関連した患者等の遺伝に関する記録を含んでよい。ディクショナリＣｏｎｔｏｌ３０４は、Ｃｏｎｔｏｌ式：
ｄｉｃｔｃｏｎｔ［ｓｎｐ１］＝ａ′１
・・・
ｄｉｃｔｃｏｎｔ［ｓｎｐｌ］＝ａ′ｌ
として表されてよい。Ｃｏｎｔｏｌ式は、鍵値対の組又はディクショナリを含む。パラメータｓｎｐ１は、第１の対照患者についてのＳＮＰを表す。パラメータｓｎｐｌは、ｌ（エル）番目の対照患者についてのＳＮＰを表す。
【００４９】
同様に、ＧＷＡＳ環境３００では、Ｃａｓｅ装置３０８がディクショナリＣａｓｅ３０６を通信してよい。ディクショナリＣａｓｅ３０６は、上記のハッシュ２１０に類似したハッシュ又は鍵値対を含んでよい。ディクショナリＣａｓｅ３０６は、暗号化されたチャネル３１０を介してＧＷＡＳ  ＳＧＸエンクレーブ３２８へ送られてよい。ディクショナリＣａｓｅ３０６は、Ｃａｓｅ装置３０８に関連した患者等の遺伝に関する記録を含んでよい。ディクショナリＣａｓｅ３０６は、Ｃａｓｅ式：
ｄｉｃｔｃａｓｅ［ｓｎｐ１］＝ａ１
・・・
ｄｉｃｔｃａｓｅ［ｓｎｐｌ］＝ａｌ
として表されてよい。Ｃａｓｅ式は、鍵値対の組又はディクショナリを含む。パラメータｓｎｐ１は、第１の疾患患者についてのＳＮＰを表す。パラメータｓｎｐｌは、ｌ（エル）番目の疾患患者についてのＳＮＰを表す。
【００５０】
ディクショナリＣｏｎｔｏｌ３０４及びディクショナリＣａｓｅ３０６は、ＧＷＡＳ  ＳＧＸエンクレーブ３２８で受け取られてよい。ＧＷＡＳ  ＳＧＸエンクレーブ３２８は、ＧＷＡＳハッシュモジュール３２０を含んでよい。ＧＷＡＳハッシュモジュール３２０は、マージモジュール３１６及び分析モジュール３１８を含んでよい。分析モジュール３１８は、ディクショナリＣｏｎｔｏｌ３０４及びディクショナリＣａｓｅ３０６を処理するよう構成されてよい。例えば、分析モジュール３１８は、例となるカイ二乗式：
全てのｉ∈［１，ｌ］について
［ａｉ，ａ′ｉ，２ｎ１−ａｉ，２ｎ２−ａ′ｉ］；及び
［（ａｉ＋ａ′ｉ）／２，（ａｉ＋ａ′ｉ）／２，ｎ１＋ｎ２−（ａｉ＋ａ′ｉ）／２，ｎ１＋ｎ２−（ａｉ＋ａ′ｉ）／２］
の間でχ２テストを実行する
に従ってカイ二乗演算を実行してよい。カイ二乗式において、パラメータａｉ及びａ′ｉは上述されたとおりである。パラメータｎ１は、ゲノムワイド関連解析（GenomeWide  association  Study）（ＧＷＡＳ）におけるＣａｓｅグループ内のユーザの総数を表す。パラメータｎ２は、ＧＷＡＳにおけるＣｏｎｔｏｌグループ内のユーザの総数を表す。
【００５１】
分析モジュール３１８は、特定のＳＮＰ３２２と、その特定のＳＮＰに関連した１つ以上の値とを出力するよう構成されてよい。例えば、カイ二乗演算に基づき、ｐ値とともに最小ｐ値を含むＳＮＰが、分析モジュール３１８によって出力されるＳＮＰ３２２に含まれてよい。
【００５２】
マージモジュール３１６は、ディクショナリＣｏｎｔｏｌ３０４及びディクショナリＣａｓｅ３０６をマージするよう構成されてよい。マージ動作は、加算式：
（ｄｉｃｔＡ  ∪  ｄｉｃｔＢ）［ｘ］＝ｄｉｃｔＡ［ｘ］＋ｄｉｃｔＢ［ｘ］
によって表され得る加算動作を含んでよい。加算式は、一般化された式である。加算式において、ｄｉｃｔＡは、Ｃａｓｅ式又はディクショナリＣａｓｅ３０６を表し得る。パラメータｄｉｃｔＢはディクショナリＣｏｎｔｏｌ３０４を表し得る。パラメータｘは、ＧＷＡＳにおけるＳＮＰストリングを含み得るディクショナリ鍵を表す。
【００５３】
マージモジュール３１６は更に、ＳＮＰ頻度３２６を出力するよう構成されてよい。いくつかの実施形態において、ＳＮＰ頻度３２６は、頻度式：
（ｓｎｐ１，（ａ１＋ａ′１）／２（ｎ１＋ｎ２））
・・・・
（ｓｎｐｌ，（ａｌ＋ａ′ｌ）／２（ｎ１＋ｎ２））
によって表されてよい。頻度式において、ａｉ、ａ′ｉ、ｎ１及びｎ２は上述されたとおりである。
【００５４】
セキュアハッシュ環境１００の実施形態は、図３のＧＷＡ環境３００に限られない。セキュアハッシュ環境１００は、トラステッド・エグゼキューション環境を備えた如何なる適切な環境でも具現化されてよい。
【００５５】
図４は、本開示の少なくとも１つの実施形態に従って、トラステッド・エグゼキューション環境におけるセキュアハッシュ演算のために構成された例となるコンピューティングシステム４００を表す。コンピューティングシステム４００は、例えば、図１のセキュアハッシュ環境１００において実装されてよい。コンピューティングシステム４００の例には、サーバ装置１０２及びクライアント装置１１２のうちの一方又は両方が含まれ得る。コンピューティングシステム４００は、１つ以上のプロセッサ４１０と、メモリ４１２と、通信ユニット４１４と、ユーザインターフェイス装置４１６と、サーバハッシュモジュール１０６、クライアントハッシュモジュール１１６、及びＧＷＡハッシュモジュール３２０（まとめてモジュール１１６／１０６／３２０）を含むデータストレージ４０４とを含んでよい。
【００５６】
プロセッサ４１０は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む如何なる適切な特別目的又は汎用のコンピュータ、コンピューティングエンティティ、又はプロセッシング装置も含んでよく、如何なる適用可能なコンピュータ可読記憶媒体にも記憶された命令を実行するよう構成されてよい。例えば、プロセッサ４１０は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、ＡＳＩＣ、ＦＰＧＡ、あるいは、プログラム命令を解釈及び／若しくは実行するよう並びに／又はデータを処理するよう構成された如何なる他のデジタル又はアナログ回路も含んでよい。
【００５７】
図４では単一のプロセッサとして表されているが、プロセッサ４１０は、より一般的には、本開示で記載されている動作をいくつでも個々に又は集合的に実行するよう構成されたプロセッサをいくつでも含んでよい。その上、プロセッサ４１０の１つ以上は、１つ以上の異なる電子機器又はコンピューティングシステムにおいて存在してよい。いくつかの実施形態において、プロセッサ４１０は、メモリ４１２、データストレージ４０４、又はメモリ４１２及びデータストレージ４０４に記憶されているプログラム命令を解釈及び／若しくは実行し、並びに／又は記憶されているデータを処理してよい。いくつかの実施形態において、プロセッサ４１０は、データストレージ４０４からプログラム命令をフェッチし、プログラム命令をメモリ４１２にロードしてよい。プログラム命令がメモリ４１２にロードされた後、プロセッサ４１０はプログラム命令を実行してよい。
【００５８】
メモリ４１２及びデータストレージ４０４は、コンピュータ実行可能命令又はデータ構造を運ぶか又は記憶しているコンピュータ可読記憶媒体を含んでよい。そのようなコンピュータ可読記憶媒体は、プロセッサ４１０のような汎用又は特別目的のコンピュータによってアクセスされ得る如何なる利用可能な媒体も含んでよい。例として、制限なしに、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ若しくは他の光学ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶装置、フラッシュメモリ装置（例えば、ソリッドステートメモリ装置）、あるいは、コンピュータ実行可能命令又はデータ構造の形で所望のプログラムコードを携行又は記憶するために使用され得且つ汎用又は特別目的のコンピュータによってアクセスされ得る如何なる他の記憶媒体も含む有形な又は非一時的なコンピュータ可読記憶媒体を含んでよい。上記の組み合わせも、コンピュータ可読記憶媒体の適用範囲内に含まれ得る。コンピュータ実行可能命令は、例えば、プロセッサ４１０に特定の動作又は動作群を実行させるよう構成された命令及びデータを含んでよい。
【００５９】
通信ユニット４１４は、通信を受信及び送信するよう構成されたハードウェアの１つ以上の片を含んでよい。いくつかの実施形態において、通信ユニット４１４は、通信ハードウェア装置の中でも特に、アンテナ、有線ポート、及び変調／復調ハードウェアのうちの１つ以上を含んでよい。特に、通信ユニット４１４は、コンピューティングシステム４００の外から通信を受け、通信をプロセッサ４１０へ渡すよう、あるいは、プロセッサ４１０から他の装置又はネットワーク（例えば、図１の１２４）へ通信を送るよう構成されてよい。
【００６０】
ユーザインターフェイス装置４１６は、ユーザから入力を受け及び／又は出力をユーザへ供給するよう構成されたハードウェアの１つ以上の片を含んでよい。いくつかの実施形態において、ユーザインターフェイス装置４１６は、ハードウェア装置の中でも特に、スピーカー、マイクロホン、ディスプレイ、キーボード、タッチスクリーン、又はホログラフィック投影のうちの１つ以上を含んでよい。
【００６１】
モジュール１１６／１０６／３２０は、データストレージ４０４に記憶されているプログラム命令を含んでよい。プロセッサ４１０は、モジュール１１６／１０６／３２０をメモリ４１２にロードし、モジュール１１６／１０６／３２０を実行するよう構成されてよい。代替的に、プロセッサ４１０は、モジュール１１６／１０６／３２０をメモリ４１２にロードせずに、データストレージ４０４からライン・バイ・ラインでモジュール１１６／１０６／３２０を実行してよい。モジュール１１６／１０６／３２０を実行する場合に、プロセッサ４１０は、本開示において他の場所で記載されているセキュアハッシュ又はハッシュテーブル処理を実行するよう構成されてよい。
【００６２】
変更、追加、又は削除は、本開示の適用範囲から逸脱することなしに、コンピューティングシステム４００に対して行われてよい。例えば、いくつかの実施形態において、コンピューティングシステム４００は、ユーザインターフェイス装置４１６を含まなくてよい。いくつかの実施形態において、コンピューティングシステム４００の異なるコンポーネントは物理的に分離していてよく、如何なる適切なメカニズムによっても通信上結合されてよい。例えば、データストレージ４０４は、プロセッサ４１０、メモリ４１２、及び記憶装置へ通信上結合されている通信ユニット４１４を含む、サーバから分離した記憶装置の部分であってよい。本明細書で記載される実施形態は、以下で更に詳細に記載されるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む特別目的又は汎用のコンピュータの使用を含んでよい。
【００６３】
図５Ａ及び５Ｂは、本開示で記載される少なくとも１つの実施形態に従うセキュアハッシュ実装の例となる方法５００のフローチャートである。別個のブロックとして表されているが、図５Ａ及び５Ｂにおける様々なブロックは、所望の実施に応じて、更なるブロックに分けられても、より少ないブロックへとまとめられても、あるいは削除されてもよい。
【００６４】
方法５００は、図１のセキュアハッシュ環境１００又はＧＷＡＳ環境３００のような動作環境で実行されてよい。方法５００は、図１及び２を参照して記載されるサーバ装置１０２又はクライアント装置１１２によっていくつかの実施形態においてプログラム可能に実行されてよい。いくつかの実施形態において、サーバ装置１０２、クライアント装置１１２、又は他のコンピューティングシステムは、コンピューティングシステム、サーバ装置１０２、又はクライアント装置１１２に方法５００を実行させるか又はその実行を制御させるよう１つ以上のプロセッサ（例えば、図４のプロセッサ４１０）によって実行可能であるプログラミングコード又は命令を記憶している非一時的なコンピュータ可読媒体（例えば、図４のメモリ４１２）を含んでよく、あるいは、それへ通信上結合されてよい。追加的に、又は代替的に、サーバ装置１０２又はクライアント装置１１２は、本開示において他の場所で記載されたプロセッサ４１０であって、コンピュータ命令を実行して、サーバ装置１０２、クライアント装置１１２、又は他のコンピューティングシステムに方法５００を実行させるか又はその実行を制御させるよう構成されるプロセッサ４１０を含んでよい。
【００６５】
図５Ａを参照して、方法５００はブロック５０２から開始してよい。ブロック５０２で、秘密鍵の交換が実行されてよい。秘密鍵の交換は、サーバ装置のサーバエンクレーブとクライアント装置のクライアントエンクレーブとの間で実行されてよい。サーバエンレクーブ及びクライアントエンクレーブは、トラステッド・エグゼキューション環境の部分として実装されてよい。いくつかの実施形態において、トラステッド・エグゼキューション環境はＳＧＸを含んでよい。ブロック５０４で、暗号化されたチャネルが確立されてよい。暗号化されたチャネルは、サーバエンクレーブとクライアントエンクレーブとの間に確立されてよい。暗号化されたチャネルは、交換された秘密鍵を用いて確立されてよい。
【００６６】
ブロック５０６で、ランダム鍵が生成されてよい。ランダム鍵は、鍵つきハッシュ関数又はＰＲＦのために生成されてよい。ランダム鍵の生成は、ＰＲＦをサンプリングすることを含んでよい。いくつかの実施形態において、ランダム鍵の生成は、一度しか起こらなくてよい。鍵つきハッシュ関数は、セキュアハッシュアルゴリズム（ＳＨＡ）に基づいてよく、ＳＨＡは、ＳＨＡ−１、ＳＨＡ−２、又はＳＨＡ−３を含んでよい。ブロック５０８で、ランダム鍵は、１つ以上のクライアント装置へ送られてよい。ランダム鍵は、暗号化されたチャネルを介してクライアント装置のクライアントエンクレーブへ送られてよい。
【００６７】
ブロック５１０で、入力データのハッシュが受け取られてよい。ハッシュは、クライアントエンクレーブから受け取られてよい。ハッシュは、暗号化されたチャネルを介してサーバエンクレーブで受け取られてよい。ハッシュは、複数の鍵値対を含んでよい。鍵値対は、（鍵，値）対｛（ｋ１，ｖ１），・・・，（ｋｎ，ｖｎ）｝によって表されてよい。ここで、ｋ１・・・ｋｎは鍵を表し、ｖ１・・・ｖｎは値を表し、ｎは鍵及び値のための最大インデックス変数である。
【００６８】
図５Ｂを参照すると、ブロック５１２で、ハッシュテーブルが構築されてよい。ハッシュテーブルは構築されてよい。ハッシュテーブルは、受け取られたハッシュに含まれている鍵値対に基づいてよい。ハッシュテーブルを構築するよう、割り当てがハッシュに適用されてよい。ハッシュは、例となる代入式に従って割り当てられてよい。いくつかの実施形態において、代入式は上述されている。ブロック５１４で、ハッシュテーブルは、暗号化されたメモリに格納されてよい。
【００６９】
ブロック５１６で、ハッシュテーブルクエリが受け取られてよい。ハッシュテーブルクエリは、クライアント装置から受け取られてよい。ハッシュテーブルクエリは複数の鍵を含んでよい。鍵は、鍵セット（ｋ１，・・・，ｋｍ）によって表されてよい。ここで、ｋ１・・・ｋｍは鍵を表し、ｍは鍵のための最大インデックス変数である。ブロック５１８で、値が取り出されてよい。値は、ハッシュテーブルクエリに応答して取り出されてよい。いくつかの実施形態において、値を取り出すことは、検索式に従って実行されてよく、これの例は上述されている。ブロック５２０で、取り出された値が返される。取り出された値は、鍵又はヌルに対応してよい。ヌルは、鍵のうちの１つについてハッシュテーブルに値が挿入されていない場合に返されてよい。
【００７０】
当業者に明らかなように、本明細書で開示されているこの及び他のプロシージャ及び方法に関して、プロセス及び方法において実行される機能は、別の順序で実施されてよい。更に、説明されているステップ及び動作は、単に例として与えられており、ステップ及び動作の一部は、開示されている実施形態から逸脱することなしに、任意であっても、より少ないステップ及び動作へとまとめられても、又は更なるステップへと広げられてもよい。例えば、いくつかの実施形態において、方法５００は、クエリコリジョンの分配のみが、権限のないエンティティに公開されることに対して脆弱であるように、実行されてよい。
【００７１】
本明細書で記載される実施形態は、以下で更に詳細に説明されるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む特別目的又は汎用のコンピュータの使用を含んでよい。
【００７２】
本明細書で記載される実施形態は、コンピュータ実行可能命令又はデータ構造を運ぶか又は記憶しているコンピュータ可読媒体を用いて実装されてよい。そのようなコンピュータ可読媒体は、汎用又は特別目的のコンピュータによってアクセスされ得る如何なる利用可能な媒体であってもよい。例として、制限なしに、そのようなコンピュータ可読媒体は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、電気的消去可能なプログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、コンパクトディスク・リードオンリーメモリ（ＣＤ−ＲＯＭ）若しくは他の光学ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶装置、フラッシュメモリ装置（例えば、ソリッドステートメモリ装置）、あるいは、コンピュータ実行可能命令又はデータ構造の形で所望のプログラムコードを携行又は記憶するために使用され得且つ汎用又は特別目的のコンピュータによってアクセスされ得る如何なる他の記憶媒体も含む非一時的なコンピュータ可読記憶媒体を含んでよい。上述されたものの組み合わせも、コンピュータ可読媒体の適用範囲内に含まれてよい。
【００７３】
コンピュータ実行可能命令は、例えば、汎用のコンピュータ、特別目的のコンピュータ、又は特別目的のプロセッシング装置（例えば、１つ以上のプロセッサ）に特定の機能又は機能群を実行させる命令及びデータを含んでよい。構造的な特徴及び／又は方法論的な動作に特有の言語で対象が記載されてきたが、添付の特許請求の範囲で定義されている対象は、必ずしも、上記の具体的な特徴又は動作に制限されないことが理解されるべきである。むしろ、上記の具体的な特徴又は動作は、特許請求の範囲を実施する形態の例として開示されている。
【００７４】
本明細書で使用されるように、語“モジュール”又は“コンポーネント”は、モジュール若しくはコンポーネントの動作を実行するよう構成された特定のハードウェア実施、並びに／又はコンピューティングシステムの汎用ハードウェア（例えば、コンピュータ可読媒体、プロセッシング装置、など）によって記憶及び／若しくは実行され得るソフトウェアオブジェクト若しくはソフトウェアルーチンを指し得る。いくつかの実施形態において、本明細書で記載される種々のコンポーネント、モジュール、エンジン、及びサービスは、コンピューティングシステムで（例えば、別個のスレッドとして）実行するオブジェクト又はプロセスとして実装されてよい。本明細書で記載されるシステム及び方法の一部は、概して、（汎用ハードウェアによって記憶及び／又は実行される）ソフトウェアにおいて実装されるものとして記載されているが、特定のハードウェア実施、又はソフトウェア及び特定のハードウェア実施の組み合わせも可能であり、考えられている。本明細書において、“コンピューティングエンティティ”は、本明細書で以前に定義されたあらゆるコンピューティングシステム、又はコンピューティングシステムで実行されるあらゆるモジュール若しくはモジュールの組み合わせであってよい。
【００７５】
ここで挙げられている全ての例及び条件付き言語は、当該技術の促進に本発明者によって寄与される概念及び本発明を読者が理解するのを助ける教育上の目的を意図され、そのような具体的に挙げられている例及び条件に制限されないと解釈されるべきである。本発明の実施形態が詳細に記載されてきたが、様々な変更、置換、及び代替が、本開示の主旨及び適用範囲から逸脱することなしに行われてよい。
【００７６】
上記の実施形態に加えて、以下の付記を開示する。
（付記１）
セキュアハッシュテーブル実装の方法であって、
サーバ装置のサーバエンクレーブとクライアント装置のクライアントエンクレーブとの間で秘密鍵の交換を実行することと、
前記交換された秘密鍵を用いて、前記サーバエンクレーブと前記クライアントエンクレーブとの間に暗号化されたチャネルを確立することと、
鍵つきハッシュ関数又は疑似ランダム関数のためのランダム鍵を生成することと、
前記暗号化されたチャネルを介して前記クライアント装置の前記クライアントエンクレーブへ前記ランダム鍵を送ることと、
前記クライアントエンクレーブから前記暗号化されたチャネルを介して前記サーバエンクレーブで入力データのハッシュを受信することと、
前記受信されたハッシュに含まれる複数の鍵値対に基づきハッシュテーブルを構築することと、
前記クライアント装置から、複数の鍵を含むハッシュテーブルクエリを受信することと、
前記ハッシュテーブルクエリに応答して、前記複数の鍵に対応する値を取り出すことと、
前記複数の鍵に対応する前記取り出された値を、又は前記ハッシュテーブルクエリに含まれる前記複数の鍵の中の１つについて前記ハッシュテーブルに値が挿入されていない場合にはヌルを返すことと
を有する方法。
（付記２）
前記ランダム鍵を生成することは、疑似ランダム関数をサンプリングすることを含む、
付記１に記載の方法。
（付記３）
前記複数の鍵値対は、（鍵，値）対によって表され、ｋ１・・・ｋｎが鍵を表し、ｖ１・・・ｖｎが値を表し、ｎが前記鍵及び前記値のための最大インデックス変数であるとして、｛（ｋ１，ｖ１），・・・，（ｋｎ，ｖｎ）｝であり、
前記入力データのハッシュは、ｉ∈［１，ｎ］についての式ＨＴ．Ｕｐｄａｔｅ（ＰＲＦｓｋ（ｋπｒｋ（ｉ），ｖπｒｋ（ｉ）））に従って割り当てられ、ＨＴ．Ｕｐｄａｔｅは割り当て関数を表し、ｓｋはランダム鍵を表し、ＰＲＦは疑似ランダム関数を表し、πは［１，ｎ］から［１，ｎ］までの疑似ランダム置換を表し、ｒｋは疑似ランダム置換鍵を表す、
付記２に記載の方法。
（付記４）
前記複数の鍵は、鍵セット（ｋ１，・・・，ｋｍ）によって表され、ｋ１・・・ｋｍは鍵を表し、ｍは前記鍵のための最大インデックス変数であり、
前記値を取り出すことは、ｉ∈［１，ｍ］についての式ｖπｒｋ（ｉ）＝ＨＴ．Ｆｉｎｄ（ＰＲＦｓｋ（ｋπｒｋ（ｉ）））に従って実行され、ＨＴ．Ｆｉｎｄは、前記ハッシュテーブルのための読み出し関数を表し、πは、［１，ｍ］から［１，ｍ］までの疑似ランダム置換を表す、
付記３に記載の方法。
（付記５）
前記ランダム鍵を生成することは、一度しか起きない、
付記２に記載の方法。
（付記６）
前記ランダム鍵は、前記鍵つきハッシュ関数について生成され、
前記鍵つきハッシュ関数は、ＳＨＡ−１、ＳＨＡ−２、又はＳＨＡ−３を含むセキュアハッシュアルゴリズムに基づく、
付記１に記載の方法。
（付記７）
暗号化されたメモリに前記ハッシュテーブルを記憶することを更に有する
付記１に記載の方法。
（付記８）
前記サーバエンクレーブ及び前記クライアントエンクレーブは、トラステッド・エグゼキューション環境の部分である、
付記１に記載の方法。
（付記９）
前記トラステッド・エグゼキューション環境は、ソフトウェア・ガード・エクステンションを含む、
付記８に記載の方法。
（付記１０）
クエリコリジョンの分配のみが、権限のないエンティティに公開されることに対して弱い、
付記１に記載の方法。
（付記１１）
サーバ装置のサーバエンクレーブとクライアント装置のクライアントエンクレーブとの間で秘密鍵の交換を実行することと、
前記交換された秘密鍵を用いて、前記サーバエンクレーブと前記クライアントエンクレーブとの間に暗号化されたチャネルを確立することと、
鍵つきハッシュ関数又は疑似ランダム関数のためのランダム鍵を生成することと、
前記暗号化されたチャネルを介して前記クライアント装置の前記クライアントエンクレーブへ前記ランダム鍵を送ることと、
前記クライアントエンクレーブから前記暗号化されたチャネルを介して前記サーバエンクレーブで入力データのハッシュを受信することと、
前記受信されたハッシュに含まれる複数の鍵値対に基づきハッシュテーブルを構築することと、
前記クライアント装置から、複数の鍵を含むハッシュテーブルクエリを受信することと、
前記ハッシュテーブルクエリに応答して、前記複数の鍵に対応する値を取り出すことと、
前記複数の鍵に対応する前記取り出された値を、又は前記ハッシュテーブルクエリに含まれる前記複数の鍵の中の１つについて前記ハッシュテーブルに値が挿入されていない場合にはヌルを返すことと
を含む動作を実行するよう又は該実行を制御するよう１つ以上のプロセッサによって実行されるプログラミングコードが符号化されている非一時的なコンピュータ可読媒体。
（付記１２）
前記ランダム鍵を生成することは、疑似ランダム関数をサンプリングすることを含む、
付記１１に記載の非一時的なコンピュータ可読媒体。
（付記１３）
前記複数の鍵値対は、（鍵，値）対によって表され、ｋ１・・・ｋｎが鍵を表し、ｖ１・・・ｖｎが値を表し、ｎが前記鍵及び前記値のための最大インデックス変数であるとして、｛（ｋ１，ｖ１），・・・，（ｋｎ，ｖｎ）｝であり、
前記入力データのハッシュは、ｉ∈［１，ｎ］についての式ＨＴ．Ｕｐｄａｔｅ（ＰＲＦｓｋ（ｋπｒｋ（ｉ），ｖπｒｋ（ｉ）））に従って割り当てられ、ＨＴ．Ｕｐｄａｔｅは割り当て関数を表し、ｓｋはランダム鍵を表し、ＰＲＦは疑似ランダム関数を表し、πは［１，ｎ］から［１，ｎ］までの疑似ランダム置換を表し、ｒｋは疑似ランダム置換鍵を表す、
付記１２に記載の非一時的なコンピュータ可読媒体。
（付記１４）
前記複数の鍵は、鍵セット（ｋ１，・・・，ｋｍ）によって表され、ｋ１・・・ｋｍは鍵を表し、ｍは前記鍵のための最大インデックス変数であり、
前記値を取り出すことは、ｉ∈［１，ｍ］についての式ｖπｒｋ（ｉ）＝ＨＴ．Ｆｉｎｄ（ＰＲＦｓｋ（ｋπｒｋ（ｉ）））に従って実行され、ＨＴ．Ｆｉｎｄは、前記ハッシュテーブルのための読み出し関数を表し、πは、［１，ｍ］から［１，ｍ］までの疑似ランダム置換を表す、
付記１３に記載の非一時的なコンピュータ可読媒体。
（付記１５）
前記ランダム鍵を生成することは、一度しか起きない、
付記１２に記載の非一時的なコンピュータ可読媒体。
（付記１６）
前記ランダム鍵は、前記鍵つきハッシュ関数について生成され、
前記鍵つきハッシュ関数は、ＳＨＡ−１、ＳＨＡ−２、又はＳＨＡ−３を含むセキュアハッシュアルゴリズムに基づく、
付記１１に記載の非一時的なコンピュータ可読媒体。
（付記１７）
前記動作は、暗号化されたメモリに前記ハッシュテーブルを記憶することを更に含む、
付記１１に記載の非一時的なコンピュータ可読媒体。
（付記１８）
前記サーバエンクレーブ及び前記クライアントエンクレーブは、トラステッド・エグゼキューション環境の部分である、
付記１１に記載の非一時的なコンピュータ可読媒体。
（付記１９）
前記トラステッド・エグゼキューション環境は、ソフトウェア・ガード・エクステンションを含む、
付記１８に記載の非一時的なコンピュータ可読媒体。
（付記２０）
クエリコリジョンの分配のみが、権限のないエンティティに公開されることに対して弱い、
付記１１に記載の非一時的なコンピュータ可読媒体。
【符号の説明】
【００７７】
１００              セキュアハッシュ環境
１０２              サーバ装置
１０４              サーバエンクレーブ
１０６              サーバハッシュモジュール
１０８              ハッシュテーブル
１１０              暗号化されたメモリ
１１２Ａ，１１２Ｂ  クライアント装置
１１４              クライアントエンクレーブ
１１６              クライアントハッシュモジュール
１２４              ネットワーク
１２６              トラステッド・エグゼキューション環境
２０４              サーバ秘密鍵
２０６              クライアント秘密鍵
２０８              サーバ鍵
２１０              ハッシュ
２１２              ハッシュテーブルクエリ
２１４              値
２１６              ヌル
２２２              入力データ
４００              コンピューティングシステム
【図１】
2019121375.tif 000003
【図２】
2019121375.tif 000004
【図３】
2019121375.tif 000005
【図４】
2019121375.tif 000006
【図５Ａ】
2019121375.tif 000007
【図５Ｂ】
2019121375.tif 000008