繁体   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