2012-07-12 182 views

回答

0

不要使用studentware库进行加密。他们不善于维护并可能导致错误。改为使用众所周知的加密框架,例如Crypto++。他们应该声称与标准兼容。你可以检查他们是否对照标准的参考测试向量进行测试;通常存在这样的事情。

如果图书馆已通过FIPS或通用标准(例如OpenSSL已通过FIPS认证),则额外奖励点数。

3

RSA算法是原始可用于两个目的:

  • 机密性(即公钥加密),或
  • 证明原产地(合并时是,数字签名用加密散列)

PKCS#1 标准主要是大家都指的是时下基于RSA加密和签名。更特别的是,最近的PKCS#1(2.1)版本定义了四种不同的方案:

  • PKCS#1 v1.5的加密(用于传统仅供参考,任何人都不应再使用它)
  • OAEP加密(应优先用于任何新的实现)
  • PKCS#1 v1.5的签名
  • PSS签名

换句话说,当你说 “RSA PKCS#1 V2.1”,你建议立即进行删除d实际上是指以上任何一种方案,因为一个图书馆可以实施这些方案的一个子集。

PKCS#1标准写得很好,所以它的所有正确实现在定义上都是相互兼容的。由于除第一个以外的所有方案都依赖加密散列,因此还需要验证所选库是否包含您计划使用的库(例如SHA-256)。

我强烈建议通过查看一组测试向量(它们来自哪里以及它们来自哪里)来判断图书馆的质量。

仍然,一个正确实施不一定安全。除了缓冲区溢出之类的普通事情之外,还应该验证该库是否考虑了所有针对RSA实施的最新攻击(至少包括最实际的side channel attacks on RSA)。这很难评估,但是 - 对于开源库 - 您可以通过查看社区的大小和活动以及它们是否在发现后立即获得感受。

BotanCrypto++这样的开源C++库是一个不错的选择。您可能只想检查它们在目标平台上的速度足够快,它们的许可证(分别为BSD和公共域)是可以接受的,并且它们与您的平台兼容。