应用笔记 1098

白皮书3:为什么1-Wire SHA-1器件是安全的?


摘要 : 本文介绍了SHA-1器件可能受到的攻击,以及如何利用SHA-1器件本身特点或推荐的方案来防止可能遭受的攻击,说明了1-Wire®及iButton® SHA-1器件的安全性。对于各种类型的服务应用(包括访问控制和电子钱包)来说,1-Wire器件的数据和硬件认证是关键所在。1-Wire/iButton SHA-1器件是移动式令牌,可以基于随机质询使用加密性能完善的散列算法生成信息认证代码(MAC),因此,是上述服务应用的理想选择。

引言

在阅读本文之前,请先回顾白皮书8:1-Wire SHA-1概述。该文中也介绍了一些作为电子支付(eCash)令牌的1-Wire SHA-1器件。

本文介绍了1-Wire器件可能受到的攻击,以及如何利用1-Wire器件本身特点或推荐的方案来防止可能遭受的攻击(为清晰起见,专用术语、命令或代码以斜体字表示)。术语汇编见白皮书4: Glossary of 1-Wire SHA-1 Terms

攻击

什么是攻击? 攻击是所有恶意破坏并意图欺骗系统的行为。其动机因提供的不同服务而异。在电子支付系统(如自动售货机)中, 其动机也许是免费小吃。如果攻击针对的是一个顶级机密实验室的访问控制,动机也许完全不同。以下攻击方式大致按难度由简单到困难排列。所有这些攻击均假设攻击者均具有合法用户令牌(即服务的一部分)的访问,这意味着设定了正确的认证密码并且器件中的数据是合法的。

复制攻击

复制攻击通过把合法的服务数据从一个器件(是服务的一部分)复制到另一个器件(也许是,也可能不是服务的一部分)来实现。如果安装了正确的认证密码,则器件是服务的一部分。这种攻击的目的是获取一个合法令牌,并据之生成另一个,如此便生成了两个合法令牌。这样可将诸如身份或货币值(eCash)之类的属性复制到另一个器件中,从而创造更多的货币或获得原先没有的访问权限。

条件 器件 防御攻击的方式
目标器件是系统的一部分(认证密码正确)。 DS1963S, DS1961S, DS2432, DS28E01 由于目标器件的认证密码未设置成正确值,因此无论是什么数据,器件都将不被服务接受。
目标器件是系统的一部分(认证密码正确)。 DS1963S 目标器件将通过认证测试。然而,借助于嵌套在服务数据中的另一个MAC码(信息认证代码),即该MAC (服务数据签名)把令牌的ROM ID作为SHA-1计算的一部分,就会由于目标器件有不同的ROM ID,因此数据将被认为无效并且器件将被拒绝。
目标器件是系统的一部分(认证密码正确)。 DS1961S, DS2432, DS28E01 向目标器件写数据时需要正确的MAC。由于攻击者不知道密码,因此不可能向器件写数据。

复现攻击

复现攻击的攻击者采用拷贝合法器件的生成服务数据的方法来实施攻击。然后攻击者用尽eCash或其它应用领域。再将保存的数据复制回器件。这样,原始数据被复现

条件 器件 防御攻击的方式
DS1963S 用来存放安全数据的每个页都有一个只读、非循环的写页面次数计数器。当器件仍用正确密码生成认证MAC时,嵌套在服务数据中的另一个MAC (服务数据签名)将会无效。该MAC包括它所在的写页面次数计数值和页数。将原始数据写回该页或其他页都将无效。即使重写同样的数据也将无效,因为写页面次数计数器将增加。
DS1961S, DS2432, DS28E01 目标器件有写保护特性,向其复制数据时需要正确的MAC。由于攻击者不知道密码,因此向该器件复制数据是不可能的。

窃听攻击

窃听攻击是一种监测1-Wire通信以暴露密码或可以被复制的重复码型技术。

条件 器件 防御攻击的方式
在合法交易中监控并记录1-Wire通信。 DS1963S, DS1961S, DS2432, DS28E01 当认证器件核实其是否属于服务的一部分时,MAC计算包括一个随机质询机制。该随机值(salt)大大改变了每次交易过程中1-Wire通信的流量。另外,除了在受保护环境下安装密码外,密码决不会出现在1-Wire总线上。

A-B-A攻击

A-B-A攻击试图使两种不同的货币SCU (服务控制单元)彼此互相干预,以欺骗它们提供更多产品然后做为补偿。这种A-B-A攻击先将令牌给予第一个SCU “A”。然后在支付现金之前将其去除,但应足够接近末端以使SCU认为它是完整的只是没有经过认证。这可通过监测1-Wire通信来实现,并能在适当的时候中止该过程。然后SCU “A”将等待令牌被再引入,以核实支付行为是否完整。然后令牌被提供给另一个SCU “B”,完成一次完整的现金支付过程并生成产品。然后令牌回到第一个SCU “A”,证明交易完成。这会使“A”误以为它完成了现金支付并再次提供产品。这样一来,仅用一次支付便获得了两个产品。

条件 器件 防御攻击的方式
SCU “A”上的交易必须在限定时间内被终止。 DS1963S, DS1961S, DS2432, DS28E01 被称为交易ID的随机值是服务数据的一部分,它使每次支付事件唯一。当返回SCU“A”以核实此次支付是否进行完时,由于交易ID不正确,行动将失败。

仿真攻击

