タイトルの通りなのですが、最近流行の仮想通貨を掘るための専用設計されたASICと呼ばれる機器があります。
こんな感じのものですが。
新しいBitmain Antminer S11 20.5 TH/S 16nm Bitcoin ASIC Miner S11 AntamerにはPSUが含まれています
- 出版社/メーカー: Antminer
- メディア: エレクトロニクス
- この商品を含むブログを見る
これは、1秒間に20テラ回のハッシュ計算ができるとされており、20テラとは20兆のことなので、このマシンがあれば、1秒間に20兆回のハッシュ計算ができます(語彙力)。
通常、Webサイトやコンピュータに保存されているパスワードというのは、ハッシュ計算という方法を使って暗号化*1されています。そのため、ASICを使えばパスワード総当たりができます*2。
これは、パソコンのCPUやGPUを利用したハッシュ計算と比べてけた違いに強い計算能力なので、今まで安全圏とされていたパスワード長でも脅威となりうる可能性があると思い、ちょっと調べてみました。
実際3年前のブログでは、3000万件/秒を基準に計算しているので、実にその60万倍以上の計算能力となります。恐ろしいですね(というか数年おきにパスワード強度の計算をしているのか・・・)。
注意点としては、単純計算なので、実際にアタックした場合、誤差がある可能性があるのと、ビットコイン用のASICをそのまま、パスワードクラックに使えるわけではないということです*3。あと、コンピュータのパワーをフルに使って総当たり攻撃ができるシチュエーションは限られています。Web上のパスワードを外部から攻撃する場合、せいぜい数十回から数百回程度しかトライできないはずなので「password」とか「12345」とかの単純なパスワードを避けていれば、攻撃される可能性は低いです。
ということで、行ってみましょう。
計算してみる
まずは、文字種別ごとに何種類の文字があるのか調べます。
文字種別(省略形) | 種類 | 内容 |
---|---|---|
数字(0) | 10 | 0123456789 |
小文字(a) | 26 | abcdefghijklmnopqrstuvwxyz |
大文字(A) | 26 | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
記号(!) | 33 | !"#$%&'()*+,-./:;<=>?@[]^_`{|}~ |
こうしてみると、英語の大小文字より、記号のほうが種類が多いです。パスワードを設定するときは、記号を織り交ぜると強度が飛躍的に増します。おすすめです。
そして、単純に同じ文字種別を使ってパスワードを作成した場合の強度です。何通りあるかという話です。
文字種別 | 種類 | 8文字 | 約 |
---|---|---|---|
a | 26 | 208,827,064,576 | 200億 |
0 | 10 | 100,000,000 | 1億 |
! | 33 | 1,406,408,618,241 | 1兆 |
単純に計算すると、文字種別が多い方がパターンが多くなります。数字のみのパスワードは非常に脆弱なので危険ですね。
それでは、各文字種および、組み合わせによるパターン数を数えます。
文字種別 | 種類 | 8文字 | 9文字 | 10文字 | 11文字 | 12文字 |
---|---|---|---|---|---|---|
a | 26 | 208,827,064,576 | 5,429,503,678,976 | 141,167,095,653,376 | 3,670,344,486,987,780 | 95,428,956,661,682,200 |
0 | 10 | 100,000,000 | 1,000,000,000 | 10,000,000,000 | 100,000,000,000 | 1,000,000,000,000 |
! | 33 | 1,406,408,618,241 | 46,411,484,401,953 | 1,531,578,985,264,450 | 50,542,106,513,726,800 | 1,667,889,514,952,990,000 |
aA | 52 | 53,459,728,531,456 | 2,779,905,883,635,710 | 144,555,105,949,057,000 | 7,516,865,509,350,970,000 | 390,877,006,486,250,000,000 |
a0 | 36 | 2,821,109,907,456 | 101,559,956,668,416 | 3,656,158,440,062,980 | 131,621,703,842,267,000 | 4,738,381,338,321,620,000 |
a! | 59 | 146,830,437,604,321 | 8,662,995,818,654,940 | 511,116,753,300,641,000 | 30,155,888,444,737,800,000 | 1,779,197,418,239,530,000,000 |
aA0 | 62 | 218,340,105,584,896 | 13,537,086,546,263,600 | 839,299,365,868,340,000 | 52,036,560,683,837,100,000 | 3,226,266,762,397,900,000,000 |
aA! | 88 | 3,596,345,248,055,300 | 316,478,381,828,866,000 | 27,850,097,600,940,200,000 | 2,450,808,588,882,740,000,000 | 215,671,155,821,681,000,000,000 |
aA0! | 98 | 8,507,630,225,817,860 | 833,747,762,130,150,000 | 81,707,280,688,754,700,000 | 8,007,313,507,497,960,000,000 | 784,716,723,734,800,000,000,000 |
横幅が足りずに完全にはみ出していますが・・・。^^;
とりあえず、一見膨大なパターンの組み合わせがあり、これを手当たり次第にトライするのは無謀なように見えます。しかし、我らがASIC君は、1秒間に20兆回の計算ができます。この計算能力を使ってクラックした場合、どの程度の時間でパスワードを突破できるのでしょうか?(単位は「日」です)
文字種別 | 種類 | 8文字 | 9文字 | 10文字 | 11文字 | 12文字 |
---|---|---|---|---|---|---|
a | 26 | 0 | 0 | 0 | 0 | 0 |
0 | 10 | 0 | 0 | 0 | 0 | 0 |
! | 33 | 0 | 0 | 0 | 0 | 0 |
aA | 52 | 0 | 0 | 0 | 2 | 113 |
a0 | 36 | 0 | 0 | 0 | 0 | 1 |
a! | 59 | 0 | 0 | 0 | 9 | 515 |
aA0 | 62 | 0 | 0 | 0 | 15 | 934 |
aA! | 88 | 0 | 0 | 8 | 709 | 62,405 |
aA0! | 98 | 0 | 0 | 24 | 2,317 | 227,059 |
というわけで、殆どのケースであっさり「0日」で突破できます。流石のパワーですね!
これを見ると、小文字と記号を組み合わせて12文字か、大小文字と記号を組み合わせて11文字ぐらいが安全ラインでしょうか。1年以上かかりそうです。
このASICを1年間休まず稼働させると、電気代が300~500万円ぐらいかかりそうなので、あなたのパスワードがそれに見合うだけの価値があるなら頑張ってクラックされる可能性がゼロとは言えない?
まとめると
パスワードの強度的には、英数記号を織り交ぜた方が、パターン数が増えるので強度が増します。特に記号が有効です。
総当たりされるシチュエーションは限られていますが、それでも安全なパスワードとなると、小文字+記号で12文字以上か、大小文字+記号で11文字以上が最低ラインとなります。できれば13文字以上のパスワードを使うと良いと思います。