c# .net pdf viewer : Add page numbers to a pdf in preview SDK software service wpf winforms .net dnn Ron%20Aitchison%20-%20Pro%20DNS%20and%20BIND%2010%20-%20201136-part1359

CHAPTER 11  DNSSEC 
360 
Figure 11–7. Resolver validation 
When validation occurs at the area resolver level (typically located at an ISP or within a large 
network), the client is entirely oblivious to the security status of the responses. The area resolver will 
either respond to the request, which may imply that the zone was not signed or that it was signed and 
successfully validated, or it may return a failure, in which case either there was some form of network 
error or there was a failure to validate a signed zone. The client has no way to differentiate between the 
various states within the limited responses that it receives. This has positive benefits: the client does not 
require any changes and is protected more than it was previously by the security umbrella of the area 
resolver. The downside is that the client can’t take special action based on the security status of the 
response and may actually supply the end user with entirely misleading information. More seriously, 
messages from the area resolver to the client could be compromised.  
The DNSSEC standards, however, allow for the client to be security aware and thus effectively 
participate in the validation process. Clients can do this by issuing security-aware requests with a special 
bit set (the CD bit; see Chapter 15). This instructs the area resolver to not perform any validation of 
responses for this client's queries but instead to return in the response both the answer (assuming it 
received one) and copies of all the RRSIG RRs (or NSEC/NSEC3 RRs if the name does not exist) necessary 
to validate the response. The client will have to separately obtain and maintain any trusted anchors and 
DNSKEY RRs necessary to complete the normal validation. Such validating stub-resolvers (security-
aware stub-resolvers) are the only means to ensure end-to-end security. Unfortunately, they are 
currently as rare as hens' teeth. It is anticipated over time that this situation will change as security 
The common problem for all validating resolvers and validating stub-resolvers is to obtain and 
maintain trusted anchors. The current solution to this problem is described next. 
Key Handling Automation 
Figure 11–2 illustrates a trivial set of domains within the total DNS hierarchy. When this process is scaled 
to cover the entirety of the domain name tree, it begins to resemble a gigantic Swiss cheese with holes 
(security voids) scattered all over the place. The net effect is that any validating resolver could have to 
maintain many hundreds, if not thousands, of trust anchors to allow it to bypass the security voids. 
Additionally, the trust anchors will be rolled-over (changed) from time to time. Further, there will be 
perhaps millions of validating resolvers that need to reliably update the trust anchor keys. Even in the 
most optimistic scenario of validating resolvers (and validating stub-resolvers) only requiring and 
Service Provider
Authoritative
Hierarchy
DNS
root-servers
Area Resolver
Validation
OR
PC
Stub-Resolver
Validation
resolver
browser
DSL Modem/Router
DSL Proxy
DNS
TLD servers
DNS
Domain Owner
Add page numbers to a pdf in preview - insert pages into PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide C# Users to Insert (Empty) PDF Page or Pages from a Supported File Format
add and remove pages from a pdf; add page number to pdf in preview
Add page numbers to a pdf in preview - VB.NET PDF Page Insert Library: insert pages into PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use VB.NET APIs to Add a New Blank Page to PDF Document
add pages to an existing pdf; add page to pdf
CHAPTER 11 ■ DNSSEC 
361
updating a single root-key trusted anchor, the consequences of an error are that signed zones will not
validate—they will return a bogus status and, in the jargon, become dark zones. For those of a squeamish
disposition, this is not a pleasant prospect without some degree of automation, happily provided by RFC
5011 (“Automated Updates of DNS Security (DNSSEC) Trust Anchors”). 
The objective behind RFC 5011 is to ensure that once reliably established, trust anchors can be
automatically updated under well defined conditions. While this is significant, arguably RFC 5011's
greatest benefit is to bring rigor to the terminology used when handling DNSSEC keys and their
maintenance (roll-over) procedures.  
RFC 5011 assumes the initial trusted-anchor at any validating resolver was established using a
process that lies outside the definition of both RFC 5011 and DNSSEC. Thus, a manual or, increasingly, a
distribution-based approach (similar to the DNS distribution of root-zone hints file and a browser's 
X.509 root certificates) is used to create the initial trust anchor. RFC 5011 describes when such trust
anchors can, or cannot, be reliably updated by automated procedures. 
RFC 5011 starts with a premise and a problem. When a key has been established as a trusted anchor,
any new DNSKEY in a DNSKEY RRset signed by the established trusted anchor can, at first glance, be
trusted. However, if the original key has been compromised, this allows an attacker to immediately gain
control of the zone data by introducing new keys that only it controls. Not too healthy. To fix this
problem a series of controls are introduced: 
1. When a new KSK DNSKEY (officially a DNSKEY RR with the SEP bit set, but
colloquially called the KSK bit) is seen for the first time by a validating resolver
in a DNSKEY RRset from a zone, the RRset is saved (including a record of the
key/keys used to sign the DNSKEY RRset) and an acceptance timer is started.
This acceptance timer is defined to be the greater of 30 days or the TTL value of
the current trusted-anchor DNSKEY RR(s) for the zone. The new key will not be
used to validate any zone RRs until the acceptance timer has successfully
expired. The newly introduced key does not have to have signed any zone RRs
and is thus defined to be a stand-by key. The private key (in the .private file) of
a stand-by key, because it does not actively sign zone records, can be
maintained more securely at the authoritative zone than active, or current, keys
and thus should be less likely to be compromised. In the case of BIND a stand-
by key has a PUBLISH date (equal to or greater than the current date) but either
does not have an ACTIVE date or the ACTIVE date is some time in the future (see
the “dnssec-keygen Timing Metadata” section in Chapter 9). 
2. If, before the expiry of the acceptance timer, the validating resolver sees a
DNSKEY RRset without the new KSK DNSKEY RR but signed by the saved
signing key or keys, the current acceptance sequence is terminated and any
saved DNSKEY RRset discarded. In this case, the signing key is assumed to have
been compromised. 
3. If the validating resolver continues to see the new KSK DNSKEY RR in the
DNSKEY RRset until the acceptance timer expires, then immediately after
expiry it may start to use the new DNSKEY RR as a validating key—it’s added to
the trusted-anchor set. A validating resolver is defined to be able to handle a
minimum of five keys as trusted-anchors for any zone. 
4. When a validating resolver has an established trusted-anchor, it must refresh
(re-query from the authoritative server) the zone's DNSKEY RRset the lesser of
15 days, half the TTL of the DNSKEY RRset, or half the difference between the
start and expiration date of the RRSIG RRs for the DNSKEY RRset (see the
“RRSIG Record” section in Chapter 12), but no more frequently than once per
hour.  
C# Create PDF Library SDK to convert PDF from other file formats
them the ability to count the page numbers of generated PDF document in C#.NET using this PDF document creating toolkit, if you need to add some text
add a page to a pdf online; add page numbers pdf files
C# Word - Word Create or Build in C#.NET
also offer them the ability to count the page numbers of generated using this Word document adding control, you can add some additional Create Word From PDF.
adding a page to a pdf document; add page to pdf in preview
CHAPTER 11  DNSSEC 
362 
5.  RFC 5011 allows for DNSKEY RRs to be revoked. The revoked status is indicated 
by the use of bit 8 of the DNSKEY flags field (see the “DNSKEY Record” section 
in Chapter 12). Thus a KSK with the REVOKED bit set will have a decimal flags 
value of 385. If a validating resolver sees a DNSKEY RR in a DNSKEY RRset and, 
importantly, signed by the DNSKEY RR with the REVOKE bit set (it may be also 
signed by other DNSKEY RRs) it will immediately stop using the key for 
validation of RRSIGs and remove it from its trusted-anchor list. Revoke may be 
trusted-anchor list or as compromise recovery method.  
 Note Keys are revoked by using the BIND utility 
