Tips: 学外からメールクライアントで@kanagawa-u.ac.jp のメールを読むと危険な理由

このTipsは、2014年度までの入学者にのみ適用されます。
※2015年度以降の入学者は、JINDAIメールに切り替わっているので、ここでの記述は当てはまりません※
※2014年度までの入学者も、JINDAIメールを使う際にはここでの記述は当てはまりません※

自宅PCからMNSアカウントメールを受信してはダメな理由

APOPがダメ

MNSでは現在、外部からアクセス可能なメールサーバーとして apop.kanagawa-u.ac.jp を公開している。名前から分かるように、このサーバーはAPOPでユーザー認証を行った上でメールの本文は平文でインターネットに流すシステムである。

APOPは、ユーザー認証に必要なユーザーIDと、パスワードをサーバー側から提供されるチャレンジ文字列と一緒にしてMD5でハッシュしたものを送り返すという一種のchallenge-responseによる認証方法である。この方式は、ハッシュに使われているMD5の脆弱性のためチャレンジ文字列とハッシュされた文字列のペアが沢山集まるとパスワードが復元されてしまう脆弱性が指摘されている。というか、今時MD5は「暗号的には使ってはいけない」ハッシュ関数。これ常識。

参考: APOP方式におけるセキュリティ上の弱点(脆弱性)の注意喚起について(2007年11月26日)

統合認証もヤバい

さて、APOPがダメな子なのはもういいとして、本学システム固有の事情としては、メールを読む時に使うユーザーID/パスワードの組み合わせが他のシステムでも使われている統合認証基盤のユーザーIDとパスワードであるという点がマズい。メールを読むだけの認証情報なら、最悪でも悪意の第三者にメールを盗み読みされるだけ(これだってかなりマズいが)。でも他のシステムにログインされてしまうともっとひどいことになり得る。

上に上げたIPAの文書でも、「どうしてもAPOP使うなら、メールのパスワードを他のシステムのパスワードと同一にしない」ことが勧められている。

メールの内容、平文でインターネットに流していいのか?

「メールなんてどうせインターネットを平文で流れてくるんだから、読み出す時だけ暗号化してもしょーがないじゃん」という考え方がある。確かに、メールの暗号化はメールの発信者-受信者の間を全てカバーできるように、送信時にS/MIMEなどで暗号化し、受信時に復号するのがセキュリティ的には常識。APOPは認証情報だけハッシュで隠すが、本文はそのまま手つかずの平文で送りつけてくるが、多分基本的にはこういう発想。

でもちょっと考えてみよう。「学内でやりとりしているメールだから」といって、暗号化していないファイル、しかも外部に漏れたら問題になるような情報を含んでいるものを添付で送ってしまったりしていないだろうか? MNSアカウントのメールボックスにアクセスできるのが学内ネットワークだけならこの仮定はある程度妥当性があるが、ここで考えているケースのように、学外からアクセスしてメールを読む場合には全然成立しない。

つまり、「他人に読まれたらマズい」内容のメールが来る可能性のある人は、APOPなんて使ってはいけない。

OutlookはAPOPに対応していないが、APOPサーバーはPOP3での認証を(一応)受理する

マイクロソフトは、APOPなんてダメという真っ当な感覚を持っている会社なので、OutlookもOutlook ExpressもそもそもAPOPなんていうプロトコルには対応していない。すっぱりしていて気持ちいい。もし信用できないネットワーク(インターネットとかね)越しにメールを読みたい場合は、SSLを使って暗号化するのがマイクロソフトの方針。

ここで注意しないといけないのは、apop.kanagawa-u.ac.jpは APOPを受け付けるサーバーなのだけれど、単純なPOP3での認証も受け付けてしまうこと(認証自体は失敗するが、ユーザーIDとパスワードが平文で送られた「後」で認証が失敗する)。つまり、APOPないからPOP3でとりあえずやってみよう、と思うと平文で認証情報が流れてしまう。とっても危険。要注意。

では、どうしたらいいのか?

WebStationのメール機能を使う

これがオススメの方法。WebStationはhttpsで運用されているので、サーバーから手元までの区間が暗号化されている。比較的安全。

インターネット区間を暗号化するような方法を考える

学内ネットワーク部分は「一応信頼できる、かもしれない」と諦めて、インターネット区間だけ暗号化する方法はいくつかある(*)。ただ、やり方を聞かないと方法が分からない程度のスキルの人はやらない方がいいので、詳細は書かない。

(*)実験的(**)サービスとして、への中継を行っている。

(**)「実験的」というのは、「ちゃんとしたサービスとして運用しているわけじゃないから、たまに落ちていたり遅かったりしても文句言わないでください」という言い訳の常套句。ご了承ください。