在本书第一版中讲述这一故事并正式出版后,一位前SA通信安全机构的军官联系了我,并对这个故事的一些细节有所异议。该军官声称,在安哥拉战争期间,他们的IFF装备中尚未使用加密机制,并且在穿越敌方的领空时总是关闭的,他据此声称,该次战争中的任何电子欺骗都是很原始的。然而,其他一些人告诉我,在多次中东冲突中,米格中间人攻击这种形式都发挥过重大作用。
无论哪种情况,这一故事都勾勒出了密码学领域广为人知的中间人攻击(man-in-the-middle,近期也称为middleperson)的基本思路。对通过密码计算器执行的“质询-应答”身份验证方式,中间人攻击可以直接进行:钓鱼站点邀请目标登录并开启其与银行之间的登录会话,银行发送一条质询信息,钓鱼者向目标重放这一信息,目标则使用自己的设备对其进行应答,钓鱼者将这条应答信息重放给银行,从而达到以目标身份通过银行身份验证的目的。这也是为什么欧洲的一些银行在进行应答时,不仅需要提供质询信息,还需要提供身份验证码的原因所在,身份验证码是基于一些输入字段(比如总额、收款人账号、交易序列号等)计算出来的。
然而,如果通过包含所有交易数据对协议层漏洞进行修补,可用性就成为一大问题。如果需要花费两分钟的时间和十几个条目的数字才能完成一次支付,大量客户将会出错、放弃支付,之后或者致电呼叫中心,或者使用纸质的支票。而攻击者也会趁机对回退机制进行攻击,比如欺骗客户拨打语音钓鱼电话,并在客户与呼叫中心之间开展中间人攻击。
在从付费电视到Internet安全协议等多种应用中,我们会不断看到中间人攻击的存在。中间人攻击甚至还应用到在线游戏上。像数学家John Conway曾经说的那样,网上下棋击败大师是容易做到的:只要同时和两位大师比赛,一个执白棋,另外一个执黑棋,并重放每一个步骤(实际上是让大师之间进行对弈)。
在很多情况下,中间人攻击可行但不合算。比如车钥匙的案例,让同伙跟踪司机,并通过电子方式将无线质询信号重放到窃贼那里(我的一个学生以实验室的RFID门锁为目标,实际展示了这种攻击过程)。但是对一般的汽车窃贼来说,偷走司机的包或干脆抢过来会更简单。
2007年早期,出现了针对EMV智能卡(发行给很多欧洲的银行客户)所使用的协议的中间人攻击。攻击者可以构建一个用来诈骗的恶意终端,比如停车收费器,当你输入卡号与PIN来支付2.50英镑的停车费时,在五金店的自助终端前等待机会的不法分子就可以重放交易数据,并订购货物,在拿到结算单后,你会发现你已经付了一笔2500英镑的宽银幕TV费用[915]。这里,基本的问题是卡上缺少可信的用户接口,持卡人并不真正知道自己的银行卡在与哪一个业务终端进行交易。第10章将深入讨论这种攻击。