KR20240124308A - 암호화된 dns을 사용하여 인터넷 접속을 제어하는 시스템 및 방법 - Google Patents

암호화된 dns을 사용하여 인터넷 접속을 제어하는 시스템 및 방법 Download PDF

Info

Publication number
KR20240124308A
KR20240124308A KR1020247020691A KR20247020691A KR20240124308A KR 20240124308 A KR20240124308 A KR 20240124308A KR 1020247020691 A KR1020247020691 A KR 1020247020691A KR 20247020691 A KR20247020691 A KR 20247020691A KR 20240124308 A KR20240124308 A KR 20240124308A
Authority
KR
South Korea
Prior art keywords
query
dns
client device
access
identifier
Prior art date
Application number
KR1020247020691A
Other languages
English (en)
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 KR20240124308A publication Critical patent/KR20240124308A/ko

Links

Classifications

    • 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
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/59Network arrangements, protocols or services for addressing or naming using proxies for addressing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/105Multiple levels of security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

설명된 시스템 및 방법은 유해하거나 부적절한 인터넷 콘텐츠로부터 암호화된 DNS 프로토콜을 구현하는 클라이언트 장치(예를 들어, 개인용 컴퓨터 및 IoT 장치)를 보호할 수 있게 한다. DNS 프록시는 클라이언트 장치와 DNS 서버 간에 암호화된 통신 세션을 설정하려는 시도를 가로막는다. 어떠한 통신도 복호화하지 않고, DNS 프록시의 일부 실시예들은 각각의 세션의 식별자 및 클라이언트 장치의 식별자를 결정하고, 세션 식별자를 클라이언트 식별자와 연결하는 쿼리 트레이서를 보안 서버로 전송한다. 일부 실시예들에서, 보안 서버는 암호화된 DNS 쿼리에 포함된 도메인 네임을 DNS 서버로부터 획득하고, 장치 및/또는 사용자 특정 액세스 정책에 따라 각각의 인터넷 도메인에 대한 클라이언트 장치의 액세스를 허용하거나 차단하도록 DNS 서버에 지시한다.

Description

