説明

情報埋め込み装置、情報埋め込み装置の制御方法、及びプログラム

【課題】情報埋め込みの対象データ及び情報埋め込みに用いられる関数を秘匿する。
【解決手段】クライアントは、所定のデータが入力されると第1データが出力される第2関数に対する入力データ及び当該入力データを第2関数に入力して得られる出力データの複数の対と、第1ダミーデータ及び第2ダミーデータの対とを区別なく情報埋め込み装置に送信する。情報埋め込み装置は、所定のデータが入力されると第2データが出力される第3関数に入力データ又は第1ダミーデータを入力した結果と、第1関数に当該入力データ又は当該第1ダミーデータと対応する出力データ又は第2ダミーデータを入力した結果とに基づいた複数の結果データを生成する。クライアントは、当該複数の結果データの中から入力データ及び出力データの対に応じた結果データを紛失通信により取得することにより、第1データを第1関数で処理して得られる情報埋め込みデータを得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報埋め込み装置、情報埋め込み装置の制御方法、及びプログラムに関する。
【背景技術】
【0002】
近年、著作権保護を目的とした電子透かし(特許文献1)等、様々な分野においてデータに対する情報埋め込みが行われている。このような情報埋め込みのサービスを実現する方式として、クライアント処理方式及びサーバ処理方式が知られている。
【0003】
情報埋め込みサービスをクライアント処理方式で実現する場合の一般的な構成を、図5に示す。まず、クライアント100は、情報埋め込みを行う関数を実行するためのプログラム105をサーバ110からダウンロードする。そして、クライアント100は、ダウンロードしたプログラム105を用いて、データ120に情報(C)を埋め込む処理を実行することにより、情報が埋め込まれたデータ125を得ることができる。
【0004】
また、情報埋め込みサービスをサーバ処理方式で実現する場合の一般的な構成を、図6に示す。まず、クライアント100は、埋め込み元のデータ120と、埋め込む情報(C)をサーバ110にアップロードする。そして、サーバ110は、情報埋め込みを行う関数を実行するためのプログラム105を用いて、データ120に情報(C)を埋め込む処理を実行し、情報が埋め込まれたデータ125を生成する。その後、クライアント100は、情報が埋め込まれたデータ125をサーバ110からダウンロードすることにより取得する。
【特許文献1】特開2002−158859号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
前述したクライアント処理方式の場合、クライアント100が保持する情報埋め込みの対象データをサーバ110に秘匿することはできるが、プログラム105がクライアント100に配布されるため、情報埋め込みを行う関数のアルゴリズムが解読されてしまう危険性がある。また、前述したサーバ処理方式の場合、情報埋め込みを行う関数のアルゴリズムを秘匿することはできるが、クライアント100が保持する情報埋め込みの対象データをサーバ110に秘匿することはできない。
【0006】
本発明は上記課題を鑑みてなされたものであり、情報埋め込みの対象データ及び情報埋め込みに用いられる関数を秘匿可能な情報埋め込み装置、情報埋め込み装置の制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本発明の情報埋め込み装置は、通信可能に接続されるクライアントが有する第1データを第1関数で処理して得られる情報埋め込みデータを前記クライアントに提供する情報埋め込み装置であって、前記クライアントから、所定のデータが入力されると前記第1データが出力される第2関数に対する入力データ及び当該入力データを前記第2関数に入力して得られる出力データの複数の対と、第1ダミーデータ及び第2ダミーデータの対とを区別なく受信するデータ受信部と、前記所定のデータが入力されると第2データが出力される第3関数に前記入力データ又は前記第1ダミーデータを入力した結果と、前記第1関数に当該入力データ又は当該第1ダミーデータと対応する前記出力データ又は前記第2ダミーデータを入力した結果とに基づいた複数の結果データを、前記クライアントが当該複数の結果データの中から前記入力データ及び前記出力データの対に応じた前記結果データを紛失通信(Oblivious Transfer)により取得することにより前記情報埋め込みデータを得ることを可能とするために生成する結果データ生成部と、を備えることとする。
【0008】
また、本発明の情報埋め込み装置の制御方法は、通信可能に接続されるクライアントが有する第1データを第1関数で処理して得られる情報埋め込みデータを前記クライアントに提供する情報埋め込み装置の制御方法であって、前記情報埋め込み装置は、前記クライアントから、所定のデータが入力されると前記第1データが出力される第2関数に対する入力データ及び当該入力データを前記第2関数に入力して得られる出力データの複数の対と、第1ダミーデータ及び第2ダミーデータの対とを区別なく受信し、前記所定のデータが入力されると第2データが出力される第3関数に前記入力データ又は前記第1ダミーデータを入力した結果と、前記第1関数に当該入力データ又は当該第1ダミーデータと対応する前記出力データ又は前記第2ダミーデータを入力した結果とに基づいた複数の結果データを、前記クライアントが当該複数の結果データの中から前記入力データ及び前記出力データの対に応じた前記結果データを紛失通信(Oblivious Transfer)により取得することにより前記情報埋め込みデータを得ることを可能とするために生成することとする。
【0009】
また、本発明のプログラムは、通信可能に接続されるクライアントが有する第1データを第1関数で処理して得られる情報埋め込みデータを前記クライアントに提供する情報埋め込み装置に、前記クライアントから、所定のデータが入力されると前記第1データが出力される第2関数に対する入力データ及び当該入力データを前記第2関数に入力して得られる出力データの複数の対と、第1ダミーデータ及び第2ダミーデータの対とを区別なく受信する機能と、前記所定のデータが入力されると第2データが出力される第3関数に前記入力データ又は前記第1ダミーデータを入力した結果と、前記第1関数に当該入力データ又は当該第1ダミーデータと対応する前記出力データ又は前記第2ダミーデータを入力した結果とに基づいた複数の結果データを、前記クライアントが当該複数の結果データの中から前記入力データ及び前記出力データの対に応じた前記結果データを紛失通信(Oblivious Transfer)により取得することにより前記情報埋め込みデータを得ることを可能とするために生成する機能と、を実現させるためのものとする。
【0010】
また、本発明のプログラムは、クライアントが有する第1データを第1関数で処理して得られる情報埋め込みデータを前記クライアントに提供する情報埋め込み装置と通信可能に接続される前記クライアントに、所定のデータが入力されると前記第1データが出力される第2関数に対する入力データ及び当該入力データを前記第2関数に入力して得られる出力データの複数の対と、第1ダミーデータ及び第2ダミーデータの対とを区別なく前記情報埋め込み装置に送信する機能と、前記所定のデータが入力されると第2データが出力される第3関数に前記入力データ又は前記第1ダミーデータを入力した結果と、前記第1関数に当該入力データ又は当該第1ダミーデータと対応する前記出力データ又は前記第2ダミーデータを入力した結果とに基づいて前記情報埋め込み装置が生成する複数の結果データの中から、前記入力データ及び前記出力データの対に応じた前記結果データを紛失通信(Oblivious Transfer)により取得する機能と、取得した前記結果データに基づいて、前記第1データを前記第1関数で処理して得られる前記情報埋め込みデータを得る機能と、を実現させるためのものとする。
【0011】
また、前記第1データ、前記所定のデータ、前記入力データ、前記出力データ、前記第1ダミーデータ、及び前記第2ダミーデータはn(n:自然数)個の数値により構成される数列であり、前記第1関数及び第3関数はn変数多項式であり、前記第2関数は、前記入力データを構成するn個の数値の夫々が順に入力されるn個の1変数多項式により構成される関数列であることとすることができる。
【発明の効果】
【0012】
情報埋め込みの対象データ及び情報埋め込みに用いられる関数を秘匿可能な情報埋め込み装置、情報埋め込み装置の制御方法、及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【0013】
==情報埋め込み(1変数)==
1.システム概要
まず、クライアントから送信されるデータが1つ(1変数)の場合における情報埋め込みシステムの概要について説明する。本発明の情報埋め込み装置の一例であるサーバを含んで構成される1変数の情報埋め込みシステムの例を、図1に示す。情報埋め込みシステムは、サーバ10及びクライアント20を含んで構成されている。サーバ10及びクライアント20は、インターネット、LAN(Local Area Network)等によるネットワークや、USB接続、シリアルポート接続、プリンタポート接続等により有線又は無線で相互に通信可能に接続されている。サーバ10は、例えば、ワークステーションやPCサーバ等の情報処理装置であり、情報埋め込みを行うためのプログラム25を有している。また、クライアント20は、例えば、PCや携帯端末、携帯電話等の情報処理装置であり、情報埋め込みの対象となるデータ30を有している。
【0014】
このような情報埋め込みシステムにおいて情報埋め込みが行われる流れを説明する。まず、クライアント20が、情報埋め込みの対象となるデータ30をサーバ10にアップロードする。ここで、データ30のサーバ10へのアップロードは、紛失多項式評価(Oblivious Polynomial Evaluation:以後「OPE」と称する)を用いて行われる。したがって、データ30そのものがアップロードされるわけではない。なお、OPEの詳細については後述する。
【0015】
そして、サーバ10は、プログラム25を実行することにより、クライアント20からアップロードされたデータ30に情報(C)を埋め込み、情報が埋め込まれたデータ35を生成する。ここで、サーバ10における情報埋め込み処理も、OPEを用いて行われる。したがって、データ30に情報(C)が埋め込まれたデータ35そのものがサーバ10上に生成されるわけではない。
【0016】
その後、クライアント20は、情報(C)が埋め込まれたデータ35をサーバ10からダウンロードする。ここで、データ35のサーバ10からのダウンロードも、OPEを用いて行われる。したがって、情報(C)が埋め込まれたデータ35そのものがダウンロードされるわけではない。
【0017】
このような情報埋め込み処理としては、例えば、データ30に電子透かし(C)を埋め込む電子透かし処理や、データ30に信頼のある第三者機関により発行されるタイムスタンプ(C)を埋め込む処理等がある。そして、OPEを用いて情報埋め込みを行うことにより、クライアント20が有するデータ30をサーバ10に対して秘匿することができ、サーバ10のプログラム25において実行される情報埋め込み処理の関数のアルゴリズムをクライアント20に対して秘匿することができる。さらに、サーバ10とクライアント20との間の通信がOPEであり、データ30やデータ35そのものが送受信されるわけではないため、不正な第三者への情報漏洩を防ぐことができる。
【0018】
なお、本例では、クライアント20からサーバ10にデータ30をアップロードし、サーバ10においてデータ30に情報(C)を埋め込むこととしたが、例えばステガノグラフィ処理などの情報ハイディング技術による処理のように、クライアント20からサーバ10に情報(C)をアップロードし、サーバ10においてサーバ10が有するデータ30に情報(C)を埋め込むこととしてもよい。この場合においても、OPEを用いて情報埋め込みを行うことにより、クライアント20が有する埋め込み情報(C)をサーバ10に対して秘匿することができ、サーバ10のプログラム25において実行される情報埋め込み処理の関数のアルゴリズムをクライアント20に対して秘匿することができる。
【0019】
次に、サーバ10及びクライアント20の構成について説明する。サーバ10及びクライアント20の一例である情報処理装置40のハードウェア構成を、図2に示す。情報処理装置40は、CPU50、メモリ51、記憶装置52、入力インタフェース53、出力インタフェース54、記録媒体読取装置55、及び通信インタフェース56を含んで構成されている。
【0020】
CPU50は、メモリ51に格納されたプログラムを実行することにより、情報処理装置40を統括制御するものである。メモリ51は、RAM(Random Access Memory)やROM(Read Only Memory)等の記憶領域であり、CPU50が実行するプログラムや様々なデータ等が格納される。記憶装置52は、例えばハードディスク等の記憶領域であり、各種のプログラムやデータ等が格納される。なお、記憶装置52に格納されたプログラムは、実行される際にメモリ51に順次格納される。
【0021】
入力インタフェース53は、キーボードやマウス、マイク、スキャナ、カメラ、ビデオカメラ等の入力装置60からの文書データや音データ、画像データ、映像データ等の入力データを受け付けるインタフェースである。出力インタフェース54は、ディスプレイやプリンタ、スピーカ等の出力装置61への文書データや音データ、画像データ、映像データ等の出力を行うインタフェースである。記録媒体読取装置55は、CD−ROM等の記録媒体62に記録されているプログラムやデータを読み取る装置である。そして、記録媒体読取装置55によって読み取られたデータは、メモリ51や記憶装置52等に格納される。通信インタフェース56は、インターネットやLAN等のネットワーク63やUSB接続、シリアルポート接続、プリンタポート接続等により有線又は無線でデータの送受信を行うためのインタフェースである。なお、情報処理装置40は、通信インタフェース56を介してプログラムを受信することもできる。
【0022】
サーバ10が有する機能ブロックの構成を、図3に示す。サーバ10は、データ受信部70及び結果データ生成部75を備えている。データ受信部70は、クライアント20からデータ30をOPEにより受信する。結果データ生成部75は、クライアント20から受信したデータ30に情報(C)を埋め込んだデータ35をOPEにより生成する。これらの機能ブロック70,75は、サーバ10において、メモリ51に格納されたプログラムをCPU50が実行することにより実現されるものである。なお、これらの機能ブロック70,75の機能の詳細は後述する。また、クライアント20においても、メモリ51に格納されたプログラムをCPU50が実行することにより、後述する各種の処理が実現される。
【0023】
2.紛失通信
次に、OPEで用いられるサブプロトコルである紛失通信(Oblivious Transfer:以後「OT」と称する)について説明する。
【0024】
(1)OT21(1-out-of-2 Oblivious Transfer)
まず、OT21について説明する。サーバ10は、秘密情報であるM0,M1を持っている。クライアント20は、サーバ10の持っている情報M0,M1のどちらか一方の情報のみを得ることができ、他方の情報を得ることはできない。また、サーバ10は、クライアント20が得た情報がM0,M1のどちらであるかを知ることができない。このような要件を満たすプロトコルがOT21である。以下に、OT21の詳細な手順の一例を示す。
【0025】
(1−1)
サーバ10は、PKCS(公開鍵暗号系)のインスタンス(Ex,Dx)をランダムに選ぶ。なお、Exは暗号鍵、Dxは復号鍵であり、Dx(Ex(m))=Ex(Dx(m))=mの関係にある。また、サーバ10はPKCSインスタンス上のメッセージ空間Mxからランダムに2つのメッセージm0,m1を選ぶ。そして、サーバ10はクライアント20にEx,m0,m1をセキュアなチャネル経由で送信する。
【0026】
(1−2)
クライアント20はサーバ10からEx,m0,m1を受信する。また、クライアント20はランダムにメッセージK(∈Mx)を選ぶ。ここで、クライアント20はサーバ10の持っている情報Mr(r∈{0,1})を知りたいとする。クライアント20は、q=Ex(K)[+]mrを計算し、サーバ10へ送信する。なお、[+]はビットごとのXOR(排他的論理和)を表すこととする。
【0027】
(1−3)
サーバ10は、クライアント20からq=Ex(K)[+]mrを受信する。そして、サーバ10は、K0'=Dx(q[+]m0),K1'=Dx(q[+]m1)を計算する。これら2つのKi'(i∈{0,1})は、i=rのときKr'=Kとなり、i≠rのときKr(+)1'=K'(≠K)となる。なお、(+)はXOR(排他的論理和)を表すこととする。ただし、サーバ10はrの値を知らないので、Ki'のどちらがKであるかを知ることはできない。そして、サーバ10は、M0[+]K0',M1[+]K1'を計算し、クライアント20へ送信する。
【0028】
(1−4)
クライアント20は、M0[+]K0',M1[+]K1'を受信する。クライアント20は、この中からMr[+]Kr'を選び、Mr[+]Kr'[+]K=Mr[+]K[+]K=Mrを計算し、求めたい情報Mrを得ることができる。また、もう一方の情報Mr(+)1に関しては、Kr(+)1'の値の解読困難性がPKCSにより保証されており、クライアント20はMr(+)1[+]Kr(+)1'からMr(+)1の値を得ることができない。
【0029】
(2)OTN1(1-out-of-N Oblivious Transfer)
次に、OTN1について説明する。サーバ10はmビットの秘密情報X1,X2,…,XNを持っている。クライアント20はサーバ10の持っているN個の情報の中から1つだけ情報を得ることができ、その他の情報については得ることができない。また、サーバ10は、クライアント20がN個の情報の中からどの情報を得たかを知ることができない。このような要件を満たすプロトコルがOTN1である。以下に、OTN1の詳細な手順の一例を示す。
【0030】
(2−1)
サーバ10は、擬似ランダム関数FKに対する鍵Kjb(1≦j≦l,b∈{0,1})のペア(K10,K11),(K20,K21),…,(Kl0,Kl1)をランダムに用意する。なお、FKはmビットのバイナリストリングを生成する関数であり、l=log2Nである。また、I(1≦I≦N)を2進数<i1,i2,…,il>で表すこととする。そして、サーバ10は、次式(1)によりY1,Y2,…,YNを計算する。なお、(+)j=1lはj=1からlまでのXOR(排他的論理和)を表すこととする。
【数1】

