如何测试加密算法的质量?

Eya*_*yal 9 testing random encryption cryptography probability

我想测试加密算法的强度.它不一定非常强大,它只是必须抵制意外破解,并说,一个坚定的黑客有10个小时的浪费.(我写了加密算法.是的,我知道这通常是一个坏主意,但我认为我有充分的理由.)

我应该做什么样的测试?到目前为止,我试过这个:

  • 随机生成A.
  • 翻转A的一个随机位以制作B.
  • 检查加密(a)XOR加密(b)中的1的数量是否符合泊松分布(除了XOR从不输出0).

还有其他建议的测试吗

关于加密

它是一个标准的Fiestel密码,设计运行在3ns,完全是组合的,没有寄存器.(这比DES/AES /等快几个数量级.)我在3ns内做了尽可能多的回合,只有6次左右.

首先,我置换输入位的顺序.

然后,对于输入的左半部分的每个位,IOR与其一起输出函数F.F输入3位并输出1位.F的3个输入位从输入的右半部分中选择.F的输出是{00001111}的排列,因此F是平衡的.从右半部分的位中选择F的3个输入位,使得右半部分的每个位使用相同的次数(或尽可能接近).每个"F"随机且独立地生成一次.

接下来,我交换结果的左右两半并再次进行.同样,新输入的每个位都有新的"F".

这一切都是一轮.我做了6次,每轮都有随机的,独立生成的F函数.6轮需要大约3ns.我也试过改变轮次数和F的输入数量.

pax*_*blo 21

从网上下载制作低等级脏装置的说明,用华盛顿特区的街道地图将其加密,然后加密并发送至obama@whitehouse.gov.

加密算法的强度将与穿着黑色西装的男士出现在门口的时间成反比.

请记住,这可能是一次性的实验,至少在Gitmo花费的那些年里:-)


dmc*_*kee 11

我怀疑通常的答案是"如果你需要问这个问题,你可以期待的最好的是孩子姐妹等级加密."


但是,如果必须,您可以开始将通常的randnomness测试应用于输出(如何测试随机数?),以字节,单词,长字等形式.

如果你不能通过,你知道它没有任何进一步的工作是弱的.请注意,传递此信息并不能保证它很强大.


Eth*_*man 11

将它发布在互联网上,看看是否有人可以破解它(NIST/NSA用AES,SHA-3等做了什么).

我会看看所有常见的攻击.

确定有人必须强力查找明文的密钥空间有多大,是否比所有可能的密钥小?两个密钥是否会产生相同的密文?

你能选择一个明文来揭示密文中的密钥吗?


ken*_*418 8

如果你不得不问 - 这是一个很好的迹象,你不应该自己写.

如果你只是想写一个作为学习练习,那么Kirtan建议的加密酷刑测试可能是好的.但是,如果您计划真正将此加密用于真正需要安全性的某些目的,那么该工具将无法替代已发布的算法经过多年的专家分析.

即使您的算法生成看起来随机的输出,也不意味着它必然是安全的.


Mat*_*hen 6

我几乎可以保证你没有充分的理由.但是,如果您这样做,请提交给您的同行和NIST审核,当AES出现更换时.实际知道他们正在做什么的人的持续检查是唯一知道的方法.