利用微处理器仿真1-Wire令牌。仿真器必须足够快,才能达到与实际器件接近的1-Wire主机响应速度。如下所示,只要攻击者不知道认证密码,就没有危险性。将ROM ID作为密钥计算的一部分,使器件具有唯一的认证密码(唯一认证密码),可进一步降低系统风险。

条件 器件 防御攻击的方式
认证密码未知。 DS1963S, DS1961S, DS2432, DS28E01 模拟器件不能针对给定质询生成正确的MAC。因此不会被接受作为服务的一部分。
认证密码已知。 DS1963S, DS1961S, DS2432, DS28E01

尽可能用最快的数据速率同SHA器件通信。1-Wire主机(SCU)希望在1ms至2ms内完成SHA计算。这会使构建这样的模拟器非常困难。

永远不要暴露认证密码。

蛮力攻击(MAC)

蛮力攻击是对所有可能性进行穷举以取得想要的结果。这种攻击的MAC有所不同,包括枚举所有质询响应对,并将结果保留在数据库中以供模拟器使用。这需要访问合法的、属于服务一部分的1-Wire器件。随机质询是三个字节长(DS28E01是五字节长),可能的质询响应对的数量超过160万(DS28E01的质询响应对为1.1 × 1012)。由于计算出的SHA-1 MAC长度是20个字节,因此3字节质询生成的数据为:0xFFFFFF (质询) × 20 (MAC的大小) = 335,544,300个字节(320MB)。从而生成预先计算MAC查寻表,供模拟器使用。

条件 器件 防御攻击的方式
动态数据(如eCash)。每当器件出现时,生成并写入带有服务数据签名的新服务纪录。 DS1963S, DS1961S, DS2432, DS28E01 在将新服务纪录写入令牌之后,必须对其进行重读和认证。对新服务纪录的认证有可能发现不同的MAC,模拟器必须也知道这一点。服务纪录应包含被称为随机的交易ID,这样模拟器将不能预计新服务纪录是什么,从而不能蛮力攻击新MAC。
静态数据。数据不变,仅被认证。 DS1963S, DS1961S, DS2432, DS28E01 在认证完静态数据之后,给未使用的页写随机数据并以该页开始做另一次认证。模拟器不会知道新的MAC。

蛮力攻击(密码)

密码蛮力攻击指枚举所有可能的密码,直到生成正确的MAC。作为服务一部分的令牌提供了什么是正确的MAC。如果发现了密码,只要有能在1ms内进行杂散运算的SHA-1协处理器,就可将它用在模拟器上。密码长度是八个字节(FFFFFFFFFFFFFFFF十六进制)。如果在快速计算机上计算SHA-1需要1ms,那么枚举所有密码估计需要58万年。

条件 器件 防御攻击的方式
超强计算能力和无限时间。 DS1963S, DS1961S, DS2432, DS38E01 各器件使用唯一的密码(唯一认证密码),从而减轻了问题的严重性。这通过将器件的唯一ROM ID作为生成密码的一部分数据来实现。如果发现了密码,系统不会整个崩溃。只有拥有该特定ROM ID的器件可以被模拟。把该ROM ID列入黑名单将防止攻击者对其它器件进行另一次蛮力攻击。

微探针物理攻击(密码)

物理攻击是试图刺探内部硅晶片以读取唯一认证密码的攻击方式。这一点很难做到,相比EEPROM器件,NV RAM器件(DS1963S)的难度更大。1-Wire SHA-1器件的iButton版本也增加了保护层,借助其封装免受探针攻击。硅晶片被保护在不锈钢外壳里。如果把DS1963S中的电池拿走,即使只是很短的一段时间,内部的密码也会被清除。进行蛮力攻击时,如果发现了密码,则它能被用在模拟器上,以获取服务中的合法器件的行为信息。然后可用该模拟器件来复现原先的数据(如eCash)。这种攻击的条件和部分解决方案同上文所述的蛮力密码攻击是一样的。

主机/SCU攻击(密码)

对进行认证的1-Wire SCU进行探查,以获取主机认证密码主机签名密码

条件 器件 防御攻击的方式
必须有访问SCU的物理权限。 可保证SCU的安全。例如,用一个不允许读固件的安全微处理器,如DS5002。
必须有访问SCU的物理权限。 DS1963S作为协处理器 较理想的解决方案是把DS1963S作为“协处理器”,用于SCU中的器件认证和数据确认。探测时可保证密码安全。但是,如果填充数据(原始签名)已知,该协处理器可被用来生成合法的服务数据签名

竞争者攻击

竞争者攻击是试图通过故意破坏数据,人为地使系统名誉受损的攻击方式。

条件 器件 防御攻击的方式
令牌必须提供给恶意攻击者。 DS1963S 所有使令牌无效的数据都可被重写。然而,通过检查与之相联系的写页面次数计数器可以检测到写密码操作。如果器件与正确数据及密码一起重新装入,则它可以被重复利用。
令牌必须提供给恶意攻击者。 DS1961S, DS2432, DS28E01 目标器件具有保护特性,向用户存储器写数据时需要正确的MAC。由于攻击者不知道密码,因此写器件是不可能的。目标器件也有针对密码的写保护机制。为防止攻击者重写密码,该特性必须使能。

结束语

数据和硬件认证是各种服务应用(包括访问控制和电子货币)的关键所在。移动令牌可以基于随机质询并使用加密性能好的杂散生成信息认证代码(MAC),是上述应用的理想选择。Maxim的1-Wire SHA-1器件提供了一种经济且坚固的解决方案。