[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20240101543A - Privacy-Protecting Domain Name Service (DNS) - Google Patents

Privacy-Protecting Domain Name Service (DNS) Download PDF

Info

Publication number
KR20240101543A
KR20240101543A KR1020247009223A KR20247009223A KR20240101543A KR 20240101543 A KR20240101543 A KR 20240101543A KR 1020247009223 A KR1020247009223 A KR 1020247009223A KR 20247009223 A KR20247009223 A KR 20247009223A KR 20240101543 A KR20240101543 A KR 20240101543A
Authority
KR
South Korea
Prior art keywords
domain name
query
response
domain
private
Prior art date
Application number
KR1020247009223A
Other languages
Korean (ko)
Inventor
엘레나 부르차누
마달리나 볼보차누
에마누엘라 할레르
제오르지아나 미루나 로스카
라두 티티우
보그단 씨. 체베레
Original Assignee
비트데펜더 아이피알 매니지먼트 엘티디
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 비트데펜더 아이피알 매니지먼트 엘티디 filed Critical 비트데펜더 아이피알 매니지먼트 엘티디
Publication of KR20240101543A publication Critical patent/KR20240101543A/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4552Lookup mechanisms between a plurality of directories; Synchronisation of directories, e.g. metadirectories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Data Mining & Analysis (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Storage Device Security (AREA)

Abstract

설명된 시스템 및 방법은 프라이버시를 보호하는 DNS 교환을 수행할 수 있도록 한다. 일부 실시예들에서, 클라이언트 머신은 네임서버와의 개인 정보 검색(private information retrieval, PIR) 교환에 참여한다. 클라이언트로부터 도메인 네임에 따라 생성된 암호화된 쿼리(쿼리)를 수신하는 것에 응답하여, 상기 네임서버는 각각의 쿼리를 복호화하지 않고 도메인 네임 데이터베이스로부터 레코드(예를 들어, IP 주소)를 추출할 수 있다. 일부 실시예들은 동형 암호화(homomorphic encryption)를 사용함으로써 이러한 정보 검색을 달성한다.The described systems and methods enable performing privacy-preserving DNS exchange. In some embodiments, a client machine participates in a private information retrieval (PIR) exchange with a name server. In response to receiving an encrypted query generated according to a domain name from a client, the name server may extract records (e.g., IP addresses) from the domain name database without decrypting each query. . Some embodiments achieve this information retrieval by using homomorphic encryption.

Description

프라이버시-보호 도메인 네임 서비스(DNS)Privacy-Protecting Domain Name Service (DNS)

본 발명은 온라인 통신의 프라이버시를 보호하기 위한 특히 원격 엔티티가 인터넷 사용자의 브라우징(browsing) 습관에 관한 정보를 획득하는 것을 방지하는 위한 시스템 및 방법에 관한 것이다.The present invention relates to systems and methods for protecting the privacy of online communications, particularly for preventing remote entities from obtaining information about the browsing habits of Internet users.

인터넷 브라우징은 현대 생활과 업무에서 없어서는 안될 요소가 되었다. 인터넷 액세스가 폭발적으로 증가함에 따라, 악의적 엔티티 뿐만 아니라 일부 상업적 엔티티는 개별 인터넷 사용자의 브라우징 기록 및 / 또는 패턴에 액세스하고 이를 분석하는 데 점점 더 많은 관심을 보이고 있다. 그리고 이러한 정보는 광고를 타겟팅하고 각 사용자에게 다양한 서비스를 제공하는 데 사용될 수 있다. 그러나 동일한 유형의 정보를 사용하여 성적 취향, 정치 및 종교적 견해, 인종, 약물 사용, 지능 등과 같은 사용자의 성격의 보다 민감한 측면에 따라 사용자를 프로파일링 및/또는 타겟팅할 수 있다. 점점 더 많은 인터넷 사용자가 프라이버시에 대해 우려하고 있으며, 회사 및/또는 국가가 이들의 온라인 상 행동을 모니터링하도록 허용하는 것이 어떻게 자신의 권리에 영향을 미치고 이들을 다양한 종류의 위협과 남용에 노출시키는지 우려하고 있다.Internet browsing has become an essential part of modern life and work. As Internet access explodes, some commercial entities, as well as malicious entities, are increasingly interested in accessing and analyzing the browsing history and/or patterns of individual Internet users. And this information can be used to target advertisements and provide various services to each user. However, the same type of information may be used to profile and/or target users based on more sensitive aspects of their personality, such as sexual orientation, political and religious views, race, drug use, intelligence, etc. More and more Internet users are concerned about their privacy and how allowing companies and/or countries to monitor their online behavior affects their rights and exposes them to various kinds of threats and abuses. I'm doing it.

사용자의 브라우징 기록이 수집되는 일반적인 방법은 DNS(도메인 네임 서비스) 요청을 통하는 것이다. DNS는 일반적으로 도메인 네임을 네트워크(예: IP) 주소로 변환한 다음 전자 장치가 통신 네트워크를 통해 데이터를 교환할 수 있도록 하는 서비스를 말한다. DNS는 원래 프라이버시가 아닌 속도와 편의성을 위해 설계되었기 때문에 전통적으로 DNS 공급자와 인터넷 서비스 제공자는 클라이언트가 발행한 DNS 요청에 사실상 방해받지 않고 액세스할 수 있었다. 최근 몇 년 동안 전통적인 DNS에 대한 대안을 제공하기 위한 일부 노력이 있었다. 몇 가지 예로는 그 중에서 특히 'DNS over TLS(Transport Layer Security)' 및 'DNS over Hypertext Transfer Protocol Secure(HTTPS)'로 알려진 프로토콜 모음(suite)이 있다. 이러한 버전의 DNS는 클라이언트 및/또는 서버 응답의 개별 요청을 암호화하므로 원칙적으로 엔드 클라이언트(end client)와 네임서버를 제외한 어떤 엔티티도 개별 데이터에 액세스할 수 없다. 예를 들어, 이러한 프로토콜은 인터넷 서비스 제공자 및/또는 악의적인 제3자가 사용자의 DNS 요청을 스누핑하는 것을 방지할 수 있다. 그러나 데이터는 클라이언트와 네임서버 간의 전송 중에만 암호화되기 때문에 이러한 프로토콜은 DNS 공급자 자체가 개별 사용자의 브라우징 데이터를 수집하는 것을 방지하지 않는다.A common way a user's browsing history is collected is through DNS (Domain Name Service) requests. DNS generally refers to a service that translates domain names into network (e.g. IP) addresses and then allows electronic devices to exchange data over communications networks. Because DNS was originally designed for speed and convenience, not privacy, DNS providers and Internet service providers have traditionally had virtually unimpeded access to DNS requests issued by clients. There have been some efforts in recent years to provide alternatives to traditional DNS. Some examples include the suite of protocols known as 'DNS over Transport Layer Security (TLS)' and 'DNS over Hypertext Transfer Protocol Secure (HTTPS)', among others. This version of DNS encrypts individual requests from the client and/or server responses so that, in principle, no entity except the end client and name server has access to the individual data. For example, these protocols can prevent Internet service providers and/or malicious third parties from snooping on users' DNS requests. However, because data is only encrypted in transit between the client and the name server, these protocols do not prevent DNS providers themselves from collecting individual users' browsing data.

따라서 보다 유능하고 강력한 프라이버시 보호 도메인 네임 서비스를 개발할 상당한 필요가 있다.Therefore, there is a significant need to develop more capable and robust privacy-preserving domain name services.

일 태양에 따르면, 도메인 네임 서비스(DNS) 룩업(lookup)을 수행하는 방법은, 도메인 네임의 표시자(indicator)를 수신하는 것에 응답으로, 프라이버시 조건이 상기 도메인 네임에 따라 만족되는지 여부를 결정하기 위해, 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함한다. 상기 방법은, 상기 프라이버시 조건이 만족되는지 여부를 결정하는 것에 응답으로, 만약 그렇다면, 도메인 네임 데이터베이스 내의 레코드의 위치를 나타내는 해시 인덱스(hash index)의 암호화를 포함하는 프라이빗 쿼리를 생성하는 것(formulating)을 추가로 포함하고, 상기 해시 인덱스는 동형 암호화(homomorphic encryption) 절차에 따라 암호화되고, 상기 해시 인덱스는 상기 도메인 네임에 따라 결정된다. 상기 방법은, 상기 프라이빗 쿼리를 생성하는 것에 응답으로, 상기 프라이빗 쿼리에 따라 상기 도메인 네임 데이터베이스로의 암호화된 룩업을 수행하도록 구성된 네임서버로 상기 프라이빗 쿼리를 전송하여, 상기 레코드의 암호화를 생성하는 것과; 그리고 상기 네임서버로부터 상기 레코드의 암호화를 포함하는 프라이빗 응답을 수신하는 것에 응답으로, 동형 복호화 절차에 따라 상기 프라이빗 응답의 콘텐츠를 복호화하는 것을 포함한다.According to one aspect, a method of performing a domain name service (DNS) lookup includes, in response to receiving an indicator of a domain name, determining whether privacy conditions are satisfied according to the domain name. In order to do so, it includes employing at least one hardware processor in the computer system. The method, in response to determining whether the privacy condition is satisfied, formulating a private query that, if so, includes encryption of a hash index indicating the location of the record in the domain name database. It further includes, wherein the hash index is encrypted according to a homomorphic encryption procedure, and the hash index is determined according to the domain name. The method includes, in response to generating the private query, sending the private query to a name server configured to perform an encrypted lookup to the domain name database according to the private query, thereby producing encryption of the record. ; and in response to receiving a private response containing encryption of the record from the name server, decrypting the contents of the private response according to a homomorphic decryption procedure.

또 다른 태양에 따르면, 컴퓨터 시스템은, 도메인 네임의 표시자를 수신하는 것에 응답으로, 프라이버시 조건이 상기 도메인 네임에 따라 만족되는지 여부를 결정하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함한다. 상기 적어도 하나의 하드웨어 프로세서는, 상기 프라이버시 조건이 만족되는지 여부를 결정하는 것에 응답으로, 만약 그렇다면, 도메인 네임 데이터베이스 내의 레코드의 위치를 나타내는 해시 인덱스의 암호화를 포함하는 프라이빗 쿼리를 생성하도록 추가적으로 구성되고, 상기 해시 인덱스는 동형 암호화 절차에 따라 암호화되고, 그리고 상기 해시 인덱스는 상기 도메인 네임에 따라 결정된다. 상기 적어도 하나의 하드웨어 프로세서는, 상기 프라이빗 쿼리를 생성하는 것에 응답으로, 상기 프라이빗 쿼리에 따라 도메인 네임 데이터베이스로의 암호화된 룩업을 수행하도록 구성된 네임서버로 상기 프라이빗 쿼리를 전송하여, 상기 레코드의 암호화를 생성하도록; 그리고 상기 네임서버로부터 상기 레코드의 암호화를 포함하는 프라이빗 응답을 수신하는 것에 응답으로, 동형 복호화 절차에 따라 상기 프라이빗 응답의 콘텐츠를 복호화하도록, 추가로 구성된다.According to another aspect, a computer system includes at least one hardware processor configured to, in response to receiving an indicator of a domain name, determine whether a privacy condition is satisfied according to the domain name. the at least one hardware processor is further configured to, in response to determining whether the privacy condition is satisfied, generate a private query that, if so, includes encryption of a hash index indicating the location of the record in the domain name database, The hash index is encrypted according to a homomorphic encryption procedure, and the hash index is determined according to the domain name. The at least one hardware processor, in response to generating the private query, transmits the private query to a name server configured to perform an encrypted lookup to a domain name database according to the private query to perform encryption of the record. to create; and in response to receiving a private response including encryption of the record from the name server, decrypt the content of the private response according to a homomorphic decryption procedure.

또 다른 태양에 따르면, 비일시적 컴퓨터 판독가능 매체는, 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금, 도메인 네임의 표시자를 수신하는 것에 응답으로, 프라이버시 조건이 상기 도메인 네임에 따라 만족되는지를 결정하게 하는 명령을 저장한다. 또한, 상기 명령은 상기 컴퓨터 시스템으로 하여금, 상기 프라이버시 조건이 만족되는지 여부를 결정하는 것에 응답으로, 만약 그렇다면, 도메인 네임 데이터베이스 내의 레코드의 위치를 나타내는 해시 인덱스의 암호화를 포함하는 프라이빗 쿼리를 생성하게 하고, 상기 해시 인덱스는 동형 암호화 절차에 따라 암호화되고, 상기 해시 인덱스는 상기 도메인 네임에 따라 결정된다. 또한, 상기 명령은 상기 컴퓨터 시스템으로 하여금, 상기 프라이빗 쿼리를 생성하는 것에 응답으로, 상기 프라이빗 쿼리에 따라 상기 도메인 네임 데이터베이스로 암호화된 룩업을 수행하도록 구성된 네임서버로 상기 프라이빗 쿼리를 전송하여, 상기 레코드의 암호화를 생성하게 하고; 그리고 상기 네임서버로부터 상기 레코드의 암호화를 포함하는 프라이빗 응답을 수신하는 것에 응답하여, 동형 복호화 절차에 따라 상기 프라이빗 응답의 콘텐츠를 복호화하도록 한다.According to another aspect, a non-transitory computer-readable medium, when executed by at least one hardware processor of a computer system, causes the computer system, in response to receiving an indicator of a domain name, to set a privacy condition to the domain name. Stores a command that determines whether it is satisfied according to . The instructions also cause the computer system, in response to determining whether the privacy condition is satisfied, to generate a private query that includes an encryption of a hash index indicating the location of the record in the domain name database, and if so, the computer system is configured to: , the hash index is encrypted according to a homomorphic encryption procedure, and the hash index is determined according to the domain name. The instructions also cause the computer system, in response to generating the private query, to transmit the private query to a name server configured to perform an encrypted lookup to the domain name database in accordance with the private query to retrieve the record. generate an encryption of; And in response to receiving a private response containing encryption of the record from the name server, decrypt the contents of the private response according to a homomorphic decryption procedure.

또 다른 태양에 따르면, 서버 컴퓨터 시스템은 복수의 클라이언트들과 DNS(Domain Name Service) 트랜잭션에 참여하도록 구성된다. 상기 서버 컴퓨터 시스템은 상기 복수의 클라이언트들 중의 클라이언트로부터 프라이빗 쿼리를 수신하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함하고, 상기 프라이빗 쿼리는 도메인 네임 데이터베이스 내의 레코드의 위치를 나타내는 해시 인덱스의 암호화를 포함하고, 상기 해시 인덱스는 동형 암호화 절차에 따라 암호화되고, 상기 해시 인덱스는 도메인 네임에 따라 결정된다. 상기 적어도 하나의 하드웨어 프로세서는, 상기 프라이빗 쿼리를 수신하는 것에 응답으로, 상기 프라이빗 쿼리에 따라 상기 도메인 네임 데이터베이스로의 암호화된 룩업을 수행하여, 상기 레코드의 암호화를 생성하도록; 그리고 상기 레코드의 암호화를 포함하는 프라이빗 응답을 상기 클라이언트에게 전송하도록, 추가적으로 구성된다.According to another aspect, a server computer system is configured to participate in Domain Name Service (DNS) transactions with a plurality of clients. the server computer system includes at least one hardware processor configured to receive a private query from a client of the plurality of clients, the private query comprising encryption of a hash index indicating the location of a record in a domain name database, The hash index is encrypted according to a homomorphic encryption procedure, and the hash index is determined according to the domain name. wherein the at least one hardware processor, in response to receiving the private query, performs an encrypted lookup to the domain name database according to the private query to produce an encryption of the record; and transmit a private response including encryption of the record to the client.

본 발명의 전술한 태양들 및 이점들은 다음의 상세한 설명을 읽고 다음의 도면들을 참조함으로써 더 잘 이해될 것이다:
도 1은 본 발명의 일부 실시예에 따른 예시적인 프라이버시 보호 전자 통신 시스템을 나타낸다.
도 2는 본 발명의 일부 실시예에 따른 복수의 통신적으로 결합된 네임서버들을 포함하는 예시적인 DNS(Domain Name Service) 서버 시스템을 나타낸다.
도 3은 종래 기술에서 알려진 바와 같은 전형적인 DNS 트랜잭션을 나타낸다.
도 4는 종래 기술에서 알려진 바와 같은 DNS 쿼리 및 응답을 보여준다.
도 5는 본 발명의 일부 실시예에 따른, 인터넷 도메인의 복수의 예시적인 PQDN(partially qualified domain name, 부분 주소 도메인 네임) 및 예시적인 FQDN(fully qualified domain name, 전체 주소 도메인 네임)을 보여준다.
도 6은 본 발명의 일부 실시예에 따른 예시적인 도메인 네임 스페이스를 나타낸다.
도 7 은 본 발명의 일부 실시예에 따른 DNS 트랜잭션을 보여주며, 상기 트랜잭션은 프라이빗 쿼리(private query) 및 프라이빗 응답(private reply)을 포함한다.
도 8은 본 발명의 일부 실시예에 따른 도메인 네임 데이터베이스의 예시적인 콘텐츠를 보여준다.
도 9는 본 발명의 일부 실시예에 따른 예시적인 PIR(Private Information Retrieval, 개인 정보 검색) 쿼리 및 예시적인 PIR 응답을 보여준다.
도 10은 본 발명의 일부 실시예에 따른 클라이언트 시스템 상에서 실행되는 예시적인 구성요소들을 나타낸다.
도 11 은 본 발명의 일부 실시예에 따른 클라이언트 시스템 DNS 분해기(resolver , 변환기, 해석기)에 의해 수행되는 단계들의 예시적인 시퀀스를 나타낸다.
도 12는 본 발명의 일부 실시예에 따른 DNS 서버 시스템 상에서 실행되는 예시적인 구성요소들을 보여준다.
도 13 은 본 발명의 일부 실시예에 따른 DNS 서버 데이터베이스 유지관리 모듈(DNS server database maintenance module)에 의해 수행되는 단계들의 예시적인 시퀀스를 나타낸다.
도 14는 본 발명의 일부 실시예에 따른 DNS 서버 PIR 모듈에 의해 수행되는 단계들의 예시적인 시퀀스를 나타낸다.
도 15는 본 발명의 일부 실시예에 따른 DNS 룩업을 수행하기 위해 클라이언트 DNS 분해기(리졸버, 해석기)에 의해 수행되는 단계들의 예시적인 시퀀스를 나타낸다.
도 16은 본 발명의 일부 실시예에 따른 클러스터로 그룹화된 도메인들의 예시적인 세트를 나타낸다.
도 17은 본 명세서에서 설명되는 방법 및 알고리즘의 일부를 수행하도록 구성된 컴퓨팅 어플라이언스의 예시적인 하드웨어 구성요소들을 보여준다.
The foregoing aspects and advantages of the present invention will be better understood by reading the following detailed description and referring to the following drawings:
1 illustrates an exemplary privacy preserving electronic communication system in accordance with some embodiments of the present invention.
2 illustrates an exemplary Domain Name Service (DNS) server system including a plurality of communicatively coupled name servers in accordance with some embodiments of the present invention.
Figure 3 shows a typical DNS transaction as known in the art.
Figure 4 shows DNS queries and responses as known in the prior art.
Figure 5 shows a plurality of example partially qualified domain names (PQDNs) and example fully qualified domain names (FQDNs) of an Internet domain, according to some embodiments of the invention.
Figure 6 illustrates an example domain name space according to some embodiments of the invention.
Figure 7 shows a DNS transaction according to some embodiments of the invention, where the transaction includes a private query and a private reply.
Figure 8 shows example content of a domain name database according to some embodiments of the invention.
9 shows an example Private Information Retrieval (PIR) query and an example PIR response according to some embodiments of the present invention.
Figure 10 illustrates example components executing on a client system according to some embodiments of the invention.
11 illustrates an exemplary sequence of steps performed by a client system DNS resolver (translator) in accordance with some embodiments of the invention.
Figure 12 shows example components running on a DNS server system according to some embodiments of the invention.
13 illustrates an example sequence of steps performed by a DNS server database maintenance module in accordance with some embodiments of the invention.
Figure 14 shows an example sequence of steps performed by a DNS server PIR module in accordance with some embodiments of the invention.
Figure 15 shows an example sequence of steps performed by a client DNS resolver (resolver) to perform a DNS lookup according to some embodiments of the present invention.
Figure 16 shows an example set of domains grouped into clusters according to some embodiments of the invention.
Figure 17 shows example hardware components of a computing appliance configured to perform some of the methods and algorithms described herein.

이하의 설명에서, 구조들 사이에서 언급된 모든 연결들은 직접적인 동작 연결들 (operative connections) 또는 매개 구조들을 통한 간접적인 동작 연결들일 수 있는 것으로 이해된다. 구성 요소들의 세트는 하나 이상의 구성 요소를 포함한다. 구성 요소의 임의의 열거는 적어도 하나의 구성 요소를 언급하는 것으로 이해된다. 복수의 구성 요소는 적어도 2개의 구성 요소를 포함한다. 달리 요구되지 않는다면, 기술된 어떠한 방법 단계들도 설명된 특정 순서로 반드시 실행될 필요는 없다. 제2 구성 요소로부터 유도되는 제1 구성 요소(예컨대, 데이터)는 제2 구성 요소와 동일한 제1 구성 요소는 물론, 제2 구성 요소 그리고 선택적으로는 다른 데이터를 처리하는 것에 의해 생성된 제1 구성 요소를 포함한다. 파라미터에 따라 결정 또는 판정하는 것은 파라미터에 따라 그리고 선택적으로는 다른 데이터에 따라 결정 또는 판정하는 것을 포함한다. 달리 구체화되지 않는다면, 일부 수량/데이터의 표시자는 수량/데이터 그 자체, 또는 수량/데이터 그 자체와 상이한 표시자일 수 있다. 컴퓨터 프로그램은 과업을 수행하는 프로세서 명령들의 시퀀스이다. 본 발명의 일부 실시예들에서 설명되는 컴퓨터 프로그램들은 독립형 소프트웨어 개체들 또는 다른 컴퓨터 프로그램들의 서브-개체들(예를 들어, 서브루틴들, 라이브러리들)일 수 있다. 네트워크 도메인은 컴퓨터 네트워크의 개별 부분을 형성하는 상호 연결된 컴퓨팅 장치의 그룹으로 구성된다. 인터넷 도메인은 공중 인터넷(public internet)에 연결된 네트워크 도메인이다. 도메인 네임은 네트워크/인터넷 도메인의 주소를 식별하는 레이블/별칭이다. 여기서 '데이터베이스'라는 용어는 데이터의 임의의 조직화된 무리(collection)를 나타내기 위해 사용된다. 컴퓨터 판독 가능 매체는 자성, 광, 및 반도체 저장 매체와 같은 비-일시적 매체(non-transitory media)(예컨대, 하드 드라이브, 광 디스크, 플래시 메모리, DRAM)는 물론, 전도성 케이블 및 파이버 옵틱 링크와 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 그 중에서도, 본원에 설명된 방법들을 수행하기 위해 프로그래밍된 하드웨어(예컨대, 하나 이상의 프로세서들)는 물론, 본원에서 설명된 방법들을 수행하기 위한 명령들을 인코딩하는 컴퓨터-판독 가능 매체를 포함하는 컴퓨터 시스템을 제공한다.In the following description, it is understood that all connections mentioned between structures may be direct operative connections or indirect operative connections through intermediate structures. A set of components includes one or more components. Any enumeration of components is understood to refer to at least one component. A plurality of components includes at least two components. Unless otherwise required, any method steps described are not necessarily performed in the specific order described. A first component (e.g., data) derived from a second component can be a first component generated by processing the same first component as the second component as well as the second component and, optionally, other data. contains elements. Determining or judging according to a parameter includes determining or judging according to a parameter and optionally according to other data. Unless otherwise specified, an indicator of some quantity/data may be the quantity/data itself, or an indicator that is different from the quantity/data itself. A computer program is a sequence of processor instructions that perform a task. The computer programs described in some embodiments of the invention may be stand-alone software objects or sub-objects (e.g., subroutines, libraries) of other computer programs. A network domain consists of a group of interconnected computing devices that form individual parts of a computer network. An Internet domain is a network domain connected to the public internet. A domain name is a label/alias that identifies the address of a network/Internet domain. The term 'database' is used here to refer to any organized collection of data. Computer-readable media includes non-transitory media such as magnetic, optical, and semiconductor storage media (e.g., hard drives, optical disks, flash memory, DRAM), as well as conductive cables and fiber optic links. Includes communication links. According to some embodiments, the present invention provides, among other things, hardware (e.g., one or more processors) programmed to perform the methods described herein, as well as encoding instructions for performing the methods described herein. A computer system including a computer-readable medium is provided.

후술하는 설명은 본 발명의 실시예들을 예시적으로 설명하는 것이며, 반드시 제한적인 것은 아니다.The following description describes embodiments of the present invention by way of example and is not necessarily limiting.

도 1은 본 발명의 일부 실시예에 따른 프라이버시 보호 전자 통신 시스템(10)을 보여준다. 예시적인 클라이언트 장치들(12a-f)의 세트는 웹 콘텐츠, 전자 메시지, 다양한 문서 등과 같은 데이터를 교환하기 위해, 통신 링크들 상에서 서로 및/또는 원격 콘텐츠 서버 컴퓨터(16)와 통신한다. 클라이언트 장치(12a-f)는 퍼스널 컴퓨터 시스템, 기업 메인프레임 컴퓨터, 모바일 컴퓨팅 플랫폼(예를 들어, 랩탑 컴퓨터, 태블릿, 이동 전화), 엔터테인먼트 장치(예를 들어, TV, 게임 콘솔), 웨어러블 장치(예를 들어, 스마트워치, 피트니스 밴드), 가전 제품(예를 들어, 냉장고, 세탁기), 및 프로세서, 메모리, 및 각각의 장치가 다른 장치/컴퓨터 시스템과 통신할 수 있게 하는 통신 인터페이스를 포함하는 임의의 다른 전자 장치를 포함할 수 있다.1 shows a privacy preserving electronic communication system 10 in accordance with some embodiments of the present invention. A set of exemplary client devices 12a-f communicate with each other and/or a remote content server computer 16 over communication links to exchange data such as web content, electronic messages, various documents, and the like. Client devices 12a-f may include personal computer systems, enterprise mainframe computers, mobile computing platforms (e.g., laptop computers, tablets, mobile phones), entertainment devices (e.g., televisions, gaming consoles), wearable devices (e.g., e.g., smartwatches, fitness bands), home appliances (e.g., refrigerators, washing machines), and any device that includes a processor, memory, and a communication interface that allows each device to communicate with other devices/computer systems. may include other electronic devices.

도 1의 예시적인 구성에서, 클라이언트 장치들(12a-e)은 근거리 통신망(LAN)과 같은 로컬 네트워크(13)에 의해 상호 연결된다. 하나의 예시적인 사용 사례 시나리오에서, 장치들(12a-e)은 가정 내의 전자 장치들을 나타내고, 로컬 네트워크(13)는 홈 네트워크를 나타낸다. 다른 사용 사례 시나리오에서, 클라이언트 장치들(12a-e)은 기업의 사무실 또는 부서에 위치하고, 기업 LAN에 의해 상호 연결된 컴퓨터들을 나타낼 수 있다. 장치(12a-e)는 광역 네트워크(WAN) 및/또는 인터넷과 같은 확장된 네트워크(15)에 추가로 연결될 수 있다. 일부 실시예들에서, 라우터(14)는 예를 들어, 로컬 네트워크(13)에 연결된 클라이언트들(12a-e)에 네트워크 주소들을 할당하고 이러한 주소들에 따라 개별적인 통신들을 라우팅함으로써, 로컬 네트워크(13) 내의 데이터 트래픽을 제어 및/또는 관리한다. 도 1에 표시된 바와 같은 일부 실시예들에서, 라우터(14)는 클라이언트 장치(12a-e)와 확장된 네트워크(15) 사이의 네트워크 트래픽의 적어도 일부가 라우터(14)를 통과한다(traverse)는 의미에서 로컬 네트워크(13)에 대한 게이트웨이로서 구성된다. 도 1의 예시적인 장치(12f)와 같은 다른 클라이언트 장치들은 로컬 네트워크(13)에 연결되지 않을 수 있지만, 그 대신에 예를 들어 이동 전화 네트워크 또는 공중 WiFi 핫스팟을 통해 확장된 네트워크(15)에 직접 연결할 수 있다.In the example configuration of Figure 1, client devices 12a-e are interconnected by a local network 13, such as a local area network (LAN). In one example use case scenario, devices 12a-e represent electronic devices within the home and local network 13 represents the home network. In another use case scenario, client devices 12a-e may represent computers located in a corporate office or department and interconnected by a corporate LAN. Devices 12a-e may be further connected to an extended network 15, such as a wide area network (WAN) and/or the Internet. In some embodiments, router 14 may, for example, assign network addresses to clients 12a-e connected to local network 13 and route individual communications according to these addresses. ) Control and/or manage data traffic within. In some embodiments, as shown in Figure 1, router 14 allows at least a portion of the network traffic between client devices 12a-e and extended network 15 to traverse router 14. In the sense it is configured as a gateway to the local network 13. Other client devices, such as the example device 12f of Figure 1, may not be connected to the local network 13, but instead directly to the extended network 15, for example via a mobile phone network or a public WiFi hotspot. You can connect.

도메인 네임 서비스(DNS) 서버 시스템(20)은 본 발명의 일부 실시예에 따른 클라이언트 장치(12a-f)에 프라이버시 보호 도메인 네임 서비스를 제공한다. 여기서 도메인 네임 서비스는 도메인 네임을 네트워크 주소로 변환하거나 그리고/또는 그 반대로 변환하는 것을 포함하며, 그리고 그 중에서도 도메인 등록 데이터(예: WHOIS 데이터) 및 특정 도메인이 도메인의 특정 범주/클러스터에 속하는지 여부, 도메인이 성인용 콘텐츠를 배포하는지 여부, 도메인이 악의적인 활동에 관여하는지 여부(예: 봇넷, 인터넷 사기) 등을 나타내는 표시자를 포함하는 다른 도메인 정보를 제공하는 것을 포함하는 것으로 이해된다. DNS 서버 시스템(20)은 일반적으로 도 2에 나타낸 예시적인 네임서버(20a-d)와 같은 통신적으로 결합된 컴퓨터들의 세트를 나타낸다. 이러한 각 네임 서버의 기능은 아래에 자세히 설명되어 있다. DNS 서버 시스템(20)으로 요청을 보내는 것은 각각의 요청을 네임서버(20a-d) 중 어느 하나로 보내는 것을 포함한다. Domain name service (DNS) server system 20 provides privacy preserving domain name services to client devices 12a-f in accordance with some embodiments of the present invention. Domain name services herein include the translation of domain names into network addresses and/or vice versa, and, inter alia, domain registration data (e.g. WHOIS data) and whether a particular domain belongs to a particular category/cluster of domains. , is understood to include providing other domain information, including indicators indicating whether the domain distributes adult content, whether the domain is involved in malicious activity (e.g. botnets, Internet fraud), etc. DNS server system 20 generally represents a set of communicatively coupled computers, such as the example name servers 20a-d shown in Figure 2. The functionality of each of these name servers is described in detail below. Sending a request to the DNS server system 20 includes sending each request to one of the name servers 20a-d.

클라이언트 장치(12a-f)와 콘텐츠 서버(16) 사이의 전형적인 데이터 교환은 몇 단계들을 포함한다. 전송은 통상적으로 콘텐츠 서버(16)의 네트워크 주소(예를 들어, 인터넷 프로토콜 - IP 주소)에 대한 정보(knowledge)를 필요로 한다. 종종 여러 가지 이유로 이 주소가 클라이언트 장치에 알려지지 않는 경우가 있다. 예를 들어, 다수의 미러 콘텐츠 서버 머신이 존재할 수 있으며, 클라이언트는 각 미러 서버의 현재 부하에 따라서 또는 클라이언트 장치의 현재 지리적 위치에 따라 가장 편리한 것으로 동적으로 지정될 수 있다. 그러나 클라이언트 장치는 서버(16)의 도메인 네임을 알 수 있다. 여기서 '도메인 네임'이라는 용어는 필요한 네트워크 주소의 임의의 별칭을 나타낸다. 콘텐츠 서버(16)에 대한 연결을 구축하기 위해, 따라서 각각의 클라이언트 장치 상에서 실행되는 소프트웨어 엔티티는 IP 주소 그 자체 대신, 각각의 도메인 네임에 액세스하기 위한 요청을 발행할 수 있다. 응답으로, 다른 소프트웨어 엔티티(예를 들어, 각각의 클라이언트 상에서 실행되는 운영 시스템의 구성요소)는 상기 요청을 인터셉트하고, 별칭/도메인 네임을 실제 네트워크 주소로 변환하려고 시도할 수 있으며, 이어서 상기 요청을 올바른 네트워크 위치로 전송할 수 있다. 이러한 변환은 도 1의 서버 시스템(20)과 같은 DNS 제공자를 인보크(호출, invoke)할 수 있다.A typical data exchange between client device 12a-f and content server 16 involves several steps. Transmission typically requires knowledge of the network address (e.g., Internet Protocol - IP address) of the content server 16. Often this address is not known to the client device for various reasons. For example, there may be multiple mirror content server machines, and clients may be dynamically assigned to the most convenient one depending on the current load on each mirror server or based on the current geographic location of the client device. However, the client device can know the domain name of the server 16. The term 'domain name' here refers to an arbitrary alias for the required network address. To establish a connection to the content server 16, a software entity running on each client device may therefore issue a request to access the respective domain name, instead of the IP address itself. In response, another software entity (e.g., a component of the operating system running on the respective client) may intercept the request, attempt to translate the alias/domain name to a real network address, and then You can send it to the correct network location. This conversion may invoke a DNS provider, such as server system 20 of Figure 1.

도 3-4는 본 기술분야에 알려진 DNS 프로토콜에 따른 일반적인 메시지 교환을 예시한다. 클라이언트 장치(12)는 DNS 쿼리(22)를 DNS 서버 시스템(20)으로 전송하고, 쿼리(22)는 인터넷 도메인(30)의 표시자 (예를 들어, 도 12에 도시된 바와 같은 도메인 네임) 및 질문(Q)의 유형의 표시자를 포함한다. 질문의 유형은 DNS 서버(20)에 의해 리턴된 DNS 리소스 레코드의 유형을 나타낸다. 예시적인 질문(question)은 인터넷 프로토콜(IPv4)의 4번째 버전으로 생성된 IP 주소를 요청하는 'A'와 인터넷 프로토콜(IPv6)의 6번째 버전으로 생성된 IP 주소를 반환하는 'AAAA'를 포함한다. 다른 예시적인 질문/리소스 레코드 유형은 'TXT', 'PTR', 'LOC' 등을 포함한다. 응답으로, DNS 서버 시스템(20)은 각각의 도메인 네임/별칭에 대응하는 리소스 레코드 네트워크의 인코딩을 포함하는 DNS 응답(24)을 요청하는 클라이언트에게 반환할 수 있다. 도 4의 예에서, 레코드의 유형은 32-비트 IPv4 형식의 IP 주소(40)이다. 몇몇 경우에, 예를 들어, DNS over HTTPS 프로토콜을 사용하는 시스템에서, DNS 쿼리22 및/또는 DNS 응답(24)이 암호화될 수 있다.Figures 3-4 illustrate a typical message exchange according to DNS protocols known in the art. Client device 12 sends a DNS query 22 to DNS server system 20, where query 22 is an indicator of an Internet domain 30 (e.g., a domain name as shown in FIG. 12). and an indicator of the type of question (Q). The type of question indicates the type of DNS resource record returned by the DNS server 20. Example questions include 'A', which requests an IP address generated with the 4th version of the Internet Protocol (IPv4), and 'AAAA', which returns an IP address generated with the 6th version of the Internet Protocol (IPv6). do. Other example question/resource record types include 'TXT', 'PTR', 'LOC', etc. In response, DNS server system 20 may return to the requesting client a DNS response 24 containing an encoding of the resource record network corresponding to each domain name/alias. In the example of Figure 4, the type of record is IP address 40 in 32-bit IPv4 format. In some cases, for example, in systems using the DNS over HTTPS protocol, DNS queries 22 and/or DNS responses 24 may be encrypted.

도 5는 인터넷 도메인의 예시적인 도메인 네임을 보여준다. 도메인 네임은 구분 기호(delimiter symbol)(34)(도시된 예에서, 점)에 의해 분리된 토큰/레이블(32a-d)의 정렬된 시퀀스를 통해 각각의 도메인을 완전하고 명백하게 특정하는 FQDN(fully qualified domain name)(36)으로 구성될 수 있다. FQDN 토큰들(32a-d)의 서브세트/서브시퀀스를 포함하는 FQDN(36)의 프래그먼트 (단편)는 일반적으로 PQDN(partially qualified domain name)으로 알려져 있다. 항목(38a-c)들은 FQDN(36)의 다양한 예시적인 PQDN을 나타낸다. FQDN(36)과 달리, 각 PQDN(38a-c)은 어느 정도의 모호성으로 각각의 도메인을 특정하는데, 다시 말해서, 동일한 특성적 PQDN을 갖는 다수의 FQDN이 존재할 수 있다. Figure 5 shows example domain names for Internet domains. A domain name is a fully qualified domain name (FQDN) that fully and unambiguously identifies each domain through an ordered sequence of tokens/labels 32a-d separated by delimiter symbols 34 (dots in the example shown). qualified domain name) (36). A fragment of FQDN 36 containing a subset/subsequence of FQDN tokens 32a-d is commonly known as a partially qualified domain name (PQDN). Items 38a-c represent various example PQDNs of FQDN 36. Unlike FQDN 36, each PQDN 38a-c specifies each domain with some degree of ambiguity, that is, there may be multiple FQDNs with the same characteristic PQDN.

토큰의 시퀀스로서의 도메인 네임 표현(도 5 참조)은 도6에 도시된 바와 같이 도메인 네임 스페이스의 트리와 같은 계층적 표현과 일치하고, 여기서, FQDN(36)의 각 토큰(32a-d)은 트리의 가지(branch)에 대응하고, 구분자(예를 들어, 점)의 각 인스턴스는 분기점(branch point)에 대응한다. 도메인 네임 계층은 적어도, 루트 레벨(root level)('.'), com, net, fashion, tv와 같은 토큰과 ro, fr 등과 같은 국가 표시 토큰을 포함하는 최상위 도메인(TLD, top level domain) 레벨, wikipedia, facebook 등과 같은 토큰을 포함하는 도메인 레벨, 및 다양한 도메인별 접두어 토큰(domain-specific prefix token)을 포함하는 하위 도메인 레벨을 포함하는 몇 가지 주목할 만한 레벨이 있다. 따라서 개별 토큰들로부터 FQDN(36)을 결합하는 것은 도 6에서 설명된 바와 같이, 엔드 리프(end-leaf)로부터 루트까지의 트리 계층을 지나가는 것에 대응한다. 명확성을 기하기 위해, TLD 레벨에서 도메인 네임을 특징짓는 토큰(일반적으로 FQDN(36)의 마지막 토큰)은 여기에서 TLD 토큰으로 간주된다. 마찬가지로, 도메인 레벨에서 도메인 네임을 특징짓는 토큰(일반적으로 FQDN(36)의 끝에서 두 번째 토큰)은 여기에서 도메인 토큰으로 간주된다. 마지막으로, FQDN(36)에서 도메인 토큰 앞에 있는 모든 토큰은 여기에서 접두어 토큰(prefix token)으로 간주된다.The representation of a domain name as a sequence of tokens (see Figure 5) corresponds to a tree-like hierarchical representation of the domain name space as shown in Figure 6, where each token 32a-d of FQDN 36 is a tree corresponds to a branch of , and each instance of a delimiter (e.g., a dot) corresponds to a branch point. The domain name hierarchy is at least the root level ('.'), a top level domain (TLD) level that includes tokens such as com, net, fashion, tv, and country-denoting tokens such as ro, fr, etc. There are several notable levels, including the domain level, which contains tokens such as , wikipedia, facebook, etc., and the subdomain level, which contains various domain-specific prefix tokens. Therefore, combining FQDN 36 from individual tokens corresponds to traversing the tree hierarchy from end-leaf to root, as illustrated in FIG. 6. For clarity, the token that characterizes the domain name at the TLD level (usually the last token of the FQDN 36) is considered the TLD token herein. Likewise, the token that characterizes the domain name at the domain level (typically the penultimate token of the FQDN 36) is considered a domain token herein. Finally, any token preceding the domain token in FQDN 36 is considered a prefix token here.

