hands on tutorial
play

Hands on tutorial Willem Toorop, NLNet Labs Shumon Huque, Verisign - PowerPoint PPT Presentation

Hands on tutorial Willem Toorop, NLNet Labs Shumon Huque, Verisign Glen Wiley, Verisign About getdns API= a DNS API specification resolving names getdns API= created by and for applications developers getdns = the first


  1. Hands on tutorial Willem Toorop, NLNet Labs Shumon Huque, Verisign Glen Wiley, Verisign

  2. About  getdns API= a DNS API specification – resolving names  getdns API= created by and for applications developers  getdns = the first implementation of this specification  getdns highlighted feature : Parry pervasive monitoring and man in the middle attacks by bootstrapping encrypted channels  getdns mission slogan : Security Begins with a Name

  3. About DNSSEC  A globally distributed database with authenticated data

  4. About DNSSEC  A global distributed database with authenticated data  Wasn't it about protecting users against domain hijacking?  DNS = the phone book of the Internet  Data unauthenticated  DNSSEC to the rescue

  5. About DNSSEC  A global distributed database with authenticated data  Wasn't it about protecting users against domain hijacking?  DNS = the phone book of the Internet  Data unauthenticated  DNSSEC to the rescue  Yes, but it does so by giving (origin) authenticated answers - where origin means that the authoritative party for a zone authenticates the domain names within that zone

  6. Refresher – Public Key Crypto Encrypt Public Encrypt Encrypted Encrypted Readable Readable message message message message Shared Decrypt Private Decrypt  Asymmetric encryptjon  Symmetric encryptjon

  7. Refresher – DNS in two slides  Zones with distributed authority . .com .org .net oreilly.com getdnsapi.net

  8. Refresher – DNS in two slides  Zones with distributed authority  Three types of name servers/clients  Iterative querying Authoritatives getdnsapi.net A . net NS Application getdnsapi.net A stub getdnsapi.net A Recursive Resolver net getdnsapi.net NS OS getdnsapi.net A getdnsapi.net A getdnsapi getdnsapi.net A

  9. DNSSEC – Public Key Crypto – Signing Readable message Hash hash of msg Equal? Readable Hash Readable message message Decrypt Encrypt signature signature hash of msg Public Private  Verify signature  Create signature

  10. DNSSEC – Public Key Crypto – delegating authority Readable Public message Readable message signature Hash Readable Hash Public message Public Encrypt Encrypt signature signature hash of msg hash signature Private Private  signs the message  Building the chain of trust authorizes

  11. DNSSEC – Chain of Trust  Zones with distributed authority DNSKEY  Chain of trust follows delegations . ✓ ✓ .com DS .org DS ✓ .net DS  DNSKEY P ublic key of zone DNSKEY DNSKEY DNSKEY  DS Hash of DNSKEY .com .org .net signed by parent ✓ getdnsapi.net DS DNSKEY oreilly.com getdnsapi.net

  12. DNSSEC – Public Key Crypto – Verifying delegations Readable Hash hash Hash hash of msg message signature compare compare Readable Public message Public Decrypt Decrypt signature signature signature Public Public Public Public  Verify signature  Verify authorization

  13. DNSSEC – Validating  A Validating Recursive Resolver uses the root's public key to verify (validate) delegations Authoritatives getdnsapi.net A . net NS net DS Application net DNSKEY getdnsapi.net A Validating stub getdnsapi.net A Recursive net DNSKEY net getdnsapi.net NS Resolver OS getdnsapi.net A getdnsapi.net DS getdnsapi.net DNSKEY getdnsapi.net A getdnsapi ✓ getdnsapi.net DNSKEY getdnsapi.net A

  14. DNSSEC for Applications – for TLS  Transport Layer Security (TLS) uses both asymmetric and symmetric encryption  A symmetric key is sent encrypted with remote public key  How is the remote public key authenticated?

  15. TLS Not Leveraging DNSSEC  How is the remote public key authenticated?

  16. How is Remote Public Key Authenticated?  Through Certificate Authorities (CAs), maintained in OS, browser...  Every CA is authorized to authenticate for any name (as strong as the weakest link)  There are 1000+ CAs

  17. Enter DANE-TLS

  18. Enter DANE-TLS @Kloot  D NS-based A uthentication of N amed E ntities (DANE) RFC6698

  19. DANE out of reach for Applications  getaddrinfo() returns addresses, how to ask for TLSA , or SSHFP  getaddrinfo() doesn’t tell if you got Authenticated Data (AD) Authoritatives _443._tcp.getdnsapi.net TLSA . net NS net DS Application net DNSKEY getdnsapi.net TLSA? Validating getaddrinfo() _443._tcp.getdnsapi.net TLSA Recursive net DNSKEY net getdnsapi.net NS Resolver OS getdnsapi.net DS getdnsapi.net DNSKEY _443._tcp.getdnsapi.net TLSA getdnsapi ✓ getdnsapi.net DNSKEY _443._tcp.getdnsapi.net TLSA

  20. Do you trust the resolver? Could be your phone Authoritatives Could be the Wi-Fi getdnsapi.net A . net NS net DS Application net DNSKEY getdnsapi.net A Validating getaddrinfo() getdnsapi.net A getaddrinfo() Recursive net DNSKEY net getdnsapi.net NS Resolver OS getdnsapi.net DS OS getdnsapi.net DNSKEY malicious getdnsapi.net A resolver getdnsapi getdnsapi.net A ✓ getdnsapi.net DNSKEY getdnsapi.net A

  21. Bypass resolver completely... Authoritatives _443._tcp.getdnsapi.net TLSA . net NS Application net DS net DNSKEY _443._tcp.getdnsapi.net TLSA Recursive net DNSKEY Resolver getdnsapi.net NS net getdnsapi.net DS os OS _443._tcp.getdnsapi.net TLSA ✓ getdnsapi.net DNSKEY _443._tcp.getdnsapi.net TLSA getdnsapi.net DNSKEY getdnsapi ✓

  22. Or Do DNSSEC Iteration as a Stub! Authoritatives _443._tcp.getdnsapi.net TLSA . _443._tcp.getdnsapi.net TLSA net NS Application net DS net DNSKEY Validating _443._tcp.getdnsapi.net TLSA Recursive net DNSKEY net getdnsapi.net NS Resolver os getdnsapi.net DS OS ✓ getdnsapi.net DNSKEY getdnsapi.net DNSKEY _443._tcp.getdnsapi.net TLSA _443._tcp.getdnsapi.net TLSA getdnsapi ✓ getdnsapi.net DNSKEY _443._tcp.getdnsapi.net TLSA

  23. Motivation – for a new DNS API  From API Design considerations: … There are other DNS APIs available, but there has been very little uptake … … talking to application developers … … the APIs were developed by and for DNS people, not application developers …

  24. Motivation – for a new DNS API  From API Design considerations: … There are other DNS APIs available, but there has been very little uptake … … talking to application developers … … the APIs were developed by and for DNS people, not application developers …  Goal … API design from talking to application developers … … create a natural follow-on to getaddrinfo() ...

  25. Motivation – for a new DNS API  Goal … API design from talking to application developers … … create a natural follow-on to getaddrinfo() … - http://www.vpnc.org/getdns-api/ - Edited by Paul Hoffman - First publication April 2013 - Updated in February 2014 (after extensive discussion during implementation) - Creative Commons Attribution 3.0 Unported License

  26. Motivation – for a new DNS API  Goal … API design from talking to application developers … … create a natural follow-on to getaddrinfo() … - Implemented by Verisign Labs & NLnet Labs together - http://getdnsapi.net/ - 0.1.0 release in February 2014, 0.1.1 in March, - 0.1.2 & 0.1.3 in June, 0.1.4 in September, 0.1.5 last Friday - Node.js and Python bindings - BSD 3-Clause License

  27. Why this library (and not one of the others)  Offers the full resolving package - Full recursion and DNSSEC … through libunbound - Access to all the resolved data … through ldns

  28. Why this library (and not one of the others)  Delivers a generic data structure … Response Dict - Lists, dicts, data, integers … ubiquitous in modern scripting languages - Very suitable for inspection - Trial and error style programming … resolve, have a look, decide how to proceed - Suitable for scripting language bindings … and those are very developer friendly. Hackathon with Node.js and Python . Ahead are Go , Ruby , Perl ...

  29. Simple Functions – Full Recursion from getdns import * ctx = Context () ext = { "dnssec_return_only_secure": GETDNS_EXTENSION_TRUE } res = ctx.general ( ’_443._tcp.getdnsapi.net’, GETDNS_RRTYPE_TLSA, ext) if res[’status’] = GETDNS_RESPSTATUS_GOOD: # Process TLSA RRs Authoritatives _443._tcp.getdnsapi.net TLSA . net NS Application net DS net DNSKEY _443._tcp.getdnsapi.net TLSA Recursive net DNSKEY Resolver getdnsapi.net NS net getdnsapi.net DS os OS _443._tcp.getdnsapi.net TLSA ✓ getdnsapi.net DNSKEY _443._tcp.getdnsapi.net TLSA getdnsapi.net DNSKEY getdnsapi ✓

  30. Simple Functions – Stub mode from getdns import * ctx = Context () ctx.resolution_type = GETDNS_RESOLUTION_STUB ext = { "dnssec_return_only_secure": GETDNS_EXTENSION_TRUE } res = ctx.general ( ’_443._tcp.getdnsapi.net’, GETDNS_RRTYPE_TLSA, ext) if res[’status’] = GETDNS_RESPSTATUS_GOOD: Authoritatives # Process TLSA RRs _443._tcp.getdnsapi.net TLSA . _443._tcp.getdnsapi.net TLSA net NS Application net DS net DNSKEY Validating _443._tcp.getdnsapi.net TLSA Recursive net DNSKEY net getdnsapi.net NS Resolver os getdnsapi.net DS OS ✓ getdnsapi.net DNSKEY getdnsapi.net DNSKEY _443._tcp.getdnsapi.net TLSA _443._tcp.getdnsapi.net TLSA getdnsapi ✓ getdnsapi.net DNSKEY _443._tcp.getdnsapi.net TLSA

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend