コラム

Androidのパターンロックが何通りあるか調べてみた

Androidのパターンロック
こんにちは。SI部のモグです。
 
iPhoneからAndroidのスマホに変えたので、あこがれのパターンロックを設定してみました。9点から線を結んでロックを解除するやつです。
長年Androidユーザーの方にとっていまさら感でしょうけどね。
 
パターン設定のルールとして、1つの点は1回しか使えず、最低4点使う必要があります。
 
このパターンが何通りあるか気になったのでプログラム書いてみました。
再帰処理のアルゴリズムの練習にちょうど良い課題です。
 
コードが稚拙になったので非公開ですが、以下結果となりました。

  • 4点:1624通り
  • 5点:7152通り
  • 6点:26016通り
  • 7点:72912通り
  • 8点:140704通り
  • 9点:140704通り

単純に9×8×7×6×5×4×3×2×1と出来ないのは、通っていない点を飛び越せないからです。

点を上記表の配置とした場合、(1)→(3)には(2)が使用済である必要があります。
こういった例を除外したパターンの数を算出しました。
4点で考えた場合、一般的な数字4桁のパスワードが10,000通りに対して、パターンロックでは1,624通りとだいぶ減ってしまいます。
 
海外の研究で、パターンロックを角(表の(1)、(3)、(7)、(9))から開始する人が7割以上、そのうち左上(表の(7))開始の人が4割以上だったそうです。
 
また自分で使ってみて感じたのですが、桂馬飛びを設定すると非常に使いづらくなります。
例えば(1)→(6)を結ぶ際、(5)と(2)の間を通るわけですが、慎重に入力しないと(5)や(2)に引き寄せられて認証失敗となります。

レイジングストームッ!といきたい。
 
ところが…

アッー!となりやり直しです。
ロック解除の度にこのストレスを感じたため桂馬飛びは使わないパターンにしました。
 
そこで、角スタート&桂馬飛び無しの場合でのパターンを計算すると、

  • 4点:224通り
  • 5点:736通り
  • 6点:1920通り
  • 7点:3800通り
  • 8点:5376通り
  • 9点:4080通り

 
さらに7スタート&桂馬飛び無しだと、

  • 4点:56通り
  • 5点:184通り
  • 6点:480通り
  • 7点:950通り
  • 8点:1344通り
  • 9点:1020通り

 
ここまでパターンが減りました。
4点では56通りとかなり少ないです。
 
パターンロックの入力は、入力軌跡が見える設定のままだとショルダーハック(画面や手の動作を盗み見る行為)されやすく危険です。
覚えやすい形のパターンであればなおさらです。
 
斬新と思っていたパターンロックですが、セキュリティ的には結構甘いと痛感しました。
高いセキュリティを保つパターンとして、以下を心がけようと思います。
 

  1. 使いやすいを理由に角スタートにしない
  2. 通過点を多くする
  3. 桂馬飛びを取り入れる
  4. 入力時のパターンを非表示設定にする

 
使い勝手との闘いになりそうですが…