【0031】
(2−2)
ここで、クライアント20が、サーバ10の持っている秘密情報のうちXTを知りたいとする。クライアント20は、サーバ10とOT21をl(=log2N)回行い、(Kj0,Kj1)のペアからK1t1,K2t2,…,Kltlを取得する。なお、OT21を用いているため、サーバ10はTを知ることができない。
【0032】
(2−3)
サーバ10は、クライアント20にY1,Y2,…,YNを送信する。
【0033】
(2−4)
クライアント20は、Y1,Y2,…,YNを受信し、K1t1,K2t2,…,Kltlから次式(2)に示されるl個の関数を求める。
【数2】

【0034】
そして、クライアント20は、次式(3)により求めたい情報XTを得ることができる。
【数3】

【0035】
なお、OT21を用いているため、クライアント20はKjtj(+)1(1≦j≦l)については知ることができない。したがって、クライアント20はKjtj(+)1に対応するFを求めることができず、XT以外の秘密情報XIを得ることができない。
【0036】
(3)OTNk(k-out-of-N OT)
次に、OTNkについて説明する。サーバ10はmビットの秘密情報X1,X2,…,XNを持っている。クライアント20はサーバ10の持っているN個の情報の中からk個だけ情報を得ることができ、その他の情報については知ることができる範囲が限られている。また、サーバ10は、クライアント20がN個の情報の中からどの情報を得たかを知ることができない。このような要件を満たすプロトコルがOTNkである。OTNkは、OTN1をk回繰り返すことで実現可能である。なお、以下に示す手順によりOTNkを実現することにより、処理効率を改善することも可能である。
【0037】
(3−1−1)
サーバ10は、√N個の2つのセットの鍵R1,R2,…,R√N,C1,C2,…,C√Nをランダムに選ぶ。なお、Ri,Cjは擬似ランダム関数Fに対する値である。また、√NはNの平方根を表すこととする。そして、サーバ10は、X1,X2,…,XNを√N×√Nの次の表に適当に配置し、クライアント20へ送信する。
【表1】

【0038】
また、サーバ10は、次式(4)によりYi,j(0≦i≦√N,0≦j≦√N)を計算する。
【数4】

【0039】
(3−1−2)
クライアント20は、サーバ10から送信されてくる表を受信する。そして、クライアント20は表から自分が欲しい情報に対応している値を見つける。ここでは、自分が欲しい情報に対応している値がXI,Jであることとする。クライアント20は、サーバ10とOT√N1を2回行い、R1,R2,…,R√NとC1,C2,…,C√NからRI,CJを取得する。
【0040】
(3−1−3)
サーバ10は、クライアント20にYi,j(0≦i≦√N,0≦j≦√N)を送信する。
【0041】
(3−1−4)
クライアント20は、Yi,jを受信する。そして、クライアント20は、RI,CJからFRI,FCJを求め、次式(5)により求めたい情報XI,Jを得ることができる。
【数5】

【0042】
(3−1−5)
前述した(3−1−2)〜(3−1−4)の手順を繰り返し行うことにより、クライアント20は知りたい情報をk個知ることができる。
【0043】
なお、(3−1−1)〜(3−1−5)に示した手順では、クライアント20が得た情報がどれであるかをサーバ10が知ることができないという要件は満たされるが、クライアント20は自分が知りたい情報以外に最大でk2−k個のサーバ10の情報を知ることができる。ここで、k<<Nの条件が満たされれば、クライアント20に知られてしまう情報の数は非常に少なく、実用上は問題ない場合が多い。なお、クライアント20に知られてしまう情報の数を更に少なくするために、以下に示す手順によりOTNkを実現することも可能である。
【0044】
(3−2−1)
サーバ10は、√N個の2つのセットの鍵R1P,R2P,…,R√NP,C1P,C2P,…,C√NPをランダムに選ぶ。そして、そして、サーバ10は、X1,X2,…,XNを√N×√Nの次の表σPに適当に配置し、クライアント20へ送信する。
【表2】

