ビジネスサポートポータルアカウントでログイン
DKIM (DomainKeys Identified Mail) 署名の検証動作  

DKIM (DomainKeys Identified Mail) 署名の検証動作

    • 更新日:
    • 17 Jun 2019
    • 製品/バージョン:
    • InterScan Messaging Security Suite 7.1
    • InterScan Messaging Security Suite 7.5
    • InterScan Messaging Security Suite 9.1
    • InterScan Messaging Security Virtual Appliance 9.0
    • InterScan Messaging Security Virtual Appliance 9.1
    • OS:
    • Linux すべて
    • Virtual Appliance すべて
    • Windows すべて
概要
X-IMSS-DKIM-Authentication-Result ヘッダに "Pass" と表示されているにもかかわらず、DKIM 署名の検証に失敗します。なぜでしょうか。
詳細
Public

InterScan Messaging Security Suite (InterScan MSS) や InterScan Messaging Security Virtual Appliance (IMSVA) では、次のいずれかの場合に DKIM (DomainKeys Identified Mail) の署名を検証します。

製品における DKIM 署名の検証は2段階に分かれており、以下のふたつの条件をそれぞれクリアした場合に最終的に署名の検証に「成功」します。

したがって、段階 1 で DKIM 署名の検証 (認証) に成功したとしても、段階 2 のドメインチェックでドメインが一致しなければ、最終的な署名の検証結果は失敗となります。

DKIM (DomainKeys Identified Mail) の仕組み

まず、DKIM (DomainKeys Identified Mail) による認証の仕組みを簡単に説明します。

DKIM の仕様は RFC 6376 にインターネット標準として規定されています。詳しくはWeb等のリソースを参照してください。

メッセージへの署名

DKIM ではまず、メールサーバがメッセージ配送時に秘密鍵を使用して、指定されたヘッダ (Date ヘッダや From ヘッダ、To ヘッダ、Subject ヘッダなど) と本文を対象にメッセージに署名します。

署名されたメッセージには次のような DKIM 署名のヘッダ DKIM-Signature が追加されます。

(ヘッダ例)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com;
	s=default; t=1555040205; 
	bh=wE7NXSkgnx9PGiavN4OZhJztvkqPDlemV3OGuEnLwNo=;
	h=Date:From:To:Subject:Message-ID;
	b=GQIiALOKQZZjJAmG/PGpMFPLeS4SxmUT4mLUtJs7nT2GVI4/qfWAXjLifIJo7Gxok
	 VhEg4tmGfGBAqcIoyu+KE4poIFrtyRzFrogbpT+DT1BjdhrsPUTwLpxg9yhb3It3sp
	 d1rcBQwVyzr9gkHqbUMfjw7G82I+/PYsbnDUQm3tU/XSciM6VMA1eF7DKLP3GyIoHB
	 2vOsHGi+lVzO7APdut3NlcUcXIN0nhYsJaW+r/RzItis/8RvOvRlq+EtBSwCmWsKnW
	 tah9JFNZ/mdYZEz3IaqF2CskGNag3H2/qYaKDrrP12IYLEWoheUlCeXHorojqix8Ct
	 6k//Xj40vo4lg==

"h="タグに署名で使用されたメッセージヘッダが、"bh=" タグに署名で使用された本文のハッシュ値が記録されます。そして、"b=" タグに、これらをもとに生成された署名データが記録されます。

DNS 上の公開鍵

署名したドメイン (SDID) の DNS には公開鍵が DKIM レコードとして登録されています。

上記ヘッダ例では "d=" タグに SDID として "example.com" が、"s=" タグに DNS のセレクタとして "default" が指定されており、公開鍵は以下のように "default._domainkey.example.com" の TXT レコードに公開されています。

(レコード例)
default._domainkey        IN  TXT     ( "v=DKIM1; k=rsa; "
        "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArXKU4LkpFI/dcHOvhG2B"
        "tGrwOTT2VMm8C9Us3M87lbEkM00kCI4WiK/N1BP9VRI9FCjKA5SeG1Qg9PgShXJA"
        "eriW9hHOspsYk/7wIvA59kMC+TppP2fQSSIQGuKEj0ls48bfr7FVhdM3zqRTa2yW"
        "RS9rpbIzxNfg304PucTTZF77zkBH+UEEp9icjWdUAS4ftJWPZilTqXveHFVvLrDe"
        "ae1l9/0bpj96+BWgqOCPdDf0dV9xG+9OIx/t5kuwif+MP0GL6e1y+NqhlYqiZtg+"
        "e52bxOnm+zN1R2aUHQW35o6NzK/ksvVVADbbrU6nMaiNjtq7QbE9wI+BxPsSb73o"
        "1wIDAQAB" )

DKIM 署名の検証 (認証)

DKIM の署名を検証するアプリケーションは DKIM-Signature ヘッダ を基に DNS から公開鍵を入手し、デジタル署名を検証します。InterScan MSS や IMSVA であれば、「第1段階」のチェックが該当します。

例えば、"h=" タグに指定されたヘッダが変更されていたり、本文の内容が変更されていれば認証に失敗します。

DKIM 署名の検証 (X-IMSS-DKIM-Authentication-Result の追加)

DKIM-Signature ヘッダを基に DKIM 署名を検証し、その検証結果に応じてメッセージヘッダに X-IMSS-DKIM-Authentication-Result ヘッダを追加します。

検証に成功した場合

DKIM 署名の検証に成功した場合、次のように X-IMSS-DKIM-Authentication-Result ヘッダに "dkim=pass" と記載されます。

X-IMSS-DKIM-Authentication-Result: imsva91.trendmicro.com; sigcount=1;
	dkim=pass(2048-bit key) header.i=@example.com state=0

検証に失敗した場合

DKIM の署名がない (DKIM-Signature ヘッダがない)、メッセージの件名や内容が変更されている、一時的に DNS サーバに接続できない、など DKIM 署名の検証に失敗した場合、次のような X-IMSS-DKIM-Authentication-Result ヘッダが挿入されます。

DKIM の署名がない
X-IMSS-DKIM-Authentication-Result: imsva91.trendmicro.com; sigcount=0
メッセージの件名が変更されている
X-IMSS-DKIM-Authentication-Result: imsva91.trendmicro.com; sigcount=1;
	dkim=fail(signature verify fail) header.i=@example.com state=252
メッセージの内容が変更されている
X-IMSS-DKIM-Authentication-Result: imsva91.trendmicro.com; sigcount=1;
	dkim=fail(body hash mismatch) header.i=@example.com state=250
DNS サーバに接続できない
X-IMSS-DKIM-Authentication-Result: imsva91.trendmicro.com; sigcount=1;
	dkim=temperror(dns unavailable) header.i=@example.com state=100

第2段階: ドメインチェック

DKIM-Signature ヘッダには以下のように "d=" タグ (SDID) にドメイン (example.com) が記載されています。また、"i=" タグ (AUID) が記載されている場合があります。

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com;
	s=default; t=1555040205; 
...

一方、From ヘッダには通常、送信者の情報が表示され、以下の例であればドメインは example.com です。

From: "John Doe" <john@example.com>

ドメインチェックでは AUID または SDID と From ヘッダのドメインをチェックします。

DKIM-Signature ヘッダに "i=" タグ (AUID) が存在すれば、From ヘッダと AUID のドメインを比較します。DKIM-Signature ヘッダに "i=" タグ (AUID) が存在しなければ、From ヘッダと SDID ("d=" タグ) のドメインを比較します。

前述の DKIM-Signature ヘッダと From ヘッダのように、From ヘッダと SDID のドメインが一致すれば、ドメインチェックに成功します。

しかし、From ヘッダのメールアドレスのドメインが sales.example.com であったり、trendmicro.com であれば、From ヘッダと SDID のドメインが異なるため、ドメインチェックに失敗します。

ドメインチェックの無効化

IMSVA 9.1 では Patch 3 (b1962) 以降、ドメインチェックを無効化できるようになりました。以下の手順を実施することで、第1段階 DKIM の署名の検証のみで、成功か、失敗か、判断します。

  1. IMSVA サーバに root でログインして、PostgreSQL の psql コマンドを実行し、データベースにログインします。

    # /opt/trend/imss/PostgreSQL/bin/psql imss sa
    
  2. 次に以下の SQL コマンドを実行して、行を登録します。

    imss=# INSERT INTO tb_global_setting VALUES ('dkim','DomainNoNeedChecked','1','imss.ini','');
    INSERT 0 1
    

    設定を元に戻すには、次のコマンドを実行して追加した行を削除します。

    imss=# DELETE FROM tb_global_setting WHERE name = 'DomainNoNeedChecked' and section = 'dkim';
    DELETE 1
    
  3. 下記コマンドを実行して、psql のセッションを終了します。

    imss=# \q
    
  4. 最後に次のコマンドを実行して、検索サービスを再起動します。

    # /opt/trend/imss/script/S99IMSS restart
    
Premium
Internal
評価:
カテゴリ:
機能/仕様; 操作方法/設定
Solution Id:
1119589
ご提案/ご意見
このソリューションはお役に立ちましたか?

フィードバックありがとうございました!

いただいたご提案/ご意見に関して、トレンドマイクロから詳細確認のため、Eメールを送付させていただく場合がありますので、Eメールアドレスを入力してください:
入力いただいたEメールアドレスはソリューション改善のためだけに使用いたします.

*こちらに技術的なご質問などをいただきましてもご返答する事ができません.

何卒ご了承いただきますようお願いいたします.


To help us improve the quality of this article, please leave your email here so we can clarify further your feedback, if neccessary:
We will not send you spam or share your email address.

*This form is automated system. General questions, technical, sales, and product-related issues submitted through this form will not be answered.


ユーザーガイド