予測不可能/推測可能なセッションIDとして使用するためにUUIDを生成する必要があります。セッションIDのデフォルトmt19937 RNGセキュアを使用して、ブーストUUIDが生成されますか?
これは容易boost's UUID libraryを用いて達成することができる。
boost::uuids::uuid newUUID()
{
static boost::uuids::random_generator gen;
return gen();
}
返されるUUIDを容易に文字列に変換することができます。だから我々は、メルセンヌツイスター19937擬似乱数生成器を使用している
boost::uuids::uuid newUUID()
{
static boost::uuids::basic_random_generator<boost::mt19937> gen;
return gen();
}
:
上記のコードは同等です。ブーストのように見えるのは、seeding it properlyというタスクが深刻だということです。
しかし、代わりにboost::random_deviceのような非確定的なRNGを使用することで、セキュリティの観点から重要なことが得られたのか、それがUUID生成の速度にどのように影響するのだろうかと思います。
boost::uuids::uuid newUUID()
{
static boost::uuids::basic_random_generator<boost::random_device> gen;
return gen();
}
セキュリティに関する洞察力のある方からのアドバイスをいただければ幸いです。
安全をどういう意味ですか? AFAIKは、暗号的に安全ではありません。 – NathanOliver
MTは本当に高速でかなり高品質ですが、暗号化RNGではありません。しかし、スピードは問題ではありませんが、MTは通常のシステムで毎秒GBのランダムデータを生成できます。それ@NathanOliver –
は本当に質問です:それはこれらが推測/予測可能であるべきではないか、MTは、この目的のために十分に確保されたセッションIDを使用しようとしている場合はUUIDを生成するための暗号RNGを使用する必要があります。 – mgd