メール送受信における暗号化について

メール送受信における暗号化(STARTTSL,SMTP over SSL(SMTPs),POP over SSL(POP3s),IMAP over SSL(IMAP4s))について、調べる機会があったので、まとめてみました。

# メール送受信の仕組み
メールサーバーとは：
　メールを送受信する役割を持ったサーバー

###通信プロトコルとは：
　ざっくりいうと通信を行う際の決まり事、お約束。

###TCP/IPとは：
　インターネットにおける様々なサービスを実現するためのプロトコル。メールに関するプロトコルはここに属する。
　他に、「FTP」：ファイル転送に使われるプロトコル。「HTTP」：WebブラウザとWebサーバー間でデータのやり取りをするときに使われるプロトコル。「SSL」：通信の暗号化で使われるプロトコルなどがある。※１
　TCP/IPの通信ではポート番号を用いて、どのプロトコルで通信するかを判別する。

###SMTP(Simple Mail Transfer Protocol)：
　メールの送信用プロトコル。メールクライアントから、メールサーバー間のリレーを行う。TLSもサポートしている587番ポート使用が推奨。かつては25番ポートが使用されていたが、感染したコンピューターからスパムメールを送信するのに悪用されることが多く、ブロックしているISP等が多い。

###SMTPサーバー：
　送信用サーバー

###POP(Post Office Protocol)：
　メール受信用プロトコル。メールクライアント側にダウンロードされる。メールサーバーからはデータが消えるので容量削減になる。（設定で保存も可能）

###IMAP(Internet Message Access Protocol)：
  メール受信用プロトコル。メールクライアント側にダウンロードせず、サーバー上のメールを読みに行く。複数の端末からメールにアクセスできる。

### DNS：
　メールアドレスとIPアドレスを紐づけて管理している。メールサーバーはDNSにIPアドレスを確認することにより、送り先サーバーを特定することができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547556/bdcff4c5-dfe5-84e2-b806-5265b682304f.png)


※１　SSL/TLSについて：
 インターネット上でやり取りする情報を暗号化して送受信するための仕組み。


###SSL/TLSの仕組みについて：


　１　クライアントがサーバーに接続を試みる。

```
　　　□ クライアント　＞＞＞＞【接続】＞＞＞＞　■ サーバ
```

　２　サーバーはクライアントに、サーバー証明書※2（公開鍵（暗号化用鍵））を送る。

```
　　　□ クライアント　＜＜＜＜【公開鍵】＜＜＜＜　■ サーバ
```

　３　クライアントは、サーバーの正当性を確認。※3
　
　４　クライアントは共通鍵（暗号化復号化用鍵）を作成する。

```
　　　□ クライアント
　　　　　　↓
　　　　共通鍵（平文）作成
```

　５　クライアントは共通鍵を、公開鍵で暗号化する。

```
　　　□ クライアント
　　　　　　↓
　　　　共通鍵（平文）
　　　　　　↓
　　　公開鍵を用いて
　　　　　　↓
　　　　共通鍵（暗号化済）
```

　６　クライアントは、サーバーに暗号化された共通鍵を送る。

```
　　　□ クライアント　＞＞＞＞共通鍵（暗号化済）＞＞＞＞　■ サーバ
```

　７　サーバーは、秘密鍵を使って、共通鍵を復号する。

```
　　　　　　　　　　　　　　　　　　　　　　　　　　　　■ サーバ
　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　↓
　　　　　　　　　　　　　　　　　　　　　　　　　　　共通鍵（暗号化済）
　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　↓
　　　　　　　　　　　　　　　　　　　　　　　　　　　秘密鍵を用いて
　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　↓
　　　　　　　　　　　　　　　　　　　　　　　　　　　共通鍵（平文）
```

　８　以後の通信は、秘密鍵を使って情報を暗号化して、やりとりする。

まとめると、公開鍵暗号方式で共通鍵を暗号化して受け渡しを行い、あとは受け渡した共通鍵を使って共通鍵暗号方式（秘密鍵暗号方式）でやり取りすることで、通信の安全性を高める仕組。
公開鍵は、広く交付しても問題ない。　←　秘密鍵がなければ、サーバー側に送られてきた秘密鍵（暗号化済）を平文に戻すことができないので。
TLSは、SSLがバージョンアップしたもの。最近では、TSLが用いられているが名残でSSLと呼ぶことが多い。