도메인 네임 서비스는 단일 네임 서버가 전체 주소 도메인 네임(fully qualified domain name)을 단독으로 분해(resolve)할 수 없도록 조직될 수 있다. 대신, 도메인 네임 스페이스는 복수의 권한 영역으로 나뉘며, 각 권한 영역은 별개의 네임 서버에 의해 분해된다. 전형적으로, 각각의 권한 영역은 도 6에서 예시적 권한 영역들(37a-c)에 의해 설명되는 바와 같이, 도메인 네임 계층의 선택된 서브트리/브랜치를 포함한다. 도시된 예에서, 네임서버들(20b-c-d)은 각각 권한 영역들(37a-b-c) 내에서 도메인 네임들을 분해한다.A domain name service may be organized so that no single name server can independently resolve a fully qualified domain name. Instead, the domain namespace is divided into multiple authority areas, with each authority area resolved by a separate name server. Typically, each authority area includes a selected subtree/branch of the domain name hierarchy, as illustrated by example authority areas 37a-c in Figure 6. In the example shown, name servers 20b-c-d each resolve domain names within authority areas 37a-b-c.

일부 실시예들에서, FQDN을 대응하는 IP 주소로 분해하는 것은 반복적인 방식으로 진행되며, 각각의 연속적인 반복(consecutive iteration)은 연속적인 레벨의 도메인 네임 계층으로 진행된다. 각각의 연속 반복은 FQDN(36)의 특징적 토큰(distinct token)에 따라 결정될 수 있다. 각각의 반복은 DNS 쿼리를 특징적인 네임서버(distinct nameserver)로 보내는 것, 그리고 응답으로 다른 네임서버의 IP 주소를 특정하는 DNS 응답을 수신하는 것을 포함할 수 있다. 도메인 네임의 TLD 레벨, 즉 '.org'와 같은 TLD 토큰을 분해(resolving, 해석)하는 서버는 본 명세서에서 루트 네임서버로 간주된다(예를 들어, 루트 네임서버(20b) 참조). 도메인 레벨에서 도메인 네임, 즉 FQDN(36)의 도메인 토큰을 분해(해석)하는 서버들 은 본 명세서에서 TLD 네임서버로 간주된다(예를 들어, '.org' 최상위 도메인의 도메인들 사이에서 분해하는 TLD 네임서버(20c) 참조). 서브 도메인 레벨, 즉, FQDN(36)의 접두어 토큰(들)을 분해하는 서버들은 본 명세서에서 각각의 도메인을 위한 권한 있는 서버(authoritative server)로 간주된다(예를 들어, 'wikimedia.org'의 서브도메인들 사이에서 분해하는 권한 있는 서버(20d)를 참조). 도 6에 따른 일 예에서, 도메인 네임 'text-lb.codfw.wikimedia.org'을 분해하는 것은 루트 네임서버(20b)로 제1 DNS 쿼리를 전송하는것, 그리고 응답으로, 네임서버(20b)로부터 '.org' 최상위 도메인의 권한 영역을 분해하는 것을 책임지는 TLD 네임서버(20c)의 IP 주소를 수신하는 것을 포함한다 . 반복의 다음 단계는 제2 DNS 쿼리를 TLD 네임서버(20c)로 전송하는 것과, 그리고 응답으로, 네임서버(20c)로부터 'wikimedia.org' 도메인의 권한 있는 네임서버(20d)의 IP 주소를 수신하는 것을 포함할 수 있다. 반복의 또 다른 단계는 제3 DNS 쿼리를 권한 있는 네임서버(20d)로 전송하는 것과, 그리고 응답으로, 네임서버(20d)로부터 FQDN 'text-lb.codfw.wikimedia.org'에 의해 식별되는 콘텐츠 서버의 IP 주소를 수신하는 것을 포함할 수 있다.In some embodiments, resolving an FQDN into a corresponding IP address proceeds in an iterative manner, with each successive iteration proceeding to successive levels of the domain name hierarchy. Each successive repetition may be determined according to a distinctive token of the FQDN 36. Each iteration may include sending a DNS query to a distinct nameserver, and receiving a DNS response specifying the IP address of the other nameserver in response. The server that resolves the TLD level of the domain name, that is, the TLD token such as '.org', is considered the root name server in this specification (see, for example, the root name server 20b). Servers that resolve (resolve) domain names, i.e. domain tokens of FQDNs (36), at the domain level are considered TLD name servers herein (e.g., servers that resolve between domains of the '.org' top-level domain). (see TLD nameserver (20c)). Servers that resolve the subdomain level, i.e. the prefix token(s) of the FQDN 36, are considered herein as authoritative servers for each domain (e.g. 'wikimedia.org' (see authoritative server 20d decomposing between subdomains). In one example according to Figure 6, resolving the domain name 'text-lb.codfw.wikimedia.org' involves sending a first DNS query to the root name server 20b and, in response, from the name server 20b It involves receiving the IP address of the TLD nameserver (20c), which is responsible for resolving the authority zone of the '.org' top-level domain. The next step in the iteration is to send a second DNS query to the TLD nameserver 20c and, in response, receive from the nameserver 20c the IP address of the authoritative nameserver 20d for the 'wikimedia.org' domain. It may include doing. Another step in the iteration involves sending a third DNS query to the authoritative nameserver 20d, and in response, content identified by the FQDN 'text-lb.codfw.wikimedia.org' from the nameserver 20d. This may include receiving the IP address of the server.

일부 실시예들에서, 반복적인 DNS 분해의 모든 단계들에서 전송되는 쿼리들은 PQDN을 포함한다. 대안적인 프라이버시 강화 실시예들에서, 각각의 반복에서 전송되는 DNS 쿼리는, 특히, 특징적인 PQDN(예를 들어, 단일 토큰) 및 와일드카드 '*'와 같은 가능한 추가 문자들을 포함할 수 있다. 예를 들어, 선택한 네임서버로 보내진 PQDN은 각각의 네임 서버의 권한 영역보다 단지 하나의 토큰이 많게 남겨진 각각의 FQDN을 포함할 수 있다. 도 6의 예에서, 루트 네임서버(20b)로 보내진 DNS 쿼리는 PQDN '.org'에 대해 질의할 수 있는 반면, TLD 네임서버(20c)로 보내진 DNS 쿼리는 PQDN '*.wikimedia.org'에 대해 질의할 수 있다. In some embodiments, queries sent in all stages of iterative DNS resolution include a PQDN. In alternative privacy enhancing embodiments, the DNS query sent in each iteration may include, among other things, a distinctive PQDN (eg, a single token) and possible additional characters such as the wildcard '*'. For example, the PQDN sent to the selected nameserver may contain each FQDN leaving only one token more than each nameserver's authority zone. In the example of Figure 6, a DNS query sent to the root name server 20b may query the PQDN '.org', while a DNS query sent to the TLD name server 20c may query the PQDN '*.wikimedia.org'. You can ask questions about

일부 실시예들에서, 이러한 반복적인 도메인 분해(해석)는 특화된 분해기(리졸버) 네임서버(20a)에 의해 수행되고 (도 2), 이는 최근 및/또는 인기 있는 DNS 룩업의 결과를 포함하는 DNS 캐시를 추가로 관리할 수 있다. 이러한 구성에서, 클라이언트 장치들(12a-f)은 단일의 DNS 쿼리를 분해기 네임서버(20a)로 전송할 수 있으며, 각각의 쿼리는 FQDN의 분해를 요청한다. 그러면, 네임서버(20a)는 클라이언트를 대신하여 캐시 룩업을 수행하거나 그리고/또는 필요한 반복적인 DNS 쿼리들을 수행할 수 있다. 각각의 FQDN이 완전히 분해(해결)되면, 네임서버(20a)는 각각의 FQDN과 연관된 IP 주소를 요청 클라이언트에게 반환할 수 있다. In some embodiments, this iterative domain resolution is performed by a specialized resolver name server 20a (FIG. 2), which maintains a DNS cache containing the results of recent and/or popular DNS lookups. can be managed additionally. In this configuration, client devices 12a-f may send a single DNS query to resolver name server 20a, with each query requesting resolution of an FQDN. The name server 20a can then perform cache lookups and/or perform necessary repetitive DNS queries on behalf of the client. Once each FQDN is completely resolved (resolved), the name server 20a may return the IP address associated with each FQDN to the requesting client.

도 7 은 본 발명의 일부 실시예에 따른 예시적인 프라이버시 보호 DNS 트랜잭션을 보여준다. 트랜잭션은 제1파티(예를 들어, 클라이언트)가 제2파티(예를 들어, 서버)에게 항목(아이템)을 위한 요청을 발행하는 것을 포함하고, 제2파티가 데이터 저장소/데이터베이스로부터 요청된 아이템을 검색하며, 여기서 검색 절차는 제2파티에게 아이템을 공개하지 않고 수행된다. 달리 말하면, 서버는 어떤 아이템이 요청되었는지 알지 못하지만 그럼에도 불구하고 저장소에서 요청된 아이템을 검색한다. 후술하는 바와 같은 하나의 예시적인 프라이버시 보호 트랜잭션에서, 클라이언트에 의해 발행된 요청은 암호화되고, 서버는 요청을 복호화하지 않고 요청된 아이템의 암호화된 버전을 검색한다. 따라서 고객의 프라이버시가 보호된다.Figure 7 shows an example privacy preserving DNS transaction according to some embodiments of the invention. A transaction involves a first party (e.g., a client) issuing a request for an item to a second party (e.g., a server), and the second party receives the requested item from a data store/database. , where the search procedure is performed without revealing the item to the second party. In other words, the server does not know which item was requested, but nevertheless retrieves the requested item from the repository. In one example privacy preserving transaction, as described below, a request issued by a client is encrypted, and the server retrieves an encrypted version of the requested item without decrypting the request. Therefore, customer privacy is protected.

일부 실시예들에서, 프라이버시-보호 DNS 트랜잭션들은 개인 정보 검색 절차(private information retrieval procedure, PIR)에 따라 수행된다. 도 7에 설명된 예시적인 교환은 클라이언트 장치(12)(도 1에서 클라이언트 장치(12a-f) 중 임의의 것을 일반적으로 나타낸다)가 프라이빗 쿼리(PIR 쿼리(52)로 예시됨)를 DNS 서버 시스템(20)으로 전송하고, 응답으로, 서버 시스템(20)으로부터 프라이빗 응답(PIR 응답(54)으로 예시됨)을 수신하는 것을 포함한다.In some embodiments, privacy-preserving DNS transactions are performed according to a private information retrieval procedure (PIR). The example exchange depicted in FIG. 7 is one in which client device 12 (represented generally any of client devices 12a-f in FIG. 1) sends a private query (illustrated as PIR query 52) to a DNS server system. 20 and, in response, receiving a private response (exemplified by PIR response 54) from server system 20.

일부 실시예들에서, PIR 절차는 상기 교환의 프라이버시를 보장하기 위해 동형 암호화를 사용한다. 동형 암호화는 암호화된 데이터에 대해 특정 계산(예: 덧셈 및/또는 곱셈)을 수행할 수 있게 하는 특정 종류의 암호화이며, 이러한 계산의 결과를 복호화하면 동일한 데이터의 암호화되지 않은 버전에 각각의 계산을 적용하는 것과 동일한 출력이 생성된다. 달리 말하면, Enc(m)=c가 동형암호 연산을 나타내고, 여기서 m은 평문 메시지(plaintext message)를 나타내고, c는 그 대응하는 암호문(ciphertext)을 나타내고, Dec(c)=m은 그 암호문으로부터 각각의 메시지를 복구하는 동형 복호화 연산을 나타내고, Eval (F, {c 1 , ..., c k })=C는 암호문 c i 의 집합(set)에 함수 F를 적용하여 암호화된 암호문 C를 생성하는 동형 평가 절차를 나타내며, 다음과 같다:In some embodiments, the PIR procedure uses homomorphic encryption to ensure privacy of the exchange. Homomorphic encryption is a specific type of encryption that allows you to perform certain calculations (such as addition and/or multiplication) on encrypted data, and decrypting the results of these calculations makes it possible to perform each calculation on an unencrypted version of the same data. The same output as applied is produced. In other words, Enc (m)=c represents a homomorphic encryption operation, where m represents the plaintext message, c represents the corresponding ciphertext, and Dec(c)=m represents the Represents the homomorphic decryption operation to recover each message, and Eval (F, {c 1 , ..., c k })=C is in the set of ciphertext c i . By applying function F It represents the homomorphic evaluation procedure for generating the encrypted ciphertext C , as follows:

[1] [One]

여기서 m i =Dec(c i ), i=1, ..., k이다. 형식적인 수학 언어에서, 동형 암호화 체계의 암호화 및 복호화 절차는 평문 공간과 암호문 공간 사이의 동형화(homomorphism)라고 한다.Here m i =Dec(c i ), i =1, ..., k . In formal mathematical language, the encryption and decryption procedures of a homomorphic encryption system are called homomorphism between the plaintext space and the ciphertext space.

몇몇 동형 암호화 체계/암호 시스템들이 본 분야에 알려져 있다. 덧셈과 곱셈의 임의의 조합에 대해 동형 속성을 보호하는 체계는 일반적으로 완전 동형(fully homomorphic)으로 알려져 있다. 예를 들어, 그 중에서도 GSW(Gentry-Sahai-Waters) 체계가 있다. 다른 체계/알고리즘은 특정 유형의 연산, 예를 들어서 Paillier 체계의 경우 덧셈만, 그리고 RSA (Rivest-Shamir-Adelman) 체계의 경우 곱셈에 대해서만 동형이다. 이러한 체계는 본 기술분야에서 부분 동형(partial homomorphic)으로 알려져 있다. 대조적으로, 상술한 동형 속성을 갖지 않는 암호들(ciphers)은 본 명세서에서 비동형으로 간주된다. 비동형 암호의 예로는 AES(Advanced Encryption Standard) 및 통신 프로토콜의 TLS(Transport Layer Security) 군에 사용되는 기타 암호가 있다.Several homomorphic encryption schemes/cipher systems are known in the art. A system that protects homomorphic properties against arbitrary combinations of addition and multiplication is generally known as fully homomorphic . For example, among them is the GSW (Gentry-Sahai-Waters) system. Other systems/algorithms are isomorphic for certain types of operations, for example only addition in the case of the Paillier system and only multiplication in the case of the Rivest-Shamir-Adelman (RSA) system. This system is known in the art as partial homomorphic . In contrast, ciphers that do not have the homomorphism properties described above are considered non-homomorphic herein. Examples of non-homomorphic ciphers include the Advanced Encryption Standard (AES) and other ciphers used in the Transport Layer Security (TLS) family of communications protocols.

동형 암호화를 사용하는 예시적인 PIR 절차에서, 함수 F는 데이터베이스 룩업을 수행하는 것에 해당하는 연산들의 세트를 대신할 수 있다. 간단한 예로, 서버는 데이터베이스 D={a, b, c}에 세 가지 요소를 보유한다. 클라이언트는 두 번째 요소(즉, 'b')를 서버에 그 정보를 공개하지 않고 검색하려고 한다. 클라이언트는 룩업 인덱스(lookup index), 예를 들어서, 데이터베이스 D 내에서 원하는 요소의 위치를 제외한 모든 곳에서 0을 포함하는 비트 맵 I를 사용하여 원하는 요소를 나타낼 수 있다. 현재 예에서, I={0, 1, 0}이다. 그런 다음 클라이언트는 각 비트맵을 동형으로 암호화하여 이를 서버로 전송할 수 있다. 차례로, 서버는 암호화된 비트맵에 함수 F를 적용할 수 있다: In an example PIR procedure using homomorphic encryption, the function F may represent a set of operations corresponding to performing a database lookup. As a simple example, the server holds three elements in database D= { a, b, c }. The client attempts to retrieve the second element (i.e. ' b ') without revealing that information to the server. The client can indicate the desired element using a lookup index, for example, a bitmap I containing zeros everywhere except the position of the desired element in the database D. In the current example, I= {0, 1, 0}. The client can then homomorphically encrypt each bitmap and transmit it to the server. In turn, the server can apply function F to the encrypted bitmap:

, [2] , [2]

여기서, *는 행렬 곱셈을 나타내고 T는 전치(transposition)를 나타낸다. 그런 다음 서버는 생성된 암호화된 벡터 C를 클라이언트로 다시 전송한다. 동형 속성은 C를 복호화하면 암호화되지 않은 비트맵 I에 함수 F를 적용하는 것과 동일한 결과가 생성되는 것을 보장한다.Here, * represents matrix multiplication and T represents transposition. The server then sends the generated encrypted vector C back to the client. The homomorphism property guarantees that decrypting C produces the same result as applying function F to the unencrypted bitmap I.

[3] [3]

따라서 서버가 암호화된 비트맵만 보고 클라이언트로부터 받은 정보를 복호화하지 않고 모든 연상을 수행하는 동안 클라이언트는 b를 검색한다.Therefore, the client searches for b while the server only looks at the encrypted bitmap and performs all associations without decrypting the information received from the client.

일부 실시예들에서, DNS 서버 시스템(20)은 도메인 네임에 따라 인덱싱된 레코드들의 세트를 저장하는 도메인 네임 데이터베이스(50)에 통신적으로 결합된다. 각각의 레코드에 부착된(attached) 인덱스는 각각의 데이터 저장소 내의 각각의 레코드의 위치를 나타낼 수 있거나, 그렇지 않으면 데이터베이스(50) 내에서/데이터베이스(50) 로부터 각각의 레코드의 선택적인 식별/검색을 가능하게 할 수 있다. 데이터가 테이블 형식(tabular form)으로 조직되는 간단한 예에서, 각 행은 별도의 레코드를 나타낼 수 있으며 행들은 고유한 행 번호 및/또는 레이블(label)로 인덱싱된다. 각 레코드는 각 도메인의 다양한 특성을 나타내는 엔트리들의 세트를 포함할 수 있다. DNS 룩업 서비스를 구현하는 일 실시예에서, 예시적인 엔트리는 각각의 도메인의 일부를 형성하는 컴퓨터의 IP 주소 및/또는 네임서버의 IP 주소(예를 들어, 도 2 및 도 6의 네임서버(20a-d) 참조)를 포함한다. 다른 예시적인 엔트리는 각각의 도메인을 위한 도메인 등록 데이터(예를 들어, 소유자 아이덴티티 데이터, 청구 데이터, 소유자 연락처 데이터, 예컨대 거리 주소, 전화번호, 이메일 주소, 도메인 네임 만료일, 현재 도메인 레지스트라의 식별자 등)를 포함한다. 또 다른 예시적인 엔트리는 각각의 도메인이 특정 카테고리에 속하는지 아닌지의 지표, 또는 각각의 도메인이 속하는 카테고리의 지표를 포함할 수 있다. 예를 들어, 엔트리는 각 도메인이 블랙리스트/화이트리스트에 있는지 여부, 각 도메인이 사기성 문서 및/또는 원치 않는 통신(스팸)을 배포하는 것으로 알려져 있는지 여부, 각 도메인이 봇넷의 일부인지 또는 서비스 거부(DoS) 공격에 관여하는지 여부를 나타낼 수 있다. 다른 예시적인 엔트리는 각각의 도메인이 선택된 지리적 영역 또는 서브-네트워크(예를 들어, 지오펜싱(geofencing)) 내에 위치하는지 여부를 나타낼 수 있다. 또 다른 예시적인 엔트리는 각각의 도메인이 선택된 상업적 엔티티에 의해 소유되거나 이에 관련되어 있는지 여부를 나타낼 수 있다. 다른 예는 아래에서 설명될 것이다.In some embodiments, DNS server system 20 is communicatively coupled to domain name database 50, which stores a set of records indexed according to domain names. An index attached to each record may indicate the location of each record within each data store, or may otherwise enable selective identification/retrieval of each record in/from database 50. It can be made possible. In a simple example where data is organized in tabular form, each row can represent a separate record and rows are indexed by unique row numbers and/or labels. Each record may contain a set of entries representing various characteristics of each domain. In one embodiment implementing a DNS lookup service, example entries may include the IP address of a computer forming part of each domain and/or the IP address of a name server (e.g., name server 20a of FIGS. 2 and 6 -d)). Other exemplary entries include domain registration data for each domain (e.g., owner identity data, billing data, owner contact data such as street address, telephone number, email address, domain name expiration date, identifier of current domain registrar, etc.) Includes. Another example entry may include an indicator of whether or not each domain belongs to a particular category, or an indicator of the category to which each domain belongs. For example, entries can determine whether each domain is on a blacklist/whitelist, whether each domain is known to distribute fraudulent documents and/or unsolicited communications (spam), whether each domain is part of a botnet, or a denial of service. (DoS) may indicate whether or not the device is involved in an attack. Other example entries may indicate whether each domain is located within a selected geographic area or sub-network (eg, geofencing). Another example entry may indicate whether each domain is owned by or associated with a selected commercial entity. Other examples will be described below.

