« Solaris オープン化に関するNY Timesの記事 | メイン | 2章論旨:The Closed Innovatoin Paradigm »
2004年06月07日
Yahoo!のDomainKeyの解説
Yahoo!の迷惑メール撲滅に向けた活動は Yahoo! Anti-Spam Resource Center でチェックできます。
Yahoo!はメール発信者の信憑性を着側が確認できるようにするしくみとして、公開鍵暗号ベースの電子署名を用いるDomainKeyという技術を提案しており、IETFにインターネットドラフトを提出しています。 下記のこの技術のポイントを解説します:
方式の基本概念
1. ドメインの管理者は一対の秘密鍵(=署名鍵となる)と公開鍵(=検証鍵となる)とを生成し、公開鍵をDNSで公開する。
2. ドメインのメール中継サーバは、自ドメインから外部ドメインへ中継するメールに対する中継署名を前記秘密鍵で生成して、メールに挿入する。
3. 中継署名が付加されたメールを受信したメールサーバは、当該メールの発ドメインの公開鍵をDNSから取得し、取得した公開鍵で中継署名を検証する。 署名が正当であると検証された場合には、メールの発信ドメインに関する記述は正しいと判断できる。
鍵情報のDNSでの公開の仕方
具体的には、_domainkeyというサブドメイン名を使って以下のように鍵情報をDNSに記述します。 とりあえずTXTレコードを使うことになっていますが、これはあくまでも暫定解ということです。
例: brisbane._domainkey IN TXT "g=; k=rsa; p=MEwwDQYJKoZIhvcNAQEB ... IDAQAB"
brisbaneの部分: selectorと呼ばれ鍵識別子の役割をします。
g : granurality。 この鍵がどの範囲で有効かを示します。 なにも指定がない場合には当該ドメイン全体で有効となります。
k: 暗号アルゴリズムを示します。デフォルトはRSAだそうです。
p: 鍵の値。BASE64で符号化して表記します。
メールへの署名の挿入方法
以下のようなヘッダを挿入します。
例: DomainKey-Signature: a=rsa-sha1 s=brisbane; d=example.net; c=simple; q=dns;
b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZVoG4ZHRNiYzR;
b: 署名データ
a: 署名生成アルゴリズム
s: selector。 鍵識別子。
d: 署名したドメイン
q: 鍵取得の方式 (将来的にはDNS以外の鍵配信方式もありえることを想定)
c: 署名生成時のテキスト前処理方式 (詳細説明省略)
署名検証結果の メーラへの伝達方法
署名検証結果は"DomainKey-Status"というヘッダを使ってメールに挿入されます。 受信メーラはこのヘッダに基づいてフィルタリング(フォルダ振り分け)などを行うことができます。
例: DomainKey-Status: good (NGの時: DomainKey-Status: bad format)
その他の配慮
・ メーリングリストの場合には、メーリングリストサーバが投稿者からのメールの署名を検証し、同報する前に自ドメインの署名を添付する。
・ 記事を友達にメール、といったようなサービスではメールの発信者アドレスとは関係のないサーバからメールが発信される。 このような場合、DomainKeyで署名することはできない。 これについては下記の記述があり、その種のメールは"2nd class"だと切り捨てている。
As far as DomainKeys is concerned, email of this nature clearly originates from an email server that does not have authority to send on behalf of the domain of the salesperson and is therefore indistinguishable from a forgery. While DomainKeys does not prescribe any specific action for such email it is likely that over time, such email will be treated as second class email.
DNSの安全性について
この方式ってDNSの安全性に依存しているけど、DNSってこんなことまで想定されて設計していないよな・・・ という意見に関しては以下の記載があります:
Finally, DomainKeys is only intended as a "sufficient" method of proving authenticity. It is not intended to provide strong cryptographic proof about authorship or contents. Other technologies such as GnuPG and S/MIME address those requirements.
つまり、メールの発信者認証に使うには十分でしょう、ということです。
投稿者 motlab : 2004年06月07日 21:53
トラックバック
このエントリーのトラックバックURL:
http://motlab.sakura.ne.jp/mt/mt-tb.cgi/27
コメント
質問なのですが、「取得した公開鍵で中継署名を検証する。」というのは、具体的にどのような方法で検証するのでしょうか?
投稿者 橋本 : 2004年07月21日 16:17
すいません、コメントが入れられていたのに気づきませんでした。
仕様は署名生成・検証アルゴリズムを特定することは意図していなくて、Domain-Key Signatureヘッダのaパラメータで指定できるようになっているようです。 ただし、現状では指定可能な選択肢に"rsa-sha1"(つまりRSA署名)しか記されていません。
投稿者 Masa33 : 2004年08月14日 16:34