]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
Improve default padding of responses.
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Sat, 25 Mar 2017 22:00:53 +0000 (17:00 -0500)
committerDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Sat, 25 Mar 2017 22:00:53 +0000 (17:00 -0500)
At NDSS 2017's DNS privacy workshop, I presented an empirical study of
DNS padding policies:

https://www.internetsociety.org/events/ndss-symposium/ndss-symposium-2017/dns-privacy-workshop-2017-programme#session3

The slide deck is here:
https://dns.cmrg.net/ndss2017-dprive-empirical-DNS-traffic-size.pdf

The resulting recommendation from the research is that a simple
padding policy is relatively cheap and still protective of metadata
when DNS traffic is encrypted:

 * queries should be padded to a multiple of 128 octets
 * responses should be padded to a multiple of 468 octets

This change adjusts the default policy to match these recommendations.

I recently proposed a similar change to libknot to define a standard
policy in a centralized place:

https://gitlab.labs.nic.cz/labs/knot/merge_requests/692

I'll submit a followup request to make use of that centralized policy
(once kresd is willing to depend on a newer version of libknot), but
please consider this proposed change first.

lib/defines.h

index 5653c0436bf89aab78de8297fe397db8a0f7879d..2621a7ac32be975fb1e3346e25835efdcf2c8e39 100644 (file)
@@ -69,7 +69,7 @@ static inline int __attribute__((__cold__)) kr_error(int x) {
 #define KR_DNS_TLS_PORT 853
 #define KR_EDNS_VERSION 0
 #define KR_EDNS_PAYLOAD 4096 /* Default UDP payload (max unfragmented UDP is 1452B) */
-#define KR_DEFAULT_TLS_PADDING 128 /* Default EDNS(0) Padding is 128 */
+#define KR_DEFAULT_TLS_PADDING 468 /* Default EDNS(0) Padding is 468 */
 #define KR_CACHE_DEFAULT_MAXTTL (6 * 24 * 3600) /* 6 days, like the root NS TTL */
 
 /*