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

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

▶ ビットディフェンダー アイピーアール マネジメント リミテッドの特許一覧

特表2024-541996プライバシー保護ドメインネームサービス(DNS)
<>
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図1
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図2
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図3
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図4
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図5
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図6
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図7
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図8
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図9
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図10
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図11
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図12
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図13
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図14
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図15
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図16
  • 特表-プライバシー保護ドメインネームサービス(DNS) 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-13
(54)【発明の名称】プライバシー保護ドメインネームサービス(DNS)
(51)【国際特許分類】
   G09C 1/00 20060101AFI20241106BHJP
   H04L 61/4511 20220101ALI20241106BHJP
【FI】
G09C1/00 660D
G09C1/00 620Z
H04L61/4511
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024525439
(86)(22)【出願日】2021-11-02
(85)【翻訳文提出日】2024-05-22
(86)【国際出願番号】 EP2021080380
(87)【国際公開番号】W WO2023078529
(87)【国際公開日】2023-05-11
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FACEBOOK
2.WIKIPEDIA
(71)【出願人】
【識別番号】312016539
【氏名又は名称】ビットディフェンダー アイピーアール マネジメント リミテッド
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(72)【発明者】
【氏名】ブルチャヌ,エレナ
(72)【発明者】
【氏名】ボルボチャヌ,マダリナ
(72)【発明者】
【氏名】ハレー,エマヌエラ
(72)【発明者】
【氏名】ロッサ,ゲオルジーナ・ミルナ
(72)【発明者】
【氏名】ティティウ,ラドゥ
(72)【発明者】
【氏名】セベレ,ボグダン・セー
(57)【要約】
記述されているシステムおよび方法は、プライバシー保護DNSのやり取りを実行することを可能にする。いくつかの実施形態においては、クライアントマシンが、ネームサーバとの個人情報検索(PIR)のやり取りに携わる。クライアントからの暗号化されたクエリ(そのクエリは、ドメインネームに従って定式化されている)を受信したことに応答して、ネームサーバは、それぞれのクエリを復号することなくドメインネームデータベースからレコード(たとえば、IPアドレス)を抽出することが可能である。いくつかの実施形態は、準同型暗号の使用によって、そのような情報検索を達成する。
【特許請求の範囲】
【請求項1】
ドメインネームサービス(DNS)ルックアップを実行する方法であって、コンピュータシステムの少なくとも1つのハードウェアプロセッサを用いて、
ドメインネームの指標を受信したことに応答して、プライバシー条件が満たされているかどうかを前記ドメインネームに従って決定することと、
前記プライバシー条件が満たされているかどうかを決定したことに応答して、「はい」の場合には、ドメインネームデータベース内のレコードのロケーションを示すハッシュインデックスの暗号化を含むプライベートクエリを定式化することであって、前記ハッシュインデックスは準同型暗号化手順に従って暗号化され、前記ハッシュインデックスは前記ドメインネームに従って決定される、定式化することと、
前記プライベートクエリを定式化したことに応答して、ネームサーバへ前記プライベートクエリを伝送することであって、前記ネームサーバは、前記プライベートクエリに従って前記ドメインネームデータベースへの暗号化されたルックアップを実行して前記レコードの暗号化を生成するように構成された、伝送することと、
前記レコードの前記暗号化を含むプライベート応答を前記ネームサーバから受信したことに応答して、準同型復号手順に従って前記プライベート応答の内容を復号することと
を行うステップを含む方法。
【請求項2】
請求項1に記載の方法であって、前記プライバシー条件が満たされているかどうかを決定したことに応答して、「いいえ」の場合には、前記コンピュータシステムの少なくとも1つのハードウェアプロセッサを用いて、
前記ドメインネームに従って別のクエリを定式化することであって、前記別のクエリの内容は、非準同型暗号化手順に従って暗号化される、定式化することと、
前記別のクエリを前記ネームサーバへ伝送することと
を行うステップをさらに含む方法。
【請求項3】
請求項1に記載の方法であって、前記ドメインネームは一連のトークンを含み、前記プライバシー条件が満たされているかどうかを決定することは、前記一連のトークンのうちの選択されたトークンがトークンの参照リストのいずれかのメンバーと一致するかどうかを決定することを含む、方法。
【請求項4】
請求項3に記載の方法であって、前記選択されたトークンは、ドメイントークンまたはプレフィックストークンを含む、方法。
【請求項5】
請求項1に記載の方法であって、前記プライバシー条件が満たされているかどうかを前記ネームサーバの権威ゾーンにさらに従って決定するステップを含む方法。
【請求項6】
請求項5に記載の方法であって、前記ネームサーバがトップレベルドメイン(TLD)ネームサーバを含む場合に、前記プライバシー条件が満たされていないと決定するステップをさらに含む方法。
【請求項7】
請求項1に記載の方法であって、前記プライベートクエリは、前記ドメインネームデータベースを前記ネームサーバに接続された複数のドメインネームデータベースのうちから識別するバケットインデックスをさらに含む、方法。
【請求項8】
請求項1に記載の方法であって、前記レコードはインターネットプロトコル(IP)アドレスを含む、方法。
【請求項9】
請求項1に記載の方法であって、前記レコードは、前記ドメインネームによって表されているドメインにアクセスすることがユーザをコンピュータセキュリティの脅威にさらすかどうかを示すセキュリティ指標を含む、方法。
【請求項10】
少なくとも1つのハードウェアプロセッサを含むコンピュータシステムであって、前記少なくとも1つのハードウェアプロセッサは、
ドメインネームの指標を受信したことに応答して、プライバシー条件が満たされているかどうかを前記ドメインネームに従って決定することと、
前記プライバシー条件が満たされているかどうかを決定したことに応答して、「はい」の場合には、ドメインネームデータベース内のレコードのロケーションを示すハッシュインデックスの暗号化を含むプライベートクエリを定式化することであって、前記ハッシュインデックスは準同型暗号化手順に従って暗号化され、前記ハッシュインデックスは前記ドメインネームに従って決定される、定式化することと、
前記プライベートクエリを定式化したことに応答して、ネームサーバへ前記プライベートクエリを伝送することであって、前記ネームサーバは、前記プライベートクエリに従って前記ドメインネームデータベースへの暗号化されたルックアップを実行して前記レコードの暗号化を生成するように構成された、伝送することと、
前記レコードの前記暗号化を含むプライベート応答を前記ネームサーバから受信したことに応答して、準同型復号手順に従って前記プライベート応答の内容を復号することと
を行うように構成された、コンピュータシステム。
【請求項11】
請求項10に記載のコンピュータシステムであって、前記少なくとも1つのハードウェアプロセッサは、前記プライバシー条件が満たされているかどうかを決定したことに応答して、「いいえ」の場合には、
前記ドメインネームに従って別のクエリを定式化することであって、前記別のクエリの内容は、非準同型暗号化手順に従って暗号化される、定式化することと、
前記別のクエリを前記ネームサーバへ伝送することと
を行うようにさらに構成された、コンピュータシステム。
【請求項12】
請求項10に記載のコンピュータシステムであって、前記ドメインネームは一連のトークンを含み、前記プライバシー条件が満たされているかどうかを決定することは、前記一連のトークンのうちの選択されたトークンがトークンの参照リストのいずれかのメンバーと一致するかどうかを決定することを含む、コンピュータシステム。
【請求項13】
請求項12に記載のコンピュータシステムであって、前記選択されたトークンは、ドメイントークンまたはプレフィックストークンを含む、コンピュータシステム。
【請求項14】
請求項10に記載のコンピュータシステムであって、前記少なくとも1つのハードウェアプロセッサは、前記プライバシー条件が満たされているかどうかを前記ネームサーバの権威ゾーンにさらに従って決定するように構成された、コンピュータシステム。
【請求項15】
請求項14に記載のコンピュータシステムであって、前記少なくとも1つのハードウェアプロセッサは、前記ネームサーバがトップレベルドメイン(TLD)ネームサーバを含む場合に、前記プライバシー条件が満たされていないと決定するようにさらに構成された、コンピュータシステム。
【請求項16】
請求項10に記載のコンピュータシステムであって、前記プライベートクエリは、前記ドメインネームデータベースを前記ネームサーバに接続された複数のドメインネームデータベースのうちから識別するバケットインデックスをさらに含む、コンピュータシステム。
【請求項17】
請求項10に記載のコンピュータシステムであって、前記レコードは、インターネットプロトコル(IP)アドレスを含む、コンピュータシステム。
【請求項18】
請求項10に記載のコンピュータシステムであって、前記レコードは、前記ドメインネームによって表されているドメインにアクセスすることがユーザをコンピュータセキュリティの脅威にさらすかどうかを示すセキュリティ指標を含む、コンピュータシステム。
【請求項19】
命令を格納している非一時的コンピュータ可読メディアであって、前記命令は、コンピュータシステムの少なくとも1つのハードウェアプロセッサによって実行されたときに、
ドメインネームの指標を受信したことに応答して、プライバシー条件が満たされているかどうかを前記ドメインネームに従って決定することと、
前記プライバシー条件が満たされているかどうかを決定したことに応答して、「はい」の場合には、ドメインネームデータベース内のレコードのロケーションを示すハッシュインデックスの暗号化を含むプライベートクエリを定式化することであって、前記ハッシュインデックスは準同型暗号化手順に従って暗号化され、前記ハッシュインデックスは前記ドメインネームに従って決定される、定式化することと、
前記プライベートクエリを定式化したことに応答して、ネームサーバへ前記プライベートクエリを伝送することであって、前記ネームサーバは、前記プライベートクエリに従って前記ドメインネームデータベースへの暗号化されたルックアップを実行して前記レコードの暗号化を生成するように構成された、伝送することと、
前記レコードの前記暗号化を含むプライベート応答を前記ネームサーバから受信したことに応答して、準同型復号手順に従って前記プライベート応答の内容を復号することと
を前記コンピュータシステムに行わせる、非一時的コンピュータ可読メディア。
【請求項20】
複数のクライアントとのドメインネームサービス(DNS)トランザクションに携わるように構成されたサーバコンピュータシステムであって、前記サーバコンピュータシステムは少なくとも1つのハードウェアプロセッサを含み、前記少なくとも1つのハードウェアプロセッサは、
前記複数のクライアントのうちの1つのクライアントからプライベートクエリを受信することであって、前記プライベートクエリは、ドメインネームデータベース内のレコードのロケーションを示すハッシュインデックスの暗号化を含み、前記ハッシュインデックスは準同型暗号化手順に従って暗号化され、前記ハッシュインデックスはドメインネームに従って決定される、受信することと、
前記プライベートクエリを受信したことに応答して、前記プライベートクエリに従って前記ドメインネームデータベースへの暗号化されたルックアップを実行して前記レコードの暗号化を生成することと、
前記レコードの前記暗号化を含むプライベート応答を前記クライアントへ伝送することと
を行うように構成された、サーバコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[0001]本発明は、オンライン通信のプライバシーを保護するためのシステムおよび方法に関し、詳細には、リモートエンティティーがインターネットユーザの閲覧習慣に関する情報を取得するのを防止することに関する。
【背景技術】
【0002】
[0002]インターネットを閲覧することは、現代の生活および仕事の不可欠な構成要素になっている。インターネットアクセスにおける激増に続いて、いくつかの営利目的のならびに悪意あるエンティティーが、個々のインターネットユーザの閲覧履歴および/またはパターンにアクセスして分析することにますます関心を持っている。そしてそのような情報は、広告のターゲット設定を行うために、およびさまざまなサービスをそれぞれのユーザに届けるために使用される場合がある。しかしながら、同じタイプの情報が、性的な指向、政治的なおよび宗教的な見解、人種、薬物使用、諜報等など、ユーザの個性のより敏感な側面に従ってユーザのプロファイリングおよび/またはターゲット設定を行うために使用される場合がある。ますます多数のインターネットユーザが、プライバシーと、自分たちのオンライン行動をモニタすることを企業および/または国家に許可することが自分たちの権利にどのように影響する可能性があるか、ならびにさまざまな種類の脅威および虐待に自分たちをどのようにさらす可能性があるか、とに関して懸念を抱いている。
【0003】
[0003]ユーザの閲覧履歴が収集される一般的な様式は、ドメインネームサービス(DNS)要求を介する。DNSは、典型的には、ドメインネームをネットワーク(たとえば、IP)アドレスへ変換するサービスを指し、そしてこれは、電子デバイスが通信ネットワークを介してデータをやり取りすることを可能にする。DNSは元来、プライバシーとは対照的に、スピードおよび利便性のために設計されたものなので、従来、DNSプロバイダおよびインターネットサービスプロバイダは、クライアントによって発行されたDNS要求に対して実質的に妨げられずにアクセスできてきた。近年においては、いくつかの取り組みが、古くからのDNSに対する代替手段を提供することに向けられた。いくつかの例は、数ある中でも、「DNS over TLS(Transport Layer Security)」および「DNS over HTTPS(Hypertext Transfer Protocol Secure)」として知られる一連のプロトコルを含む。そのようなバージョンのDNSは、クライアントからの個々の要求および/またはサーバ応答を暗号化し、それによって原則として、エンドクライアントとネームサーバとを除いたエンティティーは、それぞれのデータにアクセスできない。たとえば、そのようなプロトコルは、インターネットサービスプロバイダおよび/または悪意ある第三者がユーザのDNS要求を覗き見するのを防止することが可能である。しかしながらデータは、クライアントとネームサーバとの間における転送中にのみ暗号化されるので、そのようなプロトコルは、DNSプロバイダ自身がそれぞれのユーザの閲覧データを収集するのを防止しない。
【0004】
[0004]そのため、より有能で堅牢なプライバシー保護ドメインネームサービスを開発することには、相当な関心がある。
【発明の概要】
【0005】
[0005]一態様によれば、ドメインネームサービス(DNS)ルックアップを実行する方法が、ドメインネームの指標を受信したことに応答して、プライバシー条件が満たされているかどうかをドメインネームに従って決定するためにコンピュータシステムの少なくとも1つのハードウェアプロセッサを採用するステップを含む。この方法はさらに、プライバシー条件が満たされているかどうかを決定したことに応答して、「はい」の場合には、ドメインネームデータベース内のレコードのロケーションを示すハッシュインデックスの暗号化を含むプライベートクエリを定式化するステップであって、ハッシュインデックスが、準同型暗号化手順に従って暗号化され、ハッシュインデックスが、ドメインネームに従って決定される、ステップを含む。この方法はさらに、プライベートクエリを定式化したことに応答して、プライベートクエリに従ってドメインネームデータベースへの暗号化されたルックアップを実行してレコードの暗号化を生成するように構成されたネームサーバへプライベートクエリを伝送するステップと、レコードの暗号化を含むプライベート応答をネームサーバから受信したことに応答して、準同型復号手順に従ってプライベート応答の内容を復号するステップとを含む。
【0006】
[0006]別の態様によれば、コンピュータシステムが、ドメインネームの指標を受信したことに応答して、プライバシー条件が満たされているかどうかをドメインネームに従って決定するように構成された少なくとも1つのハードウェアプロセッサを含む。少なくとも1つのハードウェアプロセッサはさらに、プライバシー条件が満たされているかどうかを決定したことに応答して、「はい」の場合には、ドメインネームデータベース内のレコードのロケーションを示すハッシュインデックスの暗号化を含むプライベートクエリを定式化することであって、ハッシュインデックスが、準同型暗号化手順に従って暗号化され、ハッシュインデックスが、ドメインネームに従って決定される、定式化することを行うように構成されている。少なくとも1つのハードウェアプロセッサはさらに、プライベートクエリを定式化したことに応答して、プライベートクエリに従ってドメインネームデータベースへの暗号化されたルックアップを実行してレコードの暗号化を生成するように構成されたネームサーバへプライベートクエリを伝送することと、レコードの暗号化を含むプライベート応答をネームサーバから受信したことに応答して、準同型復号手順に従ってプライベート応答の内容を復号することとを行うように構成されている。
【0007】
[0007]別の態様によれば、非一時的コンピュータ可読メディアが命令を格納しており、それらの命令は、コンピュータシステムの少なくとも1つのハードウェアプロセッサによって実行されたときに、ドメインネームの指標を受信したことに応答して、プライバシー条件が満たされているかどうかをドメインネームに従って決定することをコンピュータシステムに行わせる。それらの命令はさらに、プライバシー条件が満たされているかどうかを決定したことに応答して、「はい」の場合には、ドメインネームデータベース内のレコードのロケーションを示すハッシュインデックスの暗号化を含むプライベートクエリを定式化することであって、ハッシュインデックスが、準同型暗号化手順に従って暗号化され、ハッシュインデックスが、ドメインネームに従って決定される、定式化することをコンピュータシステムに行わせる。それらの命令はさらに、プライベートクエリを定式化したことに応答して、プライベートクエリに従ってドメインネームデータベースへの暗号化されたルックアップを実行してレコードの暗号化を生成するように構成されたネームサーバへプライベートクエリを伝送することと、レコードの暗号化を含むプライベート応答をネームサーバから受信したことに応答して、準同型復号手順に従ってプライベート応答の内容を復号することとをコンピュータシステムに行わせる。
【0008】
[0008]別の態様によれば、サーバコンピュータシステムが、複数のクライアントとのドメインネームサービス(DNS)トランザクションに携わるように構成されている。サーバコンピュータシステムは、複数のクライアントのうちの1つのクライアントからプライベートクエリを受信することであって、プライベートクエリが、ドメインネームデータベース内のレコードのロケーションを示すハッシュインデックスの暗号化を含み、ハッシュインデックスが、準同型暗号化手順に従って暗号化され、ハッシュインデックスが、ドメインネームに従って決定される、受信することを行うように構成された少なくとも1つのハードウェアプロセッサを含む。少なくとも1つのハードウェアプロセッサはさらに、プライベートクエリを受信したことに応答して、プライベートクエリに従ってドメインネームデータベースへの暗号化されたルックアップを実行してレコードの暗号化を生成することと、レコードの暗号化を含むプライベート応答をクライアントへ伝送することとを行うように構成されている。
【図面の簡単な説明】
【0009】
[0009]本発明の前述の態様および利点は、以降の発明を実施するための形態を読めば、および図面を参照すれば、よりよく理解されるようになるであろう。
図1】[0010]本発明のいくつかの実施形態による例示的なプライバシー保護電子通信システムを示す図である。
図2】[0011]本発明のいくつかの実施形態による、複数の通信可能に結合されたネームサーバを含む例示的なドメインネームサービス(DNS)サーバシステムを示す図である。
図3】[0012]従来技術において知られている典型的なDNSトランザクションを示す図である。
図4】[0013]従来技術において知られているDNSクエリおよび応答を示す図である。
図5】[0014]本発明のいくつかの実施形態による、インターネットドメインの例示的な完全修飾ドメインネーム(FQDN)および複数の例示的な部分修飾ドメインネーム(PQDN)を示す図である。
図6】[0015]本発明のいくつかの実施形態による例示的なドメインネーム空間を示す図である。
図7】[0016]本発明のいくつかの実施形態によるDNSトランザクションを示す図であり、そのトランザクションは、プライベートクエリおよびプライベート応答を含む。
図8】[0017]本発明のいくつかの実施形態によるドメインネームデータベースの例示的な内容を示す図である。
図9】[0018]本発明のいくつかの実施形態による例示的な個人情報検索(PIR)クエリおよび例示的なPIR応答を示す図である。
図10】[0019]本発明のいくつかの実施形態によるクライアントシステム上で実行する例示的なコンポーネントを示す図である。
図11】[0020]本発明のいくつかの実施形態によるクライアントシステムDNSリゾルバによって実行されるステップの例示的なシーケンスを示す図である。
図12】[0021]本発明のいくつかの実施形態によるDNSサーバシステム上で実行する例示的なコンポーネントを示す図である。
図13】[0022]本発明のいくつかの実施形態によるDNSサーバデータベースメンテナンスモジュールによって実行されるステップの例示的なシーケンスを示す図である。
図14】[0023]本発明のいくつかの実施形態によるDNSサーバPIRモジュールによって実行されるステップの例示的なシーケンスを示す図である。
図15】[0024]本発明のいくつかの実施形態による、DNSルックアップを実行するためにクライアントDNSリゾルバによって実行されるステップの例示的なシーケンスを示す図である。
図16】[0025]本発明のいくつかの実施形態による、クラスタへとグループ化されたドメインの例示的なセットを示す図である。
図17】[0026]本明細書において記述されている方法およびアルゴリズムのうちのいくつかを実行するように構成されたコンピューティングアプライアンスの例示的なハードウェアコンポーネントを示す図である。
【発明を実施するための形態】
【0010】
[0027]以降の記述においては、構造どうしの間におけるすべての列挙されている接続は、直接の有効な接続、または中間構造を通じた間接的な有効な接続であることが可能であるということが理解される。要素のセットは、1つまたは複数の要素を含む。要素のいかなる列挙も、少なくとも1つの要素を指すものと理解される。複数の要素は、少なくとも2つの要素を含む。他に必要とされない限り、いずれの記述されている方法ステップも、必ずしも特定の示されている順序で実行される必要はない。第2の要素から導き出される第1の要素(たとえば、データ)は、第2の要素に等しい第1の要素、ならびに第2の要素および任意選択でその他のデータを処理することによって生成される第1の要素を包含する。パラメータに従って決定または決断行うことは、パラメータに従って、および任意選択でその他のデータに従って決定または決断を行うことを包含する。他に指定されない限り、ある数量/データの指標は、その数量/データそのもの、またはその数量/データそのものとは異なる指標であることが可能である。コンピュータプログラムは、タスクを実行する一連のプロセッサ命令である。本発明のいくつかの実施形態において記述されているコンピュータプログラムは、スタンドアロンのソフトウェアエンティティー、またはその他のコンピュータプログラムのサブエンティティー(たとえば、サブルーチン、ライブラリ)であることが可能である。ネットワークドメインは、コンピュータネットワークの個別の部分を形成する相互接続されたコンピューティングデバイスのグループから構成されている。インターネットドメインは、パブリックインターネットに接続されたネットワークドメインである。ドメインネームは、ネットワーク/インターネットドメインのアドレスを識別するラベル/エイリアスである。「データベース」という用語は、本明細書においては、データの任意の編成された集合を示すために使用されている。コンピュータ可読メディアは、磁気、光、および半導体ストレージメディア(たとえばハードドライブ、光ディスク、フラッシュメモリ、DRAM)などの非一時的メディア、ならびに導電ケーブルおよび光ファイバリンクなどの通信リンクを包含する。いくつかの実施形態によれば、本発明は、とりわけ、本明細書において記述されている方法を実行するようにプログラムされたハードウェア(たとえば1つまたは複数のプロセッサ)、ならびに本明細書において記述されている方法を実行するための命令をエンコードしているコンピュータ可読メディアを含むコンピュータシステムを提供する。
【0011】
[0028]以降の記述は、本発明の実施形態を、必ずしも限定としてではなく、例として示している。
[0029]図1は、本発明のいくつかの実施形態によるプライバシー保護電子通信システム10を示している。一式の例示的なクライアントデバイス12a~fが、通信リンクを介して互いと、および/またはリモートコンテンツサーバコンピュータ16と通信して、ウェブコンテンツ、電子メッセージ、さまざまなドキュメント等などのデータをやり取りする。クライアントデバイス12a~fは、パーソナルコンピュータシステム、企業のメインフレームコンピュータ、モバイルコンピューティングプラットフォーム(たとえば、ラップトップコンピュータ、タブレット、モバイル電話)、エンターテイメントデバイス(たとえば、TV、ゲームコンソール)、ウェアラブルデバイス(たとえば、スマートウォッチ、フィットネスバンド)、家庭用機器(たとえば、冷蔵庫、洗濯機)、ならびに、プロセッサと、メモリと、それぞれのデバイスがその他のデバイス/コンピュータシステムと通信することを可能にする通信インターフェースとを含む任意のその他の電子デバイスを含むことが可能である。
【0012】
[0030]図1の例示的な構成においては、クライアントデバイス12a~eは、ローカルエリアネットワーク(LAN)などのローカルネットワーク13によって相互接続されている。1つの例示的な使用事例シナリオにおいては、デバイス12a~eは、家庭内の電子デバイスに相当し、ローカルネットワーク13は、ホームネットワークに相当する。別の使用事例シナリオにおいては、クライアントデバイス12a~eは、企業のオフィスまたは部署に配置されて企業LANによって相互接続されたコンピュータに相当することが可能である。デバイス12a~eはさらに、ワイドエリアネットワーク(WAN)および/またはインターネットなど、拡張ネットワーク15に接続されることが可能である。いくつかの実施形態においては、ルータ14が、たとえば、ローカルネットワーク13に接続されたクライアント12a~eにネットワークアドレスを割り振って、そのようなアドレスに従って個々の通信をルーティングすることによって、ローカルネットワーク13内のデータトラフィックを制御および/または管理する。図1において示されているようないくつかの実施形態においては、クライアントデバイス12a~eと拡張ネットワーク15との間におけるネットワークトラフィックの少なくとも一部がルータ14を通過するという意味で、ルータ14は、ローカルネットワーク13へのゲートウェイとして構成される。図1における例示的なデバイス12fなど、その他のクライアントデバイスは、ローカルネットワーク13に接続されないことが可能であり、代わりに、たとえばモバイルテレフォニーネットワークまたはパブリックWiFiホットスポットを経由して、拡張ネットワーク15に直接接続することが可能である。
【0013】
[0031]本発明のいくつかの実施形態によれば、ドメインネームサービス(DNS)サーバシステム20が、プライバシー保護ドメインネームサービスをクライアントデバイス12a~fに提供する。ドメインネームサービスは、本明細書においては、ドメインネームをネットワークアドレスへと、および/またはその逆へと変換することと、とりわけ、ドメイン登録データ(たとえば、WHOISデータ)、および特定のドメインがドメインの特定のカテゴリー/クラスタに属するかどうか、ドメインがアダルトコンテンツを配信しているかどうか、ドメインが悪意あるアクティビティー(たとえば、ボットネット、インターネット詐欺)に携わっているかどうかなどの指標を含むその他のドメイン情報を提供することとを包含することを意図されている。DNSサーバシステム20は、図2において示されている例示的なネームサーバ20a~dなど、一式の通信可能に結合されたコンピュータを総称的に表す。それぞれのそのようなネームサーバの機能は、以降でさらに詳述される。要求をDNSサーバシステム20へ送信することは、それぞれの要求をネームサーバ20a~dのうちのいずれかへ送信することを包含する。
【0014】
[0032]クライアントデバイス12a~fとコンテンツサーバ16との間における典型的なデータやり取りは、いくつかのステップを含む。伝送は、典型的には、コンテンツサーバ16のネットワークアドレス(たとえば、インターネットプロトコル(IP)アドレス)の知識を必要とする。多くの場合、このアドレスは、さまざまな理由のためにクライアントデバイスに知られていない。たとえば、複数のミラーコンテンツサーバマシンがあり得、クライアントは、それぞれのミラーサーバの現在の負荷に従って、またはクライアントデバイスの現在の地理的ロケーションに従って、最も都合のよいサーバへ動的に導かれることが可能である。しかしながらクライアントデバイスは、サーバ16のドメインネームを知ることが可能である。本明細書における「ドメインネーム」という用語は、必要とされるネットワークアドレスの任意のエイリアスを示す。コンテンツサーバ16への接続を確立するために、それぞれのクライアントデバイス上で実行するソフトウェアエンティティーが、それゆえに、IPアドレス自体の代わりに、それぞれのドメインネームにアクセスする要求を発行することが可能である。それに応答して、別のソフトウェアエンティティー(たとえば、それぞれのクライアント上で実行するオペレーティングシステムのコンポーネント)が、要求をインターセプトし、エイリアス/ドメインネームを実際のネットワークアドレスへ変換することを試み、そしてその後に要求を正しいネットワークロケーションへ伝送することが可能である。そのような変換は、図1におけるサーバシステム20などのDNSプロバイダを呼び出すことが可能である。
【0015】
[0033]図3図4は、当技術分野において知られているDNSプロトコルに従った典型的なメッセージやり取りを示している。クライアントデバイス12は、DNSクエリ22をDNSサーバシステム20へ伝送し、クエリ22は、インターネットドメイン30の指標(たとえば、図3において示されているようなドメインネーム)と、質問Qのタイプの指標とを含む。質問のタイプは、DNSサーバ20によって返されるDNSリソースレコードのタイプを示す。例示的な質問は、インターネットプロトコルの第4バージョン(IPv4)において定式化されたIPアドレスを要求する「A」、およびインターネットプロトコルの第6バージョン(IPv6)において定式化されたIPアドレスを返す「AAAA」を含む。その他の例示的な質問/リソースレコードタイプは、「TXT」、「PTR」、「LOC」などを含む。それに応答して、DNSサーバシステム20は、要求側クライアントへDNS応答24を返すことが可能であり、応答24は、それぞれのドメインネーム/エイリアスに対応するリソースレコードネットワークのエンコーディングを含む。図4における例においては、レコードのタイプは、32ビットIPv4フォーマットでのIPアドレス40である。いくつかのケースにおいては、たとえばDNS over HTTPSプロトコルを使用するシステムにおいては、DNSクエリ22および/またはDNS応答24は、暗号化されることが可能である。
【0016】
[0034]図5は、インターネットドメインの例示的なドメインネームを示している。ドメインネームは、デリミタシンボル34(示されている例においては、ドット)によって区切られたトークン/ラベル32a~dの順序付けられたシーケンスを通じてそれぞれのドメインを完全にかつ明確に指定する完全修飾ドメインネーム(FQDN)36から構成されることが可能である。FQDNトークン32a~dのサブセット/サブシーケンスを含むFQDN36の断片は、部分修飾ドメインネーム(PQDN)として一般に知られている。アイテム38a~cは、FQDN36のさまざまな例示的なPQDNを示す。FQDN36とは対照的に、それぞれのPQDN38a~cは、いくらかのレベルの曖昧さを伴ってそれぞれのドメインを指定し、すなわち、同じ特徴的なPQDNを有する複数のFQDNが存在することが可能である。
【0017】
[0035]一連のトークンとしてのドメインネーム表現(図5を参照されたい)は、図6において示されているようなドメインネーム空間のツリー状の階層表現と整合しており、FQDN36のそれぞれのトークン32a~dは、ツリーの分岐に対応し、デリミタ(たとえば、ドット)のそれぞれのインスタンスは、分岐点に対応する。ドメインネーム階層は、少なくともルートレベル(「.」)と、com、net、fashion、tvなどのトークン、およびro、frなどの国を示すトークンなどを含むトップレベルドメイン(TLD)レベルと、wikipedia、facebookなどのトークンなどを含むドメインレベルと、さまざまなドメイン固有のプレフィックストークンを含むサブドメインレベルとを含むいくつかの注目すべきレベルを有する。個々のトークンからFQDN36を組み立てることは、それゆえに、図6において示されているように、ツリー階層を末端のリーフからルートまでたどることに相当する。明確にするために、TLDレベルでドメインネームを特徴付けるトークン(典型的にはFQDN36の最後のトークン)が、本明細書においてはTLDトークンとみなされることになる。同様に、ドメインレベルでドメインネームを特徴付けるトークン(典型的にはFQDN36の最後から2番目のトークン)が、本明細書においてはドメイントークンとみなされることになる。最後に、FQDN36においてドメイントークンに先行するすべてのトークンが、本明細書においてはプレフィックストークンとみなされることになる。
【0018】
[0036]ドメインネームサービスは、単一のネームサーバが単独で完全修飾ドメインネームを解決することができないように編成されることが可能である。代わりに、ドメインネーム空間は、複数の権威ゾーンへと分割され、それぞれの権威ゾーンは、個別のネームサーバによって解決される。典型的には、それぞれの権威ゾーンは、図6における例示的な権威ゾーン37a~cによって示されているように、ドメインネーム階層の選択されたサブツリー/分岐を含む。示されている例においては、ネームサーバ20b-c-dは、それぞれ権威ゾーン37a-b-c内のドメインネームを解決する。
【0019】
[0037]いくつかの実施形態においては、FQDNを対応するIPアドレスに解決することは、反復する様式で進行し、それぞれの連続した反復は、ドメインネーム階層の連続したレベルへ進展する。それぞれの連続した反復は、FQDN36の個別のトークンに従って決定されることが可能である。それぞれの反復は、DNSクエリを個別のネームサーバへ送信することと、それに応答して、別のネームサーバのIPアドレスを指定するDNS応答を受信することとを含むことが可能である。ドメインネームのTLDレベル、すなわち、「.org」などのTLDトークンを解決するサーバが、本明細書においてはルートネームサーバとみなされる(たとえば、ルートネームサーバ20bを参照されたい)。ドメインレベルでのドメインネーム、すなわち、FQDN36のドメイントークンを解決するサーバが、本明細書においてはTLDネームサーバとみなされる(たとえば、「.org」トップレベルドメインのドメインどうしの間において解決を行うTLDネームサーバ20cを参照されたい)。サブドメインレベル、すなわち、FQDN36のプレフィックストークンを解決するサーバが、本明細書においては、それぞれのドメインに関する権威サーバとみなされる(たとえば、「wikimedia.org」のサブドメインどうしの間において解決を行う権威サーバ20dを参照されたい)。図6による一例においては、ドメインネーム「text-lb.codfw.wikimedia.org」を解決することは、第1のDNSクエリをルートネームサーバ20bへ送信することと、それに応答して、「.org」トップレベルドメインの権威ゾーンを解決することを担当するTLDネームサーバ20cのIPアドレスをネームサーバ20bから受信することとを含む。反復の次なる段階は、第2のDNSクエリをTLDネームサーバ20cへ送信することと、それに応答して「wikimedia.org」ドメインの権威ネームサーバ20dのIPアドレスをネームサーバ20cから受信することとを含むことが可能である。反復のさらに別の段階は、第3のDNSクエリを権威ネームサーバ20dへ送信することと、それに応答して、FQDN「text-lb.codfw.wikimedia.org」によって識別されるコンテンツサーバのIPアドレスをネームサーバ20dから受信することとを含むことが可能である。
【0020】
[0038]いくつかの実施形態においては、反復するDNS解決のすべてのステップにおいて伝送されるクエリは、完全修飾ドメインネームを含む。代替のプライバシー強化型の実施形態においては、それぞれの反復において送信されるDNSクエリは、個別のPQDN(たとえば、単一のトークン)と、場合によっては、数ある中でもワイルドカード「*」などの追加の文字とを含むことが可能である。たとえば、選択されたネームサーバへ送信されるPQDNは、それぞれのネームサーバの権威ゾーンよりも1トークンだけ多いところまで取り除かれたそれぞれのFQDNを含むことが可能である。図6における例においては、ルートネームサーバ20bへ送信されるDNSクエリは、PQDN「.org」について問い合わせることが可能であり、その一方で、TLDネームサーバ20cへ送信されるDNSクエリは、PQDN「*.wikimedia.org」について問い合わせることが可能である。
【0021】
[0039]いくつかの実施形態においては、そのような反復するドメイン解決は、専用のリゾルバネームサーバ20a(図2)によって実行され、そのリゾルバネームサーバ20aは、最近のおよび/または人気のあるDNSルックアップの結果を含むDNSキャッシュをさらに管理することが可能である。そのような構成においては、クライアントデバイス12a~fは、単一のDNSクエリをリゾルバネームサーバ20aへ伝送することが可能であり、それぞれのクエリは、完全修飾ドメインネームの解決を要求する。ネームサーバ20aは次いで、クライアントのためにキャッシュルックアップを実行すること、および/または必要とされる反復するDNSクエリを実行することが可能である。それぞれのFQDNが完全に解決された場合には、ネームサーバ20aは、それぞれのFQDNに関連付けられたIPアドレスを要求側クライアントへ返すことが可能である。
【0022】
[0040]図7は、本発明のいくつかの実施形態による例示的なプライバシー保護DNSトランザクションを示している。このトランザクションは、第1の当事者(たとえば、クライアント)が、アイテムを求める要求を第2の当事者(たとえば、サーバ)に発行することを含み、第2の当事者は、要求されたアイテムをデータリポジトリ/データベースから検索し、その検索手順は、そのアイテムを第2の当事者に明らかにすることなく実行される。別の言い方をすれば、サーバは、どのアイテムが要求されたかを認識しないが、それでもなお、要求されたアイテムをリポジトリから検索する。以降で詳述される1つの例示的なプライバシー保護トランザクションにおいては、クライアントによって発行された要求は暗号化され、サーバは、その要求を復号することなく、要求されたアイテムの暗号化されたバージョンを検索する。そのため、クライアントのプライバシーは保護される。
【0023】
[0041]いくつかの実施形態においては、プライバシー保護DNSトランザクションは、個人情報検索手順(PIR)に従って実行される。図7において示されている例示的なやり取りは、クライアントデバイス12(これは、図1におけるクライアントデバイス12a~fのうちのいずれかを総称的に表す)がプライベートクエリ(PIRクエリ52として示されている)をDNSサーバシステム20へ伝送して、それに応答してサーバシステム20からプライベート応答(PIR応答54として示されている)を受信することを含む。
【0024】
[0042]いくつかの実施形態においては、PIR手順は、準同型暗号化を使用して、やり取りのプライバシーを確保する。準同型暗号化は、暗号化されたデータについて特定の計算(たとえば、加算および/または乗算)を実行することを可能にする特定の種類の暗号化であり、そのような計算の結果を復号することは、同じデータの暗号化されていないバージョンにそれぞれの計算を適用した場合と同じ出力を生成する。別の言い方をすれば、Enc(m)=cが準同型暗号化演算を示し、mが平文メッセージを表し、cがその対応する暗号文を示す場合には、Dec(c)=mは、それぞれのメッセージをその暗号文から復元する準同型復号演算を示し、Eval(F,{c,...,C})=Cは、暗号文cのセットに関数Fを適用することによって、暗号化された暗号文Cを生成する準同型評価手順を示し、そして
Dec(C)=F(m,...,m), [1]
であり、m=Dec(c)であり、i=l,...,kである。正式な数学的言語では、準同型暗号化スキームの暗号化および復号手順は、平文空間と暗号文空間との間における準同型写像であると言われている。
【0025】
[0043]いくつかの準同型暗号化スキーム/暗号システムが、当技術分野において知られている。加算と乗算とのいかなる組合せに関しても準同型特性を維持するスキームが、完全準同型として一般に知られている。例は、数ある中でも、GSW(Gentry-Sahai-Waters)スキームを含む。その他のスキーム/アルゴリズムは、特定のタイプの演算に関してのみ、たとえば、Paillierスキームのケースにおいては加算に関してのみ、およびRSA(Rivest-Shamir-Adelman)スキームのケースにおいては乗算に関してのみ、準同型である。そのようなスキームは、部分的準同型として当技術分野において知られている。対照的に、上述されている準同型特性を有さない暗号は、本明細書においては非準同型とみなされる。非準同型暗号の例は、高度暗号化標準(AES)、および、通信プロトコルのトランスポートレイヤセキュリティ(TLS)ファミリーにおいて使用されるその他の暗号を含む。
【0026】
[0044]準同型暗号化を使用する例示的なPIR手順においては、関数Fは、データベースルックアップを実行することに相当する一式の演算の代わりをすることが可能である。シンプルな例においては、サーバは、3つの要素をデータベースに保持し、すなわち、D={a,b,c}である。クライアントは、第2の要素(すなわち、「b」)を検索することを、その情報をサーバに漏洩することなく行うことを望んでいる。クライアントは、ルックアップインデックス、たとえば、データベースD内の所望の要素の位置を除くすべての場所にゼロを含むビットマップIを使用して、所望の要素を示すことが可能である。目下の例においては、I={0,1,0}である。そしてクライアントは、それぞれのビットマップを準同型に暗号化すること、およびそれをサーバへ伝送することが可能である。次いでサーバは、暗号化されたビットマップに関数Fを適用することが可能である。
【0027】
C=F[Enc(I)]=D*[Enc(I)], [2]
*は行列乗算を示し、Tは転置を示す。そしてサーバは、結果として生じる暗号化されたベクトルCをクライアントへ返送する。準同型特性は、Cを復号することが、暗号化されていないビットマップIに関数Fを適用した場合と同じ結果を生み出すことを確実にする。
【0028】
Dec(C)=F(I)=D*I={a,b,c}*{0,1,0}=b [3]
それゆえにクライアントは、bを検索し、その一方でサーバは、暗号化されたビットマップのみを見て、クライアントから受信された情報を復号することなくすべてのオペレーションを実行する。
【0029】
[0045]いくつかの実施形態においては、DNSサーバシステム20は、ドメインネームに従ってインデックス付けされたレコードのセットを格納するドメインネームデータベース50に通信可能に接続される。それぞれのレコードに付加されたインデックスは、それぞれのデータリポジトリ内のそれぞれのレコードのロケーションを示すこと、またはさもなければ、データベース50内での/データベース50からのそれぞれのレコードの選択的な識別/検索を可能にすることができる。データが表形式で編成されるシンプルな例においては、それぞれの行は、個別のレコードを表すことが可能であり、行は、個別の行番号および/またはラベルによってインデックス付けされる。それぞれのレコードは、それぞれのドメインのさまざまな特徴を示すエントリのセットを含むことが可能である。DNSルックアップサービスを実施する一実施形態においては、例示的なエントリは、それぞれのドメインの一部を形成するコンピュータのIPアドレス、および/またはネームサーバ(たとえば、図2および図6におけるネームサーバ20a~dを参照されたい)のIPアドレスを含む。その他の例示的なエントリは、それぞれのドメインに関するドメイン登録データ(たとえば、所有者の身元データ、課金データ、所有者の連絡先データ、たとえば、住所、電話番号、Eメールアドレス、ドメインネームの有効期限、現在のドメインレジストラの識別子など)を含む。さらに他の例示的なエントリは、それぞれのドメインが特定のカテゴリーに属するか否かの指標、またはそれぞれのドメインが属するカテゴリーの指標を含むことが可能である。たとえば、エントリは、それぞれのドメインがブラックリスト/ホワイトリストに載っているかどうか、それぞれのドメインが不正なドキュメントおよび/または迷惑通信(スパム)を配信することが知られているかどうか、それぞれのドメインがボットネットの一部であるかどうか、またはサービス妨害(DoS)攻撃に携わっているかどうかを示すことが可能である。別の例示的なエントリは、それぞれのドメインが、選択された地理的エリアまたはサブネットワーク(たとえば、ジオフェンシング)内に配置されているかどうかを示すことが可能である。さらに別の例示的なエントリは、それぞれのドメインが所有されているか、または選択された営利エンティティーに関連しているかを示すことが可能である。その他の例は、以降で論じられることになる。
【0030】
[0046]いくつかの実施形態においては、それぞれのレコードを識別するインデックスは、ドメインネームに従って決定され、それゆえに、それぞれのレコードのさまざまなエントリとドメインネームとの間における関連付けを可能にする。それぞれのドメインネームは、FQDNまたはPQDNであることが可能である。1つの例示的なインデックスは、それぞれのドメインネームに従って算出されたハッシュを含む。本明細書におけるハッシュは、ハッシュ関数を適用した結果を示す。ハッシュ関数は、任意のサイズのデータを、所定の普遍的な上限を有する数値にマッピングする特別な種類の数学関数である。文字列は、数値として表現されることが可能であるので、ハッシュ関数は、任意の文字列を数値に、たとえば256ビット整数にマッピングすることも可能である。例示的なハッシュ関数は、数ある中でも、H(n)=n mod m(nおよびmは、整数である)、チェックサムハッシュ(たとえば、巡回冗長検査(CRC))、ならびに、メッセージダイジェストハッシュファミリー(たとえば、MD5)およびセキュアハッシュファミリー(たとえば、SHA-3)などの暗号ハッシュ関数を含む。ハッシュ関数を適用した結果に従って算出されるインデックスが、本明細書においてはハッシュインデックスとみなされる。
【0031】
[0047]いくつかの実施形態においては、ドメインネームデータベース50のレコードを識別するインデックスは、複数のハッシュ関数H、...、Hを採用するカッコウハッシュスキームを使用して算出される。そのようなハッシングの例が、図8において示されており、データベース50は、複数のハッシュテーブル51a~cを含む。それぞれのハッシュテーブルのそれぞれの行は、それぞれのドメインネームに従ってインデックス付けされた個別のレコードを表し、d(j=1、2、...)として示される。それぞれのレコードは、e(d)として示される少なくとも1つのエントリを含み、これは、たとえばそれぞれのドメインのIPアドレスを含むことが可能である。それぞれのハッシュテーブル51a~cにおいて、それぞれのレコードを識別するインデックスは、それぞれのドメインネームにハッシュ関数を適用することによって決定される。しかしながら、それぞれのテーブル51a~cは、個別のハッシュ関数を使用して、それぞれのインデックスを決定する。例示的なカッコウハッシュスキームにおいては、第1のハッシュ関数を使用してそれぞれのレコードに関するインデックスを算出することによって、レコードが連続的に挿入される。それぞれのインデックスによって示される行が空である場合には、現在のレコードが、その行へと挿入される。それぞれの行が既に占有されている場合には、第2のハッシュ関数に従って別のハッシュインデックスが算出される、といった具合である。すべてのハッシュ関数に従って計算されたインデックスが、既に占有されている行を指している場合には、存在しているレコードのうちの1つが、現在のレコードによって置き換えられる。そしてそれぞれの行の前の占有物は、代替のロケーションに(すなわち、異なるハッシュ関数を使用して算出されたインデックスに)置かれ、場合によっては別のレコードに取って代わる。このプロセスは、すべてのレコードがいずれかのハッシュテーブル内に場所を見つけ出すまで再帰的に継続する。しかしながら、たとえば無限ループに入ることによって、この挿入プロセスが失敗する可能性がある。このケースにおいては、ハッシュテーブルは、ハッシュ関数の新たな選択を使用して再構築される。
【0032】
[0048]図9は、本発明のいくつかの実施形態によるPIRクエリ52およびPIR応答54の例示的な内容を示している。PIRクエリ52は、ドメインネームデータベース50の選択されたレコードを識別するインデックスの暗号化を含む暗号文を含むことが可能である。図9における例においては、インデックスは、ドメインネームのハッシュを含む。カッコウハッシングを使用する実施形態においては、それぞれのドメインネームに関して、クライアントデバイス12は、個別のハッシュ関数Hに従ってそれぞれが算出される複数の暗号化されたハッシュインデックスを送り出すことが可能である。そのような暗号化されたハッシュインデックスは、個々のPIRクエリへとパッケージ化されること、または単一のPIRクエリへとまとめられることが可能である。
【0033】
[0049]いくつかの実施形態においては、PIRクエリ52はさらに、それぞれのハッシュインデックスを算出するために使用されるハッシュ関数の指標(本明細書においては、hとして示されている)を含む。たとえば、hは、ソフトウェアバージョン番号、または、それぞれのクライアントによって使用されるハッシュ関数が、ドメインネームデータベース50のハッシュテーブルを構築するために使用されるハッシュ関数と一致するかどうかをDNSサーバシステム20が決定することを可能にする何らかのその他のパラメータ値を含むことが可能である。ハッシングの一貫性をチェックすることについてのさらなる詳細は、図13に関連して、以降で提供される。
【0034】
[0050]データベース50が、それぞれのインデックスによって識別されるレコードを含む場合には、PIR応答54は、それぞれのデータベースレコードの少なくとも1つのエントリeの暗号化を含む暗号文を返すことが可能である。そのようなレコードがデータベース50に存在しない場合には、いくつかの実施形態は、所定のダミーエントリ(たとえば、データベース50が現在、要求されたインデックスを伴うレコードを有していないということを示す所定のシンボル)の暗号化を伴って応答することが可能である。
【0035】
[0051]図10は、本発明のいくつかの実施形態によるクライアントデバイス12上で実行する例示的なコンポーネントを示している。そのようなソフトウェアは、オペレーティングシステム(OS)62を含むことが可能であり、オペレーティングシステム(OS)62は、数ある中でも、Microsoft Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、またはAndroid(登録商標)などの任意の広く利用可能なオペレーティングシステムであることが可能である。OS62は、クライアントデバイス12のハードウェアと、数ある中でも、クライアントアプリケーション64およびドメインネームリゾルバ66を含む一式のアプリケーションとの間におけるインターフェースを提供する。クライアントアプリケーション64は、数ある中でも、ワードプロセッシング、スプレッドシート、画像処理、ゲーミング、電子通信、ウェブ閲覧、およびソーシャルメディアアプリケーションなどの任意のコンピュータプログラムを総称的に表す。いくつかの実施形態においては、アプリケーション64は、たとえば、特定のインターネットドメインへの/特定のインターネットドメインからのトラフィックをフィルタリング/ブロックすること、入ってくるおよび/または出ていく電子通信が悪意あるコードもしくは迷惑コンテンツ(スパム)を含むかどうかを決定することなどによって、それぞれのクライアントシステムにコンピュータセキュリティサービスを提供する。
【0036】
[0052]アプリケーション64は、たとえば一式のHTTP要求を介して、コンテンツサーバ16に接続してデータをやり取りすることが可能である。そのようなやり取りの一部として、アプリケーション64は、ドメインネームdの指標をドメインネームリゾルバ66へ伝送することと、それに応答して、それぞれのドメインを特徴付けるドメインネームデータベースエントリe(d)をリゾルバ66から受信することとが可能である。シンプルなDNSルックアップの例においては、e(d)は、ドメインdのIPアドレスを含むことが可能である。別の例においては、e(d)は、ドメインdに関する一式の登録データ(たとえば、それぞれのドメインの所有者の身元)を含むことが可能である。さらに別の例においては、e(d)は、ドメインdにアクセスすることがそれぞれのクライアントをコンピュータセキュリティの脅威にさらすかどうか、たとえばドメインdが不正ドキュメントを配信することが知られているかどうかの指標を含むことが可能である。一般には、e(d)は、ドメインネームデータベース50に格納されてドメインdのもとでインデックス付けされた任意のデータを含むことが可能である。
【0037】
[0053]いくつかの実施形態においては、ドメインネームリゾルバ66は、DNSサーバシステム20とのプライバシー保護DNSトランザクションに携わるように構成されている(図8も参照されたい)。したがってリゾルバ66は、アプリケーション64から受信されたドメインネームに従ってPIRクエリ52を定式化して、送り出すことが可能である。リゾルバ66はさらに、PIR応答54を受信し、平文データエントリe(d)を抽出し、それをアプリケーション64へ転送することが可能である。ドメインネームリゾルバ66はさらに、暗号化および/または復号オペレーションを実行するように構成された暗号エンジン68を含むことが可能である。いくつかの実施形態においては、エンジン68は、一式の準同型暗号アルゴリズム/手順を実施する。暗号エンジン68は、ソフトウェア、ハードウェア、またはそれらの組合せで実装されることが可能である。
【0038】
[0054]図10において示されている実施形態に対する代替実施形態においては、ドメインネームリゾルバ66は、クライアントデバイス12とは別個のマシン上で、たとえば、クライアントデバイス12を拡張ネットワーク15(図1を参照されたい)に接続するルータ14もしくは別のゲートウェイデバイス上で、またはリゾルバネームサーバ20a(図2)上で部分的にまたは全体的に実行することが可能である。
【0039】
[0055]図11は、本発明のいくつかの実施形態によるドメインネームリゾルバ66によって実行されるステップの例示的なシーケンスを示している。示されているリゾルバは、アプリケーション64および/またはリモートサーバから受信される通信などのトリガーイベントを待つことが可能である。イベントが検知された場合には、イベントのタイプに従って一連のアクションが決定される。検知されたイベントがアプリケーション64からのドメインルックアップ要求を含む場合(ステップ206が「はい」を返す場合)には、次いでステップ208において、いくつかの実施形態は、受信されたルックアップ要求に従ってネームサーバを選択することが可能である。いくつかの実施形態においては、別々のサーバによって別々のタイプのドメインネームサービスが供給されることが可能である。たとえば、いくつかのネームサーバは、IPアドレスを返すことの専用とされることが可能であり、その一方でその他のネームサーバは、コンピュータセキュリティに関連したデータベースエントリを返すことが可能である。さらに、ドメインネームサービスが、選択されたドメインのIPアドレスを決定することを含む場合には、いくつかの実施形態は、選択されたネームサーバにクエリを行う場合にのみPIRを採用することが可能である(以降の詳細を参照されたい)。
【0040】
[0056]次にステップ210において、リゾルバ66は、それぞれのドメインネームに従って少なくとも1つのPIRクエリ52を定式化することが可能である。ステップ210は、数ある中でも、選択されたハッシュ関数をそれぞれのドメインネームに適用することと、暗号エンジン68を採用して、たとえば準同型暗号化手順/アルゴリズムを使用して、ハッシングの結果を暗号化することとを含むことが可能である。エンジン68は、当技術分野において知られている任意の準同型暗号化手順、たとえばGSW(Gentry-Sahai-Waters)などの完全準同型暗号化スキームの暗号化アルゴリズムを使用することが可能である。いくつかのそのような手順は、たとえばHofheinz D.、Rosen A.(編)Theory of Cryptography(暗号化の理論)、TCC 2019、コンピュータサイエンスの講義ノート、vol 11892、Springer、ChamにおけるGentry C.、Halevi S.「Compressible FHE with Applications to PIR(PIRへの適用を伴う圧縮可能なFHE)」において詳述されているように、クライアント側および/またはサーバ側での計算負荷を低減することを目的としたさらなるデータ操作を含む。暗号化されたPIRクエリは次いで、選択されたネームサーバへ伝送される。
【0041】
[0057]トリガーイベントが、サーバからのPIR応答54を受信することを含む場合には、ステップ216においてリゾルバ66は、暗号エンジン68を使用して、応答54に含まれている暗号文を復号し、それゆえに、クエリされたドメインネームに関連付けられたデータベースエントリ(たとえば、IPアドレス)を復元することが可能である。ドメインネームデータベース50が、それぞれのドメインネームに関連付けられたエントリを含まない場合には、それぞれの暗号文を復号することは、失敗を示すダミーメッセージを生成する可能性がある。さらなるステップ218が、復号手順の結果をアプリケーション64へ伝送することが可能である。ステップ216は、準同型復号手順/アルゴリズム、たとえば、Hofheinz D.、Rosen A.(編)Theory of Cryptography(暗号化の理論)、TCC 2019、コンピュータサイエンスの講義ノート、vol 11892、Springer、ChamにおけるGentry C.、Halevi S.「Compressible FHE with Applications to PIR(PIRへの適用を伴う圧縮可能なFHE)」において記述されている完全準同型を使用する。
【0042】
[0058]図12は、本発明のいくつかの実施形態によるDNSサーバシステム20の例示的なコンポーネントを示している。示されているコンポーネントは、単一の物理マシン上で、または別々の通信可能に結合されたマシン上で実行することが可能である。サーバシステム20は、図2において示されている一式のネームサーバを総称的に表す。
【0043】
[0059]いくつかの実施形態においては、データベースメンテナンスモジュール26が、新たなドメインネームに対応するレコードを挿入すること、選択されたレコードに変更をもたらすこと(たとえば、ドメイン登録データを変更すること、それぞれのドメインのクラスタ割り振りを変更すること、それぞれのドメインをブラックリストから外すことなど)、および/または期限切れのレコードを削除することによって、ドメインネームデータベース50を最新に保つように構成されている。モジュール26の例示的なオペレーションが、図13において示されている。一連のステップ222~224において、モジュール26は、データベース更新条件が満たされているかどうかをチェックすることが可能である。いくつかの実施形態は、スケジュールに従って(たとえば、1時間ごとに)またはオンデマンドでデータベースの更新を実行することが可能である。代替実施形態においては、更新エージェントが、入ってくるドメインデータ55をキューに蓄積し、キューが満杯になったときに、更新条件が満たされていると決定することが可能である。更新条件が満たされている場合には、ステップ226が、たとえば一式の新たなレコードを挿入することによって、データベース50の更新を試みることが可能である。ステップ226は、たとえばそれぞれの新たなドメインネームにハッシュ関数を適用することによって、ハッシュインデックスを計算することと、その新たに計算されたインデックスを伴ってレコードをテーブル行へと挿入することとを含むことが可能である。しかしながら、そのような挿入オペレーションは、たとえばハッシュコリジョンのケースにおいては、すなわち、2つの異なるドメインネームが同じインデックスにハッシュする場合には、失敗する可能性がある。カッコウハッシュスキームを使用する実施形態においては、コンフリクトは、第2のハッシュ関数などを使用して別のインデックスを計算することによって解決されることが可能である。そのような実施形態においてさえ、複数のハッシュコリジョンに起因して、特定のレコードを挿入することが可能ではない場合がある。そのような状況は、新たな一式のハッシュ関数を選択することと、その新たなハッシュ関数を使用してデータベース50に再びインデックス付けすることとを必要とする場合がある(図13におけるステップ230~232)。
【0044】
[0060]成功したデータベース更新に応答して、ハッシュ関数が変わった場合には、ステップ234が、一式の更新されたハッシュ関数仕様56をクライアントへ配信することが可能である(たとえば、図7図10、および図12を参照されたい)。それゆえにステップ234は、ハッシングの一貫性、すなわち、すべてのクライアントが、データベース50にインデックス付けする際に使用されたハッシュ関数のバージョンを一貫して使用してPIR要求を定式化することを確実にすることが可能である。
【0045】
[0061]いくつかの実施形態においては、DNSサーバシステム20のPIRモジュール28が、クエリ52に従ってドメインネームデータベース50への暗号化されたルックアップを実行するように構成されている。本明細書における「暗号化されたルックアップ」という用語は、暗号化された形態でPIRクエリ52に含まれているインデックスによって示されるレコードを、それぞれのインデックスを復号することなく、データベース50から検索することを指す。暗号化されたルックアップ手順は、上記の方程式[2]によって例示されているように、暗号化されたデータに対して加算および乗算などの一式の演算を直接実行して、暗号化された結果を生み出すことを含むことが可能である。そのため、暗号化されたルックアップは、たとえばDNS-over-HTTPSなどの従来のバージョンの暗号化されたDNSにおいて行われることが可能であるような、最初にクエリを復号して平文インデックスを生成し、その平文インデックスをそれぞれのデータベースへとルックアップすることを包含しない。
【0046】
[0062]PIRモジュール28の例示的なオペレーションが、図14において示されている。一連のステップ242~244が、入ってくるPIRクエリを求めてリッスンすることが可能である。クエリが受信された場合には、ステップ246が、ハッシングの一貫性に関してチェックを行うことが可能である。別の言い方をすれば、ステップ246は、それぞれのクエリが、ドメインネームデータベース50にインデックス付けするために使用されたのと同じハッシュ関数仕様に従って定式化されたかどうかを決定することが可能である。そうでない場合には、ステップ254において、DNSサーバシステム20は、エラーメッセージをそれぞれの要求側クライアントへ返すことが可能である。いくつかの実施形態はさらに、更新されたハッシュ関数仕様56をそれぞれのクライアントへプッシュすることが可能である。
【0047】
[0063]ハッシングが一貫しているという決定に応答して、ステップ248が、PIRクエリ52に従ってデータベース50への暗号化されたルックアップを実行する。ステップ248は、たとえば、Hofheinz D.、Rosen A.(編)Theory of Cryptography(暗号化の理論)、TCC 2019、コンピュータサイエンスの講義ノート、vol 11892、Springer、ChamにおけるGentry C.、Halevi S.「Compressible FHE with Applications to PIR(PIRへの適用を伴う圧縮可能なFHE)」において記述されているような、当技術分野において知られている任意の方法を採用することが可能である。一連のステップ250~252が次いで、PIR応答54を定式化して、応答54をそれぞれのクライアントデバイスへ伝送することが可能である。
【0048】
[0064]さまざまなドメインネームサービスが、上述されているように、プライバシーを保護する様式で実施されることが可能である。いくつかの例示的な使用事例シナリオは、下記を含む。
【0049】
ドメインネームをアドレスに解決すること(IPアドレスルックアップ)
[0065]本明細書において記述されているシステムおよび方法の1つの用途は、DNSルックアップを実行すること、すなわち、選択されたドメインネームに関連付けられたIPアドレスを返すことにある。そのような実施形態においては、ドメインネームデータベース50は、ドメインネームによってインデックス付けされた一式のIPアドレスを格納することが可能である。PIRクエリ52は、それぞれのドメインネームをハッシュすることによって決定されるインデックスの暗号化、および場合によってはその他のデータ(たとえば、質問Qのエンコーディング、たとえば図9を参照されたい)を含むことが可能である。それに応答して、DNSサーバシステム20は、それぞれのIPアドレスの暗号化を含むPIR応答54を返すことが可能である。クライアント(またはそれぞれのクライアントと通信状態にある別のマシン)は次いで、電子通信(たとえばウェブ閲覧)をルーティングするためにそれぞれのIPアドレスを復号して使用することが可能である。
【0050】
[0066]ドメインネーム解決(ドメインネームをIPアドレスにマッピングすること)を実行するように構成された一実施形態においてドメインネームリゾルバ66によって実行されるステップの例示的なシーケンスが、図15において示されている。DNSルックアップを最適化するために、いくつかの実施形態は、TLDおよび/または権威ネームサーバの以前に解決されたIPアドレスを格納するローカルキャッシュを保持することが可能である。選択されたドメインネームを解決したいという要求を受信したことに応答して、いくつかの実施形態は、ドメインネーム階層の連続したレベルを通じて反復することが可能である。それぞれのFQDNがIPアドレスにまだ完全には解決されていない場合には、ステップ268が、それぞれのドメインネームのPQDNを決定することが可能である。そのPQDNは、階層の選択されたレベルまで(たとえばTLDレベル、たとえば「.org」(図6を参照されたい)まで)指定されたFQDNの一部を含むことが可能である。ステップ270において、リゾルバ66は、キャッシュルックアップを実行することによって、それぞれのPQDNが以前に解決されているかどうかをチェックすることが可能である。「はい」の場合には、キャッシュは、次のレベルのFQDN36を解決することが可能であるネームサーバに関するIPアドレスを保持することが可能である。「いいえ」の場合、ステップ272が、現在のPQDNを解決するためのネームサーバを選択することが可能である。PQDNが「.org」である一例においては、選択されるネームサーバは、ルートネームサーバ20bであることが可能である、といった具合である。
【0051】
[0067]いくつかの実施形態は、PIR手順がプロセッサ負荷および通信サイズの両方において計算コストが高いという観察に依存している。さらに、上で図6に関連して示されているように、典型的なDNSルックアップは、たとえば、最初にルートネームサーバへの、そしてTLDネームサーバへの、そして最終的には権威サーバへの複数の反復クエリを必要とする場合がある。別の言い方をすれば、単一のDNSルックアップが、PIR手順の多様性のコストを増加させる場合がある。問題をさらに複雑にしているのは、DNSルックアップが比較的頻繁に行われるという事実であり、たとえば、単一のウェブページにアクセスすることは、複数の連続したDNSルックアップオペレーションを含む場合がある。
【0052】
[0068]いくつかの実施形態はさらに、いくつかのFQDNがその他のFQDNよりもプライバシーに敏感であるという観察に依存している。たとえば、ユーザは、自分の閲覧履歴の選択された部分(たとえば、数ある中でも、オンラインニュースまたはウィキペディアなどのリファレンスサイトにアクセスすること)を明らかにすることには、その他の部分(たとえば、アダルトコンテンツサイトにアクセスすること)とは対照的に、さほど懸念を抱かない可能性がある。さらに、FQDNのいくつかの部分は、その他の部分よりもプライバシーに敏感である場合がある。たとえば、図6における例を使用すると、ユーザが.orgトップレベルドメインにアクセスすることを望んでいるということを知ることは、ユーザがwikimedia.orgにアクセスすることを実際に試みているということを知ることに比べて、情報量またはプライバシー上の懸念がはるかに少ない。
【0053】
[0069]したがって、PIRによって生じる計算コストのうちのいくらかを軽減するために、いくつかの実施形態は、DNSクエリのサブセットに関してのみPIRを意図的に使用する。PIRを使用するか否かを決定することは、プライバシー条件が満たされているかどうかを決定すること、すなわち、現在のクエリがプライバシーに敏感であるか否かを決定することを含むことが可能である。図15における例示的なステップ274が、プライバシー条件を評価する。現在のクエリがプライバシーに敏感であるとみなされる場合には(YES分岐)、一連のステップ276~277が、準同型暗号化(PIR)を使用して現在のクエリを定式化することが可能である。そうでない場合には、現在のクエリは、従来のDNSを使用して実行されることが可能である。
【0054】
[0070]いくつかの実施形態は、プライバシー条件が満たされているかどうかを、選択されたネームサーバの権威ゾーンに従って決定する。たとえば、いくつかの実施形態は、PIRクエリをTLDネームサーバ20cおよび/または権威ネームサーバ20dへのみ伝送し、その一方で、ルートネームサーバ20bにアドレス指定されたクエリは、従来のDNSを使用して定式化される。別の言い方をすれば、そのような実施形態は、従来の(非プライベート)DNSクエリを介してFQDN36のTLDトークンを、そしてPIRを使用してドメイントークンおよび/またはプレフィックストークンを解決する。
【0055】
[0071]リゾルバ66のいくつかの実施形態は、プライバシー条件が満たされているかどうかをFQDN36のトークンのうちの少なくとも1つに従って決定する。たとえば、リゾルバ66は、選択されたPQDN、たとえば、「google.com」、「wikipedia.org」、「amazonaws.com」などを解決するために従来の(すなわち、非PIR)DNSクエリを、そして「facebook.com」、「pornhub.com」等などのその他のPQDNを解決するためにPIRクエリを使用することが可能である。そのような実施形態は、いくつかのオンラインアクティビティー(たとえば、グーグル検索を行うこと、ニュースサイトにアクセスすること、天気予報またはスポーツスコアを調べることなど)が、その他のオンラインアクティビティー(たとえば、アダルトコンテンツにアクセスすること、映画をストリーミングすること、選択された電子商取引、オンラインバンキング、またはソーシャルメディアポータルにアクセスすることなど)に比べて、プライバシー上の懸念が少ない場合があるという観察に依存している。別の例においては、ユーザがクラウドコンピューティングサービス(たとえば、Amazon,Inc.からのAmazon Web Services(商標)、またはMicrosoftのAzure(商標))にアクセスしているということを知ることは、情報量またはプライバシー上の懸念があまり多くない場合がある。なぜなら、それぞれのドメインは、数千の異なるサブドメインをホストする場合があるからである。選択的なPIRクエリを行うことを可能にするために、いくつかの実施形態は、プライバシーに敏感であるとみなされるPQDNのブラックリスト、および/または従来のDNSを使用して検索されることが可能であるPQDNのホワイトリストを保持する。例示的なホワイトリストは、数ある中でも、検索エンジンドメイン、ニュースドメイン、オンライン広告および/またはその他のコンテンツ配信ドメイン、ならびに、さまざまなクラウドコンピューティングサービス(ファイルホスティング、サービスとしてのインフラストラクチャーなど)を提供するドメインを含むことが可能である。ステップ274は次いで、ホワイトリストにおける現在のPQDN/ドメインネームトークンを調べることを含むことと、それぞれのPQDN/トークンがホワイトリスト上にある場合には従来のクエリを、そしてそうでない場合にはPIRクエリを送信することを決断することとが可能である。代替として、リゾルバ66は、ブラックリストを調べることと、それぞれのPQDN/トークンがブラックリスト上にある場合にはPIRクエリを、そしてそうでない場合には従来のDNSクエリを送信することを決断することとが可能である。
【0056】
[0072]選択的なPIRクエリを行うことは、サブドメインレベルで実行されることも可能である。いくつかの実施形態は、ドメインレベルのPQDNを漏洩することが特定のプライバシー上の懸念を構成しない場合があるケース(たとえば、google.com)においては、いくつかのサブドメイントークンを漏洩することが問題となる場合があるという観察に依存している。たとえば、「www.google.com」は、「meet.google.com」に比べて、プライバシーに敏感ではない場合がある。そのため、いくつかの実施形態は、プレフィックストークンおよび/またはFQDNのホワイトリストおよび/またはブラックリストを保持し、PIRまたは従来のDNSを使用してそれぞれの権威サーバにクエリを行うかどうかを決定する。シンプルな実施形態は、「www」サブドメインを解決するためには従来のDNSクエリを、そしてそれ以外の場合にはPIRクエリを使用することが可能である。
【0057】
[0073]表1は、FQDNと、それらのFQDNの関連付けられたプライバシー問題との例をさらにいくつか提供する。
【0058】
【表1】
【0059】
[0074]PIRを使用するための条件が満たされているとステップ274が決定した場合には、ステップ276において、リゾルバ66は、サーバシステム20との間で一式の準同型暗号化パラメータ(たとえば、キー、共有秘密、ノンスなど)をネゴシエートすることが可能である。いくつかの実施形態は、準同型暗号化スキームを使用して、プライベート/パブリックキーペア、またはおよび暗号化/復号キーペアを生成する。次いでステップ277が、たとえば、それぞれのPQDNをハッシュして、それぞれのハッシュと、場合によっては質問Q(図9を参照されたい)の指標などのその他のデータとを、ネゴシエートされたペアのパブリックキーを使用して暗号化することによって、PIRクエリ52を定式化することが可能である。
【0060】
[0075]PIRを使用するための条件が満たされていないとステップ274が決定したケースにおいては、いくつかの実施形態は、従来のDNSクエリを定式化することが可能である(図3図4を参照されたい)。ステップ278はさらに、たとえば、DNS over HTTPsプロトコルのもとでセッション暗号化キーのペアをネゴシエートすることと、キーペアのパブリックキーを使用してそれぞれのDNSクエリを暗号化することとを含むことが可能である。いくつかの実施形態においては、従来のクエリおよびPIRクエリの両方が暗号化され、DNS over HTTPsなどのプロトコルを介して送信される。そのような戦略は、それぞれの伝送のインテグリティーを確実にすることなど、前記プロトコルのその他の特徴から利益を得ることが可能である。しかしながらPIRクエリは、従来のDNSクエリに比較して、暗号化の追加のレイヤを含み、その追加のレイヤは、PIRを可能にする準同型暗号化に相当する。DNS over HTTPsまたは類似のプロトコルに対応する暗号化のレイヤは、サーバによって除去される。それにもかかわらず、そのような復号は、従来のDNSクエリの平文バージョンを生成するが、サーバは、PIRクエリから準同型暗号化レイヤを除去せず、したがってPIRクエリは、DNSサーバシステム20によって読み取り不可能なままである。
【0061】
[0076]クエリを適切なネームサーバへ伝送すると、ステップ282において、リゾルバ66は、それぞれのサーバからの応答を待つことが可能である。さらなる一連のステップ284~286が、現在のPQDNに関連付けられたIPアドレスをサーバの応答から抽出することが可能であり、それぞれのIPアドレスをさらなる使用のためにキャッシュすることが可能である。それぞれのIPアドレスは、現在のFQDNに関連付けられた完全に解決されたIPアドレスのネームサーバのアドレスを含むことが可能である。サーバの応答がPIR応答54を含む場合には、ステップ284は、準同型復号手順を使用して、封入されたIPアドレスを復号することを含むことが可能である。
【0062】
[0077]いくつかの実施形態は、PIRの実質的な計算コストを軽減するためにさらなる最適化を実施する。そのような一例は、レコードの総数に従って、ならびに/または所望のルックアップパフォーマンスおよび/もしくは所望のプライバシーレベルに従って、ドメインネームデータベース50をサブユニット/バケットへと分割することによってドメインネームデータベース50のサイズを低減することを含む。そのような実施形態においては、ドメインネームの完全なデータベースを検索する代わりに、サーバは、それぞれのドメインのレコードを保持するバケット内のみを見ることになる。より小さなバケットは、ルックアップ時間におけるより大きな減少を可能にするが、それと同時に、より少ないプライバシーを提供する。なぜなら、それぞれのドメインのアイデンティティーの不確かさが低下するからである。スピードとプライバシーとの間における妥協を提供することが可能である例示的なバケットサイズは、216=65536であり、すなわち、それぞれのバケットは、最大で65536個の異なるドメインネームの間において解決を行うことを可能にすることができる。それぞれのバケットはさらに、図8に関連して上述されているように複数のハッシュテーブルを格納することが可能である。個々のバケットは、個別のコンピュータシステムによって操作されること、同じコンピュータの個別のプロセッサコアに割り当てられることなどが可能である。
【0063】
[0078]そしていくつかの実施形態は、ハッシュ関数(たとえば、FNV-1などのFowler-Noll-Voハッシュの変形)を使用して、それぞれのレコードを保持するバケットを識別することが可能である。ハッシュ関数の出力は、モジュロ演算を適用することによってバケットの数まで切り捨てられることが可能である。サーバ側では、例示的なバケットインデックスが、下記のように算出されることが可能である。
【0064】
(d,Q)=H([Q,d])modN, [4]
dおよびQは、それぞれドメインネームおよび質問(たとえば、A対AAAA)を示し、Hは、バケット化するために使用されるハッシュ関数を示し、Nは、バケット数を示し、[Qd]は、Qおよびdの連結を示す。バケットインデックスを計算する示されている様式は、一例としてのみ意図されており、本発明の範囲を限定するものではないということを当業者なら理解するであろう。
【0065】
[0079]データベース50におけるそれぞれのドメインネームに関して、データベースメンテナンスモジュール26は、Iを算出し、インデックスIを伴ってバケットにそれぞれのレコードを置くことが可能である。レコードを置くことは、上述されているように、カッコウハッシングスキームを適用して、複数のハッシュテーブルのうちの1つの中にそれぞれのレコードに関するロケーションを見つけ出すことなどを含むことが可能である。次いでクライアント側では、リゾルバ66は、Iを算出し、それをPIRクエリ52に添付することが可能である。バケットインデックスは、平文として送信されること、または暗号化されることが可能である。PIRクエリ52を受信した場合には、サーバ20は、クエリ52に従ってバケットを決定し、次いでそれぞれのバケットの内容に従ってPIRを実行して、PIR応答54を生成することが可能である。
【0066】
コンピュータセキュリティおよび分析アプリケーション
[0080]いくつかの実施形態は、コンピュータセキュリティおよびデータ分析アプリケーションに適合されることが可能である。そのような使用事例シナリオにおいては、ドメインネームデータベース50は、それぞれのドメインのメンバーシップを示すレコードをドメインの特定のクラスまたはカテゴリーに格納する。いくつかの実施形態においては、カテゴリーは、コンピュータセキュリティに関連している場合がある。たとえば、あるカテゴリーは、アダルトコンテンツを配信することによって特徴付けられるドメインを含む場合がある。別の例示的なカテゴリーは、詐欺的なアクティビティーに携わっていることが知られているドメインのブラックリストを含む。別の例示的なカテゴリーは、サービス妨害攻撃に関与することによって特徴付けられるドメイン(たとえば、特定のボットネットのメンバー)を含む。
【0067】
[0081]その他のカテゴリーは、データ分析のさまざまな側面に関連している場合がある。たとえば、ドメインは、コンテンツ(たとえば、ゲーミング、ニュース、リファレンス、教育など)に従ってクラス/カテゴリーへとグループ化されることが可能である。その他のグループ化/分類基準は、所有権および/または商業上の関係を含むことが可能である。たとえば、同じ企業によって、または同じコングロマリットもしくは企業連合のメンバーによって所有されているすべてのドメインは、個別のドメインカテゴリーへと、ともにグループ化されることが可能である。別の分類基準は、特定のオンラインアクティビティーにおけるメンバーシップを含む。たとえば、特定のオンラインゲームに、および/または特定のゲームメーカーによって制作されたゲームに関連付けられたすべてのドメインネームは、個別のカテゴリーにおいてともにグループ化されることが可能である。さらに別の分類基準は、ジオロケーションを含むことが可能であり、特定の地理的領域、国などからのドメインどうしは、ともにグループ化されることが可能である。その他の例示的な基準は、ドメイン年齢/最初の登録の時刻を含むことが可能である。
【0068】
[0082]分類のさらに別の例においては、共有されている特徴またはその他のタイプのドメイン間の類似性に従ってドメインどうしがクラスタへとグループ化されることが可能である。図16は、本発明のいくつかの実施形態によるドメイン30a~bのセットおよびクラスタ60a~bのセットを示している。クラスタメンバーシップは排他的である必要はなく、図16の例においては、ドメイン30bはクラスタ60a~bの両方に属する。いくつかの実施形態においては、2つのドメインの類似性は、N次元の抽象特徴空間においてそれらの2つのドメインを分離するハイパーディスタンスに従って評価されることが可能である。しかしながら類似性は、ドメインの特徴自体に基づく必要はない。そのような一例においては、2つのドメインが一連のDNSクエリにおいて頻繁に一緒に出現する場合に、それらのドメインは類似しているとみなされることが可能であり、そのような2つのドメインは、同じクラスタに置かれることが可能である。別の例においては、クラスタは、教師なし学習アルゴリズムを使用するニューラルネットワーク分類器によって自動的に生成されることが可能である。個々のクラスタは、個別のドメインカテゴリーに相当する場合があり、または相当しない場合もある。たとえば、「悪意ある」ドメインカテゴリーは、複数のクラスタを含む場合があり、それぞれのクラスタは、個別のボットネットからのドメインを含む場合がある。
【0069】
[0083]ドメインのクラスタリングおよび/または分類自体(すなわち、ドメインどうしをカテゴリーまたはクラスタへとグループ化すること)は、この記述の範囲を超えており、データマイニングの技術分野において知られている任意の方法を使用して達成されることが可能である。この記述は、PIRを介して既存の分類にアクセスすることに焦点を合わせる。いくつかの実施形態においては、ドメインネームデータベース50に格納されるレコードは、ドメインが特定のカテゴリーに属するか否かを示すブール値を含むことが可能である。代替として、レコードは、それぞれのドメインが属するカテゴリー/クラスタのラベルまたはその他の識別子を含むことが可能である。そのようなレコードは、上で概説されているPIRクエリおよび応答メカニズムを使用してアクセスされることが可能である。いくつかの実施形態においては、PIRクエリ52は、データベース50へのインデックス(たとえば、ドメインネームのハッシュ)の暗号化を含み、その一方でPIR応答54は、それぞれのドメインのカテゴリー/クラスタメンバーシップを示すデータベースエントリをエンコードする暗号文を含むことが可能である。
【0070】
[0084]いくつかの実施形態は、DNSルックアップに関連して上述されているバケット化戦略を採用して、セキュリティおよび/または分析アプリケーションにおけるサーバの応答をスピードアップすることも可能である。個々のバケットは、マルウェア、詐欺、ボットネット、スパム等など、個々のセキュリティカテゴリーに対応することが可能である。1つのそのようなカテゴリー内のレコードの数が所定のしきい値を超えた場合には、いくつかの実施形態は、それぞれのカテゴリーに対応するデータベースをサブバケットへと分割することと、ハッシングを使用して、それぞれの個々のレコードを含むバケットを識別することとが可能である。クエリを発行する際に、クライアントは、バケット/カテゴリーインデックスを平文または暗号文で送信することが可能である。
【0071】
[0085]図17は、本明細書において記述されている方法のうちのいくつかを実行するようにプログラムされたコンピューティングアプライアンス80の例示的なハードウェア構成を示している。アプライアンス80は、クライアントデバイス12a~f、ルータ14、およびサーバ20のうちのいずれかに相当することが可能である。示されているアプライアンスは、パーソナルコンピュータであり、サーバ、モバイル電話、タブレットコンピュータ、およびウェアラブルコンピューティングデバイスなどのその他のコンピューティングデバイスは、わずかに異なる構成を有する場合がある。プロセッサ82は、一式の信号および/またはデータを用いて計算および/または論理オペレーションを実行するように構成された物理デバイス(たとえば、マイクロプロセッサ、半導体基板上に形成されたマルチコア集積回路)を含む。そのような信号またはデータは、エンコードされて、プロセッサ命令、たとえばマシンコードの形態でプロセッサ82へ配信されることが可能である。プロセッサ82は、中央処理装置(CPU)および/またはグラフィックスプロセッシングユニット(GPU)のアレイを含むことが可能である。
【0072】
[0086]メモリユニット84は、オペレーションを実行する過程でプロセッサ82によってアクセスまたは生成されるデータおよび/または命令を格納する揮発性のコンピュータ可読メディア(たとえばダイナミックランダムアクセスメモリ(DRAM))を含むことが可能である。入力デバイス86は、数ある中でも、ユーザがデータおよび/または命令をアプライアンス80へと導入することを可能にするそれぞれのハードウェアインターフェースおよび/またはアダプタを含む、コンピュータキーボード、マウス、およびマイクロフォンを含むことが可能である。出力デバイス88は、数ある中でも、モニタなどのディスプレイデバイスおよびスピーカー、ならびに、それぞれのコンピューティングデバイスがデータをユーザに通信することを可能にするグラフィックカードなどのハードウェアインターフェース/アダプタを含むことが可能である。いくつかの実施形態においては、入力および出力デバイス86~88は、共通のハードウェア(たとえば、タッチスクリーン)を共有する。ストレージデバイス92は、ソフトウェア命令および/またはデータの不揮発性の格納、読み取り、および書き込みを可能にするコンピュータ可読メディアを含む。例示的なストレージデバイスは、磁気および光ディスク、ならびにフラッシュメモリデバイス、ならびに、CDおよび/またはDVDディスクおよびドライブなどのリムーバブルメディアを含む。ネットワークアダプタ94は、電子通信ネットワーク(たとえば、図1におけるネットワーク13および15)に、ならびに/またはその他のデバイス/コンピュータシステムに結合された物理リンクを介してデータを通信するための機械回路、電気回路、およびシグナリング回路を含む。アダプタ94は、さまざまな通信プロトコルを使用してデータを伝送および/または受信するように構成されることが可能である。
【0073】
[0087]コントローラハブ90は、複数のシステムバス、ペリフェラルバス、および/もしくはチップセットバス、ならびに/または、プロセッサ82とアプライアンス80のハードウェアコンポーネントのうちの残りとの間における通信を可能にするすべてのその他の回路を総称的に表す。たとえば、コントローラハブ90は、メモリコントローラ、入力/出力(I/O)コントローラ、および割り込みコントローラを含むことが可能である。ハードウェア製造業者によっては、いくつかのそのようなコントローラは、単一の集積回路へと組み込まれる場合があり、および/またはプロセッサ82と統合される場合がある。別の例においては、コントローラハブ90は、プロセッサ82をメモリ84に接続するノースブリッジ、ならびに/またはプロセッサ82をデバイス86、88、92、および94に接続するサウスブリッジを含むことが可能である。
【0074】
[0088]上述されている本発明の態様は、さまざまな形態のソフトウェア、ファームウェア、およびハードウェア、またはそれらの組合せで実装されることが可能であるということも、当業者にとっては明らかであろう。たとえば、本発明の特定の部分は、1つまたは複数の機能を実行する専用のハードウェアロジックとして記述される場合がある。この専用のロジックは、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)を含むことが可能である。本発明の原理と整合する態様を実施するために使用される実際のソフトウェアコードまたは専用の制御ハードウェアは、本発明を限定するものではない。それゆえに、本発明の態様のオペレーションおよび動作は、特定のソフトウェアコードへの参照を伴わずに記述されたが、当業者なら、本明細書における記述に基づいて、それらの態様を実施するためのソフトウェアおよび制御ハードウェアを設計することが可能であろうということが理解される。
【0075】
[0089]上述されている例示的なシステムおよび方法は、さまざまなドメインネームサービスを、それぞれのサービスの受益者のプライバシーを保護しながら実行することを可能にする。たとえば、いくつかの実施形態は、ドメインネームとIPアドレスとの間における変換を可能にし、実際の変換/データベースルックアップを実行するネームサーバは、それぞれのドメインネームおよびIPアドレスを認識しない。いくつかの実施形態は、準同型暗号化を使用して、サーバ側での個人情報検索(PIR)手順を可能にする。サーバは、暗号文をクライアントに返し、クライアントは次いで、それぞれの暗号文を復号して、所望のデータベースエントリ(たとえばIPアドレス)を生成する。
【0076】
[0090]従来のDNSにおいては、クライアントクエリおよび/またはサーバ応答は暗号化されず、したがっていかなる第三者も、それぞれのDNSデータを覗き見することが可能である。DNSテクノロジーにおけるさらに新たな開発は、クエリおよび/またはクライアント応答を暗号化し、それによって原則としてデータは、転送中の間は秘密に保たれる。しかしながら、DNSのそのような変種においては、ネームサーバは、依然としてDNSクエリを復号して、平文のドメインネームを生成する。そのような従来のDNSとは対照的に、いくつかの実施形態においては、PIR手順は、暗号化された入力を使用するので、ネームサーバは、もはや平文でのトランザクションデータにアクセスできない。そのため、いくつかの実施形態は、従来のDNSソリューションに比較して、より強力なレベルのプライバシーを確実にする。
【0077】
[0091]PIR手順は、計算と、それぞれのクライアント/サーバトランザクションにおいてやり取りされるデータの量との点で比較的コストがかかる。コストを軽減するために、いくつかの実施形態は、PIRを使用するドメインネーム解決のすべての段階を実行するとは限らない。代わりに、クライアントは、従来のDNS、またはDNS over HTTPSなどの非準同型暗号化された変種を使用してトップレベルドメイン(TLD)ネームサーバにクエリを行うことと、ドメインネーム階層のドメインおよび/またはサブドメインレベルでそれぞれのドメインネームを解決する選択されたネームサーバにクエリを行う場合にのみPIR手順を使用することとが可能である。そのような戦略は、後者のネームサーバによって提供される情報が、たとえばドメインネームのTLD部分よりもプライバシーにとって比較的重要であるという観察に依存している。いくつかの実施形態はさらに、それぞれのFQDNの少なくとも1つのトークンに従って選択的にPIRを適用する。別の言い方をすれば、特定のトークン(たとえば、「google.com」、「www」等)を解決することは、従来のDNSを介して行われることが可能であり、その一方でその他のさらにプライバシーに関わるトークンを解決することは、PIRを介して実行されることが可能である。
【0078】
[0092]DNSデータベースは、数百万の個別のレコードを保持することが可能である。そのようなデータベースのサイズだけでも、PIRクエリを実行不可能にする場合がある。そのような制限に対処するために、いくつかの実施形態はさらに、バケット化アプローチを採用して、データベースのサイズを、したがってPIR計算の複雑さ、ならびにクエリおよびサーバ応答のサイズを低減する。データベースサイズを65536個のレコードへ低減することが、DNSルックアップを実行するために必要とされる平均時間を1s以下に保つことを可能にし、それは、現在のシステムおよび方法の応用を商業的におよび技術的に実行可能にするということをコンピュータ実験が明らかにしている。このアプローチの注意事項は、データベースのサイズを低減することによって、プライバシーも本質的に低減されるということである。しかしながら、データベースサイズのいくつかの選択は、プライバシーとスピードとの間における許容可能な妥協を提供する場合がある。さらに、PIR手順は原則として並列化可能であるので、並列コンピューティング構成を使用して、たとえば、複数の相互接続されたプロセッサコアまたはグラフィカルプロセッシングユニット(GPU)ファームを使用してサーバ側でのPIRをセットアップすることによって、スピードにおけるさらなる利得が達成されることが可能である。
【0079】
[0093]本発明のいくつかの実施形態は、コンピュータセキュリティ、アプリケーションコントロール、ペアレントコントロール等など、ドメインネーム解決とは異なるさまざまなその他のシナリオに適合されることが可能である。1つの例示的な使用事例シナリオにおいては、クライアント上で、ルータ/ネットワークゲートウェイ上で、またはリモートセキュリティサーバ上で実行することが可能であるコンピュータセキュリティコンポーネントが、それぞれのクエリを復号することなくデータベースルックアップを実行するように構成されたサーバとのPIRのやり取りに携わることが可能である。データベースレコードは、特定のドメインがコンピュータセキュリティに関連する特定のカテゴリーに関連付けられているかどうか、たとえば、それぞれのドメインがブラックリストに載っているかどうか、または詐欺的なアクティビティーに携わっているかどうかなどを示すことが可能である。ペアレンタルコントロールの使用事例シナリオにおいては、データベースレコードは、たとえば、特定のドメインがアダルト素材を配信しているかどうかを示すことが可能である。アプリケーションコントロールの使用事例シナリオにおいては、データベースレコードは、それぞれのドメインが特定の種類のオンラインアクティビティー(ゲーミング、ソーシャルメディアなど)に関連付けられているかどうかを示すことが可能である。そのため、いくつかの実施形態は、特定のドメインへの、もしくは特定のドメインからのトラフィックを選択的にフィルタリングすること、またはユーザが特定のドメインにアクセスするのをブロックすることを可能にする。そのようなフィルタリング/ブロッキングは、当技術分野において知られているが、従来のトラフィック制御手順とは対照的に、本発明のいくつかの実施形態においては、実際のデータベースルックアップを実行するサーバは、それぞれの情報が要求されているドメインネームを認識しない。これは、たとえば、ユーザのプライバシーを損なうことなく、サーバおよび関連付けられているドメインネームデータベースが、セキュリティ/ペアレンタルコントロール/アプリケーションコントロールサービスのプロバイダとは異なるエンティティーによって所有および/または運用されることを可能にする。
【0080】
[0094]上記の実施形態は、本発明の範囲から逸脱することなく多くの方法で変更されることが可能であるということが当業者にとっては明らかであろう。したがって本発明の範囲は、下記の特許請求の範囲およびそれらの法的均等物によって決定されるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
【国際調査報告】