<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Eric Vergne, Author at OVHcloud Blog</title>
	<atom:link href="https://blog.ovhcloud.com/author/eric-vergne/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ovhcloud.com/author/eric-vergne/</link>
	<description>Innovation for Freedom</description>
	<lastBuildDate>Fri, 16 Oct 2020 14:14:41 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.ovhcloud.com/wp-content/uploads/2019/07/cropped-cropped-nouveau-logo-ovh-rebranding-32x32.gif</url>
	<title>Eric Vergne, Author at OVHcloud Blog</title>
	<link>https://blog.ovhcloud.com/author/eric-vergne/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>An introduction to DNSSEC</title>
		<link>https://blog.ovhcloud.com/an-introduction-to-dnssec/</link>
		
		<dc:creator><![CDATA[Eric Vergne]]></dc:creator>
		<pubDate>Fri, 16 Oct 2020 14:14:40 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=19318</guid>

					<description><![CDATA[DNS (Domain Name System) is the &#8220;phone book&#8221; of the internet &#8211; meaning that it translates a human-readable domain name (like ovhcloud.com) into a computer-readable IP (54.39.46.56). The DNS was designed when the internet first started. At that time, the Internet was not as big, or critical as it is today.DNS, therefore, was designed on [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fan-introduction-to-dnssec%2F&amp;action_name=An%20introduction%20to%20DNSSEC&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/10/IMG_0323-1024x537.png" alt="DNSSEC" class="wp-image-19435" width="768" height="403" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0323-1024x537.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0323-300x157.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0323-768x403.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0323.png 1200w" sizes="(max-width: 768px) 100vw, 768px" /></figure></div>



<p>DNS (Domain Name System) is the &#8220;phone book&#8221; of the internet &#8211; meaning that it translates a human-readable domain name (like ovhcloud.com) into a computer-readable IP (54.39.46.56).</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="624" src="https://www.ovh.com/blog/wp-content/uploads/2020/10/IMG_0311-1024x624.png" alt="DNS request" class="wp-image-19419" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0311-1024x624.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0311-300x183.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0311-768x468.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0311.png 1532w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>The DNS was designed when the internet first started. At that time, the Internet was not as big, or critical as it is today.<br>DNS, therefore, was designed on a principle of trust. As a result, DNS is not really secure and has vulnerabilities; such as DNS cache poisoning.</p>



<p>This kind of attack allows the attacker to enter invalid information into a DNS resolver cache, so that following DNS queries<br>return invalid data. This enables the attacker to redirect you to a fake website.</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/10/dns-poisoning-1.gif" alt="" class="wp-image-19423" width="768" height="400"/></figure>



<p>To secure the DNS zone, the DNSSEC (Domain Name System Security Extensions) has been designed &#8211; based on public key encryption &#8211; to verify and validate the integrity and the origin of DNS data.</p>



<h3 class="wp-block-heading">How DNSSEC works</h3>



<p>The goal of DNSSEC is to allow resolvers to check the origin and integrity of a DNS answer. DNSSEC has been<br>designed with the following constraints:</p>



<ul class="wp-block-list"><li>It has to be an extension of DNS so a non-DNSSEC client can work with a DNSSEC server and vice-versa. </li><li>The data is protected, but the communication channels are not. </li><li>It must be based on public key encryption</li></ul>



<p>Since DNSSEC, by design, should not change the DNS protocol, new types of DNS records, Resource Records, have been added to handle cryptography.</p>



<h4 class="wp-block-heading">RRSIG</h4>



<p>RRSIG contains the cryptographic signature of a record set. With DNSSEC, each record set is followed by a RRSIG containing,<br>among others, the signature in base64 of the record set.</p>



<p><br>For example:</p>



<pre class="wp-block-code"><code class="">$ dig A +dnssec dnstests.ovh
dnstests.ovh.        3600    IN  A   213.186.33.5
dnstests.ovh.        3600    IN  RRSIG   A 8 2 3600 20200925080215 20200826080215 50238 dnstests.ovh. AUz7u4Sq0EkSUq5kR0beowmMuscbzGdb3NI/OhCG8Ow0Z3CqgG0/94eR     6pbG7YJwvCFBU1bQDklLYEfc4mg41VeAVY4xPSv0O76/hEZsVKcBOGlT nKy3wV4ft8ykV1Jl+5q2eJAaZRoBSvHuRItbM2HCyghhDW0gKBy5rqOq BlM=</code></pre>



<p>The RRSIG record contains common DNS fields (domain name, ttl, etc.), but also other fields</p>



<ul class="wp-block-list"><li><code>A</code>: Type covered</li><li><code>8</code>: Algorithm used to sign</li><li><code>2</code>: Number of labels of the RRSET (here 2: 1 for dnstests and 1 for OVH)</li><li><code>3600</code>: Original TTL</li><li><code>20200925080215</code>: Signature expiration date</li><li><code>20200826080215</code>: Signature inception date</li><li><code>50238</code>: KeyTag (non uniq indentifier)</li><li><code>dnstests.ovh.</code>: Signer&#8217;s name</li><li><code>AUz7u4Sq0EkSUq5k…:</code> =&gt; The Signature</li></ul>



<h4 class="wp-block-heading">RRSIG signature</h4>



<p>The signature is calculated according to the following formula:</p>



<pre class="wp-block-code"><code class="">signature = sign( RRSIG_RDATA | RR(1) | RR(2)... )</code></pre>



<p>where</p>



<pre class="wp-block-code"><code class="">|  is used for concatenation
RRSIG_RDATA is the RRSIG in wire format
RR(*) = owner | type | class | TTL | RDATA length | RDATA</code></pre>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/10/IMG_0320.jpg" alt="" class="wp-image-19426" width="582" height="249" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0320.jpg 776w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0320-300x128.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0320-768x329.jpg 768w" sizes="auto, (max-width: 582px) 100vw, 582px" /></figure></div>



<h4 class="wp-block-heading">DNSKEY</h4>



<p>In order to validate, a <code>RRSIG </code>resolver needs to know the public key used to sign the record set.</p>



<p>This is stored in a record named <code>DNSKEY</code></p>



<pre class="wp-block-code"><code class="">$ dig DNSKEY +multi dnstests.ovh
dnstests.ovh.        3458 IN DNSKEY 256 3 8 (
                    AwEAAc9juwZVMUrdjPIxMPuOk+ZnVhv+i16B3TTxj1Ft
                    5ABDEbiXyfljJopTCQgmJ4EcNDubhZKezTqGsbpaErw8
                    8yqFwzviv2/U9Mw+Vq1zbS29Hl6XzyWPlnYryXcyVDEw
                    OZlsK0hw6d7A6Xcjjf2srnxpQHpO9pG+etFZxSSEV49j
                    ) ; ZSK; alg = RSASHA256 ; key id = 50238
dnstests.ovh.        3458 IN DNSKEY 257 3 8 (
                    AwEAAZ5F0TSR8PWTrADtdlTcuGWBZ1ehOHy7RtX/ZyA6
                    WQSU+59I8PFWQ6ddD4FX7LfNcaPSd10vjZKmGT9fB8uf
                    IY9xHHrH2zGc6jEI7TkqDOjutVRsBhhis+AO/HDjL9i0
                    tpyoCX3/wHVZ9U0iOIHaR4+vlVJfja6EvuL4s0zhzaY0
                    amP1R8af0E1Rcvyi9S6fFOtECZOrqKlwI9OPQneQ2gD4
                    uXWg97o1kuBvxSg/Ze5NsAIsJu3oShxBPUNmW6hwP8FM
                    tbmft4MqpJ3xiI03FN2t2PwgO3cvCYlyBJRZqo9nqLAz
                    yYheVdoMuBP024bXF1HFDo2n7jZMuDrW7mMfPK8=
                    ) ; KSK; alg = RSASHA256 ; key id = 44329</code></pre>



<p>DNSKEY record contains common DNS fields (domain name, ttl, etc.), but also other fields.</p>



<ul class="wp-block-list"><li><code>256 </code>or <code>257</code>: Flags. A value of 256 indicates that the <code>DNSKEY </code>contains a <code>ZSK </code>and a value of 257 indicates that it contains a <code>KSK</code>.</li><li><code>3</code>: Protocol (Must be equal to <code>3 </code>otherwise record is not valid)</li><li><code>8</code>: Algorithm</li><li><code>AwEAAc9…</code>; Public key</li></ul>



<p>In summary, when a resolver requests a given record type, it receives the set of records and the associated <code>RRSIG</code>. It then had to request the <code>DNSKEY </code>to validate the response.</p>



<h4 class="wp-block-heading">ZSK</h4>



<p>Each zone signed with DNSSEC has a key named <code>ZSK </code>used to sign the whole record set.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/10/IMG_0321-1024x875.png" alt="" class="wp-image-19428" width="768" height="656" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0321-1024x875.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0321-300x256.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0321-768x656.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0321.png 1167w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>



<p>If we trust the ZSK, we know that we can trust all records in the zone. But how do we validate the <code>ZSK</code>?</p>



<h3 class="wp-block-heading">KSK</h3>



<p>In the same way that the <code>ZSK </code>is used to sign the record set, the DNSSEC use another key &#8211; the <code>KSK </code>(Key Signing Key) &#8211; which is used to sign the <code>ZSK DNSKEY</code>.</p>



<p>So let&#8217;s imagine we want to retrieve and validate an <code>A </code>record for domain name <code>dnstests.ovh</code>.</p>



<p>First we ask for <code>A</code>:</p>



<pre class="wp-block-code"><code class="">$ dig A +dnssec dnstests.ovh
dnstests.ovh.        3283    IN  A   213.186.33.5
dnstests.ovh.        3283    IN  RRSIG   A 8 2 3600 20200925080215 20200826080215 50238 dnstests.ovh. AUz7u4Sq0EkSUq5kR0beowmMuscbzGdb3NI/OhCG8Ow0Z3CqgG0/94eR 6pbG7YJwvCFBU1bQDklLYEfc4mg41VeAVY4xPSv0O76/hEZsVKcBOGlT nKy3wV4ft8ykV1Jl+5q2eJAaZRoBSvHuRItbM2HCyghhDW0gKBy5rqOq BlM=</code></pre>



<p>Then we ask for <code>DNSKEY</code>:</p>



<pre class="wp-block-code"><code class="">$ dig DNSKEY +multi +dnssec dnstests.ovh
dnstests.ovh.        2954 IN DNSKEY 257 3 8 (
                AwEAAZ5F0TSR8PWTrADtdlTcuGWBZ1ehOHy7RtX/ZyA6
                WQSU+59I8PFWQ6ddD4FX7LfNcaPSd10vjZKmGT9fB8uf
                IY9xHHrH2zGc6jEI7TkqDOjutVRsBhhis+AO/HDjL9i0
                tpyoCX3/wHVZ9U0iOIHaR4+vlVJfja6EvuL4s0zhzaY0
                amP1R8af0E1Rcvyi9S6fFOtECZOrqKlwI9OPQneQ2gD4
                uXWg97o1kuBvxSg/Ze5NsAIsJu3oShxBPUNmW6hwP8FM
                tbmft4MqpJ3xiI03FN2t2PwgO3cvCYlyBJRZqo9nqLAz
                yYheVdoMuBP024bXF1HFDo2n7jZMuDrW7mMfPK8=
                ) ; KSK; alg = RSASHA256 ; key id = 44329
dnstests.ovh.        2954 IN DNSKEY 256 3 8 (
                AwEAAc9juwZVMUrdjPIxMPuOk+ZnVhv+i16B3TTxj1Ft
                5ABDEbiXyfljJopTCQgmJ4EcNDubhZKezTqGsbpaErw8
                8yqFwzviv2/U9Mw+Vq1zbS29Hl6XzyWPlnYryXcyVDEw
                OZlsK0hw6d7A6Xcjjf2srnxpQHpO9pG+etFZxSSEV49j
                ) ; ZSK; alg = RSASHA256 ; key id = 50238
dnstests.ovh.        2954 IN RRSIG DNSKEY 8 2 3600 (
                20200925080215 20200826080215 44329 dnstests.ovh.
                k/huKVd5Skc8PE1CgHl1/MCEjZs6hH1DlLYGHZxG97YK
                YBSwvWQoXGG6ObZKJYCWVqDJWvdz81K7XHLvK34g3AwB
                NyI62Aw00GiaJzpFCkKU+jTVPeVvDKpAKGQxPziWCL/4
                Buj230YyDm38V4amxAeBOz5FcvD8eDu6XYMx4ygvJ3XF
                M7zojtsbqwg7IBJPJUURNfpQi8MbJivelXbh2CJACteB
                8zd2dsj0eZRTLulC15qr7R7zBQqJ8CVuPAVHBYfy2Nu/
                VE2QSe2Q4zzns9TUH/6/g9f8RDMNDhT+Z1lbsaJg9EzH
                x4bqLfjEjnqhrzdS/Fc02e7bILe9YGQ5SQ== )
dnstests.ovh.        2954 IN RRSIG DNSKEY 8 2 3600 (
                20200925080215 20200826080215 50238 dnstests.ovh.
                nrA3yOddNl3695pl8JAwDkjV8oL5VdKyJO2fIrOPSFVr
                EbEVHHxwxSXqlvhV8J2NmB80oV4mM+bzzZUToIWbKd0p
                XOUDz38lu7Ye4uYrJi4/tMSqMy2HUP96xGQUze96riMo
                hiGmOJp6jd+J3LRmO4dOLXW7WB+Q9dwEANjH4/M= )</code></pre>



<p>We are able to validate the record set with <code>RRSIG </code>and <code>ZSK DNSKEY</code>, then we are able to validate<code> ZSK DNSKEY</code> with <code>RRSIG </code>and <code>KSK DNSKEY</code>.</p>



<p>We are now able to trust records from our DNS zone, but we need to be able to transfer the trust of our child zone to its parent.</p>



<h3 class="wp-block-heading">Delegation Signer Records</h3>



<p>An essential characteristic of DNS is its hierarchical structure. DNSSEC uses this particularity to transfer trust from parent<br>zone to child zone. This record, named <code>DS </code>(Delegation Signer) contains the hash: <code>KSK DNSKEY</code>.<br>If the resolver finds <code>DS </code>records in the parent zone, they know that the child-zone must be DNSSEC signed, and will be able to validate<br><code>DNSSKEY </code>on the child zone using the <code>DS </code>record.</p>



<pre class="wp-block-code"><code class="">$ dig DS dnstests.ovh
dnstests.ovh.        172800  IN  DS  44329 8 2 6BDEC6C046B608077A198E19F2C241EB6B05565DE9B0C63DA718DCA2 8F012979</code></pre>



<p><code>DS </code>records contains common DNS fields (domain name, ttl, etc) but also other fields. </p>



<ul class="wp-block-list"><li><code>44329</code>: KeyTag</li><li><code>8</code>: Algorithm</li><li><code>2</code>: Digest Type</li><li><code>6BDEC6…</code>: Digest</li></ul>



<h4 class="wp-block-heading">DS Digest</h4>



<pre class="wp-block-code"><code class="">digest = digest_algorithm( DNSKEY owner name | DNSKEY RDATA);</code></pre>



<p>where</p>



<pre class="wp-block-code"><code class="">| is used for concatenation
DNSKEY RDATA = Flags | Protocol | Algorithm | Public Key</code></pre>



<h3 class="wp-block-heading">The Chain of Trust</h3>



<p>We are now able to fully validate a DNS answer, up to the root DNS servers:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/10/IMG_0322-422x1024.png" alt="DNSSEC - Chain of Trust" class="wp-image-19432" width="317" height="768" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0322-422x1024.png 422w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0322-124x300.png 124w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0322-633x1536.png 633w, https://blog.ovhcloud.com/wp-content/uploads/2020/10/IMG_0322.png 726w" sizes="auto, (max-width: 317px) 100vw, 317px" /></figure>



<h3 class="wp-block-heading">Denial of existence</h3>



<p>Imagine we want to resolve &#8220;doesnotexist.dnstests.ovh.&#8221;. The resolver will send us back to: domain doesn&#8217;t exist. So, how can we<br>validate this denial of existence?</p>



<p>DNSSEC solves this problem by adding two new types of record: <code>NSEC </code>and <code>NSEC3</code>.</p>



<p>Let&#8217;s imaging our dnstests.ovh. has this content</p>



<pre class="wp-block-code"><code class="">$TTL 3600
@    IN SOA dns10.ovh.net. tech.ovh.net. (2020082603 86400 3600 3600000 60)
        IN NS     ns10.ovh.net.
        IN NS     dns10.ovh.net.
        IN A      213.186.33.5
subdomain        IN A      213.186.33.5
subdomain        IN TXT      dnssec
www        IN A      213.186.33.5</code></pre>



<h3 class="wp-block-heading">NSEC</h3>



<p>NSEC works by returning the &#8220;next secure&#8221; record.</p>



<pre class="wp-block-code"><code class="">$ dig A +dnssec doesnotexist.dnstests.ovh
;; status: NXDOMAIN
dnstests.ovh.        18  IN  NSEC    subdomain.dnstests.ovh. A NS SOA RRSIG NSEC DNSKEY</code></pre>



<p>The <code>NSEC </code>record contains common DNS fields (domain name, ttl, etc), but also other fields: </p>



<ul class="wp-block-list"><li><code>subdomain.dnstests.ovh</code>: next domain name (in alphabetical order)</li><li><code>A NS SOA RRSIG NSEC DNSKEY</code>: types associated with the current request. It tells us that a current domain name <br><code>dnstests.ovh.</code> only have <code>A NS SOA RRSIG NSEC DNSKEY</code> records.</li></ul>



<p>The problem with NSEC is that it&#8217;s possible to enumerate all entries in a zone. Let&#8217;s have a look:</p>



<pre class="wp-block-code"><code class="">$ dig A +dnssec a.dnstests.ovh
dnstests.ovh.        60  IN  NSEC    subdomain.dnstests.ovh. A NS SOA RRSIG NSEC DNSKEY</code></pre>



<p>It tells us that the next subdomain is <code>subdomain.dnstests.ovh.</code>, so we can get the next subdomain by adding a letter to the subdomain.</p>



<pre class="wp-block-code"><code class="">$ dig A +dnssec subdomaina.dnstests.ovh
subdomain.dnstests.ovh.        60  IN  NSEC    www.dnstests.ovh. A TXT RRSIG NSEC</code></pre>



<p>In this way, we can obtain the complete contents of the zone.</p>



<h3 class="wp-block-heading">NSEC3</h3>



<p><code>NSEC3 </code>was added to prevent an attacker from walking the zone. It works the same way as the <code>NSEC</code>, but it constructs a chain of hashed and not plain text resource records. In the case of <code>NXDOMAIN</code>, it returns the hash before and after (in alphanumerical order) the hash of a requested domain name.</p>



<pre class="wp-block-code"><code class="">$ dig A +dnssec doesnotexist.dnstests.ovh.
;; status: NXDOMAIN
dnstests.ovh.        60  IN  SOA dns10.ovh.net. tech.ovh.net. 2020082604 86400 3600 3600000 60
E9NLBQ2G28AO5L4JR8UBJR3QODN9PE63.dnstests.ovh. 60 IN NSEC3 1 0 8 1981905ED56A6CE2 SA9BM55PF37IOPN95F1PCIG733K2SQIJ A TXT RRSIG
SA9BM55PF37IOPN95F1PCIG733K2SQIJ.dnstests.ovh. 60 IN NSEC3 1 0 8 1981905ED56A6CE2 BKF3VT8D74NQJVTR798OI8E6TP8C70F2 A NS SOA RRSIG DNSKEY NSEC3PARAM</code></pre>



<p><code>NSEC3 </code>record contains common DNS fields (domain name, ttl, etc), but also other fields:</p>



<ul class="wp-block-list"><li>1: Hash algorithm</li><li><code>0</code>: Flags</li><li><code>5</code>: Number of iterations for hash</li><li><code>C149E2F3213D3F51</code>: Salt value</li><li><code>SA9BM55PF37IOPN95F1PCIG733K2SQIJ</code>: Next hashed domain name</li><li><code>A TXT RRSIG</code>: Types associated with current request</li></ul>



<p>When a resolver asks for a domain and received a <code>NXDOMAIN </code>they can compute the hash of the requested domain and compare it (alphanumerically) to the hashes received in <code>NSEC3</code>.</p>



<p>For example, for<code> dnstests.ovh.</code> we have:</p>



<pre class="wp-block-code"><code class="">hash(dnstests.ovh.) = SA9BM55PF37IOPN95F1PCIG733K2SQIJ
hash(www.dnstests.ovh.) = BKF3VT8D74NQJVTR798OI8E6TP8C70F2
hash(subdomain.dnstests.ovh.) = E9NLBQ2G28AO5L4JR8UBJR3QODN9PE63
hash(doesnotexist.dnstests.ovh.) = KSR3B14N7QTGS3536MR6N1AOA97LORK3</code></pre>



<p>If we look at <code>NSEC3 </code>records we got during dig: </p>



<pre class="wp-block-code"><code class="">E9NLBQ2G28AO5L4JR8UBJR3QODN9PE63.dnstests.ovh. 60 IN NSEC3 1 0 8 1981905ED56A6CE2 SA9BM55PF37IOPN95F1PCIG733K2SQIJ A TXT RRSIG</code></pre>



<p>Means than <code>subdomain.dnstests.ovh.</code> has <code>A</code>, <code>TXT </code>and <code>RRSIG </code>record types and that next subdomain is <code>dnstests.ovh.</code></p>



<pre class="wp-block-code"><code class="">SA9BM55PF37IOPN95F1PCIG733K2SQIJ.dnstests.ovh. 60 IN NSEC3 1 0 8 1981905ED56A6CE2 BKF3VT8D74NQJVTR798OI8E6TP8C70F2 A NS SOA RRSIG DNSKEY NSEC3PARAM</code></pre>



<p>Means than <code>dnstests.ovh.</code> has <code>A</code>, <code>NS</code>, <code>SOA</code>, <code>RRSIG</code>, <code>DNSKEY </code>and <code>NSEC3PARAM </code>record types and that next subdomain is www.dnstests.ovh.</p>



<p>So we have received the information telling us that <code>doesnotexist.dnstests.ovh.</code> does not exist (<code>NXDOMAIN</code>),<br>the hash just before (in alphanumeric order): <code>E9NLBQ2G28AO5L4JR8UBJR3QODN9PE63</code>, the hash just after <code>SA9BM55PF37IOPN95F1PCIG733K2SQIJ</code>, so we know that <code>NXDOMAIN </code>is valid.</p>



<h1 class="wp-block-heading">To conclude</h1>



<p>DNSSEC is an extension of the DNS used to secure the DNS data, not the communication channel. It means that DNSSEC does not encrypt the zone, but it ensures that the received zone was sent, and has not been modified, by its owner. DNS records are cryptographically signed, so DNSSEC introduces the new DNS record types for cryptography.</p>



<p>One of the biggest advantages of DNSSEC is that it&#8217;s compatible with the DNS &#8211; but to be secure the whole chain of trust must mean using the DNSSEC from child to root.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fan-introduction-to-dnssec%2F&amp;action_name=An%20introduction%20to%20DNSSEC&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
