安全なパスワードの作り方。覚えやすく、使い回しにならない方法をパスワード3原則から考える。
「ひらけ、ゴマ!」
世界で最も有名なパスワードである「アリババと40人の盗賊」のフレーズに代表されるように、パスワードは古くから利用されるセキュリティのひとつであり、オンラインの世界では未だに主流の個人認証方式です。しかし、時代の変化とともにパスワードを見破ったり悪用する技術は発展してきました。
「パスワードの3原則」と攻撃手法をもとに、安全で覚えやすく、使いまわしとならないパスワードの生成方法をご紹介します。
目次
パスワードの3原則と攻撃手法
内閣サイバーセキュリティセンター(NISC)と独立行政法人情報処理推進機構(IPA)が推奨する、サイバーセキュリティ対策9か条の2条目「パスワードは長く複雑にして、他と使い回さないようにしよう」が言い表す3点が「パスワードの3原則」です。
それぞれどのような目的を持つものか解説いたします。
長く
0~9までの数字のみ4桁で構成された南京錠やダイヤル錠は、1万通りの数字を全て試せば開錠できます。
このように、組み合わせ可能な文字をすべて試す”総当たり”の攻撃をブルートフォースアタック(総当たり攻撃)といいます。
物理的な鍵であれば1秒に1通り試すと、1万通り試すのに約3時間かかりますが、コンピュータの世界であれば瞬時に解析されてしまいます。
パスワードの桁数を増やせば、解析にかかる時間が増えるためブルートフォースアタックの対策となります。では、数字のみのパスワードは何桁あれば攻撃者があきらめるでしょうか。
桁数 | 解析時間 |
---|---|
11 | 瞬時 |
12 | 25秒 |
13 | 3分 |
14 | 36分 |
15 | 5時間 |
16 | 2日 |
17 | 3週間 |
18 | 10か月 |
(出典:Home Security Heroes 2023 Password Cracking: How Fast Can AI Crack Passwords?)
上記から「数字のみのパスワード」は、18桁あれば十分に強力なパスワードと言えるかもしれませんが、18桁の数字のパスワードは覚えるどころか、パスワードを見ながら間違えずにシステムに入力するだけでも大変です。
そこで、次の要素「複雑に」を併せて活用する必要があります。
複雑に
パスワードのパターン数は累乗計算で算出され、数字0~9の10文字4桁は
10×10×10×10=10,000
となります。
複雑性は、パスワードに使用できる文字数を増やすことにより、累乗計算の「底」を大きくし、パターンを増やすことです。数字、英字大文字小文字、記号を組み合わせることにより「底」は94文字となり、取りうるパターンは
94×94×94×94=78,074,896
となり、数字だけのパスワードと比較すると、同じ4桁でも約7800倍のパターン数となり、ブルートフォースアタックに強くなります。
数字や英字、記号など各要素を組み合わせることにより、使用できる文字数が増えます。
文字の種類 | 文字数 | |
---|---|---|
・数字(0~9)のみ | 10 | 100,000,000 |
・英字小文字(a~z) | 26 | 208,827,064,576 |
・英字小文字(a~z) ・英字大文字(A~Z) | 52 | 53,459,728,531,456 |
・数字(0~9) ・英字大文字(A~Z) ・英字小文字(a~z) | 62 | 218,340,105,584,896 |
・数字(0~9) ・英字小文字(a~z) ・英字大文字(A~Z) ・記号 | 94 | 6,095,689,385,410,816 |
総当たり攻撃に対する適切なパスワードの長さと複雑さは、内閣サイバーセキュリティセンター(NISC)では以下のように示しています。
機器やウェブサービスを利用するとき、「ログインパスワード」として、英大文字小文字+数字+記号混じりで少なくとも 10桁以上を推奨
(出典:内閣サイバーセキュリティセンター(NISC) 「インターネットの安全・安心ハンドブック Ver5.00」)
使い回さない
パスワードを使い回すことにより発生する攻撃は「パスワードリスト攻撃」です。
パスワードリスト攻撃は、脆弱なサービスや、ユーザ自身がフィッシングサイトなどを経由して漏えいしてしまった認証情報を、攻撃者がリスト化し、他のサービスで不正に使用する攻撃です。
パスワードの使い回しは
・利用サービスごとに考えるのが面倒
・パスワードを何個も覚えていられない
という原因から発生します。
しかし、どれだけ長く複雑なパスワードを使っていても、漏えいしてしまえば意味がありません。
面倒でもサービスごとに異なるパスワードを使用するようにしましょう。
安全なパスワードの作り方
安全の定義
まず、安全なパスワードとはどのようなものかを考えます。
パスワード3原則をもとに「安全なパスワード」を定義すると
- パスワードの桁数は10桁以上を推奨
- 文字種は数字、英字大文字小文字、記号の混在
- サービスごとに異なる
となります。さらに、様々なリスクを勘案し以下も考慮するとより良いパスワードとなります。
- 推測されることを防止するため、生年月日や居住地域、ペットや子供の名前、趣味嗜好などソーシャルメディアで発信しているような情報を「そのままの形」で含めない
- 文同じ記号を連続して使用(aaや99など)しない
※パスワードの強度には関係ないが、キーボードを操作する手元を見られても推測されにくようにするため - passwordや123456、キーボードの並び(qwerty)など、よく使われるパスワードを使用しない。
長くて複雑で覚えやすいパスワードの作り方
手順1 基本のフレーズを決め、アルファベットに変換する
自身の好きな言葉や好きなものなど、忘れにくい言葉を思い浮かべローマ字読みでアルファベットに変換します。
この段階では趣味嗜好などが入っていても問題ありません。
例:焼肉⇒yakiniku
手順2 マイルールを設定し、複雑にする
パスワードに複雑性を持たせるため、ルールを定めて基本フレーズに変更を加えます。
例)aを@にする、oを0にする、iを!にするなど
yakiniku ⇒ y@k!n!ku
例)最初と最後の英文字は大文字にする
y@k!n!ku ⇒ Y@k!n!kU
例)誕生日を最後につける
Y@k!n!kU23
手順3 サービスごとの特徴を加えて、使い回しを防止する
使い回しを避けるため、使用するWebサービスやシステムごとに文字を付け加えます。
例)サイト名の最初と最後の文字を基本フレーズに付け加える
ABC shopping
Y@k!n!kU23 ⇒ AgY@k!n!kU23
XYZ銀行(XYZ ginkou)
Y@k!n!kU23 ⇒ XuY@k!n!kU23
パスワードの定期的な変更は必要?
このようにして、自身が好きなもの「焼肉」から12桁の複雑性を持ったパスワード「AgY@k!n!kU23」を作ることができました。
せっかく作ったパスワードですが、定期的に変更しなければいけないのでしょうか。
長年、「パスワードは定期的に変更した方が良い」とされてきましたが、2017年に、米国国立標準技術研究所(NIST)から発出されたNIST SP800-63Bでは、定期的な変更は不要とされました。
定期的に変更することは、ユーザにとって面倒な行為であり、覚えるのが面倒なため弱いパスワードを選択してしまう傾向があるためです。
むしろ、十分に長く複雑なパスワードを変更せずに使用したほうが安全であったり、より重要な多要素認証などの技術を積極的に利用したほうが良いということです。
パスワード管理:その他の注意点
フィッシングサイト
フィッシングサイトとは、悪意のある第三者が、正規のウェブサイトに似せて作成した偽のウェブサイトのことです。
こういったサイトは銀行、SNS、運送会社、通信業者などのサービスを模倣し、ユーザーにログイン情報やクレジットカード情報を入力さることで情報を窃取します。
ログイン情報などを入力する際は、URLが正規なものか、リンクの発信元は信頼できるものか、セキュリティ証明書は正しいものか、などで確認するようにしましょう。
多要素認証やログイン通知サービスの有効化
サービスの提供会社より、メールアドレスや電話番号によるSMSでの多要素認証サービスや、サービスにログインがあった際に通知をするサービスを提供していることがあります。
このようなセキュリティサービスは、設定画面で有効化しないと使えない場合があります。意図せずログインされることを防いだり、不正ログインを検知するため、セキュリティサービスの有無を確認し、積極的に利用するようにしましょう。
まとめ
DXの進展により、様々なサービスがシステム化、オンライン化されており、複数のパスワードを管理することが避けられない時代となりました。
「長く、複雑、使い回さない」のパスワード3原則を守るとともに、フィッシングなど自身でもパスワードを奪われないよう気を付けましょう。
きっと「アリババと40人の盗賊」の盗賊も「ひらけ、ゴマ!」ではなく「h|R@kEg0ma!」という合言葉であればアリババに財宝を奪われることはなかったでしょう。