DNSCurve

DNSCurve

DNSCurve는 DNS(Domain Name System)를 위해 제안된 보안 프로토콜로, Daniel J. Bernstein에 의해 설계되었다.

설명

DNSCurve는 Curve25519elliptic[1] curve 암호화를 사용하여 Salsa20이 사용하는 키를 설정하며, MAC(message Authentication code) 함수 Poly1305와 쌍을 이루어 해결자와 권한 있는 서버 사이의 DNS 패킷을 암호화하고 인증한다.원격 권한 있는 서버의 공용 키는 NS 레코드에 저장되므로, 재귀 확인자는 서버가 DNSCurve를 지원하는지 여부를 안다.키는 마법의 문자열로 시작한다.uz5서버 255비트 공개 키의 51바이트 Base32 인코딩이 뒤따른다.예: BIND 형식으로:

example.com.NS uz5bcx1nh80x1r17q653jf3guywz7cmyh5jv0qjz0unm56lq7rpj8l.example.com에서. 

그런 다음 해결사는 DNSCurve 공용 키, 96비트 nonce 및 쿼리를 포함하는 암호화 상자를 서버로 전송한다.암호 박스는 해결사의 개인 키, 서버의 공용 키, 그리고 noce를 사용하여 생성된다.서버로부터의 응답은 다른 96비트 nonce와 쿼리에 대한 대답을 포함하는 자체 암호화 박스를 포함한다.

DNSCurve에 사용되는 암호 도구는 TCP와 유사하지만 데이터를 암호화하고 인증하기 위해 타원 커브 암호법을 사용하는 UDP 기반 프로토콜인 CurveCP에서 사용되는 것과 동일하다.DNSSEC가 PGP(Pretty Good Privacy)로 웹페이지에 서명하는 것과 같은 반면, CurveCP와 DNSCurve는 TLS(Transport Layer Security)를 사용하여 채널을 암호화 및 인증하는 것과 같다.SSL을 이용해 암호화된 채널을 통해 PGP가 서명된 웹 페이지를 전송할 수 있는 것처럼, DNSCurve를 사용하여 DNSSEC 데이터를 보호할 수 있다.

DNSCurve는 이전 DNS 서비스보다 다음과 같은 이점을 주장한다.[2]

  • 기밀성—정상적인 DNS 요청 및 응답은 암호화되지 않으며 공격자에게 브로드캐스트된다.
  • 무결성—상용 DNS는 어느 정도 보호가 되지만, 인내심과 스니핑 공격자가 DNS 레코드를 위조할 수 있다. 이는 DNSCurve 암호화 인증에 의해 방지된다.
  • 가용성—실제 DNS는 스니핑 공격자가 초당 몇 개의 위조 패킷을 보내 서비스 거부(DoS)를 방지하지 않는다.DNSCurve는 SMTP, HTTP, HTTPS도 DoS에 취약하지만 일부 보호를 제공하면서 위조 DNS 패킷을 인식하고 삭제한다.

보안

DNSCurve는 256비트 타원곡선 암호법을 사용하며, NIST는 3072비트 RSA와 거의 동등한 것으로 추정한다.[3] ECRPT는 유사한 동등성을 보고한다.[4]SSH, SSL과 같은 쿼리당 공개키 암호와 96비트 nonce를 사용하여 재생 공격으로부터 보호한다.구글의 보안 담당자인 애덤 랭글리는 "매우 높은 확률로, 큰 양자 컴퓨터 없이는 누구도 커브25519의 단일 인스턴스를 해결할 수 없을 것"[5]이라고 말한다.

속도

아담 랭글리는 DNSCurve가 사용한 Curve 25519를 보여주는 속도 테스트를 개인 웹사이트에 게시했는데, 이는 타원 곡선 중에서 가장 빠른 것이다.[6]국가안보국(NSA)에 따르면 타원곡선 암호화는 RSA와 Diffie에 비해 월등히 우수한 성능을 제공한다.키 사이즈가 커질수록 기하급수적으로 빠른 헬맨.[7]

구현

DNSCurve는 Matthew Dempsky의 패치를[8] 통해 Dnscache에 대한 재귀적 지원을 처음 획득했다.뎀프스키에는 파이썬 DNS 조회 도구와 C에 포워더가 포함된 GitHub 저장소도 있다.[9]아담 랭글리는 또한 GitHub 저장소를 가지고 있다.[10]DNS 관리자가 패치 없이 기존 설치를 보호할 수 있는 CurveDNS라는 권위 있는 Forwarder가 있다.OpenDNS는 OpenDNS 사용자와 해당 재귀적 해결사 사이의 채널을 보호하기 위해 DNSCrypt를[12] 출시했다.Jan Mojžish는 DNS, SSH, HTTP, SMTP와 같은 일반적인 서비스에 대해 DNSCurve와 CurveCP 보호를 구현하는 소프트웨어 제품군인 [13]Curveprotect를 출시했다.

배치

5000만 명의 사용자를 보유한 오픈DNS는 2010년 2월 23일 재귀적 해결사에 대한 DNSCurve 지원을 발표했다.[14]그 후 2011년 12월 6일, OpenDNS는 DNSCrypt라고 불리는 새로운 도구를 발표했다.[15]DNSCrypt는 OpenDNS와 사용자 사이의 채널을 보호한다.[16]마찬가지로 권위 있는 대규모 DNS 제공자는 아직 DNSCurve를 배치하지 않았다.

참고 항목

DNSCurve는 해결사와 권한 있는 서버 간의 통신을 보호하기 위한 것이다.DNS 클라이언트와 확인자 간의 통신 보안을 위해 다음과 같은 몇 가지 옵션이 있다.

메모들

  1. ^ D. J. Bernstein. "Curve25519: high-speed elliptic-curve cryptography". Retrieved 30 January 2013.
  2. ^ "Introduction to DNSCurve". DNSCurve. 22 June 2009. Retrieved 16 March 2016.
  3. ^ "NIST Recommendations (2011)".
  4. ^ "ECRYPT II Yearly Report on Algorithms and Keysizes (2010-2011)" (PDF). Archived from the original (PDF) on 2012-06-02.
  5. ^ "Adam Langley on curve25519 security".
  6. ^ "Adam Langley: What a difference a prime makes".
  7. ^ "The Case for Elliptic Curve Cryptography". NSA. Archived from the original on January 17, 2009. Retrieved January 17, 2009.
  8. ^ "DNSCurve patch for dnscache". Archived from the original on 2012-12-28.
  9. ^ "Matthew Dempsky's DNSCurve repo on GitHub". 13 August 2019.
  10. ^ "Adam Langley's DNSCurve repo". 13 August 2019.
  11. ^ "CurveDNS: A DNSCurve Forwarding Name Server".
  12. ^ "DNSCrypt: Securing a critical piece of Internet infrastructure". Archived from the original on 2012-05-10. Retrieved 2012-05-09.
  13. ^ "curveprotect, a complex collection of tools for protecting wide range of internet services".
  14. ^ "OpenDNS adopts DNSCurve".
  15. ^ "OpenDNS unveils DNSCrypt". Archived from the original on 2013-02-03.
  16. ^ "net/dnscrypt-proxy: dnscrypt-proxy-1.4.3 – secure communications between a DNS client and resolver". OpenBSD ports. 2015-01-06. Retrieved 2015-02-09.

외부 링크