应用笔记 3675

利用安全认证保护您的研发成果

By: Scott Jones

摘要 : 在冒名顶替、伪造证件行为猖獗的年代,保证正确的身份识别至关重要。这不仅对个人如此,对电子产品也是如此。系统供应商需要在外有黑客攻击这样的“外患”,内有克隆硬件这样的“内忧”的环境中保护其产品的安全性。实现这些安全需求的关键是认证

本文解释了认证的概念,以及Maxim以安全存储器形式提供加密控制和保护的方案,非常适合需要知识产权保护、HW/SW许可权管理、安全软件功能与状态设置、防篡改数据存储等应用。

什么是认证?

认证是指两个或多个实体之间建立身份认可的过程。单向认证情况下,一方需向另一方证明其身份的合法性。对于双向认证,双方需要彼此向对方证明自己的身份。最常用的认证方法是利用口令实现。使用口令的主要问题是应用中口令是暴露的,极易被探测。

我们先来回顾一下加密的历史应用,1883年弗兰德斯语言学家Auguste Kerckhoffs发表了一篇关于军事加密的文章,震惊了整个世界。Kerckhoffs讲道,安全不应依靠隐匿性(例如非公开的保密算法),而应依靠算法及其密钥的力量。如果安全受到破坏,Kerckhoffs认为,只需替换密钥,而不是替换整个系统。

基于密钥的认证过程如图1所示:密钥(私密)和需要认证的数据(“信息”)作为输入,来计算信息认证码,即MAC。MAC然后附加到信息上。信息接收方进行相同的运算,将MAC计算结果与随信息一起收到的MAC比较。如果二者相同,则信息是合法的。

图1. 该MAC计算模型
图1. 该MAC计算模型

但是,这种基本MAC计算模型也有一个弱点。非法者如果截取到信息,可随后回放此信息,以仿冒合法身份。为克服这种固有的MAC弱点和证明MAC发送方的合法身份,接收方可产生一个随机数,作为质询码回送给发送方。MAC发送方必须根据密钥、信息和质询码重新计算新的MAC,并返回给接收方。如果对应任何质询码发送方都可产生有效的MAC,则可以确信发送方是知道密钥的,其身份是合法的(图2)。该过程就是质询-响应认证。

图2. 质询-响应认证过程
图2. 质询-响应认证过程

在加密学中,由信息产生固定长度MAC的算法称为“单向”散列函数。单向表示从固定长度MAC输出推演出较长的原始信息极为困难。相反,通过加密,加密的信息与原始信息是成正比的。

SHA-1是经过深入研究和国际认可的单向散列算法,由National Institute of Standards and Technology (NIST)开发。SHA-1已经发展成为国际标准ISO/IEC 10118-3:2004,算法的数学基础是公开的,并可从NIST网站获取。SHA-1算法的主要特点包括以下几点:1) 不可逆性—从计算角度讲,不可能从MAC推演出输入信息;2) 抗冲突性—对于特定MAC,找到多于一种输入信息是不现实的;3) 高雪崩效应—输入的任何变化都会使MAC结果产生巨大的变化。基于这些原因以及对该算法的国际性研究,Maxim选择SHA-1作为其安全存储器的质询-响应认证算法。

低成本安全认证—功能实现

DeepCover®安全认证器(DS28E15)借助1-Wire®接口,可以方便地加入到任何带有数字处理能力的电路中,例如带微控制器(µC)的电路。最简单的情况下,仅仅需要一个空闲的微控制器端口引脚以及一个上拉电阻即可构成1-Wire接口,如图3所示。然而,该方法存在潜在风险,即所使用的非安全微控制器会被攻击者进行分析,从而使安全保护大打折扣。

或者采用如图4所示的方法,使用DeepCover安全认证器(DS2465),该器件为集成1-Wire主机接口的SHA-256协处理器,可用于控制DS28E15。DS28E15可以在仅使用微控制器的方案中使用,而采用DS2465的好处在于:1) 将主µC从计算SHA-256的工作中脱离出来;2) 为系统SHA-256密钥存储提供高度安全保护;3) 将主µC从1-Wire波形生成的工作中脱离出来。

图3. 典型系统环境
图3. 典型系统环境

图4. 使用协处理器增强安全性
图4. 使用协处理器增强安全性

嵌入式硬件/软件授权管理

