目次
はじめに
今回も、応用情報技術者試験の過去問を解いていきます。
今回のテーマは DNSSEC(DNS Security Extensions) です。
DNSは、Webサイトを見るときなどに「ドメイン名をIPアドレスへ変換する」重要な仕組みです。
しかし、DNSの情報が偽造されると、利用者が本物だと思ってアクセスした先が、実は偽サイトだったということも起こり得ます。
そこで登場するのがDNSSECです。
ポイントは、
DNSSECは通信を暗号化する技術ではなく、DNSデータが正当な提供元からのもので、途中で改ざんされていないことを検証する技術
という点です。
問題
問37:DNSSECで実現できることはどれか。
| 選択肢 | 内容 |
|---|---|
| ア | DNSキャッシュサーバが得た応答の中のリソースレコードが、権威DNSサーバで管理されているものであり、改ざんされていないことの検証 |
| イ | 権威DNSサーバとDNSキャッシュサーバとの通信を暗号化することによる、ゾーン情報の漏えいの防止 |
| ウ | 似た文字を用いたドメイン名で正規サイトに見せかける攻撃の防止 |
| エ | 利用者のURL入力ミスを悪用して偽サイトへ誘導する攻撃の検知 |
解答
正解:ア
解説
DNSSECは、DNSデータにデジタル署名を付与し、
- 正当な提供元からのDNS情報であるか
- DNS情報が途中で改ざんされていないか
を確認する仕組みです。
通常のDNS名前解決を簡単に表すと、次のようになります。
利用者PC
│
▼
DNSキャッシュサーバ
│
▼
権威DNSサーバ
利用者は毎回権威DNSサーバへ直接問い合わせるわけではなく、一般的にはDNSキャッシュサーバ(リゾルバ)を経由します。
ここで問題になるのが、DNSキャッシュポイズニングです。
DNSキャッシュポイズニングとは
DNSキャッシュポイズニングとは、DNSキャッシュサーバに偽のDNS情報を記憶させる攻撃です。
例えば、本来は次のような情報だったとします。
example.com
↓
192.0.2.1
ところが攻撃によって、
example.com
↓
203.0.113.99
という偽のIPアドレスをキャッシュさせられてしまうと、利用者は正しいURLを入力しているにもかかわらず、偽サイトへ誘導される可能性があります。
利用者からすると、
「URLは合っているのに、行き先が違う」
という、かなり厄介な状態です。
DNSSECは何をするのか
DNSSECでは、DNSデータに対してデジタル署名を付与します。
厳密には、個々のDNSレコードではなく、同じ名前・種類などを持つDNSリソースレコードの集合であるRRset(Resource Record Set)に署名します。
試験対策としては、
「DNSデータに電子署名を付ける」
と理解しておけば十分です。
イメージは次のとおりです。
権威DNSサーバ
│
├─ DNSデータ(RRset)
│
└─ 秘密鍵で署名
↓
RRSIG
│
▼
DNSSEC検証対応リゾルバ
│
├─ 公開鍵を取得
│
└─ 署名を検証
↓
「正当なデータか」
「改ざんされていないか」
を確認
DNSSEC検証に成功すれば、DNS情報が署名後に書き換えられていないことを確認できます。
DNSSECは「通信の暗号化」ではない
ここは試験で非常に重要です。
DNSSECという名前を見ると、
「DNS通信を暗号化しているのかな」
と思いがちですが、そうではありません。
DNSSECが提供するのは主に、
- データ出所の認証
- データの完全性
です。
通信内容そのものを秘密にする機能はありません。
整理すると次のようになります。
| 機能 | DNSSEC |
|---|---|
| DNSデータの出所確認 | ○ |
| DNSデータの改ざん検出 | ○ |
| 通信内容の暗号化 | × |
| 通信内容の秘匿 | × |
つまり、
「正しい相手から来た情報か」「途中で変えられていないか」は確認できるが、「中身を他人から見えなくする」仕組みではない
ということです。
DNSSECとDNSキャッシュポイズニングの関係
DNSSECは、DNSキャッシュポイズニング対策として重要です。
攻撃者が偽のDNS情報を作ったとしても、正しい秘密鍵を持っていなければ有効なデジタル署名を作ることはできません。
そのため、DNSSEC検証を行うリゾルバでは、偽造されたDNS情報を検出できます。
ただし、
「DNSSECを使えば、あらゆるDNSキャッシュポイズニングを無条件に防げる」
という意味ではありません。
DNSSECの効果を得るには、
- 対象ゾーンがDNSSECで署名されている
- リゾルバ側がDNSSEC検証を行っている
- 信頼の連鎖を正しく確認できる
といった条件が必要です。
したがって、
DNSSECを正しく導入・検証することで、偽造DNS情報の受入れを防ぐことができる
と理解するのが正確です。
DNSSECで使われる主なレコード
DNSSECを少し詳しく見ると、いくつか専用のDNSレコードが登場します。
| レコード | 役割 |
| DNSKEY | 公開鍵を保持する |
| RRSIG | DNSデータに対するデジタル署名 |
| DS | 親ゾーンと子ゾーンの信頼関係をつなぐ |
| NSEC / NSEC3 | DNS名やレコードが存在しないことを証明する |
応用情報技術者試験では、まずは
DNSKEY=公開鍵
RRSIG=署名
くらいを押さえておけば理解しやすいです。
信頼の連鎖とは
DNSSECでは、公開鍵を取得したからといって、その公開鍵を無条件に信用するわけではありません。
DNSの階層構造を利用して、
ルート
↓
トップレベルドメイン
↓
example.com
という形で、親ゾーンから子ゾーンへ信頼関係をつないでいきます。
これを信頼の連鎖(Chain of Trust)と呼びます。
その際に使われるのがDSレコードなどです。
試験でDNSSECを深掘りされたときは、
電子署名だけでなく、信頼の連鎖も重要
と覚えておくとよいでしょう。
各選択肢の解説
今回の選択肢を整理すると、次のようになります。
| 選択肢 | 判定 | 解説 |
| ア | ○ | DNSSECはDNSデータの出所と完全性を検証できる |
| イ | × | DNSSECはDNS通信そのものを暗号化する技術ではない |
| ウ | × | DNSSECとは異なる攻撃・対策に関する内容 |
| エ | × | DNSSECとは異なる攻撃・対策に関する内容 |
元問題の選択肢が「IDNホモグラフ攻撃」や「タイポスクワッティング」に関するものであれば、それぞれDNSSECとは別の問題です。
問題の用語解説
DNS
DNSは、
ドメイン名とIPアドレスなどの情報を対応付ける仕組み
です。
例えば、
example.com
↓
192.0.2.1
のように、人間が扱いやすいドメイン名を、コンピュータが通信に利用するIPアドレスへ対応付けます。
権威DNSサーバ
権威DNSサーバは、担当するドメインについて正式なDNS情報を保持するDNSサーバです。
例えば、
example.com
を管理している権威DNSサーバであれば、
www.example.com
mail.example.com
などのDNS情報を管理します。
DNSキャッシュサーバ
DNSキャッシュサーバは、利用者からDNS問い合わせを受け付け、必要に応じて他のDNSサーバへ問い合わせを行うサーバです。
一度取得したDNS情報を一定時間キャッシュすることで、毎回同じ問い合わせを最初から行わなくて済むようにしています。
DNSSEC
DNSSECはDNS Security Extensionsの略です。
DNSデータにデジタル署名を付与することで、
- データ出所の認証
- データ完全性の確認
を行います。
| 項目 | DNSSEC |
| 出所の認証 | ○ |
| データ完全性 | ○ |
| 改ざん検出 | ○ |
| 通信暗号化 | × |
DNSキャッシュポイズニング
DNSキャッシュサーバへ偽のDNS情報を登録させる攻撃です。
攻撃に成功すると、
正しいドメイン名
↓
攻撃者が用意したIPアドレス
という状態を作れる可能性があります。
結果として、
- 偽サイトへの誘導
- フィッシング
- マルウェア配布サイトへの誘導
などにつながる可能性があります。
体系的位置づけ
DNSSECは、学習上は次のように整理すると分かりやすいです。
テクノロジ系
├ ネットワーク
│ └ DNS
│ ├ 名前解決
│ ├ 権威DNSサーバ
│ ├ キャッシュDNS
│ └ DNSSEC
│
└ セキュリティ
├ 完全性
├ 公開鍵暗号
├ デジタル署名
└ DNSキャッシュポイズニング対策
DNSSECはネットワーク技術でありながら、
公開鍵暗号やデジタル署名と密接に関係するセキュリティ技術
でもあります。
今回の問題の重要ポイント
今回押さえておきたいポイントは4つです。
① DNSSECはDNSデータを検証する
最重要ポイントです。
DNSSEC
↓
DNSデータの出所を確認
+
改ざんされていないか確認
② 通信は暗号化しない
DNSSEC
≠
DNS通信の暗号化
ここは選択肢で狙われやすいポイントです。
③ デジタル署名を使う
秘密鍵
↓
DNSデータに署名
公開鍵
↓
署名を検証
公開鍵暗号とデジタル署名の知識がそのままDNSSECにつながります。
④ DNSキャッシュポイズニング対策になる
DNSSEC検証を正しく行うことで、
攻撃者が作った偽のDNS情報を検出できる
ため、DNSキャッシュポイズニング対策として有効です。
関連するセキュリティ技術も整理しておく
応用情報技術者試験では、DNSSECだけでなく、さまざまなセキュリティ技術が登場します。
ここで一度整理しておきます。
セキュリティ関連技術
① メールセキュリティ
② メール暗号・電子署名
③ Web認証・認可
④ DNSセキュリティ
⑤ ネットワークアクセス制御
メールセキュリティ
メールでは、
- スパム対策
- なりすまし対策
- 送信制御
などがあります。
ベイジアンフィルタ
メール本文などに含まれる単語の出現傾向から、統計的にスパムメールかどうかを判定する技術です。
単語の出現傾向
↓
スパムである確率を推定
↓
迷惑メール判定
SPF
SPFは、送信元IPアドレスが、
そのドメインを使ってメールを送信することを許可されているか
を確認する仕組みです。
DNS
↓
送信を許可するIPアドレスを公開
受信メールサーバ
↓
実際の送信元IPと照合
DKIM
DKIMは、メールにデジタル署名を付けることで、
- 署名したドメインとの関連
- 署名対象部分が変更されていないこと
を検証する仕組みです。
メール送信
↓
デジタル署名
↓
受信側で公開鍵を使って検証
DMARC
DMARCは、SPFやDKIMの認証結果に加えて、
メールのFromドメインとの整合性
を確認する仕組みです。
さらに、認証に失敗したメールを、
- そのまま受信する
- 隔離する
- 拒否する
といったポリシーを指定できます。
SMTP-AUTH
SMTP-AUTHは、メールを送信するときに利用者を認証する仕組みです。
正規ユーザーか確認してからメール送信を許可します。
OP25B
OP25Bは認証技術ではありません。
ISPなどが、利用者回線から外部のSMTPサーバへ直接TCP25番ポートで通信することを制限する仕組みです。
主にボットなどからの迷惑メール大量送信を防止する目的で利用されます。
メール暗号・電子署名
PGP
PGPは、電子メールなどの暗号化やデジタル署名に利用される技術です。
一般的には、
共通鍵暗号
+
公開鍵暗号
+
デジタル署名
などを組み合わせて利用します。
S/MIME
S/MIMEは、X.509電子証明書などを利用して、
- メールの暗号化
- デジタル署名
を行う仕組みです。
企業メールなどでも利用されています。
Web認証・認可
OAuth 2.0
OAuthは認証ではなく認可のための仕組みです。
例えば、
ユーザー
↓
外部サービスに権限を許可
↓
アプリがAPIへアクセス
という場面で利用されます。
ポイントは、
「誰なのかを確認する」のではなく、「何をしてよいかを許可する」
仕組みだということです。
OpenID Connect
「Googleでログイン」のようなログイン機能では、OAuth 2.0を基盤に認証機能を追加したOpenID Connect(OIDC)が利用されることがあります。
整理すると、
OAuth 2.0
↓
認可
OpenID Connect
↓
認証
です。
OAuthとログインを完全に同じものとして覚えないように注意しましょう。
DNSセキュリティ
DNS分野では今回のDNSSECが登場します。
DNS
↓
DNSSEC
↓
デジタル署名
↓
DNSデータの出所と完全性を検証
DNSキャッシュポイズニングとの組合せで覚えておくと理解しやすいです。
ネットワークアクセス制御
IEEE 802.1X
IEEE 802.1Xは、LANなどへの接続時に利用者や端末を認証し、ネットワークへのアクセスを制御する規格です。
基本構成は次の3つです。
Supplicant
利用者・端末
│
▼
Authenticator
スイッチ・無線LAN機器
│
▼
Authentication Server
認証サーバ
EAP
EAPはExtensible Authentication Protocolの略です。
さまざまな認証方式を利用するためのフレームワークです。
代表例には、
- EAP-TLS
- PEAP
などがあります。
EAP-TLS
EAP-TLSは、TLSと電子証明書を利用して認証を行う方式です。
PEAP
PEAPはTLSトンネルを作り、その内部で認証を行う方式です。
RADIUS
RADIUSは、ネットワークアクセスにおける、
- 認証
- 認可
- アカウンティング
などに利用されるプロトコルです。
「RADIUSサーバ」という形で実装されるため、サーバ名のように見えますが、RADIUS自体はプロトコルです。
Diameter
Diameterは、RADIUSの後継として設計されたAAAプロトコルです。
セキュリティ関連技術の全体整理
最後にまとめてみます。
セキュリティ関連技術
①メールセキュリティ
├ スパム対策
│ └ ベイジアンフィルタ
│
├ 送信ドメイン認証
│ ├ SPF
│ ├ DKIM
│ └ DMARC
│
└ メール送信・通信制御
├ SMTP-AUTH
└ OP25B
②メール暗号・電子署名
├ PGP
└ S/MIME
③Web認証・認可
├ OAuth 2.0
└ OpenID Connect
④DNSセキュリティ
└ DNSSEC
⑤ネットワークアクセス制御
├ IEEE 802.1X
│ └ EAP
│ ├ EAP-TLS
│ └ PEAP
│
└ AAA
├ RADIUS
└ Diameter
似たような用語が大量に出てきますが、
「何を守っている技術なのか」
で分類すると覚えやすくなります。
まとめ
今回の問題では、DNSSECの役割が問われました。
ポイントを整理します。
| ポイント | 内容 |
| DNSSECの目的 | DNSデータの出所と完全性を検証する |
| 使用する技術 | デジタル署名 |
| 秘密鍵 | DNSデータへの署名に使用 |
| 公開鍵 | 署名検証に使用 |
| 通信暗号化 | 行わない |
| 主な対策 | 偽造DNS情報の検出・DNSキャッシュポイズニング対策 |
試験対策として最も重要なのは、
DNSSEC
=
DNSデータにデジタル署名
=
出所と完全性を確認
という関係です。
そして、
DNSSEC
≠
通信暗号化
であることもセットで覚えておきましょう。
DNSSECは、DNS、公開鍵暗号、デジタル署名、完全性といった複数分野の知識がつながるテーマです。
単語だけ暗記するよりも、
「偽のDNS情報を渡されたとき、本物かどうやって確認するのか」
と考えると、仕組みを理解しやすくなります。


コメント