読者です 読者をやめる 読者になる 読者になる

トリコロールな猫/セキュリティ

セキュリティ情報の備忘録的まとめ。

JALマイレージバンクのパスワード導入記念にTwitterでパスワードについてのツイートを集め、頻出単語を探ってみました

読み物

2014年の10月23日、こんな記事を書きました。

記事は「JALさん、お願いですから英数字のパスワードの導入を!!!」という魂の叫びで締められているわけですが、ついに!2015年9月29日より、JALマイレージバンクでもパスワードが導入されることになりました!!!しかも!!!記号も使えます!!!!

で、これは何か書かねばと思いまして。

最初は、昨年調べた航空会社のパスワードの長さや使用可能な文字種について再度調べようかと思い、いくつか見てみたんですが全然変わっていなかったので、全く趣旨を変えて、Twitterでパスワードについてのツイートを集め、頻出単語を探ってみることにしました。もはやJALなんもかんけーねー。

方法

1. ツイートの収集

  • 期間は2015年11月18日〜2015年11月30日
  • 英語と日本語それぞれ収集
  • RubyTwitter gemでTwitter APIを使用
英語ツイートの収集ルール
  • Search APIで「password」「#password」を含むツイートを取得
  • langは「en」指定
日本語ツイートの収集ルール
  • Search APIで「パスワード」「#パスワード」を含むツイートを取得
  • langは「ja」指定

2. 単語の頻度をカウント

日本語

以下の条件でわかち書きにして出現単語をカウント。動詞はMeCabで原形に。

英語

以下の条件で出現単語をカウント。動詞はruby-stemmerでできる限り原形に。

3. ノイズの除去

上記の方法でカウントしてみたところ、あまりにもエロ系スパムやボットのツイートが多く結果が偏ってしまったので、以下の条件に当てはまるものはノイズと判断し除去しました。

  1. 全期間で26回以上(=1日平均2回以上)つぶやいているアカウント
  2. アカウント名が「_bot」で終わるアカウント

結果0:ツイートの概要

全期間のツイート数やアカウント数を簡単にまとめました。

英語

総アカウント数 85468
総ツイート数 148093
ノイズと判断されたアカウント数 133
ノイズと判断されたツイート数 40227
解析対象ツイート数 107866

日本語

総アカウント数 49929
総ツイート数 83853
ノイズと判断されたアカウント数 991
ノイズと判断されたツイート数 17427
解析対象ツイート数 66426

ちなみにファイルサイズは英語が1日2MB前後、日本語が1日1.5MB前後。

結果0についての考察

ノイズについてここで書いておきます。

結果を見るとノイズと判断されたアカウント数が英語133、日本語991とかなり開きがあります。これは以下が原因と思われます。

  • ツイート数の多いアカウントをノイズと判断しているだけで、ツイートの内容では判断していない
  • 日本語のボットが律儀に「**_bot」ってアカウント名にしてる
  • 英語は別個のアカウントがスパムツイートしている(のでスパムのアカウントかの判断が今回の条件ではできない)

スパムの内容は、日本は完全にエロ。エロ画像/動画のパスワード教えます、みたいなのが大量にありました。英語では、Amazonがパスワードのリセットを要求してます、とか、Twitterのフォロワー売ります、みたいな定型句はいくつか見当たりましたが、エロ系は少ない。

で、英語の方は今日時点で11月にスパムツイートしていたアカウントはほぼ生き残ってないですね。こまめにBANされているようです。他方、日本のエロなスパムアカウントは今日も元気にツイートしています。BANされないんだろうか・・w

ノイズの除去については正直かなりの偏りが出てしまっていると思います。1日平均2ツイート以上はノイズ、というのも特に根拠ないし。いっそ全期間で1度だけつぶやいている人のツイートを解析するとかもありかなぁ。いずれにせよ改善の余地がかなりありそうです。

結果1:頻出単語TOP25

1 change 13731 忘れる 17670
2 forget 9343 見る 8049
3 get 9130 変える・変更 6886
4 wifi 7304 ログイン 6261
5 account 6676 入力 5534
6 can 6332 アカウント 5458
7 twitter 6044 わかる 4568
8 reset 6040 自分 4135
9 just 5956 もう 3978
10 remember 5637 思う 3890
11 know 5299 入れる 3765
12 new 5262 設定 3154
13 email 5014 秘密 3042
14 phone 4251 ヒント 3005
15 need 3766 開く 2986
16 give 3362 質問 2918
17 now 3344 教える 2739
18 use 3316 考える 2686
19 like 3242 書く 2652
20 try 3119 twitter 2563
21 amazon 2615 登録 2555
22 never 2382 使う 2534
23 make 2373 続ける 2418
24 still 2285 出来る 2338
25 log 2218 過去 2327

