Encryption 是(当前程序使用的CPU时间的皮秒数+;时钟时间)对伪随机数生成器的密码分析免疫的种子吗?

Encryption 是(当前程序使用的CPU时间的皮秒数+;时钟时间)对伪随机数生成器的密码分析免疫的种子吗?,encryption,cryptography,ecdsa,cryptanalysis,Encryption,Cryptography,Ecdsa,Cryptanalysis,我试图在Haskell中使用这个实现,如果你看第15行,你会看到k值使用,它使用,它使用,它通过以下方式生成种子: (挂钟上的当前秒数)*12345+(挂钟上的当前皮秒数)+(当前程序使用的CPU时间的皮秒数) 这是否足以签署价值数十亿美元的数据?一般来说,答案是否定的。如果您考虑使用案例,唯一的实际选择是使用FIPS或通用标准认证的HSM。FIPS和CC评估必须是最近的日期,并且必须对ECDSA有效。应该只允许专家围绕它创建密钥管理协议。另一位专家应验证该协议和HSM的可用性。ECDSA命名参

我试图在Haskell中使用这个实现,如果你看第15行,你会看到k值使用,它使用,它使用,它通过以下方式生成种子:

(挂钟上的当前秒数)*12345+(挂钟上的当前皮秒数)+(当前程序使用的CPU时间的皮秒数)


这是否足以签署价值数十亿美元的数据?

一般来说,答案是否定的。如果您考虑使用案例,唯一的实际选择是使用FIPS或通用标准认证的HSM。FIPS和CC评估必须是最近的日期,并且必须对ECDSA有效。应该只允许专家围绕它创建密钥管理协议。另一位专家应验证该协议和HSM的可用性。ECDSA命名参数的选择应是协议的一部分,不应掉以轻心

现在来看看你的Haskell RNG。你不应该使用当前的实现,因为随机数生成器肯定没有达到标准。它可能使用了不安全的种子(正如您可能已经发现的),并且似乎没有保持足够的状态(注释中的任何内容都不应该信任,即使用整数,为什么不使用整数)。我没有看到任何哈希或HMAC被用来生成新的随机数或状态,所以我根本看不到这个实现如何生成安全的随机数

快速浏览一下互联网,我更加怀疑:

请注意撰写本文时的实验标记:


现在,如果你真的在为价值数十亿美元的东西开发签名,请让自己成为经理并聘请一名专家(&听取专家的意见)。

一般来说,答案是否定的。如果你正在考虑用例,唯一的实际选择是使用FIPS或通用标准认证的HSM。FIPS和CC评估必须是最近的日期,并且必须对ECDSA有效。应该只允许专家围绕它创建密钥管理协议。另一位专家应验证该协议和HSM的可用性。ECDSA命名参数的选择应是协议的一部分,不应掉以轻心

现在来看看你的Haskell RNG。你不应该使用当前的实现,因为随机数生成器肯定没有达到标准。它可能使用了不安全的种子(正如您可能已经发现的),并且似乎没有保持足够的状态(注释中的任何内容都不应该信任,即使用整数,为什么不使用整数)。我没有看到任何哈希或HMAC被用来生成新的随机数或状态,所以我根本看不到这个实现如何生成安全的随机数

快速浏览一下互联网,我更加怀疑:

请注意撰写本文时的实验标记:


现在,如果你真的在为价值数十亿美元的东西开发签名,请让你自己成为经理并聘请一位专家(&倾听专家的意见)。

我不会使用随机数,无论来自哪个CSPRNG,对于
k
。在我看来,私钥和消息的散列更安全。有关完整规范,请参阅。@CodesInChaos由Thomas Pornin编写,我已经觉得更安全了:)您认为代码是什么?如果我查看随机数生成器的实现,我看不到任何维护状态的有效方法(超过32位)。虽然我通常不阅读Haskell,但它甚至可能是30位。我不认为安全。随机性是(EC)DSA的关键。如果没有足够的熵,那么在签名时就会泄漏私钥@CodesInChaos说我使用RFC6979获得k,但是私钥呢?甚至RFC6979也说我应该随机获取私钥,尽管只需要一次。从一个合适的加密PRNG获取私钥CryptGenRandom和Linux上的
/dev/uradom
。我不使用haskell,所以我不知道该使用什么高级包装器。对于
k
,我根本不会使用随机数,无论来自哪个CSPRNG。在我看来,私钥和消息的散列更安全。有关完整规范,请参阅。@CodesInChaos由Thomas Pornin编写,我已经觉得更安全了:)您认为代码是什么?如果我查看随机数生成器的实现,我看不到任何维护状态的有效方法(超过32位)。虽然我通常不阅读Haskell,但它甚至可能是30位。我不认为安全。随机性是(EC)DSA的关键。如果没有足够的熵,那么在签名时就会泄漏私钥@CodesInChaos说我使用RFC6979获得k,但是私钥呢?甚至RFC6979也说我应该随机获取私钥,尽管只需要一次。从一个合适的加密PRNG获取私钥CryptGenRandom和Linux上的
/dev/uradom
。我不使用haskell,所以我不知道使用什么高级包装器。