Check-Host.cc

グローバルDNSKEY検証ツール

DNSKEYリソースレコードは、DNSSEC (Domain Name System Security Extensions) の暗号化の基盤です。コアのDNSプロトコルは本質的に暗号化されておらずステートレス (Stateless) であるため、キャッシュポイズニングや中間者 (MitM) スプーフィングに対して非常に脆弱です。DNSSECは、DNS応答に数学的・暗号化された署名を添付することでこれを解決します。DNSKEYレコードは公開鍵のリポジトリとして機能します。AまたはMXレコードのペイロードが本物の権威ネームサーバーから発信され、転送中に改ざんされていないことを検証するために、リモートリゾルバが使用するBase64エンコードされた公開鍵を保持します。

ZSKとKSKアーキテクチャ

標準的なDNSSECの実装では、セキュリティと運用効率のバランスをとるために2つの異なる鍵を展開します。Zone Signing Key (ZSK) は、ゾーン内の個々のレコード (A、TXT、CNAME) に高速に署名するために使用される、オーバーヘッドが低くサイズの小さい暗号鍵です。ZSKは一括署名 (Bulk Signing) を処理するため、ブルートフォースクラッキングを防ぐために頻繁に (例: 30日ごとに) ローテーションされます。Key Signing Key (KSK) は、より強力で厳重に保護された鍵です。その唯一の目的は、ZSK自体に署名することです。これらの鍵を分離することで、管理者は親のTLDレジストリと常に通信することなく、ネームサーバー上でローカルにZSKをローテーションできます。

Chain of Trust (信頼の連鎖) とDSレコード

インターネットのルートまで拡張する検証可能な信頼パスがない限り、ゾーンにDNSKEYレコードを公開しても無意味です。KSKが署名を生成すると、そのKSKの数学的ハッシュがDS (Delegation Signer) レコードとしてドメインレジストラに送信されます。レジストラはこのDSレコードを親のTLDゾーン ( .com レジストリなど) に公開します。再帰的リゾルバがドメインにクエリを実行すると、親からDSレコードを取得してKSKを認証し、KSKを使用してZSKを認証し、ZSKを使用して最終的なIPアドレスを認証します。この暗号化チェーンのリンクが1つでも壊れると、検証は完全に失敗します。

致命的なSERVFAILの停止

DNSKEYレコードの管理には絶対的な精度が求められます。DNSSECは「フェイルクローズド (Fail Closed)」になるように設計されています。自動化スクリプトがサーバー上でZSKをローテーションしたのに、対応するパブリックDNSKEYレコードがグローバルゾーンで更新されなかった場合、暗号化署名は一致しなくなります。ISPや、Google (8.8.8.8) やCloudflare (1.1.1.1) などのパブリックリゾルバは、これをアクティブなサイバー攻撃と解釈します。彼らはDNS応答を即座に破棄し、クライアントに致命的な SERVFAIL ステータスを返し、鍵が手動で同期されるか、レジストラレベルでDNSSECが完全に無効化されるまで、事実上インターネットからそのドメインを消去します。