IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

<>
  • 特許-匿名化システムおよび匿名化方法 図1
  • 特許-匿名化システムおよび匿名化方法 図2
  • 特許-匿名化システムおよび匿名化方法 図3
  • 特許-匿名化システムおよび匿名化方法 図4
  • 特許-匿名化システムおよび匿名化方法 図5
  • 特許-匿名化システムおよび匿名化方法 図6
  • 特許-匿名化システムおよび匿名化方法 図7
  • 特許-匿名化システムおよび匿名化方法 図8
  • 特許-匿名化システムおよび匿名化方法 図9
  • 特許-匿名化システムおよび匿名化方法 図10
  • 特許-匿名化システムおよび匿名化方法 図11
  • 特許-匿名化システムおよび匿名化方法 図12
  • 特許-匿名化システムおよび匿名化方法 図13
  • 特許-匿名化システムおよび匿名化方法 図14
  • 特許-匿名化システムおよび匿名化方法 図15
  • 特許-匿名化システムおよび匿名化方法 図16
  • 特許-匿名化システムおよび匿名化方法 図17
  • 特許-匿名化システムおよび匿名化方法 図18
  • 特許-匿名化システムおよび匿名化方法 図19
  • 特許-匿名化システムおよび匿名化方法 図20
  • 特許-匿名化システムおよび匿名化方法 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-29
(45)【発行日】2024-12-09
(54)【発明の名称】匿名化システムおよび匿名化方法
(51)【国際特許分類】
   G06F 21/64 20130101AFI20241202BHJP
   G06F 21/62 20130101ALI20241202BHJP
【FI】
G06F21/64
G06F21/62 354
【請求項の数】 12
(21)【出願番号】P 2021170407
(22)【出願日】2021-10-18
(65)【公開番号】P2023060684
(43)【公開日】2023-04-28
【審査請求日】2024-02-19
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】横張 由美子
(72)【発明者】
【氏名】山本 恭平
(72)【発明者】
【氏名】吉野 雅之
(72)【発明者】
【氏名】佐藤 尚宜
【審査官】塩澤 如正
(56)【参考文献】
【文献】特開2006-285490(JP,A)
【文献】特開2020-077256(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/64
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
第1装置と、前記第1装置と通信可能な第2装置と、前記第2装置と通信可能な第3装置と、を有する匿名化システムであって、
前記第1装置が、属性が異なる複数のデータ群の各々のデータの第1ハッシュ値に基づいて前記複数のデータ群の第2ハッシュ値を生成する第1生成処理と、
前記第2装置が、前記複数のデータ群と、前記第1生成処理によって生成された第2ハッシュ値を取得する第1取得処理と、
前記第2装置が、前記複数のデータ群のうち前記第3装置からの匿名化要求により特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する匿名化処理と、
前記第3装置が、前記特定の属性のデータ群についての匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性のデータ群を除く残余の属性のデータ群と、前記第2ハッシュ値と、を取得する第2取得処理と、
前記第3装置が、前記第2取得処理によって取得された残余の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理によって取得された前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、に基づいて、第3ハッシュ値を生成する第2生成処理と、
前記第3装置が、前記第2取得処理によって取得された前記第2ハッシュ値と前記第2生成処理によって生成された第3ハッシュ値とが一致するか否かを判定することにより、前記匿名化処理の正当性を検証する検証処理と、を実行し、
前記第1生成処理では、前記第1装置は、前記属性に応じた加工ルールにしたがって前記データの第1ハッシュ値を生成して、前記データの第1ハッシュ値に基づいて前記複数のデータ群の第2ハッシュ値を生成し、
前記第1取得処理では、前記第2装置は、前記加工ルールを前記第1装置から取得し、
前記匿名化処理では、前記第2装置は、前記加工ルールにしたがって前記特定の属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第2取得処理では、前記第3装置は、前記加工ルールを前記第2装置から取得し、
前記第2生成処理では、前記第3装置は、前記加工ルールにしたがって前記残余の属性のデータ群の各々のデータの第1ハッシュ値を生成する、
ことを特徴とする匿名化システム。
【請求項2】
請求項1に記載の匿名化システムであって、
前記第1装置は、前記データと乱数値との組み合わせである乱数データを前記データごとに保持する乱数データテーブルを有し、
前記第1生成処理では、前記第1装置は、前記加工ルールが前記データの仮名化である場合、前記仮名化が適用される仮名化対象属性のデータ群と当該データ群の各々のデータの乱数値とに基づいて前記仮名化対象属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第1取得処理では、前記第2装置は、前記データごとの前記乱数データを前記第1装置から取得して前記乱数データテーブルを生成し、
前記匿名化処理では、前記第2装置は、前記特定の属性が前記仮名化対象属性である場合、前記特定の属性のデータ群の各々のデータとその乱数値とに基づいて前記特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する、
ことを特徴とする匿名化システム。
【請求項3】
請求項1に記載の匿名化システムであって、
前記第1装置は、前記データとその乱数値との組み合わせである乱数データを前記データごとに保持する乱数データテーブルを有し、
前記第1生成処理では、前記第1装置は、前記加工ルールが前記データの削除である場合、前記削除が適用される削除対象属性のデータ群の各々のデータと、その乱数値および固有な値と、に基づいて、前記削除対象属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第1取得処理では、前記第2装置は、前記データごとの前記乱数データを前記第1装置から取得して前記乱数データテーブルを生成し、
前記匿名化処理では、前記第2装置は、前記特定の属性が前記削除対象属性である場合、前記特定の属性のデータ群の各々のデータと、その乱数値および前記固有な値と、に基づいて、前記特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する、
ことを特徴とする匿名化システム。
【請求項4】
請求項3に記載の匿名化システムであって、
前記匿名化処理では、前記第2装置は、前記匿名化要求が前記特定の属性の一部のデータについての匿名化要求である場合、前記特定の属性の一部のデータの第1ハッシュ値を生成し、
前記第2取得処理では、前記第3装置は、前記匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性の一部のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性の一部のデータを除く残余のデータ群と、前記第2ハッシュ値と、を取得し、前記特定の属性の一部のデータ以外の前記特定の属性の他のデータとその乱数値との組み合わせである検証用乱数データを取得して検証用乱数データテーブルを生成し、
前記第2生成処理では、前記第3装置は、前記第2取得処理によって取得された残余のデータ群のうち、前記特定の属性以外の他の属性のデータ群については、当該他の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記第2取得処理によって取得された残余のデータ群のうち、前記特定の属性のデータ群については、前記検証用乱数データテーブルに存在するデータであれば、当該データとその乱数値および固有の値とに基づいて第1ハッシュ値を生成し、前記残余のデータ群の各々のデータの第1ハッシュ値と、前記特定の属性の一部のデータの第1ハッシュ値と、に基づいて、前記第3ハッシュ値を生成する、
ことを特徴とする匿名化システム。
【請求項5】
請求項1に記載の匿名化システムであって、
前記第1装置は、前記データとその乱数値との組み合わせである乱数データを前記データごとに保持する乱数データテーブルと、一般化前後のデータの組み合わせを規定した一般化ルールテーブルと、を有し、
前記第1生成処理では、前記第1装置は、前記加工ルールが前記データの一般化である場合、前記一般化が適用される一般化対象属性のデータと、その乱数値および固有な値と、前記一般化ルールテーブルによる一般化前から一般化後への変換回数と、に基づいて、前記一般化対象属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第1取得処理では、前記第2装置は、前記データごとの前記乱数データを前記第1装置から取得して前記乱数データテーブルを生成し、前記一般化ルールテーブルの一般化前後のデータの組み合わせを取得して前記一般化ルールテーブルを生成し、
前記匿名化処理では、前記第2装置は、前記特定の属性が前記一般化対象属性である場合、前記特定の属性のデータ群の各々のデータと、その乱数値および固有な値と、前記変換回数と、に基づいて、前記特定の属性のデータ群の各々の第1ハッシュ値を生成する、
ことを特徴とする匿名化システム。
【請求項6】
第1装置と、前記第1装置と通信可能な第2装置と、前記第2装置と通信可能な第3装置と、を有する匿名化システムであって、
前記第1装置が、属性が異なる複数のデータ群の各々のデータの第1ハッシュ値に基づいて前記複数のデータ群の第2ハッシュ値を生成する第1生成処理と、
前記第2装置が、前記複数のデータ群と、前記第1生成処理によって生成された第2ハッシュ値を取得する第1取得処理と、
前記第2装置が、前記複数のデータ群のうち前記第3装置からの匿名化要求により特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する匿名化処理と、
前記第3装置が、前記特定の属性のデータ群についての匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性のデータ群を除く残余の属性のデータ群と、前記第2ハッシュ値と、を取得する第2取得処理と、
前記第3装置が、前記第2取得処理によって取得された残余の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理によって取得された前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、に基づいて、第3ハッシュ値を生成する第2生成処理と、
前記第3装置が、前記第2取得処理によって取得された前記第2ハッシュ値と前記第2生成処理によって生成された第3ハッシュ値とが一致するか否かを判定することにより、前記匿名化処理の正当性を検証する検証処理と、を実行し、
前記匿名化処理では、前記第2装置は、前記匿名化要求された特定の属性の一部のデータの第1ハッシュ値を生成し、
前記第2取得処理では、前記第3装置は、前記特定の属性の一部のデータについての前記匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性の一部のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性の一部のデータを除く残余のデータ群と、前記第2ハッシュ値と、を取得し、
前記第2生成処理では、前記第3装置は、前記第2取得処理によって取得された残余のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理によって取得された前記特定の属性の一部のデータの第1ハッシュ値と、に基づいて、前記第3ハッシュ値を生成する、
ことを特徴とする匿名化システム。
【請求項7】
第1装置と、前記第1装置と通信可能な第2装置と、前記第2装置と通信可能な第3装置と、を有する匿名化システムによる匿名化方法であって、
前記第1装置が、属性が異なる複数のデータ群の各々のデータの第1ハッシュ値に基づいて前記複数のデータ群の第2ハッシュ値を生成する第1生成処理と、
前記第2装置が、前記複数のデータ群と、前記第1生成処理によって生成された第2ハッシュ値と、を取得する第1取得処理と、
前記第2装置が、前記複数のデータ群のうち前記第3装置からの匿名化要求により特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する匿名化処理と、
前記第3装置が、前記特定の属性のデータ群についての匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性のデータ群を除く残余の属性のデータ群と、前記第2ハッシュ値と、を取得する第2取得処理と、
前記第3装置が、前記第2取得処理によって取得された残余の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理によって取得された前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、に基づいて、第3ハッシュ値を生成する第2生成処理と、
前記第3装置が、前記第2取得処理によって取得された前記第2ハッシュ値と前記第2生成処理によって生成された第3ハッシュ値とが一致するか否かを判定することにより、前記匿名化処理の正当性を検証する検証処理と、を実行し、
前記第1生成処理では、前記第1装置は、前記属性に応じた加工ルールにしたがって前記データの第1ハッシュ値を生成して、前記データの第1ハッシュ値に基づいて前記複数のデータ群の第2ハッシュ値を生成し、
前記第1取得処理では、前記第2装置は、前記加工ルールを前記第1装置から取得し、
前記匿名化処理では、前記第2装置は、前記加工ルールにしたがって前記特定の属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第2取得処理では、前記第3装置は、前記加工ルールを前記第2装置から取得し、
前記第2生成処理では、前記第3装置は、前記加工ルールにしたがって前記残余の属性のデータ群の各々のデータの第1ハッシュ値を生成する、
ことを特徴とする匿名化方法。
【請求項8】
請求項7に記載の匿名化方法であって、
前記第1装置は、前記データと乱数値との組み合わせである乱数データを前記データごとに保持する乱数データテーブルを有し、
前記第1生成処理では、前記第1装置は、前記加工ルールが前記データの仮名化である場合、前記仮名化が適用される仮名化対象属性のデータ群と当該データ群の各々のデータの乱数値とに基づいて前記仮名化対象属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第1取得処理では、前記第2装置は、前記データごとの前記乱数データを前記第1装置から取得して前記乱数データテーブルを生成し、
前記匿名化処理では、前記第2装置は、前記特定の属性が前記仮名化対象属性である場合、前記特定の属性のデータ群の各々のデータとその乱数値とに基づいて前記特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する、
ことを特徴とする匿名化方法。
【請求項9】
請求項7に記載の匿名化方法であって、
前記第1装置は、前記データとその乱数値との組み合わせである乱数データを前記データごとに保持する乱数データテーブルを有し、
前記第1生成処理では、前記第1装置は、前記加工ルールが前記データの削除である場合、前記削除が適用される削除対象属性のデータ群の各々のデータと、その乱数値および固有な値と、に基づいて、前記削除対象属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第1取得処理では、前記第2装置は、前記データごとの前記乱数データを前記第1装置から取得して前記乱数データテーブルを生成し、
前記匿名化処理では、前記第2装置は、前記特定の属性が前記削除対象属性である場合、前記特定の属性のデータ群の各々のデータと、その乱数値および前記固有な値と、に基づいて、前記特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する、
ことを特徴とする匿名化方法。
【請求項10】
請求項9に記載の匿名化方法であって、
前記匿名化処理では、前記第2装置は、前記匿名化要求が前記特定の属性の一部のデータについての匿名化要求である場合、前記特定の属性の一部のデータの第1ハッシュ値を生成し、
前記第2取得処理では、前記第3装置は、前記匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性の一部のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性の一部のデータを除く残余のデータ群と、前記第2ハッシュ値と、を取得し、前記特定の属性の一部のデータ以外の前記特定の属性の他のデータとその乱数値との組み合わせである検証用乱数データを取得して検証用乱数データテーブルを生成し、
前記第2生成処理では、前記第3装置は、前記第2取得処理によって取得された残余のデータ群のうち、前記特定の属性以外の他の属性のデータ群については、当該他の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記第2取得処理によって取得された残余のデータ群のうち、前記特定の属性のデータ群については、前記検証用乱数データテーブルに存在するデータであれば、当該データとその乱数値および固有の値とに基づいて第1ハッシュ値を生成し、前記残余のデータ群の各々のデータの第1ハッシュ値と、前記特定の属性の一部のデータの第1ハッシュ値と、に基づいて、前記第3ハッシュ値を生成する、
ことを特徴とする匿名化方法。
【請求項11】
請求項7に記載の匿名化方法であって、
前記第1装置は、前記データとその乱数値との組み合わせである乱数データを前記データごとに保持する乱数データテーブルと、一般化前後のデータの組み合わせを規定した一般化ルールテーブルと、を有し、
前記第1生成処理では、前記第1装置は、前記加工ルールが前記データの一般化である場合、前記一般化が適用される一般化対象属性のデータと、その乱数値および固有な値と、前記一般化ルールテーブルによる一般化前から一般化後への変換回数と、に基づいて、前記一般化対象属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第1取得処理では、前記第2装置は、前記データごとの前記乱数データを前記第1装置から取得して前記乱数データテーブルを生成し、前記一般化ルールテーブルの一般化前後のデータの組み合わせを取得して前記一般化ルールテーブルを生成し、
前記匿名化処理では、前記第2装置は、前記特定の属性が前記一般化対象属性である場合、前記特定の属性のデータ群の各々のデータと、その乱数値および固有な値と、前記変換回数と、に基づいて、前記特定の属性のデータ群の各々の第1ハッシュ値を生成する、
ことを特徴とする匿名化方法。
【請求項12】
第1装置と、前記第1装置と通信可能な第2装置と、前記第2装置と通信可能な第3装置と、を有する匿名化システムによる匿名化方法であって、
前記第1装置が、属性が異なる複数のデータ群の各々のデータの第1ハッシュ値に基づいて前記複数のデータ群の第2ハッシュ値を生成する第1生成処理と、
前記第2装置が、前記複数のデータ群と、前記第1生成処理によって生成された第2ハッシュ値と、を取得する第1取得処理と、
前記第2装置が、前記複数のデータ群のうち前記第3装置からの匿名化要求により特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する匿名化処理と、
前記第3装置が、前記特定の属性のデータ群についての匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性のデータ群を除く残余の属性のデータ群と、前記第2ハッシュ値と、を取得する第2取得処理と、
前記第3装置が、前記第2取得処理によって取得された残余の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理によって取得された前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、に基づいて、第3ハッシュ値を生成する第2生成処理と、
前記第3装置が、前記第2取得処理によって取得された前記第2ハッシュ値と前記第2生成処理によって生成された第3ハッシュ値とが一致するか否かを判定することにより、前記匿名化処理の正当性を検証する検証処理と、を実行し、
前記匿名化処理では、前記第2装置は、前記匿名化要求された特定の属性の一部のデータの第1ハッシュ値を生成し、
前記第2取得処理では、前記第3装置は、前記特定の属性の一部のデータについての前記匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性の一部のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性の一部のデータを除く残余のデータ群と、前記第2ハッシュ値と、を取得し、
前記第2生成処理では、前記第3装置は、前記第2取得処理によって取得された残余のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理によって取得された前記特定の属性の一部のデータの第1ハッシュ値と、に基づいて、前記第3ハッシュ値を生成する、
ことを特徴とする匿名化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、匿名化を実行する匿名化システムおよび匿名化方法に関する。
【背景技術】
【0002】
個人情報の保護に関する法律により、特定の個人を識別することができる記述を削除または置換した匿名加工情報の利活用が進んでいる。2022年4月に全面施行予定の「個人情報の保護に関する法律等の一部を改正する法律(通称、令和2年改正個人情報法)」では、内部分析に限定する等を条件に一部対応義務を緩和する「仮名加工情報」が新設され、データの利活用がより進展すると考えられる。
【0003】
データの利活用において、データに対して不当な改変が行われていないこと(データの正当性)は、データの利活用結果の正当性を保証するために重要となる。匿名化処理の正当性検証技術として、特許文献1がある。
【0004】
特許文献1の連結不可能匿名化法は、個人を特定可能なID番号又は情報又はそのID情報と匿名化時の鍵記号又は単一では個人を特定不可能である検体番号など関連する情報の組合せ情報を、ハッシュ値計算等の一方向性関数によって匿名化番号を作成し、連結不可能匿名化により匿名化番号と個人情報の組合せ表を削除し、一方向性関数の利用により匿名化番号から元の個人又は検体番号の類推を防止し、匿名化後の情報のアクセスは匿名化鍵情報を知る情報の所有者又は受任者のみに限定する。
【先行技術文献】
【特許文献】
【0005】
【文献】国際公開第2008/069011号
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1の連結不可能匿名化法は、データ全体に対し匿名化の正当性を保証することができない。一般的に、データに対する正当性を保証する技術としてデジタル署名技術がある。しかし、単純にデジタル署名を適用した場合、データの削除や一般化等の匿名化処理を施すと、データ正当性を検証できない。不正な匿名化データを利用した場合、データから得られる知見も不正となり、データに基づく施策やサービスが不適切となる恐れがある。
【0007】
データ群のデータに匿名化処理を施した後でも、データ群に対する匿名化処理の正当性を検証可能にすることを目的とする。
【課題を解決するための手段】
【0008】
本願において開示される発明の一側面となる匿名化システムは、第1装置と、前記第1装置と通信可能な第2装置と、前記第2装置と通信可能な第3装置と、を有する匿名化システムであって、前記第1装置が、属性が異なる複数のデータ群の各々のデータの第1ハッシュ値に基づいて前記複数のデータ群の第2ハッシュ値を生成する第1生成処理と、前記第2装置が、前記複数のデータ群と、前記第1生成処理によって生成された第2ハッシュ値と、を取得する第1取得処理と、前記第2装置が、前記複数のデータ群のうち前記第3装置からの匿名化要求により特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する匿名化処理と、前記第3装置が、前記特定の属性のデータ群についての匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性のデータ群を除く残余の属性のデータ群と、前記第2ハッシュ値と、を取得する第2取得処理と、前記第3装置が、前記第2取得処理によって取得された残余の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理によって取得された前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、に基づいて、第3ハッシュ値を生成する第2生成処理と、前記第3装置が、前記第2取得処理によって取得された前記第2ハッシュ値と前記第2生成処理によって生成された第3ハッシュ値とが一致するか否かを判定することにより、前記匿名化処理の正当性を検証する検証処理と、を実行し、前記第1生成処理では、前記第1装置は、前記属性に応じた加工ルールにしたがって前記データの第1ハッシュ値を生成して、前記データの第1ハッシュ値に基づいて前記複数のデータ群の第2ハッシュ値を生成し、前記第1取得処理では、前記第2装置は、前記加工ルールを前記第1装置から取得し、前記匿名化処理では、前記第2装置は、前記加工ルールにしたがって前記特定の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記第2取得処理では、前記第3装置は、前記加工ルールを前記第2装置から取得し、前記第2生成処理では、前記第3装置は、前記加工ルールにしたがって前記残余の属性のデータ群の各々のデータの第1ハッシュ値を生成する、ことを特徴とする。
本願において開示される発明の他の側面となる匿名化システムは、第1装置と、前記第1装置と通信可能な第2装置と、前記第2装置と通信可能な第3装置と、を有する匿名化システムであって、前記第1装置が、属性が異なる複数のデータ群の各々のデータの第1ハッシュ値に基づいて前記複数のデータ群の第2ハッシュ値を生成する第1生成処理と、前記第2装置が、前記複数のデータ群と、前記第1生成処理によって生成された第2ハッシュ値を取得する第1取得処理と、前記第2装置が、前記複数のデータ群のうち前記第3装置からの匿名化要求により特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する匿名化処理と、前記第3装置が、前記特定の属性のデータ群についての匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性のデータ群を除く残余の属性のデータ群と、前記第2ハッシュ値と、を取得する第2取得処理と、前記第3装置が、前記第2取得処理によって取得された残余の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理によって取得された前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、に基づいて、第3ハッシュ値を生成する第2生成処理と、前記第3装置が、前記第2取得処理によって取得された前記第2ハッシュ値と前記第2生成処理によって生成された第3ハッシュ値とが一致するか否かを判定することにより、前記匿名化処理の正当性を検証する検証処理と、を実行し、前記匿名化処理では、前記第2装置は、前記匿名化要求された特定の属性の一部のデータの第1ハッシュ値を生成し、前記第2取得処理では、前記第3装置は、前記特定の属性の一部のデータについての前記匿名化要求を前記第2装置に送信した結果、前記第2装置からの前記特定の属性の一部のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性の一部のデータを除く残余のデータ群と、前記第2ハッシュ値と、を取得し、前記第2生成処理では、前記第3装置は、前記第2取得処理によって取得された残余のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理によって取得された前記特定の属性の一部のデータの第1ハッシュ値と、に基づいて、前記第3ハッシュ値を生成する、ことを特徴とする。
【発明の効果】
【0009】
本発明の代表的な実施の形態によれば、データ群のデータに匿名化処理を施した後でも、データ群に対する匿名化処理の正当性を検証することができる。前述した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0010】
図1図1は、匿名化システムのシステム構成例を示す説明図である。
図2図2は、コンピュータのハードウェア構成例を示すブロック図である。
図3図3は、署名生成者端末の機能的構成例を示すブロック図である。
図4図4は、機微データテーブルの一例を示す説明図である。
図5図5は、乱数データテーブルの一例を示す説明図である。
図6図6は、一般化ルールテーブルの一例を示す説明図である。
図7図7は、匿名化データ提供サーバの機能的構成例を示すブロック図である。
図8図8は、匿名化データテーブルの一例を示す説明図である。
図9図9は、匿名化データ提供サーバの機能的構成例を示すブロック図である。
図10図10は、匿名化システムのシーケンス図である。
図11図11は、加工ルール設定画面の一例を示す説明図である。
図12図12は、匿名化要求設定画面の一例を示す説明図である。
図13図13は、図10に示した署名生成処理(ステップS1003)の詳細な処理手順例を示すフローチャートである。
図14図14は、図13に示したセルハッシュ値生成処理(ステップS1301)の詳細な処理手順例を示すフローチャートである。
図15図15は、図14に示したセルハッシュ値の生成処理(ステップS1407)の詳細な処理手順例を示すフローチャートである。
図16図16は、ハッシュ値集約処理の詳細な処理手順例を示すフローチャートである。
図17図17は、図10に示した匿名化処理(ステップS1010)の詳細な処理手順例を示すフローチャートである。
図18図18は、図17に示した匿名加工処理(ステップS1704)の詳細な処理手順例を示すフローチャートである。
図19図19は、図18に示した加工要求が「一般化」の場合の属性値の匿名加工処理(ステップS1808)の詳細な処理手順例を示すフローチャートである。
図20図20は、図10に示した署名検証処理(ステップS1012)の詳細な処理手順例を示すフローチャートである。
図21図21は、図20に示した匿名化全体ハッシュ値生成処理(ステップS2001)の詳細な処理手順例を示すフローチャートである。
【発明を実施するための形態】
【0011】
<匿名化システム>
図1は、匿名化システムのシステム構成例を示す説明図である。匿名化システム100は、個人情報や機微情報の漏洩を防止するために情報を匿名化して提供する際に、提供された情報が不当に改変されていないこと検証する。匿名化システム100は、機微情報を含むデータ(以下、機微データ)を保有するデータ所有者が、情報を匿名化した上で、データ利用者へ提供するためのシステムである。匿名化システム100は、署名生成者端末101、匿名化データ提供サーバ102、および匿名化データ利用者端末103を有する。
【0012】
署名生成者端末101、匿名化データ提供サーバ102、および匿名化データ利用者端末103は、ネットワーク104を介して情報を送受信できるよう接続される。なお、ネットワーク104の種類としては、インターネット、WAN(Wide Area Network)またはLAN(Local Area Network)等が考えられる。また、ネットワーク104の接続方式は、有線又は無線のいずれでもよい。
【0013】
署名生成者端末101は、データホルダである署名生成者(たとえば、行政機関)が機微データに対して属性ごとに許可する匿名加工方法(以降、属性加工ルールと呼ぶ)を設定する。署名生成者端末101は、この属性加工ルールに従って匿名加工処理を行った匿名化データの正当性を検証できるように、機微データに対する署名を生成する。
【0014】
匿名化データ提供サーバ102は、機微データの署名値の提供と、署名生成者から委託された機微データから匿名化データ利用者の要求に従った匿名化データの生成および提供と、を実行する。匿名化データ利用者端末103は、匿名化データ利用者が利用する端末であり、匿名化データの正当性の検証を実行する。
【0015】
<コンピュータ(署名生成者端末101、匿名化データ提供サーバ102、および匿名化データ利用者端末103)のハードウェア構成例>
図2は、コンピュータのハードウェア構成例を示すブロック図である。コンピュータ200は、プロセッサ201と、記憶デバイス202と、入力デバイス203と、出力デバイス204と、通信インターフェース(通信IF)205と、を有する。プロセッサ201、記憶デバイス202、入力デバイス203、出力デバイス204、および通信IF205は、バス206により接続される。プロセッサ201は、コンピュータ200を制御する。記憶デバイス202は、プロセッサ201の作業エリアとなる。また、記憶デバイス202は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス202としては、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリがある。入力デバイス203は、データを入力する。入力デバイス203としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナ、マイク、センサがある。出力デバイス204は、データを出力する。出力デバイス204としては、たとえば、ディスプレイ、プリンタ、スピーカがある。通信IF205は、ネットワーク104と接続し、データを送受信する。
【0016】
<署名生成者端末101の機能的構成例>
図3は、署名生成者端末101の機能的構成例を示すブロック図である。署名生成者端末101は、乱数データ生成部301と、署名生成部302と、ハッシュ値生成部303と、ハッシュ値集約部304と、機微データテーブル305と、乱数データテーブル306と、一般化ルールテーブル307と、属性加工ルール308と、署名値テーブル309と、署名鍵310と、を有する。
【0017】
乱数データ生成部301、署名生成部302、ハッシュ値生成部303、およびハッシュ値集約部304は、具体的には、たとえば、図2に示した記憶デバイス202に記憶されたプログラムをプロセッサ201に実行させることにより実現される。また、機微データテーブル305、乱数データテーブル306、一般化ルールテーブル307、属性加工ルール308、署名値テーブル309、および署名鍵310は、記憶デバイス202に記憶される。
【0018】
乱数データ生成部301は、ハッシュ値の安全性を高めるために付与する乱数を生成する。署名生成部302は、機微データに対する署名値を生成する。ハッシュ値生成部303は、一方向関数などによるハッシュ値の生成を行う。ハッシュ値集約部304は、複数のハッシュ値を集約し1つのハッシュ値を生成する。
【0019】
機微データテーブル305は、個人情報等の機微データを格納する。乱数データテーブル306は、ハッシュ値の安全性を高めるために付与する乱数を格納する。乱数データテーブル306の詳細は、図5で後述する。一般化ルールテーブル307は、機微データの一般化における一般化ルールを格納する。一般化ルールテーブル307の詳細は、図6で後述する。
【0020】
属性加工ルール308は、機微データの各属性に対する加工ルールを格納する。属性加工ルール308には、たとえば、「仮名化」、「削除」、「一般化」、および「加工不可」がある。「仮名化」とは、その機微データから氏名などの個人情報を示す属性を取り除いて匿名化し、仮名となる別の識別情報を付与する加工ルールである。「削除」とは、その機微データの特定の属性を削除する加工ルールである。「一般化」とは、その機微データの特定の属性をより一般的な(より上位概念的な)名称に変更する加工ルールである。「加工不可」とは、その機微データの特定の属性を加工できないという加工ルールである。
【0021】
署名値テーブル309は、機微データテーブル305の識別情報とその機微データテーブル305内の全機微データについての署名値とのペアを格納する。署名鍵310は、機微データテーブル305に対するハッシュ値を暗号化するための鍵情報である。署名鍵310は、たとえば、公開鍵暗号方式の秘密鍵である。
【0022】
<機微データテーブル305>
図4は、機微データテーブル305の一例を示す説明図である。機微データテーブル305は、属性フィールドとして、ID401と、氏名402と、住所403と、年齢404と、性別405と、を有する。同一行の各フィールドの属性値の組み合わせが、一個人の機微データを規定するエントリとなる。
【0023】
ID401は、個人の機微データを一意に特定する識別情報である。氏名402は、ID401によって特定される機微データにおける個人の姓名である。住所403は、ID401によって特定される機微データにおける個人が居住する場所である。年齢404は、ID401によって特定される機微データにおける個人の出生からの経過年数である。年齢404は、経時的に更新される。性別405は、ID401によって特定される機微データにおける個人の性を区別する情報である。
【0024】
<乱数データテーブル306>
図5は、乱数データテーブル306の一例を示す説明図である。乱数データテーブル306は、機微データテーブル305で規定した属性であるID401、氏名402、住所403、および年齢404の各々について乱数501~504を規定したテーブル群(541~544)である。各テーブル541~544における属性および乱数値の組み合わせを乱数データと称す。乱数501~504は、属性加工ルール308が「仮名化」、「削除」および「一般化」のいずれかが設定されている属性(ID401、氏名402、住所403、年齢404、性別405)に対して、属性ごとに生成された値である。
【0025】
<一般化ルールテーブル307>
図6は、一般化ルールテーブル307の一例を示す説明図である。一般化ルールテーブル307は、フィールドとして、一般化前601と、一般化後602と、を有する。一般化前601は、一般化される前の地名であり、一般化後602は、一般化前601で規定される地名を含みかつ当該地名よりも広域な地名である。たとえば、一般化前601の地名が都道府県名であれば、一般化後602は、地方名となる。また、一般化前601の地名が市区町村名であれば、一般化後602は、都道府県名となる。なお、たとえば、東京から関東地方への変換は、1段階の一般化となる。また、東京から日本への変換は、東京⇒関東地方の変換と、関東地方⇒日本の変換と、が実行されるため、2段階の一般化となる。
【0026】
また、図6では、地名を例に挙げて一般化ルールを規定したが、地名に限らず、他の情報でもよい。たとえば、年齢の場合、一般化前601の年齢が0~4歳であれば一般化後602は「幼年」、一般化前601の年齢が5~14歳であれば一般化後602は「少年」、一般化前601の年齢が15~24歳であれば一般化後602は「青年」、一般化前601の年齢が25~44歳であれば一般化後602は「壮年」、一般化前601の年齢が45~64歳であれば一般化後602は「中年」、一般化前601の年齢が65歳以上であれば一般化後602は「高年」となる。
【0027】
<匿名化データ提供サーバ102の機能的構成例>
図7は、匿名化データ提供サーバ102の機能的構成例を示すブロック図である。匿名化データ提供サーバ102は、Webサーバ機能701と、匿名化処理部702と、ハッシュ値生成部303と、ハッシュ値集約部304と、機微データテーブル305と、乱数データテーブル306と、一般化ルールテーブル307と、属性加工ルール308と、署名値テーブル309と、匿名化データテーブル705と、検証用乱数データテーブル706と、検証用一般化ルールテーブル707と、を有する。
【0028】
Webサーバ機能701および匿名化処理部702は、具体的には、たとえば、図2に示した記憶デバイス202に記憶されたプログラムをプロセッサ201に実行させることにより実現される。また、匿名化データテーブル705、検証用乱数データテーブル706、および検証用一般化ルールテーブル707は、記憶デバイス202に記憶される。
【0029】
Webサーバ機能701は、機微データテーブル305の識別情報とその機微データテーブル305内の全機微データについての署名値とを含むWebページを、匿名化データ利用者端末103からアクセス可能に保持する。匿名化処理部702は、機微データに対して検証可能な匿名化処理を実行する。
【0030】
匿名化データテーブル705は、匿名化処理部702により機微データを匿名化処理した結果である匿名化データを格納する。検証用乱数データテーブル706は、乱数データのうち署名検証に必要な乱数データを格納する。検証用乱数データテーブル706は、乱数データテーブル306のレコードのうち、匿名加工処理によって匿名加工がなされなかった属性(ID401、氏名402、住所403、年齢404、性別405)と当該属性値の乱数値とを複製したレコードの集合である。検証用一般化ルールテーブル707は、一般化ルールテーブル307のうち署名検証に必要な一般化ルールを格納する。
【0031】
<匿名化データテーブル705>
図8は、匿名化データテーブル705の一例を示す説明図である。匿名化データテーブル705は、フィールドとして、ID801と、氏名802と、住所803aと、住所_乱数803bと、年齢804と、性別805と、を有する。同一行の各フィールドの値の組み合わせが、一個人の匿名化データを規定するエントリとなる。
【0032】
ID801は、個人の匿名化データを一意に特定する識別情報である。氏名802は、ID801によって特定される匿名化データにおける個人の氏名402の仮名を示すハッシュ値である。住所803aは、住所403の一般化後602の地名である。住所_乱数803bは、住所803a(一般化後602の地名)に付加される署名検証に必要な乱数値である。年齢804は、ID801によって特定される匿名化データにおける個人の年齢404または匿名加工処理による削除対象年齢(例として20歳未満)のハッシュ値である。性別805は、ID801によって特定される匿名化データにおける個人の性を区別する情報である。
【0033】
<匿名化データ利用者端末103の機能的構成例>
図9は、匿名化データ利用者端末103の機能的構成例を示すブロック図である。匿名化データ利用者端末103は、Webブラウザ機能901と、署名検証部902と、ハッシュ値生成部303と、ハッシュ値集約部304と、匿名化データテーブル705と、検証用乱数データテーブル706と、検証用一般化ルールテーブル707と、署名値908と、検証鍵909と、を有する。
【0034】
Webブラウザ機能901および署名検証部902は、具体的には、たとえば、図2に示した記憶デバイス202に記憶されたプログラムをプロセッサ201に実行させることにより実現される。また、署名値908および検証鍵909は、記憶デバイス202に記憶される。
【0035】
Webブラウザ機能901は、匿名化データ提供サーバ102で公開されたWebページを受信して、匿名化データ利用者端末103に表示する。署名検証部902は、署名検証鍵、機微データテーブル305内の全機微データについての署名値および匿名化データテーブル705を入力として匿名化の正当性を検証する。
【0036】
匿名化データテーブル705は、匿名化データ提供サーバ102から取得した匿名化データを格納する。検証用乱数データテーブル706は、匿名化データ提供サーバ102から取得した検証用乱数データを格納する。検証用一般化ルールテーブル707は、匿名化データ提供サーバ102から取得した検証用一般化ルールを格納する。
【0037】
署名値908は、匿名化データ提供サーバ102から取得した機微データテーブル305の全機微データに対する署名値である。検証鍵909は、署名値908の復号に使用する鍵情報であり、たとえば、署名鍵310に対する公開鍵方式の公開鍵である。
【0038】
署名生成者端末101、匿名化データ提供サーバ102、および匿名化データ利用者端末103に記憶されているプログラムやデータの一部またはすべては、予めコンピュータ200が備える記憶デバイス202の非一時的な領域に格納されていてもよいし、必要に応じて、ネットワーク104に接続された他の装置の非一時的記憶装置から、または、図示していないインターフェースに接続される非一時的な記憶媒体から、記憶デバイス202の非一時的な領域に格納されてもよい。
【0039】
<匿名化システム100のシーケンス>
図10は、匿名化システム100のシーケンス図である。署名生成者端末101は、署名生成者の操作により、機微データの各属性(ID401、氏名402、住所403、年齢404、性別405)の加工ルールを設定する(ステップS1001)。具体的には、たとえば、署名生成者端末101は、その出力デバイス204に機微データの属性ごとの加工ルール設定画面を表示し、入力デバイス203を用いて、属性ごとに「加工不可」、「仮名化」、「削除」および「一般化」のいずれかの選択を受け付ける。
【0040】
図11は、加工ルール設定画面の一例を示す説明図である。加工ルール設定画面1100は、加工ルール設定領域1101と、一般化ルール入力領域1102と、実行ボタン1103と、を有する。加工ルール設定領域1101は、属性ごとに「加工不可」、「仮名化」、「削除」、または「一般化」の選択肢に対するラジオボタンを有し、属性1つにつきいずれか1つの加工ルールが選択可能である。
【0041】
一般化ルール入力領域1102は、属性ごとに、一般化ルールの格納先を入力するための入力欄と、当該入力欄へ格納先を入力するためのファイル管理ツールを呼び出すための選択ボタンと、を有する。たとえば、ID401の加工ルールを「仮名化」、氏名402および年齢404の加工ルールを「削除」、住所403の加工ルールを「一般化」、性別405の加工ルールを「加工不可」で設定したものとする。
【0042】
実行ボタン1103は、押下により、加工ルール設定領域1101および一般化ルール入力領域1102で設定された加工ルールを属性に関連付けて、属性加工ルール308として記憶デバイス202に格納するためのトリガとなるボタンである。実行ボタン1103の押下により、乱数データ生成(ステップS1002)および署名生成処理(ステップS1003)が開始される。
【0043】
図10に戻り、署名生成者端末101は、乱数データ生成部301により、属性ごとの乱数データを生成し、乱数データテーブル306に格納する(ステップS1002)。具体的には、たとえば、乱数データ生成部301は、機微データのすべての属性に対して、以下の処理を行う。まず、乱数データ生成部301は、属性加工ルール308から、当該属性の加工ルールを取得する。当該属性の加工ルールが「加工不可」の場合、乱数データ生成部301は、乱数データを生成しない。当該属性の加工ルールが「仮名化」、「削除」、および「一般化」のいずれかの場合、乱数データ生成部301は、乱数データを生成する。
【0044】
乱数データ生成部301は、機微データから属性ごとに属性値を取得する。たとえば、図4の機微データテーブル305の場合、乱数データ生成部301は、ID401については、ID401の列の属性値である「247」、「500」、「294」および「80」を取得する。つぎに、乱数データ生成部301は、取得したID401の属性値「247」、「500」、「294」および「80」の各々について、乱数値「8AAE34」、「A7132F」、「D89204」および「FB33D9」を生成し、属性値と乱数値とのペアを乱数データとして乱数データテーブル306に格納する。他の属性(氏名402、住所403、年齢404)についても同様である。なお、本例では、性別405の加工ルールは「加工不可」に設定されたため、性別405については、乱数値は生成されない。
【0045】
つぎに、署名生成者端末101は、署名生成部302により、機微データ、乱数データ、一般化ルール、加工ルール、および署名鍵310を入力とし、機微データテーブル305の全機微データに対する署名値908を生成する署名生成処理を行う(ステップS1003)。なお、署名生成処理(ステップS1003)の詳細は、図13図16を用いて後述する。
【0046】
つぎに、署名生成者端末101は、機微データ、乱数データ、一般化ルール、加工ルール、および署名生成処理(ステップS1003)によって生成された署名値908を、匿名化データ提供サーバ102に送信する(ステップS1004)。なお、署名生成者端末101は、機微データテーブル305の識別情報とその機微データテーブル305内の全機微データについての署名値とのペアを署名値テーブル309に格納する。
【0047】
匿名化データ提供サーバ102は、署名生成者端末101から送信された機微データ、乱数データ、一般化ルール、加工ルールおよび署名値908を取得し、記憶デバイス202に格納する(ステップS1005)。
【0048】
つぎに、匿名化データ提供サーバ102は、Webサーバ機能701により、ネットワーク104を介してアクセス可能なWebページを生成し、WebページのURLを匿名化データ利用者端末103のWebブラウザ機能901へ通知する(ステップS1006)。
【0049】
つぎに、匿名化データ利用者端末103は、Webブラウザ機能901により、機微データテーブル305の識別情報、当該機微データテーブル305の属性、当該機微データテーブル305の各属性の加工ルール、機微データテーブル305内の全機微データについての署名値を含むWebページを取得する(ステップS1007)。
【0050】
つぎに、匿名化データ利用者端末103は、データ利用者の入力デバイス203の操作により、機微データテーブル305の全機微データに対する署名値908をWebページからダウンロードして取得し、匿名化データ利用者端末103の記憶デバイス202に格納する(ステップS1008)。
【0051】
つぎに、匿名化データ利用者端末103は、データ利用者の入力デバイス203の操作により、匿名化要求を設定し、匿名化要求を含む匿名化データ取得依頼を、匿名化データ提供サーバ102のWebサーバ機能701に送信する(ステップS1009)。本実施例では、匿名化データ取得依頼に以下の4つの匿名化要求が含まれた例とする。
【0052】
匿名化要求1:ID401を仮名化
匿名化要求2:氏名402を削除
匿名化要求3:住所403を1段階一般化
匿名化要求4:年齢404が19歳以下であれば削除
【0053】
図12は、匿名化要求設定画面の一例を示す説明図である。匿名化要求設定画面1200は、匿名化データ利用者端末103の出力デバイス204に表示され、属性に対する加工有無を指定する加工有無指定領域1201、属性に対する詳細な匿名化要求を指定する詳細要求指定領域1202、および実行ボタン1203を有する。
【0054】
加工有無指定領域1201は、加工ルール設定(ステップS1001)で設定された属性ごとの加工ルールを選択可能なラジオボタンを有する。ただし、加工ルールが「一般化」の場合は「一般化」のほかに「削除」のラジオボタンも備える。また、加工ルールが「加工不可」の場合は、ラジオボタンは備えない。
【0055】
詳細要求指定領域1202は、属性を加工する際に詳細な加工条件を指定可能な領域である。たとえば、住所403の一般化で「1段階」が指定されており、住所403を一段階一般化することが要求される。また、年齢404の削除で「-19」が指定されており、年齢404が19歳以下であれば削除することが要求される。
【0056】
実行ボタン1203が押下されると、入力された属性ごとの匿名化要求を含む匿名化データ取得依頼が匿名化データ提供サーバ102に送信される(ステップS1009)。
【0057】
図10に戻り、匿名化データ提供サーバ102は、Webサーバ機能701により、匿名化データ利用者端末103から通知された機微データテーブル305の識別情報および匿名化要求を取得して、匿名化処理部702に渡す。そして、匿名化データ提供サーバ102は、匿名化処理部702により、機微データテーブル305の識別情報および匿名化要求を入力として匿名化処理を実行して匿名化データ、検証用乱数データ、検証用一般化ルールを生成し、これらをWebサーバ機能701へ渡す(ステップS1010)。なお、匿名化処理(ステップS1010)の詳細は、図17図19で後述する。
【0058】
Webサーバ機能701は、匿名化データ、検証用乱数データ、検証用一般化ルールをデータ利用者向けのダウンロード用Webページに登録し、そのURLを匿名化データ利用者端末103のWebブラウザ機能901へ通知する。
【0059】
つぎに、匿名化データ利用者端末103は、Webブラウザ機能901は、通知されたURLを入力としてデータ利用者向けのダウンロード用Webページにアクセスし、匿名化データ、検証用乱数データ、および検証用一般化ルールをダウンロードして取得し、匿名化データ利用者端末103の記憶デバイス202に格納する(ステップS1011)。これにより、匿名化データ利用者端末103の記憶デバイス202に、匿名化データテーブル705、検証用乱数データテーブル706、および検証用一般化ルールテーブル707が作成される。
【0060】
最後に、匿名化データ利用者端末103は、署名検証処理部317により、匿名化データ、検証用乱数データテーブル706、検証用一般化ルールテーブル707、署名値908および検証鍵909を入力として、匿名化データ提供サーバ102による匿名化処理(ステップS1010)の正当性を検証する署名検証処理を実行する(ステップS1012)。匿名化データ利用者端末103は、匿名化処理(ステップS1010)の正当性が検証された場合は“検証成功”を、匿名化処理(ステップS1010)の正当性が検証されない場合は“検証失敗”を、出力デバイス204に表示する(ステップS1012)。
【0061】
匿名化データ利用者端末103は、検証成功となった場合、匿名化データを出力デバイス204に表示し、検証失敗となった場合、匿名化データを出力デバイス204に表示しない。署名検証処理(ステップS1012)の詳細は、図20で後述する。
【0062】
図10で示した処理により、匿名化データ利用者は、署名生成者が設定した匿名化ルールに従った正当な匿名化処理(ステップS1010)により、入手した匿名化データが正当に匿名化されたか否かを、検証できる。これにより、不正な匿名化データから得られた不正な分析結果を利用したサービス提供を防止することができる。
【0063】
<署名生成処理(ステップS1003)>
図13は、図10に示した署名生成処理(ステップS1003)の詳細な処理手順例を示すフローチャートである。署名生成部302は、機微データの各セルに対してハッシュ値(以下、セルハッシュ値)HCを生成する(ステップS1301)。機微データテーブル305は、レコード数N(図4では、N=4)、属性数M(図4ではM=5)のテーブルであるため、M×N個(図4では、20個)のセルを有する。したがって、署名生成部302は、20個のセルハッシュ値HCを生成する。このセルハッシュ値生成処理(ステップS1301)の詳細は図14で後述する。
【0064】
つぎに、ハッシュ値集約部304は、セルハッシュ値HCから機微データテーブル305のレコードごとのハッシュ値(レコードハッシュ値)HRを生成する(ステップS1302)。具体的には、署名生成部302は、セルハッシュ値HCのN件(図4では、N=4)のレコードに対してレコードを順に読み出して、ハッシュ値集約部304に渡す。ハッシュ値集約部304は、レコードごとに、M個の属性のセルハッシュ値HCを連結したレコードハッシュ値HRを生成する。すなわち、N個のレコードハッシュ値HRが生成される。このレコードハッシュ値生成処理(ステップS1302)の詳細は、図16で後述する。
【0065】
つぎに、ハッシュ値集約部304は、レコードごとのレコードハッシュ値HRを結合して、機微データテーブル305全体のハッシュ値(以下、全体ハッシュ値)HTを生成する(ステップS1303)。この全体ハッシュ値生成処理(ステップS1303)の詳細は、図16で後述する。
【0066】
最後に、署名生成部302は、全体ハッシュ値HTと署名鍵310とを用いて、署名値908を生成する(ステップS1304)。
【0067】
<セルハッシュ値生成処理(ステップS1301)>
図14は、図13に示したセルハッシュ値生成処理(ステップS1301)の詳細な処理手順例を示すフローチャートである。
【0068】
署名生成部302は、機微データテーブル305の何番目の属性であるかを示す変数i(以下、属性iと表記する場合もある)を1(たとえば、i=1はID401)で初期化する(ステップS1401)。つぎに、署名生成部302は、i>Mであるか否かを判定する(ステップS1402)。i>Mである場合(ステップS1402:Yes)、署名生成部302は、セルハッシュ値生成処理(ステップS1101)を終了し、ステップS1302に移行する。
【0069】
一方、i>Mでない場合(ステップS1402:No)、署名生成部302は、i番目の属性の加工ルールが「削除」または「一般化」のいずれかに該当するか否かを判定する(ステップS1403)。
【0070】
i番目の属性の加工ルールが「削除」または「一般化」のいずれかに該当しない場合(ステップS1403:No)、ステップS1405に移行する。たとえば、本例では、ID401、氏名402および性別405は、「削除」または「一般化」のいずれの加工ルールにも該当しない。
【0071】
一方、住所403および年齢404は、「削除」または「一般化」のいずれかに該当する(ステップS1403:Yes)。この場合、署名生成部302は、カウンタを生成する(ステップS1404)。
【0072】
具体的には、たとえば、署名生成部302は、まず、乱数データテーブル306からi番目の属性(住所403または年齢404)に対する属性値を取得する。たとえば、署名生成部302は、属性iが住所403であれば、属性値xiとして「東京都」、「神奈川県」および「大阪府」を取得し、属性iが年齢404であれば、属性値xiとして「16」、「37」、「48」および「50」を取得する。そして、署名生成部302は、属性値xiごとのカウンタを生成し、各カウンタのカウンタ値ciを0で初期化する。S1404の後はS1405に進む。
【0073】
カウンタ生成(ステップS1404)のあと、署名生成部302は、機微データテーブル305の何番目のレコードであるかを示す変数j(以下、レコードjと表記する場合もある)を1で初期化する(ステップS1405)。
【0074】
そして、署名生成部302は、j>Nであるか否かを判定する(ステップS1406)。j>Nでない場合(ステップS1406:No)、署名生成部302は、属性iでかつレコードjのセルCijにおける属性値xijのセルハッシュ値HCijを生成する(ステップS1407)。たとえば、属性iがi=1、レコードjがj=1であれば、属性値xijは、1行目のレコードにおけるID401の「247」である。セルハッシュ値HCijの生成処理(ステップS1407)は、当該属性iの加工ルールに従って、属性値xijのセルハッシュ値HCijを生成する。
【0075】
具体的には、たとえば、当該属性iの加工ルールが「一般化」の場合のセルハッシュ値HCijの生成処理(ステップS1407)は、図15で後述する。
【0076】
当該属性iの加工ルールが「削除」の場合のセルハッシュ値HCijの生成処理(ステップS1407)は、当該属性iの加工ルールが「一般化」の場合の処理の一部と同一であるため、図15(ステップS1501~S1505)で合わせて説明する。
【0077】
当該属性iの加工ルールが「仮名化」の場合、署名生成部302は、まず、乱数データから属性値xijに対する乱数値rijを取得し、属性値xijと乱数値rijとを連結した値xijrijをハッシュ値生成部303に入力し、ハッシュ値生成部303からの出力結果を当該セルCijのセルハッシュ値HCijとする。これにより、複数の同一属性値xijは、同一の連結値xijrijとなり、かつ、同一のセルハッシュ値HCijとなる。
【0078】
当該属性iの加工ルールが「加工不可」の場合、署名生成部302は、属性値xijをハッシュ値生成部303に入力し、ハッシュ値生成部303からの出力結果を当該セルのセルハッシュ値HCijとする。
【0079】
ステップS1407のあと、署名生成部302は、変数jをインクリメントし(ステップS1408)、ステップS1406に戻る。ステップS1406において、j>Nである場合(ステップS1406:Yes)、属性iについて最終レコードj=Nまで処理されたため、ステップS1409に移行する。
【0080】
そして、署名生成部302は、変数iをインクリメントし(ステップS1409)、ステップS1402に戻る。ステップS1402において、i>Mである場合(ステップS1402:Yes)、最後の属性i=Mまで処理されたため、署名生成部302は、セルハッシュ値生成処理(ステップS1301)を終了し、ステップS1302に移行する。これにより、機微データテーブル305のすべてのセルCijにおけるセルハッシュ値HCijが生成される。
【0081】
<セルハッシュ値HCijの生成処理(ステップS1407)>
図15は、図14に示したセルハッシュ値HCijの生成処理(ステップS1407)の詳細な処理手順例を示すフローチャートである。図15は、当該属性iの加工ルールが「一般化」または「削除」の場合のセルハッシュ値HCijの生成処理(ステップS1407)の詳細な処理手順例を示す。
【0082】
署名生成部302は、対象となるレコードjについて、ステップS1404で生成したカウンタ値ciを取得する(ステップS1501)。つぎに、署名生成部302は、属性値xijに対する乱数rijを、乱数データテーブル306から取得する(ステップS1502)。つぎに、署名生成部302は、カウンタ値ciと乱数値rijの和r’ij=rij+ciを算出する(ステップS1503)。
【0083】
つぎに、署名生成部302は、カウンタ値ciをインクリメントし(ステップS1504)、属性値xijと乱数値r’ijとを連結した値xijr’ijをハッシュ値生成部303に入力し、ハッシュ値生成部303からの出力結果であるハッシュ値Hを取得する(ステップS1505)。
【0084】
そして、署名生成部302は、属性値xijが一般化可能であるか否かを判定する(ステップS1506)。具体的には、たとえば、署名生成部302は、属性値xijが一般化ルールテーブル307の一般化前601に存在すれば一般化可能である。属性値xijが一般化可能である場合(ステップS1506:Yes)、署名生成部302は、属性値xijおよび乱数値r’ijを更新して(ステップS1507)、ステップS1505に戻る。
【0085】
具体的には、たとえば、署名生成部302は、一般化ルールテーブル307から属性値xijの一般化後602の値を取得し、属性値xijを更新する。また、署名生成部302は、ステップS1505で取得したハッシュ値Hを、更新後の属性値xijの乱数値r’ijに設定する。
【0086】
ステップS1506において、一般化可能でない場合(ステップS1506:No)、署名生成部302は、最後に生成されたハッシュ値Hを属性値xijのセルハッシュ値HCijに設定して(ステップS1508)、セルハッシュ値HCijの生成処理(ステップS1407)が終了する。
【0087】
これにより、一般化の段階数に応じて、加工ルールが「一般化」である属性iの属性値xijに対するセルハッシュ値HCijが生成できる。
【0088】
また、加工ルールが「削除」の場合は、署名生成部302は、ステップS1501~S1505を実行し、ステップS1505で生成したセルハッシュ値Hを属性値xijのセルハッシュ値HCijに設定することになる。これにより、複数の同一属性値xijであっても、異なる連結値xijrijとなり、かつ、異なるセルハッシュ値HCijとなり、削除された属性値xijが推測されるのを防止する。
【0089】
<ハッシュ値集約処理>
図16は、ハッシュ値集約処理の詳細な処理手順例を示すフローチャートである。ハッシュ値集約処理とは、複数のハッシュ値を集約して1つのハッシュ値を生成する処理であり、レコードハッシュ値生成処理(ステップS1302)および全体ハッシュ値生成処理(ステップS1303)に適用される。
【0090】
集約前の複数のハッシュ値は、レコードハッシュ値生成処理(ステップS1302)に適用する場合は、複数のセルハッシュ値HCijであり、全体ハッシュ値生成処理(ステップS1303)に適用する場合は、複数のレコードハッシュ値HRjである。図16では、集約前の複数のハッシュ値の各々を「要素」と称す。
【0091】
ハッシュ値集約部304は、変数kおよび変数lをそれぞれ1で初期化し、複数の要素を含むリストを要素リストEとし、変数mを要素リストEの要素数(Eとする)で初期化し、空のリストE’を生成する(ステップS1601)。
【0092】
つぎに、ハッシュ値集約部304は、変数mがm=1であるか否かを判定する(ステップS1601)。変数mがm=1でない場合(ステップS1602:No)、ハッシュ値集約部304は、要素リストE内のk番目の要素Ekとk+1番目の要素Ek+1とを連結したハッシュ値を生成し、リストE’のl番目の要素E’lとする(ステップS1603)。
【0093】
つぎに、ハッシュ値集約部304は、kの値を2、lの値を1増加する(ステップS1603)。つぎに、ハッシュ値集約部304は、k<mであるか否かを判定する(ステップS1605)。k<mである場合(ステップS1605:Yes)、ステップS1602に戻る。一方、k<mでない場合(ステップS1605:No)、ハッシュ値集約部304は、k=mであるか否かを判定する(ステップS1606)。k=mでない場合(ステップS16063:No)、ステップS1608に移行し、k=mである場合(ステップS1067:Yes)、ハッシュ値集約部304は、要素Ekの値をE’のl番目の要素としてリストE’に追加して、ステップS1608に移行する。
【0094】
ハッシュ値集約部304は、変数kをk=1、変数lをl=1、変数mをリストE’の要素数、要素リストEの要素数EをE=E’、E’を空のリストとし、S1602に戻る。ステップS1602において、変数mがm=1である場合(ステップS1602:Yes)、ハッシュ値集約部304は、集約後のハッシュ値HをE1とする。以上の処理により、複数のハッシュ値を集約した1つのハッシュ値E1が生成される。
【0095】
すなわち、レコードハッシュ値生成処理(ステップS1302)に適用された場合、ハッシュ値E1は、あるレコードjのレコードハッシュ値HRjであり、全体ハッシュ値生成処理(ステップS1303)に適用された場合、ハッシュ値E1は、全体ハッシュ値である。
【0096】
このように、署名生成者端末101は、機微データテーブル305のすべてのセルの属性値xijをセルハッシュ値にすることにより、全体ハッシュ値HTを生成することができる。
【0097】
<匿名化処理(ステップS1010)>
図17は、図10に示した匿名化処理(ステップS1010)の詳細な処理手順例を示すフローチャートである。匿名化処理(ステップS1010)は、匿名化データ提供サーバ102が、匿名化処理部702により、機微データ、乱数データ、一般化ルールデータ、加工ルールを用いて、匿名化処理(ステップS1010)の正当性を検証可能な機微データの匿名化を行う処理である。
【0098】
匿名化処理部702は、変数iを1で初期化する(ステップS1701)。つぎに、匿名化処理部702は、i>Mであるか否かを判定する(ステップS1702)。i>Mでない場合(ステップS1702:No)、匿名化処理部702は、ステップS1009により、属性iの加工が要求されているか否かを判定する(ステップS1703)。属性iの加工が要求されていない場合(ステップS1703:No)、匿名化処理部702は、属性iの属性値xiを匿名化データテーブル705の属性iに複製して(ステップS1706)、ステップS1707に移行する。
【0099】
一方、属性iの加工が要求されている場合(ステップS1703:Yes)、属性iの属性値xiについて匿名加工処理を実行する(ステップS1704)。匿名加工処理(ステップS1704)の詳細については図18で後述する。
【0100】
そして、匿名化処理部702は、検証用乱数データを生成する(ステップS1705)。具体的には、たとえば、匿名化処理部702は、まず、当該属性iの匿名加工要求を参照し、匿名加工要求が属性iのすべての属性値xiに対する要求であるか否かを判定する。すべての属性値xiに対する加工要求である場合、匿名化処理部702は、検証用乱数データを作成しない。たとえば、属性iがID401や氏名402、住所403である場合、すべての属性値xiに対する加工要求となるため、匿名化処理部702は、検証用乱数データを作成しない。
【0101】
一方、一部の属性値xiに対する加工要求である場合、匿名化処理部702は、検証用乱数データを生成する。たとえば、属性iが年齢404である場合、たとえば、19歳以下については削除の加工要求がされる。
【0102】
具体的には、匿名化処理部702は、まず、当該属性iの乱数データを乱数データテーブル306から取得して検証用乱数データとして複製する。たとえば、匿名化処理部702は、乱数データテーブル306のテーブル544から年齢404および乱数504の組み合わせである乱数データを取得して検証用乱数データとして複製する。
【0103】
つぎに、匿名化処理部702は、当該属性iの匿名加工要求(削除)を参照し、検証用乱数データから削除対象の乱数データを決定し、最後に、検証用乱数データから削除対象の乱数データを削除し、最終的な検証用乱数データとする。たとえば、匿名化処理部702は、検証用乱数データにおいて、年齢404が19歳以下の値およびその乱数504の値を削除対象の乱数データに決定し、検証用乱数データ群から削除して最終的な検証用乱数データ群とする。すなわち、年齢404の値が「37」、「48」および「50」とその乱数504の値「BA5CBF」、「76E635」および「1C104A」とが、最終的な検証用乱数データになる。このあと、ステップS1707に移行する。
【0104】
匿名化処理部702は、変数iをインクリメントし(ステップS1707)、ステップS1702に戻る。ステップS1702において、i>Mである場合(ステップS1702:Yes)、匿名化処理(ステップS1010)が終了する。
【0105】
<匿名加工処理(ステップS1704)>
図18は、図17に示した匿名加工処理(ステップS1704)の詳細な処理手順例を示すフローチャートである。匿名化処理部702は、属性iの加工ルールが「一般化」であるか否かを判定する(ステップS1801)。
【0106】
属性iの加工ルールが「一般化」である場合(ステップS1801:Yes)、匿名化処理部702は、匿名化データテーブル705に、属性iの乱数列を追加して(ステップS1802)、ステップS1804に移行する。たとえば、属性iが住所403である場合、匿名化処理部702は、乱数503の乱数値列を匿名化データテーブル705に追加する。
【0107】
一方、属性iの加工ルールが「一般化」でない場合(ステップS1801:No)、匿名化処理部702は、属性iの加工ルールが「削除」であるか否かを判定する(ステップS1803)。属性iの加工ルールが「削除」である場合(ステップS1803:Yes)、ステップS1804に移行する。一方、属性iの加工ルールが「削除」でない場合(ステップS1803:No)、ステップS1805に移行する。
【0108】
ステップS1802またはステップS1803:Yesのあと、匿名化処理部702は、カウンタを生成して(ステップS1804)、ステップS1805に移行する。すなわち、属性iの加工ルールが「一般化」または「削除」である場合に、属性iの属性値xiごとにカウンタが生成される。各カウンタのカウンタ値cは0で初期化される。
【0109】
匿名化処理部702は、機微データテーブル305がどのレコードであるかを示す変数jを=1に設定し(ステップS1805)、j>Nであるか否かを判定する(ステップS1806)。j>Nでない場合(ステップS1806:No)、匿名化処理部702は、属性値xijに加工が要求されているか否かを判定する(ステップS1807)。
【0110】
属性値xijに加工が要求されている場合(ステップS1807:Yes)、匿名化処理部702は、加工要求に応じて属性値xijの匿名加工処理を実行し(ステップS1808)、ステップS1810に移行する。加工要求が「一般化」の場合の匿名加工処理(ステップS1808)については、図19で後述する。
【0111】
加工要求が「削除」の場合の匿名加工処理(ステップS1808)については、図15のS1501~S1505と同様であり、生成したセルハッシュ値HCijが匿名化データテーブル705に格納される。
【0112】
加工要求が「仮名化」の場合の匿名加工処理(ステップS1808)については、加工ルールが「仮名化」である場合のセルハッシュ値HCijの生成処理(ステップS1407)と同様であり、生成したセルハッシュ値HCijが匿名化データテーブル705に格納される。
【0113】
一方、属性値xijに加工が要求されていない場合(ステップS1807:No)、匿名化処理部702は、属性iの属性値xijを匿名化データテーブル705の属性iに複製して(ステップS1809)、ステップS1810に移行する。
【0114】
匿名化処理部702は、変数jをインクリメントして(ステップS1810)、ステップS1806に戻る。ステップS1806において、j>Nである場合(ステップS1806:Yes)、匿名化処理部702は、匿名加工処理(ステップS1704)を終了し、ステップS1705に移行する。
【0115】
<属性値xijの匿名加工処理(ステップS1808)>
図19は、図18に示した加工要求が「一般化」の場合の属性値xijの匿名加工処理(ステップS1808)の詳細な処理手順例を示すフローチャートである。図19では、図15と同一処理には同一ステップ番号を付す。
【0116】
ステップS1503のあと、匿名化処理部702は、変数lを0で初期化する(ステップS1904)つぎに、匿名化処理部702は、変数lが加工要求の一般化レベルと一致するかを判定する(ステップS1905)。一般化レベルとは、1段階、2段階、…、といった一般化前601から一般化後602への変換回数である。たとえば、千代田区⇒東京都、東京都⇒関東地方、関東地方⇒日本のように一般化する場合、一般化レベルは、3段階である。この例の場合、ステップS1505、S1507、S1908が3回繰り返される。
【0117】
変数lが加工要求の一般化レベルと一致する場合(ステップS1905:Yes)、匿名化処理部702は、ステップS1105、S1107を実行して、変数lをインクリメントして(ステップS1908)、ステップS1905に戻る。
【0118】
変数lが加工要求の一般化レベルと一致しない場合(ステップS1905:No)、匿名化処理部702は、匿名化データテーブル705の属性ia(たとえば、住所803a)のレコードjのセルCiajに属性値xijを格納し、属性iに対する乱数列ib(たとえば、住所_乱数803b)のレコードjのセルCibjにハッシュ値Hを格納する。
【0119】
そして、匿名化処理部702は、検証用一般化ルールテーブル707を生成する(ステップS1910)。具体的には、たとえば、匿名化処理部702は、まず、当該属性iの一般化ルールを空の検証用一般化ルールテーブル707に複製する。つぎに、匿名化処理部702は、当該属性iの加工要求と一般化ルールテーブル307とを参照し、一般化ルールテーブル307の中から削除すべき削除対象レコードを決定する。
【0120】
具体的には、たとえば、住所403を3段階一般化するという加工要求である場合、匿名化処理部702は、住所403を示す属性値xijを3段階一般化させるレコードを一般化ルールテーブル307から特定する。たとえば、住所403を示す属性値xijが「千代田区」であれば、一般化前601(千代田区)および一般化後602(東京都)のレコードと、一般化前601(東京都)および一般化後602(関東地方)のレコードと、一般化前601(関東地方)および一般化後602(日本)のレコードと、が特定される。
【0121】
匿名化処理部702は、特定したレコードのうち、最終段階の以外の一般化前後のレコードを削除対象レコードに決定する。本例の場合、一般化前601(千代田区)および一般化後602(東京都)のレコードと、一般化前601(東京都)および一般化後602(関東地方)のレコードと、が削除対象レコードに決定される。匿名化処理部702は、削除対象レコードの削除後の一般化ルールテーブル307を、検証用一般化ルールテーブル707として生成する。
【0122】
このように、匿名化データ提供サーバ102は、機微データテーブル305のうち、匿名化要求があったセルcijの属性値xijについてのみセルハッシュ値を生成して、元の属性値xijから生成したセルハッシュ値に置換することにより、匿名化データテーブル705を生成することができる。匿名化されていない残余の属性値については、匿名化データ利用者端末103においてセルハッシュ値に変換される。
【0123】
<署名検証処理(ステップS1012)>
図20は、図10に示した署名検証処理(ステップS1012)の詳細な処理手順例を示すフローチャートである。匿名化データ利用者端末103は、ステップS1011で取得した匿名化データテーブル705の全匿名化データについて、匿名化全体ハッシュ値生成処理を実行する(ステップS2001)。匿名化全体ハッシュ値生成処理(ステップS2001)では、匿名化データテーブル705全体のハッシュ値(以下、匿名化全体ハッシュ値)H´が生成される。匿名化全体ハッシュ値生成処理(ステップS2001)の詳細は図21で後述する。
【0124】
匿名化データ利用者端末103は、機微データテーブル305の全機微データに対する署名値908を検証鍵909で復号し、全体ハッシュ値HTを取得する(ステップS2002)。そして、匿名化データ利用者端末103は、復号した全体ハッシュ値HTが匿名化全体ハッシュ値H´と一致するか否かを判定する(ステップS2003)。
【0125】
一致する場合(ステップS2003:Yes)、匿名化データ利用者端末103は、出力デバイス204に“検証成功”を表示可能に出力する(ステップS2004)。一方、不一致の場合(ステップS2003:No)、匿名化データ利用者端末103は、出力デバイス204に“検証失敗”を表示可能に出力し(ステップS2005)、署名検証処理(ステップS1012)が終了する。
【0126】
<匿名化全体ハッシュ値生成処理>
図21は、図20に示した匿名化全体ハッシュ値生成処理(ステップS2001)の詳細な処理手順例を示すフローチャートである。匿名化データ利用者端末103は、変数iを1で初期化する(ステップS2101)。
【0127】
匿名化データ利用者端末103は、i>Mであるか否かを判定する(ステップS2102)。i>Mでない場合(ステップS2102:No)、匿名化データ利用者端末103は、属性iが「乱数」であるか否かを判定する(ステップS2103)。たとえば、属性iが住所_乱数803bである場合、属性iは「乱数」であると判定される。属性iが「乱数」である場合(ステップS2103:Yes)、ステップS2114に移行する。
【0128】
一方、属性iが「乱数」でない場合(ステップS2103:No)、匿名化データ利用者端末103は、属性iの検証用乱数データが検証用乱数データテーブル706に存在するか否かを判定する(ステップS2104)。属性iの検証用乱数データが存在せず、かつ、匿名化データテーブル705に属性iの乱数列も存在しない場合(ステップS2104:No)、ステップS2105に移行する。属性iの検証用乱数データが存在する場合、または、匿名化データに属性iの乱数列が存在する場合(ステップS2104:Yes)、ステップS2106に移行する。
【0129】
ステップS2105において、匿名化データ利用者端末103は、匿名化データの属性iのセルcijのセルハッシュ値を、匿名化データのセルハッシュ値として(ステップS2105)、ステップS2114に移行する。たとえば、加工要求(削除)によって年齢404の属性値xijが匿名化されたセルハッシュ値「4B4568」(図8を参照)については、当該属性値が検証用乱数データテーブル706に存在しないため、セルハッシュ値「4B4568」がそのまま用いられる。
【0130】
ステップS2106において、匿名化データ利用者端末103は、属性iの加工ルールが「削除」または「一般化」であるか否かを判定する(ステップS2106)。属性iの加工ルールが「削除」または「一般化」でない場合(ステップS2106:No)、ステップS2108に移行する。一方、属性iの加工ルールが「削除」または「一般化」である場合(ステップS2106:Yes)、匿名化データ利用者端末103は、カウンタを生成する(ステップS2107)。
【0131】
具体的には、たとえば、匿名化データ利用者端末103は、まず、検証用乱数データテーブル706からi番目の属性(住所403または年齢404)に対する属性値を取得する。たとえば、匿名化データ利用者端末103は、属性iが住所403であれば、属性値xiとして「東京都」、「神奈川県」および「大阪府」を取得し、属性iが年齢404であれば、属性値xiとして「16」、「37」、「48」および「50」を取得する。そして、匿名化データ利用者端末103は、属性値xiごとのカウンタを生成し、各カウンタのカウンタ値ciを0で初期化し、ステップS2108に移行する。
【0132】
カウンタ生成(ステップS2107)のあと、匿名化データ利用者端末103は、匿名化データテーブル705の何番目のレコードであるかを示す変数j(以下、レコードjと表記する場合もある)を1で初期化する(ステップS2108)。
【0133】
そして、匿名化データ利用者端末103は、j>Nであるか否かを判定する(ステップS2109)。j>Nでない場合(ステップS2109:No)、匿名化データ利用者端末103は、属性iでかつレコードjのセルCijにおける属性値xijの乱数データが検証用乱数データテーブル706に存在するか否かを判定する(ステップS2110)。
【0134】
属性値xijの乱数データが検証用乱数データテーブル706に存在しない場合(ステップS2110:No)、匿名化データ利用者端末103は、属性値xijをセルハッシュ値HCijに設定して(ステップS2112)、ステップS2113に移行する。
【0135】
一方、属性値xijの乱数データが検証用乱数データテーブル706に存在する場合(ステップS2110:Yes)、匿名化データ利用者端末103は、属性iの属性加工ルールに従って、属性値xijのセルハッシュ値HCijを生成して(ステップS2111)、ステップS2113に移行する。
【0136】
具体的には、たとえば、ステップS2111において、匿名化データ利用者端末103は、当該属性iの加工ルールが「一般化」の場合の処理は、図15に示したセルハッシュ値HCijの生成処理(ステップS1407)と同じである。ただし、ステップS1502の属性値xijに対する乱数rijは、匿名化データテーブル705の乱数列(たとえば、住所_乱数803b)から取得される。また、図15に示したセルハッシュ値HCijの生成処理(ステップS1407)を適用する場合、匿名化データ利用者端末103は、ステップS1506において、一般化ルールテーブル307ではなく、検証用一般化ルールテーブル707を用いる。
【0137】
当該属性iの加工ルールが「削除」の場合の処理は、図15に示したセルハッシュ値HCijの生成処理(ステップS1407)のうちステップS1501~S1504と同じ処理となる。
【0138】
当該属性iの加工ルールが「仮名化」および「加工不可」の場合の処理は、図15に示したセルハッシュ値HCijの生成処理(ステップS1407)と同じである。
【0139】
このあと、匿名化データ利用者端末103は、変数jをインクリメントして(ステップS2113)、ステップS2109に戻る。また、ステップS2109でj>Nとなった場合(ステップS2109:Yes)、ステップS2114に移行する。ステップS2114では、匿名化データ利用者端末103は、変数iをインクリメントして(ステップS2114)、ステップS2102に戻る。
【0140】
ステップS2102において、i>Mである場合(ステップS2102:Yes)、匿名化データ利用者端末103は、匿名化全体ハッシュ値生成処理(ステップS2001)を終了し、ステップS2002に移行する。以上の処理により、匿名化データテーブル705のすべてのセル値に対するセルハッシュ値で構成される匿名化全体ハッシュ値H´が生成される。
【0141】
このように、匿名化データ利用者端末103は、匿名化データテーブル705のうち、匿名化されていない(セルハッシュ値ではない)属性値xijをセルハッシュ値にすることにより、匿名化データテーブル705のすべてのセルがセルハッシュ値になる。そして、匿名化データ利用者端末103は、匿名化データテーブル705内のすべてのセルハッシュ値から、匿名化全体ハッシュ値H´を生成することができる。したがって、どの属性値xijについて匿名化要求がされていても、匿名化データ利用者端末103は、匿名化データテーブル705から正当に匿名化全体ハッシュ値H´を生成することができる。
【0142】
以上説明したように、図13図16で説明した署名生成処理(ステップS1003)により機微データテーブル305から生成された全体ハッシュ値HTと、図17図19で説明した匿名化処理(ステップS1010)が施された匿名化データテーブル705に対して図20で示した署名検証処理(ステップS1012)により生成した匿名化全体ハッシュ値H´と、が一致すると、不正な匿名化処理(ステップS1010)が行われていないこと、つまり匿名化の正当性を検証することが可能となる。
【0143】
また、ハッシュ値生成において、元のセル値に対し乱数を連結してハッシュ化を行うことで、ハッシュ値から元データを特定するために必要な計算量が膨大となり、匿名化データから元データを復元されるリスクを低減することができる。
【0144】
さらに、元データに対し連結される乱数を、各属性の属性値ごとに1つ生成し、当該属性値が複数存在する場合には、当該属性値に対する乱数から新たな乱数を生成して利用することにより、属性値の出現パターンが少ない属性に対する乱数のデータサイズを削減することができる。
【0145】
署名生成者端末101は、安全性確保のため、全体ハッシュ値HTと署名鍵310とを用いて、署名値908を生成した(ステップS1304)が、他の方法により安全性が担保されていれば、署名生成者端末101は、全体ハッシュ値HTのまま匿名化データ提供サーバ102に送信してもよい。この場合、匿名化データ提供サーバ102は、全体ハッシュ値HTを匿名化データ利用者端末103に送信することになる。
【0146】
また、上述した実施例では、署名生成者端末101,匿名化データ提供サーバ102および匿名化データ利用者端末103により、匿名化システムを構成したが、匿名化データ提供サーバ102が、署名生成者端末101が実行する処理(ステップS1001~S1003)を実行してもよい。この場合、データ送信(ステップS1004)およびデータ取得(ステップS1005)が不要になる。
【0147】
また、上述した署名生成者端末101と、署名生成者端末101と通信可能な匿名化データ提供サーバ102と、匿名化データ提供サーバ102と通信可能な匿名化データ利用者端末103と、を有する匿名化システム100は、下記(1)~(7)のように構成することもできる。
【0148】
(1)匿名化システム100は、署名生成者端末101が、属性が異なる複数のデータ群(機微データテーブル305)の各々のデータの第1ハッシュ値(セルハッシュ値)に基づいて前記複数のデータ群の第2ハッシュ値(全体ハッシュ値)を生成する署名生成処理(ステップS1003)と、
匿名化データ提供サーバ102が、前記複数のデータ群と、前記署名生成処理(ステップS1003)によって生成された第2ハッシュ値と、を取得する第1取得処理(ステップS1005)と、
前記匿名化データ提供サーバ102が、前記複数のデータ群のうち匿名化データ利用者端末103からの匿名化要求により特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する匿名化処理(ステップS1010)と、
前記匿名化データ利用者端末103が、前記特定の属性のデータ群についての匿名化要求を前記匿名化データ提供サーバ102に送信した結果、前記匿名化データ提供サーバ102からの前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性のデータ群の除く残余の属性のデータ群と、前記第2ハッシュ値と、を取得する第2取得処理(ステップS1011)と、
前記匿名化データ利用者端末103が、前記第2取得処理(ステップS1011)によって取得された残余の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理(ステップS1011)によって取得された前記特定の属性のデータ群の各々のデータの第1ハッシュ値と、に基づいて、第3ハッシュ値を生成する匿名化全体ハッシュ値生成処理(ステップS2001)と、
前記匿名化データ利用者端末103が、前記第2取得処理(ステップS1011)によって取得された前記第2ハッシュ値と前記匿名化全体ハッシュ値生成処理(ステップS2001)によって生成された第3ハッシュ値(匿名化全体ハッシュ値)とが一致するか否かを判定することにより、前記匿名化処理(ステップS1010)の正当性を検証する検証処理(ステップS2003)と、を実行する。
【0149】
(2)上記(1)の匿名化システム100において、
前記署名生成処理(ステップS1003)では、前記署名生成者端末101は、前記属性に応じた加工ルールにしたがって前記データの第1ハッシュ値を生成して、前記データの第1ハッシュ値に基づいて前記複数のデータ群の第2ハッシュ値を生成し、
前記第1取得処理(ステップS1005)では、前記匿名化データ提供サーバ102は、前記加工ルールを前記署名生成者端末101から取得し、
前記匿名化処理(ステップS1010)では、前記匿名化データ提供サーバ102は、前記加工ルールにしたがって前記特定の属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第2取得処理(ステップS1011)では、前記匿名化データ利用者端末103は、前記加工ルールを前記匿名化データ提供サーバ102から取得し、
前記匿名化全体ハッシュ値生成処理(ステップS2001)では、前記匿名化データ利用者端末103は、前記加工ルールにしたがって前記残余の属性のデータ群の各々のデータの第1ハッシュ値を生成する。
【0150】
(3)上記(2)の匿名化システム100において、
前記署名生成者端末101は、前記データと乱数値との組み合わせである乱数データを前記データごとに保持する乱数データテーブルを有し、
前記署名生成処理(ステップS1003)では、前記署名生成者端末101は、前記加工ルールが前記データの仮名化である場合、前記仮名化が適用される仮名化対象属性のデータ群と当該データ群の各々のデータの乱数値とに基づいて前記仮名化対象属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第1取得処理(ステップS1005)では、前記匿名化データ提供サーバ102は、前記データごとの前記乱数データを前記署名生成者端末101から取得して前記乱数データテーブルを生成し、
前記匿名化処理(ステップS1010)では、前記匿名化データ提供サーバ102は、前記特定の属性が前記仮名化対象属性である場合、前記特定の属性のデータ群の各々のデータとその乱数値とに基づいて前記特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する。
【0151】
(4)上記(2)の匿名化システム100において、
前記署名生成者端末101は、前記データとその乱数値との組み合わせである乱数データを前記データごとに保持する乱数データテーブルを有し、
前記署名生成処理(ステップS1003)では、前記署名生成者端末101は、前記加工ルールが前記データの削除である場合、前記削除が適用される削除対象属性のデータ群の各々のデータと、その乱数値および固有な値(カウンタ値)と、に基づいて、前記削除対象属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第1取得処理(ステップS1005)では、前記匿名化データ提供サーバ102は、前記データごとの前記乱数データを前記署名生成者端末101から取得して前記乱数データテーブルを生成し、
前記匿名化処理(ステップS1010)では、前記匿名化データ提供サーバ102は、前記特定の属性が前記削除対象属性である場合、前記特定の属性のデータ群の各々のデータと、その乱数値および前記固有な値と、に基づいて、前記特定の属性のデータ群の各々のデータの第1ハッシュ値を生成する。
【0152】
(5)上記(4)の匿名化システム100において、
前記匿名化処理(ステップS1010)では、前記匿名化データ提供サーバ102は、前記匿名化要求が前記特定の属性の一部のデータについての匿名化要求である場合、前記特定の属性の一部のデータの第1ハッシュ値を生成し、
前記第2取得処理(ステップS1011)では、前記匿名化データ利用者端末103は、前記匿名化要求を前記匿名化データ提供サーバ102に送信した結果、前記匿名化データ提供サーバ102からの前記特定の属性の一部のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性の一部のデータの除く残余のデータ群と、前記第2ハッシュ値と、を取得し、前記特定の属性の一部のデータ以外の前記特定の属性の他のデータとその乱数値との組み合わせである検証用乱数データを取得して検証用乱数データテーブルを生成し、
前記匿名化全体ハッシュ値生成処理(ステップS2001)では、前記匿名化データ利用者端末103は、前記第2取得処理(ステップS1011)によって取得された残余のデータ群のうち、前記特定の属性以外の他の属性のデータ群については、当該他の属性のデータ群の各々のデータの第1ハッシュ値を生成し、前記第2取得処理(ステップS1011)によって取得された残余のデータ群のうち、前記特定の属性のデータ群については、前記検証用乱数データテーブルに存在するデータであれば、当該データとその乱数値および固有の値(カウンタ値)とに基づいて第1ハッシュ値を生成し、前記残余のデータ群の各々のデータの第1ハッシュ値と、前記特定の属性の一部のデータの第1ハッシュ値と、に基づいて、前記第3ハッシュ値を生成する。
【0153】
(6)上記(2)の匿名化システム100において、
前記署名生成者端末101は、前記データとその乱数値との組み合わせである乱数データを前記データごとに保持する乱数データテーブルと、一般化前後のデータの組み合わせを規定した一般化ルールテーブルと、を有し、
前記署名生成処理(ステップS1003)では、前記署名生成者端末101は、前記加工ルールが前記データの一般化である場合、前記一般化が適用される一般化対象属性のデータと、その乱数値および固有な値(カウンタ値)と、前記一般化ルールテーブルによる一般化前から一般化後への変換回数(一般化レベル)と、に基づいて、前記一般化対象属性のデータ群の各々のデータの第1ハッシュ値を生成し、
前記第1取得処理(ステップS1005)では、前記匿名化データ提供サーバ102は、前記データごとの前記乱数データを前記署名生成者端末101から取得して前記乱数データテーブルを生成し、前記一般化ルールテーブルの一般化前後のデータの組み合わせを取得して前記一般化ルールテーブルを生成し、
前記匿名化処理(ステップS1010)では、前記匿名化データ提供サーバ102は、前記特定の属性が前記一般化対象属性である場合、前記特定の属性のデータ群の各々のデータと、その乱数値および固有な値と、前記変換回数と、に基づいて、前記特定の属性のデータ群の各々の第1ハッシュ値を生成する。
【0154】
(7)上記(1)の匿名化システム100において、
前記匿名化全体ハッシュ値生成処理(ステップS2001)では、前記匿名化データ提供サーバ102は、前記匿名化要求された特定の属性の一部のデータの第1ハッシュ値を生成し、
前記第2取得処理(ステップS1011)では、前記匿名化データ利用者端末103は、前記特定の属性の一部のデータについての前記匿名化要求を前記匿名化データ提供サーバ102に送信した結果、前記匿名化データ提供サーバ102からの前記特定の属性の一部のデータの第1ハッシュ値と、前記複数のデータ群のうち前記特定の属性の一部のデータの除く残余のデータ群と、前記第2ハッシュ値と、を取得し、
前記匿名化全体ハッシュ値生成処理(ステップS2001)では、前記匿名化データ利用者端末103は、前記第2取得処理(ステップS1011)によって取得された残余のデータ群の各々のデータの第1ハッシュ値を生成し、前記残余の属性のデータ群の各々のデータの第1ハッシュ値と、前記第2取得処理(ステップS1011)によって取得された前記特定の属性の一部のデータの第1ハッシュ値と、に基づいて、前記第3ハッシュ値を生成する。
【0155】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例および同等の構成が含まれる。たとえば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
【0156】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、たとえば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【0157】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶デバイス202、又は、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)の記録媒体に格納することができる。
【0158】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【0159】
100 匿名化システム
101 署名生成者端末
102 匿名化データ提供サーバ
103 匿名化データ利用者端末
301 乱数データ生成部
302 署名生成部
303 ハッシュ値生成部
304 ハッシュ値集約部
305 機微データテーブル
306 乱数データテーブル
307 一般化ルールテーブル
308 属性加工ルール
309 署名値テーブル
310 署名鍵
317 署名検証処理部
705 匿名化データテーブル
706 検証用乱数データテーブル
707 検証用一般化ルールテーブル
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21