これは非常に良い質問です。あちこちでUUIDを使用することが急ぎで十分に考慮されているとは思わない。確かな研究は見つかりませんでした。
提案:ここでは非常に慎重に踏み、暗号化について十分に理解してください。128ビットUUIDを使用する場合、「誕生日効果」は、各キーに128ビットのエントロピーがある場合、約2 ^ 64キーを生成した後に衝突が発生する可能性があることを示しています。
これが事実であることを確認するのは実際にはかなり困難です。真のランダム性は、(a)放射性崩壊(b)ランダムなバックグラウンド無線ノイズから生成される可能性があり、注意しない限りしばしば汚染される(c)適切に選択された電子ノイズ、たとえば逆バイアスツェナーダイオードから取得 (私は最後のもので遊んだことがあり、それは魅力のように機能します、ところで)。
ユーザーが2 ^ 64(つまり約10 ^ 19)に近いキーを生成し、それらすべてを相互にチェックしていない限り、「1年間の使用でこれを見たことがない」などの宣言を信用しません。自明でない運動。
問題はこれです。キーを他のすべてのキーと共通のキースペースで生成している他のすべてのキーと比較するとき、たった100ビットのエントロピーがあるとしましょう。約2 ^ 50で衝突が発生し始めます。約10 ^ 15個のキー。わずか1,000億のキーをデータベースに追加した場合に衝突が発生する可能性は、まだ無視できます。また、チェックしないと、ペタロウサイズのデータベースに忍び込む予期せぬエラーが後で発生します。これは激しく噛む可能性があります。
このようなUUIDを生成するためのアプローチが複数あるという事実は、一時的な不安を引き起こすはずです。タイプ4 UUIDに十分なエントロピーを持つ「真にランダムな」プロセスを使用するジェネレーターがほとんどないことに気付いた場合、ジェネレーターのエントロピーコンテンツを慎重に調べない限り、過度に心配する必要があります。(ほとんどの人はこれを実行せず、その方法も知らないでしょう; DieHarderスイートから始めるかもしれません)。擬似乱数生成と真の乱数生成を混同しないでください。
入力するエントロピーは自分が持っているエントロピーであることを理解することが重要であり、暗号化関数を適用してキーを摂動してもエントロピーは変更されません。私のスペース全体が数字の0と1で構成されている場合、エントロピーの内容は次の2つの文字列と同じであるということは直観的に明らかではないかもしれません。 !@@#&^%$$),. m}」と「そして今は完全に異なるもののために」。まだ2つのオプションがあります。
ランダムネスを正しく行うには注意が必要であり、単に「専門家はそれを見た、それで問題ない」と考えるだけでは十分ではないかもしれません。専門の暗号学者(そして、本当に熟練したこれらの人はほとんどいません)は、彼らがしばしば間違っていると認める最初の人です。ハートブリード、DigiNotarなどを信頼しました。
Paul Tomblinは適切な注意を払っていると思います。私の2c。