組織の中でパスワードに関するポリシーを定めて、複雑なパスワードの設定やサイトごとに異なるパスワードの設定などを推奨しても、安全性より利便性が先行し、パスワードの使い回しや安易なパスワード設定をしてしまうケースもあります。複雑なパスワードの有用性を攻撃手法から考察して、簡単にできるパスワードセキュリティ強化策を考えていきましょう。
目次
1.パスワードの必要性
基本的なこととして、組織が保有する情報資産は誰でも使えるものではなく、必要な人だけがアクセスできる状態であることが必要です。この使用権限をコントロールするために利用者ごとにアカウントを設定します。利用者は自分のユーザーアカウントを使って情報にアクセスする際に、利用を認められた本人であることをシステムに知らせるために、ユーザー認証を行います。
このアカウント(ID)とパスワードの文字列によってシステムは本人認証をしますので、他人に使用されてしまうと使用権限のない第三者が情報にアクセスできることになります。
パスワードセキュリティを強化することはユーザー個人のみならず、組織のセキュリティ確保のために非常に重要です。
2.パスワードがさらされるリスク
パスワードを厳重に管理していても情報を搾取されてしまうケースがあります。パスワードで守ったはずの情報資産に、攻撃者はどのように不正ログインするのでしょうか。
2-1 パスワードリスト攻撃の手口
脆弱性や管理の隙を突いてシステムの侵入を受け、ユーザーのID・パスワードといった個人情報が搾取されることがあります。こうして攻撃者は、あるサービスで流出した情報を使って、他のサイトへの不正ログインを試みます。
この手法は自社サイトのセキュリティを万全にしていても他社サイトから情報が流出し、かつ、ユーザーがパスワードを使い回していると、自社も不正ログインの被害に会う可能性があります。上記の例の場合、サービスB・サービスCのサイト運用者側はセキュリティ上全く問題なかったとしても、結果として不正ログインされてしまうことになります。
また、アカウントにログインされてしまいますので、アカウント情報(個人情報)も搾取されます。
2-2 ブルートフォースアタック(総当たり攻撃)の手口
IDとパスワードを片っ端から試行していきます。簡単なパスワードを設定していると、短時間で破られます。ここでは組み合わせごとのパスワード強度(解読にかかる時間)を見てみましょう。
・使用する文字数ごとの組み合わせパターンは?
使用する文字の種類 | 文字数 | 4桁 | 8桁 |
英字(大文字小文字の区別なし) | 26種類 | 約45万通り | 約2,088億通り |
英字(大文字小文字の区別あり) | 52種類 | 約730万通り | 約53兆通り |
英字(大文字小文字の区別あり)+数字 | 62種類 | 約1,480万通り | 約218兆通り |
英字(大文字小文字の区別あり)+数字+記号 | 93種類 | 約7,480万通り | 約5600兆通り |
※使う記号の数は31種類として計算しています。
・1秒に45万回試行(26種類4桁のパスワードを1秒で解読)できたとして、解読にかかる時間は?
使用する文字の種類 | 文字数 | 4桁 | 8桁 |
英字(大文字小文字の区別なし) | 26種類 | 1秒 | 約5日 |
英字(大文字小文字の区別あり) | 52種類 | 約16秒 | 約3.8年 |
英字(大文字小文字の区別あり)+数字 | 62種類 | 約33秒 | 約15年 |
英字(大文字小文字の区別あり)+数字+記号 | 93種類 | 約166秒 | 約394年 |
※パソコンの性能によってはもっと短時間で解読できる可能性もあります。上記の解読時間は組み合わせ方の強度比較(相対比較)としてご覧ください。
・アカウントを固定して総当たりする(ブルートフォースアタック)
攻撃対象のアカウントが明確な場合、アカウントを固定してパスワードを変えて不正ログインを試みるかもしれません。
たとえば、「uyamada」というIDを標的にして固定し、パスワードを変更しながら総当たりします。
・PWを固定して総当たりする(リバースブルートフォースアタック(逆総当たり攻撃))
簡単なパスワードを設定しているとパスワードを固定した逆総当たり攻撃によって不正ログインされるかもしれません。
たとえば、「123456」というPWを固定してIDを変更しながら総当たりします。
このようにIDやパスワードを変更しながら攻撃をしてくるわけですが、上記で見たように複雑なパスワードに設定すれば理論上は解読に数十年要するケースもあるため、破られる可能性が低くなります。
2-3 辞書攻撃、類推攻撃の手口
ユーザーは覚えやすいパスワードとして、自分の個人情報に関連した文字列を使う傾向があります。
例えば以下のような場合、パスワードに生年月日の「19740401」やメールアドレスの「fujisan」と組み合わせて「fujisan19740401」といった文字列を設定するような傾向があります。
住所 | 東京都 |
氏名 | 日本 太郎 |
生年月日 | 1974年4月1日 |
fujisan@xyz.mail | |
Tel | 03-1234-5678 |
この個人情報が漏れた場合、攻撃者はユーザーがパスワードとして使いそうな単語に狙いを定め、単体または組み合わせることで不正ログインを試みます。
3.セキュリティ対策としてのパスワード
3-1 パスワードセキュリティの基本
近年は銀行のATMでの静脈認証やスマートフォンでの指紋認証・顔認証などが普及し始めています。
生体認証とは、身体的特徴(指紋、顔、静脈、虹彩など)や行動的特徴(筆跡、まばたきなど)を利用して個人の特定を行う方法です。文字列を利用したパスワードに比べて、記憶忘れや管理の手間がないといったメリットがある一方で、識別性能の問題(たとえば双子を誤認する)や情報変更の課題(文字列のパスワードのように意図的に変更できない)などがあります。
まだまだ文字列によるパスワードが主流ですので、大文字小文字や記号を用いた複雑なパスワードの設定による総当たり攻撃の回避、パスワードの使い回しによるリスト攻撃の回避、不規則な文字列の設定による辞書攻撃の回避などを想定して、ルール化を徹底しましょう。
3-2 安全性の高いパスワード
一般的には以下のような条件を満たしたパスワードの設定が推奨されていますので、パスワードセキュリティのポリシーとして反映させましょう。
・可能な限り多くの文字を使用する (最小でも8文字。できれば10文字以上)
・大文字と小文字を組み合わせる
・数字、句読点、記号を入れる
・名前や誕生日のような個人情報、メールアドレスの@の前の文字列は使わない
・地名や辞書にある単語は使わない
3-3 パスワード変換ルールを作る
会社利用と個人利用を合わせるとパスワードが必要なサイトが数十になることもあるでしょう。すべてランダムに設定するのも手間ですし、複雑になるほど覚えきれないということもあります。
たとえば、もともと意味のある文字列をパスワードに使いたい場合、以下のようなルールを作って、本人しかわからない規則性を持たせるという方法もあります。
・アルファベットを別の文字に置き換える
(aは@に変換する satoutarou = s@tout@rou、i は数字の1に置き換える security = secur1ty)
・頭と末尾は大文字にする
(strongsecurity = StrongsecuritY)
・いくつかの単語(意味のある文字列)をつなげるときに句読点や記号でつなげる
(strongsecurity = strong%security)
・単語の中に記号を入れる
(cybersecurity = cyber~security)
・あるフレーズの語頭の文字と数字を組み合わせる
(“koreha totemo kyouryokuna password desu” = “ktkpd5”)
※具体例として簡単な文字列を使っていますが、3-2にある条件を満たしたパスワードの設定を推奨しましょう。
3-4 パスワード管理ソフトを使う
「意外と簡単!パスワード管理を実現する方法 アプリ3選レビュー」でも紹介していますが、パスワード管理アプリを使うことも管理の手間を減らすことができます。
3-5 パスワードだけに依存しない対策も
侵入されてファイルを持ち出された場合を想定して、暗号化しておくことはセキュリティの最後の砦とも言え、非常に重要な役割を果たします。その一方で、多層防御などでセキュリティを強固にしても機密情報へアクセスされしまうリスクを低減しておくことも大切です。
パスワードで設定する文字列は最終的に個人の判断にゆだねられます。安全性と利便性のバランスを考慮したルール策定のためにも、パスワードの作り方を組織内で啓発してみてはいかがでしょうか。
著者:マカフィー株式会社 マーケティング本部