]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - contrib/bind9/doc/draft/draft-ihren-dnsext-threshold-validation-00.txt
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / contrib / bind9 / doc / draft / draft-ihren-dnsext-threshold-validation-00.txt
1
2 Internet Draft                                          Johan Ihren
3 draft-ihren-dnsext-threshold-validation-00.txt          Autonomica
4 February 2003
5 Expires in six months
6
7
8                         Threshold Validation: 
9
10          A Mechanism for Improved Trust and Redundancy for DNSSEC Keys
11
12
13 Status of this Memo
14
15    This document is an Internet-Draft and is in full conformance with
16    all provisions of Section 10 of RFC2026.
17
18    Internet-Drafts are working documents of the Internet Engineering
19    Task Force (IETF), its areas, and its working groups. Note that
20    other groups may also distribute working documents as
21    Internet-Drafts.
22
23    Internet-Drafts are draft documents valid for a maximum of six
24    months and may be updated, replaced, or obsoleted by other
25    documents at any time. It is inappropriate to use Internet-Drafts
26    as reference material or to cite them other than as "work in
27    progress."
28
29    The list of current Internet-Drafts can be accessed at
30    http://www.ietf.org/ietf/1id-abstracts.txt
31
32    The list of Internet-Draft Shadow Directories can be accessed at
33    http://www.ietf.org/shadow.html.
34
35
36 Abstract
37
38    This memo documents a proposal for a different method of validation
39    for DNSSEC aware resolvers. The key change is that by changing from
40    a model of one Key Signing Key, KSK, at a time to multiple KSKs it
41    will be possible to increase the aggregated trust in the signed
42    keys by leveraging from the trust associated with the different
43    signees. 
44
45    By having multiple keys to chose from validating resolvers get the
46    opportunity to use local policy to reflect actual trust in
47    different keys. For instance, it is possible to trust a single,
48    particular key ultimately, while requiring multiple valid
49    signatures by less trusted keys for validation to succeed.
50    Furthermore, with multiple KSKs there are additional redundancy
51    benefits available since it is possible to roll over different KSKs
52    at different times which may make rollover scenarios easier to
53    manage.
54
55 Contents
56
57         1. Terminology
58         2. Introduction and Background
59
60         3. Trust in DNSSEC Keys
61         3.1. Key Management, Split Keys and Trust Models
62         3.2. Trust Expansion: Authentication versus Authorization
63
64         4. Proposed Semantics for Signing the KEY Resource Record 
65            Set
66         4.1. Packet Size Considerations
67
68         5. Proposed Use of Multiple "Trusted Keys" in a Validating 
69            Resolver
70         5.1. Not All Possible KSKs Need to Be Trusted
71         5.2. Possible to do Threshold Validation
72         5.3. Not All Trusted Keys Will Be Available
73
74         6. Additional Benefits from Having Multiple KSKs
75         6.1. More Robust Key Rollovers
76         6.2. Evaluation of Multiple Key Distribution Mechanisms
77
78         7. Security Considerations
79         8. IANA Considerations.
80         9. References
81         9.1. Normative.
82         9.2. Informative.
83         10. Acknowledgments.
84         11. Authors' Address
85
86
87 1. Terminology
88
89    The key words "MUST", "SHALL", "REQUIRED", "SHOULD", "RECOMMENDED",
90    and "MAY" in this document are to be interpreted as described in
91    RFC 2119. 
92
93    The term "zone" refers to the unit of administrative control in the
94    Domain Name System. "Name server" denotes a DNS name server that is
95    authoritative (i.e. knows all there is to know) for a DNS zone,
96    typically the root zone. A "resolver", is a DNS "client", i.e. an
97    entity that sends DNS queries to authoritative nameservers and
98    interpret the results. A "validating resolver" is a resolver that
99    attempts to perform DNSSEC validation on data it retrieves by doing
100    DNS lookups.
101
102
103 2. Introduction and Background
104
105    From a protocol perspective there is no real difference between
106    different keys in DNSSEC. They are all just keys. However, in
107    actual use there is lots of difference. First and foremost, most
108    DNSSEC keys have in-band verification. I.e. the keys are signed by
109    some other key, and this other key is in its turn also signed by
110    yet another key. This way a "chain of trust" is created. Such
111    chains have to end in what is referred to as a "trusted key" for
112    validation of DNS lookups to be possible. 
113
114    A "trusted key" is a the public part of a key that the resolver
115    acquired by some other means than by looking it up in DNS. The
116    trusted key has to be explicitly configured.
117
118    A node in the DNS hierarchy that issues such out-of-band "trusted
119    keys" is called a "security apex" and the trusted key for that apex
120    is the ultimate source of trust for all DNS lookups within that
121    entire subtree.
122
123    DNSSEC is designed to be able to work with more than on security
124    apex. These apexes will all share the problem of how to distribute
125    their "trusted keys" in a way that provides validating resolvers
126    confidence in the distributed keys. 
127
128    Maximizing that confidence is crucial to the usefulness of DNSSEC
129    and this document tries to address this issue.
130
131
132 3. Trust in DNSSEC Keys
133
134    In the end the trust that a validating resolver will be able to put
135    in a key that it cannot validate within DNSSEC will have to be a
136    function of
137
138             * trust in the key issuer, aka the KSK holder
139
140             * trust in the distribution method
141
142             * trust in extra, out-of-band verification
143
144    The KSK holder needs to be trusted not to accidentally lose private
145    keys in public places. Furthermore it needs to be trusted to
146    perform correct identification of the ZSK holders in case they are
147    separate from the KSK holder itself.
148
149    The distribution mechanism can be more or less tamper-proof. If the
150    key holder publishes the public key, or perhaps just a secure
151    fingerprint of the key in a major newspaper it may be rather
152    difficult to tamper with. A key acquired that way may be easier to
153    trust than if it had just been downloaded from a web page.
154
155    Out-of-band verification can for instance be the key being signed
156    by a certificate issued by a known Certificate Authority that the
157    resolver has reason to trust.
158
159 3.1. Simplicity vs Trust 
160
161    The fewer keys that are in use the simpler the key management
162    becomes. Therefore increasing the number of keys should only be
163    considered when the complexity is not the major concern. A perfect
164    example of this is the distinction between so called Key Signing
165    Keys, KSK, and Zone Signing Keys, ZSK. This distinction adds
166    overall complexity but simplifies real life operations and was an
167    overall gain since operational simplification was considered to be
168    a more crucial issue than the added complexity.
169
170    In the case of a security apex there are additional issues to
171    consider, among them
172
173       * maximizing trust in the KSK received out-of-band
174
175       * authenticating the legitimacy of the ZSKs used
176
177    In some cases this will be easy, since the same entity will manage
178    both ZSKs and KSKs (i.e. it will authenticate itself, somewhat
179    similar to a self-signed certificate). In some environments it will
180    be possible to get the trusted key installed in the resolver end by
181    decree (this would seem to be a likely method within corporate and
182    government environments).
183
184    In other cases, however, this will possibly not be sufficient. In
185    the case of the root zone this is obvious, but there may well be
186    other cases.
187
188 3.2. Expanding the "Trust Base"
189
190    For a security apex where the ZSKs and KSK are not held by the same
191    entity the KSK will effectively authenticate the identity of
192    whoever does real operational zone signing. The amount of trust
193    that the data signed by a ZSK will get is directly dependent on
194    whether the end resolver trusts the KSK or not, since the resolver
195    has no OOB access to the public part of the ZSKs (for practical
196    reasons).
197
198    Since the KSK holder is distinct from the ZSK holder the obvious
199    question is whether it would then be possible to further improve
200    the situation by using multiple KSK holders and thereby expanding
201    the trust base to the union of that available to each individual
202    KSK holder. "Trust base" is an invented term intended to signify
203    the aggregate of Internet resolvers that will eventually choose to
204    trust a key issued by a particular KSK holder.
205
206    A crucial issue when considering trust expansion through addition
207    of multiple KSK holders is that the KSK holders are only used to
208    authenticate the ZSKs used for signing the zone. I.e. the function
209    performed by the KSK is basically:
210
211              "This is indeed the official ZSK holder for this zone,
212              I've verified this fact to the best of my abilitites."
213
214    Which can be thought of as similar to the service of a public
215    notary. I.e. the point with adding more KSK holders is to improve
216    the public trust in data signed by the ZSK holders by improving the
217    strength of available authentication. 
218
219    Therefore adding more KSK holders, each with their own trust base,
220    is by definition a good thing. More authentication is not
221    controversial. On the contrary, when it comes to authentication,
222    the more the merrier.
223
224    
225 4. Proposed Semantics for Signing the KEY Resource Record Set
226
227    In DNSSEC according to RFC2535 all KEY Resource Records are used to
228    sign all authoritative data in the zone, including the KEY RRset
229    itself, since RFC2535 makes no distinction between Key Signing
230    Keys, KSK, and Zone Signing Keys, ZSK.  With Delegation Signer [DS]
231    it is possible to change this to the KEY RRset being signed with
232    all KSKs and ZSKs but the rest of the zone only being signed by the
233    ZSKs.
234
235    This proposal changes this one step further, by recommending that
236    the KEY RRset is only signed by the Key Signing Keys, KSK, and
237    explicitly not by the Zone Signing Keys, ZSK. The reason for this
238    is to maximize the amount of space in the DNS response packet that
239    is available for additional KSKs and signatures thereof. The rest
240    of the authoritative zone contents are as previously signed by only
241    the ZSKs.
242
243 4.1. Packet Size Considerations
244
245    The reason for the change is to keep down the size of the aggregate
246    of KEY RRset plus SIG(KEY) that resolvers will need to acquire to
247    perform validation of data below a security apex. For DNSSEC data
248    to be returned the DNSSEC OK bit in the EDNS0 OPT Record has to be
249    set, and therefore the allowed packet size can be assumed to be at
250    least the EDNS0 minimum of 4000 bytes.
251
252    When querying for KEY + SIG(KEY) for "." (the case that is assumed
253    to be most crucial) the size of the response packet after the
254    change to only sign the KEY RR with the KSKs break down into a
255    rather large space of possibilities. Here are a few examples for
256    the possible alternatives for different numbers of KSKs and ZSKs
257    for some different key lengths (all RSA keys, with a public
258    exponent that is < 254). This is all based upon the size of the
259    response for the particular example of querying for
260    
261         ". KEY IN"
262
263    with a response of entire KEY + SIG(KEY) with the authority and
264    additional sections empty:
265
266               ZSK/768 and KSK/1024   (real small)
267               Max 12 KSK +  3 ZSK  at 3975
268                   10 KSK +  8 ZSK  at 3934
269                    8 KSK + 13 ZSK  at 3893
270
271               ZSK/768 + KSK/1280
272               MAX 10 KSK +  2 ZSK  at 3913
273                    8 KSK +  9 ZSK  at 3970
274                    6 KSK + 15 ZSK  at 3914
275
276               ZSK/768 + KSK/1536
277               MAX  8 KSK +  4 ZSK  at 3917
278                    7 KSK +  8 ZSK  at 3938
279                    6 KSK + 12 ZSK  at 3959
280
281               ZSK/768 + KSK/2048
282               MAX  6 KSK +  5 ZSK  at 3936
283                    5 KSK + 10 ZSK  at 3942
284
285               ZSK/1024 + KSK/1024
286               MAX 12 KSK +  2 ZSK  at 3943
287                   11 KSK +  4 ZSK  at 3930
288                   10 KSK +  6 ZSK  at 3917
289                    8 KSK + 10 ZSK  at 3891
290
291               ZSK/1024 + KSK/1536
292               MAX  8 KSK +  3 ZSK  at 3900
293                    7 KSK +  6 ZSK  at 3904
294                    6 KSK +  9 ZSK  at 3908
295
296               ZSK/1024 + KSK/2048
297               MAX  6 KSK +  4 ZSK  at 3951
298                    5 KSK +  8 ZSK  at 3972
299                    4 KSK + 12 ZSK  at 3993
300
301    Note that these are just examples and this document is not making
302    any recommendations on suitable choices of either key lengths nor
303    number of different keys employed at a security apex.
304
305    This document does however, based upon the above figures, make the
306    recommendation that at a security apex that expects to distribute
307    "trusted keys" the KEY RRset should only be signed with the KSKs
308    and not with the ZSKs to keep the size of the response packets
309    down.
310
311
312 5. Proposed Use of Multiple "Trusted Keys" in a Validating Resolver
313
314    In DNSSEC according to RFC2535[RFC2535] validation is the process
315    of tracing a chain of signatures (and keys) upwards through the DNS
316    hierarchy until a "trusted key" is reached. If there is a known
317    trusted key present at a security apex above the starting point
318    validation becomes an exercise with a binary outcome: either the
319    validation succeeds or it fails. No intermediate states are
320    possible.
321
322    With multiple "trusted keys" (i.e. the KEY RRset for the security
323    apex signed by multiple KSKs) this changes into a more complicated
324    space of alternatives. From the perspective of complexity that may
325    be regarded as a change for the worse. However, from a perspective
326    of maximizing available trust the multiple KSKs add value to the
327    system.
328
329 5.1. Possible to do Threshold Validation
330
331    With multiple KSKs a new option that opens for the security
332    concious resolver is to not trust a key individually. Instead the
333    resolver may decide to require the validated signatures to exceed a
334    threshold. For instance, given M trusted keys it is possible for
335    the resolver to require N-of-M signatures to treat the data as
336    validated.
337
338    I.e. with the following pseudo-configuration in a validating
339    resolver
340
341         security-apex "." IN {
342            keys { ksk-1 .... ;
343                   ksk-2 .... ;
344                   ksk-3 .... ; 
345                   ksk-4 .... ;
346                   ksk-5 .... ;
347                 };
348            validation {
349               # Note that ksk-4 is not present below
350               keys { ksk-1; ksk-2; ksk-3; ksk-5; }; 
351               # 3 signatures needed with 4 possible keys, aka 75%
352               needed-signatures 3;
353            };
354         };
355
356    we configure five trusted keys for the root zone, but require two
357    valid signatures for the top-most KEY for validation to
358    succeed. I.e.  threshold validation does not force multiple
359    signatures on the entire signature chain, only on the top-most
360    signature, closest to the security apex for which the resolver has
361    trusted keys.                    
362
363 5.2. Not All Trusted Keys Will Be Available
364
365    With multiple KSKs held and managed by separate entities the end
366    resolvers will not always manage to get access to all possible
367    trusted keys. In the case of just a single KSK this would be fatal
368    to validation and necessary to avoid at whatever cost. But with
369    several fully trusted keys available the resolver can decide to
370    trust several of them individually. An example based upon more
371    pseudo-configuration:
372
373         security-apex "." IN {
374            keys { ksk-1 .... ;
375                   ksk-2 .... ;
376                   ksk-3 .... ; 
377                   ksk-4 .... ;
378                   ksk-5 .... ;
379                 };
380            validation {
381               # Only these two keys are trusted independently
382               keys { ksk-1; ksk-4; }; 
383               # With these keys a single signature is sufficient
384               needed-signatures 1;
385            };
386         };
387
388    Here we have the same five keys and instruct the validating
389    resolver to fully trust data that ends up with just one signature
390    from by a fully trusted key.
391
392    The typical case where this will be useful is for the case where
393    there is a risk of the resolver not catching a rollover event by
394    one of the KSKs. By doing rollovers of different KSKs with
395    different schedules it is possible for a resolver to "survive"
396    missing a rollover without validation breaking. This improves
397    overall robustness from a management point of view.
398
399 5.3. Not All Possible KSKs Need to Be Trusted
400
401    With just one key available it simply has to be trusted, since that
402    is the only option available. With multiple KSKs the validating
403    resolver immediately get the option of implementing a local policy
404    of only trusting some of the possible keys.
405
406    This local policy can be implemented either by simply not
407    configuring keys that are not trusted or, possibly, configure them
408    but specify to the resolver that certain keys are not to be
409    ultimately trusted alone.
410
411
412 6. Additional Benefits from Having Multiple KSKs
413
414 6.1. More Robust Key Rollovers
415
416    With only one KSK the rollover operation will be a delicate
417    operation since the new trusted key needs to reach every validating
418    resolver before the old key is retired. For this reason it is
419    expected that long periods of overlap will be needed.
420
421    With multiple KSKs this changes into a system where different
422    "series" of KSKs can have different rollover schedules, thereby
423    changing from one "big" rollover to several "smaller" rollovers.
424
425    If the resolver trusts several of the available keys individually
426    then even a failure to track a certain rollover operation within
427    the overlap period will not be fatal to validation since the other
428    available trusted keys will be sufficient.
429
430 6.2. Evaluation of Multiple Key Distribution Mechanisms
431
432    Distribution of the trusted keys for the DNS root zone is
433    recognized to be a difficult problem that ...
434
435    With only one trusted key, from one single "source" to distribute
436    it will be difficult to evaluate what distribution mechanism works
437    best. With multiple KSKs, held by separate entitites it will be
438    possible to measure how large fraction of the resolver population
439    that is trusting what subsets of KSKs.
440
441
442 7. Security Considerations
443
444    From a systems perspective the simplest design is arguably the
445    best, i.e. one single holder of both KSK and ZSKs. However, if that
446    is not possible in all cases a more complex scheme is needed where
447    additional trust is injected by using multiple KSK holders, each
448    contributing trust, then there are only two alternatives
449    available. The first is so called "split keys", where a single key
450    is split up among KSK holders, each contributing trust. The second
451    is the multiple KSK design outlined in this proposal.
452
453    Both these alternatives provide for threshold mechanisms. However
454    split keys makes the threshold integral to the key generating
455    mechanism (i.e. it will be a property of the keys how many
456    signatures are needed). In the case of multiple KSKs the threshold
457    validation is not a property of the keys but rather local policy in
458    the validating resolver. A benefit from this is that it is possible
459    for different resolvers to use different trust policies. Some may
460    configure threshold validation requiring multiple signatures and
461    specific keys (optimizing for security) while others may choose to
462    accept a single signature from a larger set of keys (optimizing for
463    redundancy). Since the security requirements are different it would
464    seem to be a good idea to make this choice local policy rather than
465    global policy.
466
467    Furthermore, a clear issue for validating resolvers will be how to
468    ensure that they track all rollover events for keys they
469    trust. Even with operlap during the rollover (which is clearly
470    needed) there is still a need to be exceedingly careful not to miss
471    any rollovers (or fail to acquire a new key) since without this
472    single key validation will fail. With multiple KSKs this operation
473    becomes more robust, since different KSKs may roll at different
474    times according to different rollover schedules and losing one key,
475    for whatever reason, will not be crucial unless the resolver
476    intentionally chooses to be completely dependent on that exact key.
477
478 8. IANA Considerations.
479
480    NONE.
481
482
483 9. References
484
485 9.1. Normative.
486
487    [RFC2535] Domain Name System Security Extensions. D. Eastlake. 
488              March 1999.
489
490    [RFC3090] DNS Security Extension Clarification on Zone Status. 
491              E. Lewis.  March 2001.
492
493
494 9.2. Informative.
495
496    [RFC3110] RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System
497              (DNS). D.  Eastlake 3rd. May 2001.
498
499    [RFC3225] Indicating Resolver Support of DNSSEC. D. Conrad. 
500              December 2001.
501
502    [DS]      Delegation Signer Resource Record. 
503              O. Gudmundsson. October 2002. Work In Progress.
504
505 10. Acknowledgments.
506
507    Bill Manning came up with the original idea of moving complexity
508    from the signing side down to the resolver in the form of threshold
509    validation. I've also had much appreciated help from (in no
510    particular order) Jakob Schlyter, Paul Vixie, Olafur Gudmundson and
511    Olaf Kolkman.
512
513
514 11. Authors' Address
515 Johan Ihren
516 Autonomica AB
517 Bellmansgatan 30
518 SE-118 47 Stockholm, Sweden
519 johani@autonomica.se