メールに関するセキュリティ

2022/08/22に公開

LNEやFacebook Messengerなど様々なメッセージサービスが登場している中にあって、メールは今なお多用されています。メールアドレスさえ分かればメッセージが送れること、そして大多数の人たちがメールアドレスを保有しているのが要因です。

そうした中で、メールを悪用する人たちも少なからず存在します。長い歴史の中で、悪意を持った利用を防止するための技術も多数生み出されています。この記事ではセキュリティの観点からメール技術を紹介します。

通信経路のセキュリティ

メールサーバーとクライアントの通信は基本的に平文でやり取りされます。それはメール本文はもちろん、ユーザーアカウントやパスワードを含みます。そのため、悪意を持った利用者がいた場合、通信経路を監視するだけで秘匿情報が取得できます。

そうした情報漏洩を防ぐために利用されるのが over SSL です。名前の通り、SSL/TLSを利用するので通信経路上で情報を盗み見られるのを防止できます。対応しているプロトコルは次の通りです。

プロトコル ポート番号 over SSL ポート番号
POP3 110 POP3S 995
SMTP 25 SMTPS 465
IMAP 143 IMAPS 993

メール送信前の認証

メール受信はもちろんですが、メール送信は受け取り側に甚大な被害や迷惑をもたらす可能性があるので特に注意が必要です。そのため、誰でもSMTPサーバーに接続してメール送信を行えるのは危険です。メール送信サーバーが信頼する相手とだけやり取りができるように認証する仕組みが必要です。

POP before SMTP

メールを送信する前にPOP3認証を行います。その認証が成功すれば、一定時間IPアドレス単位でSMTPサーバーへの接続を許可する方法です。同じIPアドレスからの全端末を許可してしまうため、LAN内部に悪意を持ったユーザーがいる場合などにセキュリティリスクがあります。

SMTP-AUTH

SMTP-AUTHはメール送信前に認証を行う仕組みです。一般的にはメール受信を行うアカウントのIDとパスワードを利用しますが、別な情報で認証することも可能です。仕組みとしてはSMTPサーバーから 250-AUTH のコマンドが来た際に、ユーザーアカウントやパスワードを返信します。その際に選択できる認証方式は次の通りです。

認証方式 概要 セキュリティレベル
LOGIN ユーザーアカウントとパスワード(以下、認証情報)を平文で順次送信
PLAIN 認証情報を連結してBASE64エンコードで送信
CRAM-MD5 SMTPサーバーから受け取った文字列(チャレンジ)を使って認証情報をダイジェスト化して送信
DIGEST-MD5 CRAM-MD5が辞書攻撃やブルートフォースアタックに弱いという欠点を改善した方式

SMTP-AUTHについては、基本的にSMTPSを利用している前提で使うのが良いでしょう。

IPアドレス認証

POP before SMTPと同じくIPアドレス単位での接続を許可する方式です。対象としてはサーバーからのメール送信などで採用されます。管理画面などから設定を行うため、サーバーのIPアドレスや自社のグローバルIPアドレスを設定するのが一般的です。

署名

個人のメールが本当にその人から送られてきたのかどうか判別するために、署名が使われます。これはメールのフッターなどに記載される署名とは異なりますので注意してください。

PGP

PGPはPretty Good Privacyの略になります。公開鍵/秘密鍵を用いた署名技術になります。個々人で秘密鍵を生成し、公開鍵を交換します。そしてメール送信時に秘密鍵を用いて署名し、受け取った側は公開鍵を使って電子署名の検証を行います。

PGPによる交換鍵の交換は、何らかのドライブ(USBメモリやフロッピーディスクなど)を用いて行う想定だったようです。現在はPublic Key Server Commands[^1]など公開鍵サーバーへ登録するのが一般的です。

送信されたメールは -----BEGIN PGP MESSAGE----- ではじまるメッセージとなっており、公開鍵がないと読めないようになっています。Gmailなどで署名を使う場合にはFlowCrypt[^2]やMailvelope[^3]を利用します。

GPG

GPGはGNU Privacy Guardの略です。GnuPGとも呼ばれます。PGPは有償のソフトウェア、技術でしたが、そのオープンソース実装になります。PGPではIDEAという特許が絡んだアルゴリズムが利用できましたが、GPGでは採用されていませんでした(特許切れに伴い、現在は利用できます)。他にもRSAやCamelliaも特許切れに伴ってサポートされています。

PGP自体は2008年で開発が停止しており、セキュリティ面でも利用はお勧めできません。そのため、GPGを利用するのが一般的でしょう。

S/MIME

S/MIMEも公開鍵/秘密鍵を用いた署名技術になります。ただし、PGPやGPGと異なるのはSSL/TLSと同じく認証局を用いたことにあるでしょう。現在、S/MIMEに対応している認証局はSectigo(有料・無料)やActalis(無料)などがあります。他にもSSL/TLS証明書を発行している企業であれば、多くが対応しているでしょう。こうした認証局でメールアドレスを認証し、証明書を発行します。

S/MIMEではPPAP(パスワード付きzipファイルと、そのパスワードを別送する)と異なり、添付ファイルにも署名を施して送信できます。正規の受信者以外が添付ファイルを確認できないようにしたり、送信主が正規のユーザーであるかどうかも署名によって確認できます。

^1
^2
^3

Discussion