※2 SSLサーバー証明書:
　SSLサーバ証明書とは（１）「SSLによる暗号化通信」と（２）「Webサイトの運営者の身元証明」の2つの機能をあわせ持つ電子証明書のこと。（１）については上記の通り。

##本題
###STARTTLSとは:
　STARTTLSとは、START + TLS。　文字通りメールクライアントとSMTPサーバーが暗号化されていない接続を、SSL/TLSで保護され暗号化された接続に変換する。メールクライアントとメールサーバが、上記TLS通信を行って、メールの内容を暗号化して送受信する。
STARTTLSの特徴として「専用ポート番号を準備する必要がなく通常のSMTP,POP,IMAPと共用のポート番号が使用できる」という部分がある。ここには、メリットとデメリットがある。

メリット：
　通常メールは、暗号化用と暗号化していない用のポートを送受信のそれぞれ用意する必要がある。しかしSTARTTLSは、専用のポートが必要ないため、ファイアウォール（FW）で通信をブロックされる可能性も減り、ポート開通の設定作業などの手間も減る。

デメリット：
　そもそも、なぜSTARTTLSが専用のポートを用意する必要がないのか。STARTTLSは、通信開始時には暗号化してない平文で通信される。そして、クライアントとサーバー間でSSL/TLSが確立された段階で、暗号化が開始される。よって、通信開始時は通常のSMTPと同じポートを使用することが可能となる。
　当然、暗号化接続する前までは、平文の状態での通信がはじまるので、そこに盗聴が入ってきた場合、情報を盗まれるリスクを孕んでいる。
　また、メールクライアントとサーバー間（上記図　※A）ではSTARTTLSにより暗号化されたとしても、送信先のサーバーがSTARTTLSに対応していなかった場合は、送信サーバーと受信サーバー間（上記図　※B）では、平文のまま送信されてしまう。

###SMTP over SSL(SMTPs),POP over SSL(POP3s),IMAP over SSL(IMAPs)とは:
STARTTSL同様、メールにおいてSSL/TLSにより暗号化して通信する方式。
STARTTSLとの違いは、サーバー間のやり取りにおいて、宛先サーバー側もSMTPs,POP3s,IMAPs方式であることが前提のため、通信開始時から暗号化されて送信される。そのため専用のポートを開ける必要がある。
また、相手側が対応していない場合には、サーバーによりSTARTTLSと同様に平文で送られるか、送信を行なわない。


参考：

「Webサイトの運営者の身元証明」については、アドレスのＵＲＬが **https**から始まっていること。**南京錠マーク**がついてことによりＳＳＬサーバーが認証局から発行されているサイトであることが確認できる。

SSLサーバー証明書の内容確認方法：
鍵マークをクリック⇒証明書をクリック⇒発行者と発行先が確認できる。⇒詳細クリック⇒各種詳細を確認。サブジェクトと上記発行先が一致していことによりWebサイトの正当性が確認できる。
また、公開キーの欄で、使用されている暗号化方式と公開キーが確認できる。

認証局の正当性：
そもそも認証局自体が正当なものかの確認方法。chromeの場合、ツールバー⇒設定⇒プライバシーとセキュリティー⇒セキュリティ⇒証明書の管理⇒中間証明機関、ルート証明機関で確認できる。


参考サイト
メール送受信の仕組みについて解説！
https://blastmail.jp/blog/mail-delivery/send-and-receive-mail

POP over SSL/SMTP over SSL
https://www.websecurity.digicert.com/ja/jp/theme/ssl-pop-over#:~:text=%E9%9B%BB%E5%AD%90%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E5%8F%97%E4%BF%A1%E6%99%82%E3%81%AB,%2FTLS%E3%80%8D%E3%81%A8%E3%81%84%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

SMTPSとSTARTTLSの違い
https://medium-company.com/smtps-starttls-%E9%81%95%E3%81%84/

電子メールの基礎
https://senmon.cfc.ac.jp//studentreport/report2/mail.html

メールが盗聴される仕組みや手口を解説！対策方法は？
https://it-trend.jp/mail_security/article/56-0179

「私たちはなぜパスワード付きｚｉｐファイルをメール添付するのか」
https://digitalforensic.jp/2019/12/23/column595/