dnssec-revoke
(see Chapter 9). 
To use RFC 5011 procedures with BIND, see the “DNSSEC Implementation - Key Life-Cycle 
Examples” section for worked BIND examples. The following is a textual description of the normal 
method of handling keys: 
1. Assume key A has been established as a trusted-anchor (in a trusted-keys 
clause) in a validating resolver by some secure process. 
2. 
a stand-by key and its private key (in the .private file) should be kept securely 
offline to minimize the chances of it being compromised. 
3. After 30 days, key B will become a trusted-anchor at any RFC 5011-compliant 
validating resolver and the zone owner may leave it in this stand-by state for as 
acceptance as a trusted-anchor, key B may become active and be used to sign 
zone records, if a ZSK, or sign DNSKEY RRsets if a KSK. 
4. 
removed at any appropriate time thereafter (after the DNSKEY RRset TTL 
period) and the zone signed with key B only. 
Compromised Key Recovery 
Recovery from key compromise when using RFC 5011 is possible according to the following rules: 
• 
trusted-anchor). Now, assume key B is known to have been compromised. Key B is 
DNSKEY RRset (with improved safeguards for the private key!). After the 
become an active key. 
C# PowerPoint - PowerPoint Creating in C#.NET
file but also offer them the ability to count the page numbers of generated NET using this PowerPoint document creating toolkit, if you need to add some text
add page numbers to pdf files; add a page to a pdf file
C# Word - Word Creating in C#.NET
document file but also offer them the ability to count the page numbers of generated using this Word document creating toolkit, if you need to add some text
adding page numbers to pdf in reader; add page numbers to pdf preview
CHAPTER 11 ■ DNSSEC 
363
• 
been compromised. Key A is immediately revoked, a new stand-by key C is 
• 
trusted-anchor). Assume key A is known to have been compromised. In this case, 
Removing a Trusted-Anchor 
Finally, to illustrate the complete usage of RFC 5011 procedures, assume that you have established a 
trusted-anchor in a validating resolver for example.com at some point, say, prior to the signing of the .com 
zone. Now assume that the .com zone has been signed and you wish to add your DS RR to it (join the 
chain of trust) and remove the trusted-anchor for example.com in all RFC 5011 compliant validating 
resolvers: 
1. Assume key A is an active key for the zone and is a trusted-anchor in a 
validating resolver. 
2. 
keys A and B (see the “dnssec-dsfromkey Utility” section in Chapter 9) and add 
all DS RRs to the parent. 
3. 
its fingerprint, which means the DS RR for A will no longer be valid and it can be 
removed from the parent when convenient. 
4. After a suitable period, the revoked key A may be removed and the zone signed 
with key B. 
Key Handling Summary 
The crucial issue in all cases is maintenance of the private key to ensure it is not compromised. While 
this can be done using normal computer security methods with hidden masters or signing-only 
configurations, it is increasingly done, especially on high value or vulnerable zones, using hardware 
security modules (HSMs). The “DNSSEC Implementation - Key Maintenance” section discusses this 
point further. 
DNSSEC Lookaside Validation 
The DNSSEC Lookaside Validation (DLV) service is an alternative method by which a chain of trust may 
be created and verified without the need to sign the parent zone file. The service makes use of a DLV RR, 
which is currently defined by RFC 4431 (INFORMATIONAL status) and which is fully supported by the 
current (9.4+) versions of BIND 9. The DLV RR is functionally identical to the DS RR and may be 
generated by the dnssec-signzone utility by use of the -l domain option (see Chapter 9). A DLV RR is 
placed in a special signed zone called a lookaside zone instead of the DS RR that would normally be 
C# Excel - Excel Creating in C#.NET
document file but also offer them the ability to count the page numbers of generated using this Excel document creating toolkit, if you need to add some text
add page numbers to a pdf file; add a page to pdf file
CHAPTER 11  DNSSEC 
364 
added to the parent zone, thus removing the need to sign the parent zone. The DLV service works by 
Assume that the lookaside domain is called dlv.example.net and the name server is trying to verify 
the chain of trust for the signed zone example.com. In a normal sequence, when a validating resolver tries 
to verify the chain of trust for example.com, it will first check for a trusted anchor in its trusted-keys 
.com zone. If neither is 
found, the zone will be marked as insecure. DLV adds an additional step by allowing the name server to 
query a lookaside zone, for which it must have a trusted anchor, for the DLV RR of the zone being 
verified. When the validating resolver detects that the lookaside feature is enabled (by a dnssec-
lookaside statement in named.conf), it will issue a DLV query with the domain name 
example.com.dlv.example.net. If found, and assuming the trusted anchor for dlv.example.net is present 
in a trusted-keys clause, the example.com zone is verified to be secure. Figure 11–8 illustrates the DLV 
process. 
Figure 11–8. DLV verification procedure 
The initial query will try to find a DS RR for example.com at the parent .com zone, and only if that fails 
will the DLV query be issued to the lookaside zone. While the lookaside zone dlv.example.net must be 
signed, the trusted anchor at NS1 means that its parent, example.net, does not have to be signed, as is 
shown in Figure 11–8. 
DLV was originally designed as a method to reduce the number of trusted-anchors required by 
validating resolvers before the root-zone was signed. The root-zone was signed in July 2010 and thus 
removes the immediate need for DLV technology. However, DLV is included in this book for the 
following reasons: 
Root-servers
Verifying Chain of
Trust for example.com
First DS Query to Parent
Then DLV Query to Lookaside
.tld-Servers
User Servers
. (root)
. com
. net
div.example.net
example.net
example.com
Recursive Name Servers
NS1
(Security Aware)
NS2
(Security Oblivious)
Trusted Anchor
div.example.net
CHAPTER 11 ■ DNSSEC 
365
DNSSEC Last-step Testing: Assume a user with a number of domain names or a 
DNS hosting service wishes to implement DNSSEC service across all domains. 
DNSSEC has associated risks, so a thorough program of testing would naturally 
be prepared, in which zones would be signed and validating resolvers 
configured in some captive or test environment while operational processes 
were being developed. However, this still leaves a relatively big jump from a test 
environment to a live environment. DLV can offer an almost live environment. 
All operational zones can be signed—this incurs no risk until DS RRs are sent to 
the parent. However, to fully test DNSSEC, each validating resolver must be 
configured with a trusted-anchor for each zone under test, which can be very 
messy and does not reflect the final configuration since only a single root-zone 
key would be required. Alternatively, a DLV service can be configured in which 
case only a single trusted-keys (or managed-keys) clause for the local DLV 
service is required in each validating resolver being used to test the processes. 
The domain names that will be validated using DLV can be precisely configured 
(using dnssec-lookaside statements) to only validate the zones under test via 
DLV; all others can use the normal root-zone process. This is as close to live 
operation as it is possible to get and may provide a worthwhile, if not essential, 
reduction in risk for many users. 
Private Networks: Private networks, especially larger ones, are not immune 
from internal attacks. DLV provides a method to secure such networks, using a 
single trusted-anchor in validating resolvers.  
Alternative Validation: For multiple reasons, a user, affinity group, or enterprise 
network may want DNSSEC benefits without wishing to make public any secure 
information. This could be for political, cultural, or privacy reasons. DLV offers 
a relatively simple method of doing this. 
 Note BIND 9.7.2-P2 is distributed with a 
managed-keys
clause (a variant of the 
trusted-keys
clause; see the 
“BIND managed-keys Clause” section in Chapter 12) for the DLV service at dlv.isc.org. 
To create DLV, RRs from the KSK Kexample.com.+008+34957.key file created in previously in  
dnssec-dsfromkey -l dlv.example.net Kexample.com.+008+34957 > dlvkey 
which creates the following two DLV RRs 
example.com.dlv.example.net. IN DLV 34957 8 2 ( 
E64FAFC9A5CFA883C045FA171608389F8FF 
CC4B1652E0DB2F743C000 17A57713) 
DLV Service 
There is nothing magical about a DLV service. A DLV service uses a standard name server with a 
standard signed zone file and could be created for use by any affinity group as an alternative to multiple 
trusted anchors for each member of the group. To illustrate creation of a DLV service, assume an affinity 
group comprised of the domains example.org, example.com, and example.net decide to set up a DLV 
CHAPTER 11  DNSSEC 
366 
service that will hosted by dlv.example.net. Each member domain will create a DLV RR by the zone 
signing process described using a -l dlv.example.net argument. Alternatively, the DLV RRs can be 
created from a KSK DNSKEY RR using the dnssec-dsfromkey utility (see the “dnssec-dsfromkey Utility” 
section in Chapter 9).  
To create DLV RRs from the KSK Kexample.com.+008+34957.key file created in the “Securing the 
example.com Zone” section earlier in the chapter, do this: 
dnssec-dsfromkey -l dlv.example.net Kexample.com.+008+34957 > dlvrrs 
which creates the following two DLV RRs in the file dlvrrs via the normal shell redirection service (>): 
example.com.dlv.example.net. IN DLV 34957 8 1 ( 
592954781DFD76BC8255F03D28FDB0D483537682) 
example.com.dlv.example.net. IN DLV 34957 8 2 ( 
E64FAFC9A5CFA883C045FA171608389F8FF 
CC4B1652E0DB2F743C000 17A57713) 
presentational purposes. 
The DLV RRs are sent to the domain administrator for dlv.example.net by a process that will 
authenticate the sender, such as secure e-mail. A zone file comprising the supplied DLV RRs will be 
created as shown here: 
; zone fragment for dlv.example.net 
$TTL 1d ; zone default 
$ORIGIN dlv.example.com. 
@        IN SOA ns1.dlv.example.com. hostmaster.dlv.example.com. ( 
2010121500 ; serial 
10800      ; refresh (3 hours) 
15         ; retry (15 seconds) 
604800     ; expire (1 week) 
10800      ; nx (3 hours) 
NS ns1.dlv.example.com. 
NS ns2.dlv.example.com. 
ns1         A  192.168.254.2 
ns2         A  192.168.254.3 
; DLV RRs for affinity group 
example.com.dlv.example.net. IN DLV 34957 8 1 ( 
592954781DFD76BC8255F03D28FDB0D483537682 ) 
example.com.dlv.example.net. IN DLV 34957 8 2 ( 
E64FAFC9A5CFA883C045FA171608389F8FF 
CC4B1652E0DB2F743C000 17A57713) 
example.org.dlv.example.net. IN DLV 42134 5 1 (blah, blah, blah) 
example.net.dlv.example.net. IN DLV 02557 5 1 (more blah, blah, blah) 
.... 
A ZSK and KSK for the dlv.example.net zone will be created using the dnssec-keygen utility and 
added to the zone file as described earlier, and the zone will be signed with the dnssec-signzone utility 
using both KSK and ZSK as normal. The public key of the KSK for dlv.example.net is distributed to be 
used as a trusted anchor by all validating resolvers of the affinity group; thus a single trusted anchor is 
used to replace the alternative of three trusted anchors, which would otherwise be required. 
The zone dlv.example.net would be delegated from example.net and an authoritative-only name 
server (see Chapter 7) created to support the service. Finally, each validating resolver would add the 
trusted anchor for dlv.example.net in a trusted-keys clause in their named.conf file, and to invoke the 
CHAPTER 11 ■ DNSSEC 
367
service each member would further add the following three lines to the options clause in the same 
named.conf file: 
dnssec-lookaside "example.com" trusted-anchor "dlv.example.net"; 
dnssec-lookaside "example.net" trusted-anchor "dlv.example.net"; 
dnssec-lookaside "example.net" trusted-anchor "dlv.example.net"; 
The specification of dnssec-lookaside says that any domain at or below the defined domain name 
will use the lookaside zone defined in the trusted-anchor option, which means that only domain names 
ending with example.com, example.org, or example.net will incur a DLV lookup. However, the 
specification also says that the deepest domain name (which actually means the one with the most 
labels) defined in a dnssec-lookaside will be used for the lookaside query. So if a name server that 
included the previous three lines also wished to use, say, the ISC DLVservice, it would add the following 
statement to invoke that DLV service: 
dnsssec-lookaside "." trusted-anchor "dlv.isc.org"; 
The effect of this statement would be that any secure domain that does not end with example.com, 
example.org, or example.net would incur a DLV lookup to the dlv.isc.org lookaside domain (for which 
there must also be a trusted-anchor in a trusted-keys clause), whereas only our three target domains, 
example.com, example.net, and example.org, would query the dlv.example.net lookaside domain. It is 
therefore possible to support a number of concurrent DLV services, each of which may target specific 
markets or affinity groups prior to the widespread availability of signed TLDs. 
DNSSEC Implementation 
This section focuses on DNSSEC implementations issues and provides additional usage examples, 
specifically on the latest BIND DNSSEC technologies designed make life simpler, as well as some purely 
tutorial material. There are a bewildering number of BIND options to choose from and innumerable 
more from both commercial and open source suppliers. Few hard and fast rules are provided; rather, the 
approach taken is to enumerate the pros and cons of various options from which the reader can select 
the most appropriate choices suited to their operational environment. While studiously trying to avoid 
it, the choice of language used can reflect the author's inevitable prejudices. The reader is encouraged to 
treat all adjectives and adverbs with extreme suspicion and to maintain their natural cynicism at all 
times. 
Why implement DNSSEC? 
• It can provide your customers with added confidence, especially if you operate a 
commercial site. In the short term, this could be leveraged as a commercial 
advantage. In the medium term, it will be essential simply to keep up with the 
competition. Lead or follow. 
• Many influential commentators and those close to governmental policy makers 
are indicating they think DNSSEC should be targeted at 100% coverage within a 
reasonable period of time to ensure ongoing Internet security. 
• Necessity. It is possible, perhaps even likely, that to do business in certain sectors, 
notably with governments, that DNSSEC may become a mandatory requirement. 
• Even with the current generation of tools, it really is not difficult. If you know how 
to run a cron job, you can implement it today (see “DNSSEC Implementation - a 
Plan”). 
When should you implement DNSSEC? 
CHAPTER 11  DNSSEC 
368 
• Start the implementation plan, at least the testing phase, as soon as your TLD 
(gTLD or ccTLD) is signed and as soon as your registrar allows addition of DS RRs 
to your registration information. About 60 TLDs were signed by the end of 2010 
(out of about 230 total). Or you could wait for the next appearance of Halley's 
Comet.  
• 
implementation; see “Implementing DNSSEC - A Plan.”  
DNSSEC Algorithms and Keys 
Key Management 
The asymmetric cryptographic algorithms used in DNSSEC (RSA, and to a lesser extent DSA) have public 
and private keys. The integrity, and ultimately therefore the usefulness, of any DNSSEC implementation 
is about how the private key is controlled and managed.  
In most organization, this normally means administrative procedures such as using OS file 
permissions to limit access; see Chapter 10 for a full discussion. But a lot more can be done, such as: 
• Wh
from any server.  
• Use a hidden master configuration to avoid exposing any server with private keys 
to public access. 
• Establish a signing-only server. If offline signing is being performed, only key 
no need to run a named daemon. Secure FTP can be used to transfer the resulting 
files to operational systems or a hidden master. Authoritative name servers that 
are not using DDNS have no requirement for private keys. 
The increasing use of cryptography is reducing the prices of HSMs. While they come in a variety of 
shapes and sizes, they should all be compliant with either the joint US/Canadian standard FIPS 140-2 
Level 3 or Level 4 or its ISO equivalent ISO/IEC 19790:2006 Level 3 or Level 4. The HSM essentially 
maintains the private key in a separate hardware module that is either tamper-proof or tamper-evident 
(the HSM knows when its security has been breached). Keys are generated within the unit by command, 
the public key can be read and formatted for external use, but operations using the private key are only 
performed within the HSM. Data being encrypted or decrypted is passed to the HSM and the output is 
returned. 
HSMs come in three broad flavors: those that provide only key management functionality, those 
that provide key management and crytographic hardware acceleration, and those that provide 
crytographic hardware acceleration only. The latter are particularly useful for validating resolvers, which 
are required to do all the serious crypto heavy-lifting in DNSSEC.  
HSMs typically use a library/driver interface known as pkcs11 or cryptoki (defined by RSA 
Laboratories and available at www.rsa.com/rsalabs/node.asp?id=2133). By default, BIND is built to use 
the OpenSSL cryptographic libraries. While outside the scope of this book, BIND can be configured and 
built from source (see the “Building BIND from Source” section in Chapter 6) to support the pkcs11 
interface. Interested readers are pointed to the rudimentary descriptions in the BIND ARM Section 4.11 
as a starting point.  
CHAPTER 11 ■ DNSSEC 
369
Key Sizes and Algorithms 
All cryptographic processes are based on the concept of computational infeasibility, a relative concept 
not an absolute one. The general rule is that the bigger the key size and the stronger the algorithm, the 
better; however, these should be commensurate with the risks involved. It must be remembered that in 
DNSSEC, the zone owner gets to choose algorithms and key size but it is the poor old validating resolver, 
on which the zone owner also depends, that has to do all the hard work. The effect of choosing an 
excessively large key size is relatively trivial for the zone owner—signing the zone file from time to time. 
But the effect on the validating resolver is increased load, which will impact its performance and 
throughput and thus affect customer access to the domain. Enlightened self-interest is crucial. 
The best formal advice on the topic of key size is contained in NIST (US National Institute of 
Standards and Technology) Special Publication 800-57 Part 1 Rev2, in particular Table 4 (available from 
csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf). In summary, it 
Lower key sizes will incur an increased level of risk; higher values will place excessive demand on 
validating resolvers while incurring no additional benefit. 
 Note The referenced NIST publication is well worth the reader's time investment since it provides a good 
background into cryptographic characteristics and usage. 
The algorithms used in DNSSEC's digital signatures (the RRSIG RRs) consist of an asymmetric 
(public/private) algorithm and a hash algorithm. The only mandatory hash algorithm was SHA1 at the 
time this book was published; SHA256 and SHA512 were optional. The hash algorithm recommended by 
NIST in the period from 2011 until 2030 is SHA256 (SP 800-57 Part 1 Rev2, Table 4 Note b) and therefore 
a decision was taken that the root would be signed using SHA256, an optional standard. It is likely, at 
some future date, that Elliptic Curve (ECC) asymmetric algorithms will be supported by DNSSEC. The 
point here is that cryptographic algorithms (asymmetric or hashes) may change over time. It is both 
expected and natural. Users may want to take advantage of such changes.  
However, this can be a problem. There is no way to know the algorithmic support in any, never 
mind every, validating resolver. It is thus possible for the user to select and use an algorithm not 
implemented by a fully DNSSEC-compliant validating resolver. In these circumstances, the effect will be 
the zone will be marked as insecure—there is no DNSSEC support. In the case of the root zone, this was 
simple: if you want to use the root, you need SHA256 support. Few zones have this power! While 
validating resolvers at larger service providers are usually upgraded regularly and maintained to a high 
level, this not the case for all validating resolvers. If the user decides to use a new algorithm that is 
optional within the DNSSEC standards, there is a risk that it may not be supported by all required 
resolvers. The only solution is to treat such algorithm changes similarly to a key rollover and use two 
keys, one with the older algorithm and one with the new algorithm for whatever period of time the user 
thinks is appropriate and then the older one can be retired.  
At this time, the safest set to use is RSASHA256, simply because that is the algorithm used by the 
root, and with a key size of 2048 bits, because that is what NIST recommends. However, if you are using 
NSEC3, your only hash choice today is SHA1 (the only hash supported by NSEC3), again with a 2048 bit 
key size. 
Documents you may be interested
Documents you may be interested