参考设计需要授权,并可能由第三方进行生产,需要防范非法使用程序代码。考虑到收入原因,还有必要跟踪和确认参考设计的使用次数。DS2432经过预先编程(在供给第三方制造商之前先装入密钥和存储器设定值),可以轻松地满足这些需求和提供更多功能。上电自检时,参考设计(图4)通过DS2432执行认证过程。只有具备有效密钥的DS2432才能成功地返回有效MAC。如果检测到无效MAC,处理器将采取相应的特定操作。这种方法还带来另外一个好处,即可以通过DS2432安全存储器的设定值有选择地授权和使能参考设计的功能。(有关此概念的更多信息,见软件功能管理一节。)

具有64位有效密钥的DS2432可通过以下两种安全方法提供给被授权者或第三方制造商:a) 由参考设计授权公司预先编程;或b) 由Maxim根据授权公司的输入信息预先编程并供货给第三方制造商。无论采用何种方法,供给被授权者或制造商的器件数量都是已知的,可据此收取授权许可费用。

图6. 认证参考设计
图6. 认证参考设计

验证硬件的合法性

验证硬件的合法性时,需要考虑两种情况(图5):1) 克隆电路板完全拷贝固件/FPGA配置信息;以及2) 克隆系统主机。

图7. 硬件认证实例
图7. 硬件认证实例

第一种情况下,固件/FPGA试图认证克隆的电路板。克隆制造商要向用户EEPROM写入数据,必须向DS2432装入密钥。尽管这使数据看似正确,而密钥在系统中却是无效的。由于改动固件/FPGA极为复杂,为保持和主机兼容,必须精确拷贝原始固件/配置信息。如果在上电阶段电路板执行DS2432质询-响应认证过程,则DS2432产生的MAC与微控制器/FPGA计算出的MAC不同。MAC不匹配充分证明电路板是不合法的。系统与电路板之间执行质询/响应过程可以检测到该失配现象,并据此采取相应的特定操作。

第二种情况下,电路板试图认证主机系统。电路板通过以下步骤验证主机的身份:1) 产生质询码,由DS2432计算质询-响应认证码MAC;2) 向网络主机发送计算MAC的相同输入数据(当然不包括密钥),主机根据这些数据和自己掌握的密钥计算并返回质询-响应认证码MAC。如果二者产生的MAC相同,则电路板断定主机是合法的。当然,如果DS2432和网络主机有约定的话,也能获得相同的MAC。

软件功能管理

电子产品涵盖手持式产品到安装于机架上的单元。单元的尺寸越大,开发的成本越昂贵。为使成本得到有效控制,利用一些较小的子系统(电路板)来构建大型系统是非常有益的。通常,应用中并不需要子系统的所有功能。最具成本效益的作法不是去除这些功能,而是保持电路板不变,仅在控制软件中禁用某些功能。但这种方法又会产生新的问题:如果聪明的客户需要一些功能完备的系统,他可以只购买一套功能完备的单元和一些功能较少的单元。通过软件拷贝,功能较少的单元就可以提供完备的功能,而价格却更低,因此欺骗了系统供应商。

每个子系统电路板上的DS2432可以保护系统供应商免受这类欺骗。除了进行质询-响应认证外,DS2432还可以在其用户EEPROM内存储独立的配置信息。配置数据可防止非法篡改,系统供应商具有完全的控制权,这一点将在数据安全一节进一步阐述。配置信息可以存储为位图形式或代码字形式,完全由系统设计者决定。根据实际需要,应尽可能简单地设置配置信息。由于DS2432提供方便的1-Wire接口,设计者只需增加一个晶体管和一个探测点,如图6所示。可以在电路板其它部分不上电的情况下,通过探测点向DS2432写入配置信息。MOSFET将DS2432与其它电路隔离,当子系统正常工作时,也不会妨碍DS2432的正常访问。

该配置写入方法还带来另一个好处,系统在用户现场安装完毕后,允许进行远程更新/更改。任何未用于配置/功能管理的用户EEPROM均可采用电子标牌的形式实现电路板标识功能。该功能在应用笔记178:"利用1-Wire产品标识印刷电路板"中进行了详细说明,此应用笔记178可从Maxim网站下载。

DS2432认证功能详细说明

器件总体架构

DS2432 1-Wire接口、1kb SHA-1安全存储器的主要数据单元和数据流路径如图7所示。可以看到8字节密钥和临时存储质询码的缓冲存储器(暂存器)。前面未曾提及的数据单元包括独一无二的器件ID号(标准1-Wire特性)、四个用户EEPROM页面、控制寄存器和系统常数。

器件ID用作1-Wire网络中的节点地址,同时还用于认证过程。用户存储器存放待认证“信息”的主要部分。系统常数有助于满足格式需求和完成填充功能,从而构成SHA-1计算的64字节输入数据块。控制寄存器执行特定的器件功能,例如可选的密钥写保护或EEPROM仿真模式;控制寄存器通常不参与认证过程。

可毫无限制地读取器件ID号和用户EEPROM。并可完全读/写访问缓冲存储器。可以直接装入密钥,但永远不能读取它。改变用户存储器或寄存器的内容要求主机和从机(即DS2432)计算出相同的写操作认证MAC,才可以打开缓冲存储器至EEPROM的路径。

取决于MAC结果的不同用途,DS2432 SHA-1引擎具有三种不同的工作方式。任何情况下,SHA-1引擎均接收64字节输入数据,并计算出20字节MAC结果。不同之处在于输入数据。作为安全系统的根本需求,主机必须要么知道、要么能够计算出应用中有效/合法从器件的密钥。

质询-响应认证MAC

正如前面的应用示例所述,DS2432的主要功能是完成质询-响应认证。主机发送一个随机质询码,指示DS2432根据该质询码、密钥、主机所选存储器页的数据、以及其它数据(这些数据共同构成信息)计算出响应MAC (见图8)。

图8. 用于生成质询-响应认证MAC
图8. 用于生成质询-响应认证MAC

DS2432完成计算后,将MAC回送给主机进行验证。主机使用有效密钥和DS2432所使用的相同信息数据重新进行MAC计算。如果该结果和DS2432给出的MAC是匹配的,则器件是合法的,因为只有合法的DS2432才能正确地响应质询-响应过程。质询码是随机数据这一点是非常重要的。如果质询码始终不变,很容易遭受一个利用有效、静态、记录和回放的MAC (不是使用认证DS2432实时算出的MAC)进行回放攻击。

数据安全

除了提供从器件的认证功能外,同时强烈要求存放在器件中的数据是可信的。为实现这一点,DS2432的写访问是安全受限的。将数据从暂存器拷贝到EEPROM或控制寄存器之前,DS2432要求主机提供写访问认证MAC来证明其合法身份。DS2432根据暂存器中的新数据、密钥、需要更新的存储器页数据、以及其它数据(图9)计算该MAC。

合法主机知道密钥并可计算出有效的写访问MAC。拷贝命令执行过程中收到主机MAC时,DS2432将其与自身计算的结果进行比较。只有当二者匹配时,数据才会从缓冲存储器传输至目标EEPROM。当然,不能修改写保护的存储器页,即使MAC是正确的。

图9. 用于计算写访问认证MAC的输入数据
图9. 用于计算写访问认证MAC的输入数据

密钥保护

DS2432的架构允许直接向器件装入密钥。可通过读保护提供密钥保护,如果需要,还可以采用写保护提供密钥保护,这将永远不能改变密钥。只要在设备制造现场访问密钥是安全和可控的,这种保护等级是很有效的。

可以采用不同方法提升密钥保护等级: a) 由DS2432计算其密钥;b) 由DS2432在不同场合分阶段计算其密钥;c) 计算密钥时包含独一无二的器件ID号,生成与器件相关的密钥;d) 组合第2和第3种方法。

如果采用上面第1种方法,每个DS2432自己计算其密钥,只知道计算密钥的原始数据;永远不会暴露密钥本身。如果采用第2种方法,密钥在不同场合分阶段计算,只知道密钥的“本地”原始数据。这种方法可有效控制“最终”密钥的信息。如果密钥是与器件相关的(第3种方法),主机还需要增加一个计算步骤。但如果一个器件的密钥被意外发现,潜在危害却可降至最低。如果密钥分阶段计算,并且与具体器件相关(第4种方法),可获得最高保护等级。但是,为确保系统保密性,主机和从机一样需要在不同地点进行设置。

计算密钥之前,必须先装入一个已知数值作为密钥。有了这个已知密钥,必须向四个存储器页之一写入计算新密钥的32字节数据。接下来,需要向DS2432的暂存器写入一个局部密钥。局部密钥可以是用于计算的存储器页码和独一无二的器件ID号(CRC字节除外),或任何其它与应用相关的8字节数据。

如果指示DS2432计算密钥,则DS2432启动SHA-1引擎,使用图10所示的输入数据计算MAC。20字节MAC的最低8个字节自动拷贝到密钥存储器地址,立即成为有效密钥。

图10. 计算密钥的输入数据
图10. 计算密钥的输入数据

结论

了解安全认证功能并巧妙实现,可提供极具竞争力的优势。认证不但保护了程序代码,而且公共硬件平台利用安全的软件功能设置有助于降低生产成本。DS2432的数据安全性甚至可以实现远程配置修改,节省了技术人员的宝贵时间。从DS2432所展示的功能可以看出,一个小小的硅晶片将对收益产生巨大的影响。