CN104268448A - 采用快闪存储器的微处理器的程序代码保护方法 - Google Patents
采用快闪存储器的微处理器的程序代码保护方法 Download PDFInfo
- Publication number
- CN104268448A CN104268448A CN201410534831.7A CN201410534831A CN104268448A CN 104268448 A CN104268448 A CN 104268448A CN 201410534831 A CN201410534831 A CN 201410534831A CN 104268448 A CN104268448 A CN 104268448A
- Authority
- CN
- China
- Prior art keywords
- key
- program code
- flash memory
- area
- district
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012795 verification Methods 0.000 claims description 121
- 238000004519 manufacturing process Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 230000002633 protecting effect Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/88—Detecting or preventing theft or loss
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
一种采用快闪存储器的微处理器的程序代码保护方法,其可针对厂商利用MCU开发产品而烧录程序代码的阶段下,包括步骤:烧录开始时,通过烧写工具给MCU上电,使MCU进入Mode0模式;对整个Flash的参数区和资料区作擦除操作;对Flash的参数区写入特定参数,将Flash的资料区划分为P1、P2和P3三个区;分别对P1、P2区作资料烧录,P1区烧录应用程序代码,P2区烧录底层驱动和固件升级控制代码;对Flash的参数区写入特定参数,将P1、P2区设定为Mode1模式下只读,将P3区设定为Mode1模式下可读、可写和可擦除;对Flash的参数区写入特定参数,开启密钥校验单元,并对P1区设定校验用密钥及校验机制。本发明能避免Flash MCU因外部干扰而导致程序破坏或资料丢失,且有效保护原始代码不被读出窃取。
Description
技术领域
本发明涉及微处理器技术领域,具体来说,本发明涉及一种采用快闪存储器的微处理器的程序代码保护方法。
背景技术
相比ROM(只读存储器)和RAM(随机存储器)这两种常见的存储器类型,Flash(快闪存储器,简称闪存)具有ROM存储器掉电后不丢失数据的优点,同时又具备可擦除重写的功能可以用于更新程序代码。因此,越来越多的MCU(微处理器)厂商采用Flash作为其MCU芯片中的程序存储器。
很多电子产品在出厂之后到消费者手中有可能会发现一些问题,有些问题是其内部MCU的程序代码bug(漏洞)导致,而有的可能是MCU与外部器件的控制不完善。总之,这些问题往往很多都是可以通过修改和升级固件程序的方式来解决的。这时采用Flash储存器的MCU(下文简称Flash MCU)的优势就体现出来了,厂商只需要提供固件更新工具,让经销商甚至消费者自己对产品的MCU固件进行升级即可,从而避免了产品的返修甚至退货等一系列耗费时间、人力、财力的行为。
由于生活中各种应用的实际场合及环境中存在各种电磁干扰,导致MCU在工作过程中程序执行出现异常是不可避免的,典型现象是MCU的代码执行顺序会发生错乱,比如程序执行时跳转到非预定的指令分支处。这对采用Flash MCU并提供固件升级功能的产品会带来一些风险和隐患。由于Flash存储器本身具有可擦除和写入的特性,而产品为了提供固件升级的功能必然在出厂的固件当中也有对Flash进行擦除重写的程序代码,所以当出现干扰导致的程序代码指令执行发生错乱时,有可能因为指令跳转到固件升级相关的指令分支处,执行了对Flash的擦除和写入操作,导致Flash当中存储的程序代码自身被破坏,进而使产品无法正常使用的严重问题。虽然所有产品通常都会在硬件和软件上或多或少做一些抗干扰的保护和加强,但并不能完全保证不被干扰,所以和采用ROM存储器的MCU相比,Flash MCU在这方面出问题的概率是较高的。
此外,由于采用Flash MCU的产品通常都提供固件升级功能,也对第三方的代码窃取行为提供了一定的途径。例如当某厂商A采用一款Flash MCU开发了一种新的产品,而该产品的核心功能都在于其内部MCU中的控制软件;当其他厂商B只要能够将其中关键代码复制出来,即可通过采购同样的Flash MCU制造出功能与厂商A几乎完全一样的产品。传统的方式下,要读取MCU中的程序代码是不可能的,因为厂商自己并不会提供这样的途径和方法。但是对于Flash MCU,因为有了固件升级功能,厂商B完全可以通过该功能将一小段自己的程序烧录到目标产品的MCU当中,然后通过执行这段程序代码将MCU中的大部分原始代码通过一定方式(比如I/O口输出指令序列)窃取出来。
因此,Flash MCU的厂商迫切地需要在代码存储保护方面做一些保护措施方面的设计。
发明内容
本发明所要解决的一个技术问题是提供一种采用快闪存储器的微处理器的程序代码保护方法,能够避免Flash MCU因为外部干扰而导致程序破坏或者资料丢失的问题。
本发明所要解决的另一个技术问题是提供一种采用快闪存储器的微处理器的程序代码保护方法,能够有效保护原始代码不被恶意读出窃取。
为解决上述技术问题,本发明提供一种采用快闪存储器的微处理器的程序代码保护方法,所述微处理器内包括一密钥校验单元;所述程序代码保护方法系针对厂商利用所述微处理器开发产品而烧录程序代码的阶段下对所述程序代码进行保护,其包括步骤:
A.烧录开始时,通过特定的烧写工具给所述微处理器上电,使所述微处理器进入Mode0模式;
B.对整个所述快闪存储器的参数区和资料区进行擦除操作;
C.对所述快闪存储器的参数区写入特定参数,将所述快闪存储器的资料区划分为P1、P2和P3共三个区;
D.分别对所述P1区和所述P2区进行资料烧录,其中所述P1区烧录应用程序代码,所述P2区烧录底层驱动和固件升级控制代码,所述P3区作为缓冲区,不烧录内容,保持为空;
E.对所述快闪存储器的参数区写入特定参数,将所述P1区和所述P2区设定为Mode1模式下只读,将所述P3区设定为Mode1模式下可读、可写和可擦除;
F.对所述快闪存储器的参数区写入特定参数,开启所述密钥校验单元,并对所述P1区设定校验用密钥以及校验机制。
可选地,所述密钥校验单元包括一个控制模块、一组待校验密钥寄存器以及一组临时权限控制寄存器;
其中,所述控制模块负责整个所述密钥校验单元的开启和关闭、所述校验用密钥以及所述校验机制的设定,所述控制模块由所述快闪存储器的参数区的相关设置进行控制。
可选地,所述密钥校验单元系由硬件实现。
为解决上述技术问题,本发明还提供一种采用快闪存储器的微处理器的程序代码保护方法,所述微处理器内包括一密钥校验单元;所述程序代码保护方法系针对产品出厂后,用户在使用过程中发现问题而需要进行固件升级的阶段下对程序代码进行保护,其包括步骤:
I.所述微处理器正常上电,此时其处于默认的Mode1模式;
II.等待并接受用户选择新的固件文件,进行固件升级操作;
III.所述微处理器运行所述快闪存储器的所述P2区中的固件升级控制代码;
IV.所述微处理器读取待升级的所述固件文件的内容,并取出升级控制密钥;
V.读取所述固件文件中待升级的所述程序代码,并和所述升级控制密钥进行软件方式的完整性校验;
VI.所述完整性校验成功后,再将所述升级控制密钥读出传递给所述密钥校验单元进行硬件校验;
VII.所述密钥校验单元校验成功后,设置所述密钥校验单元中的临时权限控制寄存器,开启所述快闪存储器的所述P1区的擦除和写入权限;
VIII.将所述快闪存储器的所述P1区擦除,擦除完成后写入新的所述固件文件中待升级的所述程序代码;
IX.待升级的所述程序代码写入完成后回读,与原始文件进行对比,确认无误;
X.固件升级完成,所述微处理器重新上电后,所述P1区恢复成只读权限,新的所述程序代码生效。
可选地,如果上述步骤V中的所述完整性校验或者上述步骤VI中的所述密钥校验单元校验失败,则所述程序代码保护方法直接结束。
可选地,在上述步骤VI中,所述升级控制密钥并不显式存在于待升级的所述程序代码当中,而是通过不可见的方式直接传递到所述密钥校验单元中进行校验。
可选地,所述升级控制密钥是先从待升级的所述固件文件中读取到内存变量当中,然后传递给所述密钥校验单元。
可选地,所述密钥校验单元中除了包括一组所述临时权限控制寄存器外,还包括一个控制模块和一组待校验密钥寄存器;
其中,所述控制模块负责整个所述密钥校验单元的开启和关闭、校验用密钥以及校验机制的设定,所述控制模块由所述快闪存储器的参数区的相关设置进行控制;
应用程序将待校验的所述升级控制密钥写入所述待校验密钥寄存器之后,所述密钥校验单元自动将待校验的所述升级控制密钥与所述控制模块内预设的所述校验用密钥通过预设的所述校验机制进行校验;
当校验通过后,所述应用程序通过设置所述临时权限控制寄存器,修改所述快闪存储器的资料区的临时操作权限。
可选地,密钥校验单元系由硬件实现。
可选地,待升级的所述固件文件的生成方式包括:
所述产品的厂商利用专用方法生成待升级的所述固件文件,所述固件文件当中包括新的应用程序代码和所述升级控制密钥;
所述升级控制密钥采用专用方法产生,同时用于所述程序代码的完整性校验和所述微处理器中的所述密钥校验单元的校验。
与现有技术相比,本发明具有以下优点:
本发明提出的针对采用快闪存储器的微处理器的程序代码保护方法,可有效实现如下两点:
1.通过内建的密钥校验单元配合相应的软件使用方法,可有效解决采用快闪存储器的微处理器容易发生的因为外部干扰而导致的程序破坏或者资料丢失的严重问题。
2.此外,还能在较大程度上有效地保护原始代码不被恶意读出窃取。
总而言之,本发明提出的代码保护方法可以从根本上解决前述现有技术中的不足,并且设计的复杂度弹性较大,对原有硬件设计修改很小,对整体系统成本几乎没有影响。
附图说明
本发明的上述的以及其他的特征、性质和优势将通过下面结合附图和实施例的描述而变得更加明显,其中:
图1为本发明一个实施例的采用快闪存储器的微处理器的程序代码保护方法的流程示意图;
图2A至图2B为本发明另一个实施例的采用快闪存储器的微处理器的程序代码保护方法的流程示意图。
具体实施方式
下面结合具体实施例和说明书附图对本发明作进一步说明,在以下的描述中阐述了更多的细节以便于充分理解本发明,但是本发明显然能够以多种不同于此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下根据实际应用情况作类似推广、演绎,因此不应以此具体实施例的内容限制本发明的保护范围。
微处理器(MCU)在上电时,可进入两种特定模式,Mode0模式和Mode1模式。其中,MCU上电默认进入Mode1模式,而Mode0模式必须通过特定方式才能进入,该方式主要用于批量生产时,配合MCU原厂提供的烧写工具使用。具体说明如下:
MCU的Flash程序存储器(以下统一用Flash指代)具有参数区和资料区两个区域。
在Mode0模式下,Flash的这两个区域都具有完全的擦除和写如权限,但是没有读取的权限。
在Mode0模式下,MCU具有Flash烧写校验功能模块,因此不用通过将烧写之后的内容读回进行校验。
在Mode0模式下,对Flash的这两个区域的操作都必须是全部擦除然后才能写入。
在Mode0模式下,通过对Flash的参数区写入特定参数,实现Mode1模式下对整个Flash的资料区分别修改读取、写入和擦除三种操作权限的设置。
在Mode0模式下,通过对Flash的参数区写入特定参数,可将Flash的资料区划分成多个区块,然后分别针对每个区块进行Mode1模式下的操作权限的设置。
在Mode1模式下,Flash的资料区的操作权限由Mode0模式下对参数区写入的特定参数决定。
在Mode1模式下,Flash的参数区只有只读权限,无法通过修改参数区的内容对Flash的资料区中各个区块的操作权限进行修改。
此外,MCU内还设计了一个密钥校验单元,该密钥校验单元可以由硬件实现,可包含一个控制模块、一组待校验密钥寄存器以及一组临时权限控制寄存器。其中,控制模块负责整个密钥校验单元的开启、关闭、校验用密钥以及校验机制的设定,该控制模块由Flash的参数区的相关设置进行控制;应用程序将待校验密钥写入待校验密钥寄存器后,密钥校验单元自动将待校验密钥与控制模块内预设的校验用密钥通过预设校验机制进行校验;当校验通过后,应用程序可通过设置临时权限控制寄存器,修改Flash资料区的临时操作权限。
进一步说明如下:
在Mode0模式下,可通过对Flash的参数区写入特定参数,决定密钥校验单元是否在Mode1模式下生效。
在Mode0模式下,可通过对Flash的参数区写入特定参数,针对整个Flash的资料区设置用于密钥校验单元的校验用密钥以及校验机制。
在Mode0模式下,可通过对Flash的参数区写入特定参数,针对Flash的资料区已划分的不同区块分别设置用于密钥校验单元的校验用密钥以及校验机制。
在Mode1模式下,由于Flash的参数区是只读的,因此只能使用该密钥校验单元的校验功能,而无法进行该密钥校验单元的开启、关闭以及校验机制的设定。
在Mode1模式下,若已经在Mode0模式下关闭该密钥校验单元功能,则各Flash区块的擦除和写权限完全由Mode0模式下的设定决定。
在Mode1模式下,若已经在Mode0模式下开启该密钥校验单元功能,则可以向密钥校验单元的待校验密钥寄存器写入待校验密钥进行校验,若密钥校验成功,则可通过设置临时权限控制寄存器,对Flash指定区块的擦除和写权限进行打开和关闭;若未进行校验或校验失败,则设置临时权限控制寄存器无效。
在Mode1模式下,密钥校验单元校验成功,并通过设置临时权限控制寄存器修改了Flash指定区块的操作权限之后,如果MCU重新上电,则整个Flash的操作权限会恢复到初始状态,即恢复到Mode0模式下的初始设定。
需要注意的是,光是硬件上有上述设计,并不足以实现代码保护,还需要软件使用方法上的配合。
以下以具体例子进行说明:
图1为本发明一个实施例的采用快闪存储器的微处理器的程序代码保护方法的流程示意图。此程序代码保护方法系针对厂商利用微处理器开发产品而烧录程序代码的阶段下对程序代码进行保护。微处理器内包括一个可以由硬件实现的密钥校验单元。假设某厂商A用该Flash MCU开发了一款产品,生产烧录时对程序代码进行保护的方法流程主要包括(如图1所示):
执行步骤S101,烧录开始时,通过特定的烧写工具给微处理器上电,使微处理器进入Mode0模式;
执行步骤S102,对整个快闪存储器的参数区和资料区进行擦除操作;
执行步骤S103,对快闪存储器的参数区写入特定参数,将快闪存储器的资料区划分为P1、P2和P3共三个区;
执行步骤S104,分别对P1区和P2区进行资料烧录,其中P1区烧录应用程序代码,P2区烧录底层驱动和固件升级控制代码,P3区作为缓冲区,不烧录内容,保持为空;
执行步骤S105,对快闪存储器的参数区写入特定参数,将P1区和P2区设定为Mode1模式下只读,将P3区设定为Mode1模式下可读、可写和可擦除;
执行步骤S106,对快闪存储器的参数区写入特定参数,开启密钥校验单元,并对P1区设定校验用密钥以及校验机制。最后烧录完成。
在本实施例中,该密钥校验单元包括一个控制模块、一组待校验密钥寄存器以及一组临时权限控制寄存器。其中,控制模块负责整个密钥校验单元的开启和关闭、校验用密钥以及校验机制的设定,控制模块由快闪存储器的参数区的相关设置进行控制。
图2A至图2B为本发明另一个实施例的采用快闪存储器的微处理器的程序代码保护方法的流程示意图。此程序代码保护方法系针对厂商利用微处理器开发的产品出厂后,用户在使用过程中发现问题而需要进行固件升级的阶段下对程序代码进行保护。该微处理器内包括一个可以由硬件实现的密钥校验单元。假设产品出厂后,用户在使用过程中发现问题,需要进行固件升级。由于产品提供SD卡接口,用户将待升级的固件存放于SD卡上即可进行固件升级操作。如图2A至图2B所示,在该产品固件升级的阶段下该程序代码保护方法的流程主要包括:
执行步骤S201,微处理器正常上电,此时其处于默认的Mode1模式;
执行步骤S202,等待并接受用户选择新的固件文件,进行固件升级操作;
执行步骤S203,微处理器运行快闪存储器的P2区中的固件升级控制代码;
执行步骤S204,微处理器读取待升级的固件文件的内容,并取出升级控制密钥;
执行步骤S205,读取固件文件中待升级的程序代码,并和升级控制密钥进行软件方式的完整性校验;
执行步骤S206,完整性校验成功后,再将升级控制密钥读出传递给密钥校验单元进行硬件校验;
执行步骤S207,密钥校验单元校验成功后,设置密钥校验单元中的临时权限控制寄存器,开启快闪存储器的P1区的擦除和写入权限;
执行步骤S208,将快闪存储器的P1区擦除,擦除完成后写入新的固件文件中待升级的程序代码;
执行步骤S209,待升级的程序代码写入完成后回读,与原始文件进行对比,确认无误;
执行步骤S210,固件升级完成,微处理器重新上电后,P1区恢复成只读权限,新的程序代码生效。
在本实施例中,如果上述步骤S205中的完整性校验或者上述步骤S206中的密钥校验单元校验失败,则该程序代码保护方法直接结束。
在本实施例中,在上述步骤S206中,升级控制密钥并不显式存在于待升级的程序代码当中,而是通过不可见的方式通过数据通道直接传递到密钥校验单元中进行校验。例如,升级控制密钥是先从待升级的固件文件中读取到内存变量当中,然后传递给密钥校验单元。
另外,在本实施例中,该密钥校验单元中除了包括一组临时权限控制寄存器外,还包括一个控制模块和一组待校验密钥寄存器。
其中,控制模块负责整个密钥校验单元的开启和关闭、校验用密钥以及校验机制的设定,控制模块由快闪存储器的参数区的相关设置进行控制;
应用程序将待校验的升级控制密钥写入待校验密钥寄存器之后,密钥校验单元自动将待校验的升级控制密钥与控制模块内预设的校验用密钥通过预设的校验机制进行校验;
当校验通过后,应用程序通过设置临时权限控制寄存器,修改快闪存储器的资料区的临时操作权限。
在本实施例中,待升级的固件文件的生成方式包括:
a.产品的厂商利用专用方法生成待升级的固件文件,固件文件当中包括新的应用程序代码和升级控制密钥;
b.升级控制密钥采用专用方法产生,同时用于程序代码的完整性校验和微处理器中的密钥校验单元的校验。
由以上过程可以看到:
1.正常应用过程中,假如MCU因为受到干扰或其他异常导致执行的指令跳转到固件升级控制代码区,并执行对Flash的擦除或写入操作,将因为P1区和P2区均被设定为只读而不会成功。并且,因为密钥并非预留在程序代码当中,所以也不会因为执行了传递密钥给密钥校验单元的过程,而导致密钥校验通过。
2.在正常固件升级的过程中,假如MCU因受到干扰,导致擦除和写入的地址被干扰,变成处于Flash的P2区的地址范围,也会因为P2区是只读区而不会被误擦除和改写。
再来看一下版权保护方面的例子:
假设厂商A的产品因为大受欢迎而引起了厂商B的注意,厂商B分析发现该产品所有的部件包括MCU都可以直接采购得到,但是真正有价值的是MCU中的程序代码。由于该MCU是采用Flash的,且该产品提供了固件升级功能,于是厂商B试图采取下列几种方法,恶意窃取厂商A的程序代码:
1.首先,因为Mode0模式下只能烧写,不能读取,因此厂商B无法直接通过该Mode0模式读取厂商A的产品当中Flash的内容。
2.其次,厂商B试图通过Mode0模式烧入自己生成的一小段程序代码,通过运行该段代码实现对MCU当中未被烧录时覆盖的其他大部分代码进行窃取。但是因为在Mode0模式下,烧入是整个Flash区域全部擦除后再烧录的过程,所以会导致厂商B在烧入自己的代码之前,MCU中厂商A的原始代码已经被擦除。
3.再次,由于固件是用户就可以拿到的,厂商B已成功分析出固件的结构、新的程序代码以及相应的升级控制密钥的内容,厂商B将自己的一小段代码做成一个自定义固件,并植入之前提取的升级控制密钥,试图通过固件升级的方式烧录到MCU的Flash当中。但是在升级过程中,由于自己的程序代码与之前提取的升级控制密钥并不匹配,MCU内的固件升级的环节在软件密钥校验时无法通过。
4.最后,最终厂商B通过分析原始固件中的程序代码和升级控制密钥,成功破解了软件密钥校验的算法,自行生成了自己的代码对应的升级控制密钥,生成自己的固件,再次试图通过固件升级方式烧录到MCU的Flash当中,但是在升级过程中,由于硬件密钥校验不通过,最终仍失败。
从上述例子可以看到,固件升级功能,只能用于厂商A自己的固件升级,其他第三方无法通过该功能实现代码植入和后续的窃取动作,有效的保护了程序代码的版权。
综上所述,本发明的核心思想是:MCU上电时,可通过一定方式进入两种特定模式,Mode0模式和Mode1模式。这两种模式下,对MCU当中Flash程序存储器的读写和擦除的权限设定是不同的,其中Mode1模式的权限受控于Mode0模式。Mode1模式下被设定为只读模式后,可通过硬件密钥校验的方式打开擦除和写如操作的权限,该密钥校验的校验设定可在Mode0模式下设定。
在Mode1模式下,升级控制密钥并不显示存在于程序代码当中,而是通过不可见的数据通道直接传递给密钥校验单元进行校验,可有效防止程序指令因异常执行导致打开了程序存储器的擦除和写入权限,进而导致的代码损坏问题。
由于在Mode0模式下可设定密钥校验单元的校验机制,程序代码的原始厂商可以通过设定自己的校验机制,实现了只有自己生成的程序代码,才允许被写入到MCU的程序存储器当中的目的。第三方人员由于无法得知具体的校验机制,无法实现打开写入操作权限植入自己的程序代码,实现读取原始代码或者其他破坏性动作,从而起到了代码版权保护的作用。
与现有技术相比,本发明具有以下优点:
本发明提出的针对采用快闪存储器的微处理器的程序代码保护方法,可有效实现如下两点:
1.通过内建的密钥校验单元配合相应的软件使用方法,可有效解决采用快闪存储器的微处理器容易发生的因为外部干扰而导致的程序破坏或者资料丢失的严重问题。
2.此外,还能在较大程度上有效地保护原始代码不被恶意读出窃取。
总而言之,本发明提出的代码保护方法可以从根本上解决前述现有技术中的不足,并且设计的复杂度弹性较大,对原有硬件设计修改很小,对整体系统成本几乎没有影响。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何修改、等同变化及修饰,均落入本发明权利要求所界定的保护范围之内。
Claims (10)
1.一种采用快闪存储器的微处理器的程序代码保护方法,所述微处理器内包括一密钥校验单元;所述程序代码保护方法系针对厂商利用所述微处理器开发产品而烧录程序代码的阶段下对所述程序代码进行保护,其包括步骤:
A.烧录开始时,通过特定的烧写工具给所述微处理器上电,使所述微处理器进入Mode0模式;
B.对整个所述快闪存储器的参数区和资料区进行擦除操作;
C.对所述快闪存储器的参数区写入特定参数,将所述快闪存储器的资料区划分为P1、P2和P3共三个区;
D.分别对所述P1区和所述P2区进行资料烧录,其中所述P1区烧录应用程序代码,所述P2区烧录底层驱动和固件升级控制代码,所述P3区作为缓冲区,不烧录内容,保持为空;
E.对所述快闪存储器的参数区写入特定参数,将所述P1区和所述P2区设定为Mode1模式下只读,将所述P3区设定为Mode1模式下可读、可写和可擦除;
F.对所述快闪存储器的参数区写入特定参数,开启所述密钥校验单元,并对所述P1区设定校验用密钥以及校验机制。
2.根据权利要求1所述的程序代码保护方法,其特征在于,所述密钥校验单元包括一个控制模块、一组待校验密钥寄存器以及一组临时权限控制寄存器;
其中,所述控制模块负责整个所述密钥校验单元的开启和关闭、所述校验用密钥以及所述校验机制的设定,所述控制模块由所述快闪存储器的参数区的相关设置进行控制。
3.根据权利要求2所述的程序代码保护方法,其特征在于,所述密钥校验单元系由硬件实现。
4.一种采用快闪存储器的微处理器的程序代码保护方法,所述微处理器内包括一密钥校验单元;所述程序代码保护方法系针对产品出厂后,用户在使用过程中发现问题而需要进行固件升级的阶段下对程序代码进行保护,其包括步骤:
I.所述微处理器正常上电,此时其处于默认的Mode1模式;
II.等待并接受用户选择新的固件文件,进行固件升级操作;
III.所述微处理器运行所述快闪存储器的所述P2区中的固件升级控制代码;
IV.所述微处理器读取待升级的所述固件文件的内容,并取出升级控制密钥;
V.读取所述固件文件中待升级的所述程序代码,并和所述升级控制密钥进行软件方式的完整性校验;
VI.所述完整性校验成功后,再将所述升级控制密钥读出传递给所述密钥校验单元进行硬件校验;
VII.所述密钥校验单元校验成功后,设置所述密钥校验单元中的临时权限控制寄存器,开启所述快闪存储器的所述P1区的擦除和写入权限;
VIII.将所述快闪存储器的所述P1区擦除,擦除完成后写入新的所述固件文件中待升级的所述程序代码;
IX.待升级的所述程序代码写入完成后回读,与原始文件进行对比,确认无误;
X.固件升级完成,所述微处理器重新上电后,所述P1区恢复成只读权限,新的所述程序代码生效。
5.根据权利要求4所述的程序代码保护方法,其特征在于,如果上述步骤V中的所述完整性校验或者上述步骤VI中的所述密钥校验单元校验失败,则所述程序代码保护方法直接结束。
6.根据权利要求5所述的程序代码保护方法,其特征在于,在上述步骤VI中,所述升级控制密钥并不显式存在于待升级的所述程序代码当中,而是通过不可见的方式直接传递到所述密钥校验单元中进行校验。
7.根据权利要求6所述的程序代码保护方法,其特征在于,所述升级控制密钥是先从待升级的所述固件文件中读取到内存变量当中,然后传递给所述密钥校验单元。
8.根据权利要求7所述的程序代码保护方法,其特征在于,所述密钥校验单元中除了包括一组所述临时权限控制寄存器外,还包括一个控制模块和一组待校验密钥寄存器;
其中,所述控制模块负责整个所述密钥校验单元的开启和关闭、校验用密钥以及校验机制的设定,所述控制模块由所述快闪存储器的参数区的相关设置进行控制;
应用程序将待校验的所述升级控制密钥写入所述待校验密钥寄存器之后,所述密钥校验单元自动将待校验的所述升级控制密钥与所述控制模块内预设的所述校验用密钥通过预设的所述校验机制进行校验;
当校验通过后,所述应用程序通过设置所述临时权限控制寄存器,修改所述快闪存储器的资料区的临时操作权限。
9.根据权利要求8所述的程序代码保护方法,其特征在于,密钥校验单元系由硬件实现。
10.根据权利要求4所述的程序代码保护方法,其特征在于,待升级的所述固件文件的生成方式包括:
所述产品的厂商利用专用方法生成待升级的所述固件文件,所述固件文件当中包括新的应用程序代码和所述升级控制密钥;
所述升级控制密钥采用专用方法产生,同时用于所述程序代码的完整性校验和所述微处理器中的所述密钥校验单元的校验。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410534831.7A CN104268448B (zh) | 2014-10-11 | 2014-10-11 | 采用快闪存储器的微处理器的程序代码保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410534831.7A CN104268448B (zh) | 2014-10-11 | 2014-10-11 | 采用快闪存储器的微处理器的程序代码保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104268448A true CN104268448A (zh) | 2015-01-07 |
CN104268448B CN104268448B (zh) | 2017-06-27 |
Family
ID=52159969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410534831.7A Active CN104268448B (zh) | 2014-10-11 | 2014-10-11 | 采用快闪存储器的微处理器的程序代码保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104268448B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106802810A (zh) * | 2016-11-28 | 2017-06-06 | 硅谷数模半导体(北京)有限公司 | 固件升级方法及装置、系统 |
CN107657153A (zh) * | 2017-09-27 | 2018-02-02 | 深圳芯邦科技股份有限公司 | 一种芯片内flash区的代码保护方法及装置 |
CN109902453A (zh) * | 2019-02-22 | 2019-06-18 | 山东欧德利电气设备有限公司 | 一种软件加密方法 |
CN110456989A (zh) * | 2019-08-21 | 2019-11-15 | 大陆汽车研发(重庆)有限公司 | 用于机动车辆的车载控制器 |
CN112151521A (zh) * | 2019-06-26 | 2020-12-29 | 珠海零边界集成电路有限公司 | 一种功率模块及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1451117A (zh) * | 2000-06-30 | 2003-10-22 | 英特尔公司 | 采用安全存储器分区来实现安全执行的方法和装置 |
CN101196877A (zh) * | 2007-12-29 | 2008-06-11 | 大唐微电子技术有限公司 | 一种多存储单元操作隔离的智能卡及其实现方法 |
CN101788958A (zh) * | 2010-02-04 | 2010-07-28 | 杭州晟元芯片技术有限公司 | 一种存储器数据保护的方法 |
CN103678959A (zh) * | 2013-11-12 | 2014-03-26 | 杭州晟元芯片技术有限公司 | 一种基于移动存储设备的数据保护方法 |
-
2014
- 2014-10-11 CN CN201410534831.7A patent/CN104268448B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1451117A (zh) * | 2000-06-30 | 2003-10-22 | 英特尔公司 | 采用安全存储器分区来实现安全执行的方法和装置 |
CN101196877A (zh) * | 2007-12-29 | 2008-06-11 | 大唐微电子技术有限公司 | 一种多存储单元操作隔离的智能卡及其实现方法 |
CN101788958A (zh) * | 2010-02-04 | 2010-07-28 | 杭州晟元芯片技术有限公司 | 一种存储器数据保护的方法 |
CN103678959A (zh) * | 2013-11-12 | 2014-03-26 | 杭州晟元芯片技术有限公司 | 一种基于移动存储设备的数据保护方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106802810A (zh) * | 2016-11-28 | 2017-06-06 | 硅谷数模半导体(北京)有限公司 | 固件升级方法及装置、系统 |
CN107657153A (zh) * | 2017-09-27 | 2018-02-02 | 深圳芯邦科技股份有限公司 | 一种芯片内flash区的代码保护方法及装置 |
CN107657153B (zh) * | 2017-09-27 | 2020-11-13 | 深圳芯邦科技股份有限公司 | 一种芯片内flash区的代码保护方法及装置 |
CN109902453A (zh) * | 2019-02-22 | 2019-06-18 | 山东欧德利电气设备有限公司 | 一种软件加密方法 |
CN112151521A (zh) * | 2019-06-26 | 2020-12-29 | 珠海零边界集成电路有限公司 | 一种功率模块及电子设备 |
CN110456989A (zh) * | 2019-08-21 | 2019-11-15 | 大陆汽车研发(重庆)有限公司 | 用于机动车辆的车载控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN104268448B (zh) | 2017-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104268448A (zh) | 采用快闪存储器的微处理器的程序代码保护方法 | |
KR100746012B1 (ko) | 코드 이미지를 안전하게 갱신하고 부팅하는 방법 및 장치 | |
CN104572168B (zh) | 一种bios自更新保护系统及方法 | |
CN102708013B (zh) | 用于程序语句控制的指令流控制的设备、签名模块及方法 | |
US20090241200A1 (en) | Security memory device and method for making same | |
JP4584044B2 (ja) | 半導体装置 | |
CN112035152A (zh) | 一种SoC芯片固件升级的安全处理系统及方法 | |
CN104981778A (zh) | 修补只读存储器的引导代码 | |
CN113672878B (zh) | 防止回滚攻击的系统及方法 | |
CN101673330A (zh) | 一种基于bios的计算机安全防护方法及系统 | |
JP2010033576A (ja) | バイオスの更新を行う電子機器及び方法 | |
CN104598357B (zh) | 一种数据抗干扰保护方法 | |
JP2010193013A (ja) | 暗号鍵保護方法及び半導体記憶装置 | |
JP5332845B2 (ja) | Icチップ及びデータ保護方法等 | |
CN104751082B (zh) | 操作系统及数据安全控制方法及装置 | |
JP4675980B2 (ja) | 不正行為防止方法 | |
JP2007011929A (ja) | 不揮発性メモリのデータ更新方法、制御装置、及びデータ更新プログラム | |
CN105138378A (zh) | 一种bios刷写方法及电子设备 | |
CN114756864A (zh) | 一种基于中间语言的工控恶意软件字符串反混淆方法 | |
US9483641B2 (en) | Method and device for the performance of a function by a microcircuit | |
US8015612B2 (en) | Addressing security in writes to memory | |
CN106293531A (zh) | 一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法 | |
JP2005234957A (ja) | フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラム | |
CN105701412A (zh) | 外部认证密钥验证方法及装置 | |
CN112685802B (zh) | Flash芯片读取控制方法、装置、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |