見出し画像

APOP:メールのパスワードを保護するけど、問題だらけのプロトコル

はい、こんにちは。昨日は「情報処理安全確保支援士」試験を受けてまりました~。午後試験の出来に不安が残りました…。12月の結果発表が楽しみなようなおっかないような…。

さて、その「情報処理安全確保支援士」試験の午前試験の設問で、知らない言葉が出てきて、気になったのでそれを解説します~。それは、「APOP」です。メール受信の文脈で登場します。

知ってます?私は試験会場で「見覚えすらない…」と一瞬凍りました…。「J-POP」とか「K-POP」なら分かりますけど♪。

どうやら、もはや推奨されていないプロトコルのようです。では、早速見てみましょう!

パスワード丸見えの「POP3」

メールをクライアントのメールソフトで受信したいとき、サーバとクライアントの間で使われるプロトコルと言えば?そう、「POP3」ですね。これは分かる。

このPOP3は、当初から本人認証の機能が実装されていました。そりゃそうですよね。「受信ボックスに入ったメールを誰でも見てよい」ではプライバシーも何もありませんから(一方、送信の方のプロトコル「SMTP」には認証の機能はありません)。

ところが、このPOP3では、認証するときパスワードを平文で送ることになっています。つまり、盗聴すればパスワードがまるわかりということです。これはまずい。

パスワードを保護する「APOP」

そこで登場するのが「APOP」(Authenticated POP)です。このプトロコルを利用すれば、クライアントが、秘匿性を高めてサーバへパスワードを送ることができます。

使う原理は、Digest認証やCHAP認証でも使われる毎度おなじみ?の「チャレンジ・レスポンス認証」です。APOPによる認証の手順はこうです。

  1. メールサーバが「チャレンジ」(課題という意味)という文字列をランダムに生成してクライアントに送ります。

  2. クライアントは、チャレンジとパスワードを「MD5」というハッシュ関数に投入して、ハッシュ値を得ます。これをサーバに送ります。

  3. サーバは、元から持っている「パスワード」と「チャレンジ」を使ってハッシュ値を作っておき、それをクライアントから届いたハッシュ値と照合します。一致するなら認証OKです。

チャレンジを使用したハッシュ値からもとのパスワードを知るのは、困難です。ですから、ハッシュ値を盗聴されたところでパスワードは分からない、という仕組みです。なるほど!

※余談1:「APOPではパスワードを暗号化する」という説明を見かけます。が、ハッシュ値は「復号」できないので、厳密には「暗号化」ではないです。とはいえ、分かりやすさを優先して「読み取れなくする」という広い意味で「暗号化」という言葉を用いているのでしょう。

※余談2:APOPは、Authenticated POPの略です。が、POP自体がAuthentication(認証)の仕組みを持っているので、なんだか冗長に聞こえるのは私だけでしょうか?

ところが問題だらけだった

POP3に比べて安全が高まりなかなか良さそうじゃないですか?

ところが、そうでもなかったようです。

まず、現在、「MD5」というハッシュ関数をパスワード保護も目的として使うのは推奨されていません。「MD5」は、衝突(異なる入力に対し、同じハッシュ値が出力されること)が発見されています。

また、暗号化するのは、「パスワード」です。本文ではありません。APOPでは、本文が盗聴されれば、中身が分かってしまいす。「パスワード」だけでなく、「本文」の機密性を確保したいのは、当然です。

ということで、現在はクライアントとサーバ間のデータのやりとり自体を、SSL/TLSで暗号化する「POP3S」などを使うのが推奨となっております。


以上、APOPについて、IT用語辞典e-Words(いつもお世話になっています!)の記事など、いくつかの出典を参考にして整理しました。

では!







この記事が気に入ったらサポートをしてみませんか?