結果1についての考察

みんな忘れてる

まず世界規模でみんなパスワード忘れ過ぎ。日本語では「忘れる」がダントツ1位、「わかる」も「わからない」の原形と思われるのでもっと増えそう。「教える」も「誰か私のパスワード教えてくれー」というのが多かった。あとよくあるネタツイートで、「パスワード忘れたので秘密の質問/ヒントを見たら○○だったのでxxと答えたら当たってた」ってやつね。
LINEが上位に来るかと思いましたが45位。まあLINEはスマフォ以外では使わなそうだから必要ないのかな。

英語は「change」の方が上で意外でしたが、おそらく「forget」だけでなく「can’t/cannot remember」とかもあると思うのでやっぱり忘れてるよね。ちなみに英語24位の「still」は「still can't remember」「still can't log in」みたいな叫びが主。

日本語英語共に上位入りしている「Twitter」は「パスワード忘れたからこの端末以外からつぶやけねー」みたいなのが多かったですね。英語のWifiもそう。他の端末繋げねえよって。Amazonに関してはパスワード忘れよりスパムツイートが多かったです。14位の「phone」は携帯のロック解除のためのパスワードがわからないという悲惨な人たちが。

秘密の質問は日本ばかり

日本ではよくある「秘密の質問」も上位にありますね。英語で「秘密の質問」は「secret/security questions」となることが多いようですが、「question(s)」でも100位以下。日本じゃ秘密の質問は前述の通りネタツイートとしてすっかりおなじみですもんねえ。定番のネタツイートは2種類あるようです。

パスワード忘れたからヒント見たんだけど「忘れるほうが悪いでーすwwwwwwwwピッピロピーwwwwwwwwwブフォwwwwwwwwwww」て書いてて過去の自分にこの上ない怒りを込めながら「ころすぞ」て入力したら、合ってた。

パスワード忘れたからヒントを見たら『今のお前のことだ』と表示されてしばらく迷った末に「バカ」と入力してみたら無事通ったけど過去の自分への殺意が止まらない

これもノイズ候補だな。

結果2:時系列ツイート数

英語

f:id:nekotricolor:20151214165738p:plain

誤差の範囲な気がしなくもないですが、11月18日、24日〜26日が9,000越えで多くなっています。

日本語

f:id:nekotricolor:20151214165723p:plain

平均5,000件前後ですが、11月23日は6,142件と突出して多いです。

考察2

英語圏のツイート数のばらつき

データの収集期間が短いため、誤差なのか判断しかねるところではありますが一応ツイート数が多かった日(11月18日、24日〜26日)を調査してみました。

ツイートが多い日に大量のつぶやきをしているアカウントを抽出し、それらのアカウントのツイートから頻出単語を割り出し、ツイートの生データを見て・・という原始的なやり方で原因を探ってみました。26日は特徴的なものは判別できなかったのですが、他の3日に関しては原因らしきものが判明しました。

11月18日

えー、なんか「Password」としておなじみ(popularly known as Password)のナイジェリア人プロデューサーが手がけたアルバムが出たようです。431ツイートありました。

Patrick Mathias, popular known as Password is a Nigerian producer, song writer and sing... https://****

アカウント名はバラバラ。純粋な宣伝かなぁ。それにしちゃ規模がでかい・・。

11月24日

なぜこの日なのかは不明ですが、以下のようなツイートをするスパムアカウントが大量に発生したようです。421ツイートありました。

