S/MIMEによる電子メールの電子署名と暗号化 2019年夏

今回はイタリアのアルバグループの会社Actalis SpAが無料で発行しているS/MIME用の証明書を利用する。以前のCOMODOの証明書はルート証明書を別途インストールしなければならなかった(これは好ましくない)が、Actalisの証明書ではそのようなことをしなくて良い。証明書の期限は発行日から1年間。

そのActalisの証明書を取得・インポートして使うところまでと、Gmailでその証明書を使ってみるというのをやりたい。

S/MIME 2019年 1
画像1:
https://www.actalis.it/prodotti/certificati-per-posta-elettronica-sicura.aspx をブラウザで開く。
ページの中程に「Certificati S/MIME gratuiti 」と書かれたリンクがあるのでクリックする。

S/MIME 2019年 2
画像2:
先ず、①で証明書の対象となるメールアドレスを入力するを行う。もちろん自分が所有するメールアドレスでなくてはならない。
②のボタンを押すとただちに①で入力したメールアドレス宛に確認コードが書かれたメールが届く。
届いたメールを開いて確認コードをコピーする。③のVerification codeの欄にペーストする。
④の画像を見て中に書かれている文字列を読む。(文字と文字でないものの境があやふやなので簡単そうで意外と難しいかも)
読み取った文字列を⑤のCaptchaに入力する。
下半分のStep2は青色のリンクを開いて書かれていることを了承できたら「I declare・・・」の左側にあるチェックボックスにチェックする。⑥
3つともチェックしたら⑦のSUBMIT REQUESTボタンを押す。

S/MIME 2019年 3
画像3:
緑色ではなく赤色(ピンク)でメッセージが表示されたら画像2のページで何かを間違っている。メッセージに従って入力し直す。チェックボックスは毎回全て外れるので付け直す。
正しく入力されていれば上の画像のように緑色のProcedure terminated with SUCCESS.が表示される。
中央にパスワードが表示されるのでそれをメモするならコピーして何処かに録っておく。後で証明書をインポート(ストア)するときに使う。(忘れたら後が面倒なので注意)
パスワードをメモするなりしたらブラウザは閉じて構わない。

S/MIME 2019年 4
画像4:
改めてメールが届くのでそのメールを開く。
イタリア語と英語のメッセージになっている。英語は後半。
証明書を管理するためのポータルのURLと初期パスワードが書かれている。
メインは添付されている証明書ファイルなのでダウンロードしてZIPファイルを解凍(展開)する。

S/MIME 2019年 5
画像5:
使用しているメールのアプリケーションの設定画面を開く。上の画像はThunderbird。Thunderbird含めS/MIME対応のどのアプリでもセキュリティ関連の設定項目の中に「証明書を管理」のような項目がある筈。それを開く。

S/MIME 2019年 6
画像6:
証明書管理画面で「あなたの証明書」のような自身のメールアドレスなどの個人用の証明書のタブを選択し、証明書をインポートするボタンを押す。

S/MIME 2019年 7
画像7:
証明書ファイルの選択画面が開くのでダウンロードした証明書(メールに付属していた証明書を解凍したもの)のファイルを指定する。ダウンロードした証明書の形式はPKCS12なのでその形式のファイルが表示される状態にしてファイルを選択する。(Thunderbirdでは初期値がPKCS12なのでそのままファイルを選ぶだけ)
ファイルを選択したらそのファイルを[開く](インポートする)。

S/MIME 2019年 8
画像8:
証明書をインポートする際にパスワードを求められるので画像3で書かれていたパスワードを入力(貼り付ける)。

S/MIME 2019年 9
画像9:
インポートされた証明書が表示される筈。有効期限も確認する。正しい証明書をインポートしたなら(発行日から)1年後の日付が表示される。
確認したら証明書の管理画面は閉じる。

S/MIME 2019年 10
画像10:
メールアプリケーションのの設定画面で再び「セキュリティ」を開く。
「デジタル署名」用と「暗号化」用の証明書を指定する。「選択」ボタンを押すと画像6〜9でインポートした証明書が選択された状態で表示される。選択されていないなら選択する。(既に別の証明書を使用しているなどの場合)
Thunderbirdではデジタル署名用の証明書を「選択」するとその証明書を暗号化用にも使用するか尋ねられるので「はい」を選択すれば自動的に同じ証明書が「デジタル署名」用と「暗号化」用の両方に入る。自動で両方に入らない場合は「デジタル署名」用と「暗号化」用共に上で取得した証明書を指定する。

これで、1のメールアプリケーションで、1つのメールアドレスについてS/MIMEの証明書の設定が完了した状態となる。
複数のメールアプリケーションを使用しているなら同じ証明書ファイルを同様にインポートする。

設定が終わったので、このS/MIMEの証明書を設定をしたメールアカウントでメールを送信する。
また、Gmailは無料アカウントとG Suiteアカウントの両方で「S/MIMEの署名付きメールの受信」に対応しているのでGmailでメールを受信して確認する。

S/MIME 2019年 11
画像11:
上の画像1〜10で設定したメールアカウントからS/MIMEでデジタル署名したメールを自分が持っているGmailのメールアドレスに送信した。S/MIMEで署名したメールは何故か受信に数分かかることが多いようなので届くまで待つ。
メールが届いたらそのメールを開く。
送信者のメールアドルスの下に宛先「To (自分)」があってその右横に▼が表示される筈。▼をクリックする。

