JP5880173B2 - 暗号処理方法、システム及び情報処理装置 - Google Patents

暗号処理方法、システム及び情報処理装置 Download PDF

Info

Publication number
JP5880173B2
JP5880173B2 JP2012058183A JP2012058183A JP5880173B2 JP 5880173 B2 JP5880173 B2 JP 5880173B2 JP 2012058183 A JP2012058183 A JP 2012058183A JP 2012058183 A JP2012058183 A JP 2012058183A JP 5880173 B2 JP5880173 B2 JP 5880173B2
Authority
JP
Japan
Prior art keywords
data
storage unit
data storage
user
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012058183A
Other languages
English (en)
Other versions
JP2013192129A (ja
Inventor
芽生恵 牛田
芽生恵 牛田
伊豆 哲也
哲也 伊豆
郁也 森川
郁也 森川
武仲 正彦
正彦 武仲
津田 宏
宏 津田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012058183A priority Critical patent/JP5880173B2/ja
Publication of JP2013192129A publication Critical patent/JP2013192129A/ja
Application granted granted Critical
Publication of JP5880173B2 publication Critical patent/JP5880173B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本技術は、第1のユーザのための暗号化データを第2のユーザのための暗号化データに変換する技術に関する。
再暗号化とは、ユーザAが復号可能なように暗号化されたデータを、ユーザBが復号できるように暗号文を変換する技術である。
クラウド上で機密データを保管する際には、データの暗号化が行われる。また、クラウド上で、機密データを複数のユーザで共有するサービスを提供する場合には、データを暗号化しつつ複数のメンバでデータを共有することになる。このような場合に公開鍵暗号方式を採用するならば、秘密鍵を複数のメンバで共有したり、複数のメンバの各々につき公開鍵で暗号化したり、クラウド上で再暗号化することになる。最初の2つの方法では、秘密鍵の管理の問題、処理負荷の問題などから採用は難しい。
一方、再暗号化を行う場合でも、ユーザAの秘密鍵をクラウドに預けたり、クラウド上で平文のデータが露出してしまうといった問題がある。このため特殊な暗号方式を用いる例もあるが、各ユーザがこの特殊な暗号方式で暗号化及び復号化するためのモジュールを用意することになる。
なお、暗号技術を様々な分野で利用する際に、秘密鍵を分割したり、鍵を切り替えたり、暗号方式を切り替えたり、乱数と組み合わせたりするような処理を実施する場合がある。しかし、秘匿化すべきデータの平文を露出させずに再暗号化するような技術は存在していない。
特開2002−305512号公報 特開2000−207483号公報
従って、本技術の目的は、一側面では、秘匿化すべきデータの平文を露出させずに再暗号化するための技術を提供することである。
本技術の第1の態様に係る暗号処理方法は、(A)第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、データ格納部に格納する処理と、(B)第1のデータ格納部に格納されており且つ第1のユーザの公開鍵にて暗号化された第1のデータに対して、第1のデータ格納部に格納されている第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、データ格納部に格納する処理と、(C)データ格納部に格納されている第2のデータを、他のコンピュータに送信する処理と、(D)第1のユーザの第2の部分鍵を取得した他のコンピュータから、第2のデータに対して第2の部分鍵で復号処理を実施し且つ第2のユーザの公開鍵で暗号化処理を実施することで生成した第3のデータを受信し、データ格納部に格納する処理と、(E)データ格納部に格納されている第3のデータに対して、上記使用する暗号方式に従って乱数によるマスク解除処理を実施することで第2のユーザの公開鍵で暗号化された第1のデータを生成し、データ格納部に格納する処理とを含む。
本技術の第2の態様に係るシステムは、第1のデータ格納部を有する第1のコンピュータと、第2のデータ格納部を有する第2のコンピュータとを有する。そして、第1のコンピュータは、(A)第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、第1のデータ格納部に格納し、(B)第1のデータ格納部に格納されており且つ第1のユーザの公開鍵にて暗号化された第1のデータに対して、第1のデータ格納部に格納されている第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、第1のデータ格納部に格納し、(C)第1のデータ格納部に格納されている第2のデータを、第2のコンピュータに送信する。また、第2のコンピュータは、(D)第1のユーザの第2の部分鍵を取得し、第2のデータ格納部に格納する処理と、(E)第1のコンピュータから、第2のデータを受信し、前記第2のデータ格納部に格納し、(F)第2のデータ格納部に格納されている第2のデータに対して、第2のデータ格納部に格納されている第2の部分鍵で復号処理を実施し、(G)復号処理がなされた第2のデータに対して、第2のユーザの公開鍵で暗号化処理を実施することで第3のデータを生成し、第2のデータ格納部に格納し、(H)第2のデータ格納部に格納されている第3のデータを、第1のコンピュータに送信する。その後、第1のコンピュータは、(I)第2のコンピュータから第3のデータを受信し、第1のデータ格納部に格納し、(J)第1のデータ格納部に格納されている第3のデータに対して、上記使用する暗号方式に従って乱数によるマスク解除処理を実施することで第2のユーザの公開鍵で暗号化された第1のデータを生成し、第1のデータ格納部に格納する。
秘匿化すべきデータの平文を露出させずに再暗号化できるようになる。
図1は、第1の実施の形態に係るシステムの概要を示す図である。 図2は、ユーザAのユーザ装置の構成例を示す図である。 図3は、ユーザBのユーザ装置の構成例を示す図である。 図4は、第1情報処理装置の機能ブロック図である。 図5は、第1の実施の形態に係る第2情報処理装置の機能ブロック図である。 図6は、システムの処理の概要を示す図である。 図7は、システムの処理の全体フローを示す図である。 図8は、第1の実施の形態における秘密鍵分割処理の処理フローを示す図である。 図9は、第1の実施の形態における再暗号化処理の処理フローを示す図である。 図10は、第1の実施の形態における第2再暗号化処理の処理フローを示す図である。 図11は、第1の実施の形態における第3再暗号化処理の処理フローを示す図である。 図12は、第1の実施の形態における復号化処理の処理フローを示す図である。 図13は、第1の実施の形態における数値例を示す図である。 図14は、第2の実施の形態における第2情報処理装置の機能ブロック図である。 図15は、第2の実施の形態における秘密鍵分割処理の処理フローを示す図である。 図16は、第2の実施の形態における第1再暗号化処理の処理フローを示す図である。 図17は、第2の実施の形態における第2再暗号化処理の処理フローを示す図である。 図18は、第2の実施の形態における第3再暗号化処理の処理フローを示す図である。 図19は、第2の実施の形態における復号化処理の処理フローを示す図である。 図20は、第3の実施の形態における秘密鍵分割処理の処理フローを示す図である。 図21は、第3の実施の形態における第1再暗号化処理の処理フローを示す図である。 図22は、第3の実施の形態における第2再暗号化処理の処理フローを示す図である。 図23は、第3の実施の形態における第3再暗号化処理の処理フローを示す図である。 図24は、第3の実施の形態における復号化処理の処理フローを示す図である。 図25は、共通鍵を用いた場合について説明する図である。 図26は、コンピュータの機能ブロック図である。
[実施の形態1]
本実施の形態に係るシステムの概要を図1に示す。図1の例では、インターネット1などのネットワークに、ユーザAが用いるユーザ装置3と、ユーザBが用いるユーザ装置5と、例えばクラウドAなどのサービスAで用いられる第1情報処理装置7と、クラウドAとは別のクラウドBなどのサービスBで用いられる第2情報処理装置9とが接続されている。
本実施の形態では、クラウドAの運営主体とクラウドBの運営主体とでは提携関係にはあるが、結託して秘密鍵を持ち寄るといった悪意を有することはないものとする。また、本実施の形態では、ユーザAがデータをクラウドAのサービスAに登録しておき、ユーザBとそのデータを共有する場面について説明する。
本実施の形態に係るユーザ装置3の構成例を図2に示す。ユーザAが用いるユーザ装置3は、第1データ格納部31と、分割処理部33と、第2データ格納部35と、送信部37とを有する。第1データ格納部31は、ユーザAの秘密鍵及び公開鍵を格納している。分割処理部33は、ユーザAの秘密鍵を分割する処理を実施し、生成された2つの部分鍵を第2データ格納部35に格納する。送信部37は、第1の部分鍵を第1情報処理装置7に送信し、第2の部分鍵を第2情報処理装置9に送信する。なお、各装置間の通信については、以下において直接触れられていない場合においても、何らかの暗号化処理が行われているものとする。
本実施の形態に係るユーザ装置5の構成例を図3に示す。ユーザBが用いるユーザ装置5は、通信部51と、第1データ格納部53と、暗号処理部55と、第2データ格納部57と、第3データ格納部59とを有する。通信部51は、第1情報処理装置7から、ユーザB用に暗号化されたデータを受信して、第1データ格納部53に格納する。第2データ格納部57は、ユーザBの秘密鍵及び公開鍵を格納している。暗号処理部55は、第1データ格納部53に格納されている暗号化データを、第2データ格納部57に格納されている秘密鍵で復号して、第3データ格納部59に格納する。
なお、ここではユーザ装置はユーザAのユーザ装置及びユーザBのユーザ装置とを区別しているが、実際のユーザ装置はユーザ装置3及び5の両方の機能を有する。暗号処理部55は、自身の公開鍵でデータを暗号化する場合もある。
本実施の形態に係る第1情報処理装置7の構成例を図4に示す。第1情報処理装置7は、受信部71と、第1データ格納部72と、第1暗号処理部73と、第3データ格納部74と、乱数生成部75と、第4データ格納部76と、第2データ格納部77と、第5データ格納部78と、第2暗号処理部79と、第6データ格納部81と、第7データ格納部82と、送信部83とを有する。受信部71は、第1の部分鍵を受信すると、第1データ格納部72に格納する。第3データ格納部74には、ユーザAの公開鍵で暗号化されたデータが格納されている。乱数生成部75は、乱数を生成させて、第4データ格納部76に格納する。第5データ格納部78は、ユーザAの公開鍵及びユーザBの公開鍵を格納している。
第1暗号処理部73は、第3データ格納部74に格納されている暗号化データに対して、第1データ格納部72に格納されている第1の部分鍵と第4データ格納部76に格納されている乱数と第5データ格納部78に格納されているユーザAの公開鍵とを用いて処理を行い、処理結果を第6データ格納部81に格納する。送信部83は、第6データ格納部81に格納されているデータを、第2情報処理装置9に送信する。
また、受信部71は、第2情報処理装置9からデータを受信すると、第2データ格納部77に格納する。第2暗号処理部79は、第2データ格納部77に格納されているデータに対して、第4データ格納部76に格納されている乱数と第5データ格納部78に格納されているユーザBの公開鍵とを用いて処理を行い、処理結果を第7データ格納部82に格納する。送信部83は、ユーザ装置5からの要求に応じて、第7データ格納部82に格納されているデータを、ユーザ装置5に送信する。
本実施の形態に係る第2情報処理装置9の構成例を図5に示す。第2情報処理装置9は、受信部91と、第1データ格納部92と、第2データ格納部93と、暗号処理部97と、第3データ格納部94と、第4データ格納部95と、送信部96とを有する。
受信部91は、ユーザ装置3から第2の部分鍵を受信し、第1データ格納部92に格納する。また、受信部91は、第1情報処理装置7からデータを受信すると、第2データ格納部93に格納する。第3データ格納部94は、ユーザAの公開鍵及びユーザBの公開鍵を格納している。暗号処理部97は、第2データ格納部93に格納されているデータに対して、第1データ格納部92に格納されている第2の部分鍵と第3データ格納部94に格納されているユーザA及びBの公開鍵とを用いて処理を行い、処理結果を第4データ格納部95に格納する。そして、送信部96は、第4データ格納部95に格納されているデータを、第1情報処理装置7に送信する。
まず、処理の概要を図6を用いて説明する。ここではユーザAの公開鍵で暗号化したデータを、ユーザBが復号できる暗号化データに再暗号化する際の処理を示す。
ユーザAのユーザ装置3では、ユーザAの秘密鍵101を、第1の部分鍵102と、第2の部分鍵103とに分割する。そして、第1の部分鍵102については、サービスAについての第1情報処理装置7に送付し、第2の部分鍵103については、サービスBについての第2情報処理装置9に送付する。
なお、ユーザAの公開鍵で暗号化されたデータ151は、第1の部分鍵102と第2の部分鍵103との組み合わせで復号できる。従って、あたかも第1の部分鍵102の公開鍵と第2の部分鍵103の公開鍵とで暗号化されているデータ152のように扱うことができる。
そして、サービスAについての第1情報処理装置7は、ユーザAの公開鍵で暗号化されたデータ151(即ちデータ152)に対して、使用する暗号方式に従って平文のデータについて乱数でマスク化されるようにマスク化処理を実施する(ステップ(1))。これによって暗号化され且つ乱数でマスク化されたデータ153が生成される。また、第1情報処理装置7は、データ153に対して、ユーザAから受信した第1の部分鍵102で第1の復号化処理を実施する(ステップ(2))。そうすると、第2の部分鍵103だけで復号される暗号化状態であり且つ乱数でマスク化されたデータ154が生成される。第1情報処理装置7は、このデータ154を、サービスBについての第2情報処理装置9に送信する(ステップ(3))。
そして、第2情報処理装置9は、データ154に対して、ユーザAから取得した第2の部分鍵103で第2の復号化処理を実施する(ステップ(4))。そうすると、乱数でマスク化されたデータ155が生成される。このように、ユーザAの公開鍵で暗号化された状態から復号されても、乱数でマスク化されているので第2情報処理装置9においても平文のデータは露出しない。その後、第2情報処理装置9は、データ155に対して、ユーザBの公開鍵で暗号化処理を実施する(ステップ(5))。これによって、ユーザBの公開鍵で暗号化され且つマスク化されたデータ156が生成される。第2情報処理装置9は、データ156を第1情報処理装置7に送信する(ステップ(6))。
第1情報処理装置7は、データ156を受信すると、このデータ156に対して、乱数でマスク解除処理を実施する(ステップ(7))。これによって、ユーザBの公開鍵で暗号化されたデータ157が生成される。このデータ157は、ユーザBの秘密鍵で復号可能である。このように第1情報処理装置7でも、平文のデータが露出することはない。
ユーザBのユーザ装置5は、平文のデータを用いる場合には、ユーザBの公開鍵で暗号化されたデータ157を、サービスAの第1情報処理装置7から取得して、当該データ157に対して自身の秘密鍵で復号処理を実施する(ステップ(8))。このようにすれば、平文のデータ158が生成されるので、ユーザBは平文のデータ158を利用できるようになる。
このように、平文のデータを露出させることなく再暗号化できるため、クラウドなどのサービスにおいてデータを秘匿しつつ複数のユーザで共有できるようになる。
次に、本実施の形態の具体的な処理内容について図7乃至図12を用いて説明する。なお、本実施の形態では、RSA(Rivest Shamir Adleman)暗号方式を用いる。
まず、ユーザAのユーザ装置3の分割処理部33は、第1データ格納部31に格納されているデータを用いて、秘密鍵分割処理を実施する(図7:ステップS1)。この秘密鍵分割処理については、図8を用いて説明する。
まず、分割処理部33は、ユーザAの秘密鍵dA及び公開鍵(NA,eA)を、第1データ格納部31から読み出す(図8:ステップS31)。なお、平文mに対してΨ=meA(mod NA)が、第1情報処理装置7の第3データ格納部74に格納されている。
そして、分割処理部33は、NA=pA*qA(mod NA)に対して、1<dA1<(pA−1)(qA−1)且つ(pA−1)(qA−1)と互いに素となる第1の部分鍵dA1を選択し、第2データ格納部35に格納する(ステップS33)。また、分割処理部33は、拡張ユークリッドの互除法を用いてdA1*dA1a=1 (mod (pA−1)(qA−1))となるdA1aを算出する(ステップS35)。
そして、分割処理部33は、第2の部分鍵dA2=dA*dA1a (mod (pA−1)(qA−1))を算出し、第2データ格納部35に格納する(ステップS37)。
このようにして秘密鍵を2つの部分鍵に分割することができる。
図7の処理の説明に戻って、ユーザAのユーザ装置3の送信部37は、第1の部分鍵を第1情報処理装置7に送信する(ステップS3)。第1情報処理装置7の受信部71は、ユーザ装置3から、第1の部分鍵を受信すると、第1データ格納部72に格納する(ステップS5)。また、ユーザ装置3の送信部37は、第2の部分鍵を第2情報処理装置9に送信する(ステップS7)。第2情報処理装置9の受信部91は、ユーザ装置3から第2の部分鍵を受信し、第1データ格納部92に格納する(ステップS9)。
その後、第1情報処理装置7は、第1再暗号化処理を実施する(ステップS11)。この処理については、図9を用いて説明する。
まず、第1情報処理装置7の例えば第1暗号処理部73は、ユーザAの公開鍵(NA,eA)を、ユーザAのユーザ装置3から又は他のサーバ等から取得し、第5データ格納部78に格納する(ステップS41)。なお、このステップは、前もって行っておく場合もある。
さらに、乱数生成部75は、乱数rを生成し、第4データ格納部76に格納する(ステップS43)。本実施の形態では、r及びrと平文データmとの積は、NA(及びユーザBの公開鍵NB)以下という要件が課されている。
また、第1暗号処理部73は、ユーザの公開鍵(NA,eA)及び第1の部分鍵dA1を用いて、第1中間データとして、Π1=(reA*Ψ)dA1 (mod NA)を算出し、第6データ格納部81に格納する(ステップS45)。そして呼出元の処理に戻る。
Ψ=meA (mod NA)であり、Ψは、ユーザAの公開鍵で暗号化されたデータ151である。なお、reAをΨに乗ずることで{r*m}eAとなるので、平文mがrでマスクされることになる。
なお、reA*Ψ (mod NA)は図6のマスク処理(ステップ(1))であり、(reA*Ψ)dA1 (mod NA)は図6の第1の復号処理(ステップ(2))である。但し、{reAdA1 (mod NA)とΨdA1 (mod NA)を算出して、これらを乗ずるようにしても良い。
図7の処理の説明に戻って、第1情報処理装置7の送信部83は、第6データ格納部81に格納されている第1中間データΠ1(図6のデータ154)を、サービスBについての第2情報処理装置9に送信する(ステップS13)。第2情報処理装置9の受信部91は、第1中間データΠ1を受信して第2データ格納部93に格納する(ステップS15)。そして、暗号処理部97は、第2再暗号化処理を実施する(ステップS17)。第2再暗号化処理については、図10を用いて説明する。
まず、第2情報処理装置9の例えば暗号処理部97は、ユーザAの公開鍵(NA,eA)を例えばユーザAのユーザ装置3などから、ユーザBの公開鍵(NB,eB)を例えばユーザBのユーザ装置5などから取得し、第3データ格納部94に格納する(ステップS51)。このステップについては、前もって行っておく場合もある。また、取得元の装置については、他のサーバであっても良い。
そして、暗号処理部97は、第1中間データΠ1、第2の部分鍵dA2及びユーザAの公開鍵から、ξ1=Π1 dA2 (mod NA)を算出する(ステップS53)。これによって、{{r*m}eAdA1*dA2 (mod NA)を算出することになるので、マスク化されたデータ155としてr*m (mod NA)が得られたことになる。すなわち、第2の復号化処理(ステップ(4))が実行されたことになる。
その後、暗号処理部97は、マスク化されたデータξ1と、ユーザBの公開鍵を用いて、ユーザB向けに暗号化され且つ乱数rにてマスク化されたデータとして、ξ2=ξ1 eB (mod NB)を算出し、第4データ格納部95に格納する(ステップS55)。そして処理は呼出元の処理に戻る。
これによって、{r*m}eB (mod NB)が得られて、ユーザB向けに暗号化された状態になる。但し、マスク化されるので平文は得られない。
図7の処理の説明に戻って、第2情報処理装置9の送信部96は、第4データ格納部95に格納されている第2中間データξ2(すなわち図6のデータ156)を、第1情報処理装置7に送信する(ステップS19)。第1情報処理装置7の受信部71は、第2情報処理装置9から第2中間データξ2を受信し、第2データ格納部77に格納する(ステップS21)。そして、第1情報処理装置7の第2暗号処理部79は、第3再暗号化処理を実施する(ステップS23)。第3再暗号化処理については、図11を用いて説明する。
第1情報処理装置7の例えば第2暗号処理部79は、ユーザBの公開鍵(NB,eB)をユーザBのユーザ装置5等から取得し、第5データ格納部78に格納する(ステップS61)。このステップについては予め実施しておく場合もある。また、取得元は他のサーバ等の場合もある。
さらに、第2暗号処理部79は、乱数rとユーザBの公開鍵とを用いて、Π2 eB (mod NB)を算出する(ステップS63)。Π2はマスク解除のためのデータである。
そして、第2暗号処理部79は、第2中間データξ2とΠ2とユーザBの公開鍵とを用いて、ユーザB向けの再暗号化データとして、ξ=Π2 -1*ξ2 (mod NB)を算出し、第7データ格納部82に格納する(ステップS65)。そして処理は呼出元の処理に戻る。
ξ2={r*m}eB=reB*meB (mod NB)であるから、ξ2/Π2 (mod NB)によって、meB (mod NB)(即ち図6のデータ157)が得られる。すなわち、平文mがユーザBの公開鍵で暗号化されたことになる。
図7の説明に戻って、送信部83は、ユーザ装置5の要求又は何らかのイベントに応じて、第7データ格納部82に格納されている再暗号化データ(図6のデータ157)をユーザ装置5に送信する(ステップS25)。そして、ユーザ装置5の通信部51は、再暗号化データを受信し、第1データ格納部53に格納する(ステップS27)。そして、暗号処理部55は、復号化処理を実施する(ステップS29)。復号化処理については、図12を用いて説明する。
暗号処理部55は、第2データ格納部57に格納されているユーザBの秘密鍵dB及び公開鍵(NB,eB)を読み出す(ステップS71)。そして、暗号処理部55は、ユーザBの秘密鍵dB及び公開鍵(NB,eB)と再暗号化データξを用いて、平文m=ξdB (mod NB)を算出し、第3データ格納部59に格納する(ステップS73)。この後、例えば暗号処理部55又は他のアプリケーションなどが、平文mを出力する(ステップS75)。そして処理を終了する。
このように、平文mを露出することなく、ユーザBでも復号できるような再暗号化が実施されるようになる。なお、平文mはユーザAの公開鍵で暗号化されており、平文mはユーザBの秘密鍵で復号化されており、ユーザ装置は、鍵の分割処理を行うモジュール以外は、通常のモジュールで実施可能である。
ここで、上で述べた処理について数値を用いた具体例について説明する。例えば図13に示すような値が設定、生成又は選択されているものとする。なお、実際にはNA及びNBは1024ビット程度の値を用いて安全性を確保するが、ここでは説明の都合上小さな値を用いている。
このような場合、秘密鍵の分割は、LA=2184と互いに素な値(例えば1795,1801,1805,1811,1817,1819,1823...)のうち1つ選択する。例えばここではdA1=1805と設定する。また、dA1a*dA1 (mod LA)=1となるdA1aを算出する。ここでは、dA1a=1705が得られる。そうすると、以下のようにdA2が得られる。
dA2=dA1*dA1a (mod LA)=1805*1705 (mod 2184)=737
なお、dA1*dA2=1805*737(mod 2184)=1649=dAなので、正しく第1及び第2の部分鍵が得られている。
そうすると、暗号化データΨ=451241(mod 2279)である。そうすると、サービスAについての第1情報処理装置7において、ユーザA向けに暗号化され且つ乱数rでマスク化されたデータ153は、以下のように算出される。
451241*391241 (mod 2279)=17551241(mod2279)
そして第1復号化処理を行った後の第1中間データ154は、以下のように算出される。
Π1={(45*39)12411705(mod 2279)=17551241*1705(mod 2279)
サービスBについての第2情報処理装置9において、第2復号化処理を行うと、以下のような値が算出される。
{Π1dA2=17551241*1705*737(mod 2279)=1755
このようにr*m=1755がサービスBについての第2情報処理装置9において得られる。但し、第2情報処理装置9にはr=39が無いので、m=45は得られない。
さらに、このマスク化されたデータr*mをユーザBの公開鍵で暗号化する場合には、以下のような演算が行われる。
ξ2=17551427(mod 2419)
その後、サービスAについての第1情報処理装置7においては、マスク解除処理を以下のように実施する。
Π2=391427(mod 2419)
ξ=ξ2/Π2(mod NB)=(1755/39)1427(mod 2419)=451427(mod 2419)
このようなユーザB向けに暗号化されたデータξがユーザ装置5に送信されると、ユーザ装置5においては、以下のような演算が実施される。
m=ξdB(mod NB)=451427*1803(mod 2149)=45
このようにユーザBに正しい平文mが提示されるようになる。
[実施の形態2]
次に、ElGamal暗号を用いる場合について述べる。基本的なシステム構成は第1の実施の形態と同じである。但し、サービスBについての第2情報処理装置9の構成は、図14に示すように変更される。
本実施の形態に係る第2情報処理装置9の構成例を図14に示す。第2情報処理装置9は、受信部91と、第1データ格納部92と、第2データ格納部93と、暗号処理部97と、第3データ格納部94と、第4データ格納部95と、送信部96と、乱数生成部98と、第5データ格納部99とを有する。すなわち、乱数生成部98及び第5データ格納部99とが追加されている。
受信部91は、ユーザ装置3から第2の部分鍵を受信し、第1データ格納部92に格納する。また、受信部91は、第1情報処理装置7からデータを受信すると、第2データ格納部93に格納する。第3データ格納部94は、ユーザAの公開鍵及びユーザBの公開鍵を格納している。また、乱数生成部98は、乱数を生成して、第5データ格納部99に格納する。暗号処理部97は、第2データ格納部93に格納されているデータに対して、第1データ格納部92に格納されている第2の部分鍵と第3データ格納部94に格納されているユーザA及びBの公開鍵と第5データ格納部99に格納されている乱数とを用いて処理を行い、処理結果を第4データ格納部95に格納する。そして、送信部96は、第4データ格納部95に格納されているデータを、第1情報処理装置7に送信する。
図6及び図7に示した処理は、本実施の形態でも同様である。よって、以下、本実施の形態に係る秘密鍵分割処理、第1再暗号化処理、第2再暗号化処理、第3再暗号化処理、復号化処理の詳細について説明する。
最初に、本実施の形態に係る秘密鍵分割処理について図15を用いて説明する。
まず、分割処理部33は、ユーザAの秘密鍵xA及び公開鍵(g,NA,hA=gxA (mod NA))を、第1データ格納部31から読み出す(図15:ステップS81)。なお、乱数r及び平文mに対して、ユーザA向けの暗号化データは、C(C1=gr mod NA,C2=m・hAr mod NA)であり、第1情報処理装置7の第3データ格納部74に格納されている。なお、r及びr・m<NA及びNBである。
そして、分割処理部33は、xA=xA1・xA2(mod NA)となる第1の部分鍵xA1及び第2の部分鍵xA2を選択し、第2データ格納部35に格納する(ステップS83)。
このようにして秘密鍵を2つの部分鍵に分割することができる。
次に、本実施の形態に係る第1再暗号化処理を図16を用いて説明する。
まず、第1情報処理装置7の例えば第1暗号処理部73は、ユーザAの公開鍵(g,NA,hA=gxA (mod NA))を、ユーザAのユーザ装置3から又は他のサーバ等から取得し、第5データ格納部78に格納する(ステップS91)。なお、このステップは、前もって行っておく場合もある。
さらに、乱数生成部75は、乱数sを生成し、第4データ格納部76に格納する(ステップS93)。
また、第1暗号処理部73は、ユーザの公開鍵(NA)と第1の部分鍵xA1と暗号化されたデータC1とを用いて、第1中間データとして、Π1=C1xA1 (mod NA)を算出し、第6データ格納部81に格納する(ステップS95)。これによって、C1について第1の部分鍵xA1で部分的な復号が行われたことになる。
また、第1暗号処理部73は、暗号化されたデータC2と乱数sとユーザAの公開鍵(NA)とを用いて、第1の中間データΠ2=s・C2(mod NA)を算出し、第6データ格納部81に格納する(ステップS97)。これによって、平文mが乱数sでマスクされたことになる。なお、mは乱数r乗されているので、この段階では、第1の部分鍵xA1による演算を行わない。そして処理は、呼出元の処理に戻る。
なお、Π2=s・C2(mod NA)は図6のマスク処理(ステップ(1))であり、Π1=C1xA1 (mod NA)は図6の第1の復号処理(ステップ(2))である。
次に、本実施の形態に係る第2再暗号化処理を図17を用いて説明する。
まず、第2情報処理装置9の例えば暗号処理部97は、ユーザAの公開鍵(g,NA,hA=gxA(mod NA))を例えばユーザAのユーザ装置3などから、ユーザBの公開鍵(NB,hB)を例えばユーザBのユーザ装置5などから取得し、第3データ格納部94に格納する(ステップS101)。このステップについては、前もって行っておく場合もある。また、取得元の装置については、他のサーバであっても良い。
そして、暗号処理部97は、第1中間データΠ1、第2の部分鍵xA2及びユーザAの公開鍵から、Π1a=Π1 xA2 (mod NA)を算出する(ステップS103)。これによって、Π1a=gxA*r(mod NA)=hAr(mod NA)が得られたことになる。なお、hA=gxA(mod NA)。すなわち、第2の復号化処理(ステップ(4))が実行されたことになる。
さらに、暗号処理部97は、Π1aとユーザAの公開鍵NAと第1の中間データΠ2とから、ξa=Π2/Π1a (mod NA)を算出する(ステップS105)。これによって、マスク化されたデータξa=s・m(mod NA)が得られたことになる。
また、乱数生成部98は、乱数tを生成して、第5データ格納部99に格納する(ステップS107)。そして、暗号処理部97は、乱数tとユーザAの公開鍵gとユーザBの公開鍵NBとを用いて、第2中間データとして、ξ1a=gt(mod NB)を算出し、第4データ格納部95に格納する(ステップS109)。
さらに、暗号処理部97は、ユーザBの公開鍵(NB,hB)と乱数tとマスク化されたデータξaとを用いて、ユーザB向けに暗号化され且つ乱数rにてマスク化されたデータとして、ξ2a=ξa・hBt (mod NB)を算出し、第4データ格納部95に格納する(ステップS111)。そして処理は呼出元の処理に戻る。
このように、ξ1a及びξ2aが、ユーザB向けに暗号化され且つマスク化されたデータとして生成される。
次に、本実施の形態に係る第3再暗号化処理を図18を用いて説明する。
第1情報処理装置7の例えば第2暗号処理部79は、ユーザBの公開鍵(g,NB,hB)をユーザBのユーザ装置5等から取得し、第5データ格納部78に格納する(ステップS121)。このステップについては予め実施しておく場合もある。また、取得元は他のサーバ等の場合もある。
さらに、第2暗号処理部79は、乱数sとユーザBの公開鍵と第2中間データξ2aとを用いて、ユーザB向けに再暗号化されたデータξ2=ξ2a/s(mod NB)を算出し、ξ1aと共に、第7データ格納部82に格納する(ステップS123)。sで除しているのは、平文mがべき数の基数として用いられているためである。そして処理は呼出元の処理に戻る。
すなわち、ξ2=s*m*hBt/s=m*hBt (mod NB)(即ち図6のデータ157)となり、平文mがユーザBの公開鍵で暗号化された状態になる。
次に、本実施の形態に係る復号化処理について図19を用いて説明する。
暗号処理部55は、第2データ格納部57に格納されているユーザBの秘密鍵xB及び公開鍵(g,NB,hB=gxB)を読み出す(ステップS131)。そして、暗号処理部55は、ユーザBの秘密鍵xB及び公開鍵(g,NB,hB)と再暗号化データξ1a及びξ2を用いて、平文m=ξ2/ξ1a xB (mod NB)を算出し、第3データ格納部59に格納する(ステップS133)。
ξ2/ξ1a 2=m*hBt/gt*xB=m*hBt/hBt=m(modNB)によって、平文mが得られる。
この後、例えば暗号処理部55又は他のアプリケーションなどが、平文mを出力する(ステップS135)。そして処理を終了する。
このように、平文mを露出することなく、ユーザBでも復号できるような再暗号化が実施されるようになる。なお、平文mはユーザAの公開鍵で暗号化されており、平文mはユーザBの秘密鍵で復号化されており、ユーザ装置は、鍵の分割処理を行うモジュール以外は、通常のモジュールで実施可能である。
[実施の形態3]
次に、Modified ElGamal暗号を採用した場合の処理について説明する。なお、システム全体の構成については第1の実施の形態と同様である。但し、第2の実施の形態と同様に、サービスBについての第2情報処理装置9の構成は、図14に示すように変更される。
図6及び図7に示した処理は、本実施の形態でも同様である。よって、以下、本実施の形態に係る秘密鍵分割処理、第1再暗号化処理、第2再暗号化処理、第3再暗号化処理、復号化処理の詳細について説明する。
最初に、本実施の形態に係る秘密鍵分割処理について図20を用いて説明する。
まず、分割処理部33は、ユーザAの秘密鍵xA及び公開鍵(g,xA,hA=gxA (mod NA))を、第1データ格納部31から読み出す(図20:ステップS141)。なお、乱数r及び平文mに対して、ユーザA向けの暗号化データは、C(C1=gr mod NA,C2=gm・hAr mod NA)であり、第1情報処理装置7の第3データ格納部74に格納されている。なお、r及びr・m<NA及びNBである。
そして、分割処理部33は、xA=xA1・xA2(mod NA)となる第1の部分鍵xA1及び第2の部分鍵xA2を選択し、第2データ格納部35に格納する(ステップS143)。
このようにして秘密鍵を2つの部分鍵に分割することができる。
次に、本実施の形態に係る第1再暗号化処理を図21を用いて説明する。
まず、第1情報処理装置7の例えば第1暗号処理部73は、ユーザAの公開鍵(g,NA,hA=gxA (mod NA))を、ユーザAのユーザ装置3から又は他のサーバ等から取得し、第5データ格納部78に格納する(ステップS151)。なお、このステップは、前もって行っておく場合もある。
さらに、乱数生成部75は、乱数sを生成し、第4データ格納部76に格納する(ステップS153)。
また、第1暗号処理部73は、ユーザの公開鍵(NA)と第1の部分鍵xA1と暗号化されたデータC1とを用いて、第1中間データとして、Π1=C1xA1 (mod NA)を算出し、第6データ格納部81に格納する(ステップS155)。これによって、C1について第1の部分鍵xA1で部分的な復号が行われたことになる。
また、第1暗号処理部73は、暗号化されたデータC2と乱数sとユーザAの公開鍵(NA)とを用いて、第1の中間データΠ2=gs・C2(mod NA)を算出し、第6データ格納部81に格納する(ステップS157)。これによって、平文mが乱数sでマスクされたことになる。gs・gm・hAr=gs*m・hArとなるため、平文mがsでマスクされる。そして処理は、呼出元の処理に戻る。
なお、Π2=gs・C2(mod NA)は図6のマスク処理(ステップ(1))であり、Π1=C1xA1 (mod NA)により図6の第1の復号処理(ステップ(2))である。
次に、本実施の形態に係る第2再暗号化処理を図22を用いて説明する。
まず、第2情報処理装置9の例えば暗号処理部97は、ユーザAの公開鍵(g,NA,hA=gxA(mod NA))を例えばユーザAのユーザ装置3などから、ユーザBの公開鍵(NB,hB=gxB(mod NB))を例えばユーザBのユーザ装置5などから取得し、第3データ格納部94に格納する(ステップS161)。このステップについては、前もって行っておく場合もある。また、取得元の装置については、他のサーバであっても良い。
そして、暗号処理部97は、第1中間データΠ1、第2の部分鍵xA2及びユーザAの公開鍵から、Π1a=Π1 xA2 (mod NA)を算出する(ステップS163)。これによって、Π1a=gxA×r(mod NA)=hAr(mod NA)が得られたことになる。なお、hA=gxA(mod NA)。すなわち、第2の復号化処理(ステップ(4))が実行されたことになる。
さらに、暗号処理部97は、Π1aとユーザAの公開鍵NAと第1の中間データΠ2とから、ξa=Π2/Π1a (mod NA)を算出する(ステップS165)。これによって、マスク化されたデータξa=gs*m(mod NA)が得られたことになる。
また、乱数生成部98は、乱数tを生成して、第5データ格納部99に格納する(ステップS167)。そして、暗号処理部79は、乱数tとユーザAの公開鍵gとユーザBの公開鍵NBとを用いて、第2中間データとして、ξ1a=gt(mod NB)を算出し、第4データ格納部95に格納する(ステップS169)。
さらに、暗号処理部97は、ユーザBの公開鍵(NB,hB)と乱数tとマスク化されたデータξaとを用いて、ユーザB向けに暗号化され且つ乱数rにてマスク化されたデータとして、ξ2a=ξa・hBt (mod NB)を算出し、第4データ格納部95に格納する(ステップS171)。そして処理は呼出元の処理に戻る。
このように、ξ1a及びξ2aが、ユーザB向けに暗号化され且つマスク化されたデータとして生成される。
次に、本実施の形態に係る第3再暗号化処理を図23を用いて説明する。
第1情報処理装置7の例えば第2暗号処理部79は、ユーザBの公開鍵(g,NB,hB)をユーザBのユーザ装置5等から取得し、第5データ格納部78に格納する(ステップS181)。このステップについては予め実施しておく場合もある。また、取得元は他のサーバ等の場合もある。
さらに、第2暗号処理部79は、乱数sとユーザBの公開鍵と第2中間データξ2aとを用いて、ユーザB向けに再暗号化されたデータξ2=g-s・ξ2a(mod NB)を算出し、ξ1aと共に、第7データ格納部82に格納する(ステップS183)。g-sを乗じているのは、平文mと乱数sとの積がgの指数部分となっているためである。そして処理は呼出元の処理に戻る。
すなわち、ξ2=gs*m*(1/s)・hBt=gm・hBt (mod NB)(即ち図6のデータ157)となり、平文mがユーザBの公開鍵で暗号化された状態になる。
次に、本実施の形態に係る復号化処理について図24を用いて説明する。
暗号処理部55は、第2データ格納部57に格納されているユーザBの秘密鍵xB及び公開鍵(g,NB,hB=gxB(mod NB))を読み出す(ステップS191)。そして、暗号処理部55は、ユーザBの秘密鍵xB及び公開鍵(g,NB,hB)と再暗号化データξ1a及びξ2を用いて、gm=ξ2/ξ1a xB (mod NB)を満たすmを算出し、第3データ格納部59に格納する(ステップS193)。例えば、Baby-Step-Giant-Step法を用いて平文mを生成する。
この後、例えば暗号処理部55又は他のアプリケーションなどが、平文mを出力する(ステップS195)。そして処理を終了する。
このように、平文mを露出することなく、ユーザBでも復号できるような再暗号化が実施されるようになる。なお、平文mはユーザAの公開鍵で暗号化されており、平文mはユーザBの秘密鍵で復号化されており、ユーザ装置は、鍵の分割処理を行うモジュール以外は、通常のモジュールで実施可能である。
なお、上で述べたように取り扱うことができる平文mのサイズは少なくなるが、これについては以下に述べるような方式を採用すれば全く影響がない。すなわち、図25に示すように、ユーザAのユーザ装置3において、平文500を共通鍵暗号方式における共通鍵510で暗号化し、ユーザAの公開鍵520で共通鍵510を暗号化して暗号化鍵511を生成し、ユーザBに渡す。また、ユーザAのユーザ装置3は、暗号化鍵511の再暗号化を本実施の形態に係るシステム(第1情報処理装置7及び第2情報処理装置9)に行わせると、ユーザBの公開鍵530で暗号化された共通鍵510である暗号化鍵512が生成される。暗号化鍵512は、ユーザBのユーザ装置5において、ユーザBの秘密鍵535で復号されると、共通鍵510が得られる。そうすると共通鍵510で暗号化された平文500は、得られた共通鍵510で復号できる。
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、各装置の機能ブロック図については一例であって、必ずしも実際のプログラムモジュール構成やファイル構成と一致しない場合もある。すなわち、データ格納部は複数用いても良いし、1つに統合するようにしても良い。
さらに、処理フローについても、処理結果が変わらない限り、ステップの順番を入れ替えたり、ステップを並列実行するようにしても良い。
さらに、各装置については、複数の装置により機能を分担する場合もある。
なお、上で述べたユーザ装置3及び5、第1情報処理装置7及び第2情報処理装置9は、コンピュータ装置であって、図26に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る暗号処理方法は、(A)第1のコンピュータが、第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、第1のデータ格納部に格納する処理と、(B)第1のコンピュータが、第1のデータ格納部に格納されており且つ第1のユーザの公開鍵にて暗号化された第1のデータに対して、第1のデータ格納部に格納されている第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、第1のデータ格納部に格納する処理と、(C)第1のコンピュータが、第1のデータ格納部に格納されている第2のデータを、第2のコンピュータに送信する処理とを含む。
使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで、この後の処理で平文である第1のデータが露出することなく、再暗号化することができるようになる。
本実施の形態の第1の態様に係る暗号処理方法は、(D)第2のコンピュータが、第1のユーザの第2の部分鍵を取得し、第2のデータ格納部に格納する処理と、(E)第2のコンピュータが、第1のコンピュータから、第2のデータを受信し、第2のデータ格納部に格納する処理と、(F)第2のコンピュータが、第2のデータ格納部に格納されている第2のデータに対して、第2のデータ格納部に格納されている第2の部分鍵で復号処理を実施する処理と、(G)第2のコンピュータが、復号処理がなされた第2のデータに対して、第2のユーザの公開鍵で暗号化処理を実施することで第3のデータを生成し、第2のデータ格納部に格納する処理と、(H)第2のコンピュータが、第2のデータ格納部に格納されている第3のデータを、第1のコンピュータに送信する処理とをさらに含むようにしても良い。
このように第2のコンピュータにおいて復号処理がなされても平文である第1のデータが露出されることはない。
さらに、本実施の形態の第1の態様に係る暗号処理方法は、(I)第1のコンピュータが、第2のコンピュータから第3のデータを受信し、第1のデータ格納部に格納する処理と、(J)第1のコンピュータが、第1のデータ格納部に格納されている第3のデータに対して、使用する暗号方式に従って乱数によるマスク解除処理を実施することで第2のユーザの公開鍵で暗号化された第1のデータを生成し、第1のデータ格納部に格納する処理とをさらに含むようにしても良い。
本実施の形態の第2の態様に係るシステムは、第1のデータ格納部を有する第1のコンピュータと、第2のデータ格納部を有する第2のコンピュータとを有する。そして、第1のコンピュータは、(A)第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、第1のデータ格納部に格納し、(B)第1のデータ格納部に格納されており且つ第1のユーザの公開鍵にて暗号化された第1のデータに対して、第1のデータ格納部に格納されている第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、第1のデータ格納部に格納し、(C)第1のデータ格納部に格納されている第2のデータを、第2のコンピュータに送信する。また、第2のコンピュータは、(D)第1のユーザの第2の部分鍵を取得し、第2のデータ格納部に格納する処理と、(E)第1のコンピュータから、第2のデータを受信し、前記第2のデータ格納部に格納し、(F)第2のデータ格納部に格納されている第2のデータに対して、第2のデータ格納部に格納されている第2の部分鍵で復号処理を実施し、(G)復号処理がなされた第2のデータに対して、第2のユーザの公開鍵で暗号化処理を実施することで第3のデータを生成し、第2のデータ格納部に格納し、(H)第2のデータ格納部に格納されている第3のデータを、第1のコンピュータに送信する。その後、第1のコンピュータは、(I)第2のコンピュータから第3のデータを受信し、第1のデータ格納部に格納し、(J)第1のデータ格納部に格納されている第3のデータに対して、上記使用する暗号方式に従って乱数によるマスク解除処理を実施することで第2のユーザの公開鍵で暗号化された第1のデータを生成し、第1のデータ格納部に格納する。
このように第1の情報処理装置及び第2の情報処理装置が連携するが悪意を有して第1の部分鍵及び第2の部分鍵を持ち寄ることが無ければ、乱数によるマスクにより平文のデータが露出することなく、再暗号化が可能となる。
本実施の形態の第3の態様に係る暗号処理方法は、(A)第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、データ格納部に格納する処理と、(B)第1のデータ格納部に格納されており且つ第1のユーザの公開鍵にて暗号化された第1のデータに対して、第1のデータ格納部に格納されている第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、データ格納部に格納する処理と、(C)データ格納部に格納されている第2のデータを、他のコンピュータに送信する処理と、(D)第1のユーザの第2の部分鍵を取得した他のコンピュータから、第2のデータに対して第2の部分鍵で復号処理を実施し且つ第2のユーザの公開鍵で暗号化処理を実施することで生成した第3のデータを受信し、データ格納部に格納する処理と、(E)データ格納部に格納されている第3のデータに対して、上記使用する暗号方式に従って乱数によるマスク解除処理を実施することで第2のユーザの公開鍵で暗号化された第1のデータを生成し、データ格納部に格納する処理とを含む。
さらに、本実施の形態の第4の態様に係る暗号処理方法は、(A)第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、データ格納部に格納する処理と、(B)第1のデータ格納部に格納されており且つ第1のユーザの公開鍵にて暗号化された第1のデータに対して、第1のデータ格納部に格納されている第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、データ格納部に格納する処理と、(C)データ格納部に格納されている第2のデータを、他のコンピュータに送信する処理と、(D)第1のユーザの第2の部分鍵を取得した他のコンピュータから、第2のデータに対して第2の部分鍵で復号処理を実施し且つ第2のユーザの公開鍵で暗号化処理を実施することで生成した第3のデータを受信し、データ格納部に格納する処理と、(E)データ格納部に格納されている第3のデータに対して、使用する暗号方式に従って乱数によるマスク解除処理を実施することで第2のユーザの公開鍵で暗号化された第1のデータを生成し、データ格納部に格納する処理とを含む。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1のコンピュータが、第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、第1のデータ格納部に格納する処理と、
前記第1のコンピュータが、前記第1のデータ格納部に格納されており且つ前記第1のユーザの公開鍵にて暗号化された第1のデータに対して、前記第1のデータ格納部に格納されている前記第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、前記第1のデータ格納部に格納する処理と、
前記第1のコンピュータが、前記第1のデータ格納部に格納されている前記第2のデータを、第2のコンピュータに送信する処理と、
を含む暗号処理方法。
(付記2)
第2のコンピュータが、前記第1のユーザの第2の部分鍵を取得し、第2のデータ格納部に格納する処理と、
前記第2のコンピュータが、前記第1のコンピュータから、前記第2のデータを受信し、前記第2のデータ格納部に格納する処理と、
前記第2のコンピュータが、前記第2のデータ格納部に格納されている前記第2のデータに対して、前記第2のデータ格納部に格納されている前記第2の部分鍵で復号処理を実施する処理と、
前記第2のコンピュータが、前記復号処理がなされた前記第2のデータに対して、第2のユーザの公開鍵で暗号化処理を実施することで第3のデータを生成し、前記第2のデータ格納部に格納する処理と、
前記第2のコンピュータが、前記第2のデータ格納部に格納されている前記第3のデータを、前記第1のコンピュータに送信する処理と、
をさらに含む付記1記載の暗号処理方法。
(付記3)
前記第1のコンピュータが、前記第2のコンピュータから前記第3のデータを受信し、前記第1のデータ格納部に格納する処理と、
前記第1のコンピュータが、前記第1のデータ格納部に格納されている前記第3のデータに対して、前記使用する暗号方式に従って前記乱数によるマスク解除処理を実施することで前記第2のユーザの公開鍵で暗号化された前記第1のデータを生成し、前記第1のデータ格納部に格納する処理と、
をさらに含む付記2記載の暗号処理方法。
(付記4)
第1のデータ格納部を有する第1のコンピュータと、
第2のデータ格納部を有する第2のコンピュータと、
を有し、
前記第1のコンピュータが、
第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、前記第1のデータ格納部に格納し、
前記第1のデータ格納部に格納されており且つ前記第1のユーザの公開鍵にて暗号化された第1のデータに対して、前記第1のデータ格納部に格納されている前記第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、前記第1のデータ格納部に格納し、
前記第1のデータ格納部に格納されている前記第2のデータを、前記第2のコンピュータに送信し、
前記第2のコンピュータが、
前記第1のユーザの第2の部分鍵を取得し、第2のデータ格納部に格納する処理と、
前記第1のコンピュータから、前記第2のデータを受信し、前記第2のデータ格納部に格納し、
前記第2のデータ格納部に格納されている前記第2のデータに対して、前記第2のデータ格納部に格納されている前記第2の部分鍵で復号処理を実施し、
前記復号処理がなされた前記第2のデータに対して、第2のユーザの公開鍵で暗号化処理を実施することで第3のデータを生成し、前記第2のデータ格納部に格納し、
前記第2のデータ格納部に格納されている前記第3のデータを、前記第1のコンピュータに送信し、
前記第1のコンピュータが、
前記第2のコンピュータから前記第3のデータを受信し、前記第1のデータ格納部に格納し、
前記第1のデータ格納部に格納されている前記第3のデータに対して、前記使用する暗号方式に従って前記乱数によるマスク解除処理を実施することで前記第2のユーザの公開鍵で暗号化された前記第1のデータを生成し、前記第1のデータ格納部に格納する
システム。
(付記5)
第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、データ格納部に格納する処理と、
前記第1のデータ格納部に格納されており且つ前記第1のユーザの公開鍵にて暗号化された第1のデータに対して、前記第1のデータ格納部に格納されている前記第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第2のデータを、他のコンピュータに送信する処理と、
前記第1のユーザの第2の部分鍵を取得した前記他のコンピュータから、前記第2のデータに対して前記第2の部分鍵で復号処理を実施し且つ第2のユーザの公開鍵で暗号化処理を実施することで生成した第3のデータを受信し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3のデータに対して、前記使用する暗号方式に従って前記乱数によるマスク解除処理を実施することで前記第2のユーザの公開鍵で暗号化された前記第1のデータを生成し、前記データ格納部に格納する処理と、
を含み、コンピュータにより実行される暗号処理方法。
(付記6)
第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、データ格納部に格納する処理と、
前記第1のデータ格納部に格納されており且つ前記第1のユーザの公開鍵にて暗号化された第1のデータに対して、前記第1のデータ格納部に格納されている前記第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第2のデータを、他のコンピュータに送信する処理と、
前記第1のユーザの第2の部分鍵を取得した前記他のコンピュータから、前記第2のデータに対して前記第2の部分鍵で復号処理を実施し且つ第2のユーザの公開鍵で暗号化処理を実施することで生成した第3のデータを受信し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3のデータに対して、前記使用する暗号方式に従って前記乱数によるマスク解除処理を実施することで前記第2のユーザの公開鍵で暗号化された前記第1のデータを生成し、前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
(付記7)
第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を格納するデータ格納部と、
前記第1のデータ格納部に格納されており且つ前記第1のユーザの公開鍵にて暗号化された第1のデータに対して、前記第1のデータ格納部に格納されている前記第1の部分鍵で復号処理を実施すると共に、使用する暗号方式に従って平文である第1のデータがマスクされるように乱数でマスク処理を実施することで第2のデータを生成し、前記データ格納部に格納する第1暗号処理部と、
前記データ格納部に格納されている前記第2のデータを、他のコンピュータに送信する送信部と、
前記第1のユーザの第2の部分鍵を取得した前記他のコンピュータから、前記第2のデータに対して前記第2の部分鍵で復号処理を実施し且つ第2のユーザの公開鍵で暗号化処理を実施することで生成した第3のデータを受信し、前記データ格納部に格納する受信部と、
前記データ格納部に格納されている前記第3のデータに対して、前記使用する暗号方式に従って前記乱数によるマスク解除処理を実施することで前記第2のユーザの公開鍵で暗号化された前記第1のデータを生成し、前記データ格納部に格納する第2暗号処理部と、
を有する情報処理装置。
1 ネットワーク
3,5 ユーザ装置
7 第1情報処理装置
9 第2情報処理装置

Claims (7)

  1. 第1のコンピュータが、第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、第1のデータ格納部に格納する処理と、
    前記第1のコンピュータが、RSA(Rivest Shamir Adleman)暗号方式に従って前記第1のユーザの公開鍵にて平文を暗号化することにより得られた第1のデータと、前記RSA暗号方式に従って前記第1のユーザの公開鍵にて乱数を暗号化した第1暗号文とを乗算することにより前記第1のデータに対してマスク化処理を実施し、当該マスク化処理された第1のデータに対して、前記第1のデータ格納部に格納されている前記第1の部分鍵で復号処理を実施することで第2のデータを生成し、前記第1のデータ格納部に格納する処理と、
    前記第1のコンピュータが、前記第1のデータ格納部に格納されている前記第2のデータを、第2のコンピュータに送信する処理と、
    を含む暗号処理方法。
  2. 第2のコンピュータが、前記第1のユーザの第2の部分鍵を取得し、第2のデータ格納部に格納する処理と、
    前記第2のコンピュータが、前記第1のコンピュータから、前記第2のデータを受信し、前記第2のデータ格納部に格納する処理と、
    前記第2のコンピュータが、前記第2のデータ格納部に格納されている前記第2のデータに対して、前記第2のデータ格納部に格納されている前記第2の部分鍵で復号処理を実施する処理と、
    前記第2のコンピュータが、前記復号処理により得られた、前記乱数でマスク化された平文に対して、前記RSA暗号方式に従って第2のユーザの公開鍵で暗号化処理を実施することで第3のデータを生成し、前記第2のデータ格納部に格納する処理と、
    前記第2のコンピュータが、前記第2のデータ格納部に格納されている前記第3のデータを、前記第1のコンピュータに送信する処理と、
    をさらに含む請求項1記載の暗号処理方法。
  3. 前記第1のコンピュータが、前記第2のコンピュータから前記第3のデータを受信し、前記第1のデータ格納部に格納する処理と、
    前記第1のコンピュータが、前記第1のデータ格納部に格納されている前記第3のデータと、前記RSA暗号方式に従って前記第2のユーザの公開鍵にて前記乱数を暗号化した第2暗号文と、前記第2のユーザの公開鍵とを用いて、前記平文が前記第2のユーザの公開鍵で暗号化された第4のデータを生成し、前記第1のデータ格納部に格納する処理と、
    をさらに含む請求項2記載の暗号処理方法。
  4. 第1のデータ格納部を有する第1のコンピュータと、
    第2のデータ格納部を有する第2のコンピュータと、
    を有し、
    前記第1のコンピュータが、
    第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、前記第1のデータ格納部に格納し、
    RSA(Rivest Shamir Adleman)暗号方式に従って前記第1のユーザの公開鍵にて平文を暗号化することにより得られた第1のデータと、前記RSA暗号方式に従って前記第1のユーザの公開鍵にて乱数を暗号化した第1暗号文とを乗算することにより前記第1のデータに対してマスク化処理を実施し、当該マスク化処理された第1のデータに対して、前記第1のデータ格納部に格納されている前記第1の部分鍵で復号処理を実施することで第2のデータを生成し、前記第1のデータ格納部に格納し、
    前記第1のデータ格納部に格納されている前記第2のデータを、前記第2のコンピュータに送信し、
    前記第2のコンピュータが、
    前記第1のユーザの第2の部分鍵を取得し、第2のデータ格納部に格納する処理と、
    前記第1のコンピュータから、前記第2のデータを受信し、前記第2のデータ格納部に格納し、
    前記第2のデータ格納部に格納されている前記第2のデータに対して、前記第2のデータ格納部に格納されている前記第2の部分鍵で復号処理を実施し、
    前記復号処理により得られた、前記乱数でマスク化された平文に対して、前記RSA暗号方式に従って第2のユーザの公開鍵で暗号化処理を実施することで第3のデータを生成し、前記第2のデータ格納部に格納し、
    前記第2のデータ格納部に格納されている前記第3のデータを、前記第1のコンピュータに送信し、
    前記第1のコンピュータが、
    前記第2のコンピュータから前記第3のデータを受信し、前記第1のデータ格納部に格納し、
    前記第1のデータ格納部に格納されている前記第3のデータと、前記RSA暗号方式に従って前記第2のユーザの公開鍵にて前記乱数を暗号化した第2暗号文と、前記第2のユーザの公開鍵とを用いて、前記平文が前記第2のユーザの公開鍵で暗号化された第4のデータを生成し、前記第1のデータ格納部に格納する
    システム。
  5. 第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、データ格納部に格納する処理と、
    RSA(Rivest Shamir Adleman)暗号方式に従って前記第1のユーザの公開鍵にて平文を暗号化することにより得られた第1のデータと、前記RSA暗号方式に従って前記第1のユーザの公開鍵にて乱数を暗号化した第1暗号文とを乗算することにより前記第1のデータに対してマスク化処理を実施し、当該マスク化処理された第1のデータに対して、前記データ格納部に格納されている前記第1の部分鍵で復号処理を実施することで第2のデータを生成し、前記データ格納部に格納する処理と、
    前記データ格納部に格納されている前記第2のデータを、他のコンピュータに送信する処理と、
    前記第1のユーザの第2の部分鍵を取得した前記他のコンピュータから、前記第2のデータに対して前記第2の部分鍵で復号処理を実施することにより得られた、前記乱数でマスク化された平文に対して、前記RSA暗号方式に従って第2のユーザの公開鍵で暗号化処理を実施することで生成した第3のデータを受信し、前記データ格納部に格納する処理と、
    前記データ格納部に格納されている前記第3のデータと、前記RSA暗号方式に従って前記第2のユーザの公開鍵にて前記乱数を暗号化した第2暗号文と、前記第2のユーザの公開鍵とを用いて、前記平文が前記第2のユーザの公開鍵で暗号化された第4のデータを生成し、前記データ格納部に格納する処理と、
    を含み、コンピュータにより実行される暗号処理方法。
  6. 第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を取得し、データ格納部に格納する処理と、
    RSA(Rivest Shamir Adleman)暗号方式に従って前記第1のユーザの公開鍵にて平文を暗号化することにより得られた第1のデータと、前記RSA暗号方式に従って前記第1のユーザの公開鍵にて乱数を暗号化した第1暗号文とを乗算することにより前記第1のデータに対してマスク化処理を実施し、当該マスク化処理された第1のデータに対して、前記データ格納部に格納されている前記第1の部分鍵で復号処理を実施することで第2のデータを生成し、前記データ格納部に格納する処理と、
    前記データ格納部に格納されている前記第2のデータを、他のコンピュータに送信する処理と、
    前記第1のユーザの第2の部分鍵を取得した前記他のコンピュータから、前記第2のデータに対して前記第2の部分鍵で復号処理を実施することにより得られた、前記乱数でマスク化された平文に対して、前記RSA暗号方式に従って第2のユーザの公開鍵で暗号化処理を実施することで生成した第3のデータを受信し、前記データ格納部に格納する処理と、
    前記データ格納部に格納されている前記第3のデータと、前記RSA暗号方式に従って前記第2のユーザの公開鍵にて前記乱数を暗号化した第2暗号文と、前記第2のユーザの公開鍵とを用いて、前記平文が前記第2のユーザの公開鍵で暗号化された第4のデータを生成し、前記データ格納部に格納する処理と、
    を、コンピュータに実行させるためのプログラム。
  7. 第1のユーザの秘密鍵から得られる第1の部分鍵及び第2の部分鍵のうち第1の部分鍵を格納するデータ格納部と、
    RSA(Rivest Shamir Adleman)暗号方式に従って前記第1のユーザの公開鍵にて平文を暗号化することにより得られた第1のデータと、前記RSA暗号方式に従って前記第1のユーザの公開鍵にて乱数を暗号化した第1暗号文とを乗算することにより前記第1のデータに対してマスク化処理を実施し、当該マスク化処理された第1のデータに対して、前記データ格納部に格納されている前記第1の部分鍵で復号処理を実施することで第2のデータを生成し、前記データ格納部に格納する第1暗号処理部と、
    前記データ格納部に格納されている前記第2のデータを、他のコンピュータに送信する送信部と、
    前記第1のユーザの第2の部分鍵を取得した前記他のコンピュータから、前記第2のデータに対して前記第2の部分鍵で復号処理を実施することにより得られた、前記乱数でマスク化された平文に対して、前記RSA暗号方式に従って第2のユーザの公開鍵で暗号化処理を実施することで生成した第3のデータを受信し、前記データ格納部に格納する受信部と、
    前記データ格納部に格納されている前記第3のデータと、前記RSA暗号方式に従って前記第2のユーザの公開鍵にて前記乱数を暗号化した第2暗号文と、前記第2のユーザの公開鍵とを用いて、前記平文が前記第2のユーザの公開鍵で暗号化された第4のデータを生成し、前記データ格納部に格納する第2暗号処理部と、
    を有する情報処理装置。
JP2012058183A 2012-03-15 2012-03-15 暗号処理方法、システム及び情報処理装置 Expired - Fee Related JP5880173B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012058183A JP5880173B2 (ja) 2012-03-15 2012-03-15 暗号処理方法、システム及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012058183A JP5880173B2 (ja) 2012-03-15 2012-03-15 暗号処理方法、システム及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2013192129A JP2013192129A (ja) 2013-09-26
JP5880173B2 true JP5880173B2 (ja) 2016-03-08

Family

ID=49391951

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012058183A Expired - Fee Related JP5880173B2 (ja) 2012-03-15 2012-03-15 暗号処理方法、システム及び情報処理装置

Country Status (1)

Country Link
JP (1) JP5880173B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7077839B2 (ja) * 2018-07-18 2022-05-31 富士通株式会社 並列処理装置、リダクション演算システム及びリダクション演算方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2341979A1 (en) * 2000-03-24 2001-09-24 Contentguard Holdings, Inc. System and method for protection of digital works
US20050157872A1 (en) * 2003-11-12 2005-07-21 Takatoshi Ono RSA public key generation apparatus, RSA decryption apparatus, and RSA signature apparatus
JP2008009051A (ja) * 2006-06-28 2008-01-17 Murata Mach Ltd 復号装置と復号方法、復号プログラム及び鍵生成装置
WO2011027189A1 (ja) * 2009-09-02 2011-03-10 独立行政法人情報通信研究機構 二機能付きidベース暗号化方法及び暗号システム
JP2011147047A (ja) * 2010-01-18 2011-07-28 Nippon Telegr & Teleph Corp <Ntt> プロキシ再暗号化システム、送信装置、再暗号化鍵生成装置、プロキシ装置、受信装置、プロキシ再暗号化方法、それらのプログラムおよび記録媒体

Also Published As

Publication number Publication date
JP2013192129A (ja) 2013-09-26

Similar Documents

Publication Publication Date Title
JP7049374B2 (ja) 同型暗号化を行う端末装置と、その暗号文を処理するサーバ装置及びその方法
JP6880017B2 (ja) 信頼できないコンピュータ上でプライベートプログラムを実行するためのシステム及びプロセス
Kounavis et al. Encrypting the internet
JP5979141B2 (ja) 暗号化統計処理システム、装置、方法及びプログラム
KR101600016B1 (ko) 동형 암호화 알고리즘을 이용한 암호화 방법 및 이를 수행하는 컴퓨팅 장치
JP6194886B2 (ja) 暗号化統計処理システム、復号システム、鍵生成装置、プロキシ装置、暗号化統計データ生成装置、暗号化統計処理方法、および、暗号化統計処理プログラム
WO2019106166A1 (en) Cryptography device having secure provision of random number sequences
JPWO2019130528A1 (ja) 変換鍵生成装置、暗号文変換装置、秘匿情報処理システム、変換鍵生成方法、変換鍵生成プログラム、暗号文変換方法及び暗号文変換プログラム
KR20160131798A (ko) 연산 에러 검출이 가능한 준동형 암호 방법 및 그 시스템
KR102143525B1 (ko) 교집합 연산을 지원하는 함수 암호를 위한 방법 및 이를 이용한 장치
JPWO2005098795A1 (ja) コンピュータシステム、コンピュータプログラム及び加算方法
JP6026017B2 (ja) データ処理システム及び暗号装置及び復号装置及びプログラム
JP2012150399A (ja) プロキシ再暗号化システム、委譲情報生成装置、被委譲情報生成装置、変換鍵生成装置、暗号文変換装置、プロキシ再暗号化方法、及びそれらのプログラム
Rangasami et al. Comparative study of homomorphic encryption methods for secured data operations in cloud computing
JP2006311383A (ja) データ管理方法、データ管理システムおよびデータ管理装置
JP2018036418A (ja) 暗号システム、暗号方法及び暗号プログラム
CN116094845B (zh) 一种可高效撤销的条件代理重加密方法及系统
JP5730805B2 (ja) 格子問題に基づく階層型内積暗号システム,格子問題に基づく階層型内積暗号方法,装置
JP5880173B2 (ja) 暗号処理方法、システム及び情報処理装置
JP6266130B2 (ja) 暗号システム、マスター鍵更新装置及びマスター鍵更新プログラム
JP7117964B2 (ja) 復号装置、暗号システム、復号方法及び復号プログラム
JP7205016B2 (ja) 秘匿情報処理システムおよび秘匿情報処理方法
KR102284877B1 (ko) 효율적인 교집합 연산을 위한 함수 암호 기술
Bouti et al. Securing cloud-based computations against malicious providers
Kihidis et al. Practical implementation of identity based encryption for secure e-mail communication

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150526

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150724

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160118

R150 Certificate of patent or registration of utility model

Ref document number: 5880173

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees