真にランダムで証明可能な安全なパスワードを作成する方法





KeePass、1Passwordなどのパスワードマネージャーは、この問題を大幅に解決します。 彼らの助けを借りて、訪問するサイトごとに一意で安全なパスワードを生成できます。 ただし、このようなマネージャーは、アクセスに使用するマスターパスワードと同じくらい安全です。 十分なランダム性と予測可能性は、いくつかの数字や感嘆符が存在するためにランダムに知覚されるという事実だけでなく、定量的な測定によって確認される必要があります。 真のランダム性が必要な場合、特別なものが必要になります。



幸いなことに、一連の確率の十分なエントロピーを備え、一度に3ビットの情報を生成できる安価なものを購入する機会があります。 この事故の不可fall性に基づいて、電気がなく、信頼性が十分で、毎日何億ドルも所有者を変えることができます。







サイコロを投げると、1〜6の乱数を取得でき、2.58ビットの情報が得られます。



情報理論の創始者であるクロードシャノンは、情報を撮影された不確実性として定義しました。 より正確には、情報を取得することが不確実性を除去するための前提条件です。 不確実性は、選択した状況で発生します。 不確実性を除去する過程で解決されるタスクは、考慮されるオプションの数を減らし(多様性を減らす)、その結果、考えられる状況の数から1つのオプションを選択することです。 不確実性を取り除くことにより、十分な情報に基づいた意思決定と行動が可能になります。 これが情報の制御ロールです。



エントロピーは、ビットで表される不確実性の尺度です。 エントロピーは、ランダム変数の分布の均一性の尺度と考えることもできます。







実際、整数はないため、常に最も近いビットに丸めます。 この場合、1〜6の数値を格納するには3ビットが必要ですが、実際には0〜7を格納できます。



000 - 0

001 - 1

010 - 2

011 - 3

100 - 4

101 - 5

110 - 6

111 - 7








0と1の組み合わせの数により、特定のビット数を使用して格納できる数が決まります。 さらにビットを追加するたびに、組み合わせの数が2倍になります。 簡単です。2進数にもう1ビット追加すると、以前の2つの組み合わせすべてが得られます。0が左、1が左になります。



実際、n番目のビット数を持つ変数は、2 ^ n(2のn乗)の可能な値を持つことができます。 バイトは8ビットで構成されているため、2 ^ 8(256)の値を持つことができます。



変数のサイズは、格納できる情報の量に制限を課します。それぞれより多くのバイトを使用する変数は、より広い範囲の値を格納できます。



コンピュータの空きメモリには限りがあります。 変数を宣言するたびに、変数が存在する限り、この空きメモリのごく一部が割り当てられます。 最近のコンピューターには多くのメモリがあるため、ほとんどの場合、特にプログラムに含まれる変数が少ない場合はこれは問題になりません。 ただし、多数の変数(100,000など)を必要とするプログラムの場合、1バイト変数と8バイト変数の使用の違いが大きくなる可能性があります。





したがって、1987年にリリースされたビデオゲームThe Legend of Zeldaは8ビットで、変数値の制限は255でした。



パスワードを一致させるためのエントロピーを少なくとも128ビットにしたいのですが。 ほとんどの研究によれば、128ビット暗号化を破ることは、数十億年未満でブルートフォース法を使用して実際に不可能です。 2 ^ n方程式を使用すると、128ビットを使用して3.4 *10³⁸の異なる値の1つを格納できます。 毎秒1,000億の可能な値をテストできたとしても、正しいパスワードを推測するには数十兆年かかります。 これで十分だと思います。 128ビットのパスワードは、ほぼ確実にオンラインセキュリティチェーンの弱点にはなりません。



サイコロのそれぞれが1回のロールで2.58ビットのエントロピーを生成する場合、5を投げると12.9ビットになります。 5個のサイコロを10回使用すると、129ビットの情報が得られ、結果がわからない場合は、129ビットに等しい不確実性またはエントロピーが作成されます。



しかし、これらの結果を安全で覚えやすいパスワードに変換する方法は?



