情報処理安全確保支援士の午後問題対策のためにDNSSECを勉強しました。ネットの情報を見てみると解説が難しすぎたり、正確性に問題があるようにみえたりと少し混乱してしまいました。そこで私なりにDNSSECの情報を解説してみたいと思います。
私の解説が間違っていたり、余計混乱させてしまう可能性もあります。ご了承ください。
流れ
DNSSECの構造を理解しやすくするために下位の権威サーバーから見ていきます。逆から見てます。(DNSで検索する際はルートの権威サーバーから問い合わせていく)
- ZSK公開鍵で該当レコード(例えばAレコード)のRRSIGの署名を検証する。該当レコードのRRSetの内容が正しいことが確認される(ゴール!)
- ZSK公開鍵の信頼性が保証されているか確認する。
KSK公開鍵でKSK公開鍵+ZSK公開鍵のRRSIGの署名を検証する。KSK公開鍵+ZSK公開鍵のRRSetの内容が正しいことが確認される。 - KSK公開鍵の信頼性が保証されているか確認する。
KSK公開鍵のハッシュ値が上位の権威サーバーにDSレコードとして登録済み。このDSレコードがRRSetととしてグループ化されている。ZSK秘密鍵で署名されRRSIGとして登録されている。
上位の権威サーバーのZSK公開鍵で上記のRRSIGの署名を検証する。該当レコードのRRSetの内容が正しいことが確認される。 - 以下2と3がルート権威サーバーまで続いている。
とりあえず流れを文字にしてみましたが、「うーん、わからん!」ですね。
ZSK公開鍵で該当レコードのRRSIGの署名を検証する
まずRRSetという言葉が出てきます。これは同じリソースレコードをグループ化された状態を表します。AレコードでしたらAレコードだけでまとめられたRRSetが出来上がります。
![](https://papamamameyou.com/wp-content/uploads/2023/10/96351124dc911178e3c42af3ad8374a7.jpg)
このRRSetをZSK秘密鍵で署名したものがRRSIGです。RRSIGレコードという名前でDNSにセットします。RRSIGとはResource Record digital SIGnatureの略です。この英語の意味からもデジタル署名であることがわかりますね。
![](https://papamamameyou.com/wp-content/uploads/2023/10/119f25fb2b7f1a99dcc683eb54542086.jpg)
この状況で「流れ」の「1番」が行われます。キャッシュDNSサーバーはZSK公開鍵でRRSIGレコードを検証します。自身が持っているRRSetの内容と一致することが確認できます。ZSK公開鍵はどこにあるかといいますと、DNSKEYレコードの中にあります。
![](https://papamamameyou.com/wp-content/uploads/2023/10/618ac273e79f038e8bf6d7af58fb7691.jpg)
ZSK公開鍵の信頼性が保証されているか確認する
先ほどの手順でAレコードのRRSetの真正性は確認できましたが、ZSKが信頼できるのかは確認できませんでした。ではZSKが信頼できるかの確認をしたいと思います。
先ほども書きましたが、ZSK公開鍵はDNSKEYレコードの中にあります。そしてお隣にはKSK公開鍵のDNSKEYレコードもあります。これらをグループ化してRRSetが作成されます。そして先ほどと同様に秘密鍵(今回はKSK秘密鍵)でRRSIGを作成します。
![](https://papamamameyou.com/wp-content/uploads/2023/10/0b7939f1a46bbf75da2035fc4ee0bb98-1024x227.jpg)
この状況で「流れ」の「2番」が行われます。キャッシュDNSサーバーはKSK公開鍵でRRSIGレコードを検証します。自身が持っているZSK公開鍵の情報と一致することが確認できます。これによってZSK公開鍵が信頼できることが確認できました。
![](https://papamamameyou.com/wp-content/uploads/2023/10/dd3979fbbee701a12ba52c919e3a9a2a.jpg)
KSK公開鍵の信頼性が保証されているか確認する
さらにさらに今度はKSKが信頼できるのかを確認する必要があります。
先ほども書きましたが、ZSK公開鍵はDNSKEYレコードの中にあります。今回はZSK公開鍵をハッシュ化し、DSレコードとして保存します。保存場所は自分自身ではなく、上位権威サーバー内です。
![](https://papamamameyou.com/wp-content/uploads/2023/10/c7cbfbda40df86c5fa84b39f3f98e1b4.jpg)
このDSレコードは上位権威サーバー内でグループ化されRRSetができます。そしてこのRRSetを上位権威サーバーのZSK秘密鍵で署名されRRSIGレコードが保存されます。
![](https://papamamameyou.com/wp-content/uploads/2023/10/18a70682b42676e6d487c49dd0c78001-1024x230.jpg)
この状況で「流れ」の「3番」が行われます。上位の権威サーバーはZSK公開鍵でRRSIGレコードを検証します。自身が持っているRRSetの内容(KSK公開鍵のハッシュ値)と一致することが確認できます。このZSK公開鍵はどこにあるかといいますと、上位の権威サーバーのDNSKEYレコードの中にあります。
![](https://papamamameyou.com/wp-content/uploads/2023/10/da408d2f1220d562b692e97708bb3172.jpg)
2番3番をルート権威サーバーまで繰り返していく
あとは同じことの繰り返しです。
上位権威サーバー内のZSKの信頼性を確認するには?
↓
KSK公開鍵で署名を検証する。KSKの信頼性を確認するには?
↓
さらに上位の権威サーバーにあるKSK公開鍵のDSをZSK公開鍵で検証する。さらに上位のZSK公開鍵の信頼性を確認するには?
↓
KSK公開鍵で(略
まとめ
これまでの流れを画像にまとめました。
![](https://papamamameyou.com/wp-content/uploads/2023/10/b6b3042eeada967703986a1b30dd47bc-1.jpg)
ルートDNSのDSの信頼性はどのように担保される?
ルートDNSのDS(ルートDNSのKSK公開鍵のハッシュ)の信頼性はどのように担保されるのでしょうか?ルートの上位はいませんのでルート自身が信頼性を保証するしかないですよね。
ここのサイトによりますとルートDNSのDSは作成されないようですね。
ルート署名セレモニー では、世界中から選ばれた個人が集まり、透明性の非常に高い公共の場で、厳密に監査された方法でルートDNSKEY RRSetに署名します。セレモニーでは、ルートネームサーバーのKSKおよびZSKの公開鍵を照合するために使用できるRRSIGレコードを生成します。親のDSレコードを根拠に、 KSK公開鍵を信頼するのではなく、KSK秘密鍵へのアクセスに至るセキュリティ手順が信頼できるものなので、KSK公開鍵も正当であると推測するのです。
CLAUDFLARE
最後は対面ですか。アナログかーい!たくさんの人がRRSIGレコードの作成を見守るのでしょうか?みんなが一つのPCをぐるりのと囲んで見守っているイメージが頭にわきました。シュールすぎます。実際はどのように行われているのか気になりますね。
おまけ
図にして書いてみたものの自分しか理解できないかもしれない…申し訳ありません。
それよりも令和5年秋の情報処理安全確保支援士の問題にDNESEC出なかったんです。めっちゃ調べたのに出なかったんですよ…。
コメント