首页 / 专利库 / 软件 / 软件 / 安全软件认证及验证

安全软件认证及验证

阅读:315发布:2020-11-26

专利汇可以提供安全软件认证及验证专利检索,专利查询,专利分析的服务。并且在首次载入 软件 以供装置执行时,认证存储在非安全 存储器 件中的所述软件。认证所述软件可涉及对所述软件及所述软件的数字签名的密码编译操作。如果对所述软件的认证成功,那么可产生用于所述软件的验证标签,所述验证标签是基于所述软件及至少装置特定秘密数据。所述验证标签可存储在所述装置内。随后每当载入所述软件以供执行时,可通过使用所述验证标签来验证(并非认证)所述软件,以确认正在载入的所述软件与用以产生所述验证标签的软件相同,同时避免对所述软件的认证。,下面是安全软件认证及验证专利的具体信息内容。

1.一种用于在载入于装置内期间验证软件的方法,其包括:
在所述装置处获得存储在在所述装置内或在所述装置外部的非安全存储器件中的软件;
尝试在载入所述软件以供执行时,通过使用预先产生的验证标签来在所述装置的验证标签比较器电路处验证所述软件,以确认正在载入的所述软件与用以产生所述预先产生的验证标签的软件相同,同时避免对所述软件的认证;
如果验证失败或无预先产生的验证标签可用,那么
在载入所述软件以供所述装置执行时在软件认证电路处认证所述软件,
如果对所述软件的认证成功,那么在所述装置的验证标签产生器电路处产生用于所述软件的新验证标签,所述新验证标签是基于所述软件、装置特定秘密数据,及包含来自一或多个可一次熔断熔丝的一或多个状态的装置数据,其中每当获得所述软件的新版本时,使所述一或多个可一次熔断熔丝中的至少一个熔断以改变所述装置数据,及在存储装置处存储所述新验证标签;且
其中与认证所述软件相比,验证所述软件花费较少的时间及/或资源。
2.根据权利要求1所述的方法,其中从对所述软件的先前认证获得所述预先产生的验证标签。
3.根据权利要求1所述的方法,其进一步包括:
在所述软件认证电路处认证所述软件且在所述验证标签产生器电路处产生所述预先产生的验证标签;及
在所述存储装置处存储所述预先产生的验证标签以供在对所述软件的后续验证中使用。
4.根据权利要求1所述的方法,其中认证所述软件涉及对所述软件及所述软件的密码编译签名的密码编译操作。
5.根据权利要求1所述的方法,其中认证所述软件包含使用对所述软件的签名使用公共密钥认证所述软件。
6.根据权利要求1所述的方法,其中产生所述新验证标签包含产生关于所述软件且使用所述装置特定秘密数据的消息认证码MAC。
7.根据权利要求1所述的方法,其中所述装置特定秘密数据仅对所述装置已知。
8.根据权利要求1所述的方法,其中所述装置特定秘密数据在所述装置外部不可存取。
9.根据权利要求1所述的方法,其中将所述预先产生的验证标签及/或所述新验证标签存储在在所述装置内或在所述装置外部的所述非安全存储器件或不同的非安全存储器件中。
10.根据权利要求1所述的方法,其中所述软件是在所述装置的开机时间载入的操作系统的部分。
11.根据权利要求1所述的方法,其中基于在所述装置内的物理不可复制函数获得所述装置特定秘密数据。
12.根据权利要求1所述的方法,其进一步包括:
如果对所述软件的认证失败,那么在所述装置处中止所述软件的执行。
13.根据权利要求1所述的方法,其进一步包括:
如果对所述软件的所述验证成功,那么在所述装置处执行所述软件。
14.根据权利要求1所述的方法,其进一步包括:
在所述装置处获得所述软件的新版本;
在载入所述软件以供所述装置执行时在所述软件认证电路处认证所述软件的所述新版本,
如果对所述软件的所述新版本的认证成功,那么在所述验证标签产生器电路处产生用于所述软件的所述新版本的另一验证标签,所述另一验证标签是基于所述软件的所述新版本、所述装置特定秘密数据及发生改变的装置数据,及
在所述存储装置处存储所述另一验证标签。
15.根据权利要求14所述的方法,其进一步包括:
尝试在载入所述软件以供执行时,通过使用所述另一验证标签来在所述验证标签比较器电路处验证所述软件的所述新版本,以确认正在载入的所述软件的所述新版本与用以产生所述另一验证标签的所述软件的版本相同,同时避免对所述软件的所述新版本的再认证。
16.根据权利要求14所述的方法,其中所述新验证标签是另外基于可撤销凭证,且所述方法进一步包括:
在执行所述软件之前在所述装置处确定所述可撤销凭证是否仍为有效的。
17.一种用于验证软件的装置,所述装置包括:
存储装置,其用于存储认证及验证指令;
处理电路,其耦合到所述存储装置,所述处理电路经配置以:
获得存储在在所述装置内或在所述装置外部的非安全存储器件中的软件;
尝试在载入所述软件以供执行时,通过使用预先产生的验证标签来验证所述软件,以确认正在载入的所述软件与用以产生所述预先产生的验证标签的软件相同,同时避免对所述软件的认证;
如果验证失败或无预先产生的验证标签可用,那么在载入所述软件以供所述装置执行时认证所述软件,
如果对所述软件的认证成功,那么产生用于所述软件的新验证标签,所述新验证标签是基于所述软件、装置特定秘密数据,及包含来自一或多个可一次熔断熔丝的一或多个状态的装置数据,其中每当获得所述软件的新版本时,使所述一或多个可一次熔断熔丝中的至少一个熔断以改变所述装置数据,及
存储所述新验证标签;且
其中与对所述软件的认证相比,对所述软件的验证花费较少的时间及/或资源。
18.根据权利要求17所述的装置,其中所述处理电路进一步经配置以:
认证所述软件且产生所述预先产生的验证标签;及
存储所述预先产生的验证标签以供在对所述软件的后续验证中使用。
19.根据权利要求17所述的装置,其中所述预先产生的验证标签及/或所述新验证标签存储在在所述装置内或在所述装置外部的所述非安全存储器件或不同的非安全存储器件中。
20.根据权利要求17所述的装置,其中所述装置特定秘密数据在所述装置外部是未知的且不可存取。
21.一种用于验证软件的装置,所述装置包括:
用于获得存储在在所述装置内或在所述装置外部的非安全存储器件中的软件的装置;
用于尝试在载入软件以供执行时,通过使用预先产生的验证标签来验证所述软件,以确认正在载入的所述软件与用以产生所述预先产生的验证标签的软件相同,同时避免对所述软件的认证的装置;
用于在验证失败或无预先产生的验证标签可用的情况下,在载入所述软件以供所述装置执行时认证所述软件的装置;
用于在对所述软件的认证成功的情况下产生用于所述软件的新验证标签的装置,所述新验证标签是基于所述软件、装置特定秘密数据,及包含来自一或多个可一次熔断熔丝的一或多个状态的装置数据,其中每当获得所述软件的新版本时,使所述一或多个可一次熔断熔丝中的至少一个熔断以改变所述装置数据,及
用于存储所述新验证标签的装置;且
其中与认证所述软件相比,验证所述软件花费较少的时间及/或资源。
22.一种用于验证软件的装置,所述装置包括:
存储装置,其用于存储认证及验证指令;
处理电路,其耦合到所述存储装置,所述处理电路经配置以:
获得存储在在所述装置内或在所述装置外部的非安全存储器件中的软件;
尝试在载入所述软件以供执行时,通过使用预先产生的验证标签来验证所述软件,以确认正在载入的所述软件与用以产生所述预先产生的验证标签的软件相同,同时避免对所述软件的认证;
如果验证失败或无预先产生的验证标签可用,那么在载入所述软件以供所述装置执行时认证所述软件,
如果对所述软件的认证成功,那么产生用于所述软件的新验证标签,所述新验证标签是基于所述软件、装置特定秘密数据,及包含来自一或多个硬件组件的一或多个状态的装置数据,其中每当获得所述软件的新版本时,所述装置数据会改变,且其中当产生所述新验证标签时,所述装置数据不会重复,及
存储所述新验证标签;且
其中与对所述软件的认证相比,对所述软件的验证花费较少的时间及/或资源。

说明书全文

安全软件认证及验证

[0001] 相关申请案的交叉引用
[0002] 本申请案主张2015年4月15日在美国专利商标局提交申请的非临时申请案第14/687,783号的优先权及权益,所述非临时申请案的全文以引用的方式并入本文中。

技术领域

[0003] 本文中所公开的各种特征大体涉及对软件的认证以减少对缺少安全存储器件的装置中的软件的黑客攻击,且更特定地说,涉及一种在首次执行软件时执行软件认证且此后执行更高效的软件验证的方法。

背景技术

[0004] 例如移动电话、移动装置、呼叫器、无线调制解调器个人数字助理、平板计算机、个人信息管理器(PIM)、个人媒体播放器、掌上型计算机、膝上型计算机或具有处理器的任何其它装置的装置正变得愈来愈行且普遍存在。在此类装置处产生、键入、存储及/或接收的数据应被保护,以免受到未经授权的存取。对装置中的数据的未经授权存取的一种此类风险包含:在所述装置上执行的软件可能已经被修改(例如,被黑客攻击),从而准许此类未经授权的存取。因此,应认证在装置上操作的软件以确保其未被修改。对装置上的软件的认证用以防止经修改软件在那些装置上执行。即,可在载入软件时,在执行之前认证所述软件,以验证所述软件未被破解(例如,被修改)。软件认证在装置不具有用以安全地存储软件的安全或受信任内部存储器件的情况下尤其重要。软件开发人员可使用密码术用数字方式对其软件进行签名,随后将所述软件散发到装置。在使用对称密钥对软件进行签名的情况下,各装置接收此类对称密钥以认证软件。然而,对所有装置上的软件使用同一对称密钥是有风险的,这是因为如果破解了单个装置而获得此类对称密钥,那么会暴露所有其它装置。尽管可使用按装置的对称密钥来对各装置的软件进行签名,但此方法可需要管理大量对称密钥且因此实施起来繁重。或者,可使用私密/公共密钥密码术,其中用私密密钥对软件进行签名且将对应公共密钥散发到装置以认证软件。然而,使用公共密钥进行认证是处理密集的,且对于诸多低功率或具有极小处理能/资源的装置而言是困难的。因此,私密/公共密钥方法并非切实可行的解决方案。
[0005] 因此,需要一种准许有效地认证在具有不同处理能力的装置上操作的软件的解决方案。发明内容
[0006] 第一方面提供一种用于在载入于装置内期间验证软件的方法。获得存储于在所述装置内或在所述装置外部的非安全存储器件中的软件。在一个实例中,所述软件可为在所述装置的开机时间载入的操作系统的部分。当载入软件以供执行时,可尝试通过使用预先产生的验证标签来验证软件,以确认正在载入的软件与用以产生预先产生的验证标签的软件相同,同时避免对软件的认证。可从对软件的先前认证获得所述预先产生的验证标签。如果验证成功,那么执行软件。
[0007] 否则,如果验证失败或无预先产生的验证标签可用,那么在载入软件以供装置执行时认证所述软件。应注意,与认证软件相比,验证所述软件可为费时较少的及/或资源密集程度较低的。如果对软件的认证成功,那么基于所述软件及装置特定秘密数据产生用于所述软件的新验证标签。所述秘密数据可仅对所述装置已知及/或在所述装置外部不可存取。举例来说,可基于所述装置内的物理不可复制函数获得秘密数据。接着可存储614新验证标签。在一些实例中,可将预先产生的验证标签及/或新验证标签存储于在所述装置内或所述装置外部的非安全存储器件或不同的非安全存储器件中。
[0008] 在一个实例中,可认证软件,且在成功认证后,就可产生预先产生的(例如,初始、第一、先前,等)验证标签。可存储预先产生的验证标签以供在对软件的后续验证中使用。
[0009] 在一个实例中,认证所述软件可涉及对软件及软件的密码编译签名的密码编译操作。举例来说,认证所述软件可包含使用对软件的签名使用公共密钥认证所述软件。
[0010] 在另一实例中,产生新验证标签可包含产生关于软件且使用装置特定秘密数据的消息认证码(MAC)。
[0011] 在一些实施中,可基于每当获得软件的新版本时发生改变的装置数据而另外产生新验证标签。当产生用于装置中的软件的新验证标签时,装置数据可从不重复。
[0012] 如果对软件的认证失败,那么中止软件的执行。在一个实施中,仅当对软件的验证成功或对软件的认证成功时才执行所述软件。
[0013] 可获得软件的新版本。可在载入软件以供装置执行时认证软件的新版本。如果对软件的新版本的认证成功,那么产生用于软件的新版本的另一验证标签(例如,第二验证标签),其中所述另一验证标签可基于所述软件的所述新版本以及至少装置特定秘密数据或另一装置特定数据。还可存储所述另一验证标签以供后续使用。随后,可在载入软件以供执行时,通过使用所述另一验证标签来验证软件的新版本,以确认正在载入的软件的新版本与用以产生所述另一验证标签的软件的版本相同,同时避免对所述软件的新版本的再认证。
[0014] 根据另一特征,验证标签可另外受可用以停用验证标签的可撤销凭证束缚。举例来说,可在执行验证时由装置检查所述可撤销凭证。所述装置可查询凭证撤销数据库,且验证将在已经撤销所述凭证的情况下失败。因此,即使软件未经修改,在已经撤销对应凭证的情况下,验证仍将失败。
[0015] 另一方面提供一种经配置以在执行之前执行混合式软件认证与验证的装置。所述装置可包括存储装置及处理电路。所述存储装置可用以存储认证指令及/或验证标签产生指令以及验证标签比较指令。所述处理电路可经配置以获得(例如,经由总线或从通信接口检索、读取,等)储存于在装置内或在装置外部的非安全存储器件中的软件。
[0016] 验证标签比较器模/电路可用以尝试在载入软件以供执行时,通过使用预先产生的验证标签(例如,存储在软件验证标签当中)来验证软件,以确认正在载入的软件与用以产生验证标签的软件相同,同时避免对软件的认证。如果验证失败或无预先产生的验证标签可用,那么软件认证模块/电路可用以在载入软件以供装置执行时认证所述软件。如果对软件的认证成功,那么验证标签产生器模块/电路可用以基于软件及装置特定秘密数据而产生用于软件的新验证标签。新验证标签接着可存储在一或多个软件验证标签当中。此过程达成效率上的改进,这是因为与对软件的认证相比,对软件的验证是费时较少的及/或资源密集程度较低的。因此,尽管认证最初可消耗较多时间或资源,但软件的后续载入由于使用验证而非认证是较迅速且高效的。
[0017] 所述装置还可包含耦合到处理电路的多个一次熔断熔丝,其中另外基于来自所述一次熔断熔丝的状态而产生新验证标签及/或预先产生的验证标签,且每当获得软件的更新版本时,所述多个一次熔断熔丝发生改变。附图说明
[0018] 图1说明用于认证在具有有限处理资源的主机装置上的软件的示范性方法。
[0019] 图2为说明经调适以执行软件认证的示范性主机装置的框图
[0020] 图3说明用于执行混合式软件认证与验证的第一示范性方法。
[0021] 图4(包括图4A及4B)说明用于执行混合式软件认证与验证的第二示范性方法。
[0022] 图5说明用于在载入于装置内期间验证软件的第三示范性方法。
[0023] 图6说明用于在载入于装置内期间验证软件的第四示范性方法。

