連載
» 2006年02月16日 10時00分 UPDATE

送信ドメイン認証技術解説:電子署名方式の最新技術「DKIM」とは (2/4)

[末政延浩,@IT]

公開鍵の提供

 DomainKeysと同様にDKIMでは、送信側ドメインのDNS上で認証に利用した公開鍵を公開する。公開鍵は以下に示すようにFQDNに対するTXTレコードまたは「DKKリソースレコード」としてDNSに登録する。なお、現時点ではDKKリソースレコードへのDNSシステムの対応が行われていないのでTXTレコードを利用する。

 鍵の長さは512、768、1024、1536、2048ビットがサポートされている。ドラフトには2048ビットより大きな鍵を利用する場合もあるとされているが、同時に、実際にはDNSのUDPパケットサイズの512バイトにうまく収まる最も長い鍵として2048ビットまでが現実的であると説明されている。公開鍵を登録するFQDNは次のようになる。

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

 「<セレクタ>」は「DKIM-Signature:」ヘッダのsタグに指定したラベルになる。また、「<ドメイン名>」は同じくdタグに指定されたドメイン名である。つまり、異なるセレクタを用意することで同じドメインに対して複数の公開鍵を運用できる。

 公開鍵のレコードは「タグ=値」を「;」で列挙する。DKKリソースレコードの例を以下に示す。また、利用できるタグを表1にまとめた。現時点では公開鍵は公的なCA(Certificate Authority:認証局)が署名したものである必要はない。鍵のセットはopensslコマンドを利用して作成できる。

sls.dkim._domainkey.smtest.com. 300 IN TXT"v=DKIM1/; k=rsa/; t=y/; p=MIGfMA0GCSqGSIb3...<省略>"
タグ 説明 省略
v Keyレコードのバージョン番号 指定する場合は「DKIM1」になる。省略時も「DKIM1」である。指定する場合はレコードの最初に記述する。 設定することが推奨されるが省略可能
g 鍵の適用条件パターン 電子署名対象とするメールアドレスのローカルパートにマッチする条件パターン。ワイルドカード文字「*」が利用できる。
この鍵を利用できる送信者のアドレスを限定する場合に利用する。省略時は「*」になる。
省略可能
h 利用可能なハッシュ方式 電子署名の作成の際に利用できるハッシュの方式を限定する。省略した場合、すべてのハッシュ方式を許容する。 省略可能
k 鍵の形式 電子署名の作成の際に利用できる鍵の形式を指定する。省略時は「rsa」になる 省略可能
n 説明 可読な説明文を保持するタグ。省略時は「無」(長さ0の文字列)になる。 省略可能
p 公開鍵データ 公開鍵のデータを保持するタグ。鍵データはbase64でエンコードする。また、値が指定されない場合は、該当の鍵が無効になっていることを示す。 必須
s サービスタイプ 当該鍵が有効であるサービスを指定する。カンマで区切って複数指定できる。現時点で指定できるサービスは「*」(すべてのサービス)と「email」(メール)の2つである。省略時は「*」になる。 省略可能
t フラグ フラグを指定する。カンマで区切って複数指定できる。指定できるフラグは「y」のみで、これは、DKIMの運用が試験モードであることをしめす。「y」フラグがある場合、受信者は認証に成功したメールとそうでないメールを区別して処理してはいけない。省略時はフラグなし。 省略可能
表1 DKKリソースレコードで利用できるタグ一覧

送信側における電子署名の作成

 送信側ではメールのヘッダおよびボディを基に電子署名を作成する。作成した電子署名は「DKIM-Signature:」ヘッダとして追加される。「DKIM-Signature:」ヘッダの書式は「タグ=値」の組を「;」で区切って列挙する。「DKIM-Signature:」ヘッダの例を以下に示す。

