【问题标题】:How secure would it be to choose a random number based on time?根据时间选择随机数有多安全?
【发布时间】:2019-11-19 04:17:33
【问题描述】:

如果我有一个 10 位用户在不同时间到达的在线房间,并且我想在房间已满时随机选择一个用户,那么使用最后一个用户加入的时间戳来选择用户是否安全?房间,然后简单地做一个 % 10 ?

时间戳将以毫秒为单位。

如果我的问题的答案是否定的,在选择时间戳之前添加一个随机延迟会更好吗?

【问题讨论】:

  • 我相信像加密这样需要高质量“随机性”的应用程序通常会结合多个熵源。像这样的事情,涉及人类行为的一小部分时间可能是一种来源。
  • 是的,正如@aschepler 所说,如果您正在做与安全相关的任何事情,那么这可能不是解决此问题的最佳方法。时间不够随机(结果是“伪随机”数)。但如果是为了不需要真正随机数的东西,那么是的,时间应该没问题
  • 如果你真的希望它是随机的,你可以使用 python 库与qrng.anu.edu.au 进行交互以获取随机数

标签: python random cryptography random-seed


【解决方案1】:

为了什么安全?什么样的时间戳,小时?

如果使用计时,那么它通常是精度最好的时间源,并且使用多个增量而不是直接使用时间戳。

所有这些都完全不如由操作系统随机生成提供的加密库提供的 PRNG。操作系统有更多的熵源(包括当今许多 CPU 中的真正随机生成器)。

只执行 mod 10 有点危险(如果计时器由于缺乏精度而偏向使用偶数怎么办?),通常我们将 entropy 输入到密码安全的伪随机数生成器中(CS-PRNG)。

如果这些速度不够快(是吗?)并且安全性不是您的主要需求,那么您可以使用更快的非安全 PRNG 或快速流密码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多