DNSSEC/SMIMEA 対応 MUA アドオンの実装
M2013SC005 平林 有理
指導教員 河野 浩之

1

はじめに

2.2

DANE

DANE は，DNSSEC によって信頼できる通信基盤と近年，DNS キャッシュポイズニング攻撃が大手 ISP で1なった
DNS を利用して，証明書情報をユーザへ伝達し，観測されている ．これまでは，DNS スプーフィングを受けても，重要な通信では TLS を利用するため大事に ユーザが利用するサービスの証明書を検証する仕組みでは至らないと考えられてきた．しかし，2011 年に発生 ある [2]．DANE を利用することで証明書の「ピン留め」した DigiNotar 事件を受け，この認識を改めなければな や，サービス管理者が自身で発行する自己署名証明書にらなくなった [4]．DigiNotar 事件を受けて注目されてい 信頼性をもたせることが可能となる．
るのが，DNS-based Authentication of Named Entities
2.3 S/MIME(DANE)[2] である．しかし，Mail User Agent (MUA) にS/MIME は，現在，広く用いられている電子メールのは未だに対応していない．
本研究では，DANE による Secure Multipurpose In- 暗号化と，デジタル署名に関するインターネット標準であternet Mail Extension (S/MIME) 証明書検証を可能に る．これまでの利用形態では，公開鍵の安全性を Trusted
する MUA 用のアドオン，SMIMEA Validator を作成す Third Party (TTP) である認証局に依存しており，利用る．SMIMEA Validator は，SMIMEA リソースレコード するには認証局に証明書を発行してもらう必要があった．
(SMIMEA RR) と呼ばれる証明書情報を，メール送信者 しかしながら近年，TTP を認証局ではなく，DNSSEC/が属するゾーンの DNS サーバから取得し，メール送信者 DANE を有効にした DNS にすることで，認証局に依存の S/MIME 証明書を検証する機能を備える．SMIMEA しない S/MIME 証明書検証システムが提案された [3]．
RR の仕様については，インターネットドラフトである 3 設計
draft-ietf-dane-smime-07[3] に準じる．また，SMIMEA
ここでは，本研究で実装する SMIMEA Validator の開Validator は，DNSSEC/TLSA Validator2 を基に実装し，発環境及び，設計について述べる．
マルチプラットフォームでの動作を目標とする．
検証実験では，レジストラからドメインを取得し， 3.1 SMIMEA Validator の開発環境
DNSSEC/DANE 対応の DNS サーバ (bind9 1:9.9.5.dfsg)
本研究で実装する SMIMEA Validator は，Web ブに 規 定 の リ ソ ー ス レ コ ー ド を 登 録 す る こ と で ，実 イ
ラ ウ ザ 向 け の DNSSEC/TLSA 検 証 ア ド オ ン で あ るン タ ー ネット を 用 い た 実 験 環 境 を 構 築 し た ．評 価 で
DNSSEC/TLSA Validator を元に作成する．開発 OS はは，GNU/Linux, Windows, Mac OSX, *BSD 向けにビルド環境が整っているという理由から Ubuntu 14.04
SMIMEA Validator をビルドし動作検証する．加えて，証LTS 64bit を利用した．また，最初の動作対象 MUA と明書検証にかかる時間の計測及び，本アドオンの有無によして，Mozilla Thunderbird を選定した．これは第 1 に，る Thunderbird の起動時間を計測することで，パフォーThunderbird がマルチプラットフォームに対応しているマンスを評価する．
点．第 2 に，開発元が同一である Mozilla Firefox で，本研究論文は全 6 節から構成される．2 節では本研究のDNSSEC/TLSA Validator の動作が確認できた点．第 3
前提とするインターネット標準について解説する．3 節でに，Firefox と Thunderbird には，アドオンのフォーマッは提案手法について説明する．4 節では使用するプログ
トに一定の互換性があり，DNSSEC/TLSA Validator のラムの実装を詳説し，5 節ではシステムの評価を述べる．
資源を再利用できる点．の 3 点の理由からである．
6 節ではまとめを示す．
3.2 DNSSEC/TLSA Validator

2

本研究の前提とするインターネット標準

この節では，本研究の前提となる規格である DNSSEC,DANE, S/MIME の概要と類似の先行研究についてそれぞれ 2.1 節, 2.2 節, 2.3 節で述べる．

2.1

DNSSECDNS Security Extensions (DNSSEC) は DNS 応答にデジタル署名を付与することで，その出自と完全性を証明する DNS の拡張仕様である [1]．DNS スプーフィング対策として近年注目されている．
1 http://jprs.jp/tech/security/
2014-04-15-portrandomization.html
2 https://www.dnssec-validator.cz

DNSSEC/TLSA Validator は ，CZ.NIC で Martin
Straka らによって開発され，GPL v3 で公開されているWeb ブラウザアドオンである．このアドオンを利用することで，Web ブラウザで表示するサイトのドメインをDNSSEC で検証でき，サーバ証明書を DANE で検証できる．DNSSEC, DANE の検証には ldns3 , OpenSSL4 及び，Unbound5 を用いて，C 言語で作成された共有ライブラリを利用している．

3 http://www.nlnetlabs.nl/projects/ldns/
4 https://www.openssl.org/
5 http://unbound.net/index.html

3.3

動作概要
図 2 SMIMEA Validator のシーケンス図

この節では SMIMEA Validator の動作概要について述べる．SMIMEA Validator は，MUA で受信した署名付きメールを表示した際に，対象メールアドレスの DNS サー
バに対して SMIMEA RR の送信を要求し，それを元にS/MIME 証明書を検証をする．
図 1 は送信者及び受信者が予め設定する手順も含めたシステム全体の動作概要図である．
図 1 システム動作概要図

一連の動作によってユーザ A は，署名付きメールに利用
ユーザ B 及びドメイン管理者の作業は次のようになる． された証明書が正当なものであることを検証できる．

1. ユ ー ザ B は ユ ー ザ B の S/MIME 証 明 書 か ら
SMIMEA を生成し，example.com のゾーン管理者に SMIMEA RR の登録を依頼する．
2. example.com のゾーン管理者はユーザ B の SMIMEARR を登録する．

実装

4

この節では，SMIMEA Validator の実装について述べる．
共有ライブラリの動作

4.1

3. ユーザ B がユーザ A に S/MIME による署名付きメールを送信．ユーザ A が受け取る．

SMIMEA Validator では，DNS サーバへの SMIMEAの要求/取得と，SMIMEA を利用した S/MIME 証明書
4. SMIMEA Validator によって，署名者のメールアドレ の検証に共有ライブラリを用いる．DNSSEC/TLSA Valスのドメイン (example.com) に対し，SMIMEA RR idator には既に DNS コンテンツサーバへの問い合わせ機を要求．当該 DNS コンテンツサーバから取得する． 能，TLSA RR を利用した証明書の検証機能については
5. SMIMEA Validator は SMIMEA RR に よって 実装されている．このため，本研究では，MUA から渡さS/MIME 証明書を検証し，証明書の正当性を確認 れたメール情報から SMIMEA の DNS クエリを生成する機能を実装した．また，共有ライブラリの動作を確認すする．
また，図 2 は SMIMEA Validator をインストールした るために，共有ライブラリのソースコードを単体で動作
MUA で検証するユーザ側の動作に注目したシーケンス 可能なプログラムとしてビルドし，テストプログラムを作成した．以下に実行結果を示す．
図である．
SMIMEA Validator は次のような手順で証明書を検証する．
1. ユーザ A は MUA 上で署名付きメールを表示する．

123

2. MUA は SMIMEA Validator へ S/MIME 証明書を受け渡す．

456

3. SMIMEA Validator は DANE によって SMIMEA をDNS サーバから取得する．

78

4. SMIMEA Validator は SMIMEA を利用して，MUAから受け取った S/MIME 証明書を検証する．
5. SMIMEA Validator は MUA に証明書の検証結果を返す．
6. MUA は結果を表示しユーザへ通知する．

9101112

DANE: Initialising DANE.
===中略===SMIMEA: Input parameters: domain=’smimea.red’;
local part=’crttest’; label=’smimecert’; options=3; resolver address=’(null)’;
SMIMEA: Using system resolver.
DANE: crypto: SHA−224
SMIMEA: Domain is secured by DNSSEC ... found
SMIMEA record(s).
===中略===SMIMEA: smimea.red: dnssec: SECURE (1), cert
usage: 3, selector: 0, matching type: 0, assoc.
hex: 3082052F30820417A0030201020...
===中略===
DANE: result: 13
DANE: Main result: 13
DANE: Deinitialising DANE.

