今回はファイルのパスワードを総当たりで解析する話です。
誤解のないよう先に記述しておきますが、悪用する目的ではなく簡単なパスワードは簡単に解読されてしまうということの啓発活動です。
この記事を読んでいる皆さんもセキュリティのためにファイルや外部保存機器(USBメモリなど)にパスワードをかけたことがあると思います。
ただ、このパスワードもあまりに単純なものを設定してしまうと簡単に解読されてしまいます。特に数字のみの場合は脆弱になります。pythonで以下のようにすることで簡単に総当たりをすることができます。
たとえば、数字のみ4桁の場合、0000~9999までの10000通りしかないので総当たりで解析するとこのような結果になります。
結果を見ると、2秒程度で解析が可能となっています。これはノートPC環境での解析ですが、時間がかからないことが見て取れます。英数字混合6文字の場合、2176782336通りとなり単純計算で数字4桁のみの場合の約22000倍の時間がかかることになります。総当たりすると私の環境ではマシンスペック不足で処理が終わりませんでした(どなたか試された方がいらっしゃれば教えてください)。
多くの設定でパスワードを8文字以上で大小英字数字記号混合を推奨している理由がわかると思います。上の画像で示した解析方法はUSBメモリなど外部の保存機器にも適用できます。総当たり解析は時間をかければ確実に解読できてしまうため8文字程度なら現代のデスクトップPC環境であれば1日程度で解析できるといわれています。USBメモリ等の紛失で情報漏洩が起きたというニュースを見たことがあると思いますが、これらに機密情報の保存を推奨されないのはこのように簡単に解析されてしまうためです。
以降は余談になります。一般にパスワードの総当たり攻撃には2種類あり、パスワードをすべて試し認証の突破を試すものと、ハッシュ値からパスワードを復元するものがあります。前者は上で試している総当たりです。以下では後者について述べます。
通常、パスワード認証では、サーバ側(認証する側)ではパスワードそのものを保存することはせずパスワードのハッシュ値のみを保存しています。ハッシュ値とはハッシュ関数という特殊な関数によって出力された値です。以下のようにパスワードhelloworldがあった場合、そのハッシュ値(SHA3-256)は以下のようになります。
このハッシュ値を入力されたパスワードのハッシュ値と比較して認証します。ハッシュ関数は出力から入力が推測できないという一方向性を持っています。そのため、ハッシュ値のみからはパスワードを復元することは基本的に総当たり以外はできません。
ハッシュ値の総当たり解析に当たる時間は次の様に計算されています。これはMD5というハッシュで保存されているパスワードを総当たりで解析する時間を示しています。
https://www.reddit.com/r/Infographics/comments/iovbi8/updated_table_on_time_to_brute_force_passwords/?rdt=49148
日本語にしたものが以下のリンクにあります。
https://x.com/sen_u/status/1427538088113283072?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1427538088113283072%7Ctwgr%5E4ea9c4e5bb9c5da973954b622f05334cafacbd24%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fqiita.com%2Fockeghem%2Fitems%2F5a5e73528eb0ee055428
この図によると、パスワードのMD5ハッシュにおいて、5文字以下のパスワードは一瞬で解読されてしまうことになります。また、長くても数字のみや小文字のみの単純な場合も同様に一瞬で解読されてしまいます。もちろん解析にかかる時間は使用するCPU,GPUの性能により変化しますし、さらに言えばMD5は脆弱なため現在はほとんど使用されません(現在のハッシュはSHA-3などが主流です)。しかし、念のためパスワードは最低限以下のことを守ったほうがよいでしょう。
- 10文字以上にする。
- 英字(大小含む)、数字、記号(可能な場合)を使用する。
- 連番、連続、繰り返しを使用しない(例:1234,bcde,ababなど)
- 安易な置き換え(a->@,s->$など)をしない
- 推測が可能なものや簡単なものは使わない(例:qwertyuiop,qazwsxedcなど)
また、物理的なセキュリティの観点から、以下のことは避けたほうが安全です。
- パスワードを付箋などに記載してPC周辺に貼付する
- USBメモリなどに機密情報を保存する
- パスワードをメモ用紙などに書いて放置する
- 所有者不明な機器を接続する
- パスワード認証が必要な機器を目の届かない場所に放置する
0 件のコメント:
コメントを投稿