DKIM-Signature: a=rsa-sha1; c=nowsp/nowsp; d=sm-test.com; s=tls.dkim; 
  t=1138613234; h=X-DomainKeys:DomainKey-Signature:Mime-Version:
  Content-Type:Message-Id:Content-Transfer-Encoding:Cc:From:Subject:
  Date:To:X-Mailer:X-ok-sendmail.com;
  b=B+TTx8CgkswOZf6vVbkxPuY034xRqYPXLjhClUhwX(以下省略)=

 送信側は次の手順で署名を行い、「DKIM-Signature:」をメッセージに追加する。

  1. 署名対象のメールかどうかを確認する
  2. 署名対象のヘッダを決定しhタグに列挙する
  3. メールの本文からlタグに指定した長さを取り出し、正規化処理を行う
  4. ヘッダ、正規化したメール、これから追加する「DKIM-Signature:」ヘッダの署名データを除いた部分をつなげたデータに対してハッシュを作成する
  5. ハッシュに対して電子署名を作成し、「DKIM-Signature:」ヘッダに追加した後、「DKIM-Signature:」自体をヘッダに追加する

 「DKIM-Signature:」ヘッダで利用できるタグを表2にまとめた。「DKIM-Signature:」ヘッダで利用できるタグは、「Domainkey-Signature:」ヘッダで利用できるタグに対して新たに「l」「x」などが追加された。

タグ 説明 省略
v バージョン バージョン番号を示す。将来のバージョンアップに対応するためのもので、現時点ではこのタグを「DKIM-Signature:」ヘッダに含ませてはいけない。含ませた場合は、ヘッダ自体が無効とされる。省略時は指定なし。 必ず指定しない
a 署名の作成に利用したアルゴリズム 署名の作成に利用したアルゴリズムを指定するが、現時点では「rsa-sha1」だけが利用できる。 必須
b 電子署名データ 電子署名データ。base64にエンコードして指定する。 必須
c メール本文の正規化方式 署名の作成の時に利用する正規化処理の方法を指定する。現時点では「simple」、「relaxed」の2つが利用で起用できる。省略した場合は「simple」になる。 省略可
d ドメイン名 署名を行ったドメイン名。送信ドメイン名である。公開鍵の取得の際に参照するドメイン名の一部になる。後述のiタグに与えられるアドレスのドメイン名はこのタグに与えられる値と同じか、またはサブドメインである必要がある。 必須
h 署名したヘッダ 電子署名を作成するデータに含まれたヘッダ。「:」で区切って複数列挙できる。送信者を示す「From:」ヘッダや「Sender:」ヘッダなどは必ず署名対象に含める必要がある。 必須
i 認証対象送信者アドレス メールの送信者や送信プログラム(メーリングリストなどの場合)のメールアドレス。省略した場合はdタグに指定したドメイン名の先頭に「@」を追加した値になる。 省略可
l 署名対象本文長さ 電子署名を行ったメール本文の先頭からの文字長(バイト長)。省略した場合、本文すべてを署名対象とする。 省略可
q 公開鍵取得方法 公開鍵を取得する方法を指定する。現時点では「dns」のみ指定可能。省略時は「dns」になる。 省略可
s セレクタ 公開鍵を取得する際、クエリを発行する対象のドメイン名の一部に利用する。複数のセレクタを持つ事で1つのドメインで複数の公開鍵を利用できる。 必須
x 有効期限 電子署名の有効期限を指定する。有効である日時をEPOC(1970年からの秒数)で指定する。省略した場合、署名は無期限になる。 利用推奨(省略可)
z 署名対象のヘッダのコピー 署名対象にしたヘッダの署名時の値を保持する。「|」記号で複数指定可能。デバッグ目的であり、認証処理には利用しない。 省略可
表2 「DKIM-Signature:」ヘッダで利用できるタグ一覧

 「l」は電子署名の対象としたメールの本文の先頭からの長さを、「x」は電子署名の有効期限を設定したものである。lタグを指定することで、転送時などにメールデータが変更されても電子署名が破壊されにくくなる。また、xタグで電子署名の有効期限を設定することで、公開鍵の変更をスムーズに行えるようになるといった利点がある。

 新しいタグではないが、DKIMではhタグの指定が必須になった。DomainKeysの運用においては、hタグに署名したヘッダを列挙しておくことで、配送中のヘッダの追加や変更に影響されにくくなることが実証されている。

Index

電子署名方式の最新技術「DKIM」とは

Page1

DKIMの両親となったDomainKeysとIIM

DomainKeysとDKIMの違い

DKIMの仕組み


Page2

公開鍵の提供

送信側における電子署名の作成


Page3

受信側での処理と認証結果の処理

Site Signing Policy(SSP)


Page4

DKIMもメーリングリストが苦手

DKIM(dkim-milter)の実装


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

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

メールマガジン登録

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