S/MIME 2019年 12
画像12:
送信者の情報が表示される。 S/MIMEの署名付きメールなら「確認済みメールアドレス」と表示される筈。
「送信者情報」をクリックする。

セキュリティの項目に灰色の鍵と「標準的な暗号化(TLS)」が書かれている場合はこの暗号化はS/MIMEとは関係ない。送信元のMTAとGmailのMTAの間がTLSであったとかそういう程度。緑の鍵で「高度な暗号化」と書かれているならS/MIMEによる暗号化の筈だが、それはG Suiteのアカウントでしか機能しないかと。

S/MIME 2019年 13
画像13:
1つ前の画像12の画面で「送信者情報」をクリックした状態。
送信者のデジタル署名の概要が表示される。署名元が送信者のメールアドレスであることを確認する。今回は証明書を取得するところからやったので発行元と有効期間も見ておきたいところ。

これで、自分の(非Gmail)メールアドレスからGmail宛にメールを送信して、そのメールが送信者偽装ではないメールであるところまで確認できた。デジタル署名はしたが暗号化はしていないのでメールが改ざんされていないことは確認できていない。Gmailの無料アカウントではS/MIMEの暗号化は利用できないので非GmailからGmailへのメール受信確認はここまで。

また、Gmailの無料アカウントのウェブ版やスマートフォンアプリではS/MIMEのデジタル署名を付けたメールを送信することもできないのでGmailから非Gmail宛に署名付きメールを送信して確認することもできない。

ただし、GmailアカウントをIMAP+SMTPで利用している場合はS/MIMEはフルで利用可能。Gmailメールアドレスで上の画像1〜10の手順を行う。これでS/MIME対応メールアプリケーションではGmailのメールアドレスでS/MIMEが使える。
そこで、メールアプリケーションからGmailのメールアドレスで自身にメールを送信し、Gmailのウェブ版で受信を確認する。

S/MIME 2019年 14
画像14:
送信者が自身のメールを受信して、上の画像11と同じ方法で送信者の情報を表示した。
自己宛メールなのでFromもToも同じ自分のGmailのアドレス。また、IMAPを使ったとはいえGmail内で完結しているので「あなたに直接送信されました」になっている。
「確認済みメールアドレス」のとなりの「送信者情報」をクリック。

S/MIME 2019年 15
画像15:
送信者のデジタル署名は画像1〜10で取得したActalisの証明書であると表示されている。

S/MIME 2019年 16
画像16:
S/MIMEでは送信者・受信者ともにS/MIMEが使える場合にメールを暗号化して送信することができる。
メールアプリケーションには証明書をインポートしてあるので自己宛にメールを送信する場合は送信者・受信者ともにS/MIMEに対応ということになり暗号化メールを送信することができる。
ただし、Gmailのウェブ版/スマートフォンのGmailアプリは取得した証明書をインポートしていない(できない)。
なので、Gmailのウェブ版/スマートフォンのGmailアプリではS/MIMEの暗号化メールは復号化できない。(上の画像)

S/MIME 2019年 17
画像17:
S/MIMEではメールヘッダ以外が全て暗号化されるので証明書をインポートしていない環境(Gmailウェブ版/スマートフォンアプリ)では復号化できない。なのでデジタル署名も無いという扱いになる。おもしろいですね。

S/MIME 2019年 18
画像18:
S/MIMEでデジタル署名+暗号化したメールをGmailアドレスのIMAP接続のメールアプリケーションで見ると普通に復号化されるとともに署名も付いていると言う表示になる。
Thunderbirdでは便箋に蠟で封をしたアイコンがデジタル署名付きを示し、鍵のアイコンが暗号化を示す。
便箋・鍵のアイコンをクリックするとホップアップ窓が開き「メッセージのセキュリティ」の概要が表示される。便箋・鍵のどちらで開いても同じ内容が表示される。デジタル署名されているが暗号化されていなければ、署名を示す便箋のアイコンだけが表示される。

S/MIME 2019年 19
画像19:
メッセージのセキュリティの表示。上の画像ではデジタル署名されていて、且つ、暗号化されている。
つまり、このメールは送信者(のメールアドレス)が確かであり、内容が改変も覗き見もされていないことが事実上保証されている。

なお、S/MIMEによる暗号化はメールヘッダ以外 = メールの本文(+添付ファイル)だけなので、途中経路(MUA- MTAとMTA-MTA)がTLSなどで暗号化されていなければ宛先と送信元とメールの題名は丸見えであることには注意が必要。

おまけ

AndroidのGmailアプリでS/MIMEのデジタル署名付きメールを表示した。

S/MIME 2019年 20
画像20:
Gmailアプリで、着信したメールを開く。
「To: 自分」の右隣のをクリックして送信者の情報を表示したのが上の画像。S/MIMEで署名されたメールなので「確認済みメールアドレス」と表示されている。
右隣の「送信者情報」をクリックする。(次)

S/MIME 2019年 21
画像21:
送信者情報ではなく「セキュリティの詳細」が表示される。
ここではセキュリティは「(TLS)が適用されています」になっていてS/MIMEには触れられていない。
「詳細」をクリックする。(次)

S/MIME 2019年 22
画像22:
TLSについての説明は全く無く、S/MIMEのデジタル署名について表示される。
ちょっとチグハグ感がある。

着信メールのデジタル署名に対応しただけでもマシだけど、できたら証明書の管理をできるようにして送信メールでデジタル署名できるようにする(+暗号化する)ところまで対応して欲しいかも。

関連記事: