2016-05-08 8 views
0

Stackoverflowから、単に電子メールによる登録を確認するためにUUIDを使用するのは悪いようです。何故ですか?なぜユーザーのデータから無作為なコードを生成する必要があるのですか?電子メール確認コードをUUIDにできないのはなぜですか?

提案された方法は、ユーザーdata + salt - > hashの変形であるようです。 UUIDが使用されると、常にハッシュされます。何故ですか?隠すか、難読化するものはありません。

ご迷惑をかけて申し訳ありません。

今はPython3のUUID組み込み関数を使って(プロトタイプ作成)しています。特別なことがありますか?

答えて

1

悪質な意図を持つ人は、それぞれの受信ボックスにアクセスすることなく任意のメールアドレスを登録することができなくなります(毎日の猫の事実のためにターゲットを登録したいいたずらを考えてください)有償の電子メールニュースレターにサインアップしたり、受信トレイに潜在的に仕事用の受信トレイを迷惑メールとして送信したりすることがあります。したがって、暗号で安全でなければならない確認コード。暗号的に安全な確認コードの1つの重要な特徴は、それが予測または推測できないことである。

これは、UUIDが適切でない理由です。UUIDの主な特長は、衝突が天文学的に起こりにくいということです。しかしながら、UUID生成アルゴリズムは、予測不可能であるようには設計されていない。典型的には、UUIDは、生成システムのMACアドレス、生成時間、および数ビットのエントロピーから生成される。 MACアドレスと時刻はよく決められています。 PIDと時間だけで供給されるPRNGの使用も完全に許可されています。 UUID全体のポイントは、衝突を避けることです。衝突を避けることができます。そのためには、(決して変更されない)生成システムに固有のビットと、この特定のシステムがUUIDを時間的に分散させることによって同じUUIDを2回生成するのを防止するビットがあれば、それを生成するプロセスとプロセスの内部状態。

したがって、どのシステムがUUIDを生成するか、つまりMACアドレス、つまりUUIDが生成された時刻を知っている場合、UUIDをランダム化するエントロピーの余分な32ビット程度しかありません。 32ビットは単純にセキュリティを賢明にカットしません。

確認トークンが24時間有効であると仮定すると、1秒あたり> 100個の確認要求があり、UUIDジェネレータには32ビットの余分なランダム性があります(よく知られている時間とMACに加えて)有効な確認UUIDを見つける確率は2%です。

時間間隔ごとに無効なUUIDがあまりにも多く試行されると、確認リクエストをブロックすることはできないことに注意してください。これは、合法的なユーザーが自分の電子メールアドレス(電子メールアドレス確認リクエストには役立たず、DoSの特定のメールアドレスをターゲットにすることができます)。

+0

要約:UUIDは重複しませんが、確定的な情報がベイク処理されているため予測可能ですか? –

+0

フォローアップ:なぜユーザーデータをシードとして使用するのですか? [可能な限り乱数として使用する方法をここに挿入]は、より合法的なものになりませんか? –

+0

おっと、既にここに尋ねられています。 http://stackoverflow.com/questions/23711489/e-mail-verification-with-keys-made-with-uuid-uuid4-safety-and-uniquness-of-gen –

関連する問題