CN113672878A - 防止回滚攻击的系统及方法 - Google Patents

防止回滚攻击的系统及方法 Download PDF

Info

Publication number
CN113672878A
CN113672878A CN202110494281.0A CN202110494281A CN113672878A CN 113672878 A CN113672878 A CN 113672878A CN 202110494281 A CN202110494281 A CN 202110494281A CN 113672878 A CN113672878 A CN 113672878A
Authority
CN
China
Prior art keywords
version
volatile memory
memory
code
active
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.)
Granted
Application number
CN202110494281.0A
Other languages
English (en)
Other versions
CN113672878B (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
Application filed by Nuvoton Technology Corp filed Critical Nuvoton Technology Corp
Publication of CN113672878A publication Critical patent/CN113672878A/zh
Application granted granted Critical
Publication of CN113672878B publication Critical patent/CN113672878B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Supply And Distribution Of Alternating Current (AREA)

Abstract

本发明提供一种防止回滚攻击的系统及方法,该系统包括只读存储器程序码,包含一启动程序,于芯片通电时运作;存储版本识别码的可编程熔丝阵列存储器,存储一个可开机固件版本的复本的非易失性存储器,其中第一识别码被存储,包含现用主要编号与次要编号,被一私有金钥标记;第二识别码被存储,包含复原主要编号与次要编号,被该私有金钥标记;以及硬件,遵守第一指令,由开机只读存储器程序码提供,关闭复原非易失性存储器的写入功能直到下次系统重置(启动程序除外),遵守第二指令,解除复原非易失性存储器的写入保护,其中与这两版本及这两识别码关联的固件映像,被该私有金钥标记,且该开机只读存储器程序码认证固件映像与所述识别码。

Description

防止回滚攻击的系统及方法
技术领域
本发明关于半导体装置,特别关于防止对半导体装置的回滚攻击的系统及方法。
背景技术
IBM专利文件US20080175381A1描述存储安全版本数据的熔丝(fuse)。该文件提供可利用于系统的方法与装置,以动态地更新用于加密安全数据的安全版本参数。该IBM系统包括一装置,用于加密即将存储于该装置外部的存储器的数据区块;该装置包含第一持久存储部件,用于存储安全版本参数;第二持久存储部件,用于存储主要金钥数据;加密引擎,被设定用于加密即将存储于外部存储器的安全数据区块;其中,以下至少之一:受加密的安全区块,或为此产生的完整性检查值,受安全版本参数的影响;以及用于修改第一持久存储部件,以在不修改先前已修改的第一持久存储部件的情形下,更新安全版本参数的机制。
以单个一次性可程序化存储器(OTP)设定的分组固件版本描述于:
https://developer.trustedfirmware.org/w/tf_m/design/secure_storage_service/rollback_protection/
上述公开文件描述一进阶精简指令集机器(ARM)平台的安全架构,提供防止回滚(roll-back)的准则,以及使回滚可靠的范例。其中,该公开文件陈述“一个合适的实施可能每个软件实例采用一个计数,或将一个列表的版本编号聚集于一个数据库档案,该数据库档案本身的版本采用单一计数”。
以下链接:https://www.mylgphones.com/how-to-identify-qfuse-anti-rollback-version-of-lg-kdz-firmware.html
陈述:“您的手机当前软件版本为ZVA,Qfuse版本为ARB01。您想由ZVA降级至ZV6,然而ZV6的固件含有ARB00版本的Qfuse”。该公开文件亦主张:“请勿对防回滚(Qfuse)版本低于您的手机当前Qfuse版本的KDZ或TOT固件进行刷机。”
该技术系统的其他叙述,见于以下文件:
US20140250290A1/en
WO2014131652A1/en
US20170308705A1/en
https://www.intel.com/content/dam/www/public/us/en/documents/guides/bootloader-s ecurity-features-programmers-guide.pdf
一种实施非易失性、不可重置,用于嵌入式系统的计数器的方法描述于下列线上公开文件:
https://www.maximintegrated.com/en/design/technical-documents/app-notes/5/5042.html.
所有于本说明书内提及的公开文件与专利文件所公开的内容,与其中直接或间接引用的公开文件与专利文件,除标的否认或放弃外,特此并入参照文件。若并入的内容与明确公开于此的内容不一致,则其解释为明确公开于此的内容描述某些实施例,而并入的内容描述其他实施例。并入内容中的定义可视为待讨论的词汇的一种可能定义。
发明内容
某些实施例试图提供一种用于硅装置固件防止回滚攻击的安全系统与方法。
某些实施例试图提供一种延长硅装置寿命的系统与方法。
某些实施例试图为OTP提供一种安全的防回滚方法与系统。
某些实施例试图提供一种延长寿命的特征,例如在OTP中,一般包括存储OTP版本位的版本编号解码协定于该OTP,相对于传统版本编号解码方案。
某些实施例试图于写入保护的非易失性存储器(NVM)中提供固件的额外复本。
某些实施例试图提供版本控制,使用外部存储器上版本数据的两个复本。
根据某些实施例,提供一种安全的防回滚系统,该系统使用数据的多个复本,至少在至少两个中每一个外部NVM装置上,以及在OTP上。
一般而言,有一个OTP与一个外部NVM(例如快闪存储器)。一个NVM中的一个固件复本开放读/写、故可更新,而第二个NVM(而非该OTP)中的另一个固件复本不开放任何读/写。“外部”一词一般包括位于含有OTP装置的硅装置外部的NVM装置。这两“外部快闪存储器”可能位于同一电路板/电路上,但毋须整合于硅装置内。
单一装置可能选择性地被使用,该装置的一部分为写入保护。
某些实施例试图为存储器,例如OTP,通过保证防止回滚而提供加强的安全性,该防止回滚包含存储密码的版本号码的双份复本于外部非易失性存储器内。
某些实施例试图提供安全的版本控制,即使OTP空间有限。
某些实施例试图提供安全的阶层式版本控制,使用OTP与两个存储于快闪存储器的版本复本。于阶层式版本控制中,有多于一个版本种类,包含拥有不同安全等级的主要与次要版本编号。该主要版本可存储于OTP中,并可被复制于快闪存储器中,而该次要版本仅在快闪存储器中。该OTP版本不可被降级,该快闪存储器版本则可。例如3.3可改变为3.2,但不可改变为2.4。
某些实施例使用两个外部存储器装置中版本栏位的已标记复本,这两个版本栏位可能与OTP版本栏位合并。该两个外部装置中的复本版本编号,至少其一不可被主处理器存取,防止软件于开机时通过持有在第二个序列周边界面(SPI)中,仅能由设定应用集成电路(ASIC)的只读存储器程序码(ROM code)存取的该版本编号的一复本,攻击单一序列周边界面。
下列词汇可解释为与任何现有技术文献中出现的定义一致、与本说明书所载一致、或包括其个别的范围,如下:
固件(Firmware,FW)映像(image):密码键(例如RSA或ECC)标记的可开机固件。
“映像”一词意图包含一种固件程序码状态,该状态与一已知版本编号关联。在一次升级中,一个与版本编号n关联的已知“映像”可被一个稍后安装、与稍后版本(例如版本n+1)关联的“映像”取代。一次升级可包含安装较当前安装版本稍后的固件映像的动作。
开机(Boot up):由芯片通电(或重置)的时刻起,至开机ROM程序码准许固件执行为止。
固件版本(FWV):一个识别码,一般为一个递增计数,被特别指定给一个设定固件版本,例如1.0或53.37,一般包含一个“主要编号”与一个“次要编号”,标记法上可用一点(.)区隔两者。
现用非易失性存储器(active NVM):开机固件映像的主要存储处,此存储器于开机后可读、可写。
复原非易失性存储器(recovery NVM):用于保护固件防止回滚攻击的存储器。此存储器于开机后不可读、不可写。
主要编号(Major number):固件版本(又称主要更新),某些实施例试图提供回滚防护的对象。一般而言,每一NVM皆存储此编号(“复原主要编号”)。
次要编号(Minor number):次要编号可用于表示安全敏感性较低的固件更新,提供其较弱的回滚防护即已足够,例如未记录于OTP编号(“次要更新”)。每一NVM可能存储此编号(“复原次要编号”)。
熔丝位阵列(Fuse Bit Array):一个OTP位阵列,每一位对应单一主要编号。
一次性可程序化存储器编号(OTP number,即OTP编号):被程序化的最高位熔丝阵列位,对应最高主要编号。
熔丝阵列(Fuse Array):OTP内的一区域,被保留供存储最新主要编号使用。
固件升级版本控制(Firmware upgrade versioning):包含指定设定版本名称或设定版本编号予被升级的固件的个别设定状态。使用编号时,该版本编号一般包含一主要编号与一次要编号。主要编号与次要编号一般以递增顺序被指定,使较晚版本拥有比较早版本大的主要编号及/或次要编号。
非易失性存储器(Non-Volatile Memory,NVM):一旦被程序化后,即使失去电力亦维持其值的存储器。
一次性可程序化存储器(One-Time Programmable memory,OTP):一种NVM,仅允许数据被写入一次。由于数据仅能被写入一次,一个OTP装置无法被恶意软件更新侵入。
快闪存储器(Flash memory):一种可抹除的非易失性存储装置或存储器(又称NVM)。一般而言,快闪存储器用于存储用于微处理器的程序。由于快闪存储器可抹除,一个已程序化的应用程序可被移除与取代、或更新。这意味着装置可被重新程序化而不必被更换,可降低开发成本。快闪存储器亦支援栏位内软件更新。
序列周边界面(Serial Peripheral Interface,SPI):一个界面的非限制性范例,用于连接慢速或序列的周边设备,简单、因而低成本,因其拥有芯片选择线路,而非寻址方案。SPI是一种序列通信协定,可与各种装置通讯,其中包含序列快闪装置。SPI界面可快于廉价的嵌入式控制器替代品(例如133MHz)。部分SPI界面支援2位及/或4位数据汇流排,该汇流排可产生高于仅用序列界面达成的传输速率。
SPI快闪存储器(SPI Flash):具成本效益的建立芯片外NVM的方式,包括一个被连接以覆盖SPI的快闪模组。SPI快闪存储器十分优越,因其成本低廉、占用空间小。例如一个32MB的芯片可能仅需花费数美金。
外部(external):于电路板上可被实体更换。
芯片选择(Chip select,CS),又称从属选择(Slave select,SS):数位电子装置中的一控制线路,由连接至单一电脑汇流排的一组集成电路(又称芯片)中选择一个子集合(一个或更多)。该序列周边界面汇流排(又称SPI汇流排)为使用芯片/从机选择线路的汇流排一例。
以上所述提供一种电脑化系统,该系统被保护不受回滚攻击,而所述攻击可能在该系统的固件被改变时发生,从而定义该固件的版本。该系统包含下述的全部或任何子集合:
i.一个芯片(chip),包含:
a.只读存储器(ROM)程序码,一般包含一个可能整合于硅芯片的启动程序(bootloader,又称开机只读存储器程序码[boot ROM code]),其中该开机ROM程序码当芯片通电或重置时皆运作;及/或
b.可程序化熔丝阵列存储器(例如一次性可程序化[OTP]存储器),于该存储器中存储版本识别码(例如版本编号);
ii.第一(又称现用)及/或第二(又称复原)非易失性存储器(又称NVM),于所述存储器中的可开机固件(又称开机时载入的固件)版本的第一及/或第二复本可个别被存储;
其中,第一识别码一般存储于该现用NVM中,该识别码于存储时可识别设定版本,该识别码的第一复本可存储于该现用NVM中,该第一识别码一般包含至少一个现用主要编号及/或一个现用次要编号,两者一般皆被标记一私有金钥;
其中,第二识别码存储于例如该复原NVM中,该识别码于存储时可识别设定版本,该识别码的第二复本一般存储于该复原NVM中,该第二识别码一般包含至少一个复原主要编号及/或一个复原次要编号,两者皆可被标记该私有金钥;
以及
iii.一个硬件装置,该装置一般遵守第一指令,该第一指令可由开机ROM程序码于开机后(又称启动程序完成时)提供,以上锁(又称至少关闭写入、提供防写保护),直到例如下次系统重置,至少该复原NVM(亦可能有该OTP)包含确保至少该复原NVM(亦可能有该OTP)为不可写入(又称不可写入存取),一般而言启动程序除外,及/或遵守第二指令,该第二指令由开机ROM程序码提供,一般发生于下次系统重置时,以解除至少该复原NVM(亦可能有该OTP)的写入保护,从而提供一个一般而言,例如当较新版本固件已生效后,可防止较旧版本固件被启动的系统。
一般而言,与这两个版本及/或这两个识别码关联的固件映像,被标记一私有金钥。
一般而言,该开机ROM程序码被设定以认证至少一固件映像及/或认证该第一识别码与第二识别码之一或两者。
以上提及的各实施例,以及其他实施例,将于下节中详述。
任何出现于本说明书文字或图式的商标,为其所有者的财产,所述商标于本说明书的出现,仅为说明或图示本发明的实施例实施方式的范例。
除非另有说明,否则于下文讨论中显而易见地,在整个说明书讨论中应注意,使用“处理(processing)”、“运算(computing)”、“估算(estimating)”、“选择(selecting)”、“排行(ranking)”、“分级(grading)”、“计算(calculating)”、“决定(determining)”、“产生(generating)”、“重估(reassessing)”、“分类(classifying)”、“生产(producing)”、“立体匹配(stereo-matching)”、“登录(registering)”、“检测(detecting)”、“关联(associating)”、“迭加(superimposing)”、“取得(obtaining)”或相似的词汇,皆指至少一电脑或运算系统或处理器或相似的电子运算装置的动作及/或处理程序,将于该运算系统的暂存器及/或存储器内以物理(例如电子)量表示的数据,操作及/或转换为其他该运算系统的存储器、暂存器或其他此等资讯存储、传输或显示装置内相似地以物理量表示的数据。“电脑(computer)”一词应被广泛地解释为涵盖任何一种含有数据处理能力的电子装置,包含但不限于个人电脑、伺服器、嵌入式核心、运算系统、通讯装置、处理器(例如数位信号处理器[DSP]、微控制器、现场可程序化逻辑闸阵列[FPGA]、设定应用集成电路[ASIC]等)及其他电子运算装置。
于此处分别列出的元件毋须为不同的部件,可能为相同的结构。一个元件或特征可能存在的陈述,乃意图包含:
(a)实施例,所述实施例内该元件或特征存在;
(b)实施例,所述实施例内该元件或特征不存在;以及
(c)实施例,所述实施例内该元件或特征可选择地存在,例如使用者可设定或选择该元件或特征是否存在。
附图说明
本发明的某些实施例图示于下列附图:
图1为一简化的流程图,该流程图图示一已知处理程序,该处理程序中存储器芯片的序号可用于检测窜改事件;于窜改事件中,存储器芯片被另一拥有较低计数值的存储器芯片取代。具体而言,图1显示一个已知演算法,该演算法于一32位组存储器分页内递增该计数。
图2与图3为简化的方块图,这两个方块图图示数个系统,所述系统的构造与本发明的实施例一致;各所述实施例中的部件,若有需要,可能与另一部件或与任何于此描述或图示的实施例或方法结合;可能提供图示的部件的全部或任何子集合。
图4至图5描述根据某些实施例的初始设定与更新程序。
包含于本发明的范围内的方法与系统,可能以任何合适的顺序(例如图示的顺序)包含功能方块图的部分(例如任何合适的子集合)或全部作为范例。该功能方块图显示于该具体图示的实施。
此处描述与图示的运算、功能或逻辑部件,可以多种形式被实施,例如作为硬件电路,例如但不限于客制化超大型集成电路(custom VLSI circuits)或门阵列(gatearrays)或可程序化硬件设备,例如但不限于现场可程序化逻辑门阵列(FPGA),或作为软件程序码,存储于至少一有形或无形的电脑可读媒体并可由至少一处理器执行,或其中任何合适的组合。一个设定的功能部件,可能由软件程序码的一设定顺序,或多个软件程序码顺序形成;就该待讨论的功能部件而言,所述软件程序码顺序,以于此描述的方式集体行动,或表现,或行动。例如,该部件可能分布遍及数个程序码顺序,例如但不限于物件(objects)、程序(procedures)、函数(functions)、常式(routines)与程序(programs),并可能源自数个一般而言协同运作的电脑档案。
任何于此描述的逻辑功能,可酌情作为即时应用程序(real-time application)被实施,且该逻辑功能可采用任何合适的结构选项,例如但不限于ASIC或DSP或其中任何合适的组合。任何于此提及的硬件部件,可能事实上包含一个或更多硬件装置(例如芯片),所述硬件装置可能彼此并置或远离。
附图标号:
SPI:序列周边界面
SPI_CS0#,SPI_CS1#:芯片选择
OTP:一次性可程序化存储器
ROM:只读存储器
NVM:非易失性存储器
401,402,403,404,405,406:步骤
501,502,503,504,505,506:步骤
具体实施方式
包含可抹除程序化只读存储器模拟模式(EPROM-emulation mode)的电子式可抹除程序化只读存储器(EEPROM)对实施非易失性、不可重置的计数器十分有用。该存储器芯片的序号可用于检测窜改事件;于窜改事件中,存储器芯片被另一拥有较低计数值的存储器芯片取代。图1为一已知演算法的范例(例如请参阅https://www.maximintegrated.com/en/design/technical-documents/app-notes/5/5042.html),该演算法于一32位组存储器分页内递增该计数。
一种常见用于损害程序码的攻击方法,乃利用已知的程序码脆弱性与弱点。为防止此种攻击,程序码供应者定期维护其程序码,所述维护一般包含将易受某种攻击、目前存储于已知或甫寻得的硅装置的旧版本程序码,以不易受所述攻击的新版本程序码取代。
然而,若攻击者成功将已维护、不易受攻击的新版本程序码,以易受攻击的旧版本程序码取代(又称“回滚”[rollback]),则该攻击者将可利用该旧程序码的已知弱点。为防止此攻击路径,一个程序码版本可能被存储(例如存储于一OTP存储器上的硅装置),以使确保该程序码版本为最新、而非较旧而易受攻击的程序码版本成为可能。该OTP(一次性可程序化)存储器无法被抹除,故该OTP内的版本无法被回滚。然而由于用于存储程序码版本编号的OTP空间有限,故此法限制了一给定系统可接收的程序码更新或版本的数量。
某些实施例通过使用两个外部存储器装置(SPI快闪存储器)中版本栏位的已标记复本解决上述问题,所述版本栏位可能与OTP版本栏位合并。因此,本发明的一实施例仅使用两个外部已标记复本,另一实施例则使用与OTP版本栏位合并的这两个外部复本。根据前者的实施例(仅使用两个快闪存储器),一般而言,两个快闪存储器初始包含版本1(1,1)。接着该现用快闪存储器版本编号更新至2,当现用快闪存储器更新时,该复原快闪存储器为写入保护,(2,1)。于下一次重置时,该现用快闪存储器内容的有效性与可靠性被测试。若该现用快闪存储器版本被认定为有效,则该(现在可存取该复原快闪存储器的)安全程序码复制该现用快闪存储器内容至该复原快闪存储器,包含该版本编号(2,2)。接着于准许较不安全的程序码执行前,该复原快闪存储器变为写入保护。
根据后者的实施例(使用两个快闪存储器与一个OTP),快闪存储器1,2分别皆包含主要与次要版本,而OTP仅包含主要版本1(1.2,1.2,1)。该现用快闪存储器版本编号更新至2.0,当现用快闪存储器更新时,该复原快闪存储器仍为写入保护,(2.0,1.2,1)。于下一次重置时,该现用快闪存储器内容的有效性与可靠性被测试。若该现用快闪存储器版本被认定为有效(依照上述步骤),则该(现在可存取该复原快闪存储器与该OTP的)安全程序码复制该现用快闪存储器内容至该复原快闪存储器,包含该版本编号(2.0,2.0,1)。此外,该OTP版本亦更新至该主要版本(2.0,2.0,2)。接着于准许较不安全的程序码执行前,该复原快闪存储器变为写入保护,该OTP上锁。
如图2所示,某些实施例将存储于外部存储器的程序码版本栏位,与存储于内部OTP空间的版本数据合并。该版本栏位可能被存储为两个复本,其一(快闪存储器#0版本)位于外部存储器#0,另一(快闪存储器#1版本)位于外部存储器#1。
该外部存储器可能包含SPI快闪存储器。固件更新于运行(runtime)外部存储器(图2的快闪存储器#0)上被实行。
该版本栏位可能藉由两个编号或数量被实施,所述编号或数量于快闪存储器:OTP版本(OTP_VER)与快闪存储器版本(FLASH_VER)中被程序化。
该OTP被预期为该复原/现用快闪存储器主要版本的镜像(mirror);若否,则可假定有一次回滚攻击被尝试。
应注意,一般而言,这两编号总是相同,更新过程中除外,于更新时该现用与复原/OTP版本编号不同。
该复原快闪存储器一般用于发生回滚攻击或尝试更新失败时,复原运行(现用)快闪存储器内容。
该现用(或运行)快闪存储器,一般与该复原快闪存储器物理结构相同,可能用于多种用途,包含例如存储固件或任何欲存储的数据。该版本编号通常于固件映像中拥有一固定地点。该复原快闪存储器可能保存于前次更新时,存储于现用快闪存储器的任何内容的备份。若有需要,该复原快闪存储器可被设定为某些形式,以保存其他种类的常数数据;该快闪存储器为写入保护。
在任何一次固件更新中,一般而言,该OTP版本编号或该快闪存储器版本(FLASH_VER)之一将会递增。任何前进的版本编号皆可被使用。一个范例更新程序于此描述。
于图2中,该OTP版本(OTP VER)一般包含该OTP专用版本栏位中,被程序化为值1的最高位。于该快闪存储器中,该程序码(固件)加上版本编号一般被一同标记,例如为了使二者不可分离。
存储该程序码版本编号的该版本栏位,一般由例如该固件的公开金钥认证。当该程序码版本编号的OTP或快闪存储器版本之一递增时,该固件程序码的新版本一般首先更新于快闪存储器#0。
任何合适的方法皆可能被采用,以决定快闪存储器#0内的版本是否可靠地运作。例如,于更新程序中,该新固件可能于该装置内被载入,且该装置运作各种测试(例如通讯、显示)以确保该装置于任何系统故障发生时可复原。
一般而言,当快闪存储器#0中的版本可靠地运作时,该固件更新将继续,例如以下列方式:
·若该递增的版本编号为该OTP版本(OTP_VER),则于该OTP空间内的版本亦同样递增,且于快闪存储器#1内的版本亦相应地更新。
·若该递增的版本编号为该快闪存储器版本(FLASH_VER),则仅有快闪存储器#1中的FLASH_VER被更新,而该OTP的版本不更新。
确保此固件更新的逻辑运算,可能存储于任何合适的位置,例如于安全程序码中(例如ROM程序码),以及整个开机层级中。一般而言,于使用者处理程序中,该ROM程序码位于最高安全等级,而可靠性测试位于最低安全等级。
当一新产品版本发布时,例如对一不采用于此描述的机制与方法的标准OTP版本的实施,该OTP固件版本栏位(例如图2中的OTP版本)可能已于该OTP存储器中使用大量位,因而将后续OTP版本可更新的数量限制至OTP版本存储器剩余的位数。例如,若仅剩三个OTP位,则仅能再更新三次。
为了于新产品绕过此问题,该发布的(第一)版本编号可被写入于该OTP中的一不同栏位(first_ver_num)。确保此编号被写入于一“不同”栏位的逻辑运算,可能例如于更新程序中存在于该ROM程序码内,或可能于外部被程序化于快闪存储器装置中。
例如,一个8位栏位可表现任何由0至255的版本编号。应注意,以十六进位表示的8位除外,任何不同方法皆可用于表现当前固件版本。例如OTP中可能有一区域,该区域中每一已烧录的位代表一次16个正常版本编号的跳跃,而非第一版本编号。
例如,在一个较旧装置中,其OTP版本存储器可能表示版本33(此时,该OTP中33个版本位已被使用)。然而,在一个新产品中,其FIRST_VER_NUM栏位可能为33,而其OTP_VER栏位则尚无位被使用。
在一次固件更新中,所述新产品与旧产品可能皆烧录OTP中的一位,所述烧录动作由开机时存在于例如ROM/安全程序码内的逻辑运算主导。
应注意,一般而言,一个较旧装置可能已有许多来自较旧固件版本的已使用OTP位。较新装置并未使用所述固件版本,故并未烧录所述OTP位。由于该新产品中提供、而旧产品未提供的该OTP_VER栏位尚未有位被使用,该新产品可比该旧产品承受更多次固件更新,相较于该旧产品,可有效延长该新产品的寿命。
应注意,对于旧装置而言,若所有OTP版本位皆已被烧录,则该快闪存储器可取而代的地用来表示该OTP版本。该取代可能损害回滚攻击的防护能力。于该快闪存储器中,该OTP的版本编号可被扩充。
应注意,于快闪存储器#1与OTP中的任何版本更新,乃由一安全程序码实行,该程序码可能存在并运作于一层级0(ROM程序码后第一层)的固件中,或可能运作于一分离保护的处理器中,或由任何其他安全的硬件运作。
某些实施例试图提供一安全的版本控制系统,该系统可防止存储于非易失性存储装置(例如但不限于磁碟机、SPI快闪存储器或任何其他非易失性存储器)的嵌入式固件的回滚攻击。于此描述的所述系统,藉由防止该系统于较新固件版本已更新并生效后启动较旧固件版本,可有效防止回滚攻击。此系统可促进固件的安全更新,例如于旧固件版本的弱点被发现之处。一般而言,于每一开机流程中,在启用装置内的程序码前,安全程序码会比较该OTP与快闪存储器版本编号是否一致。若该比较的结果为不一致,则开机失败并中止。例如,图3为一简化的方块图,图示一回滚防护系统(rollback prevention system,RPS),包含下列部件的全部或任何子集合:
a.一个包含启动程序ROM程序码的嵌入式芯片,该程序码于芯片通电时皆运作;
b.两个非易失性存储器(NVM)装置,用以保存开机时运作的固件;
c.一次性可程序化(OTP)或“熔丝”(fuse)存储器,该存储器整合于芯片中,用以存储版本编号;
d.一硬件装置或方法,用以关闭所述NVM之一的读取与写入功能。
[实施例包含但不限于下列叙述:]
实施例1:一种电脑化系统,该系统被保护不受回滚攻击,而所述攻击可能在该系统的固件被改变时发生,从而定义该固件的版本。该系统包含下述的全部或任何子集合:
i.一个芯片,包含:
a.ROM程序码,包含一个整合于硅芯片的启动程序(bootloader,又称开机只读存储器程序码[boot ROM code]),其中该开机ROM程序码当芯片通电时皆运作;以及
b.可程序化熔丝阵列存储器(例如一次性可程序化[OTP]存储器),于该存储器中存储版本识别码(例如版本编号);
ii.第一(又称现用)及第二(又称复原)非易失性存储器(又称NVM),分别存储可开机固件(又称开机时载入的固件)版本的第一复本与第二复本;
其中,第一识别码存储于该现用NVM中,该识别码于存储时可识别设定版本,该识别码的第一复本存储于该现用NVM中,该第一识别码包含至少一个现用主要编号与一个现用次要编号,两者皆被标记一私有金钥;
其中,第二识别码存储于该复原NVM中,该识别码于存储时可识别设定版本,该识别码的第二复本存储于该复原NVM中,该第二识别码包含至少一个复原主要编号与一个复原次要编号,两者皆被标记该私有金钥;以及
iii.一个硬件装置,该装置遵守第一指令,该第一指令由开机ROM程序码于开机后(又称启动程序完成时)提供,以上锁(又称至少关闭写入、提供防写保护),直到下次系统重置,至少该复原NVM(亦可能有该OTP)包含确保至少该复原NVM(亦可能有该OTP)为不可写入(又称不可写入存取),一般而言启动程序除外,以及遵守第二指令,该第二指令由开机ROM程序码提供,发生于下次系统重置时,以解除至少该复原NVM(亦可能有该OTP)的写入保护,从而提供一个当较新版本固件已生效后,可防止较旧版本固件被启动的系统。
其中,固件映像可能与这两版本关联;且
其中,这两识别码可能被标记私有金钥;且
其中,该开机ROM程序码可能被设定以认证至少一固件映像及/或认证该第一及/或第二识别码。
该开机ROM程序码可能认证主要与次要编号,例如于该复原NVM与该现用NVM中。
应注意,该固件程序码本身于开机前一般仅存在于该NVM中,而开机后该程序码一般亦存储于该装置的随机存取存储器(RAM)中。
根据某些实施例,于开机阶段无外部程序码可执行,且于开机阶段结束、任何外部程序码可运行前,写入保护回复运作,从而有效防止回滚攻击。
该固件映像可能存储于该快闪存储器中。
每一固件版本编号一般与一设定固件映像关联,并与该固件映像一同被标记。
一般而言,这两NVM中的固件映像为相同。然而,于开机时,该ROM程序码可能被设定为仅在该现用映像中的次要版本编号高于或等于该复原映像中的次要版本编号时,方准许开机,及/或该ROM程序码可能被设定为仅在该现用映像中的主要版本编号高于或等于该OTP中的版本编号时,方准许开机。
于此使用的“重置”(reset)一词,乃包括数个事件,该芯片于所述事件后、或由于所述事件,而重新通电。
一般而言,该私有金钥的持有者为该系统的制造商,且由于仅有获准可标记固件映像的个体可存取该金钥(因此仅有该获准的个体可使用该金钥标记该固件映像),故该私有金钥为保密。
一般而言,该公开金钥存储于硅装置内部写入保护的存储器中(例如上述的ROM程序码,或写入保护的OTP,或写入保护的嵌入式快闪存储器)。
一般而言,该公开金钥必须不可被未经许可的程序码更改,以防止任何被更改的公开/私有金钥配对的使用。该ROM程序码可能验证一标头,该标头包含一个第二金钥,该第二金钥可用以认证该固件本身;由于第二金钥生效,故此亦为有效。
实施例2:一种保护系统不受回滚攻击的方法,所述攻击可能在该系统的固件被改变时发生,从而定义该固件的版本。该方法包括:
i.提供一系统,包含实施例1中元件的全部或任何子集合;
ii.存储第一版本可开机固件(又称第一固件映像)复本,于该现用与复原NVM中;
存储至少该第一版本的一主要编号的第一复本与第二复本,分别于所述第一NVM装置与第二NVM装置中;以及
程序化该OTP存储器中的至少一位,以吻合(又称匹配)该主要编号;
iii.进行至少一次固件次要更新,包含将存储于该现用NVM的可开机固件版本,以该可开机固件的一个新“次要”版本取代,以及将存储于该现用NVM的识别码,以一个包含较高次要编号的新识别码取代;以及
iv.于至少一次必然导致一次开机的重置中;
a.命令该启动程序:
决定至少该现用NVM的内容是否为有效,该现用NVM中的识别码是否大于该OTP编号;以及
中止开机,若该现用NVM中的主要编号低于该OTP编号,以及
b.仅在该现用NVM中的识别码(又称现用次要识别码)大于该复原NVM中的识别码(又称复原次要识别码)时,进行操作b1,b2,分别包括:
操作b1:该可开机固件的新版本,覆盖取代当前存储于该复原NVM中的可开机固件版本;以及
操作b2:该复原NVM中的识别码被更新,以吻合该现用NVM中识别码的值。
一般而言,固件与版本编号必须一同被标记,使该版本编号与该实质可开机固件连结。若攻击者试图置换固件内容而不改变版本编号,或反之,则标记认证将失败。因此该标记赋予该版本编号于安全性上的意义。
于该复原NVM中,该标记被使用,作为自动复原事件中(例如于此描述的自动复原事件)一个该现用NVM的相同副本。
一般而言,所述OTP位被程序化,以匹配亦存储于这两个NVM中的该版本主要编号。
应注意,该复原NVM于开机后为使用者不可存取(写入锁定)。仅有该启动程序可写入该复原NVM。
应注意,OTP中的各位被程序化为二进位的1,否则即为二进位的0。于OTP中的熔丝阵列中,一阵列(例如包含位0-64)中的一个位的序号(index)对应一个OTP编号。例如:若该阵列的程序位17为程序化为1的最高位,则此状况被解读为OTP编号17。若位于序号19的位接着被程序化为1,则该动作将改变OTP编号至19。上述动作于上升的OTP序号尚未耗尽时皆可进行,因此例如若该阵列为64位,则最高可存储的OTP编号为64。
实施例3:根据实施例1、或根据任何前述的实施例的系统,其中该OTP存储器包含多个熔丝,所述熔丝的状态表示版本编号。
实施例4:根据实施例1、或根据任何前述的实施例的系统,其中该OTP中的多个位(又称OTP位)被用于表示一编号;
OTP编号=起始编号+计数;
所述多个位包含一个n位的阵列,从而定义n个位序号,分别与该n个位关联,该n个位包含一个由值为“0”的位所构成的(“第一”)子集合,以及一个由值被熔为“1”的位所构成的(“第二”)子集合,其中该计数被决定为数个位序号中的最高序号,所述位序号与被熔为1的n个位所构成的(“第二”)子集合关联。
该已编码的起始编号一般存在于一受保护的非易失性内部存储器中,例如于该(或另一)OTP中、于一嵌入式快闪存储器中、或ROM程序码中。
上述特征亦于此以“位移特征(offset feature)”称之,该起始编号亦于此以“位移”(offset)一词称之。
该起始编号(又称位移)可能被编码为例如一般的二进位编号。或亦可使用另一方法存储该起始编号,而非存储一单纯的编号(例如1、45或100),该方法使用较少的OTP熔丝,从而于节省OTP熔丝的同时,亦延长该产品的寿命。例如,于一包含5个熔丝的栏位内,每一已程序化的熔丝分别对应一次起始编号递增50的动作,代表起始编号150:
X X X
以此法可达的最大起始编号为250:
X X X X X
相较之下,若将250以二进位形式表示,将需要8个熔丝:
X X X X X X
例如,此处显示一阵列,该阵列仅有第3位被熔(所述状态为可能,尽管通常第1位至第3位皆被熔)。因此该最新的有效主要编号为3。
X
于以下阵列中,第7位亦被熔(尽管通常第1至第7位,或至少第3至第7位皆被熔)。因此该最新的有效主要编号为7。
X X
相较之下,若另一区域(例如位组)存储一已编码的编号(又称起始编号)于该OTP中,则此编号的解读为位移,例如依以下范例所示:
例如,若值“75”(以二进位或十进位编号,或使用任何其他有效的方法)被存储于该OTP中的起始编号栏位中:
75
则若给定一仅有第3位被熔的阵列,则该最新的有效主要编号为3+75=78,而非3。
X
相似地,若给定一第7位亦被熔的阵列,则该最新的有效主要编号为7+75=82,而非7。
X X
应注意,此实施例可延长该产品的寿命,相较于未提供起始编号的系统。
实施例5:根据实施例1、或根据任何前述的实施例的系统,其中该硬件装置不关闭该现用NVM的读取及/或写入,使该现用NVM于开机后为可读写。
实施例6:根据实施例4、或根据任何前述的实施例的系统,其中,当该第一固件映像存储于该现用与复原NVM时,该OTP编号与存储于这两NVM中的主要编号相等。
实施例7:根据实施例2、或根据任何前述的实施例的方法,其中由该硬件装置将该复原NVM上锁的行为亦包括关闭该复原NVM的读取,包括确保该复原NVM为不可读。
实施例8:根据实施例2、或根据任何前述的实施例的方法,其中将该复原NVM上锁的行为包括将该复原NVM的连结切断。
实施例9:根据实施例2、或根据任何前述的实施例的方法,其中由该硬件装置将该OTP上锁的行为亦包括关闭该OTP的读取,包括确保该OTP为不可读。
实施例10:根据实施例2、或根据任何前述的实施例的方法,其中该存储于该现用与复原NVM中的可开机固件的第一版本,与至少该主要编号,被一同以一公开金钥标记,从而产生一个签章(signature)。
应注意,此实施例对已标记的程序码有用,因对未标记的程序码而言,相同版本可能与任何程序码关联。
一般而言,该公开金钥与一私有金钥关联,该私有金钥(仅)由一获许可的固件发布者持有。
该固件保有的该(公开)金钥,可用于认证一较高层级的固件。
实施例11:根据实施例10、或根据任何前述的实施例的方法,其中该启动程序对该现用NVM内容的有效性测试,包含对该现用NVM内容与该签章的密码认证(cryptographicauthentication)。
实施例12:根据实施例11、或根据任何前述的实施例的方法,其中该认证使用一个与该私有金钥配对的公开金钥,且其中该公开金钥(而非该私有金钥)存储于该OTP中。
该私有金钥一般(仅)被一获许可的标记者存储。
实施例13:根据实施例2、或根据任何前述的实施例的方法,且其中该启动程序对该现用NVM内容的有效性测试,包含确保该现用NVM中的主要编号高于或等于该复原NVM中的主要编号。
实施例14:根据实施例2、或根据任何前述的实施例的方法,且其中该启动程序对该现用NVM内容的有效性测试,包含从至少一个系统层级测试提供一个指示,以确保至少一个预先订定的准则。
实施例15:根据实施例14、或根据任何前述的实施例的方法,且其中该准则包含决定该新版本可开机固件可稳定开机。
一次先前的成功开机为一范例,该范例为决定该新版本可开机固件可稳定开机的准则。
实施例16:根据实施例2、或根据任何前述的实施例的方法,且其中该启动程序成功完成开机,若且唯若该现用NVM中的主要编号与该OTP编号相等;且
一个由例如启动程序进行的测试,查明该现用NVM中的有效内容。
实施例17:根据实施例2、或根据任何前述的实施例的方法,其中一个信任链(chain of trust)反复地被实施至少一次,该信任链使用已认证的程序码认证一额外的程序码层级,该程序码层级包括额外的主要及/或次要版本编号,所述版本编号可认证另一程序码层级。
该已认证的程序码可于认证后由该NVM载入至RAM。
实施例18:根据实施例1、或根据任何前述的实施例的系统,其中该现用与复原NVM包含两个分离的存储器装置。
实施例19:根据实施例1、或根据任何前述的实施例的系统,其中该现用与复原NVM包含位于单一快闪存储器装置中的两个存储器范围。
实施例20:根据实施例4、或根据任何前述的实施例的系统,其中该起始编号为写入保护。
实施例21:根据实施例2、或根据任何前述的实施例的方法,更包含命令该启动程序测试该现用NVM内容的有效性,并中止开机、从而导致开机失败,若该现用NVM的内容为无效。
实施例22:根据实施例21、或根据任何前述的实施例的方法,且其中该启动程序测试该现用NVM内容的有效性,于该启动程序决定该现用NVM中的识别码是否大于该OTP编号,或该(现用)NVM内容为有效之前。
实施例23:根据实施例2、或根据任何前述的实施例的方法,其中所述操作b1,b2由已认证的程序码进行。
一般而言,该已认证的程序码存在于该NVM中,或ROM中的ROM程序码开机区块中,或一/该OTP中,或一受保护的嵌入式快闪存储器中,或RAM中的已认证程序码中。
实施例24:根据实施例2、或根据任何前述的实施例的方法,其中所述操作b1,b2由该启动程序进行。
实施例25:根据实施例2、或根据任何前述的实施例的方法,该方法更包含:
进行至少一次固件主要更新,包含将存储于该现用NVM的可开机固件版本,以一个新可开机固件“主要”版本取代,以及将存储于该现用NVM的识别码,以一个包含较高主要编号的新识别码取代;以及
v.于至少一次必然导致一次开机的重置中;
a.命令该启动程序:
测试该现用NVM内容的有效性;
中止开机、从而导致开机失败,若该现用NVM的内容为无效,
决定该现用NVM中的识别码是否大于该OTP编号,若至少该现NVM的内容为有效;以及
中止开机,若该现用NVM中的主要编号小于该OTP编号,以及
b.仅在该现用NVM中的识别码大于该OTP编号时,进行操作b3,b4,b5,分别包括:
操作b3:该可开机固件的新版本,覆盖取代当前存储于该复原NVM中的可开机固件版本;
操作b4:该复原NVM中的识别码被更新,以吻合该现用NVM中识别码的值;以及
操作b5:该熔丝阵列中一个闲置位,被程序化为该现用NVM中识别码的值,以确保该OTP编号吻合该现用NVM中的识别码,且亦吻合该复原NVM中的识别码。
应注意,于此描述的所述操作的顺序,并不意图具有排他性。例如:操作b3首先进行、其后b4、其后b5的顺序并非必要。任何其他顺序皆可能被使用。
实施例26:根据实施例25、或根据任何前述的实施例的方法,其中所述操作b3,b4,b5由已认证的程序码进行。
一般而言,该已认证的程序码存在于该NVM中。
实施例27:根据实施例25、或根据任何前述的实施例的方法,其中所述操作b3,b4,b5由该启动程序进行。
实施例28:根据实施例4、或根据任何前述的实施例的系统,并且其中该OTP编号被用以作为该现用主要编号与该复原主要编号的一个比较参考值。
实施例29:根据实施例11、或根据任何前述的实施例的方法,其中该认证使用一公开金钥,该公开金钥与该私有金钥配对,且其中该公开金钥(而非该私有金钥)存储于该ROM中。
初始设定与更新阶段可能如下所述,分别见于图4与图5,以独立或分离、或结合的方式,与于此描述或图示的任何实施例同时发生。具体而言如下所述。
图4为一简化的流程图,该流程图图示一个根据某些实施例,载入一个拥有较高主要编号(“主要更新”)的新固件映像的方法。图4所示的方法一般包括下列操作的全部或任何子集合,所述操作以合适的顺序进行,例如以下的顺序:
步骤401:该第一固件映像被相同地存储于该现用与复原NVM中。
该OTP编号与存储于这两NVM中的主要编号(现用版本编号=1.2,复原版本编号=1.2,OTP编号=1)匹配。
步骤402:该新固件映像(以较高的主要编号,(2.0,1.2,1))被载入至该现用NVM中。
步骤403:于一次重置后,该启动程序认证并测试该现用NVM内容的有效性与可靠性。若该固件无效,则该启动程序中止。
步骤404:当该启动程序发现该现用主要编号大于该OTP编号时,该新固件映像覆盖,以取代该复原NVM中的旧固件映像。(2.0,2.0,1)。
步骤405:该熔丝阵列中的另一位被程序化,此时该OTP编号与该现用主要编号以及该复原主要编号(2.0,2.0,2)匹配。
步骤406:该复原NVM与该熔丝阵列上锁,直至下次系统重置为止。主要更新完成。
图5为一简化的流程图,该流程图图示一个根据某些实施例,载入一个拥有较高次要编号(“次要更新”)的新固件映像的方法。图5所示的方法一般包括下列操作的全部或任何子集合,所述操作以合适的顺序进行,例如以下的顺序:
步骤501:该第一固件映像被相同地存储于该现用与复原NVM中。
步骤502:该OTP编号与存储于这两NVM中的主要编号(现用版本编号=1.2,复原版本编号=1.2,OTP编号=1)匹配。
步骤503:该新固件映像(以较高的次要编号,(1.3,1.2,1))被载入至该现用NVM中。
步骤504:于一次重置后,该启动程序认证并测试该现用NVM内容的有效性与可靠性。若该固件无效,则该启动程序中止。
步骤505:当该启动程序发现该现用次要编号大于该复原次要编号时,该新固件映像覆盖取代该复原NVM中的旧固件映像。(1.3,1.3,1)。此时该OTP编号并不改变。
步骤506:该复原NVM与该熔丝阵列上锁,直至下次系统重置为止。次要更新完成。
采用OTP编号位移栏位(例如以于此描述的机制)的寿命延长特征(LifetimeExtension Feature),可能与于此描述或图示的任何实施例同时发生。该OTP的空间有限。OTP存储器的不可逆或破坏性特性,意指一新硅装置可被载入一前进的固件版本(多个熔丝阵列位将被“烧录”)。此情况将导致OTP版本更新的寿命更加受限。为处理此情况,除熔丝阵列外,另一(“OTP编号位移”)栏位可能被实施于该OTP中。此实施可准许该OTP编号自一前进的编号起始,延长该新装置的寿命。
某些实施例的优点包括:
于该外部存储器装置中提供两个版本阵列,可防止对较旧固件的回滚攻击。于此描述的该防回滚解决方案特别优越,因攻击者无法窜改该固件映像,例如由于对该固件映像的任何改变将破坏该RSA签章的有效性。于该复原NVM中的(例如对该固件的)防护,可防止任何对该现用NVM固件映像的非实体攻击。即使该攻击者欲以一较旧的已标记固件映像完全覆写该固件映像,该复原NVM固件映像、及其较大的版本编号,亦将告知该启动程序该覆写尝试确实为一次回滚攻击。于攻击者以较旧的固件映像(包含一低于原版本的版本编号)实体置换这两NVM(现用与复原)的事件中,该OTP编号将告知该启动程序该置换行为确实为一次回滚攻击。若仅进行次要更新,如上所述的对这两NVM的实体置换,将无法避免例如威胁。因此该OTP栏位的提供,可防止(至少)另一次攻击,例如藉由于这两新装置中,以较旧版本的固件置换两个外部存储器,进行双重回滚攻击。
另一优点为该版本数据为未加密,因此该版本(一般以未加密形式存储)为可更新。
某些实施例提供安全的版本控制,即使OTP空间有限,而所述OTP空间有限的事实,于使用当前技术的系统中,限制了一给定系统可接收的程序码更新的数量或次数。
于此描述的寿命延长特征十分优越,如以下范例所示。考虑一个寿命为15年的产品,该产品每年约有4次主要更新,假设该产品有64个熔丝阵列位。若10年后有一批新产品被生产,以于此描述的方法(包含寿命延长特征)可将该新一批产品的寿命延长10年。若无寿命延长特征,则由于所述位中的2/3于初始固件映像设定中将立刻被“浪费”,该新一批产品将仅能存续5年。所述“较旧”的装置于其15年的年限(或最大主要更新)届满后将必须被除役。
上述实施例可能有多种变化。例如,应注意,于上述的实施例中使用版本编号而非版本名称,所述版本编号包含主要与次要部分,所述主要与次要部分皆被指定为递增;然而,上述实施例中的所述特性并不意图具有排他性。并且,根据某些实施例,于此提供二层保护,该保护中主要固件版本获得较强的防回滚保护,而次要固件版本获得较弱的防回滚保护。于此描述的采用OTP编号位移栏位(例如以于此描述的机制)的寿命延长特征,不一定被提供。根据其他实施例,于此提供一层保护,该保护中仅对主要固件版本进行回滚防护,与采用OTP编号位移栏位(例如以于此描述的机制)的寿命延长特征结合。应注意,于此描述的实施例,其适用性可延伸至任何包含一个OTP与两个装置的系统,这两装置至少其中之一为写入保护,并保存该装置的固件程序码。
任何一层实施例可防护所有非实体回滚攻击,所述攻击包含覆写该现用NVM,但不防护实体回滚攻击,所述攻击同时将这两NVM置换为包含较旧固件的NVM。后者的防护于提供实体存在的二层实施例中为可能,因该复NVM为写入锁定。
应注意,该写入保护的NVM可能存储一个最新版本的完整额外复本,或仅存储该版本编号。
固件,若于此用于实施某些实施例,可能保存于非易失性存储器(例如快闪存储器或ROM)中。
或者,于此描述的某些实施例可能部分或仅(亦即不含固件)于硬件被实施,所述实施中于此描述的变数、参数、有序操作与运算的部分或全部可能位于硬件中。
应注意,“强制”(mandatory)、“必要”(required)、“需要”(need)与“必须”(must)等词汇,乃指实施的选择,所述选择乃于一设定实施或应用的脉络内,为清楚说明起见而于此描述,且所述词汇并不意图具有排他性,因于另一实施中,所述相同元件可能被定义为非强制且非必要,或甚至可能一同被除去。
本发明描述于各分离的实施例脉络中的特征(包含操作),亦可能于一实施例中合并提供。例如,一个系统实施例意图包含一个对应的程序实施例,反的亦然。特征亦可能与该技术领域所习知的特征,以及(特别是、但不限于)描述于【背景技术】一节、或于该节内所提及的公开文件中的特征结合。反的,本发明为简洁起见而描述于单一实施例脉络中、或以设定顺序呈现的特征(包含操作),亦可能被分开、或以任何合适的子组合提供,所述子组合包含该技术领域所习知的特征(特别是、但不限于描述于【背景技术】一节、或于该节内所提及的公开文件中的特征),或以不同顺序呈现。“例如”(e.g.)一词用于表记一个不意图具有排他性的范例。各方法可能包含部分或全部图示或描述的操作,以合适的顺序进行,例如以图示或描述于此的顺序。
于此描述的每一元件(例如操作),可能拥有于此描述或图示的所有特征;或根据其他实施例,可能拥有于此描述的特征的任何子集合。
应注意,图示于多个图式中的元件,及/或于文字叙述中提及的元件,仍可能合并于单一实施例中,除非于此另有说明。应注意,任何于此为清楚说明起见,而于分离的实施例脉络中描述的特征(features)、属性(properties)、逻辑(logic)、模组(modules)、区块(blocks)、操作(operations)或功能(functionalities),亦可能合并于单一实施例中提供,除非本说明书或通常知识特别指出某些特征/属性/逻辑/模组/区块/操作/功能为互斥且无法合并。任何于此显示与描述的系统,可能用于实施显示与描述于此的任何操作或方法,或可能与所述操作或方法合并。

Claims (29)

1.一种防止回滚攻击的系统,其特征在于,包括:
i.芯片,包含:
a.开机只读存储器程序码,当所述芯片通电时所述开机只读存储器程序码皆运作;以及
b.一次性可编程存储器,用以存储一版本识别码;
ii.现用非易失性存储器以及复原非易失性存储器,分别存储可开机固件的版本的第一复本与第二复本;
其中,第一识别码存储于所述现用非易失性存储器中,且用以识别所述可开机固件的一设定版本,所述设定版本的所述第一复本存储于所述现用非易失性存储器中,所述第一识别码包含至少一个现用主要编号与一个现用次要编号,两者皆被标记一私有金钥;
其中,第二识别码存储于所述复原非易失性存储器中,且用以识别所述可开机固件的所述版本,所述版本的所述第二复本存储于所述复原非易失性存储器中,所述第二识别码包含至少一个复原主要编号与一个复原次要编号,两者皆被标记所述私有金钥;以及
iii.硬件装置,根据由开机只读存储器程序码于开机后提供的一第一指令,所述硬件装置将至少所述复原非易失性存储器上锁直到下次系统重置,其中将所述复原非易失性存储器上锁包含确保除了来自所述开机只读存储器程序码的操作之外所述复原非易失性存储器为不可写入,以及根据所述下次系统重置时由所述开机只读存储器程序码提供的第二指令,所述硬件装置解除所述复原非易失性存储器的上锁,从而当较新版本的可开机固件已生效后,防止较旧版本的可开机固件被启动;
其中,与所述较新版本以及所述较旧版本相关联的多个固件映像,以及所述第一识别码及所述第二识别码均被标记所述私有金钥;以及
其中,所述开机只读存储器程序码用以认证所述多个固件映像,及认证所述第一识别码及所述第二识别码。
2.根据权利要求1所述的系统,其特征在于,所述一次性可编程存储器包含多个熔丝,所述熔丝的状态表示该版本识别码。
3.根据权利要求1所述的系统,其特征在于,所述一次性可编程存储器中的多个位被用于表示一OTP编号;
OTP编号=起始编号+计数;
所述多个位包含一个n位的阵列,从而定义n个位序号,分别与所述n个位关联,所述n个位包含一个由值为“0”的位所构成的第一子集合,以及一个由值被熔为“1”的n个位所构成的第二子集合,其中所述计数被决定为多个位序号中的最高序号,所述多个位序号与被熔为“1”的n个位所构成的所述第二子集合关联。
4.根据权利要求3所述的系统,其特征在于,当所述固件映像存储于所述现用非易失性存储器与所述复原非易失性存储器时,所述OTP编号与存储于所述现用非易失性存储器与所述复原非易失性存储器中的主要编号相等。
5.根据权利要求3所述的系统,其特征在于,所述起始编号受到写入保护。
6.根据权利要求3所述的系统,其特征在于,所述OTP编号被用以作为所述现用主要编号与所述复原主要编号的一个比较参考值。
7.根据权利要求1所述的系统,其特征在于,所述硬件装置不关闭所述现用非易失性存储器的读取及/或写入,使所述现用非易失性存储器于开机后为可读写。
8.根据权利要求1所述的系统,其特征在于,所述现用非易失性存储器与所述复原非易失性存储器包含两个分离的存储器装置。
9.根据权利要求1所述的系统,其特征在于,所述现用非易失性存储器与所述复原非易失性存储器包含位于单一快闪存储器装置中的两个存储器范围。
10.一种防止回滚攻击的方法,其特征在于,包括:
I.提供一系统,包括:
i.芯片,包含:
a.开机只读存储器程序码,当芯片通电时所述开机只读存储器程序码皆运作;以及
b.一次性可程序化存储器,用以存储一版本识别码;
ii.现用非易失性存储器以及复原非易失性存储器,分别存储可开机固件的版本的第一复本与第二复本;
其中,第一识别码存储于所述现用非易失性存储器中用以识别所述可开机固件的所述版本,所述版本的所述第一复本存储于所述现用非易失性存储器中,所述第一识别码包含至少一个现用主要编号与一个现用次要编号,两者皆被标记一私有金钥;
其中,第二识别码存储于所述复原非易失性存储器中且用以识别所述版本,所述版本的所述第二复本存储于所述复原非易失性存储器中,所述第二识别码包含至少一个复原主要编号与一个复原次要编号,两者皆被标记所述私有金钥;以及
iii.硬件装置,根据由开机只读存储器程序码于开机后提供的一第一指令,所述硬件装置将至少所述复原非易失性存储器上锁直到下次系统重置,其中将所述复原非易失性存储器上锁包含确保除了来自所述开机只读存储器程序码的操作之外所述复原非易失性存储器为不可写入,以及根据所述下次所述系统重置时由所述开机只读存储器程序码提供的第二指令,所述硬件装置解除所述复原非易失性存储器的上锁,从而当较新版本的可开机固件已生效后,
防止较旧版本的可开机固件被启动;
II.存储第一版本的可开机固件的复本,于所述现用非易失性存储器与所述复原非易失性存储器中;
存储至少所述第一版本的一主要编号的第一复本与第二复本,分别于所述复原非易失性存储器与所述现用非易失性存储器中;以及
程序化所述一次性可编程存储器中的至少一位,使所述至少一位代表的数值匹配所述主要编号;
III.进行至少一次所述可开机固件的次要更新,包含将存储于所述现用非易失性存储器的可开机固件版本以所述可开机固件的一个新的次要版本取代,以及将存储于所述现用非易失性存储器的第一识别码以一个包含较高次要编号的新识别码取代;以及
IV.于至少一次必然导致一次开机的重置之后,
a.执行开机只读存储器程序码:
如果所述现用非易失性存储器的内容为有效,则决定所述现用非易失性存储器中的识别码是否大于所述一次性可编程存储器中的OTP编号;以及
若所述现用非易失性存储器中的主要编号低于所述OTP编号,则中止开机;以及
b.仅在当所述现用非易失性存储器中的现用次要识别码大于所述复原非易失性存储器中的复原次要识别码时,进行操作b1与b2:
操作b1:以所述可开机固件的新版本覆盖取代当前存储于所述复原非易失性存储器中的可开机固件版本;以及
操作b2:更新所述复原非易失性存储器中的识别码,使其匹配所述现用非易失性存储器中的识别码。
11.根据权利要求10所述的方法,其特征在于,由所述硬件装置将所述复原非易失性存储器上锁的行为亦包括关闭所述复原非易失性存储器的读取,包括确保所述复原非易失性存储器为不可读。
12.根据权利要求10所述的方法,其特征在于,将所述复原非易失性存储器上锁的操作包括将所述复原非易失性存储器的连结切断。
13.根据权利要求10所述的方法,其特征在于,所述硬件装置将所述一次性可编程存储器上锁的操作亦包括关闭对所述一次性可编程存储器的读取,包括确保所述一次性可编程存储器为不可读。
14.根据权利要求10所述的方法,其特征在于,所述存储于所述现用非易失性存储器与复原非易失性存储器中的可开机固件的第一版本,与至少所述主要编号,被一同以一公开金钥标记,从而产生一个签章。
15.根据权利要求14所述的方法,其特征在于,执行所述开机只读存储器程序码以对所述现用非易失性存储器内容的有效性测试,包含对所述现用非易失性存储器内容与所述签章的密码认证。
16.根据权利要求15所述的方法,其特征在于,所述密码认证使用一个与所述私有金钥配对的公开金钥,且其中所述公开金钥存储于所述一次性可编程存储器中。
17.根据权利要求15所述的方法,其特征在于,所述认证使用一公开金钥,该公开金钥与所述私有金钥配对,且其中所述公开金钥存储于一只读存储器中。
18.根据权利要求10所述的方法,其特征在于,执行所述开机只读存储器程序码以对所述现用非易失性存储器内容的有效性测试,包含确保所述现用非易失性存储器中的主要编号高于或等于该所述复原非易失性存储器中的主要编号。
19.根据权利要求10所述的方法,其特征在于,执行所述开机只读存储器程序码以对所述现用非易失性存储器内容的有效性测试,包含从至少一个系统层级测试提供一个指示,以确保至少一个预先订定的准则。
20.根据权利要求19所述的方法,其特征在于,所述准则包含决定所述新版本的可开机固件可稳定开机。
21.根据权利要求16所述的方法,其特征在于,所述开机只读存储器程序码执行以成功完成开机,当且仅当:
所述现用非易失性存储器中的主要编号与所述OTP编号相等;且
由所述开机只读存储器程序码执行的测试查明所述现用非易失性存储器中的有效内容。
22.根据权利要求10所述的方法,其特征在于,一个信任链反复地被实施至少一次,所述信任链使用已认证的程序码认证一额外的程序码层级,所述程序码层级包括额外的主要版本编号及/或次要版本编号,所述主要版本编号和所述次要版本编号可认证另一程序码层级。
23.根据权利要求10所述的方法,其特征在于,还包含执行所述开机只读存储器程序码以测试所述现用非易失性存储器内容的有效性,若所述现用非易失性存储器的内容为无效,则中止开机以导致开机失败。
24.根据权利要求23所述的方法,其特征在于,在所述开机只读存储器程序码以决定所述现用非易失性存储器中的识别码是否大于所述OTP编号,或所述现用非易失性存储器内容为有效之前,执行所述开机只读存储器程序码以测试所述现用非易失性存储器内容的有效性。
25.根据权利要求10所述的方法,其特征在于,所述操作b1以及所述操作b2由已认证的程序码进行。
26.根据权利要求10所述的方法,其特征在于,所述操作b1以及所述操作b2由所述开机只读存储器程序码进行。
27.根据权利要求10所述的方法,其特征在于,还包含进行至少一次固件主要更新,包含将存储于所述现用非易失性存储器的可开机固件版本,以一个新可开机固件的主要版本取代,以及将存储于所述现用非易失性存储器的识别码,以一个包含较高主要编号的新识别码取代;以及
v.于至少一次必然导致一次开机的重置中;
a.命令所述开机只读存储器程序码:
测试所述现用非易失性存储器内容的有效性;
若所述现用非易失性存储器的内容为无效,则中止开机以导致开机失败;
若至少所述现用非易失性存储器的内容为有效,则决定所述现用非易失性存储器中的识别码是否大于所述OTP编号;以及
若所述现用非易失性存储器中的主要编号小于所述OTP编号,则中止开机;以及
b.仅在所述现用非易失性存储器中的识别码大于所述OTP编号时,进行操作
b3、b4以及b5:
操作b3:以所述可开机固件的新版本覆盖取代当前存储于所述复原非易失性存储器中的可开机固件版本;
操作b4:更新所述复原非易失性存储器中的第二识别码以匹配所述现用非挥发性存储器中识别码的值;以及
操作b5:将所述一次性可编程存储器中的熔丝阵列中一个闲置位程序化为所述现用非易失性存储器中识别码的值,以确保所述OTP编号匹配所述现用非易失性存储器中的识别码,且亦匹配所述复原非易失性存储器中的识别码。
28.根据权利要求27所述的方法,其特征在于,所述操作b3、所述操作b4以及所述操作b5由已认证的程序码进行。
29.根据权利要求27所述的方法,其特征在于,所述操作b3、所述操作b4以及所述操作b5由所述开机只读存储器程序码进行。
CN202110494281.0A 2020-05-14 2021-05-07 防止回滚攻击的系统及方法 Active CN113672878B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/874,241 2020-05-14
US16/874,241 US11216597B2 (en) 2020-05-14 2020-05-14 Security system and method for preventing rollback attacks on silicon device firmware

Publications (2)

Publication Number Publication Date
CN113672878A true CN113672878A (zh) 2021-11-19
CN113672878B CN113672878B (zh) 2023-09-29

Family

ID=78510326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110494281.0A Active CN113672878B (zh) 2020-05-14 2021-05-07 防止回滚攻击的系统及方法

Country Status (4)

Country Link
US (1) US11216597B2 (zh)
JP (1) JP7113115B2 (zh)
CN (1) CN113672878B (zh)
TW (1) TWI775346B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230109011A1 (en) * 2021-10-04 2023-04-06 Hewlett-Packard Development Company, L.P. Placing a device in secure mode
US20230198775A1 (en) * 2021-12-17 2023-06-22 Micron Technology, Inc. Memory device with secure boot updates and self-recovery
TWI793998B (zh) * 2022-01-27 2023-02-21 飛捷科技股份有限公司 用於控制系統的韌體架構及開機方法
KR20230139262A (ko) * 2022-03-25 2023-10-05 삼성전자주식회사 시스템 부팅을 위한 컨트롤러를 포함하는 전자 장치 및 그의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140040625A1 (en) * 2012-02-29 2014-02-06 Cisco Technology Inc. Prevention of Playback Attacks Using OTP Memory
US20140250290A1 (en) * 2013-03-01 2014-09-04 St-Ericsson Sa Method for Software Anti-Rollback Recovery
CN104798040A (zh) * 2012-11-07 2015-07-22 高通股份有限公司 用于在没有内部非易失性存储器的设备中提供防回滚保护的方法
US20170308705A1 (en) * 2016-04-22 2017-10-26 Qualcomm Incorporated System, device and method for anti-rollback protection of over-the-air updated device images

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7461268B2 (en) 2004-07-15 2008-12-02 International Business Machines Corporation E-fuses for storing security version data
US8239688B2 (en) * 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
WO2009156302A1 (en) * 2008-06-23 2009-12-30 Nxp B.V. Electronic device and method of software or firmware updating of an electronic device
US8205070B2 (en) * 2009-09-08 2012-06-19 Apple Inc. Device bootup from a NAND-type non-volatile memory
US9230112B1 (en) * 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
US9165143B1 (en) * 2013-03-15 2015-10-20 Xilinx, Inc. Image file generation and loading
EP2854066B1 (en) * 2013-08-21 2018-02-28 Nxp B.V. System and method for firmware integrity verification using multiple keys and OTP memory
US9621549B2 (en) 2014-07-25 2017-04-11 Qualcomm Incorporated Integrated circuit for determining whether data stored in external nonvolative memory is valid
JP6595822B2 (ja) 2015-07-07 2019-10-23 キヤノン株式会社 情報処理装置及びその制御方法
US20170090909A1 (en) * 2015-09-25 2017-03-30 Qualcomm Incorporated Secure patch updates for programmable memories
US10223531B2 (en) * 2016-12-30 2019-03-05 Google Llc Secure device state apparatus and method and lifecycle management
GB2578158B (en) * 2018-10-19 2021-02-17 Advanced Risc Mach Ltd Parameter signature for realm security configuration parameters
US10997297B1 (en) * 2019-12-06 2021-05-04 Western Digital Technologies, Inc. Validating firmware for data storage devices

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140040625A1 (en) * 2012-02-29 2014-02-06 Cisco Technology Inc. Prevention of Playback Attacks Using OTP Memory
CN104798040A (zh) * 2012-11-07 2015-07-22 高通股份有限公司 用于在没有内部非易失性存储器的设备中提供防回滚保护的方法
US20140250290A1 (en) * 2013-03-01 2014-09-04 St-Ericsson Sa Method for Software Anti-Rollback Recovery
CN104956374A (zh) * 2013-03-01 2015-09-30 意法爱立信有限公司 用于软件防回滚恢复的方法
US20170308705A1 (en) * 2016-04-22 2017-10-26 Qualcomm Incorporated System, device and method for anti-rollback protection of over-the-air updated device images

Also Published As

Publication number Publication date
JP2021179982A (ja) 2021-11-18
CN113672878B (zh) 2023-09-29
TWI775346B (zh) 2022-08-21
US20210357537A1 (en) 2021-11-18
JP7113115B2 (ja) 2022-08-04
US11216597B2 (en) 2022-01-04
TW202145014A (zh) 2021-12-01

Similar Documents

Publication Publication Date Title
US8200988B2 (en) Firmware security key upgrade algorithm
CN113672878B (zh) 防止回滚攻击的系统及方法
EP2854066B1 (en) System and method for firmware integrity verification using multiple keys and OTP memory
JP6595822B2 (ja) 情報処理装置及びその制御方法
US7461268B2 (en) E-fuses for storing security version data
CN105122258B (zh) 对系统进行配置的方法、计算系统以及物品
US8966646B2 (en) Software license management
US20020157010A1 (en) Secure system and method for updating a protected partition of a hard drive
JPWO2002057904A1 (ja) ダウンロード機能を有する制御装置
TW201500960A (zh) 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全性變數變化檢測技術
US20030079138A1 (en) Content protection in non-volatile storage devices
JP6518798B2 (ja) 安全な集積回路状態を管理する装置およびその方法
US10885196B2 (en) Executing protected code
CN112685338A (zh) 包括安全可修补rom的半导体装置及其修补方法
US11941159B2 (en) Configuration data deletion based on tamper status
CN111695164B (zh) 电子设备及其控制方法
JP6652669B2 (ja) 情報処理装置及び情報処理装置の制御方法
US20230129942A1 (en) Method for locking a rewritable non-volatile memory and electronic device implementing said method
CN112015582B (zh) 自修正存储器系统、提供错误修正至存储器内容的方法
CN112817619B (zh) 电脑系统及其安全管理方法以及电脑软件产品
JP7097407B2 (ja) ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法
Beilke et al. A Safe Update Mechanism for Smart Cards
KR20240005406A (ko) 사용자 인증을 수행하는 보안 프로세서, 및 그것을 포함하는 사용자 장치
CN114968117A (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