【0045】
(3−2−2)
クライアント20は、表σPを受信する。ここで、クライアント20は、XT1,…,XTkの値を知りたいこととする。クライアント20は、(3−1−1)〜(3−1−5)の手順に従い、R1P,R2P,…,R√NP,C1P,C2P,…,C√NPの中から表σPにおいて自分の知りたい情報XT1,…,XTkに対応する次式(6)で示されるR,Cを取得する。なお、σR(Ii)Pは、表σPにおける知りたい情報IiのRの番号を示すものであり、σC(Ii)Pは、表σPにおける知りたい情報IiのCの番号を示すものである。
【数6】

【0046】
(3−2−3)
前述した手順(3−1−1),(3−1−2)を、P=1からW(任意の数)まで繰り返し実行する。
【0047】
(3−2−4)
サーバ10は、次式(7)によりYI(1≦I≦N)を計算し、クライアント20へ送信する。
【数7】

【0048】
(3−2−5)
クライアント20は、Y1〜YNを受信する。そして、クライアント20は、式(6)で示されるR,C(1≦P≦W)から、次式(8)で示されるF(1≦P≦W)を求める。
【数8】

【0049】
そして、クライアント20は、次式(9)より求めたい情報XTiを得ることができる。
【数9】

【0050】
3.紛失多項式評価(1変数)
次に、サーバ10及びクライアント20間におけるOPEの一例について説明する。ここで、クライアント20は、定数αを持っており、サーバ10は、1変数多項式P(x)を持っていることとする。そして、OPEのプロトコル終了後、クライアント20は、P(α)を得ることができる。なお、OPEのプロトコルでは、次の2つの要件が満たされる。
・クライアント20は、1変数多項式P(x)について知ることができない。
・サーバ10は、α及びP(α)を知ることができない。
【0051】
このようなOPEのプロトコルの詳細について説明する。
(1)サーバ10が情報埋め込み処理において用いる秘密にしたい関数(第1関数)を、次式(10)で表されるdp次の1変数多項式とする。また、クライアントが秘密にしたいデータ30(第1データ)の値をαとする。
【数10】

【0052】
(2)まず、サーバ10は、関数Pを隠すために、次式(11)で示されるd次の関数(第3関数)である多項式P'を生成する。なお、d=dp×Kであり、P'(0)=0となっている。ここで、P'(0)の"0"が本発明における所定のデータに相当し、P'(0)により求められる"0"が本発明の第2データに相当する。なお、Kは任意に定められる自然数であり、このKの値が大きいほどP'の次数が高くなり、Pの推測が困難となる。
【数11】

【0053】
そして、サーバ10は、次式(12)で示される2変数多項式Q(x,y)を定義する。
【数12】

【0054】
なお、P'(0)=0であるため、全てのyにおいて、Q(0,y)=P(y)となる。
【0055】
(3)クライアント20は、αを隠すために、S(0)=αとなるK次の関数(第2関数)である多項式S(x)をランダムに生成する。
【0056】
(4)ここで、R(x)=Q(x,S(x))と定義する。そして、R(x)の次数をdRとすると、クライアント20は、(dR+1)個のデータ(xi,S(xi))を生成し、(xi,S(xi))と関係のない複数のダミーデータ(xj',Sj')とともに区別なくサーバ10に送信する。ここで、xiが本発明の入力データに相当し、S(xi)が本発明の出力データに相当する。また、xj'が本発明の第1ダミーデータに相当し、Sj'が本発明の第2ダミーデータに相当する。
【0057】
(5)サーバ10のデータ受信部70は、クライアント20から送信されてくる(dR+1)個のデータ(xi,S(xi))とダミーデータ(xj',Sj')を受信する。そして、サーバ10の結果データ生成部75は、これらのデータをQ(x,y)に代入し、R(xi)=Q(xi,S(xi))及びR'(xj)=Q(xj',Sj')を生成する。ここで、(xi,R(xi))及び(xj',R'(xj'))が本発明の結果データに相当する。
【0058】
(6)(dR+1)+ダミーデータの数をNとすると、クライアント20は、サーバ10で生成された(xi,R(xi))及び(xj',R'(xj'))の中から、(dR+1)-out-of-N Oblivious Transferを用いて、dR+1個の(xi,R(xi))を取得する。なお、OTが用いられているため、サーバ10は、クライアント20がどのデータを選んだかを知ることはできない。
【0059】
(7)クライアント20は、dR+1個の(xi,R(xi))からR(x)を推測し、次式(13)に示されるように、R(x)に0を代入することにより、情報埋め込みデータP(α)を得る。
【数13】

【0060】
なお、OPEにおいてクライアント20がサーバ10から受け取るデータは、(dR+1)-out-of-N Oblivious Transferにより得られるdR+1個の(xi,R(xi))だけである。したがって、クライアント20が得ることができるのは、P(x)の1つの値であるP(α)だけである。これにより、関数P(x)をクライアント20に秘匿することができる。また、クライアント20がサーバ10に送信する定数αは多項式関数S(x)の中に隠される。そして、(xi,S(xi))の対は、xiやS(xi)と関係のないダミーデータと混ぜてサーバ10に送信されるため、定数αをサーバ10に秘匿することができる。
【0061】
このように、OPEを用いて情報埋め込みを行うことにより、クライアント20が有するデータ30(α)をサーバ10に対して秘匿することができ、サーバ10のプログラム25において実行される情報埋め込み処理の関数(P(x))のアルゴリズムをクライアント20に対して秘匿することができる。
【0062】
==情報埋め込み(多変数)==
1.システム概要
次に、クライアントから送信されるデータが複数(多変数)の場合における情報埋め込みシステムの概要について説明する。本発明の情報埋め込み装置の一例であるサーバを含んで構成される多変数の情報埋め込みシステムの例を、図4に示す。なお、サーバ10及びクライアント20の構成は図1に示した例と同様であることとする。ただし、サーバ10は、図1に示したプログラム25の代わりに、多変数に対応したプログラム80を有していることとする。そして、データ受信部70は、クライアント20からデータ30及び埋め込み情報(C)をOPEにより受信することとする。また、クライアント20も、多変数に対応したプログラムを有していることとする。
【0063】
このような情報埋め込みシステムにおいて情報埋め込みが行われる流れを説明する。まず、クライアント20が、情報埋め込みの対象となるデータ30及び埋め込み情報(C)をサーバ10にアップロードする。ここで、データ30及び埋め込み情報(C)のサーバ10へのアップロードは、多変数に拡張されたOPEを用いて行われる。したがって、データ30及び埋め込み情報(C)そのものがアップロードされるわけではない。なお、多変数に拡張されたOPEの詳細については後述する。
【0064】
そして、サーバ10は、プログラム80を実行することにより、クライアント20からアップロードされたデータ30に情報(C)を埋め込み、情報が埋め込まれたデータ35を生成する。ここで、サーバ10における情報埋め込み処理も、多変数に拡張されたOPEを用いて行われる。したがって、データ30に情報(C)が埋め込まれたデータ35そのものがサーバ10上に生成されるわけではない。
【0065】
その後、クライアント20は、情報(C)が埋め込まれたデータ35をサーバ10からダウンロードする。ここで、データ35のサーバ10からのダウンロードも、多変数に拡張されたOPEを用いて行われる。したがって、情報(C)が埋め込まれたデータ35そのものがダウンロードされるわけではない。
【0066】
このような情報埋め込み処理としては、例えば、データ30に電子透かし(C)を埋め込む電子透かし処理やステガノグラフィ処理等がある。そして、多変数に拡張されたOPEを用いて情報埋め込みを行うことにより、クライアント20が有するデータ30及び埋め込み情報(C)をサーバ10に対して秘匿することができ、サーバ10のプログラム80において実行される情報埋め込み処理の関数のアルゴリズムをクライアント20に対して秘匿することができる。さらに、サーバ10とクライアント20との間の通信が多変数に拡張されたOPEであり、データ30やデータ35そのものが送受信されるわけではないため、不正な第三者への情報漏洩を防ぐことができる。
【0067】
なお、データ30を複数のデータにより構成されるデータ列、埋め込み情報(C)を複数の埋め込み情報により構成される埋め込み情報列とすることも可能である。つまり、例えば複数の画像データにより構成されるデータ列に対して1つの埋め込み情報(C)を埋め込むことも可能であるし、1つの画像データに対して埋め込み情報列により構成される複数の埋め込み情報(C)を埋め込むことも可能である。
【0068】
2.紛失多項式評価(多変数)
次に、サーバ10及びクライアント20間における多変数に拡張されたOPEの一例について説明する。ここで、クライアント20は、定数列α=(α1,α2,…,αn)を持っており、サーバ10は、n変数k次多項式P(x)(x=(x1,x2,…,xn))を持っていることとする。そして、OPEのプロトコル終了後、クライアント20は、P(α)を得ることができる。なお、多変数に拡張されたOPEのプロトコルでは、次の2つの要件が満たされる。
・クライアント20は、多変数多項式P(x)について知ることができない。
・サーバ10は、α及びP(α)を知ることができない。
【0069】
このような多変数に拡張されたOPEのプロトコルの詳細について説明する。
(1)サーバ10が情報埋め込み処理において用いる秘密にしたい関数(第1関数)を、次式(14)で表されるn変数k次多項式とする。また、クライアント20が秘密にしたいデータ(第1データ)を定数列α=(α1,α2,…,αn)とする。なお、k=m×nである。
【数14】

【0070】
(2)まず、サーバ10は、関数Pを隠すために、次式(15)で示されるk'次の関数(第3関数)である多項式P'を生成する。なお、k'=k×Kであり、P'(0,…,0)=0となっている。また、式(15)においては(k1,…,kn)≠(0,…,0)であることとする。ここで、P'(0,…,0)の"0,…,0"が本発明における所定のデータに相当し、P'(0,…,0)により求められる"0"が本発明の第2データに相当する。なお、Kは任意に定められる自然数であり、この値が大きいほどP'の次数が高くなり、Pの推測が困難となる。なお、(k1,…,kn)=(0,…,0)である場合は、P'(x1,…,xn)=0であることとする。
【数15】

【0071】
そして、サーバ10は、次式(16)で示される多項式Q(x,y)(x=(x1,…,xn),y=(y1,…,yn))を定義する。
【数16】

【0072】
なお、P'(0,…,0)=0であるため、全てのyにおいて、Q(0,y)=P(y)となる。
【0073】
(3)クライアント20は、定数列α=(α1,α2,…,αn)を隠す関数(第2関数)となる多項式関数列S=(S1,S2,…,Sn)を生成する。なお、Si(i=1,…,n)の次数はK次であり、Si(0)=αiとなっている。
【0074】
(4)クライアント20は、{γij|i=1,…,n,j=1,…,s}(γij≠0)を生成し、次式(17)で示されるs個の対を生成する。
【数17】

【0075】
なお、sは次式(18)により示される数とする。
【数18】

【0076】
また、クライアント20は、式(17)で示されるs個の対と関係のない、次式(19)で示されるt個のダミーデータの対を生成する。
【数19】

【0077】
そして、クライアント20は、式(17)に示されるs個の対を、式(19)に示されるt個の対とともに区別なくサーバ10に送信する。ここで、(γ1i,…,γni)(i=1,…,s)が本発明の入力データに相当し、(S11i),…,Snni))(i=1,…,s)が本発明の出力データに相当する。また、(γ1j',…,γnj')(j=1,…,t)が本発明の第1ダミーデータに相当し、(S1j',…,Snj')(j=1,…,t)が本発明の第2ダミーデータに相当する。
【0078】
(5)サーバ10のデータ受信部70は、クライアント20から送信されてくるs個のデータ((γ1i,…,γni),(S11i),…,Snni)))と、t個のダミーデータ((γ1j',…,γnj'),(S1j',…,Snj'))を受信する。そして、サーバ10の結果データ生成部75は、これらのデータをQ(x,y)に代入し、R(γi)=Q((γ1i,…,γni),(S11i),…,Snni)))及びR'(γj)=Q((γ1j',…,γnj'),(S1j',…,Snj'))を生成する。ここで、((γ1i,…,γni),R(γi))及び((γ1j',…,γnj'),R'(γj))が本発明の結果データに相当する。
【0079】
(6)s+t=uとすると、クライアント20は、サーバ10で生成された((γ1i,…,γni),R(γi))及び((γ1j',…,γnj'),R'(γj))の中から、s-out-of-u Oblivious Transferを用いて、s個の((γ1i,…,γni),R(γi))を取得する。なお、OTが用いられているため、サーバ10は、クライアント20がどのデータを選んだかを知ることはできない。
【0080】
(7)クライアント20は、s個の((γ1i,…,γni),R(γi))からR(x)=Q((x1,…,xn),(S1(x1),…,Sn(xn)))を推測し、次式(20)に示されるように、R(x)に0を代入することにより、情報埋め込みデータP(α)=P(α1,…,αn)を得る。
【数20】

【0081】
なお、多変数に拡張されたOPEにおいてクライアント20がサーバ10から受け取るデータは、s-out-of-t Oblivious Transferにより得られるs個の((γ1i,…,γni),R(γi))だけである。したがって、クライアント20が得ることができるのは、P(x)の1つの値であるP(α)だけである。これにより、関数P(x)をクライアント20に秘匿することができる。また、クライアント20がサーバ10に送信する定数列αは多項式関数列Si(x)の中に隠される。そして、((γ1i,…,γni),(S11i),…,Snni)))の対は、(γ1i,…,γni)やSi(x)と関係のないダミーデータと混ぜてサーバ10に送信されるため、定数列αをサーバ10に秘匿することができる。
【0082】
ここで、例えばα1をデータ30、α2を埋め込み情報(C)とすることにより、図4に示した情報埋め込み処理を多変数に拡張されたOPEを用いて行うことができる。このように、多変数に拡張されたOPEを用いて情報埋め込みを行うことにより、クライアント20が有するデータ30や埋め込み情報等のデータ(α=(α1,…,αn))をサーバ10に対して秘匿することができ、サーバ10のプログラム25において実行される情報埋め込み処理の関数(P(x)=P(x1,…,xn))のアルゴリズムをクライアント20に対して秘匿することができる。なお、図4には、αがデータ30と埋め込み情報(C)の2変数により構成される例を示したが、3変数以上であっても同様に適用可能である。
【0083】
以上、本実施形態の情報埋め込みシステムについて説明した。前述したように、OPEを用いて情報埋め込みを行うことにより、クライアント20が有するデータ30(α)をサーバ10に対して秘匿することができ、サーバ10のプログラム25において実行される情報埋め込み処理の関数(P(x))のアルゴリズムをクライアント20に対して秘匿することができる。
【0084】
また、多変数に拡張されたOPEを用いて情報埋め込みを行うことにより、クライアント20が有するデータ30や埋め込み情報等のデータ(α=(α1,…,αn))をサーバ10に対して秘匿することができ、サーバ10のプログラム80において実行される情報埋め込み処理の関数(P(x)=P(x1,…,xn))のアルゴリズムをクライアント20に対して秘匿することができる。
【0085】
なお、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【0086】
【図1】本発明の情報埋め込み装置の一例であるサーバを含んで構成される1変数の情報埋め込みシステムの例を示す図である。
【図2】サーバ及びクライアントの一例である情報処理装置のハードウェア構成を示す図である。
【図3】サーバが有する機能ブロックの構成を示す図である。
【図4】本発明の情報埋め込み装置の一例であるサーバを含んで構成される多変数の情報埋め込みシステムの例を示す図である。
【図5】情報埋め込みサービスをクライアント処理方式で実現する場合の一般的な構成を示す図である。
【図6】情報埋め込みサービスをサーバ処理方式で実現する場合の一般的な構成を示す図である。
【符号の説明】
【0087】
10 サーバ 20 クライアント
25,80 プログラム 30 データ
35 情報埋め込みデータ 40 情報処理装置
50 CPU 51 メモリ
52 記憶装置 53 入力インタフェース
54 出力インタフェース 55 記録媒体読取装置
56 通信インタフェース 60 入力装置
61 出力装置 62 記録媒体
63 ネットワーク 70 データ受信部
75 結果データ生成部

