【问题标题】:Alternative Cryptographic Secure Pseudo Random Number Generator for C# [closed]C# 的替代加密安全伪随机数生成器 [关闭]
【发布时间】:2013-09-12 17:45:48
【问题描述】:

在所有这些 NSA 的东西之后,我只是想知道是否有人知道 .NET 的 System.Security.Cryptography.RNGCryptoServiceProvider() 的替代方案 - 也许是一个开源解决方案?

我试图搜索它,但并没有真正成功,所以我希望社区中的任何人有一个想法?

谢谢

【问题讨论】:

  • 当你手头有一个替代品时,为什么还需要一个替代品?
  • 他只是说“毕竟这些 NSA 的东西”。这代表国家安全局,或者换句话说,一群可能能够以某种方式将加密文本转换为明文的人
  • @SriramSakthivel 一是因为我偏执(见fiercegovernmentit.com/story/…technewsdaily.com/18525-microsoft-nsa-encryption.html)二是因为我只是想知道:-)
  • 不确定 BouncyCastle,但我们的 SecureBlackbox 包含加密强 PRNG。请注意,任何 PRNG 都依赖于良好的随机种子数据来源。
  • 您可以将 OpenSSL 与 p/invoke 一起使用。

标签: c# cryptography prng


【解决方案1】:

使用新的 .NET 6 API 从 CSPNG(加密安全伪随机数生成器)生成随机数比以往更容易:

// Give me 200 random bytes
var bytes = RandomNumberGenerator.GetBytes(200);

【讨论】:

【解决方案2】:

在 Bouncy Castle - C# 版本中有两个可能有用的随机数生成器:DigestRandomGeneratorVmpcRandomGenerator,都在 crypto.prng 命名空间中。诀窍是从您可以信任的来源中播种这些随机熵。

请注意,我不熟悉 VMPC 算法。 DigestRandomGenerator 很大程度上取决于底层哈希函数的安全性(SHA-512 在 64 位硬件上非常安全和快速)。这是一个相当简单的实现,但它应该是安全的。

【讨论】:

  • 有趣的问题是这些是如何播种的。
  • @CodesInChaos 一如既往,是的,但这个问题是专门针对 CSPRNG 的。
  • 我怀疑 OP 实际上区分了确定性部分和收集熵的部分。即使您不信任CryptGenRandom,重要的是获得安全的随机数。
  • @CodesInChaos 好吧,如果您不信任 Microsoft 系统上的 Microsoft,那么这些选项几乎没有。您可以将其发布为答案,但这将在已经打开的门中踢。
  • 这些 NIFS SP 800-90A 第 1 版是否兼容?
猜你喜欢
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多