S/MIME

読み:えすまいむ / 英語表記:Secure/Multipurpose Internet Mail Extensions

公開鍵暗号を使って、電子メールの暗号化とデジタル署名を行うための規格。送信者は自分の秘密鍵で署名し、受信者は送信者の公開鍵で署名を検証する。

イマシルちゃんの解説

S/MIMEは、メールに「封」と「ハンコ」を付ける仕組みなんだ。

封(暗号化)をすれば、相手以外には中身を読まれない。
ハンコ(署名)を押せば、本当に自分が送ったこと、途中で書き換えられていないことを証明できる。
どの鍵で封をして、どの鍵でハンコを押すのか、使い分けがポイントだよ!

より深い解説

定義

S/MIME(Secure/Multipurpose Internet Mail Extensions)は、RFC 8551などで定められた、電子メールの暗号化とデジタル署名のための規格である。MIMEの形式で、暗号化したデータや署名をメールに含める。公開鍵の正しさは、認証局が発行するデジタル証明書で保証する。

鍵の使い方

目的送信者が使う鍵受信者が使う鍵
デジタル署名送信者の秘密鍵で署名する送信者の公開鍵で検証する
暗号化受信者の公開鍵で暗号化する受信者の秘密鍵で復号する

署名は「本人しか持たない秘密鍵で作り、誰でも検証できる」、暗号化は「誰でも暗号化できるが、本人の秘密鍵でしか復号できない」と考えると、使い分けを間違えにくい。

署名と暗号化の流れ

署名

  1. 送信者は、メール本文のハッシュ値を計算し、自分の秘密鍵で署名を作る
  2. 署名と送信者の証明書を、メールに付けて送る
  3. 受信者は、証明書から送信者の公開鍵を取り出して署名を検証し、ハッシュ値と比べる

暗号化
実際には、本文全体を公開鍵暗号で暗号化するのではなく、ハイブリッド暗号方式を使う。

  1. 送信者は、ランダムな共通鍵を作り、本文を共通鍵暗号で暗号化する
  2. その共通鍵を、受信者の公開鍵で暗号化する
  3. 暗号化した本文と、暗号化した共通鍵を送る
  4. 受信者は、自分の秘密鍵で共通鍵を復号し、その共通鍵で本文を復号する

S/MIMEで実現できること

機能実現方法
機密性(盗聴の防止)暗号化
完全性(改ざんの検出)デジタル署名
送信者の認証デジタル署名と証明書
否認防止デジタル署名

送信ドメイン認証との違い

S/MIMEDKIM
署名する主体送信者個人送信側のメールサーバ(ドメイン)
暗号化できるできない
公開鍵の入手デジタル証明書DNS

S/MIMEは、メールの送信から受信まで(エンドツーエンド)を保護する。一方、メールサーバ間の通信をSTARTTLSで暗号化しても、各サーバの上ではメールは平文で保存される。

PGPとの違い

同じくメールの暗号化と署名を行う技術にPGP(OpenPGP)がある。S/MIMEが認証局を頂点とする階層的な信頼モデル(PKI)を使うのに対し、PGPは利用者同士が互いの公開鍵に署名し合う「信頼の輪(web of trust)」を基本とする。

実際の試験ではここに出る!

この用語が出てくる記事

↑