セキュリティの専門家はユーザーが見破られやすいパスワードを設定することを非難する。しかし、コードを書く開発者はどうだろうか?われわれのパスワードをきちんと保護してくれないことへの責任はaあるのだろうか?とセキュリティ分野への執筆実績も豊富なLisa Vaas氏がSophosのオウンドメディアnaked securiyに寄稿している。

Lisa Vaas氏は2月にセキュアな運用が求められる業界やシーンにおいて、パスワードを暗号化しないままにメールやテキストなどで提供することの危険性を指摘(Millions of utilities customers’ passwords stored in plain text)しているが、開発者はどうなのだろうか?といくつかの調査結果を取り上げている。 ドイツ・ボン大学の研究者が2017年から2018年にコンピュータサイエンスの学生や開発者に対して行った開発時のパスワードの安全な保存に対応しているのかの調査結果を例に、明示的な指示がなければ学生もフリーランスの開発者もパスワードの安全な保存の仕組みを講じない傾向を指摘している。

この調査では、求人サイトでフリーランス向け求人を出し、Javaスキルを持つ開発者を募集と掲示した。報酬は30~100ユーロ(約34~112ドル)で、予定作業日数は1~15日。260人の開発者のうち、43人が作業を引き受けた。ここではJava、JSF、Hibernate、PostgreSQLなどの技術を使っている。報酬とパスワードの安全性の関係を調べるために半分は100ユーロ、残り半分は200ユーロで支払う、フリーランス開発者とのやりとりを確実にするためにパスワードを安全に保護すべきかという質問、あるいは一部の手法を用いていいかという質問に対して、それぞれ「はい、お願いします」「どの手法でもいいです」と一貫して答えるなどガイドも作成。参加した開発者がパスワードがデータベースにおいてプレーンテキストで保存されるソリューションを構築した場合、「パスワードがプレインテキストで保存されていますが、安全に保存してください」と指示、そしてこれらの開発者を、セキュリティの促しを行なった人として分類するなど詳細な検証をしている。

調査チームは、一部はパスワードの安全な保存をデータの伝送部分のセキュリティと混乱しており、開発者の一部はエンコードを暗号化と同義と考えていた。フリーランス開発者のうち8人が、バイナリからテキストに変換するエンコード方式であるBase64を利用してパスワードを保存する仕組みを講じた。開発者が安全なパスワード保存システムと思って実装したもののうち、安全と考えられている手法は2種類(PBKDF2とBcrypt)しかなかった。ランダムなデータを加えることで暗号化されたパスワードをより強固にするソルトを用いていた開発者は43人中18人、「明らかにコピーされた」コードを用いているプロジェクトが16と手厳しい結果を列挙する。

「パスワードの安全な保存はセキュリティ専門家にとっては明らかにセキュリティ上重要と思われるようなタスクだが、そのようなタスクですら、全ての開発者が理解していると期待はできない。彼らはまた、明示的な指示なしにはパスワードの安全な保存に時間を割こうと思ってはいない」と調査チームはセキュリティへの期待は低くするようにと助言しているそうだ。

Lisa Vaas氏は260人中43人の開発者が参加したが、これは16.5%にすぎない。残りの83.5%は、このプロジェクトはセキュリティ上悲劇になると判断して参加しなかった可能性もある。知識がある開発者は、仕事を必死で探すため報酬が低くても受け入れる16.5%とは異なると推論できそうだと述べ、報酬の問題が作用するものであることも付記している。

コードのセキュリティを専門とする事業やサービスもあり、どこまでを行うかの事前の取り決めが重要になるのではないだろうか。安全なシステムを講じるにはコストを払わなければならないし、その上で両者が納得の上で取り組むことの大切さを示しているように思われる。