Code Interpreterを用いてざっくりと暴かれやすいパスワードの特性を解明する回
はじめに
記念すべき初投稿です.
手始めに,kaggleに転がっているパスワードの強度・脆弱性に関するデータを分析し,強度の高いパスワードはどのようなものなのか?というのを解明してみたいと思う.
手法としては,2023年7月にbeta版がリリースされたChatGPTのCode Interpreterを使っていく.コードを書くのが面倒臭いので.
データの中身確認,適当に分析
まず,データ(passwords.csv)を添付してどんなデータかを確認してもらうと以下のように出力される.
まずCategory列に当たりをつけてみる.Category列の中身はObject型であり,何を意味しているのか聞くと,ある程度推察で答えを返してくれる.
自分でも目視でデータを確認してみたが,AIの推察は大きく外れていないと思った.(以下は各カテゴリごとに2つほどパスワードをあさってみた結果)
Category |
例 |
name |
brian, sammy |
cool-macho |
legend,power |
simple-alphanumeric |
zzzzzz, red123 |
fluffy |
kitten,super |
sport |
broncos, runner |
nerdy-pop |
topgun, rush2112 |
animal |
fish,dolphin |
password-related |
password, testing |
food |
cocacola, apple |
rebellious-rude |
sexsex, horny |
ただ,こうしてみるとCategory分類に些か違和感を感じる.password-relatedとsimple-alphametricが文字列そのもの由来の分類である一方,他のCategoryは文字列の有する意味をもとに分類されている.
一旦Categoryごとのオフライン解読時間(offline_crack_sec)を箱ひげ図で確認すると,simple-alphanumericのように単純な文字列が解読されやすそう.
ここで,次にパスワードに用いられている単語ではなく,文字列だけに着目してもう少しだけ掘り下げてみる.
データセットにおける最大の文字種数は最大でも2しかないのは残念だが,ひとまずここに有意差があるかをチェックしてもらう.
5%の有意水準で言うなら,パスワードの文字種が1と2ではパスワードの解読時間に有意差があると言えることがわかった.
次に文字数は気になるところ.とりあえずパスワード長とオフライン解読時間について散布図と箱ひげ図を出してもらうことに.
箱ひげ図が変な気がする.ちなみにパスワード長とオフラインクラック時間の相関係数は約0.312だったため,弱い相関がありそう.
さいごに
まぁ,こんなデータ分析するまでもなく,パスワードは長めに,且つ英大文字,英小文字,数字,記号等を織り交ぜて複雑にし,第三者から解読されないようなものにしましょう.
ちなみに今回Code Interpreterを使ってみましたが,優秀だけどちょっと詰めの甘い同僚って感じでなかなかイケてる機能な気がします.
ちょっと今回良い加減に記事を書いてしまったけど,次からもう少し真面目にやりますね...