"第1のユーザのコンピュータにより実行される情報処理方法であって、第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記第2のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する処理と、前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成する生成処理と、前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信する処理と、前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理と、を含む情報処理方法。前記他の装置が、前記第2のユーザ以外の第三者の装置であり、前記他の装置が、前記第1のユーザのコンピュータ及び前記第2のユーザのコンピュータから、暗号化された前記ベクトルの各要素値を受信し、暗号化されたままで前記ベクトルの内積値を算出し、前記他の装置が、前記第1のユーザのコンピュータ及び前記第2のユーザのコンピュータへ、暗号化された前記ベクトルの内積値を送信する請求項1記載の情報処理方法。前記他の装置が、前記第2のユーザのコンピュータであり、前記第2のユーザのコンピュータから、暗号化された前記ベクトルの各要素値を受信する処理と、前記生成処理において生成された前記ベクトルの要素値と、暗号化された前記ベクトルの各要素値から、暗号化された前記ベクトルの内積値を算出する処理と、暗号化された前記ベクトル値の内積値を、前記他の装置に送信する処理と、をさらに含む請求項1記載の情報処理方法。第1のユーザのコンピュータに、第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記第2のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する処理と、前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成する生成処理と、前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信する処理と、前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理と、を、実行させるためのプログラム。他のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記他のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する識別子処理部と、前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成するベクトル生成部と、前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信し、前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理部と、を有する情報処理装置。従って、本技術の目的は、一側面においては、データ保有者間で可能な限りデータを明かさずに特定の2属性について共起数を得るための技術を提供することである。本技術に係る情報処理方法は、第1のユーザのコンピュータにより実行される情報処理方法であって、A第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各識別子について、第2のユーザと共通して使用されるハッシュ関数を用いて、予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて識別子を第2のデータ格納部に格納する処理と、B予め定められた個数のハッシュ値の各々について、第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に識別子が対応付けられていない場合には0を特定することで、予め定められた個数の要素値を有するベクトルを生成する生成処理と、Cベクトルの各要素値を所定の方式で暗号化し、他の装置に送信する処理と、D他の装置から暗号化されたベクトルの内積値を受信し、ベクトルの内積値を復号化する処理とを含む。データ保有者間で可能な限りデータを明かさずに特定の2属性について共起数を得ることができるようになる。[実施の形態1]本実施の形態に係るシステムの概要を図2に示す。例えば、インターネットなどのネットワーク1には、A社が保有するコンピュータAと、B社が保有するコンピュータBと、A社及びB社以外の第三者であるC社が保有するコンピュータCとが接続されている。本実施の形態では、A社及びB社の2社が自己が有するデータに含まれるある属性と相手方が有するデータに含まれる他の属性との共起数を得ることを目的とする。コンピュータCは、例えばSemiTrustedThirdParty他者とは結託しないが、不正を働くかも知れない第三者として、コンピュータA及びBと協働するものとする。なお、SemiTrustedThirdPartyについては、例えばMKFranklinMKReiterFairExchangewithaSemiTrustedThirdPartyProc4thACMConfonComputerandCommunicationSecurityApril1997を参照のこと。コンピュータA及びBは、例えば図3に示すような構成を有する。例えばコンピュータAは、第1データ格納部31と、設定データ格納部32と、識別子処理部33と、第2データ格納部34と、ベクトル生成部35と、内積取得処理部36とを有する。第1データ格納部31は、例えば図1A又は図1Bのような、生成すべき相関ルールの元となるデータを格納する。設定データ格納部32は、例えば、使用するレコード数n、使用するハッシュ関数の種別、暗号処理に用いるデータ例えば、共有する秘密鍵及び公開鍵、コンピュータCのアドレスなどを格納する。識別子処理部33は、第1データ格納部31に格納されているデータに対して、設定データ格納部32に格納されたデータに従って処理を行い、第2データ格納部34に格納する。ベクトル生成部35は、設定データ格納部32に格納されているデータに従って、第2データ格納部34に格納されているデータ及び第1データ格納部31に格納されているデータを用いて処理を行ってn次元のベクトルを生成し、第2データ格納部34に格納する。内積取得部36は、暗号処理部361を有しており、コンピュータCと連携して処理を行う。その際、内積取得部36の暗号処理部361は、第2データ格納部34に格納されているベクトルの各要素値を暗号化し、コンピュータCから暗号化された演算結果を受信すると、演算結果を復号化して、第2データ格納部34に格納する。コンピュータCは、例えば図4に示すような構成を有する。コンピュータCは、データ受信部51と、データ送信部52と、秘匿計算部53とを有する。データ受信部51は、コンピュータA及びBから、暗号化されたベクトルの要素値を受信すると、秘匿計算部53に出力する。秘匿計算部53は、暗号化されたベクトルの要素値を受け取ると、暗号化されたベクトルの内積値が得られるように暗号化したまま所定の演算を実施し、演算結果をデータ送信部52に出力する。データ送信部52は、コンピュータA及びBに対して、演算結果を送信する。次に、図5乃至図15を用いて、図2に示したシステムの処理内容について説明する。まず、事前に、コンピュータA及びBが、空間サイズnと、使用するハッシュ関数の種別、共有する秘密鍵及び公開鍵などを、設定データ格納部32に格納する初期設定処理を実施する図5:ステップS1。そして、識別子処理部33は、設定データ格納部32に格納されている空間サイズnに従って、第1データ格納部31に格納されているレコード群において最大nレコードを選択するステップS3。第1データ格納部31に格納されているレコード数がn以下であれば、全レコードを選択しても良い。レコード数がnより多い場合には、データ保有者が予め指定した方針に沿って選択する。例えば、最初のnレコードを選択したり、ランダムにnレコード選択する。その後、識別子処理部33及びベクトル生成部35は、n次元ベクトル生成処理を実施するステップS5。このn次元ベクトル生成処理については、図6乃至図14を用いて説明する。識別子処理部33は、ステップS3で選択したレコードのうち、未処理のレコードを1つ特定する図6:ステップS11。そして、識別子処理部33は、特定されたレコードのIDについて、空間サイズnのハッシュ値を算出するステップS13。例えば、設定データ格納部32に格納されているハッシュ関数の種別に従ってハッシュ関数を特定し、当該ハッシュ関数にレコードのIDを入力し、ハッシュ関数の出力を、空間サイズnで除した結果を採用する。その後、識別子処理部33は、算出されたハッシュ値とレコードのIDとを対応付けて、第2データ格納部34におけるハッシュ表のエントリとして格納するステップS15。例えば、n=8であり、図1Aにおける1234をSHA-256に入力して下位3ビットn=8=23のためを採用すると、4が得られる。従って、図7に示すようなハッシュ表が最初に得られる。図7に示すように、ハッシュ表には、ハッシュ値とレコードIDの集合とが対応付けられている。なお、ハッシュ値はハッシュ関数の出力をn個に制限しているので、異なるレコードIDを入力しても同じハッシュ値になってしまう場合がある。そして、識別子処理部33は、ステップS3で選択したレコードのうち未処理のレコードが存在しているか判断するステップS17。未処理のレコードが存在する場合には、処理はステップS11に戻る。一方、未処理のレコードが存在しない場合には、識別子処理部33は、複数のIDが対応付けられたハッシュ値がハッシュ表内に存在しているか確認するステップS19。例えば、図1Aのレコードを処理すると、図8に示すようなハッシュ表が得られる。上でも述べたように、ハッシュ関数の出力をn個に制限しているので、異なるレコードIDを入力しても同じハッシュ値になってしまう場合がある。図8の例では、ハッシュ値1及び4については複数のIDが対応付けられている。そして、複数のIDが対応付けられているハッシュ値が存在する場合には、識別子処理部33は、複数のIDのうち1つを選択し、他を削除するステップS21。例えば、ランダムに1つを選択する。図8の例では、ハッシュ値1については、1235及び2222のうち1235が選択され、ハッシュ値4については、12341236及び2349のうち、2349が選択されたものとする。そうすると、ハッシュ表は図9のような状態になる。このようにすれば、ハッシュ値からレコードのIDを得るための写像fが得られたことになる。すなわち、fハッシュ値=レコードのIDと表される。写像fについては、このようなハッシュ表ではなく他の形態にて生成するようにしても良い。なお、図1Bのレコードを処理すると、最初は図10に示すようなハッシュ表が得られる。図10の例では、ハッシュ値4について複数のIDが対応付けられている。従って、12341236及び2349のうち1236を選択すると、図11に示すようなハッシュ表が得られる。なお、図9においてはハッシュ値4についてはID2349が対応付けられており、図11においてはID1236が対応付けられている。これは、空間サイズnにハッシュ値を制限しているのでやむを得ないが、nが十分大きなサイズであれば、同じハッシュ値に異なるIDが対応付けられることは避けられる。処理は端子Aを介して図12の処理に移行して、ベクトル生成部35は、空間サイズnのn次元ベクトルviを初期化するステップS23。すなわち、全ての要素値を0に設定する。また、ベクトル生成部35は、カウンタiを0に設定するステップS25。そして、ベクトル生成部35は、第2データ格納部34内のハッシュ表においてハッシュ値iに対応するレコードIDが登録されているか判断するステップS27。ハッシュ値iに対応するレコードIDが登録されている場合には、ベクトル生成部35は、ハッシュ値iに対応するレコードIDのレコードに含まれる特定の属性の属性値に応じて0又は1を、ベクトルviに設定するステップS29。そして処理はステップS33に移行する。例えば図9に示すようなハッシュ表の場合、ハッシュ値i=0に対してレコードID1257が対応付けられているので、第1データ格納部31におけるレコード図1Aのうち、レコードID1257のレコードにおける属性国歌に属性値黒丸が登録されているか否かを確認する。図1Aの例では黒丸が登録されていないので、0が特定され、v0に設定される。一方、ハッシュ値iに対応するレコードIDが登録されていない場合には、ベクトル生成部35は、vi=0を設定するステップS31。その後、処理はステップS33に移行する。例えば図9に示すようなハッシュ表の場合、ハッシュ値i=3に対してレコードIDが対応付けられていない。従って、v3=0と設定する。そして、ベクトル生成部35は、カウンタiがn-1以上となったか判断するステップS33。iがn-1未満であれば、ベクトル生成部35は、iを1インクリメントしステップS35、処理はステップS27に移行する。一方、iがn-1以上となった場合には、ベクトル生成部35は、生成されたベクトルvを第2データ格納部34に格納するステップS37。そして、処理は呼び出し元の処理に戻る。このようにすれば、ユーザIDは秘匿され、さらに空間サイズnに揃えられ、ハッシュ値に係るレコードにおいて特定の属性値が生起しているか否かを表しているベクトルvが得られるようになる。このような処理を実施すると、A社のコンピュータAは、図13に示すようなベクトルvaを生成する。一方、B社のコンピュータBは、図14に示すようなベクトルvbを生成する。図5の処理の説明に戻って、内積取得処理部36等は、内積取得処理を実施するステップS7。この内積取得処理については、図15を用いて説明する。コンピュータAの内積取得処理部36の暗号処理部361は、設定データ格納部32に格納されている共有鍵を用いて、第2データ格納部34に格納されているベクトルvの各要素値を、所定の完全準同型暗号方式に従って暗号化するステップS41。但し、暗号方式のアルゴリズムは、任意回の加算と1回以上の乗算についての準同型性があれば何でも良く、たとえばBGN方式DBonehEGohandKNissimEvaluating2DNFFormulasonCiphertextsInProceedingsofTheoryofCryptographyConference2005LectureNotesinComputerScienceVol3378pp3253412005を使っても良い。例えば、暗号化処理をEr,mrは乱数、mは平文と表し、復号化処理をDccは暗号文、DEr,m=mと表す。また、E’mを、DE’m=mを満たす性質とする。つまり、Er,mはE’mとも書ける。準同型性により、公開鍵を知っていれば秘密鍵を知らなくても、E’m1とE’m2から、E’m1m2及びE’×Eva1vb××Evan-1vbmodM=Eva0×vb0va1×vb1van-1×vbn-1そして、コンピュータBの秘匿データ交換処理部38は、第1の演算結果をコンピュータAに返信するステップS85。これに対して、コンピュータAの秘匿データ交換処理部38は、第1の演算結果を、コンピュータBから受信し、メインメモリなどの記憶装置に格納するステップS87。一方、コンピュータAにおける秘匿データ交換処理部38の暗号処理部381は、暗号化された、ベクトルの内積値を得られるように所定の演算を、暗号化された各第1要素値を用いて実施することで、第2の演算結果すなわち、暗号化された、ベクトルの内積値を生成するステップS83。コンピュータBで行われたものと同様の処理を実施する。具体的には、以下のような演算を実施する。e=Evb0va×Evb1va××Evbn-1vamodM=Evb0×va0vb1×va1vbn-1×van-1そして、コンピュータAの秘匿データ交換処理部38は、第2の演算結果をコンピュータBに返信するステップS89。これに対して、コンピュータBの秘匿データ交換処理部38は、第2の演算結果を、コンピュータAから受信し、メインメモリなどの記憶装置に格納するステップS91。最終的に、コンピュータAにおける秘匿データ交換処理部38の暗号処理部381は、第1の演算結果を自己の秘密鍵を用いて復号することで、ベクトルの内積値、すなわち共起数を取得するステップS93。同様に、コンピュータBにおける秘匿データ交換処理部38の暗号処理部381は、第2の演算結果を自己の秘密鍵を用いて復号することで、ベクトルの内積値、すなわち共起数を取得するステップS95。以上のようにすれば、第1の実施の形態と同様の結果を得ることができるようになる。以上、本技術の実施の形態を述べたが、本技術はこれに限定されるものではない。例えば、上で述べた機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成とは一致しない場合もある。また、処理フローについても、処理結果が変わらない限り、処理ステップの処理順番を入れ替えたり、並列実行するようにしても良い。また、暗号化方式については様々な方式が採用できるため、上で述べたようなベクトルの内積を算出できるような方式であれば、どのような方式であっても良い。また、コンピュータA乃至Cの各々については、複数台でその機能を果たすように構成するようにしても良い。なお、上で述べたコンピュータA乃至Cは、コンピュータ装置であって、図18に示すように、メモリ2501とCPUCentralProcessingUnit2503とハードディスクドライブHDD:HardDiskDrive2505と表示装置2509に接続される表示制御部2507とリムーバブルディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティングシステムOS:OperatingSystem及び本実施例における処理を実施するためのアプリケーションプログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーションプログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーションプログラムはコンピュータ読み取り可能なリムーバブルディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーションプログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。以上述べた本実施の形態をまとめると、以下のようになる。本実施の形態に係る情報処理方法は、第1のユーザのコンピュータにより実行される情報処理方法であって、A第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各識別子について、第2のユーザと共通して使用されるハッシュ関数を用いて、予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて識別子を第2のデータ格納部に格納するステップと、B予め定められた個数のハッシュ値の各々について、第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に識別子が対応付けられていない場合には0を特定することで、予め定められた個数の要素値を有するベクトルを生成する生成ステップと、Cベクトルの各要素値を所定の方式で暗号化し、他の装置に送信するステップと、D他の装置から暗号化されたベクトルの内積値を受信し、ベクトルの内積値を復号化するステップとを含む。このようにすることで、共起数を表す、ベクトルの内積値を、他のユーザに対して、識別子を含むデータを明かすことなく得ることができるようになる。この共起数によって、相関ルールを生成することもできる。なお、所定の方式は、例えば準同型暗号方式である。なお、上で述べた他の装置が、第2のユーザ以外の第三者の装置である場合もある。この場合、上で述べた他の装置が、第1のユーザのコンピュータ及び第2のユーザのコンピュータから、暗号化されたベクトルの各要素値を受信し、暗号化されたままでベクトルの内積値を算出し、第1のユーザのコンピュータ及び第2のユーザのコンピュータへ、暗号化されたベクトルの内積値を送信するようにしても良い。第三者を介することで不正を防止することも可能となる。また、上で述べた他の装置が、第2のユーザのコンピュータである場合もある。この場合、D第2のユーザのコンピュータから、暗号化されたベクトルの各要素値を受信するステップと、E生成処理において生成されたベクトルの要素値と、暗号化されたベクトルの各要素値から、暗号化されたベクトルの内積値を算出するステップと、F暗号化されたベクトル値の内積値を、上で述べた他の装置に送信するステップとをさらに含むようにしても良い。第三者が存在しなくても、他のユーザに対してベクトルそのものを明かすこともない。なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD-ROMなどの光ディスク、光磁気ディスク、半導体メモリ例えばROM、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。付記1第1のユーザのコンピュータにより実行される情報処理方法であって、第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記第2のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する処理と、前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成する生成処理と、前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信する処理と、前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理と、を含む情報処理方法。付記2前記他の装置が、前記第2のユーザ以外の第三者の装置であり、前記他の装置が、前記第1のユーザのコンピュータ及び前記第2のユーザのコンピュータから、暗号化された前記ベクトルの各要素値を受信し、暗号化されたままで前記ベクトルの内積値を算出し、前記他の装置が、前記第1のユーザのコンピュータ及び前記第2のユーザのコンピュータへ、暗号化された前記ベクトルの内積値を送信する付記1記載の情報処理方法。付記3前記他の装置が、前記第2のユーザのコンピュータであり、前記第2のユーザのコンピュータから、暗号化された前記ベクトルの各要素値を受信する処理と、前記生成処理において生成された前記ベクトルの要素値と、暗号化された前記ベクトルの各要素値から、暗号化された前記ベクトルの内積値を算出する処理と、暗号化された前記ベクトル値の内積値を、前記他の装置に送信する処理と、をさらに含む付記1記載の情報処理方法。付記4前記所定の方式が、準同型暗号方式である付記1乃至3のいずれか1つ記載の情報処理方法。付記5第1のユーザのコンピュータに、第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記第2のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する処理と、前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成する生成処理と、前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信する処理と、前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理と、を、実行させるためのプログラム。付記6他のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記他のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する識別子処理部と、前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成するベクトル生成部と、前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信し、前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理部と、を有する情報処理装置。"