密码分析攻击可以按照获得密文明文的程度分为5类:
(1)唯密文,只能获得到密文。(消息都用同一加密算法加密,目标是尽可能恢复多的明文或者最好推算出密钥)
(2)已知明文,能获得若干明文-密文对。(目标是推算出密钥或者导出一个算法对同一密钥加密的任何新的消息进行解密)
(3)选择明文,能够选择特定的明文输入到加密机获得相应密文。(比已知明文更有效,目标同上)
(4)选择密文,能够选择特定的密文输入到解密机获得相应明文。(目标是推出密钥)
(5)选择文本,选择明文和选择密文的结合。(结合选择明文和密文,目标是推出密钥)
显然,其他条件相同的情况下,唯密文攻击是难度最大,选择文本攻击的难度最小。一般来说,密码算法要求能确保抵抗已知明文攻击。
对于分组密码来说,扩散(密钥和明文每一位影响密文许多位,利用线性变换来达成)和扰乱/混淆(明文和密文关系错综复杂,利用非线性的替代变换来达成)是影响密码算法安全的主要因素。
算法对明文/密钥的扩散性测试中严格雪崩准则,即改变明文/密钥的任一比特,应导致密文分组中大约一半比特的变化。
密码分析类型 | 具体攻击 |
唯密文 | (1)差分能量分析(DPA):通过统计方法和纠错技术对密码设备功耗的变化进行分析,提取密钥有关信息。 (2)穷举攻击:通过尝试口令或密钥所有的可能值以获得真实口令或密钥 (3)生日攻击:针对杂凑函数,试图找到两个具有相同杂凑值的消息(强碰撞性) (4)字典攻击:有可能的密钥或口令组成字典,遍历字典中的所有条目以猜测密钥或口令 (5)频率分析攻击:字母的频度、重复字母模式、字母结合方式等统计特征破译代换密码(单表和多表代换) (6)重合指数法:针对多表代换密钥字长度的确定 (7)重合互指数法:针对多表代换密钥字的确定 (8)因子分解方法:针对RSA(Pollard p-1算法、二次筛法、椭圆曲线分解算法、数域筛法) |
已知明文 | (1)线性攻击:分析明文、密文和密钥之间的若干比特的线性关系 |
选择明文 | (1)差分攻击:分析特定明文差异对相应的密文差分的影响,获得可能性最大的密钥 |
选择密文 | (1)RSA选择密文攻击:选择的密文,请私钥拥有着签名,得到对应明文 |
选择文本 |
密码协议的攻击分类:
(1)被动攻击,窃听协议的部分和全部。
(2)主动攻击,引入新的消息、删除原有的消息、重放消息。
(3)被动骗子,遵守协议,但试图获得协议外的消息
(4)主动骗子,破坏协议。
密码协议对被动骗子来说应该是安全的,合法用户可以发觉是否有主动欺骗。
协议攻击类型 | 具体攻击 |
被动攻击 | (1)离线攻击:对已经获得的数据进行分析。 |
主动攻击 | (1)重放攻击:通过记录通信会话,并在以后某个时刻重放整个会话或者会话的一部分。 (2)在线攻击:在协议过程中对交互数据进行窃听、篡改、替换、插入等攻击。 (3)中间人攻击:拦截并有选择地修改通信数据以冒充通信中实体。 |
被动骗子 | |
主动骗子 | (1)假冒攻击:假冒用户,欺骗验证者的攻击方法。 (2)平行会话攻击:在精心安排下使得一个协议的两个或多个运行并发执行,从一个运行中得到另一个运行中困难性问题的答案。 (3)双方认证Wiener攻击。 |