암호화된 DNS을 사용하여 인터넷 접속을 제어하는 시스템 및 방법
본 발명은 컴퓨터 보안, 특히 악의적인 인터넷 콘텐츠로부터 사용자를 보호하는 것에 관한 것이다.
멀웨어로도 알려진 악성 소프트웨어는 세계적으로 많은 수의 컴퓨터 시스템에 영향을 주고 있다. 멀웨어는 컴퓨터 바이러스, 트로이 목마(Trojan horse), 스파이웨어 및 랜섬웨어와 같은 많은 형태로, 수백만의 컴퓨터 사용자에게 심각한 위협이 되고 있으며, 무엇보다도 데이터 및 민감 정보의 손실, 신원 도용, 및 생산성 손실에 있어 이들을 취약하게 하고 있다. 악성 소프트웨어는 또한 컴퓨터 시스템에 인가받지 않은 접근이 가능하게 할 수 있고, 이는 추가적으로 공격자(해커)로 하여금 사용자의 데이터와 다른 민감 정보를 빼낼 수 있게 할 수 있다. 멀웨어 확산의 중요한 경로는 사용자가 악의적이거나 사기성 콘텐츠를 호스팅하는 웹 사이트에 실수로 접근하는 것으로 구성된다.
한편, 비공식적으로는 사물인터넷(Internet of Things, IoT)이라고 호칭되는 장치들이 통신 네트워크와 인터넷에 점점 더 많이 연결되고 있다. 그러한 장치들은 특히, 스마트폰, 스마트워치, TV와 다른 멀티미디어 장치, 게임 컨솔, 홈 어플라이언스, 및 온도 조절 장치와 같은 다양한 가정용 센서들을 포함한다. 그러한 장치들이 더 많이 온라인에 연결되면 될수록 이들은 멀웨어와 침입과 같은 보안 위협에 노출되게 된다. 따라서, 그러한 장치들과 주고받는 통신을 보호하는 것뿐만 아니라 그러한 장치들을 멀웨어로부터 보호해야 할 필요성이 증가하고 있다. 사물 인터넷의 출현으로 관심이 새로워진 특정 영역에는 액세스 제어 어플리케이션, 예를 들어, 부모 제어(parental control, 자녀 보호) 및 기밀 정보가 IoT 장치를 통해 전송되는 것을 방지하는 것을 포함한다.
사용자 및 장치를 보호하는 종래의 방법에는 원격 인터넷 리소스에 연결을 시도하는 동안 보호된 장치에 의해 전송된 DNS(Domain Name Service) 메시지를 가로채는 것(인터셉팅, intercepting)이 포함된다. 이러한 예 중 하나에서, 수정된 DNS 서버는 블랙리스트에서 요청된 도메인을 조회(룩업, look up)할 수 있다. 도메인이 안전하지 않은 것으로 간주되면, DNS 서버는 액세스를 차단하거나 그리고/또는 각각의 요청을 경고 메시지를 제공하는 대체 IP 주소로 리-디렉션할 수 있다. 다른 예에서, 이러한 DNS 기반 트래픽 필터링은 사용자의 네트워크 어플라이언스(예를 들어, 게이트웨이 또는 라우터)에서 실행되는 하드웨어 및/또는 소프트웨어 요소에 의해 수행된다.
사용자 프라이버시에 대한 우려로 인해 암호화된 도메인 네임 서비스가 개발되었다. 예를 들어 IETF(Internet Engineering Task Force)의 RFC(Request for Comments) 7858에 설명된 바와 같은, TLS(전송 계층 보안)를 통한 DNS(DNS over transport layer security(TLS)) 및 예를 들어 IETF RFC 8484에 설명된 바와 같은, DNS over hypertext transport protocol secure (HTTPS)가 있다. 이러한 프로토콜은 종단-대-종단 암호화(end-to-end encryption)를 구현하기 때문에, 이들은 중개자(예를 들어, 라우터)가 DNS 기반 트래픽 필터링을 수행하는 것을 방지함으로써 컴퓨터 보안 활동을 실질적으로 방해할 수 있다.
따라서 암호화된 DNS의 경우 트래픽 필터링을 가능하게 하는 컴퓨터 보안 시스템 및 방법을 개발할 상당한 필요가 있다.
일 태양에 따르면, 본 발명의 방법은 DNS 프록시를 실행하기 위해 네트워크 어플라이언스의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함한다. DNS 프록시는 클라이언트 장치와 DNS 서버 사이에 암호화된 통신 세션을 형성하려는 시도를 인터셉트하도록 구성되고, 여기서 상기 클라이언트 장치는 로컬 네트워크 상에서 상기 네트워크 어플라이언스에 연결되고, 상기 암호화된 통신 세션은 클리어텍스트 부분(평문 부분, cleartext part) 및 암호화된 부분을 포함한다. 암호화된 부분은 암호화된 DNS 쿼리를 DNS 서버로 전송하는 것을 포함한다. DNS 프록시는 암호화된 통신 세션을 식별하는 세션 식별자 및 클라이언트 장치를 식별하는 클라이언트 식별자를 결정하도록 추가적으로 구성되며, 상기 세션 식별자는 암호화된 통신 세션의 클리어텍스트 부분의 콘텐츠에 따라 결정된다. 상기 DNS 프록시는 상기 세션 식별자를 상기 클라이언트 식별자와 연계시키는 쿼리 트레이서(tracer)를 상기 쿼리 트레이서에 따라 액세스 표시자(access indicator)를 결정하도록 구성된 보안 서버로 전송하도록 추가로 구성되고, 상기 액세스 표시자는 상기 클라이언트 식별자에 따라 선택된 액세스 정책이 암호화된 DNS 쿼리에 따라 식별된 인터넷 도메인에 대한 액세스를 허용하는지 여부를 표시한다. 보안 서버는 액세스 정책을 시행(enforcing)하기 위하여 액세스 표시자를 통신하도록 추가로 구성된다.
다른 태양에 따르면, 네트워크 어플라이언스는 DNS 프록시를 실행하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함한다. DNS 프록시는 클라이언트 장치와 DNS 서버 사이에 암호화된 통신 세션을 형성하려는 시도를 인터셉트하도록 구성되고, 여기서 상기 클라이언트 장치는 로컬 네트워크 상에서 상기 네트워크 어플라이언스에 연결되고, 상기 암호화된 통신 세션은 클리어텍스트 부분(평문 부분, cleartext part) 및 암호화된 부분을 포함한다. 암호화된 부분은 암호화된 DNS 쿼리를 DNS 서버로 전송하는 것을 포함한다. DNS 프록시는 암호화된 통신 세션을 식별하는 세션 식별자 및 클라이언트 장치를 식별하는 클라이언트 식별자를 결정하도록 추가적으로 구성되며, 상기 세션 식별자는 암호화된 통신 세션의 클리어텍스트 부분의 콘텐츠에 따라 결정된다. 상기 DNS 프록시는 상기 세션 식별자를 상기 클라이언트 식별자와 연계시키는 쿼리 트레이서(tracer)를 상기 쿼리 트레이서에 따라 액세스 표시자(access indicator)를 결정하도록 구성된 보안 서버로 전송하도록 추가로 구성되고, 상기 액세스 표시자는 상기 클라이언트 식별자에 따라 선택된 액세스 정책이 암호화된 DNS 쿼리에 따라 식별된 인터넷 도메인에 대한 액세스를 허용하는지 여부를 표시한다. 보안 서버는 액세스 정책을 시행(enforcing)하기 위하여 액세스 표시자를 통신하도록 추가로 구성된다.
또 다른 태양에 따르면, 비일시적 컴퓨터 판독가능 매체는, 네트워크 어플라이언스의 적어도 하나의 하드웨어 프로세서에 의해 실행될 때, 상기 네트워크 어플라이언스로 하여금, DNS 프록시를 형성하도록 하는 명령어들을 저장한다. DNS 프록시는 클라이언트 장치와 DNS 서버 사이에 암호화된 통신 세션을 형성하려는 시도를 인터셉트하도록 구성되고, 여기서 상기 클라이언트 장치는 로컬 네트워크 상에서 상기 네트워크 어플라이언스에 연결되고, 상기 암호화된 통신 세션은 클리어텍스트 부분(평문 부분, cleartext part) 및 암호화된 부분을 포함한다. 암호화된 부분은 암호화된 DNS 쿼리를 DNS 서버로 전송하는 것을 포함한다. DNS 프록시는 암호화된 통신 세션을 식별하는 세션 식별자 및 클라이언트 장치를 식별하는 클라이언트 식별자를 결정하도록 추가적으로 구성되며, 상기 세션 식별자는 암호화된 통신 세션의 클리어텍스트 부분의 콘텐츠에 따라 결정된다. 상기 DNS 프록시는 상기 세션 식별자를 상기 클라이언트 식별자와 연계시키는 쿼리 트레이서(tracer)를 상기 쿼리 트레이서에 따라 액세스 표시자(access indicator)를 결정하도록 구성된 보안 서버로 전송하도록 추가로 구성되고, 상기 액세스 표시자는 상기 클라이언트 식별자에 따라 선택된 액세스 정책이 암호화된 DNS 쿼리에 따라 식별된 인터넷 도메인에 대한 액세스를 허용하는지 여부를 표시한다. 보안 서버는 액세스 정책을 시행(enforcing)하기 위하여 액세스 표시자를 통신하도록 추가로 구성된다.
또 다른 태양에 따르면, 컴퓨터 시스템은 클라이언트 장치와 DNS 서버 사이의 암호화된 통신 세션을 특징짓는 쿼리 트레이서를 DNS 프록시로부터 수신하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함한다. DNS 프록시는 로컬 네트워크 상에서 클라이언트 장치에 연결되고, 암호화된 통신 세션은 클리어텍스트 부분과 암호화된 부분을 포함하고, 암호화된 부분은 클라이언트 장치가 암호화된 DNS 쿼리를 DNS 서버로 전송하는 것을 포함한다. 쿼리 트레이서는 세션 식별자를 클라이언트 식별자와 연관시키고, 클라이언트 식별자는 클라이언트 장치를 식별하고, 세션 식별자는 암호화된 통신 세션을 식별하며, 클리어텍스트 부분의 콘텐츠에 따라 결정된다. 상기 적어도 하나의 하드웨어 프로세서는, 상기 암호화된 DNS 쿼리에 포함된 도메인 네임을 포함하는 쿼리 통지를 상기 DNS 서버로부터 수신하도록 추가적으로 구성되고, 상기 쿼리 통지는 상기 도메인 네임을 세션 식별자와 추가로 연관시킨다. 상기 적어도 하나의 하드웨어 프로세서는 쿼리 트레이서 및 쿼리 통지에 따라 액세스 표시자를 결정하도록 추가적으로 구성되며, 상기 액세스 표시자는 상기 클라이언트 식별자에 따라 선택된 액세스 정책이 상기 클라이언트 장치가 상기 도메인 네임을 갖는 인터넷 도메인에 접근하는 것을 허용하는지 여부를 표시한다. 상기 적어도 하나의 하드웨어 프로세서는 상기 액세스 정책을 시행하기 위하여 액세스 표시자를 통신하도록 추가적으로 구성된다.
본 발명의 전술한 태양들 및 장점은 후술하는 상세한 설명 및 도면을 참조로 이해하면 더욱 잘 이해될 것이다:
도 1은 본 발명의 일부 실시예에 따른 컴퓨터 보안 위협으로부터 보호되는 클라이언트 장치들의 예시적인 세트를 보여준다.
도 2는 본 기술분야에 알려진 바와 같은 전형적인 도메인 네임 서비스(DNS) 트랜잭션을 보여준다.
도 3 은 본 기술분야에 알려진 도메인 네임을 보여준다.
도 4는 본 발명의 일부 실시예에 따른 클라이언트 시스템, DNS 프록시, DNS 서버 및 보안 서버 간의 예시적인 메시지 교환을 보여준다.
도 5는 본 발명의 일부 실시예에 따른 쿼리 트레이서를 보여준다.
도 6은 TLS(Transport Layer Security) 프로토콜에 따라 수행되는 예시적인 암호화된 통신 세션을 보여준다.
도 7은 본 기술분야에 알려진 바와 같은, TLS 레코드의 전형적인 레이아웃을 보여준다.
도 8 은 "Client Hello" TLS 레코드의 예시적인 요소들을 도시한다.
도 9는 본 기술분야에 알려진 TCP(Transmission Control Protocol) 헤더의 전형적인 요소들을 나타낸다.
도 10은 본 기술분야에 알려진 인터넷 프로토콜(IP) 헤더의 전형적인 요소를 나타낸다.
도 11은 본 발명의 일부 실시예에 따른 DNS 프록시의 예시적인 동작을 보여준다.
도 12는 본 발명의 일부 실시예에 따른 보안 서버에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다.
도 13은 본 발명의 일부 실시예에 따른 쿼리 통지의 예시적인 요소들을 나타낸다.
도 14a는 본 발명의 일부 실시예에 따른 DNS 서버에 의해 수행되는 단계들의 예시적인 시퀀스를 나타낸다.
도 14b는 본 발명의 일부 실시예들에 따라 DNS 서버에 의해 수행되는 단계들의 다른 예시적인 시퀀스를 나타낸다.
도 15는 본 발명의 일부 실시예에 따른 트래픽 필터의 예시적인 동작을 보여준다.
도 16은 본 발명의 일부 실시예에 따른 예시적인 대체적 메시지 교환(alternative message exchange)을 나타낸다.
도 17a는 본 발명의 일부 실시예에 따른 트래픽 필터에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다.
도 17b는 본 발명의 일부 실시예에 따른 트래픽 필터에 의해 수행되는 단계들의 다른 예시적인 시퀀스를 나타낸다.
도 18은 본 발명의 일부 실시예에 따른 방법 및 알고리즘을 수행하도록 프로그램가능한 컴퓨팅 어플라이언스의 예시적인 하드웨어 구성을 보여준다.
이하의 설명에서, 구조들 사이에서 언급된 모든 연결들은 직접적인 동작 연결들 (operative connections) 또는 매개 구조들을 통한 간접적인 동작 연결들일 수 있는 것으로 이해된다. 구성 요소들의 세트는 하나 이상의 구성 요소를 포함한다. 구성 요소의 임의의 열거는 적어도 하나의 구성 요소를 언급하는 것으로 이해된다. 복수의 구성 요소는 적어도 2개의 구성 요소를 포함한다. 달리 요구되지 않는다면, 기술된 어떠한 방법 단계들도 설명된 특정 순서로 반드시 실행될 필요는 없다. 제2 구성 요소로부터 유도되는 제1 구성 요소(예컨대, 데이터)는 제2 구성 요소와 동일한 제1 구성 요소는 물론, 제2 구성 요소 그리고 선택적으로는 다른 데이터를 처리하는 것에 의해 생성된 제1 구성 요소를 포함한다. 파라미터에 따라 결정 또는 판정하는 것은 파라미터에 따라 그리고 선택적으로는 다른 데이터에 따라 결정 또는 판정하는 것을 포함한다. 달리 구체화되지 않는다면, 일부 수량/데이터의 표시자는 수량/데이터 그 자체, 또는 수량/데이터 그 자체와 상이한 표시자일 수 있다. 컴퓨터 프로그램은 과업을 수행하는 프로세서 명령들의 시퀀스이다. 본 발명의 일부 실시예들에서 설명되는 컴퓨터 프로그램들은 독립형 소프트웨어 개체들 또는 다른 컴퓨터 프로그램들의 서브-개체들(예를 들어, 서브루틴들, 라이브러리들)일 수 있다. 네트워크 도메인은 컴퓨터 네트워크의 개별 부분을 형성하는 상호 연결된 컴퓨팅 장치의 그룹으로 구성된다. 인터넷 도메인은 공중 인터넷(public internet)에 연결된 네트워크 도메인이다. 도메인 네임은 네트워크/인터넷 도메인의 주소를 식별하는 레이블/별칭이다. 여기서 도메인 네임을 결정하는 것은 각각의 도메인 네임을 갖는 도메인의 네트워크 주소를 정하는 것을 의미한다. 여기서 메타데이터는 페이로드 자체가 아닌 전송의 특징들을 나타낸다. 예시적인 메타데이터는, 무엇보다도, 발신자 및/또는 수신자의 네트워크 주소, 페이로드(payload)의 크기, 및 각각의 전송의 실시간 시간을 나타내는 타임스탬프를 포함한다. 두 장치는 이들의 네트워크 주소가 동일한 서브넷에 속하거나 그리고/또는 둘 다 동일한 브로드캐스트 주소를 가질 때 동일한 로컬 네트워크에 연결되거나 속한다고 말해진다. 광역 네트워크에는 하나 이상의 라우터가 포함된다. 여기서 '데이터베이스'라는 용어는 데이터의 임의의 조직화된 집합(collection, 콜렉션)을 나타내기 위해 사용된다. 해시(hash)는 해시 함수의 출력이다. 해시 함수는 임의의 길이 입력을 고정 길이 출력으로 매핑하는 수학 함수이다. 본 명세서에서 설명되는 세션 식별자는 ClientHello 레코드의 SessionID 필드의 콘텐츠를 포함할 수 있으나, 이에 한정되는 것은 아니다. 컴퓨터 판독 가능 매체는 자성, 광, 및 반도체 저장 매체와 같은 비-일시적 매체(non-transitory media)(예컨대, 하드 드라이브, 광 디스크, 플래시 메모리, DRAM)는 물론, 전도성 케이블 및 파이버 옵틱 링크와 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 그 중에서도, 본원에 설명된 방법들을 수행하기 위해 프로그래밍된 하드웨어(예컨대, 하나 이상의 프로세서들)는 물론, 본원에서 설명된 방법들을 수행하기 위한 명령들을 인코딩하는 컴퓨터-판독 가능 매체를 포함하는 컴퓨터 시스템을 제공한다.
이하의 설명은 예시로서 본 발명의 실시예를 예시하는 것이며, 반드시 이로써 제한되는 것은 아니다.
도 1은 본 발명의 일부 실시예에 따른 컴퓨터 보안 위협으로부터 클라이언트 장치(12a-e)의 세트를 보호하기 위한 시스템(10)을 도시한다. 예시적인 클라이언트 장치(12a-e)는 퍼스널 컴퓨터 시스템, 기업 메인프레임 컴퓨터, 모바일 컴퓨팅 플랫폼(예를 들면, 랩탑 컴퓨터, 태블릿, 이동 전화), 엔터테인먼트 장치(예를 들면, TV, 게임 콘솔), 웨어러블 장치(예를 들면, 스마트워치, 피트니스 밴드), 가전 제품(예를 들어, 냉장고, 세탁기), 그리고 프로세서, 메모리, 및 각각의 장치가 다른 장치/컴퓨터 시스템과 통신하는 것을 가능하게 하는 통신 인터페이스를 포함하는 임의의 다른 전자 장치를 포함한다. 임의의 예시적인 클라이언트 장치(12a-e)는 통신 링크 상에서 원격 콘텐츠 서버(16)와 상호작용하여, 웹 콘텐츠, 전자 메시지, 다양한 문서 등과 같은 데이터를 교환할 수 있다.
도 1의 예시적인 구성에서, 클라이언트 장치(12a-e)는 근거리 통신망(LAN), 홈 네트워크, 기업 네트워크 등과 같은 로컬 네트워크(13)에 의해 상호 연결된다. 장치(12a-e)는 광역 네트워크(WAN) 및/또는 인터넷과 같은 확장된 네트워크(extended network)(15)에 추가로 연결될 수 있다. 일부 실시예들에서, 클라이언트 장치들(12a-e)과 확장된 네트워크(15) 사이의 네트워크 트래픽의 적어도 일부는 라우터, WiFi 핫스팟, 네트워크 허브 등과 같은 네트워크 어플라이언스(14)를 가로지른다. 도시된 구성에서, 어플라이언스(14)는 로컬 네트워크(13)와 확장된 네트워크(15) 사이의 게이트웨이 장치로서 동작한다. 일부 실시예들에서, 네트워크 어플라이언스(14)는 방화벽, 멀웨어에 대한 통신을 스캐닝 하는 것과 같은 다양한 컴퓨터 보안 동작들을 실행한다.
일부 실시예들에서, 도메인 네임 서비스(DNS) 서버(20)는 이하에서 상세히 나타낸 바와 같이 클라이언트 장치들(12a-e)을 보호하기 위해 보안 서버(40)와 협력한다. 서버(20, 40)의 각각은 총칭적으로 통신적으로 결합된 컴퓨터들의 세트를 나타내며, 이들은 서로 물리적으로 근접해 있을 수도 있고 그렇지 않을 수도 있다. 통상의 기술자는 본 명세서에 설명된 서버(20 및 40)에 의해 수행되는 동작들이 다수의 물리적 머신 또는 프로세서들 사이에서 분할될 수 있다는 것을 알 것이다. 일부 실시예들에서, 보안 서버(40)는 네트워크 어플라이언스(14) 상에서 실행되는 소프트웨어 모듈들의 세트로서 구현될 수 있다. 또 다른 예시적인 실시예에서, 보안 서버(40) 및 DNS 서버는 동일한 물리적 머신 상에서 실행되는 별개의 소프트웨어 모듈로서 구현될 수 있다.
일부 실시예들에서, 보안 서버(40)는 클라이언트 정책 데이터베이스(42) 및 보안 데이터베이스(44)에 추가로 연결되고, 선택적 데이터 삽입, 데이터 검색, 및/또는 다른 데이터베이스 관리 동작을 수행하기 위해 데이터베이스(들)(42 및/또는 44)에 액세스하도록 구성된다. 정책 데이터베이스(42)는 클라이언트 장치(12a-e) 및/또는 각각의 클라이언트 장치의 사용자와 관련된 복수의 클라이언트 레코드를 저장하도록 구성된다. 한 예에서, 각각의 클라이언트 레코드는 별개의 클라이언트 장치(12a-e)에 대응한다. 클라이언트 레코드는 각 클라이언트 장치의 식별자의 세트 (예: 아래에 설명된 클라이언트 식별자, 미디어 액세스 제어 - MAC 주소, 국제 이동 단말기 식별 번호(International Mobile Equipment Identity) - IMEI 번호, 로컬 네트워크 주소 등) 및 각 클라이언트 장치에 특정된 인터넷 액세스 정책의 표시자를 저장할 수 있다. 액세스 정책은 인터넷 콘텐츠에 액세스하기 위한 일련의 규칙 또는 제한 사항을 인코딩한다. 예를 들어, 액세스 정책 표시자는 각각의 클라이언트 장치가 액세스하지 말아야 하는 콘텐츠의 카테고리(예를 들어, 성인 콘텐츠, 소셜 네트워크, 온라인 도박 등)의 표시자를 포함할 수 있다. 액세스 정책은 시간 표시자, 예를 들어, 각각의 정책의 적용 가능성의 시간 간격을 추가로 포함할 수 있다. 액세스 정책은 각각의 정책의 적용 가능성(applicability)의 영역을 나타내는 위치 표시자를 추가로 포함할 수 있다. 이러한 예들 중 하나에서, 하나의 액세스 정책은 각각의 장치가 로컬 네트워크(13)에 접속될 때 (예를 들어, 집에 있는 동안) 적용될 수 있고, 다른 정책은 각각의 장치가 로밍 중일 때 적용될 수 있다. 또 다른 예시적인 정책은 미리 결정된 지오펜스(geofence)의 경계 내에서만 적용될 수 있다. 일부 실시예들에서, 액세스 정책은 각각의 클라이언트 장치의 사용자의 식별자를 포함할 수 있는데, 이는 각각의 클라이언트 장치가 각각의 사용자에 의해 동작될 때 각각의 정책이 적용됨을 나타낸다.
일부 실시예들에서, 클라이언트 레코드는 액세스 정책과 관련될 수 있는 다른 데이터를 포함할 수 있다. 예를 들어, 장치 유형(예를 들어, 디지털 카메라, 온도 조절기, 스마트폰, 태블릿 컴퓨터, 라우터, 자동차)의 표시자, 각 클라이언트 장치의 다양한 하드웨어 구성 표시자(예를 들어, 각 장치에 카메라가 있는지 여부 등), 및 각 장치에 설치된 소프트웨어 어플리케이션의 리스트가 포함된다. 예시적인 클라이언트 레코드에 저장된 다른 정보는, 예를 들어, 다양한 통신 포트들을 사용하는 상대적 빈도(relative frequency), 다양한 시간 간격들 동안의 상대적 트래픽 볼륨 등과 같은 각각의 클라이언트 장치에 의한 네트워크 액세스의 통계와 같은 장치 사용 데이터를 포함한다. 다른 예시적인 클라이언트 레코드는 각각의 클라이언트 장치에 의해 전송되거나 수신되는 네트워크 트래픽을 설명하는 메타데이터를 포함할 수 있다. 일부 실시예들에서, 이러한 메타데이터는 인터넷 엔지니어링 태스크 포스(Internet Engineering Task Force)로부터의 IP 플로우 정보 엑스포트(IP Flow Information Export, IPFIX) 또는 시스코(Cisco, Inc.)로부터의 넷플로우(NetFlow(R))와 같은 포맷에 따라 구성될 수 있다.
일부 실시예들에서, 정책 데이터베이스(42)는 집합적 액세스 정책(collective access policy)을 나타내는 레코드들을 저장할 수 있다. 하나의 예시적인 집합적 액세스 정책은, 예를 들어, 장치 유형 및 운영 체제와 같은 장치 특징의 투플(tuple)에 의해 정의된 바와 같이, 특정 장치 프로파일을 갖는 모든 장치에 적용된다. 이러한 예들 중 하나에서, 하나의 액세스 정책은 데스크톱 컴퓨터에 적용되고 다른 것은 스마트폰 및 태블릿 컴퓨터에 적용될 수 있다. 다른 예에서, 액세스 정책은 버전 10 보다 오래된 Android® 운영 체제 등을 갖는 모든 장치에 적용될 수 있다. 다른 집합적 액세스 정책은 그룹 또는 조직에 속한 모든 장치에 적용될 수 있다. 이러한 예들 중 하나에서, 로컬 네트워크(13)에 연결된 모든 장치 들은 네트워크 어플라이언스(14)에 부착된 집합적 액세스 정책에 의해 정의될 수 있다. 또 다른 예에서, 하나의 액세스 정책은 엔지니어링 부서의 직원에 의해 운영되는 장치에 적용될 수 있고, 다른 것은 회사의 법무 부서 등의 직원에 의해 운영되는 장치에 적용될 수 있다.
정책 데이터베이스(42)는 본 기술분야에 알려진 임의의 표준에 따라 포맷팅되고 저장될 수 있다. 예시적인 데이터베이스 포맷은 특히 관계형 데이터베이스(relational database), XML(Extensible Markup Language) 데이터베이스, 스프레드시트 및 키-값 저장소(key-value store) 등을 포함한다.
보안 데이터베이스(44)는 서버(40)로 하여금 특정 인터넷 리소스에 액세스하는 것이 컴퓨터 보안 위험을 구성하는지 여부를 결정할 수 있도록 하고, 그리고/또는 부모 제어와 같은 인터넷 액세스 정책을 시행할 수 있게 하는 임의의 데이터 콜렉션을 총칭적으로 나타낸다. 간단한 예에서, 데이터베이스(44)는 도메인 네임에 따라 인덱싱된 레코드들의 세트를 포함하며, 각각의 레코드는 각각의 도메인에 저장된 콘텐츠의 카테고리를 나타낸다. 예시적인 카테고리에는 특히 악성 콘텐츠(예: 멀웨어, 사기성 웹 페이지, 피싱 웹 페이지, 다크 웹 등), 성인 콘텐츠, 스트리밍, 도박, 소셜 네트워킹 및 게임 등이 포함된다. 보안 데이터베이스(44)는 본 기술분야에 알려진 임의의 표준에 따라 포맷팅되고 저장될 수 있다.
일부 실시예들에서, DNS 서버(20)는 클라이언트 장치들(12a-e)에 도메인 네임 서비스들을 제공하는데, 각각의 서비스들은, 그 중에서, 도메인 네임들과 네트워크 주소들 사이의 매핑을 유지함으로써 도메인 네임을 네트워크 주소들로 변환하거나 그리고/또는 그 반대로 하는 것을 포함한다. DNS 서버 시스템(20)은 권한 있는 네임서버(authoritative nameserver), 최상위 도메인 네임서버, 루트 네임서버 등과 같은 통신적으로 결합된 컴퓨터들의 세트를 총칭적으로 나타낸다.
클라이언트 장치(12)와 콘텐츠 서버(16) 사이의 통상적인 데이터 전송은 몇몇 단계들을 포함한다. 이러한 전송은 서버(16)의 네트워크 주소(예를 들어, 인터넷 프로토콜 - IP 주소)에 대한 지식을 필요로 한다. 여러 가지 이유로 이 주소가 클라이언트에 알려지지 않은 경우가 자주 있다. 예를 들어, 복수의 미러 콘텐츠 서버 머신들이 존재할 수 있으며, 클라이언트는 각 미러 서버의 현재 로드(load) 또는 클라이언트 장치의 현재 지리적 위치에 따라 가장 편리한 것으로 동적으로 지정될 수 있다. 그러나 클라이언트 장치는 알 수 없는 네트워크 주소의 별칭을 포함하는 도메인 네임을 알고 있을 수 있다. 콘텐츠 서버(16)에 대한 연결을 수립하기 위해, 따라서 각각의 클라이언트 장치 상에서 실행되는 소프트웨어 엔티티는 IP 주소 그 자체 대신에, 각각의 도메인 네임에 액세스하기 위한 요청을 발행할 수 있다. 응답으로, 클라이언트 장치의 다른 소프트웨어 엔티티(예를 들어, 운영 시스템)는 별칭/도메인 네임을 실제 네트워크 주소로 변환하려고 시도할 수 있고, 이어서 올바른 네트워크 위치로 요청을 전송할 수 있다.
도메인 네임을 네트워크 주소로 변환하는 것(본 기술분야에서는 도메인 네임 해석/결정/분해(domain name resolution)로 알려진 동작)은 도 2에 도시된 바와 같이, 통상적으로 클라이언트 장치(12)가 DNS 쿼리(22)를 DNS 서버(20)로 전송하는 것을 포함한다. 쿼리(22)는 특히 도메인 네임의 인코딩 및 질문 Q의 유형의 표시자를 포함할 수 있다. 질문의 유형은 각각의 쿼리에 대한 응답으로 DNS 서버(20)에 의해 리턴된 DNS 리소스 레코드의 유형을 나타낸다. 예시적인 질문으로는 인터넷 프로토콜(IPv4)의 4번째 버전으로 형성된(formulated) IP 주소를 요청하는 'A'와 인터넷 프로토콜(IPv6)의 6번째 버전으로 형성된(formulated) IP 주소를 리턴하는 'AAAA'가 있다. 다른 예시적인 질문/리소스 레코드 유형에는 'TXT', 'PTR', 'LOC' 등이 있다. 쿼리(22)에 대한 응답으로, DNS 서버(20)는 DNS응답(24)을 요청 클라이언트에게 반환할 수 있고, 응답(24)은 각각의 도메인 네임/별칭에 대응하는 네트워크 주소(예를 들어, IPv6 주소)의 인코딩을 포함한다. 쿼리(22) 및 응답(24)의 예시적인 형식은 특히 IETF RFC 1035 등에서 찾을 수 있다. 암호화된 DNS 프로토콜들을 채용하는 시스템들에서, 쿼리(22) 및/또는 응답(24)은, 후술하는 바와 같이, 적어도 부분적으로 암호화될 수 있다.
도 3은 인터넷 도메인의 예시적인 도메인 네임을 보여준다. 도메인 네임은 구분 기호(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이 존재할 수 있다. FQDN을 대응하는 IP 주소로 분해(resolving)하는 것은 통상적으로 반복적인 방식으로 진행되며, 각각의 연속적인 반복(consecutive iteration)은 루트 레벨('.')에서 최상위 도메인(TLD) 레벨(예: com, net, fashion, tv 및 ro, fr 등과 같은 국가 표시 토큰)로, 그리고 wikipedia, facebook 등과 같은 토큰을 포함하는 도메인 레벨로 그리고 다양한 도메인 특정 접두어 토큰(prefix token)을 포함하는 서브도메인 레벨로 도메인 네임 계층의 연속 레벨로 진행된다. 각각의 연속적인 반복은 FQDN(36)의 별개의 토큰에 따라 결정될 수 있고, DNS 서버(20)의 별개의 구성요소/머신으로 별도의 DNS 쿼리를 전송하는 것을 포함할 수 있다.
도 4는 특히, DNS over TLS 또는 DNS over HTTPS와 같은 암호화된 DNS 프로토콜의 버전을 구현하는 본 발명의 일부 실시예에 따른 클라이언트 장치(12)(도 1에서 임의의 장치(12a-e)를 나타낼 수 있음) 및 DNS 서버(20) 사이의 예시적인 DNS 교환을 나타낸다. 일부 실시예들에서, DNS 프록시 모듈(50)은 클라이언트 장치(12)와 DNS 서버(20) 사이의 중개자(intermediary)로서 작용한다. DNS 프록시(50)는 로컬 네트워크(13)에 연결된 컴퓨팅 어플라이언스 상에서 실행되는 컴퓨터 프로그램으로서 구현될 수 있다. 한 예에서, DNS 프록시(50)는 네트워크 어플라이언스(14) 또는 네트워크(13) 상의 클라이언트 장치에 네트워크 주소를 할당하는 라우터 상에서 실행된다. 대안적인 실시예에서, 프록시(50)는 클라이언트 장치(12)에서 실행될 수 있다. 또 다른 예에서, DNS 프록시(50)의 기능성(functionality)은 클라이언트 장치(12)에서 실행되는 에이전트와 어플라이언스(14)에서 실행되는 또 다른 에이전트 사이에서 분할될 수 있다.
일부 실시예들에서, DNS 프록시(50)는 클라이언트 장치(12)로부터 암호화된 DNS 쿼리(122)를 인터셉트하고 쿼리(122)를 DNS 서버(20)로 전달(forward)하도록 구성된다. 프록시(50)는 서버(20)로부터 암호화된 DNS 응답(124)을 추가로 수신하고 이를 클라이언트 장치(12)로 전달할 수 있다. 일부 실시예들에서, 쿼리들(122) 및/또는 응답들(124)은 그들의 의도된 수신자/네트워크 주소로 변경되지 않은 상태로 전달된다. 클라이언트 장치(12)가 본 명세서에서 설명된 DNS 서버(20)와 구별되는 바람직한 DNS 서버로 쿼리(122)를 전송하도록 구성되는 일부 실시예들에서, DNS 프록시(50)는 쿼리(122)를 DNS 서버(20)로 강제적으로 리다이렉트할 수 있다. 쿼리(122)는 도메인 네임을 인코딩하는 암호문(ciphertext)을 포함할 수 있는 반면, 응답(124)은 각각의 도메인의 IP 주소를 인코딩하는 암호문을 포함할 수 있다. 간단한 예에서, 암호화된 DNS 쿼리(122)는 전체 DNS 쿼리(예를 들어, 도 2의 쿼리(22))의 암호화를 포함하는 한편, 암호화된 DNS 응답(124)은 전체 DNS 응답(예컨대, 도 2의 응답(24))의 암호화를 포함한다.
일부 실시예들에서, DNS 프록시(50)는 DNS 쿼리(122)를 그 발신자(즉, 클라이언트 장치(12))와 연관시키는 쿼리 트레이서(52)를 결정하고, 쿼리 트레이서(52)를 보안 서버(40)로 전송하도록 추가적으로 구성된다. 차례로, 보안 서버(40)는 액세스 정책을 시행하기 위해 DNS 서버(20)와 협력할 수 있는데, 이는 도메인 네임에 따라, 그리고 클라이언트 장치(12)의 그리고/또는 클라이언트 장치(12)의 사용자의 아이덴티티에 따라, 암호화된 DNS 쿼리(122)에 포함된 도메인 네임에 의해 표시된 인터넷 도메인에 대한 클라이언트 장치(12)의 액세스를 선택적으로 허용하거나 거부하는 것을 포함할 수 있다. 이러한 협업은 아래에 자세히 설명되어 있다.
일부 실시예들에서, 쿼리 트레이서(52)는 DNS 쿼리(122)를 그 발신 엔티티 - 클라이언트 장치(12)와 연관시키는 데이터 구조를 포함한다. 예시적인 쿼리 트레이서(52)는 DNS 쿼리(122)의 식별자 및 클라이언트 장치(12)의 식별자를 포함할 수 있다. 통신 프로토콜이 다수의 DNS 쿼리가 동일한 암호화된 세션 상에서 수행되도록 허용할 때, 다른 예시적인 쿼리 트레이서(52)는, 도 5에 도시된 바와 같이, 각각의 세션을 식별하는 세션 식별자(56) 및 클라이언트 장치(12)를 식별하는 클라이언트 식별자(58)를 포함한다. 통상의 기술자는 쿼리 트레이서(52)의 형식 및 인코딩이 다양할 수 있다는 것과, 예시된 실시예에 의하여 한정되지 않는다는 것을 알 것이다. ID(56-58)는 동일한 전송 내에서 함께 전송되거나 또는 별도의 메시지/데이터 패키지로 전송될 수 있다. ID(56-58)가 개별적으로 전송될 때, 각각의 전송은 서버(40)가 세션 식별자(56)를 클라이언트 식별자(58)와 연관시킬 수 있게 하는 태그(예를 들어, 식별 해시(identifying hash))를 포함할 수 있다.
도 6은 TLS 프로토콜의 버전에 따라 수행되는 예시적인 암호화된 통신 세션(26)을 나타낸다. 이러한 세션에는 DNS over TLS 및/또는 DNS over HTTPS 프로토콜에서 수행되는 DNS 교환이 포함될 수 있다. 숙련된 기술자는 여기서 TLS의 사용이 단지 예시적일 뿐이며 제한적인 것이 아니라는 것을 알 수 있다. 예시된 바와 같이, 암호화된 통신 세션은 다수의 메시지(본 기술분야에서 종종 TLS 레코드(60)로 지칭됨)를 포함한다. 레코드(60)는 핸드쉐이크 부분/교환 및 페이로드 부분/교환으로 그룹화될 수 있다. 핸드쉐이크 레코드는 페이로드의 전송을 준비하기 위해 전송되고, 전형적으로 클리어텍스트(암호화되지 않음)로 형성되며, 각 통신 당사자들 간의 연결을 형성하기 위한 파라미터 값, 및 페이로드를 암호화 및/또는 복호화하는 데 필요한 다양한 암호 파라미터 값(cryptographic parameter value)과 같은 다양한 메타데이터를 포함한다. TLS의 예를 들자면, 'ClientHello' 핸드쉐이크 레코드는 암호 키(cryptographic key)(ClientRandom으로 알려짐)를 유도하는데 사용되는 난수(random number)를 포함할 수 있고, 클라이언트(12)가 현재 지원하는 암호(cipher)들의 리스트를 추가로 나타낼 수 있다. 'ServerHello' 핸드셰이크 레코드는 특히, 암호 키(ServerRandom으로 알려짐)를 유도하는데 사용되는 또 다른 난수, 암호의 선택의 표시자, 및 서버(20)의 공개 키 등을 포함할 수 있다. 다른 핸드셰이크 레코드에는 특히, 레코드 유형 및 각 레코드의 레코드 크기와 같은 메타데이터와 레코드의 무결성(integrity)을 확인하는 데 사용되는 검사합(checksum, 체크섬) 등이 포함될 수 있다.
핸드셰이크는 전형적으로 핸드셰이크 도중에 결정되거나 그리고/또는 교환되는 파라미터 값에 따라 암호화되는 페이로드의 전송이 뒤따른다. 암호화된 DNS에 적용된 도 6의 예에서, 예시적인 클라이언트 페이로드는 도메인 네임을 포함할 수 있고, 한편 예시적인 서버 페이로드는 각각의 인터넷 도메인의 IP 주소를 포함할 수 있다. 몇몇 경우들에서, 다수의 암호화된 DNS 쿼리들 및/또는 응답들이 동일한 세션 내에서 순차적으로 교환되는데, 즉, 각각의 쿼리들 및/또는 응답들은 세션별 암호 키들에 따라 암호화되므로, 개별적인 쿼리들 및/또는 응답들은 별도의 핸드쉐이크를 필요로 하지 않는다.
DNS 프록시(50)는 네트워킹 프로토콜 스위트(networking protocol suite)의 다양한 레벨에서 동작할 수 있으며, 여기서 상기 레벨들은 개방형 시스템 상호 연결(open system interconnection, OSI) 모델을 지칭한다. 도 7은 OSI 관점에서 예시적인 일반적인 TLS 레코드(60)를 나타낸다(이는 특히, 'Client Hello' 레코드와 같은, 도 6에 도시된 임의의 TLS 레코드를 나타낼 수 있다.). 어플리케이션 레벨에서 인터셉트될 때, 레코드(60)는 어플리케이션 데이터(66)의 세트로 구성될 수 있다. 그러나, 프록시(50)가 전송 레벨(transport level)에서 DNS 교환을 인터셉트할 때, 레코드(60)는 전송 제어 프로토콜(transmission control protocol, TCP) 헤더(64)로 캡슐화(encapsulated, 밀폐)될 수 있다. 유사하게, 네트워크 레벨에서 인터셉트될 때, 레코드(60)는 인터넷 프로토콜(IP) 헤더(62)로 더 캡슐화될 수 있다. 이러한 헤더들은 본 명세서에서 단지 예시로서 주어지며, 통신 프로토콜 및 네트워크 아키텍처에 따라 달라질 수 있다.
도 8은 특히, ClientRandom 및 SessionID 필드를 포함하는 복수의 메타데이터 필드(70)를 포함하는, 'Client Hello' TLS 레코드의 예시적인 어플리케이션 데이터(66)를 나타낸다. TLS의 일부 버전에서, ClientRandom 필드는 핸드쉐이크 절차 동안에 클라이언트 장치(12)에 의해 생성된 256비트 난수를 포함하며, 상기 난수는 클라이언트 장치(12) 및 서버(20)에 의해 세션-특정 암호 키(cryptographic key, 암호화 키)를 생성하기 위해 추가로 사용된다. 일부 실시예들은, 각각의 핸드쉐이크로 새로운 ClientRandom 값이 생성되기 때문에, 각각의 값이 단독으로 또는 다른 쿼리 메타데이터와 함께 각각의 DNS 세션 및/또는 쿼리를 효과적으로 식별할 수 있다는 점에 의존한다(동일한 인수(argument)가 핸드쉐이크 교환의 ServerRandom 필드의 콘텐츠에 적용되고, ServerRandom은 서버(20)에 의해 클라이언트 장치(12)로 전송된다). SessionID 필드는 현재 교환의 식별자를 포함하며, 이는 각각의 세션-특정 암호 키들을 추가로 고유하게(uniquely) 식별하여, 클라이언트 장치(12) 및 서버(20)가 핸드쉐이크를 재협상하지 않고 다수의 페이로드를 교환할 수 있게 한다. 예를 들어, 동일한 SessionID 값을 사용하면 동일한 세션-특정 키로 DNS 쿼리(122) 및 DNS 응답(124)을 암호화 및/또는 복호화할 수 있다. 일부 실시예들은, 이러한 속성들이 DNS 세션(26), DNS 쿼리(122) 및/또는 응답(124)을 식별하기 위해 SessionID 값을 사용할 수 있게 한다는 점에 의존한다. 그러나, 세션 식별자(56)는 SessionID 필드로 제한되지 않으며, SessionID 필드와 동일한 형식을 가질 필요도 없다. 대신에, 일부 실시예들은 세션 식별자(62)를 컴퓨팅할 때 다른 데이터와 결합하여 SessionID 필드의 콘텐츠를 사용할 수 있다.
도 9는 본 기술분야에 알려진 바와 같은 예시적인 TCP 헤더(64)의 구성요소들을 보여준다. 헤더(64)는 특히 소스 포트(Source Port), 목적지 포트(Destination Port) 및 플래그/제어 비트(flag/control bit)의 세트와 같은 복수의 메타데이터 필드의 접합(concatenation, 연결)을 포함한다. TCP 헤더 플래그는 예를 들어 현재 데이터 패킷을 위한 우선권(priority)을 설정하거나, 재설정하거나, 또는 연결/세션을 완료하는 데 사용될 수 있다. 헤더(64)는 현재 TCP 세션을 식별하는 32비트 난수를 포함할 수 있는 SequenceNumber 필드를 또한 포함할 수 있다. 헤더(64)는 헤더(64)의 적어도 일부의 해시를 포함하는 Checksum 필드를 추가적으로 포함할 수 있으며, 이는 헤더(64)의 완결성을 검증하는데 사용될 수 있다. 일부 실시예들은, SequenceNumber 필드 상의 값 및 Checksum 필드의 값과 같은 TCP 세션의 식별자들이 암호화된 세션 및/또는 DNS 쿼리를 식별하는데 사용될 수 있다는 점에 의존한다. 그러나, 각각의 값의 범위가 충돌을 회피할 만큼 충분히 넓지 않기 때문에(예를 들어, 다수의 쿼리/세션들이 우연히 동일한 SequenceNumber 값을 갖는 경우), 이러한 값들은 세션 식별자(56)를 계산함에 있어서 다른 쿼리 메타데이터와 조합하여 바람직하게 사용될 수 있다.
도 10은 본 기술분야에서 알려진 바와 같은, 예시적인 IP 헤더(62)의 구성요소들을 도시한다. 헤더(62)는 특히, 소스 IP 주소(송신자의 네트워크 주소 포함), 목적지 IP 주소(의도된 수신자의 네트워크 주소 포함) 및 패킷 식별자와 같은 메타데이터 필드의 접합을 포함한다. 헤더(62)는 헤더(62)의 적어도 일부의 해시를 포함하는 Checksum 필드를 추가로 포함할 수 있으며, 이는 헤더(62)의 완결성을 검증하는데 사용될 수 있다. 일부 실시예들은, 소스 IP 주소가 DNS 세션(26) 및/또는 DNS 쿼리(122)를 식별하기 위해 다른 쿼리 메타데이터와 조합하여 사용될 수 있다는 점에 의존한다.
일부 실시예들에서, DNS 프록시(50) 및/또는 DNS 서버(20)는 암호화된 통신 세션(26)의 클리어텍스트(즉, 암호화되지 않은) 부분에 따라, 예를 들어 핸드셰이크 레코드의 콘텐츠에 따라, 세션 식별자(56)를 결정할 수 있다. 바람직한 실시예에서, 세션 식별자(56)는 'ClientHello' TLS 레코드의 콘텐츠에 따라, 예를 들어, ClientRandom, ServerRandom, 및/또는 SessionID 필드의 콘텐츠에 따라 결정된다. 하나의 간단한 예에서, 쿼리 트레이서(52)를 결정하기 위해, DNS 프록시(50)는 ClientRandom 필드의 콘텐츠를 세션 식별자(56)로 복사할 수 있다.
일부 실시예들은 암호화된 세션(26)의 일부를 형성하는 데이터 패킷의 TCP 헤더의 콘텐츠에 따라, 예를 들어, 각각의 TCP 헤더의 Checksum 필드의 콘텐츠에 따라 그리고/또는 SequenceNumber 필드의 콘텐츠에 따라, 세션 식별자(56)를 결정한다. 일부 실시예들은 세션(26)의 일부를 형성하는 데이터 패킷의 IP 헤더의 콘텐츠에 따라, 예를 들어, 각각의 IP 헤더의 Checksum 필드의 콘텐츠에 따라, Identification 필드의 콘텐츠에 따라, 그리고/또는 SourceAddress 필드의 콘텐츠에 따라, 세션 식별자(56)를 결정한다.
세션 식별자(56)의 예시적인 계산은 다양한 헤더 및/또는 어플리케이션 데이터 필드로부터 추출된 데이터의 세트를 결합 및/또는 변환하는 것을 포함할 수 있다. 일례로, IP 헤더(62)로부터 추출된 SourceAddress를 TCP 헤더(64)로부터 추출된 SequenceNumber 와 접합하고, 그 결과에 해시 함수를 적용할 수 있다. 통상의 기술자는 해싱에 국한되지 않고 데이터의 세트를 결합 및/또는 변환하는 여러 가지 방법이 있을 수 있음을 이해할 것이다.
일부 실시예들에서, 클라이언트 식별자(58)(도 5)는 클라이언트 장치(12)를 다른 클라이언트 장치로부터 구별하는 데이터의 세트를 포함한다. 예시적인 클라이언트 식별자는 특히, MAC 주소, IMEI 번호 및 로컬 네트워크 주소를 포함한다. 일부 실시예들에서, 클라이언트 식별자(58)는 각각의 클라이언트 장치를 개별적으로 식별하지 못할 수 있지만, 대신에 각각의 클라이언트 장치의 그룹 아이덴티티를 나타낸다. 예를 들어, 클라이언트 식별자(58)는 장치 그룹(예를 들어, 기업의 특정 부서 내의 장치, 특정 네트워크 서브 도메인 내에 위치한 장치, 특정 홈 네트워크에 속하는 장치)을 선택적으로 나타낼 수 있다. 이러한 실시예들에서, 클라이언트 식별자(58)는 각각의 DNS 쿼리의 발신자(originator)의 IP 주소를 포함할 수 있다.
일부 실시예들에서, 클라이언트 식별자(58)는 네트워크 어플라이언스(14)의 식별자를 포함한다. 이러한 예들 중 하나에서, 클라이언트 장치들(12a-e)은 패밀리에 속하고, 로컬 네트워크(13)는 홈 네트워크를 나타내며, 모든 장치들(12a-e)은 네트워크 어플라이언스(14)에 부착된 단일 서비스 계약(single service agreement) 하에서 컴퓨터 보안 위협들로부터 보호된다. 이러한 실시예들에서, 클라이언트 식별자(58)에 어플라이언스(14)의 식별자를 포함시킴으로써, 보안 서버(40)는 각각의 네트워크 어플라이언스(14)에 부착된 서비스 계약에 따라 액세스 정책을 선택적으로 식별할 수 있게 된다.
또 다른 예시적인 클라이언트 식별자(58)는 장치 프로파일의 표시자를 포함할 수 있으며, 따라서 보안 서버(40)가 정책 데이터베이스(42)로부터 각각의 장치 프로파일과 연관된 액세스 정책을 선택적으로 검색할 수 있게 한다. 예시적인 장치 프로파일 정보는, 예를 들어, 장치 유형(예를 들어, 스마트폰 대 데스크톱 PC 등)의 표시자, 각각의 클라이언트 장치에서 실행되는 운영 시스템의 표시자(예를 들어, 쿼리(122)의 발신자가 현재 실행 중인 Android®의 버전), 각각의 클라이언트 장치의 현재 지리적 위치를 나타내는 지리적 위치 표시자(예를 들어, 각각의 장치가 현재 로컬 네트워크(13)에 연결되어 있는지 또는 로밍 중인지의 여부를 표시), 현재 DNS 요청을 발행한 어플리케이션의 타입의 표시자(예를 들어, 브라우저, 소셜 미디어 앱, 뱅킹 앱 등) 및 각각의 클라이언트 장치의 현재 사용자의 식별자를 포함할 수 있다. 이러한 데이터를 결정하기 위해, DNS 프록시(50)의 일부 실시예들은 클라이언트 장치(12) 및/또는 네트워크 어플라이언스(14)에서 실행되는 소프트웨어 에이전트와 협력할 수 있다. 이러한 예들 중 하나에서, 로컬 네트워크(13)에 도입될 때, 어플라이언스(14)는 다른 것들 중에서도, 각 장치(12a-e)의 장치 타입을 결정하기 위해 장치 발견 절차를 수행할 수 있다. 그러면, 어플라이언스(14)는 이러한 장치-식별 데이터를 DNS 프록시(50)와 공유할 수 있다.
도 11은 도 4에 도시된 바와 같은 실시예에서 DNS 프록시(50)에 의해 수행되는 단계들의 예시적인 시퀀스를 나타낸다. 프록시(50)는 이것이 클라이언트 장치들(12a-e)로부터 및/또는 이들에게의 통신을 인터셉트할 수 있는 위치에 배치될 수 있다. 여기서 인입 통신을 인터셉트하는 것은 페이로드를 복호화하지 않고 각각의 통신의 메타데이터를 수신하고 분석하는 단계를 포함한다. 한 예에서, DNS 프록시(50)는 로컬 네트워크(13)와 확장된 네트워크(15)/인터넷 사이의 데이터 트래픽을 중개하는(intermediating) 게이트웨이 장치(gateway device) 상에서(예를 들어, 도 1에 예시된 바와 같은 네트워크 어플라이언스(14) 상에서) 실행될 수 있다. 단계들(302-304)의 시퀀스에서, 프록시(50)는 클라이언트들(12a-e) 및/또는 DNS 서버(20)로부터의 연결 요청들(예를 들어, TCP 요청들)을 경청(listen for, 수신)할 수 있다. 요청이 수신되면, 단계(306)는 각각의 요청이 DNS 활동들과 관련되어 있는지 여부를 결정할 수 있다. 인입(들어오는) 통신은 암호화될 수 있기 때문에 각 통신의 콘텐츠에 따라 DNS 메시지와 다른 데이터 사이를 구별하지 못할 수 있다. 그러나, 일부 실시예들은 목적지 IP 주소(예를 들어, 목적지 IP 주소를 알려진 DNS 서버들의 주소들의 리스트와 매칭시킴으로써) 및/또는 포트 번호(예를 들어, 종래의 암호화되지 않은 DNS 프로토콜은 전형적으로 포트 53을 사용하고, 암호화된 DNS는 전형적으로 포트 443 또는 853을 사용함)와 같은 통신 메타데이터에 따라 DNS 트래픽을 식별할 수 있다. 일부 실시예들은 단순히 비-DNS 트래픽을 그것의 의도된 목적지로 전달한다(단계 306은 아니요(NO)를 리턴한다).
각각의 연결 요청이 DNS 트래픽과 관련될 때(단계(306)가 예(YES)를 리턴함), 단계(307)는 전송된 데이터가 핸드쉐이크 교환의 일부를 형성하는지 여부를 결정한다. 달리 말하면, 단계(307)는 수신된 요청이 새로운 암호화된 통신 세션을 개시하는지 여부를 결정할 수 있다. "아니요(NO)"인 경우, 단계(314)는 각각의 페이로드를 그것의 의도된 목적지로 전달할 수 있다. 인터셉트된 통신이 핸드쉐이크 데이터를 포함할 때 (단계(307)는 YES를 리턴함), 단계(308)는 도 4 내지 도 10과 관련하여 상술한 방법 및 데이터 아이템 중 임의의 것에 따라 세션 식별자(56)를 결정할 수 있다. 추가 단계(310)는, 예를 들어, 각각의 메시지의 발신자의 네트워크 주소에 따라, 클라이언트 식별자(58)를 결정할 수 있다. 일부 실시예들에서, 단계(310)에서, DNS 프록시(50)는 클라이언트 장치(12) 상에서 실행되는 소프트웨어 에이전트로부터 추가적인 클라이언트- 및/또는 쿼리-식별 정보를 수신할 수 있다. 단계(312)에서, DNS 프록시(50)는 쿼리 트레이서(52)를 조합하여 트레이서(52)를 보안 서버(40)로 전송할 수 있다. 그 후, 프록시(50)는 각각의 페이로드를 그것의 의도된 목적지로 전달할 수 있다. 일부 실시예들에서, 단계(314)는 클라이언트들(12a-e)로부터 수신된 DNS 관련 통신들을 그들의 본래 목적지에 상관없이, 선호하는 DNS 서버로 능동적으로 리-라우팅(re-routing)하는 것을 포함하며, 이에 따라 클라이언트들로 하여금 도메인 네임 해석(분해, resolution) 활동들을 위해 DNS 서버(20)를 사용하도록 강제한다.
인터넷 액세스를 필터링함으로써 복수의 클라이언트 장치를 보호하기 위해, 보안 서버(40)의 일부 실시예들은 DNS 쿼리와 장치들/사용자들 사이의 매핑(mapping)을 유지하여, 서버(40)가 DNS 쿼리가 어느 장치 및/또는 사용자에게 속하는지를 결정할 수 있게 한다. 동일한 암호화된 통신 세션 내에서 복수의 쿼리가 수행될 수 있는 일부 실시예들에서, 서버(40)는 각각의 세션(26)을 대응하는 장치(12)에 매핑할 수 있다. 그 후, 각 세션의 일부를 형성하는 모든 쿼리들은 각각의 클라이언트 장치와 연관될 수 있다. 상기 매핑은 본 기술분야에 공지된 임의의 방법, 예를 들어 테이블, 관계형 데이터베이스 등을 사용하여 구현될 수 있다. 일부 실시예들에서, 서버(40)는 세션 식별자(56)를 각각의 테이블 또는 데이터베이스에 대한 룩업 키/인덱스로서 사용하여, 어떤 클라이언트 장치 및/또는 사용자가 어떤 DNS 쿼리를 전송했는지를 결정한다. 응답으로, 서버(40)는 각각의 장치와 연관된 장치-특정 및/또는 사용자-특정 액세스 정책에 액세스할 수 있다. 그러나, DNS 쿼리가 암호화될 수 있기 때문에, 보안 서버(40)는 각 쿼리에 포함된 도메인 네임(36)을 인식하지 못할 수 있다. 대신에, 보안 서버(40)의 일부 실시예들은 DNS 서버(20)로부터 각각의 도메인 네임을 수신할 수 있다.
도 4에 도시된 것과 같은 일부 실시예들에서, DNS 쿼리(122)의 수신 및 복호화에 응답하여, DNS 서버(20)는 쿼리(122)의 식별자를 각각의 쿼리에 포함된 도메인 네임(36)과 연관시키는 쿼리 통지(46)를 전송한다. 쿼리 통지(46)의 예시적인 형식이 도 13에 도시되어 있으나, 통상의 기술자는 도시된 형식이 제한적인 것이 아니라는 것을 이해할 것이다. 쿼리들은 세션 식별자(56)에 따라 집합적으로 식별될 수 있고, 그리고 또는 각각의 쿼리를 동일한 세션 내에서 전송되는 다른 쿼리들, 또는 서버(20)에 의해 해석(분해)된 다른 쿼리들로부터 구별하는 쿼리 식별자(57)에 따라 개별적으로 식별될 수 있다. 쿼리 통지(46)는 도메인 네임(36) 및/또는 도메인 네임(36)을 해석(분해)한 결과(예를 들어, IP 주소(28))를 추가로 포함할 수 있다. 비록 도시된 예가 FQDN(fully qualified domain name)을 도시하지만, 일부 쿼리 통지(46)는 PQDN들 또는 도메인 네임의 다른 단편들을 포함할 수 있다. 일부 실시예들에서, 쿼리 통지들(46)은 다수의 쿼리들을 특성화하는 데이터를 포함할 수 있다. 이러한 예들 중 하나에서, 통지(46)는 세션 식별자(56) 및 세션 식별자(56)에 의해 식별되는 동일한 암호화된 통신 세션 내에서 수행되는 개별적인 DNS 쿼리에 대응하는 복수의 {쿼리 식별자, 도메인 네임} 튜플을 포함한다.
세션 식별자(56), 쿼리 식별자(57), 및 도메인 네임(36)은 별개의 메시지/데이터 패키지로서 전송될 수 있으며, 이러한 경우, 각각의 개별적인 메시지는 서버(40)로 하여금 ID(56 및/또는 57)를 도메인 네임(36)과 연관시킬 수 있도록 하는 라벨/태그(예를 들어, 동일한 해시)를 포함할 수 있다. 이러한 일 예에서, 보안 서버(40)는 세션 식별자(56)를 포함하는 제1 메시지를 DNS 서버(20)로 전송할 수 있고, DNS 서버(20)는 적어도 쿼리 식별자(57) 및 도메인 네임(36)을 포함하는 또 다른 메시지로 응답할 수 있다. 응답은 각각의 응답을 보안 서버(40)에 의해 송신된 제1 메시지와 연관시키는 표시자(예를 들어, 해시)를 추가로 포함할 수 있으며, 이에 따라 도메인 네임(36) 및/또는 쿼리 식별자(57)를 세션 식별자(56)와 연관시킬 수 있다.
일부 실시예들에서, 보안 서버(40)는 쿼리 트레이서(52)에 의해 제공되는 세션-대-클라이언트 연계와 쿼리 통지(46)에 의해 제공되는 쿼리-대-도메인 연계를 결합하여 도메인 네임을 클라이언트 장치 및/또는 사용자와 연관시키며, 이는 도메인 네임(36)에 의해 표시된 인터넷 리소스에 대한 각각의 클라이언트 장치/사용자 액세스를 허용할지 여부를 결정하기 위해 장치-특정 및/또는 사용자-특정 정책을 적용할 수 있게 한다.
도 12는 도 4에 도시된 바와 같은 실시예에서 보안 서버(40)에 의해 수행되는 단계들의 예시적인 시퀀스를 나타낸다. 단계(402)는 인입 통신을 경청할 수 있다. 인입 통신이 DNS 프록시(50)로부터의 쿼리 트레이서(52)를 포함할 때 (단계(404)가 YES를 리턴함), 단계(408)에서, 서버(40)는 쿼리 트레이서(52)의 콘텐츠를 파싱(parsing)할 수 있고, 예를 들어 ID(56 및 58)를 연관시키는 새로운 테이블 엔트리를 생성함으로써, 세션 식별자(56)를 클라이언트 식별자(58)에 매핑할 수 있다.
보안 서버가 DNS 서버(20)로부터 통지(46)를 수신할 때(단계(406)가 YES를 반환함), 단계(410)는 통지(46)에 따라, 예를 들어 통지(46)를 파싱해서 세션 식별자(56) 및/또는 쿼리 식별자(57)를 추출함으로써, 통신 세션 및/또는 쿼리를 식별할 수 있다. 단계(412)에서, 서버(40)는 그 다음, 각각의 DNS 쿼리(들)을 생성한 사용자 및/또는 클라이언트 장치(12a-e)를 나타내는 클라이언트 식별자를 찾기 위해 상술한 세션-대-클라이언트 매핑을 사용할 수 있다. 단계(414)는 정책 데이터베이스(42)에서 각각의 클라이언트 식별자와 연관된 액세스 정책을 룩업할 수 있다.
추가 단계(416)는 각각의 클라이언트 장치 및/또는 사용자에 특정된 단계(414)에서 검색된 액세스 정책이 도메인 네임(36)에 의해 식별된 도메인에 대한 액세스를 허용하는지 여부를 결정한 결과에 따라 액세스 표시자(37)를 결정할 수 있다. 간단한 예에서, 액세스 표시자(37)는, 설정될 때, 각각의 도메인에 대한 클라이언트 장치(12)의 액세스를 거부하는 것을 나타내는 플래그(예를 들어, 비트)를 포함한다. 다른 예에서, 액세스 표시자(37)는 각각의 도메인에 액세스하기 위한 각각의 클라이언트 장치에 의한 시도에 응답하여 수행될 액션의 표시자(예를 들어, 허용, 차단, 리다이렉트, 경고 페이지 표시 등)를 포함한다.
단계(416)는 액세스 정책에 따라, 그리고 가능하게는 클라이언트 장치(12)의 현재 사용자, 하루의 현재 시간, 클라이언트 장치의 현재 물리적 위치 등과 같은 다른 데이터에 따라 도메인 네임(36)을 평가하는 것을 포함할 수 있다. 단계(416)는 도메인 네임(36)을 갖는 인터넷 도메인에 액세스하는 것이 컴퓨터 보안 위협을 구성할 수 있는지 여부를 결정하기 위해 보안 데이터베이스(44)에서 도메인 네임(36)을 룩업하는 것을 추가로 포함할 수 있다. 예를 들어, 보안 데이터베이스(44)는 도메인 네임(36)이 사기, 피싱, 악성 소프트웨어, 포르노그래피, 온라인 도박 등과 연관되어 블랙리스트에 올라 있음을 나타낼 수 있다.
액세스 표시자(37)의 결정에 응답하여, 단계(418)에서 보안 서버(40)는 액세스 표시자(37)를 DNS 서버(20)로 전송할 수 있다. 일부 실시예들에서, 액세스 표시자(37)는 쿼리 식별자(57)와 함께 보안 판정(security verdict)(48)으로 번들링(묶음, bundling)되어, 판정(48)의 수신자가 액세스 표시자(37)를 특정 쿼리, 클라이언트 장치 및/또는 통신 세션과 연관시킬 수 있게 한다. 이러한 예들 중 하나에서, DNS 서버(20)는 예를 들어, 룩업 키/인덱스로서 쿼리 식별자(57)를 갖는 테이블에 의하여 쿼리들(122)과 액세스 표시자들(37) 사이의 매핑을 유지한다.
도 14a-b(도 14a 및 도 14b를 의미, 이하 동일)는 도 4에 도시된 것과 같은 실시예들에서 DNS 서버(20)에 의해 수행되는 단계들의 예시적인 시퀀스들을 보여준다. 두 개의 시퀀스(도 14a 및 도 14b 각각)는 DNS 서버(20)의 별개의 컴퓨터 프로그램 및/또는 하드웨어 모듈에 의해 비동기적으로 수행될 수 있다.
단계(502)는 인입 통신을 경청할 수 있다. 통신 수신에 응답하여, 단계(504)는 각각의 통신이 보안 서버(40)로부터 수신되었는지 여부를 결정할 수 있다. 예(Yes)일 때, 각각의 통신이 보안 판정/액세스 표시자를 포함한다는 것을 나타내면, 단계(506)에서 서버(20)는 판정(48)이 참조하는 DNS 쿼리를 식별하기 위해 보안 판정(48)을 파싱할 수 있고, 그리고 현재 액세스 표시자(37)를 각각의 쿼리 식별자(57)와 연관시키기 위해 저장된 매핑을 업데이트할 수 있다.
인입 통신이 형성된 세션의 일부를 포함하고 암호화된 DNS 쿼리를 포함할 때(단계(508)가 YES를 반환함), 단계(509)는 각각의 세션의 식별자를 결정한다. DNS 프록시(50)에 의해 계산된 세션 식별자의 인스턴스와 DNS 서버(20)에 의해 계산된 세션 식별자의 인스턴스가 동일한 세션에 대해 일치하는 한, 단계(509)는 도 6 내지 도 10과 관련하여 상술한 방법 및 데이터 소스들 중 임의의 것에 따라 수행될 수 있다. 단계(510)에서, DNS 서버(20)는 도메인 네임(36)을 생성하기 위해 각각의 통신에 포함된 DNS 쿼리의 복호화를 진행할 수 있다. 단계(512)는 어느 쿼리를 동일한 세션의 다른 쿼리들과 구별하기 위해 각각의 쿼리에 쿼리 식별자를 할당할 수 있다. 통상의 기술자는 고유 식별자를 생성하는 여러 가지 방법이 있을 수 있다는 것을 이해할 것이다. 단계(512)는 쿼리 식별자(57)를 생성하기 위해 본 기술분야에 알려진 임의의 방법을 사용할 수 있다.
단계(513)에서, DNS 서버(20)는 도메인 네임(36)을 갖는 도메인의 네트워크 주소(예를 들어, IP 주소)를 생성하기 위해 도메인 해석(분해) 절차를 수행할 수 있다. 도메인 네임 해석은 도 3과 관련하여 상술한 바와 같이, 서버(20)의 다양한 서브시스템으로 어드레싱되는 다수의 DNS 쿼리들을 포함할 수 있다. 그 다음, 단계(514)는 세션 식별자(56), 쿼리 식별자(57) 및 도메인 네임(36)을 포함하는 쿼리 통지(46)를 조합할 수 있고, 통지(46)를 보안 서버(40)로 전송할 수 있다.
일부 실시예들에서, DNS 서버(20)는 인입 쿼리들을 풀(pool)에 배치하여(도 14a의 단계(516)), 보안 서버(40)로부터의 각각의 액세스 표시자들의 수신을 기다린다. 이러한 풀링(pooling)은 서버(20)로 하여금 인입 쿼리들을 비동기적으로 처리하게 할 수 있고, 따라서 간헐적인(occasional) 통신 및 처리 지연에 의해 생성되는 문제들을 방지할 수 있다. 쿼리 풀은 본 기술분야에 알려진 임의의 방법, 예를 들어, 큐(queue), 스택(stack) 등을 사용하여 구현될 수 있다. 도 14b는 본 발명의 일부 실시예에 따라, DNS 쿼리들의 누적된 풀을 처리하기 위해 DNS 서버(20)에 의해 수행되는 예시적인 단계들을 도시한다. 단계(520)는 풀에 현재 임의의 미해결 쿼리가 존재하는지 여부를 결정한다. 예(Yes)인 경우, 단계(522)는 쿼리를 선택하고 선택된 쿼리를 풀로부터 제거한다. 단계(524)는 선택된 쿼리와 관련하여 액세스 표시자가 수신되었는지 여부를 결정하기 위해 액세스 표시자에 쿼리를 매핑하는 데이터 구조를 조회(룩업)할 수 있다. 각각의 쿼리에 대한 액세스 표시자(37)가 현재 존재하지 않는 경우, 선택된 쿼리는 쿼리 풀로 리턴될 수 있다(단계 534). 일부 실시예들에서, 단계(532)는 만료 조건이 만족되는지 여부(예를 들어, 선택된 쿼리가 서버(20)에서 수신된 이후 경과된 시간이 미리 결정된 임계값을 초과하는지 여부)를 결정하고, 만료 조건이 충족되지 않을 때에만 선택된 쿼리를 쿼리 풀로 리턴한다. 만료 조건이 만족될 때, 단계(538)에서, 일부 실시예들은 예를 들어, 에러 코드를 포함하는 디폴트 DNS 응답을 형성한다.
액세스 표시자가 선택된 쿼리에 대해 현재 이용 가능할 때(단계(524)가 YES를 리턴함), 단계(526)는 액세스 표시자(37)에 따라 DNS 응답을 형성할 수 있다. 각각의 DNS 응답은 IP 주소, 예를 들어, 단계(513)에서 결정된 주소 또는 클라이언트 장치(12)를 대안적인 인터넷 도메인, 경고 페이지 등으로 리다이렉트하는 대체/더미 IP 주소를 포함할 수 있다. 일부 실시예들에서, 표시자(37)가 서버(20)에 액세스를 차단하도록 지시할 때, 각각의 DNS 응답은 NXDOMAIN 에러 코드를 포함할 수 있다. 단계들(528-530)의 추가적인 시퀀스는 각각의 응답을 암호화하고, DNS 프록시(50)를 통해 선택된 쿼리의 송신자에게 암호화된 DNS 응답(124)을 전송할 수 있다.
상기 설명은 대개 도 4에 도시된 바와 같은 예시적인 실시예들을 다루었는데, 액세스 정책(즉, 특정 도메인에 대한 액세스를 허용하거나 거부하는 것)을 궁극적으로 시행하는 엔티티는 DNS 서버(20)인 반면, DNS 프록시(50)는 단순히 인입 DNS 메시지를 이들의 의도된 수신자에게 전달한다. 대안적인 실시예에서, 보안 서버(40)는 보안 판정(48)을 DNS 프록시(50)로 전송한다(도 4에 도시된 바와 같은 DNS 서버(20)와 반대됨). 차례로, DNS 프록시(50)는 판정(48)에 따라 액세스 정책을 능동적으로 시행할 수 있다. 그러나, DNS 프록시(50)는 각각의 통신이 암호화되어 있기 때문에, 동일한 세션 내에서 전송되는 개개의 쿼리들 사이를 구별할 수 없을 수도 있다. 이러한 경우들에서, 프록시(50)가 액세스 정책을 시행할 수 있는 하나의 예시적인 방법은, 각각의 세션의 적어도 하나의 쿼리와 연관된 액세스 표시자가 각각의 도메인에 대한 액세스를 차단하는 것을 나타낼 때, 전체 세션을 종료하는 것을 포함한다.
이러한 무차별적인 세션 종료를 피하기 위해, 일부 실시예들은 DNS 트랜잭션들을 간섭하지 않음으로써 액세스 정책을 시행하는데, 그러나 그 대신에 선택된 클라이언트 장치가 DNS 쿼리를 해결함으로써 IP 주소에 접속하는 것을 선택적으로 허용하거나 방지한다. 도 16에 도시된 그러한 예 중 하나는 DNS 프록시(50)에 통신적으로 결합되고, 예를 들어 콘텐츠 서버(16)에 의해 호스팅되는 인터넷 자원에 액세스하는 것의 일부로서, IP 주소(28)에 액세스하기 위한 요청을 포함하는 액세스 요청(72)을 인터셉트하도록 구성된 예시적인 트래픽 필터(70)를 보여준다. 트래픽 필터(70)의 일부 실시예들은 OSI 네트워크 모델의 전송 계층(transport layer)에서(예를 들어, TCP 레벨에서) 이러한 요청들을 인터셉트할 수 있다. 일부 실시예들에서, 트래픽 필터(70)는 보안 서버(40)로부터 보안 판정(148)을 수신하는 것에 응답하여 요청(72)이 서버(16)에 도달하는 것을 방지하도록 구성되며, 여기서 액세스 표시자(37)는 요청하는 클라이언트 장치(12)(ID(58)에 의해 식별됨)가 IP 주소(28)에 액세스하는 것을 방지해야 함을 나타낸다. 일부 실시예들에서, DNS 프록시(50) 및 트래픽 필터(70) 모두는 도 1의 네트워크 어플라이언스(14)와 같은 네트워크 게이트웨이 상에서, 즉, 클라이언트들(12a-e)과 콘텐츠 서버(16) 사이의 트래픽에 의해 통과되는 장치 상에서 실행되는 하드웨어 및/또는 소프트웨어 구성요소들로서 구현될 수 있다.
도 16은 본 발명의 일부 실시예에 따른 트래픽 필터(70)에 관련된 예시적인 메시지 교환을 보여준다. 도 16에 도시된 것과 같은 일부 실시예들에서, DNS 프록시(50)의 작동은 도 11에 도시된 예시적인 플로우차트에 따라 진행될 수 있다. 쿼리 트레이서(52)를 수신하는 것에 응답하여, 보안 서버(40)의 일부 실시예 들은 DNS 서버(20)에 세션 식별자(56)에 의해 식별된 암호화된 세션에 속하는 쿼리를 최소한 해결(분해)한 결과를 요청할 수 있다. 이러한 예들 중 하나에서, 보안 서버(40)는 세션 식별자(56)를 DNS 서버(20)로 전송할 수 있다. 차례로, DNS 서버(20)는 각각의 세션의 쿼리에 대응하는 IP 주소(28), 쿼리 식별자(57), 및 도메인 네임(36)을 포함하는 적어도 하나의 튜플을 포함하여, 쿼리 통지(146)를 보안 서버(40)로 전송할 수 있다. 일부 실시예들에서, 통지(146)는 서버(40)로 하여금, ID(57)에 의해 식별된 쿼리를 세션 식별자(56)에 의해 식별된 세션과 연관시킬 수 있게 하고, 나아가 도 4와 관련하여 앞서 설명된 바와 같이, 서버(40)에 의해 유지되는 세션-대-클라이언트 매핑에 따라 클라이언트 식별자(58)에 의해 식별되는 클라이언트에 연관시킬 수 있게 한다.
일부 실시예들에서, 보안 서버(40)는 그리고나서 클라이언트 식별자(58)에 따라 클라이언트-특정 및/또는 사용자-특정 액세스 정책들에 액세스할 수 있고, 도 12와 관련하여 상술한 바와 같이 액세스 표시자(37)를 결정할 수 있다. 그러나, 도 12의 단계(418)와는 대조적으로, 서버(40)는 액세스 정책을 시행하기 위해 액세스 표시자(37)를 트래픽 필터(70)로 전송할 수 있다. 도 15 내지 도 16에 도시된 것과 같은 일부 실시예들에서, 표시자(37)는 클라이언트 식별자(58) 및 IP 주소(28)와 함께 번들링되어, 각각의 요청이 각각의 클라이언트 식별자에 의해 식별된 클라이언트로부터 올 때 각각의 IP 주소에 액세스하기 위한 요청들을 선택적으로 차단함으로써 필터(70)가 액세스 정책을 시행할 수 있게 한다.
도 17a-b는 도 15 내지 도 16에 도시된 바와 같은 실시예들에서 트래픽 필터(70)에 의해 수행되는 단계들의 예시적인 시퀀스들을 도시한다. 두 개의 시퀀스(도 17a 및 도 17b 각각)는 트래픽 필터(70)의 별개의 컴퓨터 프로그램 및/또는 하드웨어 모듈에 의해 비동기적으로 수행될 수 있다.
단계(602)는 인입 통신을 경청할 수 있는데, 이는 서버(40)로부터의 보안 판정(146) 및 클라이언트로부터의 액세스 요청(72)을 포함할 수 있다. 보안 서버(40)로부터 통신을 수신할 때(단계(604)는 YES를 리턴한다), 단계(606)에서 필터(70)는 판정(146)을 파싱 하고, IP 주소(28)를 클라이언트 식별자(58) 및 액세스 표시자(37)에 매핑할 수 있다. 액세스 요청을 인터셉트할 때(단계(608)는 YES를 반환함), 단계(610)에서 필터(70)는 액세스를 요청하는 클라이언트 장치의 클라이언트 식별자를 결정할 수 있다. 추가 단계(612)는 액세스 요청(72)을 클라이언트 식별자(58)에 매핑할 수 있다.
트래픽 필터(70)의 일부 실시예들은 보류중인(pending) 액세스 요청들의 풀(예를 들어, 큐)을 유지하며, 여기서 인입 요청들은 보안 서버(40)로부터 각각의 액세스 표시자들을 수신할 때까지 지연된다. 요청들을 풀링하는 것은 필터(70)가 액세스 요청들을 비동기적으로 처리하도록 허용할 수 있고, 따라서 사용자 경험을 향상시킬 수 있다. 이러한 실시예들에서, 단계(614)는 현재 요청을 요청 풀에 추가할 수 있다. 단계(620)(도 17b)는 풀이 현재 미해결 아이템을 가지고 있는지 여부를 결정할 수 있고, 예(Yes)일 때, 단계(620)는 풀로부터 액세스 요청을 선택하여 제거할 수 있다. 단계(624)에서, 필터(70)는 이것이 선택된 요청의 IP 주소와 연관된 액세스 표시자를 이미 수신했는지 여부를 결정할 수 있다. 단계(624)는 매핑(예를 들어, IP 주소들을 클라이언트 식별자 및 액세스 표시자들과 연관시키는 테이블, 단계(606)와 관련하여 상기 참조)에서 각각의 IP 주소를 룩업할 수 있다. 각각의 IP 주소 및 클라이언트 식별자에 대해 현재 액세스 표시자가 등록되어 있지 않은 경우, 일부 실시예들은 선택된 액세스 요청을 요청 풀에 삽입할 수 있다(단계 632). 일부 실시예들은 만료 조건이 충족되는지 여부를 먼저 검증할 수 있고, 단계(630)가 아니요(NO)를 리턴할 때에만 선택된 요청을 풀로 리턴할 수 있다. 만료 조건이 만족되는 경우, 단계(634)에서 필터(70)의 일부 실시예들은 각각의 IP 주소에 대한 액세스를 방지할 수 있다.
필터(70)에 의해 유지되는 매핑이 각각의 IP 주소 및 클라이언트 식별자의 튜플에 대응하는 액세스 표시자(37)를 현재 저장했을 때(단계(624)가 YES를 리턴함), 추가 단계(626)는 각각의 액세스 표시자가 각각의 IP 주소에 대한 액세스를 허용하는지 여부를 결정한다. 예(Yes)일 때, 단계(628)는 선택된 액세스 요청을 콘텐츠 서버(16)로 전달할 수 있다. 아니요(NO)인 경우, 일부 실시예들은 선택된 액세스 요청을 차단한다.
상술한 설명은 범용 하드웨어 프로세서에 의해 실행되는 컴퓨터 프로그램으로서 구현될 수 있는 다양한 방법 및 알고리즘을 보여주었으나, 통상의 기술자는 각각의 기능성(functionality)이 또한 ASIC(application-specific integrated circuit) 또는 FPGA(field-programmable gate array)와 같은 전용 하드웨어 요소를 사용하여 구현될 수 있음을 이해할 수 있을 것이다. 도 18은 본 명세서에 설명된 방법 및 알고리즘 중 일부를 실행하도록 프로그램가능한 컴퓨터 시스템(80)의 예시적인 하드웨어 구성을 보여준다. 도시된 구성은 일반화된 것이며, 예를 들어 특히, 클라이언트 장치(12a-e), 네트워크 어플라이언스(14), DNS 서버(20), 및 보안 서버(40) 중 어느 하나를 나타낼 수 있다. 통상의 기술자는 일부 장치(예: 휴대폰, 스마트워치, 서버, 라우터)의 하드웨어 구성이 도 18에 도시된 것과 다소 다를 수 있음을 알 수 있다. 
도시된 컴퓨터 시스템은 하드웨어 프로세서(82) 및 메모리 유닛(84)을 포함하는 물리적 장치들의 세트를 포함한다. 프로세서(82)는 신호 및/또는 데이터의 세트로 산술(컴퓨팅) 및/또는 논리 동작을 실행하도록 구성된 물리적 장치(예를 들어, 마이크로프로세서, 반도체 기판 상에 형성된 멀티-코어 집적 회로 등)를 포함한다. 일부 실시예들에서, 이러한 동작들은 프로세서 명령들의 시퀀스(예를 들어, 머신 코드 또는 다른 타입의 인코딩)의 형태로 프로세서(82)에 전달된다. 메모리 유닛(84)은 프로세서(82)에 의해 액세스되거나 생성되는 명령 및/또는 데이터를 저장하는 휘발성 컴퓨터 판독가능 매체(예: DRAM, SRAM)를 포함할 수 있다.
입력 장치(86)는 사용자가 개별 컴퓨터 시스템으로 데이터 및/또는 명령들을 도입할 수 있게 하는 개별 하드웨어 인터페이스 및/또는 어댑터를 포함하여, 특히 컴퓨터 키보드, 마우스, 및 마이크를 포함할 수 있다. 출력 장치(88)는 특히 모니터와 같은 디스플레이 장치 및 스피커는 물론, 도시된 컴퓨팅 어플라이언스가 사용자에게 데이터를 통신하게 할 수 있는 그래픽 카드와 같은 하드웨어 인터페이스/어댑터를 포함할 수 있다. 일부 실시예들에서, 입력 장치(86)와 출력 장치(88)는 터치 스크린 장치의 경우에서와 같이, 하드웨어의 공통적인 부품을 공유한다. 저장 장치(92)는 소프트웨어 명령들 및/또는 데이터의 비휘발성 저장, 판독, 및 기록을 가능하게 하는 컴퓨터-판독 가능 매체를 포함한다. 예시적인 저장 장치(92)는 자기 디스크 및 광 디스크 및 플래시 메모리 장치들은 물론, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 소거 가능 매체를 포함한다. 네트워크 어댑터(94)들의 세트는, 연관된 통신 인터페이스(들)와 함께, 도시된 컴퓨터 시스템이 로컬 네트워크(13)와 같은 컴퓨터 네트워크에 접속할 수 있게 한다(도 1). 컨트롤러 허브(90)는 프로세서(82)와 장치들(84, 86, 88, 92, 및 94) 사이의 통신을 가능하게 하는 복수의 시스템, 주변, 및/또는 칩셋 버스들, 및/또는 다른 모든 회로망을 총칭적으로 나타낸다. 예를 들어, 컨트롤러 허브(90)는 특히, 메모리 컨트롤러, 입력/출력(I/O) 컨트롤러, 및 인터럽트 컨트롤러(interrupt controller)를 포함할 수 있다. 다른 예에서, 컨트롤러 허브(90)는 프로세서(82)를 메모리(84)에 연결시키는 노스브리지, 및/또는 프로세서(82)를 장치(86, 88, 92 및 94)들에 연결시키는 사우스브리지를 포함할 수 있다.
상술한 예시적인 시스템 및 방법들은 이종의(heterogeneous) 다수의 클라이언트 장치들(개인용 컴퓨터, 스마트폰, TV와 같은 IoT 장치들, 온도 조절기, 도어락, 냉장고, 웨어러블 등)이 인터넷에 어떻게 액세스하는지를 선택적으로 제어할 수 있게 한다. 이러한 제어는 특히, 컴퓨터 보안(악성 콘텐츠 및/또는 인터넷 사기로부터 사용자 및 장치 보호), 자녀 보호(특정 온라인 콘텐츠에 대한 특정 장치/사용자의 액세스 모니터링 및/또는 제한) 및 어플리케이션 제어(소셜 미디어, 스트리밍, 게임, 도박 및 인스턴트 메시징 어플리케이션과 같은 선택된 소프트웨어의 사용 모니터링 및/또는 제한)와 같은 어플리케이션에 매우 중요하다. 여기서 선택성은 장치 특정 및/또는 사용자 특정 액세스 정책을 적용할 수 있는 능력을 의미한다.
일부 실시예들은 도메인 네임 서비스(DNS, domain name service) 메커니즘을 조작함으로써 선택적 인터넷 액세스를 시행(강제, enforce)한다. 명확성과 단순성을 위해, 상기 설명에서는 현재 인터넷 통신에서 사용되는 종래의 DNS를 나타내기 위해 '도메인 네임 서비스(domain name service)'라는 용어를 사용하였다. 특히, 암호화된 DNS는 DNS-over-TLS 및 DNS-over-HTTPS 프로토콜 제품군을 사용하여 설명되었다. 그러나, 통상의 기술자는 본 명세서에 기술된 방법 및 시스템들이 도메인 네임을 네트워크 주소로 또는 그 반대로 변환하기 위한 임의의 다른 서비스, 버전 및 프로토콜에 용이하게 적합화될 수 있다는 것을 이해할 것이다.
인터넷 액세스를 제어하기 위해 DNS를 사용하는 다양한 방식들이 본 기술분야에 알려져 있다. 이러한 예 중 하나는 장치 식별자로서 역할을 할 수 있는 태그(tag)를 삽입하여 각 DNS 쿼리를 수정한다. 그런 다음 수정된 DNS 쿼리는 각각의 태그에 따라 액세스 정책을 시행하는 DNS 서버로 전송된다. 자녀 보호 예에서, 클라이언트 식별자로 태그된 DNS 쿼리를 수신하는 것에 대한 응답으로, DNS 서버는 클라이언트의 아이덴티티 및/또는 요청된 도메인 네임에 따라 IP 주소를 반환할지 여부를 선택적으로 선택할 수 있다. 그러나 암호화된 도메인 네임 시스템에서, DNS 쿼리를 수정하려면 이를 복호화해야 하며, 이를 위해서는 다음으로, 수정을 수행하는 장치에 특정된 추가 공개 키 인증서(additional public key certificate)를 얻고 유지 관리해야 한다. 인증서 유지 관리는 비용이 많이 들고 힘들 수 있으며 특정 컴퓨터 보안 취약점을 생성할 수 있다.
이러한 종래의 해결방법들과는 대조적으로, 본 발명의 일부 실시예들은 DNS 프록시를 사용하여 클라이언트 장치와 DNS 서버 사이의 암호화된 통신 세션을 인터셉트하고, 어떠한 통신도 복호화하지 않고, 각각의 세션 동안에 전송되는 DNS 쿼리들의 세트를 집합적으로 식별하는 세션 식별자를 계산한다. 본 발명의 일부 실시예들에 따른 예시적인 세션 식별자는 DNS 서버와의 핸드셰이크 교환의 일부로서 클라이언트 장치에 의해 전송되는 ClientRandom 값에 따라 계산될 수 있다. 그런 다음 DNS 프록시는 DNS 쿼리를 이를 복호화하고 해석(분해)할 수 있는 DNS 서버로 단순히 전달하고, 각각의 클라이언트 장치가 액세스를 요청하는 인터넷 리소스의 네트워크 주소를 포함하는 DNS 응답을 반송할 수 있다(send back).
DNS 프록시에 의해 결정된 세션 식별자는 각각의 DNS 세션을 개시한 장치 및/또는 사용자를 식별하는 클라이언트 식별자와 함께, 사이드 채널(side channel)을 통해 보안 서버 및/또는 DNS 서버로 전송될 수 있다. 여기서 '사이드 채널(side channel)'이라는 용어는 클라이언트를 DNS 서버에 연결하는 암호화된 통신 세션과 구별되는 통신 채널을 직관적으로 설명하기 위해 사용된다. 일부 실시예들에서, 그 다음으로 DNS 서버 및 보안 서버는 요청 장치 및/또는 사용자의 아이덴티티에 따라 특정 인터넷 리소스에 대한 액세스를 선택적으로 거부하거나 허용함으로써 액세스 정책을 시행하기 위해 협력할 수 있다. 일 예로서, 보안 서버는 DNS 서버로부터 복호화된 도메인 네임을 수신하고, 장치별 및/또는 사용자별 액세스 정책에 따라 각각의 장치 또는 사용자가 요청된 도메인에 대한 액세스가 허용되어야 하는지 여부를 결정하고, 그에 따라 DNS 서버에 지시한다. 액세스를 거부하기 위해, DNS 서버는 각 클라이언트로부터의 DNS 쿼리에 오류 또는 더미 IP 주소를 반환할 수 있다. 대안적인 예시적인 실시예에서, 보안 서버는 클라이언트로부터 암호화된 DNS 쿼리에서 수신된 도메인 네임을 해석한 결과의 IP 주소를 DNS 서버로부터 획득한다. 그런 다음 보안 서버는 각 주소를 트래픽 필터로 전송할 수 있으며, 트래픽 필터는 각각의 클라이언트가 각각의 IP 주소에 액세스하려는 시도를 차단하여 액세스 정책을 시행할 수 있다.
인터셉트된 DNS 쿼리를 복호화해야만 하는 것(따라서 전용 공개 키 인증서에 대한 필요성)을 피함으로써, 일부 실시예들은 클라이언트 장치와 DNS 서버 사이의 중개자, 예를 들어, 홈 네트워크 상의 클라이언트 장치에 네트워크 주소를 할당하는 게이트웨이 장치 또는 라우터(예를 들어, 도 1에 도시된 바와 같은 네트워크 어플라이언스(14) 참조)에 DNS 프록시 및/또는 트래픽 필터를 설치하는 것을 허용한다. 이러한 위치는 이것이 최종 클라이언트에 추가 소프트웨어를 설치할 필요가 없게 하는 등의 상당한 이점이 있으며, 상기 최종 클라이언트는 로컬 네트워크에 가입하고 액세스 정책을 정의하기만 하면 보호된다.
게이트웨이 장치 상에서 DNS 프록시(50)를 실행하는 것의 또 다른 이점 은, DNS 프록시(50)에 의해 수행되는 동작들이 클라이언트 장치 상에서 실행되는 소프트웨어에 의해 실질적으로 탐지될 수 없다는 것이다. 결정적으로, 클라이언트 장치에서 잠재적으로 실행되는 멀웨어는 DNS 프록시의 활동을 방해하거나 와해시킬 수 없다. 또 다른 이점은, 전형적인 게이트웨이 장치가 예를 들어, 방화벽을 시행하거나 트래픽 메타데이터를 수집하는 것과 같은 일부 형태의 컴퓨터 보안 활동을 이미 수행하고 있다는 점이며, 본 명세서에 개시된 바와 같은 DNS 필터링은 기존 성능으로부터 향상되거나 그리고/또는 혜택을 얻을 수 있다.
DNS 프록시(50)가 게이트웨이 장치 상에서 실행되는 구성의 또 다른 중요한 이점은 로컬 네트워크 토폴로지(topology)에 대한 통찰력이다. 도 1에 도시된 것과 같은 예시적인 네트워크 구성에서, DNS 서버(20)는 통상적으로 클라이언트 장치(12a 및 12b)로부터 오는 DNS 쿼리들 사이를 구별할 수 없지만(두 쿼리는 통상적으로 동일한 IP 주소에서 시작되기 때문에), 어플라이언스(14)는 구별할 수 있다. 그러므로, 게이트웨이 장치 상에 DNS 프록시(50)를 배치하는 것은 이것이 인입 DNS 쿼리의 소스를 식별하게 할 수 있고, 따라서 쿼리들을 클라이언트 장치 및/또는 사용자와 효율적으로 연관시킬 수 있다.
본 기술분야의 통상의 지식을 가진 자에게는, 상기 실시예들이 본 발명의 권리범위를 벗어나지 않는 범위 내에서 여러 가지 방식으로 변경될 수 있음이 명백할 것이다. 따라서, 본 발명의 범위는 이하의 특허청구범위와 그 법적 균등물에 의하여 결정되어야 한다.

Claims (17)

  1. 클라이언트 장치와 DNS 서버 사이의 암호화된 통신 세션을 특징짓는 쿼리 트레이서를 DNS 프록시로부터 수신하도록 구성되고; 여기서,
    - 상기 DNS 프록시는 로컬 네트워크 상에서 상기 클라이언트 장치에 연결되고,
    - 상기 암호화된 통신 세션은 클리어텍스트 부분과 암호화된 부분을 포함하고, 상기 암호화된 부분은 상기 클라이언트 장치가 암호화된 DNS 쿼리를 상기 DNS 서버로 전송하는 것을 포함하고,
    - 상기 쿼리 트레이서는 세션 식별자를 클라이언트 식별자와 연관시키고, 상기 클라이언트 식별자는 상기 클라이언트 장치를 식별하고, 그리고 상기 세션 식별자는 상기 암호화된 통신 세션을 식별하며 상기 클리어텍스트 부분의 콘텐츠에 따라 결정되고,
    상기 암호화된 DNS 쿼리에 포함된 도메인 네임을 포함하는 쿼리 통지를 상기 DNS 서버로부터 수신하도록 구성되고, 상기 쿼리 통지는 상기 도메인 네임을 상기 세션 식별자와 추가로 연관시키고;
    상기 쿼리 트레이서 및 쿼리 통지에 따라 액세스 표시자를 결정하도록 구성되고, 상기 액세스 표시자는 상기 클라이언트 식별자에 따라 선택된 액세스 정책이 상기 클라이언트 장치로 하여금 상기 도메인 네임을 갖는 인터넷 도메인에 접근하도록 허용하는지 여부를 표시하고; 그리고
    상기 액세스 정책을 시행하기 위하여 상기 액세스 표시자를 통신하도록 구성되는; 적어도 하나의 하드웨어 프로세서를 포함하는 컴퓨터 시스템.
  2. 제1항에 있어서,
    상기 클리어텍스트 부분은 상기 클라이언트 장치에 의해 상기 DNS 서버로 전송되는 ClientHello 메시지 및 상기 DNS 서버에 의해 상기 클라이언트 장치로 전송되는 ServerHello 메시지를 포함하는 핸드셰이크(handshake)를 포함하고, 상기 세션 식별자는 상기 ClientHello 메시지의 콘텐츠에 따라 또는 상기 ServerHello 메시지의 콘텐츠에 따라 결정되는 것을 특징으로 하는 컴퓨터 시스템.
  3. 제2항에 있어서,
    상기 세션 식별자는 상기 핸드셰이크 동안에 상기 클라이언트 장치에 의해 상기 DNS 서버로 전송되는 ClientRandom 값에 따라 결정되는 것을 특징으로 하는 컴퓨터 시스템.
  4. 제1항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는 상기 액세스 표시자를 상기 DNS 서버로 통신하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  5. 제1항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는 상기 액세스 표시자를 다음과 같이 구성되는 트래픽 필터에 통신하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템:
    상기 클라이언트 장치가 상기 인터넷 도메인에 액세스하려는 시도를 인터셉트하도록 구성되고; 그리고
    응답으로, 상기 액세스 표시자가 상기 클라이언트 장치가 상기 인터넷 도메인에 액세스할 수 없음을 나타내면, 상기 클라이언트 장치가 상기 인터넷 도메인에 액세스하지 못하게 방지하도록 구성됨.
  6. 제1항에 있어서,
    상기 쿼리 트레이서는 상기 세션 식별자 및 상기 클라이언트 식별자를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  7. 제1항에 있어서,
    상기 쿼리 통지는 상기 도메인 네임 및 상기 세션 식별자를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  8. 제7항에 있어서,
    상기 쿼리 통지는 상기 암호화된 DNS 쿼리를 식별하는 쿼리 식별자 및 상기 암호화된 DNS 쿼리를 해석(분해, resolving)함으로써 생성된 IP 주소를 추가로 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  9. 클라이언트 장치와 DNS 서버 사이의 암호화된 통신 세션을 특징짓는 쿼리 트레이서를 DNS 프록시로부터 수신하기 위하여; 여기서,
    - 상기 DNS 프록시는 로컬 네트워크 상에서 상기 클라이언트 장치에 연결되고,
    - 상기 암호화된 통신 세션은 클리어텍스트 부분과 암호화된 부분을 포함하고, 상기 암호화된 부분은 상기 클라이언트 장치가 암호화된 DNS 쿼리를 상기 DNS 서버로 전송하는 것을 포함하고,
    - 상기 쿼리 트레이서는 세션 식별자를 클라이언트 식별자와 연관시키고, 상기 클라이언트 식별자는 상기 클라이언트 장치를 식별하고, 그리고 상기 세션 식별자는 상기 암호화된 통신 세션을 식별하며 상기 클리어텍스트 부분의 콘텐츠에 따라 결정되고,
    상기 암호화된 DNS 쿼리에 포함된 도메인 네임을 포함하는 쿼리 통지를 상기 DNS 서버로부터 수신하기 위하여, 여기서 상기 쿼리 통지는 상기 도메인 네임을 상기 세션 식별자와 추가로 연관시키고;
    상기 쿼리 트레이서 및 쿼리 통지에 따라 액세스 표시자를 결정하기 위하여, 여기서 상기 액세스 표시자는 상기 클라이언트 식별자에 따라 선택된 액세스 정책이 상기 클라이언트 장치로 하여금 상기 도메인 네임을 갖는 인터넷 도메인에 접근하도록 허용하는지 여부를 표시하고; 그리고
    상기 액세스 정책을 시행하도록 상기 액세스 표시자를 통신하기 위하여; 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함하는 방법.
  10. 제9항에 있어서,
    상기 클리어텍스트 부분은 상기 클라이언트 장치에 의해 상기 DNS 서버로 전송되는 ClientHello 메시지 및 상기 DNS 서버에 의해 상기 클라이언트 장치로 전송되는 ServerHello 메시지를 포함하는 핸드셰이크(handshake)를 포함하고, 상기 세션 식별자는 상기 ClientHello 메시지의 콘텐츠에 따라 또는 상기 ServerHello 메시지의 콘텐츠에 따라 결정되는 것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    상기 세션 식별자는 상기 핸드셰이크 동안에 상기 클라이언트 장치에 의해 상기 DNS 서버로 전송되는 ClientRandom 값에 따라 결정되는 것을 특징으로 하는 방법.
  12. 제9항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는 상기 액세스 표시자를 상기 DNS 서버로 통신하도록 구성되는 것을 특징으로 하는 방법.
  13. 제9항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는 상기 액세스 표시자를 다음과 같이 구성되는 트래픽 필터에 통신하도록 구성되는 것을 특징으로 하는 방법:
    상기 클라이언트 장치가 상기 인터넷 도메인에 액세스하려는 시도를 인터셉트하도록 구성되고; 그리고
    응답으로, 상기 액세스 표시자가 상기 클라이언트 장치가 상기 인터넷 도메인에 액세스할 수 없음을 나타내면, 상기 클라이언트 장치가 상기 인터넷 도메인에 액세스하지 못하게 방지하도록 구성됨.
  14. 제9항에 있어서,
    상기 쿼리 트레이서는 상기 세션 식별자 및 상기 클라이언트 식별자를 포함하는 것을 특징으로 하는 방법.
  15. 제9항에 있어서,
    상기 쿼리 통지는 상기 도메인 네임 및 상기 세션 식별자를 포함하는 것을 특징으로 하는 방법.
  16. 제15항에 있어서,
    상기 쿼리 통지는 상기 암호화된 DNS 쿼리를 식별하는 쿼리 식별자 및 상기 암호화된 DNS 쿼리를 해석(분해, resolving)함으로써 생성된 IP 주소를 추가로 포함하는 것을 특징으로 하는 방법.
  17. 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금,
    클라이언트 장치와 DNS 서버 사이의 암호화된 통신 세션을 특징짓는 쿼리 트레이서를 DNS 프록시로부터 수신하도록 하고; 여기서,
    - 상기 DNS 프록시는 로컬 네트워크 상에서 상기 클라이언트 장치에 연결되고,
    - 상기 암호화된 통신 세션은 클리어텍스트 부분과 암호화된 부분을 포함하고, 상기 암호화된 부분은 상기 클라이언트 장치가 암호화된 DNS 쿼리를 상기 DNS 서버로 전송하는 것을 포함하고,
    - 상기 쿼리 트레이서는 세션 식별자를 클라이언트 식별자와 연관시키고, 상기 클라이언트 식별자는 상기 클라이언트 장치를 식별하고, 그리고 상기 세션 식별자는 상기 암호화된 통신 세션을 식별하며 상기 클리어텍스트 부분의 콘텐츠에 따라 결정되고,
    상기 암호화된 DNS 쿼리에 포함된 도메인 네임을 포함하는 쿼리 통지를 상기 DNS 서버로부터 수신하도록 하고, 상기 쿼리 통지는 상기 도메인 네임을 상기 세션 식별자와 추가로 연관시키고;
    상기 쿼리 트레이서 및 쿼리 통지에 따라 액세스 표시자를 결정하도록 하고, 상기 액세스 표시자는 상기 클라이언트 식별자에 따라 선택된 액세스 정책이 상기 클라이언트 장치로 하여금 상기 도메인 네임을 갖는 인터넷 도메인에 접근하도록 허용하는지 여부를 표시하도록 하고; 그리고
    상기 액세스 정책을 시행하기 위하여 상기 액세스 표시자를 통신하도록 하는; 명령을 저장하는 비일시적 컴퓨터 판독가능 매체.
KR1020247020691A 2021-12-14 2022-12-13 암호화된 dns을 사용하여 인터넷 접속을 제어하는 시스템 및 방법 KR20240124308A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/644,167 2021-12-14
US17/644,167 US11552925B1 (en) 2021-12-14 2021-12-14 Systems and methods of controlling internet access using encrypted DNS
PCT/EP2022/085576 WO2023110844A1 (en) 2021-12-14 2022-12-13 Systems and methods of controlling internet access using encrypted dns

Publications (1)

Publication Number Publication Date
KR20240124308A true KR20240124308A (ko) 2024-08-16

Family

ID=84799574

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247020691A KR20240124308A (ko) 2021-12-14 2022-12-13 암호화된 dns을 사용하여 인터넷 접속을 제어하는 시스템 및 방법

Country Status (7)

Country Link
US (2) US11552925B1 (ko)
KR (1) KR20240124308A (ko)
CN (1) CN118355631A (ko)
AU (1) AU2022415411A1 (ko)
CA (1) CA3237837A1 (ko)
IL (1) IL313110A (ko)
WO (1) WO2023110844A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11106807B2 (en) * 2018-09-05 2021-08-31 Comcast Cable Communications, Llc Domain name obfuscation and metadata storage via encryption
US12095754B2 (en) * 2022-04-20 2024-09-17 Bank Of America Corporation System and method for establishing a secure session to authenticate DNS requests via dynamically configurable trusted network interface controllers
US11902084B2 (en) * 2022-06-29 2024-02-13 CybXSecurity LLC System, method, and computer program product for detecting an anomaly in network activity
US20240015132A1 (en) * 2022-07-11 2024-01-11 Cisco Technology, Inc. Leveraging contextual metadata communication to improve dns security
US20240169089A1 (en) * 2022-11-21 2024-05-23 Cisco Technology, Inc. Distributed dns security infrastructure to preserve privacy data

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7792994B1 (en) 2005-06-15 2010-09-07 Symantec Corporation Correlating network DNS data to filter content
US9419942B1 (en) 2013-06-05 2016-08-16 Palo Alto Networks, Inc. Destination domain extraction for secure protocols
JP5976232B2 (ja) 2013-08-26 2016-08-23 徐 正 煥SEO, Jeong Hoan ユーザ情報に基づいた、ドメインネーム・システム及びドメインネーム・サービス方法
US9467461B2 (en) 2013-12-21 2016-10-11 Akamai Technologies Inc. Countering security threats with the domain name system
CN106470191B (zh) 2015-08-19 2019-12-10 国基电子(上海)有限公司 过滤https传输内容的系统、方法及装置
US10075458B2 (en) 2016-04-29 2018-09-11 International Business Machines Corporation Cognitive and contextual detection of malicious DNS
US10505970B2 (en) 2016-10-05 2019-12-10 Cisco Technology, Inc. Identifying and using DNS contextual flows
US10911409B2 (en) * 2018-05-21 2021-02-02 Cisco Technology, Inc. Engagement and disengagement of transport layer security proxy services with encrypted handshaking
WO2019223887A1 (en) 2018-05-21 2019-11-28 Telefonaktiebolaget Lm Ericsson (Publ) Methods for processing encrypted domain name server, dns, queries received from user equipment in a telecommunication network
RU2726879C2 (ru) 2018-12-28 2020-07-16 Акционерное общество "Лаборатория Касперского" Система и способ подключения протокола безопасного разрешения DNS
US11283763B2 (en) 2018-12-28 2022-03-22 Mcafee, Llc On-device dynamic safe browsing
US11277373B2 (en) 2019-07-24 2022-03-15 Lookout, Inc. Security during domain name resolution and browsing
US11438763B2 (en) 2019-09-25 2022-09-06 Hughes Network Systems, Llc System and method for improving network performance when using secure DNS access schemes
US11070533B2 (en) 2019-10-10 2021-07-20 Forcepoint Llc Encrypted server name indication inspection
US11444944B2 (en) 2020-02-11 2022-09-13 Mcafee, Llc Privacy and security enabled domain name system with optional zero-touch provisioning
US11632254B2 (en) 2020-02-21 2023-04-18 Mcafee, Llc Home or enterprise router-based secure domain name services
US10924456B1 (en) * 2020-07-14 2021-02-16 Centripetal Networks, Inc. Methods and systems for efficient encrypted SNI filtering for cybersecurity applications

Also Published As

Publication number Publication date
AU2022415411A1 (en) 2024-05-30
US20230188495A1 (en) 2023-06-15
WO2023110844A1 (en) 2023-06-22
IL313110A (en) 2024-07-01
CA3237837A1 (en) 2023-06-22
US11552925B1 (en) 2023-01-10
CN118355631A (zh) 2024-07-16
US11831602B2 (en) 2023-11-28

Similar Documents

Publication Publication Date Title
US11856026B2 (en) Selective deep inspection in security enforcement by a network security system (NSS)
CN114095198B (zh) 用于网络安全应用的高效加密sni过滤的方法和系统
US9954902B1 (en) Secure proxy
US9680795B2 (en) Destination domain extraction for secure protocols
US11831602B2 (en) Systems and methods of controlling internet access using encrypted DNS
US7735116B1 (en) System and method for unified threat management with a relational rules methodology
Cynthia et al. Security protocols for IoT
US10020941B2 (en) Virtual encryption patching using multiple transport layer security implementations
US11736516B2 (en) SSL/TLS spoofing using tags
US20230388106A1 (en) Privacy-Preserving Filtering of Encrypted Traffic