連載
» 2006年01月12日 10時00分 UPDATE

送信ドメイン認証技術解説:電子署名を使うDomainKeysの設定方法 (1/4)

[末政延浩,@IT]

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

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

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

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

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

図1 DomainKeysの仕組み 図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つの鍵を異なるセレクタを利用して同時に公開することで、移行期間の余裕を設けることができる。

Index

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

Page1

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

DomainKeysのヘッダ

DomainKeysレコード


Page2

DomainKeysはメールの転送に強い

DomainKeysはメーリングリストが苦手

送信サーバと受信サーバにおける注意点

ほかのメール暗号化方式との関係


Page3

dk-milterを導入してみよう

dk-milterのビルド

DomainKeys用の鍵の作成と公開

サイトポリシーの公開


Page4

dk-milterの起動とsendmail MTAの設定

認証結果

送信ドメイン認証の今後


       1|2|3|4 次のページへ

Copyright© 2015 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

Loading

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

注目のテーマ

Focus

- PR -

転職/派遣情報を探す

【転職サーチ】SIer/Web企業/新規事業 スマホ開発で、あなたのキャリアを生かす

「派遣・フリーで働くメリット」とは? 活躍する派遣エンジニアの本音

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。