安心して使えるパスワードを作る3つの方法
安心して使えるパスワードを作る方法を3つ選びました。
パスワードの文字数は12文字以上で作ることが(今のところ)安全と言われています。
> $len = 12 #文字数
> [Reflection.Assembly]::LoadWithPartialName("System.Web")
> [System.Web.Security.Membership]::GeneratePassword($len,0)
残りの36文字をなにか別の文字を適当に埋めます。
つまり、文字の中に文字を散りばめて、隠した順番を覚えておくという方法です。
悪意のある相手がひと目見たとしても、すぐに正しいパスワードにたどり着くことは困難と言えます。
もし、この六角形部分だけバレたとして総当たり攻撃を掛けてみましょう。
仮に8文字以上のパスワードを作るとして、
一つの六角形が12文字を二重にしており、それが2つであることから、文字の個数は48文字です。
48文字以内のパスワードを作るとして、48の階乗ですから、
と、10の61乗以上の組み合わせが考えられますので、総当たりをかけようというのはなかなか難儀でしょう。
ただ、48文字のパスワードを作る人は稀でしょう。
実用として、48文字から12文字のパスワードを作るとして、48P12ですから、
となります。
これは、英数字10文字のパスワードと英数字11文字のパスワードの間くらいです。
1. ランダム
とても重要なサービスのパスワードであればランダム文字列で作るほうがいいでしょう。盗聴まで警戒するならオフラインで作るくらいの警戒をしてもいいくらいです。
作り方
WindowsならPowerShell上で以下の3つのコマンドを打つと、ランダム文字列が作れます。パスワードの文字数は12文字以上で作ることが(今のところ)安全と言われています。
> [Reflection.Assembly]::LoadWithPartialName("System.Web")
> [System.Web.Security.Membership]::GeneratePassword($len,0)
結果は、こんな感じ。記号が混じります。
> F:RTWT])q]]}
記号を混ぜたくない場合は、3つめのコマンドを変えるといいでしょう。
以下は、英数字のみにするものです。
> do { $pwd = [System.Web.Security.Membership]::GeneratePassword($len,0) } until ( $pwd -match '^[0-9a-zA-Z]+$' ); $pwd
結果はこんな感じ。記号は混じりません。
> JKULrd6w2ca8
オンラインで作っていいなら、パスワード生成アプリを使ってみましょう。ただし、信頼できるサイトで作るべきです。不正に収集されている危険性もあるかもしれません。
デメリットは、ランダム文字列を覚えるのは不可能でしょう。
パスワード管理ソフトの助けを借りなければならないという手間があります。
安全性
英数字(64種=大文字英字24種+小文字英字24種+数字10種)から12文字のパスワードを作る場合、- 64^12 ≒ 3.2 × 10^21 ≒ 32垓通り以上
となります。
実際に解析するのにどれくらいの時間がかかるのか。
パスワードの強さを解析するサイト(HOW SECURE IS MY PASSWORD?)で調べたところ、3千年でした。
今のコンピュータの性能をもとにしたという前提ですが、安全といえるでしょう。
2. 日本語の単語を4つ組み合わせる
パスワードを覚える必要がある。でも、長いパスワードを作らないと安全でない。
そういうジレンマにあるならば、日本語の単語を4つ組み合わせてみましょう。
覚えやすく、かつ、少なくともパスワードの長さを確保して作ることができます。
覚えやすく、かつ、少なくともパスワードの長さを確保して作ることができます。
作り方
日本語辞書を適当に4回程度開いて単語を選びましょう。
- 睡眠
- 関節
- 携帯
- 眼帯
- suiminkansetukeitaigantai
これで、25文字のパスワードを生成できました。
ですが覚えるべきは、4つの単語ですから比較的覚えやすいでしょう。
なんども入力しているうちに、自然と覚えてくると思います。
なんども入力しているうちに、自然と覚えてくると思います。
余談ですが、パスワードの強さで考える最初に優先するべきことは長さです。
よく文字の種類を混ぜようということを言われますし、それも大事ですが、まずは長さ。
長ければ長いほど、総当たり攻撃(ブルートフォース攻撃)に強くなります。
でも、文字の種類を混ぜないと不安だ、ルール上混ぜないといけないという場合は、
- 区切りに数字を混ぜるとか
- suimin8kansetu2keitai5gantai
- 単語の末尾の文字を大文字にするとか
- suimiNkansetUkeitaIgantaI
工夫をするといいでしょう。
安全性
広辞苑は約25万語収録されているそうですから、この法則で考えられる組み合わせは、
- 約25万の4乗≒ 3.9 × 10^21 ≒ 39垓通り以上
で、12文字の英数字の組み合わせたパスワードよりは組み合わせが多いです。つまり、12文字以上のパスワードにすると安全といえるので、(法則がバレても)安全と言えるでしょう。
ただ、「パスワードは4つ単語を組み合わせてるから強いぞ!」などと、わざわざパスワードの法則を他人に言っては自ら危険に追い込むような愚かなことなので、基本的には法則自体を隠すようにしましょう。
ちなみに、上の25文字の英字小文字のみパスワードをHOW SECURE IS MY PASSWORD?で調べたところ、18京8千兆年でした。
文字種の組み合わせも大事ですが、長さが重要ということがよくわかりますね!
ちなみに、上の25文字の英字小文字のみパスワードをHOW SECURE IS MY PASSWORD?で調べたところ、18京8千兆年でした。
文字種の組み合わせも大事ですが、長さが重要ということがよくわかりますね!
3. 六角暗号記帳
パスワードをメモすることは良くないです。
しかし、忘れてしまえば本末転倒ですから、メモしないと不安な方もいるでしょう。
その場合でもパスワードそのままをメモするのでなく、工夫をすることが肝要です。
オススメのものに六角暗号記帳というものがあります。
2つの6角形を組み合わせたところにパスワードを記録するというユニークな手帳です。
2つの6角形を組み合わせたところにパスワードを記録するというユニークな手帳です。
作り方
その6角形上の48マスにパスワードを記載します。パスワードが12文字なら12マスを埋めます。残りの36文字をなにか別の文字を適当に埋めます。
つまり、文字の中に文字を散りばめて、隠した順番を覚えておくという方法です。
悪意のある相手がひと目見たとしても、すぐに正しいパスワードにたどり着くことは困難と言えます。
安全性
安全性としては、どうでしょうか。もし、この六角形部分だけバレたとして総当たり攻撃を掛けてみましょう。
仮に8文字以上のパスワードを作るとして、
一つの六角形が12文字を二重にしており、それが2つであることから、文字の個数は48文字です。
- 12×2×2=48文字
48文字以内のパスワードを作るとして、48の階乗ですから、
- 48! ≒ 1.24 × 10^61
と、10の61乗以上の組み合わせが考えられますので、総当たりをかけようというのはなかなか難儀でしょう。
ただ、48文字のパスワードを作る人は稀でしょう。
実用として、48文字から12文字のパスワードを作るとして、48P12ですから、
- 48P12 = 48! / (48-12)! ≒ 3.3 × 10^19 ≒ 3300京通り以上
となります。
これは、英数字10文字のパスワードと英数字11文字のパスワードの間くらいです。
- 62^10 < 48P12 < 62^11
- (8.3 × 10^17) < (3.3 × 10^19) < (5.2 × 10^19)
先の2例ほどではありませんが、このメモ帳を落としたとしても、現在のコンピュータの性能なら、まだ比較的安全といっていいでしょう。
それでもパスワードがバレるキッカケができてしまった場合は、必ず変更するようにしましょう。
- 10文字の英数字のパスワードは8ヶ月程度
- 11文字の英数字のパスワードは41年程度
ただ、少なくともメモ帳を落としたと気づいてからパスワードの変更するための時間稼ぎとしては十分な時間です。
以上、3選でした。ぜひ安全なパスワードを作りましょう。
コメント
コメントを投稿