协议(10)

3.3.3  反射攻击

在交互式身份验证中,也即两个主体必须互相识别对方时,出现了很多有趣的问题。比如,为防止防空炮手攻击己方飞机而设计出的简单“质询-应答”型IFF系统,也必须在轰炸机上进行部署。现在,假设空军在每架飞机上安装了一个炮手质询设备,并将其连接到火力控制雷达上。但是,敌方轰炸机可以将质询信号反射给我方战斗机,获得了正确应答后,再将其作为自己的应答反射回来:

F→B:N

B→F:N

F→B:{N}K

B→F:{N}K

因此,我们要将质询系统与应答器整合在一起。将这两个装置连在一起并共享质询信息列表是不够的,因为如果敌人被我方两架飞机攻击,就可能将其中一架飞机向另一架飞机发出的质询反射回来。在战斗中,人们都不希望从“进攻”转换为“防守”。

有很多方法可以阻止这种“反射攻击”:在很多情况下,进行身份验证交换时只要包含双方的名称就足够了。在前面的例子中,对于质询F→B:N,己方的轰炸机应答如下:

B→F:{B,N}K

这样,就可以检测出反射的应答{F,N}(甚或还有战斗机驾驶员发出的{F′,N})。

这是一种做了大量简化的IFF,但可以用来阐明身份验证协议中的各种信任假设的微妙之处。如果你发出了一个质询信号N并在20毫秒内收到了应答{N}K,那么,由于光在20毫秒内可以传播3730英里,你就可以知道在2000英里内有人拥有密钥K。但是你所知道的也仅限于此。如果你确信这个应答不是用自己的设备计算出来的,那你就知道在2000英里内还有其他人拥有密钥K。如果你进一步假设,密钥K的所有副本都掌握在足以信任的设备上,并且看到了{B,N}K,就可以推断出带有呼号B的战斗机位于2000英里以内。对信任假设及其后果的清晰理解是设计安全协议的核心。

到现在为止,你可能认为本书已经全面讲解了IFF协议设计的各个方面。但是我们忽略了一个最重要的问题,也是早期IFF系统设计者没有预料到的一个问题。由于雷达的返回信号比较弱,战斗机上的IFF发射器发射的信号往往比返回信号传送得更远。盟军很艰难地认识到了这一问题。1944年1月,破译的Enigma消息表明,德军正采用在两倍正常雷达测距外向美英轰炸机发送质询信号的方法对盟军飞机进行欺骗。因此,很多现代系统对质询信号和应答信号都进行验证。比如,北约XII模式采用32位的加密质询信号,对每次提问都生成一个不同的有效质询信号,典型情况下是每秒250次。理论上,在敌方领域内并不需要切断信号,但在实际中,记录下有效质询信号的敌方可以对其进行重放,这是攻击的一个组成部分。重放攻击也是可能的,就像米格中间人攻击那样。

还有很多IFF设计问题与协议关系不大,比如,中立引起的困难、密集运营环境中的错误率、如何处理设备故障、如何管理密钥以及怎样应付多国联合等,这些情况在“沙漠风暴”行动中集中体现。第19章还会讲到IFF。至于现在,质询欺骗问题强调了一个关键点:安全协议的正确性依赖于对需求的假设。如果协议可以阻止一种攻击(被己方打死),但是增大了暴露在危害更大的攻击之下(被敌方打死)的可能性,那么这样做就弊大于利。事实上,在二战中质询欺骗问题实在是太严重了,因此很多专家提倡宁可摒弃整个IFF,也不愿冒险让几百架轰炸机的编队中可能有一个飞行员在飞经敌军区域时打开了IFF。

读书导航