簡體   English   中英

使用默認的mt19937 RNG生成的增強UUID是否對會話ID安全?

[英]Are boost UUIDs generated using default mt19937 RNG secure for session IDs?

我需要生成UUID用作不可預測/可猜測的會話ID。

這可以使用boost的UUID庫輕松實現:

boost::uuids::uuid newUUID()
{
  static boost::uuids::random_generator gen;
  return gen();
}

返回的UUID可以輕松轉換為字符串。

上面的代碼等效於:

boost::uuids::uuid newUUID()
{
  static boost::uuids::basic_random_generator<boost::mt19937> gen;
  return gen();
}

因此,我們使用的是Mersenne Twister 19937偽隨機數生成器。 似乎boost需要認真對待播種任務。

但是,我想知道是否通過使用非確定性RNG(例如boost :: random_device )獲得了重要的信息(安全方面),以及它如何影響UUID的生成速度。

boost::uuids::uuid newUUID()
{
  static boost::uuids::basic_random_generator<boost::random_device> gen;
  return gen();
}

感謝有安全見識的人的建議。

MT不是加密安全的RNG。

(由文檔保證) boost::random_device僅在具有斷層攝影安全性和不確定性的情況下存在。 請注意,對於std::random_device並非如此。

對於任何嚴肅的應用,您不能僅憑文件證明的擔保就可以。 但是對於小規模的不重要的事情,應該這樣做。

編寫自己的加密安全代碼或系統通常不是一個好主意。 描述某人打敗您的系統有多糟糕,因為這實際上與您需要付出多少努力有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM