(57)【要約】【課題】準同型暗号を提供する。【解決手段】方法は、暗号化およびデータ復号のための秘密鍵を生成することを含む。本方法は、平文形式でのデータのセットを同定することを含む。本方法はさらに、処理装置によって、平文形式での前記データを多項式を使って暗号文に変換することを含む。本方法は、前記暗号文をデータ処理のためにリモート装置に送ることをも含む。ここで、リモート装置は、前記秘密鍵をもつことなく前記暗号文を処理することになる。本方法は、前記リモート装置から処理された暗号文を受領することを含む。本方法はさらに、前記処理装置によって、前記処理された暗号文を、前記秘密鍵および前記多項式に基づいて復号して、処理された平文を与えることを含む。本方法は、処理された平文を出力することも含む。【選択図】図２
2018005220.tif 000002
【特許請求の範囲】
【請求項１】
暗号化およびデータ復号のための秘密鍵を生成する段階と；
平文形式で記憶されているデータのセットを同定する段階と；
処理装置によって、前記データのセットを多項式を使って暗号文に変換する段階と；
前記暗号文をデータ処理のためにリモート装置に送る段階と；
前記リモート装置から、処理された暗号文を受領する段階と；
前記処理装置によって、前記処理された暗号文を、前記秘密鍵および前記多項式に基づいて復号して、処理された平文を与える段階と；
前記処理された平文を出力する段階とを含む、
方法。
【請求項２】
前記秘密鍵を生成する段階が：
シーケンスのセットのセットを含む体を同定し；
前記体からランダム・シーケンスを選択し；
前記ランダム・シーケンスを前記秘密鍵として設定することを含む、
請求項１記載の方法。
【請求項３】
前記データのセットを変換する段階が：
前記多項式を生成し；
前記データのセットを暗号化して前記暗号文を生成することを含む、
請求項１記載の方法。
【請求項４】
前記データのセットが、ある程度のランダム性をもって暗号化される、請求項１記載の方法。
【請求項５】
前記処理された暗号文が、リード・ソロモン復号技法を使って復号される、請求項１記載の方法。
【請求項６】
前記復号することが：
前記秘密鍵をデータ記憶部から取り出し；
前記処理された暗号文および前記秘密鍵を使って前記多項式を再現することを含む、
請求項１記載の方法。
【請求項７】
前記出力する段階が、前記処理された平文をディスプレイ装置上に表示することを含む、請求項１記載の方法。
【請求項８】
プログラム可能コードを記憶しているメモリと；
前記メモリに動作上結合されているプロセッサとを有するシステムであって、前記プロセッサは前記プログラム可能コードを実行して動作を実行するよう構成されており、前記動作は：
暗号化およびデータ復号のための秘密鍵を生成する段階と；
平文形式で記憶されているデータのセットを同定する段階と；
前記データのセットを多項式を使って暗号文に変換する段階と；
前記暗号文をデータ処理のためにリモート装置に送る段階と；
前記リモート装置から、処理された暗号文を受領する段階と；
前記処理された暗号文を、前記秘密鍵および前記多項式に基づいて復号して、処理された平文を与える段階と；
前記処理された平文を出力する段階とを含む、
システム。
【請求項９】
前記プロセッサが、前記秘密鍵を生成するときに：
シーケンスのセットのセットを含む体を同定し；
前記体からランダム・シーケンスを選択し；
前記ランダム・シーケンスを前記秘密鍵として設定することを含む、
動作を実行するようさらに構成されている、請求項８記載のシステム。
【請求項１０】
前記プロセッサが、前記データのセットを変換するときに：
前記多項式を生成し；
前記データのセットを暗号化して前記暗号文を生成することを含む、
動作を実行するようさらに構成されている、請求項８記載のシステム。
【請求項１１】
前記データのセットが、ある程度のランダム性をもって暗号化される、請求項８記載のシステム。
【請求項１２】
前記処理された暗号文を、リード・ソロモン復号技法を使って復号することをさらに含む、請求項８記載のシステム。
【請求項１３】
前記プロセッサが、前記処理された暗号文を復号するときに：
前記秘密鍵をデータ記憶部から取り出し；
前記処理された暗号文および前記秘密鍵を使って前記多項式を再現することを含む、
請求項８記載のシステム。
【請求項１４】
前記出力する段階が、前記処理された平文をディスプレイ装置上に表示することを含む、請求項８記載のシステム。
【請求項１５】
動作を実行するまたは該動作の実行を制御するためにプロセッサによって実行可能なプログラミング・コードがエンコードされている非一時的なコンピュータ可読媒体であって、前記動作は：
暗号化およびデータ復号のための秘密鍵を生成する段階と；
平文形式で記憶されているデータのセットを同定する段階と；
前記データのセットを多項式を使って暗号文に変換する段階と；
前記暗号文をデータ処理のためにリモート装置に送る段階と；
前記リモート装置から、処理された暗号文を受領する段階と；
前記処理された暗号文を、前記秘密鍵および前記多項式に基づいて復号して、処理された平文を与える段階と；
前記処理された平文を出力する段階とを含む、
非一時的なコンピュータ可読媒体。
【請求項１６】
前記秘密鍵を生成する段階が：
シーケンスのセットのセットを含む体を同定し；
前記体からランダム・シーケンスを選択し；
前記ランダム・シーケンスを前記秘密鍵として設定することを含む、
請求項１５記載の非一時的なコンピュータ可読媒体。
【請求項１７】
前記変換する段階が：
前記多項式を生成し；
前記データのセットを暗号化して前記暗号文を生成することを含む、
請求項１５記載の非一時的なコンピュータ可読媒体。
【請求項１８】
前記処理された暗号文を、リード・ソロモン復号技法を使って復号することをさらに含む、請求項１５記載の非一時的なコンピュータ可読媒体。
【請求項１９】
前記復号することが：
前記秘密鍵をデータ記憶部から取り出し；
前記処理された暗号文および前記秘密鍵を使って前記多項式を再現することを含む、
請求項１５記載の非一時的なコンピュータ可読媒体。
【請求項２０】
前記出力する段階が、前記処理された平文をディスプレイ装置上に表示することを含む、請求項１５記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本稿で論じる実施形態は多項式ベースの準同型暗号に関する。
【背景技術】
【０００２】
準同型暗号（HE:  homomorphic  encryption）は、秘密鍵をもたなくても誰でも根底にあるデータに対して演算を実行できるようにする暗号方式である。そのような演算の結果は暗号化されたデータを含む。秘密鍵を所有する当時者は結果を復号し、復元することができる。
【０００３】
本願で特許請求される主題は、何らかの欠点を解決する、あるいは上記のような環境でのみ動作する実施形態に限定されない。むしろ、この背景は、本稿で記載されるいくつかの実施形態が実施されうる一つの例示的な技術分野を示すために与えられているだけである。
【発明の概要】
【課題を解決するための手段】
【０００４】
ある実施形態のある側面によれば、方法は、暗号化およびデータ復号のための秘密鍵を生成することを含む。本方法は、平文形式でのデータのセットを同定することを含む。本方法はさらに、処理装置によって、平文形式での前記データを多項式を使って暗号文に変換することを含む。本方法は、前記暗号文をデータ処理のためにリモート装置に送ることをも含む。ここで、リモート装置は、前記秘密鍵をもつことなく前記暗号文を処理することになる。本方法は、前記リモート装置から処理された暗号文を受領することを含む。本方法はさらに、前記処理装置によって、前記処理された暗号文を、前記秘密鍵および前記多項式に基づいて復号して、処理された平文を与えることを含む。本方法は、処理された平文を出力することも含む。
【０００５】
実施形態の目的および利点は、少なくとも、請求項において具体的に指摘される要素、特徴および組み合わせによって、実現され、達成される。
【０００６】
以上の概括的な記述および以下の詳細な説明は例示および説明するものであり、特許請求される発明を制約するものではないことが理解される。
【図面の簡単な説明】
【０００７】
例示的実施形態について、付属の図面を使ってさらに具体的かつ詳細に記述し、説明する。
【図１】ある例示的な動作環境のブロック図を示す図である。
【図２】多項式ベースの準同型暗号に関係した例示的なデータ・フローを示す図である。
【図３】準同型暗号方式を生成し、管理する例示的な方法の流れ図である。
【図４】ランダム多項式を使って平文のデータのセットを暗号文に変換する例示的な方法の流れ図である。
【図５】処理された暗号文を復号する例示的な方法の流れ図である。
【図６】暗号文を処理する例示的な方法の流れ図である。
【図７】機械に本稿で論じられる方法の任意の一つまたは複数を実行させるための一組の命令がその中で実行されうる、コンピューティング装置の例示的な形での機械の図的な表現を示す図である。  これらはみな本稿に記載される少なくとも一つの実施形態に従って構成される。
【発明を実施するための形態】
【０００８】
準同型暗号（HE）は、秘密鍵をもたなくても誰でも根底にあるデータに対して演算を実行できるようにする暗号方式である。そのような演算の結果は暗号化されたデータを含む。秘密鍵を所有する当時者は演算の結果を復号し、復元することができる。HEは、根底にあるデータを、演算を実行するシステムに対してプライベートに保ちつつ、根底にあるデータに対して演算が実行されうる状況で有用でありうる。たとえば、HEは、データ演算をクラウドのような他のエンティティに外注するときに有用でありうる。HEに対するいくつかの通常のアプローチは、整数演算、ラティス演算または環演算を使ってデータを暗号化することを含む。しかしながら、これらのアプローチのそれぞれは、さまざまな欠点を含む。たとえば、整数、ラティスおよび環に基づくHE方式は、アルゴリズムの複雑さのために実装が難しいことがあり、あるいは実際的な計算のためには効率的でないことがある。
【０００９】
本開示の諸側面は、多項式演算に基づくHE方式を提供することによって、既存のHE方式のこれらおよび他の欠点に対処する。暗号化されたデータは、リード・ソロモン復号を使って復号されうる。開示されるHE方式の安全性は、データを暗号化する際の、多項式評価x座標の隠されたセットおよびノイズのランダム加算に基づきうる。多項式ベースの計算は実装するのがより簡単であることがあり、さまざまな標準的な計算ライブラリの一部であることがある。
【００１０】
本開示のいくつかの側面は、多項式ベースのHEを投票システムとともに使ってもよい。いくつかの投票システムでは、候補に対する総得票またはさまざまな投票指標を計算するためにサーバーを使うことが有用であることがある。同時に、個々の票のプライバシーが望まれる。多項式ベースのHE方式は、サーバーが、暗号化されたデータに対してそのような得票総数を計算することを許容する。秘密鍵保持者が得票総数を復号し、復元しうる。
【００１１】
少なくとも一つの実施形態では、多項式ベースのHEはヘルスケアのコンテキストにおいて使用されてもよい。ヘルスケア・データは典型的には、性質上、プライベートであり、プライベートな健康データを特化した解析および／または記憶のためにサードパーティーに送ることに障害を導入しうる。多項式ベースのHE方式を用いれば、病院は、患者のプライバシーの保護を改善しつつ、サードパーティーにそのようなサービスを安全に外注しうる。
【００１２】
本開示のいくつかの側面は、多項式ベースのHE方式を、プライバシーを保護するウェブ・サーバーとともに使ってもよい。いくつかのエンティティは、機械学習アルゴリズムのようなさまざまなソフトウェア・サービスへのウェブ・アクセスを、根底にあるソフトウェア・コードを秘密に保つ目的で、誰もコードをリバースエンジニアリングできないようにして、提供することがある。さらに、ユーザーは自分の敏感なデータがそのようなエンティティの手に渡るのを望まないことがある。HE方式は、ユーザー・データの保護を改善しつつ、そのようなサービスを可能にする。
【００１３】
これらおよび他の実施形態の追加的な詳細が付属の図面との関連で論じられる。図面において、共通のラベルを付された項目は、特に断わりのない限り、同様の構造を示す。図面はいくつかの実施形態の図的で概略的な表現であり、限定することは意図されておらず、必ずしも縮尺どおりに描かれていない。諸図面を通じて、特に断わりのない限り、同様の符号は一般に同様の構造を指す。
【００１４】
図１は、本稿に記載される少なくとも一つの実施形態に従って構成された例示的な動作環境１００のブロック図を示している。動作環境１００は、第一の装置１０４、第二の装置１０６、データ記憶部１１４、データ記憶部１１６およびネットワーク１０７を含む。第一の装置１０４、第二の装置１０６、データ記憶部１１４およびデータ記憶部１１６（まとめて「環境コンポーネント」）はネットワーク１０７を介して通信上結合されていてもよい。環境コンポーネントは、ネットワーク１０７を介して互いとの間で通信してもよい。環境コンポーネントのそれぞれは、以下の段落において手短かに記述される。
【００１５】
第一の装置１０４はプロセッサ・ベースのコンピューティング・システムを含んでいてもよい。第一の装置１０４はメモリ、プロセッサおよびネットワーク通信機能を含んでいてもよい。動作環境１００では、第一の装置１０４はデータおよび情報を第二の装置１０６にネットワーク１０７を介して通信することができてもよい。第一の装置１０４のいくつかの例は携帯電話、スマートフォン、タブレット・コンピュータ、ラップトップ・コンピュータ、デスクトップ・コンピュータ、セットトップボックスまたは接続された装置などを含んでいてもよい。少なくとも一つの実施形態では、第一の装置１０４はサーバーを含む。たとえば、第一の装置１０４は、ハードウェア・サーバーまたはサーバーとして機能するよう構成された他のプロセッサ・ベースのコンピューティング装置を含んでいてもよい。第一の装置１０４は、データを暗号化、復号および解読するよう構成されていてもよい。
【００１６】
第二の装置１０６はプロセッサ・ベースのコンピューティング・システムを含んでいてもよい。第二の装置１０６はメモリ、プロセッサおよびネットワーク通信機能を含んでいてもよい。動作環境１００では、第二の装置１０６はデータおよび情報を第一の装置１０４にネットワーク１０７を介して通信することができてもよい。第二の装置１０６のいくつかの例は携帯電話、スマートフォン、タブレット・コンピュータ、ラップトップ・コンピュータ、デスクトップ・コンピュータ、セットトップボックスまたは接続された装置などを含んでいてもよい。少なくとも一つの実施形態では、第二の装置１０６はサーバーを含む。たとえば、第二の装置１０６は、ハードウェア・サーバーまたはサーバーとして機能するよう構成された他のプロセッサ・ベースのコンピューティング装置を含んでいてもよい。第二の装置１０６は、実際のデータを明かしたり観察したりすることなく、暗号化されたデータを処理するよう構成されていてもよい。
【００１７】
ネットワーク１０７は、有線ネットワーク、無線ネットワークまたはそれらの任意の組み合わせを含んでいてもよい。ネットワーク１０７は、スター構成、トークンリング構成または他の構成を含むいかなる項的な構成を含んでいてもよい。ネットワーク１０７は、ローカル・エリア・ネットワーク（LAN）、広域ネットワーク（WAN）（たとえばインターネット）および／またはそれを通じて複数の装置が通信しうる他の相互接続されたデータ経路を含んでいてもよい。いくつかの実施形態では、ネットワーク１０７はピアツーピア・ネットワークを含んでいてもよい。ネットワーク１０７は、多様な異なる通信プロトコルにおいてデータの通信を可能にしうる遠隔通信ネットワークに結合されていてもよく、あるいはその諸部分を含んでいてもよい。いくつかの実施形態では、ネットワーク１０７は、ショート・メッセージング・サービス（SMS）、マルチメディア・メッセージング・サービス（MMS）、ハイパーテキスト転送プロトコル（HTTP）、直接データ接続、無線アプリケーション・プロトコル（WAP）、電子メールなどを介することを含め、データを送受信するためのブルートゥース（登録商標）通信ネットワークまたはセルラー通信ネットワークを含んでいてもよい。
【００１８】
データ記憶部１１４および１１６はそれぞれ任意のメモリまたはデータ記憶部を含みうる。データ記憶部１１４および１１６はそれぞれ、環境コンポーネントが記憶部１１４および１１６と通信しうるよう、ネットワーク通信機能を含んでいてもよい。いくつかの実施形態では、記憶部１１４および１１６のそれぞれは、コンピュータ実行可能命令またはデータ構造を担持するまたは記憶するためのコンピュータ可読記憶媒体を含んでいてもよい。コンピュータ可読記憶媒体は、汎用または特殊目的コンピュータ、たとえばプロセッサによってアクセスされうる任意の利用可能な媒体を含みうる。たとえば、データ記憶部１１４および１１６は、有体なまたは非一時的なコンピュータ可読記憶媒体であってもよいコンピュータ可読記憶媒体を含んでいてもよい。それには、ランダム・アクセス・メモリ（RAM）、読み出し専用メモリ（ROM）、電気的に消去可能なプログラム可能型読み出し専用メモリ（EEPROM）、コンパクトディスク読み出し専用メモリ（CD-ROM）または他の光ディスク記憶、磁気ディスク記憶または磁気記憶デバイス、フラッシュメモリ・デバイス（たとえば半導体メモリ・デバイス）またはコンピュータ実行可能命令またはデータ構造の形で所望されるプログラム・コードを担持または記憶するために使用でき、汎用または特殊目的コンピュータによってアクセスされうる他の任意の記憶媒体が含まれる。上記の組み合わせが記憶部１１４および１１６のそれぞれに含まれてもよい。
【００１９】
描かれている実施形態においては、データ記憶部１１４および１１６は第一の装置１０４および第二の装置１０６とは別個になっている。いくつかの実施形態では、データ記憶部１１４は第一の装置１０４に含まれていてもよく、あるいは第一の装置１０４はデータ記憶部１１４と同様のローカル・データ記憶部を含んでいてもよく、ネットワーク１０７を介してデータ記憶部１１４にアクセスしてもよい。いくつかの実施形態では、データ記憶部１１６は第二の装置１０６に含まれていてもよく、あるいは第二の装置１０６はデータ記憶部１１６と同様のローカル・データ記憶部を含んでいてもよく、ネットワーク１０７を介してデータ記憶部１１６にアクセスしてもよい。
【００２０】
第一の装置１０４は暗号化マネージャ１５０を含んでいてもよい。暗号化マネージャ１５０は、データのセットを同定し、暗号化するよう構成されていてもよい。暗号化データ処理マネージャ１５５は、平文形式のデータのセットを同定するよう構成されていてもよい。暗号化データ処理マネージャ１５５は、秘密鍵を生成して該秘密鍵をデータ記憶部１１４に記憶してもよい。暗号化データ処理マネージャ１５５は平文形式のデータのセットを暗号文に暗号化してもよい。暗号化データ処理マネージャ１５５は暗号文を第二の装置１０６に送ってもよい。暗号化マネージャ１５０は、プロセッサ、マイクロプロセッサ（たとえば一つまたは複数の演算を実行するまたはその実行を制御するため）、FPGAまたはASICを含むハードウェアを使って実装されてもよい。他のいくつかの事例では、暗号化マネージャ１５０はハードウェアとソフトウェアの組み合わせを使って実装されてもよい。ソフトウェアでの実装は、コンピューティング・システム（たとえば第一の装置１０４）のハードウェアに含まれうるような一つまたは複数のトランジスタまたはトランジスタ要素の高速のアクティブ化および非アクティブ化を含んでいてもよい。さらに、ソフトウェアで定義された命令が、トランジスタ要素内の情報に作用してもよい。ソフトウェア命令の実装は少なくとも一時的に、電子的な経路を再構成し、コンピューティング・ハードウェアを変容させてもよい。
【００２１】
第二の装置１０６は、暗号化データ処理マネージャ１５５を含んでいてもよい。暗号化データ処理マネージャ１５５は第一の装置１０４から暗号文を受領してもよい。暗号化データ処理マネージャ１５５は、秘密鍵をもつことなく、根底にあるデータに対して演算を実行してもよい。演算は、加算、乗算または減算、除算などを含んでいてもよいが、それに限られない。暗号化データ処理マネージャ１５５は、処理された暗号文を第一の装置１０４に送ってもよい。暗号化データ処理マネージャ１５５は、プロセッサ、マイクロプロセッサ（たとえば一つまたは複数の演算を実行するまたはその実行を制御するため）、FPGAまたはASICを含むハードウェアを使って実装されてもよい。他のいくつかの事例では、暗号化データ処理マネージャ１５５はハードウェアとソフトウェアの組み合わせを使って実装されてもよい。ソフトウェアでの実装は、コンピューティング・システム（たとえば第二の装置１０６）のハードウェアに含まれうるような一つまたは複数のトランジスタまたはトランジスタ要素の高速のアクティブ化および非アクティブ化を含んでいてもよい。さらに、ソフトウェアで定義された命令が、トランジスタ要素内の情報に作用してもよい。ソフトウェア命令の実装は少なくとも一時的に、電子的な経路を再構成し、コンピューティング・ハードウェアを変容させてもよい。
【００２２】
第一の装置１０４は、解読マネージャ１６０をも含んでいてもよい。解読マネージャ１６０は、暗号化データ処理マネージャ１５５によって実行された演算の結果を復号し、復元するよう構成されていてもよい。解読マネージャ１６０は、プロセッサ、マイクロプロセッサ（たとえば一つまたは複数の演算を実行するまたはその実行を制御するため）、FPGAまたはASICを含むハードウェアを使って実装されてもよい。他のいくつかの事例では、解読マネージャ１６０はハードウェアとソフトウェアの組み合わせを使って実装されてもよい。ソフトウェアでの実装は、コンピューティング・システム（たとえば第一の装置１０４）のハードウェアに含まれうるような一つまたは複数のトランジスタまたはトランジスタ要素の高速のアクティブ化および非アクティブ化を含んでいてもよい。さらに、ソフトウェアで定義された命令が、トランジスタ要素内の情報に作用してもよい。ソフトウェア命令の実装は少なくとも一時的に、電子的な経路を再構成し、コンピューティング・ハードウェアを変容させてもよい。
【００２３】
第一の装置１０４は、データ呈示マネージャ１６５をも含んでいてもよい。データ呈示マネージャ１６５は、暗号化データ処理マネージャ１５５によって実行された演算の結果を呈示するよう構成されていてもよい。データ呈示マネージャ１６５は、演算の結果を、テキスト・ベースのおよび／またはグラフィックなフォーマットで呈示してもよい。少なくとも一つの実施形態において、データ呈示マネージャ１６５は、演算の結果をクライアント装置に送ってもよく、任意的に、クライアント装置が演算の結果をどのように呈示しうるかについての命令を送ってもよい。少なくとも一つの実施形態では、データ呈示マネージャ１６５は、データが復号された後にデータに対するさらなる演算を実行してもよい。データ呈示マネージャ１６５は、プロセッサ、マイクロプロセッサ（たとえば一つまたは複数の演算を実行するまたはその実行を制御するため）、FPGAまたはASICを含むハードウェアを使って実装されてもよい。他のいくつかの事例では、データ呈示マネージャ１６５はハードウェアとソフトウェアの組み合わせを使って実装されてもよい。ソフトウェアでの実装は、コンピューティング・システム（たとえば第一の装置１０４）のハードウェアに含まれうるような一つまたは複数のトランジスタまたはトランジスタ要素の高速のアクティブ化および非アクティブ化を含んでいてもよい。さらに、ソフトウェアで定義された命令が、トランジスタ要素内の情報に作用してもよい。ソフトウェア命令の実装は少なくとも一時的に、電子的な経路を再構成し、コンピューティング・ハードウェアを変容させてもよい。
【００２４】
本開示の範囲から外れることなく、動作環境１００に対して修正、追加または省略がなされてもよい。特に、動作環境は一つまたは複数の装置１０４、一つまたは複数の第二の装置１０６、一つまたは複数のデータ記憶部１１４、１１６またはそれらの任意の組み合わせを含んでいてもよい。
【００２５】
さらに、本稿で記載される実施形態におけるさまざまなコンポーネントの分離は、あらゆる実施形態においてその分離が生じることを示すことは意図されていない。本開示の恩恵があれば、記載される環境コンポーネントが単一のコンポーネントに一緒に統合されても、あるいは複数のコンポーネントに分離されてもよいことは理解されうる。たとえば、いくつかの実施形態では、暗号化データ処理マネージャ１５５および／またはそれに帰される一つまたは複数の機能が第一の装置１０４上のモジュールによって実行されてもよい。そのような事例では、暗号化データ処理マネージャ１５５は第一の装置１０４の他のコンポーネントとは分離されていてもよい。
【００２６】
図２は、多項式ベースの準同型暗号化に関係する例示的なデータ・フロー２００を示している。少なくとも一つの実施形態では、データ・フロー２００は、図１の環境コンポーネントのような環境コンポーネントの間のデータの流れに関する。
【００２７】
第一の装置（たとえば図１の第一の装置１０４）は、もとの平文２０５を暗号化してもとの暗号文２１０を生成してもよい。第一の装置はもとの暗号文２１０を、多項式ベースのHEを使ってもとの平文２０５を暗号化することによって生成してもよい。第一の装置はもとの暗号文２１０を第二の装置（図２には示さず）に送ってもよい。第二の装置はもとの暗号文２１０を変換して、処理された暗号文２１５を生成してもよい。第二の装置はもとの暗号文２１０に対して、加算、乗算、減算または除算などのようなさまざまな演算を実行してもよい。第二の装置は処理された暗号文２１５を第一の装置に送ってもよい。第一の装置は処理された暗号文２１５を、処理された平文２２０に復号してもよい。
【００２８】
図３〜図６は、多項式ベースの準同型暗号化に関係した例示的な諸方法の流れ図である。これらの方法は、ハードウェア（回路、専用論理など）、ソフトウェア（汎用コンピュータ・システムまたは専用機において実行されるようなもの）または両者の組み合わせを含んでいてもよい処理論理によって実行されてもよく、該処理論理は図１の動作環境１００または別のコンピュータ・システムまたは装置に含まれてもよい。しかしながら、これらの方法を実行するために、別のシステムまたはシステムの組み合わせが使われてもよい。説明の簡単のため、本稿に記載される方法は、一連の工程として描かれ、記述される。しかしながら、本開示に基づく工程は、さまざまな順序でおよび／または同時並行して、あるいは本稿では呈示および記載されない他の工程とともに行なわれてもよい。さらに、図示したすべての工程が開示される主題に基づく方法を実装するために必要とされるとは限らない。さらに、当業者は、これらの方法は代替的に、状態図またはイベントを介して一連の相互に関係した状態として表現されることができることを理解するであろう。さらに、本明細書で開示される方法は、そのような方法をコンピューティング装置に輸送し、転送することを容易にするために、非一時的なコンピュータ可読媒体のような製造物に記憶されることができる。本稿で使われるところの製造物という用語は、任意のコンピュータ可読デバイスまたは記憶媒体からアクセス可能なコンピュータ・プログラムを包含することが意図されている。離散的なブロックとして示されているが、所望される実装に依存して、さまざまなブロックは追加的なブロックに組み合わされたり、より小数のブロックに組み合わされたり、あるいはなくされたりしてもよい。
【００２９】
図３は、準同型暗号方式を生成し、管理するための例示的な方法３００の流れ図である。方法３００は少なくとも部分的には、図１のサーバー１４０のようなサーバーにおける処理論理によって実行されてもよい。
【００３０】
方法３００はブロック３０５で始まってもよく、ここで、処理論理は、多項式ベースの準同型暗号方式のための変数を定義してもよい。多項式ベースの準同型暗号方式は、秘密鍵を生成し、データを暗号化し、データを復号するための一つまたは複数のアルゴリズムを含んでいてもよい。前記一つまたは複数のアルゴリズムに含まれうる変数は、体Fqによって定義されるメッセージ空間を含んでいてもよい。ここで、Fqは有限のq個の元をもつ有限体である。加算および乗算のような演算が体Fqの上で実行されうる。追加的な変数は、長さn、次元kおよび距離dを含み、これらは「n,k,dコード」と称されてもよい。処理論理はn、kおよびdを定義してもよい。たとえば、nは式n＝2νmk＋2(νa＋νm＋1)δ＋2<<qおよびd＝n−k＋1、δ＝poly(λ)およびk＝poly(λ)によって定義されてもよい。λは安全性パラメータを表わしていてもよく、（時間およびメモリの点で）2λ個の資源をもついかなる攻撃者も本方式を破ることに成功し得ないことを含意しうる。少なくとも一つの実施形態では、λは80であってもよい。poly(λ)という表現はλの任意の多項式を表わしうる。少なくとも一つの実施形態では、nについて、νaは、実行されうる準同型加算演算の最大数を表わし、νmは、実行されうる準同型乗算演算の最大数を表わす。
【００３１】
ブロック３１０では、処理論理は、体Fqからの少なくとも一つの明確な要素をもつランダム・シーケンスを選択しうる。少なくとも一つの実施形態では、ランダム・シーケンス
【数１】
2018005220.tif 000003
が体Fqから選択される。このシーケンスはn個の数を含んでいてもよい。ブロック３１５では、処理論理は、ブロック３１０で選択されたランダム・シーケンスを、式
【数２】
2018005220.tif 000004
のように、秘密鍵（secret  key）として設定してもよい。処理論理は、その秘密鍵をデータ記憶部に記憶してもよい。少なくとも一つの実施形態では、秘密鍵は他のエンティティと共有してはならない。
【００３２】
ブロック３２０では、処理論理は、平文形式でのデータのセットを同定してもよい。データのセットは、それほど安全ではないエンティティによって操作されるまたは処理されるべきデータを含んでいてもよい。たとえば、データのセットは、潜在的に敏感なデータ（たとえば投票データ、ヘルスケア・データまたは敏感でありうる他のデータ）を含んでいてもよく、その場合、データのセットの秘密性またはプライバシーを維持しつつデータのセットに対して処理を実行させることが有利であることがある。少なくとも一つの実施形態では、処理論理は、ユーザーからの要求に応答してデータのセットを同定してもよい。たとえば、システム管理者が、ヘルスケア・データを処理するまたはヘルスケア・データに対して演算を実行することを望むことがありうる。システム管理者は、ヘルスケア・データを処理する要求を提出してもよい。要求は、どのデータを処理すべきかを同定してもよい。データのセットは変数mによって表わされてもよく、体Fqから選択されてもよい。変数mは表現m∈Fqによって表わされてもよい。
【００３３】
ブロック３２５では、処理論理は、平文のデータのセットを、ランダム多項式を使って暗号文に変換してもよい。少なくとも一つの実施形態では、平文のデータを暗号文に変換することは、前記ランダム多項式に基づいて暗号文を暗号化することを含んでいてもよい。ここで、前記暗号文は暗号化されたデータを含む。平文のデータのセットをランダム多項式を使って暗号文に変換することのいくつかの実施形態は、図４との関連でさらに述べる。ブロック３３０では、処理論理は暗号文をリモート装置（たとえば図１の第二の装置１０６）に送ってもよい。
【００３４】
ブロック３３５では、処理論理は、リモート装置から処理された暗号文を受領してもよい。暗号文は、リモート装置（たとえば図１の第二の装置１０６）によって、図６の方法に従って処理されていてもよい。ブロック３４０では、処理論理は、処理された暗号文を復号して、処理された平文を生じてもよい。少なくとも一つの実施形態では、処理論理は、図５の方法に従って処理された暗号文を復号してもよい。
【００３５】
ブロック３４５では、処理論理は処理された平文を出力してもよい。少なくとも一つの実施形態では、処理された平文を出力することは、処理された平文をデータ記憶に記憶することを含んでいてもよい。少なくとも一つの実施形態では、処理された平文を出力することは、処理された平文をグラフィック・ディスプレイにおいて呈示することまたは処理された平文をディスプレイ装置に呈示させることを含んでいてもよい。処理された平文のグラフィック・ディスプレイにおける呈示は、処理された平文の、テキスト・ベースのオブジェクトもしくはグラフィック・オブジェクト（たとえばグラフ、表）またはそれらの組み合わせにおけるグラフィックな表現を含んでいてもよい。
【００３６】
図４は、平文のデータのセットを、ランダム多項式を使って暗号文に変換する例示的な方法４００の流れ図である。方法４００は、少なくとも部分的には、図１の第一の装置１０４のような電子装置内の処理論理によって実行されてもよい。
【００３７】
ブロック４０５では、処理論理はランダム多項式を生成してもよい。ランダム多項式は表現p0(X)によって表わされてもよく、Fq[X]において次数k−1であってもよい。少なくとも一つの実施形態では、Xは不定であってもよい。次数k−1のランダム多項式は、a0xk-1＋a1xk-2＋…＋ak-1を含んでいてもよく、ここで、a0、a1、…、ak-1はFqからランダムに選択されてもよい。ブロック４１０では、処理論理はランダム多項式をp(X)＝X・p0(X)＋mと設定してもよい。ブロック４１５では、処理論理は、インデックスのδ要素の部分集合をランダムに生成してもよい。該部分集合は表現I⊂[1,n]によって表わされてもよい。
【００３８】
ブロック４２０では、処理論理は暗号文を計算してもよい。少なくとも一つの実施形態では、暗号文は表現
【数３】
2018005220.tif 000005
によって表わされてもよい。少なくとも一つの実施形態では、処理論理は、暗号文を式
【数４】
2018005220.tif 000006
に基づいて計算してもよい。ここで、p(ski)はブロック４０５で生成されたランダム多項式である。少なくとも一つの実施形態では、準同型暗号方式の安全性は、多項式評価x座標の隠された集合および暗号化する際のノイズのランダム加算に基づきうる。Zqはランダム性を含んでいてもよく、数の集合{0,1,…,q−1}を含んでいてもよい。
【００３９】
図５は、処理された暗号文をデコードする例示的な方法５００の流れ図である。方法５００は、図１の動作環境１００のような動作環境において実行されてもよい。方法５００は、いくつかの実施形態では図１を参照して述べた第一の装置１０４によって、プログラム的に実行されてもよい。第一の装置１０４は、方法５００を実行するまたは方法５００の実行を引き起こすためにプロセッサによって実行可能なプログラミング・コードまたは命令が記憶またはエンコードされている非一時的なコンピュータ可読媒体を含んでいてもよく、あるいはそれに通信上結合されていてもよい。追加的または代替的に、第一の装置１０４は、方法５００を実行するまたは方法５００の実行を制御するためのコンピュータ命令を実行するよう構成されているプロセッサを含んでいてもよい。離散的なブロックとして示されているが、所望される実装に依存して、さまざまなブロックが追加的なブロックに分割されたり、より少数のブロックに組み合わされたり、あるいはなくされたりしてもよい。
【００４０】
方法５００はブロック５０５で始まってもよい。ここで、処理論理は秘密鍵を同定してもよい。秘密鍵は、図３のブロック３１５で生成された秘密鍵を含んでいてもよい。処理論理は、データ記憶部から秘密鍵にアクセスしたり、秘密鍵を取り出したりしてもよい。少なくとも一つの実施形態では、秘密鍵は表現
【数５】
2018005220.tif 000007
によって表わされてもよい。
【００４１】
ブロック５１０では、処理論理は、処理された暗号文（たとえば図３のブロック３３５において受領された暗号文）を復号してもよい。処理論理は、処理された暗号文を復号して、ランダム多項式を生成してもよい。処理論理は、処理された暗号文および秘密鍵を使って、図４のブロック４０５で生成されたランダム多項式を再現しようと試みてもよい。少なくとも一つの実施形態では、クライアント装置は、ランダム多項式を復号するために、表現
【数６】
2018005220.tif 000008
におけるn個のデータ点に対して[n,2νmk＋1]qリード・ソロモン復号技法を使ってもよい。
【００４２】
図６は、暗号文を処理する例示的な方法６００の流れ図である。方法６００は、図１の動作環境１００のような動作環境において実行されてもよい。方法６００は、いくつかの実施形態では図１を参照して述べた第二の装置１０６によって、プログラム的に実行されてもよい。第二の装置１０６は、方法６００を実行するまたは方法６００の実行を引き起こすためにプロセッサによって実行可能なプログラミング・コードまたは命令が記憶またはエンコードされている非一時的なコンピュータ可読媒体を含んでいてもよく、あるいはそれに通信上結合されていてもよい。追加的または代替的に、第二の装置１０６は、方法６００を実行するまたは方法６００の実行を制御するためのコンピュータ命令を実行するよう構成されているプロセッサを含んでいてもよい。離散的なブロックとして示されているが、所望される実装に依存して、さまざまなブロックが追加的なブロックに分割されたり、より少数のブロックに組み合わされたり、あるいはなくされたりしてもよい。
【００４３】
方法６００はブロック６０５で始まってもよい。ここで、処理論理は暗号文（たとえばもとの暗号文）を受領してもよい。暗号文は、別の装置から送られた暗号文（たとえば図３のブロック３３０の暗号文）であってもよい。暗号文は、処理論理が暗号化されたデータを読むことができないよう、暗号化されたデータであってもよい。少なくとも一つの実施形態では、処理論理は、暗号文に対して一つまたは複数の動作を実行するための命令をも受領してもよい。処理論理は、暗号文と同じ装置から、あるいは異なる装置から（たとえばシステム管理者の装置から）該命令を受領してもよい。
【００４４】
ブロック６１０では、処理論理は、暗号文に対して一つまたは複数の演算を実行してもよい。演算は準同型演算を含んでいてもよい。少なくとも一つの実施形態では、暗号文に対して閾値数の演算（たとえばd個の演算）が実行されてもよい。たとえば、第一の暗号文は表現
【数７】
2018005220.tif 000009
によって表わされてもよく、第二の暗号文は表現
【数８】
2018005220.tif 000010
によって表わされてもよい。準同型加算演算は
【数９】
2018005220.tif 000011
として表わされてもよい。同様に、準同型乗算演算は
【数１０】
2018005220.tif 000012
として表わされてもよい。
【００４５】
ブロック６１５では、処理論理は、処理された暗号文を出力してもよい。少なくとも一つの実施形態では、処理された暗号文を出力することは、処理された暗号文を別の装置（たとえば図１の第一の装置１０４）に送ることを含んでいてもよい。少なくとも一つの実施形態では、処理された暗号文を出力することは、処理された暗号文をデータ記憶に記憶することを含んでいてもよい。データ記憶は、別の装置（たとえば図１の第一の装置１０４）によってアクセス可能であってもよい。
【００４６】
図７は、本稿で論じられる方法の任意の一つまたは複数を機械に実行させるための一組の命令が実行されうるコンピューティング装置７００の例示的な形の機械の図的な表現を示している。コンピューティング装置７００は、携帯電話、スマートフォン、ネットブック・コンピュータ、ラックマウント・サーバー、ルーター・コンピュータ、サーバー・コンピュータ、パーソナル・コンピュータ、メインフレーム・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、デスクトップ・コンピュータなどを含んでいてもよく、その中で、本稿で論じられる方法の任意の一つまたは複数を機械に実行させるための一組の命令が実行されうる。代替的な実施形態では、機械はLAN、イントラネット、エクストラネットまたはインターネット内の他の機械に接続（たとえばネットワーク接続）されていてもよい。機械は、クライアント・サーバー・ネットワーク環境におけるサーバー機械の役割で動作してもよい。機械は、パーソナル・コンピュータ（PC）、セットトップボックス（STB）、サーバー、ネットワーク・ルーター、スイッチまたはブリッジまたは、その機械によって行なわれるべきアクションを指定する一組の命令（逐次的またはその他）を実行することのできるいかなる機械であってもよい。さらに、一つの機械が図示されているだけだが、用語「機械」は、本稿で論じられる方法の任意の一つまたは複数を実行するために、個々にまたは合同して一組の（または複数組の）命令を実行する機械の任意の集合をも含みうる。
【００４７】
例示的なコンピューティング装置７００は、処理装置（たとえばプロセッサ）７０２、メイン・メモリ７０４（たとえば読み出し専用メモリ（ROM）、フラッシュメモリ、動的ランダム・アクセス・メモリ（DRAM）、たとえば同期DRAM（SDRAM））、静的メモリ７０６（たとえばフラッシュメモリ、静的ランダム・アクセス・メモリ（SRAM））およびデータ記憶装置７１６を含み、これらはバス７０８を介して互いと通信する。
【００４８】
処理装置７０２は、マイクロプロセッサ、中央処理ユニットなどといった一つまたは複数の汎用処理装置を表わす。より具体的には、処理装置７０２は、複雑命令セット・コンピューティング（CISC）マイクロプロセッサ、縮小命令セット・コンピューティング（RISC）マイクロプロセッサ、超長命令語（VLIW:  very  long  instruction  word）マイクロプロセッサまたは他の命令セットを実装するプロセッサまたは諸命令セットの組み合わせを実装する諸プロセッサを含んでいてもよい。処理装置７０２は、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）、デジタル信号プロセッサ（DSP）、ネットワーク・プロセッサなどといった一つまたは複数の特殊目的処理装置をも含んでいてもよい。処理装置７０２は、本稿で論じられた動作および段階を実行するための命令７２６を実行するよう構成されてもよい。
【００４９】
コンピューティング装置７００はさらに、ネットワーク７１８と通信しうるネットワーク・インターフェース装置７２２を含んでいてもよい。コンピューティング装置７００は、ディスプレイ装置７１０（たとえば液晶ディスプレイ（LCD）または陰極線管（CRT））、英数字入力装置７１２（たとえばキーボード）、カーソル制御装置７１４（たとえばマウス）および信号生成装置７２０（たとえばスピーカー）をも含んでいてもよい。ある実装では、ディスプレイ装置７１０、英数字入力装置７１２およびカーソル制御装置７１４は単一のコンポーネントまたは装置（たとえばLCDタッチスクリーン）に組み合わされてもよい。
【００５０】
データ記憶装置７１６は、本稿に記載される方法または機能の任意の一つまたは複数を具現する一組または複数組の命令７２６（たとえば図１のシステム１００）が記憶されているコンピュータ可読記憶媒体７２４を含んでいてもよい。命令７２６は、コンピューティング装置７００によるその実行の間、完全にまたは少なくとも部分的に、メイン・メモリ７０４内および／または処理装置７０２内に存在し、メイン・メモリ７０４および処理装置７０２もコンピュータ可読媒体をなしてもよい。命令はさらに、ネットワーク・インターフェース装置７２２を介してネットワーク７１８を通じて送受信されてもよい。
【００５１】
コンピュータ可読記憶媒体７２６はある例示的実施形態では単一の媒体であると示されているが、「コンピュータ可読記憶媒体」という用語は、前記一組または複数組の命令を記憶する単一の媒体または複数の媒体（たとえば、中央集中式または分散式のデータベースおよび／または付随するキャッシュおよびサーバー）を含んでいてもよい。「コンピュータ可読記憶媒体」という用語はまた、本開示の方法の任意の一つまたは複数を機械に実行させる、機械による実行のための一組の命令を、記憶する、エンコードするまたは担持することができる任意の媒体をも含んでいてもよい。よって、「コンピュータ可読記憶媒体」という用語は、半導体メモリ、光メディアおよび磁気メディアを含むがそれに限られないと解釈されうる。
【００５２】
本稿に記載された実施形態は、下記でより詳細に論じるように、さまざまなコンピュータ・ハードウェアまたはソフトウェア・モジュールを含む特殊目的または汎用のコンピュータの使用を含んでいてもよい。
【００５３】
本稿に記載される実施形態は、コンピュータ実行可能命令を担持するまたは記憶するためのコンピュータ可読媒体を使って実装されてもよい。そのようなコンピュータ可読媒体は、汎用または特殊目的コンピュータによってアクセスされうるいかなる利用可能な媒体であってもよい。限定ではなく例として、そのようなコンピュータ可読媒体は、非一時的なコンピュータ可読記憶媒体を含んでいてもよく、それは、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイス、フラッシュメモリ・デバイス（たとえば半導体メモリ・デバイス）またはコンピュータ実行可能命令またはデータ構造の形で所望されるプログラム・コードを担持または記憶するために使用されうる、汎用または専用コンピュータによってアクセスされうる他の任意の記憶媒体を含んでいてもよい。上記の組み合わせも、コンピュータ可読媒体の範囲内に含められてもよい。
【００５４】
コンピュータ実行可能命令はたとえば、汎用コンピュータ、専用コンピュータまたは専用処理装置（たとえば一つまたは複数のプロセッサ）に、ある機能または機能群を実行させる命令およびデータを含んでいてもよい。主題は構造的な特徴および／または方法論的な工程に固有の言辞で記述されてきたが、付属の請求項において定義される主題は必ずしも上記の個別的な特徴または工程に限定されないことは理解される。むしろ、上記の個別的な特徴および工程は、請求項を実装する例示的な形として開示されている。
【００５５】
本稿での用法では、用語「モジュール」または「コンポーネント」は、コンピューティング・システムの汎用ハードウェア（たとえばコンピュータ可読媒体、処理装置など）に記憶および／または実行されうるモジュールまたはコンポーネントおよび／またはソフトウェア・オブジェクトまたはソフトウェア・ルーチンの動作を実行するよう構成された個別的なハードウェア実装を指すことがありうる。いくつかの実施形態では、本稿に記載される種々のコンポーネント、モジュール、エンジンおよびサービスは、（たとえば別個のスレッドとして）コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして実装されてもよい。本稿に記載されるシステムおよび方法のいくつかは一般に（汎用ハードウェアに記憶されるおよび／または実行される）ソフトウェアで実装されるものとして記述されるが、個別的なハードウェア実装またはソフトウェアおよび個別的ハードウェア実装の組み合わせも可能であり、考えられている。本稿において、「コンピューティング・エンティティ」は、本稿で先に定義した任意のコンピューティング・システムまたはコンピューティング・システム上で走る任意のモジュールまたはモジュレットの組み合わせであってよい。
【００５６】
本稿に記載されるすべての例および条件付きの言辞は、本発明および発明者によって当技術分野の発展のために寄与される概念の理解において読者を助ける教育目的を意図されており、そのような特定的に挙げられる例および条件に限定することなく解釈されるものとする。本発明の実施形態について詳細に述べてきたが、本発明の精神および範囲から外れることなく、これにさまざまな変化、代替および変更をなすことができることは理解しておくべきである。
【００５７】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
暗号化およびデータ復号のための秘密鍵を生成する段階と；
平文形式で記憶されているデータのセットを同定する段階と；
処理装置によって、前記データのセットを多項式を使って暗号文に変換する段階と；
前記暗号文をデータ処理のためにリモート装置に送る段階と；
前記リモート装置から、処理された暗号文を受領する段階と；
前記処理装置によって、前記処理された暗号文を、前記秘密鍵および前記多項式に基づいて復号して、処理された平文を与える段階と；
前記処理された平文を出力する段階とを含む、
方法。
（付記２）
前記秘密鍵を生成する段階が：
シーケンスのセットのセットを含む体を同定し；
前記体からランダム・シーケンスを選択し；
前記ランダム・シーケンスを前記秘密鍵として設定することを含む、
付記１記載の方法。
（付記３）
前記データのセットを変換する段階が：
前記多項式を生成し；
前記データのセットを暗号化して前記暗号文を生成することを含む、
付記１記載の方法。
（付記４）
前記データのセットが、ある程度のランダム性をもって暗号化される、付記１記載の方法。
（付記５）
前記処理された暗号文が、リード・ソロモン復号技法を使って復号される、付記１記載の方法。
（付記６）
前記復号することが：
前記秘密鍵をデータ記憶部から取り出し；
前記処理された暗号文および前記秘密鍵を使って前記多項式を再現することを含む、
付記１記載の方法。
（付記７）
前記出力する段階が、前記処理された平文をディスプレイ装置上に表示することを含む、付記１記載の方法。
（付記８）
プログラム可能コードを記憶しているメモリと；
前記メモリに動作上結合されているプロセッサとを有するシステムであって、前記プロセッサは前記プログラム可能コードを実行して動作を実行するよう構成されており、前記動作は：
暗号化およびデータ復号のための秘密鍵を生成する段階と；
平文形式で記憶されているデータのセットを同定する段階と；
前記データのセットを多項式を使って暗号文に変換する段階と；
前記暗号文をデータ処理のためにリモート装置に送る段階と；
前記リモート装置から、処理された暗号文を受領する段階と；
前記処理された暗号文を、前記秘密鍵および前記多項式に基づいて復号して、処理された平文を与える段階と；
前記処理された平文を出力する段階とを含む、
システム。
（付記９）
前記プロセッサが、前記秘密鍵を生成するときに：
シーケンスのセットのセットを含む体を同定し；
前記体からランダム・シーケンスを選択し；
前記ランダム・シーケンスを前記秘密鍵として設定することを含む、
動作を実行するようさらに構成されている、付記８記載のシステム。
（付記１０）
前記プロセッサが、前記データのセットを変換するときに：
前記多項式を生成し；
前記データのセットを暗号化して前記暗号文を生成することを含む、
動作を実行するようさらに構成されている、付記８記載のシステム。
（付記１１）
前記データのセットが、ある程度のランダム性をもって暗号化される、付記８記載のシステム。
（付記１２）
前記処理された暗号文を、リード・ソロモン復号技法を使って復号することをさらに含む、付記８記載のシステム。
（付記１３）
前記プロセッサが、前記処理された暗号文を復号するときに：
前記秘密鍵をデータ記憶部から取り出し；
前記処理された暗号文および前記秘密鍵を使って前記多項式を再現することを含む、
付記８記載のシステム。
（付記１４）
前記出力する段階が、前記処理された平文をディスプレイ装置上に表示することを含む、付記８記載のシステム。
（付記１５）
動作を実行するまたは該動作の実行を制御するためにプロセッサによって実行可能なプログラミング・コードがエンコードされている非一時的なコンピュータ可読媒体であって、前記動作は：
暗号化およびデータ復号のための秘密鍵を生成する段階と；
平文形式で記憶されているデータのセットを同定する段階と；
前記データのセットを多項式を使って暗号文に変換する段階と；
前記暗号文をデータ処理のためにリモート装置に送る段階と；
前記リモート装置から、処理された暗号文を受領する段階と；
前記処理された暗号文を、前記秘密鍵および前記多項式に基づいて復号して、処理された平文を与える段階と；
前記処理された平文を出力する段階とを含む、
非一時的なコンピュータ可読媒体。
（付記１６）
前記秘密鍵を生成する段階が：
シーケンスのセットのセットを含む体を同定し；
前記体からランダム・シーケンスを選択し；
前記ランダム・シーケンスを前記秘密鍵として設定することを含む、
付記１５記載の非一時的なコンピュータ可読媒体。
（付記１７）
前記変換する段階が：
前記多項式を生成し；
前記データのセットを暗号化して前記暗号文を生成することを含む、
付記１５記載の非一時的なコンピュータ可読媒体。
（付記１８）
前記処理された暗号文を、リード・ソロモン復号技法を使って復号することをさらに含む、付記１５記載の非一時的なコンピュータ可読媒体。
（付記１９）
前記復号することが：
前記秘密鍵をデータ記憶部から取り出し；
前記処理された暗号文および前記秘密鍵を使って前記多項式を再現することを含む、
付記１５記載の非一時的なコンピュータ可読媒体。
（付記２０）
前記出力する段階が、前記処理された平文をディスプレイ装置上に表示することを含む、付記１５記載の非一時的なコンピュータ可読媒体。
【符号の説明】
【００５８】
１０４  第一の装置
１０６  第二の装置
１０７  ネットワーク
１１４  データ記憶部
１１６  データ記憶部
１５０  暗号化マネージャ
１５５  暗号化データ処理マネージャ
１６０  解読マネージャ
１６５  データ呈示マネージャ
２０５  もとの平文
２１０  もとの暗号文
２１５  処理された暗号文
２２０  処理された平文
３０５  変数を定義
３１０  少なくとも一つの明瞭な要素をもつ、体からのランダム・シーケンスを選択
３１５  ランダム・シーケンスを秘密鍵として設定
３２０  平文のデータのセットを同定
３２５  多項式を使って平文のデータのセットを暗号文に変換
３３０  暗号文をリモート装置に送信
３３５  処理された暗号文をリモート装置から受信
３４０  処理された暗号文を復号して、処理された平文を生成
３４５  処理された平文を出力
４０５  次数k−1の多項式p0(X)を生成
４１０  p(X)＝X*p0(X)＋mと設定
４１５  インデックスのδ要素の部分集合をランダムに生成
４２０  暗号文を計算
５０５  秘密鍵を特定
５１０  多項式および秘密鍵に基づいて、処理された暗号文を復号して、処理された平文を生成
６０５  暗号文を受領
６１０  暗号文に対して一つまたは複数の処理を実行して、処理された暗号文を生成
６１５  処理された暗号文を出力
７０２  プロセッサ
７０４  メイン・メモリ
７０６  静的メモリ
７０８  バス
７１０  ディスプレイ装置
７１２  英数字入力装置
７１４  カーソル制御装置
７１６  データ記憶装置
７１８  ネットワーク
７２０  信号生成装置
７２４  コンピュータ可読媒体
７２２  ネットワーク・インターフェース装置
７２６  命令
【図１】
2018005220.tif 000013
【図２】
2018005220.tif 000014
【図３】
2018005220.tif 000015
【図４】
2018005220.tif 000016
【図５】
2018005220.tif 000017
【図６】
2018005220.tif 000018
【図７】
2018005220.tif 000019