일부 실시예들에서, 각각의 레코드를 식별하는 인덱스는 도메인 네임에 따라 결정되며, 따라서 도메인 네임과 각각의 레코드의 다양한 엔트리들 사이의 연계(association)를 가능하게 한다. 각 도메인 네임은 FQDN 또는 PQDN일 수 있다. 하나의 예시적인 인덱스는 각각의 도메인 네임에 따라 컴퓨팅된 해시를 포함한다. 여기서 해시는 해시 함수를 적용한 결과를 나타낸다. 해시 함수는 임의의 크기의 데이터를 미리 결정된 범용 상한을 갖는 숫자에 매핑하는 특정 종류의 수학 함수이다. 문자열은 숫자로 표현될 수 있기 때문에 해시 함수는 또한 임의의 문자열을 숫자(예: 256비트 정수)에 매핑할 수 있다. 예시적인 해시 함수들은 그 중에서도, H(n)= n mod m, 여기서 nm 은 정수, 검사합(checksum, 체크섬) 해시들(예를 들어, 순환 중복 체크-CRC(cyclic redundancy check)), 뿐만 아니라 메시지 다이제스트 해시 군(message digest hash family)(예를 들어, MD5) 및 보안 해시 군(예를 들어, SHA-3)과 같은 암호화 해시 함수들(cryptographic hash functions)을 포함한다. 해시 함수를 적용한 결과에 따라 컴퓨팅된 인덱스는 여기서는 해시 인덱스로 간주된다.In some embodiments, the index that identifies each record is determined according to the domain name, thereby enabling association between the domain name and the various entries of each record. Each domain name can be either an FQDN or a PQDN. One example index includes a hash computed for each domain name. Here, hash represents the result of applying the hash function. A hash function is a specific type of mathematical function that maps data of arbitrary size to a number with a predetermined universal upper bound. Because strings can be represented as numbers, hash functions can also map arbitrary strings to numbers (e.g., 256-bit integers). Exemplary hash functions include, among others: H (n)= n mod m, where n and m are integers, checksum hashes (e.g., cyclic redundancy check (CRC)), It also includes cryptographic hash functions such as message digest hash family (e.g., MD5) and secure hash family (e.g., SHA-3). The index computed as a result of applying the hash function is considered a hash index here.

일부 실시예들에서, 도메인 네임 데이터베이스(50)의 레코드를 식별하는 인덱스는 복수의 해시 함수들(H 1 , ..., H K )을 채용하는 쿠쿠 해시 체계(cuckoo hash scheme)를 사용하여 컴퓨팅된다. 이러한 해싱의 예가 도 8에 설명되고 있고, 이 때 데이터베이스(50)는 복수의 해시 테이블(51a-c)을 포함한다. 각 해시 테이블의 각 행은 d j , j=1,2,...로 표시된 각 도메인 네임에 따라 인덱싱된 개별 레코드를 나타낸다. 각각의 레코드는 e(d j )로 표시된 최소한 엔트리를 포함하며, 이는 예를 들어 각각의 도메인의 IP 주소를 포함할 수 있다. 각 해시 테이블(51a-c)에서, 각 레코드를 식별하는 인덱스는 각각의 도메인 네임에 해시 함수를 적용하여 결정된다. 그러나, 각 테이블(51a-c)은 각각의 인덱스들을 결정하기 위해 별개의 해시 함수를 사용한다. 예시적인 쿠쿠 해시 체계에서, 레코드들은 첫 번째 해시 함수를 사용하여 각 레코드에 대한 인덱스를 컴퓨팅함으로써 직렬로 삽입된다. 각 인덱스로 표시된 행이 비어 있으면 현재 레코드가 해당 행에 삽입된다. 각 행이 이미 점유되어 있으면 두 번째 해시 함수 등에 따라 다른 해시 인덱스가 컴퓨팅된다. 모든 해시 함수에 따라 계산된 인덱스가 이미 점유된 행을 가리키면 상주 레코드(resident record) 중 하나가 현재 레코드로 대체된다. 그런 다음 각 행의 이전 점유자는 대체 위치(alternative location)(즉, 다른 해시 함수를 사용하여 컴퓨팅된 인덱스)에 배치되어, 가능하게는 다른 레코드를 대체할 수 있다. 이 프로세스는 모든 레코드가 하나 또는 다른 해시 테이블 내에서 위치를 찾을 때까지 재귀적으로(recursively) 계속된다. 그러나 이 삽입 프로세스가 예를 들어 무한 루프에 들어감으로써 실패하는 것이 가능하다. 이 경우 해시 테이블은 해시 함수의 새로운 선택을 사용하여 다시 작성된다.In some embodiments, an index identifying a record in domain name database 50 is computed using a cuckoo hash scheme employing a plurality of hash functions ( H 1 , ..., H K ). do. An example of such hashing is illustrated in FIG. 8, where the database 50 includes a plurality of hash tables 51a-c. Each row of each hash table represents an individual record indexed according to each domain name, denoted by d j , j=1,2,... Each record contains at least an entry denoted e(d j ) , which may contain, for example, the IP address of the respective domain. In each hash table 51a-c, an index identifying each record is determined by applying a hash function to each domain name. However, each table 51a-c uses a separate hash function to determine its respective indices. In an example cuckoo hash scheme, records are serially inserted by computing an index for each record using a first hash function. If the row indicated by each index is empty, the current record is inserted into that row. If each row is already occupied, another hash index is computed according to the second hash function, and so on. If the index calculated according to any hash function points to a row that is already occupied, one of the resident records is replaced with the current record. The previous occupant of each row is then placed in an alternative location (i.e. an index computed using a different hash function), possibly replacing another record. This process continues recursively until all records have found their positions within one or another hash table. However, it is possible for this insertion process to fail, for example by entering an infinite loop. In this case the hash table is rebuilt using a new selection of hash functions.

도 9는 본 발명의 일부 실시예에 따른 PIR 쿼리(52) 및 PIR 응답(54)의 예시적인 콘텐츠를 나타낸다. PIR 쿼리(52)는 도메인 네임 데이터베이스(50)의 선택된 레코드를 식별하는 인덱스의 암호화를 포함하는 암호문을 포함할 수 있다. 도 9의 예에서, 인덱스는 도메인 네임의 해시를 포함한다. 쿠쿠 해싱을 사용하는 실시예에서, 각각의 도메인 네임에 대하여, 클라이언트 장치(12)는 복수의 암호화된 해시 인덱스들을 송신할 수 있으며, 각각은 별개의 해시 함수 Hj에 따라 컴퓨팅된다. 이러한 암호화된 해시 인덱스는 개별 PIR 쿼리로 패키지되거나 또는 단일 PIR 쿼리로 함께 번들링될 수 있다.9 illustrates example content of a PIR query 52 and a PIR response 54 according to some embodiments of the invention. PIR query 52 may include ciphertext that includes encryption of an index identifying the selected record in domain name database 50. In the example of Figure 9, the index contains a hash of the domain name. In an embodiment that uses Cuckoo hashing, for each domain name, client device 12 may transmit multiple encrypted hash indices, each computed according to a separate hash function Hj . These encrypted hash indexes can be packaged into individual PIR queries or bundled together into a single PIR query.

일부 실시예들에서, PIR 쿼리(52)는 각각의 해시 인덱스를 컴퓨팅하기 위해 사용되는 해시 함수의 표시자(이하에서 h로 표시됨)를 추가로 포함한다. 예를 들어, h는 소프트웨어 버전 번호 또는 DNS 서버 시스템(20)이 각각의 클라이언트에 의해 사용되는 해시 함수(들)가 도메인 네임 데이터베이스(50)의 해시 테이블을 구축하기 위해 사용되는 해시 함수와 일치하는지 여부를 결정할 수 있게 하는 일부 다른 파라미터 값을 포함할 수 있다. 해싱의 일관성을 확인하는 방법에 대한 자세한 내용은 도 13과 관련하여 이하에서 설명된다.In some embodiments, PIR query 52 further includes an indicator of the hash function (denoted below as h ) used to compute each hash index. For example, h may be the software version number or whether the hash function(s) used by the DNS server system 20 by each client matches the hash function used to build the hash table in the domain name database 50. It may include some other parameter values that allow you to decide whether or not to Details on how to ensure consistency of hashing are described below with respect to FIG. 13.

데이터베이스(50)가 각각의 인덱스에 의해 식별되는 레코드를 포함할 때, PIR 응답(54)은 각각의 데이터베이스 레코드의 적어도 엔트리 e의 암호화를 포함하는 암호문을 반환할 수 있다. 데이터베이스(50)에 이러한 레코드가 존재하지 않을 때, 일부 실시예들은 미리 결정된 더미 엔트리(예를 들어, 데이터베이스(50)가 현재 요청된 인덱스를 갖는 레코드를 가지고 있지 않다는 것을 나타내는 미리 결정된 기호(symbol))의 암호화로 응답할 수 있다.When database 50 includes records identified by each index, PIR response 54 may return ciphertext containing encryption of at least entry e of each database record. When no such record exists in database 50, some embodiments may create a predetermined dummy entry (e.g., a predetermined symbol indicating that database 50 does not currently have a record with the requested index). ) can be responded with encryption.

도 10은 본 발명의 일부 실시예에 따른 클라이언트 장치(12) 상에서 실행되는 예시적인 구성요소들을 나타낸다. 이러한 소프트웨어는 운영 체제(operating system, OS)(62)를 포함할 수 있으며, 이는 무엇보다도 Microsoft Windows®, MacOS®, Linux®, iOS®, 또는 Android®와 같은 임의의 널리 이용가능한 운영 체제일 수 있다. OS(62)는 특히, 도메인 네임 분해기(66) 및 클라이언트 어플리케이션(64)을 포함하는 어플리케이션들의 세트와 클라이언트 장치(12)의 하드웨어 사이에 인터페이스를 제공한다. 클라이언트 어플리케이션(64)은 특히 워드 프로세싱, 스프레드시트, 이미지 프로세싱, 게임, 전자 통신, 웹 브라우징, 및 소셜 미디어 어플리케이션 등과 같은 임의의 컴퓨터 프로그램을 총칭적으로 나타낸다. 일부 실시예들에서, 어플리케이션(64)은, 예를 들어, 특정 인터넷 도메인으로/으로부터의 트래픽을 필터링/차단하고, 수신 및/또는 발신되는 전자 통신이 악성 코드 또는 요청되지 않은 콘텐츠(스팸) 등을 포함하는지 여부를 판단함으로써 각각의 클라이언트 시스템에 컴퓨터 보안 서비스를 제공한다. 10 illustrates example components executing on client device 12 according to some embodiments of the invention. Such software may include an operating system (OS) 62, which may be any widely available operating system such as Microsoft Windows®, MacOS®, Linux®, iOS®, or Android®, among others. there is. OS 62 provides an interface between the hardware of client device 12 and a set of applications, including, among other things, domain name resolver 66 and client application 64. Client application 64 collectively refers to any computer program such as word processing, spreadsheet, image processing, gaming, telecommunications, web browsing, and social media applications, among others. In some embodiments, application 64 may, for example, filter/block traffic to/from certain Internet domains, prevent incoming and/or outgoing electronic communications from containing malicious code, unsolicited content (spam), etc. Provides computer security services to each client system by determining whether it includes.

어플리케이션(64)은 콘텐츠 서버(16)에 접속하여 데이터를, 예를 들어 HTTP 요청의 세트를 통해 교환할 수 있다. 이러한 교환의 일부로서, 어플리케이션(64)은 도메인 네임 (d)의 표시자를 도메인 네임 분해기(66)로 전송할 수 있고, 응답으로, 상기 분해기(66)로부터 각각의 도메인을 특징짓는 도메인 네임 데이터베이스 엔트리 e(d)를 수신할 수 있다. 간단한 DNS 룩업 예에서, e(d)는 도메인(d)의 IP 주소를 포함할 수 있다. 다른 예에서, e(d)는 도메인(d)에 대한 등록 데이터의 세트(예를 들어, 각 도메인의 소유자의 아이덴티티)를 포함할 수 있다. 또 다른 예에서, e(d)는 도메인(d)에 액세스하는 것이 각각의 클라이언트를 컴퓨터 보안 위협에 노출 시키는지의 여부, 예를 들어, 도메인( d)가 사기성 문서를 배포하는 것으로 알려져 있는지 여부의 표시자를 포함할 수 있다. 일반적으로, e(d)는 도메인 네임 데이터베이스(50)에 저장되고 도메인(d) 하에서 인덱싱된 임의의 데이터를 포함할 수 있다. Application 64 may connect to content server 16 and exchange data, for example, through a set of HTTP requests. As part of this exchange, application 64 may transmit an indicator of the domain name (d) to domain name resolver 66, and in response, retrieve from resolver 66 a domain name database entry e characterizing each domain. (d) can be received. In a simple DNS lookup example, e(d) may contain the IP address of domain (d). In another example, e(d) may include a set of registration data for domain d (e.g., the identity of the owner of each domain). In another example, e(d) determines whether accessing domain d exposes each client to computer security threats, for example, whether domain d is known to distribute fraudulent documents. indicator It can be included. In general, e(d) may include any data stored in domain name database 50 and indexed under domain d.

일부 실시예들에서, 도메인 네임 분해기(66)는 DNS 서버 시스템(20)과의 프라이버시 보호 DNS 트랜잭션에 관여하도록 구성된다(또한 도 8 참조). 이와 같이, 분해기(66)는 어플리케이션(64)으로부터 수신된 도메인 네임에 따라 PIR 쿼리(52)를 생성(formulation)화하여 전송할 수 있다. 분해기(66)는 PIR 응답(54)을 추가로 수신하고, 클리어 텍스트 데이터 엔트리(cleartext data entry) e(d)를 추출하고, 이를 어플리케이션(64)으로 전달(forwarding)할 수 있다. 도메인 네임 분해기(66)는 암호화 및/또는 복호화 연산(operation, 작업)을 실행하도록 구성된 암호화 엔진(cryptographic engine)(68)을 더 포함할 수 있다. 일부 실시예들에서, 엔진(68)은 동형 암호화 알고리즘/절차들의 세트를 구현한다. 암호화 엔진(68)은 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. In some embodiments, domain name resolver 66 is configured to engage in privacy preserving DNS transactions with DNS server system 20 (see also Figure 8). In this way, the decomposer 66 can formulate and transmit the PIR query 52 according to the domain name received from the application 64. Decomposer 66 may further receive the PIR response 54, extract the cleartext data entry e(d ), and forward it to the application 64. The domain name resolver 66 may further include a cryptographic engine 68 configured to perform encryption and/or decryption operations. In some embodiments, engine 68 implements a set of homomorphic encryption algorithms/procedures. The encryption engine 68 may be implemented in software, hardware, or a combination thereof.

도 10에 예시된 것에 대한 대안적인 실시예에서, 도메인 네임 분해기(66)는 클라이언트 장치(12)와 구별되는 머신에서, 예를 들어 클라이언트 장치(12)를 확장된 네트워크(15)에 연결하는 라우터(14) 또는 다른 게이트웨이 장치 상에서(도 1 참조), 또는 분해기 네임서버(20a)(도 2) 상에서 부분적으로 또는 전체적으로 실행될 수 있다. In an alternative embodiment to that illustrated in FIG. 10 , the domain name resolver 66 is on a machine distinct from the client device 12, such as a router connecting the client device 12 to the extended network 15. 14 or on another gateway device (see Figure 1), or partially or entirely on the resolver name server 20a (Figure 2).

도 11은 본 발명의 일부 실시예에 따른 도메인 네임 분해기(66)에 의해 수행되는 단계들의 예시적인 시퀀스를 나타낸다. 예시된 분해기는 어플리케이션(64) 및/또는 원격 서버로부터 수신된 통신과 같은 트리거 이벤트(trigger event)를 기다릴 수 있다. 이벤트가 탐지되면 이벤트의 유형에 따라 작업 과정(a course of action)이 결정된다. 탐지된 이벤트가 어플리케이션(64)으로부터의 도메인 룩업 요청을 포함할 때(단계(206)가 "예"를 리턴함), 그럼 단계(208)에서 일부 실시예들은 수신된 룩업 요청에 따라 네임서버를 선택할 수 있다. 일부 실시예들에서, 별개의 타입의 도메인 네임 서비스들은 별개의 서버들에 의해 제공될 수 있다. 예를 들어, 일부 네임 서버는 IP 주소 반환(returning IP addresses) 전용일 수 있고 다른 네임 서버는 컴퓨터 보안과 관련된 데이터베이스 엔트리를 반환할 수 있다. 더욱이, 도메인 네임 서비스가 선택된 도메인의 IP 주소를 결정하는 것을 포함할 때, 일부 실시예들은 선택된 네임서버들을 쿼리할 때에만 PIR을 채용할 수 있다(이하의 상세 참조).Figure 11 shows an example sequence of steps performed by domain name resolver 66 in accordance with some embodiments of the invention. The illustrated decomposer may wait for a trigger event, such as a communication received from application 64 and/or a remote server. When an event is detected, a course of action is determined depending on the type of event. When the detected event includes a domain lookup request from application 64 (step 206 returns “yes”), then at step 208 some embodiments may configure the name server according to the received lookup request. You can choose. In some embodiments, separate types of domain name services may be provided by separate servers. For example, some name servers may be dedicated to returning IP addresses, while others may return database entries related to computer security. Moreover, when domain name service involves determining the IP address of a selected domain, some embodiments may employ PIR only when querying selected nameservers (see details below).

다음으로, 단계(210)에서, 분해기(66)는 각각의 도메인 네임에 따라 적어도 하나의 PIR 쿼리(52)를 생성할 수 있다. 단계(210)는, 다른 것들 중에서도, 선택된 해시 함수를 각각의 도메인 네임에 적용하고, 예를 들어, 동형 암호화 절차/알고리즘을 사용하여 해싱(hashing)의 결과를 암호화하기 위해 암호화 엔진(68)을 채용하는 것을 포함할 수 있다. 엔진(68)은 본 기술분야에 알려진 임의의 동형 암호화 절차, 예를 들어 GSW(Gentry-Sahai-Waters)와 같은 완전 동형 암호화 방식(체계)의 암호화 알고리즘을 사용할 수 있다. 이러한 절차 중 일부는 예를 들어 Gentry C., Halevi S. "Compressible FHE with Applications to PIR", In: Hofheinz D., Rosen A. (eds) Theory of Cryptography, TCC 2019, Lecture Notes in Computer Science, vol 11892, Springer, Cham에 상세히 설명되어 있는 것과 같은, 클라이언트 및/또는 서버 측에 컴퓨팅 로드를 감소시킬 목적의 추가적 데이터 조작(data manipulation)을 포함할 수 있다. 그런 다음 암호화된 PIR 쿼리가 선택한 네임서버로 전송된다. Next, at step 210, resolver 66 may generate at least one PIR query 52 for each domain name. Step 210 may, among other things, apply the selected hash function to each domain name and encrypt the result of the hashing, e.g., using a homomorphic encryption procedure/algorithm, to encrypt the encryption engine 68. This may include hiring. The engine 68 may use any homomorphic encryption procedure known in the art, for example, an encryption algorithm of a fully homomorphic encryption scheme (scheme) such as GSW (Gentry-Sahai-Waters). Some of these procedures can be seen, for example, in Gentry C., Halevi S. "Compressible FHE with Applications to PIR", In: Hofheinz D., Rosen A. (eds) Theory of Cryptography, TCC 2019, Lecture Notes in Computer Science, vol. 11892, Springer, Cham, for the purpose of reducing computing load on the client and/or server side. An encrypted PIR query is then sent to the nameserver of your choice.

트리거 이벤트가 서버로부터 PIR 응답(54)을 수신하는 것을 포함할 때, 단계(216)에서 분해기(66)는 응답(54)에 포함된 암호문(들)을 복호화하기 위해 암호화 엔진(68)을 사용할 수 있으며, 따라서 쿼리된 도메인 네임과 연관된 데이터베이스 엔트리(예를 들어, IP 주소)를 복구할 수 있다. 도메인 네임 데이터베이스(50)가 각각의 도메인 네임과 연관된 엔트리를 포함하지 않는 경우, 각각의 암호문(들)을 복호화하면 실패를 나타내는 더미 메시지(dummy message)가 생성될 수 있다. 추가 단계(218)는 복호화 절차의 결과를 어플리케이션(64)으로 전송할 수 있다. 단계(216)는 동형 복호화 절차/알고리즘, 예를 들어, Gentry C., Halevi S. "Compressible FHE with Applications to PIR", In: Hofheinz D., Rosen A. (eds) Theory of Cryptography, TCC 2019, Lecture Notes in Computer Science, vol 11892, Springer, Cham에 설명된 것과 같은 완전한 동형의 것을 사용한다. When the trigger event includes receiving a PIR response 54 from a server, at step 216 the decomposer 66 will use the encryption engine 68 to decrypt the ciphertext(s) contained in the response 54. and thus recover database entries (e.g., IP addresses) associated with the queried domain name. If the domain name database 50 does not contain an entry associated with each domain name, a dummy message indicating failure may be generated when decrypting each ciphertext(s). A further step 218 may transmit the results of the decryption procedure to the application 64 . Step 216 is a homomorphic decryption procedure/algorithm, e.g., Gentry C., Halevi S. "Compressible FHE with Applications to PIR", In: Hofheinz D., Rosen A. (eds) Theory of Cryptography, TCC 2019, Use full isomorphism as described in Lecture Notes in Computer Science, vol 11892, Springer, Cham.

도 12는 본 발명의 일부 실시예에 따른 DNS 서버 시스템(20)의 예시적인 구성요소들을 보여준다. 예시된 구성요소들은 단일의 물리적 머신 또는 별개의 통신적으로 결합된 머신들에서 실행될 수 있다. 서버 시스템(20)은 도 2에 예시된 바와 같은 네임서버들의 세트를 통칭적으로 나타낸다. Figure 12 shows example components of a DNS server system 20 in accordance with some embodiments of the invention. The illustrated components may run on a single physical machine or on separate, communicatively coupled machines. Server system 20 collectively represents a set of name servers as illustrated in FIG. 2.

일부 실시예들에서, 데이터베이스 유지 관리 모듈(database maintenance module)(26)은 새로운 도메인 네임에 대응하는 레코드들을 삽입하고, 선택된 레코드들에 대하여 변경을 가하고(예를 들어, 도메인 등록 데이터의 변경, 각각의 도메인의 클러스터 할당의 변경, 각각의 도메인을 블랙리스트로부터 제거하는 등), 그리고/또는 만료된 레코드들을 삭제함으로써 도메인 네임 데이터베이스(50)를 최신 상태로 유지하도록 구성된다 . 모듈(26)의 예시적인 작업(operation)이 도 13에 도시되어 있다. 단계들(222 내지 224)의 시퀀스에서, 모듈(26)은 데이터베이스 업데이트 조건이 만족되는지를 체크할 수 있다. 일부 실시예들은 스케쥴에 따라(예를 들어, 매시간) 또는 온디맨드(on-demand)에 따라(필요 시에) 데이터베이스 업데이트를 수행할 수 있다. 대안적인 실시예에서, 업데이트 에이전트는 인입 도메인 데이터(55)를 큐(queue)에 축적할 수 있고, 큐가 가득 찼을 때 업데이트 조건이 충족되는 것을 결정할 수 있다. 업데이트 조건이 만족될 때, 단계(226)는 예를 들어, 새로운 레코드들의 세트를 삽입함으로써 데이터베이스(50)의 업데이트를 시도할 수 있다. 단계(226)는, 예를 들어, 각각의 새로운 도메인 네임에 해시 함수를 적용하고, 새롭게 계산된 인덱스를 갖는 테이블 행(row)에 레코드를 삽입함으로써 해시 인덱스를 계산하는 것을 포함할 수 있다. 그러나 이러한 삽입 작업은 예를 들어 해시 충돌의 경우(hash collision), 즉 두 개의 별개의 도메인 네임이 동일한 인덱스로 해시되는 경우 실패할 수 있다. 쿠쿠 해시 체계를 사용하는 실시예들에서, 충돌은 제2 해시 함수 등을 사용하여 또 다른 인덱스를 계산함으로써 해결될 수 있다. 이러한 실시예들에서도, 특정 레코드를 삽입하는 것은 다수의 해시 충돌로 인해 가능하지 않을 수 있다. 이러한 상황은 새로운 세트의 해시 함수를 선택하고 새로운 해시 함수를 사용하여 데이터베이스(50)를 재인덱싱하는 것을 요구할 수 있다(도 13의 단계230 내지 232 ). In some embodiments, database maintenance module 26 inserts records corresponding to the new domain name, makes changes to selected records (e.g., changes to domain registration data, respectively) (changing the cluster assignment of domains, removing each domain from a blacklist, etc.), and/or deleting expired records to keep the domain name database 50 up to date. Exemplary operation of module 26 is shown in FIG. 13 . In the sequence of steps 222-224, module 26 may check whether database update conditions are met. Some embodiments may perform database updates on a schedule (eg, hourly) or on-demand (as needed). In an alternative embodiment, the update agent may accumulate incoming domain data 55 in a queue and determine that an update condition is met when the queue is full. When the update condition is met, step 226 may attempt to update database 50, for example, by inserting a new set of records. Step 226 may include calculating a hash index, for example, by applying a hash function to each new domain name and inserting a record into a table row with the newly calculated index. However, this insertion operation may fail, for example in case of a hash collision, i.e. when two distinct domain names are hashed to the same index. In embodiments that use a cuckoo hash scheme, collisions may be resolved by calculating another index using a second hash function, etc. Even in these embodiments, inserting a specific record may not be possible due to multiple hash collisions. This situation may require selecting a new set of hash functions and re-indexing the database 50 using the new hash functions (steps 230-232 of Figure 13).

성공적인 데이터베이스 업데이트에 응답하여, 해시 함수가 변경되었을 때, 단계(234)는 업데이트된 해시 함수 사양들(hash function specifications)(56)의 세트를 클라이언트들에게 분배할 수 있다(예를 들어, 도 7, 10 및 12 참조). 따라서 단계(234)는 해싱의 일관성, 즉 모든 클라이언트들이 인덱싱 데이터베이스(50)에서 사용된 해시 함수의 버전을 사용하여 PIR 요청들을 일관되게 생성(formulation)하는 것을 보장할 수 있다. In response to a successful database update, when the hash function has changed, step 234 may distribute a set of updated hash function specifications 56 to clients (e.g., Figure 7 , 10 and 12). Accordingly, step 234 can ensure hashing consistency, that is, all clients consistently formulate PIR requests using the version of the hash function used in indexing database 50.

일부 실시예들에서, DNS 서버 시스템(20)의 PIR 모듈(28)은 쿼리(52)에 따라 도메인 네임 데이터베이스(50)로의 암호화된 룩업을 수행하도록 구성된다. 여기서 용어 '암호화된 룩업(encrypted lookup)'은 데이터베이스(50)로부터 레코드를 검색(retrieving)하는 것을 의미하며, 이 레코드는 각각의 인덱스를 복호화하지 않고, PIR 쿼리(52)에서 암호화된 형태로 포함되는 인덱스에 의해 표시된다. 암호화된 룩업 절차는, 상기 식 [2]에 의해 예시된 바와 같이, 암호화된 결과를 생성하기 위해 암호화된 데이터 상에 직접 덧셈 및 곱셈과 같은 일련의 연산들을 수행하는 것을 포함할 수 있다. 따라서 암호화된 룩업은 예를 들어 DNS-over-HTTPS와 같은 암호화된 DNS의 종래 버전에서 수행될 수 있는 것처럼, 클리어 텍스트 인덱스를 생성하기 위해 먼저 쿼리를 복호화하는 것과 그리고 각각의 데이터베이스로 상기 클리어 텍스트 인덱스를 룩업(조회)하는 것을 포함하지 않는다. In some embodiments, PIR module 28 of DNS server system 20 is configured to perform an encrypted lookup to domain name database 50 in response to query 52. Here, the term 'encrypted lookup' refers to retrieving a record from the database 50, which record is included in encrypted form in the PIR query 52 without decrypting the respective index. It is indicated by the index. The encrypted lookup procedure may include performing a series of operations, such as addition and multiplication, directly on the encrypted data to produce an encrypted result, as illustrated by equation [2] above. Thus, an encrypted lookup can be performed, for example, in a conventional version of encrypted DNS, such as DNS-over-HTTPS, by first decrypting the query to create a clear text index, and then extracting said clear text index into each database. It does not include lookup.

PIR 모듈(28)의 예시적인 작업이 도 14에 예시되어 있다. 단계(242-244)의 시퀀스는 인입 PIR 쿼리들을 경청(listen for, 수신)할 수 있다. 쿼리가 수신되면, 단계(246)는 해싱의 일관성을 검사할 수 있다. 달리 말하면, 단계(246)는 각각의 쿼리가 도메인 네임 데이터베이스(50)를 인덱싱하기 위해 사용된 것과 동일한 해시 함수 사양에 따라 생성되었는지의 여부를 결정할 수 있다. 아니라면, 단계(254)에서, DNS 서버 시스템(20)은 각각의 요청 클라이언트에게 에러 메시지를 반환할 수 있다. 일부 실시예들은 업데이트된 해시 함수 사양들(56)을 각각의 클라이언트로 추가로 푸시(push)할 수 있다. Exemplary operation of PIR module 28 is illustrated in Figure 14. The sequence of steps 242-244 may listen for incoming PIR queries. Once the query is received, step 246 may check the consistency of the hashing. In other words, step 246 may determine whether each query was generated according to the same hash function specification as used to index domain name database 50. If not, in step 254, DNS server system 20 may return an error message to each requesting client. Some embodiments may further push updated hash function specifications 56 to each client.

해싱이 일관성이 있다는 결정에 응답하여, 단계(248)는 PIR 쿼리(52)에 따라 데이터베이스(50)로 암호화된 룩업을 실행한다. 단계(248)는, 예를 들어, Gentry C., Halevi S. "Compressible FHE with Applications to PIR", In: Hofheinz D., Rosen A. (eds) Theory of Cryptography, TCC 2019, Lecture Notes in Computer Science, vol 11892, Springer, Cham에 설명된 것과 같은 본 기술분야에 알려진 임의의 방법을 채용할 수 있다. 그 다음, 단계들(250 내지 252)의 시퀀스는 PIR 응답(54)을 생성하고 응답(54)을 각각의 클라이언트 장치로 전송할 수 있다.In response to determining that the hashing is consistent, step 248 executes an encrypted lookup to database 50 according to PIR query 52. Step 248 can be described, for example, in Gentry C., Halevi S. "Compressible FHE with Applications to PIR", In: Hofheinz D., Rosen A. (eds) Theory of Cryptography, TCC 2019, Lecture Notes in Computer Science , vol 11892, Springer, Cham, any method known in the art may be employed. The sequence of steps 250-252 may then generate a PIR response 54 and transmit the response 54 to each client device.

다양한 도메인 네임 서비스들이 상술한 바와 같이 프라이버시를 보호하는 방식으로 구현될 수 있다. 몇 가지 예시적인 사용 사례 시나리오는 다음과 같다. Various domain name services can be implemented in a manner that protects privacy as described above. Some example use case scenarios include:

도메인 네임을 주소로 분해(해석, resolving)(IP 주소 룩업)Resolving domain names into addresses (IP address lookup)

본 명세서에 설명된 시스템 및 방법의 한 응용예는 DNS 룩업(DNS lookup)을 수행하는 것, 즉 선택된 도메인 네임과 연관된 IP 어드레스를 반환하는 것에 있다. 이러한 실시예들에서, 도메인 네임 데이터베이스(50)는 도메인 네임에 의해 인덱싱된 IP 주소들의 세트를 저장할 수 있다. PIR 질의(52)는 각각의 도메인 네임 및 아마도 다른 데이터(예를 들어, 질문 Q의 인코딩, 예를 들어, 도 9 참조)를 해싱함으로써 결정된 인덱스의 암호화를 포함할 수 있다. 응답으로, DNS 서버 시스템(20)은 각각의 IP 어드레스의 암호화를 포함하는 PIR 응답(54)을 반환할 수 있다. 그 후, 클라이언트(또는 각각의 클라이언트와 통신하는 다른 머신)는 전자 통신(예를 들어, 웹 브라우징)을 라우팅하기 위해 각각의 IP 주소를 복호화하고 사용할 수 있다.One application of the systems and methods described herein is to perform a DNS lookup, that is, to return the IP address associated with a selected domain name. In these embodiments, domain name database 50 may store a set of IP addresses indexed by a domain name. PIR query 52 may include encryption of the index determined by hashing each domain name and possibly other data (e.g., encoding of question Q, see, e.g., FIG. 9). In response, DNS server system 20 may return a PIR response 54 containing an encryption of the respective IP address. The clients (or other machines communicating with each client) can then decrypt and use each IP address to route electronic communications (e.g., web browsing).

도메인 네임 분해(resolution)(도메인 네임을 IP 주소에 매핑)를 수행하도록 구성된 실시예에서 도메인 네임 분해기(66)에 의해 수행되는 단계들의 예시적인 시퀀스가 도 15에 도시되어 있다. DNS 룩업을 최적화하기 위해, 일부 실시예들은 TLD 및/또는 권한있는 네임서버들(authoritative nameservers)의 이전에 분해된 IP 주소들을 저장하는 로컬 캐시를 유지할 수 있다. 선택된 도메인 네임을 분해하기 위한 요청을 수신하는 것에 응답하여, 일부 실시예들은 도메인 네임 계층구조(hierarchy)의 연속적인 레벨들을 통해 반복할 수 있다. 각각의 FQDN이 아직 IP 주소로 완전히 분해되지 않은 경우, 단계(268)는 각각의 도메인 네임의 PQDN을 결정할 수 있다. PQDN은 계층구조의 선택된 레벨까지(예를 들어, '.org'(도 6 참조)와 같은 TLD까지) 특정된 FQDN의 일부를 포함할 수 있다. 단계(270)에서, 분해기(66)는 캐시 룩업(cache lookup)을 수행함으로써 각각의 PQDN이 이전에 분해되었는지의 여부를 체크할 수 있다. "예"인 경우, 캐시는 다음 레벨의 FQDN(36)을 분해할 수 있는 네임서버의 IP 주소를 보유할 수 있다. "아니요"인 경우, 단계(272)는 현재 PQDN을 분해(해석)하기 위해 네임서버를 선택할 수 있다. PQDN이 '.org'인 일 예에서, 선택된 네임서버는 루트 네임서버(20b) 등 일 수 있다. An exemplary sequence of steps performed by domain name resolver 66 in an embodiment configured to perform domain name resolution (mapping domain names to IP addresses) is shown in FIG. 15. To optimize DNS lookups, some embodiments may maintain a local cache that stores previously resolved IP addresses of TLDs and/or authoritative nameservers. In response to receiving a request to resolve a selected domain name, some embodiments may iterate through successive levels of the domain name hierarchy. If each FQDN has not yet been fully resolved into an IP address, step 268 may determine the PQDN of each domain name. A PQDN may contain part of a specified FQDN up to a selected level of the hierarchy (e.g., up to a TLD such as '.org' (see Figure 6)). At step 270, resolver 66 may check whether each PQDN has been previously resolved by performing a cache lookup. If "yes", the cache may hold the IP address of the nameserver from which it can resolve the next level FQDN (36). If “no”, step 272 may select a nameserver to resolve the current PQDN. In an example where the PQDN is '.org', the selected name server may be the root name server 20b, etc.

일부 실시예들은 PIR 절차들이 프로세서 부하 및 통신 크기 둘 다에서 컴퓨팅 비용이 크다는 점에 의존한다. 또한, 도 6과 관련하여 앞서 설명한 바와 같이, 일반적인 DNS 룩업은 예를 들어, 처음에는 루트 네임서버로, 그 다음에는 TLD 네임서버로, 그 다음에는 마침내 권한 있는 서버로의 복수의 반복적인 쿼리를 필요로 할 수 있다. 달리 말하면, 단일 DNS 룩업은 PIR 절차 매니폴드(PIR procedure manifold)의 비용을 배가시킬 수 있다. 문제를 더욱 복잡하게 만드는 것은 DNS 룩업이 비교적 빈번하다는 사실인데, 예를 들어 단일 웹 페이지에 액세스하는 것은 여러 개의 연속적인 DNS 룩업 작업을 포함할 수 있다.Some embodiments rely on PIR procedures being computationally expensive in both processor load and communication size. Additionally, as previously described in conjunction with Figure 6, a typical DNS lookup involves multiple iterative queries, for example, first to the root nameserver, then to the TLD nameserver, and finally to the authoritative server. You may need it. In other words, a single DNS lookup can double the cost of the PIR procedure manifold. Further complicating the problem is the fact that DNS lookups are relatively frequent; for example, accessing a single web page may involve several consecutive DNS lookup operations.

일부 실시예들은 일부 FQDN들이 다른 것들보다 프라이버시에 더 민감하다는 점에 추가로 의존한다. 예를 들어, 사용자는 다른 부분(예: 성인 콘텐츠 사이트 방문)과 달리 자신의 브라우징 기록의 선택된 부분(예: 그 중에서도 온라인 뉴스 또는 Wikipedia와 같은 참조 사이트 방문)을 공개하는 데 관심이 없을 수 있다. 또한 FQDN의 일부 부분은 다른 부분보다 프라이버시에 더 민감할 수 있다. 예를 들어, 도 6의 예를 사용하면, 사용자가 .org 최상위 레벨 도메인에 액세스하기를 원한다는 것을 아는 것은 사용자가 실제로 wikimedia.org 에 액세스하려고 한다는 것을 아는 것보다 훨씬 덜 정보성이 떨어지거나 프라이버시 염려와 관련이 없다. Some embodiments further rely on some FQDNs being more privacy sensitive than others. For example, a user may not be interested in disclosing selected parts of his or her browsing history (e.g., visits to online news or reference sites such as Wikipedia, among others) as opposed to other parts (e.g., visits to adult content sites). Additionally, some parts of the FQDN may be more privacy sensitive than others. For example, using the example in Figure 6, knowing that a user wants to access the .org top-level domain is much less informative or raises privacy concerns than knowing that the user actually wants to access wikimedia.org. not related to

PIR에 의해 발생하는 컴퓨팅 비용의 일부를 완화하기 위해, 일부 실시예들은 그렇기 때문에 의도적으로 DNS 쿼리들의 서브세트에 대해서만 PIR을 사용한다. PIR을 사용할지 여부를 결정하는 것은 프라이버시 조건이 만족되는지 여부를 결정하는 것, 즉 현재 쿼리가 프라이버시에 민감한지 아닌지를 결정하는 것을 포함할 수 있다. 도 15의 예시적인 단계(274)는 프라이버시 조건을 평가한다. 현재 쿼리가 프라이버시에 민감한 것으로 간주되는 경우("예" 분기), 단계(276-277)의 시퀀스는 동형 암호화(PIR)를 사용하여 현재 쿼리를 생성(공식화, formulation)할 수 있다. 그렇지 않으면 현재 쿼리가 종래의 DNS를 사용하여 수행될 수 있다. To alleviate some of the computational cost incurred by PIR, some embodiments therefore intentionally use PIR for only a subset of DNS queries. Deciding whether to use PIR may include determining whether a privacy condition is satisfied, i.e., whether the current query is privacy sensitive or not. Example step 274 of Figure 15 evaluates privacy conditions. If the current query is considered privacy sensitive (“Yes” branch), the sequence of steps 276-277 may use homomorphic encryption (PIR) to formulate the current query. Otherwise, the current query can be performed using conventional DNS.

일부 실시예들은 프라이버시 조건이 선택된 네임서버의 권한 영역에 따라 만족되는지 여부를 결정한다. 예를 들어, 일부 실시예들은 PIR 쿼리들만을 TLD 네임서버(들)(20c) 및/또는 권한 있는 네임서버(들)(20d)로 전송하는 반면, 루트 네임서버(들)(20b)로 어드레싱된 쿼리들은 종래의 DNS를 사용하여 생성된다. 달리 말하면, 이러한 실시예들은 종래의 (사적이지 않은) DNS 쿼리들을 통해 FQDN(36)의 TLD 토큰들을 분해하고, PIR을 사용하여 도메인 및/또는 접두어 토큰들(prefix token)을 분해한다. Some embodiments determine whether privacy conditions are satisfied according to the authority area of the selected name server. For example, some embodiments only send PIR queries to the TLD nameserver(s) 20c and/or authoritative nameserver(s) 20d, while addressing to the root nameserver(s) 20b. The queries are generated using conventional DNS. In other words, these embodiments resolve the TLD tokens of FQDN 36 via conventional (non-private) DNS queries and use PIR to resolve domain and/or prefix tokens.

분해기(66)의 일부 실시예들은 프라이버시 조건이 FQDN(36)의 토큰들 중 적어도 하나에 따라 만족되는지 여부를 결정한다. 예를 들어, 분해기(66)는 종래의 (즉, 사적이지 않은) DNS 쿼리를 사용하여 선택된 PQDN, 예를 들어, 'google.com', 'wikipedia.org', 'amazonaws.com' 등을 분해(해석)하고, PIR 쿼리를 사용하여 'facebook.com', 'pornhub.com' 등과 같은 다른 PQDN을 분해(해석)할 수 있다. 이러한 실시예들은 일부 온라인 활동들(예를 들어, 구글 검색을 수행하거나, 뉴스 사이트에 액세스하거나, 일기 예보 또는 스포츠 스코어를 검색하거나, 등)이 다른 활동들(예를 들어, 성인 콘텐츠에 액세스하거나, 영화를 스트리밍하거나, 선택된 전자상거래, 온라인 뱅킹, 또는 소셜 미디어 포털에 액세스하거나, 등)보다 프라이버시 걱정이 덜할 수 있다는 점에 의존한다. 또 다른 실시예에서, 사용자가 클라우드 컴퓨팅 서비스(예를 들어, Amazon, Inc.로부터의 Amazon Web Services™, 또는 Microsoft의 Azure™)에 액세스한다는 것을 아는 것은, 각각의 도메인이 수천 개의 상이한 서브도메인들을 호스트할 수 있기 때문에, 그다지 정보성이 없거나 프라이버시 염려가 없을 수 있다. 선택적 PIR 쿼리하기(selective PIR querying)를 가능하게 하기 위해, 일부 실시예들은 프라이버시에 민감한 것으로 간주되는 PQDN의 블랙리스트 및/또는 종래의 DNS를 사용하여 검색될 수 있는 PQDN의 화이트리스트를 유지한다. 예시적인 화이트리스트는 그 중에서도, 검색 엔진 도메인, 뉴스 도메인, 온라인 광고 및/또는 다른 콘텐츠 배포 도메인, 및 다양한 클라우드 컴퓨팅 서비스(파일 호스팅, 서비스로서의 인프라스트럭처, 등)를 제공하는 도메인을 포함할 수 있다. 다음으로 단계(274)는 화이트리스트에서 현재 PQDN/도메인 네임 토큰을 검색하는 것(looking up)과, 각각의 PQDN/토큰이 화이트리스트 상에 있을 때 종래의 쿼리를 전송하고, 그렇지 않은 경우 PIR 쿼리를 전송하도록 결정하는 것을 포함할 수 있다. 대안적으로, 분해기(66)는 블랙리스트를 검색(룩업)하고, 각각의 PQDN/토큰이 블랙리스트 상에 있을 때 PIR 쿼리를 전송하고, 그렇지 않은 경우 종래의 DNS 쿼리를 전송하기로 결정할 수 있다. Some embodiments of resolver 66 determine whether a privacy condition is satisfied according to at least one of the tokens of FQDN 36. For example, resolver 66 may use conventional (i.e. non-private) DNS queries to resolve selected PQDNs, e.g. 'google.com', 'wikipedia.org', 'amazonaws.com', etc. (interpretation), and can use PIR queries to decompose (interpretation) other PQDNs such as 'facebook.com', 'pornhub.com', etc. These embodiments allow some online activities (e.g., performing a Google search, accessing news sites, searching for weather reports or sports scores, etc.) to occur while other activities (e.g., accessing adult content, etc.) , streaming movies, accessing selected e-commerce, online banking, or social media portals, etc.) relies on having fewer privacy concerns. In another embodiment, knowing that a user is accessing a cloud computing service (e.g., Amazon Web Services™ from Amazon, Inc., or Azure™ from Microsoft) means that each domain has thousands of different subdomains. Because it can be hosted, it may not be very informative or have privacy concerns. To enable selective PIR querying, some embodiments maintain a blacklist of PQDNs that are considered privacy sensitive and/or a whitelist of PQDNs that can be searched using conventional DNS. Exemplary whitelists may include, among others, search engine domains, news domains, online advertising and/or other content distribution domains, and domains that provide various cloud computing services (file hosting, infrastructure as a service, etc.) . Next step 274 is looking up the current PQDN/domain name token in the whitelist, sending a conventional query if each PQDN/token is on the whitelist, otherwise a PIR query. It may include deciding to transmit. Alternatively, resolver 66 may decide to search the blacklist (lookup) and send a PIR query if each PQDN/token is on the blacklist, and send a conventional DNS query otherwise. .

선택적 PIR 쿼리하기는(Selective PIR querying) 서브도메인 레벨에서 또한 수행될 수 있다. 일부 실시예들은 도메인 레벨 PQDN의 누출(leaking)이 구체적으로 프라이버시에 대한 염려를 야기하지 않을 수 있는 경우(예를 들어, google.com), 일부 서브도메인 토큰(들)의 누출이 문제가 될 수 있다는 점에 의존한다. 예를 들어 'www.google.com'은 'meet.google.com'보다 프라이버시에 덜 민감할 수 있다. 그러므로, 일부 실시예들은 접두어 토큰들 및/또는 FQDN들의 화이트리스트 및/또는 블랙리스트를 유지하고, PIR 또는 종래의 DNS를 사용하여 각각의 권한 있는 서버에 쿼리할 것인지를 결정한다. 간단한 실시예는 종래의 DNS 쿼리들을 사용하여 'www' 서브 도메인을 분해(해석)할 수 있고, 그렇지 않으면 PIR 쿼리들을 사용할 수 있다. Selective PIR querying can also be performed at the subdomain level. Some embodiments note that in cases where leaking of a domain-level PQDN may not specifically raise privacy concerns (e.g., google.com), leaking of some subdomain token(s) may be problematic. It depends on the point. For example, 'www.google.com' may be less privacy-sensitive than 'meet.google.com'. Therefore, some embodiments maintain a whitelist and/or blacklist of prefix tokens and/or FQDNs and determine whether to query each authoritative server using PIR or conventional DNS. A simple embodiment could use conventional DNS queries to resolve the 'www' subdomain, or alternatively use PIR queries.

표 1 에는 FQDN들 및 이들의 관련 프라이버시 이슈의 몇 가지 예가 나와 있다.Table 1 lists some examples of FQDNs and their associated privacy issues.

표 1Table 1

단계(274)가 PIR을 사용하기 위한 조건이 만족된다고 결정하면, 단계(276)에서 분해기(66)는 서버 시스템(20)과 동형 암호화 파라미터들의 세트(예를 들어, 키, 공유된 비밀, 논스(nonce) 등)를 협상할 수 있다. 일부 실시예들은 동형 암호화 체계를 사용하여 프라이빗-퍼블릭 키 쌍(private-public key pair), 그리고/또는 암호화-복호화 키 쌍을 생성한다. 그 다음, 단계(277)는, 예를 들어, 각각의 PQDN을 해싱하고, 협상된 쌍의 퍼플릭 키를 사용하여 각각의 해시 및 가능하게는 질문 Q의 표시자와 같은 다른 데이터를 암호화함으로써, PIR 쿼리(52)를 생성할 수 있다(도 9 참조).If step 274 determines that the conditions for using PIR are met, then at step 276 the decomposer 66 connects the server system 20 with a set of homomorphic encryption parameters (e.g., key, shared secret, nonce). (nonce), etc.) can be negotiated. Some embodiments use homomorphic encryption schemes to generate private-public key pairs and/or encryption-decryption key pairs. Step 277 then proceeds, for example, by hashing each PQDN and using the negotiated pair's public key to encrypt each hash and possibly other data, such as the indicator of question Q, A PIR query 52 can be generated (see Figure 9).

단계(274)가 PIR을 사용하기 위한 조건이 만족되지 않는다고 판단하는 경우, 일부 실시예들은 종래의 DNS 쿼리(도 3 내지 4 참조)를 공식화(생성)할 수 있다. 단계(278)는 DNS over HTTPs 프로토콜 하에서 세션 암호화 키들의 쌍을 협상하는 것, 그리고 예를 들어, 키 쌍의 퍼플릭 키를 사용하여 각각의 DNS 쿼리를 암호화하는 것을 더 포함할 수 있다. 일부 실시예들에서, 종래의 쿼리들 및 PIR 쿼리들 모두는 암호화되어 DNS over HTTPs 와 같은 프로토콜 상으로 전송된다. 이러한 전략은 각 전송의 완결성을 보장하는 것과 같은 상기 프로토콜의 다른 기능으로부터 이익을 얻을 수 있다. 그러나 PIR 쿼리는 종래의 DNS 쿼리에 비해 추가 레이어의 암호화를 포함하고, 상기 추가 레이어는 PIR을 가능하게 하는 동형 암호화와 마찬가지이다. DNS over HTTPs 또는 유사한 프로토콜에 해당하는 암호화의 레이어는 서버에 의해 제거된다. 그럼에도 불구하고, 이러한 복호화가 종래의 DNS 쿼리의 클리어 텍스트 버전을 생성하는 반면, 서버는 PIR 쿼리로부터 동형 암호화 레이어를 제거하지 않으므로, PIR 쿼리는 DNS 서버 시스템(20)에 의해 판독될 수 없는 상태로 남아 있다. If step 274 determines that the conditions for using PIR are not met, some embodiments may formulate (generate) a conventional DNS query (see Figures 3-4). Step 278 may further include negotiating a pair of session encryption keys under the DNS over HTTPs protocol and encrypting each DNS query using, for example, the public key of the key pair. In some embodiments, both conventional and PIR queries are encrypted and transmitted over a protocol such as DNS over HTTPs. This strategy can benefit from other features of the protocol, such as ensuring the integrity of each transmission. However, PIR queries involve an additional layer of encryption compared to conventional DNS queries, and that additional layer is equivalent to the homomorphic encryption that makes PIR possible. The layer of encryption corresponding to DNS over HTTPs or similar protocols is removed by the server. Nonetheless, while this decryption creates a clear text version of a conventional DNS query, the server does not remove the homomorphic encryption layer from the PIR query, leaving the PIR query unreadable by the DNS server system 20. Remains.

쿼리를 적절한 네임서버로 전송하면, 단계(282)에서 분해기(66)는 각각의 서버로부터의 응답을 기다릴 수 있다. 단계들(284 내지 286)의 추가적인 시퀀스는 서버의 응답으로부터 현재 PQDN과 연관된 IP 주소를 추출할 수 있고, 추가 사용을 위해 각각의 IP 주소를 캐시할 수 있다. 각각의 IP 주소는 현재 FQDN과 연관된 완전히 분해(해석)된 IP 주소의 네임서버의 주소를 포함할 수 있다. 서버의 응답이 PIR 응답(54)을 포함하는 경우, 단계(284)는 동형 복호화 절차를 이용하여 첨부된(enclosed) IP 주소를 복호화하는 단계를 포함할 수 있다. Once the query is sent to the appropriate nameserver, resolver 66 can wait for a response from each server at step 282. An additional sequence of steps 284-286 may extract the IP address currently associated with the PQDN from the server's response and cache each IP address for further use. Each IP address may contain the address of the nameserver of the fully resolved IP address associated with the current FQDN. If the server's response includes a PIR response 54, step 284 may include decrypting the enclosed IP address using a homomorphic decryption procedure.

일부 실시예들은 PIR의 상당한 컴퓨팅 비용을 완화하기 위해 추가적인 최적화를 구현한다. 이러한 예들 중 하나는, 도메인 네임 데이터베이스(50)의 크기를 레코드들의 총 카운트에 따라, 그리고/또는 원하는 룩업 성능 및/또는 원하는 프라이버시 레벨에 따라, 서브유닛/버킷으로 분할함으로써 감소시키는 것을 포함한다. 이러한 실시예들에서, 도메인 네임들의 전체 데이터베이스를 검색하는 대신에, 서버는 각각의 도메인의 레코드를 보유하는 버킷(들) 내에서만 조사할 것이다. 버킷이 작을수록 룩업(검색, 조회) 시간을 더 크게 줄일 수 있지만 동시에 각 도메인의 신원(identity)의 불특정성(uncertainty)이 감소하기 때문에, 개인 정보 보호도 줄어든다. 속도와 프라이버시 사이의 절충안을 제공할 수 있는 예시적인 버킷 크기는 216=65536, 즉 개별 버킷은 최대 65536개의 개별 도메인 네임 중에서 분해(해석)가 가능하게 할 수 있다. 각 버킷은 도 8과 관련하여 상술한 바와 같이 복수의 해시 테이블을 추가로 저장할 수 있다. 개별 버킷은 개별 컴퓨터 시스템에 의해 작동될 수 있으며, 동일한 컴퓨터 등의 별개의 프로세서 코어에 할당될 수 있다.Some embodiments implement additional optimizations to mitigate the significant computational cost of PIR. One of these examples includes reducing the size of domain name database 50 by partitioning it into subunits/buckets, depending on the total count of records, and/or depending on desired lookup performance and/or desired level of privacy. In these embodiments, instead of searching the entire database of domain names, the server will search only within the bucket(s) holding the record for each domain. The smaller the bucket, the greater the reduction in lookup time, but at the same time, because the uncertainty of the identity of each domain is reduced, privacy protection is also reduced. An exemplary bucket size that can provide a compromise between speed and privacy is 2 16 =65536, i.e., an individual bucket can enable resolution (resolution) among up to 65536 individual domain names. Each bucket can additionally store a plurality of hash tables as described above with reference to FIG. 8. Individual buckets may be operated by separate computer systems and may be assigned to separate processor cores, such as on the same computer.

다음으로, 일부 실시예들은 해시 함수(예를 들어, FNV-1과 같은 Fowler-Noll-Vo 해시의 변형체)를 사용하여 각각의 레코드를 보유하는 버킷을 식별할 수 있다. 해시 함수의 출력은 모듈로 연산(modulo operation)을 적용하여 버킷의 수로 잘릴 수 있다(truncate). 서버 측에서 예시적인 버킷 인덱스는 다음과 같이 계산될 수 있다.Next, some embodiments may use a hash function (e.g., a variant of the Fowler-Noll-Vo hash, such as FNV-1) to identify the bucket holding each record. The output of the hash function can be truncated to the number of buckets by applying a modulo operation. An example bucket index on the server side can be calculated as follows:

, [4] , [4]

여기서, dQ는 각각 도메인 네임 및 질문(예를 들어, A vs. AAAA)을 나타내고, H B 는 버킷팅(bucketing)에 사용되는 해시 함수를 나타내고, N B 는 버킷 카운트(수)를 나타내고, [Qd]는 Qd의 연결(concatenation)을 나타낸다. 통상의 기술자는 버킷팅 인덱스를 계산하는 예시된 방법은 단지 예시로서 의미될 뿐이며, 본 발명의 범위를 한정하지 않는다는 것을 이해할 것이다.Here, d and Q represent the domain name and question (e.g., A vs. AAAA), respectively, H B represents the hash function used for bucketing, and N B represents the bucket count. , [ Qd ] represents the concatenation of Q and d . Those skilled in the art will understand that the illustrated method of calculating the bucketing index is meant as an example only and does not limit the scope of the invention.

데이터베이스(50) 내의 각각의 도메인 네임에 대하여, 데이터베이스 유지관리 모듈(26)은 I B 를 컴퓨팅 하고, 인덱스 I B 를 갖는 버킷에 각각의 레코드를 배치할 수 있다. 레코드를 배치하는 것은, 상술한 바와 같이, 복수의 해시 테이블 중 하나 내에서 각각의 레코드에 대한 위치를 찾기 위해 쿠쿠 해싱 체계를 적용하는 것 등을 포함할 수 있다. 차례로, 클라이언트 측에서, 분해기(66)는 I B 를 컴퓨팅 하여 PIR 쿼리(52)에 이를 부착(attach)할 수 있다. 버킷 인덱스는 클리어 텍스트로 전송되거나 암호화될 수 있다. PIR 쿼리(52)를 수신할 때, 서버(20)는 쿼리(52)에 따라 버킷을 결정한 후, 각 버킷의 콘텐츠에 따라 PIR을 수행하여 PIR 응답 (54)을 생성할 수 있다.For each domain name in database 50, database maintenance module 26 may compute I B and place each record into a bucket with index I B. Placing records may include applying a cuckoo hashing scheme to find the location for each record within one of the plurality of hash tables, as described above. In turn, on the client side, decomposer 66 can compute I B and attach it to PIR query 52. Bucket indexes can be transmitted as clear text or encrypted. When receiving a PIR query 52, the server 20 may determine a bucket according to the query 52 and then perform a PIR according to the contents of each bucket to generate a PIR response 54.

컴퓨터 보안 및 분석 어플리케이션Computer security and analytics applications

일부 실시예들은 컴퓨터 보안 및 데이터 분석 어플리케이션에 적합화될 수 있다. 이러한 사용 사례 시나리오에서, 도메인 네임 데이터베이스(50)는 도메인의 특정 클래스 또는 카테고리에서 각각의 도메인의 멤버십을 나타내는 레코드를 저장한다. 일부 실시예들에서, 카테고리들은 컴퓨터 보안과 관련성을 가질 수도 있다. 예를 들어, 카테고리는 성인 콘텐츠를 배포하는 것을 특징으로 하는 도메인을 포함할 수 있다. 또 다른 예시적인 카테고리는 사기 행위에 관여하는 것으로 알려진 도메인의 블랙리스트를 포함할 수 있다. 또 다른 예시적인 카테고리는 서비스 거부 공격에 참여하는 것을 특징으로 하는 도메인들(예를 들어, 특정 봇넷의 구성원들)을 포함한다.Some embodiments may be suitable for computer security and data analysis applications. In this use case scenario, domain name database 50 stores records indicating each domain's membership in a particular class or category of domains. In some embodiments, the categories may be related to computer security. For example, a category may include domains characterized by distributing adult content. Another example category may include a blacklist of domains known to engage in fraudulent activity. Another example category includes domains that are characterized as engaging in denial-of-service attacks (e.g., members of a particular botnet).

다른 카테고리는 데이터 분석의 다양한 태양과 관련될 수 있다. 예를 들어, 도메인은 콘텐츠(예: 게임, 뉴스, 참조(reference), 교육 등)에 따라 클래스/카테고리로 그룹화될 수 있다. 다른 그룹화/분류 기준에는 소유권 및/또는 상업적 관계가 포함될 수 있다. 예를 들어, 동일한 기업 또는 동일한 대기업 또는 회사 연합의 구성원이 소유한 모든 도메인은 별개의 도메인 카테고리로 함께 그룹화될 수 있다. 또 다른 분류 기준은 특정 온라인 활동에서의 멤버십을 포함한다. 예를 들어, 특정 온라인 게임 및/또는 특정 게임 제작자가 제작한 게임과 관련된 모든 도메인 네임은 별개의 카테고리로 함께 그룹화될 수 있다. 또 다른 분류 기준은 지리적 위치를 포함할 수 있다: 특정 지리적 지역, 국가 등의로부터의 도메인이 함께 그룹화될 수 있다. 다른 예시적인 기준은 최초 등록의 도메인 연령/시간을 포함할 수 있다.Different categories may relate to various aspects of data analysis. For example, domains can be grouped into classes/categories based on content (e.g. games, news, reference, education, etc.). Other grouping/classification criteria may include ownership and/or commercial relationships. For example, all domains owned by the same corporation or members of the same conglomerate or corporate association may be grouped together into distinct domain categories. Another classification criterion includes membership in specific online activities. For example, all domain names associated with a particular online game and/or games produced by a particular game creator may be grouped together into a separate category. Another classification criterion may include geographic location: domains from specific geographic regions, countries, etc. may be grouped together. Other example criteria may include domain age/time of first registration.

분류의 또 다른 예에서, 도메인들은 공유된 특성들 또는 다른 유형의 도메인 간 유사성에 따라 클러스터들로 그룹화될 수 있다. 도 16은 본 발명의 일부 실시예에 따른 도메인들(30a-b)의 세트 및 클러스터들(60a-b)의 세트를 보여준다. 클러스터 멤버십은 배타적일 필요가 없다. 도 16의 예에서, 도메인(30b)은 두 클러스터(60a-b) 모두에 속한다. 일부 실시예들에서, 두 도메인들의 유사성은 N차원 추상적 특징 공간(N-dimensional abstract feature space)에서 두 도메인들을 분리하는 초거리(hyperdistance)에 따라 평가될 수 있다. 그러나 유사성이 도메인 특징 자체를 기반으로 할 필요는 없다. 이러한 예들 중 하나에서, 두 도메인은 이들이 DNS 쿼리의 시퀀스에서 자주 함께 나타날 때 유사한 것으로 간주될 수 있다; 이러한 두 도메인을 동일한 클러스터에 배치할 수 있다. 또 다른 예에서, 클러스터들은 자율 학습 알고리즘(unsupervised learning algorithm)을 사용하는 신경망 분류자에 의해 자동으로 생성될 수 있다. 개별 클러스터는 개별(특징적, distinct) 도메인 카테고리에 해당할 수도 있고 그렇지 않을 수도 있다. 예를 들어, '악성' 도메인 카테고리에는 여러 클러스터가 포함될 수 있으며, 여기서 각 클러스터는 별개의 봇넷으로부터의 도메인을 포함할 수 있다.In another example of classification, domains may be grouped into clusters based on shared characteristics or similarities between different types of domains. Figure 16 shows a set of domains 30a-b and a set of clusters 60a-b according to some embodiments of the invention. Cluster membership does not have to be exclusive. In the example of Figure 16, domain 30b belongs to both clusters 60a-b. In some embodiments, the similarity of two domains may be evaluated according to the hyperdistance separating the two domains in an N-dimensional abstract feature space. However, the similarity need not be based on the domain features themselves. In one of these examples, two domains may be considered similar when they frequently appear together in sequences of DNS queries; These two domains can be placed in the same cluster. In another example, clusters may be automatically generated by a neural network classifier using an unsupervised learning algorithm. Individual clusters may or may not correspond to individual (distinct) domain categories. For example, the 'malicious' domain category may contain multiple clusters, where each cluster may contain domains from a separate botnet.

도메인 군집화(clustering, 클러스터링) 및/또는 분류 그 자체(즉, 도메인들을 카테고리 또는 클러스터로 그룹화하는 것)는 본 명세서의 범위를 넘어서며, 데이터 마이닝의 기술분야에 공지된 임의의 방법을 사용하여 달성될 수 있다. 본 명세서는 PIR을 통해 사전의 기존 분류(pre-existing classification)에 액세스하는 데 중점을 둘 것이다. 일부 실시예들에서, 도메인 네임 데이터베이스(50)에 저장된 레코드는 도메인이 특정 카테고리에 속하는지 아닌지를 나타내는 불린 값(boolean value)을 포함할 수 있다. 대안적으로, 레코드는 각 도메인이 속한 카테고리/클러스터의 레이블(label) 또는 다른 식별자를 포함할 수 있다. 이러한 레코드는 위에서 설명한 PIR 쿼리 및 응답 메커니즘을 사용하여 액세스할 수 있다. 일부 실시예들에서, PIR 쿼리(52)는 데이터베이스(50)로의 인덱스의 암호화(예를 들어, 도메인 네임의 해시)를 포함하는 반면, PIR 응답(54)은 각각의 도메인의 카테고리/클러스터 멤버십을 나타내는 데이터베이스 엔트리를 인코딩하는 암호문을 포함할 수 있다.Domain clustering and/or classification per se (i.e., grouping domains into categories or clusters) is beyond the scope of this disclosure and may be accomplished using any method known in the art of data mining. You can. This specification will focus on accessing a dictionary's pre-existing classification through PIR. In some embodiments, a record stored in domain name database 50 may include a boolean value indicating whether a domain belongs to a particular category or not. Alternatively, the record may contain a label or other identifier of the category/cluster to which each domain belongs. These records can be accessed using the PIR query and response mechanism described above. In some embodiments, PIR query 52 includes encryption of an index into database 50 (e.g., a hash of a domain name), while PIR response 54 identifies each domain's category/cluster membership. May contain ciphertext encoding the database entry it represents.

일부 실시예들은 DNS 룩업과 관련하여 상술한 버킷팅 전략을 채용하여 보안 및/또는 분석 어플리케이션들에서도 서버의 응답을 가속화할 수 있다. 개별 버킷은 멀웨어, 사기, 봇넷, 스팸 등과 같은 개별 보안 카테고리에 해당할 수 있다. 이러한 하나의 카테고리 내의 레코드들의 개수가 미리 결정된 임계치를 초과하는 경우, 일부 실시예들은 각각의 카테고리에 대응하는 데이터베이스를 서브-버킷들로 분할(break)하고, 각각의 개별 레코드를 포함하는 버킷을 식별하기 위해 해싱을 사용할 수 있다. 쿼리를 발행(issuing)할 때 클라이언트는 버킷/카테고리 인덱스를 클리어 텍스트 또는 암호문으로 보낼 수 있다.Some embodiments may employ the bucketing strategy described above with respect to DNS lookups to accelerate server response, even in security and/or analytics applications. Individual buckets can correspond to individual security categories such as malware, fraud, botnets, spam, etc. If the number of records within such a category exceeds a predetermined threshold, some embodiments break the database corresponding to each category into sub-buckets and identify the bucket containing each individual record. You can use hashing to do this. When issuing a query, the client can send the bucket/category index as clear text or cipher text.

도 17은 본 명세서에 설명된 방법들 중 일부를 실행하도록 프로그램된 컴퓨팅 어플라이언스(80)의 예시적인 하드웨어 구성을 보여준다. 어플라이언스 (80)는 클라이언트 장치(12a-f), 라우터(14) 및 서버(20) 중 임의의 것을 나타낼 수 있다. 도시된 어플라이언스는 개인용 컴퓨터이다. 서버, 휴대 전화, 태블릿 컴퓨터 및 웨어러블 컴퓨팅 장치와 같은 다른 컴퓨팅 장치는 약간 다른 구성을 가질 수 있다. 프로세서(들)(82)는 신호 및/또는 데이터의 세트로 산술(컴퓨팅) 및/또는 논리 동작을 실행하도록 구성된 물리적 장치(예를 들어, 마이크로프로세서, 반도체 기판 상에 형성된 멀티-코어 집적 회로)를 포함한다. 이러한 신호 또는 데이터는 인코딩되어 프로세서 명령어, 예를 들어, 머신 코드의 형태로 프로세서(들)(82)에 전달될 수 있다. 프로세서(들)(82)는 중앙 처리 장치(CPU) 및/또는 그래픽스 처리 장치(graphics processing unit, GPU)들의 어레이(array)를 포함할 수 있다.17 shows an example hardware configuration of a computing appliance 80 programmed to perform some of the methods described herein. Appliance 80 may represent any of client devices 12a-f, router 14, and server 20. The appliance shown is a personal computer. Other computing devices, such as servers, mobile phones, tablet computers, and wearable computing devices, may have slightly different configurations. Processor(s) 82 may be a physical device (e.g., a microprocessor, a multi-core integrated circuit formed on a semiconductor substrate) configured to perform arithmetic (computing) and/or logic operations on sets of signals and/or data. Includes. These signals or data may be encoded and delivered to processor(s) 82 in the form of processor instructions, e.g., machine code. Processor(s) 82 may include an array of central processing units (CPUs) and/or graphics processing units (GPUs).

메모리 유닛(84)은 연산들을 수행하는 도중에 프로세서(들)(82)에 의해 액세스되거나 생성되는 데이터 및/또는 명령들을 저장하는 휘발성 컴퓨터-판독 가능 매체(예컨대, 다이나믹 랜덤 액세스 메모리-DRAM)를 포함할 수 있다. 입력 장치(86)는 사용자가 어플라이언스(80)로 데이터 및/또는 명령들을 도입할 수 있게 하는 개별 하드웨어 인터페이스 및/또는 어댑터를 포함하여, 특히 컴퓨터 키보드, 마우스, 및 마이크를 포함할 수 있다. 출력 장치(88)는 특히 모니터와 같은 디스플레이 장치 및 스피커는 물론, 각 컴퓨팅 장치가 사용자에게 데이터를 통신하게 할 수 있는 그래픽 카드와 같은 하드웨어 인터페이스/어댑터를 포함할 수 있다. 일부 실시예들에서, 입력 장치와 출력 장치(86-88)는 하드웨어의 공통적인 부품(예를 들어서, 터치 스크린)을 공유한다. 저장 장치(92)는 소프트웨어 명령들 및/또는 데이터의 비휘발성 저장, 판독, 및 기록을 가능하게 하는 컴퓨터-판독 가능 매체를 포함한다. 예시적인 저장 장치는 자기 디스크 및 광 디스크 및 플래시 메모리 장치들은 물론, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 소거 가능 매체를 포함한다. 네트워크 어댑터(들)(94)는 전자 통신 네트워크(예를 들어, 도 1의 네트워크(13 및 15)) 및/또는 다른 장치/컴퓨터 시스템에 결합된 물리적 링크 상에서 데이터를 통신하기 위한 기계, 전기 및 신호 회로망(mechanical, electrical, and signaling circuitry)을 포함한다. 어댑터(들)(94)는 다양한 통신 프로토콜을 사용하여 데이터를 송신 및/또는 수신하도록 구성될 수 있다.Memory unit 84 includes a volatile computer-readable medium (e.g., dynamic random access memory-DRAM) that stores data and/or instructions accessed or generated by processor(s) 82 while performing operations. can do. Input devices 86 may include, among other things, a computer keyboard, mouse, and microphone, as well as separate hardware interfaces and/or adapters that allow a user to introduce data and/or commands into appliance 80. Output devices 88 may include, among other things, display devices such as monitors and speakers, as well as hardware interfaces/adapters such as graphics cards that enable each computing device to communicate data to the user. In some embodiments, input and output devices 86-88 share a common piece of hardware (e.g., a touch screen). Storage device 92 includes a computer-readable medium that enables non-volatile storage, reading, and writing of software instructions and/or data. Exemplary storage devices include removable media such as magnetic and optical disks and flash memory devices, as well as CD and/or DVD disks and drives. Network adapter(s) 94 may be a mechanical, electrical and electrical device for communicating data over a physical link coupled to a telecommunications network (e.g., networks 13 and 15 of FIG. 1) and/or other devices/computer systems. Includes mechanical, electrical, and signaling circuitry. Adapter(s) 94 may be configured to transmit and/or receive data using various communication protocols.

컨트롤러 허브(90)는 프로세서(들)(82)와 어플라이언스(80)의 나머지 하드웨어 구성요소들 사이의 통신을 가능하게 하는 복수의 시스템, 주변, 및/또는 칩셋 버스들, 및/또는 다른 모든 회로망을 일반적으로 나타낸다. 예를 들어, 컨트롤러 허브(90)는 메모리 컨트롤러, 입력/출력(I/O) 컨트롤러, 및 인터럽트 컨트롤러(interrupt controller)를 포함할 수 있다. 하드웨어 제조사에 따라서, 일부의 그러한 컨트롤러는 하나의 집적 회로에 합쳐질 수 있고, 그리고/또는 프로세서(들)(82)와 통합될 수 있다. 다른 예에서, 컨트롤러 허브(90)는 프로세서(82)를 메모리(84)에 연결시키는 노스브리지, 및/또는 프로세서(82)를 장치(86, 88, 92 및 94)들에 연결시키는 사우스브리지를 포함할 수 있다.Controller hub 90 provides a plurality of system, peripheral, and/or chipset buses, and/or any other circuitry that enables communication between processor(s) 82 and the remaining hardware components of appliance 80. is generally indicated. For example, the controller hub 90 may include a memory controller, an input/output (I/O) controller, and an interrupt controller. Depending on the hardware manufacturer, some such controllers may be combined into a single integrated circuit and/or integrated with the processor(s) 82. In another example, controller hub 90 includes a northbridge connecting processor 82 to memory 84, and/or a southbridge connecting processor 82 to devices 86, 88, 92, and 94. It can be included.

또한, 상술한 바와 같은 본 발명의 태양들이 다양한 형태의 소프트웨어, 펌웨어, 및 하드웨어, 또는 이들의 조합으로 구현될 수 있다는 것이 통상의 기술자에게 명백할 것이다. 예를 들어, 본 발명의 특정 부분들은 하나 이상의 기능들을 수행하는 특화된 하드웨어 로직(specialized hardware logic)으로 설명될 수 있다. 이 특화된 로직에는 ASIC(Application Specific Integrated Circuit) 또는 FPGA(Field Programmable Gate Array)가 포함될 수 있다. 본 발명의 원리와 일치하는 태양들을 구현하기 위해 사용되는 실제 소프트웨어 코드 또는 특화된 제어 하드웨어는 본 발명을 한정하지 않는다. 따라서, 본 발명의 태양들의 작동 및 거동은 특정 소프트웨어 코드를 참조하지 않고 설명되었으며, 본 기술분야의 통상의 지식을 가진 자라면 본 명세서의 설명에 기초하여 상기 태양들을 구현하기 위해 소프트웨어를 설계하고 하드웨어를 제어할 수 있을 것으로 이해된다.Additionally, it will be apparent to those skilled in the art that aspects of the invention as described above may be implemented in various forms of software, firmware, and hardware, or combinations thereof. For example, certain parts of the invention may be described as specialized hardware logic that performs one or more functions. This specialized logic may include an Application Specific Integrated Circuit (ASIC) or a Field Programmable Gate Array (FPGA). The actual software code or specialized control hardware used to implement aspects consistent with the principles of the invention do not limit the invention. Accordingly, the operation and behavior of aspects of the invention have been described without reference to specific software code, and those skilled in the art will be able to design software and hardware to implement the aspects based on the description herein. It is understood that can be controlled.

상술한 예시적인 시스템 및 방법들은 각각의 서비스들의 수혜자들의 프라이버시를 보호하면서 다양한 도메인 네임 서비스들을 수행할 수 있게 한다. 예를 들어, 일부 실시예들은 도메인 네임들과 IP 주소들 사이의 변환(translation)을 가능하게 하며, 여기서 실제의 변환/데이터베이스 룩업을 수행하는 네임서버는 각각의 도메인 네임 및 IP 어드레스를 인식하지 못한다. 일부 실시예들은 서버측 개인 정보 검색(PIR, private information retrieval) 절차를 가능하게 하기 위해 동형 암호화를 사용한다. 서버는 클라이언트에 암호문을 반환하고, 그리고 나서 클라이언트는 각 암호문을 복호화하여 원하는 데이터베이스 엔트리(예: IP 주소)를 생성한다.The above-described exemplary systems and methods enable performing various domain name services while protecting the privacy of beneficiaries of each service. For example, some embodiments enable translation between domain names and IP addresses, where the name server performing the actual translation/database lookup is unaware of the respective domain names and IP addresses. . Some embodiments use homomorphic encryption to enable a server-side private information retrieval (PIR) procedure. The server returns the ciphertexts to the client, and the client then decrypts each ciphertext to produce the desired database entry (e.g., IP address).

종래의 DNS에서는, 클라이언트 쿼리 및/또는 서버 응답이 암호화되지 않으므로 임의의 제3자가 각각의 DNS 데이터를 스누핑할 수 있다. DNS 기술의 최신 개발은 쿼리 및/또는 클라이언트 응답을 암호화하여 원칙적으로 전송 중에 데이터를 비공개로 유지한다. 그러나 이러한 DNS 변형에서 네임 서버는 여전히 DNS 쿼리를 복호화하여 클리어 텍스트 도메인 네임을 생성한다. 이러한 종래의 DNS와 대조적으로, 일부 실시예들에서, 네임서버는 더 이상 클리어텍스트(cleartext)로 된 트랜잭션 데이터에 액세스하지 않는데, 그 이유는 PIR 절차가 암호화된 입력들을 사용하기 때문이다. 그러므로, 일부 실시예들은 종래의 DNS 솔루션들에 비해 더 강력한 레벨의 프라이버시를 보장한다.In conventional DNS, client queries and/or server responses are not encrypted, allowing any third party to snoop the respective DNS data. Recent developments in DNS technology encrypt queries and/or client responses, in principle keeping data private during transmission. However, in this DNS variant, the name server still decrypts DNS queries to generate clear text domain names. In contrast to this conventional DNS, in some embodiments, the name server no longer accesses transaction data in cleartext because the PIR procedure uses encrypted inputs. Therefore, some embodiments guarantee a stronger level of privacy compared to conventional DNS solutions.

PIR 절차는 각 클라이언트-서버 트랜잭션에서 교환되는 데이터의 컴퓨팅 및 양 측면에서 상대적으로 비용이 많이 든다. 비용을 완화하기 위해, 일부 실시예들은 PIR을 사용하여 도메인 네임 분석의 모든 단계들을 수행하지 않는다. 대신 클라이언트는 기존 DNS 또는 DNS over HTTPS와 같은 비동형으로 암호화된 변형(non-homomorphically encrypted variant)을 사용하여 최상위 도메인(TLD) 네임서버를 쿼리할 수 있으며, 도메인 네임 계층 구조의 도메인 및/또는 서브 도메인 레벨에서 각 도메인 네임을 분해(해석)하는 선택된 네임서버를 쿼리할 때만 PIR 절차를 사용할 수 있다. 이러한 전략은 후자의 네임 서버에 의해 제공되는 정보가, 예를 들어 도메인 네임의 TLD 부분보다 프라이버시에 상대적으로 더 중요하다는 점에 의존한다. 일부 실시예들은 각각의 FQDN의 적어도 토큰에 따라 PIR을 선택적으로 추가로 적용한다. 달리 말하면, 특정 토큰(예: 'google.com', 'www' 등)을 분해하는 것은 기존 DNS를 통해 수행될 수 있는 반면, 다른 더 많은 프라이버시 염려가 있는 토큰들의 분해는 PIR을 통해 수행될 수 있다.The PIR procedure is relatively expensive in terms of computing and the amount of data exchanged in each client-server transaction. To mitigate cost, some embodiments do not perform all steps of domain name resolution using PIR. Instead, clients can query top-level domain (TLD) nameservers using traditional DNS or a non-homomorphically encrypted variant, such as DNS over HTTPS, for domains and/or sub-domains in the domain name hierarchy. You can use the PIR procedure only when querying selected name servers that resolve each domain name at the domain level. This strategy relies on the information provided by the latter name servers being relatively more important to privacy than, for example, the TLD portion of the domain name. Some embodiments additionally selectively apply a PIR according to at least a token of each FQDN. In other words, decomposition of certain tokens (e.g. 'google.com', 'www', etc.) can be done via traditional DNS, while decomposition of other, more privacy-concern tokens can be done via PIR. there is.

DNS 데이터베이스는 수백만 개의 특징적인 레코드(distinct record)를 보유할 수 있다. 이러한 데이터베이스의 큰 크기(sheer size)로 인해 PIR 쿼리가 실용적이 못하게 될 수 있다. 이러한 한계를 해결하기 위해, 일부 실시예들은 데이터베이스의 크기를 감소시키고, 따라서 PIR 계산의 복잡도 및 쿼리 및 서버 응답의 크기를 감소시키기 위해 버킷팅 접근법을 추가로 채용한다. 컴퓨터 실험에 따르면 데이터베이스 크기를 65536개의 레코드로 줄이면 DNS 룩업을 수행하는 데 필요한 평균 시간을 1초 아래로 유지할 수 있고, 이것은 현재 시스템과 방법의 적용이 상업적으로나 기술적으로 실행 가능하게 만든다. 이 접근법의 주의점(caveat)은 데이터베이스의 크기를 줄이면 프라이버시도 본질적으로 줄어든다는 것이다. 그러나 데이터베이스 크기의 일부 선택은 프라이버시와 속도 간에 허용 가능한 절충안을 제공할 수 있다. 더욱이, PIR 절차는 원칙적으로 병렬화(parallelizable)가 가능하기 때문에, 병렬 컴퓨팅 구성을 사용하여, 예를 들어, 다수의 상호 연결된 프로세서 코어 또는 그래픽 처리 장치(GPU) 팜을 사용함으로써 서버측 PIR을 설정함으로써, 속도의 더 많은 이득이 달성될 수 있다.DNS databases can hold millions of distinctive records. The sheer size of these databases can make PIR queries impractical. To address these limitations, some embodiments further employ a bucketing approach to reduce the size of the database and thus the complexity of PIR calculations and the size of queries and server responses. Computer experiments have shown that reducing the database size to 65536 records can keep the average time required to perform a DNS lookup below 1 second, making the application of the current system and method commercially and technically feasible. The caveat of this approach is that reducing the size of the database inherently reduces privacy. However, some choices of database size may provide an acceptable compromise between privacy and speed. Moreover, since the PIR procedure is in principle parallelizable, a parallel computing configuration can be used to set up server-side PIR, for example by using multiple interconnected processor cores or graphics processing unit (GPU) farms. , more gains in speed can be achieved.