このテストでは，対象の DNS コンテンツサーバからSMIMEA RR を取得し，テストプログラム中に埋め込んだ証明書を検証した．指定した local part，ドメイン名から SMIMEA RR を取得できていることが確認できる．
また，検証のステータス 13 は，Certificate Usage 3 のSMIMEA で証明書の検証に成功したことを示している．

4.2

図 3 ファイルの関係

アドオンのパッケージ構成

Thunderbird のアドオン作成には，規定の形式に則ったパッケージングが必要となる．ここでは，本研究で作成，および変更したアドオンのファイルについて述べる．
install.rdf
アドオンに関する情報が格納された XML ファイル，アドオンの名前や ID，バージョン，Thunderbird との互換性情報などを記述する．
chrome.manifest
Thunderbird を拡張するリソースを定義するファイ DANE での一連の SMIMEA 検証が可能となる．
ル．Thunderbird では，chrome と呼ばれる URI にアドオンのファイルをマッピングすることで利用する． 5 評価
thunderbirdOverlay.xul
SMIMEA Validator を利用した証明書検証が，様々なThunderbird の GUI に SMIMEA Vlidator のコン 環境で正常に動作することを確認する．また，SMIMEAポーネントを追加するファイル．本研究では標準で Validator による証明書検証時間の測定及び，Thunderbird
Thunderbird に組み込まれている msgHdrViewOver- 起動遅延時間の測定をする．
lay.xul を オ ー バ ー レ イ す る ．msgHdrViewOver5.1 DNS サーバの環境
lay.xul は S/MIME の検証機能を Thunderbird に提アドオンが正常に動作することを確認するために，レジ供している．S/MIME の検証結果表示ボックスにDANE での検証結果を表示するアイコンを追加し， ストラからドメインを取得し，DNSSEC/DANE に対応した DNS サーバを構築した．実際のインターネットを介使用する Javascript ファイルを指定する．
して署名付きメールを検証することによって，SMIMEA
smimea.js
Validator が有効に動作していることを確認する．本研究
SMIMEA 検証の共有ライブラリと Thunderbird をでは，ドメインの DNSSEC 対応のために，ISC が提供しつなぐ処理をする Javascript ファイル．Thunderbirdている ISC’s DNSSEC Look-aside Validation Registry6
から証明書を受け取り，smimealib.js に post する．
(ISC DLV Registry) を利用する．
smimealib.js
表 2 に DNS サーバの環境を示す．
SMIMEA 検証の共有ライブラリを Thunderbird 上で非同期に利用するための Javascript ファイル．
表 2 DNS サーバの環境
smimea.js から post されたドメイン情報，証明書情
Model
HP ML110 G7報などを js-ctypes を用いて共有ライブラリに渡す．
RRCPUIntel⃝Celeron⃝ProcessorG530
また，その結果を smimea.js に post する．
OSUbuntu 14.04 LTS amd64
libDANEcore-Linux-x86 64.so
Memory8GBネイティブで動作する DNSSEC 及び SMIMEA 検証
domainsmimea.red.の共有ライブラリ．
DNS Server BIND9 (1:9.9.5.dfsg amd64)
各ファイルの関係を図 3 に示す．
4.3

利用可能な検証

5.2

SMIMEA Validator を利用することで可能となる機能を表 1 に示す．SMIMEA Validator を利用することで，
表 1 SMIMEA Validator で可能となる機能
機能

DANE 証明書検証
PKIX 証明書検証
暗号化/復号

Certificate Usage0, 1, 2, 3
1-対応✓✓(MUA に搭載)✓(MUA に搭載)

他環境向けビルド

GNU/Linux, Windows, Mac OSX, *BSD 向け に
SMIMEA Validator をビ ル ド し ，各 OS で 動 作 す る
SMIMEA Validator を作成した．また，それぞれの OSにて SMIMEA Validator が正常に動作し利用できることを確認した．

6 https://dlv.isc.org/

5.3

検証パフォーマンス計測

ここでは，SMIMEA Validator で証明書検証にかかる時間を測定する．テストはそれぞれ，表 3, 表 4 の 2 つのクライアント環境で実施した．
表 3 GNU/Linux 検証時間計測のクライアント環境
CPU
OS
MemoryMUARIntel⃝Core
i7-3930K Processor @ 4cores
Ubuntu 14.04 LTS amd64 on VMware
8GB (DDR3-1600)
Thunderbird 31.3.0
TM

