送信ドメイン認証技術解説

電子署名を使うDomainKeysの設定方法

末政 延浩
センドメール株式会社
テクニカルディレクター
2006/1/12

 今回は電子署名を利用した送信ドメイン認証技術「DomainKeys」について解説する。Sender IDやSPFなどのIPアドレスベースの送信ドメイン認証に比べて、本質的にメール転送に強いという利点があり、長期的には電子署名方式の送信ドメイン認証を利用していくべきであるといわれている。

 ただし、Sender IDの導入は送信側ではDNSにSPFレコードを登録するだけで簡単に開始できるのに対して、DomainKeysなどの電子署名方式では送信側でも電子署名を行うメールフィルタを導入する必要があり、やや敷居が高い。

 電子署名方式で最も普及しているDomainKeys

 DomainKeysは、電子署名を利用した送信ドメイン認証技術の中では最も普及している技術である。DomainKeysは、米Yahoo!が提唱する方式であり、Yahoo!メールやGmailなどで利用されている。RFCのドラフトは以下のURLからダウンロードできる。

DomainKeysのINTERNET DRAFT
http://www.ietf.org/internet-drafts/draft-delany-domainkeys-base-03.txt

 まず、DomainKeysの仕組みを説明する(図1)。電子署名に利用する公開鍵や秘密鍵はOpenSSLなどのツールを利用すれば自分で作成できる。なお、公的なCA(Certificate Authority:認証局)で電子署名された公開鍵の利用については現在検討中となっている。

図1 DomainKeysの仕組み
 (1)X.COMではあらかじめ署名に使う公開鍵をDNSサーバにて公開する
 (2)X.COMのメールサーバは送出メールの本文とヘッダを基に電子署名を付与する
 (3)メールをY.COMへSMTPで送信する
 (4)Y.COMのメールサーバは「From:」のドメイン部である
   X.COMのDNSサーバに公開鍵を問い合わせる
 (5)X.COMから取得した公開鍵により電子署名を照合して、OKであれば認証成功

 DomainKeysのヘッダ

 メール送信側では、作成した電子署名を「DomainKey-Signature:」ヘッダとして個々のメールに追加する。電子署名の値は選択したヘッダとメールの本文からハッシュ値を作成しそれを基に生成される。受信側ではメールの受信時にこのヘッダを参照して認証処理を実施する。

  「DomainKey-Signature:」ヘッダの例を示す。

DomainKey-Signature: a=rsa-sha1; s=tls; d=sendmail.com; c=nofws; q=dns;
  h=in-reply-to:references:mime-version:content-type:message-id:
  content-transfer-encoding:cc:from:subject:date:to:x-mailer:x-ok-sendmail.com;
  b=hQ/NU8dng9Dkher6Te8xD/Ltt2KdEGCcd1aB+2/cmgNL3BKE9o
  4BnYu4BBcWcxDSlrG1LYAC7hGVZi6/NT5TT6d20cfvSy39dWsqb
  MNRhBJKRX/h5+srjTJWfSpzeThz3lU9hq8ZfrVfJedi8SlKVjseafF0
  Yp7m+w7k+MqapU8=

 「b=」に続いているものが電子署名のデータである。ヘッダには電子署名以外にも複数の情報がタグ付きで記録される。タグの一覧について表1に説明する。

タグ 説明
a
署名を作成するために用いた暗号化方式(必須)
b
電子署名データ。Base64でエンコードされたもの(必須)
c
正規化アルゴリズム。「simple」と「nofws」がある(必須)
d
署名したドメインのドメイン名。このドメインとセレクタタグから公開鍵を取得するためのDNSクエリを作成する(必須)
h
署名対象にしたヘッダのリスト。省略した場合DomainKeys-Signature:ヘッダより下のすべてのヘッダが署名の対象になる(オプション)
q
公開鍵の取得に利用するメソッドを指定する。現時点ではdnsのみ(必須)
s
セレクタ。公開鍵を取得するときのDNSクエリを構成する要素(必須)
表1 DomainKeys-Signatureヘッダで利用できるタグ

 DomainKeysレコード

 送信側では電子署名の照合に利用する公開鍵をDNS上にTXTレコードとして公開しておく。DNS上の公開鍵は例えば次のようになる。

k1._domainkey.sm-ex.co.jp. 300 INTXT"g=; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6xMd6S/.<省略>"

 このTXTレコードには公開鍵以外にも制御用の情報もタグ付きで指定する。利用可能なタグの一覧を表2に示す。

タグ 説明
g
送信者アドレスのローカルパートをしめす。受信側ではこのタグで指定された文字列がローカルパートであるアドレスからのメールしか認証成功としない(オプション)
k
keyのタイプ。省略可能でデフォルトは「rsa」(必須)
n
説明文。利用者への説明のための情報を保持する(オプション)
d
署名したドメインのドメイン名。このドメインとセレクタタグから公開鍵を取得するためのDNSクエリを作成する(必須)
p
Base64でエンコードした公開鍵のデータ。空白にした場合、鍵が無効になったことをしめす(必須)
t
動作モード。Yの場合、試験的運用であることをしめす(オプション)
表2 DomainKeysの公開鍵情報で利用できるタグ

 受信側では、「DomainKey-Signature:」ヘッダのdの値が同じメールのヘッダ内にある「From:」か「Sender:」のドメイン部と一致していることを確認できたら、sタグの値(セレクタ)と合わせてDNSクエリを実施する。クエリするFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)は、

セレクタ._domainkey.ドメイン名

となる。例えば、「s=k1」で「d=sm-ex.co.jp」だとすると、

k1._domainkey.sm-ex.co.jp

へのTXTレコードのクエリを実施し、公開鍵を取得する。

 セレクタを利用することにより1つのドメインで異なる鍵を使い分けることができる。例えば、一定期間で鍵を更新していく場合など、新旧2つの鍵を異なるセレクタを利用して同時に公開することで、移行期間の余裕を設けることができる。

1/4

Index
電子署名を使うDomainKeysの設定方法
Page1
電子署名方式で最も普及しているDomainKeys
DomainKeysのヘッダ
DomainKeysレコード
  Page2
DomainKeysはメールの転送に強い
DomainKeysはメーリングリストが苦手
送信サーバと受信サーバにおける注意点
ほかのメール暗号化方式との関係
  Page3
dk-milterを導入してみよう
dk-milterのビルド
DomainKeys用の鍵の作成と公開
サイトポリシーの公開
  Page4
dk-milterの起動とsendmail MTAの設定
認証結果
送信ドメイン認証の今後

ドメイン認証技術解説
  Sender ID:送信者側の設定作業
  Sender ID:受信者側の設定作業

電子署名を使うDomainKeysの設定方法

TechTargetジャパン

Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

ホワイトペーパーTechTargetジャパン

ソリューションFLASH

「ITmedia マーケティング」新着記事

第2回 技術の進化がマーケティングに与えたインパクト
第2回では、新しいKKD(「仮説」「検証」「データ分析」)が意味を持つようになった時代...

第5回 Webサイトの目的を社内で共有する――他部署をうまく巻き込むには?
遠藤さんのプレゼンがいよいよ始まる。Webサイトのリニューアルプランに「ソーシャルメデ...

第2回 ヒートマップでLPO――ヒートマップの登場で“in-page web analytics”時代に突入したLPO
ヒートマップがWebサイト分析の現場に登場したことで、LPOは、“in-page web analytics”...