Episode 4
階層の仕組みを信じよう!
DNSは階層構造なことは、話したよね。
dnsimple.com のAレコードを知りたいとき、リゾルバは最初にルートに .com サーバーの場所を聞く必要があるんだよ。
※HowDNS.works に登場するキャラクター
次に、.com サーバーが dnsimple.com のネームサーバーをリゾルバに案内してくれるんだよ。
※HowDNS.works に出てくる、もう一人のキャラクター
最終的に、権威サーバーが dnsimple.com のAレコードのIPアドレスを返してくれるよ。
※これも HowDNS.works に出てくるキャラクターだけど、もう知ってるよね
これはぜんぶ、信頼の連鎖が土台になってるんだ。
リゾルバはサーバーをたどるたびに、信頼できる親から信頼できる子に案内されてると信じて動いてるよ。
DNSSECでは、DS(委任署名者)という新しいタイプのレコードでこれを実現してるんだ。
DSレコードは子ゾーンで作られて、それを親ゾーンに渡すんだ。
DSレコードの中身は、DNSKEYにあるキー署名キーの公開鍵を、DNSプロバイダがハッシュ化して記録したものだよ。
DSレコードは、親ゾーンに登録されている必要があるよ。
リゾルバが子ゾーンに問い合わせるとき、親ゾーンがDSレコードをリゾルバに教えてくれるよ。
これには2つの役割があります:
まず、リゾルバは、子ゾーンがDNSSECを使っていることが分かります。
次に、親ゾーンにある暗号化されていないDSレコードと子ゾーンのDNSKEYが一致してるか、リゾルバが確認できるんだ。
リゾルバは子ゾーンのDNSKEYをハッシュ化し直して、DSレコードと同じかどうか見比べるよ。
もし合ってなかったら、リゾルバはゾーンが改ざんされていることに気づくんだ。
一致してたら、 dnsimple.com が信頼できるとリゾルバが判断するよ。
これでDNSimpleは安心。でも、.com やルートは本当に大丈夫なのかな?