非易失性存储器数据加密系统的制作方法

文档序号:12803417阅读:203来源:国知局
非易失性存储器数据加密系统的制作方法与工艺

本发明涉及数据安全领域,尤其涉及一种非易失性存储器数据加密系统。



背景技术:

随着物联网(internetofthings,iot)产业的不断发展,智能硬件开始兴起,使得嵌入式系统的设计趋向复杂化。开发者在对某一款产品进行开发时,若从零开始设计,则研发周期过长,在竞争对手快速推出新产品的情况下,会失去市场竞争力。通常情况下,开发者使用芯片厂商或者其他第三方的函数库、通信协议栈或特定的核心算法库来加快产品的开发。

相对于硬件而言,软件程序更容易通过反向工程破解,例如,直接读取二进制代码并复制到另一芯片,即可实现简单的抄板。因此,芯片生产厂商或其他第三方需要采取安全措施来保护芯片程序数据的核心知识产权。

现有技术中,通常是将芯片上的程序数据进行全部加密。然而,若其他开发者允许在同一微处理器上进行程序开发,将芯片上的程序数据进行全部加密的方法不再适用。



技术实现要素:

本发明实施例解决的技术问题是如何兼顾芯片中的程序数据安全性与芯片中程序开发的开放性。

为解决上述技术问题,本发明实施例提供一种非易失性存储器数据加密系统,包括:处理器以及非易失性存储器,其中:所述非易失性存储器,对应的存储区域内预先设置有加密区,所述加密区中存储有加密的第一读操作指令及第一数据,所述第一读操作指令为对所述第一数据的读操作指令;所述处理器,与所述非易失性存储器耦接,适于读取读操作指令;当读取到的所述读操作指令为所述第一读操作指令时,执行所述第一读操作指令,对所述第一数据进行读取操作;当读取到的所述读操作指令不是所述第一读操作指令时,拒绝对所述第一数据执行读取操作。

可选的,所述非易失性存储器数据加密系统还包括:加密访问控制单元以及存储器访问控制单元,其中:所述处理器通过系统总线与所述存储器访问控制单元耦接,适于向所述存储器访问控制单元发送访问指令;所述非易失性存储器,还设置有加密控制信息区,所述加密控制信息区中存储有所述加密区对应的地址范围;所述加密访问控制单元,与所述存储器访问控制单元耦接,适于在上电时,从所述非易失性存储器的加密控制信息区中获取所述加密区对应的地址范围,并输出至所述存储器访问控制单元;所述存储器访问控制单元,与所述加密访问控制单元耦接,适于获取所述加密区对应的地址范围,并将所述加密区对应的地址范围与所述访问指令对应的地址区间进行比较;当所述访问指令对应的地址区间处于所述加密区对应的地址范围内时,拒绝将所述访问指令输出至所述非易失性存储器。

可选的,所述非易失性存储器数据加密系统还包括:编程校验单元,通过所述系统总线与所述非易失性存储器耦接,适于对写入至所述加密区中的数据进行校验,并将校验结果经由所述系统总线输出至所述处理器。

可选的,所述加密控制信息区内存储有加密区间配置字以及加密保护字,其中:所述加密区间配置字适于标识所述加密区对应的地址区间,所述加密保护字适于保持所述加密区处于加密状态;所述加密访问控制单元,适于在上电时,从所述非易失性存储器的加密控制信息区中读取所述加密区间配置字,以获取所述加密区对应的地址范围。

可选的,所述非易失性存储器数据加密系统还包括:系统内可编程单元,与所述非易失性存储器耦接,适于从所述非易失性存储器的加密控制信息区中获取所述加密区对应的地址范围以及所述加密保护字;在对所述非易失性存储器进行编程操作时,若所述编程操作对应的地址区间处于所述加密区对应的地址范围之内时,清除所述加密区中的数据以及所述加密保护字,并进行编程操作。

可选的,所述非易失性存储器数据加密系统还包括:应用内可编程控制单元,与所述非易失性存储器以及所述加密访问控制单元耦接;所述加密访问控制单元,还适于将所述加密区对应的地址范围输出至所述应用内可编程控制单元;所述非易失性存储器的加密区中,还存储有加密的第一编程操作指令以及所述第一编程操作指令对应的第一编程地址区间;所述应用内可编程控制单元,适于接收编程操作指令;当接收到的所述编程操作指令为所述第一编程操作指令时,对所述第一编程地址区间进行编程操作;当接收到的所述编程操作指令不是所述第一编程操作指令时,拒绝对所述第一编程地址区间进行编程操作。

可选的,所述加密区还存储有升级引导程序;所述升级引导程序适于对接收到的经过加密处理的更新数据进行解密处理。

可选的,所述非易失性存储器包括如下任一种:flash闪存、eeprom、多次可编程存储器。

与现有技术相比,本发明实施例的技术方案具有以下有益效果:

预先在非易失性存储器对应的存储区域内设置加密区,在加密区中存储有加密的第一读操作指令及第一数据。当处理器读取到的读操作指令并不是第一读操作指令时,拒绝对第一数据执行读取操作。换句话说,当存在读取第一数据的需求时,仅允许通过第一读操作指令来读取第一数据,其他的读操作指令均无法读取到第一数据,因此,可以确保非易失性存储器中加密区数据的安全性。针对非易失性存储器中的其他区域,开发人员可以进行数据读取等操作,从而在兼顾数据安全性的同时,确保程序开发的开放性。

进一步,通过编程校验单元对写入至加密区中的数据进行校验,并将校验结果经由系统总线输出至处理器,而不是由处理器经由系统总线从加密区中读取写入的数据,可以避免处理器从加密区中读取写入的数据时被攻击,从而可以避免发生数据泄露的情况。

进一步,应用内可编程控制单元仅在接收到存储在加密区中的第一编程操作指令时,才对第一编程地址区间进行编程操作;在接收到其他的编程操作指令时,拒绝对第一编程地址区间进行编程操作,可以进一步提高加密区的数据安全性。

此外,在对非易失性存储器中的加密区中的数据进行更新时,用于更新的数据是经过加密处理的更新数据。通过升级引导程序对经过加密处理的更新数据进行解密处理并存储于加密区,可以有效避免更新数据外泄。

附图说明

图1是本发明实施例中的一种非易失性存储器数据加密系统的结构示意图;

图2是本发明实施例中的另一种非易失性存储器数据加密系统的结构示意图;

图3是本发明实施例中的又一种非易失性存储器数据加密系统的结构示意图;

图4是本发明实施例中的一种应用内可编程控制单元编程的流程图。

具体实施方式

现有技术中,为保护芯片上的数据的核心知识产权,通常是将芯片上的数据进行全部加密。然而,若允许其他开发者在同一芯片上进行程序开发,则将芯片上的数据进行全部加密的方法不再适用。

在本发明实施例中,预先在非易失性存储器对应的存储区域内设置加密区,在加密区中存储有加密的第一读操作指令及第一数据。当处理器读取到的读操作指令并不是第一读操作指令时,拒绝对第一数据执行读取操作。换句话说,当存在读取第一数据的需求时,仅允许通过第一读操作指令来读取第一数据,其他的读操作指令均无法读取到第一数据,因此,可以确保非易失性存储器中加密区数据的安全性。针对非易失性存储器中的其他区域,开发人员可以进行数据读取等操作,从而在兼顾数据安全性的同时,确保程序开发的开放性。

为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

参照图1,本发明实施例提供了一种非易失性存储器数据加密系统,包括:处理器11以及非易失性存储器12。

在具体实施中,非易失性存储器12与处理器11耦接。开发者可以在非易失性存储器12中预先设置加密区121。在加密区121中,存储有加密的第一读操作指令以及加密的第一数据,且第一读操作指令为读取第一数据的读操作指令。

在实际应用中可知,针对同一块芯片,可能会被不同的开发者进行开发。对每一个开发者而言,都希望自己的数据不被其他的开发者随意获取,因此,每一个开发者都可以在非易失性存储器12中,预先设置一块专属于自己的加密区121。

例如,开发者a在非易失性存储器12中,预先设置地址范围0000h~000ah为专属于自己的加密区1,在加密区1中存储有开发者a设置的专属于自己的第一读操作指令及第一数据。又如,开发者b在非易失性存储器12中,预先设置地址范围000bh~002ah为专属于自己的加密区2,在加密区2中存储有开发者b设置的专属于自己的第一读操作指令及第一数据。

在具体实施中,开发者可以通过外部输入设备与芯片进行通信。例如,外部输入设备通过通用异步收发传输器(universalasynchronousreceivertransmitter,uart)端口与芯片进行通信。

开发者可以通过外部输入设备向处理器11输入经过加密的命令。处理器11通过uart接口接收到经过加密的命令后,对接收到的命令进行解密。在完成解密后,处理器11可以获取解密的命令所对应的操作指令,操作指令的类型可以包括读操作指令、写操作指令、擦除操作指令、编程操作指令等。

当解密的命令所对应的操作指令为读操作指令,且存储该读操作指令的地址区间处于非易失性存储器12中的加密区时,处理器11可以从非易失性存储器12的加密区中读取该读操作指令。当该读操作指令为第一读操作指令时,处理器11执行第一读操作指令,从非易失性存储器12的加密区中读取相应的第一数据。当该读操作指令为非第一读操作指令时,处理器不会从非易失性存储器12的加密区中读取相应的第一数据。

也就是说,处理器11只能通过从加密区中读取第一读操作指令,来读取加密区中加密的第一数据。开发者可以预先设置命令与第一读操作指令对应的映射关系。当开发者存在读取第一数据的需求时,可以通过外部输入设备向处理器11输入相应的经过加密的命令。处理器11在对经过加密的命令进行解密之后,即可根据预设的映射关系来获取命令对应的第一读操作指令。

在具体实施中,不同的开发者通过在非易失性存储器12中分别设置自己专属的加密区,对自己专属的加密区中的第一数据读取只能通过自己预先设定的命令才能够被处理器11读取,从而可以确保自己的关键数据不被其他开发者随意获取。由于每一个开发者只是在非易失性存储器12中预先设定某一块地址区间作为自己专属的加密区,其他的地址区间仍然可以被其他开发者所使用,因此,可以在兼顾数据安全性的同时,确保程序开发的开放性。

在具体实施中,处理器11可以包括读取单元111、解密单元112、判断单元113以及执行单元114。处理器11可以通过读取单元111来读取外部输入设备输入的经过加密的命令,通过解密单元112对经过加密的命令进行解密。当解密的命令对应的操作指令为读操作指令时,处理器11通过判断单元113来判断读操作指令是否为第一读操作指令。当读操作指令为第一读操作指令时,处理器11可以控制执行单元114来执行读操作指令。

需要说明的是,处理器11中的读取单元111、解密单元112、判断单元113以及执行单元114均可以采用软件实现,也可以均采用硬件实现,还可以部分采用软件实现,部分采用硬件实现。例如,处理器11中的读取单元111、判断单元113以及执行单元114采用软件实现,解密单元114采用硬件实现。

可以理解的是,读取单元111、解密单元112、判断单元113以及执行单元114等单元还可以独立于处理器11存在。且上述所说明的读取单元111、解密单元112、判断单元113以及执行单元114等仅为便于理解而进行说明。在具体实施中,上述的读取单元111、解密单元112、判断单元113以及执行单元114的功能还可以采用其他的功能模块来实现。

参照图2,给出了本发明实施例中的另一种非易失性存储器数据加密系统的结构示意图,下面结合图1进行说明。

在具体实施中,非易失性存储器数据加密系统还可以包括系统总线13、加密访问控制单元14以及存储器访问控制单元15。在图2中,加密访问控制单元14以及存储器访问控制单元15可以等价实现读取单元111、判断单元113以及执行单元114的功能。

在非易失性存储器12中,还可以设置有加密控制信息区。在加密控制信息区中,存储有加密区对应的地址范围的信息。

加密访问控制单元14与存储器访问控制单元15耦接。当非易失性存储器数据加密系统上电时,加密访问控制单元14自动从非易失性存储器12的加密控制信息区中读取加密区对应的地址范围,并将读取到的加密区对应的地址范围输出至存储器访问控制单元15。存储器访问控制单元15接收并保存加密区对应的地址范围。

