钻CRL的空子进行攻击(一)

从公钥失效到Alice收到证书作废清单(CRL)需要经过一段时间,主动攻击者可以利用CRL发布的时间差来发动攻击。

某天深夜,攻击者入侵了Bob的电脑,窃取了Bob的私钥。接下来,攻击者伪装成Bob给Alice写了一封邮件,邮件中要求Alice把钱转账给攻击者的账户。当然,攻击者使用了刚刚窃取到的私钥对邮件进行了数字签名。

钻CRL的空子进行攻击(一)_第1张图片

第二天早上,Bob发现自己的电脑被入侵,而且私钥被盗,于是Bob马上联系认证机构Trent,通知自己的公钥已经失效。

接到这个消息,Trent将Bob的密钥失效一事制成CRL并发布出来。

另一方面,Alice收到了Bob(其实是攻击者伪装)发来的邮件,于是准备向指定账号转账。不过在此之前,Alice需要验证数字签名。她用Bob的公钥进行验证,结果成功了,而且Bob的公钥带有认证机构Trent颁发的证书。于是Alice相信了邮件的内容,进行了转账操作,过了一段时间,Alice收到认证机构Trent发布的最新版CRL,发现Bob的证书其实已经失效了。

要防御上述利用CRL发布的时间差所发动的攻击是非常困难的。在上面的故事中,Bob察觉到自己的私钥被盗了,但实际上,大多数情况下都是发现自己没有签名的文件上附带了签名时,才发现私钥被盗的。即使Bob用最短的时间通知Trent,发布CRL也是需要时间的,在这段时间内,攻击者完全可以为所欲为。况且,等Alice真的收到CRL又要经过一段时间。

因此,对于这种攻击的对策是:

  • 当公钥失效时尽快通知认证机构(Bob)
  • 尽快发布CRL(Trent)
  • 及时更新CRL(Alice)
  • 在使用公钥前,再次确认公钥是否已经失效(Alice)

你可能感兴趣的:(安全)