病みつきエンジニアブログ

機械学習、Python、Scala、JavaScript、などなど

「メールの添付ファイルにパスワードかけて、別メールでパスワードを送る」に言いたいこと

(2015/8/29追記)

最初に代案だけ書いておくと、(メールで送る程度の秘匿性のものは)「Proself」みたいな別プロトコルを使う、です。
メールパスワードでは、パスワードに規約をつけることもできません。
また、この話は企業等においてのルール化の話です。


もう何年前のネタなんだろうという感じでもあるのですが、2015年現在もこの慣習はなくなっていないように感じます。 実際社会人になってからも、残念なことに一度言われたことがありますし(受け売りでしか喋れなかったんだと思いますが)、自分もやったことがあります。

そこで、いくつかのケーススタディーから「この方法に意味があるのか」そして「どういう方式がセキュアか」という話をします。

メールのアカウントが漏洩するケース

例えば、POP3アカウントのIDとパスワードが流出して、アカウントに不正ログインされてしまったと仮定します。

このケースの場合は、添付ファイルを含むメールも、添付ファイルのパスワードを含むメールも流出していることになるので、意味がありません

これらケースでセキュアにするとしたら、ZIPはメールで、パスワードは電話や手紙・口頭(=別のプロトコル)で通知する必要があります。

メールを誤送信するケース

例えば、メールを誤送信する確率が、仮に1%だとします。

そのとき、(当たり前ですが)「添付ファイルつきのメール」を誤送信する確率も、1%です。したがって、「添付ファイルそのもの」を誤送信する確率は、全く変わっていません。しかも、パスワードを送るメールアドレスをコピペしてたりすると、結局確率は変わっていないわけです。

そこで問題になるのは、ZIPファイルのパスワードに意味があるのか、という問題です。意味がないとは言わないのですが、数文字程度の英数字とか、辞書に含まれる単語とかを使ってしまうと一瞬で解読されますし(ブルートフォースアタックや辞書攻撃)、パスワードはいずれ解読されるリスクがありますので、流出した時点でアウトです。例えば、暗号化(ハッシュ化)されたデータベースであっても、漏洩するとニュースリリースを出したりします。

パスワードの解読にかかる時間を見てみると、Password Recovery Speeds というサイトでは、英文字だけの場合、Class Eのコンピュータ(Workstation)で10桁のパスワードでも、16日で解読が終わると書いてあります。

したがって、このケースで問題ないのは、解読するほど価値が大きくない情報の場合です(トイレの鍵、という比喩ですね)。

一つ補足すると、ZIPファイルのパスワードを解読されたところで、不正アクセス防止法には該当しないのではないかと思いますので、法律による保護を求めるのは厳しいと思います(判例あるのかな・・・?)。

どうするのが良いか?

“慣習”方式は、あまり意味がないということをつらつらと書いてきました。私は、この“慣習”は止めるべきであるという意見です。

なぜならば、これをセキュアな方式だと勘違いする人が一定数いて、本当に大事なデータを上記の方法で送ってしまい、漏洩するリスクを高めるからです。そして、より良い代案があるからです。

このようなやり方をちゃんとやろうとすると、記号を含むような15桁とかのパスワードを設定して、別のプロトコル(電話とか)を使ってパスワードを通知するべきだ、となります。面倒くさいですし、ルール化するのは困難であると思います。

代案というのは、例えば、Proselfのようなパッケージを使うというやり方があります。Proselfはユーザーにセキュアなパスワードを強制できますし、ZIPよりもブルートフォースの速度が落ちますし、ログも残ります。(サーバー自体が脆弱である可能性は残りますが、責任の所在は集約されます)

さらに本当にセキュアにするのであれば、中間者攻撃のリスクも懸念して、暗号化ハードディスクで授受をする、という方法もあります(笑)

まとめ

以上をまとめると、 「メールの添付ファイルにパスワードかけて、別メールでパスワードを送る」という方式に対して、まずは「あまり安全ではない」ということを認識する必要があります。

その上で、適切な方法を選択すべき、ということでした!