![見出し画像](https://assets.st-note.com/production/uploads/images/118394175/rectangle_large_type_2_9b9a05f73eb214e509f634440b2339ee.png?width=1200)
APOP:メールのパスワードを保護するけど、問題だらけのプロトコル
はい、こんにちは。昨日は「情報処理安全確保支援士」試験を受けてまりました~。午後試験の出来に不安が残りました…。12月の結果発表が楽しみなようなおっかないような…。
さて、その「情報処理安全確保支援士」試験の午前試験の設問で、知らない言葉が出てきて、気になったのでそれを解説します~。それは、「APOP」です。メール受信の文脈で登場します。
![](https://assets.st-note.com/img/1696798520698-ujV9NMHGJK.png)
知ってます?私は試験会場で「見覚えすらない…」と一瞬凍りました…。「J-POP」とか「K-POP」なら分かりますけど♪。
どうやら、もはや推奨されていないプロトコルのようです。では、早速見てみましょう!
パスワード丸見えの「POP3」
メールをクライアントのメールソフトで受信したいとき、サーバとクライアントの間で使われるプロトコルと言えば?そう、「POP3」ですね。これは分かる。
このPOP3は、当初から本人認証の機能が実装されていました。そりゃそうですよね。「受信ボックスに入ったメールを誰でも見てよい」ではプライバシーも何もありませんから(一方、送信の方のプロトコル「SMTP」には認証の機能はありません)。
ところが、このPOP3では、認証するときパスワードを平文で送ることになっています。つまり、盗聴すればパスワードがまるわかりということです。これはまずい。
![](https://assets.st-note.com/img/1696799247279-yhAsNNEdbB.png)
パスワードを保護する「APOP」
そこで登場するのが「APOP」(Authenticated POP)です。このプトロコルを利用すれば、クライアントが、秘匿性を高めてサーバへパスワードを送ることができます。
使う原理は、Digest認証やCHAP認証でも使われる毎度おなじみ?の「チャレンジ・レスポンス認証」です。APOPによる認証の手順はこうです。
メールサーバが「チャレンジ」(課題という意味)という文字列をランダムに生成してクライアントに送ります。
クライアントは、チャレンジとパスワードを「MD5」というハッシュ関数に投入して、ハッシュ値を得ます。これをサーバに送ります。
サーバは、元から持っている「パスワード」と「チャレンジ」を使ってハッシュ値を作っておき、それをクライアントから届いたハッシュ値と照合します。一致するなら認証OKです。
![](https://assets.st-note.com/img/1696800210037-f0JZ3MdaBT.png)
チャレンジを使用したハッシュ値からもとのパスワードを知るのは、困難です。ですから、ハッシュ値を盗聴されたところでパスワードは分からない、という仕組みです。なるほど!
※余談1:「APOPではパスワードを暗号化する」という説明を見かけます。が、ハッシュ値は「復号」できないので、厳密には「暗号化」ではないです。とはいえ、分かりやすさを優先して「読み取れなくする」という広い意味で「暗号化」という言葉を用いているのでしょう。
※余談2:APOPは、Authenticated POPの略です。が、POP自体がAuthentication(認証)の仕組みを持っているので、なんだか冗長に聞こえるのは私だけでしょうか?
ところが問題だらけだった
POP3に比べて安全が高まりなかなか良さそうじゃないですか?
ところが、そうでもなかったようです。
まず、現在、「MD5」というハッシュ関数をパスワード保護も目的として使うのは推奨されていません。「MD5」は、衝突(異なる入力に対し、同じハッシュ値が出力されること)が発見されています。
また、暗号化するのは、「パスワード」です。本文ではありません。APOPでは、本文が盗聴されれば、中身が分かってしまいす。「パスワード」だけでなく、「本文」の機密性を確保したいのは、当然です。
ということで、現在はクライアントとサーバ間のデータのやりとり自体を、SSL/TLSで暗号化する「POP3S」などを使うのが推奨となっております。
以上、APOPについて、IT用語辞典e-Words(いつもお世話になっています!)の記事など、いくつかの出典を参考にして整理しました。
では!
この記事が気に入ったらサポートをしてみませんか?