如何测试加密程序?

时间:2015-11-15 01:44:52

标签: c++ cryptography

我创建了一个加密文件的代码(C ++)。它生成密钥和加密文件。但我不知道我的算法有多好(或坏)。有什么办法可以测试吗?

2 个答案:

答案 0 :(得分:2)

永远不要依赖加密算法的保密性。出于多种原因,这将是一个重大的战略错误。至少,如果这个算法被揭示,将很难更改它并在所有使用您的软件的机器上重新安装使用其他算法的补丁。另一方面,更改密钥更容易,不需要任何软件修改。

确保其稳健性的第一步是发布。是的,当您尝试评估它时,假设是入侵者(Trudy)所知道的,他只缺少

考虑到Trudy知道算法,通过问自己以下问题来评估算法的健壮性水平:

  • 它是否抵制 Cipher-Only 密码分析?如果Trudy有一组(足够大的)用同一个密钥加密的文本,但是她有一些信息,例如用于编写文本的语言,这些文本的主题(即金融信件),她是否能够推断出那把钥匙? Trudy可以通过搜索所有可能的密钥进行强力攻击(因此密钥应该足够大,现代密码学中至少128位),但她也可以通过基于语言的一些已知统计数据进行猜测来减少搜索,主题和其他信息。

  • 它是否抵制 Known-Plaintext 密码分析?如果Trudy有一组加密文本和相应的普通文本,她可以推断出密钥吗?

  • 它是否抵制选择的明文密码分析?如果Trudy可以开放访问系统,可以为她生成任何明文的密文,她可以推断出密钥吗? (请注意,这是公钥加密系统的要求,例如TLS)。

作为一个结论,你可以看到密码分析是一个严肃而非常先进的科学,所以,如果你是为了一个严肃的项目而不是为了好玩,那么强烈建议不要编写你的私有算法,而是选择现成的一种公知算法,因为它们已经过验证,并且多年来证明了它们的稳健性。

答案 1 :(得分:1)

说到安全性:永远不要制作自己的算法。使用经过审核,易于更新的第三方库,应用现有算法的适当组合。