본 발명의 일부 실시예들은 도메인 네임 분해(해석)와 구별되는 다양한 다른 시나리오들, 예컨대 컴퓨터 보안, 어플리케이션 제어, 부모 제어 등에 적응될 수 있다. 하나의 예시적인 사용 사례 시나리오에서, 클라이언트 상에서, 라우터/네트워크 게이트웨이 상에서, 또는 원격 보안 서버 상에서 실행될 수 있는 컴퓨터 보안 구성요소는 각각의 쿼리를 복호화하지 않고 데이터베이스 룩업을 수행하도록 구성된 서버와 PIR 교환에 참여할 수 있다. 데이터베이스 레코드는 특정 도메인이 컴퓨터 보안과 관련된 특정 카테고리와 연관되어 있는지 여부(예: 각 도메인이 블랙리스트에 올라 있는지 또는 사기 행위에 관여하는지 여부 등)를 나타낼 수 있다. 부모 제어 사용 사례 시나리오에서, 데이터베이스 레코드는 예를 들어 특정 도메인이 성인물을 배포하는지 여부를 나타낼 수 있다. 어플리케이션 제어 사용 사례 시나리오에서 데이터베이스 레코드는 각 도메인이 특정 종류의 온라인 활동(게임, 소셜 미디어 등)과 연관되어 있는지 여부를 나타낼 수 있다. 그러므로, 일부 실시예들은 특정 도메인으로 오가는 트래픽을 선택적으로 필터링하거나, 사용자가 특정 도메인에 액세스하는 것을 차단할 수 있게 한다. 이러한 필터링/차단은 본 기술분야에 공지되어 있지만, 종래의 트래픽 제어 절차와 달리, 본 발명의 일부 실시예들에서, 실제 데이터베이스 룩업을 실행하는 서버는 각각의 정보가 요청되는 도메인 네임을 알지 못한다. 이것은 예를 들어, 서버 및 관련 도메인 네임 데이터베이스가 사용자의 프라이버시를 손상시키지 않으면서 보안/부모 제어(자녀 보호)/어플리케이션 제어 서비스의 제공자와 다른 객체에 의하여 소유 및/또는 운영되는 것이 가능하게 한다. Some embodiments of the invention may be adapted to a variety of other scenarios distinct from domain name resolution, such as computer security, application control, parental control, etc. In one example use case scenario, a computer security component, which may be running on a client, on a router/network gateway, or on a remote security server, participates in a PIR exchange with a server configured to perform a database lookup without decrypting each query. You can. Database records may indicate whether certain domains are associated with certain categories related to computer security (e.g., whether each domain is blacklisted or engaged in fraudulent activity, etc.). In a parental control use case scenario, a database record could indicate, for example, whether a particular domain distributes adult material. In an application control use case scenario, database records could indicate whether each domain is associated with a particular kind of online activity (gaming, social media, etc.). Therefore, some embodiments allow selective filtering of traffic to and from specific domains or blocking users from accessing specific domains. Such filtering/blocking is well known in the art, but unlike conventional traffic control procedures, in some embodiments of the invention, the server performing the actual database lookup does not know the domain name for which each piece of information is requested. This makes it possible, for example, for servers and associated domain name databases to be owned and/or operated by providers of security/parental control/application control services and other entities without compromising the privacy of users.

본 발명의 범위를 벗어나지 않으면서 다양한 방법으로 상기 실시예들이 변경될 수 있음은 통상의 기술자에게 자명할 것이다. 따라서, 본 발명의 범위는 이하의 청구항들과 이들의 법적 균등물에 의하여 결정되어야 한다.It will be apparent to those skilled in the art that the above embodiments may be changed in various ways without departing from the scope of the present invention. Accordingly, the scope of the present invention should be determined by the following claims and their legal equivalents.

Claims (20)

도메인 네임 서비스(DNS) 룩업(lookup)을 수행하는 방법으로서,
도메인 네임의 표시자(indicator)를 수신하는 것에 응답으로, 프라이버시 조건이 상기 도메인 네임에 따라 만족되는지 여부를 결정하기 위해,
상기 프라이버시 조건이 만족되는지 여부를 결정하는 것에 응답으로, 만약 만족한다면, 도메인 네임 데이터베이스 내의 레코드의 위치를 나타내는 해시 인덱스(hash index)의 암호화를 포함하는 프라이빗 쿼리를 생성(formulating)하기 위해 (이 때, 상기 해시 인덱스는 동형 암호화(homomorphic encryption) 절차에 따라 암호화되고, 상기 해시 인덱스는 상기 도메인 네임에 따라 결정됨),
상기 프라이빗 쿼리를 생성하는 것에 응답으로, 상기 프라이빗 쿼리에 따라 상기 도메인 네임 데이터베이스로의 암호화된 룩업을 수행하도록 구성된 네임서버로 상기 프라이빗 쿼리를 전송하여, 상기 레코드의 암호화를 생성하기 위하여 ; 그리고
상기 네임서버로부터 상기 레코드의 암호화를 포함하는 프라이빗 응답을 수신하는 것에 응답으로, 동형 복호화 절차에 따라 상기 프라이빗 응답의 콘텐츠를 복호화하기 위하여,
컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함하는 방법.
A method of performing a domain name service (DNS) lookup, comprising:
In response to receiving an indicator of a domain name, to determine whether privacy conditions are satisfied according to the domain name,
In response to determining whether the privacy conditions are satisfied, if so, to formulate a private query that includes encryption of a hash index indicating the location of the record in the domain name database (when , the hash index is encrypted according to a homomorphic encryption procedure, and the hash index is determined according to the domain name),
in response to generating the private query, transmitting the private query to a name server configured to perform an encrypted lookup to the domain name database according to the private query, thereby producing encryption of the record; and
In response to receiving a private response containing encryption of the record from the name server, decrypt the contents of the private response according to a homomorphic decryption procedure,
A method comprising employing at least one hardware processor of a computer system.
제1항에 있어서,
상기 프라이버시 조건이 만족되는지 여부를 결정하는 것에 응답으로, 만일 만족되지 않는다면,
상기 도메인 네임에 따라 또 다른 쿼리를 생성하기 위하여(이 때, 다른 쿼리의 콘텐츠는 비동형 암호화 절차에 따라 암호화됨); 그리고
상기 다른 쿼리를 상기 네임 서버로 전송하기 위하여,
상기 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 추가로 포함하는 것을 특징으로 하는 방법.
According to paragraph 1,
In response to determining whether the above privacy conditions are satisfied, if not,
to generate another query according to the domain name (where the content of the other query is encrypted according to a non-homomorphic encryption procedure); and
To transmit the other query to the name server,
The method of claim 1 , further comprising employing at least one hardware processor of the computer system.
제1항에 있어서,
상기 도메인 네임은 토큰들의 시퀀스를 포함하고,
상기 프라이버시 조건이 만족되는지 여부를 결정하는 것은 상기 토큰들의 시퀀스 중 선택된 토큰이 토큰들의 참조 리스트의 임의의 멤버와 매칭되는지의 여부를 결정하는 것을 포함하는 것을 특징으로 하는 방법.
According to paragraph 1,
The domain name includes a sequence of tokens,
wherein determining whether the privacy condition is satisfied includes determining whether a selected token of the sequence of tokens matches any member of a reference list of tokens.
제3항에 있어서,
상기 선택된 토큰은 도메인 토큰 또는 접두어 토큰(prefix token)을 포함하는 것을 특징으로 하는 방법.
According to paragraph 3,
Wherein the selected token includes a domain token or a prefix token.
제1항에 있어서,
상기 프라이버시 조건이 추가로 상기 네임서버의 권한 영역에 따라 만족되는지 여부를 결정하는 것을 포함하는 것을 특징으로 하는 방법.
According to paragraph 1,
and determining whether the privacy condition is further satisfied according to the authority area of the name server.
제5항에 있어서,
상기 네임서버가 최상위 도메인(TLD) 네임서버를 포함하는 경우, 상기 프라이버시 조건이 만족되지 않는다고 결정하는 것을 추가로 포함하는 것을 특징으로 하는 방법.
According to clause 5,
If the name server includes a top-level domain (TLD) name server, determining that the privacy condition is not satisfied.
제1항에 있어서,
상기 프라이빗 쿼리는 상기 네임서버에 연결된 복수의 도메인 네임 데이터베이스 중에서 상기 도메인 네임 데이터베이스를 식별하는 버킷 인덱스를 추가로 포함하는 것을 특징으로 하는 방법.
According to paragraph 1,
The method characterized in that the private query further includes a bucket index that identifies the domain name database among a plurality of domain name databases connected to the name server.
제1항에 있어서,
상기 레코드는 인터넷 프로토콜(IP) 주소를 포함하는 것을 특징으로 하는 방법.
According to paragraph 1,
and wherein the record includes an Internet Protocol (IP) address.
제1항에 있어서,
상기 레코드는 상기 도메인 네임에 의해 표현되는 도메인에 액세스하는 것이 사용자를 컴퓨터 보안 위협에 노출시키는지 여부를 나타내는 보안 표시자를 포함하는 것을 특징으로 하는 방법.
According to paragraph 1,
and wherein the record includes a security indicator indicating whether accessing the domain represented by the domain name exposes the user to a computer security threat.
도메인 네임의 표시자를 수신하는 것에 응답으로, 프라이버시 조건이 상기 도메인 네임에 따라 만족되는지 여부를 결정하도록,
상기 프라이버시 조건이 만족되는지 여부를 결정하는 것에 응답으로, 만약 만족된다면, 도메인 네임 데이터베이스 내의 레코드의 위치를 나타내는 해시 인덱스의 암호화를 포함하는 프라이빗 쿼리를 생성하도록 (이 때, 상기 해시 인덱스는 동형 암호화 절차에 따라 암호화되고, 그리고 상기 해시 인덱스는 상기 도메인 네임에 따라 결정됨),
상기 프라이빗 쿼리를 생성하는 것에 응답으로, 상기 프라이빗 쿼리에 따라 상기 도메인 네임 데이터베이스로의 암호화된 룩업을 수행하도록 구성된 네임서버로 상기 프라이빗 쿼리를 전송하여, 상기 레코드의 암호화를 생성하도록; 그리고
상기 네임서버로부터 상기 레코드의 암호화를 포함하는 프라이빗 응답을 수신하는 것에 응답으로, 동형 복호화 절차에 따라 상기 프라이빗 응답의 내용을 복호화하도록, 구성되는 적어도 하나의 하드웨어 프로세서를 포함하는 컴퓨터 시스템.
In response to receiving an indicator of a domain name, determine whether privacy conditions are satisfied according to the domain name,
In response to determining whether the privacy condition is satisfied, if so, to generate a private query that includes encryption of a hash index indicating the location of the record in the domain name database, where the hash index is encrypted according to, and the hash index is determined according to the domain name),
in response to generating the private query, send the private query to a nameserver configured to perform an encrypted lookup to the domain name database according to the private query, thereby producing encryption of the record; and
A computer system comprising at least one hardware processor configured to, in response to receiving a private response containing encryption of the record from the name server, decrypt the contents of the private response according to a homomorphic decryption procedure.
제10항에 있어서,
상기 적어도 하나의 하드웨어 프로세서는, 상기 프라이버시 조건이 만족되는지 여부를 결정하는 것에 응답으로, 만일 만족되지 않는다면,
상기 도메인 네임에 따라 또 다른 쿼리를 생성하도록(이 때, 다른 쿼리의 콘텐츠는 비동형 암호화 절차에 따라 암호화됨); 그리고
상기 다른 쿼리를 상기 네임 서버로 전송하도록; 추가로 구성되는 것을 특징으로 하는 컴퓨터 시스템.
According to clause 10,
The at least one hardware processor, in response to determining whether the privacy condition is satisfied, if not, states:
generate another query according to the domain name (where the content of the other query is encrypted according to a non-homomorphic encryption procedure); and
send the other queries to the name server; A computer system, characterized in that it is further configured.
제10항에 있어서,
상기 도메인 네임은 토큰들의 시퀀스를 포함하고,
상기 프라이버시 조건이 만족되는지 여부를 결정하는 것은 상기 토큰들의 시퀀스 중 선택된 토큰이 토큰들의 참조 리스트의 임의의 멤버와 매칭되는지의 여부를 결정하는 것을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
According to clause 10,
The domain name includes a sequence of tokens,
and determining whether the privacy condition is satisfied includes determining whether a selected token of the sequence of tokens matches any member of a reference list of tokens.
제12항에 있어서,
상기 선택된 토큰은 도메인 토큰 또는 접두어 토큰을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
According to clause 12,
and wherein the selected token includes a domain token or a prefix token.
제10항에 있어서,
상기 적어도 하나의 하드웨어 프로세서는, 상기 프라이버시 조건이 추가로 상기 네임서버의 권한 영역에 따라 만족되는지 여부를 결정하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
According to clause 10,
wherein the at least one hardware processor is configured to determine whether the privacy condition is satisfied further according to an authority zone of the name server.
제14항에 있어서,
상기 적어도 하나의 하드웨어 프로세서는, 상기 네임서버가 최상위 도메인(TLD) 네임서버를 포함하는 경우, 상기 프라이버시 조건이 만족되지 않는다고 결정하도록 추가로 구성되는 것을 특징으로 하는 컴퓨터 시스템.
According to clause 14,
wherein the at least one hardware processor is further configured to determine that the privacy condition is not met when the name server includes a top-level domain (TLD) name server.
제10항에 있어서,
상기 프라이빗 쿼리는 상기 네임서버에 연결된 복수의 도메인 네임 데이터베이스 중에서 상기 도메인 네임 데이터베이스를 식별하는 버킷 인덱스를 추가로 포함하는 것을 특징으로 하는 컴퓨터 시스템.
According to clause 10,
The computer system, wherein the private query further includes a bucket index that identifies the domain name database among a plurality of domain name databases connected to the name server.
제10항에 있어서,
상기 레코드는 인터넷 프로토콜(IP) 주소를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
According to clause 10,
and wherein the record includes an Internet Protocol (IP) address.
제10항에 있어서,
상기 레코드는 상기 도메인 네임에 의해 표현되는 도메인에 액세스하는 것이 사용자를 컴퓨터 보안 위협에 노출시키는지를 나타내는 보안 표시자를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
According to clause 10,
and the record includes a security indicator indicating whether accessing the domain represented by the domain name exposes the user to a computer security threat.
컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금,
도메인 네임의 표시자를 수신하는 것에 응답으로, 프라이버시 조건이 상기 도메인 네임에 따라 만족되는지를 결정하도록 하고,
상기 프라이버시 조건이 만족되는지 여부를 결정하는 것에 응답으로, 만약 만족된다면, 도메인 네임 데이터베이스 내의 레코드의 위치를 나타내는 해시 인덱스의 암호화를 포함하는 프라이빗 쿼리를 생성하도록 하고(이 때, 상기 해시 인덱스는 동형 암호화 절차에 따라 암호화되고, 상기 해시 인덱스는 상기 도메인 네임에 따라 결정됨),
상기 프라이빗 쿼리를 생성하는 것에 응답으로, 상기 프라이빗 쿼리에 따라 상기 도메인 네임 데이터베이스로 암호화된 룩업을 수행하도록 구성된 네임서버로 상기 프라이빗 쿼리를 전송하여, 상기 레코드의 암호화를 생성하도록 하고; 그리고
상기 네임서버로부터 상기 레코드의 암호화를 포함하는 프라이빗 응답을 수신하는 것에 응답하여, 동형 복호화 절차에 따라 상기 프라이빗 응답의 콘텐츠를 복호화하도록 하는, 명령을 저장하는 비일시적 컴퓨터 판독가능 매체.
When executed by at least one hardware processor of a computer system, it causes the computer system to:
In response to receiving an indicator of a domain name, determine whether privacy conditions are satisfied according to the domain name, and
In response to determining whether the privacy condition is satisfied, if so, generate a private query that includes encryption of a hash index indicating the location of the record in the domain name database, wherein the hash index is homomorphically encrypted. encrypted according to the procedure, and the hash index is determined according to the domain name),
In response to generating the private query, send the private query to a name server configured to perform an encrypted lookup to the domain name database according to the private query to generate encryption of the record; and
In response to receiving a private response containing encryption of the record from the name server, a non-transitory computer-readable medium storing instructions to decrypt the contents of the private response according to a homomorphic decryption procedure.
복수의 클라이언트들과 DNS(Domain Name Service) 트랜잭션에 참여하도록 구성되는 서버 컴퓨터 시스템으로서,
상기 서버 컴퓨터 시스템은,
상기 복수의 클라이언트들 중의 클라이언트로부터 프라이빗 쿼리를 수신하도록 (이 때, 상기 프라이빗 쿼리는 도메인 네임 데이터베이스 내의 레코드의 위치를 나타내는 해시 인덱스의 암호화를 포함하고, 상기 해시 인덱스는 동형 암호화 절차에 따라 암호화되고, 상기 해시 인덱스는 도메인 네임에 따라 결정됨),
상기 프라이빗 쿼리를 수신하는 것에 응답으로, 상기 프라이빗 쿼리에 따라 상기 도메인 네임 데이터베이스로의 암호화된 룩업을 수행하여, 상기 레코드의 암호화를 생성하도록; 그리고
상기 레코드의 암호화를 포함하는 프라이빗 응답을 상기 클라이언트에게 전송하도록; 구성된 적어도 하나의 하드웨어 프로세서를 포함하는, 서버 컴퓨터 시스템.
A server computer system configured to participate in Domain Name Service (DNS) transactions with a plurality of clients, comprising:
The server computer system is,
To receive a private query from a client of the plurality of clients (wherein the private query includes encryption of a hash index indicating the location of a record in the domain name database, and the hash index is encrypted according to a homomorphic encryption procedure, The hash index is determined according to the domain name),
in response to receiving the private query, perform an encrypted lookup to the domain name database according to the private query to produce encryption of the record; and
send a private response containing encryption of the record to the client; A server computer system comprising at least one hardware processor configured.
KR1020247009223A 2021-11-02 2021-11-02 Privacy-Protecting Domain Name Service (DNS) KR20240101543A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2021/080380 WO2023078529A1 (en) 2021-11-02 2021-11-02 Privacy-preserving domain name service (dns)

Publications (1)

Publication Number Publication Date
KR20240101543A true KR20240101543A (en) 2024-07-02

Family

ID=78617374

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247009223A KR20240101543A (en) 2021-11-02 2021-11-02 Privacy-Protecting Domain Name Service (DNS)

Country Status (7)

Country Link
EP (1) EP4427398A1 (en)
KR (1) KR20240101543A (en)
CN (1) CN117941321A (en)
AU (1) AU2021472181A1 (en)
CA (1) CA3229354A1 (en)
IL (1) IL311080A (en)
WO (1) WO2023078529A1 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9202079B2 (en) * 2012-10-25 2015-12-01 Verisign, Inc. Privacy preserving data querying
US11277373B2 (en) * 2019-07-24 2022-03-15 Lookout, Inc. Security during domain name resolution and browsing

Also Published As

Publication number Publication date
EP4427398A1 (en) 2024-09-11
CN117941321A (en) 2024-04-26
CA3229354A1 (en) 2023-05-11
WO2023078529A1 (en) 2023-05-11
IL311080A (en) 2024-04-01
AU2021472181A1 (en) 2024-03-07

Similar Documents

Publication Publication Date Title
US10498706B2 (en) Searchable encryption enabling encrypted search based on document type
US11750363B2 (en) Privacy-preserving domain name service (DNS)
US10614135B2 (en) Wildcard search in encrypted text using order preserving encryption
CN108476246B (en) Secure domain name resolution in computer networks
US9754128B2 (en) Dynamic pseudonymization method for user data profiling networks and user data profiling network implementing the method
CN108616544B (en) Method, system, and medium for detecting updates to a domain name system recording system
US10929402B1 (en) Secure join protocol in encrypted databases
Poon et al. Fast phrase search for encrypted cloud storage
CN112242898B (en) Encryption method for onion network system consensus file
EP3311555B1 (en) Security for domain name system
KR20240101543A (en) Privacy-Protecting Domain Name Service (DNS)
JP2024541996A (en) Privacy-preserving Domain Name Service (DNS)
US11438166B2 (en) System and method for use of a suffix tree to control blocking of blacklisted encrypted domains
US10756892B2 (en) Protecting data in a multi-tenant cloud-based system
Funde et al. HORAM: Hybrid oblivious random access memory scheme for secure path hiding in distributed environment
Le et al. Query access assurance in outsourced databases
Spasic et al. SENSSE: Simple, Efficient Searchable Symmetric Encryption for Sensor Networks.
CN117010009A (en) Data processing method, system, device and storage medium
Slieker et al. Protecting Personal Data in the Cloud
Ferreira Rui Abreu de