(57)【要約】【解決手段】複合暗号署名を生成する方法が開示される。この方法は、メッセージと、第一者署名の第１部分と、を受信するステップを備える。第一者署名の第１部分は、メッセージと、第１の秘密鍵の第１のシェアと、から導出される。この方法は、第一署名の第１部分と、第１の秘密鍵の第２のシェアと、から第一者署名を生成するステップをさらに備える。この方法は、メッセージと、第２の秘密鍵と、から第二者署名を生成するステップをさらに備える。この方法は、複合暗号署名を生成するために、第一者署名と、第二者署名と、を結合するステップをさらに備える。この方法を実行するための、装置、コンピュータ読み取り可能媒体もまた与えられる。【選択図】図２
2019537349.tif 000002
【特許請求の範囲】
【請求項１】
複合暗号署名を生成する方法であって、
メッセージと第一者署名の第１部分とを受信するステップを備え、前記第一者署名の第１部分は前記メッセージと第１の秘密鍵の第１のシェアとから導出され、
前記第一者署名の前記第１部分と前記第１の秘密鍵の第２のシェアとから第一者署名を生成するステップを備え、
前記メッセージと第２の秘密鍵とから第二者署名を生成するステップを備え、
複合暗号署名を生成するために、前記第一者署名と前記第二者署名とを結合するステップを備える方法。
【請求項２】
前記第１の秘密鍵と公開鍵とは第１の鍵のペアであり、
前記第２の秘密鍵と前記公開鍵とは第２の鍵のペアを形成する請求項１に記載の方法。
【請求項３】
前記第１の秘密鍵は、第１の秘密モジュラスと、第１の秘密エクスポーネントと、を備え、
前記第２の秘密鍵は、第２の秘密モジュラスと、第２の秘密エクスポーネントと、を備え、
前記公開鍵は、公開エクスポーネントを備える請求項２に記載の方法。
【請求項４】
前記第１の秘密モジュラスは素数の積であり、
前記第２の秘密モジュラスは素数の積であり、
前記素数の各々は、前記公開エクスポーネントと互いに素である請求項３に記載の方法。
【請求項５】
前記第１の秘密モジュラスと前記第２の秘密モジュラスとから複合公開モジュラスを生成するステップをさらに備える請求項３または４に記載の方法。
【請求項６】
前記第１の秘密鍵の前記第１のシェアは、前記第１の秘密エクスポーネントの第１の付加的なシェアを備え、
前記第１の秘密鍵の前記第２のシェアは、前記第１の秘密エクスポーネントの第２の付加的なシェアを備える請求項３から５のいずれかに記載の方法。
【請求項７】
前記第１の秘密鍵の前記第１のシェアは、前記第１の秘密エクスポーネントの第１の倍増されたシェアを備え、
前記第１の秘密鍵の前記第２のシェアは、前記第１の秘密エクスポーネントの第２の倍増されたシェアを備える請求項３から５のいずれかに記載の方法。
【請求項８】
前記公開鍵と前記メッセージとを用いて、前記第一者署名の第１部分の起源を証明するステップをさらに備える請求項３から５のいずれかに記載の方法。
【請求項９】
メッセージと第一者署名の第１部分とを受信するステップは、前記メッセージと前記第一者署名の前記第１部分とを備える署名リクエストを受信するステップを備え、
前記第一者署名の第１部分の起源を証明するステップは、以下のチェックするステップ、すなわち、前記署名リクエストが１つ以上の同じ起源からの過去の通信に関する情報をさらに備えることをチェックするステップを備える請求項８に記載の方法。
【請求項１０】
前記複合暗号署名を送信するステップをさらに備える請求項１から９のいずれかに記載の方法。
【請求項１１】
メッセージと第一者署名の第１部分とを受信するステップは、メッセージと第一者署名の第１部分とをクライアント装置から受信するステップを備える請求項１から１０のいずれかに記載の方法。
【請求項１２】
メッセージと第一者署名の第１部分とを受信するステップは、メッセージと第一者署名の第１部分とを安全なチャネルを介して受信するステップを備える請求項１から１１のいずれかに記載の方法。
【請求項１３】
前記メッセージはハッシュ化されている請求項１から１２のいずれかに記載の方法。
【請求項１４】
前記メッセージはパディングされている請求項１から１３のいずれかに記載の方法。
【請求項１５】
複合暗号署名を生成する装置であって、
少なくとも１つのプロセッサと、少なくとも１つのメモリと、を備え、
前記少なくとも１つのメモリはコンピュータ実行可能な命令を記憶し、
前記コンピュータ実行可能な命令は、前記コンピュータ実行可能な命令が前記少なくとも１つのプロセッサにより実行されたとき、請求項１から１４のいずれかに記載の方法を前記装置に実行させる装置。
【請求項１６】
請求項１から１４のいずれかに記載の方法をコンピュータに実行させるためのコンピュータ実行可能な命令を記憶したコンピュータ読み取り可能媒体。
【請求項１７】
複合暗号署名を生成する方法であって、
第１装置において、
メッセージと第１の秘密鍵の第１のシェアとから第一者署名の第１部分を生成するステップと、
前記メッセージと前記第一者署名の前記第１部分とを第２装置に送信するステップと、を備え、
前記第２装置において、
前記第一者署名の前記第１部分と第１の秘密鍵の第２のシェアとから第一者署名を生成するステップと、
前記メッセージと第２の秘密鍵とから第二者署名を生成するステップと、
複合暗号署名を生成するために、前記第一者署名と前記第二者署名とを結合するステップと、を備える方法。
【請求項１８】
前記第２装置において、前記複合暗号署名と複合公開鍵とをクライアント装置に送信するステップと、
前記第１装置において、前記メッセージと前記複合公開鍵とを用いて前記複合暗号署名を証明するステップと、をさらに備える請求項１７に記載の方法。
【請求項１９】
複合暗号署名を生成するシステムであって、
第１装置と、第２装置と、を備え、
前記第１装置と前記第２装置の各々は、プロセッサと、少なくとも１つのメモリと、を備え、
前記第１装置の少なくとも１つのメモリと、前記第２装置の少なくとも１つのメモリは、それぞれコンピュータ実行可能な命令を記憶し、
前記コンピュータ実行可能な命令は、前記コンピュータ実行可能な命令が前記第１装置と第２装置のプロセッサにより実行されたとき、請求項１７または１８に記載の方法を前記第１装置と前記第２装置に実行させるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
デジタル署名は、デジタルメッセージや文書の信頼性を示す仕組みである。デジタルメッセージに添付されたデジタル署名が正しいことを受信者が確認できれば、受信者は、当該メッセージが既知の送信者によって作成されたものであること、送信者は当該メッセージを送信したことを否定できないこと、さらに該メッセージが伝達中に変更されていないこと、などを合理的に信じることができる。
【背景技術】
【０００２】
しばしばデジタル署名は、非対称暗号を使用する。非対称暗号では、デジタル署名を生成するために、送信者の秘密鍵が使われる。また、このデジタル署名と当該デジタル署名が関連するすべてのメッセージが当該送信者に起因するものであることを証明するために、受信者は送信者の秘密鍵を使う。
【０００３】
デジタル署名の仕組みが機能するためには、送信者は１つ以上の秘密鍵を安全に記憶できなくてはならない。例えば送信者は、１つ以上の秘密鍵を、分離されたメモリデバイスやスマートカードなどの特別なハードウェア内に記憶してよい。しかしながら、デジタル署名の使用が徐々に普及しつつある世界では、このようなハードウェアは、高価であり、デジタル署名が広く使われるためには有効なソリューションではないことが分かる。さらに、モバイルフォンを含むモバイルデバイスのような現代的な技術と、デジタル署名とを統合したいという要望がある。このようなモバイルデバイスは、日常の通信のために多くの人が利用している。しかしながら、モバイルデバイスがカードリーダと物理的に接続できない場合があり、接続インタフェースはしばしば急速に変化し、カードリーダをモバイルデバイスに接続することはユーザにとって便利ではない。さらに、デジタル署名で使われる暗号化アルゴリズムは安全でなくなり、鍵のサイズは不十分となる可能性がある。アルゴリズムや鍵のサイズを変えることは、ほとんどの場合、使用中のすべてのスマートカードを物理的に交換することを意味する。
【０００４】
ソフトウェアははるかにアップデートが容易である。モバイルデバイスは自身のソフトウェアを自動的にアップデートするため、ユーザがアップデート処理に気づかないことすらしばしばある。経済的観点から見て、ソフトウェアのみに基づくデジタル署名のソリューションは魅力的である。ソフトウェアベースのデジタル署名のソリューションにおいて解決すべき最も困難な課題は、秘密鍵の管理である。モバイルデバイスその他の任意のタイプのコンピュータの静的メモリに記憶された鍵は、当該メモリへのアクセスを獲得した攻撃者によって容易に複製され得る。攻撃者は、複製された鍵を用いて、無尽蔵の偽造署名を生成することができる。こうした偽造署名は、本物の送信者が使う本当の署名と区別することができない。
【０００５】
秘密鍵が暗号鍵としてのパスワードを用いて暗号化された形で記憶されたとしても、いわゆる辞書攻撃により攻撃者が正しい鍵を見つけてしまうことがあり得る。辞書攻撃では、攻撃者はパスワードの辞書を持ち、この辞書を用いて正しいパスワードが見つかるまで１つ１つ試行する。このような攻撃が成功するために、パスワードや、攻撃者が成功したことを知る基準点が比較的少数であればよい。人が記憶できるパスワードは辞書攻撃に対して弱すぎることが経験から知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
マルチパーティプロトコルを考慮したとき、少なくとも以上で概観した課題は公開される。例えば、送信者は、受信者に（デジタル署名された）メッセージを送信し、応答を受信してよい。例えば、応答は、当該デジタル署名されたメッセージが受信者によって受信され理解されたことを示すものであってよい。従って、送信者は、受信者が（他の何らかのメッセージでなく）デジタル署名されたオリジナルのメッセージを確かに受信したことや、応答が確かに受信者から来たものであることを証明することを欲してよい。商業的その他の理由により、送信者は上記に代えて、メッセージを第三者に送信し、当該第三者が当該メッセージは第二者により証明されたことを仮定された状態にあることを望んでよい。従って、共通署名メッセージのための安全な方法が望まれる。
【課題を解決するための手段】
【０００７】
本開示の複数の利点が、当業者に明らかとなるだろう。例えば、第一者またはクライアント装置が第1の秘密鍵の第１のシェアを持ち、第二者またはサーバが第１の秘密鍵と第２の秘密鍵の第２のシェアを持つシナリオでは、第一者も第二者も、いずれも単独では正しい複合鍵を作ることはできない。さらに、第一者またはクライアント装置に漏えいがあったとしても、第二者に漏えいがない限り、攻撃者は辞書攻撃を与えることはできない。後述するように、第一者に漏えいがあったとき、第二者が防御することは容易である。
【０００８】
複合暗号署名を生成する方法が与えられる。この方法は、メッセージと、第一者署名の第１部分と、を受信するステップを備える。第一者署名の第１部分は、メッセージと、第１の秘密鍵の第１のシェアと、から導出される。この方法は、第一署名の第１部分と、第１の秘密鍵の第２のシェアと、から第一者署名を生成するステップをさらに備える。この方法は、メッセージと、第２の秘密鍵と、から第二者署名を生成するステップをさらに備える。この方法は、複合暗号署名を生成するために、第一者署名と、第二者署名と、を結合するステップをさらに備える。
【０００９】
第１の秘密鍵と、公開鍵と、は第１の鍵のペアであってよい。第２の秘密鍵と、公開鍵と、は第２の鍵のペアであってよい。第１の鍵のペアの公開鍵は、第２の鍵のペアの公開鍵と同じであってよい。
【００１０】
第１の秘密鍵は、第１の秘密モジュラスと、第１の秘密エクスポーネントと、を備えてよい。第２の秘密鍵は、第２の秘密モジュラスと、第２の秘密エクスポーネントと、を備えてよい。公開鍵は、公開エクスポーネントを備えてよい。
【００１１】
第１の秘密モジュラスは、素数の積であってよい。第２の秘密モジュラスは、素数の積であってよい。これらの素数の各々は、公開エクスポーネントと互いに素であってよい。
【００１２】
この方法は、第１の公開モジュラスと、第２の公開モジュラスと、から複合公開モジュラスを生成するステップをさらに備えてよい。
【００１３】
第１の秘密鍵の第１のシェアは、第１の秘密エクスポーネントの第１の付加的なシェアを備えてよい。第１の秘密鍵の第２のシェアは、第１の秘密エクスポーネントの第２の付加的なシェアを備えてよい。
【００１４】
第１の秘密鍵の第１のシェアは、第１の秘密エクスポーネントの第１の倍増されたシェアを備えてよい。第１の秘密鍵の第２のシェアは、第１の秘密エクスポーネントの第２の倍増されたシェアを備えてよい。
【００１５】
この方法は、公開鍵と、メッセージと、を用いて、第一者署名の第１部分の起源を証明するステップをさらに備えてよい。メッセージと、第一者署名の第１部分と、を受信するステップは、メッセージと第一者署名の第１部分とを備える署名リクエストを受信するステップを備えてよい。第一者署名の第１部分の起源を証明するステップは、以下のチェックするステップ、すなわち、署名リクエストが１つ以上の同じ起源からの過去の通信に関する情報をさらに備えることをチェックするステップを備えてよい。
【００１６】
メッセージと、第一者署名の第１部分と、を受信するステップは、メッセージと、第一者署名の第１部分と、をクライアント装置から受信するステップを備えてよい。メッセージと、第一者署名の第１部分と、を受信するステップは、メッセージと、第一者署名の第１部分と、を安全なチャネルを介して受信するステップを備えてよい。
【００１７】
メッセージは、ハッシュ化されてよい。ハッシュ関数は、任意のサイズのデータを有限なサイズのデータにマップ化することに使うことのできる、任意の好適な暗号化関数であってよい。メッセージは、パディングされてよい。メッセージは、ハッシュ化され、かつパディングされてよい。
【００１８】
装置が与えられる。この装置は、少なくとも１つのプロセッサと、少なくとも１つのメモリと、を備える。少なくとも１つのメモリはコンピュータ実行可能な命令を記憶する。コンピュータ実行可能な命令は、コンピュータ実行可能な命令が少なくとも１つのプロセッサにより実行されたとき、前述の方法を装置に実行させる。
【００１９】
コンピュータ読み取り可能媒体が与えられる。このコンピュータ読み取り可能媒体は、前述の方法をコンピュータに実行させるためのコンピュータ実行可能な命令を記憶する。
【００２０】
複合暗号署名を生成する方法が与えられる。この方法は、第１装置において、メッセージと、第１の秘密鍵の第１のシェアと、から第一者署名の第１部分を生成するステップを備える。この方法は、第１装置において、メッセージと、第一者署名の第１部分と、を第２装置に送信するステップと、をさらに備える。この方法は、第２装置において、第一者署名の第１部分と、第１の秘密鍵の第２のシェアと、から第一者署名を生成するステップをさらに備える。この方法は、第２装置において、メッセージと、第２の秘密鍵と、から第二者署名を生成するステップをさらに備える。この方法は、第２装置において、複合暗号署名を生成するために、第一者署名と、第二者署名と、を結合するステップとをさらに備える。
【００２１】
この方法は、第２装置において、複合暗号署名と、複合公開鍵と、を第１装置に送信するステップをさらに備えてよい。この方法は、第１装置において、メッセージと、複合公開鍵と、を用いて、複合暗号署名を証明するステップをさらに備えてよい。
【００２２】
複合暗号署名を生成するシステムが与えられる。このシステムは、第１装置と、第２装置と、を備える。第１装置と第２装置の各々は、プロセッサと、少なくとも１つのメモリと、を備える。第１装置の少なくとも１つのメモリと、第２装置の少なくとも１つのメモリは、それぞれコンピュータ実行可能な命令を記憶する。コンピュータ実行可能な命令は、コンピュータ実行可能な命令が前記第１装置と第２装置のプロセッサにより実行されたとき、前述の方法を第１装置と第２装置に実行させる。
【図面の簡単な説明】
【００２３】
以下、添付の図面を参照して、例示のみで本開示の実施形態を説明する。
【図１】第一者またはクライアント装置と、第二者またはサーバを示す図である。
【図２】複合暗号署名を生成する方法を示す図である。
【図３】複合暗号署名を生成する方法を示すフロー図である。
【図４】複合暗号署名を生成する方法を示すフロー図である。
【図５】複合暗号署名を生成するために、第二者またはサーバを初期化する方法を示すフロー図である。
【図６】複合暗号署名を生成するために、第一者またはクライアント装置を初期化する方法を示すフロー図である。
【図７】第一者またはクライアント装置を第二者またはサーバに登録するフロー図である。  本明細書および図面の全体を通して、同様の符号は同様のパーツを参照する。
【発明を実施するための形態】
【００２４】
以下に本発明の様々な実施形態を説明するが、本発明はこれらの実施形態に限定されない。
本発明の範囲を逸脱することなく、これらの実施形態の様々な変形が生成可能である。
【００２５】
以下の議論で「クライアント装置」および「サーバ」という用語が使われる。これらの用語は、純粋に、互いに相互作用する主体を区別するために使われる。すなわち、クライアント装置は第一者であり、サーバは第二者である。従って当業者は、「クライアント装置」および「サーバ」という用語は限定的でないことを理解するだろう。従って当業者は、「クライアント署名」または「第一者署名」は第一者のデジタル署名であることを理解するだろう。同様に当業者は、「サーバ署名」または「第二者署名」は第二者のデジタル署名であることを理解するだろう。
【００２６】
以下の議論で「公開」および「秘密」という用語が使われる。非対称鍵のペアの文脈において、当業者は、公開鍵および秘密鍵が互いに逆の機能を果たすこと、従って暗号装置はデータを暗号化するために、公開鍵と秘密鍵の一方を使ってよいこと、復号化装置はデータを複合化するために、公開鍵と秘密鍵の他方を使ってよいことを理解するだろう。当業者は、秘密鍵は、他者にオープンに通信されない鍵であることと、公開鍵は秘密鍵とは異なる鍵であることを理解するだろう。秘密鍵は安全に記憶される。一方、公開鍵は第三者に知られてもよく、ときにはオープンに通信されてもよい。例えば、公開鍵は、辞書で公開されてもオープンに送信されてもよく、敵対者が取得できる鍵であってもよい。同様に、後述において、秘密エクスポーネント（ｐｒｉｖａｔｅ  ｅｘｐｏｎｅｎｔ）または秘密モジュラス（ｐｒｉｖａｔｅ  ｍｏｄｕｌｕｓ）は、秘密に保持されることを想定したエクスポーネントまたはモジュラスである。逆に公開エクスポーネントまたは公開モジュラスは、秘密でないエクスポーネントまたはモジュラスである。
【００２７】
鍵は２つ以上の者でシェアされてよい。ここでそれぞれの者はシェアを保持する。このようなシナリオでは、鍵は、十分な数の（またはおそらく異なるタイプの）シェアが互いに結合されるときにのみ再構成することができる。従って、鍵それ自身の単一のシェアは、十分な数のさらなるシェアと結合されない限り、当該鍵を再構成するために使われない。鍵を再構成するために、シェアの１つ以上の要素が互いに付加されれば、鍵は「付加的に」シェアされてもよい。以下のいくつかの例では、鍵を再構成するために、２つの秘密エクスポーネントが互いに付加される。鍵を再構成するために、シェアの１つ以上の要素が互いに倍増されれば、鍵は「倍増されて」シェアされてもよい。以下のいくつかの例では、鍵を再構成するために、２つの秘密エクスポーネントが互いに倍増される。当業者は、他のタイプのシェアが存在し、以下の方法にそれらを適用できることを理解するだろう。
【００２８】
以下では、モジュラー計算および多数の因数分解に基づく暗号システムが使われる。すなわち、以下で説明する複合署名は、通常のＲＳＡ（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ）署名と似ており、標準的な暗号ライブラリを用いて証明可能である。しかしながら、当業者は、本明細書に記載の方法および技術は、公開鍵や秘密鍵が生成される任意の好適な非対称暗号システムと協力して利用可能であることを理解するだろう。例えば、楕円曲線および／または離散対数に基づく非対称暗号システムが使われてもよい。
【００２９】
通信チャネルは、任意の好適な通信方法である。ある通信チャネルを介して敵対者がデータにアクセスできなければ、その通信チャネルは安全であると考えてよい。
【００３０】
図１は、システムの一例であるシステム１０のアーキテクチャを示す。システム１０は、クライアント装置１００と、サーバ１５０と、を備える。システム１０は、通信チャネル２０をさらに備える。通信チャネル２０は、通信ネットワーク上での直接チャネルであっても関節チャネルであってもよい。例えば、通信チャネル２０はインターネットを含んでもよい。
【００３１】
図面を参照すると、クライアント装置１００は、画像ディスプレイ１１０と、仮想的または専用のユーザ入力装置１０２を含む複数のユーザインタフェースと、を含む。クライアント装置１００は、プロセッサ１０４と、メモリ１０６と、電源システム１０８と、をさらに含む。クライアント装置１００は、プロセッサ１０４とサーバ１５０のような遠隔装置との間で、通信を送信または受信するための通信モジュール１１２をさらに備える。例えば、通信モジュール１１２は、通信チャネル２０を介してサーバ１５０の通信モジュール１６２への通信を送信または受信するために使われる。クライアント装置は、さらなるシステムや装置（例えば、ＵＳＢスティックなどの２次メモリデバイス）と接続するためのポート１１４をさらに備える。
【００３２】
プロセッサ１０４は、データを受信し、メモリ１０６にアクセスし、メモリ１０６、通信モジュール１１２またはユーザ入力装置１０２のいずれかから受信した命令に基づき動作するように構成される。プロセッサ１０４はさらに、暗号化または複合化に関する命令を処理するように構成される。この点で、プロセッサ１０４は、メモリ１０６、または通信モジュール１２０やポート１１４などを介したその他のソースから、１つ以上の秘密鍵を読み出すことができる。プロセッサはさらに、ディスプレイ１１０を制御し、サーバ１５０などの遠隔者への通信モジュール１２０を介した通信を制御するように構成される。プロセッサ１０４は、通信モジュール１２０を介した送信をする前にデータを暗号化するために、あるいは通信モジュール１２０を介して受信したデータを復号化するために、メモリ１０６に記憶された命令を実行してもよい。
【００３３】
動作中にプロセッサ１０４は、メモリ１０６に記憶されたコンピュータで実行可能な命令を実行することができる。処理結果は、ディスプレイ１１０上でユーザに対して表示することができる。コンピュータ動作の制御のためのユーザ入力は、入力装置１０２を介して受信されてよい。
【００３４】
サーバ１５０は、ユーザ入力装置１５２と、プロセッサ１５４と、メモリ１５６と、電源システム１５８と、画像ディスプレイ１６０と、通信モジュール１６２と、ポート１６４と、を備える。通信モジュール１６２は、１つ以上のクライアント装置１００からの通信を送信または受信するために、サーバによって使われる。プロセッサ１５４は、データを受信し、メモリ１５６にアクセスし、メモリ１５６、通信モジュール１６２またはユーザ入力装置１５２のいずれかから受信した命令に基づき動作するように構成される。プロセッサ１５４はさらに、暗号化または複合化に関する命令を処理するように構成される。例えば、プロセッサ１５４は、メモリ１５６から公開鍵および／または秘密鍵をメモリ１５６から読み出すように構成される。
【００３５】
動作中にプロセッサ１５４は、メモリ１５６に記憶されたコンピュータで実行可能な命令を実行することができる。処理結果は、ディスプレイ１５０上でユーザに対して表示することができる。コンピュータ動作の制御のためのユーザ入力は、入力装置１５２を介して受信されてよい。
【００３６】
当業者に理解される方法で、図１に示されるものと異なるアーキテクチャが使われてもよい。クライアント装置または第１装置、サーバまたは第２装置は、例えば、コンピュータ、携帯電話、タブレット、その他コンピュータで実行可能な命令に係る命令を実行できる装置であってよい。
【００３７】
クライアント装置１００のユーザは、メッセージｍがクライアント装置１００に起因するものであることをサーバ１５０が証明することができる方法で、メッセージｍをサーバ１５０に送信することを要望してよい。しかしながら、クライアント装置１００のユーザはまた、メッセージｍがサーバによって受信されたことを示し、受信確認がサーバ１５０に起因するものであり敵対者に起因するものでない点で安全であることを示す受信確認を受信することを要望してもよい。こうした目的のために、以下で説明されるような方法を用いて、複合暗号署名が生成されてよい。この場合、複合暗号署名は、クライアント装置１００のデジタル署名とサーバ１５０のデジタル署名から生成される。クライアント装置１００がメッセージｍと自身のデジタル署名とに関する情報をサーバ１５０に送信でき、かつ受信確認を受信できれば、クライアント装置１００は、当該受信確認がサーバ１５０から来たものであり、当該受信確認がクライアント装置１００のデジタル署名とサーバ１５０のデジタル署名の両方を用いて生成されたものであることを証明できるだろう。
【００３８】
図２は、複合暗号署名Ｓを生成する方法を示す。この図では、上から下に向かって時間が流れる。図２に示される方法の前に、クライアント装置（クライアント装置１００であってもなくてもよい）とサーバ（サーバ１５０であってもなくてもよい）とは、公開エクスポーネントｅを合意する。公開エクスポーネントｅは、広く送信されてよい。例えば公開エクスポーネントｅは、広くオープンになった辞書に公開されてよい。
【００３９】
図２に示される方法の前に、クライアント装置は、第１の秘密鍵＜ｄ１，ｎ１＞の第１のシェア＜ｄ１’，ｎ１＞をメモリ内に記憶しておく（この点については、後述でさらに説明する）。第１の秘密鍵＜ｄ１，ｎ１＞は、第１の秘密エクスポーネントｄ１と第１の秘密モジュラスｎ１を備え、以下のように定義される。
【数１】
2019537349.tif 000003
ここで、φはオイラーのトーシエント関数である。関数φ（ｘ）は、所与の整数ｘに対して、ｘと互いに素であるｘ以下の正の整数の個数を与える。
【００４０】
図２に示される方法の前に、サーバは、第１の秘密鍵＜ｄ１，ｎ１＞の第２のシェア＜ｄ１’’，ｎ１＞をメモリ内に記憶しておく（この点については、後述でさらに説明する）。サーバはまた、第２の秘密鍵＜ｄ２，ｎ２＞をメモリ内に記憶しておく。第２の秘密鍵は、第２の秘密エクスポーネントｄ２と第２の秘密モジュラスｎ２を備える。第２の秘密鍵＜ｄ２，ｎ２＞は、以下のように定義される。
【数２】
2019537349.tif 000004
【００４１】
ステップ２１０で、クライアント装置は、メッセージｍと、第１の秘密鍵＜ｄ１，ｎ１＞の第１のシェア＜ｄ１’，ｎ１＞とから、クライアント署名ｓ１の第１部分ｙを生成する。特にクライアント装置は以下を計算する。
【数３】
2019537349.tif 000005
【００４２】
この例では、第１の秘密鍵の第１のシェアは、第１の秘密エクスポーネントｄ１と第１の秘密モジュラスｎ１を備える。さらなる安全性のため、メッセージｍはハッシュ化またはパディングされてもよい。
【００４３】
ステップ２２０で、クライアント装置は、サーバに署名要求を送信する。署名要求は、メッセージｍと、クライアント署名ｓ１の第１部分ｙと、を備える。署名要求は、サーバに直接または間接に送信されてもよく、暗号化されたチャネルを介して送信されてもよい。例えば、メッセージｍとクライアント署名ｓ１の第１部分ｙとは、サーバでの復号化のため、任意の好適な暗号化方法を用いて暗号化されてもよい。
【００４４】
ステップ２３０で、サーバは、クライアント装置からメッセージｍとクライアント署名ｓ１の第１部分ｙとを受信すると、第１部分ｙと、第１の秘密鍵の第２のシェア＜ｄ１’’，ｎ１＞とから、クライアント署名ｓ１を生成する。ステップ２３０でのサーバによって実行される処理は、第１の秘密鍵の第１のシェアと第２のシェアとがどのように関係しているかに依存する。
【００４５】
ある実施形態では、第１の秘密鍵は、付加的にシェアされてよい。このシナリオでは、第１の秘密エクスポーネントｄ１は、第１の秘密エクスポーネントシェアｄ１’と第２の秘密エクスポーネントシェアｄ１’’とに以下のように関係する。
【数４】
2019537349.tif 000006
【００４６】
従って、第１の秘密エクスポーネントは、クライアント装置とサーバとの間で、付加的にシェアされる。ｄ１’は、ランダムに生成され、（ランダム変数として）ｄ１と独立である。従って、ｄ１’（暗号化されていても、暗号化されていなくてもよい）にアクセスできる敵対者は、サーバと通信しない限りｄ１を見つけることができない。同様に、ｄ１’’は、ランダムに生成され、（ランダム変数として）ｄ１と独立である。従って、ｄ１’’（暗号化されていても、暗号化されていなくてもよい）にアクセスできる敵対者は、クライアント装置と通信しない限りｄ１を見つけることができない。第１の秘密鍵がクライアント装置とサーバとの間で付加的にシェアされると、ステップ２３０で、サーバは、以下を計算することにより、クライアント署名ｓ１を生成する。
【数５】
2019537349.tif 000007
【００４７】
別の実施形態では、第１の秘密鍵は、倍増されてシェアされてよい。このシナリオでは、第１の秘密エクスポーネントｄ１は、第１の秘密エクスポーネントシェアｄ１’と第２の秘密エクスポーネントシェアｄ１’’とに以下のように関係する。
【数６】
2019537349.tif 000008
【００４８】
従って、第１の秘密エクスポーネントは、クライアント装置とサーバとの間で、倍増されてシェアされる。従って、ｄ１’（暗号化されていても、暗号化されていなくてもよい）にアクセスできる敵対者は、サーバと通信しない限りｄ１を見つけることができない。同様に、ｄ１’’は、ランダムに生成され、（ランダム変数として）ｄ１と独立である。従って、ｄ１’’（暗号化されていても、暗号化されていなくてもよい）にアクセスできる敵対者は、クライアント装置と通信しない限りｄ１を見つけることができない。第１の秘密鍵がクライアント装置とサーバとの間で倍増されてシェアされると、ステップ２３０で、サーバは、以下を計算することにより、クライアント署名ｓ１を生成する。
【数７】
2019537349.tif 000009
【００４９】
このように、サーバは、クライアント署名ｓ１を生成するために、クライアント署名ｓ１の第１部分ｙと第１の秘密鍵の第２のシェア＜ｄ１’’，ｎ１＞とを使う。従って、図２の方法のいかなる時点においても、サーバは、第１の秘密エクスポーネントｄ１も、第１の秘密エクスポーネントシェアｄ１’も知っている必要がないことに注意されたい。
【００５０】
ステップ２４０で、サーバは、クライアント署名ｓ１の第１部分ｙは、第１の秘密鍵＜ｄ１，ｎ１＞の第１のシェア＜ｄ１’，ｎ１＞を用いて生成されたことを証明する。このようにしてサーバは、メッセージｍと第１部分ｙとがクライアント装置から来たと決定する。この証明を実行するために、サーバは、以下であることをチェックする。
【数８】
2019537349.tif 000010
【００５１】
この証明ステップが満足されると、ステップ２５０で、サーバは、サーバ署名ｓ２を生成する。サーバ署名ｓ２は、以下により生成される。
【数９】
2019537349.tif 000011
【００５２】
ステップ２６０で、サーバは、公開モジュラスｎ（このように呼ばれるのは、ｎがその後公開され得るからである）を計算する。モジュラスｎはｎ１とｎ２との積、すなわちｎ＝ｎ１ｎ２である。
【００５３】
当業者は、ステップ２６０がこの方法の一部である必要はないことを理解するだろう。図２のプロトコルが始まる前にサーバはｎとｎ２とを知っているので、図２のプロトコルが始まる前に、あるいは任意の時点で、モジュラスｎが計算され公開されてもよい。
【００５４】
ステップ２７０で、サーバは、複合暗号署名Ｓを形成するために、クライアント署名ｓ１とサーバ署名ｓ２とを結合する。複合関数Ｓは中国剰余定理に基づき、Ｓ＝Ｃｎ１ｎ２（ｓ１，ｓ２）の形を取る。ここで
【数１０】
2019537349.tif 000012
であり、αおよびβは、αｎ１＋βｎ２＝１を満足する整数である。ｎ１とｎ２とが互いに素であると仮定すると、このようなαとβが存在する。
【００５５】
ステップ２８０で、サーバは、複合暗号署名Ｓ、および選択的に公開モジュラスｎをクライアント装置に送信する。
【００５６】
ステップ２９０で、クライアント装置は、複合暗号署名Ｓは確かにサーバの秘密鍵を使って生成されたことを証明してよい。その後クライアント装置は、複合暗号署名Ｓは確かにサーバに起因するものであり、敵対者に起因するものでないと決定してよい。この証明を実行するために、クライアント装置は、以下であることをチェックする。
【数１１】
2019537349.tif 000013
【００５７】
図２の方法で、第１の秘密モジュラスｎ１や第２の秘密モジュラスｎ２は、いかなる時点でも公開されることはない。さらに、クライアント装置がハッキングされた場合でも、敵対者は、サーバがなくては正しい複合署名を生成することはできないだろう。クライアント装置がハッキングされた場合でも、サーバに通信することがなければ、辞書攻撃に適用することはできない。さらに、第１の秘密鍵のクライアント装置のシェアがなければ、サーバだけでは正しい複合デジタル署名を生成することはできない。
【００５８】
当業者は、前述のプロトコルの変形が可能であることを理解するだろう。例えば、証明２４０および２９０は割愛されてもよい。サーバや受信者は、オリジナルに送信されたものがクライアント装置に起因するものであることを証明しなくてもよく、それに代えて、送信があたかもクライアント装置から来たものであるかのように送信を処理してよい。同様に、クライアント装置は、複合署名をサーバから受信したことを証明しなくてもよい。第三者が証明してもよく、まったく証明がされなくてもよい。
【００５９】
図３は、クライアント装置によって実行される方法を示すフロー図である。
【００６０】
ステップ３１０で、クライアント装置は、メッセージｍと第１の秘密鍵＜ｄ１，ｎ１＞の第１のシェア＜ｄ１’，ｎ１＞とから、クライアント署名ｓ１の第１部分ｙ＝ｍｄ１’ｍｏｄ ｎ１を生成する。
【００６１】
ステップ３１５で、クライアント装置は、サーバに署名要求を送信する。署名要求は、メッセージｍと、クライアント署名ｓ１の第１部分ｙと、を備える。メッセージは、安全な通信チャネルを介して送信されてよい。
【００６２】
ステップ３２０で、クライアント装置は、サーバからのものであると称する応答Ｚを受信する。
【００６３】
ステップ３２５で、クライアント装置は、応答が、当該応答がサーバからのものであることを示す複合署名を備えるか否かをチェックする。特に、クライアント装置は、Ｚｅ≠ｍ ｍｏｄ ｎであるか否かをチェックする。
【００６４】
ステップ３２５でＺｅ≠ｍ ｍｏｄ ｎであった場合、Ｚは、クライアント署名とサーバ署名の両方を含む複合署名を含まないと決定されてよい。この場合、ステップ３３０で、クライアント装置は応答Ｚを拒否してよい。
【００６５】
ステップ３２５でＺｅ≡ｍ ｍｏｄ ｎであった場合、Ｚは、クライアント署名とサーバ署名の両方を含む複合署名を含むと決定されてよい。この場合、ステップ３３５で、クライアント装置は応答Ｚを受諾してよい。
【００６６】
図４は、複合暗号署名を生成する方法を示すフロー図である。この方法は、サーバによって実行される。ステップ４１０で、本方法は、クライアント装置からのものであると称する信号を受信するステップを備える。この信号は、メッセージｍと、数ｋと、を備える。ここで数ｋは、クライアント署名の第１部分であると称し、メッセージｍがクライアント装置から送信されたことを証明する。
【００６７】
ステップ４１５で、サーバは、第１の秘密鍵の第２のシェア＜ｄ１’’，ｎ１＞に問い合わせる。第２のシェアはサーバのメモリに記憶されている。サーバはＴを計算する。Ｔは、メッセージｍがクライアント装置から送信されたか否かをチェックするために使うことができる。第１の秘密鍵が、サーバとクライアント装置との間で付加的にシェアされていた場合、サーバは以下を計算する。
【数１２】
2019537349.tif 000014
【００６８】
上記に代えて、第１の秘密鍵が、サーバとクライアント装置との間で倍増されてシェアされていた場合、サーバは以下を計算する。
【数１３】
2019537349.tif 000015
【００６９】
ステップ４２０で、サーバは、受信した数ｋが第１の秘密鍵のクライアント装置のシェアを用いて生成されたか否かをチェックする。
すなわち、サーバはＴｅ≡ｍ ｍｏｄ ｎ１であることをチェックする。
【００７０】
ステップ４２０でサーバがＴｅ≠ｍ ｍｏｄ ｎ１であることを見出した場合、本方法は中止されてよい（ステップ４２５）。
例えば、サーバは通信を終了し、送信者にエラーメッセージを送信してよい。
【００７１】
ステップ４２０でサーバがＴｅ≡ｍ ｍｏｄ ｎ１であることを見出した場合、サーバは、受信した数ｋが第１の秘密鍵のクライアント装置のシェアを用いて生成されたと決定してよい（ステップ４３０）。
【００７２】
ステップ４３５で、サーバは、受信した信号のさらなるチェックを実行してよい。特にサーバは、受信した信号が、過去にクライアント装置から受信した情報に関する情報を含むことをチェックしてよい。例えば、メッセージｍが、過去にクライアント装置から受信したことが分かっているメッセージｍ’のハッシュを少なくとも含むかを決定するためのチェックが実行されてよい。
【００７３】
ステップ４３５で、チェックの結果が否定的であった場合、本方は中止されてよい。サーバは、クライアント装置の第１の秘密鍵が複製され、敵対者がメッセージｍと数ｋとを送信したと決定してよい。
【００７４】
ステップ４３５で、チェックの結果が肯定的であった場合、サーバは、メッセージｍと数ｋとがクライアント装置から送信さたと決定してよい（ステップ４４５）。その後、本方法はステップ４５０に移行する。
【００７５】
ステップ４５０で、サーバは、サーバ署名ｓ２＝ｍｄ２ ｍｏｄ ｎ２を計算する。
【００７６】
ステップ４５５で、サーバは、複合暗号署名Ｓを生成するために、クライアント署名Ｔとサーバ署名ｓ２とを結合する。複合暗号署名Ｓは、Ｓ＝Ｃｎ１ｎ２（Ｔ，ｓ２）で与えられる。
【００７７】
ステップ４６０で、サーバは、複合署名を送信する。
【００７８】
図５は、複合暗号署名を生成するために、サーバを初期化する方法のフロー図である。図５の方法は、複合署名を生成するためにサーバの製造中に実行されてもよく、署名処理の過程で実行されてもよい。
【００７９】
ステップ５１０で、素数ｐ２とｑ２とがランダムに選択される。各素数から１を引いたものと、事前に確立した公開エクスポーネントｅとの最大共通分母が１であること、すなわちｇｃｄ（ｐ２−１，ｅ）＝ｇｃｄ（ｑ２−１，ｅ）＝１であることを決定するためのチェックが実行される。
選択された２つの素数のいずれかが上記に当てはまらなかった場合、サーバは１つ以上の新たな素数を選択し、再度チェックを実行する。選択された２つの素数がｇｃｄ（ｐ２−１，ｅ）＝ｇｃｄ（ｑ２−１，ｅ）＝１を満足した場合、本方法はステップ５１５に移行する。
【００８０】
ステップ５１５で、秘密モジュラスｎ２が、選択された２つの素数の積として計算される。すなわち、ｎ２＝ｐ２ｑ２である。
【００８１】
ステップ５２０で、秘密エクスポーネントｄ２が、ｄ２＝ｅ−１ ｍｏｄ φ（ｎ２）として計算される。ここでφはオイラーのトーシエント関数である。
【００８２】
ステップ５２５で、サーバは、秘密鍵＜ｄ２，ｎ２＞をメモリ内に記憶する。ステップ５３０で、サーバは、素数ｐ２およびｑ２をメモリから削除し、サーバの秘密鍵＜ｄ２，ｎ２＞を生成する過程で生成したその他すべての中間値も削除する。
【００８３】
上記で詳述した方法の安全性については、付録で説明する。
【００８４】
図６は、複合暗号署名を生成するために、クライアント装置を初期化する方法のフロー図である。
【００８５】
ステップ６１０で、素数ｐ１とｑ１とがランダムに選択される。各素数から１を引いたものと、事前に確立した公開エクスポーネントｅとの最大共通分母が１であること、すなわちｇｃｄ（ｐ１−１，ｅ）＝ｇｃｄ（ｑ１−１，ｅ）＝１であることを決定するためのチェックが実行される。選択された２つの素数のいずれかが上記に当てはまらなかった場合、サーバは１つ以上の新たな素数を選択し、再度チェックを実行する。選択された２つの素数がｇｃｄ（ｐ１−１，ｅ）＝ｇｃｄ（ｑ１−１，ｅ）＝１を満足した場合、本方法はステップ６１５に移行する。
【００８６】
ステップ６１５で、秘密モジュラスｎ１が、選択された２つの素数の積として計算される。すなわち、ｎ１＝ｐ１ｑ１である。
【００８７】
ステップ６２０で、秘密エクスポーネントｄ１が、ｄ１＝ｅ−１ ｍｏｄ φ（ｎ１）として計算される。ここでφはオイラーのトーシエント関数である。
【００８８】
ステップ６２５で、クライアント装置は、第１の秘密エクスポーネントシェアｄ１’と第２の秘密エクスポーネントシェアｄ１’’とを選択する。
【００８９】
第１の秘密エクスポーネントが、サーバとクライアント装置との間で付加的にシェアされていた場合、クライアント装置は、ｄ１’を、値φ（ｎ１）を除いて区間［１，…，２ｌｅｎ（ｎ１）−１］からランダムに選択する。その後、第２の秘密エクスポーネントシェアｄ１’’が、ｄ１’’＝ｄ１−ｄ１’ ｍｏｄ φ（ｎ１）により与えられる。
【００９０】
第１の秘密エクスポーネントが、サーバとクライアント装置との間で倍増してシェアされていた場合、クライアント装置は、ｄ１’を、値φ（ｎ１）を除いて区間［１，…，２ｌｅｎ（ｎ１）−１］からランダムに選択する。そしてクライアント装置は、ｇｃｄ（ｄ１’，φ（ｎ１））＝１であるか、すなわち当該シェアはφ（ｎ１）を法として可逆であるかをチェックする。ｇｃｄ（ｄ１’，φ（ｎ１））＞１であった場合、新たなｄ１’がランダムに選択される。その後、第２の秘密エクスポーネントシェアｄ１’’が、ｄ１’’＝ｄ１・（１／ｄ１’） ｍｏｄ φ（ｎ１）により与えられる。
【００９１】
ステップ６３０で、第１の秘密鍵＜ｄ１’，ｎ１＞のクライアント装置のシェアがメモリ内に記憶される。
【００９２】
ステップ６３５で、第１の秘密鍵＜ｄ１’’，ｎ１＞のサーバのシェアが安全なチャネルを介して送信される。例えば、この情報は、製造中にサーバに送られてよい。
【００９３】
ステップ６４５で、クライアント装置は、値ｐ１，ｑ１，ｄ１，ｄ１’’およびφ（ｎ１）をメモリから削除し、第１の秘密鍵のクライアント装置のシェアを生成する過程で生成したその他すべての中間値も削除する。
【００９４】
図７は、クライアント装置を登録するためにサーバで実行されてよい方法のフロー図である。
【００９５】
ステップ７１０で、サーバは、クライアント装置から＜ｄ１’’，ｎ１＞を受信する。ステップ７１５で、サーバは、ｎ＝ｎ１ｎ２を計算する。ステップ７２０で、サーバは、拡張されたユークリッドアルゴリズムを用いて、整数αおよびβを算出する。
【００９６】
ステップ７２５で、サーバは、クライアント装置のデータ＜ｄ１’’，ｎ１，α，β＞をサーバのメモリ内に記憶する。
【００９７】
ステップ７３０で、サーバは、クライアントが正しくサーバに登録されたことの確認信号として、公開エクスポーネントｎをクライアントに送信する。
【００９８】
以上説明した実施形態の様々な変形が考えられる。例えば、説明した実施形態のすべての特徴は任意の方法で組み合わされてよい。
【００９９】
上記で与えた例では、サーバはクライアント装置に複合暗号署名を送信するものとして説明した。しかしながら別のシナリオも考えられる。例えば、サーバは、複合署名をストレージのためのデジタルリポジトリに送信してよく、第三者に送信してもよい。例えば、第一者またはクライアント装置は、メッセージを第三者装置に送信するように動作すると考えてもよい。メッセージが第二者またはサーバにより証明された場合は、第三者のみがメッセージを受信すると考えてもよい。従って、第一者および第二者は、本明細書で説明した任意の方法で複合署名を生成してよく、信用できる第二者は複合署名を第三者に送信してよい。第三者は、複合署名を証明するために、すなわち第一者からのメッセージが確かに第二者により証明されたことの信用性を証明するために、公開鍵を使ってよい。当業者は、このようなオペレーションが有効な他のシナリオを考えることができる。
【０１００】
ある環境では、サーバおよび／またはクライアント装置で証明が行われないことも考えられる。例えば、サーバは、単に受信したデータを処理し、元の受信したデータがクライアント装置に起因するものであることを証明することなく、前述の方法に従う複合署名を発行してよい。
【０１０１】
当業者は、任意の非対称暗合システムが使われてよいことを理解するだろう。当事者の間で秘密鍵をシェアすることのできる、任意の公開鍵および秘密鍵のペアのシステムが使われてもよい。例えば、楕円曲線または離散対数に基づく暗合システムが使われてもよい。
【０１０２】
前述の説明では、便宜上、メッセージｍは通信チャネルを介して送られるとした。通信チャネルは、無線接続やインターネットのような任意の好適な通信チャネルであってよい。通信チャネルは、暗号化のレベルを含んでよい。例えば、メッセージｍとクライアント署名の第１部分ｙとが送られる１つ以上の通信は暗号化されてもよい。例えば、メッセージｍと第１部分ｙとは、メッセージｍと第１部分ｙとがサーバの秘密鍵のみを用いて読み出されるようにサーバの公開鍵を用いて暗号化されてもよい。メッセージｍは、ハッシュまたはパディングされたメッセージであってもよい。ＳＨＡ−２５６のような信頼性のあるハッシュ関数が使われてもよい。メッセージは、コンピュータにより理解可能な任意の好適な形式であってよい。
【０１０３】
前述の方法は、コンピュータプログラムに実装されてよい。ｗｅｂアプリケーションまたは「ａｐｐ」の形であってよいコンピュータプログラムは、コンピュータまたはプロセッサが前述の方法の１つ以上の機能を実行するように命令または起動するように構成されたコンピュータ実行可能な命令またはコードを備える。コンピュータプログラムは、コンピュータなどの装置、コンピュータ読み取り可能媒体またはコンピュータプログラム製品に与えられてよい。コンピュータ読み取り可能媒体またはコンピュータプログラム製品は、非一過性媒体、例えば半導体や固体メモリ、磁気テープ、消去可能メモリスティック、ディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、硬質磁気ディスク、ＣＤ−ＲＯＭ（登録商標）、ＣＤ−Ｒ／Ｗ（登録商標）、ＤＶＤ（登録商標）またはＢｌｕ−ｒａｙ（登録商標）などの光ディスクを備えてよい。コンピュータ読み取り可能媒体またはコンピュータプログラム製品は、例えばインターネットを介してコンピュータプログラムをダウンロードのためのデータ送信用の通信信号またはメディアを備えてよい。
【０１０４】
コンピュータのような装置またはデバイスは、前述の方法の１つ以上の機能を実行するように構成されてよい。装置またはデバイスは、携帯電話、タブレット、ラップトップその他の処理装置であってよい。装置またはデバイスは、データ処理システムの形をとってよい。データ処理システムは、分散システムであってよい。例えば、データ処理システムは、ネットワークや専用ローカル接続を介して分散されてよい。
【０１０５】
典型的には、装置またはデバイスは、コンピュータ実行可能な命令を記憶するための少なくとも１つ以上のメモリと、コンピュータ実行可能な命令を実行するための１つ以上のプロセッサと、備える。
【０１０６】
（付録−安全性の証明）
ＲＳＡ署名Σ＝（・）ｄ ｍｏｄ ｎは、パディングスキームＰとともに、現存する適応的選択メッセージ攻撃による偽造に対して安全であると仮定する。これは敵対者ＡΣが署名スキームに対してオラクルアクセスを持ち、ＭとΣ（Ｈ（Ｍ））の対を保つ必要があることを意味する。Ｈ（Ｍ）はオラクルから問い合わされたことはない。ここでＨは、ランダムオラクルとしてモデル化されたハッシュ関数である。
【０１０７】
クライアント装置の秘密エクスポーネントはクライアント装置とサーバとの間でシェアされるため、いくつかの証明では、敵対者もパーシャル署名オラクルΣ’（・）＝Ｐ（・）ｄ−ｒ ｍｏｄ ｎにアクセスできることが仮定されてきた。ここでｒ←｛１，…，（ｎ）−１｝はランダム数である。
【０１０８】
パディングの出力分布は、像Ｐ上で一様に近いと仮定する。パディングスキームが確率的でランダムソルトｓを使う場合、ｓはΣ（ｍ，ｓ）＝Ｐｓ（ｍ）ｄ ｍｏｄ ｎの形をしたオラクルクエリへのアーギュメントとして与えられると仮定する。
【０１０９】
適応的選択メッセージ攻撃：署名オラクルへのアクセスを有する敵対者ＡΣ（・）は、Ｈ（Ｍ）とのクエリΣなしに正しいメッセージ署名の対Ｍ、Σ（Ｈ（Ｍ））を生成する。
【０１１０】
安全性の証明の詳細は、使われる素数のタイプに依存する。あるタイプの素数は耐攻撃性がある一方、別のタイプの素数は簡単に生成されてしまう。
【０１１１】
素数ｐがｐ＝２ｐ’＋１であるとき、ｐは安全素数と呼ばれる。ここでｐ’もまた素数である。対応する素数ｐ’はソフィー・ジェルマン素数と呼ばれる。特にパワーの低いモバイル装置の場合、安全素数の生成には時間がかかる。そこでこのような実装のためには、準安全素数として知られる別のクラスの素数が使われる。
【０１１２】
定義１：素数ｐがｐ＝２ａｐ’＋１であるとき、素数ｐはｌ−準安全素数と呼ばれる。ここでｐ’は素数であり、１≦ａ＜ｌである。
【０１１３】
準安全素数は、安全素数よりはるかに速く生成される。例えば、１０２４ビットのｐが必要で、１５ビットのａ（２１４≦ａ＜２１６）が必要な場合、１００８ビットのｐ’が必要となる。
【０１１４】
定義２：素数ｐがｐ＝２ａｐ’ ｐ’’＋１であるとき、素数ｐは（ｌ，ｓ）−準安全素数と呼ばれる。ここでｐ’ とｐ’’は素数であり、１≦ａ＜ｌかつｍｉｎ｛ｐ’，ｐ’’｝≧ｓである。
【０１１５】
（悪意のあるサーバに対する安全性）
悪意のあるサーバは、
クライアント装置の秘密鍵ｄのシェアｒを有する敵対者Ａであると考えられ、Ｚφ（ｎ）上に一様に分布する。サーバ敵対者Ａはまた、サーバに署名要求を送信するクライアント装置への接続を有する。Ａはこのような接続をオラクルΣ’として使うことができる、すなわちＡは、メッセージｍを選択し、ｍをオラクルに送信し、Σ’（ｍ）＝ Ｐ（ｍ）ｄ−ｒ ｍｏｄ ｎを取得することができると仮定する。Ａはｒを知っているので、Ａは容易にΣ（ｍ）＝Σ’（ｍ）・Ｐ（ｍ）ｒ ｍｏｄ ｎを計算することができる。
【０１１６】
ＡΣ’（ｒ）の目的は、Ｈ（Ｍ）がΣ’からクエリされないように、メッセージＭと署名Σ（Ｈ（Ｍ））＝Ｐ（Ｈ（Ｍ））ｄ ｍｏｄ ｎとを生成することにある。
【０１１７】
定理１。Σが現存する適応的選択メッセージ攻撃に対してＳ−安全であるならば、シェアされた署名システムは悪意あるサーバに対してｓ／（１＋ｔｍｕｌ）−安全である。ここでｔｍｕｌは、１つの（クライアントのＲＳＡモジュラスとの）剰余乗算に必要な時間である。
【０１１８】
証明（概要）。ＡΣ’（ｒ）は、（Ｈ（Ｍ））を持つΣ’をコールすることなく確率δでＭとΣ（Ｈ（Ｍ））とのペアを生成するｔ−時間敵対者であるとする。ランニングタイムｔ’の敵対者Ａ’は、Σへのオラクルアクセスを有するように構成され、（Ｈ（Ｍ））を持つΣをコールすることなく確率δでＭとΣ（Ｈ（Ｍ））とのペアを生成する。
【０１１９】
敵対者Ａ’は、最初にランダム数ｒ’を拾い、その後ＡΣ’（ｒ’）をシミュレートする。これにより、Σ’コールΣ’（ｍ）がΣ（ｍ）・Ｐ（ｍ）−ｒ’ ｍｏｄ ｎで返される。シミュレーションが完璧なので、Ａ’の成功確率はδである。
【０１２０】
Ａ’のランニングタイムは、ｔ＋ｌ・ｔｍｕｌである。従って、δ≦（ｔ＋ｔ・ｔｍｕｌ）／ｓ≦ｔ（ｌ＋ｔｍｕｌ），（ｔ／δ）≧（ｓ／ｌ＋ｔｍｕｌ）である。
【０１２１】
例えば、１０２４ビットの素数を持つ通常のＲＳＡが２１２０−安全で、べき乗にかかる時間が（１０２４）３＝２３０（加算は約１０２４ステップであると仮定する）であるとすると、新たな署名システムは悪意あるサーバに対して少なくとも２９０−安全である。
【０１２２】
（クライアント漏洩攻撃に対する安全性）
クライアント装置のシェアは、鍵としてＰＩＮを用いたブロック暗号で暗号化されていると仮定する。暗合は、２つのサポーティングオラクルＥｋ（ｘ）とＥｋ−１（ｘ）を持つ理想的な暗合としてモデル化される。敵対者は、暗号化ｃ＝ＥＰＩＮ（ｄ−ｒ）を見て、予想したＰＩＮ ｐを持つオラクルコールＥｐ−１（ｃ）を用いてこれを復号化することを試みるかもしれない。ｐ＝ＰＩＮであれば、ｙ＝ｄ−ｒである。そうでなければ、ｙは、ｄ−ｒおよびｄと独立なランダム変数である。変数ｄ−ｒとｙとは同様に分布しているので、敵対者はｐ＝ＰＩＮであることを知ることができないことに注意されたい。このことは、サーバとの通信を介してのみチェックすることができる。
【０１２３】
敵対者のサーバへのアクセスは、内部状態を持つオラクルＳとしてモデル化される。オラクルＳは、（ｍ，ｍｄ−ｒ ｍｏｄ ｎ）の形をしたクエリを受信し、クエリがこのような形をしていれば、ｍｄ ｍｏｄ ｎを返す。そうでなければ、Ｓは⊥を返す。⊥が３回返された場合は、たとえクエリが正しい形をしていても、Ｓは⊥を「ブロック」し、⊥のみを返すだろう。従って、敵対者がランダムなｐ−ｓを試み、Ｅｐ−１（ｃ）を計算し、（ｍ，ｍｙｒ ｍｏｄ ｎ）を持つクエリＳを送信した場合、成功確率は３／Ｋ’である。ここでＫはＰＩＮの総数である。
【０１２４】
ｄ−ｒ ｍｏｄ φ（ｎ）は一様に分布し、ｄと独立であることに注意されたい。敵対者はｒを持たない点にも注意されたい。従って偽造攻撃中にＳ−オラクルが使われなければ、ｄ−ｒを復号化することで敵対者が得るものはない。
【０１２５】
補題１。ｙとｘとが独立なランダム変数であり、ｘ←Ｚφ（ｎ）が一様に分布していれば、Ｐｒ［ｍｙ≡ｍｘ（ｍｏｄ ｎ）］＝１／ｏｒｄ（ｍ）である。ｍ∈Ｚ＊ｎであり、ｏｒｄ（ｍ）は乗法群Ｚ＊ｎにおけるｍのオーダである。
【０１２６】
補題２。ｐｑおよびｐ，ｑが安全素数であり、ｍ←Ｚ＊ｎが一様なランダム数であれば、Ｐｒ［ｏｒｄ（ｍ）＜ｍｉｎ｛（ｐ−１）／２，ｑ−１）／２｝］＝１６／（（ｐ−１）（ｑ−１））である。
【０１２７】
証明。ｐ−１＝２ｐ’およびｑ−１＝２ｑ’を満たす素数ｐ’とｑ’が存在すると仮定する。従って、群Ｚ＊ｎのサイズはφ（ｎ）＝（ｐ−１）（ｑ−１）＝４ｐ’ｑ’である。
要素のオーダは群のサイズの約数でなければならないので、Ｚ＊ｎの任意の要素ｍは、オーダｏｒｄ（ｍ）∈｛１１，２，４｝を持つか、またはｏｒｄ（ｍ）≧ｍｉｎ｛ｐ’，ｑ’｝である。オーダ１，２，４のすべての要素はＺｎ＝Ｚｐ×Ｚｑにおける多項式Ｘ４−１のルートであり、次数ｄの任意の多項式はＺｐ×Ｚｑにおいてｄを超えないルートを持つので、Ｚｎにおけるルートの数はｄ２を超えない。従って、ｍｉｎ｛ｐ’，ｑ’｝より小さい次数の要素の数は、ｄ２＝４２＝１６を超えない。
【０１２８】
補題３。ｎ＝ｐｑおよびｐ，ｑがｌ−準安全素数であり、ｍ←Ｚ＊ｎが一様なランダム数であれば、Ｐｒ［ｏｒｄ（ｍ）＜ｍｉｎ｛（ｐ−１）／（２ｌ），（ｑ−１）／（２ｌ）｝］＝（１６ｌ４）／（（ｐ−１）（ｑ−１））である。
【０１２９】
証明。ｐ−１＝２ａｐ’およびｑ−１＝２ａ’ｑ’を満たす素数ｐ’とｑ’が存在すると仮定する。
ここでａとａ’とは区間［１…ｌ−１］内にある。
従って、Ｚ＊ｎのサイズはφ（ｎ）＝（ｐ−１）（ｑ−１）＝４ａａ’ｐ’ｑ’である。
要素のオーダは群のサイズの約数でなければならないので、Ｚ＊ｎの任意の要素ｍは、４ａａ’で割り切れるオーダｏｒｄ（ｍ）を持つか、またはｏｒｄ（ｍ）≧ｍｉｎ｛ｐ’，ｑ’｝である。
４ａａ’で割り切れるすべての要素はＺｎ＝Ｚｐ×Ｚｑにおける多項式Ｘ４−１のルートであり、次数ｄの任意の多項式はＺｐ×Ｚｑにおいてｄを超えないルートを持つので、Ｚｎにおけるルートの数はｄ２を超えない。
従って、ｍｉｎ｛ｐ’，ｑ’｝＝ｍｉｎ｛（ｐ−１）／（２ａ），（ｑ−１）／（２ａ’）｝≧ｍｉｎ｛（ｐ−１）／（２ｌ），（ｑ−１）／（２ｌ）｝より小さい次数の要素の数は、ｄ２＝（４ａａ’）２≦１６ｌ４を超えない。
【０１３０】
補題４。ｎ＝ｐｑおよびｐ，ｑが（ｌ，ｓ）−準安全素数であり、ｍ←Ｚ＊ｎが一様なランダム数であれば、Ｐｒ［ｏｒｄ（ｍ）＜ｓ］＝（１６ｌ４）／（（ｐ−１）（ｑ−１））である。
【０１３１】
証明。ｐ−１＝２ａｐ’ｐ’’およびｑ−１＝２ａ’ｑ’ｑ’’を満たす素数ｐ’とｑ’が存在すると仮定する。ここでａとａ’とは区間［１…ｌ−１］内にある。従って、Ｚ＊ｎのサイズはφ（ｎ）＝（ｐ−１）（ｑ−１）＝４ａａ’ｐ’ｑ’ ｐ’’ｑ’’である。要素のオーダは群のサイズの約数でなければならないので、Ｚ＊ｎの任意の要素ｍは、４ａａ’で割り切れるオーダｏｒｄ（ｍ）を持つか、またはｏｒｄ（ｍ）≧ｍｉｎ｛ｐ’，ｑ’，ｐ’’，ｑ’’｝である。４ａａ’で割り切れるすべての要素はＺｎ＝Ｚｐ×Ｚｑにおける多項式Ｘ４−１のルートであり、次数ｄの任意の多項式はＺｐ×Ｚｑにおいてｄを超えないルートを持つので、Ｚｎにおけるルートの数はｄ２を超えない。従って、ｍｉｎ｛ｐ’，ｑ’，ｐ’’，ｑ’’｝≧ｓより小さい次数の要素の数は、ｄ２＝（４ａａ’）２≦１６ｌ４を超えない。
【０１３２】
補題５。ｎ＝ｐｑおよびｐ，ｑが安全素数であり、Ｐがパディング関数であり、ｍ←Ｚ＊ｎが一様なランダム数であれば、Ｐｒ［ｏｒｄ（Ｐ（ｍ））＜ｍｉｎ｛（ｐ−１）／２，ｑ−１）／２｝］＝１６／２ｈ＝２（−ｈ＋４）である。ここで、ｈはビット単位でのハッシュ長である。
【０１３３】
補題６。ｎ＝ｐｑおよびｐ，ｑがｌ−安全素数であり、Ｐがパディング関数であり、ｍ←Ｚ＊ｎが一様なランダム数であれば、Ｐｒ［ｏｒｄ（Ｐ（ｍ））＜ｍｉｎ｛（ｐ−１）／２ｌ，ｑ−１）／２ｌ｝］＝１６ｌ４／２ｈ＝２（−ｈ＋４ｌｏｇ２（ｌ＋４））である。ここで、ｈはビット単位でのハッシュ長である。
【０１３４】
定理２。安全素数を持つΣが適応的選択メッセージ攻撃に対してＳ−安全であるならば、クライアントの暗号化されたシェアｃ＝ＥＰＩＮ（ｄ−ｒ）へのアクセスを持つｔ−時間敵対者は、（（３／ｋ）＋（ｔ／Ｓ）＋２（−ｈ＋４）＋（２ｋ２／（ｍｉｎ｛ｐ，ｑ｝−１）））より高い確率で偽造を生成することができない。
【０１３５】
証明（概要）。ＡΣ，Ｓ、Ｅ（），Ｅ−ｌ（）（ｃ）は、（Ｈ（Ｍ））を持つΣをコールすることなく確率δでＭとΣ（Ｈ（Ｍ））とのペアを生成するｔ−時間敵対者であるとする。Σ−コールを除きすべてのオラクルがコールする環境でのランＡがシミュレートされる。ＡがＥ（）またはＥ−１（）をコールする場合、標準的な「レイジーサンプリング」が使われる。
【０１３６】
すべての可能なＰＩＮの集合｛ｐ１，…ｐｋ｝からランダムＰＩＮ ｐｉが選択される。このｐ０は、正しいＰＩＮと考えられるだろう。そして、「正しい」クライアントのシェアは、単にランダム数ｄ’’ ←Ｚφ（ｎ）である。すなわち、Ｅｐ０−１（ｃ）＝ｄ’’および Ｅｐ０（ｄ’’）＝ｃと定義し、これらの値をレイジーサンプリングデータベースに加える。
【０１３７】
Ｓ−コールＳ（ｍ，ｓ，ｙ）は以下のようにシミュレートされるだろう。正当性チェックのため、ｙをＰｓ（ｍ）ｄ‘’ ｍｏｄ ｎと比較する。比較結果が一致しなければ、⊥を返す。そうでなければ、Σコールσ＝Σ（ｍ，ｓ）を生成し、σを返す。ｒ（クライアントの秘密エクスポーネントのサーバのシェア）は不要であることに注意されたい。
【０１３８】
入力Ｈ（Ｍ）でＳをコールすることは決してできないが、Ａが成功する（Ｍ上に偽の署名を生成する）確率δは、ｔ’／ Ｓ’を超えることはできない。高価なオーバヘッドはないため、ｔ’≒ｔと考えてよい。
【０１３９】
補題５によれば、ＡがＳコールＳ（Ｈ（Ｍ），ｓ，ｙ）を作成するのに成功する確率δｂは、３／ｋよりわずかに大きい程度である。これは、Ｈ（Ｍ）が一様なランダム数であることから、ｏｒｄ（Ｐ（Ｈ（Ｍ））））≧｛（ｐ−１）／２，（ｑ−１）／２｝である確率が少なくとも１−２（−ｈ＋４）であるためである。この場合、すべての値（Ｐ（Ｈ（Ｍ）Ｅｐｉ−１（ｃ） ｍｏｄ ｎが異なる確率は約１−（（２Ｋ２）／（ｍｉｎ｛ｐ，ｑ｝−１））となり、任意のオラクルコールが成功する確率は１／Ｋより大きくない（ｉ＝１…Ｋ）。従って
【数１４】
2019537349.tif 000016
である。
これはδ≦δａ＋δｂ≦（（３／Ｋ）＋（ｔ／Ｓ）＋（２（−ｈ＋４））＋（２Ｋ２／（ｍｉｎ｛ｐ，ｑ｝−１）））であることを意味する。
【０１４０】
定理３。ｌ−準安全素数を持つΣが適応的選択メッセージ攻撃に対してＳ−安全であるならば、クライアントの暗号化されたシェアｃ＝ＥＰＩＮ（ｄ−ｒ）へのアクセスを持つｔ−時間敵対者は、（（３／ｋ）＋（ｔ／Ｓ）＋２（−ｈ＋４ｌｏｇ２（ｌ＋４））＋（２ｌｋ２／（ｍｉｎ｛ｐ，ｑ｝−１）））より高い確率で偽造を生成することができない。
【０１４１】
証明。補題５の代わりに補題６を使えば、定理２とまったく同様である。
【０１４２】
例えば、１０２４ビットの素数を使った場合、通常のＴＳＡは２９０−安全である。我々は２５６ビットのハッシュ関数を使うが、ｔ−時間敵対者の予想する確率は以下となる。
【数１５】
2019537349.tif 000017
【０１４３】
少なくともこの付録に記載した証明により、本提案の方法が安全であることが示される。
【図１】
2019537349.tif 000018
【図２】
2019537349.tif 000019
【図３】
2019537349.tif 000020
【図４】
2019537349.tif 000021
【図５】
2019537349.tif 000022
【図６】
2019537349.tif 000023
【図７】
2019537349.tif 000024
【国際調査報告】
2019537349.tif 000025
2019537349.tif 000026