DNSCrypt

DNSCryptは、コンピュータとDNSサーバー間の通信を保護するプロトコルです。具体的には、DNSクエリと応答を暗号化し、改ざんを検出する仕組みを提供します。このプロトコルは、Frank DenisとYecheng Fuによって設計されましたが、IETFによる標準化はされていません。

DNSCryptの仕組み



DNSCryptは、DNSトラフィックを暗号化された構造で包むことで、中間者攻撃による情報漏洩や改ざんを防ぎます。エンドツーエンドのセキュリティを提供するわけではありませんが、ローカルネットワーク内でのセキュリティを向上させるのに役立ちます。また、UDPベースの増幅攻撃を軽減する機能も備えています。これは、クライアントが送信するクエリサイズを、少なくとも応答と同じ大きさにすることで実現しています。

DNSCryptの採用



DNSCryptは、プライベートネットワークだけでなく、OpenNICネットワークのメンバーやVPNサービスでも利用されています。OpenDNSが2011年に初めてDNSCryptをサポートし、その後、CloudNS Australia、Yandex、AdGuard、Quad9などの主要なDNSサービスプロバイダーも導入しています。特に、AdGuardはDNSフィルタリングモジュールにDNSCryptを追加することで、ユーザーがISPのDNSサーバーからよりプライベートなサーバーに移行できるよう支援しています。

プロトコルの詳細



DNSCryptは、UDPまたはTCPを使用でき、デフォルトポートは443です。HTTPSと同じポートを使用しますが、プロトコル自体は異なります。DNS over [[HTTPS]]とは異なり、DNSCryptはクライアントが事前にプロバイダーの公開鍵を信頼する必要があり、証明書検証に従来のDNSクエリを使用します。暗号化には、X25519アルゴリズム、EdDSA署名、XSalsa20-Poly1305またはXChaCha20-Poly1305が用いられています。クライアントはクエリごとに新しい鍵を生成し、サーバーは24時間ごとに鍵をローテーションすることが推奨されています。

アクセス制御とアカウンティング



DNSCryptプロトコルは、あらかじめ定義された公開鍵のみを受け付けるため、アクセス制御やアカウンティングにも使用できます。これにより、商業DNSサービスはIPアドレスに依存せずに顧客を識別することが可能になります。

パディングと暗号化



クエリと応答は同じアルゴリズムで暗号化され、パケットサイズの漏洩を防ぐために64バイトの倍数にパディングされます。UDPを使用している場合、応答がクエリよりも大きくなると、サーバーはTCビットを立てた短いパケットで応答し、クライアントはTCPを介して再試行する必要があります。この際にパディングを増やすことで、パケットサイズが固定化されます。

匿名DNSCrypt



匿名DNSCryptは、DNSのプライバシーをさらに向上させるために開発されたプロトコル拡張です。この拡張では、リゾルバがプロキシとして機能し、クライアントの実際のIPアドレスを隠蔽します。匿名DNSCryptは、TorやSOCKSプロキシの代替手段として機能し、DNSトラフィックに特化しています。2019年の導入以降、その採用は急速に進んでいます。

まとめ



DNSCryptは、DNSセキュリティを強化するための重要なプロトコルであり、中間者攻撃や増幅攻撃に対する有効な防御策を提供します。匿名DNSCrypt拡張により、プライバシー保護も強化され、現代のインターネット環境においてより安全なDNS通信を実現するための選択肢となっています。現在、DNSCryptプロトコルに既知の脆弱性はなく、その基盤となる暗号構造に対する現実的な攻撃も確認されていません。

関連技術



DNS over [[HTTPS]]
DNS over TLS
DNSセキュリティ拡張機能(DNSSEC)
楕円曲線暗号
Curve25519
DNSCurve

外部リンク



公式ウェブサイト
DNSCryptプロトコル仕様

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。