Validator を有効にした場合と無効にした場合で，それぞれ 20 回ずつ起動時間を測定しその平均値を比較することで行う．測定環境は，表 6 であり，計測結果は，表 7 の様になった．
表 6 起動時間測定の環境
CPUOS
MemoryMUA

表 7 起動時間測定の結果

表 4 Mac OSX 検証時間計測のクライアント環境
CPUOSMemory
MUA

TMRIntel⃝Core
i7-3540M CPU Processor
Mac OSX 10.10.1
8GB (DDR3-1600)
Thunderbird 31.4.0

TMRIntel⃝Core
i7-3930K Processor @ 4cores
Ubuntu 14.04 LTS amd64 on VMware
8GB (DDR3-1600)
Thunderbird 31.2.0

SMIMEA Validator 有効
SMIMEA Validator 無効

平均時間

最大時間

最小時間

1998.4 msec
1998.7 msec

2081 msec
2083 msec

1913 msec
1903 msec

有意な差は計測できなかった．このことから，SMIMEA
Validator が Thunderbird の起動時間に与える影響は，無視できる程度のものであると判断できる．

この実験では，Thunderbird 起動後に署名付きメールを選択してから，アドオンが証明書を検証し処理が完了するまでの時間を測定する．また，安定した計測結果を得るた
6 おわりにめに，GNU/Linux と Mac OSX，2 つの環境で実験し，そ本研究では，DANE による SMIMEA の検証を可能にれぞれの項目について 20 回ずつ計測する．SMIMEA RRする
MUA 用のアドオン，SMIMEA Validator を実装しは Certificate Usage を 3, Slector を 0，Matching Type は0, 1, 2 それぞれの時間を計測する．また，これに加えて， た．また，アドオンが SMIMEA RR によってメールをキャッシュの影響を計測するため，Matching Type 0 での 検証に要する時間および，MUA の動作に与える影響を検証後に，同一ドメインの別メールアドレス (Matching 計測し評価した．評価では，SMIMEA の検証時間も 1.2
Type 0) にかかる時間を計測する．結果は，表 5 のよう 〜1.4 秒程度となり，実用に耐える性能を示すことができた．加えて，MUA の起動時間への影響を計測し，ほぼ影になった．
響を与えないことを示した．
表 5 検証時間測定の結果
GNU/LinuxMac OSX
Matching Type 0
Matching Type 1
Matching Type 2
Matching Type 0 to 01424.25 msec
1236.15 msec
1381.45 msec
41.6 msec

1399.9 msec
1239.1 msec
1425.05 msec
52.65 msec

いずれの環境，Matching Type であっても 1.2〜1.4 秒程度の時間がかかった．検証済みドメインの，他メールアドレス検証にかかった時間は，50msec 程度であり，キャッシュの効果が大きいことがわかる．本研究では，DNS コンテンツサーバの DNSSEC 対応のために，国外にサーバを持つ ISC DLV Registry を利用しているため，DLV の問い合わせに時間がかかっている．このため，上位ゾーンに DS レコードを登録する運用形態の場合，パフォーマンス向上する可能性がある．

5.4

起動パフォーマンス計測

SMIMEA Validator のインストールによって，Thunderbird の起動時間に影響を与えるか測定する．測定には，Firefox 及び，Thunderbird の起動時間の計測が可能なア
ドオン，About Startup7 を利用する．測定は，SMIMEA
7 https://addons.mozilla.org/ja/thunderbird/addon/
about-startup/

参考文献[1] Arends, R., Austein, R., Larson, M., Massey, D. andRose, S.: DNS Security Introduction and Requirements, RFC 4033 (2005).
[2] Hoﬀman, P. and Schlyter, J.: The DNS-Based Authentication of Named Entities (DANE) Transport
Layer Security (TLS) Protocol: TLSA, RFC 6698
(2012).
[3] Schlyter, J. and Hoﬀman, P.: Using Secure DNS
to Associate Certificates with Domain Names For
S/MIME, Internet-Draft: draft-ietf-dane-smime-07(2014).
[4] 中 島 智 広：PKI の 事 故 か ら 学 ぶ DNSSECの 必 要 性 〜DNS ス プ ー フィン グ 攻 撃 の 考
察 〜 ，DDNSSEC2013
ス プ リ ン グ フォー ラム，http://dnsops.jp/event/20130529/
dnssec2013springforum-nakashima-1.pdf(2013). Accessed 14/01/2015.