Skip to content

Commit 5efb652

Browse files
committed
oblivious DNS
1 parent e9ea2c9 commit 5efb652

File tree

3 files changed

+86
-15
lines changed

3 files changed

+86
-15
lines changed

figures/SecurityFigs.odp

1.01 KB
Binary file not shown.

figures/odns.png

37.2 KB
Loading

infra.rst

Lines changed: 86 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ describe three different uses of the RPKI in the following sections.
263263
Routing? <https://dl.acm.org/doi/pdf/10.1145/2668152.2668966/>`__
264264
ACM Queue, August 2014.
265265

266-
Ceclia Testart and David Clark. `A Data-Driven Approach to
266+
Cecilia Testart and David Clark. `A Data-Driven Approach to
267267
Understanding the State of Internet Routing Security
268268
<https://faculty.cc.gatech.edu/~ctestart8/publications/RoutingSecTPRC.pdf>`__. TPRC
269269
48, February 2021.
@@ -578,17 +578,17 @@ relationships gives us the ability to detect such anomalies.
578578
Valley-free topology of Autonomous Systems
579579

580580
Suppose that two ASs, X and Y, publish a list of their providers
581-
using APSA objects in the RPKI. Let's say that there is an ASPA object
581+
using ASPA objects in the RPKI. Let's say that there is an ASPA object
582582
asserting that AS X is a provider for AS Y, as well as an ASPA object
583583
asserting the AS Y is *not* among the providers for AS X. If a router
584584
receives an advertisement in which Y appears to be a provider for X,
585585
this is clearly wrong and the router drops the advertisement. The
586586
question of how we can tell that a particular AS is a provider,
587587
customer, or peer of another AS is a bit subtle, but it depends on the
588-
properties of valley-free routing. We can't have an arbitarty mix of
588+
properties of valley-free routing. We can't have an arbitrary mix of
589589
customer-provider and provider-customer links in a valid path; there
590590
must be a set of paths going "up" towards providers followed by at
591-
most one lateral path followd by a set of paths going "down" towards
591+
most one lateral path followed by a set of paths going "down" towards
592592
customers. The more relationships that are placed in the RPKI, the more
593593
power a BGP speaker gains to detect paths that are invalid.
594594

@@ -618,14 +618,14 @@ in an era when attacks on the Internet were not a top concern of
618618
protocol designers.
619619

620620

621-
If you need a refesher on how DNS operates, see the section in our
621+
If you need a refresher on how DNS operates, see the section in our
622622
main textbook listed below. DNS queries and responses are sent
623623
between name servers as UDP datagrams, unprotected by encryption
624624
or authentication. Thus, the recipient of a DNS response is unable to
625625
determine who sent it—just because it looks like a reply to the query
626626
doesn't mean it came from the server to which the query was sent. Nor
627627
can the recipient establish whether it contains valid information. And
628-
it turns out to be relatively easy to send false reponses to DNS
628+
it turns out to be relatively easy to send false responses to DNS
629629
requests that can fool the recipients. Because of the way DNS caches
630630
responses, the impact of such false information can be widespread.
631631

@@ -673,8 +673,8 @@ possibility.
673673

674674
Suppose that the attacker is able to observe the client
675675
request (1) in Figure :numref:`Figure %s <fig-DNS>`, perhaps by
676-
snooping on open Wifi. The attacker can now flood the resolver with
677-
fake versions of the expected reponse (3), hoping that with enough
676+
snooping on open WiFi. The attacker can now flood the resolver with
677+
fake versions of the expected response (3), hoping that with enough
678678
guesses they can generate a response that will be accepted by the
679679
resolver. The ID field in the DNS header is a 16-bit field and the
680680
server UDP port associated with DNS is a well-known value, so there
@@ -691,7 +691,7 @@ faced by DNS.
691691

692692
When the goal is to limit access to certain sites, rather than to
693693
redirect a client to a fake site, simply disrupting the process of DNS
694-
resolution is sufficent to make access to the target sites difficult
694+
resolution is sufficient to make access to the target sites difficult
695695
for end users. The use of packet inspection to intercept DNS queries
696696
passing through a network and then to inject fake responses, or simply
697697
drop the query, is part of the suite of techniques used to control
@@ -710,7 +710,7 @@ security, the DNS Security Extensions (DNSSEC), does.
710710

711711
The first step for DNSSEC is similar to an approach we have seen used
712712
in other scenarios: to establish chains of trusted public keys using a
713-
hierarachy of certificates. Of course, in DNS we have an existing
713+
hierarchy of certificates. Of course, in DNS we have an existing
714714
hierarchical relationship between zones, with the root zone at the top,
715715
so it is natural to establish a certificate hierarchy following the
716716
zone hierarchy. As a reminder, see the example hierarchy from the
@@ -730,7 +730,7 @@ pair that they plan to use, and that certificate will be issued and
730730
signed by the .edu domain. The .edu domain in turn requires a
731731
certificate to establish that their key can be trusted, and that
732732
certificate is issued and signed by the root domain. As with other
733-
systems such as TLS certficates, establishing a root of trust must be
733+
systems such as TLS certificates, establishing a root of trust must be
734734
done by some out-of-band mechanism. There is actually an elaborate, formal
735735
process for generating the root key—a signing ceremony with multiple
736736
participants and auditors—that enables the keys for the root zone to be
@@ -741,7 +741,7 @@ TLS and BGP security, the notable difference here is that the chain of
741741
certificates that must be followed is precisely defined by the
742742
hierarchy of the DNS. Whereas a TLS certificate could be issued by a
743743
range of certification authorities, the certificates for any zone in DNSSEC must be
744-
issued by the parent zone. This has some advangtages, such as limiting
744+
issued by the parent zone. This has some advantages, such as limiting
745745
the opportunities for bad behavior by CAs that has occasionally
746746
occurred with TLS certificates. However, it also introduces a
747747
weakness: if your parent zone, or any zone in the path between the
@@ -770,12 +770,72 @@ used by the underlying protocols to connect you to the web site?
770770

