Device Bound Session Credentials,通过使用设备端的Private Key来验证当前设备与Session Cookie的关系,削弱Cookie窃取的危害。
Device Bound Session Credentials
需要改造登陆过程,可查看Chrome DBSC相关页面。
登陆成功之后,服务端发送Secure-Session-Registration头,Chrome浏览器在本地进行密钥注册,之后将公钥发送给服务端,服务端需保存。
当客户端Cookie过期之后,Chrome会发起Cookie refresh,服务端返回Challenge,客户端Chrome会利用机器中的Private Key对Challenge进行签名等操作,服务端再进行验证,验证通过之后返回新的Cookie。
Chrome DBSC也有提示,如果malware在Session注册阶段就存在了,那么malware是可以获取到Private key的,这样后面的签名也是可以自己完成的。
缩短攻击时间窗口
DBSC可以显著缩小Cookie窃取之后的攻击时间窗口。
因为认证的cookie是一个短期Cookie,那么在这个短期Cookie过期之后,是需要新的Cookie的,而攻击者没有Private key的情况下,无法完成Cookie Refresh,所有没法长时间的利用这个Cookie。
原理
通过增加了本地电脑中的Private key,来增加了一个新的认证因素。
传统情况下,拿到cookie之后,换台电脑,仍然可以登陆,使用DBSC之后,在cookie有效期内,也依然可以登陆,所有DBSC不解决cookie有效期之内的攻击。
但是如果cookie过期了,如果是在本机上,那么Chrome就可以自动执行cookie刷新的操作,其中关键的一点,是服务端会发来一个challenge,客户端Chrome需要能够证明自己,而证明的关键点就是拥有private key,可以对challenge进行签名,由于服务端有该session对应的public key,因为可以对客户端发来的请求进行验证。而攻击者,通常情况下,只窃取了cookie,没有private key,所有攻击者没法刷新cookie。这样cookie过期之后,之内重新登陆了,无法进一步利用。
而private key由于Chrome生成之后保存到了本机安全硬件模块中,攻击者通常更难获取到private key。不过正如前面的提示所说,如果注册阶段就存在malware,那么malware是可能获取到private key的。