在具体实施中,非易失性存储器可以为flash闪存,也可以为电可擦可编程只读存储器(electricallyerasableprogrammablereadonlymemory,eeprom),还可以为多次可编程存储器(multipletimeprogrammable,mtp),或其他非易失性存储器。

在本发明一实施例中,非易失性存储器12为flash闪存。相应地,存储器访问控制单元15可以为flash闪存访问控制单元。当非易失性存储器12为flash闪存时,非易失性存储器数据加密系统中还可以设置有flash多路选择器,通过flash多路选择器来控制对flash闪存的访问。

在具体实施中,非易失性存储器12中的加密控制信息区中,可以存储有加密区间配置字以及加密保护字,其中:加密区间配置字适于标识加密区对应的地址区间,加密保护字适于保持加密区处于加密状态。当非易失性存储器数据加密系统上电上电时,加密访问控制单元14从加密控制信息区中读取加密区间配置字,从而可以获取加密区对应的地址范围。

加密区间配置字可以包括加密区的起始地址以及结束地址。加密区间配置字可以占用加密控制信息区中的一个或多个地址,可以指定具体的字节或字地址作为加密区间配置字,也可以仅指定存储块编号作为加密区间配置字,例如flash闪存的页编号。

在具体实施中,加密控制信息区可以独立于加密区设置,也即加密控制信息区对应的地址区间与加密区对应的地址范围之间不存在交集。加密控制信息区也可以设置在加密区内部,也即加密控制信息区对应的地址区间处于加密区对应的地址范围之内。加密控制信息区中的加密区间配置字可以独立于加密区设置,加密保护字设置在加密区中。加密控制信息区中的加密保护字可以独立于加密区设置,加密区间配置字可以设置在加密区中。

也就是说,加密控制信息区和加密区可以独立设置,加密控制信息区也可以被加密区完全包括,加密控制信息区还可以被加密区部分包括。

例如,加密区间配置字独立于加密区设置,加密保护字设置在加密区的最后一个地址。

在具体实施中,可以预先设定加密控制信息区的擦除条件。为确保加密区数据的安全性,可以设定当加密区中的数据被完全擦除后,方可擦除加密控制信息区。

在具体实施中,系统总线13耦接在处理器11以及存储器访问控制单元15之间,处理器11可以通过系统总线13向存储器访问控制单元15发送访问指令。在访问指令中,携带有访问指令对应的地址区间。

当存储器访问控制单元15接收到访问指令时,将访问指令对应的地址区间与存储的加密区对应的地址范围进行比较。当访问指令对应的地址区间处于加密区对应的地址范围之内时,拒绝将访问指令输出至非易失性存储器12,也即处理器11无法通过访问指令来访问加密区中存储的数据,从而可以确保加密区中的数据安全。

在具体实施中,在非易失性存储器数据加密系统中,还可以包括系统内可编程(insystemprogramming,isp)单元。在实际应用中可知,系统内可编程是指:通过专门的接口,例如串口,完成对芯片内部可编程存储器的编程,无需将芯片放置于专用编程器内编程,便于芯片的调试或升级。

系统内可编程单元17与非易失性存储器12耦接,可以从非易失性存储器12的加密控制信息区中获取加密区对应的地址范围以及加密保护字。在实际应用中,当存在对系统内可编程单元17的编程操作时,用户可以通过上位机21向编程器20输入编程操作指令,进而通过编程器20对系统内可编程单元17进行编程操作。

当开发者通过系统内可编程单元17向非易失性存储器12输出读操作指令,且读操作指令对应的数据位于加密区内时,为提高数据安全性,避免加密数据被其他开发者轻易获取,非易失性存储器12可以不响应读操作指令,或者读操作指令读取到的数据为定值,例如,读操作指令读取到的数据为恒0。

当开发者通过系统内可编程单元17对非易失性存储器12进行编程操作时,系统内可编程单元17可以获取编程操作对应的地址区间。当编程操作对应的地址区间处于加密区对应的地址范围之内时,清除加密区中的数据,并在将加密保护字以及加密区间配置字清除完成之后,再进行编程操作。

在系统内可编程单元17编程操作完成后,加密区中的数据以及加密控制信息区中的数据均被完全清除,从而保证了加密区中原有数据的安全性。

在实际应用中,开发者可以预先获知非易失性存储器12中的哪些地址区间为加密区。在通过系统内可编程单元17对非易失性存储器12进行编程操作时,可以决定是否对加密区进行编程操作。若开发者存在对加密区进行编程操作的需求,则可以提醒开发者存在加密区中的数据被完全清除的风险。

在具体实施中,加密区可以支持应用内编程(inapplicationprogramming,iap)的擦除和写操作。在实际应用中可知,iap技术是指应用程序通过通信端口,例如通用异步收发器、usb、程序调试接口或者蓝牙等通信端口,接收应用程序的更新数据进行自编程的技术。通过使用iap技术可以实现系统软件的远程更新,例如在无线应用场景下,上位机通过网络自动更新系统软件,无需工程师现场更新,从而可以节省系统更新成本,并可完成一些人力不可及的恶劣环境下的系统更新。

在具体实施中,非易失性存储器数据加密系统还可以包括应用内可编程控制单元18。应用内可编程控制单元18分别与非易失性存储器12以及加密访问控制单元14耦接,且应用内可编程控制单元18与系统总线13耦接。参照图3,给出了本发明实施例中的又一种非易失性存储器数据加密系统的结构示意图。在实际应用中,开发者可以通过程序调试接口19控制应用内可编程控制单元18,从而实现对非易失性存储器12进行编程操作。在实际应用中可知,对非易失性存储器12进行编程操作,实质上是对非易失性存储器12进行擦除操作和写操作。

在非易失性存储器12的加密区中,存储有加密的第一编程操作指令以及第一编程地址区间,第一编程操作指令与第一编程地址区间相对应。加密访问控制单元14在获取到加密区对应的地址范围后,可以将加密区对应的地址范围输出至应用内可编程控制单元18。

开发者可以通过程序调试接口19向应用内可编程控制单元18输入编程操作指令,编程操作指令可以为第一编程操作指令以及其他非第一编程操作指令。当应用内可编程控制单元18检测到接收到的编程操作指令为第一编程操作指令时,对第一编程操作指令对应的第一编程地址区间进行编程操作。当应用内可编程控制单元18检测到接收到的编程操作指令为非第一编程操作指令时,拒绝对第一编程地址区间进行编程操作。

在实际应用中,程序调试接口19可以外接联合测试工作组(jointtestactiongroup,jtag)、swd等协议的调试器。

在对第一编程地址区间进行编程操作时,应用内可编程控制单元18先将第一编程地址区间中已存储的数据进行擦除操作。在完成擦除操作之后,再将第一编程操作指令对应的数据写入到第一编程地址区间中。

从上述实施例中可以得知,第一编程操作指令是存储在加密区中的。也就是说,对第一编程地址区间的编程操作是从加密区内部发起的。换句话说,当开发者存在对第一编程地址区间进行编程操作的需求时,开发者需要获知如何控制处理器11从加密区中读取出第一编程操作指令。若开发者无法控制处理器11从加密区中读取第一编程操作指令,则开发者就无法通过应用内可编程控制单元18对第一编程地址区间进行编程操作。

相比于系统内可编程单元17对非易失性存储器12的加密区进行的编程操作,通过应用内可编程控制单元18对非易失性存储器12的加密区所进行的编程操作过程中,无需擦除加密控制信息区中的数据。因此,在通过应用内可编程控制单元18对非易失性存储器12的加密区进行的编程操作过程中,由于加密保护字未被清除,因此加密区仍处于加密状态。

由于只是对加密区中的第一编程地址区间进行编程操作,而不是对加密区中的所有区域都进行编程操作,因此可以提高系统的编程效率。

在具体实施中,在加密区中,还存储有升级引导程序,升级引导程序可以为bootloader等程序。在对加密区中的数据进行更新时,开发者可以预先对更新数据进行加密处理,也即输入至加密区的更新数据是加密之后的数据。升级引导程序可以支持对加密数据的解密操作,因此可以将接收到的加密之后的更新数据进行解密处理,并将解密之后的数据存储在加密区中。

