(57)【要約】      （修正有）【課題】関連付けられた秘密鍵部分を用いた高速公開鍵暗号化のための方法、コンピュータ読取可能な媒体及びコンピュータ装置を提供する。【解決手段】平文を暗号文に暗号化するステップと、暗号文を格納するステップを備える。暗号化するステップは、公開鍵と、対応する秘密鍵とを使用する。公開鍵は、合成数ｎを備え、秘密鍵は、素数ｐおよびｑを用いて生成され、ｎ＝ｐ×ｑである。対応する秘密鍵を使用する暗号化するステップは、ｇ１およびｇ２を使用するステップと、ＧＮ１およびＧＮ２を使用するステップを備える。ｇ１は、ｐに関連付けられる巡回群の生成元であり、ｇ２は、ｑに関連付けられる巡回群の生成元である。ＧＮ１は、ｇ１に基づく定数であり、ＧＮ２は、ｇ２に基づく定数である。平文を暗号化するステップは、ｓ１およびｓ２を使用するステップをさらに備える。ｓ１は、ｐに基づく乱数であり、ｓ２は、ｑに基づく乱数である。【選択図】なし【特許請求の範囲】
【請求項１】
コンピュータによって実行される方法であって、
平文を暗号文に暗号化するステップを備え、前記暗号化するステップは、公開鍵と、対応する秘密鍵とを使用し、前記方法はさらに、
前記暗号文を格納するステップを備える、方法。
【請求項２】
前記公開鍵は、合成数ｎを備え、前記秘密鍵は、素数ｐおよびｑを用いて生成され、ｎ＝ｐ×ｑである、請求項１に記載の方法。
【請求項３】
前記対応する秘密鍵を使用する前記暗号化するステップは、ｇ１およびｇ２を使用するステップを備え、前記ｇ１は、前記ｐに関連付けられる巡回群の生成元であり、前記ｇ２は、前記ｑに関連付けられる巡回群の生成元である、請求項２に記載の方法。
【請求項４】
前記対応する秘密鍵を使用する前記暗号化するステップは、ＧＮ１およびＧＮ２を使用するステップをさらに備え、前記ＧＮ１は、前記ｇ１に基づく定数であり、前記ＧＮ２は、前記ｇ２に基づく定数である、請求項３に記載の方法。
【請求項５】
前記平文を前記暗号化するステップは、ｓ１およびｓ２を使用するステップをさらに備え、前記ｓ１は、前記ｐに基づく乱数であり、前記ｓ２は、前記ｑに基づく乱数である、請求項２に記載の方法。
【請求項６】
【数１】
2018142013.tif 000007
【請求項７】
デジタル署名照合のためのコンピュータによって実行される方法であって、
秘密鍵を用いてデジタル署名されるメッセージに基づいて照合結果を生成するステップを備え、前記生成するステップは、前記秘密鍵と、対応する公開鍵とを使用し、前記方法はさらに、
前記照合結果を格納するステップを備える、方法。
【請求項８】
前記公開鍵は、合成数Ｎを備え、前記秘密鍵は、素数ｐおよびｑを用いて生成され、Ｎ＝ｐ×ｑである、請求項７に記載の方法。
【請求項９】
コンピュータによって実行可能な命令を格納した非一時的なコンピュータ読取可能な媒体であって、前記命令は、
平文を暗号文に暗号化するためのものであり、前記暗号化は、公開鍵と、対応する秘密鍵とを使用し、前記命令はさらに、
前記暗号文を格納するためのものである、コンピュータ読取可能な媒体。
【請求項１０】
前記公開鍵は、合成数ｎを備え、前記秘密鍵は、素数ｐおよびｑを用いて生成され、ｎ＝ｐ×ｑである、請求項９に記載のコンピュータ読取可能な媒体。
【請求項１１】
前記対応する秘密鍵を使用する前記暗号化は、ｇ１およびｇ２を使用することを備え、前記ｇ１は、前記ｐに関連付けられる巡回群の生成元であり、前記ｇ２は、前記ｑに関連付けられる巡回群の生成元である、請求項１０に記載のコンピュータ読取可能な媒体。
【請求項１２】
前記対応する秘密鍵を使用する前記暗号化は、ＧＮ１およびＧＮ２を使用することをさらに備え、前記ＧＮ１は、前記ｇ１に基づく定数であり、前記ＧＮ２は、前記ｇ２に基づく定数である、請求項１１に記載のコンピュータ読取可能な媒体。
【請求項１３】
前記平文の前記暗号化は、ｓ１およびｓ２を使用することをさらに備え、前記ｓ１は、前記ｐに基づく乱数であり、前記ｓ２は、前記ｑに基づく乱数である、請求項１０に記載のコンピュータ読取可能な媒体。
【請求項１４】
【数２】
2018142013.tif 000008
【請求項１５】
記憶装置とプロセッサとを備える少なくとも１つのコンピュータ装置であって、前記プロセッサは、
平文を暗号文に暗号化することを実行するように構成されており、前記暗号化は、公開鍵と、対応する秘密鍵とを使用し、前記プロセッサはさらに、
前記暗号文を格納することを実行するように構成されている、少なくとも１つのコンピュータ装置。
【請求項１６】
前記公開鍵は、合成数ｎを備え、前記秘密鍵は、素数ｐおよびｑを用いて生成され、ｎ＝ｐ×ｑである、請求項１５に記載の少なくとも１つのコンピュータ装置。
【請求項１７】
前記対応する秘密鍵を使用する前記暗号化は、ｇ１およびｇ２を使用することを備え、前記ｇ１は、前記ｐに関連付けられる巡回群の生成元であり、前記ｇ２は、前記ｑに関連付けられる巡回群の生成元である、請求項１６に記載の少なくとも１つのコンピュータ装置。
【請求項１８】
前記対応する秘密鍵を使用する前記暗号化は、ＧＮ１およびＧＮ２を使用することをさらに備え、前記ＧＮ１は、前記ｇ１に基づく定数であり、前記ＧＮ２は、前記ｇ２に基づく定数である、請求項１７に記載の少なくとも１つのコンピュータ装置。
【請求項１９】
前記平文の前記暗号化は、ｓ１およびｓ２を使用することをさらに備え、前記ｓ１は、前記ｐに基づく乱数であり、前記ｓ２は、前記ｑに基づく乱数である、請求項１６に記載の少なくとも１つのコンピュータ装置。
【請求項２０】
【数３】
2018142013.tif 000009
【発明の詳細な説明】
【技術分野】
【０００１】
分野
本明細書に記載されている主題は、一般にデータ処理に関し、より特定的には、関連付けられた秘密鍵部分を用いた高速公開鍵暗号化のためのシステムおよび方法に関する。
【背景技術】
【０００２】
関連背景
公開鍵暗号化または非対称暗号化では、暗号システムは、３つのアルゴリズムで構成されており、すなわち、所有者によって維持される秘密鍵および所有者によって公衆に公開される公開鍵を生成する鍵生成のための１つのアルゴリズム、公開された公開鍵にアクセスできる誰もが公開鍵を用いて暗号化を行うことができるようにする暗号化のための１つのアルゴリズム、および、秘密鍵または「トラップドア」情報を有する所有者が、公開鍵を用いて暗号化された秘密鍵データにより復号化を行うことができるようにする復号化のための１つのアルゴリズムである。
【０００３】
例えばＲＳＡ（リベスト・シャミア・エーデルマン）アルゴリズムでは、秘密鍵も公開鍵も２つの素数を用いて生成される。所有者は、２つの素数を知っており、当該素数を用いて復号化を行うことができる。「公衆」（すなわち、２つの素数の合成体の少なくとも何らかの形態に基づいて公開鍵を提供されるもの）は、公開鍵を用いて暗号化を行うことができる。公衆は、事実上、当該合成体を因数分解することはできず、復号化を行うことはできない。
【０００４】
特定のシナリオでは、暗号化を行うパーティは、秘密鍵の所有者でもある。例えば、所有者は、データを暗号化してパブリックネットワークを通じて送信したい、および／または、第三者ストレージ（例えば、クラウドストレージ）に格納したい場合がある。暗号化されたデータは、後に抽出されて、所有者によって復号化され得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
主題は、関連付けられた秘密鍵部分を用いた高速公開鍵暗号化のための方法を含み、当該方法は、平文を暗号文に暗号化するステップを含み、暗号化するステップは、公開鍵と、対応する秘密鍵とを使用し、当該方法はさらに、暗号文を格納するステップを含む。
【０００６】
当該方法は、１つ以上のコンピュータ装置および／またはシステムを用いて実現される。当該方法は、コンピュータ読取可能な媒体に格納されてもよい。
【図面の簡単な説明】
【０００７】
【図１】高速暗号化実現例のハイレベル図を示す。
【図２】高速暗号化実現例を配備することができる例示的な環境を示す。
【図３】プロセス実現例の一例を示す。
【図４】いくつかの例示的な実現例に適した例示的な環境を示す。
【図５】いくつかの例示的な実現例での使用に適した例示的なコンピュータ装置を有する例示的なコンピュータ環境を示す。
【発明を実施するための形態】
【０００８】
詳細な説明
本明細書に記載されている主題は、例示的な実現例によって教示される。明確にするため、および主題を曖昧にすることを回避するために、さまざまな詳細は省略されている。以下に示される例は、関連付けられた秘密鍵部分を用いた高速公開鍵暗号化のためのシステムおよび方法を実現するための構造および機能に向けられる。
【０００９】
図１は、高速暗号化実現例のハイレベル図を示す。例示的な高速暗号化１００は、公開鍵１０２の少なくとも一部と、対応する秘密鍵１０４（復号鍵と呼ぶことができる）の少なくとも一部とを用いて、データまたはメッセージＭを暗号化して暗号文Ｃを生成するように実現される。高速暗号化１００は、公開鍵１０２の少なくとも一部を用いて暗号化を行うために１つ以上のアルゴリズムを実行するソフトウェアモジュール、プロセス、ソフトウェアアプリケーション、ハードウェア回路、物理的装置、またはこれらの任意の組み合わせであってもよい。
【００１０】
高速暗号化１００は、公開鍵などと秘密鍵などとを使用する任意の暗号システムにおいて、暗号化、認証、デジタル署名などのために実現され得る。本明細書に記載されている技術を用いて高速化可能な例示的なアルゴリズムは、トランスポート層セキュリティ（Transport Layer Security：ＴＬＳ）、プリティ・グッド・プライバシ（Pretty Good Privacy：ＰＧＰ）、リベスト・シャミア・エーデルマン（Rivest, Shamir and Adleman：Ｒ
ＳＡ）、準同型暗号（例えば、Paillier暗号）などを含むが、これらに限定されるものではない。アルゴリズムは、（例えば、ディフィー・ヘルマン鍵交換などを用いた）鍵配布または秘密鍵配布を含み得る。
【００１１】
以下の図２に記載されているように、暗号文Ｃは、公開鍵１０２のみを用いてデータを暗号化する従来の暗号化アルゴリズムを用いて暗号化された別の暗号文Ｃ２と同等であり得る。言い換えれば、同一の復号エンジンが暗号文Ｃおよび暗号文Ｃ２を復号化することができ、高速暗号化アルゴリズム１００を用いてＣが暗号化されるか、従来の暗号化アルゴリズムを用いてＣが暗号化されるかを区別することはできない。
【００１２】
図２は、高速暗号化実現例を配備することができる例示的な環境を示す。パーティＡ２００（例えば、所有者）は、鍵生成２１０を用いて公開鍵１０２と秘密鍵１０４（または、復号鍵１０４）とを生成する。鍵生成１２０は、鍵を生成するために１つ以上のアルゴリズムを実行するソフトウェアモジュール、プロセス、ソフトウェアアプリケーション、ハードウェア回路、物理的装置、またはこれらの任意の組み合わせであってもよい。公開鍵１０２は、暗号化されたメッセージを所有者２００に送りたい任意のパーティ（例えば、パーティＢ２５０）に提供され得る。所有者２００は、秘密鍵１０４を用いて、公開鍵１０２により暗号化されたメッセージを復号する。また、所有者２００は、１つ以上の高速暗号化または高速認証アルゴリズムにおいて秘密鍵１０４または秘密鍵１０４の少なくとも一部を用いる。
【００１３】
【数１】
2018142013.tif 000002
【００１４】
復号化を行う所有者またはパーティのみが、ｐおよびｑを知っているまたは知っているべきである。ｐおよびｑが分かっていると、秘密鍵を容易に生成することができる。対応する秘密鍵（例えば、公開鍵１０２を用いて暗号化された暗号文を復号化するための秘密鍵１０４）を生成するために、鍵生成２１０は、λ＝ｌｃｍ（ｐ−１，ｑ−１）を計算し、ｌｃｍは最小公倍数である。また、鍵生成２１０は、μ＝（Ｌ（ｇλ  ｍｏｄ  ｎ２））−１  ｍｏｄ  ｎを計算し、Ｌ（μ）＝（μ−１）／ｎである。秘密（復号）鍵は、（λ，μ）である。本明細書に記載されている例における復号化式は、ｍ＝Ｌ（ｃλ  ｍｏｄ  ｎ２）μ  ｍｏｄ  ｎである。
【００１５】
秘密鍵（例えば、λおよびμ）を生成する別の例示的な方法は、ｐおよびｑが同等の長さを有する場合、λ＝Φ（ｎ）＝（ｐ−１）（ｑ−１）、μ＝Φ（ｎ）−１  ｍｏｄ  ｎおよびｇ＝ｎ＋１を計算することによるものである。
【００１６】
例えば、ｐおよびｑは、５１２ビットの長さの数であってもよく、結果として生じるｎは、１０２４ビットの長さの合成数であってもよい。ｐおよびｑが１０２４ビットの長さの素数であれば、その結果として、ｎは２０４８ビットの長さであってもよい（この合成体は「ＲＳＡ数」と呼ばれる）。
【００１７】
復号化を行う所有者またはパーティのみがｐおよびｑを知っているまたは知っているべきであるので、所有者（例えば、所有者のコンピュータ装置またはシステム）のみがｐおよび／またはｑを用いて暗号化を行うことができる。高速暗号化１００は、例えば、秘密鍵１０４または秘密鍵の構成要素（例えば、ｐおよびｑ）を用いて暗号化を加速させるように実現される。
【００１８】
図１に示されるように、高速暗号化１００は、公開鍵１０２と対応する秘密鍵１０４（
またはその一部）とを両方とも用いてデータ（例えば、メッセージＭ１）を暗号化して、暗号文（例えば、暗号文Ｃ１）を生成する。
【００１９】
ＥＱ１暗号化式は、ｃ＝（ｇｍ）（ｒｎ）  ｍｏｄ  ｎ２である。ｇとしてｎ＋１が使用されると、暗号化式は、ｃ＝（（ｎ＋１）ｍ）（ｒｎ）  ｍｏｄ  ｎ２になり、これは、（ｎ＋１）ｍ  ｍｏｄ  ｎ２の２項展開により、ｃ＝（１＋ｎｍ）（ｒｎ）  ｍｏｄ  ｎ２（ＥＱ２として参照され得る）に変化させることができる。ＥＱ２では、１つのべき乗（すなわち、ｇｍ）が除去されており、計算時間を短縮することができる。ＥＱ２は、残りのべき乗（すなわち、ｒｎ）を１つだけ有している。
【００２０】
ｐおよびｑを使用することによって、残りのべき乗を除去することができ、またはその計算時間を短縮することができる。基数が固定されて指数が変化する場合に、事前計算は高速になるであろう。ｐおよびｑを用いて暗号化を加速させる目的で（すなわち、これは、ｐおよびｑを知っているまたはｐおよびｑにアクセスできる秘密鍵１０４の所有者によってのみ行われることができる）、固定された基数で事前計算を行うことができるようにＥＱ２の「（ｒｎ）  ｍｏｄ  ｎ２」部分を変換するために、周知の中国剰余定理（Chinese Remainder Theorem：ＣＲＴ）が使用されてもよい。
【００２１】
【数２】
2018142013.tif 000003
【００２２】
ｎ番目の剰余を取得するために、ｙ１およびｙ２はｎ乗に累乗される。したがって、（ｙ１）ｎ＝［（ｇ１）ｓ１  ｍｏｄ  ｐ２］ｎ＝［（ｇ１）ｓ１］ｎ  ｍｏｄ  ｐ２＝（ｇ１ｎ）ｓ１  ｍｏｄ  ｐ２であり、（ｙ２）ｎ＝［（ｇ２）ｓ２  ｍｏｄ  ｑ２］ｎ＝［（ｇ２）ｓ２］ｎ  ｍｏｄ  ｑ２＝（ｇ２ｎ）ｓ２  ｍｏｄ  ｑ２である。参考までに、ｇ１ｎ  ｍｏｄ  ｐ２は、ＧＮ１として参照され得て、ｇ２ｎ  ｍｏｄ  ｑ２＝ＧＮ２である。その結果、固定ベースのＧＮ１は、乱数ｓ１  ｍｏｄ  ｐ２の指数に累乗され（すなわち、ＧＮ１ｓ１  ｍｏｄ  ｐ２）、固定ベースのＧＮ２は、乱数ｓ２  ｍｏｄ  ｑ２の指数に累乗される（すなわち、ＧＮ２ｓ２  ｍｏｄ  ｑ２）。
【００２３】
高速暗号化１００は、一度値を事前計算し、ｐおよびｑの各組み合わせについて一度だけ値を事前計算する。説明を簡単にするために、一例として小さなｐおよびｑの値が選択される。コンピュータ装置またはシステムによる実際の実現例では、ｐおよびｑの値は、２５６ビットであってもよく、５１２ビットであってもよく、１０２４ビットであっても
よく、２０４８ビットであってもよく、または他のビット数の長さであってもよい。例えば、以下に示される例では、ｐ＝５であり、ｑ＝７である。上記の例示的な実現例は、以下の一連の演算に示されるようにｐおよびｑの値に適用される。
【００２４】
【数３】
2018142013.tif 000004
【００２５】
上記の定数値を事前計算した後、高速暗号化１００は、例えば以下のアルゴリズムを用いて任意のデータまたはメッセージｍを暗号文ｃに暗号化することができる。
【００２６】
ＥＱ２は、ｃ＝（１＋ｎｍ）（ｒｎ）  ｍｏｄ  ｎ２であり、「（ｒｎ）  ｍｏｄ  ｎ２」部分は、ＧＮ１ｓ１  ｍｏｄ  ｐ２およびＧＮ２ｓ２  ｍｏｄ  ｑ２に対するＣＲＴ（中国剰余定理）を用いて計算されることができる。
【００２７】
Ｄ＝（１＋ｎｍ）  ｍｏｄ  ｎ２とする。したがって、Ｄの計算は、基本的には、（例えば、時間および／またはリソース消費量の点で）計算コストが最も高いという観点から、１回の乗算である。
【００２８】
実行されたように乱数要素ｓ１をΦ（ｐ２）から選択し、乱数要素ｓ２をΦ（ｑ２）から選択するオペレーションは、計算コストの観点では取るに足らない。
【００２９】
Ｅ＝ＧＮ１ｓ１  ｍｏｄ  ｐ２およびＦ＝ＧＮ２ｓ２  ｍｏｄ  ｑ２を計算する。計算コストは、基本的には、固定基数による２つのべき乗演算である。固定基数べき乗は、加法鎖、特にピッペンジャのべき乗アルゴリズム（Pippenger's Exponentiation Algorithm）の方法によって加速させることができる。
【００３０】
高速暗号化１００は、ＣＲＴを用いて計算を実行し、ＥおよびＦを組み合わせて、結果Ｈ＝（ｒｎ）  ｍｏｄ  ｎ２を生成する。計算コストは、いかなるべき乗演算も実行することを含んでいない。
【００３１】
次いで、高速暗号化１００は、ｃ＝ＤＨ  ｍｏｄ  ｎ２を計算する。
例えば、図２に示されるように、高速暗号化１００は、メッセージＭ１を暗号化して、暗号文Ｃ１を生成し得る。Ｍ１＝１２（すなわち、ｍ＝１２）である。（ｐ＝５およびｑ＝７に基づいて）事前計算された定数ＧＮ１およびＧＮ２を用いて、高速暗号化１００は、以下を選択および／または計算する：
Ｄ＝（１＋ｎｍ）  ｍｏｄ  ｎ２＝（１＋３５×１２）  ｍｏｄ  ３５２＝４２１
ｓ１＝７およびｓ２＝９（ランダムに選択される）
Ｅ＝ＧＮ１ｓ１  ｍｏｄ  ｐ２＝１８７  ｍｏｄ  ２５＝７
Ｆ＝ＧＮ２ｓ２  ｍｏｄ  ｑ２＝１９９  ｍｏｄ  ４９＝４８
Ｈは、以下の２つの式を用いて計算することができる
ｘ≡７  ｍｏｄ  ２５
ｘ≡４８  ｍｏｄ  ４９
Ｈ＝８３２
Ｃ１＝ＤＨ  ｍｏｄ  ｎ２＝４２１×８３２  ｍｏｄ  １２２５＝１１４７。
【００３２】
【数４】
2018142013.tif 000005
【００３３】
高速暗号化１００がＭ１を暗号化してＣ１を作成した後、Ｃ１は、例えばパーティＡまたは所有者２００によって制御されるデータベース２２０に格納され得る。また、Ｃ１は、ネットワーク２２４（例えば、パブリックネットワークまたはインターネット）を介して、経路２２２を通って例えばパーティＣ２２６に送信され得る。パーティＣは、データ格納サービスを提供する第三者（例えば、クラウドストレージサービスプロバイダ）であってもよい。いくつかの実現例では、暗号文Ｃ１は、ネットワーク２２４を介して送信されて、パーティＡによって制御される装置またはシステム（図示せず）によって格納または処理され得る。パーティＡがＭ１またはＣ１の平文データにアクセスしたい場合、パーティＡは、データベース２２０に格納されていればデータベース２２０からＣ１を抽出してもよく、またはネットワーク２２４および経路２２８を介してパーティＣからＣ１を抽出してもよい。Ｃ１の供給源にかかわらず、パーティＡは、復号化エンジン２３０（または復号化２３０）を用いてＣ１を復号化することができる。
【００３４】
高速暗号化１００とは対照的に、公開鍵１０２にアクセスできる（すなわち、ｐおよびｑを知らない）パーティ（例えば、パーティＢ）のみが、公開鍵を用いて暗号化を行う。例えば、パーティＡ２００は、公開鍵１０２をパーティＢ２５０に提供して、パーティＢ
は、メッセージＭ２を暗号文Ｃ２に暗号化してパーティＡに送る。Ｍ２は、いかなる値であってもよい。パーティＢの暗号化エンジン２６０は、ＥＱ１ｃ＝（ｇｍ）（ｒｎ）  ｍｏｄ  ｎ２を用いてＭ２を暗号化する。例えばｎ＝３５であり、例えばｇ＝３６である。パーティＢは、合成数ｎの因数ｐおよびｑを知らない。暗号化エンジン２６０は、上記のように乱数ｒを選択する。例えば、ｒ＝２３である。比較のために、Ｍ２＝１２（すなわち、ｍ＝１２）である。ＥＱ１は、Ｃ２＝（ｇｍ）（ｒｎ）  ｍｏｄ  ｎ２＝（３６１２）（２３３５）  ｍｏｄ  １２２５＝５２２になる。パーティＢは、Ｃ２をパーティＡに送る。なお、ＥＱ１は、秘密鍵１０４（例えば、因数ｐおよびｑ）または値λおよび／もしくはμを使用しない。
【００３５】
パーティＡの復号化エンジン２３０は、Ｃ１（すなわち、秘密鍵１０４および公開鍵１０２を用いて高速暗号化１００によって暗号化される）およびＣ２（すなわち、公開鍵１０２だけを用いてパーティＢの暗号化エンジン２６０によって暗号化される）を同じように復号化することができる。Ｃ１およびＣ２が（例えば、別々に）いつ到達するかにかかわらず、Ｃ１およびＣ２は、同一の復号化鍵または秘密鍵１０４（例えば、λ、μ）を用いて独立して復号化される。
【００３６】
復号化のために、復号化エンジン２３０は、以下の値を抽出または計算する：
ｐ＝５、ｑ＝７、ｎ＝ｐｑ＝３５、ｎ２＝１２２５
ｇ＝ｎ＋１＝３６
λ＝ｌｃｍ（ｐ−１，ｑ−１）＝１２
μ＝（Ｌ（ｇλ  ｍｏｄ  ｎ２））−１  ｍｏｄ  ｎ、ここで、Ｌ（ｕ）＝（ｕ−１）／ｎである
ｕ＝ｇλ  ｍｏｄ  ｎ２＝３６１２  ｍｏｄ  ３５２＝４２１
Ｌ（ｕ）＝（４２１−１）／３５＝１２
μ＝（１２）−１  ｍｏｄ  ３５＝３
秘密鍵（λ，μ）＝（１２，３）
復号化式は、ｍ＝Ｌ（ｃλ  ｍｏｄ  ｎ２）μ  ｍｏｄ  ｎである
ｍ＝Ｌ（ｃλ  ｍｏｄ  ｎ２）μ  ｍｏｄ  ｎ＝（ｋ）μ  ｍｏｄ  ｎ、ここで、ｋ＝Ｌ（ｃλ  ｍｏｄ  ｎ２）であり、Ｌ（ｕ）＝（ｕ−１）／ｎである。
【００３７】
復号化エンジン２３０は、Ｃ１を復号化して平文Ｍ１を取得し、Ｃ２を復号化して平文Ｍ２を取得する。復号化エンジン２３０は、以下の値を計算して、Ｃ１（高速暗号化１００によって生成されたＣ１＝１１４７）を復号化する：
ｕ＝Ｃ１λ  ｍｏｄ  ｎ２＝１１４７１２  ｍｏｄ  １２２５＝１４１
ｋ＝（１４１−１）／３５＝４
Ｍ１＝（ｋ）μ  ｍｏｄ  ｎ＝（４）３  ｍｏｄ  ３５＝１２。
【００３８】
復号化エンジン２３０は、以下の値を計算して、Ｃ２（暗号化エンジン２６０によって生成されたＣ２＝５２２）を復号化する：
ｕ＝Ｃ２λ  ｍｏｄ  ｎ２＝５２２１２  ｍｏｄ  １２２５＝１４１
ｋ＝（１４１−１）／３５＝４
Ｍ２＝（ｋ）μ  ｍｏｄ  ｎ＝（４）３  ｍｏｄ  ３５＝１２。
【００３９】
Ｃ１が高速暗号化アルゴリズムを用いて暗号化され、Ｃ２が従来の暗号化アルゴリズムを用いて暗号化されることにかかわらず、同一の復号化エンジン２３０が暗号文Ｃ１およびＣ２を復号化することができる。
【００４０】
図３は、プロセス実現例の一例を示す。プロセス３００は、例えばブロック３１０を含み、ブロック３１０において、高速暗号化１００は、合成数ｎ＝ｐ×ｑ（例えば、公開鍵
１０２）を用いてデータ（例えば、Ｍ１）を暗号文（例えば、Ｃ１）に暗号化し、ｐおよびｑは、素数であってもよい。暗号化オペレーションを加速させるために、高速暗号化１００は、秘密鍵１０４の構成要素であるｐおよびｑも個々に使用した。例えば、ｇ１およびＧＮ１は、ｐを用いてまたはｐに基づいて計算され、ｇ２およびＧＮ２は、ｑを用いてまたはｑに基づいて計算される。ブロック３２０において、暗号化されたデータ（例えば、Ｃ１）は、（例えば、データベース２２０に）格納されてもよく、または別の場所もしくはパーティ（例えば、パーティＣ）に送られてもよい。
【００４１】
いくつかの例では、プロセス３００は、異なるブロックにより実現されてもよく、より少ない数のブロックにより実現されてもよく、またはより多い数のブロックにより実現されてもよい。プロセス３００は、コンピュータによって実行可能な命令として実現されてもよく、当該命令は、媒体に格納され、１つ以上のコンピュータ装置の１つ以上のプロセッサにロードされ、コンピュータによって実行される方法として実行されてもよい。
【００４２】
公開鍵オペレーションにおいて秘密鍵を使用する別の例は、署名照合（例えば、デジタル署名を用いて署名されたメッセージまたはデータの真正性を確認すること）である。例えば、ＲＳＡ署名鍵を作成するために、整数ｅおよびｄとともに、２つの大きな素数（例えば、ｐおよびｑ）の積である係数Ｎを含むＲＳＡ鍵ペアを生成し、（ｅ）（ｄ）≡１（ｍｏｄ  Φ（Ｎ））であり、Φはオイラーのファイ関数である。署名者の公開鍵は、Ｎおよびｅで構成され、署名者の秘密鍵は、ｄを含む。
【００４３】
メッセージｍを署名するために、署名者は、σ≡ｍｄ（ｍｏｄ  Ｎ）を計算する。デジタル署名されたメッセージσを照合するために、受信者は、σｅ≡ｍ（ｍｏｄ  Ｎ）を確認する。素因数ｐおよびｑ（すなわち、秘密鍵）を保持するパーティは、ＲＳＡ署名照合を実行することができ、ＲＳＡ署名照合は、σをｅ乗に累乗する代わりに、ＣＲＴを用いて演算ｍｏｄ  ｐおよびｍｏｄ  ｑを実行して、上記のＥＱ２の「（ｒｎ）  ｍｏｄ  ｎ２」部分の変換と同様のｅ乗  ｍｏｄ  Ｎへのメッセージの計算を加速させる。
【００４４】
【数５】
2018142013.tif 000006
【００４５】
同一のオペレーションは、因数（秘密鍵）を知っているパーティによるＲＳＡ暗号化のさらに別の例にも適用可能である。例えば、秘密鍵を用いてデジタル署名されたデータまたはメッセージを照合するために、当該メッセージに基づく照合結果が、（例えば、秘密鍵を知っているパーティによって）秘密鍵および対応する公開鍵の少なくとも一部を用いて生成されてもよい。照合結果は、例えば「照合済」である場合もあれば「却下」である場合もある。結果は、例えばログまたはデータベースに格納されてもよい。
【００４６】
図４は、いくつかの例示的な実現例に適した例示的な環境を示す。環境４００は、装置４０５〜４４５を含み、各々は、例えばネットワーク４６０を介して（例えば、有線および／または無線接続によって）少なくとも１つの他の装置に通信可能に接続されている。いくつかの装置は、１つ以上の記憶装置４３０および４４５に通信可能に接続されてもよ
い。
【００４７】
１つ以上の装置４０５〜４４５の一例は、図５における後述のコンピュータ装置５０５であってもよい。装置４０５〜４４５は、コンピュータ４０５（例えば、ラップトップコンピュータ装置）、モバイル機器４１０（例えば、スマートフォンまたはタブレット）、テレビ４１５、車両４２０に関連付けられる装置、サーバコンピュータ４２５、コンピュータ装置４３５〜４４０、記憶装置４３０および４４５を含み得るが、これらに限定されるものではない。
【００４８】
いくつかの実現例では、装置４０５〜４２０は、ユーザ装置（例えば、クラウドストレージサービスプロバイダに格納されたデータなどのデータにアクセスするためにユーザによって使用される装置）であると考えられてもよい。装置４２５〜４４５は、（例えば、サービスを提供するため、ならびに／または、暗号化されたウェブページ、テキスト、テキスト部分、画像、画像部分、音声、音声セグメント、映像、映像セグメント、および／もしくはそれらについての情報を格納するなどデータを格納するために、サービスプロバイダによって使用される）サービスプロバイダに関連付けられる装置であってもよい。
【００４９】
例えば、ユーザ（例えば、アリス）は、１つ以上の装置４２５〜４４５によってサポートされるストレージプロバイダに暗号化されたデータを送るために装置４０５または４１０を使用してもよい。アリスは、秘密鍵を用いて当該データを暗号化することができ、計算時間および／またはリソースを節約する。暗号化されたデータは、ストレージプロバイダによって復号化されることはできない。アリスは、データにアクセスしたいときには、（例えば、暗号化された形態の）データをストレージプロバイダから抽出して、アリスの装置４０５または４１０上で当該データを復号化する。
【００５０】
図５は、いくつかの例示的な実現例での使用に適した例示的なコンピュータ装置を有する例示的なコンピュータ環境を示す。コンピュータ環境５００におけるコンピュータ装置５０５は、１つ以上の処理ユニット、コアもしくはプロセッサ５１０、メモリ５１５（例えば、ＲＡＭ、ＲＯＭなど）、内部ストレージ５２０（例えば、磁気ストレージ、光学式ストレージ、ソリッドステートストレージおよび／もしくはオーガニックストレージ）、ならびに／または、Ｉ／Ｏインターフェース５２５を含み得て、それらはいずれも、情報を通信するための通信機構またはバス５３０上で結合されてもよく、またはコンピュータ装置５０５に組み込まれてもよい。
【００５１】
コンピュータ装置５０５は、入力／ユーザインターフェース５３５および出力装置／インターフェース５４０に通信可能に結合されることができる。入力／ユーザインターフェース５３５および出力装置／インターフェース５４０のどちらか一方または両方は、有線または無線インターフェースであってもよく、着脱可能であってもよい。入力／ユーザインターフェース５３５は、入力を提供するために使用可能な、物理的なまたはバーチャルな任意の装置、構成要素、センサまたはインターフェース（例えば、ボタン、タッチスクリーンインターフェース、キーボード、ポインティング／カーソル制御装置、マイクロホン、カメラ、点字、モーションセンサ、光学式読取装置など）を含み得る。出力装置／インターフェース５４０は、ディスプレイ、テレビ、モニタ、プリンタ、スピーカ、点字などを含み得る。いくつかの例示的な実現例では、入力／ユーザインターフェース５３５および出力装置／インターフェース５４０は、コンピュータ装置５０５に組み込まれてもよく、またはコンピュータ装置５０５に物理的に結合されてもよい。他の例示的な実現例では、他のコンピュータ装置が、入力／ユーザインターフェース５３５および出力装置／インターフェース５４０として機能してもよく、または、入力／ユーザインターフェース５３５および出力装置／インターフェース５４０の機能をコンピュータ装置５０５に提供してもよい。
【００５２】
コンピュータ装置５０５の例としては、高モバイル機器（例えば、スマートフォン、車両および他のマシン内の装置、人間および動物によって携帯される装置など）、モバイル機器（例えば、タブレット、ノート型パソコン、ラップトップ、パーソナルコンピュータ、携帯型テレビ、ラジオなど）、および、移動させることを考えて設計されていない装置（例えば、デスクトップコンピュータ、他のコンピュータ、情報キオスク、１つ以上のプロセッサを組み込んだおよび／または結合させたテレビ、ラジオなど）を挙げることができるが、これらに限定されるものではない。
【００５３】
コンピュータ装置５０５は、外部ストレージ５４５と、同一または異なる構成の１つ以上のコンピュータ装置を含むさまざまなネットワーク化された構成要素、装置およびシステムと通信するためのネットワーク５５０とに（例えば、Ｉ／Ｏインターフェース５２５を介して）通信可能に結合されることができる。コンピュータ装置５０５または任意の接続されたコンピュータ装置は、サーバ、クライアント、シンサーバ、汎用マシン、特殊用途マシン、もしくは別のラベルとして機能するものであってもよく、サーバ、クライアント、シンサーバ、汎用マシン、特殊用途マシン、もしくは別のラベルのサービスを提供するものであってもよく、または、サーバ、クライアント、シンサーバ、汎用マシン、特殊用途マシン、もしくは別のラベルと呼ばれてもよい。
【００５４】
Ｉ／Ｏインターフェース５２５は、コンピュータ環境５００における少なくとも全ての接続された構成要素、装置およびネットワークに、および／または、コンピュータ環境５００における少なくとも全ての接続された構成要素、装置およびネットワークから情報を通信するための任意の通信またはＩ／Ｏプロトコルまたは規格（例えば、イーサネット（登録商標）、８０２．１１ｘ、ユニバーサルシステムバス、ワイマックス、モデム、セルラーネットワークプロトコルなど）を使用する有線および／または無線インターフェースを含み得るが、これらに限定されるものではない。ネットワーク５５０は、任意のネットワークまたはネットワークの組み合わせ（例えば、インターネット、ローカルエリアネットワーク、広域ネットワーク、電話ネットワーク、セルラーネットワーク、衛星ネットワークなど）であってもよい。
【００５５】
コンピュータ装置５０５は、一時的な媒体および非一時的な媒体を含むコンピュータによって使用可能なまたはコンピュータ読取可能な媒体を使用することができ、および／または、コンピュータによって使用可能なまたはコンピュータ読取可能な媒体を使用して通信することができる。一時的な媒体は、伝送媒体（例えば、金属ケーブル、光ファイバ）、信号、搬送波などを含む。非一時的な媒体は、磁気媒体（例えば、ディスクおよびテープ）、光媒体（例えば、ＣＤ  ＲＯＭ、デジタルビデオディスク、ブルーレイ（登録商標）ディスク）、ソリッドステート媒体（例えば、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ソリッドステートストレージ）、および他の不揮発性記憶装置またはメモリを含む。
【００５６】
コンピュータ装置５０５は、いくつかの例示的なコンピュータ環境において技術、方法、アプリケーション、プロセス、またはコンピュータによって実行可能な命令を実行するために使用されることができる。コンピュータによって実行可能な命令は、一時的な媒体から抽出されてもよく、非一時的な媒体に格納されて非一時的な媒体から抽出されてもよい。実行可能な命令は、任意のプログラミング言語、スクリプト言語およびマシン言語（例えば、Ｃ、Ｃ＋＋、Ｃ♯、Ｊａｖａ（登録商標）、ビジュアルベーシック、パイソン、パール、ＪａｖａＳｃｒｉｐｔ（登録商標）など）のうちの１つ以上から生成されてもよい。
【００５７】
プロセッサ５１０は、ネイティブなまたはバーチャルな環境ではいかなるオペレーティングシステム（operating system：ＯＳ）（図示せず）下でも動作することができる。１
つ以上のアプリケーションを配備することができ、当該１つ以上のアプリケーションは、論理ユニット５６０と、アプリケーションプログラミングインターフェース（application programming interface：ＡＰＩ）ユニット５６５と、入力ユニット５７０と、出力ユ
ニット５７５と、事前計算エンジン５８０と、乱数発生器５８５と、暗号化エンジン５９０と、さまざまなユニットが互いに、ＯＳと、および他のアプリケーション（図示せず）と通信するようにするためのユニット間通信機構５９５とを含む。例えば、事前計算エンジン５８０、乱数発生器５８５および暗号化エンジン５９０は、図１〜図４に示され記載されている１つ以上のプロセスを実行することができる。記載されているユニットおよび要素は、設計、機能、構成またはインプリメンテーションの点で変更可能であり、記載されている説明に限定されるものではない。
【００５８】
いくつかの例示的な実現例では、情報または実行命令は、ＡＰＩユニット５６５によって受取られると、１つ以上の他のユニット（例えば、論理ユニット５６０、入力ユニット５７０、出力ユニット５７５、事前計算エンジン５８０、乱数発生器５８５および暗号化エンジン５９０）に通信されることができる。例えば、入力ユニット５７０がメッセージＭを検出した後、入力ユニット５７０は、ＡＰＩユニット５６５を用いてメッセージＭを事前計算エンジン５８０に通信してもよい。事前計算エンジン５８０は、暗号化オペレーションで必要な定数および／または値が確実に利用可能であることを確認する。利用可能でなければ、事前計算エンジン５８０は、これらの定数および／または値を生成または事前計算する。次いで、事前計算エンジン５８０は、暗号化エンジン５９０を呼び出して、Ｍを暗号化する。暗号化エンジン５９０は、必要であれば乱数発生器５８５を呼び出して、暗号化に使用される乱数ｓ１およびｓ２を生成する。暗号化エンジン５９０がＭを暗号文Ｃに暗号化した後、暗号化エンジン５９０は、Ｃを出力ユニット５７５に渡し、出力ユニット５７５は、Ｃを格納するため、またはネットワークでＣを送信するためにｉ／ｏインターフェース５２５と対話することができる。
【００５９】
いくつかの例では、論理ユニット５６０は、上記のいくつかの例示的な実現例においてユニット間の情報フローを制御し、ＡＰＩユニット５６５、入力ユニット５７０、出力ユニット５７５、事前計算エンジン５８０、乱数発生器５８５および暗号化エンジン５９０によって提供されるサービスを仕向けるように構成されてもよい。例えば、１つ以上のプロセスまたは実現例のフローは、論理ユニット５６０単独で、またはＡＰＩユニット５６５とともに制御されてもよい。
【００６０】
いくつかの例示的な実現例を図示および説明してきたが、これらの例示的な実現例は、本明細書に記載されている主題をこの分野の当業者に伝えるために提供されている。本明細書に記載されている主題は、記載されている例示的な実現例に限定されることなく、さまざまな形態で実現されてもよいということが理解されるべきである。本明細書に記載されている主題は、それらの具体的に規定もしくは記載されている事項がなくても実施可能であり、または、記載されていない他のもしくは異なる要素もしくは事項とともに実施されてもよい。添付の特許請求の範囲およびそれらの等価物に規定されている本明細書に記載の主題から逸脱することなく、これらの例示的な実現例において変更を加え得ることは、この分野の当業者によって理解されるであろう。
【図１】
2018142013.tif 000010
【図２】
2018142013.tif 000011
【図３】
2018142013.tif 000012
【図４】
2018142013.tif 000013
【図５】
2018142013.tif 000014
【手続補正書】
【提出日】平成30年6月6日(2018.6.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータによって実行される、デジタル署名照合のための方法であって、
秘密鍵を用いてデジタル署名されるメッセージに基づいて照合結果を生成するステップを備え、前記生成するステップは、前記秘密鍵と、対応する公開鍵とを使用し、前記方法はさらに、前記照合結果を格納するステップを備える、方法。
【請求項２】
前記公開鍵は、合成数Ｎを備え、前記秘密鍵は、素数ｐおよびｑを用いて生成され、Ｎ＝ｐ×ｑである、請求項１に記載の方法。
【請求項３】
デジタル署名照合のための方法をコンピュータに実行させるためのプログラムであって、
前記方法は、秘密鍵を用いてデジタル署名されるメッセージに基づいて照合結果を生成するステップを含み、
前記生成するステップは、前記秘密鍵と、対応する公開鍵とを使用し、
前記方法は、前記照合結果を格納するステップをさらに含む、プログラム。
【請求項４】
前記公開鍵は、合成数Ｎを備え、前記秘密鍵は、素数ｐおよびｑを用いて生成され、Ｎ＝ｐ×ｑである、請求項３に記載のプログラム。
【請求項５】
記憶装置とプロセッサとを備える少なくとも１つのコンピュータ装置であって、
前記プロセッサは、秘密鍵を用いてデジタル署名されるメッセージに基づいて照合結果を生成する手段を含み、
前記生成する手段は、前記秘密鍵と、対応する公開鍵とを使用し、
前記プロセッサは、前記照合結果を格納する手段をさらに含む、少なくとも１つのコンピュータ装置。
【請求項６】
前記公開鍵は、合成数Ｎを備え、前記秘密鍵は、素数ｐおよびｑを用いて生成され、Ｎ＝ｐ×ｑである、請求項５に記載の少なくとも１つのコンピュータ装置。
【外国語明細書】
2018142013000001.pdf