LinuCレベル3 303試験の例題と解説

325.4DNSと暗号化

LinuCレベル3 303試験の出題範囲から「325.4 DNSと暗号化」についての例題を解いてみます。
今回は、DNSSECについて取り上げます。DNSSECの仕組みについて理解しましょう。

Linucレベル3 303試験 出題範囲


例題

以下のうち、DNSSECに関する記述として間違っているものを選びなさい。

  1. ZSKとKSKの2種類の鍵を使用することにより、秘密鍵漏洩のリスクを軽減できる
  2. ゾーンの署名を有効にするには、子ゾーンのDNSKEYレコードに登録した公開鍵のハッシュ値を親ゾーンのDSレコードに登録する必要がある
  3. DNSクエリの応答でADビットが1となっている場合、DNSSECによる検証が成功している
  4. DNSクエリの応答のNSECレコードでは、存在するドメイン名をハッシュ化したものが使用される

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「4. DNSクエリの応答のNSECレコードでは、存在するドメイン名をハッシュ化したものが使用される」です。

DNSSECは、DNSの応答が正当であることを公開鍵暗号方式と電子署名を用いて検証するための仕組みです。

ゾーンの管理者は、まず秘密鍵と公開鍵の鍵ペアを作成します。秘密鍵を用いて、ゾーンの各レコードに電子署名を付与します。また、公開鍵の情報を親ゾーンに登録することによりDNSの問い合わせの際に参照できるようにします。これにより、DNSを問い合わせる側が応答の電子署名が正当なものであるか検証できるようになります。

DNSSECでは各レコードに電子署名を付与するため、存在しないレコードには電子署名を付与することができません。そのため、問い合わせたレコードが存在しないことを応答するためNSECレコードやNSEC3レコードが使用されます。

例題の各選択肢について解説します。

1. ZSKとKSKの2種類の鍵を使用することにより、秘密鍵漏洩のリスクを軽減できる
正しいです。
ZSK (ゾーンに署名する鍵) とKSK (ZSKに署名する鍵) の2種類の鍵ペアを作成し、KSKを親ゾーンに登録します。これにより、ZSKの秘密鍵が漏洩したとしても親ゾーンの情報を更新することなくすぐにZSKを更新でき、漏洩のリスクが軽減できます。

2. ゾーンの署名を有効にするには、子ゾーンのDNSKEYレコードに登録した公開鍵のハッシュ値を親ゾーンのDSレコードに登録する必要がある
正しいです。
親ゾーンのDSレコードと子ゾーンのDNSKEYレコードのハッシュ値を比較することにより子ゾーンの鍵が正当であることを確認できます。この仕組みを「信頼の連鎖」と呼びます。

3. DNSクエリの応答でADビットが1となっている場合、DNSSECによる検証が成功している
正しいです。
DNSSEC検証が成功するか確認するには、例えば下記のようにdigコマンドに+dnssecオプションを使用して実行します。flags:欄にadがあればDNSSECによる検証が成功していることとなります。

$ dig +dnssec example.com

; <<>> DiG 9.16.23-RH <<>> +dnssec example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13332
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 1

(以下略)

4. DNSクエリの応答のNSECレコードでは、存在するドメイン名をハッシュ化したものが使用される
誤りです。よって例題の正解となります。
存在しないレコードについて検証を行う仕組みとして、辞書順で次に存在するレコードを応答するNSECが当初考案されました。しかしNSECでは応答されたレコードを次々と問い合わせることによりゾーン内のレコードの一覧を入手できる「ゾーン列挙」が可能であることが判明しました。これに対処するため、存在するレコードをハッシュ化したものを使用するNSEC3が考案されました。

DNSSECの仕組みを理解して、よりセキュアなDNSサーバを構築できるよう準備しましょう。


例題作成者

株式会社デージーネット 経営企画室 加茂 智之

ページトップへ