771771
This is not to say that protecting DNS is unimportant,
772772
however. Interference with DNS is still a vector for censorship and
773-
surviellance of Internet usage. For this reason there are other
773+
surveillance of Internet usage. For this reason there are other
774774
methods of protecting DNS that have started to gain traction more
775775
recently.
776776

777-
8.2.2 DNS over HTTPS (DoH)
778-
-----------------------------
777+
8.2.2 Encrypted DNS (DoH, ODNS)
778+
-------------------------------------
779+
780+
781+
With the widespread adoption of TLS to encrypt and authenticate HTTP
782+
traffic, as discussed in Chapter 6, it should come as no surprise that
783+
there are now a number of standard ways to send DNS queries and
784+
responses over TLS-secured channels. There have been a number of
785+
similar proposals to achieve this outcome, with the IETF having
786+
standardized both DNS over TLS (DoT) in RFC 7858, and DNS over HTTPS
787+
(DoH) in RFC 8484. There is some debate about the merits of each but
788+
for the purposes of our discussion the differences are not terribly
789+
significant.
790+
791+
The basic idea behind both approaches is simple enough. Rather than sending DNS
792+
queries and responses as plaintext UDP datagrams, the DNS client
793+
establishes a TLS or HTTPS connection to the DNS resolver, and then issues
794+
queries as requests within that encrypted channel. The details of
795+
how to encode the requests and responses are spelled out in the RFCs
796+
and we need not dwell on them here.
797+
798+
It's worth noting that in this model, we no longer have an assurance
799+
that they DNS information being provided by the resolver is correct at
800+
the same level that we did with DNSSEC. What we can be sure of is the
801+
identity of the resolver we are connected to, since that is provided
802+
by its TLS certificate, and the fact that the query sent and response
803+
issued by the resolver have not been modified or observed by an
804+
intermediary, since they are both encrypted and authenticated. But if
805+
the resolver itself is giving bad information, perhaps because the
806+
information provided to it from upstream in the DNS hierarchy has been
807+
corrupted, the client will be none the wiser. So while the need to
808+
deploy DNSSEC all the way along the hierarchy is something of an
809+
impediment to deployment, it does provide a level of security that
810+
isn't provided by simply securing the client-to-resolver channel.
811+
812+
Another notable security risk that is not addressed by any of the
813+
approaches discussed to this point, is the privacy of the client
814+
making the queries. The resolver has access to all the client requests
815+
in unencrypted form, which would seem to be a requirement for those
816+
requests to be served. However, there have been efforts to improve the
817+
privacy of client requests using a technique known as *Oblivious
818+
DNS*.
819+
820+
.. _fig-odns:
821+
.. figure:: figures/odns.png
822+
:width: 400px
823+
:align: center
824+
825+
Oblivious DNS
826+
827+
The central idea in oblivious DNS is to hide the identity of the
828+
client from the resolver. This is done by leveraging DoH to encrypt
829+
the requests from the client and the responses sent to the client,
830+
using a key that is associated with the target. But rather than send
831+
the queries direct to the target, as in standard DoH, oblivious DNS
832+
inserts a proxy between client and target. So the proxy gets an
833+
encrypted request that it cannot interpret, and then passes the
834+
request on to the target. The target can decrypt the request but
835+
doesn't know which client sent it, and sends an encrypted response
836+
back to the proxy. As long as the proxy supports a mix of clients, and
837+
and the proxy and target do not collude, neither of them has the
838+
information to figure out what queries a given client is making.
779839

780840
.. _reading_dns:
781841
.. admonition:: Further Reading
@@ -797,6 +857,17 @@ recently.
797857
<https://labs.apnic.net/index.php/2024/05/27/calling-time-on-dnssec/>`__
798858
APNIC Blog, May 2024.
799859

860+
Hu, Z., et al. `Specification for DNS over Transport Layer
861+
Security (TLS) <https://www.rfc-editor.org/info/rfc7858>`__. RFC 7858, May 2016.
862+
863+
Hoffman, P. and P. McManus. `DNS Queries over HTTPS (DoH)
864+
<https://www.rfc-editor.org/info/rfc8484>`__. RFC 8484,
865+
October 2018.
866+
867+
Kinnear, E., McManus, P., Pauly, T., Verma, T.,
868+
and C. Wood. `Oblivious DNS over HTTPS
869+
<https://www.rfc-editor.org/info/rfc9230>`__. RFC 9230, June 2022.
870+
800871
.. notes
801872
802873

0 commit comments

Comments
 (0)