协议(5)

3.3.1  质询与应答

现今的大多数汽车都使用了遥控型门锁,大多数汽车同时还使用了可备用的金属钥匙,以便在充满噪声的环境中仍能保证车主能进入汽车。很多使用了更复杂的两步协议,一般称为“质询-应答”协议,以便对发动机启动进行实际的身份验证。车钥匙插入驾驶锁时,发动机控制器向钥匙发出一个短程无线质询信号,内容是n位随机数。之后,汽车钥匙对质询信号进行加密,计算出一个应答信号。如果用E表示发动机控制器,T表示钥匙上的应答器,K表示在应答器和发动机控制器之间的共享密钥,N表示随机质询信息,则协议可以写成下面的形式:

E→   T:N

T→   E:{T,?N}K

这仍然不够安全。

在系统中,由发动机管理单元生成的随机数实际上是可预测的,因此窃贼可能向车主口袋中的钥匙发送他预测的下一个质询信号,如果过关,就完成了部分身份验证功能。实际上,很多包含了加密机制的产品都不时地被破解,原因就在于其随机数生成器还不够随机[533、395]。不同的应用程序采用了不同的策略来修复这一问题。使用放射性衰减的方法可以制造硬件随机数生成器,但是因为对健康与安全性等方面的衡量而没有广泛采用。在PC等大系统中,可用的随机性来源有多种,比如,空气湍流给硬盘旋转速度带来的微小扰动[358]。PC软件产品通常会混合使用来自多种环境源的随机性,比如网络流量与按键时间,以及源于内部系统的随机性[567],这些随机因素的结合方式通常是关键因素[703]。但在典型的嵌入式系统中(比如车锁),随机质询信号是使用特殊密钥对计数器加密生成的,该密钥保存在设备中,没有其他任何用途。

“质询-应答”协议不仅应用在锁上。在HTTP 摘要身份验证中,Web服务器向客户端或代理发送质询信息(Nonce),并与其共享密码。相应的应答信息则包含Nonce的哈希结果、密码以及请求的URI[493]。这种机制不会受到密码嗅探攻击,可以用在SIP协议(语音电话中使用的协议)中对客户端与服务器进行身份验证,这比明文发送密码要好一些,但仍然存在很多弱点,其中最严重的是中间人攻击,稍后将对其进行讨论。

在双因素身份验证(two-factor authentication)中,“质询-应答”协议的使用更直观。很多机构都给员工发放密码生成器,以便登录公司的计算机系统[1354]。这些密码生成器看起来像计算器(有些甚至可以当计算器用),但其主要功能如下:当要登录到网络上某台机器时,登录屏幕给出一个大约7位数的随机信息,你需要把这个数键入密码生成器中,同时键入大约4位数的PIN。之后,密码生成器会用与公司安全服务器共享的密钥对这11位数加密,然后显示出结果的前7位数,这7位数就是员工的登录密码。该协议在图3-1中进行了说明。如果有包含恰当密钥的密码生成器、PIN输入正确、密码结果输入无误的话,公司计算机系统就会允许进入。但如果没有真正的密码生成器并知道其PIN,就不太可能成功登录。

读书导航