区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者汇集地算法
做者:于中阳安全
来源:区块链兄弟区块链
原文连接:http://www.blockchainbrother.com/article/83ui
算法的安全性加密
根据被破译的难易程度,不一样的密码算法具备不一样的安全等级。若是破译算法的代价大于加密数据的价值,那么通常不会有人想去破译它,即你多是“安全的”。若是破译算法所需的时间比加密数据保密的时间更长,那么你可能也是“安全的”。若是用单密钥加密的数据量比破译算法须要的数据量少得多,那么你也多是“安全的”。设计
在这里说“可能”,是由于在密码分析中总有新的突破。另外一方面,随着时间的推移,大多数数据的价值会愈来愈小。orm
Lars Knudsen曾把破译算法分为不一样的类别,安全性的递减顺序为:资源
(1)所有破译(total break)。密码分析者找出密钥K,这样就能获得rem
(2)全盘推导(global deduction)。密码分析者找到一个替代算法A,在不知晓密钥K的状况下等价于获得get
(3)实例(或局部)推导(instance (or local) deduction)。密码分析者从截获的密文中找出明文。
(4)信息推导(information deduction)。密码分析者得到一些有关密钥或明文的信息。这些信息多是密钥的几位、有关明文格式的信息等。
若不论密码分析者得到多少密文,都没有足够的信息恢复出明文,那么这个算法就是无条件保密的(unconditionally secure)。事实上,只有一次一密乱码本,才是不可破的(给出无限多的资源仍然不可破)。全部其余的密码系统在惟密文攻击中都是可破的,只要简单的一个接一个的去尝试每种可能的密钥,并检查所得明文是否有意义,这种方法称为蛮力攻击(brute-force attack)。
在密码学中,更关心在计算上不可破译的密码系统。若是算法用(如今或者未来)可获得的资源都不能破译,这个算法则被认为是计算安全的(computationally secure)。准确的说,“可用资源”就是公开数据的分析整理。
能够采用不一样的方式衡量攻击方法的复杂性:
1)数据复杂性(data complexity)。用于攻击输入所须要的数据量。
2)处理复杂性(processing complexity)。完成攻击所须要的时间,也常常称做工做因素(work factor)。
3)存储需求(storage requirement)。进行攻击所须要的存储量。
做为一个法则,攻击的复杂性取这三个因数的最小值。有些攻击包括这三种复杂性的折中:存储需求越大,攻击可能越快。
复杂性用数量级来表示。若是算法的处理复杂性是2的128次方,那么破译这个算法也须要2的128次方次运算(这些运算可能很是复杂和耗时)。假设咱们拥有足够的计算速度去完成每秒100万次的运算,而且用100万个并行处理器完成这个任务,那么仍然须要花费10的19次方年以上才能找到密钥。(而这是宇宙年龄的10亿倍)。
当攻击的复杂性是常数时(除非一些密码分析者发现更好的密码分析攻击),就只取决于计算能力了。在过去的半个世纪中,计算能力已经获得了显著的提升,而且如今这种趋势还在发展。许多的密码分析攻击用并行处理的机制进行计算很是理想,一个任务能够分红亿万个子任务,而且处理之间不须要相互做用。一种算法在现有技术条件下不可破译就草率的宣称是安全的,是很冒险的。从中咱们能够得出,一个好的密码系统应设计成能抵御将来多年后的计算能力的发展。