CN111797442B - 安全装置及方法 - Google Patents

安全装置及方法 Download PDF

Info

Publication number
CN111797442B
CN111797442B CN201911391289.3A CN201911391289A CN111797442B CN 111797442 B CN111797442 B CN 111797442B CN 201911391289 A CN201911391289 A CN 201911391289A CN 111797442 B CN111797442 B CN 111797442B
Authority
CN
China
Prior art keywords
boot
security
bus
procedure
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911391289.3A
Other languages
English (en)
Other versions
CN111797442A (zh
Inventor
日弗·赫诗曼
丹·摩瑞
伊兰·马格利特
尼莫·帕莱
摩西·亚隆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nuvoton Technology Corp
Original Assignee
Nuvoton Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/377,212 external-priority patent/US10691807B2/en
Application filed by Nuvoton Technology Corp filed Critical Nuvoton Technology Corp
Publication of CN111797442A publication Critical patent/CN111797442A/zh
Application granted granted Critical
Publication of CN111797442B publication Critical patent/CN111797442B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Abstract

本发明提供一种安全装置及方法,该安全装置包含一接口以及一处理器。此接口连接一总线,一主机装置以及一非易失性存储器装置亦连接此总线。处理器连接至总线。处理器检测在总线上的一开机程序,在开机程序中,主机装置从非易失性存储器装置取得启动代码,安全装置根据主机装置该启动代码的至少一部分的副本,以确定开机程序的安全。

Description

安全装置及方法
相关申请的交叉引用
此申请书主张依2018年4月18日所提交的美国专利申请号15/955,715的部分继续申请案,其为2016年3月21日所提交的美国专利申请号15/075,219的部分继续申请案,其主张2015年6月8日所提交的美国临时申请案号第62/172,298的优先权。本申请案有关于同日申请,名称为“Secured Master-Mediated Transactions between Slave Devices usingBus Monitoring”,代理人案号(attorney docket number)1041-2003的美国专利申请案。上述申请案细节借着参考而结合于此。
技术领域
本发明有关于一种电子系统安全,特别是有关于一种安全装置及方法。
背景技术
电子装置系统使用多种类型的总线接口进行主机装置以及周边装置之间的进行通信。总线接口的一示例是序列周边接口总线(SPI bus)。可支援SPI总线的周边装置有包含,例如,序列式闪存装置。
发明内容
本发明的一实施例提供一种安全装置,其包含一接口以及一处理器。此接口用以连接一服务一主机装置以及一非易失性存储器(NVM)装置的总线。处理器连接至该总线,该主机装置以及该NVM装置也连接至该总线,该处理器用以检测该总线上的一开机程序,在该开机程序中该主机装置从该NVM装置取得一启动代码,以及根据主机装置的该启动代码的至少一部分的一副本,确定该开机程序的安全。
在一些实施例中,处理器用以从该总线撷取该启动代码的至少一部分,以及当检测到从该NVM装置取得的该启动代码的该至少一部分与该副本之间有不符合时,启动一回应措施。
在一实施例中,副本包含该启动代码的该至少一部分的一映像(image),而该处理器比较该映像与从该NVM装置取得的该启动代码的至少一部分,以检测该不符合。在另一实施例中,副本包含该启动代码的该至少一部分的一真实摘要(authentic digest),而该处理器计算从该NVM装置取得的该启动代码的该至少一部分的一摘要,并比较从该NVM装置取得的该启动代码的该至少一部分的该摘要与该真实摘要,以检测该不符合。
在一些实施例中,处理器在该开机程序进行时检测该不符合。在一示例性实施例,回应检测到该不符合时,该处理器用以强加一个或多个虚拟值在该总线的至少一线路上,以扰乱该开机程序。在一实施例,回应检测到该不符合时,该处理器扰乱该主机装置与该NVM装置之间的该总线该一个或多个线路,以扰乱该开机程序。在另一实施例中,回应检测到该不符合,该处理器在该总线上代替该NVM装置回应该主机装置,以使用该副本完成该开机程序。在其他实施例,处理器检测该不符合独立于该开机程序的进行。
在一实施例中,处理器在该安全装置的一内部存储器中保存该副本,或是在该安全装置外部的一存储器保存该副本。在另一实施例中,在该开机程序的安全确定之前,该处理器防止该主机装置对一既定机密信息进行存取。
在一实施例中,处理器执行以下操作以确定该开机程序的安全:代替该NVM装置回应该主机装置,并提供一启动代码给该主机装置,其中该启动代码造成该主机装置在该总线上进行的活动在该开机程序的第一实体(instance)及第二实体之间有所不同;以及监控该主机装置在该总线上的该活动,以及确认该活动符合提供给该主机装置的该启动代码。
在又一实施例,当该总线的一芯片选择(CS)线未被设定有效(assert)时,该处理器通过确保该总线的所有数据线与时脉线的逻辑状态不改变,以确定该开机程序的安全。在另一实施例,该处理器通过确保只有在一预先定义白名单上出现的总线指令被施加至该NVM装置,以确定该开机程序的安全。
在一示例性实施例,处理器通过确保在该开机程序中从一既定重置信号或是开机信号至一既定事件的一时间延迟有在一预先定义范围内,以确定该开机程序的安全。此外,处理器通过确保该总线的至少一线路的一模拟参数值落在一预先定义范围内,以确定该开机程序的安全。在一实施例中,启动代码指示该主机装置在该总线上输出一个或多个主机参数值,且该处理器通过监控以及确认输出在该总线上的该主机参数值,以确定该开机程序的安全。
本发明的一实施例提供一种安全方法,其包含下列步骤:使用一安全装置通过一总线进行通信,其中一主机装置以及一非易失性存储器(NVM)连接该总线;以及使用该安全装置检测在该总线上的一开机程序,在该开机程序中该主机装置从该NVM装置取得一启动代码,并根据该主机装置的该启动代码的至少一部分的一副本确定该开机程序的安全。
在另一实施例,本发明提供一种安全装置,其包含一接口以及一处理器。接口用于连接一服务一个或多个周边装置的总线。此总线包含一个或多个专用信号,其分别用于一周边装置;以及一个或多个共享信号,其通过总线共享于周边装置。处理器连接至总线作为一额外装置。周边装置连接至总线。处理器可通过扰乱与既定周边装置相关的专用信号,以扰乱在总线上总线主装置尝试存取既定周边装置的操作。
在一些实施例中,在进行扰乱操作时,处理器保持在总线上的共享信号不中断。在一实施例中,此接口包含一输入,用以从总线主装置接收专用信号;以及一输出,用以传送专用信号至既定周边装置,而处理器可通过防止输入接收的专用信号传送到输出,以扰乱上述操作。在一些实施例中,处理器取代既定周边装置回应总线主装置,藉此扰乱专用信号。在一示例性实施例,专用信号包含一芯片选择(CS)信号。
在一实施例,处理器通过监控总线,检测须被扰乱的操作。再一实施例中,处理器在一辅助接口上与总线主装置进行通信,以检测须被扰乱的操作。辅助接口位于总线外部。
在一实施例中,处理器不确定地扰乱专用信号,直到系统重置。在另一实施例中,检测到上述操作后,处理器在一有限时间周期扰乱专用信号。在一实施例中,通过扰乱操作,处理器使得在一个或多个周边装置舍弃操作。在一些实施例中,在扰乱操作之后,处理器回复总线的正常操作。
根据本发明的一实施例,再提供一种安全装置,其包含一接口以及一处理器。该接口连接一服务一个或多个周边装置的总线。处理器以及周边装置连接至总线,该处理器通过取代既定周边装置回应总线主装置,以扰乱在总线上一总线主装置尝试存取一既定周边装置的操作。
在一实施例中,总线包含一个或多个专用信号,其分别专用于周边装置;以及一个或多个共享信号,其在总线服务的周边装置之间共享,而处理器通过扰乱既定周边装置相关的专用信号,并于专用信号被扰乱时回应总线主装置,以扰乱总线主装置的操作。
在一些实施例中,周边装置包含一存储器装置,而处理器识别出该操作中总线主装置对存储器装置读取数据的要求,并以安全装置内部存储的另一数据回应此要求。在一示例性实施例,处理器以另一数据回应总线主装置对存储器装置存取一预先定义地址区的要求,藉此扰乱此操作。
在另一实施例中,根据在操作期间既定周边装置回传至总线主装置的数据,处理器识别出总线主装置尝试存取既定周边装置的操作。在又一实施例,根据操作中使用的指令码,处理器识别总线主装置尝试存取既定周边装置的操作。
根据本发明的一实施例,再提供一种安全方法,其包含下列步骤:使用一安全装置通过一总线进行通信,其中一主机装置以及一个或多个周边装置连接该总线;其中总线包含一个或多个专用信号,其分别专用于周边装置;以及一个或多个共享信号,其在总线服务的周边装置之间共享。使用安全装置通过扰乱与既定周边装置相关的专用信号,以扰乱在总线上总线主装置尝试存取一既定周边装置的操作。
根据本发明的一实施例,再提供一种安全方法,其包含下列步骤:使用一安全装置通过一总线进行通信,其中一主机装置以及一个或多个周边装置连接该总线;使用安全装置通过代替既定周边装置回应总线主装置,以扰乱在总线上总线主装置尝试存取一既定周边装置的操作。
根据本发明的另一实施例,提供一种安全装置,其包含一接口以及一处理器。接口通过一总线进行通信。处理器通过平行于操作的至少一部分而强加一个或多个虚拟值在总线上至少一线路上,以扰乱在总线上总线主装置未经授权尝试存取一周边装置的操作。
在一实施例中,处理器在总线的一数据线上强加虚拟值,藉以扰乱在数据线上来自周边装置发送或接收的数据值的传送。此外,处理器可在总线的时脉线上强加虚拟值,藉以扰乱此操作使用的时脉信号。此外,处理器可在总线的芯片选择线上强加虚拟值,藉以扰乱总线主装置对周边装置的选择。
在一些实施例中,总线包含一具有预设逻辑值的漏极开路或是集极开路总线,而处理器可通过对此总线的至少一线路写入预设逻辑值的相反值,以强加虚拟值。
在一些实施例中,通过强加虚拟值,处理器可覆盖总线主装置或是周边装置已在至少一线路上写入的对应值。在一示例性实施例,处理器可通过驱动驱动强度强于总线主装置或是周边装置的驱动强度的至少一线路,以覆盖总线主装置或是周边装置已写入的数值。在其他的实施例中,此装置包含至少一电阻,其插置在至少一线路上,用以减弱总线主装置或是周边装置已写入的数值,使其弱于处理器已写入的虚拟值。
在一些实施例中,处理器仅使用总线主装置以及周边装置之间进行通信的总线的既有线路,以强加虚拟值。在一些实施例中,处理器监控总线,以检测须被扰乱的操作。在一实施例中,处理器通过在辅助接口上与总线主装置进行通信,以检测须被扰乱的操作。辅助接口位于总线外部。
在一实施例中,处理器不确定地强加虚拟值直到此装置被重置。在另一实施例中,检测到此操作之后,处理器在有限时间周期内强加虚拟值。在一实施例中,在扰乱操作之后,处理器可回复总线的正常操作。
根据本发明的一实施例,再提供一种系统,其包含一周边装置以及一安全装置。一个或多个总线主装置可通过一总线存取周边装置。安全装置可通过平行于操作的至少一部分强加一个或多个虚拟值在至少一线路上,以扰乱在总线上总线主装置未经授权尝试存取周边装置的操作。
根据本发明的一实施例,再提供一种安全方法,其包含下列步骤:使用一安全装置耦接于一总线,决定扰乱总线主装置未经授权尝试存取一周边装置的操作。通过平行于此操作的至少一部分强加一个或多个虚拟值在此总线的至少一线路上,以扰乱此操作。
附图说明
图1为根据本发明的一实施例绘示的安全系统的一方块图,其中在安全系统中多个装置通过一I2C总线进行通信。
图2为根据本发明的一实施例绘示在一I2C总线上对一周边装置进行安全存取的方法的流程图。
图3-图5为根据本发明的其他实施例绘示一安全系统的一方块图,其中在安全系统中多个装置通过一SPI总线进行通信。
图6为根据本发明的一实施例绘示的一安全装置的方块图。
图7为根据本发明的一实施例的安全启动主机装置的方法的流程图。
图8-图10为根据本发明的实施例绘示在一SPI总线上一安全装置使主机装置从一闪存取得安全开机程序的安全系统的方块图。
图11为根据本发明的一实施例绘示的安全启动主机装置的方法的流程图。
附图标号
110、189、130、140、170、70、20:安全系统
144、74、24:主机装置
148:闪存
152、82:SPI总线
178、160、90、40:接口
182、164、94、44:处理器
186、168:副本
187、174、156、86、36:安全装置
188:SPI总线监控器
28、78:周边装置
32:I2C总线
48、98:存储器
91:从属接口逻辑电路
92:接口监控逻辑电路
S100、104、108、112、116、120、190、194、198、202、206、210、214、62、66、50、54、58:步骤
具体实施方式
以下将配合图式及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
概述
本发明的实施例描述一种在总线接口上保护周边装置存取安全的方法以及装置。周边装置可包含,例如,加密引擎、存储敏感数据的存储器装置、或是其他任何会通过一总线进行存取的类似装置。
在一些实施例中,安全装置监控在总线上的操作(transaction),以及识别主机装置或其他总线主装置未经授权而周边装置进行存取的操作。根据任何适合标准(criterion)或是策略(policy),此些操作可分类成经授权的操作以及未经授权的操作。
当识别到一未经授权的操作,安全装置可通过平行于此操作进行时同时在总线的一个或多个线路上或是信号上刻意强加一些虚拟值,以扰乱此未经授权的操作。上述虚拟值可强加在,例如,一时脉信号上、一数据信号及/或一芯片选择(CS)信号上。
通过在总线上强加虚拟值以扰乱操作的方式适合于,例如,漏极开路(open-drain)总线或是集极开路(open-collector)总线,例如I2C总线,以及推挽式(push-pull)总线,例如SPI总线。平行于未经授权的操作同时进行在总线上强加虚拟值可盖过与该周边装置的通信,并扰乱时脉信号。
以下将描述几个用于在I2C与SPI总线上扰乱未经授权的操作示例技术,同时也描述在扰乱之后回复正常操作的技术。在一些实施例中,安全装置可不须先在总线上检测此未经授权的操作、甚至不须监控总线,便可进行扰乱。例如,安全装置可在某一主机的芯片选择(CS)线路上强加虚拟值,直到或是除非此主机取得授权。
在一些实施例中,例如,在SPI总线中,安全装置所保护的总线包含:(i)一个或多个专用信号,其分别专用于一周边装置;以及(ii)一个或多个共享信号,其通过总线在多个周边装置之中共享。共享信号的示例为数据信号以及时脉信号。专用信号的示例为CS信号。在一些实施例中,安全装置通过扰乱与受保护的周边装置相关的专用信号,并同时在总线上保持共享信号,以扰乱此未经授权的操作。然而,应注意的是,并非所有总线都有专用信号。例如,在I2C总线,所有信号都是共享信号。
在其他的实施例中,安全装置通过代替受保护的周边装置来回应此未经授权主机,以扰乱此操作。在一示例性实施例,周边装置包含一闪存,其包含用以存储敏感数据(例如金钥、组态数据及/或启动代码)的一个或多个地址区。通过选择性地盖过闪存的CS信号,安全装置能覆盖对闪存的数据进行存取的操作。安全装置以其内部存储的数据回应该主机。以下将描述此种安全开机程序。
本发明揭露的技术提供在逐笔操作的等级上(transaction-by-transactionlevel)上对周边装置即时安全选择性存取。在本发明的实施例中,仅使用总线的既有信号来进行操作识别以及操作扰乱。因此,本发明揭露的技术不需要额外接脚或是互连线路,藉此降低整体系统尺寸以及成本。
在其他实施例中,安全装置保护主机装置的开机程序的安全,在开机程序中,主机装置通过一总线从一非易失性存储器(NVM)装置取得一启动代码。例如,主机可在一SPI总线上从一SPI闪存装置开始启动。在一些实施例中,在开机程序的期间内安全装置会监控总线,并比较主机取得的启动代码的至少一部分以及一已知的副本,例如启动代码映像(bootcode image)或是摘要(digest)。当检测到在总线上取得的启动代码与安全装置已知的副本之间不符合时,触发一回应措施。本发明的此技术能启动安全装置保护系统抵抗多种安全威胁,例如,被盗用的主机或是闪存装置,或是对总线信号的攻击。以下将描述几种安全开机程序的示例性实施例以及变化型。
在I2C总线上安全存取周边装置
图1是根据本发明的一实施例绘示的安全系统20的方块图。在本示例中,安全系统20包含一主机装置24以及一周边装置28,两者连接至一I2C总线32。为使描述更为精简,主机装置24以及周边装置28分别可称为主机以及周边。主机装置24有时亦称为一总线主装置(bus master)。
安全装置36通过监控在I2C总线上的操作,以保护对周边装置28的存取,并防止主机24或是另一具有总线主装置能力的装置未经授权就尝试存取周边28的未经授权操作。安全装置36有时亦称为一控制装置或是信任平台模块(TPM)。在本示例中,安全装置36包含一接口40、一处理器44以及一存储器48。接口40用以连接I2C总线32,处理器44执行本发明揭露的技术,而存储器48存储由处理器44实施的一个或多个安全政策。
根据任何预先定义或设置的策略,处理器44可分类一操作(transaction)。一般而言,未经授权操作会尝试对该周边装置写入数据、从周边装置读取数据、设置或是传送指令至周边装置、或是以其他任何方式存取周边装置。安全装置实施的策略可包含正向策略,例如白名单(whitelist);负向策略,例如黑名单(blacklist);取决于装置地址或是暂存器偏移量的策略;或是其他任何类型的策略。
例如,在主机被授权对周边装置进行存取之前,主机可被要求让安全装置验证身份。未经授权的主机尝试的操作会被认定是未经授权。例如,可在主机以及安全装置之间使用一些题询答程序(challenge-response process)以执行验证(authentication)。此外,主机可被要求以其他适合方式证明身份、或是成功完成一安全开机程序。
此外,一些类型的操作(例如,读取操作)可视为已经授权,而其他类型操作(例如,写入操作)可视为未经授权。在另一示例中,对周边装置的预设地址进行存取的操作可视为已经授权,而对其他地址进行存取的操作可视为未经授权。在另一示例中,在总线上的一些位序列可代表一未经授权操作。
一般而言,处理器44可用任何适合的方式区分已经授权操作以及未经授权操作。用于区分已经授权操作以及未经授权操作的至少一策略可存储在存储器48中。
I2C总线32包含一串列数据(SDA)线,用以输送一串列数据信号;以及一串列时脉(SCL)线,用以承载一串列时脉信号。用语“线或线路(line)”以及“信号”在本文中可以互换使用。通过监控SDA线以及SCL线,处理器44可监控在I2C总线上互动的任何操作,并识别出未经授权操作。
当识别出一未经授权操作时,处理器44通过在I2C总线32的DSA线及/或SCL线上强加一个或多个虚拟值,以扰乱此未经授权操作。由于I2C总线的漏极开路/集极开路结构,使得此机制可行。通常,SDA线以及SCL线会使用上拉电阻而预设上拉成逻辑“1”状态(即高电平)。任何装置可在任何时间在SDA线或是SCL线上写入一“0”值,以强加一逻辑“0”(即低电平),而不管其他装置同时写入什么数值。
因此,在一些实施例中,当识别出一未经授权操作时,安全装置36的处理器44会使用接口40在总线32的SDA线或是SCL线上强加一逻辑“0”(预设“1”逻辑值的相反值)。在此,“0”值视为一虚拟值。“0”值强加在SDA线上以盖过从主机装置24写至周边装置28的任何数据值、或是主机装置24从周边装置28读取的任何数据值、或是预设“1”值。强加在SCL线上的“0”值会停止时脉信号。在任一情况中,操作会受到扰乱。
在一些实施例中,处理器44继续强加“0”值,例如,直到上电重置被执行。在其他的实施例中,处理器44可让主机24以及周边28从被扰乱操作的状态复原到正常操作。一些主机装置及/或周边装置无法从时脉暂停恢复到正常运作。因此,如果主机装置以及周边装置需要恢复到正常运作,较佳的是可在SDA上强加虚拟值,而不在SCL线上强加虚拟值。
在一实施例中,为了在扰乱操作后回复到正常操作,处理器44在总线上产生一I2C停止或是重启动条件。本文中,I2C停止或是重启动条件可包含任何序列的告知装置总线可以自由地开始操作的总线信号值。
处理器44可使用多种技术以从扰乱操作恢复到正常运作。在一实施例中,处理器44只有在一预先定义的时间长度中强加“0”值,其足以扰乱此未经授权操作。可使用任何预先定义时间长度。例如,SMBus规范有界定25mS的暂停时间。因此,在I2C上运行SMBus(SMBus-over-I2C)的应用中,可设定预先定义时间长度为25mS,以触发暂停。
在另一实施例中,处理器44可在SDA线上强加“0”值,直到检测SCL线已经处于高位准(例如,不扰动)达到至少一预先定义时间周期。此条件可表示主机已经结束或是舍弃此操作。接着,处理器44可释出SDA线,并可能产生一I2C停止条件。
在又一实施例中,为了有效扰乱从周边装置读取数据的未经授权操作,安全装置36可作为一具有与周边28相同装置地址的I2C从属装置。安全装置36的处理器44可用“0”数据值回应此未经授权的读取要求。在处理器44运作的同时,周边装置28亦会回应此读取要求,但其传送的数据值会被安全装置36发送的“0”值覆盖。此程序会继续执行直到主机因为一停止条件而结束此操作。应注意的是,根据I2C规范,在传送数据时,I2C从属装置不会驱动ACK/NEGACK位。
在另一实施例中,为了有效扰乱读取操作以及写入操作,处理器44可在SDA线上强加“0”值。接着,如果主机装置24没有辨识出扰乱,则操作会以总线上的“0”数据而正常结束,藉此取代从周边28传送出的数据。如果主机装置24检测到扰乱(例如,因为其支援I2C多主机仲裁机制)而舍弃该操作,则处理器44可在SCL线上产生额外时脉周期,以接管主机24舍弃的操作。接着,处理器44可完成目前正在传输的位组,并发布一停止条件以结束该操作。
上述扰乱以及恢复技术仅为例示性说明。在其他实施例,安全装置36的处理器44可使用其他任何适合技术来扰乱操作,以及从扰乱恢复到正常运行。
在上述示例中,检测未经授权的操作、扰乱未经授权操作、以及在扰乱之后恢复正常运行,都只使用总线既有的线路来实现。在其他实施例,安全装置36以及主机24亦可通过总线32外部的一些辅助接口而相互连接。此机制适用于,例如,当安全装置36以及主机24整合在相同集成电路(IC)中并共享集成电路的SDA接脚以及SCL接脚的情况。
在此些实施例,安全装置36以及主机装置24可使用辅助接口以确认没有其他主机装置存取周边装置28。在一示例性实施例,每当主机24存取周边装置28时,主机装置24通过辅助接口通知安全装置36。回应此通知,处理器44不会在总线上强加伪“0”值,而让此操作进行。当检测到有操作操作在存取周边28但辅助接口上并无通知时,处理器44假定此操作由未经授权的主机所进行的,就会强加“0”值以扰乱此未经授权操作。
图2是根据本发明的一实施例绘示的在I2C总线32上安全存取周边装置的方法的流程图。一开始,在监控步骤50,安全装置36的处理器44使用接口40,监控在I2C总线32上的操作。
在操作检测步骤54,处理器44识别主机装置24尝试存取周边装置28的操作。在一检查步骤58,处理器44检查此操作是否是经过授权的。例如,处理器44可检查此操作是否违反存储在存储器48中的安全政策。
在一同意步骤62,如果发现此操作是经过授权的,处理器44允许此操作正常进行。否则,在一扰乱步骤66,如果发现此操作是未经授权的,处理器44在总线32的SCL线及/或SDA线上强加伪“0”值,以扰乱此操作。
在SPI总线上安全存取周边装置
图3根据本发明的再一实施例绘示一安全系统70的方块图。在图3中,安全系统70包含一主机装置74、一周边装置78以及一安全装置86,此些装置皆连接至一SPI总线82。
安全装置86识别以及扰乱主机装置74未经授权便尝试存取周边78的操作。在本示例中,安全装置86包含一接口90以连接SPI总线82、一处理器94用以执行上述揭露的技术、以及一存储器98用以存储由处理器94实施的一个或多个安全政策。
在此实施例中,用以区分经授权操作以及未经授权操作的安全政策,以及安全装置86的处理器94用于识别未经授权操作的方式,与上述安全系统20的政策与方式相似。以下的技术与上述安全装置86在总线82上强加虚拟值以扰乱未经授权操作的方式不同。
SPI总线82包含一时脉(CLK)线、以及两数据线,其包含一主出从入(MOSI)线以及一主入从出(MISO)线。CLK线、MISO线以及MOSI线共用于所有装置,例如此实施例中的安全装置74、78以及86。除此之外,可使用一专用芯片选择(CS)线来选择每一从属装置。在本示例中,主机装置74使用CS线CS2#来选择周边装置78,以及使用CS线CS1#来选择安全装置86。
作为一主控者的主机装置74连接至所有CS线。另一方面,周边装置皆为从属装置,而每一周边装置只连接至自己本身的CS线。通常,主机装置74使用CS线选择所需要的周边装置并接着与使用此CLK线、MOSI线以及MISO线的装置进行通信,以开始一操作(transaction)。MOSI线用于从主机装置传送数据至周边装置,而MISO线用于从周边装置传送数据至主机装置。
与传统SPI从属装置不同的是,安全装置86定义为一可驱动所有CS线的从属装置。如图3所示,安全装置86的接口90可平行于主机装置74而驱动CS线CS2#。当此系统包含多个有各自CS线的周边装置78时,安全装置86通常可平行于主机装置74而驱动任何CS线。
在一些实施例中,此安全系统设计成当主机装置74与安全装置86使用相反的逻辑值来驱动CS线时,安全装置86驱动的逻辑值可盖过主机装置74驱动的逻辑值。也就是说,如果主机装置74以及安全装置86用相反的逻辑值来驱动CS线,则周边装置将接收到安全装置86驱动的逻辑值并根据此接收到的逻辑值进行作动。
为了扰乱主机装置以及周边装置之间的未经授权操作,另一示例是覆盖CS线以阻挡在此总线上的操作。上述覆盖机制可用多种办法实现。上述说明是以CS线CS2#选择周边装置78来说明,但是相同机制也可应用于多个周边装置以及各自的CS线。
在一实施例中,安全装置86用于驱动接口90的CS线CS2#的线驱动器(linedriver)会强于主机装置74用于驱动CS线CS2#的线驱动器。在一实施例中,一串联电阻100可插置在主机装置74的输出的CS线CS2#。相对于安全装置86的CS2#线驱动器的输出,电阻100会减弱主机装置74的CS2#线驱动器的输出。此外,安全装置86可使用其他任何办法来用以覆盖主机装置74对CS线CS2#的驱动。
安全装置86的处理器94可监控SPI总线82的CS线、CLK线、MISO线及/或MOSI线,用任何适合的方式来识别未经授权操作。在一些实施例中,当识别到有未经授权的主机装置74尝试存取某一周边装置,安全装置86的处理器94会将周边装置的CS线设定无效(de-assert),以扰乱此操作。由于安全装置86会覆盖主机装置74对CS线CS2#的驱动,周边装置将被重新选择,藉此扰乱此操作。另一方面,当判断此操作是经过授权的,处理器94会停止自己的CS2#线驱动器,藉此让主机装置能存取周边装置78而不受影响。
图4是根据本发明的另一实施例绘示的一安全系统110的方块图。安全系统110基于SPI总线82实现,与图3的系统70相似。然而,安全系统110并不覆盖CS线,而是安全装置86通过在CLK线、MISO线及/或MOSI线上强加虚拟值来扰乱未经授权的操作。
在本示例中,在安全系统110,安全装置86会覆盖主机装置74对CLK线、MISO线及/或MOSI线的驱动。如图中所示,串联电阻100插置在CLK线、MISO线以及MOSI线,以实现上述功能。在此例中,由于CS线CS2#没有被覆盖,所以没有串联电阻插置在CS线。
在其他实施例,可通过让安全装置86的CLK线、MISO线及/或MOSI线的线驱动器强于主机装置74的相对应的线驱动器,以实现上述覆盖机制。
在其他的实施例中,也可以使用结合覆盖CS线(如图3所示)以及覆盖CLK线、MISO线及/或MOSI线(如图4所示)的混合机制。
覆盖专用点对点信号以安全存取周边装置
总线(例如SPI总线)的信号可区分成共享信号以及专用信号。共享信号为并联于总线上的多个周边装置(例如,所有周边装置)的信号。例如,共享SPI信号包含数据信号(MOSI以及MISO信号)以及时脉(CLK)信号。专用信号为专用于特殊周边装置的信号。例如,此总线的专用信号为一芯片选择(CS)信号。除此之外,此总线可扩充成有外加专用信号,例如写入保护(WP)信号,当周边装置包含存储器装置时可使用。专用信号亦可称为一点对点(PTP)线。
在一些实施例中,在专用信号抵达周边装置之前,专用信号会先通过安全装置86。相对地,共享信号会以传统方式传送到周边装置而不会通过安全装置。此互连机制会启动安全装置以有效保护周边装置安全,以下将有详细描述。
图5是根据本发明的再一实施例绘示的安全系统130的方块图。图5的安全系统130与图3的安全系统70相似,但是图5的系统的CS2#信号不会直接驱动周边装置78的输入。替代地,主机装置74的CS线CS2#会输入至安全装置86,接着,安全装置86驱动连接至周边装置78的输入的CS2_O#信号。
在此实施例中,CS2#信号作为通过安全装置连接至受保护的周边装置的专用PTP信号的示例。如图中所示,主机装置74以及周边装置78之间的共享信号(MOSI、MISO以及CLK)不会被中断(unbroken)。
安全装置86通过选择性使能(enable)到达周边装置的CS2#信号或是防止CS2#信号抵达周边装置,以扰乱主机装置74以及周边装置78之间的操作。图5的示例中,可通过将控制信号MASK_CS2#设定有效(assert)或是无效(deassert),来执行上述选择。
图6是根据本发明的一实施例的图5的系统130的安全装置86的方块图。在本示例中,安全装置86包含一接口90,用以连接SPI总线82;一处理器94,用以执行上述揭露的技术;以及一存储器98,用以存储由处理器94实施的一个或多个安全政策。处理器94包含一从属接口逻辑电路91以及接口监控逻辑电路(interface monitor logic,IML)92。从属接口逻辑电路91用以处理安全装置86以及主机装置74之间的通信。IML 92用以监控、控制以及选择性覆盖主机装置74对周边装置78的存取。
在一实施例中,安全装置86识别并扰乱未经授权的主机装置74在SPI总线82上尝试存取周边装置78的操作。从图5及图6可了解到图3所示的系统的任何安全特征亦可实现在图5的系统。
在上述实施例中,安全装置连接至总线且作为一额外的从属装置。然而,在其他的实施例中,此安全装置可连接作为一主控装置例如,此种实施例可应用于支援多主控装置(mult-master)能力的总线协议(bus protocol)。
由安全装置代替周边装置回应以防范未经授权操作
在另一实施例中,安全装置86可代替周边装置78对所选主机操作进行回应。以下说明主要参考图5及图6所示的配置,进行式例性说明。一般而言,本发明揭露的技术不限于特殊系统配置而可应用于其他任何配置,例如图3或是图4所示的系统配置。
在图5及图6的配置有关的一示例性实施例中,当检测到有读取指令针对周边装置78的地址空间中某一地址区,IML 92可对信号CS2_O#强加高位准信号,并以安全装置的内部存储器98服务(回应)主机的读取指令(或是读取指令的一部分)。主机装置74通常不知道此回应不是来自周边装置。在一些实施例中,上述机制也可适用于图4的安全系统110,例如,安全装置可覆盖MISO信号。
此机制的使用范例是周边装置78包含SPI闪存装置的系统,以及安全装置86覆盖闪存地址空间的一部分,藉此针对此地址区提供安全闪存仿真(emiulation)。例如,安全装置86可包含一信任平台模块(TPM),其使用IML 92覆盖包含初始主机启动代码的闪存地址区。此初始主机启动代码为主机开机时提取的启动指令。信任平台模块可覆盖单独存储有此经过验证的初始启动代码的闪存地址区,例如,此经过验证的初始启动代码可在程序执行跳至代码的其余部分之前对此其进行验证。
在一些实施例中,安全装置86更包含一用于SPI闪存装置的主控接口。除此之外,安全装置86可包含一适合接口以及电路以使主机装置74在存取SPI闪存装置时保持在重置状态,此机制通常为系统开机程序的一部分。例如,安全装置86可为一嵌入控制器(EC)、一超级输入输出装置(super I/O)或是一基板管理控制器(BMC)装置。
图7为根据本发明的一实施例绘示的安全开机程序的示例的流程图。此方法从上电开始,例如,系统电力开始供应。在重置维持步骤S100,安全装置86维持主机装置74在重置状态并可选地(optionally)启动SPI闪存(周边装置78)。在初始载入步骤104(此为可选步骤),安全装置86从SPI闪存载入一数据段,验证此数据段的真实性,并将其存储在内部存储器98。
在一覆盖步骤108,安全装置86设定IML 92以覆盖对SPI闪存(其为本示例的周边装置78)中的至少一预先定义地址区的存取。此受保护的地址区可存储,例如,一个或多个金钥、组态数据及/或主机装置74的初始启动数据段。
在一重置解除步骤112,安全装置86解除主机装置的重置状态。因此,在一启动步骤116,主机装置74开始自己的开机程序。在开机程序中,在一区域存取子步骤120,由安全装置86以内部存储器98服务对预先定义地址区的存取。
以此方式,安全装置可安全保护敏感信息例如金钥、组态数据及/或初始启动代码。主机装置74不知道其接收的信息来自安全装置而不是SPI闪存。
图7绘示安全装置如何覆盖对周边装置的预先定义地址区的存取的范例方法。在其他实施例,其他任何适合方法可用于此应用。此外,当冒充此SPI闪存装置时,安全装置可使用其他任何适合方式通过覆盖及/或扰乱未经授权操作,以保护闪存装置(或其他周边装置)。
再者,对未经授权操作的覆盖不限于保护特殊预先定义地址区。例如,可根据保护周边装置回传的数据或是SPI指令码来决定是否触发此覆盖操作。例如,安全装置可实施安全政策以禁用程序化、擦除、使能写入、状态/组态指令、及/或闪存装置的其他任何指令或功能。2015年8月24日华邦电子公司出版的“具有Dual/Quad SPI以及QPI的SPI 3V闪存”文件中已经载明SPI闪存指令以及控制的示例规范。
另一示例,在图7所示的方法,敏感信息位于闪存装置,由安全装置启动以及读取,以作为开机程序的一部分。在其他实施例,敏感信息可初始存储在安全装置中,例如,安全装置与闪存都存储此敏感信息,或是安全装置代替闪存而存储此安全装置。在此实施例,安全装置不需要从闪存装置读取此敏感信息。
在另一示例,图7所示的方法搭配SPI总线。在其他实施例,安全装置可使用总线的专用信号(如果有)及/或共享信号,来覆盖通过其他总线以及协议对周边装置的预先定义地址区进行的存取。例如,I2C总线是一上拉双向总线,其用于支援多个从属装置以及多个主控装置。因此,此协议具有一嵌入机制用于处理多个装置之间竞争。例如,当一I2C装置尝试将其设定成“1”(即是上拉操作)而检测到SDA线为“0”,则此装置会假定出现竞争并会释放总线,直到下一次操作。在一实施例中,I2C安全装置(例如,图1的安全装置36)用以重叠另一周边从属装置(例如,图1的周边装置28)的一些地址空间。例如,安全装置可用以回答另一周边装置所期待的相同数据。如果此安全装置检测到有数据不符合,例如,有装置尝试上拉成“1”但是SDA线上检测为“0”,则安全装置可开始进行回应措施,例如,产生一停止条件、在一个或多个数据线上驱动“0”、设定一无穷的时脉延展、或是其他任何适合动作。此技术使用一传统I2C从属装置(实体层不须有硬件改变)以监控拉下数据位准的装置。
在又一实施例中,安全装置86(其使用ILM 92)亦监控SPI地址的数据相位。当辨识到有数据不符合,安全装置可启动回应措施,例如,中断此操作、重置系统、锁住对金钥的存取、或是其他任何适合措施。
在一示例情境中,安全装置86持有存储在SPI闪存的某一代码部分的签章(signature)或是摘要(digest)。安全装置监控主机装置74对SPI闪存的存取,并在背景计算此代码部分的签章或是哈希值。如果检测到签章错误、哈希值错误或是SPI提取序列错误,则安全装置86可启动适合的回应措施。
在又一实施例,安全装置可监控在总线82上至少一周边装置78,并验证不同的装置的存取顺序是否与期待的相同。
在又一实施例中,当检测到对周边装置78的经授权操作时,安全装置86使用一个或多个信号(除了CS信号以外的信号)以限制对周边装置78的存取或是实施某一系统状态,例如以下示例,但本发明不受其限制:
·搭配图4的安全系统证明的任何信号。
·闪存的防写(write-protect)信号
·控制重置信号。
·控制电力管理信号。
·控制给一个或多个装置的电力。
·禁能系统通信;例如,可通过禁能一网络接口控制器(NIC)来禁能系统通信。
·重置系统。
安全装置监控SPI总线,让主机从闪存安全启动
在一上述实施例中,为了保护开机程序安全,安全装置代替闪存来回应启动代码给一主机装置。在以下描述的其他实施例,主机装置可通过一总线(例如SPI总线)从闪存取得启动代码。安全装置可通过监控主机在总线上对存储器存取操作,保护开机程序安全。安全装置持有或是可存取主机启动代码及/或其摘要的至少一些的副本。安全装置可比较副本与主机从闪存取得的启动代码(如需要可计算其摘要),并当检测到不符合时启动回应措施。
本发明揭露的技术会启动安全装置以防范多种安全威胁,例如,一个被盗用的主机或是闪存装置的安全威胁、或是在上总线信号上的安全威胁。以下说明以SPI总线以及SPI闪存举例说明。本发明揭露的技术可以类似方式应用于其他任何适合总线以及其他任何适合的非易失性存储器(NVM)。
在各种实施例中,副本包含启动代码的至少一部分的一真实映像,例如,一个或多个启动代码指令的清单。在此映像中的指令顺序可为启动代码的外显顺序、启动代码执行时的执行顺序(不一定依序执行)、或是其他任何顺序。在其他的实施例中,此副本可包含启动代码的至少一部分的真实摘要。此摘要可包含启动代码此任何部分或是全部运算所产生的函数(function)。在一示例实施例中,此摘要(亦称为签章)可包含一哈希值(hashvalue)或是一标记哈希值(signed hash value)。在本发明中,上述摘要可参考保全散列演算法(例如SHA-256)、或是使用类似HMAC/CMAC的机制参考代码签章、或是参考其他任何适合演算法。
用语“真实”是指此映像或是摘要为已知的且有高度信心其为未受破坏,因此值得信赖。为描述清楚起见,此真实映像或是摘要在以下段落称为主机的启动代码的至少一部分的“副本”。在以下的示例中,副本存储于内部,即安全装置的一非易失性存储器。然而,在其他实施例,此副本可存储在安全装置外部的非易失性存储器;在后者的实施例,副本可标记有适合的安全金钥,其存储在安全装置中。
作为示例,以下描述的组态是指具有时脉信号CLK、芯片选择信号CS#、四条数据线D0~D3的SPI总线。其他总线类型可具有不同的数量以及类型的线路。例如,单一数据线SPI可具有较少的线路。本发明揭露的技术可用任何类型的总线来实现。
图8是根据本发明的一实施例绘示的安全系统140的方块图,安全系统140的安全装置156保护主机装置144在SPI总线152上从闪存148取得开机程序的安全。安全装置156包含一接口160用以连接SPI总线152、以及处理器164用以执行本发明描述的方法。处理器164可保存或是存取主机144的启动代码的至少一部分的副本168(例如,映像或是摘要)。在此例中,用于选择闪存装置148的芯片选择线(CS#)亦提供输入至安全装置156。
图9是根据本发明的一实施例绘示一安全系统170的方块图,安全系统170的安全装置174保护主机装置144在SPI总线152上从闪存148读取的开机程序的安全。安全装置174包含一接口178用以连接SPI总线152、以及一处理器182执行本发明所揭露的方法。处理器182可保存或是存取主机144的启动代码的至少一部分的副本186(例如,映像或是摘要)。在本实施例中,SPI总线152的所有线路(包含四条数据线D0~D3、时脉线CLK、以及用于选择闪存装置148的CS#线)提供输入至安全装置174。
图10是根据本发明的一实施例绘示一安全系统189的方块图,安全系统189的安全装置187保护主机装置144在SPI总线上从闪存148读取开机程序的安全。在此例中,安全装置187包含一SPI总线监控器188,其可用硬件及/或软件模块执行本发明揭露的技术。安全装置更包含一存储器(图中未显示),其存储主机144的启动代码的至少一部分的副本。
相较于图8以及图9的示例,在本示例中,SPI总线的闪存的CS#线会通过安全装置187。因此,安全装置187能断开及/或修改主机144以及闪存148之间的信号。在本示例中,数据线(D0~D3)、时脉线(CLK)、以及用于选择闪存装置148的CS#线全部穿过安全装置187,因此此些信号分支不易断开,无须断开主机与闪存装置之间的连接,便可进行SPI总线监控。数据线以及时脉线没有被中断,但SPI总线监控器188可修改CS#线。例如,如果在总线上取得的启动代码不符合此副本,SPI总线监控器188可将CS#线设定无效(de-assert),例如,将其设定成高位准),藉此扰乱开机程序。
图11是根据本发明的一实施例绘示的保护主机装置144启动安全的方法的流程图。方法的变化型可通过本发明的安全装置(例如第8、9与10图所示的安全装置156、174与187)来执行。为使描述更为精简,所述的安全装置正执行的动作实际上由安全装置的处理器(例如处理器164或182)执行、或是由SPI总线监控器188执行。
此方法一开始,在重置持有步骤190,一安全装置会让主机144保持在一重置状态。在取得副本步骤194,当主机在重置状态时,安全装置取得主机的启动代码的至少一部分的副本,例如,映像或是摘要。如果副本是从一外部存储器取得且有标记,则在处理之前安全装置通常会先验证副本的真实性。在一实施例中,副本可预先存储于安全装置中,例如在系统生产期间或系统提供给最终用户之前的其他阶段。在此实施例,可省略步骤190以及194。
在开机启动步骤198,安全装置将主机144从重置状态解除,主机进行开机。在开机程序,主机144通过SPI总线152从闪存装置148取得启动代码,并运行所取得的启动代码。
在主机的开机程序期间,在一监控与比对步骤202,安全装置监控在总线上传输的数据,并撷取正在传送的启动代码的至少一部分,以及将此撷取的代码与副本进行比较。
在一实施例中,安全装置可通过识别主机正进行存取的地址(其指定为启动代码的地址),以识别有关于开机程序的操作。
在一实施例中,当副本包含启动代码的一部分的映像,安全装置通常会比较在总线上取得的原始数据值以及副本的对应数据值。当副本包含启动代码的一部分的摘要,则安全装置通常会计算在总线上取得的代码的摘要,接着比较所计算的摘要以及副本。
在一符合性检查步骤206,安全装置检查主机正从闪存装置取得的启动代码(安全装置监控SPI总线所截取的)是否符合副本。若是,则在成功完成步骤210,安全装置让开机程序成功完成。若否,例如,在开始应对措施步骤214,如果检测到两者不符合,安全装置假定开机程序已经被盗用,并启动一适合的回应措施。
图11所示的流程图是为了清楚描述概念的一示例性流程图。在其他实施例,可使用其他任何适合的流程。例如,安全装置不一定需要将主机装置保持在重置状态。在其他实施例,例如,安全装置可在主机的开机程序开始之前或之后取得副本,而不须延宕(stall)主机装置。
在一些情况,在计算于SPI总线上所截取的启动代码的至少一部分的摘要时,此摘要可能会受系统状态或其他参数影响。因此,此摘要可能会合法地符合至少二不同的副本。因此,在一些实施例中,安全装置可保存摘要的多个不同的副本。安全装置将从总线所截取的代码所计算的摘要与多个副本进行比较。如果所计算出的摘要与任何副本相符合,安全装置可许可开机程序完成。如果所计算的摘要不符合任一副本,则安全装置触发回应措施。
在各种实施例,当在步骤206检测到不符合时,安全装置可执行或是启动多种回应措施,例如,但本发明不限于,以下几个示例性动作。
·触发系统进行重置。
·通过在SPI总线152的至少一线路上强加一个或多个虚拟值以扰乱开机程序。本发明描述过的任何扰乱技术都可使用。
通过扰乱主机装置以及NVM装置之间的SPI总线的一个或多个线路,例如闪存的CS#信号,以扰乱开机程序。
·覆盖在主机装置以及NVM装置之间的SPI总线的一个或多个线路上的信号,例如,在总线上强加与原来信号相冲突的信号。
代替闪存装置在SPI总线上回应主机装置,并使用副本完成开机程序。
·防止主机装置对安全装置的资源进行存取,例如,对存储在安全装置中的既定机密信息进行存取。
·在内部存储器(例如,RAM或是OTP)记录警示或是错误记录事件,或是发布一警报信号。
其他任何适合的回应措施或是其组合
在一些实施例中,例如,当开机程序仍然在进行时,安全装置可即时(on-the-fly)检测到取得的启动代码与副本之间不符合,因此扰乱开机程序的回应措施仍是有效的。
在其他的实施例中,安全装置是在线下(offline)检测上述不符合的情况,例如在背景进行检测。在本发明中,所谓“线下”是指安全装置独立于开机程序的进行而独立检测是否有不符合的情形,因此不符合检测不是在开机程序的关键路径中,对开机延迟的影响较小或是不会有影响。线下不符合检测可在开机程序完成之后执行、或是与开机程序平行或是半平行进行。在此些实施例,安全装置通常将所取得的启动代码全部或是至少一部分存储在存储器暂存器中,用于做副本线下比对。对于在线下进行不符合检测,安全装置不需要将主机装置保持在重置状态或是延宕主机装置。
在一些实施例中,安全装置可保存或是存取在启动期间允许的SPI指令的可配置的“白名单”。在监控总线时,安全装置可根据此白名单过滤SPI指令,例如,以确保只有在白名单上的指令可实际传送到闪存装置。此白名单可限制指令的类型或是被存取的地址。例如,可允许对一指定地址范围的读取指令,而禁止写入命令或是对此指定地址范围以外的位置的读取指令。
图1、图3-图6以及图8-图10所示的系统20、70、110、130、140、170以及189的设置、多种系统装置(例如多种安全装置以及总线)的配置,是为了清楚描述概念而绘示的示例性配置图。在其他实施例,可使用其他任何适合的配置。
例如,为清楚描述,上述图中只显示单一周边装置以及单一主机装置。在一些实施例中,此系统可包含至少二周边装置及/或至少二主机装置。本发明所述的I2C总线以及SPI总线也仅是举例说明,而非为限制。在其他实施例,本发明揭露的技术可用其他任何适合类型的总线来实现或是做必要的修改。
如上所述,安全装置可在SPI总线上作为一从属装置。然而,在此实施例,即使开机程序不是由主机装置要求,安全装置仍能保护开机程序安全。再者,在一些实施例中,安全装置可在开机程序期间运行一个或多个负面测试(negative test)。例如,当CS#线未设成有效时(例如,在逻辑高位准),安全装置可检查是否任何数据线或是时脉线有改变或切换(toggle)自己的逻辑状态。在一些系统,当在启动时间的期间闪存装置没有被选择,则SPI线路不应在逻辑高位准以及逻辑低位准之间改变。例如,因为在总线上没有其他SPI从属装置,或是即使有其他SPI从属装置,其也不会在启动时间的期间被定址。因此,当CS#线尚未被设定有效(即,位于低位准)但是数据线或是时脉线上信号却有变化,其指示有攻击出现。安全装置可使用此指示触发一适合回应措施。
安全装置可执行的另一完整性检查可以是时序完整性(timing integrity)检查。在一实施例中,在开机程序中,安全装置可验证是否从一既定重置信号或是上电信号到一既定事件之间的时间延迟有在一预先定义范围内。例如,安全装置可测量从系统重置到在SPI总线上出现第一存取指令之间的时间延迟。如果时间延迟没有在预先定义范围内,例如时间延迟比正常值更长或更短,则安全装置可假定总线被篡改,进而触发一适合回应措施。在另一实施例中,当主机解除重置后,安全装置可检查主机在某一时间周期取得的映像或是摘要,假设主机应该在此时间内结束开机序列。
此外,安全装置可测量SPI总线的至少一线路的模拟电性参数值,如果模拟电性参数值落于预先定义范围外,则安全装置触发适合回应措施。可用于上述用途的模拟数值可包含,例如SPI总线的一个或多个线路的电容值、传输时间或是LRC延迟。在一些实施例中,当对应线路没有被总线上的主机或是其他任何装置驱动时可测量此模拟电性参数,例如当主机没有上电或是保持在重置状态。此类技术已经在美国专利7,797,115所解决,其公开内容通过引用并入本文。此外,其他任何适合的检测技术可用于测量总线信号的模拟电性参数值。在一示例性实施例,既定模拟电性参数的预先定义范围,例如,考虑SPI总线的既定线路的正常电容值的范围,可在系统制造期间决定并存储在非易失性存储器中。在启动期间,安全装置测量目标参数的目前值,并确认测量值是否在允许的预先定义范围内。
为了提高安全,主机装置、安全装置以及NVM装置之间的SPI信号的路线以及实体布局可依循特定原则(guideline)。例如,当在印刷电路板(PCB)上实现本发明的系统时,以下原则可让SPI总线较不易受到攻击。
主机装置以及安全装置使用球状矩阵(BGA)类型封装。
在印刷电路板的内层(inner layer)传送,例如,在从外部不能直接接触或接近的层。
当通过通孔(via)传送SPI信号时,较佳的是使用盲孔(blind via),例如使用盲孔连接内层之间的连接,并不允许从外界接触或接近。
将安全装置尽可能放置相邻于主机装置的SPI接脚。
为了再提高安全性,启动代码可设定成在SPI总线上输出一些数据,而安全装置可确认此些数据。例如,启动代码可输出一些主机暂存器值、组态、状态变数、常数、OTP位或是其他任何适合的主机参数值,使得安全装置能窥视总线来确认这些数值。在一些实施例中,主机参数值可经处理作为代码映像/摘要的一部分,而在其他的实施例中,主机参数值具有参考数据或是摘要的个别副本。
在一些实施例中,安全装置通过代替NVM装置回应主机,并代替NVM装置回应启动代码的副本给主机,以确保开机程序的安全。在一实施例中,安全装置回应的启动代码是可变的,其造成主机在SPI总线上的活动于开机程序的不同实体(instance)时会有所不同。启动代码不一定需要造成主机活动在每一开机程序实体都不同,但是至少在所选的实体下造成不同的主机活动。通过监控主机装置在总线上活动,安全装置能确认主机在开机程序的实体执行的启动代码符合安全装置提供给主机装置的启动代码。
在上述实施例,安全装置可提供任何适合代码,其可造成主机在总线上可检测的活动有所变化。例如,在不影响执行流程的情况下,安全装置可通过改变至少一代码值,以操作此启动代码映像。例如,此代码值可为专用代码固定值。因此,在此操作下,根据此代码值,主机执行的启动代码会在总线上输出一数值;因此,在安全装置已知的方式下与开机程序的情况不同。安全装置从总线读取上述数值,并确认此数值符合目前提供给主机的启动代码。输出值可包含,例如,代码自行检查摘要、数值本身或是其任何功能。此外,输出值可由主机以及安全装置已知的共享机密来决定。
在其他的实施例中,启动代码可造成主机在总线上活动在其他方面有差异,而不一定有关于输出值。例如,启动代码可造成主机在开机程序的不同实体之间出现不同延迟。此延迟差异可通过例如,安全装置将不同数量的NOP指令插置于不同开机程序实体的启动代码。在此例中,安全装置测量此延迟并确认此实际延迟符合期待延迟。期待延迟可用插置在目前的开机程序的NOP指令的实际数量来判断。此外,安全装置可确认所有插置的NOP指令都有被读取;或是,安全装置可测量在总线上的启动代码的摘要,并将此摘要与自己的副本摘要做比较。其他任何能造成主机活动上的差异都可使用,只要安全装置可检测到此差异。
安全系统20、70、110、130、140、170、189的不同装置可用任何适合硬件来实现,例如特殊应用集成电路(ASIC)、或是现场可编程逻辑门阵列(FPGA)。在一些实施例中,本发明的安全装置的一些装置,例如,处理器44或是94可用软件、或是硬件以及软件模块的组合,来实现。存储器48与98、以及存储器保存图8-图10所示的启动代码的副本,可由任何适合类型的存储器装置来实现,例如随机读取存储器(RAM)或是闪存。
在一些实施例中,处理器44、94、164及/或182可包含一通用可编程处理器,其由软件编程以执行本发明的功能。此软件可通过网络以电子信号形式下载至处理器,例如,或是可提供及/或存储在非暂时性有形媒体(例如磁性、光学、或是电性存储器)。
在上述一些实施例中,安全装置首先通过监控总线以检测一未经授权的操作,接着扰乱此操作。其他实施例,安全装置可不须先在总线上检测或是不须监控总线,便可扰乱上述操作。例如,此安全装置可覆盖某一主机的芯片选择(CS)线,直到或是除非此主机有被授权。上述授权可用任何适合方式执行,而不一定要使用相同总线。
本发明的方法以及系统可使用于各种应用,例如安全存储器应用、物联网(IoT)应用、嵌入式应用或是汽车应用。以上仅为举例,本发明不受其限制。
虽然本发明以前述的实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的专利保护范围须视本说明书所附的权利要求所界定者为准。

Claims (30)

1.一种安全装置,其特征在于,包含:
一接口,用以连接一服务一主机装置以及一非易失性存储器装置的总线;以及
一处理器,连接至该总线,该主机装置以及该非易失性存储器装置也连接至该总线,该处理器用以:
检测该总线上的一开机程序,在该开机程序中该主机装置从该非易失性存储器装置取得一启动代码;以及
根据主机装置的该启动代码的至少一部分的一副本,确定该开机程序的安全;
该处理器用以从该总线撷取该启动代码的至少一部分,以及当检测到从该非易失性存储器装置取得的该启动代码的该至少一部分与该副本之间有不符合时,启动一回应措施;
该副本包含该启动代码的该至少一部分的一映像,而该处理器比较该映像与从该非易失性存储器装置取得的该启动代码的至少一部分,以检测该不符合。
2.如权利要求1所述的安全装置,其特征在于,该副本包含该启动代码的该至少一部分的一真实摘要,而该处理器计算从该非易失性存储器装置取得的该启动代码的该至少一部分的一摘要,并比较从该非易失性存储器装置取得的该启动代码的该至少一部分的该摘要与该真实摘要,以检测该不符合。
3.如权利要求1所述的安全装置,其特征在于,该处理器在该开机程序进行时检测该不符合。
4.如权利要求3所述的安全装置,其特征在于,回应检测到该不符合时,该处理器用以强加一个或多个虚拟值在该总线的至少一线路上,以扰乱该开机程序。
5.如权利要求3所述的安全装置,其特征在于,回应检测到该不符合时,该处理器扰乱该主机装置与该非易失性存储器装置之间的该总线的一个或多个线路,以扰乱该开机程序。
6.如权利要求3所述的安全装置,其特征在于,回应检测到该不符合时,该处理器在该总线上代替该非易失性存储器装置回应该主机装置,以使用该副本完成该开机程序。
7.如权利要求1所述的安全装置,其特征在于,该处理器检测该不符合独立于该开机程序的进行。
8.如权利要求1所述的安全装置,其特征在于,该处理器在该安全装置的一内部存储器中保存该副本,或是在该安全装置外部的一存储器保存该副本。
9.如权利要求1所述的安全装置,其特征在于,在该开机程序的安全确定之前,该处理器防止该主机装置对一既定机密信息进行存取。
10.如权利要求1所述的安全装置,其特征在于,该处理器执行以下操作以确定该开机程序的安全:
代替该非易失性存储器装置回应该主机装置,并提供一启动代码给该主机装置,其中该启动代码造成该主机装置在该总线上进行的活动在该开机程序的第一实体及第二实体之间有所不同;以及
监控该主机装置在该总线上的该活动,以及确认该活动符合提供给该主机装置的该启动代码。
11.如权利要求1所述的安全装置,其特征在于,当该总线的一芯片选择线未被设定有效时,该处理器通过确保该总线的所有数据线与时脉线的逻辑状态不改变,以确定该开机程序的安全。
12.如权利要求1所述的安全装置,其特征在于,该处理器通过确保只有在一预先定义白名单上出现的总线指令被施加至该非易失性存储器装置,以确定该开机程序的安全。
13.如权利要求1所述的安全装置,其特征在于,该处理器通过确保在该开机程序中从一既定重置信号或是开机信号至一既定事件的一时间延迟有在一预先定义范围内,以确定该开机程序的安全。
14.如权利要求1所述的安全装置,其特征在于,该处理器通过确保该总线的至少一线路的一模拟参数值落在一预先定义范围内,以确定该开机程序的安全。
15.如权利要求1所述的安全装置,其特征在于,该启动代码指示该主机装置在该总线上输出一个或多个主机参数值,且该处理器通过监控以及确认输出在该总线上的该主机参数值,以确定该开机程序的安全。
16.一种安全方法,其特征在于,包含:
使用一安全装置通过一总线进行通信,其中一主机装置以及一非易失性存储器装置连接该总线;以及
使用该安全装置检测在该总线上的一开机程序,在该开机程序中该主机装置从该非易失性存储器装置取得一启动代码,并根据该主机装置的该启动代码的至少一部分的一副本确定该开机程序的安全;
确定该开机程序的安全的步骤包含:从该总线撷取该启动代码的至少一部分,以及当检测到从该非易失性存储器装置取得的该启动代码的该至少一部分与该副本不符合时,启动一回应措施;
该副本包含该启动代码的该至少一部分的一映像,其中检测不符合的步骤包含比较从该非易失性存储器装置取得的该启动代码的该至少一部分与该映像。
17.如权利要求16所述的安全方法,其特征在于,该副本包含该启动代码的该至少一部分的一真实摘要,以及该检测不符合的步骤包含计算从该非易失性存储器装置取得的该启动代码的该至少一部分的一摘要,以及比较从该非易失性存储器装置取得的该启动代码的该至少一部分的该摘要与该真实摘要的该摘要。
18.如权利要求16所述的安全方法,其特征在于,该开机程序进行时该检测不符合的步骤同时执行。
19.如权利要求18所述的安全方法,其特征在于,确定该开机程序的安全的步骤包含回应检测到不符合时,通过强加一个或多个虚拟值至该总线的至少一线路上,以扰乱该开机程序。
20.如权利要求18所述的安全方法,其特征在于,确定该开机程序的安全的步骤包含回应检测到该不符合时,通过扰乱该主机装置以及该非易失性存储器装置之间的该总线的一个或多个线路,以扰乱该开机程序。
21.如权利要求18所述的安全方法,其特征在于,确定该开机程序的安全的步骤包含:回应检测到该不符合时,在该总线上代替该非易失性存储器装置回应该主机装置,并使用该副本以完成该开机程序。
22.如权利要求16所述的安全方法,其特征在于,检测该不符合的步骤的执行独立于该开机程序的进行。
23.如权利要求16所述的安全方法,其特征在于,更包含在该安全装置的一内部存储器中保存该副本,或是在该安全装置外部的存储器中保存该副本。
24.如权利要求16所述的安全方法,其特征在于,更包含:在确定该开机程序的安全之前,防止该主机装置存取一既定机密信息。
25.如权利要求16所述的安全方法,其特征在于,确定该开机程序安全的步骤包含:
代替该非易失性存储器装置回应该主机装置,以提供一启动代码给该主机装置,以造成该主机装置在该总线的活动于该开机程序的一第一实体及一第二实体之间有所不同;以及
监控在该总线上该主机装置的该活动,以及确认该活动是否符合提供给该主机装置的该启动代码。
26.如权利要求16所述的安全方法,其特征在于,确定该开机程序安全的步骤更包含:当该总线的一芯片选择线未被设定有效时,通过确保该总线的所有数据线与时脉线的逻辑状态不改变,以确定该开机程序的安全。
27.如权利要求16所述的安全方法,其特征在于,确定该开机程序安全的步骤更包含:通过确保只有在一预先定义白名单上出现的总线指令被施加至该非易失性存储器装置,以确定该开机程序的安全。
28.如权利要求16所述的安全方法,其特征在于,确定该开机程序安全的步骤更包含:通过确保在该开机程序中从一既定重置信号或是开机信号至一既定事件的一时间延迟落在一预先定义范围内,以确定该开机程序的安全。
29.如权利要求16所述的安全方法,其特征在于,确定该开机程序的安全的步骤更包含:通过确保该总线的至少一线路的一模拟参数值落在一预先定义范围内,以确定该开机程序的安全。
30.如权利要求16所述的安全方法,其特征在于,该启动代码指示该主机装置在该总线上输出一个或多个主机参数值,且通过监控以及确认输出在该总线上的该主机参数值,以确定该开机程序的安全。
CN201911391289.3A 2019-04-07 2019-12-30 安全装置及方法 Active CN111797442B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/377,212 US10691807B2 (en) 2015-06-08 2019-04-07 Secure system boot monitor
US16/377,212 2019-07-04

Publications (2)

Publication Number Publication Date
CN111797442A CN111797442A (zh) 2020-10-20
CN111797442B true CN111797442B (zh) 2023-11-24

Family

ID=72805504

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911391289.3A Active CN111797442B (zh) 2019-04-07 2019-12-30 安全装置及方法

Country Status (3)

Country Link
JP (1) JP7005676B2 (zh)
CN (1) CN111797442B (zh)
TW (3) TWI791244B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI791244B (zh) * 2019-04-07 2023-02-01 新唐科技股份有限公司 監控系統開機之安全裝置及其方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012003772A (ja) * 2010-06-21 2012-01-05 Intel Corp セキュリティ・コプロセッサにおけるn進の局所性のためのシステム及び方法
JP2014021953A (ja) * 2012-07-24 2014-02-03 Ricoh Co Ltd 情報処理装置、画像処理装置、起動制御方法及び起動制御プログラム
TW201734881A (zh) * 2015-06-08 2017-10-01 新唐科技股份有限公司 透過匯流排安全存取周邊裝置之裝置及方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1977244A (zh) * 2004-06-29 2007-06-06 皇家飞利浦电子股份有限公司 安全闪存
US8375146B2 (en) * 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
US7774596B2 (en) * 2005-02-02 2010-08-10 Insyde Software Corporation System and method for updating firmware in a secure manner
US8291226B2 (en) * 2006-02-10 2012-10-16 Qualcomm Incorporated Method and apparatus for securely booting from an external storage device
EP2030124A4 (en) * 2006-05-24 2012-12-12 Safend Ltd METHOD AND SYSTEM FOR DEFENSE OF SECURITY SOFTWARE IN A USER'S COMPUTER
US7769993B2 (en) * 2007-03-09 2010-08-03 Microsoft Corporation Method for ensuring boot source integrity of a computing system
JP5085287B2 (ja) 2007-11-21 2012-11-28 株式会社リコー 情報処理装置、正当性検証方法および正当性検証プログラム
CN101281577B (zh) * 2008-05-16 2010-06-23 北京工业大学 一种对bios进行保护的可信计算系统及其应用方法
US8607034B2 (en) * 2008-05-24 2013-12-10 Via Technologies, Inc. Apparatus and method for disabling a microprocessor that provides for a secure execution mode
CN101281570B (zh) * 2008-05-28 2010-07-28 北京工业大学 一种可信计算系统
US8555015B2 (en) * 2008-10-23 2013-10-08 Maxim Integrated Products, Inc. Multi-layer content protecting microcontroller
US8561138B2 (en) 2008-12-31 2013-10-15 Intel Corporation System and method to provide added security to a platform using locality-based data
CN101520831B (zh) * 2009-03-27 2011-08-24 深圳市永达电子股份有限公司 安全终端系统及终端安全方法
CN102262557B (zh) * 2010-05-25 2015-01-21 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
US8996851B2 (en) * 2010-08-10 2015-03-31 Sandisk Il Ltd. Host device and method for securely booting the host device with operating system code loaded from a storage device
FR2970099B1 (fr) * 2010-12-29 2013-01-11 Viaccess Sa Procede de chargement d'un code d'au moins un module logiciel
KR20120092222A (ko) * 2011-02-11 2012-08-21 삼성전자주식회사 보안 부팅 방법 및 보안 부트 이미지 생성 방법
JP2014056390A (ja) 2012-09-12 2014-03-27 Ricoh Co Ltd 情報処理装置及び正当性検証方法
US9880856B2 (en) * 2013-02-22 2018-01-30 Marvell World Trade Ltd. Patching boot code of read-only memory
US9953166B2 (en) * 2013-07-04 2018-04-24 Microsemi SoC Corporation Method for securely booting target processor in target system using a secure root of trust to verify a returned message authentication code recreated by the target processor
US10430589B2 (en) * 2015-03-19 2019-10-01 Intel Corporation Dynamic firmware module loader in a trusted execution environment container
CN105843671B (zh) * 2016-03-22 2018-11-16 西安电子科技大学 基于云平台的虚拟机资源安全监控及风险预处理系统
US10055155B2 (en) * 2016-05-27 2018-08-21 Wind River Systems, Inc. Secure system on chip
US20170364683A1 (en) 2016-06-17 2017-12-21 Google Inc. Computing device secure boot
US10223531B2 (en) * 2016-12-30 2019-03-05 Google Llc Secure device state apparatus and method and lifecycle management
US11263326B2 (en) * 2017-06-02 2022-03-01 Apple Inc. Method and apparatus for secure system boot
WO2019112971A1 (en) * 2017-12-07 2019-06-13 Apple Inc. Method and apparatus for secure system boot
TWI791244B (zh) * 2019-04-07 2023-02-01 新唐科技股份有限公司 監控系統開機之安全裝置及其方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012003772A (ja) * 2010-06-21 2012-01-05 Intel Corp セキュリティ・コプロセッサにおけるn進の局所性のためのシステム及び方法
JP2014021953A (ja) * 2012-07-24 2014-02-03 Ricoh Co Ltd 情報処理装置、画像処理装置、起動制御方法及び起動制御プログラム
TW201734881A (zh) * 2015-06-08 2017-10-01 新唐科技股份有限公司 透過匯流排安全存取周邊裝置之裝置及方法
JP2019023896A (ja) * 2015-06-08 2019-02-14 新唐科技股▲ふん▼有限公司 バスを介して周辺デバイスを安全にアクセスするための方法

Also Published As

Publication number Publication date
TW202143034A (zh) 2021-11-16
TW202143033A (zh) 2021-11-16
JP7005676B2 (ja) 2022-02-04
CN111797442A (zh) 2020-10-20
TWI738135B (zh) 2021-09-01
TWI791244B (zh) 2023-02-01
TW202102997A (zh) 2021-01-16
JP2020173806A (ja) 2020-10-22
TWI756156B (zh) 2022-02-21

Similar Documents

Publication Publication Date Title
US10691807B2 (en) Secure system boot monitor
US10452582B2 (en) Secure access to peripheral devices over a bus
JP6411568B2 (ja) バスを介して周辺デバイスに安全にアクセスするための装置、システム及び方法
JP4708414B2 (ja) ランタイム・セキュリティ保証用の自律型メモリ・チェッカ
US10776527B2 (en) Security monitoring of SPI flash
US10783250B2 (en) Secured master-mediated transactions between slave devices using bus monitoring
US11188321B2 (en) Processing device and software execution control method
CN113168474A (zh) 固件的安全验证
CN111226215B (zh) 透明附接的闪存存储器安全性
CN111797442B (zh) 安全装置及方法
TWI733399B (zh) 安全裝置、安全方法、安全系統以及安全設備
JP7086891B2 (ja) バスを介した周辺装置への安全アクセス
JP7079558B2 (ja) Spiフラッシュ用安全装置
WO2024078159A1 (zh) 完整性度量方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant