DNSSECのしくみは一言で言えば、
「応答を受け取ったサーバーが、その情報が本当に正しいものかを
確かめて、情報の信頼性を向上させるしくみ」
です。
DNSサーバーから返信された情報が正しいかどうかを検証できれば、
「DNSキャッシュポイズニング」を防ぐことができます。
そのためにDNSSECでは、「公開鍵暗号」「メッセージダイジェスト」
「電子署名」という3つのセキュリティ技術を使っています。
公開鍵暗号とは、一組の公開鍵とプライベーと鍵を使って、
暗号化と複合を処理する手法です。
公開鍵はその名のとおり公開が可能で、プライベート鍵は
本人のみが持って秘密にしておく鍵です。
DNSSECでは、公開鍵暗号のアルゴリズムとして「RSA」を利用しています。
メッセージダイジェストとは、一方向のハッシュ関数を使って、
任意の長さのメッセージを固定の長さの文字列に変換したものをいいます。
当然、元のメッセージが変われば、メッセージダイジェストも
変わることになりますので、変更の有無をチェックすることで、
改ざんを見分けることが可能です。
変換した文字列から、もとの文字列に変換することは
ほぼ不可能と言われています。
DNSSECでは、メッセージダイジェストのアルゴリズムとして、
「SHA-1」と「SHA-256」を利用しています。
電子署名とは、先ほど説明した「公開鍵暗号」と「メッセージダイジェスト」
を使って、メッセージのハッシュ値をプライベート鍵で暗号化したものを
いいます。
DNSSECでは、電子署名のアルゴリズムとして、「RSA」を利用しています。
DNSSECの応答には、この「公開鍵暗号」「メッセージダイジェスト」
「電子署名」を使ってDNSキャッシュサーバー側で、
情報の正当性を検証できる仕組みを付加しています。
電子署名を使って、情報を送りつけるDNSサーバー側で作成したハッシュ値と、
応答を受け取るDNSキャッシュサーバー側で求めたハッシュ値を照合し、
同じであれば正しい応答だと判断しています。
DNSキャッシュサーバーがDNSサーバーにIPアドレスの問い合わせをすると、
DNSサーバーは電子署名付きのIPアドレスを返信します。
応答を受け取ったDNSキャッシュサーバーは、予め登録しておいた電子署名と
一致するかをチェックし、正しい場合のみユーザーにIPアドレスの情報を
送信します。
このように、DNSSECを利用するには、双方で電子署名を使う必要があるため、
応答するDNSサーバー側はもちろん、DNSキャッシュサーバー側も
DNSSECに対応しておかなければいけません。
またDNSSECは、DNSの応答が正しいかどうかを検証する手法で、
DNSデータを暗号化するものではありません。