私はDicewareを使用します 。これは、5つのサイコロのトスの結果によって索引付けされた単語の辞書です。 5つのサイコロを振る(または5回1回)たびに、出てくる数字がリスト内の単語に対応します。 たとえば、1-4--2-6-3が5個のサイコロに落ちた場合、14xxxのすべての単語を含むページに移動し、14263が「blab」に対応することを見つける必要があります。 10回実行すると、10個の単語の文字列が得られます。 これらの10語は潜在的なパスワードです。



さらに、ニーモニックは私たちを助けます-一連の特別な技術と方法は、必要な情報の記憶を促進し、関連付け(接続)の形成を通じてメモリ量を増やします。 たとえば、「プロットの原理」を使用して、記憶された単語が関係するストーリー(プロット)を作成できます。 たとえば、「象、家、テレビ」という一連の単語を思い出すために、「象はテレビを見に彼の家に行った」と考えます。 あなたは愚かであると感じるかもしれませんが、それはうまくいき、あなたはそのように物事をどれほど早く覚えることができるかに驚くでしょう。







PDF形式では、辞書のバージョンの1つがこちらから入手できますこちらはロシア語版です。



これがすべて冗長と思われる場合は、これがすべての財務およびオンライン生活を保存するパスワードであることを忘れないでください。 価値があると思うなら、漫画本屋に行ってサイコロを買う。 カメラ、電話、コンピューターのない部屋に行き、キューブを回転させて、辞書から対応する単語を書きます(私が知らない少数を削除するために15単語を選択します)。 次に、10個の単語を選択して、それらを記憶します。 これはパスワードです。 パスワードマネージャーの入力に使用するように求められたパスワードを覚えていることが確実になるまで、数日間記録を保管します。



これで、真に証明可能なランダムなパスワードを取得する方法がわかりました。これは、第三者によって制御または生成されず、安全に保存されます。 これは数年間使用できますが、これが知っておく必要がある唯一のパスワードです。 誰かがあなたが10個の単語を使用したことを知っていて、どの辞書を使用したかを知っていたとしても、129個の極度のエントロピーを「突破」する必要があります。



フォイルキャップを取り外して、寿命を続けます。 時々それを着ることは正常です。



コメントCloud4Y



以前、この質問は「 擬似ランダムジェネレーターに関する 教育プログラム 」および「 antichat.ruハックの結果に基づいてパスワードを選択するための実用的な推奨事項 」の投稿でHabrahabrで提起されました



著者の主な調査結果:

1.プログラムジェネレータがどのようにパスワードを受信するか、どれだけ-初期データをどこから取得するかはそれほど重要ではありません。 インタラクティビティがまったく発生しない場合は、疑う必要があります。

2. 8時間以内に41037 MD5ハッシュから31,790個のパスワードを選択したことから明らかなように、統計的に人気のあるパスワードの組み合わせがないことを追跡することはほとんどできません。
この点で、Charlie Hoeyが説明した方法は、特に2要素認証がない場合に役立ちます。



新しい単語を追加せずにセキュリティを強化するには、ランダムに選択した1つの特殊文字または数字をパスフレーズに挿入します。 安全に行う方法は次のとおりです。1つのサイコロを転がしてフレーズ内の単語を選択し、繰り返してその単語の文字を選択します。 3回目と4回目のサイコロを投げて、次の表から追加したキャラクターを選択します。



1 2 3 4 5 6

1〜! #$%^

2&*()-=

3 + [] \ {}

4:; 「<>

5? / 0 1 2 3

6 4 5 6 7 8 9



ランダムな順序で文字を挿入すると、約10ビットのエントロピーが追加されます。 もちろん、これはすべて、パスフレーズの秘密を意味します。



PS

また、チャーリーホーイの記事「 ヘッドフォンジャックの賞賛 」をお勧めします。 この記事では、ECG装置を収集することにより、保険なしで自分の健康をチェックして1,000ドルを節約した方法と、コネクターを保持することが重要である理由について説明していますヘッドフォン用で、ほとんどユニバーサルでライセンス不要のI / Oポートへのアクセスを失わないようにします。



この記事と上記の彼の記事の翻訳は、私たちを取り巻く技術空間ですべてがどのように機能するかを理解することがどれほど重要で楽しいかという考え方が似ています。



All Articles