17
DNSのセキュリティホールを修正する新しいツール

OpenDNSの新しい無料ツールは、ドメインネームシステム(DNS)ルックアップ(平易な英語のドメイン名を数値のインターネットアドレスに変換する作業)のセキュリティを強化することを約束します。DNSCryptは、第三者がDNSリクエストを傍受し、ブラウザ、メールクライアント、その他のソフトウェアを悪意のあるサイトや偽のサイトに誘導する書き換えを防ぐことができます。面倒なインターネット接続のように聞こえるかもしれませんが、セキュリティを大幅に向上させます。

このソフトウェアは、ソフトウェアクライアントがどのインターネットサーバーを信頼するかを決定する方法における重大な欠陥に対処します。先日説明したように、クライアント(Webブラウザなど)とサーバーは、証明機関(CA)と呼ばれる第三者機関にサーバーの身元を証明させることで、相互に暗号化された接続を確立します。

これらのCAは、ドメイン名(macworld.com)または特定のホストとドメインの組み合わせ([削除されたリンク])に紐付けられたデジタル文書をサイト運営者に提供します。クライアントは、サーバーの文書のデジタル署名を信頼できるCAのリストと照合することで、その文書を検証できます。これらのリストは、オペレーティングシステム(Mac OS Xの場合はキーチェーンアクセスで表示できます)や一部のブラウザ(Firefoxが代表例)に組み込まれています。

残念ながら、このシステムには欠陥があります。検証プロセスの1つのステップが暗号的に保護されていないのです。CAは、サーバー名またはドメイン名のテキストのみを記載した証明書を発行します。これは、サイト運営者がサーバーを異なるドメインに移動したり、複数のIPアドレスを同じドメイン名に応答させたりするための柔軟性を提供するためです。インターネット接続を行うソフトウェアクライアントは、改ざんから保護されていないプレーンテキストクエリでこれらの名前を要求する必要があります。これにより、DNSリクエストで正当な値を「不正な」値に置き換えることで悪用される脆弱性が生まれます。そのため、コンピューターがwww.example.comにアクセスしたい場合、DNSサーバーはIPアドレス1.2.3.4を返すはずですが、代わりに5.6.7.8という不正な値が返される可能性があります。

仕組み

名前から推測できるように、DNSCryptはDNSクライアントとサーバーのネゴシエーションのこの段階を暗号化するため、このような不正行為を阻止できます。これにより、SSLで保護されているサーバーだけでなく、それほど保護されていないサーバーへのなりすましからも保護されます。クライアントソフトウェアが通常のウェブサイト、保護されていないメールサーバー、その他のインターネットサービスに接続する場合でも、DNSCryptはそのルックアップの正確性を維持し、いわゆる「Evil Twins」などのホットスポットやネットワークのなりすまし技術を阻止します。

ソフトウェアクライアントが DNS 要求を行うと、コンピュータはオペレーティングシステムの DNS リゾルバに問い合わせを行い、リゾルバはそのクエリを TCP/IP 設定にリストされている DNS サーバの 1 つに渡します (OS X では、各アダプタのネットワーク環境設定パネルにあります)。その DNS サーバは次に、その要求を上位レベルのサーバのチェーン (たとえば、.com ルート) に渡し、最終的に特定のドメインの情報を管理する DNS サーバに渡します。結果はリゾルバに送り返されます (ふう)。DNSCrypt は、DNS ルックアップが、個人またはコーヒーショップのインターネット サービス プロバイダ (ISP) が運用する DNS サーバではなく、OpenDNS を経由するように強制します (システムを常に OpenDNS または Wi-Fi などの別のサービスを指すように設定することもできますが、そうでない場合は、ネットワーク ルータがコンピュータまたはデバイスにローカル アドレスを割り当てるときにサーバ アドレスが提供されます)。

OpenDNS は、多くの ISP の DNS サーバーが遅くて信頼性が低いために誕生しました。他の DNS サーバーに代わる無料かつ効率的な選択肢として (そして今も) 存在しています。しかし、ここ数年でこれらの ISP は運用を改善してきました。これに応えて、OpenDNS はユーザーを惹きつけるために、無料のもの (フィッシング詐欺フィルタリングなど) と有料のもの (フィルタリングや使用状況レポートなど) を追加しました。OpenDNS は、よくあるタイプミスを自動的に修正し、たとえば.cmoに変更します.com。(一部のセキュリティ専門家は、無効なドメイン名の入力を広告収入を得ている Google 検索ページにリダイレクトするという同社のポリシーを批判していますが、不思議なことに、無料の代替 DNS サービスも提供している Google は、このようなポリシーを採用していません。)

DNSCryptはOpenDNSのサービスのみで動作しますが、OpenDNSは仕様とソフトウェアをオープンソースとして公開しています。つまり、このシステムは他の用途にも導入でき、プラグイン(Firefoxのアドオンなど)にしたり、クライアントソフトウェアに直接組み込んだりすることも可能です。(DNSCryptはOpenDNSの無料サービスと有料サービスの両方で動作し、無料で利用できます。)

使い方

DNSCryptをインストールすると、システム環境設定に新しいパネルが作成されます(現在のバージョンは0.7ですが、安定して使用できるはずです)。そこで「OpenDNSを有効にする」ボックスにチェックを入れると、ネットワークのDNSサーバーがOpenDNSが運営するサーバーに切り替わります。次に、「DNSCryptを有効にする」にチェックを入れます。何らかの理由(政府機関の対応やWi-Fiホットスポットのファイアウォールの不具合など)でこの暗号化接続がブロックされるネットワークの場合は、「DNSCrypt over TCP/443」オプションを選択できます。これによりDNSルックアップにわずかな遅延が発生する可能性がありますが、通常のセキュアなWebトラフィックに偽装されるため、どこでも問題なく動作するはずです。

DNS暗号化
DNSCryptの設定パネル

ソフトウェアの暗号化オプションを有効にすると、ステータスが「保護」に変わり、メニューバーのアイコンに緑色の点が表示されます。安全な接続が確立できない場合は、空欄を埋める状態に何か問題がある可能性が高いです。

DNSCryptは、前述の9月の記事で紹介したFirefoxプラグイン「Perspectives」と相性抜群です。Perspectivesは、インターネット上のサーバーから発行されるSSL/TLS証明書を常にチェックし、証明書の変更履歴を追跡する証明書公証サービスと連携します。DNSCryptがドメイン名検索の整合性を保護し、Perspectivesが疑わしい証明書について警告を発することで、通常であれば陥りがちな罠を回避できます。

このセキュリティギャップを埋めるには、多くの関係者の協力が必要であり、その多くは利害が対立しています。それが実現するまでは、DNSCryptは適切な中間的な対策となるでしょう。

[Glenn Fleishman 氏は Macworld の上級寄稿者であり、 『Take Control of Your 802.11n AirPort Network』 (Take Control Books、2011)の著者であり The Economist でセキュリティとテクノロジーに関する記事を執筆しています。]

DNS暗号化