DNSのDNSKEYおよびDSレコード

DNSKEYとDSレコードは、DNSSECリゾルバーがDNSレコードの真正性を確認するために使用されます。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • DNSKEYレコードの目的を理解する
  • DNSSECでDSレコードが果たす役割を理解する

記事のリンクをコピーする

DNSKEYレコードおよびDSレコードとは?

ドメインネームシステム(DNS)はインターネットの電話帳の役割を果たすものですが、その設計はセキュリティを考慮したものではありません。このため、Web プロパティの所有者がアプリケーションをより安全に保護できるようにDNSSECと呼ばれるオプションのセキュリティプロトコルが作成されました。DNSSECは、DNSレコードに暗号署名を追加することでセキュリティを強化します。これらの署名を確認することで、レコードが正しいDNSサーバーから送信されたことを確認することができます。

これらの暗号署名を実装するために、DNSKEYとDSと言う2つの新しいDNSレコードタイプが作成されました。DNSKEYレコードには公開署名鍵が含まれ、DSレコードにはDNSKEYレコードのハッシュ*が含まれます。

各DNSSECゾーンには、ゾーン署名鍵(ZSK)のセットが割り当てられます。このセットにはZSK秘密鍵とZSK公開鍵が含まれます。ZSK秘密鍵はそのゾーンのDNSレコードに署名するために使用され、ZSK公開鍵はZSK秘密鍵を検証するために使用されます。

ZSK公開鍵はDNSSECレコードで公開され、DNSSECリゾルバーに提供さます。リゾルバーはZSK公開鍵を使用して、そのゾーンからのレコードが本物であることを確認します。DNSSECゾーンにはセキュリティを実現する追加レイヤーとして、ZSK公開鍵の真正性を検証する鍵署名鍵(KSK)を含む第2のDNSKEYレコードが含まれます。

DSレコードは、DNSSECゾーンの子ゾーン**の真正性を検証するために使用されます。親ゾーンのDS鍵レコードには、子ゾーンのKSKのハッシュが含まれています。従ってDNSSECリゾルバーは、子ゾーンのKSKレコードをハッシュ化し、親ゾーンのDSレコードにあるものと比較することにより、子ゾーンの信頼性を検証することができます。

*暗号学的ハッシュは英数字の一方向性スクランブルです(ハッシュはパスワードのような機密情報をサーバーに保存するためによく使われます)。例えば、入力「cantguessthis」のハッシュは「18fe9934cf77a759eb2471f2b304708a」になります。「cantguessthis」がハッシュ関数にかけられるたびに、毎回同じハッシュが出力されます。しかし、ハッシュだけを使用して元の入力を得る方法はありません。ハッシュ単体では本質的に意味を成しません。

**子ゾーンは、他のゾーンの委任されたサブドメインです。例えば、example.comというURLには、blog.example.comやmail.example.comのようなドメインを持つ子ゾーンを含めることができます。