具体实施方式

[0024] 在以下描述中,给出具体细节以提供对所描述实施方案的透彻理解。然而,所属领域的技术人员将理解,可在无需此些具体细节的情况下实践所述实施方案。举例来说,可以框图展示电路,从而避免以不必要的细节混淆所述实施方案。在其它情况下,可详细展示熟知电路、结构及技术以免混淆所述实施方案。
[0025] 词语“示范性”在本文中用以意味着“充当实例、例子或说明”。在本文中描述为“示范性”的任何实施方案或实施例未必解释为比其它实施例或实施方案优选或有利。同样,术语“实施例”并不要求所有实施例均包括所论述特征、优势或操作模式。
[0026] 综述
[0027] 一种特征是通过在主机装置上使用混合式认证与验证过程提供软件的安全载入及执行。软件可存储在非安全存储器件中。最初,在首次载入软件以供执行时,可以密码编译方式认证所述软件。接着可使用软件及装置特定秘密数据产生验证标签。当随后载入软件以供执行时,使用验证标签以在载入软件时验证所述软件。如果此验证失败,那么可中止软件的载入及/或执行。
[0028] 在一个实例中,可获得(例如检索、读取,等)存储于在装置内或在装置外部的非安全存储器件中的软件。当载入软件以供(处理电路)执行时,可尝试通过使用预先产生的验证标签来验证所述软件,以确认正在载入的软件与用以产生预先产生的验证标签的软件相同,同时避免对软件的认证。举例来说,处理电路可尝试使用可供其使用的任何及/或所有验证标签来验证软件。或者,处理电路可在尝试验证软件之前检查是否有任何验证标签可用。如果验证失败或无预先产生的验证标签可用,那么可在载入软件以供装置执行时认证所述软件。如果对软件的认证成功,那么可基于所述软件及装置特定秘密数据产生用于所述软件的新验证标签。可存储新验证标签以用于后续验证。仅当对软件的验证成功或对软件的认证成功时才执行所述软件。与对软件的认证相比,对软件的验证是费时较少的及/或资源密集程度较低的。
[0029] 示范性软件认证及验证
[0030] 图1说明用于认证在主机装置(例如具有有限处理资源的主机装置)上的软件的示范性方法。软件散发者104可产生公共/私密密钥对106。在散发软件(例如软件应用程序、操作系统、驱动程式软件、可执行代码/指令,等)之前或与之同时,软件散发者104可用私密密钥以密码编译方式对软件进行签名108。接着将经签名软件发送110到主机装置102(例如将在其中执行软件的装置)。另外,软件散发者104可将公共密钥(对应于私密密钥)递送112到主机装置102。
[0031] 在接收到经签名软件时,主机装置102可执行对软件114的初步认证109。举例来说,对软件114的所述初步认证可涉及使用所接收的公共密钥确定所接收的经签名软件是有效的或未经篡改/修改。
[0032] 主机装置102可包含或获得装置特定秘密数据116。一旦初步认证成功地完成,便可将软件存储118在主机装置102内。可基于软件及装置特定秘密数据120产生验证标签。所述装置特定秘密数据116在主机装置102外部可为未知的。可将验证标签存储122在主机装置102内(例如,非安全位置内)。
[0033] 在软件的后续执行123期间,主机装置102可检索软件124。然而,在执行之前,还检索验证标签126。接着可使用验证标签验证软件128。即,可使用装置特定秘密数据及所检索的软件产生新验证标签。新验证标签可与先前存储的验证标签进行比较,以确定所述验证标签是否相同(即,如果新验证标签与先前存储的验证标签相同,那么验证成功)。如果验证成功,那么可由主机装置102执行130软件。否则,如果验证失败,那么主机装置102可推断所存储的软件已经修改(例如,对软件的未经授权的修改)。
[0034] 在一个实例中,对软件的初步认证可涉及使用公共密钥的密码编译认证。如果软件成功地经认证,那么可使用装置特定秘密数据产生关于软件的消息认证码(MAC)。MAC可基于两种输入:消息,以及仅对消息的产生器已知的秘密密钥。在一个实例中,主机装置可使用软件作为消息,且使用装置特定秘密数据作为秘密密钥。在一个实例中,接着可使用可用以将任意大小的数字数据映射到固定大小的数字数据的杂凑函数获得MAC。接着可使用秘密数据将此MAC系结到装置且因此获得验证标签。
[0035] 与资源密集程度相当高的使用公共密钥执行密码编译认证相反,使用验证标签(例如,MAC)验证软件是资源密集程度较低的。
[0036] 在一些实例中,装置特定秘密数据可包含用于主机装置102的物理不可复制函数(PUF)、存储在主机装置102内的秘密密钥、及/或存储在一或多个可一次熔断熔丝中的可在更新软件时被修改/改变的数据。应注意,一旦熔断,此些可一次熔断熔丝便无法再接(unblow)或复位。
[0037] 带有软件认证的示范性主机装置
[0038] 图2为说明经调适以执行软件认证的示范性主机装置200的框图。主机装置200可包含处理电路202,其经由总线232耦合到通信接口204及内部存储装置206。
[0039] 处理电路202可经布置以获得、处理及/或发送数据,控制数据存取及存储,发出命令,及/或控制存取装置的其它所要操作。在至少一个实施例中,处理电路202可包括经配置以实施由合适媒体提供的所要程式设计的电路。举例来说,处理电路202可实施为经配置以执行包括(例如)软件及/或固件指令的可执行指令的处理器、控制器、多个处理器及/或其它结构、及/或硬件电路中的一或多个。处理电路202的实施例可包含经设计以执行本文中所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程阵列(FPGA)或其它可编程逻辑组件、离散闸或晶体管逻辑、离散硬件组件、或其任何组合。通用处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算组件的组合,例如DSP与微处理器的组合、多个微处理器、一或多个微处理器结合DSP核心,或任何其它此类配置。处理电路202的此些实例是为了说明,且还预期本发明的范围内的其它合适配置。
[0040] 通信接口204可经配置以促进经由一或多个网络到/从主机装置200的通信。通信接口204可包含至少一个发射器电路210及/或至少一个接收器电路212(例如,一或多个发射器/接收器链)。此外,一或多个天线(未展示)可电耦合到通信接口204。
[0041] 存储装置206可表示用于存储程式设计及/或数据(例如处理器可执行代码或指令(例如,软件、固件)、电子数据、数据库或其它数字信息)的一或多个装置。根据至少一个实施例,此类装置中的一或多个可包括存储装置206。存储装置206可为可由通用或专用处理器存取的任何可用媒体。通过实例方式(且非限制),存储装置206可包含只读存储器(例如ROM、EPROM、EEPROM)、随机存取存储器(RAM)、磁碟存储媒体、光学存储媒体、快闪存储器装置及/或用于存储信息的其它非暂时性计算机可读媒体。存储装置206可耦合到处理电路202,以使得处理电路202可从存储装置206读取信息及向存储装置206写入信息。在替代方案中,存储装置206或其至少一部分可与处理电路202成一体式或与处理电路202分离。
[0042] 在一个实例中,存储装置206可包含处理电路202将执行的软件208(例如,实施操作系统的指令或代码、一或多个应用程序及/或针对主机装置200的任务/功能)。在其它实施方案中,所述软件208可存储在外部存储装置234中。在各种实施方案中,软件208可存储在安全存储器件或非安全存储器件中。安全存储器件可为受保护以免被未经授权用户/应用程序存取的装置或存储区。非安全存储器件可为(例如)用户或未经授权应用程序可存取的装置或存储区。
[0043] 根据一个方面,主机装置200可包含用以在载入软件208以供处理电路202执行时认证软件208的初步认证指令214。软件208可存储于在装置20内或在装置200外部的非安全存储器件中。在一些情况下,总是首先执行验证,且如果验证失败,那么执行认证。因此,在首次使用或载入软件时,可尝试验证,所述验证可能会由于尚未产生用于所述软件的验证标签而失败。在发生所述验证失败时,可执行认证。
[0044] 在其它情况下,可在首次载入软件以供在装置200或处理电路202上执行时执行初步认证指令214。认证可涉及验证软件的密码编译签名以确定软件的有效性、完整性及/或真实性。
[0045] 在成功认证后,验证标签产生指令216就可用以产生并存储验证标签226,验证标签226随软件208及装置特定秘密数据230而变。验证标签226可存储在存储装置206或外部存储装置234(例如,存储软件208的同一外部存储装置,或不同外部存储装置)中。在各种实施方案中,验证标签226可存储在安全存储器件或非安全存储器件中。安全存储器件可为受保护以免被未经授权用户/应用程序存取的装置或存储区。非安全存储器件可为(例如)用户或未经授权应用程序可存取的装置或存储区。
[0046] 在通过主机装置200对同一软件208的后续执行或载入时,避免初步认证过程。而是,验证标签比较指令218可验证先前经存储以用于软件的验证标签匹配正在被检索以供执行的软件的验证标签的新版本。应注意,各软件(例如操作系统、驱动程式、用户应用程序,等)可具有与其相关联的不同验证标签。在对标签的成功验证后,就可执行软件208。
[0047] 在一个实例中,主机装置200可经配置以在载入软件208时或在执行之前执行对软件208的初步认证。软件认证模块/电路220可经调适以在由主机装置200载入或使用软件208时,根据存储在存储装置206中的初步认证指令214执行对软件208的初步认证(及/或对所述软件的后续认证)。如果认证成功,那么验证标签产生器模块/电路222可经调适以通过使用秘密数据230或在秘密数据230保护下计算关于软件208(例如,关于软件代码)的值(例如消息认证码或MAC)而形成、产生及/或获得软件208的验证标签。软件验证标签226接着可存储在存储装置206中。
[0048] 在同一软件208的后续载入或执行时,主机装置200不必再次执行对所述软件的认证。而是,验证标签比较器模块/电路224可仅执行对先前所存储的验证标签226的验证以确定软件208是否已经改变或修改。
[0049] 应注意,与认证软件相比,验证软件可为费时较少的及/或资源密集程度较低的。因此,通过执行软件验证而非执行软件认证来获得效率。
[0050] 根据一个方面,在更新软件208后,就可产生新验证标签。为保证将不再使用旧验证标签,可在产生验证标签时使用可一次熔断熔丝228。每当更新或改变软件208时,便执行对软件的再认证并依据一或多个可一次熔断熔丝228及/或秘密数据230产生新验证标签。每当发生软件更新时,可改变一或多个可一次熔断熔丝228(例如,使一或多个熔丝熔断)。
此保证每当更新软件时,验证标签将改变。
[0051] 在一个方面中,如果使用验证标签的软件验证失败,那么主机装置200可恢复执行使用公共密钥的软件认证。
[0052] 用于软件认证及验证的第一示范性方法
[0053] 根据第一示范性实施方案,对于不具有安全内部存储器件或受信任永久性存储器件的装置来说,安全开机过程可涉及尝试验证软件,且如果所述验证失败,那么尝试认证所述软件。图3说明用于执行混合式软件认证与验证的第一通用方法。装置检索、接收及/或获得软件302。举例来说,所述软件可为软件的特定开机映像。
[0054] 当载入软件以供在装置上执行或使用时,尝试对照验证标签来验证软件。在一个实例中,可做出关于是否(在装置上)已经存在用于软件的验证标签的确定303。如果所述软件先前在装置上经认证,那么可发现并检索用于所述软件的验证标签304。接着可使用验证标签验证所述软件306。在一个实例中,可获得用于所述软件的新产生的验证标签并与所检索的验证标签进行比较。如果成功地验证所述软件308,那么执行软件310。
[0055] 如果不存在用于所述软件的验证标签303及/或如果软件验证失败308,那么可执行对所述软件的认证312。在一个实例中,认证软件312可包含使用(例如)由软件散发者提供的公共密钥认证软件的数字签名。如果成功地认证软件314,那么产生用于软件的验证标签316。接着可将验证标签存储(例如)于在装置内或在装置外部的安全或非安全存储器件中318。否则,如果软件认证314失败,那么中止软件的执行315。接着可执行320软件。
[0056] 根据一个实例,可依据软件及内嵌式秘密数据或功能等效物(例如物理不可复制函数)产生验证标签。可使用此验证标签以使软件的后续执行(例如,在第一次开机之后的软件的开机时间验证)优化。在一个实例中,验证标签可包含使用装置特定秘密密钥(即,仅对装置已知)或受所述装置特定秘密密钥束缚的关于软件的经认证映像的消息认证码(MAC)。
[0057] 在一个实例中,与使用公共密钥认证软件的数字签名相比,使用与秘密数据组合或受所述秘密数据束缚的验证标签(例如,MAC)是显著地较高效的。应注意,验证标签可由秘密数据签名或受其束缚,且可存储在任何位置(包含装置内的不安全或非安全存储器件)中。当随后载入或使用软件时,产生用于正在载入的软件的新验证标签(例如,新MAC)且将所述新验证标签与先前所存储的验证标签(例如,MAC)进行比较。如果所存储的验证标签经篡改,那么使用秘密数据进行验证将导致在与新验证标签进行比较时失败。
[0058] 用于软件认证及验证的第二示范性方法
[0059] 图4(包括图4A及4B)说明用于执行混合式软件认证与验证的第二一般方法。装置检索、接收及/或获得软件402。接着(例如)在软件载入到装置时执行对所述软件的认证404。在一个实例中,认证所述软件可包含使用(例如)由软件散发者提供的公共密钥认证所述软件的数字签名。如果成功地认证软件406,那么产生用于软件的验证标签408。接着可将所述验证标签存储(例如)于在装置内或在装置外部的安全或非安全存储器件中410。否则,如果软件认证406失败,那么中止软件的执行407。
[0060] 随后,当所述软件正载入于所述装置上或由所述装置使用时,检索用于所述软件的验证标签412。根据一个实例,可使用软件及内嵌式秘密数据或功能等效物(例如,物理不可复制函数)以产生验证标签。可使用此验证标签以使软件的后续执行(例如,在第一次开机之后的软件的开机时间验证)优化。在一个实例中,验证标签可包含使用装置特定秘密密钥(即,仅对装置已知)或受所述装置特定秘密密钥束缚的关于软件的经认证映像的消息认证码(MAC)。
[0061] 接着使用验证标签(例如,通过将所检索的验证标签与软件的新产生的验证标签进行比较)来验证软件414。如果成功地验证软件416,那么执行软件420,否则,中止软件执行418。
[0062] 在更一般意义上,验证标签可为组合软件的特性与秘密数据的任一值。举例来说,验证标签可为接着受秘密数据保护的关于软件的杂凑。在另一实例中,以准许后续验证的方式组合软件与秘密密钥的位。
[0063] 另一方面提供防复原(rollback)特征,因此攻击者无法简单地用软件的旧映像更新主机装置的存储器件(快闪存储器)。此攻击将使用由软件散发者提供的公共密钥执行认证,如果软件已经被破解,那么所述认证将失败。然而,攻击者可能还存储旧验证标签(来自所安装的软件的先前版本)。如果攻击者可使所述验证标签对软件的经修改版本起作用,那么可绕过完整认证过程。然而,防复原特征可使用防复原熔丝(或等效物)作为使用在验证标签产生功能中的输入的一部分。每当更新软件时,可使另一熔丝熔断,使得由于熔丝状态(其充当到验证标签产生的输入)已经改变,因此无法复写任何先前验证标签。此防止软件的旧映像及验证标签起作用。
[0064] 用于软件认证及验证的第三示范性方法
[0065] 图5说明用于在载入于装置内期间验证软件的另一示范性方法。所述软件可存储于在所述装置内或在所述装置外部的安全或非安全存储器件中。可在载入软件以供所述装置执行时认证所述软件,其中所述软件存储于在装置内或在装置外部的非安全存储器件中502。认证所述软件可涉及对软件及软件的数字签名的密码编译操作。举例来说,认证所述软件可包含使用对软件的签名使用由软件散发者提供的公共密钥认证所述软件。应注意,软件散发者可为产生或散发软件的团体或实体。所述软件可为在装置的开机时间载入的操作系统的一部分。
[0066] 如果对软件的认证成功,那么可产生用于软件的验证标签,所述验证标签是基于软件及至少一装置特定秘密数据504。可存储验证标签506。举例来说,可将验证标签存储于在所述装置内或在所述装置外部的安全或非安全存储器件中。在一个实例中,产生验证标签可包含产生关于软件且使用装置特定秘密数据的消息认证码(MAC)。在另一实例中,验证标签可为接着受秘密数据保护或束缚的软件的杂凑。在各种实例中,秘密数据可仅对装置已知且/或可能在装置外部不可存取。还可基于装置内的物理不可复制函数(PUF)获得秘密数据。
[0067] 随后,可在载入软件以供执行时,通过使用验证标签来验证(并非认证)所述软件,以确认正在载入的软件与用以产生验证标签的软件相同,同时避免对软件的认证,其中与认证软件相比,验证软件是费时较少的且/或资源密集程度较低的508。
[0068] 可基于每当获得软件的新版本时发生改变的装置数据而另外产生验证标签。当产生用于装置中的软件的新验证标签时,装置数据从不重复。
[0069] 与验证软件相比,认证软件可消耗装置的较多处理资源或较长时间。
[0070] 在一个实例中,如果使用验证标签对软件的验证失败509,那么尝试对软件的再认证510。仅当再认证510成功时才执行所述软件512。否则,如果对软件的再认证失败,那么中止软件的执行514。
[0071] 根据一个方面,并非在载入软件时认证所述软件,而是装置可尝试利用可供其使用的预先存在的验证标签中的一或多个来执行验证。如果所述验证失败或无验证标签可用,那么执行对软件的认证。
[0072] 在另一方面中,可获得软件的新版本。当载入软件的新版本以供装置执行时,认证软件的新版本。如果对软件的新版本的认证成功,那么产生新验证标签,所述新验证标签是基于所述软件的新版本以及至少装置特定秘密数据。存储新验证标签(例如,在装置内或在装置外部)。随后,当载入软件的新版本以供执行时,通过使用新验证标签来验证所述软件的所述新版本,以确认正在载入的软件的新版本与用以产生新验证标签的软件的版本相同,同时避免对所述软件的新版本的再认证。应注意,与再认证软件的新版本相比,验证软件的新版本可为费时较少的及/或资源密集程度较低的。
[0073] 用于软件认证及验证的第四示范性方法
[0074] 图6说明用于在载入于装置内期间验证软件的又一示范性方法。获得存储于在装置内或在装置外部的非安全存储器件中的软件602。在一个实例中,所述软件可为在装置的开机时间载入的操作系统的一部分。当载入软件以供执行时,可尝试通过使用预先产生的验证标签来验证软件,以确认正在载入的软件与用以产生预先产生的验证标签的软件相同,同时避免对软件的认证604。可从对软件的先前认证获得预先产生的验证标签。如果所述验证成功606,那么执行软件608。
[0075] 否则,如果验证失败或无预先产生的验证标签可用,那么可在载入软件以供装置执行时认证所述软件610。应注意,与认证软件相比,验证软件可为费时较少的及/或资源密集程度较低的。如果对软件的认证成功,那么基于所述软件及装置特定秘密数据产生用于所述软件的新验证标签612。秘密数据可仅对装置已知且/或在装置外部不可存取。举例来说,可基于装置内的物理不可复制函数获得秘密数据。接着可存储新验证标签614。在一些实例中,可将预先产生的验证标签及/或新验证标签存储于在装置内或在装置外部的非安全存储器件或不同的非安全存储器件中。
[0076] 在一个实例中,可认证软件,且在成功认证后,就可产生预先产生的(例如,初始、第一、先前,等)验证标签。可存储预先产生的验证标签以供在对软件的后续验证中使用。
[0077] 在一个实例中,认证所述软件可涉及对软件及软件的密码编译签名的密码编译操作。举例来说,认证所述软件可包含使用对软件的签名使用公共密钥认证所述软件。
[0078] 在另一实例中,产生新验证标签可包含产生关于软件且使用装置特定秘密数据的消息认证码(MAC)。
[0079] 在一些实施方案中,可基于每当获得软件的新版本时发生改变的装置数据而另外产生新验证标签。当产生用于装置中的软件的新验证标签时,装置数据可从不重复。
[0080] 如果对软件的认证失败,那么中止软件的执行。在一个实施方案中,仅当对软件的验证成功或对软件的认证成功时才执行所述软件。
[0081] 可获得软件的新版本。可在载入软件以供装置执行时认证软件的新版本。如果对软件的新版本的认证成功,那么产生用于软件的新版本的另一验证标签,其中所述另一验证标签可基于所述软件的所述新版本以及至少装置特定秘密数据或另一装置特定数据。还可存储所述另一验证标签以供后续使用。随后,可在载入软件以供执行时,通过使用所述另一验证标签来验证软件的新版本,以确认正在载入的软件的新版本与用以产生所述另一验证标签的软件的版本相同,同时避免对所述软件的新版本的再认证。
[0082] 根据另一方面,验证标签可另外受可用以停用验证标签的可撤销凭证束缚。举例来说,可在执行验证后由装置检查所述可撤销凭证。所述装置可查询凭证撤销数据库,且验证将在已经撤销所述凭证的情况下失败。因此,即使软件未经修改,在已经撤销对应凭证的情况下,验证仍将失败。
[0083] 另一实例提供一种例如主机装置200的装置,其经配置以在执行之前执行混合式软件认证与验证。可提供包括存储装置206及处理电路202的装置200(图2)。存储装置206可用以存储认证指令214及/或验证标签产生指令216以及验证标签比较指令218。处理电路202可经配置以获得(例如,经由总线232或从通信接口204检索、读取,等)存储于在装置200内或在装置200外部的非安全存储器件中的软件。
[0084] 验证标签比较器模块/电路224可用以尝试在载入软件以供执行时,通过使用预先产生的验证标签(例如,存储在软件验证标签226当中)来验证软件,以确认正在载入的软件与用以产生验证标签的软件相同,同时避免对软件的认证。如果验证失败或无预先产生的验证标签可用,那么软件认证模块/电路220可用以在载入软件以供装置执行时认证所述软件。如果对软件的认证成功,那么验证标签产生器模块/电路222可用以基于软件及装置特定秘密数据而产生用于软件的新验证标签。新验证标签接着可存储在一或多个软件验证标签226当中。此过程达成效率上的改进,这是因为与对软件的认证相比,对软件的验证是费时较少的及/或资源密集程度较低的。因此,尽管认证最初可消耗较多时间或资源,但软件的后续载入由于使用验证而非认证而是较迅速及高效的。
[0085] 所述装置还可包含耦合到处理电路的多个一次熔断熔丝228,其中另外基于来自所述一次熔断熔丝的状态而产生新验证标签及/或预先产生的验证标签,且每当获得软件的更新版本时,所述多个一次熔断熔丝发生改变。
[0086] 在图1、2、3、4、5及/或6中说明的组件、步骤、特征及/或功能中的一或多个可重新布置及/或组合成单个组件、步骤、特征或功能,或以数个组件、步骤或功能体现。还可在不背离本发明的范围的情况下添加额外元件、组件、步骤及/或功能。在图2中说明的设备、装置及/或组件可经配置以执行在图1、3、4、5及/或6中描述的方法、特征或步骤中的一或多个。本文中所描述的新颖算法还可有效地实施在软件中及/或内嵌在硬件中。
[0087] 此外,应注意,至少一些实施方案经描述为过程,所述过程经描绘为流程图、结构图或框图。尽管流程图可能将操作描述为顺序过程,但许多操作可并行地或同时执行。另外,可重新布置操作的次序。当过程的操作完成时,所述过程终止。过程可对应于方法、函数、程序、子例程、子程序等。当过程对应于函数时,过程的终止对应于函数返回到调用函数或主函数。
[0088] 此外,实施例可由硬件、软件、固件、中间软件、微码或其任何组合实施。当以软件、固件、中间软件或微码实施时,用以执行必要任务的程序码或码段可存储在机器可读媒体(例如存储媒体或一或多个其它存储器件)中。处理器可执行必要任务。码段可表示程序、函数、子程序、程序、例程、子例程、模块、软件套件、类别,或指令、数据结构或程序陈述式的任何组合。一个码段可通过传递及/或接收信息、数据、引数、参数或存储器内容耦合到另一码段或硬件电路。可经由包含存储器共享、消息传递、符记传递、网络发射等任何合适的方式传递、转发或发射信息、引数、参数、数据等。
[0089] 术语“机器可读媒体”、“计算机可读媒体”及/或“处理器可读媒体”可包含(但不限于)便携式或固定存储装置、光学存储装置,以及能够存储、容纳或携载一或多个指令及/或数据的各种其它非暂时性媒体。因此,本文中描述的各种方法可以部分或完全地由可存储在“机器可读媒体”、“计算机可读媒体”及/或“处理器可读媒体”中且由一或多个处理器、机器及/或装置执行的指令及/或数据来实施。
[0090] 结合本文中所公开的实例描述的方法或算法可以处理单元、程序设计指令或其它指示的形式直接体现在硬件、可由处理器执行的软件模块或两者的组合中,且可含于单个装置中或跨越多个装置而分布。软件模块可驻存在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘抽取式磁碟、CD-ROM,或所属领域中已知的任何其它形式的存储媒体中。存储媒体可耦合到处理器,以使得处理器可从存储媒体读取信息及向存储媒体写入信息。在替代方案中,存储媒体可集成到处理器。
[0091] 所属领域的技术人员将进一步了解,结合本文中所公开的实施例描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的此可互换性,各种说明性组件、块、模块、电路及步骤已在上文大体按其功能性加以描述。此功能性实施为硬件还是软件取决于特定应用及强加于整个系统上的设计约束。
[0092] 本文中所描述的实施例的各种特征可在不背离本发明的范围的情况下实施在不同系统中。应注意,前述实施例仅为实例,且不应解释为限制本发明。实施例的描述打算为说明性的,且不限制权利要求书的范围。因而,本发明的教示可容易应用于其它类型的装置,且许多替代例、修改及变化对于所属领域的技术人员而言将显而易见。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