企業で社内SEをやっています。10人程度のチームで、わたしはセキュリティ関連を主に担当しています。
今では仕事として取り組んでいるセキュリティですが、学生時代はまったく興味がありませんでした。パスワードの管理ひとつとってもおざなりだったのです。
わたしが学生時代に開設して10年近く放置したFacebookが、2023年頭くらいに、パスワードを突破され乗っ取られました。
開設しただけで友達も0人だったのが不幸中の幸いで、知らない外国人の友達が何十人も増えただけで被害は大きくありませんでした。
アカウント削除で事なきを得ました。今となっては、本当に脆弱なパスワードは突破されることを体験できた、いい経験でした。
今回は、現役でセキュリティを仕事にしているわたしが、パスワードに対する要件や管理方法を紹介します。
なお、この記事は2023年5月28日に作成しています。
パスワードの考え方は時代によって変化することを念頭に置いて、読み進めていただければと思います。
目次
安全なパスワードの要件と管理方法
わたしのFacebookアカウントのパスワードは、アルファベットのみの小文字で11文字「ledzeppelin」でした。イギリスのロックバンドから取ったものです。
安全なパスワードとはどのようなものなのでしょうか。
結論からいうと、英大文字小文字・数字・記号混じりで少なくとも10桁以上とすること。また、単独のパスワードの強度を上げるだけでなく、多要素認証をいれることが推奨です。
突破されたパスワード「ledzeppelin」は、アメリカのセキュリティベンダーHOME SECURITY HEROSによると、23時間で突破されるそうです。
安全なパスワードの要件や保管方法は、国が方針を示しています。
まず、総務省の「国民のためのサイバーセキュリティサイト」では、安全なパスワードを設定するために以下を避けるよう推奨しています。
- 自分や家族の名前、ペットの名前
- 辞書に載っているような一般的な英単語ひとつだけ
- 同じ文字列の繰り返したわかりやすい並びの文字列
- 短すぎる文字列
- 類推しやすい並び方やその安易な組合せにしないこと
「ledzeppelin」は2番に違反していました。
内閣サイバーセキュリティセンターが出している「インターネットの安全・安心ハンドブック Ver.5.0」では英大文字小文字+数字+記号混じりで少なくとも10桁以上を推奨しています。
上で紹介したHOME SECURITY HEROSのサイトによると、10文字だとアルファベット大文字小文字と数字、記号を組み合わせれば、突破に5年かかるようです。よく知られた単語を使うと、さらに短時間で突破されるかもしれませんが、ランダムの文字列だと安全性は高いですね。
実際、わたしはパスワードの生成基準を英大文字小文字・数字・記号混じりで少なくとも10桁以上としています。
また、人間がパスワードを作ると、どうしても知っている単語を使ったり、ある法則に則ったりしがち。その状況を防ぐため、このようなツールを使ってパスワードを生成してもいいですね。
ランダムになるとパスワードを覚えられなくなるので、パスワード管理ツールを使うのがよいでしょう。
個人的には有料のツールは使わず、ブラウザに覚えさせればよいと考えています。
有料のツールはパスワード暗号化、クラウドでの一元管理など様々機能がありますが、お金がかかるとなると、手軽に誰もが使うわけにもいきません。一方、ブラウザは無料で、今すぐにも誰でもパスワード管理できるのが、最も大きなメリットです。
「ブラウザに覚えさせるのも信用ならないから、私は全部記憶しておく!」という方法も、保存しないのだから漏洩しようがないというメリットがあります。ただ、パスワードが増えるに従いだんだん管理が面倒になって、パスワードを使いまわすようになる危険があります。
使いまわすくらいだったら、ブラウザに覚えさせたほうがよいでしょう。
ただ、内閣サイバーセキュリティセンターでは、ブラウザに保存するのは非推奨なことに留意しておいてください。
PCを開いたまま離席すると、誰でも簡単にパスワードを呼び出せてしまうためです。
攻撃者はどのようにパスワードを突破するのか?
続いて、攻撃者がパスワードを突破する方法を紹介します。
非常に単純な方法として、総当たり攻撃(ブルートフォース攻撃)があります。
IDを固定し、パスワードをどんどん変えてログインを試みる攻撃方法です。理論的にはいつかIDとパスワードが一致し、認証に成功します。
ただ、この方法は対策も簡単で、数回パスワードを間違えるとアカウントをロックする設定にすればよいだけです。実際、この設定は広く採用されています。
より怖い手法が、ブルートフォースを逆にした、リバースブルートフォースです。
パスワードを固定し、IDを変えていきます。ひとつのIDに対して認証失敗が1回なので、ロックもかかりません。
以前在籍していた会社では、リモートワーク用のVPNアカウントに対して毎日100回くらいは攻撃されていました。
ログからどのようなID、パスワードでログインを試みたかわかります。
「vpn」「admin」「administrator」「test」「user2」など、ありがちな単語をIDとしてどんどんログインを試みています。
もしログインされてリモート接続されたら、ファイルを盗まれたり暗号化され金銭を要求されたり……。ゾっとしますね。
パスワードは漏れる前提で対策する
パスワードを複雑にしても、これで完璧に安全!というわけにもいきません。パスワードは漏れる前提で対策することをオススメします。
パスワードが漏れてしまえば、総当たりもなにもなく、一発で認証成功されてしまいます。
パスワードが漏れる原因として挙げられることは、たとえば以下の行為です。
- パスワードを書いた紙を落とす
- 画面を覗き見される
- 企業が、パスワードごとアカウント情報を漏洩させてしまう
この中で意外と多いのが、画面を覗き見されること。カフェで仕事している方の画面や手元は、見ようと思えば見えてしまいます。
そのため、パスワードは漏れることを前提に、多要素認証をオススメします。
多要素認証は、以下のものを組み合わせる認証方法です。
- 知っているもの:(例)パスワード
- 持っているもの:(例)スマートフォン
- 本人に関するもの:(例)指紋や顔
Facebookだと、パスワードとスマートフォンの認証アプリで二要素認証ができますね。
SMS認証も設定できますが、過去にSIMハイジャックというSIMの登録情報を書き換える攻撃で突破された事件があります。そのため、認証アプリのほうが推奨です。
セキュリティ強化をすれば手間も増え面倒な気持ちはわかりますが、ぜひ多要素認証を設定するようにしましょう。
わたしも、多要素認証を設定できるものは、すべて設定するようにしています。
今と昔で変化した、パスワードの考え方
冒頭でパスワードの考え方は時代とともに変化するといいました。
たとえば、パスワードの定期的な変更です。パスワードは、昔は定期的に変更することを推奨されていましたが、今は変更しないことがスタンダードです。わたしも昔はしていた記憶があります。
定期的な変更が推奨されていた大きな理由は、不正入手されたパスワードを使わせないようにするためです。
パスワードを30日で変えるとすると、不正入手されたパスワードは最大30日しか使えません。
ただ、残念なことに、定期的なパスワード変更は非常に面倒なので、人間は手を抜いてしまうのです。
以前の自分を考えると、「ledzeppelin」を「ledzeppelin1」「ledzeppelin2」「ledzeppelin3」に変えるだけなど、ほとんど意味のない変更をしていました。
面倒なだけの無駄な作業をするくらいなら、変更しないほうがマシなのです。
なお、毎回「R6zcPQ#UeNTm」「A*asQimA5&&s」など強力なパスワードを使うのなら、定期的な変更も効果的かと思います。
パスワードが脆弱ではないか、この機会に見直してみよう
パスワードの作り方や扱い方を解説しました。
今の時代、パスワードを使っていない方は、ほぼいないと思います。
スマートフォン・PC・マイナンバーカードなど、いろいろなものにパスワードがかかっています。
とくに、長い間使っているサービスでは、セキュリティがそこまで強く言われていなかった古い時代の感覚のまま、脆弱なパスワードを設定しているかもしれません。
わたしが10年以上前にはじめたFacebookは、その典型的な例ですね。
今一度、脆弱なパスワードを使っていないか、乗っ取られる前に確認してみてください。
(文:藤井 宏治)