(57)【要約】      （修正有）【課題】秘密鍵をデータベース側に渡さずに、Valueを更新する。【解決手段】データベースシステムは、データベースサーバとデータ端末を含む。データ端末は、Valueの格納時に、秘密鍵を用いてValueを暗号化し、暗号化Valueと第１の乱数との排他的論理和をとり、乱数を排他的論理和結果と併置させた暗号化Valueにkeyを付して送信し、Valueの更新時には、秘密鍵を用いて新たなValueから上記と同様にして得た暗号化新たなValueを含む暗号化クエリを送信する。データベースサーバは、暗号化クエリの受信に応答して、keyに対応して検索した暗号化Valueに含まれる排他的論理和結果と暗号化クエリに含まれる暗号化したValueとの排他的論理和結果を得、検索した暗号化Valueに含まれる乱数に一致するとき、データベースの暗号化Valueを、暗号化クエリに含まれる暗号化新たなValueに更新する。【選択図】図９
2014126577.tif 000002
【特許請求の範囲】
【請求項１】
Valueのデータベースへの格納時に、秘密鍵を生成し、前記秘密鍵を用いて前記Valueを暗号化し、暗号化した前記Valueと第１の乱数との排他的論理和をとって第１の排他的論理和結果を得、前記第１の乱数に前記第１の排他的論理和結果を併置した暗号化Valueに前記Valueを識別するkeyを付して送信し、
前記データベースに格納されている暗号化した前記Valueの新たなValueへの更新時に、前記秘密鍵を用いて前記新たなValueを暗号化し、暗号化した前記新たなValueと第２の乱数との排他的論理和をとって第２の排他的論理和結果を得、暗号化した前記Valueと、前記第２の乱数に前記第２の排他的論理和結果を併置した暗号化新たなValueとに、前記Valueを識別するkeyを付した暗号化クエリを送信するデータ端末、及び、
前記データベースを備え、前記データ端末とネットワークを介して接続し、
前記データ端末からの前記keyと前記暗号化Valueの受信に応答して、前記keyと前記暗号化Valueとを対応付けて前記データベースに格納し、
前記データ端末からの前記暗号化クエリの受信に応答して、前記暗号化クエリに含まれる前記keyに対応付けて格納されている前記暗号化Valueを前記データベースから検索し、検索した前記暗号化Valueに含まれる前記第１の排他的論理和結果と前記暗号化クエリに含まれる暗号化した前記Valueとの第３の排他的論理和結果を得、前記第３の排他的論理和結果が検索した前記暗号化Valueに含まれる前記第１の乱数に一致するとき、前記データベースに格納されている前記暗号化Valueを、前記暗号化クエリに含まれる前記暗号化新たなValueに置換するデータベースサーバを有することを特徴とするデータベースシステム。
【請求項２】
前記データ端末による、前記秘密鍵を用いた前記Value及び前記新たなValueの暗号化は、それぞれ前記Value及び前記新たなValueの所定部分の暗号化であり、
前記データベースに格納されている暗号化した前記Valueの新たなValueへの更新時に、前記暗号化クエリに前記所定部分を識別する情報を含んで送信し、
前記データベースサーバは、検索した前記暗号化Valueに含まれる前記所定部分の前記第１の排他的論理和結果と受信した前記所定部分を暗号化した前記Valueとの前記第３の排他的論理和結果を得ることを特徴とする請求項１にデータベースシステム。
【請求項３】
前記暗号化Value及び前記暗号化新たなValueに各々含む前記第１の乱数及び前記第２の乱数は、前記第１の乱数及び前記第２の乱数の各々のHush値であり、前記データベースサーバは、前記第３の排他的論理和結果のHush値が検索した前記暗号化Valueに含まれる前記第１の乱数のHush値に一致するとき、前記データベースに格納されている前記暗号化Valueを、受信した前記暗号化新たなValueに置換することを特徴とする請求項１または２に記載のデータベースシステム。
【請求項４】
前記データ端末が、前記ネットワークを介して他のデータベースサーバにさらに接続し、
前記他のデータベースサーバが、他のデータベースを備え、前記Valueの平文を前記keyと対応付けて前記他のデータベースに格納し、前記Valueの平文と、前記Valueの平文を更新する新たなValueの平文とに、前記keyを付したクエリに応答して、前記他のデータベースに格納されている前記Valueの平文を前記クエリに含まれる前記新たなValueの平文に更新するとき、前記データ端末は、前記暗号化クエリ及び前記クエリに、前記keyと前記暗号化Valueとを対応付けて格納する前記データベース及び前記keyと前記Valueの平文とを対応付けて格納する前記他のデータベースのいずれか一方を識別する識別情報を含むことを特徴とする請求項３に記載のデータベースシステム。
【請求項５】
データベースを有するデータベースサーバと、前記データベースサーバとネットワークを介して接続するデータ端末を含むデータベースシステムのデータ更新方法であって、
前記データ端末は、前記Valueの前記データベースへの格納時に、秘密鍵を生成し、前記秘密鍵を用いて前記Valueを暗号化し、暗号化した前記Valueと第１の乱数との排他的論理和をとって第１の排他的論理和結果を得、前記第１の乱数に前記第１の排他的論理和結果を併せた暗号化Valueに前記Valueを識別するkeyを付して送信し、
前記データベースに格納されている暗号化した前記Valueの新たなValueへの更新時に、前記秘密鍵を用いて前記新たなValueを暗号化し、暗号化した前記新たなValueと第２の乱数との排他的論理和をとって第２の排他的論理和結果を得、暗号化した前記Valueと、前記第２の乱数に前記第２の排他的論理和結果を併せた暗号化新たなValueとに、前記Valueを識別するkeyを付した暗号化クエリを送信し、
前記データベースサーバは、前記データ端末からの前記keyと前記暗号化Valueの受信に応答して、前記keyと前記暗号化Valueとを対応付けて前記データベースに格納し、
前記データ端末からの前記暗号化クエリの受信に応答して、前記暗号化クエリに含まれる前記keyに対応付けて格納されている前記暗号化Valueを前記データベースから検索し、検索した前記暗号化Valueに含まれる前記第１の排他的論理和結果と前記暗号化クエリに含まれる暗号化した前記Valueとの第３の排他的論理和結果を得、前記第３の排他的論理和結果が検索した前記暗号化Valueに含まれる前記第１の乱数に一致するとき、前記データベースに格納されている前記暗号化Valueを、前記暗号化クエリに含まれる前記暗号化新たなValueに更新することを特徴とするデータ更新方法。
【請求項６】
前記データ端末による、前記秘密鍵を用いた前記Value及び前記新たなValueの暗号化は、それぞれ前記Value及び前記新たなValueの所定部分の暗号化であり、
前記データベースに格納されている暗号化した前記Valueの新たなValueへの更新時に、前記暗号化クエリに前記所定部分を識別する情報を含んで送信し、
前記データベースサーバは、検索した前記暗号化Valueに含まれる前記所定部分の前記第１の排他的論理和結果と受信した前記所定部分を暗号化した前記Valueとの前記第３の排他的論理和結果を得ることを特徴とする請求項５にデータ更新方法。
【請求項７】
前記暗号化Value及び前記暗号化新たなValueに各々含む前記第１の乱数及び前記第２の乱数は、前記第１の乱数及び前記第２の乱数の各々のHush値であり、前記データベースサーバは、前記第３の排他的論理和結果のHush値が検索した前記暗号化Valueに含まれる前記第１の乱数のHush値に一致するとき、前記データベースに格納されている前記暗号化Valueを、受信した前記暗号化新たなValueに更新することを特徴とする請求項５または６に記載のデータ更新方法。
【請求項８】
前記データ端末が、前記ネットワークを介して他のデータベースサーバにさらに接続し、
前記他のデータベースサーバが、他のデータベースを備え、前記Valueの平文を前記keyと対応付けて前記他のデータベースに格納し、前記Valueの平文と、前記Valueの平文を更新する新たなValueの平文とに、前記keyを付したクエリに応答して、前記他のデータベースに格納されている前記Valueの平文を前記クエリに含まれる前記新たなValueの平文に更新するとき、前記データ端末は、前記暗号化クエリ及び前記クエリに、前記keyと前記暗号化Valueとを対応付けて格納する前記データベース及び前記keyと前記Valueの平文とを対応付けて格納する前記他のデータベースのいずれか一方を識別する識別情報を含むことを特徴とする請求項７に記載のデータ更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース内の各データ（value）に対して一意の識別子(key)を割り当て、保管、管理、更新処理を行うKVS（key−value store）データベースシステムに関する。
【背景技術】
【０００２】
近年、サービス業者のデータベースサーバ上でデータの預託・管理を行うクラウドサービスが爆発的な普及をみせている。このようなクラウドサービスの利点として、データ預託者、つまりクラウドユーザは、自身でサーバの管理・運用を行う必要がなく、また自身の需要に応じて柔軟にサーバリソースを増減可能なことがあげられる。しかし、このような利点はあるものの、ユーザがサービス業者にデータを預託する際、預託するデータをどのように保護するかが課題となる。
【０００３】
データを保護する方法として、データ預託者であるユーザがデータをサービス業者のデータベースサーバに格納する際に暗号化する。例えば、KVSシステムにおいては、ユーザがvalueを暗号化し、keyと対応付けて保管することで、クラウド上のデータベースにあるデータ（暗号化したvalue）を保護できる。このとき、valueが暗号化されているため、データベース側では、格納しているデータ（暗号化したvalue）に対する処理が行えない。
【０００４】
KVSにおける代表的な処理関数として、get,put,remove,replaceの4つのユーザ定義関数がある。この中でget,put,removeは、データベース側はkeyの値を知れば処理を実行できるため、valueが暗号化されていても問題はない。しかし、replace関数は、古いvalue（先に格納したものとして、ユーザが保存しているvalue）の値と実際に格納されているvalueの値が一致した場合に、格納されているvalueを新しいvalueの値に更新するため、valueの一致をデータベース側で判断する必要がある。通常の確率的暗号方式では、同じデータを異なるタイミングで暗号化すると、異なる暗号文が出力されるため、古いvalueの値と保管されているvalueの値の一致を、暗号文を復号しなければデータベース側では判定できない。
【０００５】
特許文献１では、データの暗号化に用いる秘密鍵をデータベースに渡し、処理を行う際にはデータベース上で復号を行う方法が述べられている。これによってデータベース内のデータは暗号化されているため、データ漏えいや外部からのハッキングに対してデータを保護している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００７−５００９１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
確率的暗号方式で暗号化されたvalueに対する一致、不一致を判定するデータベース側の課題に対して、暗号方式に決定的な（確率的でない）方式を利用することが考えられる。しかし、当然のことながら、決定的な暗号方式は確率的な暗号方式に対して安全性が低く、例えば、頻度分析攻撃などを受け易い。
【０００８】
他に、ユーザがアクセスしている間、ユーザとデータベースの間にセッションを張る方法が考えられる。セッションを張り、更新処理に必要なデータをユーザがダウンロードし、ユーザ側で復号し、ユーザが更新する。しかし、更新処理中は張ったセッションを継続し、他のユーザからの処理をブロックするため、他のユーザに処理待ち時間が発生し、全体としてデータベースのスループットが低下する。
【０００９】
特許文献１に記載された方式では、秘密鍵をデータベース側に預託するため、データベース管理者がユーザの意思に反しデータを復号化し、閲覧できる。第3者であるサービス業者のデータベースにデータを格納するクラウドシステムでは、データベース管理者からの不正アクセスの可能性があるので、データベース側に秘密鍵を渡さずに処理を行う必要がある。
【課題を解決するための手段】
【００１０】
開示するKVSデータベースシステムは、データベースを有するデータベースサーバとネットワークを介して接続するデータ端末を含む。データ端末は、Valueのデータベースへの格納時に、秘密鍵を生成し、秘密鍵を用いてValueを暗号化し、暗号化したValueと第１の乱数との排他的論理和をとって第１の排他的論理和結果を得、第１の乱数を第１の排他的論理和結果と併せた暗号化ValueにValueを識別するkeyを付して送信し、データベースに格納されている暗号化したValueの新たなValueへの更新時に、秘密鍵を用いて新たなValueを暗号化し、暗号化した新たなValueと第２の乱数との排他的論理和をとって第２の排他的論理和結果を得、暗号化したValueと、第２の乱数に第２の排他的論理和結果を併せた暗号化新たなValueとに、Valueを識別するkeyを付した暗号化クエリを送信する。データベースサーバは、データ端末からのkeyと暗号化Valueの受信に応答して、keyと暗号化Valueとを対応付けてデータベースに格納し、データ端末からの暗号化クエリの受信に応答して、暗号化クエリに含まれるkeyに対応付けて格納されている暗号化Valueをデータベースから検索し、検索した暗号化Valueに含まれる第１の排他的論理和結果と暗号化クエリに含まれる暗号化したValueとの第３の排他的論理和結果を得、第３の排他的論理和結果が検索した暗号化Valueに含まれる第１の乱数に一致するとき、データベースに格納されている暗号化Valueを、暗号化クエリに含まれる暗号化新たなValueに更新する。
【発明の効果】
【００１１】
本発明によるKVSシステムにおいては、ユーザは秘密鍵をデータベース側に渡すことなく更新処理（replace関数）が実行可能となる。
【図面の簡単な説明】
【００１２】
【図１】セキュアKVSシステムの概略図である。
【図２】ユーザ端末の構成図である。
【図３】データベースサーバの構成図である。
【図４】valueが平文の場合のKVSシステムで用いるデータである。
【図５】データベースに格納されるkey−valueのペアのvalueが暗号化されている場合を示す図である。
【図６】データベースサーバによるreplace関数の実行の様子を示す図である。
【図７】暗号化アルゴリズムの一例を示す図である。
【図８】クエリ生成アルゴリズムの一例を示す図である。
【図９】マッチングアルゴリズムの一例と、マッチングしたときの暗号化Valueの置換を示す図である。
【図１０】暗号化key−valueデータをデータベースに格納する処理フローである。
【図１１】暗号化クエリに応答して、replace処理を実行する処理フローである。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施形態を図面に基づいて詳細に説明する。
【００１４】
図１は、KVSデータベースシステムの概略図である。図示するように、本システムは、ユーザ端末200とデータベースサーバ300とを備え、ユーザ端末200とデータベースサーバ300はネットワーク100を介して相互にデータを送受信する。
【００１５】
図２は、ユーザ端末200の構成図である。図示するように、ユーザ端末200は、CPU201と、補助記憶装置202と、メモリ203と、表示装置205と、入出力インターフェース206と、通信装置207とが内部信号線204で接続し、構成される。また、補助記憶装置202にはプログラムコードが格納されている。プログラムコードは、メモリ203にロードされCPU201によって実行される。通信装置207は、ネットワーク100を介してデータベースサーバ300とデータを送受信する。
【００１６】
図３は、データベースサーバ300の構成図である。図示するように、データベースサーバ300は、CPU301と、補助記憶装置302と、メモリ303と、表示装置305と、入出力インターフェース306と、通信装置307とが内部信号線304で接続し、構成される。また、補助記憶装置302には、プログラムコードおよび、データ（value）と各データに対して一意の識別子(key)を割り当てた、key−valueのペアが格納される。このkey−valueのペアを格納する領域が、KVSデータベース（以下、データベース）である。プログラムコードは、補助記憶装置302からメモリ303にロードされCPU301によって実行される。key−valueのペアが格納される領域がデータベースである。通信装置307は、ネットワーク100を介してユーザ端末200とデータを送受信する。
【００１７】
後の説明を分かりやすくするために、データベースに格納されるkey−valueのペアのvalueが平文の場合のreplace関数の実行について説明する。Valueは、以下の説明から明らかなように、所定のデータ単位の値である。
【００１８】
図４は、valueが平文の場合のKVS（key−value store）システムで用いるデータを示す。図４(a)が、ユーザがユーザ端末200からデータベースサーバ300へ送信し、データベースに格納されるデータD100である。データD100は、KeyD101とValueD102のペアである。図４(ｂ)が、データベースに格納されているValueを新たなValueに更新するために、ユーザがユーザ端末200からデータベースサーバ300に送信するクエリD110である。クエリD110は、データベースサーバ300にreplace関数を実行させるための要求データであり、KeyD101、更新されるべきOld ValueD103（データベースに格納されているとユーザ端末側で認識しているValue）及び更新するNew ValueD104の組合せである。クエリD110を受信したデータベースサーバ300は、replace関数を実行する。データベースサーバ300は、クエリD110のKeyD101とペアでデータベースに格納されているValueD102を検索し、検索したValueD102とクエリD110のOld ValueD103の値が一致するならば、検索したValueD102をクエリD110のNew ValueD104と置換する。図４(ｃ)が、データベースサーバ300がreplace関数を実行した結果、更新され、データベースに格納されるデータD120である。データD120は、KeyD101のペアとしてクエリD110のNew ValueD104が格納される。
【００１９】
なお、KeyD101は、同じ項目のvalueに対して同一であるので、以下の説明ではKeyD101に関する説明を省略することがある。
【００２０】
図５に、データベースに格納されるkey−valueのペアのvalueが暗号化されている場合を示す。図５（a）が、ユーザがユーザ端末200からデータベースサーバ300へ送信し、データベースに格納する暗号文に対応する平文であり、図４(a)のデータD100と同じとする。ユーザ端末200は、ValueD102を暗号化した暗号化ValueD105とKeyD101をペアにしたデータD130を、データベースサーバ300へ送信する。図５（ｂ）が、データD100のValueD102を暗号化したデータD130である。データD130は、KeyD101と暗号化ValueD105のペアである。データD130を受信したデータベースサーバ300はデータD130をデータベースに格納する。
【００２１】
図６に、暗号化したクエリに対応して、データベースサーバ300によるreplace関数の実行の様子を示す。図６（a）が、平文のクエリD110であり、図４(ｂ)と同じである。replace関数の場合、ユーザは、ユーザ端末200で、更新されるべきOld ValueD103を暗号化してクエリとしての暗号化Old ValueD106を求め、更新する暗号化New ValueD107として、New ValueD104を暗号化し、KeyD101を対応させたクエリD110としてデータベースサーバ300へ送信する。図６（ｂ）が、平文のクエリD110に対応する暗号化クエリD140である。暗号化クエリD140は、KeyD101、更新されるべき暗号化Old ValueD106及び更新する暗号化New ValueD107の組合せである。データベースサーバ300がreplace関数の実行を開始すると、データベースサーバ300は、クエリD140のKeyD101とペアでデータベースに格納されている暗号化ValueD105（図５（ｂ））を検索し、検索した暗号化ValueD105とクエリD140の暗号化Old ValueD106が、それぞれに対応する平文として一致するならば、検索した暗号化ValueD105をクエリD140の暗号化New ValueD107と置換する。図６(ｃ)が、データベースサーバ300がreplace関数を実行した結果、更新され、データベースに格納される暗号化データD150である。データD150は、KeyD101のペアとして暗号化クエリD140の暗号化New ValueD107が格納される。
【００２２】
データベースサーバ300が秘密鍵を用いずに、図６の説明の、データベースに格納されている暗号化ValueD105と暗号化Old ValueD106のそれぞれに対応する平文としての一致を判定（マッチング処理）する方法を、以下に説明する。
【００２３】
通常の確率的暗号化および復号化を行う共通鍵暗号機能に加えて暗号化したまま（復号することなく）一致判定（マッチング処理）ができる暗号方式を検索可能暗号と呼ぶ。暗号化、復号化、および検索の際に利用する暗号化クエリの生成は、秘密鍵を持つユーザにおいて実行可能である。一方、暗号文と暗号化クエリのマッチング処理は誰でも（秘密鍵を持たないデータベース管理者（サービス業者））実行可能である。検索可能暗号を実現する検索可能暗号アルゴリズム（秘密鍵生成アルゴリズム、暗号化アルゴリズム、復号アルゴリズム、クエリ生成アルゴリズム、暗号文マッチングアルゴリズム）には、いくつかの方法を考え得るが、その一例を説明する。復号アルゴリズムに関しては、本実施形態では復号化せずにマッチング処理を実行するので、説明を省略する。
【００２４】
秘密鍵生成アルゴリズムは、鍵シードを入力とし、特定のビット長（たとえば、１２８ビット）のバイナリデータを出力する一般的なものである。
【００２５】
暗号化アルゴリズムの一例を、図７を用いて説明する。暗号化アルゴリズムは、平文と秘密鍵を入力とし暗号文を出力する。まず、秘密鍵生成アルゴリズムにより秘密鍵701を生成する。生成した秘密鍵701を用いて、平文のValueD102を暗号化関数702により暗号化し、暗号化中間Value703を得る。乱数X705を生成し、暗号化中間Value703と乱数Xとの排他的論理和（Exclusive−OR）704をとる。一方、Hash関数706により乱数X705のHash値707を求め、排他的論理和704の結果のビット列に、乱数XのHash値707のビット列を並べ（併置し）、暗号化ValueD105を得る。暗号化ValueD105のビット長は、暗号化中間Value703のビット長とHash値707のビット長との和になる。秘密鍵701を用いて、平文のValueD102の暗号化から暗号化ValueD105を得ることまでの一連の処理が暗号化アルゴリズムによる処理である。
【００２６】
クエリ生成アルゴリズムの一例を、図８を用いて説明する。クエリ生成アルゴリズムによる処理は、平文クエリ（図６を用いて説明したように、replace関数においては、更新されるべきOld ValueD103）を暗号化して、暗号化クエリとしての暗号化Old ValueD106を求める。秘密鍵701を用いて、Old ValueD103を暗号化関数702により暗号化し、暗号化Old ValueD106を得る。平文クエリとしてのOld ValueD103と平文のValueD102が一致し、同じ秘密鍵を使用すれば、暗号化Old ValueD106は図７の暗号化中間Value703と一致する。図６を用いて説明したように、クエリ生成アルゴリズムにより生成される暗号化クエリD140は、KeyD101、更新（置換）されるべき暗号化Old ValueD106及び更新（置換）する暗号化New ValueD107の組合せである。暗号化New ValueD107は、図７の暗号化アルゴリズムによって生成される。
【００２７】
データベースに格納されている暗号化Value D105と暗号化クエリの暗号化Old ValueD106との暗号化マッチングアルゴリズムの一例と、マッチングしたときの暗号化Value D105の暗号化New ValueD107への更新（置換）を、図９を用いて説明する。マッチングアルゴリズムは、暗号文（暗号化Value D105）と暗号化クエリ（暗号化Old ValueD106）を入力とし、それぞれに対応する平文が一致した場合に、[一致]を出力し、そうでない場合、[不一致]を出力する。
【００２８】
データベースに格納されているHash値707のビット列を除いた暗号化Value D105（暗号化Value D105に併置されたHash値707を除いたビット列）と暗号化クエリD140の暗号化Old ValueD106との排他的論理和（Exclusive−OR）704をとる。排他的論理和の結果は、乱数Y901となるので、Hash関数706により乱数Y901のHash値902を求め、暗号化Value D105中に併置されていたHash値707のビット列と比較903する。乱数Y901が、図7における乱数X705と等しければ、Hash値707とHash値902は等しく、このとき暗号化Value D105と暗号化Old ValueD106のそれぞれに対応する平文が一致しているので、比較903の結果が[一致]となり、暗号化Value D105を暗号化New ValueD107へ置換904する。このようにして、データベースサーバ300では、秘密鍵701を用いずに、replace関数を実行することができる。
【００２９】
なぜならば、ビット列P=Hash値707のビット列を除いた暗号化Value D105、ビット列Q=暗号化Old ValueD106=暗号化中間Value702、ビット列R=乱数X705（又は乱数Y901）とし、排他的論理和（Exclusive−OR）を（E‐OR）とするとき、P（E‐OR）Q＝P（E‐OR）R＝Q（E‐OR）Rであるからである。
【００３０】
なお、乱数Y901が、図7における乱数X705と等しいか否かをHash値707とHash値902を用いて判定していることから明らかなように、必ずしもHash値を用いる必要はない。図７において、Hash値707の代わりに暗号化Value D105に乱数X705を含めば、図９の処理において、乱数X705と乱数Y901の比較で、暗号化Value D105と暗号化Old ValueD106のそれぞれに対応する平文が一致しているか否かを判定できる。ただし、Hash値を用いると、暗号の強度（復号化され難さ）が増し、暗号化Value D105全体のビット長を短くできる。
【００３１】
一方、他のユーザにより暗号化Old ValueD106を生成するための、OldValueD103、秘密鍵701、及び暗号化関数702の少なくとも一つが、正規のユーザが用いたものと異なれば、乱数Y901と乱数X705とは異なり、Hash値707とHash値902も異なり、このとき暗号化Value D105と暗号化Old ValueD106のそれぞれに対応する平文が不一致として比較903の結果が[不一致]となり、暗号化Value D105を暗号化New ValueD107へ置換904できないので、正規のユーザのデータである暗号化Value D105を保護できる。
【００３２】
以下、ユーザ端末200とデータベースサーバ300との間のデータ送受信の流れを説明する。図１０は、ユーザ端末200がデータベースサーバ300へ暗号化されたvalueをkeyとペアの暗号化key−valueデータを送信し、データベースに格納する処理フローである。
【００３３】
ユーザ端末200は、暗号化復号化に用いる秘密鍵を生成するために、前述の秘密鍵生成処理（S100）を実行し、生成した秘密鍵を補助記憶装置202またはメモリ203に保管する。
【００３４】
ユーザ端末200は、図５及び図７を用いて説明したように、秘密鍵生成処理（S100）で生成した秘密鍵を用いて、key−valueデータD100のvalueD102を暗号化し（S200）、暗号化した暗号化key−valueデータD130をデータベースサーバ300に送信する。暗号化key−valueデータD130を受信したデータベースサーバ300は、keyD101（0023a181）と暗号化されたvalueデータD105（keciaqqt）を対応させたまま補助記憶装置302（データベース）に暗号化key−valueデータD130を格納する（S300）。
【００３５】
図１１は、ユーザ端末200が暗号化クエリD140をデータベースサーバ300へ送信し、データベースサーバ300が、受信した暗号化クエリD140に応答して、replace処理（replace関数）を実行する処理フローである。
【００３６】
ユーザ端末200は、保存した暗号化key−valueデータD130の更新処理を行うために、図８を用いて説明したように、replace関数をデータベースサーバ300に実行させるための暗号化クエリD140を生成し（S400）、生成した暗号化クエリD140をデータベースサーバ300に送信する。暗号化クエリD140を受信したデータベースサーバ300は、暗号化されたvalueD105（keciaqqt）の更新処理のための暗号文replace関数を実行し、その処理結果をユーザ端末200に送信し、処理を終える。
【００３７】
暗号文replace関数の実行を具体的に説明する。データベースサーバ300は受信した暗号化クエリD140のkeyD101（0023a181）に対応するデータベース内の暗号化key−valueデータD130を読み出し、図９を用いて説明したように、暗号化valueD105（keciaqqt）と暗号化クエリD140の暗号化Old ValueD106(ownabajr)とのマッチング処理を実行する（S500）。図９を用いて説明したように、マッチング処理において、暗号化valueD105（keciaqqt）は、Hash値707のビット列を除いた部分を用いる。マッチング処理の結果は、暗号化valueD105（keciaqqt）と暗号化Old ValueD106(ownabajr)のそれぞれに対応する平文D102,D103が一致又は不一致として得られる。マッチング処理の結果を判定し（S600）、処理結果が不一致の場合、ユーザ端末200に処理結果を送信するために処理結果「失敗」を用意する（S700）。一方、処理結果が一致の場合、図９を用いて説明したように、暗号化valueD105（keciaqqt）を暗号化クエリD140の暗号化New ValueD107(oeaawatb)に更新（置換）し（S800）、処理結果[成功]を用意する（S900）。ユーザ端末200からの暗号化クエリ（更新処理の要求）に対する応答として、ユーザ端末200に[成功]または[失敗]の処理結果D1000を送信する。
【００３８】
なお，KVSデータベースシステムは，上述の実施形態に限定されるものではなく、その要旨の範囲内で様々な変形が可能である。
【００３９】
例えば、本実施形態ではデータベースサーバ300は、1つのデータベースサーバで構成されているが、一般に、ユーザ端末200がネットワーク100を介して接続するデータベースサーバは1つである必要はなく、複数に分散し、データの格納、管理を行ってもよい、
その際には、上述の実施形態で述べた暗号化されたvalueを保管するデータベースサーバ300と平文を保管するデータベースサーバが併用されていてもよい。このようなシステム構成においては、ユーザ端末200が、replace関数を用いたvalueの更新処理を実行する場合、平文valueに対するreplace関数処理と暗号文valueに対するreplace関数処理とのどちらを実行するかをデータベースサーバ300が判断可能な識別情報をクエリ（replace関数を実行させるための要求データ）に含んで、データベースサーバ200にクエリを送信することにより、データベースサーバ200は識別情報に対応して平文または暗号文のvalueに対するreplace関数処理を実行できる。
【００４０】
さらに、暗号化されたvalueの所定部分のバイナリ列に限定して、検索可能暗号を用いた暗号文マッチング処理を実行し、その処理結果が[一致]だった場合、 replace処理（置換）を実行してもよい。このとき、ユーザ端末200が部分バイナリ列のアドレス（所定部分を識別する情報）を指定し、データベースサーバ200に指定したアドレスをクエリに付加して送信する。
【００４１】
以上説明したように、本実施形態では、ユーザが秘密鍵をデータベース側に渡すことなく更新処理（replace関数）が実行可能なデータベースシステムを実現できる。
【符号の説明】
【００４２】
１００：ネットワーク、２００：ユーザ端末、２０１：ＣＰＵ、２０２：補助記憶装置（記憶装置）、２０３：メモリ、２０４：内部信号線、２０５：表示装置、２０６：入出力インターフェース、２０７：通信装置、３００：データベースサーバ、３０１：ＣＰＵ、３０２：補助記憶装置（記憶装置）、３０３：メモリ、３０４：内部信号線、３０５：表示装置、３０６：入出力インターフェース、３０７：通信装置。
【図１】
2014126577.tif 000003
【図２】
2014126577.tif 000004
【図３】
2014126577.tif 000005
【図４】
2014126577.tif 000006
【図５】
2014126577.tif 000007
【図６】
2014126577.tif 000008
【図７】
2014126577.tif 000009
【図８】
2014126577.tif 000010
【図９】
2014126577.tif 000011
【図１０】
2014126577.tif 000012
【図１１】
2014126577.tif 000013