(57)【特許請求の範囲】
【請求項１】
第１のコンピュータが、第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、第１のデータ格納部に格納する処理と、
前記第１のコンピュータが、ＲＳＡ（Rivest Shamir Adleman）暗号方式に従って前記第１のユーザの公開鍵にて平文を暗号化することにより得られた第１のデータと、前記ＲＳＡ暗号方式に従って前記第１のユーザの公開鍵にて乱数を暗号化した第１暗号文とを乗算することにより前記第１のデータに対してマスク化処理を実施し、当該マスク化処理された第１のデータに対して、前記第１のデータ格納部に格納されている前記第１の部分鍵で復号処理を実施することで第２のデータを生成し、前記第１のデータ格納部に格納する処理と、
前記第１のコンピュータが、前記第１のデータ格納部に格納されている前記第２のデータを、第２のコンピュータに送信する処理と、
を含む暗号処理方法。
【請求項２】
第２のコンピュータが、前記第１のユーザの第２の部分鍵を取得し、第２のデータ格納部に格納する処理と、
前記第２のコンピュータが、前記第１のコンピュータから、前記第２のデータを受信し、前記第２のデータ格納部に格納する処理と、
前記第２のコンピュータが、前記第２のデータ格納部に格納されている前記第２のデータに対して、前記第２のデータ格納部に格納されている前記第２の部分鍵で復号処理を実施する処理と、
前記第２のコンピュータが、前記復号処理により得られた、前記乱数でマスク化された平文に対して、前記ＲＳＡ暗号方式に従って第２のユーザの公開鍵で暗号化処理を実施することで第３のデータを生成し、前記第２のデータ格納部に格納する処理と、
前記第２のコンピュータが、前記第２のデータ格納部に格納されている前記第３のデータを、前記第１のコンピュータに送信する処理と、
をさらに含む請求項１記載の暗号処理方法。
【請求項３】
前記第１のコンピュータが、前記第２のコンピュータから前記第３のデータを受信し、前記第１のデータ格納部に格納する処理と、
前記第１のコンピュータが、前記第１のデータ格納部に格納されている前記第３のデータと、前記ＲＳＡ暗号方式に従って前記第２のユーザの公開鍵にて前記乱数を暗号化した第２暗号文と、前記第２のユーザの公開鍵とを用いて、前記平文が前記第２のユーザの公開鍵で再暗号化された第４のデータを生成し、前記第１のデータ格納部に格納する処理と、
をさらに含む請求項２記載の暗号処理方法。
【請求項４】
第１のデータ格納部を有する第１のコンピュータと、
第２のデータ格納部を有する第２のコンピュータと、
を有し、
前記第１のコンピュータが、
第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、前記第１のデータ格納部に格納し、
ＲＳＡ（Rivest Shamir Adleman）暗号方式に従って前記第１のユーザの公開鍵にて平文を暗号化することにより得られた第１のデータと、前記ＲＳＡ暗号方式に従って前記第１のユーザの公開鍵にて乱数を暗号化した第１暗号文とを乗算することにより前記第１のデータに対してマスク化処理を実施し、当該マスク化処理された第１のデータに対して、前記第１のデータ格納部に格納されている前記第１の部分鍵で復号処理を実施することで第２のデータを生成し、前記第１のデータ格納部に格納し、
前記第１のデータ格納部に格納されている前記第２のデータを、前記第２のコンピュータに送信し、
前記第２のコンピュータが、
前記第１のユーザの第２の部分鍵を取得し、第２のデータ格納部に格納する処理と、
前記第１のコンピュータから、前記第２のデータを受信し、前記第２のデータ格納部に格納し、
前記第２のデータ格納部に格納されている前記第２のデータに対して、前記第２のデータ格納部に格納されている前記第２の部分鍵で復号処理を実施し、
前記復号処理により得られた、前記乱数でマスク化された平文に対して、前記ＲＳＡ暗号方式に従って第２のユーザの公開鍵で暗号化処理を実施することで第３のデータを生成し、前記第２のデータ格納部に格納し、
前記第２のデータ格納部に格納されている前記第３のデータを、前記第１のコンピュータに送信し、
前記第１のコンピュータが、
前記第２のコンピュータから前記第３のデータを受信し、前記第１のデータ格納部に格納し、
前記第１のデータ格納部に格納されている前記第３のデータと、前記ＲＳＡ暗号方式に従って前記第２のユーザの公開鍵にて前記乱数を暗号化した第２暗号文と、前記第２のユーザの公開鍵とを用いて、前記平文が前記第２のユーザの公開鍵で再暗号化された第４のデータを生成し、前記第１のデータ格納部に格納する
システム。
【請求項５】
第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、データ格納部に格納する処理と、
ＲＳＡ（Rivest Shamir Adleman）暗号方式に従って前記第１のユーザの公開鍵にて平文を暗号化することにより得られた第１のデータと、前記ＲＳＡ暗号方式に従って前記第１のユーザの公開鍵にて乱数を暗号化した第１暗号文とを乗算することにより前記第１のデータに対してマスク化処理を実施し、当該マスク化処理された第１のデータに対して、前記データ格納部に格納されている前記第１の部分鍵で復号処理を実施することで第２のデータを生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第２のデータを、他のコンピュータに送信する処理と、
前記第１のユーザの第２の部分鍵を取得した前記他のコンピュータから、前記第２のデータに対して前記第２の部分鍵で復号処理を実施することにより得られた、前記乱数でマスク化された平文に対して、前記ＲＳＡ暗号方式に従って第２のユーザの公開鍵で暗号化処理を実施することで生成した第３のデータを受信し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第３のデータと、前記ＲＳＡ暗号方式に従って前記第２のユーザの公開鍵にて前記乱数を暗号化した第２暗号文と、前記第２のユーザの公開鍵とを用いて、前記平文が前記第２のユーザの公開鍵で再暗号化された第４のデータを生成し、前記データ格納部に格納する処理と、
を含み、コンピュータにより実行される暗号処理方法。
【請求項６】
第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、データ格納部に格納する処理と、
ＲＳＡ（Rivest Shamir Adleman）暗号方式に従って前記第１のユーザの公開鍵にて平文を暗号化することにより得られた第１のデータと、前記ＲＳＡ暗号方式に従って前記第１のユーザの公開鍵にて乱数を暗号化した第１暗号文とを乗算することにより前記第１のデータに対してマスク化処理を実施し、当該マスク化処理された第１のデータに対して、前記データ格納部に格納されている前記第１の部分鍵で復号処理を実施することで第２のデータを生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第２のデータを、他のコンピュータに送信する処理と、
前記第１のユーザの第２の部分鍵を取得した前記他のコンピュータから、前記第２のデータに対して前記第２の部分鍵で復号処理を実施することにより得られた、前記乱数でマスク化された平文に対して、前記ＲＳＡ暗号方式に従って第２のユーザの公開鍵で暗号化処理を実施することで生成した第３のデータを受信し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第３のデータと、前記ＲＳＡ暗号方式に従って前記第２のユーザの公開鍵にて前記乱数を暗号化した第２暗号文と、前記第２のユーザの公開鍵とを用いて、前記平文が前記第２のユーザの公開鍵で再暗号化された第４のデータを生成し、前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
【請求項７】
第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を格納するデータ格納部と、
ＲＳＡ（Rivest Shamir Adleman）暗号方式に従って前記第１のユーザの公開鍵にて平文を暗号化することにより得られた第１のデータと、前記ＲＳＡ暗号方式に従って前記第１のユーザの公開鍵にて乱数を暗号化した第１暗号文とを乗算することにより前記第１のデータに対してマスク化処理を実施し、当該マスク化処理された第１のデータに対して、前記データ格納部に格納されている前記第１の部分鍵で復号処理を実施することで第２のデータを生成し、前記データ格納部に格納する第１暗号処理部と、
前記データ格納部に格納されている前記第２のデータを、他のコンピュータに送信する送信部と、
前記第１のユーザの第２の部分鍵を取得した前記他のコンピュータから、前記第２のデータに対して前記第２の部分鍵で復号処理を実施することにより得られた、前記乱数でマスク化された平文に対して、前記ＲＳＡ暗号方式に従って第２のユーザの公開鍵で暗号化処理を実施することで生成した第３のデータを受信し、前記データ格納部に格納する受信部と、
前記データ格納部に格納されている前記第３のデータと、前記ＲＳＡ暗号方式に従って前記第２のユーザの公開鍵にて前記乱数を暗号化した第２暗号文と、前記第２のユーザの公開鍵とを用いて、前記平文が前記第２のユーザの公開鍵で再暗号化された第４のデータを生成し、前記データ格納部に格納する第２暗号処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、第１のユーザのための暗号化データを第２のユーザのための暗号化データに変換する技術に関する。
【背景技術】
【０００２】
再暗号化とは、ユーザＡが復号可能なように暗号化されたデータを、ユーザＢが復号できるように暗号文を変換する技術である。
【０００３】
クラウド上で機密データを保管する際には、データの暗号化が行われる。また、クラウド上で、機密データを複数のユーザで共有するサービスを提供する場合には、データを暗号化しつつ複数のメンバでデータを共有することになる。このような場合に公開鍵暗号方式を採用するならば、秘密鍵を複数のメンバで共有したり、複数のメンバの各々につき公開鍵で暗号化したり、クラウド上で再暗号化することになる。最初の２つの方法では、秘密鍵の管理の問題、処理負荷の問題などから採用は難しい。
【０００４】
一方、再暗号化を行う場合でも、ユーザＡの秘密鍵をクラウドに預けたり、クラウド上で平文のデータが露出してしまうといった問題がある。このため特殊な暗号方式を用いる例もあるが、各ユーザがこの特殊な暗号方式で暗号化及び復号化するためのモジュールを用意することになる。
【０００５】
なお、暗号技術を様々な分野で利用する際に、秘密鍵を分割したり、鍵を切り替えたり、暗号方式を切り替えたり、乱数と組み合わせたりするような処理を実施する場合がある。しかし、秘匿化すべきデータの平文を露出させずに再暗号化するような技術は存在していない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−３０５５１２号公報
【特許文献２】特開２０００−２０７４８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従って、本技術の目的は、一側面では、秘匿化すべきデータの平文を露出させずに再暗号化するための技術を提供することである。
【課題を解決するための手段】
【０００８】
本技術の第１の態様に係る暗号処理方法は、（Ａ）第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、データ格納部に格納する処理と、（Ｂ）第１のデータ格納部に格納されており且つ第１のユーザの公開鍵にて暗号化された第１のデータに対して、第１のデータ格納部に格納されている第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、データ格納部に格納する処理と、（Ｃ）データ格納部に格納されている第２のデータを、他のコンピュータに送信する処理と、（Ｄ）第１のユーザの第２の部分鍵を取得した他のコンピュータから、第２のデータに対して第２の部分鍵で復号処理を実施し且つ第２のユーザの公開鍵で暗号化処理を実施することで生成した第３のデータを受信し、データ格納部に格納する処理と、（Ｅ）データ格納部に格納されている第３のデータに対して、上記使用する暗号方式に従って乱数によるマスク解除処理を実施することで第２のユーザの公開鍵で暗号化された第１のデータを生成し、データ格納部に格納する処理とを含む。
【０００９】
本技術の第２の態様に係るシステムは、第１のデータ格納部を有する第１のコンピュータと、第２のデータ格納部を有する第２のコンピュータとを有する。そして、第１のコンピュータは、（Ａ）第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、第１のデータ格納部に格納し、（Ｂ）第１のデータ格納部に格納されており且つ第１のユーザの公開鍵にて暗号化された第１のデータに対して、第１のデータ格納部に格納されている第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、第１のデータ格納部に格納し、（Ｃ）第１のデータ格納部に格納されている第２のデータを、第２のコンピュータに送信する。また、第２のコンピュータは、（Ｄ）第１のユーザの第２の部分鍵を取得し、第２のデータ格納部に格納する処理と、（Ｅ）第１のコンピュータから、第２のデータを受信し、前記第２のデータ格納部に格納し、（Ｆ）第２のデータ格納部に格納されている第２のデータに対して、第２のデータ格納部に格納されている第２の部分鍵で復号処理を実施し、（Ｇ）復号処理がなされた第２のデータに対して、第２のユーザの公開鍵で暗号化処理を実施することで第３のデータを生成し、第２のデータ格納部に格納し、（Ｈ）第２のデータ格納部に格納されている第３のデータを、第１のコンピュータに送信する。その後、第１のコンピュータは、（Ｉ）第２のコンピュータから第３のデータを受信し、第１のデータ格納部に格納し、（Ｊ）第１のデータ格納部に格納されている第３のデータに対して、上記使用する暗号方式に従って乱数によるマスク解除処理を実施することで第２のユーザの公開鍵で暗号化された第１のデータを生成し、第１のデータ格納部に格納する。
【発明の効果】
【００１０】
秘匿化すべきデータの平文を露出させずに再暗号化できるようになる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施の形態に係るシステムの概要を示す図である。
【図２】図２は、ユーザＡのユーザ装置の構成例を示す図である。
【図３】図３は、ユーザＢのユーザ装置の構成例を示す図である。
【図４】図４は、第１情報処理装置の機能ブロック図である。
【図５】図５は、第１の実施の形態に係る第２情報処理装置の機能ブロック図である。
【図６】図６は、システムの処理の概要を示す図である。
【図７】図７は、システムの処理の全体フローを示す図である。
【図８】図８は、第１の実施の形態における秘密鍵分割処理の処理フローを示す図である。
【図９】図９は、第１の実施の形態における再暗号化処理の処理フローを示す図である。
【図１０】図１０は、第１の実施の形態における第２再暗号化処理の処理フローを示す図である。
【図１１】図１１は、第１の実施の形態における第３再暗号化処理の処理フローを示す図である。
【図１２】図１２は、第１の実施の形態における復号化処理の処理フローを示す図である。
【図１３】図１３は、第１の実施の形態における数値例を示す図である。
【図１４】図１４は、第２の実施の形態における第２情報処理装置の機能ブロック図である。
【図１５】図１５は、第２の実施の形態における秘密鍵分割処理の処理フローを示す図である。
【図１６】図１６は、第２の実施の形態における第１再暗号化処理の処理フローを示す図である。
【図１７】図１７は、第２の実施の形態における第２再暗号化処理の処理フローを示す図である。
【図１８】図１８は、第２の実施の形態における第３再暗号化処理の処理フローを示す図である。
【図１９】図１９は、第２の実施の形態における復号化処理の処理フローを示す図である。
【図２０】図２０は、第３の実施の形態における秘密鍵分割処理の処理フローを示す図である。
【図２１】図２１は、第３の実施の形態における第１再暗号化処理の処理フローを示す図である。
【図２２】図２２は、第３の実施の形態における第２再暗号化処理の処理フローを示す図である。
【図２３】図２３は、第３の実施の形態における第３再暗号化処理の処理フローを示す図である。
【図２４】図２４は、第３の実施の形態における復号化処理の処理フローを示す図である。
【図２５】図２５は、共通鍵を用いた場合について説明する図である。
【図２６】図２６は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１２】
［実施の形態１］
本実施の形態に係るシステムの概要を図１に示す。図１の例では、インターネット１などのネットワークに、ユーザＡが用いるユーザ装置３と、ユーザＢが用いるユーザ装置５と、例えばクラウドＡなどのサービスＡで用いられる第１情報処理装置７と、クラウドＡとは別のクラウドＢなどのサービスＢで用いられる第２情報処理装置９とが接続されている。
【００１３】
本実施の形態では、クラウドＡの運営主体とクラウドＢの運営主体とでは提携関係にはあるが、結託して秘密鍵を持ち寄るといった悪意を有することはないものとする。また、本実施の形態では、ユーザＡがデータをクラウドＡのサービスＡに登録しておき、ユーザＢとそのデータを共有する場面について説明する。
【００１４】
本実施の形態に係るユーザ装置３の構成例を図２に示す。ユーザＡが用いるユーザ装置３は、第１データ格納部３１と、分割処理部３３と、第２データ格納部３５と、送信部３７とを有する。第１データ格納部３１は、ユーザＡの秘密鍵及び公開鍵を格納している。分割処理部３３は、ユーザＡの秘密鍵を分割する処理を実施し、生成された２つの部分鍵を第２データ格納部３５に格納する。送信部３７は、第１の部分鍵を第１情報処理装置７に送信し、第２の部分鍵を第２情報処理装置９に送信する。なお、各装置間の通信については、以下において直接触れられていない場合においても、何らかの暗号化処理が行われているものとする。
【００１５】
本実施の形態に係るユーザ装置５の構成例を図３に示す。ユーザＢが用いるユーザ装置５は、通信部５１と、第１データ格納部５３と、暗号処理部５５と、第２データ格納部５７と、第３データ格納部５９とを有する。通信部５１は、第１情報処理装置７から、ユーザＢ用に暗号化されたデータを受信して、第１データ格納部５３に格納する。第２データ格納部５７は、ユーザＢの秘密鍵及び公開鍵を格納している。暗号処理部５５は、第１データ格納部５３に格納されている暗号化データを、第２データ格納部５７に格納されている秘密鍵で復号して、第３データ格納部５９に格納する。
【００１６】
なお、ここではユーザ装置はユーザＡのユーザ装置及びユーザＢのユーザ装置とを区別しているが、実際のユーザ装置はユーザ装置３及び５の両方の機能を有する。暗号処理部５５は、自身の公開鍵でデータを暗号化する場合もある。
【００１７】
本実施の形態に係る第１情報処理装置７の構成例を図４に示す。第１情報処理装置７は、受信部７１と、第１データ格納部７２と、第１暗号処理部７３と、第３データ格納部７４と、乱数生成部７５と、第４データ格納部７６と、第２データ格納部７７と、第５データ格納部７８と、第２暗号処理部７９と、第６データ格納部８１と、第７データ格納部８２と、送信部８３とを有する。受信部７１は、第１の部分鍵を受信すると、第１データ格納部７２に格納する。第３データ格納部７４には、ユーザＡの公開鍵で暗号化されたデータが格納されている。乱数生成部７５は、乱数を生成させて、第４データ格納部７６に格納する。第５データ格納部７８は、ユーザＡの公開鍵及びユーザＢの公開鍵を格納している。
【００１８】
第１暗号処理部７３は、第３データ格納部７４に格納されている暗号化データに対して、第１データ格納部７２に格納されている第１の部分鍵と第４データ格納部７６に格納されている乱数と第５データ格納部７８に格納されているユーザＡの公開鍵とを用いて処理を行い、処理結果を第６データ格納部８１に格納する。送信部８３は、第６データ格納部８１に格納されているデータを、第２情報処理装置９に送信する。
【００１９】
また、受信部７１は、第２情報処理装置９からデータを受信すると、第２データ格納部７７に格納する。第２暗号処理部７９は、第２データ格納部７７に格納されているデータに対して、第４データ格納部７６に格納されている乱数と第５データ格納部７８に格納されているユーザＢの公開鍵とを用いて処理を行い、処理結果を第７データ格納部８２に格納する。送信部８３は、ユーザ装置５からの要求に応じて、第７データ格納部８２に格納されているデータを、ユーザ装置５に送信する。
【００２０】
本実施の形態に係る第２情報処理装置９の構成例を図５に示す。第２情報処理装置９は、受信部９１と、第１データ格納部９２と、第２データ格納部９３と、暗号処理部９７と、第３データ格納部９４と、第４データ格納部９５と、送信部９６とを有する。
【００２１】
受信部９１は、ユーザ装置３から第２の部分鍵を受信し、第１データ格納部９２に格納する。また、受信部９１は、第１情報処理装置７からデータを受信すると、第２データ格納部９３に格納する。第３データ格納部９４は、ユーザＡの公開鍵及びユーザＢの公開鍵を格納している。暗号処理部９７は、第２データ格納部９３に格納されているデータに対して、第１データ格納部９２に格納されている第２の部分鍵と第３データ格納部９４に格納されているユーザＡ及びＢの公開鍵とを用いて処理を行い、処理結果を第４データ格納部９５に格納する。そして、送信部９６は、第４データ格納部９５に格納されているデータを、第１情報処理装置７に送信する。
【００２２】
まず、処理の概要を図６を用いて説明する。ここではユーザＡの公開鍵で暗号化したデータを、ユーザＢが復号できる暗号化データに再暗号化する際の処理を示す。
【００２３】
ユーザＡのユーザ装置３では、ユーザＡの秘密鍵１０１を、第１の部分鍵１０２と、第２の部分鍵１０３とに分割する。そして、第１の部分鍵１０２については、サービスＡについての第１情報処理装置７に送付し、第２の部分鍵１０３については、サービスＢについての第２情報処理装置９に送付する。
【００２４】
なお、ユーザＡの公開鍵で暗号化されたデータ１５１は、第１の部分鍵１０２と第２の部分鍵１０３との組み合わせで復号できる。従って、あたかも第１の部分鍵１０２の公開鍵と第２の部分鍵１０３の公開鍵とで暗号化されているデータ１５２のように扱うことができる。
【００２５】
そして、サービスＡについての第１情報処理装置７は、ユーザＡの公開鍵で暗号化されたデータ１５１（即ちデータ１５２）に対して、使用する暗号方式に従って平文のデータについて乱数でマスク化されるようにマスク化処理を実施する（ステップ（１））。これによって暗号化され且つ乱数でマスク化されたデータ１５３が生成される。また、第１情報処理装置７は、データ１５３に対して、ユーザＡから受信した第１の部分鍵１０２で第１の復号化処理を実施する（ステップ（２））。そうすると、第２の部分鍵１０３だけで復号される暗号化状態であり且つ乱数でマスク化されたデータ１５４が生成される。第１情報処理装置７は、このデータ１５４を、サービスＢについての第２情報処理装置９に送信する（ステップ（３））。
【００２６】
そして、第２情報処理装置９は、データ１５４に対して、ユーザＡから取得した第２の部分鍵１０３で第２の復号化処理を実施する（ステップ（４））。そうすると、乱数でマスク化されたデータ１５５が生成される。このように、ユーザＡの公開鍵で暗号化された状態から復号されても、乱数でマスク化されているので第２情報処理装置９においても平文のデータは露出しない。その後、第２情報処理装置９は、データ１５５に対して、ユーザＢの公開鍵で暗号化処理を実施する（ステップ（５））。これによって、ユーザＢの公開鍵で暗号化され且つマスク化されたデータ１５６が生成される。第２情報処理装置９は、データ１５６を第１情報処理装置７に送信する（ステップ（６））。
【００２７】
第１情報処理装置７は、データ１５６を受信すると、このデータ１５６に対して、乱数でマスク解除処理を実施する（ステップ（７））。これによって、ユーザＢの公開鍵で暗号化されたデータ１５７が生成される。このデータ１５７は、ユーザＢの秘密鍵で復号可能である。このように第１情報処理装置７でも、平文のデータが露出することはない。
【００２８】
ユーザＢのユーザ装置５は、平文のデータを用いる場合には、ユーザＢの公開鍵で暗号化されたデータ１５７を、サービスＡの第１情報処理装置７から取得して、当該データ１５７に対して自身の秘密鍵で復号処理を実施する（ステップ（８））。このようにすれば、平文のデータ１５８が生成されるので、ユーザＢは平文のデータ１５８を利用できるようになる。
【００２９】
このように、平文のデータを露出させることなく再暗号化できるため、クラウドなどのサービスにおいてデータを秘匿しつつ複数のユーザで共有できるようになる。
【００３０】
次に、本実施の形態の具体的な処理内容について図７乃至図１２を用いて説明する。なお、本実施の形態では、ＲＳＡ（Rivest Shamir Adleman）暗号方式を用いる。
【００３１】
まず、ユーザＡのユーザ装置３の分割処理部３３は、第１データ格納部３１に格納されているデータを用いて、秘密鍵分割処理を実施する（図７：ステップＳ１）。この秘密鍵分割処理については、図８を用いて説明する。
【００３２】
まず、分割処理部３３は、ユーザＡの秘密鍵ｄＡ及び公開鍵（ＮＡ，ｅＡ）を、第１データ格納部３１から読み出す（図８：ステップＳ３１）。なお、平文ｍに対してΨ＝ｍeA（ｍｏｄ  ＮＡ）が、第１情報処理装置７の第３データ格納部７４に格納されている。
【００３３】
そして、分割処理部３３は、ＮＡ＝ｐＡ＊ｑＡ（ｍｏｄ  ＮＡ）に対して、１＜ｄＡ１＜（ｐＡ−１）（ｑＡ−１）且つ（ｐＡ−１）（ｑＡ−１）と互いに素となる第１の部分鍵ｄＡ１を選択し、第２データ格納部３５に格納する（ステップＳ３３）。また、分割処理部３３は、拡張ユークリッドの互除法を用いてｄＡ１＊ｄＡ１a＝１  （ｍｏｄ  （ｐＡ−１）（ｑＡ−１））となるｄＡ１aを算出する（ステップＳ３５）。
【００３４】
そして、分割処理部３３は、第２の部分鍵ｄＡ２＝ｄＡ＊ｄＡ１a  （ｍｏｄ  （ｐＡ−１）（ｑＡ−１））を算出し、第２データ格納部３５に格納する（ステップＳ３７）。
【００３５】
このようにして秘密鍵を２つの部分鍵に分割することができる。
【００３６】
図７の処理の説明に戻って、ユーザＡのユーザ装置３の送信部３７は、第１の部分鍵を第１情報処理装置７に送信する（ステップＳ３）。第１情報処理装置７の受信部７１は、ユーザ装置３から、第１の部分鍵を受信すると、第１データ格納部７２に格納する（ステップＳ５）。また、ユーザ装置３の送信部３７は、第２の部分鍵を第２情報処理装置９に送信する（ステップＳ７）。第２情報処理装置９の受信部９１は、ユーザ装置３から第２の部分鍵を受信し、第１データ格納部９２に格納する（ステップＳ９）。
【００３７】
その後、第１情報処理装置７は、第１再暗号化処理を実施する（ステップＳ１１）。この処理については、図９を用いて説明する。
【００３８】
まず、第１情報処理装置７の例えば第１暗号処理部７３は、ユーザＡの公開鍵（ＮＡ，ｅＡ）を、ユーザＡのユーザ装置３から又は他のサーバ等から取得し、第５データ格納部７８に格納する（ステップＳ４１）。なお、このステップは、前もって行っておく場合もある。
【００３９】
さらに、乱数生成部７５は、乱数ｒを生成し、第４データ格納部７６に格納する（ステップＳ４３）。本実施の形態では、ｒ及びｒと平文データｍとの積は、ＮＡ（及びユーザＢの公開鍵ＮＢ）以下という要件が課されている。
【００４０】
また、第１暗号処理部７３は、ユーザの公開鍵（ＮＡ，ｅＡ）及び第１の部分鍵ｄＡ１を用いて、第１中間データとして、Π1＝（ｒeA＊Ψ）dA1  （ｍｏｄ  ＮＡ）を算出し、第６データ格納部８１に格納する（ステップＳ４５）。そして呼出元の処理に戻る。
【００４１】
Ψ＝ｍeA  （ｍｏｄ  ＮＡ）であり、Ψは、ユーザＡの公開鍵で暗号化されたデータ１５１である。なお、ｒeAをΨに乗ずることで｛ｒ＊ｍ｝eAとなるので、平文ｍがｒでマスクされることになる。
【００４２】
なお、ｒeA＊Ψ  （ｍｏｄ  ＮＡ）は図６のマスク処理（ステップ（１））であり、（ｒeA＊Ψ）dA1  （ｍｏｄ  ＮＡ）は図６の第１の復号処理（ステップ（２））である。但し、｛ｒeA｝dA1  （ｍｏｄ  ＮＡ）とΨdA1  （ｍｏｄ  ＮＡ）を算出して、これらを乗ずるようにしても良い。
【００４３】
図７の処理の説明に戻って、第１情報処理装置７の送信部８３は、第６データ格納部８１に格納されている第１中間データΠ1（図６のデータ１５４）を、サービスＢについての第２情報処理装置９に送信する（ステップＳ１３）。第２情報処理装置９の受信部９１は、第１中間データΠ1を受信して第２データ格納部９３に格納する（ステップＳ１５）。そして、暗号処理部９７は、第２再暗号化処理を実施する（ステップＳ１７）。第２再暗号化処理については、図１０を用いて説明する。
【００４４】
まず、第２情報処理装置９の例えば暗号処理部９７は、ユーザＡの公開鍵（ＮＡ，ｅＡ）を例えばユーザＡのユーザ装置３などから、ユーザＢの公開鍵（ＮＢ，ｅＢ）を例えばユーザＢのユーザ装置５などから取得し、第３データ格納部９４に格納する（ステップＳ５１）。このステップについては、前もって行っておく場合もある。また、取得元の装置については、他のサーバであっても良い。
【００４５】
そして、暗号処理部９７は、第１中間データΠ1、第２の部分鍵ｄＡ２及びユーザＡの公開鍵から、ξ1＝Π1dA2  （ｍｏｄ  ＮＡ）を算出する（ステップＳ５３）。これによって、｛｛ｒ＊ｍ｝eA｝dA1*dA2  （ｍｏｄ  ＮＡ）を算出することになるので、マスク化されたデータ１５５としてｒ＊ｍ  （ｍｏｄ  ＮＡ）が得られたことになる。すなわち、第２の復号化処理（ステップ（４））が実行されたことになる。
【００４６】
その後、暗号処理部９７は、マスク化されたデータξ1と、ユーザＢの公開鍵を用いて、ユーザＢ向けに暗号化され且つ乱数ｒにてマスク化されたデータとして、ξ2＝ξ1eB （ｍｏｄ  ＮＢ）を算出し、第４データ格納部９５に格納する（ステップＳ５５）。そして処理は呼出元の処理に戻る。
【００４７】
これによって、｛ｒ＊ｍ｝eB  （ｍｏｄ  ＮＢ）が得られて、ユーザＢ向けに暗号化された状態になる。但し、マスク化されるので平文は得られない。
【００４８】
図７の処理の説明に戻って、第２情報処理装置９の送信部９６は、第４データ格納部９５に格納されている第２中間データξ2（すなわち図６のデータ１５６）を、第１情報処理装置７に送信する（ステップＳ１９）。第１情報処理装置７の受信部７１は、第２情報処理装置９から第２中間データξ2を受信し、第２データ格納部７７に格納する（ステップＳ２１）。そして、第１情報処理装置７の第２暗号処理部７９は、第３再暗号化処理を実施する（ステップＳ２３）。第３再暗号化処理については、図１１を用いて説明する。
【００４９】
第１情報処理装置７の例えば第２暗号処理部７９は、ユーザＢの公開鍵（ＮＢ，ｅＢ）をユーザＢのユーザ装置５等から取得し、第５データ格納部７８に格納する（ステップＳ６１）。このステップについては予め実施しておく場合もある。また、取得元は他のサーバ等の場合もある。
【００５０】
さらに、第２暗号処理部７９は、乱数ｒとユーザＢの公開鍵とを用いて、Π2eB  （ｍｏｄ  ＮＢ）を算出する（ステップＳ６３）。Π2はマスク解除のためのデータである。
【００５１】
そして、第２暗号処理部７９は、第２中間データξ2とΠ2とユーザＢの公開鍵とを用いて、ユーザＢ向けの再暗号化データとして、ξ＝Π2-1＊ξ2  （ｍｏｄ  ＮＢ）を算出し、第７データ格納部８２に格納する（ステップＳ６５）。そして処理は呼出元の処理に戻る。
【００５２】
ξ2＝｛ｒ＊ｍ｝eB＝ｒeB＊ｍeB  （ｍｏｄ  ＮＢ）であるから、ξ2／Π2  （ｍｏｄ  ＮＢ）によって、ｍeB （ｍｏｄ  ＮＢ）（即ち図６のデータ１５７）が得られる。すなわち、平文ｍがユーザＢの公開鍵で暗号化されたことになる。
【００５３】
図７の説明に戻って、送信部８３は、ユーザ装置５の要求又は何らかのイベントに応じて、第７データ格納部８２に格納されている再暗号化データ（図６のデータ１５７）をユーザ装置５に送信する（ステップＳ２５）。そして、ユーザ装置５の通信部５１は、再暗号化データを受信し、第１データ格納部５３に格納する（ステップＳ２７）。そして、暗号処理部５５は、復号化処理を実施する（ステップＳ２９）。復号化処理については、図１２を用いて説明する。
【００５４】
暗号処理部５５は、第２データ格納部５７に格納されているユーザＢの秘密鍵ｄＢ及び公開鍵（ＮＢ，ｅＢ）を読み出す（ステップＳ７１）。そして、暗号処理部５５は、ユーザＢの秘密鍵ｄＢ及び公開鍵（ＮＢ，ｅＢ）と再暗号化データξを用いて、平文ｍ＝ξdB  （ｍｏｄ  ＮＢ）を算出し、第３データ格納部５９に格納する（ステップＳ７３）。この後、例えば暗号処理部５５又は他のアプリケーションなどが、平文ｍを出力する（ステップＳ７５）。そして処理を終了する。
【００５５】
このように、平文ｍを露出することなく、ユーザＢでも復号できるような再暗号化が実施されるようになる。なお、平文ｍはユーザＡの公開鍵で暗号化されており、平文ｍはユーザＢの秘密鍵で復号化されており、ユーザ装置は、鍵の分割処理を行うモジュール以外は、通常のモジュールで実施可能である。
【００５６】
ここで、上で述べた処理について数値を用いた具体例について説明する。例えば図１３に示すような値が設定、生成又は選択されているものとする。なお、実際にはＮＡ及びＮＢは１０２４ビット程度の値を用いて安全性を確保するが、ここでは説明の都合上小さな値を用いている。
【００５７】
このような場合、秘密鍵の分割は、ＬＡ＝２１８４と互いに素な値（例えば１７９５，１８０１，１８０５，１８１１，１８１７，１８１９，１８２３．．．）のうち１つ選択する。例えばここではｄＡ１＝１８０５と設定する。また、ｄＡ１a＊ｄＡ１  （ｍｏｄ  ＬＡ）＝１となるｄＡ１aを算出する。ここでは、ｄＡ１a＝１７０５が得られる。そうすると、以下のようにｄＡ２が得られる。
ｄＡ２＝ｄＡ１＊ｄＡ１a （ｍｏｄ  ＬＡ）＝１８０５＊１７０５  （ｍｏｄ  ２１８４）＝７３７
【００５８】
なお、ｄＡ１＊ｄＡ２＝１８０５*７３７（ｍｏｄ  ２１８４）＝１６４９＝ｄＡなので、正しく第１及び第２の部分鍵が得られている。
【００５９】
そうすると、暗号化データΨ＝４５1241（ｍｏｄ  ２２７９）である。そうすると、サービスＡについての第１情報処理装置７において、ユーザＡ向けに暗号化され且つ乱数ｒでマスク化されたデータ１５３は、以下のように算出される。
４５1241＊３９1241  （ｍｏｄ  ２２７９）＝１７５５1241（ｍｏｄ２２７９）
【００６０】
そして第１復号化処理を行った後の第１中間データ１５４は、以下のように算出される。
Π1＝｛（４５＊３９）1241｝1705（ｍｏｄ  ２２７９）＝１７５５1241*1705（ｍｏｄ  ２２７９）
【００６１】
サービスＢについての第２情報処理装置９において、第２復号化処理を行うと、以下のような値が算出される。
｛Π1｝dA2＝１７５５1241*1705*737（ｍｏｄ  ２２７９）＝１７５５
【００６２】
このようにｒ＊ｍ＝１７５５がサービスＢについての第２情報処理装置９において得られる。但し、第２情報処理装置９にはｒ＝３９が無いので、ｍ＝４５は得られない。
【００６３】
さらに、このマスク化されたデータｒ＊ｍをユーザＢの公開鍵で暗号化する場合には、以下のような演算が行われる。
ξ2＝１７５５1427（ｍｏｄ  ２４１９）
【００６４】
その後、サービスＡについての第１情報処理装置７においては、マスク解除処理を以下のように実施する。
Π2＝３９1427（ｍｏｄ  ２４１９）
ξ＝ξ2／Π2（ｍｏｄ  ＮＢ）＝（１７５５／３９）1427（ｍｏｄ  ２４１９）＝４５1427（ｍｏｄ  ２４１９）
【００６５】
このようなユーザＢ向けに暗号化されたデータξがユーザ装置５に送信されると、ユーザ装置５においては、以下のような演算が実施される。
ｍ＝ξdB（ｍｏｄ  ＮＢ）＝４５1427*1803（ｍｏｄ  ２１４９）＝４５
【００６６】
このようにユーザＢに正しい平文ｍが提示されるようになる。
【００６７】
［実施の形態２］
次に、ＥｌＧａｍａｌ暗号を用いる場合について述べる。基本的なシステム構成は第１の実施の形態と同じである。但し、サービスＢについての第２情報処理装置９の構成は、図１４に示すように変更される。
【００６８】
本実施の形態に係る第２情報処理装置９の構成例を図１４に示す。第２情報処理装置９は、受信部９１と、第１データ格納部９２と、第２データ格納部９３と、暗号処理部９７と、第３データ格納部９４と、第４データ格納部９５と、送信部９６と、乱数生成部９８と、第５データ格納部９９とを有する。すなわち、乱数生成部９８及び第５データ格納部９９とが追加されている。
【００６９】
受信部９１は、ユーザ装置３から第２の部分鍵を受信し、第１データ格納部９２に格納する。また、受信部９１は、第１情報処理装置７からデータを受信すると、第２データ格納部９３に格納する。第３データ格納部９４は、ユーザＡの公開鍵及びユーザＢの公開鍵を格納している。また、乱数生成部９８は、乱数を生成して、第５データ格納部９９に格納する。暗号処理部９７は、第２データ格納部９３に格納されているデータに対して、第１データ格納部９２に格納されている第２の部分鍵と第３データ格納部９４に格納されているユーザＡ及びＢの公開鍵と第５データ格納部９９に格納されている乱数とを用いて処理を行い、処理結果を第４データ格納部９５に格納する。そして、送信部９６は、第４データ格納部９５に格納されているデータを、第１情報処理装置７に送信する。
【００７０】
図６及び図７に示した処理は、本実施の形態でも同様である。よって、以下、本実施の形態に係る秘密鍵分割処理、第１再暗号化処理、第２再暗号化処理、第３再暗号化処理、復号化処理の詳細について説明する。
【００７１】
最初に、本実施の形態に係る秘密鍵分割処理について図１５を用いて説明する。
【００７２】
まず、分割処理部３３は、ユーザＡの秘密鍵ｘＡ及び公開鍵（ｇ，ＮＡ，ｈＡ＝ｇxA  （ｍｏｄ  ＮＡ））を、第１データ格納部３１から読み出す（図１５：ステップＳ８１）。なお、乱数ｒ及び平文ｍに対して、ユーザＡ向けの暗号化データは、Ｃ（Ｃ１＝ｇr ｍｏｄ  ＮＡ，Ｃ２＝ｍ・ｈＡr  ｍｏｄ  ＮＡ）であり、第１情報処理装置７の第３データ格納部７４に格納されている。なお、ｒ及びｒ・ｍ＜ＮＡ及びＮＢである。
【００７３】
そして、分割処理部３３は、ｘＡ＝ｘＡ１・ｘＡ２（ｍｏｄ  ＮＡ）となる第１の部分鍵ｘＡ１及び第２の部分鍵ｘＡ２を選択し、第２データ格納部３５に格納する（ステップＳ８３）。
【００７４】
このようにして秘密鍵を２つの部分鍵に分割することができる。
【００７５】
次に、本実施の形態に係る第１再暗号化処理を図１６を用いて説明する。
【００７６】
まず、第１情報処理装置７の例えば第１暗号処理部７３は、ユーザＡの公開鍵（ｇ，ＮＡ，ｈＡ＝ｇxA （ｍｏｄ  ＮＡ））を、ユーザＡのユーザ装置３から又は他のサーバ等から取得し、第５データ格納部７８に格納する（ステップＳ９１）。なお、このステップは、前もって行っておく場合もある。
【００７７】
さらに、乱数生成部７５は、乱数ｓを生成し、第４データ格納部７６に格納する（ステップＳ９３）。
【００７８】
また、第１暗号処理部７３は、ユーザの公開鍵（ＮＡ）と第１の部分鍵ｘＡ１と暗号化されたデータＣ１とを用いて、第１中間データとして、Π1＝Ｃ１xA1  （ｍｏｄ  ＮＡ）を算出し、第６データ格納部８１に格納する（ステップＳ９５）。これによって、Ｃ１について第１の部分鍵ｘＡ１で部分的な復号が行われたことになる。
【００７９】
また、第１暗号処理部７３は、暗号化されたデータＣ２と乱数ｓとユーザＡの公開鍵（ＮＡ）とを用いて、第１の中間データΠ2＝ｓ・Ｃ２（ｍｏｄ  ＮＡ）を算出し、第６データ格納部８１に格納する（ステップＳ９７）。これによって、平文ｍが乱数ｓでマスクされたことになる。なお、ｍは乱数ｒ乗されているので、この段階では、第１の部分鍵ｘＡ１による演算を行わない。そして処理は、呼出元の処理に戻る。
【００８０】
なお、Π2＝ｓ・Ｃ２（ｍｏｄ  ＮＡ）は図６のマスク処理（ステップ（１））であり、Π1＝Ｃ１xA1  （ｍｏｄ  ＮＡ）は図６の第１の復号処理（ステップ（２））である。
【００８１】
次に、本実施の形態に係る第２再暗号化処理を図１７を用いて説明する。
【００８２】
まず、第２情報処理装置９の例えば暗号処理部９７は、ユーザＡの公開鍵（ｇ，ＮＡ，ｈＡ＝ｇxA（ｍｏｄ  ＮＡ））を例えばユーザＡのユーザ装置３などから、ユーザＢの公開鍵（ＮＢ，ｈＢ）を例えばユーザＢのユーザ装置５などから取得し、第３データ格納部９４に格納する（ステップＳ１０１）。このステップについては、前もって行っておく場合もある。また、取得元の装置については、他のサーバであっても良い。
【００８３】
そして、暗号処理部９７は、第１中間データΠ1、第２の部分鍵ｘＡ２及びユーザＡの公開鍵から、Π1a＝Π1xA2  （ｍｏｄ  ＮＡ）を算出する（ステップＳ１０３）。これによって、Π1a＝ｇxA*r（ｍｏｄ  ＮＡ）＝ｈＡr（ｍｏｄ  ＮＡ）が得られたことになる。なお、ｈＡ＝ｇxA（ｍｏｄ  ＮＡ）。すなわち、第２の復号化処理（ステップ（４））が実行されたことになる。
【００８４】
さらに、暗号処理部９７は、Π1aとユーザＡの公開鍵ＮＡと第１の中間データΠ2とから、ξa＝Π2／Π1a  （ｍｏｄ  ＮＡ）を算出する（ステップＳ１０５）。これによって、マスク化されたデータξa＝ｓ・ｍ（ｍｏｄ  ＮＡ）が得られたことになる。
【００８５】
また、乱数生成部９８は、乱数ｔを生成して、第５データ格納部９９に格納する（ステップＳ１０７）。そして、暗号処理部９７は、乱数ｔとユーザＡの公開鍵ｇとユーザＢの公開鍵ＮＢとを用いて、第２中間データとして、ξ1a＝ｇt（ｍｏｄ  ＮＢ）を算出し、第４データ格納部９５に格納する（ステップＳ１０９）。
【００８６】
さらに、暗号処理部９７は、ユーザＢの公開鍵（ＮＢ，ｈＢ）と乱数ｔとマスク化されたデータξaとを用いて、ユーザＢ向けに暗号化され且つ乱数ｒにてマスク化されたデータとして、ξ2a＝ξa・ｈＢt （ｍｏｄ  ＮＢ）を算出し、第４データ格納部９５に格納する（ステップＳ１１１）。そして処理は呼出元の処理に戻る。
【００８７】
このように、ξ1a及びξ2aが、ユーザＢ向けに暗号化され且つマスク化されたデータとして生成される。
【００８８】
次に、本実施の形態に係る第３再暗号化処理を図１８を用いて説明する。
【００８９】
第１情報処理装置７の例えば第２暗号処理部７９は、ユーザＢの公開鍵（ｇ，ＮＢ，ｈＢ）をユーザＢのユーザ装置５等から取得し、第５データ格納部７８に格納する（ステップＳ１２１）。このステップについては予め実施しておく場合もある。また、取得元は他のサーバ等の場合もある。
【００９０】
さらに、第２暗号処理部７９は、乱数ｓとユーザＢの公開鍵と第２中間データξ2aとを用いて、ユーザＢ向けに再暗号化されたデータξ2＝ξ2a／ｓ（ｍｏｄ  ＮＢ）を算出し、ξ1aと共に、第７データ格納部８２に格納する（ステップＳ１２３）。ｓで除しているのは、平文ｍがべき数の基数として用いられているためである。そして処理は呼出元の処理に戻る。
【００９１】
すなわち、ξ2＝ｓ＊ｍ＊ｈＢt／ｓ＝ｍ＊ｈＢt  （ｍｏｄ  ＮＢ）（即ち図６のデータ１５７）となり、平文ｍがユーザＢの公開鍵で暗号化された状態になる。
【００９２】
次に、本実施の形態に係る復号化処理について図１９を用いて説明する。
【００９３】
暗号処理部５５は、第２データ格納部５７に格納されているユーザＢの秘密鍵ｘＢ及び公開鍵（ｇ，ＮＢ，ｈＢ＝ｇxB）を読み出す（ステップＳ１３１）。そして、暗号処理部５５は、ユーザＢの秘密鍵ｘＢ及び公開鍵（ｇ，ＮＢ，ｈＢ）と再暗号化データξ1a及びξ2を用いて、平文ｍ＝ξ2／ξ1axB  （ｍｏｄ  ＮＢ）を算出し、第３データ格納部５９に格納する（ステップＳ１３３）。
【００９４】
ξ2／ξ1a2＝ｍ＊ｈＢt／ｇt*xB＝ｍ＊ｈＢt／ｈＢt＝ｍ（ｍｏｄＮＢ）によって、平文ｍが得られる。
【００９５】
この後、例えば暗号処理部５５又は他のアプリケーションなどが、平文ｍを出力する（ステップＳ１３５）。そして処理を終了する。
【００９６】
このように、平文ｍを露出することなく、ユーザＢでも復号できるような再暗号化が実施されるようになる。なお、平文ｍはユーザＡの公開鍵で暗号化されており、平文ｍはユーザＢの秘密鍵で復号化されており、ユーザ装置は、鍵の分割処理を行うモジュール以外は、通常のモジュールで実施可能である。
【００９７】
［実施の形態３］
次に、Modified ElGamal暗号を採用した場合の処理について説明する。なお、システム全体の構成については第１の実施の形態と同様である。但し、第２の実施の形態と同様に、サービスＢについての第２情報処理装置９の構成は、図１４に示すように変更される。
【００９８】
図６及び図７に示した処理は、本実施の形態でも同様である。よって、以下、本実施の形態に係る秘密鍵分割処理、第１再暗号化処理、第２再暗号化処理、第３再暗号化処理、復号化処理の詳細について説明する。
【００９９】
最初に、本実施の形態に係る秘密鍵分割処理について図２０を用いて説明する。
【０１００】
まず、分割処理部３３は、ユーザＡの秘密鍵ｘＡ及び公開鍵（ｇ，ｘＡ，ｈＡ＝ｇxA  （ｍｏｄ  ＮＡ））を、第１データ格納部３１から読み出す（図２０：ステップＳ１４１）。なお、乱数ｒ及び平文ｍに対して、ユーザＡ向けの暗号化データは、Ｃ（Ｃ１＝ｇr ｍｏｄ  ＮＡ，Ｃ２＝ｇm・ｈＡr  ｍｏｄ  ＮＡ）であり、第１情報処理装置７の第３データ格納部７４に格納されている。なお、ｒ及びｒ・ｍ＜ＮＡ及びＮＢである。
【０１０１】
そして、分割処理部３３は、ｘＡ＝ｘＡ１・ｘＡ２（ｍｏｄ  ＮＡ）となる第１の部分鍵ｘＡ１及び第２の部分鍵ｘＡ２を選択し、第２データ格納部３５に格納する（ステップＳ１４３）。
【０１０２】
このようにして秘密鍵を２つの部分鍵に分割することができる。
【０１０３】
次に、本実施の形態に係る第１再暗号化処理を図２１を用いて説明する。
【０１０４】
まず、第１情報処理装置７の例えば第１暗号処理部７３は、ユーザＡの公開鍵（ｇ，ＮＡ，ｈＡ＝ｇxA （ｍｏｄ  ＮＡ））を、ユーザＡのユーザ装置３から又は他のサーバ等から取得し、第５データ格納部７８に格納する（ステップＳ１５１）。なお、このステップは、前もって行っておく場合もある。
【０１０５】
さらに、乱数生成部７５は、乱数ｓを生成し、第４データ格納部７６に格納する（ステップＳ１５３）。
【０１０６】
また、第１暗号処理部７３は、ユーザの公開鍵（ＮＡ）と第１の部分鍵ｘＡ１と暗号化されたデータＣ１とを用いて、第１中間データとして、Π1＝Ｃ１xA1  （ｍｏｄ  ＮＡ）を算出し、第６データ格納部８１に格納する（ステップＳ１５５）。これによって、Ｃ１について第１の部分鍵ｘＡ１で部分的な復号が行われたことになる。
【０１０７】
また、第１暗号処理部７３は、暗号化されたデータＣ２と乱数ｓとユーザＡの公開鍵（ＮＡ）とを用いて、第１の中間データΠ2＝ｇs・Ｃ２（ｍｏｄ  ＮＡ）を算出し、第６データ格納部８１に格納する（ステップＳ１５７）。これによって、平文ｍが乱数ｓでマスクされたことになる。ｇs・ｇm・ｈＡr＝ｇs*m・ｈＡrとなるため、平文ｍがｓでマスクされる。そして処理は、呼出元の処理に戻る。
【０１０８】
なお、Π2＝ｇs・Ｃ２（ｍｏｄ  ＮＡ）は図６のマスク処理（ステップ（１））であり、Π1＝Ｃ１xA1  （ｍｏｄ  ＮＡ）により図６の第１の復号処理（ステップ（２））である。
【０１０９】
次に、本実施の形態に係る第２再暗号化処理を図２２を用いて説明する。
【０１１０】
まず、第２情報処理装置９の例えば暗号処理部９７は、ユーザＡの公開鍵（ｇ，ＮＡ，ｈＡ＝ｇxA（ｍｏｄ  ＮＡ））を例えばユーザＡのユーザ装置３などから、ユーザＢの公開鍵（ＮＢ，ｈＢ＝ｇxB（ｍｏｄ  ＮＢ））を例えばユーザＢのユーザ装置５などから取得し、第３データ格納部９４に格納する（ステップＳ１６１）。このステップについては、前もって行っておく場合もある。また、取得元の装置については、他のサーバであっても良い。
【０１１１】
そして、暗号処理部９７は、第１中間データΠ1、第２の部分鍵ｘＡ２及びユーザＡの公開鍵から、Π1a＝Π1xA2  （ｍｏｄ  ＮＡ）を算出する（ステップＳ１６３）。これによって、Π1a＝ｇxA×r（ｍｏｄ  ＮＡ）＝ｈＡr（ｍｏｄ  ＮＡ）が得られたことになる。なお、ｈＡ＝ｇxA（ｍｏｄ  ＮＡ）。すなわち、第２の復号化処理（ステップ（４））が実行されたことになる。
【０１１２】
さらに、暗号処理部９７は、Π1aとユーザＡの公開鍵ＮＡと第１の中間データΠ2とから、ξa＝Π2／Π1a  （ｍｏｄ  ＮＡ）を算出する（ステップＳ１６５）。これによって、マスク化されたデータξa＝ｇs*m（ｍｏｄ  ＮＡ）が得られたことになる。
【０１１３】
また、乱数生成部９８は、乱数ｔを生成して、第５データ格納部９９に格納する（ステップＳ１６７）。そして、暗号処理部７９は、乱数ｔとユーザＡの公開鍵ｇとユーザＢの公開鍵ＮＢとを用いて、第２中間データとして、ξ1a＝ｇt（ｍｏｄ  ＮＢ）を算出し、第４データ格納部９５に格納する（ステップＳ１６９）。
【０１１４】
さらに、暗号処理部９７は、ユーザＢの公開鍵（ＮＢ，ｈＢ）と乱数ｔとマスク化されたデータξaとを用いて、ユーザＢ向けに暗号化され且つ乱数ｒにてマスク化されたデータとして、ξ2a＝ξa・ｈＢt （ｍｏｄ  ＮＢ）を算出し、第４データ格納部９５に格納する（ステップＳ１７１）。そして処理は呼出元の処理に戻る。
【０１１５】
このように、ξ1a及びξ2aが、ユーザＢ向けに暗号化され且つマスク化されたデータとして生成される。
【０１１６】
次に、本実施の形態に係る第３再暗号化処理を図２３を用いて説明する。
【０１１７】
第１情報処理装置７の例えば第２暗号処理部７９は、ユーザＢの公開鍵（ｇ，ＮＢ，ｈＢ）をユーザＢのユーザ装置５等から取得し、第５データ格納部７８に格納する（ステップＳ１８１）。このステップについては予め実施しておく場合もある。また、取得元は他のサーバ等の場合もある。
【０１１８】
さらに、第２暗号処理部７９は、乱数ｓとユーザＢの公開鍵と第２中間データξ2aとを用いて、ユーザＢ向けに再暗号化されたデータξ2＝ｇ-s・ξ2a（ｍｏｄ  ＮＢ）を算出し、ξ1aと共に、第７データ格納部８２に格納する（ステップＳ１８３）。ｇ-sを乗じているのは、平文ｍと乱数ｓとの積がｇの指数部分となっているためである。そして処理は呼出元の処理に戻る。
【０１１９】
すなわち、ξ2＝ｇs*m*(1/s)・ｈＢt＝ｇm・ｈＢt  （ｍｏｄ  ＮＢ）（即ち図６のデータ１５７）となり、平文ｍがユーザＢの公開鍵で暗号化された状態になる。
【０１２０】
次に、本実施の形態に係る復号化処理について図２４を用いて説明する。
【０１２１】
暗号処理部５５は、第２データ格納部５７に格納されているユーザＢの秘密鍵ｘＢ及び公開鍵（ｇ，ＮＢ，ｈＢ＝ｇxB（ｍｏｄ  ＮＢ））を読み出す（ステップＳ１９１）。そして、暗号処理部５５は、ユーザＢの秘密鍵ｘＢ及び公開鍵（ｇ，ＮＢ，ｈＢ）と再暗号化データξ1a及びξ2を用いて、ｇm＝ξ2／ξ1axB  （ｍｏｄ  ＮＢ）を満たすｍを算出し、第３データ格納部５９に格納する（ステップＳ１９３）。例えば、Baby-Step-Giant-Step法を用いて平文ｍを生成する。
【０１２２】
この後、例えば暗号処理部５５又は他のアプリケーションなどが、平文ｍを出力する（ステップＳ１９５）。そして処理を終了する。
【０１２３】
このように、平文ｍを露出することなく、ユーザＢでも復号できるような再暗号化が実施されるようになる。なお、平文ｍはユーザＡの公開鍵で暗号化されており、平文ｍはユーザＢの秘密鍵で復号化されており、ユーザ装置は、鍵の分割処理を行うモジュール以外は、通常のモジュールで実施可能である。
【０１２４】
なお、上で述べたように取り扱うことができる平文ｍのサイズは少なくなるが、これについては以下に述べるような方式を採用すれば全く影響がない。すなわち、図２５に示すように、ユーザＡのユーザ装置３において、平文５００を共通鍵暗号方式における共通鍵５１０で暗号化し、ユーザＡの公開鍵５２０で共通鍵５１０を暗号化して暗号化鍵５１１を生成し、ユーザＢに渡す。また、ユーザＡのユーザ装置３は、暗号化鍵５１１の再暗号化を本実施の形態に係るシステム（第１情報処理装置７及び第２情報処理装置９）に行わせると、ユーザＢの公開鍵５３０で暗号化された共通鍵５１０である暗号化鍵５１２が生成される。暗号化鍵５１２は、ユーザＢのユーザ装置５において、ユーザＢの秘密鍵５３５で復号されると、共通鍵５１０が得られる。そうすると共通鍵５１０で暗号化された平文５００は、得られた共通鍵５１０で復号できる。
【０１２５】
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、各装置の機能ブロック図については一例であって、必ずしも実際のプログラムモジュール構成やファイル構成と一致しない場合もある。すなわち、データ格納部は複数用いても良いし、１つに統合するようにしても良い。
【０１２６】
さらに、処理フローについても、処理結果が変わらない限り、ステップの順番を入れ替えたり、ステップを並列実行するようにしても良い。
【０１２７】
さらに、各装置については、複数の装置により機能を分担する場合もある。
【０１２８】
なお、上で述べたユーザ装置３及び５、第１情報処理装置７及び第２情報処理装置９は、コンピュータ装置であって、図２６に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１２９】
以上述べた本実施の形態をまとめると、以下のようになる。
【０１３０】
本実施の形態の第１の態様に係る暗号処理方法は、（Ａ）第１のコンピュータが、第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、第１のデータ格納部に格納する処理と、（Ｂ）第１のコンピュータが、第１のデータ格納部に格納されており且つ第１のユーザの公開鍵にて暗号化された第１のデータに対して、第１のデータ格納部に格納されている第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、第１のデータ格納部に格納する処理と、（Ｃ）第１のコンピュータが、第１のデータ格納部に格納されている第２のデータを、第２のコンピュータに送信する処理とを含む。
【０１３１】
使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで、この後の処理で平文である第１のデータが露出することなく、再暗号化することができるようになる。
【０１３２】
本実施の形態の第１の態様に係る暗号処理方法は、（Ｄ）第２のコンピュータが、第１のユーザの第２の部分鍵を取得し、第２のデータ格納部に格納する処理と、（Ｅ）第２のコンピュータが、第１のコンピュータから、第２のデータを受信し、第２のデータ格納部に格納する処理と、（Ｆ）第２のコンピュータが、第２のデータ格納部に格納されている第２のデータに対して、第２のデータ格納部に格納されている第２の部分鍵で復号処理を実施する処理と、（Ｇ）第２のコンピュータが、復号処理がなされた第２のデータに対して、第２のユーザの公開鍵で暗号化処理を実施することで第３のデータを生成し、第２のデータ格納部に格納する処理と、（Ｈ）第２のコンピュータが、第２のデータ格納部に格納されている第３のデータを、第１のコンピュータに送信する処理とをさらに含むようにしても良い。
【０１３３】
このように第２のコンピュータにおいて復号処理がなされても平文である第１のデータが露出されることはない。
【０１３４】
さらに、本実施の形態の第１の態様に係る暗号処理方法は、（Ｉ）第１のコンピュータが、第２のコンピュータから第３のデータを受信し、第１のデータ格納部に格納する処理と、（Ｊ）第１のコンピュータが、第１のデータ格納部に格納されている第３のデータに対して、使用する暗号方式に従って乱数によるマスク解除処理を実施することで第２のユーザの公開鍵で暗号化された第１のデータを生成し、第１のデータ格納部に格納する処理とをさらに含むようにしても良い。
【０１３５】
本実施の形態の第２の態様に係るシステムは、第１のデータ格納部を有する第１のコンピュータと、第２のデータ格納部を有する第２のコンピュータとを有する。そして、第１のコンピュータは、（Ａ）第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、第１のデータ格納部に格納し、（Ｂ）第１のデータ格納部に格納されており且つ第１のユーザの公開鍵にて暗号化された第１のデータに対して、第１のデータ格納部に格納されている第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、第１のデータ格納部に格納し、（Ｃ）第１のデータ格納部に格納されている第２のデータを、第２のコンピュータに送信する。また、第２のコンピュータは、（Ｄ）第１のユーザの第２の部分鍵を取得し、第２のデータ格納部に格納する処理と、（Ｅ）第１のコンピュータから、第２のデータを受信し、前記第２のデータ格納部に格納し、（Ｆ）第２のデータ格納部に格納されている第２のデータに対して、第２のデータ格納部に格納されている第２の部分鍵で復号処理を実施し、（Ｇ）復号処理がなされた第２のデータに対して、第２のユーザの公開鍵で暗号化処理を実施することで第３のデータを生成し、第２のデータ格納部に格納し、（Ｈ）第２のデータ格納部に格納されている第３のデータを、第１のコンピュータに送信する。その後、第１のコンピュータは、（Ｉ）第２のコンピュータから第３のデータを受信し、第１のデータ格納部に格納し、（Ｊ）第１のデータ格納部に格納されている第３のデータに対して、上記使用する暗号方式に従って乱数によるマスク解除処理を実施することで第２のユーザの公開鍵で暗号化された第１のデータを生成し、第１のデータ格納部に格納する。
【０１３６】
このように第１の情報処理装置及び第２の情報処理装置が連携するが悪意を有して第１の部分鍵及び第２の部分鍵を持ち寄ることが無ければ、乱数によるマスクにより平文のデータが露出することなく、再暗号化が可能となる。
【０１３７】
本実施の形態の第３の態様に係る暗号処理方法は、（Ａ）第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、データ格納部に格納する処理と、（Ｂ）第１のデータ格納部に格納されており且つ第１のユーザの公開鍵にて暗号化された第１のデータに対して、第１のデータ格納部に格納されている第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、データ格納部に格納する処理と、（Ｃ）データ格納部に格納されている第２のデータを、他のコンピュータに送信する処理と、（Ｄ）第１のユーザの第２の部分鍵を取得した他のコンピュータから、第２のデータに対して第２の部分鍵で復号処理を実施し且つ第２のユーザの公開鍵で暗号化処理を実施することで生成した第３のデータを受信し、データ格納部に格納する処理と、（Ｅ）データ格納部に格納されている第３のデータに対して、上記使用する暗号方式に従って乱数によるマスク解除処理を実施することで第２のユーザの公開鍵で暗号化された第１のデータを生成し、データ格納部に格納する処理とを含む。
【０１３８】
さらに、本実施の形態の第４の態様に係る暗号処理方法は、（Ａ）第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、データ格納部に格納する処理と、（Ｂ）第１のデータ格納部に格納されており且つ第１のユーザの公開鍵にて暗号化された第１のデータに対して、第１のデータ格納部に格納されている第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、データ格納部に格納する処理と、（Ｃ）データ格納部に格納されている第２のデータを、他のコンピュータに送信する処理と、（Ｄ）第１のユーザの第２の部分鍵を取得した他のコンピュータから、第２のデータに対して第２の部分鍵で復号処理を実施し且つ第２のユーザの公開鍵で暗号化処理を実施することで生成した第３のデータを受信し、データ格納部に格納する処理と、（Ｅ）データ格納部に格納されている第３のデータに対して、使用する暗号方式に従って乱数によるマスク解除処理を実施することで第２のユーザの公開鍵で暗号化された第１のデータを生成し、データ格納部に格納する処理とを含む。
【０１３９】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。
【０１４０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１４１】
（付記１）
第１のコンピュータが、第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、第１のデータ格納部に格納する処理と、
前記第１のコンピュータが、前記第１のデータ格納部に格納されており且つ前記第１のユーザの公開鍵にて暗号化された第１のデータに対して、前記第１のデータ格納部に格納されている前記第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、前記第１のデータ格納部に格納する処理と、
前記第１のコンピュータが、前記第１のデータ格納部に格納されている前記第２のデータを、第２のコンピュータに送信する処理と、
を含む暗号処理方法。
【０１４２】
（付記２）
第２のコンピュータが、前記第１のユーザの第２の部分鍵を取得し、第２のデータ格納部に格納する処理と、
前記第２のコンピュータが、前記第１のコンピュータから、前記第２のデータを受信し、前記第２のデータ格納部に格納する処理と、
前記第２のコンピュータが、前記第２のデータ格納部に格納されている前記第２のデータに対して、前記第２のデータ格納部に格納されている前記第２の部分鍵で復号処理を実施する処理と、
前記第２のコンピュータが、前記復号処理がなされた前記第２のデータに対して、第２のユーザの公開鍵で暗号化処理を実施することで第３のデータを生成し、前記第２のデータ格納部に格納する処理と、
前記第２のコンピュータが、前記第２のデータ格納部に格納されている前記第３のデータを、前記第１のコンピュータに送信する処理と、
をさらに含む付記１記載の暗号処理方法。
【０１４３】
（付記３）
前記第１のコンピュータが、前記第２のコンピュータから前記第３のデータを受信し、前記第１のデータ格納部に格納する処理と、
前記第１のコンピュータが、前記第１のデータ格納部に格納されている前記第３のデータに対して、前記使用する暗号方式に従って前記乱数によるマスク解除処理を実施することで前記第２のユーザの公開鍵で暗号化された前記第１のデータを生成し、前記第１のデータ格納部に格納する処理と、
をさらに含む付記２記載の暗号処理方法。
【０１４４】
（付記４）
第１のデータ格納部を有する第１のコンピュータと、
第２のデータ格納部を有する第２のコンピュータと、
を有し、
前記第１のコンピュータが、
第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、前記第１のデータ格納部に格納し、
前記第１のデータ格納部に格納されており且つ前記第１のユーザの公開鍵にて暗号化された第１のデータに対して、前記第１のデータ格納部に格納されている前記第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、前記第１のデータ格納部に格納し、
前記第１のデータ格納部に格納されている前記第２のデータを、前記第２のコンピュータに送信し、
前記第２のコンピュータが、
前記第１のユーザの第２の部分鍵を取得し、第２のデータ格納部に格納する処理と、
前記第１のコンピュータから、前記第２のデータを受信し、前記第２のデータ格納部に格納し、
前記第２のデータ格納部に格納されている前記第２のデータに対して、前記第２のデータ格納部に格納されている前記第２の部分鍵で復号処理を実施し、
前記復号処理がなされた前記第２のデータに対して、第２のユーザの公開鍵で暗号化処理を実施することで第３のデータを生成し、前記第２のデータ格納部に格納し、
前記第２のデータ格納部に格納されている前記第３のデータを、前記第１のコンピュータに送信し、
前記第１のコンピュータが、
前記第２のコンピュータから前記第３のデータを受信し、前記第１のデータ格納部に格納し、
前記第１のデータ格納部に格納されている前記第３のデータに対して、前記使用する暗号方式に従って前記乱数によるマスク解除処理を実施することで前記第２のユーザの公開鍵で暗号化された前記第１のデータを生成し、前記第１のデータ格納部に格納する
システム。
【０１４５】
（付記５）
第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、データ格納部に格納する処理と、
前記第１のデータ格納部に格納されており且つ前記第１のユーザの公開鍵にて暗号化された第１のデータに対して、前記第１のデータ格納部に格納されている前記第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第２のデータを、他のコンピュータに送信する処理と、
前記第１のユーザの第２の部分鍵を取得した前記他のコンピュータから、前記第２のデータに対して前記第２の部分鍵で復号処理を実施し且つ第２のユーザの公開鍵で暗号化処理を実施することで生成した第３のデータを受信し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第３のデータに対して、前記使用する暗号方式に従って前記乱数によるマスク解除処理を実施することで前記第２のユーザの公開鍵で暗号化された前記第１のデータを生成し、前記データ格納部に格納する処理と、
を含み、コンピュータにより実行される暗号処理方法。
【０１４６】
（付記６）
第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を取得し、データ格納部に格納する処理と、
前記第１のデータ格納部に格納されており且つ前記第１のユーザの公開鍵にて暗号化された第１のデータに対して、前記第１のデータ格納部に格納されている前記第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第２のデータを、他のコンピュータに送信する処理と、
前記第１のユーザの第２の部分鍵を取得した前記他のコンピュータから、前記第２のデータに対して前記第２の部分鍵で復号処理を実施し且つ第２のユーザの公開鍵で暗号化処理を実施することで生成した第３のデータを受信し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第３のデータに対して、前記使用する暗号方式に従って前記乱数によるマスク解除処理を実施することで前記第２のユーザの公開鍵で暗号化された前記第１のデータを生成し、前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
【０１４７】
（付記７）
第１のユーザの秘密鍵から得られる第１の部分鍵及び第２の部分鍵のうち第１の部分鍵を格納するデータ格納部と、
前記第１のデータ格納部に格納されており且つ前記第１のユーザの公開鍵にて暗号化された第１のデータに対して、前記第１のデータ格納部に格納されている前記第１の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第１のデータがマスクされるように乱数でマスク処理を実施することで第２のデータを生成し、前記データ格納部に格納する第１暗号処理部と、
前記データ格納部に格納されている前記第２のデータを、他のコンピュータに送信する送信部と、
前記第１のユーザの第２の部分鍵を取得した前記他のコンピュータから、前記第２のデータに対して前記第２の部分鍵で復号処理を実施し且つ第２のユーザの公開鍵で暗号化処理を実施することで生成した第３のデータを受信し、前記データ格納部に格納する受信部と、
前記データ格納部に格納されている前記第３のデータに対して、前記使用する暗号方式に従って前記乱数によるマスク解除処理を実施することで前記第２のユーザの公開鍵で暗号化された前記第１のデータを生成し、前記データ格納部に格納する第２暗号処理部と、
を有する情報処理装置。
【符号の説明】
【０１４８】
１  ネットワーク
３，５  ユーザ装置
７  第１情報処理装置
９  第２情報処理装置
【図１】
0005880173.tif 000002
【図２】
0005880173.tif 000003
【図３】
0005880173.tif 000004
【図４】
0005880173.tif 000005
【図５】
0005880173.tif 000006
【図６】
0005880173.tif 000007
【図７】
0005880173.tif 000008
【図８】
0005880173.tif 000009
【図９】
0005880173.tif 000010
【図１０】
0005880173.tif 000011
【図１１】
0005880173.tif 000012
【図１２】
0005880173.tif 000013
【図１３】
0005880173.tif 000014
【図１４】
0005880173.tif 000015
【図１５】
0005880173.tif 000016
【図１６】
0005880173.tif 000017
【図１７】
0005880173.tif 000018
【図１８】
0005880173.tif 000019
【図１９】
0005880173.tif 000020
【図２０】
0005880173.tif 000021
【図２１】
0005880173.tif 000022
【図２２】
0005880173.tif 000023
【図２３】
0005880173.tif 000024
【図２４】
0005880173.tif 000025
【図２５】
0005880173.tif 000026
【図２６】
0005880173.tif 000027