DNSSECのフロー

RRSIG(A)→DNSKEYレコード→ZSK→KSK→DSレコード

登場人物:
 DNSKEYレコード:ZSK,KSK格納
 ZSK(ZoneSigningKey)の公開鍵/秘密鍵:RRSIG(A)の署名
 RRSIG(Resource Record Signature):レコードの署名部分
 KSK(KeySigningKey):RRSIG(DNSKKEY)の署名検証鍵。
 DSレコード(Delegation Signer):親ゾーンがもつKSKのハッシュ値

ステップ1:レコード自体の検証(ZSKを使用)

  • 対象:Aレコードなど
  • 検証:権威DNSから取得したDNSKEYレコード内の ZSK公開鍵(ZoneSigningKey) を使い、Aレコードに付いている RRSIG(Resource Record Signature) を検証する。
    *DNSKEYレコードは、クライアントがAレコードを要求する際に「DNSSECのデータもちょうだい(DOフラグを立てる)」という合図を送ることによりDNSKEYレコードを取得できる。
    *RRSIG(A)は権威DNSがAレコードから生成したハッシュ値をZSK秘密鍵で暗号化したもの。
    *検証するときは検証側がZSK公開鍵で署名を復号し、出てきたハッシュ値と検証側でも生成したハッシュ値が一致することを確認する。
  • 結果:Aレコードが改ざんされていないことが判明。

ステップ2:ZSK公開鍵の検証(KSKを使用)

  • 対象:ZSK公開鍵が含まれる「DNSKEYレコード」
  • 検証:権威DNSから取得した KSKの公開鍵(KeySigningKey) を使い、DNSKEYレコードに付いている RRSIG(DNSKEY) を検証する。
  • 結果:ZSK公開鍵が本物であることが判明。
    *KSK公開鍵:
     ・DNSKEYレコード内に格納されている鍵。
     ・RRSIG(DNSKEY)を検証する鍵

     ・ZSK公開鍵の署名に使う
     ・KSKはDNSKEYレコード内に格納されている(=DNSKEYレコード内にはZSKとKSKがあるということ)

ステップ3:KSK公開鍵の検証(親ゾーンのDSレコードを使用)

親ゾーンからDSレコード(Delegation Signer)を取得し、KSKのハッシュ値が登録されていることを確認する。

ステップ4:ルートへの階段

DSレコードまで検証すると、あとは同じ仕組みでルートまで階段を駆け上がる。

1.RRSIG(DS)を親ゾーンから取得したDNSKEYレコード内のZSKで検証
2.DNSKEYレコードをDNSKEYレコード内のKSKで検証
3.KSKのハッシュ値を親ゾーンの親ゾーンのDSレコードで検証
1~3をルートゾーンにあるDSレコードで検証するまで繰り返す。

タイトルとURLをコピーしました