SmartHR Tech Blog

SmartHR 開発者ブログ

SmartHR、BIMIはじめました

こんにちは、セキュリティエンジニアの岩田です。今回はSmartHRで先月から導入したメールセキュリティ機能のBIMI(Brand Indicators for Message Identification)についてご紹介します。

BIMIとは?

BIMIは、送信者ドメイン認証の仕組みであるDMARC(Domain-based Message Authentication, Reporting, and Conformance)により認証されたメールに対して送信元企業のロゴを表示することで、なりすましではない正規のメールであることを視覚的に判別できるようにするための仕組みです。

DMARCでは、SPF(Sender Policy Framework) または DKIM(DomainKeys Identified Mail) で認証されたメールの送信元ドメインと、メールヘッダの差出人(From)のドメインが一致するかを検証し、メールの差出人として表示されているメールアドレスのドメインが詐称されていないことを確認しています。

しかし、実際にメールの受信者がDMARCの認証が成功しているかを確認するには、次のような手順が必要でした。

  • Authentication-Results ヘッダで dmarc=pass が記録されていることを確認
Authentication-Results: mx.google.com;
       dkim=pass header.i=@smarthr.jp header.s=s1 header.b=L1bowEYf;
       dkim=pass header.i=@sendgrid.info header.s=smtpapi header.b=qSc4+jOf;
       spf=pass (google.com: domain of bounces+2787976-731d-______=gmail.com@em.smarthr.jp designates 168.245.113.131 as permitted sender) smtp.mailfrom="bounces+2787976-731d-______=gmail.com@em.smarthr.jp";
       dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=smarthr.jp
  • Gmailであれば「メッセージのソースを表示」の画面で DMARC: 'PASS' と表示されていることを確認
    Gmailの「メッセージのソースを表示」画面

BIMIを有効にすると、DMARCの認証が成功したメールにロゴが表示されることで、なりすましではない正規のメールであることが一目でわかるようになります。

BIMIでロゴが表示されたメール

SmartHRでは2021年8月にBIMIを有効化しました。BIMIに対応しているメールサービスで見ると、SmartHRから送信された正規のメールには上の例のようにSmartHRのロゴが表示されるようになっています。

BIMIの動作

BIMIに対応したメールサービスでは、受信メールに対して以下のような処理が実行されます。

BIMIレコードの確認

DMARCによる認証が成功した場合、認証対象ドメインの default._bimi.<ドメイン名> のDNS TXTレコード(BIMIレコード)を確認します。

例えばsmarthr.jp ドメインのBIMIレコード default._bimi.smarthr.jp は以下のように設定されています。

v=BIMI1; l=https://smarthr.co.jp/assets/images/bimi/smarthr_inc.svg; a=https://smarthr.co.jp/assets/images/bimi/smarthr_inc.pem

このBIMIレコードに設定された以下のファイルを取得します。

  • l: ロゴのSVGファイル
  • a: VMC(後述)のpemファイル

VMCの検証

VMC(Verified Mark Certificate)はBIMI用のX.509証明書で、次のような情報が含まれています。

  • Subject Alternative Name: 認証対象のドメイン
% openssl x509 -in smarthr_inc.pem -text | fgrep -A 1 Alternative       
            X509v3 Subject Alternative Name: 
                DNS:smarthr.jp, DNS:smarthr.co.jp
  • LogoType(OID 1.3.6.1.5.5.7.1.12): base64エンコードされたロゴのSVGファイル
% openssl x509 -in smarthr_inc.pem -text | fgrep -A 2 1.3.6.1.5.5.7.1.12
            1.3.6.1.5.5.7.1.12: 
image/svg+xml0#0!0...+........jo....S...\..).CnDY
0..~...zdata:image/svg+xml;base64,H4sIAAAAAAAACoWVzY7bRgzHz7tPMVVPBYbj+ZQ0hr1BY7TZACkQNMBeC0dWbKGObchae9tj8yo99hH6Nvsi4ZDjVEaD1jBk00ORP/5JyrMXTx+34tT2x26/mxdG6UK0u2a/6nbrefE4fIC6eHF3O/sGQLxqd22/HPb9VHy/2r9vxevt9vE40E/CBuWUkeLdwyvxw9Nh3w/i7fZxDa93QtGPD5xjKkqltXj52G1XQn8nBACGP57WYwhbiPfLY/u233/otu28GLrdb3A4FgJhd8d5sRmGw3QyOZ/P6uzUvl9PrNZ6glGyy/Rp2+1+/ZqjiTFO6LQQp649v9w/zQsttEgR6EIhpsfDssHMh749tv2pLRBy6IZte/fu47If7n+eTdi8na1Ft5oXz5/+ev7jz+dP+P77F4fuN7O+bQaBBWznxbdaL/xiUYhztxo284LzbNpuvRmyNcFQk/XX4xmKh4c3N7PDcthcov5Ir0Kg/0/GGqe0k0GXqqoaE7yqgtTS1lpZabA/PmSDridvsRNloyW7wtgFRo73VV2qWGHumwYuYdkh3wOjex7Yu9EX17HLOPh9BhZfyL2uVHRX6YJRxmE2o7Wqamm00h6Mr1SopI2qdg34oAxmicpAHVRZSV8qb5BMp2pqDBAbcD7dTlcoLc5pheMKdCjZM5cXVRVThCoCxZcRo/n8nRP/IxzTEZTMhGPHJkFJ5iMoyYD/SjuiIzBJiFcVEJJkPEK6ysTGJoNl0TISZD5y5EIoKXEBIRIWMCJnZWkYLIuXmIDo6CwL3BASMB4FhxFebtXDqKWaewq5lYw4dqYmGG4rM3Ff4SotjNCIitoKY/qUbmEczlaNXTA4WyVWV3plyjxq8nry3lybv6eV/I+Fi65WJcbAF0LirCb50qiqCFrViFoilk3LCBE5wWFwXJlQK4fFWot3XyyL1heBjNPKpGEPKhqwDpuK2tJHtpqkG4qMPY6oYyVLpyojrXXUaowZfFNjRInLV1vwqqwlriOmx9g+oj/PezrGhqpYAx8nT0AucuNWeAgBxwoqfC4biDZ9N9ixENhokv5lqtxVOEylUSF/pSsXJZHJRon0EZcVNXK4WkZFpE2hTJNIjESPmArDG62VjoosU08WscIAac0iqm5lDDGpksWX1734387FqCI+E13ABLaBi5pAaqb6UU1gNSGrCSQSU5JIpBchRshyplMg2fmQZEcsdKJFMV6SlJKklEm9wPUHNhpWkoUzkKQ0F4M/LjuEYuD0JzWB1YSkZoCsJoNChCQndjPJST11QHI2qJ7J1eTD5Mhak6OnTGluJc2t5EmVPLcXi+d2YWgs08PDe0KmEb4ILK/15u7wfx1f8H/77vYzu3BiYIoIAAA=

証明書チェインの検証に加え、これらの情報を使ってDMARCで認証されたドメインとBIMIで設定されたロゴファイルの対応の正当性を確認して、ロゴが不正利用されていないことを確認します。

VMCの検証に成功した場合は、設定されたロゴをメールに表示します。

BIMIの設定手順

BIMIの設定は以下のような手順で行いました。

DMARCの有効化

BIMIではDMARCによる送信者ドメイン認証が前提となっているため、対象ドメインでDMARCを有効にしておく必要があります。

また、DMARCのポリシーは reject(拒否) または quarantine (隔離) に設定されていることが必須となっています。

SmartHRでは、2020年9月からrejectポリシーでDMARCを運用していました。

ロゴの商標登録

BIMIで使用するロゴに対してVMCを発行してもらう際、ロゴが商標登録されていることが必須となっています。

今回使用したロゴは 登録6286025 で既に商標登録済みのものでした。

ロゴファイルの作成

BIMIで使用するロゴファイルは、SVG-P/S(SVG-Portable/Secure) という特別な形式のSVGファイルである必要があります。

以下のリンク先の手順にあるように、ツールによる変換や手動編集などで作成することができます。

BIMIの準備:ロゴの準備 | DigiCert.com

VMCの取得

作成したロゴファイルを提出してVMCの申請を行います。 VMCの発行は、2021年9月時点でDigiCert社とEntrust社の2社のみが対応しているようです。

VMCの申請時には、対象ドメインの所有権の認証に加え、TLS/SSL証明書のEV(Extended Validation)と同様の組織認証が行われます。

ファイルのアップロード

VMCが発行されたら、ロゴファイルとVMCをWebサイトにアップロードします。 httpsのURLでアクセスできる必要があります。

DNSへのレコード追加

default._bimi.<対象ドメイン> のDNS TXTレコードとしてアップロードしたファイルのURLを以下の形式で設定します。

v=BIMI1; l=<ロゴのURL>; a=<VMCのURL>

BIMIの問題点

実際に設定してみて、現状で以下のような問題点を感じています。

対応メールサービスが少ない

2021年9月時点では、日本で広く利用されているメールサービスでBIMIに対応しているのはGmailのみです。また、Gmailでもデスクトップブラウザ版のみ対応で、モバイルアプリは対応していないようです。

これについては今後対応しているものが増えていき、解消されるものと思っています。

Gmailでのロゴ表示の問題

現状のGmailでのBIMIのロゴ表示は、個人で設定したプロフィール画像と同じように表示されるため、パッと見ただけでは区別ができません。

BIMIでのロゴ表示

個人のプロフィール画像での表示

このため、ロゴの表示だけで正規のメールだと判断することはできず、合わせて以下のような確認が必要になってしまっています。

  • 差出人のメールアドレスのドメインが正規のもの
  • メールに表示されているロゴと個人のプロフィール画像が同一ではない

BIMIで認証されロゴが表示された正規のメール (メールのロゴとプロフィール画像が違う)

BIMIで認証されていないメール (メールのロゴとプロフィール画像が同一)

もしかすると今後Gmail側で、表示方法が変わることがあるかもしれません。

最後に

まだまだ対応が始まったばかりのBIMIですが、今後対応しているメールサービスが拡大していき、SmartHRのお客様が簡単に正規のメールとなりすましメールを判断できて、フィッシングなどの被害に会わないようになっていくことを期待しています。

SmartHRでは、このような新しい技術なども使いつつセキュリティを一緒に強化してくれる仲間を募集中です!

open.talentio.com

https://open.talentio.com/1/c/smarthr/requisitions/detail/15489open.talentio.com