常见的密码学漏洞

交通安全实验室
密码算法在使用过程中往往面临着参数选择问题,如果使用了不安全的选项或参数,将导致严重的安全问题。可能导致不安全参数的情况有:使用弱长度密钥,使用低熵值随机数。

在软件开发方面,密码学占据着重要的角色,在信息系统的保密性、完整性、可用性方面都提供了众多的功能和服务。例如,开发者一般使用的hash算法保存用户密钥的摘要而不是明文,在一些站点和接口服务中,常用https替代http来增强信息在传输过程的安全。在一些银行信息业务中,常用U盾等加密芯片来认证用户。以上所举例子都是信息系统中密码学应用的常见案例。但是,如果对密码学应用不当,则可能造成严重的安全漏洞。本文将介绍在HACKERONE平台上的密码学相关的漏洞。

1.SSL相关攻击

1.1 POODLE

POODLE漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均使用SSL3.0),便可以成功获取到传输数据(例如cookies)。POODLE漏洞只对CBC模式的明文进行了身份验证,但是没有对填充字节进行完整性验证,攻击者窃取采用SSLv3版本加密通信过程中的内容,对填充字节修改并且利用预置填充来恢复加密内容,以达到攻击目的。

1.2 Sweet 32

Sweet32攻击是指在分组加密的过程中,CBC等链式IV的加密模式更加容易遭受碰撞攻击。尤其是当分组密码长度仅仅为64位时,简单的生日攻击就能够应用到碰撞上,再结合Beast攻击,很容易就能够碰撞出明文。

1.3 DROWN

DROWN全称是Decrypting RSA with Obsolete and Weakened Necryption。是指利用过时的脆弱加密算法来对RSA算法进破解,主要针对SSLv2协议漏洞来对TLS进行跨协议攻击。DROWN利用的不是某个特定漏洞,而是利用了所用协议和服务器配置组合中的漏洞。

1.4 SSL stripping

虽然在理论上,使用https能够保证传输中的安全,但在实际应用中,即使服务器端开启了https,但由于考虑到客户端可能并不支持https,服务端仍然可能会响应http请求,所以攻击者也可以使用SSL stripping技术强制转换为http后再使用中间人攻击。例如在github开源的sslstrip工具,就是用来将https强制转换为http的中间人攻击工具。

1.5 FREAK

FREAK攻击的全称是Factoring RSA Export Keys.指的是对RSA出口密钥的分解攻击。在上世纪90年代,美国限制出口高强度的加密算法,限制加密强度最大为40位,密钥交换强度最大为512位。因为该限制,导致众多站点依然使用密钥长度为512位的RSA加密。随着CPU和GPU算力的增强,512位密钥长度的RSA已经很容易就被破解。中间人攻击者进行Freak攻击的步骤如下:

MITM攻击者篡改Client发出的Hello消息,改为请求“export RSA”

Server返回512比特位的出口级的RSA密钥

由于OpenSSL/Secure传输漏洞,客户端会接受这个存在漏洞的密钥。

MITM攻击者破解这个export RSA。

Client发送预主密钥给Server时,攻击者变解密预主密钥并恢复出TLS主密钥。

攻击完成,MITM攻击者已经能够监听并篡改所有的通信内容。

1.6 BEAST

Beast attack指的是针对SSL3.0和TLS 1.0版本的选择明文攻击。主要是因为在分组加密的过程中,如果采用的是CBC等链式IV的加密模式,且攻击者拥有Blockwise攻击的能力,那么就能够进行明文恢复攻击。并且,如果攻击者能够随意控制加密的明文,那么攻击者就能够进行Blockwise attack的基础上的选择边界攻击。这种攻击主要把需要猜解的数据按比特划分依次猜解,通过构造特殊的输入,将要猜解的字节始终在加密分组的最后一个字节。如此,在一个分组中,除需要猜解的字节外,其他数据可视为已知。表现到公式是为:...

为了使,则需要。由于和已知,且和仅存在最后一个字节的差异,所以最多穷举256次,就可以爆破出由此可见,beast攻击在中间人攻击中危害很大。

2.弱默认参数

密码算法在使用过程中往往面临着参数选择问题,如果使用了不安全的选项或参数,将导致严重的安全问题。可能导致不安全参数的情况有:使用弱长度密钥,使用低熵值随机数。例如,生成随机数的熵值过低,导致随机数能够被攻击者预测;使用512位长度的RSA,导致攻击者可以在有限时间内通过穷举的方式分解大整数;

3.HTTP/HTTPS混合使用

尽管https能够保证http数据在传输时的安全,由于还有相当多的站点https配置不完善,由https跳转到http的情况普遍存在。这也将导致传输数据被窃听、cookies被窃取等安全事故。

4.时序攻击

时序攻击(Timing attacks)属于侧信道攻击的一种,在一些密码验证函数中,开发者出于性能或其他因素考虑,对密码的验证采用了按位验证,当遇到对应位不同时,则立即结束验证,返回错误。这种验证规则使得攻击者有机可乘。攻击者可以通过按位穷举的方式来重复的提交验证并观察响应时间来判定当前位是否正确。举例说明:某信息系统中有一个口令验证函数F,专用于验证系统口令,系统口令为"password",F依次对输入的口令按位进行比较。当首次遇到不匹配的位时直接返回错误。比如输入为"pazzword",那F首先比较第一位'p',相同则进入第二位'a'的匹配,相同则进入第三位's'和'z'的匹配,发现不同则立刻返回错误。显然,输入"aassword"和"passworz"的验证时间相差很大。前者只需要验证第一个字符就返回错误,而后者需要验证8个字符才返回错误。以上就是时序攻击的一个简单举例。

5.密钥硬编码

硬编码主要包括以下信息:密钥或token硬编码,用户名硬编码、私钥硬编码。在软件开发过程中,缺乏信息安全意识的开发者极有可能将秘密信息保存到源码中,在该信息系统上线后,攻击者可以通过阅读源码(软件开源的情况下)或通过各种渗透测试方式来获取秘密信息。在得到密钥后,攻击者可以进一步利用该密钥攻破该信息系统。shiro反序列化攻击,shiro是JAVA的一个安全框架,执行身份验证、授权、密码、会话管理。shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:a.得到rememberMe的cookie值b.将cookie值进行Base64解码c.解码后的数据进行AES解密d.最后反序列化得到相关参数然而在步骤c)时,AES的密钥是硬编码的,攻击者通过收集shiro各个版本的密钥,得到了一个候选密钥集合,再通过简单穷举的方式就能确认最终的密钥。确定密钥后,攻击者可以构造恶意数据造成反序列化的RCE漏洞。

6.杂项

KRACK

KRACKK指的是针对WPA2协议的密钥重装攻击(Key Reinstallation Attacks),发现与2017年。由于WPA2协议是绝大多数设备的WIFI协议,所以影响甚广。WPA2协议规定通过四次握手来协商WIFI传输的密钥。该漏洞在于WPA2协议中规定四次握手中第三个消息报文可以被篡改,攻击者可以伪造钓鱼WIFI,再通过KRACK攻击重置客户端加密密钥,结合中间人攻击,可对被害者流量进行嗅探、劫持和篡改等。

Hash长度拓展攻击

哈希长度拓展攻击是针对采用了Merkle–Damgård结构的哈希函数的攻击手段,如MD5、SHA-1和SHA-2等。该攻击可以伪造消息散列值,产生新的合法数字签名,对数据的完整性和不可否认性造成严重威胁。

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论