(57)【要約】  プロセッサと、プロセッサに接続される記憶装置と、を有するデータ加工システムであって、記憶装置は、複数の平文データを暗号化することによって生成された複数の暗号化データと、複数の暗号化データをそれらが暗号化されたままで検索するための複数の暗号化クエリと、を保持し、プロセッサは、各暗号化クエリを用いて各暗号化データを検索することによって、各暗号化クエリを用いて検索された暗号化データの出現数を計算し、各暗号化クエリを用いて検索された暗号化データの出現数に基づいて、所定の匿名性を満たすように複数の暗号化データの少なくとも二つを変更し、複数の暗号化データを出力する。
2017103970.tif 000002
【特許請求の範囲】
【請求項１】
第１計算機を有するデータ加工システムであって、
前記第１計算機は、第１プロセッサと、前記第１プロセッサに接続される第１記憶装置と、を有し、
前記第１記憶装置は、複数の平文データを暗号化することによって生成された複数の暗号化データと、前記複数の暗号化データをそれらが暗号化されたままで検索するための複数の暗号化クエリと、を保持し、
前記第１プロセッサは、
前記各暗号化クエリを用いて前記各暗号化データを検索することによって、前記各暗号化クエリを用いて検索された暗号化データの出現数を計算し、
前記各暗号化クエリを用いて検索された暗号化データの出現数に基づいて、所定の匿名性を満たすように前記複数の暗号化データの少なくとも二つを変更し、
前記複数の暗号化データを出力することを特徴とするデータ加工システム。
【請求項２】
請求項１に記載のデータ加工システムであって、
前記第１記憶装置は、前記各暗号化クエリと、前記各暗号化クエリを用いて検索された各暗号化データを置換するための置換用暗号化データと、を対応付ける補助情報を保持し、
前記補助情報は、二つ以上の暗号化クエリと、前記二つ以上の暗号化クエリを用いて検索された各暗号化データを置換するための置換用暗号化データとを対応付ける情報を含み、
前記第１プロセッサは、前記二つ以上の暗号化クエリのいずれか一つを用いて検索された暗号化データの出現数が所定の数より小さく、かつ、前記二つ以上の暗号化クエリの各々を用いて検索された暗号化データの出現数の合計が前記所定の数以上である場合、前記二つ以上の暗号化クエリの各々を用いて検索された各暗号化データを、前記二つ以上の暗号化クエリに対応付けられた前記置換用暗号化データによって置換することによって、前記所定の匿名性を満たすように前記暗号化されたデータを変更することを特徴とするデータ加工システム。
【請求項３】
請求項２に記載のデータ加工システムであって、
ネットワークを介して前記第１計算機に接続される第２計算機をさらに有し、
前記第１計算機は、前記第１プロセッサ及び前記ネットワークに接続される第１通信装置をさらに有し、
前記第２計算機は、第２プロセッサと、前記第２プロセッサに接続される第２記憶装置と、前記第２プロセッサ及び前記ネットワークに接続される第２通信装置と、を有し、
前記第２記憶装置は、
前記複数の平文データを保持し、
前記平文データがとり得る複数の内容に対応する最下位層の複数のノードと、複数の下位層のノードに連結され、前記複数の下位層のノードに対応する全ての平文データの内容に対応する一つ以上の上位層のノードと、を含む一般化階層木を保持し、
第１暗号鍵及び第２暗号鍵と、を保持し、
前記第２プロセッサは、
前記第１暗号鍵を用いて前記複数の平文データを暗号化することによって前記複数の暗号化データを生成し、前記第１暗号鍵を用いて前記複数の暗号化データをそれらが暗号化されたままで検索するための複数の暗号化クエリを生成し、前記第２暗号鍵を用いて前記各ノードに対応する一つの平文データの内容又は複数の平文データの内容の組合せを暗号化することによって複数の前記置換用暗号化データを生成し、前記一般化階層木に基づいて、前記複数の平文データの内容を含む複数の暗号化データを検索するための複数の暗号化クエリと前記複数の平文データの内容の組合せを暗号化することによって生成された前記置換用暗号化データとを対応付ける情報を含む前記補助情報を生成し、
前記複数の暗号化データ、前記複数の暗号化クエリ、前記複数の置換用暗号化データ及び前記補助情報を前記第１計算機に送信し、
前記第１プロセッサは、受信した前記複数の暗号化データ、前記複数の暗号化クエリ、前記複数の置換用暗号化データ及び前記補助情報を前記第１記憶装置に格納することを特徴とするデータ加工システム。
【請求項４】
請求項１に記載のデータ加工システムであって、
前記第１記憶装置は、前記各暗号化クエリと、前記各暗号化クエリを用いて検索された各暗号化データを置換するための置換用暗号化データと、を対応付ける補助情報を保持し、
前記第１プロセッサは、前記複数の暗号化クエリのうち第１暗号化クエリを用いて検索された暗号化データの出現数が所定の数より小さく、かつ、前記第１暗号化クエリを含む複数の暗号化クエリの各々を用いて検索された暗号化データの出現数の合計が前記所定の数以上である場合、前記第１暗号化クエリを含む複数の暗号化クエリの各々に対応する置換用暗号化データの組合せによって、前記第１暗号化クエリを含む複数の暗号化クエリの各々によって検索された前記各暗号化データを置換することによって、前記所定の匿名性を満たすように前記複数の暗号化データを変更することを特徴とするデータ加工システム。
【請求項５】
請求項４に記載のデータ加工システムであって、
前記第１プロセッサは、
各々が前記各暗号化クエリに対応する最下位層の複数のノードと、複数の下位層のノードに連結され、前記複数の下位層のノードに対応する全ての前記暗号化クエリに対応する一つ以上の上位層のノードと、を含み、各ノードに対応する全ての前記暗号化クエリによって検索された前記暗号化データの出現数の合計値が前記各ノードの出現数として与えられた一般化階層木を生成し、
前記所定の数以上の前記出現数を有する前記ノードに対応する全ての前記暗号化クエリを用いて検索された一つ以上の前記暗号化データの各々を、当該全ての暗号化クエリの各々に対応する置換用暗号化データの組合せによって置換することによって、前記所定の匿名性を満たすように前記暗号化データを変更することを特徴とするデータ加工システム。
【請求項６】
請求項４に記載のデータ加工システムであって、
ネットワークを介して前記第１計算機に接続される第２計算機をさらに有し、
前記第１計算機は、前記第１プロセッサ及び前記ネットワークに接続される第１通信装置をさらに有し、
前記第２計算機は、第２プロセッサと、前記第２プロセッサに接続される第２記憶装置と、前記第２プロセッサ及び前記ネットワークに接続される第２通信装置と、を有し、
前記第２記憶装置は、前記複数の平文データと、第１暗号鍵と、第２暗号鍵と、を保持し、
前記第２プロセッサは、
前記第１暗号鍵を用いて前記複数の平文データを暗号化することによって前記複数の暗号化データを生成し、前記第１暗号鍵を用いて前記複数の暗号化データをそれらが暗号化されたままで検索するための複数の暗号化クエリを生成し、前記第２暗号鍵を用いて前記複数の平文データがとり得る複数の値を暗号化することによって複数の前記置換用暗号化データを生成し、同一の平文データの内容に対応する前記暗号化データを検索するための暗号化クエリと前記置換用暗号化データとを対応付ける情報を含む前記補助情報を生成し、
前記複数の暗号化データ、前記複数の暗号化クエリ、前記複数の置換用暗号化データ及び前記補助情報を前記第１計算機に送信し、
前記第１プロセッサは、受信した前記複数の暗号化データ、前記複数の暗号化クエリ、前記複数の置換用暗号化データ及び前記補助情報を前記第１記憶装置に格納することを特徴とするデータ加工システム。
【請求項７】
請求項１に記載のデータ加工システムであって、
前記第１記憶装置は、前記各暗号化クエリと、前記各暗号化クエリを用いて検索された各暗号化データを置換するための置換用暗号化データと、を対応付ける補助情報を保持し、
前記複数の暗号化データは、第１暗号鍵を用いて前記複数の平文データを暗号化することによって生成されたデータを含み、
複数の前記置換用暗号化データは、第２暗号鍵を用いて前記複数の平文データを暗号化することによって生成された複数の第１置換用暗号化データと、第３暗号鍵を用いて前記複数の平文データを暗号化することによって生成された複数の第２置換用暗号化データと、を含み、
前記第１プロセッサは、前記第１置換用暗号化データ又は前記第２置換用暗号化データのいずれかを指定する情報が入力されると、指定された置換用暗号化データによって前記暗号化データを置換することによって、前記所定の匿名性を満たすように前記複数の暗号化データを変更することを特徴とするデータ加工システム。
【請求項８】
第１計算機を有する計算機システムが実行するデータ加工方法であって、
前記第１計算機は、第１プロセッサと、前記第１プロセッサに接続される第１記憶装置と、を有し、
前記第１記憶装置は、複数の平文データを暗号化することによって生成された複数の暗号化データと、前記複数の暗号化データをそれらが暗号化されたままで検索するための複数の暗号化クエリと、を保持し、
前記データ加工方法は、
前記第１プロセッサが、前記各暗号化クエリを用いて前記各暗号化データを検索することによって、前記各暗号化クエリを用いて検索された暗号化データの出現数を計算する第１手順と、
前記第１プロセッサが、前記各暗号化クエリを用いて検索された暗号化データの出現数に基づいて、所定の匿名性を満たすように前記複数の暗号化データを変更する第２手順と
前記第１プロセッサが、前記変更した暗号化データを出力する第３手順と、を含むことを特徴とするデータ加工方法。
【請求項９】
請求項８に記載のデータ加工方法であって、
前記第１記憶装置は、前記各暗号化クエリと、前記各暗号化クエリを用いて検索された各暗号化データを置換するための置換用暗号化データと、を対応付ける補助情報を保持し、
前記補助情報は、二つ以上の暗号化クエリと、前記二つ以上の暗号化クエリを用いて検索された各暗号化データを置換するための置換用暗号化データとを対応付ける情報を含み、
前記第２手順において、前記第１プロセッサは、前記二つ以上の暗号化クエリのいずれか一つを用いて検索された暗号化データの出現数が所定の数より小さく、かつ、前記二つ以上の暗号化クエリの各々を用いて検索された暗号化データの出現数の合計が前記所定の数以上である場合、前記二つ以上の暗号化クエリの各々を用いて検索された各暗号化データを、前記二つ以上の暗号化クエリに対応付けられた前記置換用暗号化データによって置換することによって、前記所定の匿名性を満たすように前記暗号化されたデータを変更することを特徴とするデータ加工方法。
【請求項１０】
請求項９に記載のデータ加工方法であって、
ネットワークを介して前記第１計算機に接続される第２計算機をさらに有し、
前記第１計算機は、前記第１プロセッサ及び前記ネットワークに接続される第１通信装置をさらに有し、
前記第２計算機は、第２プロセッサと、前記第２プロセッサに接続される第２記憶装置と、前記第２プロセッサ及び前記ネットワークに接続される第２通信装置と、を有し、
前記第２記憶装置は、
前記複数の平文データを保持し、
前記平文データがとり得る複数の内容に対応する最下位層の複数のノードと、複数の下位層のノードに連結され、前記複数の下位層のノードに対応する全ての平文データの内容に対応する一つ以上の上位層のノードと、を含む一般化階層木を保持し、
第１暗号鍵及び第２暗号鍵と、を保持し、
前記データ加工方法は、
前記第２プロセッサが、前記第１暗号鍵を用いて前記複数の平文データを暗号化することによって前記複数の暗号化データを生成し、前記第１暗号鍵を用いて前記複数の暗号化データをそれらが暗号化されたままで検索するための複数の暗号化クエリを生成し、前記第２暗号鍵を用いて前記各ノードに対応する一つの平文データの内容又は複数の平文データの内容の組合せを暗号化することによって複数の前記置換用暗号化データを生成し、前記一般化階層木に基づいて、前記複数の平文データの内容を含む複数の暗号化データを検索するための複数の暗号化クエリと前記複数の平文データの内容の組合せを暗号化することによって生成された前記置換用暗号化データとを対応付ける情報を含む前記補助情報を生成する手順と、
前記第２プロセッサが、前記複数の暗号化データ、前記複数の暗号化クエリ、前記複数の置換用暗号化データ及び前記補助情報を前記第１計算機に送信し、前記第１プロセッサが、受信した前記複数の暗号化データ、前記複数の暗号化クエリ、前記複数の置換用暗号化データ及び前記補助情報を前記第１記憶装置に格納する手順と、を含むことを特徴とするデータ加工方法。
【請求項１１】
請求項８に記載のデータ加工方法であって、
前記第１記憶装置は、前記各暗号化クエリと、前記各暗号化クエリを用いて検索された各暗号化データを置換するための置換用暗号化データと、を対応付ける補助情報を保持し、
前記第２手順において、前記第１プロセッサは、前記複数の暗号化クエリのうち第１暗号化クエリを用いて検索された暗号化データの出現数が所定の数より小さく、かつ、前記第１暗号化クエリを含む複数の暗号化クエリの各々を用いて検索された暗号化データの出現数の合計が前記所定の数以上である場合、前記第１暗号化クエリを含む複数の暗号化クエリの各々に対応する置換用暗号化データの組合せによって、前記第１暗号化クエリを含む複数の暗号化クエリの各々によって検索された前記各暗号化データを置換することによって、前記所定の匿名性を満たすように前記複数の暗号化データを変更することを特徴とするデータ加工方法。
【請求項１２】
請求項１１に記載のデータ加工方法であって、
前記第１プロセッサが、各々が前記各暗号化クエリに対応する最下位層の複数のノードと、複数の下位層のノードに連結され、前記複数の下位層のノードに対応する全ての前記暗号化クエリに対応する一つ以上の上位層のノードと、を含み、各ノードに対応する全ての前記暗号化クエリによって検索された前記暗号化データの出現数の合計値が前記各ノードの出現数として与えられた一般化階層木を生成する手順をさらに含み、
前記第２手順において、前記第１プロセッサは、前記所定の数以上の前記出現数を有する前記ノードに対応する全ての前記暗号化クエリを用いて検索された一つ以上の前記暗号化データの各々を、当該全ての暗号化クエリの各々に対応する置換用暗号化データの組合せによって置換することによって、前記所定の匿名性を満たすように前記暗号化データを変更することを特徴とするデータ加工方法。
【請求項１３】
請求項１１に記載のデータ加工方法であって、
前記計算機システムは、ネットワークを介して前記第１計算機に接続される第２計算機をさらに有し、
前記第１計算機は、前記第１プロセッサ及び前記ネットワークに接続される第１通信装置をさらに有し、
前記第２計算機は、第２プロセッサと、前記第２プロセッサに接続される第２記憶装置と、前記第２プロセッサ及び前記ネットワークに接続される第２通信装置と、を有し、
前記第２記憶装置は、前記複数の平文データと、第１暗号鍵と、第２暗号鍵と、を保持し、
前記データ加工方法は、
第２プロセッサが、前記第１暗号鍵を用いて前記複数の平文データを暗号化することによって前記複数の暗号化データを生成し、前記第１暗号鍵を用いて前記複数の暗号化データをそれらが暗号化されたままで検索するための複数の暗号化クエリを生成し、前記第２暗号鍵を用いて前記複数の平文データがとり得る複数の値を暗号化することによって複数の前記置換用暗号化データを生成し、同一の平文データの内容に対応する前記暗号化データを検索するための暗号化クエリと前記置換用暗号化データとを対応付ける情報を含む前記補助情報を生成する手順と、
第２プロセッサが、前記複数の暗号化データ、前記複数の暗号化クエリ、前記複数の置換用暗号化データ及び前記補助情報を前記第１計算機に送信し、前記第１プロセッサが、受信した前記複数の暗号化データ、前記複数の暗号化クエリ、前記複数の置換用暗号化データ及び前記補助情報を前記第１記憶装置に格納する手順と、をさらに含むことを特徴とするデータ加工方法。
【請求項１４】
請求項８に記載のデータ加工方法であって、
前記第１記憶装置は、前記各暗号化クエリと、前記各暗号化クエリを用いて検索された各暗号化データを置換するための置換用暗号化データと、を対応付ける補助情報を保持し、
前記複数の暗号化データは、第１暗号鍵を用いて前記複数の平文データを暗号化することによって生成されたデータを含み、
複数の前記置換用暗号化データは、第２暗号鍵を用いて前記複数の平文データを暗号化することによって生成された複数の第１置換用暗号化データと、第３暗号鍵を用いて前記複数の平文データを暗号化することによって生成された複数の第２置換用暗号化データと、を含み、
前記第２手順において、前記第１プロセッサは、前記第１置換用暗号化データ又は前記第２置換用暗号化データのいずれかを指定する情報が入力されると、指定された置換用暗号化データによって前記暗号化データを置換することによって、前記所定の匿名性を満たすように前記複数の暗号化データを変更することを特徴とするデータ加工方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、匿名化データベースを作成する技術に関する。
【背景技術】
【０００２】
機微情報が含まれているデータを加工し、加工後はデータに機微情報が含まれないような技術が匿名化技術と呼ばれ、古くから検討されている。しかしながら、従来技術では、匿名化前の元データの知識を有する攻撃者に対しては、匿名化後も元データが識別可能な場合があることが知られている。【０００３】
非特許文献１には、この課題を解消するため、データ内の定められた属性に対しては、必ず同一値がｋ件以上存在するよう、匿名化する技術が開示されている。ここで、ｋが２以上の数であれば、匿名化後の属性からは元データが一意には定まらない。【０００４】
特許文献１には、指定された匿名性の要求を満たすように匿名化されたデータを出力するシステムが開示されている。【０００５】
特許文献２には、個人情報の保護技術において、属性値の一般化階層木を自動で構成する匿名化装置を提供することが開示されている。
【先行技術文献】
【特許文献】
【０００６】
特許文献１：米国特許第７２６９５７８号明細書
特許文献２：米国特許出願公開第２０１３／０１３８６９８号明細書
【非特許文献】
【０００７】
非特許文献１：Kristen LeFevre, David J. DeWitt, Raghu Ramakrishnan, ”Incognito: efficient full-domain K-anonymity”, Proceedings of the 2005 ACM SIGMOD international conference on Management Data, p49-60
【発明の概要】
【発明が解決しようとする課題】
【０００８】
情報システムの開発・運用管理費の効率化を目的に、近年、情報システムを自組織が維持するのではなく、他組織が提供するクラウドと呼ばれる情報システム上でデータ加工を依頼するシステムが注目されている。この場合、データを他組織が管理する情報システムに預ける必要があるため、情報漏洩の予防を目的とした、暗号技術が有効な策として研究されている。【０００９】
特許文献１に開示される方式では、必ず匿名化の実行環境にデータを開示する必要があるが、クラウド等の外部組織が運用する匿名化の実行環境を用いる場合には、ユーザのデータはクラウド側に開示されるため、情報漏洩の危険性がある。また、特に機微性の高いデータに対しては、この情報漏洩の懸念から、ユーザはクラウドを利用できない。
【課題を解決するための手段】
【００１０】
上記課題を解決するための、本発明の代表的なものの一例を示すと、次の通りである。すなわち、第１計算機を有するデータ加工システムであって、前記第１計算機は、第１プロセッサと、前記第１プロセッサに接続される第１記憶装置と、を有し、前記第１記憶装置は、複数の平文データを暗号化することによって生成された複数の暗号化データと、前記複数の暗号化データをそれらが暗号化されたままで検索するための複数の暗号化クエリと、を保持し、前記第１プロセッサは、前記各暗号化クエリを用いて前記各暗号化データを検索することによって、前記各暗号化クエリを用いて検索された暗号化データの出現数を計算し、前記各暗号化クエリを用いて検索された暗号化データの出現数に基づいて、所定の匿名性を満たすように前記複数の暗号化データの少なくとも二つを変更し、前記複数の暗号化データを出力することを特徴とする。
【発明の効果】
【００１１】
本発明の一態様によれば、ユーザはデータが機微情報を含む場合であっても、そのデータの匿名化処理を他組織が管理する情報システムに委託できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例１のデータ加工システムのユースケースの概要を示した説明図である。
【図２】本発明の実施例１の管理サーバのハードウェア構成を示すブロック図である。
【図３】本発明の実施例１の登録ＰＣ、管理サーバおよび復号ＰＣに格納されるデータおよびプログラム、ならびに、ネットワーク経由で送受信されるデータの概要を示す説明図である。
【図４Ａ】本発明の実施例１の登録ＰＣが実行する暗号化データベースの作成及び登録の処理を示すフローチャートである。
【図４Ｂ】本発明の実施例１の登録ＰＣによって作成される暗号化データベースの説明図である。
【図５Ａ】本発明の実施例１の登録ＰＣが実行する匿名化の依頼処理を示すフローチャートである。
【図５Ｂ】本発明の実施例１の登録ＰＣによる一般化階層木の暗号化の説明図である。
【図５Ｃ】本発明の実施例１の登録ＰＣによって暗号化された一般化階層木の実装例の説明図である。
【図５Ｄ】本発明の実施例１の登録ＰＣによって生成される暗号化クエリと暗号化データとの対応表の第１の例の説明図である。
【図５Ｅ】本発明の実施例１の登録ＰＣによって生成される暗号化クエリと暗号化データとの対応表の第２の例の説明図である。
【図６】本発明の実施例１の管理サーバが、暗号化された一般化階層木を用い、葉ノードと同じ値を有する暗号化データの出現頻度を集計する処理を示すフローチャートである。
【図７Ａ】本発明の実施例１の管理サーバが実行する匿名化処理を示すフローチャートである。
【図７Ｂ】本発明の実施例１の管理サーバが生成する頻度付き暗号化された一般化階層木の説明図である。
【図７Ｃ】本発明の実施例１の管理サーバが生成する匿名化暗号化データベースの説明図である。
【図８Ａ】本発明の実施例２の登録ＰＣが実行する匿名化の依頼処理を示すフローチャートである。
【図８Ｂ】本発明の実施例２の登録ＰＣによる一般化階層木補助パラメータの作成の説明図である。
【図８Ｃ】本発明の実施例２の登録ＰＣによって生成される暗号化クエリと暗号化データとの対応表の説明図である。
【図９Ａ】本発明の実施例２の管理サーバが実行する匿名化処理を示すフローチャートである。
【図９Ｂ】本発明の実施例２の管理サーバによって集計された葉ノードの出現頻度の説明図である。
【図９Ｃ】本発明の実施例２の管理サーバが生成する頻度付き一般化階層木の説明図である。
【図１０】本発明の実施例１の変形例の登録ＰＣが実行する暗号化データベースの作成及び登録の処理の説明図である。
【図１１】本発明の実施例１の変形例の管理サーバが実行するノードの頻度集計処理の説明図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施例を図面に基づいて詳細に説明する。なお、これによって本発明が限定されるものではない。実施の形態において、同一の部材には原則として同一の符号を付け、繰り返しの説明は省略する。
【００１４】
まず、本発明の実施例で使用する用語を定義する。
【００１５】
（１）データベース
データの管理形態の一種である。データを平文で保存する場合、平文データベースと記す。また、データとして暗号文を保存する場合、暗号化データベースと記す。単にデータベースと呼ぶ場合は、データの状態は暗号化の有無を問わない。
【００１６】
（２）暗号鍵
データの暗号化に用いる鍵である。
【００１７】
（３）復号鍵
データの復号に用いる鍵である。共通鍵暗号の場合、暗号鍵と復号鍵は等しい。
【００１８】
（４）平文データ（または平文）
暗号化対象のデータを指す。
【００１９】
（５）平文空間
平文がとりえる値の集合を指す。例えば、平文空間を０以上ｔ未満とするとき、整数［０、１、２、・・・ｔ−１］のいずれかを平文が取りうる。
【００２０】
（６）検索可能暗号
データの暗号化／復号機能とクエリの暗号化機能を保有する。暗号化データの暗号化を維持したまま、暗号化クエリと比較し、元のデータとクエリの値が等しいかを判定することが可能である。本発明では、この判定関数が０または１を出力するものとし、１の場合は等しい、０の場合は等しくないものとする。なお、暗号プリミティブレベルでは復号機能を有さない検索可能暗号でも、別の暗号プリミティブと組み合わせ、復号機能を有する検索可能暗号が構成できる。
【００２１】
（７）匿名化補助パラメータ
ｋ−匿名化をする際に利用するパラメータの総称である。ｋ値、ｋ−匿名化のアルゴリズム、匿名化対象の属性（もしくは、暗号化対象となる暗号化データベースの列番号、または列名）等を含んでもよい。
【００２２】
（８）匿名化補助データ
匿名化の状態を示すデータである。ｋ値に加え、匿名化後の情報量などに基づくスコア等を含んでもよい。
【００２３】
（９）一般化階層木
一般化階層木は、一般には属性毎に定められた、データの再符号化（匿名化）の手順に利用されるデータである。後述する図５Ｂの一般化階層木１１２Ａに示すように、単一の属性（図５Ｂの例では属性１）に対し、一般化階層木が与えられる。一般化階層木内のノードには値がラベル付け（ａ，ｂ，ａｂなど）され、ノード同士は結線構造を有する。各ノードには一般化階層木における高さが与えられており、例えば一般化階層木１１２Ａでは、ノード｛＊｝が最も高い位置にあり、次いでノード｛ａｂｃ，ｄｅｆ｝と｛ｂｃ，ｄｅ｝、最後（すなわち最も低い位置）にノード｛ａ，ｂ，ｃ，ｄ，ｅ，ｆ｝がある。直接的に線で結ばれたノードのうち、位置が高い方を親ノードと呼び、低い方を子ノードと呼ぶ。また、親ノードをもたないノードを根ノード、子ノードをもたないノードを葉ノードと呼ぶ。葉ノードは、もともとのデータの値を直接指しており、例えば表４．１の属性１における値｛ａ，ｂ，ｃ，ｄ，ｅ，ｆ｝が葉ノードのラベルとして割り当てられている。ノードの高さが最も低い位置を０階層とし、高さが上がるたびに階層を１ずつ増やす。例えば、一般化階層木１１２Ａでは、０階層から１、２、３階層まで、４種類の階層がある。本実施例で開示する匿名化技術では、一般化階層木は、データの再符号化（匿名化）の手順に利用される。例えば、一般化階層木１１２Ａでは、０階層目にデータの平文空間の値が｛ａ，ｂ，ｃ，ｄ，ｅ，ｆ｝として列挙されている。１階層目には、｛ｂ，ｃ｝を再符号化した値として｛ｂｃ｝、｛ｄ，ｅ｝を再符号化した値として｛ｄｅ｝がある。２階層目には、｛ａ｝，｛ｂｃ｝を再符号化した値として｛ａｂｃ｝、｛ｄｅ，ｆ｝を再符号化した値として｛ｄｅｆ｝がある。３階層目には｛ａｂｃ，ｄｅｆ｝を再符号化した値として、記号｛＊｝がある。
【００２４】
（１０）順序保存暗号
データの暗号化／復号機能とクエリの暗号化機能を保有する。暗号化データの暗号化を維持したまま、暗号化クエリと比較し、元のデータとクエリの値の大小比較が判定可能である。暗号プリミティブによっては、データの暗号化機能とクエリの暗号化機能が同じ場合もある。
【実施例１】
【００２５】
図１は、本発明の実施例１のデータ加工システムのユースケースの概要を示した説明図である。【００２６】
図示するように、本実施例のデータ加工システムは、登録ＰＣ１００、管理サーバ２００および復号ＰＣ３００から構成される。図１に示すように、例えば、登録ＰＣ１００はデータ登録業者が保有し、管理サーバ２００はクラウド運用業者が保有し、復号ＰＣ３００はサービス提供業者が保有してもよい。登録ＰＣ１００が暗号鍵１００Ｃを用いてデータ１００Ａを暗号化し、暗号化データ２００Ａとして、ネットワーク４００（図２参照）経由で管理サーバ２００に登録する。さらに、登録ＰＣ１００は匿名化の際に利用する匿名化補助情報１００Ｂを暗号化し、ネットワーク４００経由で管理サーバ２００に登録する。【００２７】
管理サーバ２００は、暗号化された匿名化補助情報２００Ｂを用い、暗号化データ２００Ａを匿名化した、匿名化済暗号化データ２００Ｃを作成し、復号ＰＣ３００にネットワーク４００経由で提供する。復号ＰＣ３００は、復号鍵３００Ｂを用い、匿名化済暗号化データ３００Ｃを復号し、匿名化データ３００Ａを入手する。【００２８】
上記の処理では、管理サーバ２００は匿名化データを作成できる一方、暗号化によって、データの内容は管理サーバ２００には漏れないため、機微性の高いデータでも、データ登録業者（登録ＰＣ１００）は安全にクラウド（管理サーバ２００）に匿名化処理を委託できる。【００２９】
図２は、本発明の実施例１の管理サーバ２００のハードウェア構成を示すブロック図である。【００３０】
図示するように、管理サーバ２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１、メモリ２０２、記憶装置２０３、入力装置２０５、出力装置２０６、読書装置２０７、および通信装置２０８が内部信号線３０４によって連結されることで構成される。記憶装置２０３には、プログラムが格納されている。プログラムは、メモリ２０２にロードされ、ＣＰＵ２０１によって実行される。以下の説明において管理サーバ２００が実行する処理は、実際には、ＣＰＵ２０１がプログラムに従って、必要に応じてメモリ２０２、記憶装置２０３、入力装置２０５、出力装置２０６、読書装置２０７及び通信装置２０８を制御することによって実行される。【００３１】
読書装置２０７は、例えばＣＤ−Ｒ／ＣＤ−ＲＷドライブ、ＳＤカードリーダライタ等の、掛け替え可能な記憶媒体の読み書き装置である。通信装置２０８は、ネットワーク４００に接続され、ネットワーク４００を介して登録ＰＣ１００及び復号ＰＣ３００との間でデータの送受信を行う。【００３２】
また、登録ＰＣ１００及び復号ＰＣ３００のハードウェア構成は、管理サーバ２００と同様であるため、説明を省略する。登録ＰＣ１００の記憶装置には、プログラムが格納され、そのプログラムが登録ＰＣ１００のメモリにロードされ、登録ＰＣ１００のＣＰＵによって実行されることによって、登録ＰＣ１００の処理が実現される。同様に、復号ＰＣ３００の記憶装置には、プログラムが格納され、そのプログラムが復号ＰＣ３００のメモリにロードされ、復号ＰＣ３００のＣＰＵによって実行されることによって、復号ＰＣ３００の処理が実現される。【００３３】
なお、管理サーバ２００のプログラムは、読書装置２０７を介して入力されるか、または通信装置２０８を介してネットワーク４００から入力され、記憶装置２０３に記憶され、その後、メモリ２０２上にロードされて、ＣＰＵ２０１によって実行されてもよい。登録ＰＣ１００及び復号ＰＣ３００のプログラムも同様である。【００３４】
図３は、本発明の実施例１の登録ＰＣ１００、管理サーバ２００および復号ＰＣ３００に格納されるデータおよびプログラム、ならびに、ネットワーク経由で送受信されるデータの概要を示す説明図である。【００３５】
登録ＰＣ１００は、記憶装置内またはメモリ内に、平文データを格納した平文データベース１１１と、匿名化時に用いる情報である平文の一般化階層木１１２と、匿名化補助パラメータ１１３と、を保持する。さらに、登録ＰＣ１００の記憶装置またはメモリは、平文データベース１１１および平文の一般化階層木１１２を暗号化する暗号化プログラム１１０を保持する。平文データベース１１１が図１のデータ１００Ａに、一般化階層木１１２及び匿名化補助パラメータ１１３が図１の匿名化補助情報１００Ｂに、それぞれ対応する。【００３６】
暗号化データベース１２１および暗号化された一般化階層木１２２は、登録ＰＣ１００が保持する暗号化プログラム１１０によって、それぞれ平文データベース１１１および平文の一般化階層木１１２を暗号化することによって生成されたものであり、ネットワーク４００経由で登録ＰＣ１００から管理サーバ２００に提供される。また、匿名化補助パラメータ１１３も、ネットワーク４００経由で登録ＰＣ１００から管理サーバ２００に提供される。【００３７】
管理サーバ２００は、記憶装置２０３内またはメモリ２０２内に、暗号化データベース１２１と、匿名化時に用いる情報である暗号化された一般化階層木１２２と、匿名化補助パラメータ１１３とを保持する。さらに、記憶装置２０３またはメモリ２０２は、暗号化された一般化階層木および匿名化補助パラメータを用い、暗号化データを匿名化する、匿名化プログラム２１０を保持する。暗号化データベース１２１が図１の暗号化データ２００Ａに、暗号化された一般化階層木１２２及び匿名化補助パラメータ１１３が図１の暗号化した匿名化補助情報２００Ｂに、それぞれ対応する。【００３８】
匿名化暗号化データベース２３１は、管理サーバ２００が保持する匿名化プログラム２１０によって、暗号化データベース１２１を匿名化することによって生成されたものであり、ネットワーク４００経由で管理サーバ２００から復号ＰＣ３００に提供される。また、匿名化結果補助データ２３２も、ネットワーク４００経由で管理サーバ２００から復号ＰＣ３００に提供される。匿名化暗号化データベース２３１が図１の匿名化済暗号化データ２００Ｃに対応する。【００３９】
復号ＰＣ３００は、記憶装置内またはメモリ内に、匿名化暗号化データベース２３１を復号する復号プログラム３１０を保持する。復号ＰＣ３００は、復号プログラム３１０を用いて匿名化暗号化データベース２３１を復号することによって、記憶装置内またはメモリ内に匿名化データベース３３１を保持することが可能である。匿名化データベース３３１が図１の匿名化データ３００Ａに対応する。【００４０】
次に、登録ＰＣ１００が暗号化データベース１２１を作成し、管理サーバ２００に登録する手順について図４Ａおよび図４Ｂを用いて説明する。【００４１】
図４Ａは、本発明の実施例１の登録ＰＣ１００が実行する暗号化データベース１２１の作成及び登録の処理を示すフローチャートである。【００４２】
図４Ｂは、本発明の実施例１の登録ＰＣ１００によって作成される暗号化データベース１２１の説明図である。【００４３】
平文データベース１１１は、図４Ｂに示すように、複数の属性（列）に対し、複数のレコード（行）を含む。属性毎に取りうる値が決まっており、図４Ｂに示す平文データベース１１１の属性１は必ず｛ａ，ｂ，ｃ，ｄ，ｅ，ｆ｝のいずれかの値をとるものとする。これらの平文の属性値は、例えば人間の年齢のような数値データ又は人間の住所のような文字列データ等、任意の形式の平文データである。【００４４】
暗号化データベース１２１は、登録ＰＣ１００が、平文データベース１１１からセル単位で抜き出されたデータを、暗号化プログラム１１０が提供する検索可能暗号のデータ暗号化機能で暗号化することによって生成されたものである。Ｅ（）は暗号化（Ｅｎｃｙｐｔｉｏｎ）を意味し、例えば、Ｅ（ａ）は値ａの暗号化データを意味する。従って、表４．２の属性１は必ず｛Ｅ（ａ），Ｅ（ｂ），Ｅ（ｃ），Ｅ（ｄ），Ｅ（ｅ），Ｅ（ｆ）｝のいずれかの値をとる。【００４５】
登録ＰＣ１００は、平文データベース１１１から該当する平文データを全て抽出し、暗号鍵を用いて、暗号化データベース１２１を作成し（Ｓ１１１）、この暗号化データベース１２１をネットワーク４００経由で管理サーバ２００に登録する（Ｓ１１２）。【００４６】
次に、登録ＰＣ１００が暗号化された一般化階層木を作成し、それを匿名化補助パラメータと共に管理サーバ２００に登録し、管理サーバ２００に匿名化を依頼する手順について図５Ａから図５Ｅを用いて説明する。【００４７】
図５Ａは、本発明の実施例１の登録ＰＣ１００が実行する匿名化の依頼処理を示すフローチャートである。【００４８】
図５Ｂは、本発明の実施例１の登録ＰＣ１００による一般化階層木の暗号化の説明図である。【００４９】
図５Ｃは、本発明の実施例１の登録ＰＣ１００によって暗号化された一般化階層木の実装例の説明図である。【００５０】
図５Ｄは、本発明の実施例１の登録ＰＣ１００によって生成される暗号化クエリと暗号化データとの対応表の第１の例の説明図である。【００５１】
図５Ｅは、本発明の実施例１の登録ＰＣ１００によって生成される暗号化クエリと暗号化データとの対応表の第２の例の説明図である。【００５２】
暗号化された一般化階層木は、一般化階層木におけるノードを検索可能暗号のクエリ暗号化機能で暗号化したものである。例えば、図５Ｂに示すように、一般化階層木１１２Ａを暗号化した場合、暗号化された一般階層木１２２Ａが得られる。Ｑ（）は暗号化クエリ（ｅｎｃｙｐｔｅｄ  Ｑｕｅｒｙ）を意味し、例えば、Ｑ（ａ）は値ａの暗号化クエリを意味する。【００５３】
管理サーバ２００は、暗号化データを復号するための復号鍵を持たないため、例えば暗号化された属性値Ｅ（ａ）を復号することができず、したがって、属性値ａを知ることができない。しかし、管理サーバ２００は、暗号化クエリＱ（ａ）を用いて暗号化データベース１２１に含まれる暗号化データＥ（ａ）をそれが暗号化されたままで検索することができ、それによって、例えば暗号化データベース１２１に含まれる暗号化データＥ（ａ）の数を計数することができる。【００５４】
匿名化補助パラメータ１１３は、平文の一般化階層木の各ノードを暗号化することによって得られた暗号化データをそれが暗号化されたままで検索するための暗号化クエリと、その暗号化データを置き換えることができる暗号化データと、を対応付ける対応表を含む。この対応表によって、暗号化された一般化階層木の各ノードは、一つの属性値又は複数の属性値の組合せを暗号化することによって得られた暗号化データと対応付けられる。【００５５】
図５Ｄには、一般化階層木１１２Ａを対象とした対応表１１５Ａを示す。なお、暗号化クエリと暗号化データは１対１関係である必要はない。例えば、複数の復号ＰＣ３００があり、それぞれ異なる復号鍵（ｋ１、ｋ２・・・）を有する場合は、図５Ｅの対応表１１５Ｂに例示するように、一つの暗号化クエリに、復号鍵ごとの暗号化データが対応付けられても良い。また、もちろん暗号化クエリと暗号化データの関係は多対多でもよい。【００５６】
対応表に保持された復号ＰＣ３００用の暗号化データは、暗号化クエリを用いて検索された暗号化データを置換するための置換用暗号化データであり、復号ＰＣ３００の復号鍵３００Ｂによって復号できるように暗号化されている。例えば復号ＰＣ３００が公開鍵暗号方式の秘密鍵を復号鍵３００Ｂとして保持している場合、登録ＰＣ１００は、それに対応する公開鍵を用いて復号ＰＣ３００向けの置換用暗号化データを生成し、それを対応表１１５Ａに登録してもよい。同様に、複数の復号ＰＣ３００がある場合には、それぞれの復号ＰＣ３００が保持する秘密鍵に対応する公開鍵を用いてそれぞれの復号ＰＣ向けの置換用暗号データを生成してそれらを対応表１１５Ｂに登録してもよい。ただし、共通鍵方式の暗号鍵を使用して置換用暗号化データを作成してもよいことは当然である。【００５７】
あるいは、登録ＰＣ１００は、Ｓ１１１において暗号化データベースを作成するときに使用した暗号鍵と同一の暗号鍵を用いて置換用暗号化データを作成し、それを復号するために使用する復号鍵を安全な方法で復号ＰＣ３００に渡してもよい。これによって、それぞれの復号ＰＣ３００に安全に所望の匿名化データベースを提供することができる。【００５８】
一般化階層木の実装方法は一つに限定されないが、その一例として一般化階層木１１２Ａの実装例１１２Ｂを図５Ｃに示す。さらに、図５Ｃは、実装例１１２Ｂのように一般化階層木１１２Ａを実装した場合に、セル毎に暗号化クエリ機能で暗号化することによって生成された、暗号化された一般化階層木の実装例１２２Ｂを示す。【００５９】
上記の手続きは一属性（例えば属性１）の一般化階層木の暗号化の例であるが、登録ＰＣ１００は、他の属性（例えば属性２、・・・、属性ｎ）の一般化階層木も検索可能暗号のクエリ暗号化機能で同様に暗号化できる。【００６０】
登録ＰＣ１００は、暗号鍵を用い、一般化階層木を暗号化することによって、暗号化された一般化階層木を作成し（Ｓ１２１）、この暗号化された一般化階層木と匿名化補助パラメータをネットワーク経由で管理サーバ２００に送信し、登録する（Ｓ１２２）。このとき、登録ＰＣ１００は、置換用の暗号化データおよびそれを含む対応表１１５Ａまたは１１５Ｂも生成して管理サーバ２００に送信し、登録する。最後に、登録ＰＣ１００は管理サーバ２００に匿名化を依頼する（Ｓ１２３）。【００６１】
なお、Ｓ１２２において、登録ＰＣ１００は、暗号化された一般化階層木と匿名化補助パラメータとを同時に送信しなくても良い。例えば、登録ＰＣ１００は、事前に暗号化された一般化階層木を管理サーバ２００に登録しておき、管理サーバ２００に匿名化を依頼する際に、匿名化補助パラメータを送信しても良い。【００６２】
管理サーバ２００は、例えば、上記の暗号化された一般化階層木１２２Ａおよび対応表１１５Ａを参照して、暗号化クエリＱ（ｂ）を用いて検索された暗号化データＥ（ｂ）を、置換用の暗号化データＥｋ（ｂ）、Ｅｋ（ｂｃ）またはＥｋ（ａｂｃ）のいずれとも置換できることを知ることができる。さらに、管理サーバ２００は、例えば、暗号化された一般化階層木１２２Ａおよび対応表１１５Ａを参照して、暗号化データＥ（ｂ）を置換用の暗号化データＥｋ（ｂｃ）に置き換えた場合に実現される匿名性の程度（例えば出現頻度）が、暗号化クエリＱ（ｂ）を用いて検索された暗号化データの出現頻度と暗号化クエリＱ（ｃ）を用いて検索された暗号化データの出現頻度との合計によって計算できることを知ることができる。【００６３】
図５Ｂから図５Ｅに示す暗号化された一般化階層木および対応表は、上記のように、各暗号化クエリを用いて検索された暗号化データを置き換えることができる置換用の暗号化データを特定する情報、および、その置換を行ったときに実現される匿名性の程度を計算するためにどの暗号化クエリによる検索結果の出現頻度を計算したらよいかを特定する情報の一つの実装例に過ぎず、このような情報が別の形態で実装されてもよい。例えば、図５Ｂから図５Ｅでは、暗号化クエリＱ（ｂ）およびＱ（ｃ）を、暗号化クエリＱ（ｂｃ）を介して置換用の暗号化データＥｋ（ｂｃ）と対応付けることによって、暗号化クエリＱ（ｂ）を用いて検索された暗号化データ及び暗号化クエリＱ（ｃ）を用いて検索された暗号化データがいずれも置換用の暗号化データＥｋ（ｂｃ）によって置換できること等が表現されているが、暗号化クエリＱ（ｂｃ）を介さずに暗号化クエリＱ（ｂ）およびＱ（ｃ）を置換用の暗号化データＥｋ（ｂｃ）と対応付けることによってそのことを表現してもよい。【００６４】
図６は、本発明の実施例１の管理サーバ２００が、暗号化された一般化階層木を用い、葉ノードと同じ値を有する暗号化データの出現頻度を集計する処理を示すフローチャートである。【００６５】
管理サーバ２００は、匿名化補助パラメータ１１３を読み込み、匿名化の対象となる属性を暗号化データベース１２１の属性から全て抽出し、リスト化する（Ｓ２０２）。【００６６】
次に、管理サーバ２００は、Ｓ２０１でリスト化した匿名化対象の属性から１つの属性を選択する（Ｓ２０３）。もし、１つも属性が残っていない場合は、管理サーバ２００は処理を終了する（Ｓ２０４）。Ｓ２０３においていずれかの属性を選択できた場合、管理サーバ２００は、選択した属性における暗号化された一般化階層木の葉ノードを全て抽出し、リスト化する（Ｓ２０５）。なお、葉ノードには暗号化クエリが登録されている。【００６７】
次に、管理サーバ２００は、リスト化した葉ノードの１つを選択する（Ｓ２１１）。もし、一つも葉ノードが残っていない場合、処理はＳ２１０へ進む。管理サーバ２００は、リスト化した葉ノードの１つを選択した後、頻度集計用の変数ｃｎｔを０にセットする（Ｓ２０６）。【００６８】
次に、管理サーバ２００は、選択した属性における暗号化データを抽出する（Ｓ２０７）。暗号化データが抽出できた場合、管理サーバ２００は、抽出した暗号化データと暗号化クエリ（葉ノード）を検索可能暗号の判定関数に入力し、出力された０（暗号化データと暗号化クエリは不一致）または１（暗号化データと暗号化クエリは一致）を変数ｃｎｔに加算する（Ｓ２０８）。この操作によって、変数ｃｎｔには、葉ノードと一致する暗号データの個数が集計される。新規に抽出できる暗号化データがない場合、管理サーバ２００は、その時点の変数ｃｎｔを、選択した属性における葉ノードの出現数として登録する（Ｓ２０９）。【００６９】
次に、管理サーバ２００は、Ｓ２０５で作成したリストからＳ２１１で選択した葉ノードを削除し（Ｓ２１２）、処理はＳ２１１に戻る。【００７０】
Ｓ２０２で作成したリストからＳ２０３で選択した属性を削除する（Ｓ２１０）。【００７１】
図６の処理によって、全ての匿名化対象の属性における暗号化された一般化階層木の葉ノードの出現数（又は出現数に基づいて計算される出現頻度）が得られる。【００７２】
管理サーバ２００が、暗号化データベースを匿名化した匿名化暗号化データベースを作成し、復号ＰＣに提供する手順について図７Ａから図７Ｃを用いて説明する。【００７３】
図７Ａは、本発明の実施例１の管理サーバ２００が実行する匿名化処理を示すフローチャートである。【００７４】
図７Ｂは、本発明の実施例１の管理サーバ２００が生成する頻度付き暗号化された一般化階層木の説明図である。【００７５】
図７Ｃは、本発明の実施例１の管理サーバ２００が生成する匿名化暗号化データベースの説明図である。【００７６】
管理サーバ２００は、図６の処理フローに従い、全ての匿名化対象の属性における暗号化された一般化階層木の葉ノードの出現頻度を記憶する（Ｓ２２１）。図７Ｂには、図５Ｂに示した暗号化された一般化階層木１２２Ａに出現頻度を付すことによって生成された頻度付き暗号化された一般化階層木１２２Ｃの一例を示す。この例では、一般化階層木の葉ノードのうち、暗号化クエリＱ（ａ）がラベルとして付されたノード（以下、単にノードＱ（ａ）とも記載する。他の暗号化クエリに対応するノードについても同様）には４回、ノードＱ（ｂ）には３回、ノードＱ（ｃ）には１回、ノードＱ（ｄ）には２回、ノードＱ（ｅ）には６回、ノードＱ（ｆ）には７回の出現頻度が付与された。なお、この例では、出現回数が出現頻度として扱われる。【００７７】
次に、管理サーバ２００は、葉ノードの出現頻度を用い、子ノードの出現頻度の総和を親ノードの出現頻度として割り当てる（Ｓ２２２）。例えば、頻度付き暗号化された一般化階層木１１２Ｃでは、出現頻度３回のノードＱ（ｂ）と１回のノードＱ（ｃ）の親ノードであるＱ（ｂｃ）の出現頻度には３回と１回の合計値である４回が割り当てられる。同様に、管理サーバ２００は、全てのノードに出現頻度を割り当てる。【００７８】
さらに、管理サーバ２００は、Ｓ２２２において、ノードの出現頻度に基づいて、ｋ−匿名性を満たすノードの組み合わせを決める。このノードの決定方法は、従来技術を利用でき、例えば、特許文献１または非特許文献１に記載されている技術を用い、ｋ−匿名性を満たすノードを決定できる。【００７９】
例えば、図７Ｂに示す頻度付き暗号化された一般化階層木１２２Ｃが得られ、かつ、ｋ値が７であるとすると、ノードＱ（ａ）、Ｑ（ｂ）、Ｑ（ｃ）は、出現頻度が７より小さいため、ｋ−匿名性を満たさない。さらに、Ｑ（ｂ）およびＱ（ｃ）の親ノードであるノードＱ（ｂｃ）の出現頻度も７より小さい。しかし、ノードＱ（ａ）およびＱ（ｂｃ）の親ノードであるノードＱ（ａｂｃ）の出現頻度は７以上であるため、これがｋ−匿名性を満たすノードとして決定される。同様に、Ｑ（ｄ）およびＱ（ｅ）の親ノードであるノードＱ（ｄｅ）、ならびに、ノードＱ（ｆ）の出現頻度も７以上であるため、これらがｋ−匿名性を満たすノードとして決定される。【００８０】
次に、管理サーバ２００は、決定されたノードを葉ノードの値と置換し、更に対応表１１５Ａまたは１１５Ｂを用いて、置換した葉ノードの値と対応する暗号化データを元の値と置換することによって、暗号化データベース１２１から匿名化暗号化データベース２３１を作成する（Ｓ２２４）。【００８１】
例えば、図７の１１２ＣでＱ（ａｂｃ）、Ｑ（ｄｅ）、Ｑ（ｆ）がｋ−匿名性を満たすノードとして決定された場合は、暗号化データベース１２１の属性１の暗号化された属性値Ｅ（ａ）は、それを検索するために用いられた暗号化クエリＱ（ａ）に対応するノードＱ（ａ）の上位のｋ−匿名性を満たすノードＱ（ａｂｃ）が決定されたため、対応表１１５Ａを用いて、Ｑ（ａｂｃ）に対応する暗号化データＥｋ（ａｂｃ）に置換される。【００８２】
同様に、暗号化クエリＱ（ｂ）およびＱ（ｃ）によって検索される暗号化データＥ（ｂ）およびＥ（ｃ）は、いずれも、Ｑ（ａｂｃ）に対応する暗号化データＥｋ（ａｂｃ）に置換される。さらに、暗号化クエリＱ（ｄ）およびＱ（ｅ）によって検索される暗号化データＥ（ｄ）およびＥ（ｅ）は、いずれも、ノードＱ（ｄｅ）に対応する暗号化データＥｋ（ｄｅ）に置換される。さらに、暗号化クエリＱ（ｆ）によって検索される暗号化データＥ（ｆ）は、ノードＱ（ｆ）に対応する暗号化データＥｋ（ｆ）によって置換される。【００８３】
その結果、最終的には図７Ｃの匿名化暗号化データベース２３１の属性１のように置換される。管理サーバ２００は、匿名化結果補助データ２３２を作成し、匿名化暗号化データベース２３１と共にネットワーク経由で復号ＰＣに提供する（Ｓ２２５）。【００８４】
なお、図５Ｅに示す対応表１１５Ｂが用意され、どの復号ＰＣ３００に向けた匿名化データを作成するかを指示する情報が管理サーバ２００に入力されている場合、管理サーバ２００は、検索された暗号化データを、指示された復号ＰＣ３００に対応する置換用暗号化データによって置換する（Ｓ２２４）。【００８５】
また、管理サーバ２００が暗号化データベースの匿名化を実行する時点で、匿名化したデータベースをどの復号ＰＣ３００が利用するか判明していない場合があり得る。この場合、管理サーバ２００は、上記の処理において、元の暗号化データを置換用暗号化データで置換する代わりに、それに対応する暗号化クエリによって置換し、その後、利用する復号ＰＣ３００が判明して、その復号ＰＣ３００に向けた置換用暗号化データのセットを含む対応表を入手したときに、それぞれの暗号化クエリをそれに対応する当該復号ＰＣ３００向けの置換用暗号化データに置換してもよい。【００８６】
復号ＰＣ３００は、管理サーバ２００から匿名化暗号化データベース２３１および匿名化結果補助データ２３２を受信する。また、復号ＰＣ３００は、復号鍵３００Ｂを用い、匿名化暗号化データベース２３１の暗号化を解除し、匿名化データベース３３１を作成し、記憶装置に格納する。【００８７】
以上の処理によって、本実施例では、登録ＰＣ１００は、管理サーバ２００には平文データベースを開示することなく、データの機密性を維持しながら、管理サーバ２００に匿名化処理を依頼し、復号ＰＣ３００に匿名化データベースを提供することができる。【００８８】
なお、本実施例のユースケースでは、図１が示すように、登録ＰＣが保有する暗号鍵と復号ＰＣが保有する復号鍵が異なる例を示したが、暗号化と復号に同一の鍵を用いるように変更しても良い。その場合、対応表１１５Ａ等には、復号ＰＣ向け暗号化データとして、登録ＰＣ１００が暗号化データを生成するときに使用したものと同じ暗号鍵を用いて暗号化した暗号化データが登録される。そして、管理サーバ２００は、匿名化処理を行う前に既に所定の匿名性が満たされており、他の属性値と組み合わせた暗号化データによって置換する必要がない暗号化データについては、置換用の暗号化データと置換しなくてもよい。【００８９】
また、本実施例のユースケースでは、図１が示すように、登録ＰＣ１００と復号ＰＣ３００がそれぞれ異なる事業者の異なる計算機によって運用される場合を想定したが、両者が同一の事業者の同一の計算機によって運用されても良い。【００９０】
また、本実施例におけるユースケースでは、図１が示すように、登録ＰＣ１００、管理サーバ２００および復号ＰＣ３００がそれぞれ１台ずつ動作する場合を記述したが、本発明では、計算機の台数は固定されない。即ち、登録ＰＣ１００、管理サーバ２００および復号ＰＣ３００がそれぞれ複数台、存在しても良い。また、その場合は、それぞれ異なる暗号化鍵を、登録ＰＣ１００ごとあるいはグループングした登録ＰＣ１００ごとに持たせてもよい。同様に、それぞれ異なる復号鍵を、復号ＰＣ３００ごとあるいはグルーピングした復号ＰＣ３００ごとに持たせてもよい。また、管理サーバ２００に、異なる暗号鍵で暗号化された暗号化データを取り扱え、頻度集計が可能な、特殊用途の鍵を持たせても良い。【００９１】
また、本の暗号化データベース１２１では、図４に示すように、「属性１」等の属性を識別する情報が暗号化されていないが、属性を識別する情報も暗号化するように変更しても良い。この場合、登録ＰＣ１００は、Ｓ１１１で検索可能暗号のデータ暗号化機能を用いて属性を識別する情報を暗号化し、Ｓ１２１で検索可能暗号のクエリ暗号化機能を用いて暗号化された属性を検索するクエリを暗号化する。その後、管理サーバ２００は、Ｓ２０５で検索可能暗号の判定関数を用い、抽出した属性に対応する暗号化された一般化階層木を抽出する。この変更処理によって、登録ＰＣ１００は平文データベース１１１に含まれる属性値のデータに加え、属性を識別する情報も管理サーバに隠すことが出来る。【００９２】
また、本実施例においては、検索可能暗号のデータの暗号化機能を用い、暗号化データベースを作成し、検索可能暗号のクエリの暗号化機能を用い、暗号化された一般化階層木を作成し、検索可能暗号の判定関数を用い、頻度付き暗号化された一般化階層木を作成した。しかし、これは一例であり、検索可能暗号とは異なる暗号方式を用いても本発明を実施することができる。例えば、順序保存暗号は、検索可能暗号と同様にデータの暗号化機能、クエリの暗号化機能、判定関数が存在するので、順序保存暗号のデータの暗号化機能を用い、暗号化データベースを作成し、順序保存暗号のクエリの暗号化機能を用い、暗号化された一般化階層木を作成し、順序保存暗号の判定関数を用い、頻度付き暗号化された一般化階層木を作成するよう、本実施例を変更しても良い。この場合、順序保存暗号は数値の順序関係を保存するので、最終的に、順序関係を保存した匿名化データベースを作成できる。【００９３】
また、本実施例において、数値集計が可能な比較判定暗号を用いてもよい。比較判定暗号は、検索可能暗号と同様、データやクエリの暗号化機能を保有するほか、暗号化したまま集計、比較ができる。そのため、比較可能暗号の暗号化により、ノードの出現頻度を暗号化したまま、ｋ−匿名性を満たすノードを発見できる。【００９４】
また、本発明において、数値集計が可能であり、かつ数値集計の結果のみを復号可能な暗号を用いてもよい。このとき、ノードと暗号化データとの対応関係（判定結果）もサーバに知らせずに済むため、より安全にｋ−匿名性を満たすノードを発見できる。このような暗号を適用した本実施例の変形例について図１０及び図１１を参照して説明する。【００９５】
図１０は、本発明の実施例１の変形例の登録ＰＣ１００が実行する暗号化データベース１２１の作成及び登録の処理の説明図である。【００９６】
図１１は、本発明の実施例１の変形例の管理サーバ２００が実行するノードの頻度集計処理の説明図である。【００９７】
例えば、図１０の表１００１に示すように、平文データベースの属性１が｛ａ，ｂ，ｃ，ｄ，ｅ，ｆ｝のいずれかの値をとりうる場合、暗号化データベース（表１００２）は、平文の属性１がとりうる値を列に展開し、各行が平文データベースに含まれる属性１の各値に対応する暗号化データベース（表１００２）が作成される。この表１００２において、各行に対応する属性値は必ずａ〜ｆのいずれかであり、各行の属性値に対応する列に１を暗号化した値、それ以外の列に０を暗号化した値が保有される。例えば、平文データベースの１行目の属性１の値がａであるため、表１００２の１行目の値ａに対応する列には、１を暗号化した値（例えばＥｋ（１））が保有され、それ以外の列には、０を暗号化した値（例えばＥｋ（１））が保有される。また、表１００２の０行目の各列には、各列に対応する属性１のとりうる各値を暗号化した値（例えば値ａ〜ｆをそれぞれ暗号化したＥ（ａ）〜Ｅ（ｆ））が保有される。【００９８】
この暗号化は頻度集計が可能である。Ｅｋ（）は集計結果のみ鍵ｋで復号可能な暗号化（Ｅｎｃｙｐｔｉｏｎ）を意味する。例えば、表１００２の１行目は１列目のみＥｋ（１）、他はＥｋ（０）であるので、１行目に対応する暗号化された属性値は、０行目１列目に記載されたＥ（ａ）をとることを意味する。同様に、ｎ行目は６列目のみＥ（１）、他はＥ（０）であるので、ｎ行目に対応する暗号化された属性値は、０行目６列目に記載されたＥ（ｆ）をとることを意味する。これらの値は全て暗号化されており、管理サーバ２００はこれらの値を乱数と区別できない。【００９９】
登録ＰＣ１００は、平文データベースから該当する平文データを全て抽出し、上記の手法で、暗号鍵を用いて、暗号化データベースを作成し（Ｓ１１１）、この暗号化データベースをネットワーク経由で管理サーバ２００に登録する（Ｓ１１２）。また、管理サーバ２００による葉ノードの集計処理（Ｓ２２１）では、図１１に示すように、暗号化データを列毎に集計し、その結果を復号することによって、暗号化された一般化階層木の葉ノードの出現頻度が得られる。【０１００】
また、本実施例のユースケースでは、図１等が示すように、平文データベースと暗号化データベースが存在するが、平文データベースの一部に暗号化データが存在してもよく、また暗号化データベースの一部に平文データが存在しても良い。【０１０１】
また、本発明における匿名化パラメータとして、対応表１１５Ａまたは１１５Ｂ等を用いる場合を示したが、検索可能暗号の暗号化クエリに復号機能を付与することによって、対応表に関する処理を省くことが出来る。このとき、Ｓ２２４において、管理サーバ２００は、選択されたノードを葉ノードの値と置換し、置換した葉ノードの値を暗号化データベースの元の値と置換することで、暗号化データベースから匿名化暗号化データベースを作成する。【０１０２】
また、対応表を登録ＰＣ１００から管理サーバ２００に送らずに、管理サーバ２００が自身で作成するように処理を変更しても良い。
【実施例２】
【０１０３】
実施例１では、暗号化された一般化階層木が登録ＰＣ１００から管理サーバ２００にあたえられることを想定した。しかしながら、登録ＰＣ１００が一般化階層木を保持していない、または保持していたとしてもそれを管理サーバ２００に与えたくない場合もありえる。また、管理サーバ２００が、与えられた暗号化された一般化階層木とは異なる一般化階層木を用い、匿名化を行いたい場合もありえる。そこで、実施例２では、登録ＰＣ１００が暗号化された一般化階層木を管理サーバ２００に与えず、一般階層木作成用のデータを与える場合の匿名化の処理方式を述べる。以下に説明する相違点を除き、実施例２のシステムの各部は、図１〜図７Ｃに示された実施例１の同一の符号を付された各部と同一の機能を有するため、それらの説明は省略する。【０１０４】
図８Ａは、本発明の実施例２の登録ＰＣ１００が実行する匿名化の依頼処理を示すフローチャートである。【０１０５】
図８Ｂは、本発明の実施例２の登録ＰＣ１００による一般化階層木補助パラメータの作成の説明図である。【０１０６】
図８Ｃは、本発明の実施例２の登録ＰＣ１００によって生成される暗号化クエリと暗号化データとの対応表の説明図である。【０１０７】
登録ＰＣ１００の匿名化の依頼フローは、実施例１と類似する。登録ＰＣ１００は、図５Ａに示したフローにおける、暗号化された一般化階層木を作成する処理（Ｓ１２１）の代わりに、一般化階層木作成を補助するためのデータである一般化階層木補助パラメータを作成する処理を行う（Ｓ１３１）。例えば、登録ＰＣ１００は、まず平文データベースの各属性における属性値全てを抽出する。図８Ｂの平文データベースの属性値１３１Ａはその一例であり、属性１の代表値（ａからｆまでアルファベット順）と、属性２の代表値（１から９までの整数）と、属性ｎの代表値（血液型）と、を含む。【０１０８】
次に、登録ＰＣ１００は、それら抽出した代表値全てを検索可能暗号のクエリ暗号化機能で暗号化し、これを一般化階層木用作成用データとする。図８Ｂの一般化階層木補助パラメータ１３２Ａはその一例であり、属性１、属性２、・・・、属性ｎの全ての代表値を含む。【０１０９】
次に、登録ＰＣ１００は、一般化階層木補助パラメータ１３２Ａと匿名化補助パラメータ１１３とをネットワーク４００経由で管理サーバ２００に登録する（Ｓ１３２）。最後に、登録ＰＣ１００は管理サーバ２００に匿名化を依頼する（Ｓ１３３）。【０１１０】
匿名化補助パラメータ１１３は、暗号化データをそれが暗号化されたままで検索するための暗号化クエリと、検索された暗号化データと同一の平文データを復号ＰＣ３００向けの暗号鍵で暗号化した暗号化データとを対応付ける、対応表を含む。図８Ｃに、一般化階層木１１２Ａを対象とした場合の対応表１３３Ａを例示する。この例では、暗号化クエリＱ（ａ）〜Ｑ（ｆ）が、それぞれ、置換用の暗号化データＥｋｉ（ａ）〜Ｅｋｉ（ｆ）に対応付けられる。【０１１１】
なお、平文データベースの属性値１３１Ａは各属性の代表値を全て含んでいるが、平文データベース１１１内で利用されている値のみを含むように変更しても良いし、特定の値のみを抽出するように変更しても良い。【０１１２】
図９Ａは、本発明の実施例２の管理サーバ２００が実行する匿名化処理を示すフローチャートである。【０１１３】
図９Ｂは、本発明の実施例２の管理サーバ２００によって集計された葉ノードの出現頻度の説明図である。【０１１４】
図９Ｃは、本発明の実施例２の管理サーバ２００が生成する頻度付き一般化階層木の説明図である。【０１１５】
まず、図９Ａを参照して管理サーバ２００による匿名化処理を説明する。図７Ａに示した実施例１のフローと異なる部分は、Ｓ２２０ｂの追加と、Ｓ２２２の代わりにＳ２２２ｂを行う点である。以下、図７Ａの管理サーバ２００の匿名化処理と異なる、Ｓ２１０ｂからＳ２１２ｂを説明する。【０１１６】
Ｓ２２０ｂでは、管理サーバ２００は、一般化階層木作成用のデータを、属性毎に取り出し、一般化階層木の葉ノードとする。例えば、属性１については、管理サーバ２００は、一般化階層木補助パラメータ１３２Ａから、属性１に対応する暗号化クエリＱ（ａ）〜Ｑ（ｆ）を取り出し、それらから一般階層木の葉ノードを生成する（図９Ｂ参照）。【０１１７】
Ｓ２２１では、管理サーバ２００は、図６の処理フローに従い、全ての属性における暗号化された一般化階層木の葉ノードの出現頻度を記憶する。これによって、例えば図９Ｂの葉ノードの出現頻度が得られる。【０１１８】
Ｓ２２２ｂでは、管理サーバ２００は、葉ノードの出現頻度を利用し、逐次的に親ノードを作成し、最終的には頻度付き一般化階層木を作成する。作成においては、管理サーバは評価関数を用い、そのスコアが最適（または最大化や最小化）になるように、頻度付き一般化階層木を作成する。【０１１９】
図９Ｃの頻度付き一般化階層木２１２Ｂは、評価関数として情報エントロピーが最大になるように作成した一般化階層木の例である。この場合、逐次的に親ノードの出現頻度が最小化されるよう、出現頻度が最小の子ノードを組み合わせた、一般化階層木が作成される。【０１２０】
例えば、図９Ｂに示す一般化階層木の葉ノード２１１Ｂの例では、Ｑ（ａ）に４回、Ｑ（ｂ）に３回、Ｑ（ｃ）に１回、Ｑ（ｄ）に２回、Ｑ（ｅ）に６回、Ｑ（ｆ）に７回の出現頻度が付与されている。そこで、管理サーバ２００は、出現頻度１回のＱ（ｃ）と２回のＱ（ｄ）を組み合わせ、Ｑ（ｃ）またはＱ（ｄ）を意味する、親ノードＱ（ｃ）Ｑ（ｄ）を作成する。親ノードＱ（ｃ）Ｑ（ｄ）には、Ｑ（ｃ）とＱ（ｄ）の出現頻度の総和である３回が割り振られる。【０１２１】
次に、管理サーバ２００は、親ノードの存在しない、５つのノードＱ（ａ）、Ｑ（ｂ）、Ｑ（ｃ）、Ｑ（ｄ）、Ｑ（ｅ）、Ｑ（ｆ）から、最も出現頻度の少ないノードである出現頻度３回のＱ（ｂ）と３回のＱ（ｃ）Ｑ（ｄ）を組み合わせ、Ｑ（ｂ）またはＱ（ｃ）またはＱ（ｄ）を意味する、親ノードＱ（ｂ）Ｑ（ｃ）Ｑ（ｄ）を作成する。親ノードＱ（ｂ）Ｑ（ｃ）Ｑ（ｄ）には、Ｑ（ｂ）とＱ（ｃ）Ｑ（ｄ）の出現頻度の総和である６回が割り振られる。【０１２２】
このようにして、管理サーバ２００は、逐次的に親ノードの出現頻度が最小となるよう、親ノードを作成していき、対象となるノードが規定数以下（図９Ｃの例では２）になるまで、この操作を繰り返す。【０１２３】
図９Ｃの例では、暗号化クエリＱ（ａ）、Ｑ（ｂ）、Ｑ（ｃ）およびＱ（ｄ）のそれぞれを用いて検索された暗号化データの出現頻度の合計が１０、暗号化クエリＱ（ｅ）およびＱ（ｆ）のそれぞれを用いて検索された暗号化データの出現頻度の合計が１３であり、いずれもｋ値（例えば７）以上である。このため、暗号化クエリＱ（ａ）、Ｑ（ｂ）、Ｑ（ｃ）およびＱ（ｄ）のそれぞれを用いて検索された各暗号化データ（例えばＥ（ａ）、Ｅ（ｂ）、Ｅ（ｃ）およびＥ（ｄ））が、暗号化クエリＱ（ａ）、Ｑ（ｂ）、Ｑ（ｃ）およびＱ（ｄ）のそれぞれに対応する置換用の暗号化データであるＥｋｉ（ａ）、Ｅｋｉ（ｂ）、Ｅｋｉ（ｃ）およびＥｋｉ（ｄ）の組合せによって置き換えられる。同様に、暗号化クエリＱ（ｅ）およびＱ（ｆ）のそれぞれを用いて検索された各暗号化データ（例えばＥ（ｅ）およびＥ（ｆ））が、暗号化クエリＱ（ｅ）およびＱ（ｆ）のそれぞれに対応する置換用の暗号化データであるＥｋｉ（ｅ）およびＥｋｉ（ｆ）の組合せによって置き換えられる。これによって、例えば出現頻度が１回である暗号化データＥ（ｃ）が、Ｅｋｉ（ａ）、Ｅｋｉ（ｂ）、Ｅｋｉ（ｃ）およびＥｋｉ（ｄ）の組合せによって置き換えられ、所望の匿名化が実現される。【０１２４】
なお、頻度付き一般化階層木の作成において、親ノードを作成する際に、同じ頻度のノードが存在する場合は、その選択方法が予め与えられる。例えば、ランダムに選択されてもよいし、辞書順等で選択されてもよいが、いずれの場合も、対象とするノードが必ず選択される。また、親ノードの階層は子ノードの階層より上の階層が設定される。例えば１ずつ上の階層を設定してもよいし、他の親ノードがある場合は、そのノードと同等の階層を設定しても良い。例えば、図９に示す頻度付き一般化階層木２１２Ｂでは、Ｑ（ｅ）とＱ（ｆ）の親ノードであるＱ（ｅ）Ｑ（ｆ）は、別の親ノードと同じ３階層に設定したが、これを４階層に設定するように変更してもよいし、１階層または２階層に設定してもよい。【０１２５】
Ｓ２２３からＳ２２５は実施例１の処理と同様であるので、説明を省略する。【０１２６】
以上の処理によって、本実施例では、登録ＰＣ１００は、管理サーバ２００に暗号化された一般化階層木を提供することなく、管理サーバ２００に匿名化処理を依頼することができる。【０１２７】
なお、本実施例の管理サーバ２００は、親ノードの頻度集計と頻度付き一般化階層木の作成処理における、頻度付き一般化階層木の作成（Ｓ２２２ｂ）において、評価関数として情報エントロピーを採用し、この情報エントロピーの欠損が最小となるよう、Ｈｕｆｆｍａｎ符号やＨｕ−Ｔｕｃｋｅｒ等の圧縮技術を用い、一般化階層木を作成しても良い。これらの技術については、特許文献２に詳しく記載されている。【０１２８】
また、管理サーバ２００は、頻度付き一般化階層木の作成処理（Ｓ２２２ｂ）において、ｋ値と出現頻度との差分を評価関数とし、これを最適化するように一般化階層木を作成しても良い。【０１２９】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。【０１３０】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によってハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。【０１３１】
また、制御線及び情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線及び情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【図１】
2017103970.tif 000003
【図２】
2017103970.tif 000004
【図３】
2017103970.tif 000005
【図４Ａ】
2017103970.tif 000006
【図４Ｂ】
2017103970.tif 000007
【図５Ａ】
2017103970.tif 000008
【図５Ｂ】
2017103970.tif 000009
【図５Ｃ】
2017103970.tif 000010
【図５Ｄ】
2017103970.tif 000011
【図５Ｅ】
2017103970.tif 000012
【図６】
2017103970.tif 000013
【図７Ａ】
2017103970.tif 000014
【図７Ｂ】
2017103970.tif 000015
【図７Ｃ】
2017103970.tif 000016
【図８Ａ】
2017103970.tif 000017
【図８Ｂ】
2017103970.tif 000018
【図８Ｃ】
2017103970.tif 000019
【図９Ａ】
2017103970.tif 000020
【図９Ｂ】
2017103970.tif 000021
【図９Ｃ】
2017103970.tif 000022
【図１０】
2017103970.tif 000023
【図１１】
2017103970.tif 000024
【国際調査報告】
2017103970.tif 000025
2017103970.tif 000026
2017103970.tif 000027