QA@IT

S/MIMEとDKIMの差について

6928 PV

セキュリティ初心者です。

会社で外部へのメール発行要件があるシステムを導入する際に、送信者証明と改ざん防止
のためにS/MIMEによる電子署名をつけるようにとのガイドがあります。

現在導入を検討しているサービスでは、S/MIMEによる電子署名には対応していないが
DKIMによる電子署名は行えるとのこと。

ネットで検索してみたところ、規格や方式の違いはなんとなくわかったのですが、
結局S/MIMEで達成できることをDKIMで代替しても問題ないのかがよくわかりません。

S/MIMEでできること(可能な要件)と、DKIMの差についてご教示いただけないでしょうか。

よろしくお願いいたします。

回答

「送信者証明と改ざん防止」の部分はS/MIMEとDKIMで共通の機能なので、基本的には代替可能といえると思いますが、実際問題としては違いもあるので代替できる場合もあれば、できない場合もあると思います.例えば

  • S/MIMEはメールクライアント(MUA)で署名・署名の検証を行うが、DKIMではメール転送サーバー(MTA)で署名・署名の検証を行う。
  • S/MIMEの署名・署名の検証は公開鍵証明書ベースだが、DKIMの署名・署名の検証は(もし私の理解が正しいなら)生の公開鍵ベースである。DKIMの場合、署名の検証のために公開鍵をDNSで提供する必要がある。
  • S/MIMEはMUAの機能なので、メールを読むときに署名を検証すればよいが、DKIM対応のMTAでは受信時にDKIMの検証を行い、通常Authentication-ResultsヘッダにDKIMの検証結果を入れるが、MUAでは通常は何も表示されない。
  • S/MIMEの署名検証の失敗はメールの受け取り手に明示的に通知されるので嫌でも気づくであろうが、DKIMの検証失敗はメールの受け取り手は気づかないかもしれない(そもそもメールの受け取り手はDKIM署名があることも気づかないかもしれない)。
  • 通常のMUAとは違い、一部のwebメールはDKIMに対応している(が、S/MIMEには対応していなかったりもする)ので、逆にメールの受け取り手はDKIM署名検証の失敗の方に気づかされるであろう。

などが思いつきます。なので実際問題としてはいろいろひっかかることもあると思います。

個人的には公開鍵証明書ベースのS/MIMEの方がセキュリティ上はベターではないかと思います。署名を検証するとき検証に使う公開鍵が「誰の」ものかの証明が必要と思うからです(これには公開鍵証明書が必要となります)。DKIMの方はDNSでの公開鍵の受け渡しをDNSSSECにすれば(証明書なしでも?)安全になるという話なのかもしれませんが、その辺は私はよくわかってないです。

とはいえ署名が何もないというプアな状態よりはDKIM署名がある方がずっとよいので、S/MIMEが使えないときの次善の手段としてDKIMを使うのはありだと思います。

あと実際の運用をイメージすると、teaspoon1124さんの所属する組織が例えばかりに「A社」だったとします。次にメールの受け取り手はA社からのメールはS/MIME署名があると予期しているとします。

通常はA社からのメールは「S/MIMEによる電子署名をつけるようにとのガイド」に従ってS/MIME署名があるはずで、受け取り手の期待通りになるので問題ありません。ところがA社からS/MIME署名なし、DKIM署名ありのメールを受け取ったとき、受け取り手は単にDKIM署名を無視してしまい「A社からのメールなのにS/MIME署名がないからおかしい」と判断すると思います。これでは代替にならないですよね。

そう考えると、S/MIME署名なし、DKIM署名ありのケースが具体的にどういうケースかをメールの受け取り手に事前にアナウンスしておき、そのケースも予期してもらわないと、DKIM署名はS/MIME署名の代替にはなりえないのではないかと思います。逆にメールの受け取り手との間でその点のコンセンサスが得られ、かつメールの受け取り手にDKIM署名の場合の具体的な検証方法を指示できるのなら基本的には代替できそうに思えます。

もちろんメールのAuthentication-Resultsヘッダを見ろとか指示するのは難があると思いますので、DKIMの場合の(妥当な)検証方法は少し悩む部分ではないかと思います。

思うにS/MIMEの場合も相手がS/MIME対応のMUAを使って検証することは前提になるはずですので、DKIMの場合も相手の環境に何らかの前提を置くことはありかと。具体的にいうと、例えばA社からの通常の連絡はS/MIME署名を行なっているので、S/MIME対応のMUAで送信者の真正性を確認しろ、しかしXXXの連絡に関してはS/MIME署名ではなくDKIM署名を行っているので、YYYのwebメールで送信者の真正性を確認しろ、などといったことです(追記あり)。

追記
1個のメールボックスをS/MIME対応のMUAとYYYのwebメール(DKIM対応)の両方からアクセスできるならばそれでよいのですが、そうでないときは困りますね。「これだ」といえる方法はなかなか思いつきませんでした。

編集 履歴 (4)
ウォッチ

この質問への回答やコメントをメールでお知らせします。