(57)【特許請求の範囲】
【請求項１】
データベースシステムのための匿名化方法であって、
検索要求に応答して、真のユーザカウントを定義するユーザＩＤのリストを受け取るステップと、
前記ユーザＩＤのリストから偽のユーザカウントを生成するステップと、
前記真のユーザカウントと、メモリに記憶された第１の閾値とを比較するステップと、
前記偽のユーザカウントと、メモリに記憶された第２の閾値とを比較するステップと、
前記真のユーザカウントが前記第１の閾値よりも大きく且つ前記偽のユーザカウントが前記第２の閾値よりも大きい場合に限り、前記偽のユーザカウントを出力するステップと、
を有することを特徴とするデータベースシステムのための匿名化方法。
【請求項２】
請求項１記載のデータベースシステムのための匿名化方法において、
前記偽のユーザカウントを出力しない場合に、前記偽のユーザカウントが小さすぎることを示すメッセージを出力するステップをさらに有するデータベースシステムのための匿名化方法。
【請求項３】
請求項１記載のデータベースシステムのための匿名化方法において、
前記第１の閾値は前記第２の閾値よりも小さいデータベースシステムのための匿名化方法。
【請求項４】
請求項１記載のデータベースシステムのための匿名化方法において、
前記真のユーザカウントと、検索要求されたユーザカウントから前記第１の閾値を減じたものとを比較するステップと、
前記真のユーザカウントが、検索要求されたユーザカウントから前記第１の閾値を減じたものよりも大きい場合に、前記偽のユーザカウントが大きすぎることを示すメッセージを出力するステップと、
をさらに有するデータベースシステムのための匿名化方法。
【請求項５】
請求項４記載のデータベースシステムのための匿名化方法において、
前記偽のユーザカウントと、検索要求されたユーザカウントから前記第２の閾値を減じたものとを比較するステップと、
前記偽のユーザカウントが、検索要求されたユーザカウントから前記第２の閾値を減じたものよりも大きい場合に、前記偽のユーザカウントが大きすぎることを示すメッセージを出力するステップと、
をさらに有するデータベースシステムのための匿名化方法。
【請求項６】
請求項１記載のデータベースシステムのための匿名化方法において、
前記真のユーザカウントの大きさに基づいて、前記真のユーザカウントに加えるノイズの量を増加させるステップをさらに有するデータベースシステムのための匿名化方法。
【請求項７】
請求項１記載のデータベースシステムのための匿名化方法において、
前記複数のステップは、データベースと通信可能に接続された匿名化モジュールによって実行されるデータベースシステムのための匿名化方法。
【請求項８】
請求項１記載のデータベースシステムのための匿名化方法において、
前記偽のユーザカウントを生成するステップは、前記真のユーザカウントに、前記真のユーザカウントに加えられ、且つ、既に提供されたユーザリストカウントに応じて変動する複数のノイズ値を含む階層化されたノイズを加えることを含んでいるデータベースシステムのための匿名化方法。
【請求項９】
データベースシステムのための匿名化方法であって、
検索要求に応答して、真のユーザカウントを定義するユーザＩＤのリストを受け取るステップと、
前記真のユーザカウントに、前記真のユーザカウントに加えられ、且つ、既に提供されたユーザリストカウントに応じて変動する複数のノイズ値を含む階層化されたノイズを加えることにより、偽のユーザカウントを生成するステップと、
前記偽のユーザカウントを出力するステップと、
を有することを特徴とするデータベースシステムのための匿名化方法。
【請求項１０】
請求項９記載のデータベースシステムのための匿名化方法において、
前記複数のステップは、データベースと通信可能に接続された匿名化モジュールによって実行されるデータベースシステムのための匿名化方法。
【請求項１１】
データベースシステムのための匿名化方法であって、
新しい検索要求に応答して、新しいユーザＩＤのリストを受け取るステップと、
前記新しいユーザＩＤのリストと、少なくとも１つの記憶されたリストとを比較して、前記新しいユーザＩＤのリストに存在し且つ前記記憶されたリストに存在しない新しいユーザカウントを決定するステップと、
前記新しいユーザカウントにノイズを加えることにより、ノイズ差分を生成するステップと、
前記ノイズ差分と、メモリに記憶された第１の閾値とを比較するステップと、
前記ノイズ差分が前記第１の閾値よりも小さい場合に、前記記憶されたリストに対応するノイズ値を出力するステップと、
前記ノイズ差分が前記第１の閾値よりも大きい場合に、前記新しいユーザＩＤのリストのための新しいノイズ値を出力するステップと、
を有することを特徴とするデータベースシステムのための匿名化方法。
【請求項１２】
請求項１１記載のデータベースシステムのための匿名化方法において、
複数のユーザＩＤのリストを受け取るステップと、
前記少なくとも１つの記憶されたリストとして、前記複数のユーザＩＤのリストの少なくとも１つを記憶するステップと、
をさらに有するデータベースシステムのための匿名化方法。
【請求項１３】
請求項１２記載のデータベースシステムのための匿名化方法において、
前記記憶されたリストの各々のためのノイズ値を生成するステップと、
前記記憶されたリストの各々のためのノイズ値を記憶するステップと、
をさらに有するデータベースシステムのための匿名化方法。
【請求項１４】
請求項１３記載のデータベースシステムのための匿名化方法において、
前記第１の閾値は、前記少なくとも１つの記憶されたリストのサイズに基づいて選択されるデータベースシステムのための匿名化方法。
【請求項１５】
請求項１３記載のデータベースシステムのための匿名化方法において、
前記ノイズ差分および前記少なくとも１つの記憶されたリストのためのノイズ値が所定値以内である場合に、前記新しいユーザＩＤのリストが前記少なくとも１つの記憶されたリストと比較されるデータベースシステムのための匿名化方法。
【請求項１６】
請求項１２記載のデータベースシステムのための匿名化方法において、
前記少なくとも１つの記憶されたリストは、圧縮されて記憶されたリストであり、
前記新しいユーザＩＤのリストを受け取った後に、その新しいユーザＩＤのリストを圧縮してこれを前記圧縮されて記憶されたリストと比較するステップをさらに有するデータベースシステムのための匿名化方法。
【請求項１７】
請求項１６記載のデータベースシステムのための匿名化方法において、
前記圧縮した新しいユーザＩＤのリストおよび前記圧縮されて記憶されたリストが適合したリストであるか否かを判定するステップと、
前記圧縮した新しいユーザＩＤのリストおよび前記圧縮されて記憶されたリストが適合したリストである場合に、前記新しいユーザＩＤのリストに対して、前記圧縮されて記憶されたリストに対応するノイズカウントを出力するステップと、
をさらに有するデータベースシステムのための匿名化方法。
【請求項１８】
請求項１７記載のデータベースシステムのための匿名化方法において、
前記圧縮されて記憶されたリストは単一の値をとるデータベースシステムのための匿名化方法。
【請求項１９】
請求項１１記載のデータベースシステムのための匿名化方法において、
前記複数のステップは、データベースと通信可能に接続された匿名化モジュールによって実行されるデータベースシステムのための匿名化方法。
【請求項２０】
請求項１９記載のデータベースシステムのための匿名化方法において、
前記少なくとも１つの記憶されたリストは、前記匿名化モジュールの内部に記憶されているデータベースシステムのための匿名化方法。
【請求項２１】
請求項１１記載のデータベースシステムのための匿名化方法において、
前記検索要求に応答して受け取られる新しいユーザＩＤのリストは複数あり、
ユーザが所有しているリストカウントを判定し、ユーザが所有しているリストカウントが閾リストカウントより多い場合には、その閾リストカウントを超えた分を削除するステップをさらに有するデータベースシステムのための匿名化方法。
【請求項２２】
データベースシステムのための匿名化方法であって、
複数の検索要求に応答して、各々が真のユーザカウントを定義するユーザのリストを含む複数の回答を受け取るステップと、
前記複数の回答に各ユーザが含まれる頻度を記憶するステップと、
前記複数の回答に頻繁に含まれるユーザの存在を判定するステップと、
前記複数の回答に頻繁に含まれるユーザの少なくとも一人を前記複数の回答の少なくとも１つから削除することにより、前記複数の回答の少なくとも１つのために前記真のユーザカウントを減じるステップと、
を有することを特徴とするデータベースシステムのための匿名化方法。
【請求項２３】
請求項２２記載のデータベースシステムのための匿名化方法において、
前記複数の回答に頻繁に含まれるユーザの少なくとも一人を削除するステップは、任意の数のユーザに対して実行されるデータベースシステムのための匿名化方法。
【請求項２４】
請求項２２記載のデータベースシステムのための匿名化方法において、
前記複数の回答に頻繁に含まれるユーザの少なくとも一人を削除するステップは、所定の閾カウントのユーザに対して実行されるデータベースシステムのための匿名化方法。
【請求項２５】
請求項２２記載のデータベースシステムのための匿名化方法において、
前記複数の回答に頻繁に含まれるユーザの存在を判定するステップは、前記複数の回答におけるユーザの存在可能性を平均的な存在可能性に関連して判定することを含んでいるデータベースシステムのための匿名化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１４年４月１０日に「匿名化されたユーザリストカウントのためのシステム及び方法」というタイトルで出願された米国仮出願第６１／９７７８５０号に基づく優先権の利益を主張するものであり、当該仮出願の全体が参照として含められている。
【０００２】
本発明は、データ解析のための統計的な方法に関連する。特定の実施形態は、データベースの検索要求から生成された数値応答の匿名化に関連する。
【背景技術】
【０００３】
アナリストは、ユーザの情報を含むデータベースから、個々のユーザの情報（個人情報）を知ることなく、統計的なデータを得るように要求されることがある。単純にデータベースから名前または識別番号を削除したのでは、個人のプライバシーの喪失を防止するのに効果的ではない。例えば、アナリストが、データベース上の個人（被害者）の生年月日、性別、郵便番号を知っていると、これらは個人（被害者）を特定するのに十分な情報となってしまうことがある。アナリストは、これらの情報（さらに詳細な情報）を特定するための検索要求を入力して回答を得ることで、個人（被害者）のプライバシーを喪失させることが可能になってしまう。例えば、「郵便番号が６７６６３であり且つ１９５７年１２月１４日に生まれた全ての男性の給料の合計は？」という検索要求を行って該当者が一人であれば、検索要求に対する回答が該当者の給料となる。
【０００４】
従来技術では、このような事態を防御するために、検索要求に対する回答に含まれる個人が少なくともＫ人いない限りは回答を出力しない、という単純な対策をとっていた。しかしこの対策は容易に打ち破られてしまうおそれが高い。例えば、アナリストは、「１）全ての男性の給料の合計は？」及び「２）郵便番号が６７６６３であり且つ１９５７年１２月１４日に生まれていない全ての男性の給料の合計は？」という検索要求を行うことができる。ここで、１）の検索要求は全ての男性を含むのに対し、２）の検索要求は個人（被害者）を除いた全ての男性を含んでいる。このため、１）の検索要求に対する回答から２）の検索要求に対する回答を減算することで、個人（被害者）の給料を算出することができる。
【０００５】
別の従来技術では、データベースのデータ自体を改変することにより問題を解決するようにアプローチしている。１つのアプローチは、データベース内の数値にノイズを加えることである。別のアプローチは、ユーザ間の特定フィールドを交換することである。さらに別のアプローチは、いわゆる「Ｋ匿名（K-anonymity）」と呼ばれるものであり、データ数値の正確性を除去することにより、データベースにおける各ユーザが同じ「他人（K-1 other users）」を見るようにしたものである。これらのアプローチ及びこれに類似のアプローチは、強い匿名性を提供できるという利点を持つ反面、データ自体の実用性を損ねてしまうという欠点を持つ。
【０００６】
さらに別の従来技術では、匿名化のために「差分プライバシー」というアプローチをとっている。この「差分プライバシー」では、検索要求（Query）１０に対する回答がユーザカウント１２の形態をとり、このユーザカウント１２にランダムノイズ１４が加えられる（図１参照）。「偽のユーザカウント（ノイズのあるユーザカウント）（noisy user count）」は、ユーザカウントにランダムノイズを加えることにより生成される数を意味している。アナリストからの検索要求に応答して、「差分プライバシー」を使用したデータベース１６は偽のユーザカウント１８を出力する。
【０００７】
「差分プライバシー」を使用したアプローチがどのように動作するかの一例を示す。検索要求が「郵便番号が６７６６３であり１９５７年１２月１４日に生まれ且つ給料が９万ドル〜１０万ドルの間の男性であるユーザの数は？」であるものと仮定する。個人（被害者）がそのような給料を貰っているか否かに応じて、真のユーザカウントが１または０となる。正規分布及び標準偏差としてランダムノイズが５だけ加えられるものとする。検索要求に対する回答は６または−８となる。するとアナリストは、個人（被害者）がそのような給料を貰っているか否かを知ることができない。一方、検索要求が「郵便番号が６７６６３であり且つ給料が９万ドル〜１０万ドルの間の男性の数は？」であるものと仮定する。例えば、真のユーザカウントが５１３であるとき、偽のユーザカウントは５１０または５１８となる。その結果、アナリストは、合理的で正確な回答を得ることができる。このようにして、差分プライバシーシステムは、プライバシーの保護と正確性の双方を提供することができる。
【０００８】
問題となるのは、アナリストが検索要求を繰り返すことが許容されているときである。最初の検索要求を仮定すると、偽のユーザカウントはそれぞれランダム分布において０または１の値をとる。アナリストは、偽のユーザカウントを用いて平均をとることにより、真のユーザカウントを得ることができる。一般的に、同一の検索要求に２回に亘って回答するのを拒否するだけでは、この問題を解決することは不可能である。その理由は、コンピュータを操作しているとき、意味的には同じであるが構文的には異なる検索要求を生成することが可能だからである。例えば、別の検索要求を「郵便番号が６７６６３であり１９５７年１２月４日の１０日後に生まれ且つ給料が９万ドル〜１０万ドルの間の男性であるユーザの数は？」とすることができる。この検索要求は、上述した検索要求とは構文的には異なっているが、ほぼ間違いなく同じユーザを識別するであろう。
【０００９】
この問題に対する一般的に知られた解決策は、アナリストが差分プライバシーデータベースに検索要求できる回数に制限を掛けることである。しかしこの解決策は、以下の理由により実用的ではない。例えば、データベースのコンテンツが絶えず変化しているような場合には、繰り返された同一の検索要求は、有用かつ重要なものとなり、同一の検索要求は、異なる時間に異なる結果（回答）を生み出すことになるからである。
【００１０】
したがって、匿名化のための方法およびシステムにおいて、データベースシステムの安全性を向上するとともに、正確な回答を得られるようにすることが要求されている。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の一態様は、匿名化モジュールを提供する。この匿名化モジュールは、その入力がユーザのリストであり、その出力が偽のユーザカウントである。ユーザのリストは、ゼロまたはそれより多くのユーザＩＤからなり、各ユーザＩＤは、単一のユーザ、または個別のプライバシーが守られるべき他の存在を識別することができるものである。偽のユーザカウントは、真のユーザカウント（ユーザのリストにおけるユーザカウント）に近似したものである。偽のユーザカウントは、真のユーザカウントに近い実数である。偽のユーザカウントは、単純に、真のユーザカウントがゼロに非常に近いこと、あるいは、真のユーザカウントがデータベースにおけるユーザの数に非常に近いことを示す。真のユーザカウントがゼロに非常に近いときには、偽のユーザカウントもこれに近い形で抑えられる。
【００１２】
一実施形態では、コンピュータシステムが提供される。このコンピュータシステムは、検索要求を受け取ってユーザＩＤのリストを生成するデータベースと、匿名化モジュールとを有する。匿名化モジュールは、ユーザＩＤのリストを受け取って、そのリストから偽のユーザカウントを生成する。偽のユーザカウントは、繰り返しの検索要求によるノイズの打ち消しを妨害するような方法で生成される。
【００１３】
本発明のこれらの又は他の目的、特徴及び利点は、添付図面を参照した以下の詳細な説明によって明らかになる。
【図面の簡単な説明】
【００１４】
【図１】差分プライバシーを使用した従来の匿名化データベースを示す概略図である。
【図２】本発明の一実施形態による改良された匿名化システムを示す概略図である。
【図３】図２に示すシステムにより実行される改良された匿名化方法を示す概略図である。
【図４】図２に示すシステムにより実行される別の改良された匿名化方法を示す概略図である。
【図５】図２に示すシステムにより実行されるさらに別の改良された匿名化方法を示す概略図である。
【図６】本発明の一実施形態による図２のシステムのブルームフィルタを示す概略図である。
【図７】本発明の一実施形態による図２のシステムのコンデンサーモジュールを示す概略図である。
【図８】本発明の一実施形態による図２のシステムの匿名化モジュールと匿名化方法を示す概略図である。
【図９】本発明の別の実施形態による図２のシステムの匿名化モジュールと匿名化方法を示す概略図である。
【発明を実施するための形態】
【００１５】
図２を参照して、本発明の一実施形態による匿名化モジュール２０を説明する。匿名化モジュール２０には、ユーザのリスト２２を含む生回答（raw answer）２１が入力される。匿名化モジュール２０からは、偽のユーザカウント（ノイズのあるユーザカウント、外乱のあるユーザカウント）（noisy user count）２４が出力される。リスト２２は、ゼロまたはそれより多いユーザＩＤのセットからなり、各ユーザＩＤは、単一のユーザ、または個別のプライバシーが守られるべき他の存在を識別することができるものである。偽のユーザカウント２４は、リスト２２中のユーザカウントである真のユーザカウント（true user count）に近似したものである。真のユーザカウントは、モジュール２０の内部におけるもの（モジュール２０から出力される前のもの）である。偽のユーザカウントは、真のユーザカウントに近い実数である。偽のユーザカウントは、単純に、真のユーザカウントがゼロに非常に近いこと、あるいは、真のユーザカウントがデータベースにおけるユーザの総数に非常に近いことを示す。真のユーザカウントがゼロに非常に近いときには、偽のユーザカウントもこれに近い形で抑えられる。
【００１６】
匿名化モジュール２０は、コンピュータシステム（演算システム）２５に実装されている。コンピュータシステム２５は、１つ以上のプロセッサとデータ記憶装置を有している。このプロセッサとデータ記憶装置は、コンピュータシステム２５と物理的に接続（例えば有線接続）され、または、インターネットのようなワイドエリアネットワーク（例えばクラウドシステム）を介して物理的に切り離して接続（例えば無線接続）されている。
【００１７】
匿名化モジュール２０には、検索要求ＩＤ（Query ID）２６と、各リストのためのリストＩＤ２８とが入力される。検索要求ＩＤ２６は、全ての検索要求ＩＤの中で特有の（識別可能な）文字列または数字から構成されている。リストＩＤ２８は、全てのリストＩＤまたは同一の検索要求ＩＤに対応する全てのリストＩＤの中で特有の（識別可能な）文字列または数字から構成されている。それぞれの検索要求のために、複数のリストとリストＩＤが設定されている。
【００１８】
匿名化モジュール２０は、コンピュータシステム２５に実装され又はコンピュータシステム２５に通信可能に接続されたデータベース３０と協働する。データベース３０は、検索要求１０とそれに付加された検索要求ＩＤ２６を受け付ける。検索要求１０に応答して、データベース３０は、匿名化モジュール２０に対して生回答２１を送る。この生回答２１は、ユーザのリスト２２、選択的な検索要求ＩＤ２６およびリストＩＤ２８を含んでいる。匿名化モジュール２０は、データベース３０と、検索要求１０を出したアナリストとを仲介して、データベース３０から出力された生回答２１を受け取ってこれを改変する。
【００１９】
データベース３０は、インデックスを生成するための要求を受け付ける。このインデックスは、将来的に検索要求を入力する可能性のあるユーザのリストである。この要求に応じて、データベース３０は、ユーザのリスト２２とインデックスＩＤ２８を含んだインデックスを生成する。このインデックス（ユーザのリスト）とインデックスＩＤは、匿名化モジュール２０に供給される。匿名化モジュール２０は、供給されたインデックスとインデックスＩＤを記憶する。
【００２０】
匿名化モジュール２０に供給される回答は、データベース３０に検索要求されたユーザの総数“Ｎｕ”を含んでいる。ここで、例えば、データベース３０が１０００のユーザを含んでいるものと仮定する。また検索要求１０が女性のユーザの数を検索要求するものだとする。女性のユーザの数が４５０である場合、ユーザのリストはこの４５０の女性のユーザＩＤを含んでおり、検索要求されたユーザの総数“Ｎｕ”は１０００である。
【００２１】
匿名化モジュール２０に供給される生回答２１は、“Ｎｕ”の代わりに、インデックスＩＤを含んでいてもよい。匿名化モジュール２０は、記憶されたインデックスにおけるユーザの数として“Ｎｕ”を演算することもできる。
【００２２】
インデックスを受け取ると、匿名化モジュール２０は、ユーザのための複製または削除のタグを付けることで、当該インデックスに外乱を加える。匿名化モジュール２０は、幾つかの分布の中から乱数を選択することにより、タグ付けされたユーザカウントを決定する。幾つかの分布とは、例えば、特定の最大値と最小値を含んだ一様分布、または、特定の標準偏差を含んだ正規分布とすることができる。勿論、幾つかの分布として、他の分布を用いることも可能である。分布とは、ゼロまたはその他の値を意味している。乱数が正の値をとる場合、ユーザカウントは複製のためにタグ付けされる。乱数が負の値をとる場合、ユーザカウントは削除のためにタグ付けされる。タグ付けされるユーザは、インデックスに含まれる全ユーザの中からランダムに選択される。
【００２３】
タグ付けされるユーザカウントは、インデックスに含まれるユーザカウントに応じて変動する。インデックスに含まれるユーザカウントが多いほど、タグ付けされるユーザカウントも多くなる。このタグ付けは、分布の範囲が広くなることにより実行される。例えば、一様分布の場合、最小値と最大値（の絶対値）が大きくなり、正規分布の場合、標準偏差が大きくなる。
【００２４】
匿名化モジュール２０は、インデックスＩＤと関連付けられた生回答２１を受け取ったとき、インデックスのためにタグ付けされたユーザによる真のカウントを改変する。生回答に存在する複製のタグ付けがなされた各ユーザのために、真のカウントが１つずつインクリメントされる。生回答に存在する削除のタグ付けがなされた各ユーザのために、真のカウントが１つずつデクリメントされる。他のことを特別に示さない限り（断りがない限り）、「真のカウント」という用語は、改変された真のカウントを含む概念で使用する。
【００２５】
匿名化モジュール２０は、ユーザのリスト２２におけるモジュールの真のカウントから乱数を加算または減算することにより、生回答２１を改変する。この乱数は、幾つかの分布から選択される。この幾つかの分布は、例えば、特定の最大値と最小値を含んだ一様分布、または、特定の標準偏差を含んだ正規分布とすることができる。勿論、幾つかの分布として、他の分布を用いることも可能である。分布とは、ゼロまたはその他の値を意味している。「ノイズを加える」という用語は、真のカウントを改変するためのプロセスを含む概念で使用する。
【００２６】
真のユーザカウントが小さい閾値Ｋ１を下回ると、匿名化モジュール２０は、偽のユーザカウント２４の出力に代えて、回答を静かに抑制する（silently suppress）。ここで「静かに抑制する」とは、回答が抑制されたということを何ら示していないリストに対応する出力を定義しないことを意味する。ここでは、「静か（silent）」または「静かに（silently）」という用語は、何らの通知をすることなくアクションを行うことを意味する。代替的には、匿名化モジュール２０は、偽のカウントが報告するには小さすぎる旨のメッセージを出力することができる。
【００２７】
偽のユーザカウント２４が閾値Ｋ２を下回ると、匿名化モジュール２０は、偽のユーザカウント２４の出力に代えて、偽のカウントが報告するには小さすぎる旨のメッセージを出力する。ここで閾値Ｋ２は、閾値Ｋ１よりも大きく、しかし閾値Ｋ１と同様の小さい値である。代替的には、匿名化モジュール２０は、偽のカウントを静かに抑制することができる。
【００２８】
真のカウントが、検索要求されたユーザの数である“Ｎｕ”から閾値Ｋ１を差し引いた値よりも大きいとき、匿名化モジュール２０は、偽のユーザカウント２４に代えて、偽のカウントが報告するには大きすぎる旨のメッセージを出力する。偽のユーザカウントが、検索要求されたユーザの数である“Ｎｕ”から閾値Ｋ２を差し引いた値よりも大きいとき、匿名化モジュール２０は、偽のユーザカウント２４に代えて、偽のカウントが報告するには大きすぎる旨のメッセージを出力する。“Ｎｕ”は、データベースから供給された値であり、または、記憶されたインデックス中のユーザ番号に基づいて匿名化モジュール２０が演算した値である。
【００２９】
“Ｎｕ”が、記憶されたインデックス中のユーザ番号に基づいている場合、匿名化モジュール２０は、代替的に、偽のカウントＮＣｉを出力する。“Ｎｕ”から閾値Ｋ１を差し引いた値または“Ｎｕ”から閾値Ｋ２を差し引いた値は、与えられたインデックスよりも大きくすることができる（上述の「大きすぎる旨の報告」の代わりとなる）。偽のカウントＮＣｉはインデックスと対応付けて記憶される。これに続き、“Ｎｕ”から閾値Ｋ１を差し引いた値または“Ｎｕ”から閾値Ｋ２を差し引いた値が与えられたインデックスより大きい場合には、記憶された偽のカウントＮＣｉが出力される。
【００３０】
真のカウントに加えられるノイズの量は、真のカウントの絶対値に応じて変動する。真のカウントが大きくなるほどに、加えられるノイズが大きくなる。また分布の範囲が広くなるほどに、加えられるノイズが大きくなる。例えば、一様分布であれば、ノイズの最小値と最大値（の絶対値）が大きくなり、正規分布であれば、ノイズの標準偏差が大きくなる。
【００３１】
例えば、加えられるノイズの量は、相対的な誤り限界（上限と下限の誤差）に関連する。ここで、誤り限界は、真のカウントの割合の観点から特定される。例えば、誤り限界は、高い確率で、真のカウントの１％以内となるように特定される。一様分布の場合には、真のカウントの±１％以内となるように最大値と最小値が設定される。正規分布の場合には、真のカウントの±０．５％となるように標準偏差が設定される。誤り限界は、ユーザ及びその他の情報のリストと一緒に匿名化モジュール２０に伝達される。誤り限界は、匿名化モジュール２０の内部に予め設定および保持されている。
【００３２】
匿名化モジュール２０は、偽のカウント２４に代えて、当該偽のカウントが収まる数値範囲を出力する。例えば、偽のカウント２４が“５１３”の場合、匿名化モジュール２０は、“５１０〜５２０”の数値範囲を出力する。この有効な数値範囲は予め設定および保持されている。偽のカウントのサイズが大きくなるに連れて、この数値範囲のサイズも大きくなる。
【００３３】
本発明の一実施形態によれば、匿名化モジュール２０は、真のカウントに対して、幾つかの異なるノイズ値を加える。この異なるノイズ値は、異なる回答に合わせて調整される。例えば、匿名化モジュール２０は、真のカウントの各々に対して、４つのノイズ値ＮＶ１、ＮＶ２、ＮＶ３、ＮＶ４を加える。例えば、ノイズ値ＮＶ１はユーザの各リストの後に変化し、ノイズ値ＮＶ２は１０個のリスト毎に変化し、ノイズ値ＮＶ３は１００個のリスト毎に変化し、ノイズ値ＮＶ４は１０００個のリスト毎に変化する。これらのノイズは「階層化されたノイズ」である。
【００３４】
階層化されたノイズは、アナリストにとって真のカウントを決定することを困難にさせる。これは、検索要求を繰り返すことおよび偽のカウントの平均をとることによる。すなわち、長期間のノイズ値（例えばＮＶ３やＮＶ４）が、多くの連続する偽の回答の平均を歪めて非対称にするからである。これを克服するために、アナリストは、長期間のインターバルでの検索要求（例えば１０００個の検索要求）を繰り返さなければならなくなる。このため、多くの場合、検索要求に掛かるコストが大きくなり、ノイズを削除するためのコストも大きくなってしまう。
【００３５】
与えられた検索要求は、複数のユーザリストを生成することがある。例えば、異なる給料範囲に亘るユーザのヒストグラムを生成するために、検索要求は、給料範囲毎に１つのリストを生成することができる。幾つかの検索要求は、数百または数千のリストを生成することができる。１つ又は複数のリストだけを所有するユーザもあり得る。例えば、各ユーザが同じ給料を貰っている場合、給料のヒストグラムの検索要求は１つだけとなる。
【００３６】
匿名化モジュール２０は、各ユーザが所有する同一の検索要求のリスト数を最大数Ｌ１までに制限する。ユーザがＬ１より多くのリストを所有している場合、匿名化モジュール２０は、Ｌ１を超えた分のリストを削除する。匿名化モジュール２０は、ユーザが存在する全てのリストの中からＬ１のリストをランダムに選択する。このようにリスト数を制限することで、リストのセットからユーザが理論的に知ることができる情報量を制限することができる。
【００３７】
Ｌ１の値はリストに従って匿名化モジュール２０に伝送される。匿名化モジュール２０には、Ｌ１が取り得る最大値Ｌ１ｍａｘが予め設定および保持されている。伝送されたＬ１の値が最大値Ｌ１ｍａｘを超えているとき、匿名化モジュール２０は、特別な認証を与えられない限り、偽のカウント２４の出力を拒むように構成されている。この特別な認証は、例えば、検索要求ＩＤ２６とＬ１の値を踏まえて、認証された第三者の暗号化された署名により実行される。
【００３８】
図３に示すように、匿名化モジュール２０は、リスト２２の一部または全部を記憶（１００）する。匿名化モジュール２０が記憶（１００）するリスト２２は、各リスト２２に対応する検索要求ＩＤ２６、リストＩＤ２８および偽のカウント２４を含んでいる。リスト２２は、コンピュータシステム２５の内部の記憶デバイスに記憶される。この記憶デバイスは、匿名化モジュール２０と物理的に接続して配置され（同じコンピュータであれば同じ構築回路）、または、匿名化モジュール２０と物理的に切り離して配置されている（匿名化モジュール２０とワイドエリアネットワークを介して接続されている）。匿名化モジュール２０は、新しいリスト２２ｎを受け取ると、その新しいリスト２２ｎを記憶されたリスト２２の各々と比較する（１０２）。新しいリスト２２ｎと記憶されたリスト２２の比較に際して、匿名化モジュール２０は、１つのリストに存在しているが他のリストに存在していないようなユーザ数をカウントする。ここで言う「１つのリスト」と「他のリスト」は、新しいリスト２２ｎと記憶されたリスト２２の一方と他方に対応する。匿名化モジュール２０は、そのカウントしたユーザ数（ユーザカウント）にノイズを加える（１０４）。これにより、各比較におけるノイズ差分（noisy difference）Ｄｎが生成される。
【００３９】
記憶された特定のリスト２２ｉのためのノイズ差分Ｄｎが、小さい閾値Ｋ３を下回ると（新しいリスト２２ｎと記憶された特定のリスト２２ｉが“マッチング”リストとなる）、匿名化モジュール２０は、記憶された特定のリスト２２ｉの偽のカウント２４ｉを出力する（１０８）。その際、同一または類似の検索要求を繰り返したアナリストは、以前の検索要求に対するものと同じ回答を得ることになり、ノイズを解消することはできない。しかし、匿名化モジュール２０は、閾値Ｋ３より小さいノイズ差分Ｄｎの値を見つけることなく記憶されたリスト２２を破棄するときには、新しいリスト２２ｎの偽のカウント２４ｎを出力する（１０６）。これにより、アナリストは、新しい検索要求に対する回答が可能になる。リストのサイズが大きくなるに連れて、閾値Ｋ３も大きくなる。
【００４０】
図４は最適な先行手順の一例を示している。同図では、新しいリスト２２ｎは、記憶されたリスト２２とだけ比較され、新しいリスト２２ｎの偽のカウント２４ｎは、記憶されたリスト２２の偽のカウント４２からの閾値Ｋ４の範囲内となる。閾値Ｋ４は、比較されたマッチングリストが高確率で一致するように設定される。
【００４１】
図５に示すように、匿名化モジュール２０は、全部のリスト２２を記憶することに加えて、各リストの圧縮バージョン３４を記憶する。圧縮されたリスト３４の性質は、２つの圧縮リストを比較したときこれらが高確率で一致する（同一または略同一）というものである。匿名化モジュール２０は、新しいリスト２２ｎを受け取ると、まずこの新しいリスト２２ｎを圧縮し（１１０）、次いでこの新しい圧縮リスト３４ｎと記憶された圧縮リスト３４を比較する（１１２）。新しい圧縮リスト３４ｎと記憶された圧縮リスト３４がマッチングリストであると判定されると、匿名化モジュール２０は、新しいリスト２２ｎのために、記憶されたリスト２２ｉ（圧縮リスト３４ｉに対応してこれとマッチングしている）のこれまでに出力した偽のカウント２４ｉを出力する。
【００４２】
一実施形態では、圧縮されたリストは、正確なユーザリストに基づいた唯一の値をとる。別言すると、与えられたユーザリストは、唯一の値を生成し、他のユーザリストは、他の異なる値を生成する。この値をユーザリストハッシュと呼ぶ。２つのユーザリストハッシュを比較することにより、２つのリストが同一であるか異なっているかが判定される。この場合、２つのリストが完全に同一であればこれらが一致し、２つのリストが略同一であれば（少しでも異なっていれば）これらが一致しない。ユーザリストハッシュは、ユーザＩＤを番号順に配置することにより生成され、結果的にリストに変換される。代替的には、ユーザリストハッシュは、各ユーザＩＤを個別に変換することにより生成され、そのハッシュの総和が得られる。本発明の広範な範囲から逸脱することなく他の方法を用いることも可能である。
【００４３】
図５に示す一実施形態では、ブルームフィルタを通じてユーザＩＤ２３ｎ１．．ｎの全てを処理することにより、新しいリスト２２ｎが圧縮される（１１０）。ブルームフィルタは、記憶された圧縮リスト３４ｉと同一の新しい圧縮リスト３４ｎを出力するとき、２つのリスト２２ｎと２２ｉが高確率で同一となるように構成されている。さらにブルームフィルタは、記憶された圧縮リスト３４ｉと“Ｋ５”またはこれより少ないビットだけ異なる圧縮リスト３４ｎを出力する。ここで、“Ｋ５”は小さい値であり、２つの対応するリスト２２ｎ、２２ｉは高確率で略同一である。“Ｋ５”の値は、リスト２２のサイズ、または、ブルームフィルタにより使用されるハッシュナンバーによって選択される。
【００４４】
代替的には、圧縮リスト３４は、リスト２２から選択されたユーザのみによって得ることができる。リスト２２からユーザを選択する方法は、次の２つの要件を満足したものとすることができる。１つ目の要件は、２つのマッチングしたリストのために選択したユーザを同一または略同一とすることである。２つ目の要件は、アナリストにとって、どのユーザが選択されるかを予測するのを不可能とすることである。
【００４５】
上記要件を満足するために、図６に示すように、リスト圧縮モジュール３６が乱数Ｒを生成し又は乱数Ｒの供給を受ける。圧縮リストが生成される度に、リスト圧縮モジュール３６は、各ユーザＩＤ２３ｎ１．．．ｎのために、完全なリスト２２を生成する（１１４）。この完全なリストは、乱数ＲによるユーザＩＤに連結されたハッシュ１１６ｎ１．．．ｎに対応している。
【００４６】
リスト圧縮モジュール３６は、ユーザＩＤハッシュ１１６の最後のビットＢ１（与えられた値、例えばゼロ）に対応するユーザを選択する（１１８）。“Ｂ１”の値は、リスト２２のサイズに応じて変動する。リスト圧縮モジュール３６は、ハッシュ値を具体的に要求し、且つ、最初のＫ７のユーザを選択することができる。本発明の広範な範囲から逸脱することなく他の方法を用いることも可能である。結果物としてのユーザの圧縮リストはそのまま記憶される。結果物としてのユーザの圧縮リストは、ブルームフィルタ１１９を通過させた上で、圧縮リストとして記憶することができる。
【００４７】
代替的には、図７に示すように、リスト圧縮モジュール３６によって圧縮リストを生成することができる。フィルタ３６は、新しいリスト２２ｎからカウントのセットＣ０〜Ｃｎを生成する（１２０）。Ｃ０は、各ユーザＩＤの最後のビットＢ２が“０”となるユーザＩＤ２３のカウントである。Ｃ１は、各ユーザＩＤの最後のビットＢ２が“１”となるユーザＩＤ２３のカウントである。Ｃ２は、各ユーザＩＤの最後のビットＢ２が“２”となるユーザＩＤ２３のカウントである。これらのカウントのセットが圧縮リスト３４を構成する。２つのリストは、これに対応するカウント３４のセットが同一であれば、高確率で同一となる。２つのリストは、これに対応するカウント３４のセットが略同一であれば、高確率で略同一となる。本発明の広範な範囲から逸脱することなく他のリスト圧縮方法を用いることも可能である。
【００４８】
新しいユーザリスト２２ｎと記憶された特定のリスト２２ｉがマッチングしているとき（圧縮リストの全部または一部を使用し且つ正確またはこれに近いマッチングを行う）、記憶された特定のリスト２２ｉの偽のカウント２４ｉを報告することなく（その代わりに）、匿名化モジュール２０は、新しい偽のカウントを報告する。この新しい偽のカウントは、それまでの偽のカウントより広い範囲のものであり、例えば、より大きな最大値と最小値を持っており、または、より大きな標準偏差を持っている。記憶された特定のユーザリスト２２ｉとマッチする新しいユーザリストに関しては、新しいノイズカウントの各々のノイズ量が増加する。そのノイズ増加量は、アナリストが真のカウントを推測することはまず出来ない程度のものである。
【００４９】
一実施形態では、新しいマッチングリストの各々に関してノイズが少しだけ増量する。
【００５０】
代替的には、新しいマッチングリストが相当数だけ生成された後にはノイズが大きく増量する。例えば、Ｍのマッチングが行われる度に、ノイズのレベルが増量する。例えば、初期のノイズレベルが標準偏差のガウス分布であり、ＳＤ＝５、Ｍ＝４５であると仮定する。最初の４４のマッチングでは、新しい偽のカウントがＳＤ＝５と報告される。４５回目のマッチングでは、ノイズレベルが例えばＳＤ＝７まで増加する。４４のマッチングに続く偽のカウントはＳＤ＝７となっている。９０回目のマッチングでは、ＳＤ＝９まで増加している。
【００５１】
代替的には、階層化されたノイズを使用してノイズを増加させることができる。例えば、記憶されたリストのための最初のＭのマッチングは、単一の層のノイズを含むことができる。次のＭ２のマッチングは、Ｍのマッチングごとに２層目のノイズ値が変化する２つの層を含むことができる。次のＭ３のマッチングは、３つの層を含むことができる。これに続くマッチングに対してノイズを加える方法は、他の種々の方法を使用することができる。
【００５２】
ここで説明した方法によれば、アナリストは、リストに加えられたノイズを掻い潜るのが非常に難しくなる。リストに加えられたノイズを掻い潜るためには、アナリストは、数多くの検索要求を繰り返し行わなければならない。これらの検索要求の各々は、アナリストが真のカウントを推測するためのユーザの未知のサブセット、及び、アナリストが既に知っているカウントのユーザの既知のサブセットを含むリストを生成する。ユーザの既知のサブセットは、１）検索要求から検索要求へと流れる異なるユーザの数を含んでおり、２）リストがマッチングしていることを知ることが出来ない程に十分に大きい（これによりノイズを打ち消すための方法が無効化される）。
【００５３】
これら一連の検索要求を行うことにより、アナリストは、偽のカウントのセットを得ることができる。この偽のカウントにおいては、未知のサブセットが複数のリストを通じて真のカウントに対して作用する。平均をとることにより、また既知のサブセットの平均化された真のカウントを差し引くことにより、アナリストは、未知のサブセットの真のカウントを推測することができる。
【００５４】
これらの攻撃から守るべく、図８に示すように、匿名化モジュール２０は、複数のリスト２２を通じて繰り返されるサブセット３８が同一または略同一であるか否かを確認（１２２）する。繰り返されるサブセット３８は、Ｎ以上のリストに共通する少なくともＫ８のユーザのリストとして確認される。繰り返されるサブセット３８が一旦確認された後は、匿名化モジュール２０は、サブセット３８のために一時的な偽のカウントＮＣｒｓを生成１２４するとともに、繰り返されるサブセット３８、偽のカウントＮＣｒｓ、真のカウントＣｒｓを記憶（１１０）する。
【００５５】
繰り返されるサブセット３８の確認が終了すると、図３、図４を参照して上述したように、新しいリスト２２ｎと記憶されたリスト２２がマッチするかどうか比較され、マッチングリスト２２ｉが見つかればこれに対応する記憶された偽のカウント２４ｉが出力される。これに対し、マッチングリスト２２ｉが見つからなかったときは、図９に示すように、匿名化モジュール２０は、新しいリスト２２ｎの各々と、繰り返されるサブセット３８とを比較する（１２６）。サブセット３８中に新しいリスト２２が少なくとも（Ｃｒｓ−Ｋ９）のユーザのリストを含んでいるとき（Ｃｒｓは繰り返されるサブセット３８中のユーザカウントである）、新しいリスト２２は繰り返されるサブセット３８の１つとマッチすると言える。Ｋ９の値は小さい値に設定されておりＣｒｓの値と一緒に変動する。
【００５６】
新しいリスト２２ｎにマッチする最も大きい繰り返されるサブセット３８ｉ（これは空集合かもしれない）が見つかった後は、匿名化モジュール２０は、新しいリスト２２ｎに存在し且つ最も大きい繰り返されるサブセット３８ｉに存在しないユーザ数に基づいて、偽のカウントＮＣｎｅｗを生成する（１２８）。匿名化モジュール２０は、新しいリストの偽のカウント２４ｎを「ＮＣｒｓｉ＋ＮＣｎｅｗ」で算出してこれを出力及び記憶する（１００）。このようにして、アナリストは、繰り返されるサブセット３８ｉに対応付けられたノイズを平均化することが出来なくなる。
【００５７】
匿名化モジュール２０は、各ユーザＩＤに対してそのユーザが回答に現れる（含まれる）頻度を記憶する。例えば匿名化モジュール２０は、１００の回答に対して２８のユーザが現れること、又は、１０００の回答に対して１４７のユーザが現れることを記憶する。非常に高い頻度で回答に現れるユーザは、ハイタッチユーザ（high-touch users）と呼ばれる。匿名化モジュール２０は、回答を受け取ると、その回答からハイタッチユーザを削除する。別言すると、削除されたユーザ数によって、真のカウントが減らされる。匿名化モジュール２０は、ハイタッチユーザを削除するための乱数を選択する。匿名化モジュール２０は最大でＫ１０のハイタッチユーザを削除することができる。削除されるユーザの数は、回答の真のカウントに応じて増加する。
【００５８】
ユーザがハイタッチユーザか否かを判定するために、匿名化モジュール２０は、ユーザが現れる頻度の確率をその平均と比較したものを演算する。例えば、平均的に１００の回答に対して３のユーザが現れるときと、１００の回答に対して５のユーザが現れるときがある。１００の回答に対して１０のユーザが現れる確率は、二項分布（０．００９）によれば３％と演算することができる。匿名化モジュール２０は、その出現頻度の確率が非常に小さな値であるＫ１１を下回ったときに、そのユーザをハイタッチユーザとして定義する。例えば、Ｋ１１は０．００００１（１／１０００００）に設定することができる。
【００５９】
平均的な出現頻度は、全てのユーザ、インデックス中の全てのユーザ、又は、回答中の全てのユーザについて演算される。出現頻度は、全ての異なるスケールに亘って演算される。例えば、最後の１００の回答、最後の１０００の回答、最後の１００００の回答について、出現頻度が演算される。
【００６０】
ここまで、匿名化モジュール２０を特定の入力と出力が行われる明確なモジュールとして説明したが、当業者であれば、匿名化モジュール２０は、データベース内に実装されたソフトウェアとして実装できることが容易に理解できるであろう。
【００６１】
一実施形態によれば、データベースシステムのための匿名化方法が提供される。この方法は、検索要求に応答して、真のユーザカウントを定義するユーザＩＤのリストを受け取るステップと、前記ユーザＩＤのリストから偽のユーザカウントを生成するステップと、前記真のユーザカウントと、メモリに記憶された第１の閾値とを比較するステップと、前記偽のユーザカウントと、メモリに記憶された第２の閾値とを比較するステップと、前記真のユーザカウントが前記第１の閾値よりも大きく且つ前記偽のユーザカウントが前記第２の閾値よりも大きい場合に限り、前記偽のユーザカウントを出力するステップと、を有することができる。
【００６２】
一実施形態によれば、前記偽のユーザカウントを出力しない場合に、前記偽のユーザカウントが小さすぎることを示すメッセージを出力するステップをさらに有することができる。
【００６３】
一実施形態によれば、前記第１の閾値は前記第２の閾値よりも小さくすることができる。
【００６４】
一実施形態によれば、前記真のユーザカウントと、前記第１の閾値よりも小さい検索要求されたユーザカウントとを比較するステップと、前記真のユーザカウントが、前記第１の閾値よりも小さい検索要求されたユーザカウントよりも大きい場合に、前記偽のユーザカウントが大きすぎることを示すメッセージを出力するステップと、をさらに有することができる。
【００６５】
一実施形態によれば、前記偽のユーザカウントと、前記第２の閾値よりも小さい検索要求されたユーザカウントとを比較するステップと、前記偽のユーザカウントが、前記第２の閾値よりも小さい検索要求されたユーザカウントよりも大きい場合に、前記偽のユーザカウントが大きすぎることを示すメッセージを出力するステップと、をさらに有することができる。
【００６６】
一実施形態によれば、前記真のユーザカウントの大きさに基づいて、前記真のユーザカウントに加えるノイズの量を増加させるステップをさらに有することができる。
【００６７】
一実施形態によれば、前記複数のステップは、データベースと通信可能に接続された匿名化モジュールによって実行することができる。
【００６８】
一実施形態によれば、前記偽のユーザカウントを生成するステップは、前記真のユーザカウントに、前記真のユーザカウントに加えられ、且つ、既に提供されたユーザリストカウントに応じて変動する複数のノイズ値を含む階層化されたノイズを加えることを含むことができる。
【００６９】
一実施形態によれば、データベースシステムのための匿名化方法が提供される。この方法は、検索要求に応答して、真のユーザカウントを定義するユーザＩＤのリストを受け取るステップと、前記真のユーザカウントに、前記真のユーザカウントに加えられ、且つ、既に提供されたユーザリストカウントに応じて変動する複数のノイズ値を含む階層化されたノイズを加えることにより、偽のユーザカウントを生成するステップと、前記偽のユーザカウントを出力するステップと、を有することができる。
【００７０】
一実施形態によれば、前記複数のステップは、データベースと通信可能に接続された匿名化モジュールによって実行することができる。
【００７１】
一実施形態によれば、データベースシステムのための匿名化方法が提供される。この方法は、新しい検索要求に応答して、新しいユーザＩＤのリストを受け取るステップと、前記新しいユーザＩＤのリストと、少なくとも１つの記憶されたリストとを比較して、前記新しいユーザＩＤのリストに存在し且つ前記記憶されたリストに存在しない新しいユーザカウントを決定するステップと、前記新しいユーザカウントにノイズを加えることにより、ノイズ差分（ノイズ相違値）を生成するステップと、前記ノイズ差分と、メモリに記憶された第１の閾値とを比較するステップと、前記ノイズ差分が前記第１の閾値よりも小さい場合に、前記記憶されたリストに対応するノイズ値を出力するステップと、前記ノイズ差分が前記第１の閾値よりも大きい場合に、前記新しいユーザＩＤのリストのための新しいノイズ値を出力するステップと、を有することができる。
【００７２】
一実施形態によれば、複数のユーザＩＤのリストを受け取るステップと、前記少なくとも１つの記憶されたリストとして、前記複数のユーザＩＤのリストの少なくとも１つを記憶するステップと、をさらに有することができる。
【００７３】
一実施形態によれば、前記記憶されたリストの各々のためのノイズ値を生成するステップと、前記記憶されたリストの各々のためのノイズ値を記憶するステップと、を有することができる。
【００７４】
一実施形態によれば、前記第１の閾値は、前記少なくとも１つの記憶されたリストのサイズに基づいて選択することができる。
【００７５】
一実施形態によれば、前記ノイズ差分（ノイズ相違値）および前記少なくとも１つの記憶されたリストのためのノイズ値が所定値以内である場合に、前記新しいユーザＩＤのリストが前記少なくとも１つの記憶されたリストと比較することができる。
【００７６】
一実施形態によれば、前記少なくとも１つの記憶されたリストは、圧縮されて記憶されたリストであり、前記新しいユーザＩＤのリストを受け取った後に、その新しいユーザＩＤのリストを圧縮してこれを前記圧縮されて記憶されたリストと比較するステップをさらに有することができる。
【００７７】
一実施形態によれば、前記圧縮した新しいユーザＩＤのリストおよび前記圧縮されて記憶されたリストが適合したリストであるか否かを判定するステップと、前記圧縮した新しいユーザＩＤのリストおよび前記圧縮されて記憶されたリストが適合したリストである場合に、前記新しいユーザＩＤのリストに対して、前記圧縮されて記憶されたリストに対応するノイズカウントを出力するステップと、をさらに有することができる。
【００７８】
一実施形態によれば、前記圧縮されて記憶されたリストは単一の値をとることができる。
【００７９】
一実施形態によれば、前記複数のステップは、データベースと通信可能に接続された匿名化モジュールによって実行することができる。
【００８０】
一実施形態によれば、前記少なくとも１つの記憶されたリストは、前記匿名化モジュールの内部に記憶することができる。
【００８１】
一実施形態によれば、前記検索要求に応答して受け取られる新しいユーザＩＤのリストは複数あり、ユーザが所有しているリストカウントを判定し、ユーザが所有しているリストカウントが閾リストカウントより多い場合には、その閾リストカウントを超えた分を削除するステップをさらに有することができる。
【００８２】
一実施形態によれば、データベースシステムのための匿名化方法が提供される。この方法は、複数の検索要求に応答して、各々が真のユーザカウントを定義するユーザのリストを含む複数の回答を受け取るステップと、前記複数の回答に各ユーザが含まれる頻度を記憶するステップと、前記複数の回答に頻繁に含まれるユーザの存在を判定するステップと、前記複数の回答に頻繁に含まれるユーザの少なくとも一人を前記複数の回答の少なくとも１つから削除することにより、前記複数の回答の少なくとも１つのために前記真のユーザカウントを減じるステップと、を有することができる。
【００８３】
一実施形態によれば、前記複数の回答に頻繁に含まれるユーザの少なくとも一人を削除するステップは、任意の数のユーザに対して実行することができる。
【００８４】
一実施形態によれば、前記複数の回答に頻繁に含まれるユーザの少なくとも一人を削除するステップは、所定の閾カウントのユーザに対して実行することができる。
【００８５】
一実施形態によれば、前記複数の回答に頻繁に含まれるユーザの存在を判定するステップは、前記複数の回答におけるユーザの存在可能性を平均的な存在可能性に関連して判定することを含むことができる。
【００８６】
以上、詳細な実施形態を参照して本発明を説明した。しかし当業者であれば、本発明の思想および範囲から逸脱することなく、様々な設計変更を行うこと、等価な発明構成要素に置換することによって、本発明を実施可能であることが明らかである。加えて、本発明の基本的な思想から逸脱することなく、様々な状況や材料に適合させるための変更を行って、本発明を実施することができる。したがって、本発明の技術的範囲は、これまで詳細に開示した特定の実施形態に限定されるべきものと解釈してはならない。
【図１】
0005992569.tif 000002
【図２】
0005992569.tif 000003
【図３】
0005992569.tif 000004
【図４】
0005992569.tif 000005
【図５】
0005992569.tif 000006
【図６】
0005992569.tif 000007
【図７】
0005992569.tif 000008
【図８】
0005992569.tif 000009
【図９】
0005992569.tif 000010