はじめに
パスワードってすぐ忘れません?
最新、DXの影響か分かりませんが、色々なものがWebサービスに移行してて、やたらとIDとパスワードを作らされる気がします。
で、起こることが以下。
・パスワードをPCのメモ帳にメモる or 付箋にメモってPC周りに貼る
・そもそもパスワードの作成に困る(ランダム性が高い方が良さそうに決まってるけど覚える自信がない、、、)
・同じパスワードを色々なサービスで使いまわす(サイバーセキュリティ的に危険度高)
・サービスがありすぎてパスワードをすぐ忘れる(サービスごとにパスワードルールが若干違って、少し変化を付けると迷宮入りする)
例外として、
・パスワードがイタイ(引く感じか or 中二病的な)※あくまで一個人の主観
例)アイドルの推しの名前(○○Love) ※○○はアイドル名
中二病的な(release@magic) ※魔術解除的な
と、いうことでパスワードについて調べてみたのと、パスワード作成ツール的なモノを作ってみました。
パスワードの強度とか含めて移り変わりが早いので、適宜情報は更新していきます。
パスワードって何?って話
よく使うけど、知ってるけど知らないパスワードについて調べてみました。
パスワードの概念は古代ローマの兵士や中世の城の警備で使用された合言葉から始まったと言われています。
1960年代のコンピュータの時代では、MITのCTSSシステムで初めて現代的なパスワードが導入されました。これはタイムシェアリングをサポートするためのものだったようです。
1990年代にインターネットが普及すると、Webサイトやオンラインサービスでアカウントをパスワードで保護する必要性が高まりました。この時期からパスワード管理の重要性が認識され始めました。
単純なパスワードはハッキングされやすく、セキュリティの脆弱性が問題となりました。これを補うために、二要素認証(2FA)や生体認証が導入されました。
今現在では、パスワード管理ツールの使用が推奨されており、これにより強力でユニークなパスワードを生成・保管できます。一時は定期的な変更が有効と言われていましたが、今は違うようです(結局覚えやすいように1文字変えるだけに留めるなど、特定しやすいため。
あと使い回しの回避がセキュリティ強化に繋がります。
もちろん多要素認証は必須です。
正直、方式も乱立していて錯乱するときがある。
パスワード強度と管理の話
強力なパスワードの要素
強力なパスワードにはいくつかの基本的な要素があり、これらの要素を組み合わせることで、推測されにくいパスワードを作成することができます。
■長さ:
パスワードはできるだけ長くすることが推奨されます。一般的に、8文字以上の長さが推奨されていますが、12文字以上であればさらに安全です。
■複雑性:
アルファベットの大文字と小文字、数字、記号を組み合わせることで、パスワードの複雑性が増します。例えば、「afsa!47j@haf」のように、さまざまな文字種を含むパスワードは強力になります。
■予測不可能性:
辞書に載っている単語や簡単に推測できる情報(名前や誕生日など)は避けた方が良いです。無作為な文字列を使用することで、予測不可能なパスワードを作成できます。
パスワードの桁数×文字種類の解析時間
パスワードの桁数と文字種類のパターンで、それぞれ総当たりで解析する場合の時間をいくつか調べてみました。
[前提]
・解析時間は全パターンを総当たりで探索した場合の時間
・計算は1秒あたり1兆パターン(10^12)の処理を前提として算出
・使用文字数は以下の通り
英字(小文字):26文字
英字(大文字):26文字
数字:10文字
特殊文字:33文字
No | 桁数 | 文字種類 | 文字種類数 | 総当たり解析時間 |
1 | 6 | 英字(小文字) | 26 | 0.000309秒 |
2 | 8 | 英字(小文字) | 26 | 0.209秒 |
3 | 8 | 英字(小文字)+英字(大文字) | 52 | 53.5秒 |
4 | 8 | 英字(小文字)+英字(大文字)+数字 | 62 | 3.64分 |
5 | 8 | 英字(小文字)+英字(大文字)+数字+特殊文字 | 95 | 1.84時間 |
6 | 10 | 英字(小文字) | 26 | 2.35分 |
7 | 10 | 英字(小文字)+英字(大文字) | 52 | 1.67日 |
8 | 10 | 英字(小文字)+英字(大文字)+数字+特殊文字 | 95 | 1.9年 |
9 | 12 | 英字(小文字)+英字(大文字)+数字 | 62 | 102年 |
10 | 12 | 英字(小文字)+英字(大文字)+数字+特殊文字 | 95 | 17,100年 |
解析構成例
※2024/7/13時点情報
1秒あたり1兆パターンの計算ができるスペックを一般コンシューマ向けの製品で構成すると以下となります。(あくまで一例)
■CPU
製品名: Intel Core i9-14900K
クロック: 3.2 GHz(ブースト6.0 GHz)
個数: 1
■GPU
製品名: Nvidia GeForce RTX 4090
クロック: 2.23 GHz(ブースト2.52 GHz)
個数: 4 ※グラフィックカード4枚
■メモリ
サイズ: 256 GB DDR5
■ストレージ
種類: NVMe SSD
サイズ: 4 TB
構成を見るとスパコン並みの性能は必要なく、一般人でもそれなりのお金を投じれば構成できそうです。(グラフィックカードが高いので、現時点で100万円台くらいになるかと)
この構成を踏まえて再度表を見てみると、No9「12桁 英字(小文字)+英字(大文字)+数字」やNo10「12桁 英字(小文字)+英字(大文字)+数字+特殊文字」のレベルでないと安全で無そうな気がします。
実際のWebサービスなどは、ブルートフォースアタック(総当たり攻撃)対策がされていることがほとんだと思いますので、一定以上回数のパスワード試行でIDがロックされて使用できない状態になります。
但し、できるだけ安全なパスワードを使用するに越したことはないと思います。
ベストなパスワード管理
強力なパスワードを作成するだけでなく、適切に管理することも重要です。
以下のベストプラクティスを守ることで、パスワードの強度を保つことができます。
○使い回しを避ける:
同じパスワードを複数のサイトで使い回すと、一つのサイトが侵害された場合に全てのアカウントが危険にさらされます。(これやりがちですよね、、、)
○定期的な変更:
パスワードは定期的に変更することが推奨されます。これにより、パスワードが漏洩していた場合でも被害を最小限に抑えることができます。(最近のトレンドとしては効果が薄いと言われていますが一応書いておきます)
○多要素認証(MFA):
パスワードに加えて、もう一つ以上の認証手段を使用することで、セキュリティを大幅に強化できます。例としてはSMSコードや認証アプリの使用です。
まとめ
まとめると、パスワードは桁数が長くて(12桁以上)複数の文字種類(3種類以上)を使う。他のサービスと同じパスワードは避ける。パスワードだけでなくて他の認証も使用して安全性を高める。
うーん、今後も忘れること多いだろうな、、、憂鬱だ、、、
あと、自分用のパスワード生成ツールを作ろうと思っているので、良さそうなら公開しようと思います。
コメント