chain
2010年04月01日
1.DNSSECとは
DNSにおける問い合わせと回答が、本当に正しいDNSからの回答であこと、また回答が改竄されていないことを公開鍵暗号方式の技術を使い保証するDNSの拡張機能である。
DNS Security Extension。
このDNSのセキュリティ拡張によって、権威サーバからの回答を、キャッシュサーバもしくはリゾルバは、完全性と正当性を検証することが可能となる。
2.DNSSEC 関連のRFCと参考リンク
[RFC4033]は DNSSECの概要と用語
[RFC4034]はリソースレコードの定義
[RFC4035] はDNSSECプロトコル処理
その他のリンクは、こちらにまとめてある。
3.DNSSECの用語
(1)公開鍵暗号方式
DNSSECでは、公開鍵暗号方式を使ってドメインあたり2種類の鍵ペアを使い分けて、電子署名を行う。
鍵ペアは、秘密鍵と公開鍵で一対をなし、いずれかの片方の鍵で暗号化した情報は、もう一方の鍵で容易に復号化できる。
他者への盗聴を防ぐためには、情報の発信者は、受信者の公開鍵を使って情報を暗号化する。受信者は、自分しか知らない秘密鍵で容易に暗号を復号できる。
秘密鍵を持っていない人は、非常に長い計算を行わないと復号化できない仕組みになっている。
こうして情報の秘匿性を確保する。
(2)電子署名
電子署名とは、情報の発信者が正しい人であることを受信者に証明する鍵ペアの使い方である。
情報の発信者は、送信情報を自分の秘密鍵を使って暗号化する。情報の受け取り手は、送り手の公開鍵を使って復号化する。正常に復号化できれば、受け取り手は、情報の送り手しか持っていない秘密鍵で暗号化したことがわかるため、情報の送り手は正しい人であり、偽者が送ってきた情報でないことがわかる。誰でも暗号を復号できるので、情報の秘匿性は確保できない。
(3)DNSSECにおける鍵の種類
DNSSECにおいてゾーン管理者は、以下の2種類の鍵ペアを使用する。
A) ZSK (Zone Signing Key)
自ドメインのゾーンファイルを署名するための鍵ペア。
B) KSK (Key Signing Key)
ZSKを署名するための鍵ペア。
(4)DNSSECにおけるレコード(RR)の種類
通常のDNSのRRは、Aレコード、NSレコード、SOAレコード、PTRレコード、MXレコードなどが主に使用される。
DNSSECでは、これらに以下の4種類が追加される。
A) DNSKEY(DNS Public Key)
自分のZSKやKSKの公開鍵を記載するレコード。 DNSキャッシュサーバはここに記述されている公開鍵を使用して、署名を検証する。
B)RRSIG(Resource Record Signature)
RRSIGは、ゾーンファイル内の各レコードに電子署名したレコード。 SOAレコードを含む全てのレコード毎に作られる。 DNSキャッシュサーバはこのRRSIGに記述されている署名を使用し、問い合わせた結果が正当であるかを検証する。
C)DS(Delegation Signer)
下位のDNSが持っているKSK公開鍵のハッシュ値。このレコードで、上位と下位のDNS間で鍵の信頼がつながる。
D)NSEC(Next Secure)
問い合わせレコードが存在しなかった場合、不存在の回答に署名するためのレコード。アルファベット順にソートしたレコードから問い合わせレコードを探し、見つからなかった場合、その前後にあったレコードを提示して不在証明とする。 問い合わせに関係のないレコードを提示していしまうために、機械的にNSECレコードを取得することで、ゾーン内の全レコードを習得できてしまうという、zoneenumeration問題があるため、使用は推奨されない。
D')NSEC3
NSECに代わる不在証明のレコード。提示するレコード情報をハッシュ化し、zoneenumeration問題を回避している。
(5)DS方式による信頼の連鎖(chain of trust)
下図の通り。
ポイントは、キャッシュサーバ(やリゾルバ)が信頼している鍵を所持しておき、取得した情報の署名と公開鍵を連鎖的にたどっていき、信頼する鍵にたどりつくことで、その経路全てを信頼するという考え方である。
続きは、実践編。実際の設定を行っていく。
- ブログネタ:
- Linuxに関する運用 に参加中!