NEW CUSTOMER OFFER! Buy 5000 Twitter Followers Without password needed only $29, See here https:/****

同じくアカウント名はバラバラ。現在はこのツイートをしたアカウントはほとんどがBANされています。

11月25日

一番分かりやすかったのが11月25日。といってもこれもなぜこの日なのかは不明ですが、Amazonのパスワードが漏れた、パスワードがリセットされた、という旨のツイートが1,724もありました。アカウント名はこれもバラバラ。

Amazon suffers potential password leak, unknown number of accounts affected https://***

Amazon force-resets some account passwords, citing password leak https://***

11月23日に日本で何があったのか

この日はツイート数が明らかに多いです。まずはこの日急に出てきた単語を以下の条件で抽出。

  1. 11月22日にはツイートに出現しておらず、11月23日に出現した単語
  2. 1. のうち、ツイート数が30以上

結果は以下の通り。

進研模試 74
安藤 83
ひびき 35

11月23日の日本語のツイートを上記の単語で検索してみたところ、どうやら以下のようなことらしい。

  • ベネッセが実施している「進研模試」という高校生向けの全国規模の模試の結果が公開され、進研模試デジタルサービスにログインすることで見られるようになったが、パスワードを忘れている人が続出
  • アニメ「プリパラ」で、紫京院ひびきさんが執事の安藤玲さんの名前をパスワードにしている、という話が放送された

不正アクセスによるパスワード漏えいとかそういう話かと思ったら全然違った・・。

11月24日にはセキュリティらしい頻出単語が

ツイート数は平均的ですが、24日についても上の方法で急に出てきた単語を調べてみたところ、以下のようになりました。

ホリデー 44
高める 44
マカフィー 43
呼びかける 42
標準化団体 31
2.0 31

これは、以下の記事を紹介するツイートが増えたため。




こういうセキュリティ関連の記事でBUZZってるものを拾ってきて、今運用している政府機関等のセキュリティ関連の新着情報をつぶやくTwitterボットにつぶやかせられると楽なんだけどなー。

やってみた感想、今後の予定など

パスワードは全世界で忘れられまくってるんだろうなあという予想を見事に裏付けてくれただけで満足ですが、ツイート数急増の原因を探るというのもとても興味深かった。特に日本、まさかアニメと模試が原因なんて思わなかったですからね。結果1が主役のはずだったんですが、それほどこうだと言えることがなく、結果2の方が面白かった。

英語に関してはスパムツイートの除去がうまくいかなかったため、結果スパムの傾向しか見られない感じになっちゃいましたね。いま別件で文書の類似度を測る、というようなことをやっているので、同じ方法で英語のツイートを丸ごとぶっこんでクラスタリングするというのもやってみたい。スパムツイートがうまいことクラスタリングされたら、それでフィルタを作ってスパムツイートを除去できたりするとかなり精度が上がりそう。逆にスパムツイートだけ集めれば、スパムの進化とかも見られるかもしれない。

スパムの傾向といっても突発的に同じスパムがバッと出るというのが分かっただけで、なぜその日なのかなど理由はよくわかりませんでした。まあスパムは定期的に出てくるんでしょうけども、曜日や感謝祭なんかのイベントで偏るのではないかと思ってましたがそうでもないし。でも考えてみるとスパムに限らず、日本語は公用語にしている国が日本(とパラオの一部)のみなのに対し、英語だとたとえばアメリカ、イギリス、オーストラリアというように多数の国で使われているため、傾向が顕著には出にくいのかもしれません。ということは、ベトナム語とかノルウェー語とか、1言語1公用語国な言語を選んでこの手の解析をすると、今回の日本がそうだったように、その国で何が起こっているかがはっきり分かりそう。

一応今も同じ条件でツイートは集めているので、もう少し長い期間で同じ解析をしてみるつもりです。同じスパムツイートが定期的に発生するのか確認したいし、クリスマスやお正月特有のツイートもありそうだから見てみたい。クリスマスと正月って日本と英語圏でだいぶ違いが出そうだし。
あとは、パスワード以外にもなんか面白そうなキーワードがないかと模索中。ファイルサイズが意外と小さかったので同時進行でいろいろ収集できそうです。

というように、今後もいろんな切り口でこの手の解析をやってみたいと思ってます。

きっかけを与えてくれた論文

JALのパスワード導入記念、というのはあるんですが、これ自体のアイディアは別のところから来ていて、最後にそちらもぜひ紹介したく。

プライバシー関連の国際学会「SOUPS(Symposium On Usable Privacy and Security)」というのがありまして、先日その論文を読破するという「SOUPS2015論文読破会」というのに参加しました。

そこで紹介されていたこの論文。

Social Media As a Resource for Understanding Security Experiences: A Qualitative Analysis of #Password Tweets | USENIX

Twitterでパスワードについてのツイートを集め(”password”と#passwordで検索)、内容からなんらかのクラスタリングができないかというものでした。クラスタリングとなるとなかなか大変そうですが、「ツイートをある単語をキーワードにして収集し解析する」というアイディアはいいなと。ある程度の量のデータを簡単に集められるというのは魅力的です。
論文の読破会というものには初めて参加したのですが、これ以外にもいろいろなインスピレーションをいただけたとてもよい場でした。