[実施の形態1]
本実施の形態におけるマスク処理について図4を用いて説明する。本実施の形態においては、オリジナル値をマスクするマスク値rallと、設定すべきユーザ権限がk+1段階である場合にはk個のマスク値r1、r2、...rkとを用意する。また、ユーザ権限は、1段階目が最も権限が低く、段階が増えるほど高い権限を有し、k+1段階目が最も権限が高いものとする。さらに、ユーザ権限が高くなるほど、マスク値のビット長が短くなる。すなわち、オリジナル値よりもビット長は短いがr1のビット長が最も長く、r2のビット長が次に長く、rkのビット長が最も短くなっている。また、rallについてはオリジナル値のビット長以上の長さを有する。このマスク値のビット長は、例えば乱数の取り得る値の個数にも相当し、本実施の形態ではエントロピーとも呼ぶことにする。例えば、0から9の範囲をとる乱数は10のエントロピーを有し、7から9の範囲をとる乱数は3のエントロピーを有し、−5から+5の範囲をとる乱数は11のエントロピーを有するということにする。
各ユーザには、そのユーザのユーザ権限に応じたマスク値が配布される。すなわち、第1段階目のユーザ権限を有するユーザにはマスク値rallが配布される。r1乃至rkについては配布されない。次に、第2段階目のユーザ権限を有するユーザには、マスク値rall及びr1が配布される。第3段階目のユーザ権限を有するユーザには、マスク値rall並びにr1及びr2が配布される。第L段階目のユーザ権限を有するユーザには、マスク値rall並びにr1乃至rL-1が配布される。第k+1段階目のユーザ権限を有するユーザには、マスク値rall並びにr1乃至rkが配布される。
図4の例ではk=4であり、マスク値r1、r2及びr3と、マスク値rallが用意される。そして、32ビットのオリジナル値Dataに対して、マスク化第1段階として例えば4ビットのマスク値r3を加算する。そうすると、Data+r3が生成される。次に、Data+r3に対して、マスク化第2段階として例えば8ビットのマスク値r2を加算する。そうすると、Data+r2+r3が生成される。さらに、Data+r2+r3に対して、マスク化第3段階として例えば16ビットのマスク値r1を加算する。そうすると、Data+r1+r2+r3が生成される。そして、Data+r1+r2+r3に対して、最終マスク化段階として例えば32ビットのマスク値rallを加算する。そうすると、Data+r1+r2+r3+rallが生成される。この最終的な値がマスク化値としてクラウドのデータベースに登録される。
このように、エントロピーを段階的に増加させたマスク値をオリジナル値に加算することで、ユーザ権限に応じてアクセス可能なデータが段階的なエントロピーを有するシステムを実現する。すなわち、高いユーザ権限を有するユーザほど低いエントロピーのデータ値、すなわちオリジナル値に近いデータ値を知ることができるため、ユーザ権限に応じたプライバシを実現できる。最も高い権限を有するユーザは、全てのマスク値を有するので、オリジナル値そのものを得ることができる。一方、低いユーザ権限を有するユーザは、高いエントロピーのデータ値、すなわちオリジナル値の一部のみしか知ることができない。
また、最終マスク化処理においては、例えば「年齢」を表現するオリジナル値に対してマスク化を行う場合、オリジナル値は一般的には0から120、すなわち7ビットあれば十分であるため、27以上のエントロピーを有するマスク値を加算する。一般的に、bビットのデータ値に対して、2b以上のエントロピーを有するマスク値を加算することで最終マスク化処理を実施すれば、オリジナル値を特定することは困難になる。
よって、データベースからマスク化値が漏洩したとしても、オリジナル値に対してアクセス権を持たない不正なユーザは、オリジナル値に関する特徴の分析を行うことができない。すなわち、分析結果さえも秘匿される。
また、オリジナル値を表現するデータのビット長bを知らなくとも最終マスク化処理は実施可能である。例えば、計算機上でデータ値を表現するには「ワード」と呼ばれる単位でデータが取り扱われ、例えば8ビット、16ビット又は32ビット等を1つの単位としてデータが表現される。よって、ワードのビット長wに対し、2wのエントロピーを有する2wビットのマスク値であれば、2w以上のエントロピーを有する。例えば、8ビットワードが用いられている場合、28のエントロピーを有する8ビットマスク値が用いられ、16ビットワードが用いられている場合、216のエントロピーを有する16ビットのマスク値が用いられ、32ビットワードが用いられている場合232のエントロピーを有する32ビットマスク値が用いられる。この場合、マスク化された結果のランダム値は真性乱数と同等のエントロピーを有するため、マスク値なしではオリジナル値を再現することは不可能となる。
このように、オリジナル値に対してアクセス権を有するユーザに限定してマスク値rallを配布する。このマスク値rallなしではオリジナル値を再現することも、オリジナル値に関する特徴を抽出して分析を実施することも困難となる。すなわち、オリジナル値に対してアクセス権を有しない不正なユーザは、ランダム化されたデータベースの値を得ることに成功したとしても、その値は真性乱数と同じエントロピーを有するため、オリジナル値を得ることができず、またオリジナル値に関する特徴の分析を行うこともできない。
次に、図5を用いてマスク化値からオリジナル値を復元する際のアンマスク処理について説明する。なお、図5は、図4とは異なり、ユーザ権限は3段階しか規定していない場合を示している。具体的には、マスク化値は、Data+rall+r1+r2となっている。上でも述べたように、最もユーザ権限の低い一般ユーザは、マスク値rallのみが配布されており、2番目のユーザ権限を有する高権限ユーザには、マスク値rall及びr1が配布されており、最も高いユーザ権限を有する最高権限ユーザには、マスク値rall並びにr1及びr2が配布されている。本実施の形態では、例えば、rallは32ビットであり、r1は16ビットであり、r2は8ビットであるものとする。
このような場合、一般ユーザに対しては、当該一般ユーザが有するマスク値rallを用いてマスク化値「Data+rall+r1+r2」に対してアンマスク処理(逆マスク処理、マスク解除処理とも呼ぶ)を実施すれば、Data+r1+r2が得られる。このようなデータを一般ユーザに出力することで、一般ユーザは例えば上位16ビットを把握することができる。すなわち、アンマスク処理の結果のエントロピーは216である。
また、2番目のユーザ権限を有する高権限ユーザに対しては、当該高権限ユーザが有するマスク値rall及びr1を用いてマスク解除処理を実施する。具体的には、Data+rall+r1+r2から、rallを減算するマスク解除処理を実施し、Data+r1+r2を得る。さらに、Data+r1+r2から、r1を減算するマスク解除処理を実施し、Data+r2を得る。Data+r2を高権限ユーザに出力することで、高権限ユーザは例えば上位24ビットを把握することができる。すなわち、マスク解除処理の結果のエントロピーは、28である。
さらに、最高ユーザ権限を有する最高権限ユーザに対しては、当該最高権限ユーザが有するマスク値rall並びにr1及びr2を用いてマスク解除処理を実施する。具体的には、Data+rall+r1+r2から、rallを減算するマスク解除処理を実施し、Data+r1+r2を得る。さらに、Data+r1+r2から、r1を減算するマスク解除処理を実施し、Data+r2を得る。また、Data+r2から、r2を減算するマスク解除処理を実施し、オリジナル値Dataを得る。オリジナル値Dataを最高権限ユーザに出力することで、最高権限ユーザは例えば32ビットのオリジナル値そのものを把握することができるようになる。すなわち、マスク解除処理の結果のエントロピーは1である。
以上のように、段階的なエントロピーを有するマスク値によるマスク化、マスク解除処理(アンマスク化とも呼ぶ)を行うことで、同一のデータベースをユーザ間で共有しつつ、ユーザ権限に応じたプライバシの柔軟な調整が可能となる。
なお、マスク処理で行われる演算は、上で述べた加算の他、減算、乗算、除算、排他的論理和のいずれかであってもよい。マスク解除処理で行われる演算は、マスク処理で加算を実施した場合には減算、マスク処理で減算を実施した場合には加算、マスク処理で乗算を実施した場合には除算、マスク処理で除算を実施した場合には乗算、マスク処理で排他的論理和を実施した場合には排他的論理和を実施する。
[実施の形態2]
図6に、本実施の形態に係るシステムの構成例を示す。インターネット等のネットワーク1には、クラウドシステム3と、クラウドシステム3の管理者の指示により動作する管理者装置5と、ユーザ権限Aが設定されているユーザAが操作するユーザ端末7と、ユーザ権限Bが設定されているユーザBが操作するユーザ端末9とが接続されている。クラウドシステム3には、データベース(DB)33と、処理サーバ31とが含まれる。なお、図6では、2台のみユーザ端末を示しているが、ユーザ端末の数には制限はない。また、ユーザ権限の段階(権限レベルとも呼ぶ。)も第1の実施の形態と同じであり、k+1段階であるものとする。
図7Aに、本実施の形態に係るユーザ端末7の機能ブロック図を示す。ユーザ端末7は、要求送信部71と、マスク解除処理部73と、データ受信部74と、データ格納部75と、マスク値格納部76と、出力部77とを有する。要求送信部71は、ユーザからの指示に応じて、例えばクラウドシステム3の処理サーバ31に対する要求を送信する。マスク値格納部76は、ユーザ端末7のユーザのユーザ権限に応じたマスク値等のデータを格納しており、要求送信部71及びマスク解除処理部73に用いられる。また、データ受信部74は、例えばクラウドシステム3の処理サーバ31から処理結果を受信し、データ格納部75に格納する。マスク解除処理部73は、マスク値格納部76に格納されているマスク値とデータ格納部75に格納されているマスク化値とを用いてアンマスク処理を実施し、処理結果をデータ格納部75に格納する。出力部77は、データ格納部75に格納されているデータを、出力装置(例えば印刷装置又は表示装置など)に出力する。
図7Bに、本実施の形態に係る管理者装置5の機能ブロック図を示す。管理者装置5は、マスク値生成部51と、マスク値格納部52と、マスク値適用処理部53と、オリジナル値格納部54と、マスク化値格納部55と、データベース登録部56と、データ格納部57と、マスク値配布部58とを有する。マスク値生成部51は、乱数などによってマスク値を生成する処理を行い、生成したマスク値をマスク値格納部52に格納する。場合によっては、マスク値生成部51は、データ格納部57に格納されている鍵データ等を用いる場合もある。また、マスク値適用処理部53は、マスク値格納部52に格納されているマスク値を、オリジナル値格納部54に格納されているデータに対して適用してマスク化値を生成し、マスク化値格納部55に格納する。場合によっては、マスク値適用処理部53は、データ格納部57に格納されているデータを処理に用い、処理途中のデータをデータ格納部57に格納する場合もある。さらに、データベース登録部56は、マスク化値格納部55に格納されているマスク化値を、クラウドシステム3のデータベース33に登録する処理を実施する。さらに、マスク値配布部58は、データ格納部57に格納されている、各ユーザのユーザ権限のデータに基づき、マスク値格納部52に格納されているマスク値をユーザ宛に送信する処理を行う。
図8に、処理サーバ31の機能ブロック図を示す。処理サーバ31は、要求受信部311と、マスク値格納部312と、マスク化値取得部313と、第1マスク化値格納部314と、マスク解除処理部315と、マスク解除データ格納部316と、集計処理部317と、集計結果格納部319と、出力部320と、オリジナル値格納部321と、マスク値生成部322と、マスク値適用処理部323と、第2マスク化値格納部324と、データベース登録部325と、データ格納部326と、マスク値配布部327とを有する。要求受信部311は、ユーザ端末7等からの要求を受信し、要求にマスク値等が含まれればマスク値格納部312に格納する。また、要求受信部311は、受信した要求に応じてマスク化値取得部313にマスク化値をデータベース33から取得するように指示する。マスク化値取得部313は、取得したマスク化値を第1マスク化値格納部314に格納する。マスク解除処理部315は、マスク値格納部312に格納されているマスク値を第1マスク化値格納部314に格納されているマスク化値に対して適用するマスク解除処理を実施し、処理結果をマスク解除データ格納部316に格納する。集計処理部317は、マスク解除データ格納部316又は第1マスク化値格納部314に格納されているデータについて所定の集計処理を実施し、集計結果を集計結果格納部319に格納する。集計処理部317は、マスク値格納部312に格納されているデータを用いて処理を実施する場合もある。出力部320は、第1マスク化値格納部314に格納されているデータ又は集計結果格納部319に格納されているデータを、要求送信元のユーザ端末7等に送信する。
また、処理サーバ31は、管理者装置5に代ってマスク化値を生成する場合もある。また、データの所有者であるユーザからデータの更新を指示された場合等に、処理サーバ31がマスク化値を生成する場合もある。このため、要求受信部311が、データの所有者から例えば暗号化されたオリジナル値を受信すると、復号化してオリジナル値をオリジナル値格納部321に格納する。そして、マスク値適用処理部323は、オリジナル値格納部321に格納されているオリジナル値に対してマスク値格納部312に格納されているマスク値を適用するマスク値適用処理を実施してマスク化値を生成し、第2マスク化値格納部324に格納する。データベース登録部325は、第2マスク化値格納部324に格納されているマスク化値をデータベース33に登録する処理を実施する。さらに、マスク値配布部327は、データ格納部326に格納されている、各ユーザのユーザ権限のデータに基づき、マスク値格納部312に格納されているマスク値をユーザ宛に送信する処理を行う。なお、マスク値生成部322が、マスク値を生成してマスク値格納部312に格納する場合もある。その際には、マスク値生成部322は、データ格納部326又はマスク値格納部312に格納されているデータ(例えば鍵データ)を用いてマスク値を生成する場合もある。さらに、マスク値生成部322は、オリジナル値格納部321に格納されているデータを用いてマスク値を生成することもある。また、マスク値適用処理部323は、処理途中のデータなどをデータ格納部326に格納する場合もある。
なお、このような装置構成は以下で述べる他の実施の形態で使用される機能をも併せて示している。従って、本実施の形態内のみでは使用されない構成要素も含まれている。
次に、図9乃至図21を用いて具体的な処理について説明する。まず、図9乃至図15を用いて前処理について説明する。例えば、管理者装置5によりデータベース33にマスク化値を登録するための処理等を実施する。まず、管理者装置5は、マスク化処理を実施する(ステップS1)。この処理については、図10乃至図15を用いて説明する。
まず、マスク値生成部51は、マスク値生成処理を実施し、処理結果であるマスク値をマスク値格納部52に格納する(図10:ステップS11)。次に、マスク値適用処理部53は、マスク値格納部52に格納されているマスク値をオリジナル値格納部54に格納されているオリジナル値に適用するマスク値適用処理を実施し、処理結果であるマスク化値をマスク化値格納部55に格納する(ステップS13)。
マスク値生成処理については、図11乃至図13を用いて説明する。前提として、マスク値rallのビット長ballと、マスク値ri(iは、1以上k以下の整数。但し、ユーザ権限の段階はk+1である。)のビット長bi(マスク長、データ長とも呼ぶ)は、既に決定されており、例えばデータ格納部57に格納されているものとする。なお、本実施の形態では、ball>b1>b2>b3>・・・>bkという関係を有しているものとする。また、ballについては、上でも述べたように、オリジナル値のビット長以上とする。
また、オリジナル値格納部54には、各々複数のカラムを含む複数のレコードを含むデータが格納されており、予めマスク値適用処理を実施すべきカラムが決定されているものとする。
さらに、図11の処理においては、オリジナル値格納部54に格納されているデータの全てのレコードに対して同一のマスク値を適用するものとする。
マスク値生成部51は、マスク値ri(iは1以上k以下の整数。)を、マスク長biの乱数を発生させることによって生成し、マスク値格納部52に格納する(ステップS21)。具体的には、r1は、b1ビットの乱数であり、r2は、b2ビットの乱数であり、rkは、bkビットの乱数である。
また、マスク値生成部51は、マスク値rallを、ビット長ballの乱数を発生させることによって生成し、マスク値格納部52に格納する(ステップS23)。そして元の処理に戻る。
このようにオリジナル値格納部54に格納されているデータの全てのレコードに対して同一のマスク値を適用する場合には、r1乃至rk及びrallを1セット用意すればよい。
但し、オリジナル値格納部54に格納されているデータの各レコードに異なるマスク値を適用するようにしても良い。このような場合には、図12に示すような処理を実施する。
マスク値生成部51は、カウンタjを初期値「1」にセットする(ステップS31)。そして、マスク値生成部51は、j番目のレコードのための、i番目(iは、1以上k以下の整数)のマスク値ri,jを、マスク長biの乱数を発生させることによって生成し、マスク値格納部52に格納する(ステップS33)。具体的には、r1,jは、b1ビットの乱数であり、r2,jは、b2ビットの乱数であり、rk,jは、bkビットの乱数である。
また、マスク値生成部51は、j番目のレコードのためのマスク値rallを、ビット長ball,jの乱数を発生させることによって生成し、マスク値格納部52に格納する(ステップS35)。
そして、マスク値生成部51は、jを1インクリメントし(ステップS37)、jがオリジナル値格納部54におけるレコード数を超えたか判断する(ステップS39)。オリジナル値格納部54のレコード数については、予めデータ格納部57に設定しておくか、オリジナル値格納部54を参照することで特定する。jがレコード数以下であればステップS33に戻る。一方、jがレコード数を超えた場合には、元の処理に戻る。
このような処理を行うことによって、オリジナル値格納部54の各レコードに対して異なるマスク値を適用することができるようになる。なお、(k+1)個(rallを含む)のマスク値をレコード数セット分用意することになる。
マスク値の数を減らすためには、例えば図13に示すようなマスク値生成処理を実施するようにしても良い。
マスク値生成部51は、カウンタjを初期値「1」にセットする(ステップS41)。そして、マスク値生成部51は、j番目乃至(j+u−1)番目のレコードのための、i番目(iは、1以上k以下の整数)のマスク値ri,jを、ビット長biの乱数を発生させることによって生成し、マスク値格納部52に格納する(ステップS43)。uは同じマスク値を利用するレコードの数であり、例えばデータ格納部57に格納されている値を用いる。ステップS43では、具体的には、r1,jは、b1ビットの乱数であり、r2,jは、b2ビットの乱数であり、rk,jは、bkビットの乱数である。
また、マスク値生成部51は、j番目乃至(j+u−1)番目のレコードのためのマスク値rall,jを、マスク長ballの乱数を発生させることによって生成し、マスク値格納部52に格納する(ステップS45)。
そして、マスク値生成部51は、jにuを加算し(ステップS47)、jがオリジナル値格納部54におけるレコード数を超えたか判断する(ステップS49)。オリジナル値格納部54のレコード数については、予めデータ格納部57に設定しておくか、オリジナル値格納部54を参照することで特定する。jがレコード数以下であればステップS43に戻る。一方、jがレコード数を超えた場合には、元の処理に戻る。
このようにすれば、マスク値のデータ量を削減することができる。
次に、図14を用いて、マスク値適用処理について説明する。マスク値適用処理部53は、カウンタjを初期値「1」に設定する(ステップS51)。そして、マスク値適用処理部53は、j番目のレコードにおけるマスク化すべきオリジナル値Datajに対して、マスク値ri,j又はriを適用してマスク化値MaskedDatajを生成し、マスク化値格納部55に格納する(ステップS53)。
図11のようなマスク値生成処理を実施した場合には、以下のような演算を実施する。
MaskedDataj=Dataj+r1+r2+r3+・・・+rk+rall
図12のようなマスク値生成処理を実施した場合には、以下のような演算を実施する。
MaskedDataj=Dataj+r1,j+r2,j+r3,j+・・・+rk,j+rall,j
図13のようなマスク値生成処理を実施した場合には、基本的には図12の場合と同様の演算が実施される。但し、マスク値の切替はu毎に行われるので、j=1からj=u−1まではj=1のマスク値が用いられ、j=uからj=2u−1まではj=uのマスク値が用いられ、j=2uからj=3u−1まではj=2uのマスク値が用いられ、以下同様である。
また、図15に上で示した演算を模式的に示す。ここでは、10ビットのオリジナル値Data=AAABBBCCCCとする。そうすると、例えば4ビットのマスク値r2を加算すると、オリジナル値Dataの下位4ビットがマスクされるので、Data+r2=AAABBB****(*は乱数値)となる。さらに、7ビットのマスク値r2を加算すると、オリジナル値Dataの下位7ビットがマスクされることになるので、Data+r2+r1=AAA*******となる。最後に、10ビットのマスク値rallを加算すると、オリジナル値Dataの全てのビットがマスクされることになるので、マスク化値MaskedData=**********が得られたことになる。
なお、上で述べたように、単純な加算ではなく排他的論理和であっても良い。
そして、マスク値適用処理部53は、jを1インクリメントし(ステップS55)、jがレコード数を超えたか判断する(ステップS57)。jがレコード数以下であればステップS53に戻る。一方、jがレコード数を超えた場合には、元の処理に戻る。
このようにすれば、適切にマスク化処理が行われたことになる。
図9の処理の説明に戻って、データベース登録部56は、マスク化値格納部55に格納されているマスク化値を、クラウドシステム3内のデータベース33に登録する(ステップS3)。
さらに、マスク値配布部58は、マスク値格納部52に格納されているマスク値を、例えばデータ格納部57に格納されているユーザのデータに基づいて、ユーザ毎に適切なマスク値を配布する処理を実施する(ステップS5)。例えば、データ格納部57に、ユーザID等に対応付けて当該ユーザのユーザ権限の段階を登録しておき、各ユーザ宛にそのユーザ権限に応じたマスク値を配布する。最下位のユーザ権限を有するユーザには、マスク値rall又はrall,j(jは1からレコード数。但しu毎の場合もある)を配布する。下位から2段階目のユーザ権限を有するユーザには、マスク値rall及びr1又はrall,j及びr1,j(jについては上と同じ)を配布する。下位から3段階目のユーザ権限を有するユーザには、マスク値rall、r1及びr2又はrall,j、r1,j及びr2,j(jについては上と同じ)を配布する。k+1段階目、すなわち最上位のユーザ権限を有するユーザには、マスク値rall、r1、r2...及びrk又はrall,j、r1,j、r2,j...及びrk,j(jについては上と同じ)を配布する。配布については、例えば、暗号化した上で送信するようにしても良いし、アクセスに応じてSSL(Secure Socket Layer)などを介して送信するようにしてもよい。また、自動的な配布ではなく、オフラインでの配布であっても良い。
また、管理者装置5によって上で述べたようなマスク化処理を実施するのではなく、クラウドシステム3の処理サーバ31において同様の処理を行うようにしても良い。
次に、図16乃至図18を用いて、クラウドシステム3のデータベース33のデータを利用する際の処理について説明する。例えばユーザがユーザ端末7を操作して、クラウドシステム3のデータベース33における所定のデータ群について集計処理を実施するように指示する。ユーザ端末7の要求送信部71は、ユーザからの指示に応じて、マスク値格納部76に格納されており且つ当該ユーザに配布されたマスク値を読み出し、当該マスク値及び集計処理の対象データ群を指定するデータを含む集計処理要求を、クラウドシステム3の処理サーバ31に送信する(図16:ステップS61)。
クラウドシステム3の処理サーバ31における要求受信部311は、ユーザ端末7から、マスク値及び集計処理の対象データ群を指定するデータを含む集計処理要求を受信し(ステップS63)、集計処理要求に含まれるマスク値をマスク値格納部312に格納すると共に、マスク化値取得部313に、集計処理の対象データ群を指定するデータを出力する。そうすると、マスク化値取得部313は、データベース33から集計処理の対象データ群を取得し、第1マスク化値格納部314に格納する(ステップS64)。
そして、マスク解除処理部315は、マスク値格納部312に格納されているマスク値を用いて、第1マスク化値格納部314に格納されているマスク化値に対してアンマスク処理を実施する(ステップS65)。アンマスク処理について図17を用いて説明する。
マスク解除処理部315は、カウンタjを初期値「1」に設定する(ステップS81)。そして、マスク解除処理部315は、j番目のレコードにおけるマスク化値MaskedDatajを、第1マスク化値格納部314から読み出し、このマスク化値MaskedDatajに対して、マスク値格納部312に格納されているマスク値を用いてアンマスク化値UnmaskedDatajを生成し、レコードjの他のデータと共にマスク解除データ格納部316に格納する(ステップS83)。
図11のようなマスク値生成処理を実施している場合には、アンマスク化値は以下のように演算される。
UnmaskedDataj=MaskedDataj−rall−Σiri
すなわち、マスク化値MaskedDatajから、ユーザから取得した全てのマスク値を減算することで、アンマスク化値UnmaskedDatajを生成する。マスク値については要求送信元のユーザのユーザ権限によって個数が異なるが、取得した全てのマスク値を減算する。
図12のようなマスク値生成処理を実施している場合には、アンマスク化値は以下のように演算される。
UnmaskedDataj=MaskedDataj−rall,j−Σiri,j
すなわち、マスク化値MaskedDatajから、レコードjについてユーザから取得した全てのマスク値を減算することで、アンマスク化値UnmaskedDatajを生成する。マスク値については要求送信元のユーザのユーザ権限によって個数が異なるが、取得した全てのマスク値を減算する。
図13のようなマスク値生成処理を実施している場合には、マスク化値ri,j及びrall,jについては、マスク値の切替はu毎に行われるので、j=1からj=u−1まではj=1のマスク値が用いられ、j=uからj=2u−1まではj=uのマスク値が用いられ、j=2uからj=3u−1まではj=2uのマスク値が用いられ、以下同様である。
なお、マスク値適用処理で排他的論理和が採用されている場合には、アンマスク処理でも排他的論理和が採用される。
そして、マスク解除処理部315は、jを1インクリメントし(ステップS85)、jがレコード数を超えたか判断する(ステップS87)。jがレコード数以下である場合にはステップS83に戻る。一方、jがレコード数を超えている場合には、元の処理に戻る。
このようにすれば、集計処理の対象データ群の各レコードにおいてマスク化されているデータについて、集計要求の送信元ユーザのユーザ権限に応じたアンマスク処理が行われる。すなわち、最上位のユーザ権限を有するユーザであれば、オリジナル値を得ることができ、それ以外のユーザ権限を有するユーザであれば、少なくとも一部がマスクされたアンマスク化値が得られるようになる。
なお、この段階でマスク解除処理部315は、マスク値格納部312に格納されているマスク値を破棄する処理を実施する。マスク値の漏洩を防止するためである。
図16の処理の説明に戻って、集計処理部317は、マスク解除データ格納部316に格納されているデータについて集計処理を実施する(ステップS67)。この集計処理については、図18を用いて説明する。
集計処理部317は、アンマスク化値でレコードを分類する(ステップS91)。例えば、AAABBBCCCCというオリジナル値に対してアンマスク化値がAAABBB****となっている場合には、上位6ビットが共通するレコード毎に分類を行う。場合によっては、アンマスク化値がAAA*******となっている場合には、上位3ビットが共通するレコード毎に分類を行う。
そして、集計処理部317は、分類毎に集計対象値(例えばユーザ指定のカラム値)の集計を行い、集計結果を集計結果格納部319に格納する(ステップS93)。例えば、各レコードの件数の値を合計する処理を実施し、分類のデータに対応付けて合計件数を集計結果格納部319に格納する。そして元の処理に戻る。
なお、最上位のユーザ権限を有するユーザの場合には、オリジナル値が得られるので、上でも述べたような処理を行わずにオリジナル値を集計結果として出力しても良いし、例えばユーザの指示に応じた単位で集計処理を行って、その集計処理の結果を出力するようにしても良い。他の分析を行うようにしても良い。
このような処理を実施することで、ユーザ権限に応じてアクセスできる内容について集計結果を得ることができる。なお、この集計結果をさらに用いて他の分析処理を実施することも可能であるが、ここでは説明を省略する。
図16の処理の説明に戻って、出力部320は、要求受信部311から集計要求の送信元ユーザ端末7のアドレス等を受け取って、集計結果格納部319に格納されている集計結果を、ユーザ端末7へ送信する(ステップS69)。
ユーザ端末7のデータ受信部74は、処理サーバ31から集計結果を受信し、データ格納部75に格納する。そして、出力部77は、データ格納部75に格納されている集計結果を、表示装置等の出力装置に出力する(ステップS71)。これによって、ユーザは、自身のユーザ権限に応じた処理結果を得ることができるようになる。
例えば、ユーザ権限の段階が3であり、マスクすべきオリジナル値(プライバシ情報とも呼ぶ)が住所であるものとする。そして、例えば図19に示すように、研究者及び地域保健所については、ユーザ権限は第三段階(すなわち最上位)であり、アクセス可能なプライバシ情報は、番地単位の感染者数であるとする。また、医者については、ユーザ権限は第二段階であり、アクセス可能なプライバシ情報は、区及び町単位の感染者数であるものとする。さらに、一般人については、ユーザ権限は第一段階(すなわち最下位)であり、アクセス可能なプライバシ情報は、市単位の感染者数であるものとする。
また、データ構造としては、図20に示すようなものであるものとする。すなわち、「レコード番号」、「住所」、「感染者数」の3つのカラムを有する。なお、感染者が発生しない地域のデータは記録されていない。そして、住所を32ビットワードで表現する場合、図21(a)に示すように、上位10ビットが市、次の8ビットが区町、下位の14ビットが番地を表すものとする。なお、32ビットワードは一例であり、不足する場合には64ビットワードを採用するようにしても良い。
このような住所をマスク化するためには、r1、r2及びrallの3種類のマスク値を用いる。r2は番地をマスク化するために用いられる14ビット乱数であり、r1は番地と区町をマスク化するために用いられる22ビット乱数であり、rallは住所全体をマスク化するために用いられる32ビット乱数である。「研究者及び地域保健所」は全てのマスク値を保有し、次に高い権限(第二段階)を有する「医者」はrall及びr1を保有し、最も低い権限(第一段階)である「一般人」はrallのみを保有する。このようなマスク値については上で述べたような形で生成される。
マスク値適用処理を実行する場合には、図21(b)に示されるように、住所に対して、r2、r1及びrallを加算することで、住所32ビット全てをマスク化する。図21(b)ではr2、r1及びrallの順に加算されているが、加算は順序を問わない演算であるため、この順番で加算しなくとも正しいマスク化値を得ることができる。
データを分析又は参照するためにアンマスク化を行う際は、「研究者及び地域保健所」はマスク値r1、r2及びrallを処理サーバ31に送信して、アンマスク処理を実施する。例えば図21(c)に示すように、マスク化値(Data+r1+r2+rall)から、提供されるマスク値r1、r2及びrallを差し引くことで、オリジナル値Dataである住所全体のデータが得られる。
「医者」はマスク値r1及びrallを処理サーバ31に送信して、アンマスク処理を実施する。例えば図21(c)に示すように、マスク化値(Data+r1+r2+rall)から、提供されるマスク値r1及びrallを差し引くことで、アンマスク化値(Data+r2)である下位14ビットが乱数化されたデータが得られる。すなわち、区町を識別することはできるが、番地は不明となる。このような場合、区町の単位で分類すれば、区町単位での感染者数を得ることができる。
さらに、「一般人」はrallを処理サーバ31に送信して、アンマスク処理を実施する。例えば図21(c)に示すように、マスク化値(Data+r1+r2+rall)から、提供されるマスク値rallを差し引くことで、アンマスク化値(Data+r1+r2)である下位22ビットが乱数化されたデータが得られる。すなわち、市を識別することはできるが、区町及び番地は不明となる。このような場合、市単位で分類すれば、市単位で感染者数を得ることができる。
[実施の形態3]
第2の実施の形態では、住所をマスク化対象データとしており、集計処理で合計される数値(例えば感染者数)はマスク化されないので、マスク化は集計処理に影響を与えない。しかしながら、集計処理で合計される数値をマスク化する場合には、最上位のユーザ権限を有するユーザ以外は、乱数が加算されている数値しか得ることができない。このような場合には、以下に示すような取り扱い及び処理を行う。
第1の実施の形態の具体例と同様に、図22に示すようなデータ構造のデータがオリジナル値として与えられるものとする。すなわち、「レコード番号」「住所」及び「感染者数」のカラムが設けられている。また、ユーザ権限は3段階設定されているものとする。さらに、住所を32ビットワードで表現する場合、上位10ビットが市、次の8ビットが区町、下位の14ビットが番地を表すものとする。
但し、本実施の形態では「住所」についてはマスクしないで「感染者数」をマスクする。なお、「住所」がデータベース内で重複しない場合には、「レコード番号」を省略して「住所」で代用することも可能である。また、図22に示すように、感染者の有無に拘わらず、全ての番地について感染者数を登録するものとする。
上でも述べたように、最上位のユーザ権限を有するユーザ以外は、個々の住所(すなわち番地)に対しては、アンマスク処理後もランダム化された感染者数しか知ることができない。
そこで、2番目のユーザ権限を有する医者の場合、感染者数を区町単位で合計し、以下で説明する定数を減じた結果を、区町単位の感染者数として出力する。
一般人の場合、感染者数を市単位で合計し、以下で説明する定数を減じた結果を、市単位の感染者数として出力する。
このように定数を減ずることで、ランダム化の影響が、区町単位や市単位で無効化される。この仕組みは、「中心極限定理」と呼ばれる公知の定理を利用している。この中心極限定理は以下のようなものである。
期待値μ、分散σ2に従う確率変数X1、X2,...Xnに対し、その合計は以下のように表される。
この合計Snから生成される以下の式(1)は、平均0、分散1の正規分布に分布収束する。
この定理のポイントは、多くの乱数を加算するほど、加算した結果の平均値は、真の平均値に近づくという性質である。真の平均値とは、vビット乱数の場合2v-1である。また、この定理は、n個の乱数を加算した場合、1/n0.5に比例して真の平均値に近づくことも示している。「「真の平均値」に近づく」とは、「真の平均値」との誤差が少なくなることである。
例えば、10個の20ビット乱数を加算した場合の平均値から真の平均値(=220-1)を引いた誤差と、40個の乱数を加算した場合の平均値から真の平均値(=220-1)を引いた誤差を比較した場合、後者の誤差の方が前者の誤差の1/2(={1/400.5}/{1/100.5})となる性質が知られている。すなわち、n個の住所の感染者数を集計することで、ランダム化による誤差が1/n0.5に減少されるため、正確な値となる。真の平均値が2v-1である乱数が加算された感染者数をn個合計して平均値を取ると、誤差は2v-1/n0.5に比例して小さくなる。nは集計対象レコードの数であり、医者の場合、14ビットで表現される番地単位の感染者数を集計するのでn=214であり、一般人の場合14ビットで表現される番地と8ビットで表現される区町の感染者数を集計するのでn=222である。vは、nの半分のビット長、すなわちnの平方根のビット長であるとすると、医者と一般人でそれぞれv=7及びv=11となる。これらのv及びnを用いると、集計の平均値の誤差2v-1/n0.5はそれぞれ以下のようになる。
医者:27-1/27=2-1
一般人:211-1/211=2-1
このように医者と一般人で同一の誤差、すなわち精度が等しくなる。
このような誤差は、集計処理によって算出されたe1=(n個の誤差付き感染者数の合計)と、e2={(正しいn個のデータ値の合計)+(マスク値の真の平均値)×n}との差分による誤差であり、この誤差はマスク値のパラメータを適切に設定することで無視できるほど小さくなる。
上記の例では、医者、一般人共に平均誤差=0.5である。よって、e1から、e2における(正しいn個のデータ値の合計)を得るためには、e1から、(マスク値の真の平均値)×nを減じればよい。マスク値の真の平均値は2v-1であり、nはvの2倍のビット長、すなわちn=22*vであることを考慮すると、減じる値は以下のようになる。
(マスク値の真の平均値)×n=2v-1×22*v=23*v-1 (2)
但し、vは、アンマスク化された感染者数に加えられている乱数のビット長であり、(k+1)段階中h段階目のユーザの場合、v=bh-1である。bhは、マスク値rhのビット長を表す。なお、最上位((k+1)段階中(k+1)段階目)のユーザ権限を有するユーザは、オリジナル値を得ることができるため、補正は不要である。
よって、区町単位又は番地単位で集計した感染者数から、(2)式で示す定数を減ずることで、真の値に非常に近い値を得ることができる。
一方、(k+1)段階中h段階目のユーザに対して、gh個のデータを集計しなければ真の値が得られないようにするためには、以下のように設定する。
b1=(log2g1)/2
b2=(log2g2)/2
:
:
bk=(log2gk)/2
下位から1段階目のユーザは214+8個のレコードを集計し、下位から2段階目のユーザは214個のレコードを集計することになるので、b1=11、b2=7となる。高いユーザ権限を有するユーザほど、少ないレコード数での集計により真の値を得られるため、g1>g2>・・・>gkが満たされるようにする。ballは、第1の実施の形態と同様に、データ値を表現するワードのビット長wをそのまま与えるものとする。
このようにb1乃至bkは第1の実施の形態とは異なるが、マスク化処理及びアンマスク処理における演算の方式自体は同じである。また、ユーザ端末7と処理サーバ31とのやりとりの処理フロー(図16)も同じである。
マスク化処理及びアンマスク処理について概略を図23(a)及び(b)に示す。図23(a)に示すように、32ビットのオリジナル値(Dは1ビットを表す。但し、上位16ビットは省略表示を含む。)に、7ビット乱数であるr2を加算することで、下位7ビットがマスクされたデータを得る。さらに、11ビット乱数であるr1を加算することで、下位11ビットがマスクされたデータを得る。最後に、32ビット乱数であるrallを加算することで、全ビットマスクされたマスク化値を得る。
また、図23(b)に示すように、研究者及び地域保健所は、マスク値r1、r2及びrallを処理サーバ31に送信し、処理サーバ31において32ビットのマスク化値からマスク値r1、r2及びrallを引くことによって、オリジナル値を生成する。また、医者は、マスク値r1及びrallを処理サーバ31に送信し、処理サーバ31において32ビットのマスク化値からマスク値r1及びrallを引くことによって、下位7ビットがランダム化されたデータが得られる。さらに、一般人は、マスク値rallを処理サーバ31に送信し、処理サーバ31において32ビットのマスク化値からマスク値rallを引くことによって、下位11ビットがランダム化されたデータが得られる。
そして、第2の実施の形態と異なる部分は、集計処理である。従って、本実施の形態に係る集計処理について図24を用いて説明する。
集計処理部317は、マスク解除データ格納部316に格納されているデータがオリジナル値であるか確認する(ステップS101)。例えば、マスク解除処理部315が、ユーザ権限の段階数と同じ数のマスク値を用いてアンマスク処理を実施した場合に、フラグをマスク解除データ格納部316に格納して、当該フラグを確認するようにしても良い。さらに、マスク値格納部312に格納されており且つ同一のレコードに適用するマスク値の種類が、ユーザ権限の段階数と同数であるかを確認するようにしても良い。
オリジナル値がマスク解除データ格納部316に格納されている場合には、集計処理部317は、指示された集計処理を実施し、集計処理結果を集計結果格納部319に格納する(ステップS109)。オリジナル値については何もせずにそのまま出力して良いし、指示された単位で分類した上で、感染者数等の値を合計するようにしても良い。他の分析処理を実施するようにしても良い。そして元の処理に戻る。
一方、オリジナル値がマスク解除データ格納部316に格納されているわけではない場合には、集計処理部317は、最短マスク値のビット長bhから、レコード数ghを算出し、例えばメインメモリなどの記憶装置に格納する(ステップS102)。上で述べた式を変形すれば、gh=2^2bhで得られる。
そして、集計処理部317は、アンマスク化値以外のデータ(例えば住所)についてユーザ権限に応じた単位でレコードを分類する(ステップS103)。例えば、上で述べた例では上位(32−2bh)ビットで表される住所の単位毎にレコードの分類を行う。具体的には、医者であれば区町単位で分類が行われ、一般人であれば市番号単位で分類される。
さらに、集計処理部317は、各分類について各レコードのアンマスク化値を合計し、当該合計値から誤差(=gh×2^(bh−1))を減ずることによって集計結果を算出し、分類に対応付けて集計結果格納部319に格納する(ステップS107)。
以上のような処理を実施することによって、集計対象の数値をマスクする場合についても対処することができるようになる。なお、上で述べた誤差を差し引くため、マスク値適用処理における演算は加算を行うことになる。
[実施の形態4]
上で述べた実施の形態では、レコードに共通のマスク値を用意するか、レコード毎に異なるマスク値を用意するか、所定数レコード毎に異なるマスク値を用意するといった例を示した。レコード毎に異なるマスク値を用意する場合には、レコード数が多くなるとマスク値のデータ量も多くなってしまう。従って、少ないデータ量でレコード毎に異なるマスク値を生成することを考える。
すなわち、図25に示すような処理をマスク値生成処理として実施する。なお、予めマスク値riのための鍵si(ユーザ権限の段階数がk+1であれば、iは、1以上k以下の整数)と、マスク値rallのための鍵sallとを予め用意しておく。また、マスク長bi及びballについても、第1乃至第3の実施の形態と同様に予め決めておく。しかし、アンマスク処理のために、鍵とマスク長とは対応付けて保持しておくか、鍵の名称などからマスク長を特定する仕組みを用意しておく。
ここでは、処理サーバ31においてマスク値が生成される場面を説明する。
マスク値生成部322は、レコード番号jを「1」に初期化する(ステップS301)。なお、「1」ではなく、実際にデータベース33に登録する際のレコード番号の最小値を用いてもよい。そして、マスク値生成部322は、j番目のレコードのi番目(iは、1以上k以下の整数)のマスク値ri,j(マスク長biビット)を、i番目の鍵siを用いて生成し、マスク値格納部312に格納する(ステップS303)。
図25の例では、一方向関数の例としてAES(Advanced Encryption Standard)規格の暗号を用いることにする。AES(P,K)は、AESのアルゴリズムで平文Pを鍵Kで暗号化する関数であるとする。ステップS303では、ri,j=AES(j,si)の下位biビットとする。より具体的には、以下のようになる。
r1,j=AES(j,s1)の下位b1ビット
r2,j=AES(j,s2)の下位b2ビット
r3,j=AES(j,s3)の下位b3ビット
:
:
rk,j=AES(j,sk)の下位bkビット
また、マスク値生成部322は、j番目のレコードのマスク値rall,jを、鍵sallを用いて生成し、マスク値格納部312に格納する(ステップS305)。具体的には、以下のように生成する。
rall,j=AES(j,sall)の下位ballビット
ballは、オリジナル値のビット長以上の値である。
そして、マスク値生成部322は、jを1インクリメントする(ステップS307)。なお、1インクリメントするのではなく、実際にデータベース33に登録する際の次のレコード番号を用いても良い。次のレコード番号がない場合、すなわち既に最大レコード番号に達している場合には、jを1インクリメントする。
その後、マスク値生成部322は、jがレコード数を超えたか判断する(ステップS309)。場合によっては、実際にデータベース33に登録する際の最後のレコード番号より大きい値であるか確認する。jがレコード数以下であればステップS303に戻る。一方、jがレコード数を超えた場合には、元の処理に戻る。
鍵si及びsallを適切に配布することで、第1乃至第3の実施の形態と同様の結果を得ることができる。なお、上で述べたような処理を行えばデータベース33に登録されたマスク化値から鍵を解読することは困難であるから、データベース33のデータから鍵が漏洩することはない。
具体的には、最下位のユーザ権限を有するユーザには、sallを配布する。また、2段階目のユーザ権限を有するユーザには、s1及びsallを配布する。3番目のユーザ権限を有するユーザには、s1、s2及びsallを配布する。h番目のユーザ権限を有するユーザには、s1、s2、...sh-1及びsallを配布する。最上位のユーザ権限を有するユーザには、全ての鍵を配布する。
なお、上ではAESを用いる例を示したが、他の暗号方式(例えばtriple-DES)を採用するようにしても良い。
さらに、一方向関数としてハッシュ関数を用いても良い。ここではSHA256という関数を用いる例を図26に示す。但し、SHA384やSHA512等を代わりのハッシュ関数として用いても良い。また、鍵については、AESと同様に、別途用意する。
マスク値生成部322は、レコード番号jを「1」に初期化する(図26:ステップS111)。なお、「1」ではなく、実際にデータベース33に登録する際のレコード番号の最小値を用いてもよい。そして、マスク値生成部322は、j番目のレコードのi番目(iは、1以上k以下の整数)のマスク値ri,j(マスク長biビット)を、i番目の鍵siを用いて生成し、マスク値格納部312に格納する(ステップS113)。
図26の例では、SHA256(D)は、データDのハッシュ値を算出する関数であるとする。ステップS113では、ri,j=SHA256(j|si)の下位biビットとする。「A|B」はAとBのビット結合を表す。より具体的には、以下のようになる。
r1,j=SHA256(j|s1)の下位b1ビット
r2,j=SHA256(j|s2)の下位b2ビット
r3,j=SHA256(j|s3)の下位b3ビット
:
:
rk,j=SHA256(j|sk)の下位bkビット
また、マスク値生成部322は、j番目のレコードのマスク値rall,jを、鍵sallを用いて生成し、マスク値格納部312に格納する(ステップS115)。具体的には、以下のように生成する。
rall,j=SHA256(j|sall)の下位ballビット
ballは、オリジナル値のビット長以上の値である。
そして、マスク値生成部322は、jを1インクリメントする(ステップS117)。なお、1インクリメントするのではなく、実際にデータベース33に登録する際の次のレコード番号を用いても良い。次のレコード番号がない場合、すなわち既に最大レコード番号に達している場合には、jを1インクリメントする。
その後、マスク値生成部322は、jがレコード数を超えたか判断する(ステップS119)。場合によっては、実際にデータベース33に登録する際の最後のレコード番号より大きい値であるか確認する。jがレコード数以下であればステップS113に戻る。一方、jがレコード数を超えた場合には、元の処理に戻る。
鍵si及びsallを適切に配布することで、第1乃至第3の実施の形態と同様の結果を得ることができる。なお、上で述べたような処理を行えばデータベース33に登録されたマスク化値から鍵を解読することは困難であるから、データベース33に格納されているデータから鍵が漏洩することはない。
一方、上で述べたような鍵を用いる場合には、集計要求はマスク値ではなく鍵(場合によっては加えて鍵に対応するマスク長のデータ)を含む。そして、鍵のデータも例えばマスク値格納部312に格納される。アンマスク処理においてマスク値を生成することになる。なお、レコード番号の範囲等、レコード番号を特定するためのデータを集計要求に含む場合もある。そして、本実施の形態におけるアンマスク処理は、図27に示すような処理である。
マスク解除処理部315は、カウンタjを初期値「1」に設定する(図27:ステップS121)。1ではなく、レコード番号の初期値に設定する場合もある。そして、マスク解除処理部315は、取得した鍵sを用いて、j番目のレコードのためのマスク値rを生成し、マスク値格納部312に格納する(ステップS123)。この処理については、マスク値生成部322に処理を行わせるようにしても良い。また、ステップS121より前に全てのレコードjについてまとめて行うようにしても良い。
ステップS123では、sall以外の鍵を取得した場合には、ri,j=AES(j,si)の下位biビットでri,jを生成する。また、rall,j=AES(j,sall)の下位ballビットを生成する。AESではなくSHA256を用いる場合には、sall以外の鍵を取得すれば、ri,j=SHA256(j|si)の下位biビットでri,jを生成する。また、rall,j=SHA256(j|sall)の下位ballビットを生成する。
マスク長のデータについては、例えばマスク値格納部312にユーザ権限の段階に対応付けて格納しておく。
そして、マスク解除処理部315は、j番目のレコードにおけるマスク化値MaskedDatajを、第1マスク化値格納部314から読み出し、このマスク化値MaskedDatajに対して、マスク値格納部312に格納されているマスク値を用いてアンマスク化値UnmaskedDatajを生成し、レコードjの他のデータと共にマスク解除データ格納部316に格納する(ステップS125)。
アンマスク化値は以下のように演算される。
UnmaskedDataj=MaskedDataj−rall,j−Σiri,j
すなわち、マスク化値MaskedDatajから、レコードjについて生成された全てのマスク値を減算することで、アンマスク化値UnmaskedDatajを生成する。マスク値については要求送信元のユーザのユーザ権限によって個数が異なるが、生成した全てのマスク値を減算する。
そして、マスク解除処理部315は、jを1インクリメントし(ステップS127)、jがレコード数を超えたか判断する(ステップS129)。jがレコード数以下である場合にはステップS123に戻る。一方、jがレコード数を超えている場合には、元の処理に戻る。なお、ステップS127では、次のレコード番号をjに設定し、ステップS129ではレコード番号の最大値を超えたかを判断する場合もある。
このようにすれば、鍵sを用いる場合においても、第1の実施の形態で述べたような効果を得ることができるようになる。
より具体的なシステムとして、チェーン店売り上げ管理のためのクラウドシステム3を構築するケースを考える。ここではユーザ権限は2段階で、各店舗の品目別の売上データをデータベース33に登録する。そして、本部は最上位のユーザ権限を有しており、全支店の品目別の売上データを参照及び更新でき、支店は地域毎の品目別売上データを参照できるようにする。
データベース33に格納されるデータの一例を図28に示す。図28の例では、レコード番号と、支店コードと、品目と、個数と、金額とが登録されるようになっている。本実施の形態では、支店コードをマスク化対象データとする。
ここでは全支店のデータを同一のデータベース33に登録する。「支店コード」はマスク化されるが、プライバシ保護のためには、レコード番号から支店コードが推測されないようにする。例えば、レコード番号1乃至1000000が支店Aに割り当てられ、レコード番号1000001乃至2000000が支店Bといったような、大きな単位の連番による割り当てを行わないようにする。レコード番号に対する支店コードの割り当てを不規則又はランダムとすることで、レコード番号と支店コードの対応を容易に推測されるのを防ぐ。各支店は、自店舗についてのレコードのレコード番号をローカルに保持しておき、他店舗についてのレコードのレコード番号についての情報は保持しない。自店舗についてのレコードのレコード番号を保持することで自店舗のデータについては全てのデータの分析及び参照が可能となる。すなわち、データベース33の検索条件として、レコード番号を指定すればよい。この際得られるレコードにおいて「支店コード」はマスク化されたままであるが、他のカラムのデータはオリジナル値のままであるから、その点については問題ない。
このような検索要求をユーザ端末7の要求送信部71から処理サーバ31に送信した場合には、要求受信部311が検索条件であるレコード番号をマスク化値取得部313に出力し、マスク化値取得部313はデータベース33をレコード番号で検索して、該当レコードのデータをデータベース33から読み出して、第1マスク化値格納部314に格納する。そして、出力部320は、要求受信部311からの要求送信元のアドレス等及び出力指示に従って、第1マスク化値格納部314から取得レコードのデータを読み出して、ユーザ端末7に送信する。その前に集計処理を実施しても良い。ユーザ端末7のデータ受信部74は、データを受信すると、データ格納部75に格納し、出力部77は、データ格納部75に格納されている受信データを、表示装置等の出力装置に出力する。
また、「支店コード」をマスク化するためには、r1及びrallの2種類のマスク値を用いる。支店コードの体系を図29(a)に示す。支店コードは14ビットであり、上位6ビットが支店の地域情報に相当する都道府県番号を表し、下位8ビットが対象地域における個別の支店を区別するための支店番号を表す。支店コードは16ビットワードで表現される。
この場合、マスク値r1は個別の店舗情報をマスク化するために用いられる8ビット乱数であり、rallは支店コード全体をマスク化するために用いられる16ビット乱数である。
本実施の形態では、「本店」は全マスク値を生成するための全ての鍵s1及びsallを保有し、「支店」は鍵sallのみを保有する。そして、実際のマスク値については上で述べた処理を行うことで生成される。このようにすれば、ユーザ権限に応じて与えられる鍵とレコード番号からマスク値が生成されるので、マスク値はユーザ権限を有する正当なユーザに対してのみ生成することができる値である。
鍵からマスク値を生成できれば、図29(b)に示すように、オリジナル値に対してr1及びrallを加算し、マスク化値を生成できる。また、図29(c)に示すように、本店は、鍵s1及びsallを提供して、マスク値r1,j及びrall,jを生成すれば、全支店の個別売上データを取得することができるようになる。一方、支店は、鍵sallのみを提供して、マスク値rall,jを生成すれば、地域(例えば都道府県)単位の売上データを取得することができるようになる。
[実施の形態5]
上で述べた実施の形態ではマスク化処理ではオリジナル値に対してマスク値を加算する例を主に述べたが、マスク値の乗算も可能である。第2の実施の形態と同様の例で、説明する。
ここでは、図30(a)に示すように、住所番号は、市番号3桁、区町番号3桁及び番地番号5桁で表されるものとする。このような場合、マスク値r1には、小数点以下11桁中下位8桁が乱数となっている1.000********(*は乱数値を表す)を用いる。また、マスク値r2には、小数点以下11桁中下位5桁が乱数となっている1.000000*****を用いる。さらに、マスク値rallは、1の位と小数点以下11桁中11桁の全てが乱数となっている*.***********を用いる。そして、図30(b)に示すように、オリジナル値AAABBBCCCCCに対して、マスク値r2を乗ずると下位5桁が乱数でマスク化された値AAABBB*****が得られる。さらにマスク値r1を乗ずると、下位8桁が乱数でマスク化された値AAA********が得られる。最後に、マスク値rallを乗ずるとマスク化値***********が得られる。
一方、アンマスク処理を実施する場合、研究者及び保健所はマスク値r1、r2及びrallを有しているので、これらのマスク値をユーザ端末7から処理サーバ31に送信して、処理サーバ31は、***********/r1/r2/rallを計算すれば、オリジナル値である住所全体を得ることができる。一方、医者はマスク値r1及びrallを有しているので、これらのマスク値をユーザ端末7から処理サーバ31に送信して、処理サーバ31は、***********/r1/rallを計算すれば、アンマスク化値AAABBB*****といった区町単位の住所コードを得ることができる。さらに、一般人はマスク値rallを有しているので、このマスク値をユーザ端末7から処理サーバ31に送信して、処理サーバ31は、***********/rallを計算すれば、アンマスク化値AAA********といった市単位の住所コードを得ることができる。
上で述べたようなマスク値を生成するためのマスク値生成処理を、図31を用いて説明する。
マスク値生成部51は、レコード番号のカウンタjを1に初期化する(図31:ステップS131)。そして、マスク値生成部51は、j番目のレコードのためのi番目のマスク値ri,j(iは、1以上k以下の整数。但し、ユーザ権限の段階数をk+1とする。)を、マスク長biの乱数を用いて生成し、マスク値格納部52に格納する(ステップS133)。具体的には、Hを基数(H進法)とすると、1+H^(−ball)×(bi桁乱数)で算出する。より具体的には以下のように表される。
r1,j=1+H^(−ball)×(b1桁乱数)
r2,j=1+H^(−ball)×(b2桁乱数)
r3,j=1+H^(−ball)×(b3桁乱数)
:
:
rk,j=1+H^(−ball)×(bk桁乱数)
さらに、マスク値生成部51は、j番目のレコードのためのマスク値rall,jを、マスク長ballの乱数を用いて生成し、マスク値格納部52に格納する(ステップS135)。具体的には、Hを基数(H進法)とすると、(1桁乱数)+H^(−ball)×(ball桁乱数)で算出する。
そして、マスク値生成部51は、jを1インクリメントし(ステップS137)、jがレコード数を超えたかを判断する(ステップS139)。jがレコード数以下であればステップS133に戻る。一方、jがレコード数を超えた場合には、元の処理に戻る。
以上のようにマスク値を生成すれば、図30で模式的に示した乗算及び除算によるマスクの処理が可能となる。
なお、加算の場合と同様で、レコード毎に異なるマスク値を生成せず、レコード共通のマスク値を生成するようにしても良い。さらに、u個のレコード毎にマスク値を変更するようにしても良い。
次に、図32を用いて、乗算を利用したマスク値適用処理について説明する。
マスク値適用処理部53は、カウンタjを初期値「1」に設定する(ステップS141)。そして、マスク値適用処理部53は、j番目のレコードにおけるマスク化すべきオリジナル値Datajに対して、マスク値rall,j又はrallを適用してマスク化値MaskedDatajを生成し、マスク化値格納部55に格納する(ステップS143)。
レコード共通のマスク値を生成した場合には、以下のような演算を実施する。
MaskedDataj=Dataj*rall*Πiri
レコード毎にマスク値を生成した場合には、以下のような演算を実施する。
MaskedDataj=Dataj*rall,j*Πiri,j
u個のレコード毎にマスク値を生成した場合には、基本的にはレコード毎にマスク値を生成した場合と同様の演算が実施される。但し、マスク値の切替はu毎に行われるので、j=1からj=u−1まではj=1のマスク値が用いられ、j=uからj=2u−1まではj=uのマスク値が用いられ、j=2uからj=3u−1まではj=2uのマスク値が用いられ、以下同様である。
そして、マスク値適用処理部53は、jを1インクリメントし(ステップS145)、jがレコード数を超えたか判断する(ステップS147)。jがレコード数以下であればステップS143に戻る。一方、jがレコード数を超えた場合には、元の処理に戻る。
次に、図33を用いて、図32のマスク値適用処理を実施した場合に実施されるアンマスク処理について説明する。
マスク解除処理部315は、カウンタjを初期値「1」に設定する(図34:ステップS151)。そして、マスク解除処理部315は、j番目のレコードにおけるマスク化値MaskedDatajを、第1マスク化値格納部314から読み出し、このマスク化値MaskedDatajに対して、マスク値格納部312に格納されているマスク値を用いてアンマスク化値UnmaskedDatajを生成し、レコードjの他のデータと共にマスク解除データ格納部316に格納する(ステップS153)。
レコードに共通のマスク値を生成した場合には、アンマスク化値は以下のように演算される。
UnmaskedDataj=MaskedDataj/rall/Πiri
すなわち、マスク化値MaskedDatajから、ユーザから取得した全てのマスク値を除算することで、アンマスク化値UnmaskedDatajを生成する。マスク値については要求送信元のユーザのユーザ権限によって個数が異なるが、取得した全てのマスク値を除算する。Πiriは、riが無ければ「1」になる。
レコード毎にマスク値を生成した場合には、アンマスク化値は以下のように演算される。
UnmaskedDataj=MaskedDataj/rall,j/Πiri,j
すなわち、マスク化値MaskedDatajから、レコードjについてユーザから取得した全てのマスク値を除算することで、アンマスク化値UnmaskedDatajを生成する。マスク値については要求送信元のユーザのユーザ権限によって個数が異なるが、取得した全てのマスク値を除算する。Πiriは、riが無ければ「1」になる。
また、u個毎にマスク値を生成した場合には、マスク化値ri,j及びrall,jについては、マスク値の切替はu毎に行われるので、j=1からj=u−1まではj=1のマスク値が用いられ、j=uからj=2u−1まではj=uのマスク値が用いられ、j=2uからj=3u−1まではj=2uのマスク値が用いられ、以下同様である。
そして、マスク解除処理部315は、jを1インクリメントし(ステップS155)、jがレコード数を超えたか判断する(ステップS157)。jがレコード数以下である場合にはステップS153に戻る。一方、jがレコード数を超えている場合には、元の処理に戻る。
以上のように乗算と除算の組み合わせによっても、第1の実施の形態で述べた効果を得ることができるようになる。
[実施の形態6]
第2乃至第5の実施の形態では、ユーザ端末7からマスク値又は鍵をクラウドシステム3の処理サーバ31に送信して処理サーバ31でアンマスク処理を実施することになっていた。マスク値又は鍵をネットワーク1を介して送信する場合には、漏洩の危険性がある。
従って、例えばデータベース33から処理すべきデータを受信してユーザ端末7のマスク解除処理部73でアンマスク処理を実施した上で集計処理を実施するようにしても良い。但し、大量のデータをネットワーク1を介して要求元のユーザ端末7に送信することになる場合もあるので、このような処理が現実的な時間内で実施できない場合もある。
そこで、以下で述べるような処理を行うことで、鍵又はマスク値を処理サーバ31に送信することなく、集計処理結果をユーザ端末7で得ることができるようにする。
まず、同一のオリジナル値については同一のマスク化値が生成されるようにして、処理サーバ31がアンマスク処理をせずとも、ユーザ権限に応じた範囲で分類を行うことができるようにする。例えば図34に示すような住所のデータをマスク対象のオリジナル値とする。市名、区名、番地名は、何度も異なるレコードに出現する。これを、例えば図35に示すようなマスク値に変換する。例えば、「川崎市」であれば「X1市」に変換し、「横浜市」であれば「X2市」に変換し、「高津区」であれば「Y1区」に変換する。また、「中原区」であれば「Y2区」に変換し、「中央区」であれば「Y3区」に変換し、「南区」であれば「Y4区」に変換する。さらに、「111番地」であれば「Z1番地」に変換し、「112番地」であれば「Z2番地」に変換し、「200番地」であれば「Z3番地」に変換し、「300番地」であれば「Z4番地」に変換し、「400番地」であれば「Z5番地」に変換し、「500番地」であれば「Z6番地」に変換する。
そして、研究者及び地域保健所に対して、住所全体を参照できるようにするための鍵を配布しておき、図35のようなマスク化値を処理サーバ31から研究者及び地域保健所に集計結果として送信する。ユーザ端末7では、以下で述べるようなアンマスク処理を実施すれば、図34に示すようなオリジナル値を得ることができる。
これに対して、医者に対して、市及び区町を参照できるようにするための鍵を配布しておき、処理サーバ31において区町単位で感染者数を集計して、当該集計結果をユーザ端末7に送信する。例えば図35のようなマスク化値を、区町単位で集計すると、図36に示すような集計結果が得られる。図36に示すように「X1市Y1区」については「16」人、「X1市Y2区」については「4」人、「X2市Y3区」については「17」人といったように集計される。ユーザ端末7では、配布されている鍵を用いてアンマスク処理を実施すれば、図37に示すように市及び区町については平文になって感染者数を区町単位で理解できるようになる。
さらに、一般人に対して、市を参照できるようにするための鍵を配布しておき、処理サーバ31において市単位で感染者数を集計して、当該集計結果をユーザ端末7に送信する。例えば図35に示すようなマスク化値を、市単位で集計すると、図38に示すような集計結果が得られる。図38に示すように、「X1市」については「20」人、「X2市」については「31」人といったように集計される。ユーザ端末7では、配布されている鍵を用いてアンマスク処理を実施すれば、図39に示すように市については平文になって感染者数を市単位で理解できるようになる。
また、本実施の形態では、住所をマスク化対象のデータとするが、住所コードを用いるのではなく、住所を表現する文字列を、そのまま1文字2バイトの文字コードに置き換えた形式で処理する。例えば「川崎市」という文字列は、3×2バイト=6バイトの文字コードで表現される。これによって上で述べた住所コードを用いる方法より、情報量が大きくなるが、市コードや町区コードと市名や町名を対応付けるデータベースが不要となるので、システムの実装が簡略化できる。
図40(a)に示すように、市名は最大7文字で14バイト、町区名は最大5文字で10バイト、番地名は最大6文字で12バイトで、合計36バイトで表現することとする。
このため、一般人がアンマスク処理で用いることができるマスク値rallは、36バイト乱数となる。また、医者がアンマスク処理で用いることができるマスク値r1は、22(=10+12)バイト乱数となる。さらに、研究者及び地域保健所がアンマスク処理で用いることができるマスク値r2は、12バイト乱数となる。
従って、図40(b)に示すようなマスク化処理が行われる。本実施の形態では、排他的論理和が用いられる。すなわち、オリジナル値に対して、マスク値r1、r2及びrallを用いて排他的論理和演算を行う。
一方、図40(c)に示すようなアンマスク処理では、研究者及び地域保健所については、配布されている鍵から生成されるマスク値r1、r2及びrallを用いて、マスク化値に対して排他的論理和演算を行う。また、医者については、配布されている鍵から生成されるマスク値r1及びrallを用いて排他的論理和演算を行う。さらに、一般人については、配布されている鍵から生成されるマスク値rallを用いて排他的論理和演算を行う。図40(c)の演算については、ユーザ端末7側で行うので、鍵を処理サーバ31に送信せずとも、アクセスが許可されている範囲においてオリジナル値の部分を参照できるようになる。
以下、図41乃至図44を用いて、詳細な処理について説明する。まず、本実施の形態に係るマスク化処理を図41を用いて説明する。ここでは、処理サーバ31においてマスク化処理を実施する場合を説明する。また、鍵s1、s2及びsallについては、予め用意しておき、マスク値格納部312に格納しておくものとする。但し、最上位のユーザ権限を有するユーザには、鍵sall、s1及びs2を配布し、2番目のユーザ権限を有するユーザには、鍵sall及びs1を配布し、最下位のユーザ権限を有するユーザには、鍵sallを配布するものとする。
マスク値生成部322は、レコード番号を表すカウンタjを1に初期化する(ステップS171)。そして、マスク値生成部322は、j番目のレコードにおけるマスク対象のオリジナル値Datajを所定単位毎に分割してデータ部分C、D及びBを生成し、例えばメインメモリなどの記憶装置に格納する(ステップS173)。C、D及びBは、上で述べた例では市、区町及び番地に相当する。但し、分割個数や各データ部分のデータ長は任意である。
その後、マスク値生成部322は、データ部分Cと鍵sallとのハッシュcHと、データ部分Dと鍵s1とのハッシュdHと、データ部分Bと鍵s2とのハッシュbHとを生成し、例えばメインメモリなどの記憶装置に格納する(ステップS175)。
例えばSHA256を用いてハッシュ値を算出する。具体的には以下のとおりである。
cH=SHA256(C|sall)
dH=SHA256(D|s1)
bH=SHA256(B|s2)
cH、dH及びbHについては、一方向関数を用いており、さらに鍵sall、s1及びs2がなければオリジナル値を得ることはできないので、安全である。
但し、上で述べたようなハッシュ関数SHA256であれば256ビットの出力となり、以下で述べるように連結して用いることになるので、マスク化値の長さが長すぎることになる場合もある。従って、下位Lビット(例えば64ビット)のみを採用するようにしてもよい。
さらに、マスク値生成部322は、ハッシュ値cHと鍵sallとのハッシュ値からrall,jを生成し、ハッシュ値dHと鍵s1とのハッシュ値からr1,jを生成し、ハッシュ値bHと鍵s2とのハッシュ値からr2,jを生成し、マスク値格納部312に格納する(ステップS177)。
例えばSHA256を用いてハッシュ値を算出する。具体的には以下のとおりである。
rall,j=SHA256(cH|sall)
r1,j=SHA256(dH|s1)
r2,j=SHA256(bH|s2)
なお、rall,jについては、オリジナル値Datajのデータ長以上でなければならないので、長すぎる場合には下位Lビットを採用する。一方、短すぎる場合には、SHA256(cH|sall|0)|SHA256(cH|sall|1)|・・・といったように、カウンタを連結した値をハッシュ関数に入れた結果を連結してゆくことによってオリジナル値Datajのデータ長以上にする。
同様に、r1,jについては、SHA256(dH|s1)のうちデータ部分D及びBのデータ長分だけ採用する。短すぎる場合には、rall,jと同様の方式を採用して長くする。
さらに、r2,jについては、SHA256(bH|s2)のうちデータ部分Bのデータ長分だけ採用する。短すぎる場合には、rall,jと同様の方式を採用して長くする。
そして、マスク値適用処理部323は、オリジナル値Datajとrall,jとr1,jとr2,jとの排他的論理和を算出し、さらに、排他的論理和の結果とcHとdHとbHとのビット結合を行い、マスク化値MaskedDatajとしてマスク値格納部312に格納する(ステップS179)。
すなわち、以下のように表現される。
MaskedDataj=cH|dH|bH|(Dataj+r1,j+r2,j+rall,j)
なお、上記の式の「+」は排他的論理和を表すものとする。
その後、マスク値生成部322は、jを1インクリメントし(ステップS181)、jがレコード数を超えているか判断する(ステップS183)。jがレコード数を超えていない場合にはステップS173に戻る。一方、jがレコード数を超えた場合には元の処理に戻る。
cH|dH|bHについては、アンマスク処理において鍵と併せてマスク値を生成するために、排他的論理和の結果に連結する。上でも述べたように、cH|dH|bHだけでは、オリジナル値を復元できないので、データ漏洩の恐れはない。
さらに、上で述べたcH|dH|bH部分は、市であればcHと1対1対応しており、区町であればdHと1対1対応しており、番地であればbHと1対1対応している。従って、この部分を用いてアンマスク処理を行わずに分類を行うことができる。
次に、ユーザが集計結果を取得する際の処理について、図42乃至図44を用いて説明する。
ユーザ端末7の要求送信部71は、ユーザからの指示に応じて、当該ユーザのユーザ権限の段階を表すデータ及び集計処理の対象データ群を指定するデータを含む集計要求を、クラウドシステム3の処理サーバ31に送信する(ステップS201)。上でも述べたように鍵又はマスク値については送信しない。
処理サーバ31の要求受信部311は、ユーザ端末7から、ユーザ権限の段階を表すデータ及び集計処理の対象データ群を指定するデータを含む集計要求を受信し(ステップS203)、マスク化値取得部313にデータベース33から集計処理の対象データ群を指定するデータを取得させ、第1マスク化値格納部314に格納させる。さらに、要求受信部311は、集計処理部317に処理を指示する。
集計処理部317は、第1マスク化値格納部314に格納されているデータについて、ユーザ権限の段階に応じたデータ区分でレコードを分類し、分類毎にレコード内の集計対象数値(例えば集計要求で指定)を合計する集計処理を実施し、集計結果格納部319に格納する(ステップS205)。上で述べた例で一般人であれば市単位「cH」でレコードを分類し、集計対象数値である感染者数を合計する。また、医者であれば区町単位「cH|dH」でレコードを分類し、集計対象数値である感染者数を合計する。研究者及び地域保健所であれば、番地単位「cH|dH|bH」でレコードを分類し、集計対象数値である感染者数を合計する。
そして、出力部320は、集計結果格納部319に格納されている集計結果のデータを、要求受信部311から受け取ったアドレス等を用いてユーザ端末7に送信する(ステップS207)。これに対して、ユーザ端末7のデータ受信部74は、処理サーバ31から集計結果のデータを受信し、データ格納部75に格納する(ステップS209)。図35、図36又は図38に示すようなデータがデータ格納部75に格納される。
そして、ユーザ端末7のマスク解除処理部73は、データ格納部75に格納されている集計結果に含まれるマスク化値に対して、マスク値格納部76に格納されている鍵を用いてアンマスク処理を実施する(ステップS211)。アンマスク処理の処理結果についてはデータ格納部75に格納される。アンマスク処理については、図43及び図44を用いて説明する。
マスク解除処理部73は、レコードのカウンタkを1に初期化する(ステップS221)。そして、マスク解除処理部73は、k番目のレコードにおけるマスク化値から、当該マスク化値に連結されているハッシュ値cHとdHとbHとを抽出し、例えばメインメモリなどの記憶装置に格納する(ステップS223)。
そして、マスク解除処理部73は、データ格納部75に格納されている鍵の個数等からユーザが最上位のユーザ権限を有しているか確認する(ステップS225)。ユーザ権限の段階を表すデータをデータ格納部75に格納しておくようにしても良い。
ユーザが最上位のユーザ権限を有する場合には、鍵sallとcHとのハッシュ値をrall,kとして生成し、鍵s1とdHとのハッシュ値をr1,kとして生成し、鍵s2とbHとのハッシュ値をr2,kとして生成し、データ格納部75に格納する(ステップS227)。本ステップは実質的にステップS177と同じであり、各マスク値のマスク長をそれぞれの鍵に対応付けて例えばマスク値格納部76に格納しておき、算出されたハッシュ値からマスク長の値を抽出する。
そして、マスク解除処理部73は、k番目のレコードにおけるマスク化値からハッシュ値以外の部分XorDataを抽出し、当該XorDataとマスク値rall,kとr1,kとr2,kとの排他的論理和を算出することでアンマスク化値を生成し、データ格納部75に格納する(ステップS229)。このようにすれば、オリジナル値が復元される。処理は端子Aを介して図44のステップS241に移行する。
一方、ユーザ権限が最上位ではない場合には、マスク解除処理部73は、ユーザ権限の上から2段階目であるか判断する(ステップS231)。ユーザ権限が上から2段階目でない場合には、端子Bを介して図44の処理に移行する。一方、ユーザ権限が上から2段階目である場合には、マスク解除処理部73は、鍵sallとハッシュ値cHとのハッシュ値をマスク値rall,kとして生成し、鍵s1とハッシュ値dHとのハッシュ値をマスク値r1,kとして生成し、データ格納部75に格納する(ステップS233)。このステップについてもステップS117とほぼ同じであるが、鍵s2はないので、その分演算を行わない点が異なる。
そして、マスク解除処理部73は、k番目のレコードにおけるマスク化値からハッシュ値以外の部分XorDataを抽出し、当該XorDataとマスク値rall,kとr1,kとの排他的論理和を算出することでアンマスク化値を生成し、データ格納部75に格納する(ステップS235)。これによって、上で述べた例では市及び区町についてのデータについてはアンマスク化されて、図37に示すようなデータが得られるようになる。処理は端子Aを介して図44のステップS241に移行する。
図44の処理の説明に移行して、端子Bの後に、マスク解除処理部73は、鍵sallとハッシュ値cHとのハッシュ値をマスク値rall,kとして生成し、データ格納部75に格納する(ステップS237)。このステップについてもステップS117とほぼ同じであるが、鍵s1及びs2はないので、その分演算を行わない点が異なる。
そして、マスク解除処理部73は、k番目のレコードにおけるマスク化値からハッシュ値以外の部分XorDataを抽出し、当該XorDataとマスク値rall,kとの排他的論理和を算出することでアンマスク化値を生成し、データ格納部75に格納する(ステップS239)。これによって、上で述べた例では市についてのデータについてはアンマスク化されて、図39に示すようなデータが得られるようになる。
そして、マスク解除処理部73は、kを1インクリメントし(ステップS241)、kが受信レコード数を超えたか判断する(ステップS243)。kが受信レコード数を超えていない場合には端子Cを介してステップS223に戻る。一方、kが受信レコード数を超えた場合には、元の処理に戻る。
このようすればユーザ権限に応じたデータをアンマスク化することができる。
図42の処理の説明に戻って、出力部77は、データ格納部75に格納されており且つアンマスク化されたデータを、表示装置等の出力装置に出力する(ステップS213)。上でも述べたように、図34、図37又は図39のようなデータが出力されるようになる。
このように、鍵又はマスク値をネットワーク1を介して処理サーバ31に送らなくても、集計結果をユーザ端末7において生成できるようになる。
なお、市の名称、区町の名称、番地の付与の仕方などが変更されれば、ハッシュ値が変化するため、マスク値も変化する。従って、市の名称、区町の名称、番地の付与の仕方が変更された場合には、それに同期してマスク化処理を行うものとする。
[実施の形態7]
第6の実施の形態によれば、クラウドシステム3の処理サーバ31に鍵を送信することなく、ユーザ権限に応じた集計処理(すなわち分析)が可能となる。このメリットを応用すると、クラウドシステム3の処理サーバ31に鍵を送信することなく、複数の組織間での協業が可能となる。様々な組織が同一のクラウド環境を利用することで、複数の企業が互いのデータを持ち寄り、協業するといった利用法が可能になる。このような利用形態においては、以下の2つの要件が考えられる。
・協業関係にない企業(及び個別ユーザ)には情報閲覧を許可しない
・協業関係にある企業間では、企業内のユーザ権限に応じた情報閲覧を許可する
これらの問題は、データベース33にA社とB社の両社のデータを蓄積しておき、A社とB社とで鍵を一部共有することで解決される。
具体的には、自社の鍵を用いて自社のデータをマスク化して、クラウドシステム3のデータベース33に登録する。なお、マスク化については管理者装置5を各社に設けて行うようにしてもよいし、ユーザ端末に管理者装置5の機能を持たせるようにしても良い。
より具体的には、A社のデータはA社の鍵でマスク化されクラウドシステム3のデータベース33に登録され、B社のデータはB社の鍵でマスク化されクラウドシステム3のデータベース33に登録される。A社及びB社のそれぞれは、データの参照や分析(集計処理)に用いられる鍵を共有する。鍵の共有には、SSL(Secure Socket Layer)やIPsecといった一般的な暗号化通信を、両社の装置間で直接行うことで、クラウドシステム3に鍵を送信せずに行うことができる。鍵が共有されれば、A社はB社が登録したデータを参照したり分析したりすることができ、B社はA社が登録したデータを参照したり分析したりすることができる。すなわち、A社のデータであればA社の鍵を用いて、ローカルにアンマスクすることで所望の結果を得ることができ、B社のデータであればB社の鍵を用いて、ローカルにアンマスクすることで所望の結果を得ることができる。
このシステムにおいて、A社及びB社のデータを参照したり分析したりするためには、A社及びB社の鍵を取得することになるが、この鍵はA社及びB社以外知ることができない値であるので、協業に無関係な企業やユーザに対する情報漏洩を防止することができる。さらに、A社及びB社それぞれが鍵を共有するプロセスにおいても、ユーザ権限に応じて適切なレベルの鍵のみを渡すことで、企業内のユーザ権限に応じた柔軟なプライバシ制御が可能である。例えば、A社及びB社は、協業するために情報を共有するが、完全なオリジナル値はお互いに見せないようにしながら、協業における業務分析に用いられるデータのみを提示できるようになる。具体的には、k段階目のユーザ権限を制御する鍵rall、r1、r2、...rk-1のうち、一部の鍵を相手の企業に渡すことで、協業相手の企業に見せたい情報と見せたくない情報を容易に制御することができる。さらにこれらの鍵の数を、協業相手の企業のユーザの役職に応じて切り替えることで、重要な役職には多くの情報を、一般的な役職には一般的な情報を参照する、といった役職に応じた機密情報の制御を容易に実現することができる。
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。すなわち、上で述べた機能ブロック図については一例であって、必ずしも実際のプログラムモジュール構成とは一致しない場合もある。また、処理フローについても処理結果が変わらない限り、処理順番を入れ替えたり、並列して実行してもよい。
さらに、上で述べた技術は様々に変形可能であるから、各機能についてはネットワーク上の様々な位置に配置されることになる。すなわち、様々な装置間で協働して上で述べたような機能を実現する。
なお、上で述べたユーザ端末7及び9、管理者装置5並びに処理サーバ31等は、コンピュータ装置であって、図45に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)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のデータをマスクするための第1のデータ長以上の長さを有する第1のマスクと、第1のデータ長より短く且つ権限レベルに応じた第2のデータ長を有する、権限レベルの数に応じた個数の第2のマスクとを生成し、記憶装置に格納するマスク生成ステップと、(B)記憶装置に格納されている第1のマスクと第2のマスクとを、第1のデータに対して重ねて適用するマスク処理を実施し、第1のデータに対して当該マスク処理を実施した後のデータである第2のデータを、第2のデータ格納部に格納するマスクステップとを含む。
このように第1のマスクで第1のデータをマスクすることによって第1のデータ全体の秘匿が可能になる。また、第2のデータを分析しても正しい分析は行われない。さらに、第1のデータに複数のマスクを重ねて適用しておくことで、マスクの配布先を権限レベルに応じて適切に制御することによって、第1のデータの開示度合いをも権限レベルに応じて適切に調整できるようになる。すなわち、オープンな環境においてデータベース内のデータを利用に適した形で適切に秘匿することができるようになる。
また、上で述べた第2のデータ長は、権限レベルが高いほど短くなるように設定しても良い。逆に、権限レベルが高いほど、マスクされるデータ長が短くなるので、第1のデータの開示度合いも高くなる。
また、上で述べたマスク処理が、第1のデータに対する第1のマスク及び第2のマスクの加算、減算、乗算、除算又は排他的論理和であるようにしてもよい。これらの演算については逆演算を用意できるためである。
さらに、上で述べたマスク生成ステップが、第1のデータ長以上の乱数を発生させることで第1のマスクを生成し、記憶装置に格納するステップと、第2のデータ長の乱数を発生させることで第2のマスクを生成し、記憶装置に格納するステップとを含むようにしてもよい。第1のデータを秘匿するためのデータであれば乱数でなくとも良い。
また、上で述べた第1のデータがデータベースにおけるレコードの少なくとも一部のデータであることもある。そのような場合、上で述べたマスク生成ステップを、レコード毎に実施するようにしてもよい。また、上で述べたマスク生成ステップを、所定数のレコード毎に実施するようにしてもよい。ある範囲のレコード全てについて同一のマスクを使用するようにしても良い。
また、上で述べた第1のデータがデータベースにおけるレコードの少なくとも一部のデータであることもある。そのような場合、上で述べたマスク生成ステップが、鍵データ格納部に格納されている、第1のマスクのための第1の鍵とレコードの識別子とに対して所定の一方向関数を適用して第1のマスクを生成し、記憶装置に格納するステップと、鍵データ格納部に格納されている、第2のマスクのための第2の鍵とレコードの識別子とに対して所定の一方向関数を適用して第2のマスクを生成し、記憶装置に格納するステップとを含むようにしてもよい。このように一方向関数(例えばハッシュ関数や暗号化アルゴリズム)を使用することで、乱数と同じようなマスクに適したデータを生成できるようになる。なお、レコードの識別子を用いることで、ユーザは鍵を有しているだけで各レコードのマスクを生成できるようになる。すなわち、ユーザが保持するデータ量を減らすことができる。
さらに、上で述べたマスク生成ステップが、(a1)第1のデータ格納部に格納されている第1のデータを権限レベル毎の開示範囲に応じて決められるデータ長で分割して複数のデータ部分を生成し、記憶装置に格納するステップと、(a2)複数のデータ部分のうち最上位のデータ部分と、鍵データ格納部に格納されている、最上位のデータ部分のための第1の鍵とに対して第1の一方向関数を適用して、第1の一方向関数値を生成し、記憶装置に格納するステップと、(a3)複数のデータ部分のうち第2位以降の各データ部分と、鍵データ格納部に格納されており且つ当該データ部分のための第2の鍵とに対して第1の一方向関数を適用して、第2の一方向関数値を生成し、記憶装置に格納するステップと、(a4)記憶装置に格納された第1の一方向関数値と第1の鍵とに対して第2の一方向関数を適用して第1のマスクを生成し、記憶装置に格納するステップと、(a5)記憶装置に格納された第2の一方向関数値と当該第2の一方向関数値を生成する際に用いられた対応する第2の鍵とに対して第2の一方向関数を適用して第2のマスクを生成し、記憶装置に格納するステップとを含むようにしてもよい。その場合、上で述べたマスクステップが、第2のデータ格納部に格納されている第2のデータに第1の一方向関数値と第2の一方向関数値とを連結したデータを生成し、第3のデータ格納部に格納するステップを含むようにしてもよい。
第1の一方向関数値と第2の一方向関数値とを連結したことによって、アンマスク処理を実施する前にこれらの値を用いてマスク化されたデータを分類できるようになる。すなわち、それらの値についてはマスク化されたデータであっても、オリジナル値との対応付けが1対1になる。よって、データ部分の単位でマスク化されたデータを分類しても、マスク化前のデータの分類と一致するようになる。
さらに、(a1)乃至(a5)ステップを含む第1の形態に係る情報処理方法は、ある権限レベルが指定されると、当該ある権限レベルに対応付けられている、第1のデータ内における1又は複数のデータ部分についての第2の一方向関数値で第1のデータを含むレコードに対して分類処理を実施し、分類結果を出力するステップをさらに含むようにしても良い。上で述べたような処理によって一方向関数値を含むマスク後のデータを生成する場合には、一方向関数値で分類処理を行っても、オリジナル値で分類するのと同じ結果を得ることができる。
本実施の形態の第2の態様に係る情報処理方法は、(C)マスクデータを取得し、記憶装置に格納するマスク取得ステップと、(D)第1のデータ長を有する第1のデータをマスクするための第1のデータ長以上の長さを有する第1のマスクと、第1のデータ長より短く且つ権限レベルに応じた第2のデータ長を有する、権限レベルの数に応じた個数の第2のマスクとを重ねて適用するマスク処理が実施されており且つ第1データ格納部に格納されているマスク化データに対して、記憶装置に格納されているマスクデータに含まれる、マスク化データのための全てのマスクを重ねて適用する逆マスク処理を実施し、当該逆マスク処理の結果である逆マスク化データを、第2データ格納部に格納する逆マスク処理ステップとを含む。
これによって、取得されたマスクデータに含まれているマスクに応じた逆マスク処理(マスク解除処理、アンマスク処理とも呼ぶ)を行うことで、権限レベルに応じた範囲でマスク化前のデータをユーザに提示することができるようになる。
また、上で述べた第2のデータ長は、権限レベルが高いほど短くなるようにしてもよい。
さらに、上で述べたマスク処理が、第1のデータに対する第1のマスク及び第2のマスクの加算、減算、乗算、除算又は排他的論理和である場合もある。そして、上で述べた逆マスク処理が、マスク処理で加算が採用されていれば減算、マスク処理で減算が採用されていれば加算、マスク処理で乗算が採用されていれば除算、マスク処理で除算が採用されていれば乗算、マスク処理で排他的論理和が採用されていれば排他的論理和である場合もある。適切にマスク解除を行うことができるようになる。
さらに、上で述べたマスク化データがデータベースにおけるレコードの少なくとも一部のデータであることもある。その場合、上で述べたマスクデータが、レコード毎にマスクを含む場合もある。そして、上で述べた逆マスク処理ステップを、レコード毎に当該レコードのマスクを用いて実施するようにしてもよい。一方、上で述べたマスクデータが、所定数のレコード毎にマスクを含む場合もある。その場合、逆マスク処理ステップを、所定数のレコード毎に当該所定数のレコードのためのマスクを用いて実施するようにしてもよい。さらに、レコードに共通のマスクが用意されている場合もある。
さらに、上で述べたマスク化データがデータベースにおけるレコードの少なくとも一部のデータである場合もある。そして、上で述べた第2の態様に係る情報処理方法は、鍵データを取得し、鍵データ格納部に格納するステップをさらに含むようにしてもよい。その場合、上で述べたマスク取得ステップが、鍵データ格納部に格納されている鍵データに含まれる、第1のマスクのための第1の鍵とレコードの識別子とに対して所定の一方向関数を適用して第1のマスクを生成し、記憶装置に格納するステップと、鍵データ格納部に格納されている鍵データに第2のマスクのための第2の鍵が含まれている場合には、当該第2の鍵とレコードの識別子とに対して所定の一方向関数を適用して第2のマスクを生成し、記憶装置に格納するステップとを含むようにしてもよい。さらに、逆マスク処理ステップを、レコード毎に当該レコードのマスクを用いて実施するようにしてもよい。このようにすれば、鍵データを保持していればマスクを保持していなくても、マスクを生成できる。
また、逆マスク化データがデータベースにおけるレコードの少なくとも一部のデータである場合もある。そのような場合、第2の態様に係る情報処理方法は、逆マスク化データに基づきレコードを分類し、各分類に分類されたレコードに含まれる他の値に対して集計処理を実施するステップをさらに含むようにしてもよい。例えば住所がマスク化されていれば、逆マスク処理によって現れた住所の一部分に基づき分類を行うようにしても良い。
さらに、上で述べたマスク処理が、第1のデータに対する第1のマスク及び第2のマスクの加算である場合もある。その場合、逆マスク処理が、マスク化データから、マスクデータに含まれる当該マスク化データのための全てのマスクを減算する処理である。そして、逆マスク化データがデータベースにおけるレコードに含まれる数値データである場合もある。そのような場合には、第2の態様に係る情報処理方法は、レコードに含まれる他のデータに基づきレコードを分類し、逆マスク化データで表される数値を加算し、加算結果から上記最もデータ長が短いマスクの平均値から算出される誤差を引くことによって集計結果を算出するステップをさらに含むようにしてもよい。このように、数値データをマスク化する場合には、統計的に誤差を修正することによって、逆マスク処理で一部がマスクされたままでも、確からしい値を出力することができるようになる。
また、第2の態様に係る情報処理方法は、マスク化データと、第1のデータを権限レベル毎の開示範囲に応じて決められるデータ長で分割することによって得られる複数のデータ部分の各々と対応する鍵との一方向関数値とを含む秘匿化データを取得し、第1データ格納部に格納するステップをさらに含むようにしてもよい。そのような場合、上で述べたマスク取得ステップが、鍵データ格納部に格納されている鍵データに含まれる第2の鍵(すなわちユーザが保持している鍵)と上記秘匿化データに含まれ且つ第1データ格納部に格納された対応する一方向関数値とに対して第2の一方向関数を適用してマスクデータを生成し、記憶装置に格納するステップを含むようにしても良い。
このような構成であれば、逆マスク処理を行う際に、第2の鍵を、秘匿化データを蓄積しているデータベース側の他のコンピュータに送信せずとも、ローカルに逆マスク処理を実施することができるようになる。すなわち、鍵の漏洩リスクを減らすことができるようになる。なお、秘匿化データに含まれる一方向関数値と、その元となるデータ部分とは1対1関係にあり、秘匿化データも、一方向関数値を用いればデータ部分の単位で分類することができる。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1のデータ格納部に格納されており且つ第1のデータ長を有する第1のデータをマスクするための前記第1のデータ長以上の長さを有する第1のマスクと、前記第1のデータ長より短く且つ権限レベルに応じた第2のデータ長を有する、前記権限レベルの数に応じた個数の第2のマスクとを生成し、記憶装置に格納するマスク生成ステップと、
前記記憶装置に格納されている前記第1のマスクと前記第2のマスクとを、前記第1のデータに対して重ねて適用するマスク処理を実施し、前記第1のデータに対して当該マスク処理を実施した後のデータである第2のデータを、第2のデータ格納部に格納するマスクステップと、
を含み、コンピュータに実行される情報処理方法。
(付記2)
前記第2のデータ長は、前記権限レベルが高いほど短くなる
付記1記載の情報処理方法。
(付記3)
前記マスク処理が、前記第1のデータに対する前記第1のマスク及び前記第2のマスクの加算、減算、乗算、除算又は排他的論理和である
付記1又は2記載の情報処理方法。
(付記4)
前記マスク生成ステップが、
前記第1のデータ長以上の乱数を発生させることで前記第1のマスクを生成し、前記記憶装置に格納するステップと、
前記第2のデータ長の乱数を発生させることで前記第2のマスクを生成し、前記記憶装置に格納するステップと、
を含む付記1乃至3のいずれか1つ記載の情報処理方法。
(付記5)
前記第1のデータがデータベースにおけるレコードの少なくとも一部のデータであり、
前記マスク生成ステップを、前記レコード毎に実施する
付記1乃至4のいずれか1つ記載の情報処理方法。
(付記6)
前記第1のデータがデータベースにおけるレコードの少なくとも一部のデータであり、
前記マスク生成ステップを、所定数のレコード毎に実施する
付記1乃至4のいずれか1つ記載の情報処理方法。
(付記7)
前記第1のデータがデータベースにおけるレコードの少なくとも一部のデータであり、
前記マスク生成ステップが、
鍵データ格納部に格納されている、前記第1のマスクのための第1の鍵と前記レコードの識別子とに対して所定の一方向関数を適用して前記第1のマスクを生成し、前記記憶装置に格納するステップと、
前記鍵データ格納部に格納されている、前記第2のマスクのための第2の鍵と前記レコードの識別子とに対して前記所定の一方向関数を適用して前記第2のマスクを生成し、前記記憶装置に格納するステップと、
を含む付記1乃至4のいずれか1つ記載の情報処理方法。
(付記8)
前記マスク生成ステップが、
前記第1のデータ格納部に格納されている前記第1のデータを前記権限レベル毎の開示範囲に応じて決められるデータ長で分割して複数のデータ部分を生成し、前記記憶装置に格納するステップと、
前記複数のデータ部分のうち最上位のデータ部分と、鍵データ格納部に格納されている、前記最上位のデータ部分のための第1の鍵とに対して第1の一方向関数を適用して、第1の一方向関数値を生成し、前記記憶装置に格納するステップと、
前記複数のデータ部分のうち第2位以降の各データ部分と、前記鍵データ格納部に格納されており且つ当該データ部分のための第2の鍵とに対して前記第1の一方向関数を適用して、第2の一方向関数値を生成し、前記記憶装置に格納するステップと、
前記記憶装置に格納された前記第1の一方向関数値と前記第1の鍵とに対して第2の一方向関数を適用して前記第1のマスクを生成し、前記記憶装置に格納するステップと、
前記記憶装置に格納された前記第2の一方向関数値と当該第2の一方向関数値を生成する際に用いられた対応する第2の鍵とに対して前記第2の一方向関数を適用して前記第2のマスクを生成し、前記記憶装置に格納するステップと、
を含み、
前記マスクステップが、
前記第2のデータ格納部に格納されている前記第2のデータに前記第1の一方向関数値と前記第2の一方向関数値とを連結したデータを生成し、第3のデータ格納部に格納するステップ
を含む付記1記載の情報処理方法。
(付記9)
ある権限レベルが指定されると、当該ある権限レベルに対応付けられている、前記第1のデータ内における1又は複数のデータ部分についての前記第2の一方向関数値で前記第1のデータを含むレコードに対して分類処理を実施し、分類結果を出力するステップ
をさらに含む付記8記載の情報処理方法。
(付記10)
マスクデータを取得し、記憶装置に格納するマスク取得ステップと、
第1のデータ長を有する第1のデータをマスクするための前記第1のデータ長以上の長さを有する第1のマスクと、前記第1のデータ長より短く且つ権限レベルに応じた第2のデータ長を有する、前記権限レベルの数に応じた個数の第2のマスクとを重ねて適用するマスク処理が実施されており且つ第1データ格納部に格納されているマスク化データに対して、前記記憶装置に格納されている前記マスクデータに含まれる、前記マスク化データのための全てのマスクを重ねて適用する逆マスク処理を実施し、当該逆マスク処理の結果である逆マスク化データを、第2データ格納部に格納する逆マスク処理ステップと、
を含み、コンピュータに実行される情報処理方法。
(付記11)
前記第2のデータ長は、前記権限レベルが高いほど短くなる
付記10記載の情報処理方法。
(付記12)
前記マスク処理が、前記第1のデータに対する前記第1のマスク及び前記第2のマスクの加算、減算、乗算、除算又は排他的論理和であり、
前記逆マスク処理が、前記マスク処理で加算が採用されていれば減算、前記マスク処理で減算が採用されていれば加算、前記マスク処理で乗算が採用されていれば除算、前記マスク処理で除算が採用されていれば乗算、前記マスク処理で排他的論理和が採用されていれば排他的論理和である
付記10又は11記載の情報処理方法。
(付記13)
前記マスク化データがデータベースにおけるレコードの少なくとも一部のデータであり、
前記マスクデータが、前記レコード毎にマスクを含み、
前記逆マスク処理ステップを、前記レコード毎に当該レコードのマスクを用いて実施する
付記10乃至12のいずれか1つ記載の情報処理方法。
(付記14)
前記マスク化データがデータベースにおけるレコードの少なくとも一部のデータであり、
前記マスクデータが、前記所定数のレコード毎にマスクを含み、
前記逆マスク処理ステップを、前記所定数のレコード毎に当該所定数のレコードのためのマスクを用いて実施する
付記10乃至12のいずれか1つ記載の情報処理方法。
(付記15)
前記マスク化データがデータベースにおけるレコードの少なくとも一部のデータであり、
鍵データを取得し、鍵データ格納部に格納するステップ
をさらに含み、
前記マスク取得ステップが、
前記鍵データ格納部に格納されている前記鍵データに含まれる、前記第1のマスクのための第1の鍵と前記レコードの識別子とに対して所定の一方向関数を適用して前記第1のマスクを生成し、前記記憶装置に格納するステップと、
前記鍵データ格納部に格納されている前記鍵データに前記第2のマスクのための第2の鍵が含まれている場合には、当該第2の鍵と前記レコードの識別子とに対して前記所定の一方向関数を適用して前記第2のマスクを生成し、前記記憶装置に格納するステップと、
を含み、
前記逆マスク処理ステップを、前記レコード毎に当該レコードのマスクを用いて実施する
付記10乃至13のいずれか1つ記載の情報処理方法。
(付記16)
前記逆マスク化データがデータベースにおけるレコードの少なくとも一部のデータであり、
前記逆マスク化データに基づきレコードを分類し、各分類に分類されたレコードに含まれる他の値に対して集計処理を実施するステップ
をさらに含む付記10乃至15のいずれか1つ記載の情報処理方法。
(付記17)
前記マスク処理が、前記第1のデータに対する前記第1のマスク及び前記第2のマスクの加算であり、
前記逆マスク処理が、前記マスク化データから、前記マスクデータに含まれる当該マスク化データのための全てのマスクを減算する処理であり、
前記逆マスク化データがデータベースにおけるレコードに含まれる数値データであり、
前記レコードに含まれる他のデータに基づき前記レコードを分類し、前記逆マスク化データで表される数値を加算し、加算結果から前記最もデータ長が短いマスクの平均値から算出される誤差を引くことによって集計結果を算出するステップ
をさらに含む付記10又は11のいずれか1つ記載の情報処理方法。
(付記18)
前記マスク化データと、前記第1のデータを前記権限レベル毎の開示範囲に応じて決められるデータ長で分割することによって得られる複数のデータ部分の各々と対応する鍵との一方向関数値とを含む秘匿化データを取得し、前記第1データ格納部に格納するステップ
をさらに含み、
前記マスク取得ステップが、
鍵データ格納部に格納されている鍵データに含まれる第2の鍵と前記秘匿化データに含まれ且つ前記第1データ格納部に格納された対応する前記一方向関数値とに対して第2の一方向関数を適用して前記マスクデータを生成し、前記記憶装置に格納するステップ
を含む付記10記載の情報処理方法。
(付記19)
第1のデータ格納部に格納されており且つ第1のデータ長を有する第1のデータをマスクするための前記第1のデータ長以上の長さを有する第1のマスクと、前記第1のデータ長より短く且つ権限レベルに応じた第2のデータ長を有する、前記権限レベルの数に応じた個数の第2のマスクとを生成し、記憶装置に格納するマスク生成部と、
前記記憶装置に格納されている前記第1のマスクと前記第2のマスクとを、前記第1のデータに対して重ねて適用するマスク処理を実施し、前記第1のデータに対して当該マスク処理を実施した後のデータである第2のデータを、第2のデータ格納部に格納するマスク処理部と、
を有する情報処理装置。
(付記20)
マスクデータを取得し、記憶装置に格納するデータ取得部と、
第1のデータ長を有する第1のデータをマスクするための前記第1のデータ長以上の長さを有する第1のマスクと、前記第1のデータ長より短く且つ権限レベルに応じた第2のデータ長を有する、前記権限レベルの数に応じた個数の第2のマスクとを重ねて適用するマスク処理が実施されており且つ第1データ格納部に格納されているマスク化データに対して、前記記憶装置に格納されている前記マスクデータに含まれる、前記マスク化データのための全てのマスクを重ねて適用する逆マスク処理を実施し、当該逆マスク処理の結果である逆マスク化データを、第2データ格納部に格納する逆マスク処理部と、
を有する情報処理装置。