【特許請求の範囲】
【請求項1】
通信可能に接続されるクライアントが有する第1データを第1関数で処理して得られる情報埋め込みデータを前記クライアントに提供する情報埋め込み装置であって、
前記クライアントから、所定のデータが入力されると前記第1データが出力される第2関数に対する入力データ及び当該入力データを前記第2関数に入力して得られる出力データの複数の対と、第1ダミーデータ及び第2ダミーデータの対とを区別なく受信するデータ受信部と、
前記所定のデータが入力されると第2データが出力される第3関数に前記入力データ又は前記第1ダミーデータを入力した結果と、前記第1関数に当該入力データ又は当該第1ダミーデータと対応する前記出力データ又は前記第2ダミーデータを入力した結果とに基づいた複数の結果データを、前記クライアントが当該複数の結果データの中から前記入力データ及び前記出力データの対に応じた前記結果データを紛失通信(Oblivious Transfer)により取得することにより前記情報埋め込みデータを得ることを可能とするために生成する結果データ生成部と、
を備えることを特徴とする情報埋め込み装置。
【請求項2】
請求項1に記載の情報埋め込み装置であって、
前記第1データ、前記所定のデータ、前記入力データ、前記出力データ、前記第1ダミーデータ、及び前記第2ダミーデータはn(n:自然数)個の数値により構成される数列であり、
前記第1関数及び第3関数はn変数多項式であり、
前記第2関数は、前記入力データを構成するn個の数値の夫々が順に入力されるn個の1変数多項式により構成される関数列であること、
を特徴とする情報埋め込み装置。
【請求項3】
通信可能に接続されるクライアントが有する第1データを第1関数で処理して得られる情報埋め込みデータを前記クライアントに提供する情報埋め込み装置の制御方法であって、
前記情報埋め込み装置は、
前記クライアントから、所定のデータが入力されると前記第1データが出力される第2関数に対する入力データ及び当該入力データを前記第2関数に入力して得られる出力データの複数の対と、第1ダミーデータ及び第2ダミーデータの対とを区別なく受信し、
前記所定のデータが入力されると第2データが出力される第3関数に前記入力データ又は前記第1ダミーデータを入力した結果と、前記第1関数に当該入力データ又は当該第1ダミーデータと対応する前記出力データ又は前記第2ダミーデータを入力した結果とに基づいた複数の結果データを、前記クライアントが当該複数の結果データの中から前記入力データ及び前記出力データの対に応じた前記結果データを紛失通信(Oblivious Transfer)により取得することにより前記情報埋め込みデータを得ることを可能とするために生成すること、
を特徴とする情報埋め込み装置の制御方法。
【請求項4】
請求項3に記載の情報埋め込み装置の制御方法であって、
前記第1データ、前記所定のデータ、前記入力データ、前記出力データ、前記第1ダミーデータ、及び前記第2ダミーデータはn(n:自然数)個の数値により構成される数列であり、
前記第1関数及び第3関数はn変数多項式であり、
前記第2関数は、前記入力データを構成するn個の数値の夫々が順に入力されるn個の1変数多項式により構成される関数列であること、
を特徴とする情報埋め込み装置の制御方法。
【請求項5】
通信可能に接続されるクライアントが有する第1データを第1関数で処理して得られる情報埋め込みデータを前記クライアントに提供する情報埋め込み装置に、
前記クライアントから、所定のデータが入力されると前記第1データが出力される第2関数に対する入力データ及び当該入力データを前記第2関数に入力して得られる出力データの複数の対と、第1ダミーデータ及び第2ダミーデータの対とを区別なく受信する機能と、
前記所定のデータが入力されると第2データが出力される第3関数に前記入力データ又は前記第1ダミーデータを入力した結果と、前記第1関数に当該入力データ又は当該第1ダミーデータと対応する前記出力データ又は前記第2ダミーデータを入力した結果とに基づいた複数の結果データを、前記クライアントが当該複数の結果データの中から前記入力データ及び前記出力データの対に応じた前記結果データを紛失通信(Oblivious Transfer)により取得することにより前記情報埋め込みデータを得ることを可能とするために生成する機能と、
を実現させるためのプログラム。
【請求項6】
請求項5に記載のプログラムであって、
前記第1データ、前記所定のデータ、前記入力データ、前記出力データ、前記第1ダミーデータ、及び前記第2ダミーデータはn(n:自然数)個の数値により構成される数列であり、
前記第1関数及び第3関数はn変数多項式であり、
前記第2関数は、前記入力データを構成するn個の数値の夫々が順に入力されるn個の1変数多項式により構成される関数列であること、
を特徴とするプログラム。
【請求項7】
クライアントが有する第1データを第1関数で処理して得られる情報埋め込みデータを前記クライアントに提供する情報埋め込み装置と通信可能に接続される前記クライアントに、
所定のデータが入力されると前記第1データが出力される第2関数に対する入力データ及び当該入力データを前記第2関数に入力して得られる出力データの複数の対と、第1ダミーデータ及び第2ダミーデータの対とを区別なく前記情報埋め込み装置に送信する機能と、
前記所定のデータが入力されると第2データが出力される第3関数に前記入力データ又は前記第1ダミーデータを入力した結果と、前記第1関数に当該入力データ又は当該第1ダミーデータと対応する前記出力データ又は前記第2ダミーデータを入力した結果とに基づいて前記情報埋め込み装置が生成する複数の結果データの中から、前記入力データ及び前記出力データの対に応じた前記結果データを紛失通信(Oblivious Transfer)により取得する機能と、
取得した前記結果データに基づいて、前記第1データを前記第1関数で処理して得られる前記情報埋め込みデータを得る機能と、
を実現させるためのプログラム。
【請求項8】
請求項7に記載のプログラムであって、
前記第1データ、前記所定のデータ、前記入力データ、前記出力データ、前記第1ダミーデータ、及び前記第2ダミーデータはn(n:自然数)個の数値により構成される数列であり、
前記第1関数及び第3関数はn変数多項式であり、
前記第2関数は、前記入力データを構成するn個の数値の夫々が順に入力されるn個の1変数多項式により構成される関数列であること、
を特徴とするプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2007−193280(P2007−193280A)
【公開日】平成19年8月2日(2007.8.2)
【国際特許分類】
【出願番号】特願2006−13872(P2006−13872)
【出願日】平成18年1月23日(2006.1.23)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 2005年10月26日 社団法人情報処理学会発行の「情報処理学会シンポジウムシリーズVol.2005,No.13」に発表
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 2005年11月21日 社団法人情報処理学会発行の「情報処理学会シンポジウムシリーズVol2005,No16」に発表
【出願人】(803000115)学校法人東京理科大学 (545)
【Fターム(参考)】