2011年7月11日月曜日

メールの安全性について

メールの安全性(盗聴、改ざん、なりすまし、否認を防ぐ)を確保するための手段はいくつかある。何があるかを調べたのでメモしておく。

中間者攻撃による攻撃は、PKI(公開鍵基盤)を用いない限り防げない。

DKIMは、送信メールサーバはメールの内容に、送信メールサーバのもつ暗号鍵でsignetureをつける。送信メールサーバを管轄するDNSサーバに公開鍵を置いておく。受信メールサーバは、Fromに書いてある送信メールサーバを管轄するDNSサーバの公開鍵と証明書で、送信メールサーバを秘密鍵を持っているサーバとして認証する。
オレオレ公開鍵でも中間者攻撃がなければ、文面改竄検知が可能。

SPFはFromに書いてある送信メールサーバが本当に送信メールサーバであるかを、Fromに書いてある送信メールサーバを管轄するDNSサーバに確認する。文面改竄検知は不可能。
RFCではExperimentalの扱いだから「ついてないと受け取らない」はやるべきではない。

ヘッダから手動で安全性を確保するなら、
1. Received を上から追いかけ、変なところを通っていないか調べる。
2. Received の最下行の送信者のIPからdomain nameを正引きする。($ whois xxx.xx.xx.xx)
3. 2の結果をdigする。($ dig example.com txt)
文面改竄検知は不可能


私見では、文面改竄されたら困るものはたいてい見られ困る級のものだから、そもそも暗号化して送れと思ったのだが、見られていいものに、中間者がウイルスファイルを添付するとかは攻撃としてありうる。これはオレオレDKIM級で防ぐことができるものだ。
あと、ヘッダから手動で確認はSPFに負けてないと思うがどうだろう。

ちなみに某検索最大手は DKIM(PKIによる認証)をしている。
某航空会社は SPFに対応している。
某I機構、某大学は 認証なし。しっかりしよう。

参考文献
DKIMについて RFC4871
http://www.ietf.org/rfc/rfc4871.txt
SPFについて RFC4408
http://www.ietf.org/rfc/rfc4408.txt

追記(2011年7月12日)
SPFの主目的は「Fromを偽装したスパムを弾くこと」らしい。SPFはその目的にはかなった手段だ。
それから、中間者攻撃は「技術的に可能だけれどもかなり大変。悪人がコストをかけても改竄したいと思わなければやらない」。だから普通はあまり気にしなくてよい。楽にできて、やらないよりマシな技術というものはたくさんあるから、それはやったらいい。