- 暗証番号に誕生日や生年を使用する人が多いことは、研究でも明らかです1。
- 特徴的な数字や2桁の繰り返しパターンも頻繁に使用されており、セキュリティリスクが高いです。
- 安全性を高めるには、ランダムな数字を選ぶことが推奨されます。

4桁の時点で何回も挑戦できたら、いずれはわかってしまうよね。

まぁ、4桁のPINコードを採用するシステムでは、何度か失敗したら次の試行まで時間が空けられることも多いので、そうそう総当たり攻撃はできないはずですが。
1. 11人に1人が誕生日を暗証番号にしている?

暗証番号に誕生日が危ないっていうけど、なんか実感がわかないなぁ。
実際にどれぐらいの人が暗証番号に誕生日を使っているのか、調べた研究がありましたので、ご紹介します。
こちらは2012の論文の中にある図です。
色の濃い部分が頻度が多い暗証番号です。


けっこう濃い部分と薄い部分の差があるのね…
濃い部分が暗証番号として「よく使われている数値」です。
よく使われるということは、狙われやすいということでもあります。
1-1. グラフの見方
このグラフは、4桁の暗証番号を 上2桁と下2桁の組み合わせとして、表現しています。

例えば、座標(12, 34)の濃さは、暗証番号「1234」がどれぐらい頻度が多かったか、を表しています。

こうしてみると、ぽつんと多いのが、1234, 4321です。
2. 斜めの線は何?

目を引くのがこの斜めの線ですよね
これは、1515, 7272など、上2桁と下2桁が同じパターンです。


覚えやすいから、つい使ってしまいそう
2-1. 誕生日はどこにプロットされている?
誕生日に限りませんが、日付には特徴があります。
それは、上2桁は00-12まで、下2桁は01-31までの範囲に収まること。
この範囲を見ると、ひときわ濃くなっています。

ちなみに、誕生日の前後を入れ替えるのも、やっぱり高頻度です。


とりあえず、日付からは離れた方がよさそうね
2-2. 生年も多いです
生年も多いです。
x=19やx=20にかなり濃い線が見えます。


むしろ、誕生日よりも重なる確率が高いので、危ないですね。
3. javascriptでランダムな4桁を表示する
まとめると……
ここまで見ていただいてわかるように、なるべくランダムな数字が安全ということになります。
ここにJavaScriptのプログラムでランダムな4桁の数字を作ってみます。
ボタンを押してみると、ランダムな暗証番号が5つ表示されます。
8973 9046 2996 9239 2690
ランダムな暗証番号を作る
<span id="ransuu">表示場所</span>
<script type="text/javascript">
function random() {
var result = "";
for (i=0; i<5; i++) {
var num = Math.floor( Math.random() * 10000) ;
result += ("0000"+num).slice(-4) + " ";
}
document.getElementById("ransuu").innerHTML = result;
}
</script>
<a href="javascript:random();">ランダムな暗証番号を作る</a><br />
記事公開時はformタグでjavascriptのボタンを作っていましたが、AMPエラーが出たのでリンクに変えました。
<amp-form>タグにはいろいろ必須属性(method, action, targetなど)があって、基本的にはフォームの役割は「ウェブサイトへの入力と画面遷移」としているようです。このボタンではウェブページ内の文字列を動的に変更しているだけなので、ちょっとおおげさなのかな、と思いました。
元のコード
<form>
<span id="ransuu">表示場所</span>
<br>
<input type="button" value="ランダムな暗証番号を作る" onClick="random()">
<br>
</form>
<script type="text/javascript">
function random() {
var result = "";
for (i=0; i<5; i++) {
var num = Math.floor( Math.random() * 10000) ;
result += ("0000"+num).slice(-4) + " ";
}
document.getElementById("ransuu").innerHTML = result;
}
</script>




(補足)
- A Birthday Present Every Eleven Wallets? The Security of Customer-Chosen Banking PINs | SpringerLink