当非易失性存储器12为flash闪存时,由于flash闪存以页为单元进行擦除,若加密区占用flash闪存中的一页,则会导致bootloader程序也被擦除。因此,为能够正常进行iap操作,在具体实施中,可以在flash闪存中预先留出一页作为bootloader程序保存页。

从本发明上述实施例中可知,在通过应用内可编程控制单元18对加密区进行擦除和编程等操作时,需要调用加密区中的bootloader程序。在实际应用中,bootloader程序及其采用的加解密算法均可由用户自行设计,对用户的开发能力要求较高。用户如有能力开发插件,或者芯片原厂商提供一定的技术支持,则可以通过二次开发实现通过编程调试器与应用内可编程控制单元18与bootloader程序的通信。为保证安全性,用户可以不将自己开发的bootloader程序及其采用的加解密算法作为通用插件公开发布。

在具体实施中,非易失性存储器数据加密系统中,还可以包括编程校验单元16,编程校验单元16可以通过系统总线13与处理器11耦接。在完成对非易失性存储器12的加密区的编程操作之后,可以通过编程校验单元16对写入至加密区中的数据进行校验,并将校验结果经由系统总线输出至处理器。

现有技术中,处理器经由系统总线直接从加密区中读取写入的数据,可能导致数据不安全;本技术方案中,通过编程校验单元对写入至加密区中的数据进行校验,并将校验结果输出至处理器,可以避免处理器从加密区中读取写入的数据时被攻击而导致数据泄露的情况发生,确保芯片程序数据的安全性。

下面对本发明实施例中提供的iap编程过程进行详细说明。

参照图4,给出了本发明实施例中的一种应用内可编程控制单元的编程操作流程图,下面结合图1~图3进行说明。

步骤s401,判断接收到的擦除操作指令是否为第一擦除操作指令。

在具体实施中,加密区中存储有第一编程操作指令以及第一编程地址区间。在实际应用中可知,应用内可编程控制单元18的编程操作包括擦除操作以及写操作。因此,第一编程操作指令包括第一擦除操作指令以及第一写操作指令。

当存在对加密区中的第一编程地址区间进行编程操作的需求时,处理器11从加密区中读取第一编程操作指令并输出至应用内可编程控制单元18。

由于在编程过程中,应用内可编程控制单元18接收到的擦除操作指令可能是开发者输入的其他擦除操作指令,也可能是处理器11输出的第一擦除操作指令,因此,应用内可编程控制单元18在接收到擦除操作指令之后,判断接收到的擦除操作指令是否为第一擦除操作指令。当接收到的擦除操作指令为第一擦除操作指令时,执行步骤s402;当接收到的擦除操作指令为非第一擦除操作指令时,拒绝对第一编程地址区间的擦除操作。

当接收到的擦除操作指令为第一擦除操作指令时,执行擦除操作。

步骤s402,判断擦除操作是否完成。

在擦除操作的过程中,当检测到擦除操作完成后,执行步骤s403;当检测到擦除操作未完成时,继续执行步骤s402,也即继续执行擦除操作,并判断擦除操作是否完成。

在具体实施中,当非易失性存储器12为flash闪存时,基于flash闪存的特性,在进行擦除操作时,可以对第一编程地址区间按页进行擦除操作。

步骤s403,接收经过加密的更新数据。

在具体实施中,在擦除操作完成后,应用内可编程控制单元18向第一编程地址区间输出经过加密的更新数据。

步骤s404,判断接收到的写操作指令是否为第一写操作指令。

在具体实施中,当接收到的写操作指令为第一写操作指令时,执行步骤s405;当接收到的写操作指令为非第一写操作指令时,拒绝对第一编程地址空间的写操作。

步骤s405,对更新数据进行解密并存储在第一编程地址区间。

步骤s406,判断更新数据写入操作是否完成。

在具体实施中,当更新数据写入操作完成时,结束操作流程;当更新数据写入操作未完成时,可以重新执行步骤s404。

在具体实施中,针对本发明上述实施例中步骤s401~步骤s406的每一个步骤,均可以采用软件进行实现,也均可以采用硬件进行实现,还可以通过软硬件结合的方式进行实现。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指示相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1