YOKOHEI.COM

YOKOHEI.COM

›リソースレコード

DNSSEC 概要と動作

  • DNSSEC intro
  • AD, CD, DO bit
  • DNSSEC 検証

リソースレコード

  • DNSSEC RRs
  • NSEC and NSEC3

DNSSEC RRs

リソースレコード

DNSSEC のためにいくつかリソースレコードが追加された。
それぞれのリソースレコードの役割を理解することで DNSSEC の理解を深めることができる(はず)。

DNSKEY

鍵を公開するためのレコード。
ZSK と KSK を公開するので 2 つになる。

フォーマット

<flag> <protocol> <alg> <public key>

サンプル (どのドメイン名を例に使ったら良いのかわからないが…)

$ dig dnsviz.net DNSKEY +noall +ans

; <<>> DiG 9.11.0rc1 <<>> dnsviz.net DNSKEY +noall +ans
;; global options: +cmd
dnsviz.net.  60 IN DNSKEY 256 3 8 AwEAAbdrKKUHCt+CCOJ3n1P1Ry2Aiw7NvWKZzD4enhZtKOBBLj+5dMuC orlclLICNXzrSRxa1z4URoNCFaj4JkNN2mb6BopJd+PdmmPdeTaAdRZS +iVIc2/D+Da/7qtzbxtxn0oi0z06HEqHtmv19HoDknBvh5G72GW0NOcL gbDd7gDg9Hxr0IdEXdAbHpQkb/MdN6iGs0PbpxjW22vuEvvNg/kh25S+ MNzQ71YWaKf1fZDae9F12EZErNCzfDfuNC4K6A1AWtk/cKRAHU10eOdo zs4TekyzwW35i/Vep7w6D7pfV2V+W3X/xRX8V12iRxxodoochHDDs07j wahRKXmFctU=
dnsviz.net.  60 IN DNSKEY 257 3 8 AwEAAdlHDyfbmz04mAe5p9SXamkiWQPc9o7hvsmWq2nTppsHx48eVtez Mfq1EkPMfzFX1yKhahWPTbko7QtbSvqMz/+PM+vD41FbkN+wc2SONCFY BpJcaeP4iYT7kfJ/uH9BrkFs7ieIz32bLlNiEU0r1+WFRW0+njoNaF7F jKoNUFOI5S4WIg+lk2gHviSFGm0qp6+QrHWjFfPKzTqPe1QvM7efAjMI l3Tbi2BMUQ1En8FFODoa1Pbgxa0BoXpBWKbiuVzfO9lTRcCA/gs2KbUl 7MU9TZMVC5/Qq2ycaEv9cBNHDJrsJCjXk+qwVLsVXn8gS5ToP3QnbvLW q+cevLZZMj8=

各フィールドについて

  • <flag>
    256: ZSK
    257: KSK

  • <protocol>
    https://www.iana.org/assignments/dns-key-rr/dns-key-rr.xhtml
    ----
    3 DNSSEC [RFC4034][RFC2535]
    ----

  • <alg>
    公開鍵の暗号化アルゴリズム
    https://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml
    ----
    8 RSA/SHA-256 RSASHA256 Y * [RFC5702][proposed standard]
    ----

RRSIG

フォーマット

<type> <alg> <labels> <TTL> <expiration> <inception> <keytag> <signer’s name> <signature>

$ dig dnsviz.net RRSIG +noall +ans

; <<>> DiG 9.11.0rc1 <<>> dnsviz.net RRSIG +noall +ans
;; global options: +cmd
dnsviz.net.  60 IN RRSIG SOA 8 2 3600 20190127104922 20181228104922 19785 dnsviz.net. RYYJcYUbp+aBdQLSJrzzVbb6Gqq3eH7r2iUA8N9nl4tLW4LW/wuQ7qYb 9gImg4vxVgarOlkPRONtmql+R3KO7mx8mZP9pf2vnnqSYO0inej3f6Yp 8atF4Is2FvgdFD5Ll8LqMIP9IluteggTBhNbJ/NzSsQcx4WmbG3KI+Rg P3cbDObuQ5LU2jHC/r3H85SLmzqNzW4ZWa5sJ14ex5J2XNirJibgSxyb 1x3/uNUvttjG4ZZXAxrvd7SJ3XKaDgCbGyfdbZ/O188+2/MY3/JpoMud Hvwq5Ch1ys0F6x+lPJ4HkrUm985nXf+GVZX7v6vQroGtNBJHLH/8LRd2 aFKf7g==
dnsviz.net.  60 IN RRSIG NSEC3PARAM 8 2 0 20190127104922 20181228104922 19785 dnsviz.net. Jj9iL94uPkqn1wRm9y+ncQNvJTUqiUzoFu3EB6l3x95VjmHGeW4yRkaU e+V3kvkU88+Tzx0vIeuyDP/TsmjD/Ea6Em12NGjZw1cCxIJ6hf21WDBT R9nPkZkokRfBdsaelTAYp2ISjWgE8QW8tBHtYo71taZ2WwpHjLuoYcDS rYI0mCoqnQnCFbgAIElU21odL1fo8hILaEUzL+Mg0uF+fGX8UZlbSmgv BmFHOJTG8iU+MSuRMZRuPfoSklvUjrts9X7sQIxL0zfZkuvuIzZjoQQt VUjgN6x6n49laimHu5jY7DSuYRBFgsxD6gm7bbypTUFlglcnxrlY7p3D cWGVng==
dnsviz.net.  60 IN RRSIG DNSKEY 8 2 86400 20190127104922 20181228104922 28345 dnsviz.net. e14J2YBn3LLShWuL+oo1skXhoYFUFgUF/qcr37bMjmMDfhH/PcwRCHOM t9+ZcMEqBvqvTtZ3qeI66+bHJ0S/WV/ykQp5yICN82+ltsUYZyjELgNS JXqtT7gf+/vhPv85+ypei+IikewLO4eR4zhk/G3GhRBY4N7tYRE3jS5X BhJua+UUJwrBrk+GT+D/vzLMc93tTodgfMLmDJBTrzldRTVaC6o9BoA/ 8j1sCWquubn1cBc3QvhWbSDaP00I8Sy7eSkA1XGgVU2HbbN9Qml9aFLt I+x8b5qfHa4Yn3ZQTuC2TG8YV79lRsl8GyTzcT02FUpDi64LdMLDYP46 kb6/Cg==
dnsviz.net.  60 IN RRSIG AAAA 8 2 1800 20190127104922 20181228104922 19785 dnsviz.net. jB1JBiB4POcbTOafeeiMxbX3MQxmuUIvqbKP16YBLruLY6UepwofR6RL 5FsadXPpfLxETPdPXXOTkqvYWfy9pXakd8Dx3YDxsW05c7REA69+9GT5 8YU9WknbE7NQ0HXeQwsvVhTALv+jFpJmzJvLsrvJ4qGpZrboiCPPbnRa 3Vqw1m76SQRDJDsYnpP9L+C5D9fS5qzHZTl+v5PNXOIu3DHSkEt/7caW Ypb1usXaN49qA7qLcTeGwazaeC+DJH4HZRkHxmqVE2X8e8s3Qyd11ogM 5t8swNZnarGSW6G0woHaRkQCT64KATmJWvB1va2vFdbbUepdY51gScC4 93oSOw==
dnsviz.net.  60 IN RRSIG A 8 2 1800 20190127104922 20181228104922 19785 dnsviz.net. Dh5Hy7rcxchXFTfC3/VibGjqQ7cYXporrAKhfL+DJv9K7PK9wSFKPjzq vAuN96FIYSxTB+np8EDArzdNp/QNnCx0QmT0R2s0OJtIELHATf/yTXKY e9Ajmz6Hd621fALlAXHkBpzM3c+GRgSVXGhvqlv2HnQoKcm6lWebYCr9 /L+RVWdO0MVh9dQfX7vvPUySneATZXk9l6KfZ0jpWRjoa5w3+x8fJMZe 24gtyhprqlFtz2EqOvnsQkILJM+FmQov5x5Jt//i4qHK4EugwfuGwqhb Y5Ww+TfMxN7kMsch1stjU9xh8Djl//X99eyirSYuHwh8lVDzY0FZqxP8 e4RuCw==
dnsviz.net.  60 IN RRSIG NS 8 2 3600 20190127104922 20181228104922 19785 dnsviz.net. kmfZoabCj7cPaYYZw9KcVsUWxQw1vAXlLvRFiIWBBp2xX8aNBNIfsvgf Db0/dNQ9qFbK6EWE2QElIWZKM4SAk8YUnWU5zVjCd00seqGBSpmsESaa ggxRbQo6Ef9f5a1Oag7PIucZ8EuK6wP9srEPHDuVJnP6skU168JOtPrn S+zKDyDCiTgtAIJHugwscPNciRq5fR7/nfW+JpC+zFtLdfpfumEe3ivx agWf1c1P6hvyh1tpObjz0h6QDwjgue7L7V8deRt7egLGcs29Dws3i8V1 6PGqjcX1Avs0qoWLrJLdqoiGAqzlwcSsjHKXYpwX0Svva1LFY1a/T1i8 uLgDNA==

各フィールドについて

  • <type>
    レコードタイプ
    A とか AAAA とか NS とか。

  • <alg>
    暗号化アルゴリズム番号
    https://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml
    ----
    8 RSA/SHA-256 RSASHA256 Y * [RFC5702][proposed standard]
    ----

  • <labels>
    ドメイン名のラベル数
    dnssec.yokohei.com なら 3 になる。

  • <TTL>
    署名対象の RR の TTL の値。

  • <expiration>
    署名の有効期間終了時刻

  • <inception>
    署名の有効期間開始時刻

  • <keytag>

  • <signer’s name>
    署名対象の RRset のゾーン名

  • <signature>
    Base64 符号化された署名

DS

委任関係を表すためのもの。
信頼の連鎖を見ればわかるが、これは下位ゾーンのものを上位ゾーンに置いてもらうもの。
何を置くか、というと DNSKEY (KSK;flag257) のハッシュ値。

フォーマット

<key tag> <key alg> <digest type> <hash>

$ dig dnsviz.net +dnssec +norec @a.gtld-servers.net

; <<>> DiG 9.11.0rc1 <<>> dnsviz.net +dnssec +norec @a.gtld-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60544
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 7, ADDITIONAL: 1

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;dnsviz.net.   IN A

;; AUTHORITY SECTION:
dnsviz.net.  172800 IN NS ns1.ca.sandia.gov.
dnsviz.net.  172800 IN NS ns2.ca.sandia.gov.
dnsviz.net.  172800 IN NS ns8.sandia.gov.
dnsviz.net.  172800 IN NS ns9.sandia.gov.
dnsviz.net.  86400 IN DS 28345 8 1 4B3183AACE2720D15ED524A261FC1FB869AE05C6
dnsviz.net.  86400 IN DS 28345 8 2 56F22414DACD160FB04D87A1E2A0E1E7EDE5E3399E5C1D40F8035111 FB426C73
dnsviz.net.  86400 IN RRSIG DS 8 2 86400 20190116062334 20190109051334 6140 net. Vwdn3edCNb/mdglHEUAUqYXOteN52GbirvsZt9srYUJF8UM2gMkTBGPE e++JbGisyGuMCx5XcHg3zc9oXhq8MblMitXkogqLjZ3J1UaAPBq6hyvU emNTkHsuIPizOygCmYQCrsgCPKLJ82lqH/+4ylJnKBWEqT03PodVXxdi WnE=

各フィールドについて

  • <key alg>
    DS が参照する DNSKEY の、暗号化アルゴリズム
    https://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml
    ----
    8 RSA/SHA-256 RSASHA256 Y * [RFC5702][proposed standard]
    ----

  • <digest type>
    https://www.iana.org/assignments/ds-rr-types/ds-rr-types.xhtml
    ----
    1 SHA-1 MANDATORY [RFC3658]
    2 SHA-256 MANDATORY [RFC4509]
    ----

NSEC/NSEC3/NSEC3PARAM

不存在証明のためのレコード。
DNSSEC では、そのレコードが存在しないことについても証明しないといけない。
ただ、署名を付加できるのは存在するレコードのみ。
そこで考えられたのがこれらのレコード。

以下のページが割と分かりやすい。

https://jprs.jp/dnssec/faq.html#Q15

フォーマット

  • NSEC
    <next domain name> <type>

  • NSEC3
    <hash alg> <flags> <iterations> <salt length> <salt> <hash length> <next hash name> <type>

  • NSEC3PARAM
    <hash alg> <flags> <iterations> <salt length> <salt>

← DNSSEC 検証NSEC and NSEC3 →
▼ Codes ▼
LeetCodeGitHub
▼ Profile ▼
LinkedInFlickr
▼ Logo made with DesignEvo ▼
DesignEvo
Copyright © 2020 Kohei Yoshida