CN110275845A - 存储器控制方法、装置及电子设备 - Google Patents
存储器控制方法、装置及电子设备 Download PDFInfo
- Publication number
- CN110275845A CN110275845A CN201910584061.XA CN201910584061A CN110275845A CN 110275845 A CN110275845 A CN 110275845A CN 201910584061 A CN201910584061 A CN 201910584061A CN 110275845 A CN110275845 A CN 110275845A
- Authority
- CN
- China
- Prior art keywords
- programmed
- area
- program
- memory
- programming
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种存储器控制方法、装置及电子设备,所述方法包括:判断针对存储器的编程命令是否是安全编程命令;如果编程命令是安全编程命令,则获得编程命令中的编程地址段;判断编程地址段所对应的存储器中的第一区域是否可编程;如果第一区域可编程,将密钥数据编写入第一区域中未经编程的待编程物理地址中,其中,密钥数据是真随机数。解决了现有技术中存储器编程安全性差的技术问题,达到了提高存储器编程安全性的技术效果。
Description
技术领域
本发明电子信息处理领域,具体而言,涉及一种存储器控制方法、装置及电子设备。
背景技术
在超大规模集成电路中,常常需要在芯片出厂前将一些数据如模拟电路预设值、一些模块的初始值、安全密钥等编程为指定的预设值,并储存到芯片中,以使芯片能够在上电后正常工作。在芯片出厂后的寿命中,这些值也不能被改变。因此就用到一次性可编程(One Time Programmable,OTP)器件来存储这些数据。
基于OTP存储器编程器件及实际应用场景,现有的OTP控制技术有针对此做了一些尝试,如采用分区域的方式,对不同的区域进行封闭,使得该区域在封闭后不能被编程,在OTP编程数据的安全性做了有益尝试;再如针对OTP存在编程失败的风险,采用对单一的比特地址最高连续编程16次的编程方式,以降低编程失败的概率等。
但是,现有的上述技术方案,存在存储器编程安全性差的技术问题。
发明内容
本发明的目的在于提供一种存储器控制方法、装置及电子设备,其旨在改善现有技术中存在的上述不足。
第一方面,本发明实施例提供了一种存储器控制方法,所述方法包括:
判断针对存储器的编程命令是否是安全编程命令;
如果所述编程命令是安全编程命令,则获得所述编程命令中的编程地址段;
判断所述编程地址段所对应的存储器中的第一区域是否可编程;
如果所述第一区域可编程,将密钥数据编写入所述第一区域中未经编程的待编程物理地址中,其中,所述密钥数据是随机数。
可选的,所述判断针对存储器的编程命令是否是安全编程命令,包括:判断所述编程命令是否来自于编程机台;
如果所述编程命令来自于编程机台,判断所述编程命令是否是针对所述存储器的安全区域进行编程;
如果所述编程命令是针对所述安全区域进行编程,则所述编程命令是安全编程命令。
可选的,所述判断所述编程地址段所对应的存储器中的第一区域是否可编程,包括:
判断所述编程地址段针对的第一区域是否在安全区域内;
如果所述第一区域在安全区域内,判断所述第一区域是否未封闭;
如果所述第一区域未封闭,则所述第一区域可编程。
可选的,所述如果所述第一区域可编程,将密钥数据编写入所述第一区域中未经编程的待编程物理地址中,包括:
判断当前的待编程物理地址是否已编程;
如果当前的待编程物理地址已编程,则试图将密钥数据编写入下一个待编程物理地址中;
如果当前的待编程物理地址未编程,将所述密钥数据编写入所述当前的待编程物理地址中。
可选的,当CPU读取所述密钥数据时,讲所述安全区域的所述密钥数据译码为统一的预设数据。
可选的,在所述判断是否是安全编程命令之前,所述方法还包括:
对所述存储器进行分区,获得多个第一区域,每个所述第一区域包括编程数据来源标识;
根据所述第一区域的编程数据来源标识确定所述第一区域是否是安全区域。
第二方面,本发明实施例提供了一种存储器控制装置,所述装置包括:总线控制模块,用于判断针对存储器的编程命令是否是安全编程命令;如果所述编程命令是安全编程命令,则获得所述编程命令中的编程地址段;判断所述编程地址段所对应的存储器中的第一区域是否可编程;
存储器操作控制模块,用于如果所述第一区域可编程,将密钥数据编写入所述第一区域中未经编程的待编程物理地址中,其中,所述密钥数据是随机数。
第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质用于存储上述任一项所述方法中的密钥数据。
第五方面,本发明实施例提供了一种电子设备,所述电子设备包括处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述方法的步骤。
相对现有技术,本发明具有以下有益效果:
本发明实施例提供了一种存储器控制方法、装置及电子设备,所述方法包括:判断针对存储器的编程命令是否是安全编程命令;如果编程命令是安全编程命令,则获得编程命令中的编程地址段;判断编程地址段所对应的OTP存储器中的第一区域是否可编程;如果第一区域可编程,将密钥数据编写入第一区域中未经编程的待编程物理地址中,其中,密钥数据是随机数。通过判断针对存储器的编程命令是否是安全编程命令,如果编程命令是安全编程命令,则获得编程命令中的编程地址段,判断编程地址段所对应的存储器中的第一区域是否可编程,如果第一区域可编程,将密钥数据编写入第一区域中未经编程的待编程物理地址中,其中,密钥数据是随机数。即对编程命令是否是安全编程命令进行校验、对编程地址段所对应的存储器中的第一区域是否可编程进行校验,若校验通过,将随机数的密钥数据写入第一区域中未经编程的待编程物理地址中,密钥数据是随机数,从而提高了存储器编程安全性。解决了现有技术中存储器编程安全性差的技术问题,达到了提高存储器编程安全性的技术效果。
本发明实施例的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的一种存储器控制系统的方框结构示意图。
图2示出了本发明实施例提供的一种存储器控制方法的流程图。
图3示出了本发明实施例提供的一种存储器控制装置200的方框结构示意图。
图4示出了本发明实施例提供的一种电子设备的方框结构示意图。
图5示出了本发明实施例提供的另一种存储器控制系统的方框结构示意图。
图标:200-存储器控制装置;210-总线控制模块;220-存储器操作控制模块;230-上电读取模块;240-TRNG模块;250-AES模块;260-ATE模块;270-CPU模块;500-总线;502-处理器;504-存储器;505-总线接口。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
OTP存储器编程器的存储区域默认值是全零,每比特仅编程一次以降低OTP存储单元被损坏的风险。但是OTP制造厂商在对存储区域进行编程过程中,存在一定的编程失败的风险。在传统的集成有OTP存储器编程器的芯片中,一旦编程失败,意味着这颗芯片就成为了废片,降低了量产芯片的良率。由于OTP存储器编程器件中会存储密钥数据等芯片关键信息,因此OTP编程数据的安全性也是OTP控制技术进步的方向之一。
目前,通过对不同的区域进行封闭,使得该区域在封闭后不能被编程,以及采用对单一的比特地址最高连续编程16次的编程方式,以降低编程失败的概率等。
但是,传统的OTP存储器用1比特物理地址映射为1比特逻辑地址,即OTP存储器1比特物理地址与1比特逻辑地址一一对应,当出现某一比特编程不成功时,则该芯片就被判定为不合格芯片。
OTP存储数据的安全性包含两个方面,第一方面是编程的安全性,在已有技术中存在对已编程的区域进行封闭使得该区域不能再重复进行编程的技术。存储数据的来源全部为CPU接口或者ATE接口,采用这种技术编程的安全密钥区域数据为CPU或ATE可感知的数据,并不是随机数据,不能有效保护安全密钥。另外现存技术中存在对已编程区域不能再次重复编程技术,对编程区域再编程过程中安全性及防止软件误操作性及抵抗恶意攻击性还不够强健。
第二方面是读取的安全性,在已有技术中,基于密钥安全的考虑,对用户读出的数据进行了加扰,使得用户不能真正的读出密钥数据。由于用户读出的是加扰后的数据,一方面不能读取真正的密钥,另一方面也不易从结果判断所读是安全密钥区域,没有明显的标识,在用户误操作的情况下不易发现错误。
第三方面,在工程实际中,编程区域的划分常常存在以下两个问题:1.项目前期的编程区域的划分与软件人员最终分配的编程区域会有一些区别;2.OTP控制装置的电路移植性差,不能灵活适应不同的项目需求。
基于现有技术存在的上述不足,本发明实施例提供了本发明实施例提供了一种OTP存储器编程方法、装置及电子设备,至少用以解决现有技术中存在的OTP存储器编程安全性差的技术问题。
实施例
图1示出了本发明实施例提供的一种存储器控制系统的方框结构示意图。存储器控制系统用于对存储器进行编程,以提高存储其的安全性。其中,存储器可以是OTP存储器、Nand存储器等,存储器控制系统包括上电读取模块、TRNG接口、ATE接口、AES接口、CPU接口、总线控制模块及OTP操作控制模块。上电读取模块、TRNG接口、ATE接口、AES接口、CPU接口和OTP操作控制模块与总线控制模块连。OTP操作控制模块用于对OTP存储器进行编程以及与OTP存储器进行数据交互。
其中,上电读取模块用于,在上电后从OTP存储器中读出OTP存储器所需的预设参数,预设参数包括OTP存储器对于TRNG接口、ATE接口、AES接口、CPU接口及OTP操作控制模块等所需的数据。
TRNG接口用于,连接真随机数产生模块,获得真随机数。由于OTP存储器中需要存储密钥数据等重要安全密码信息,基于密钥数据的安全性考虑,设立独立的真随机数接口来写入密钥信息。这样攻击者无论通过CPU接口或者ATE接口均无法向OTP存储器写入密钥,只有密钥来自于TRNG接口,密钥才可以写入OTP存储器中。因此CPU和ATE接口也无法读取到真正的密钥数据信息,从而在硬件上确保了密钥数据的安全性。
AES接口用于,获取密钥数据给高级加密标准(Advanced Encryption Standard,AES)。本申请提供硬件电路将AES接口的密钥数据直接传输给AES模块,从而杜绝了从CPU接口获取密钥数据的可能性。
ATE接口用于,在测试机台上访问OTP操作控制模块的中的寄存器,并用ATE接口来对OTP存储器的一部分区域模块的预设值、芯片信息、密钥数据进行编程。
CPU接口用于,提供用户通过CPU接口来访问TP操作控制模块中的寄存器,并用此接口编程OTP存储器的接口封闭区、用户数据区等区域。即OTP存储器的一些数据是在ATE机台测试时编程的,ATE机台与ATE接口连接,OTP存储器的另另一些数据是在OTP存储器量产时,通过CPU接口来编程的。
总线控制模块包括多个与OTP操作控制模块连接的寄存器,即OTP操作控制模块中的寄存器可以设置在总线控制模块中。这些寄存器可以是OTPC_CTRL、OTPC_STATUS、OTPC_ADDR、OTPC_RDATA、OTPC_WDATA以及OTPC_TRNG等寄存器。
其中,OTPC_CTRL用于存储OTPC 4比特操作命令及1比特操作命令触发控制信号。
OTPC_STATUS用于存储1比特操作完成状态指示信号、1比特操作结果是否成功标志信号,1比特命令错误状态指示信号、1比特上电完成状态指示信号、1比特OTP操作地址越界错误指示信号。
OTPC_ADDR用于存储OTP控制器待操作的逻辑地址。
OTPC_RDATA用于存储OTPC_ADDR中的逻辑地址对应的数据,此寄存器存储的1Byte数据是逻辑地址数据,在OTP控制器内部完成了从物理地址数据24bit到逻辑地址数据8bit的转换,即将24bit的物理地址数据转换映射到8bit的逻辑地址数据。
OTPC_WDATA用于存储1比特OTPC_ADDR对应byte地址及otpc_bit_addr地址中的待编程数据,3比特otpc_bit_addr表示OTPC_ADDR逻辑byte地址中具体的哪一个比特。
OTPC_TRNG用于存储3比特TRNG模式选择及配置信号,1比特TRNG请求信号,1比特TRNG产生完成标志,1比特TRNG数据无效标志、ATE总线和CPU总线访问仲裁器、OTP编程及测试的命令检测、错误检测、OTP操作模块的接口信号、异步信号相关的同步电路等信息。
其中,OTP编程即测试命令检测、错误检测包括ATE机台测试命令检测,具体的,仅允许ATE机台进行OTP相关的测试命令;对密钥编程命令的校验;ATE调用TRNG命令检测即仅允许在ATE机台测试模式下进行调用TRNG烧写密钥区域;对编程区域是否封闭的检测,如果第一区域已被封闭,则不允许进行再次进行编程;对待编程地址内的数据是否为1的检测,即经过读取待编程的地址后该比特如果为1,则不会再次进行编程,否则会启动编程状态机;如果在CPU访问OTP存储器的情况下,CPU写ATE测试命令或调用TRNG编写密钥命令,则OTP控制器会报告OTPC_STATUS中的命令错误指示信号以提示CPU发送了错误的命令;错误检测还包括ATE编写安全编程区域的地址检测(即用密钥编程命令编程的地址不在密钥区域内)。
OTP操作控制模块的接口信号包含命令类型、操作byte地址、操作bit地址、读写数据、操作触发信号、操作完成标志、命令执行成功标志等信息。
异步信号相关的同步电路是由于从OTP控制模块在CPU模式下的操作时钟是500MHz,而OTP操作控制模块的工作时钟是25MHz,所以两个模块之间的接口信号需要做跨时钟域的同步电路处理。因此需要通过异步信号相关的同步电路对两个模块之间的接口信号进行同步处理。
OTP操作控制模块用于产生针对OTP存储器接口的复位序列、读序列、编程序列、测试序列及智能编程相关的控制逻辑等。
在可靠性方面,本申请提出用OTP存储器的3比特物理地址映射为1比特逻辑地址。这种技术其存储的可靠性满足芯片实际应用中的量产需求,又最大限度的节约了存储器的存储资源。以8Kb容量的OTP存储器举例来说,OTP的读写操作特性为写一次只能写1比特,读可以每次读8比特即写是以比特为单位,读是以倍特byte为单位。8千比特(Kb)容量存储器的地址位宽为13比特,采用3比特物理地址映射1比特逻辑地址,共可以得到2千比特(Kb)+680比特(bit)可用逻辑地址,剩余8比特(bit)的物理地址丢弃不用。采用3bit物理映射方式比4bit物理映射方式在可靠性满足工业需求的同时节省存储空间25%。
在读取OTP存储器时,逻辑地址以倍特为操作单位,即每次读出24比特物理地址,24比特物理地址对应8比特的了逻辑地址,每次读出的是8比特的逻辑地址,而24比特物理地址中的8比特的物理地址存储在寄存器,于是再用两个8比特寄存器拼凑译码得到1倍特逻辑地址的数据。此种技术实现方式兼了顾芯片可靠性、节约OTP存储器容量满足实际应用的折中实现方式。
OTP存储数据的安全性包含两个方面,第一方面是编程的安全性,在已有技术中存在对已编程的区域进行封闭使得该区域不能再重复进行编程的技术。本申请提出一种更安全可控的编程技术,该技术具有以下特性:①安全密钥区域编程数据来源于真随机数;②对安全编程命令的校验;③对安全编程区域地址的校验;④对编程区域是否封闭的检测;⑤对该需要编程的物理地址进行是否已编程的检测。由于安全密钥区的编程数据来源于真随机数,这样无论是ATE接口还是CPU接口均无法获知安全密钥区编程的数据是什么。
同时,在总线控制模块中设置专门的安全密钥编程命令,在安全密钥区域编程前对编程命令进行检测,有效保证了编程操作的安全性;由于存在对安全编程区域地址的校验,保证了所编程的安全区域为配置的安全密钥区域地址,防止了编程的错误操作;若安全密钥区域已被编程,且该区域已封闭,则不能对安全密钥区域进行二次编程,此举保证了该区域编程次数的唯一性。最后,对要编程的物理地址进行检测,若该物理地址已被编程,那么就不会进行再次编程,若该地址未被编程,则允许进行编程。以上措施综合保证了数据编程的安全性。
第二方面是读取的安全性,已有技术中基于密钥安全的考虑对用户读出的数据进行了加扰,使得用户不能真正的读出密钥数据。由于用户读出的是加扰后的数据,故一方面不能读取真正的密钥,另一方面也不易从结果判断所读是安全密钥区域,没有明显的标识,在用户误操作的情况下不易发现错误。针对此,本申请提出,用户读取的密钥安全区域的数据一律译码为8’h5A5A,其具有很好的识别性。
为支持软件人员可以在OTP存储器的芯片后期可以灵活规划OTP存储器各个编程区域,及方便本OTP操作控制模块灵活移植到别的项目中,本申请提出一种可以对OTP存储器进行灵活配置的实现技术,包括将OTP存储器分为8个区域,每个区域用1比特来表示区域是否封闭,同时可以灵活配置8个区域的起始地址与结束地址及该区域的编程数据是否来自于真随机数。
具体例如,用8个32bit的寄存器表示8个区域,寄存器0bit[31:0]表示第一组,用寄存器0bit[12:0]表示第一分区的起始地址,寄存器0bit[15]表示该区域编程数据来源是否为真随机数(即表示该区域是否为安全密钥区域),寄存器0bit[31]表示该区域是否是封闭指示区。同理,bit[28:16]表示第一分区的结束地址,其他bit为保留位。其中,寄存器0bit[31:0]表示寄存器0的第0bit到第31bit,寄存器0bit[12:0]表示寄存器0的第0bit到第12bit,寄存器0bit[15]表示寄存器0的第15bit,寄存器0bit[31]表示寄存器0的第31bit。
具体还可以例如,用32个8比特寄存器两两为一组,寄存器0[7:0]和寄存器1[7:0]表示第一组,用{寄存器1[4:0],寄存器0[7:0]}表示第一分区的起始地址,寄存器1[7]表示该区域编程数据来源是否为真随机数(即表示该区域是否为安全密钥区域),寄存器1[6]表示该区域是否是封闭指示区。同理,{寄存器3[4:0],寄存器2[7:0]}表示第一分区的结束地址,寄存器3[7:5]为保留位。
经过以上电路实现,一方面软件设计人员可以方便的对OTP的存储空间进行规划,另一方面由于实现了参数化配置,也使得本申请的控制器可以灵活方便的移植到别的项目中。
在上述的存储器控制系统的基础上,本发明实施例提供的一种存储器控制方法,应用于上述的存储器控制系统中的总线控制模块,所述包括如图2所示的S101~S104,以下结合图2对S101~S104进行阐述。
S101:判断针对存储器的编程命令是否是安全编程命令。
S102:如果编程命令是安全编程命令,则获得编程命令中的编程地址段。
S103:判断编程地址段所对应的存储器中的第一区域是否可编程。
其中,编程地址段包括多个待编程逻辑地址,多个待编程逻辑地址与第一区域中的多个待编程物理地址对应。
S104:如果第一区域可编程,将密钥数据编写入第一区域中未经编程的待编程物理地址中,其中,密钥数据是随机数。
作为一种可选的实施方式,密钥数据是真随机数,由上述的TRNG接口获得。
通过采用以上方案,判断针对存储器的编程命令是否是安全编程命令,如果编程命令是安全编程命令,则获得编程命令中的编程地址段,判断编程地址段所对应的存储器中的第一区域是否可编程,如果第一区域可编程,将密钥数据编写入第一区域中未经编程的待编程物理地址中,其中,密钥数据是随机数。即对编程命令是否是安全编程命令进行校验、对编程地址段所对应的存储器中的第一区域是否可编程进行校验,若校验通过,将随机数的密钥数据写入第一区域中未经编程的待编程物理地址中,使得不是安全的编程指令不能对OPT存储器进行编程,不是对存储器的安全区域进行编程的操作不得以执行,不是随机数的密钥数据不能写入存储器中,从而提高了存储器编程安全性。
其中,编程命令可以来自于编程机台,也可以来自于CPU,当编程命令来自于CPU时,仅当编程命令来自于编程机台时且锁针对的编程区域是安全区域时,才能保证编程命令的安全性,以减小OTP存储器编程的失败率,为此,S100具体为:判断编程命令是否来自于编程机台;如果编程命令来自于编程机台,判断编程命令是否是针对所述存储器的安全区域进行编程;如果编程命令是针对安全区域进行编程,则编程命令是安全编程命令。
其中,安全区域是编程数据(密钥数据)来源标识表示为安全的区域,为此,在判断编程命令是否是针对所述存储器的安全区域进行编程之前,存储器编程方法还包括:对存储器进行分区,获得多个第一区域,每个第一区域包括编程数据来源标识;根据第一区域的编程数据来源标识确定第一区域是否是安全区域。例如,如果编程数据来源标识表示密钥数据来自于PCU接口,则说明该第一区域不是安全区域,当编程数据来源标识表示密钥数据来自于ATE接口,则说明该第一区域是安全区域。例如,如果数据来源标识为为1则数据来源于随机数,如果为0,则数据来源于CPU写入的数据。在一些实施例中,第一区域还包括起始地址、结束地址、区域长度等信息,以对第一区域进行编程时,快速定位第一区域的待编程物理地址和快速分配密钥数据给区域长度相对应的第一区域,以提高编程的可靠性、安全性和速度。
在一些实施例中,第一区域是可编程的,也有可能是不可编程的,当第一区域不可编程时,有两种情况,一种是第一区域不在安全区域内,另一种情况是第一区域已经被封闭,不可再进行访问编程。为此,S300具体为:判断编程地址段针对的第一区域是否在安全区域内;如果第一区域在安全区域内,判断第一区域是否未封闭;如果第一区域未封闭,则第一区域可编程。如此,保证了编程操作的安全性,提高了存储器编程的安全性。
在确保编程命令的安全性和第一区域的安全性后,赋予对第一区域进行编程的操作权限,将密钥数据编写入第一区域中未经编程的待编程物理地址中。具体的,S400包括:判断当前的待编程物理地址是否已编程;如果当前的待编程物理地址已编程,则试图将密钥数据编写入下一个待编程物理地址中;如果当前的待编程物理地址未编程,将密钥数据编写入当前的待编程物理地址中。其中,试图将密钥数据编写入下一个待编程物理地址中包括:以下一个待编程物理地址作为当前的待编程物理地址,判断该当前的待编程物理地址是否已编程;如果该当前的待编程物理地址已编程,则试图将密钥数据编写入下一个待编程物理地址中;如果当前的待编程物理地址未编程,将密钥数据编写入当前的待编程物理地址中。以此类推,直至密钥数据编写入第一区域中,或者第一区域中的所有待编程物理地址都已编程。在本发明实施例中,当CPU读取密钥数据时,将安全区域的密钥数据译码为统一的预设数据,以避免CPU读取到真正的密钥数据,保证密钥数据的安全性。
为了提高编程的成功率,节省存储资源,在实现上述操作时,设置3比特的多个待编程逻辑地址对应1比特的多个待编程物理地址。如此,当根据1比特的多个待编程物理地址对待编程逻辑地址进行编程时,编程成功率为87.5%,相较于1比特的多个待编程逻辑地址对应1比特的多个待编程物理地址,编程成功率提高了37.5%。相较于4比特的多个待编程逻辑地址对应1比特的多个待编程物理地址的情况,硬件结构简单,降低了实现成本。
在一些实施例中,密钥数据来自于TRNG接口时,是真随机数,TRNG接口将密钥数据发送至总线控制模块中进行缓存,通过ATE接口从编程机台(ATE机台)获得变成命令,将编程命令发送至总线控制模块中,总线控制模块校验编程命令是否是安全编程命令,如果编程命令是安全编程命令,则根据该编程命令将该密钥数据编写如存储器中。由此,提高了密钥数据的安全性,避免了错误的编程命令对编程降低编程安全性和可靠性,提高了存储器编程的安全性和可靠性。同时,对编程区域进行分区,提高了存储器编程在工程应用中的灵活性和可配置性。
针对上述实施例提供一种存储器控制方法,本申请实施例还对应提供一种用于执行上述的步骤的执行主体,该执行主体可以为图3中存储器控制装置200。请参考图3,该装置包括:
总线控制模块210,用于判断针对存储器的编程命令是否是安全编程命令;如果编程命令是安全编程命令,则获得编程命令中的编程地址段。判断编程地址段所对应的存储器中的第一区域是否可编程;
存储器操作控制模块220,用于如果第一区域可编程,将密钥数据编写入第一区域中未经编程的待编程物理地址中,其中,密钥数据是随机数。
可选的,总线控制模块210具体用于:判断编程命令是否来自于编程机台;如果编程命令来自于编程机台,判断编程命令是否是针对存储器的安全区域进行编程;如果编程命令是针对所述安全区域进行编程,则所述编程命令是安全编程命令。
可选的,总线控制模块210具体用于:判断编程地址段针对的第一区域是否在安全区域内;如果第一区域在安全区域内,判断第一区域是否未封闭;如果所述第一区域未封闭,则确定第一区域可编程。
存储器操作控制模块220具体还用于:判断当前的待编程物理地址是否已编程;如果当前的待编程物理地址已编程,则试图将密钥数据编写入下一个待编程物理地址中;如果当前的待编程物理地址未编程,将密钥数据编写入当前的待编程物理地址中。
可选的,所述装置还包括:分区模块,用于对存储器进行分区,获得多个第一区域,每个第一区域包括编程数据来源标识;根据第一区域的编程数据来源标识确定第一区域是否是安全区域。
可选的,存储器控制装置200还包括:
上电读取模块230,用于获得上电信息,以指示总线控制模块开始工作。
TRNG模块240,用于获得密钥数据。
AET模块250,用于加密密钥数据。
ATE模块260,用于获得编程命令;
CPU模块270,用于获得编程命令。
作为一种可选的实施方式,上电读取模块230、TRNG模块240、AES模块250、ATE模块260和CPU模块270都与总线控制模块210连接,上电读取模块230、TRNG模块240、AES模块250、ATE模块260和CPU模块270分别与上述图1所示的存储器控制系统中的上电读取模块、TRNG接口、AES接口、ATE接口和CPU接口对应,分别用于获得电读取模块、TRNG接口、AES接口、ATE接口和CPU接口中的数据。存储器操作控制模块220与存储器连接。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本发明实施例还提供了一种电子设备,如图4所示,包括存储器504、处理器502及存储在存储器504上并可在处理器502上运行的计算机程序,所述处理器502执行所述程序时实现前文所述存储器控制方法的任一方法的步骤。
在本发明实施例中,电子设备可以用于执行上述存储器控制系统中的部分,例如实现总线控制模块所实现的功能。在一些实施例中,上述的总线控制模块就是电子设备。在一些实施例中,上述的存储器控制系统集成在电子设备中,即电子设备还包括TRNG接口、ATE接口、AES接口和CPU接口,以及与OTP存储器进行数据交互。
其中,在图4中,总线架构(用总线500来代表),总线500可以包括任意数量的互联的总线和桥,总线500将包括由处理器502代表的一个或多个处理器和存储器504代表的存储器的各种电路链接在一起。总线500还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进进一步描述。总线接口505在总线500和TRNG接口、ATE接口、AES接口以及CPU接口之间提供接口。处理器502负责管理总线500和通常的处理,而存储器504可以被用于存储处理器502在执行操作时所使用的数据。
在一些实施例中,在电子设备执行上述功能时,执行如图5所示的存储器控制方法的流程图所示的S201~S211。
S201:判断程命令是否是针对存储器的安全区域进行编程。若是,转S202,否则进行其他处理事项。
S202:判断编程地址段针对的第一区域是否在安全区域内。若是,转S203,否则返回错误状态信息、命令结束信息、命令完成信息。
S203:判断第一区域是否未封闭。若是,返回错误状态信息、命令结束信息、命令完成信息,否则转S204。
S204:调用TRNG接口的随机数灿神模块产生随机数。
S205:判断随机数产生是否完毕。若是,转S206,否则转S204。
S206:缓存随机数,启动编程操作。
S207:判断当前的待编程物理地址是否为1。若是,转S210,否则转S208。
其中,判断当前的待编程物理地址是否为1,如果当前的待编程物理地址是为1,判定为当前的待编程物理地址已编程,否则当前的待编程物理地址未编程。
S208:将密钥数据编写入当前的待编程物理地址中。
S209:判断当前的待编程物理地址是否编程完毕。若是,转S210,否则转S208。
S210:试图将密钥数据编写入下一个待编程物理地址中。
S211:判断待编程物理地址是否编程完毕。若是,结束,否则转S210。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述存储器控制方法的任一方法的步骤。
本发明实施例还提供了另一种计算机可读存储介质,该计算机可读存储介质用于存储上述任一项所述方法中的密钥数据。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种存储器控制方法,其特征在于,所述方法包括:
判断针对存储器的编程命令是否是安全编程命令;
如果所述编程命令是安全编程命令,则获得所述编程命令中的编程地址段;
判断所述编程地址段所对应的存储器中的第一区域是否可编程第一区域;
如果所述第一区域可编程,将密钥数据编写入所述第一区域中未经编程的待编程物理地址中,其中,所述密钥数据是随机数。
2.根据权利要求1所述的方法,其特征在于,所述判断针对存储器的编程命令是否是安全编程命令,包括:判断所述编程命令是否来自于编程机台;
如果所述编程命令来自于编程机台,判断所述编程命令是否是针对所述存储器的安全区域进行编程;
如果所述编程命令是针对所述安全区域进行编程,则所述编程命令是安全编程命令。
3.根据权利要求1所述的方法,其特征在于,所述判断所述编程地址段所对应的存储器中的第一区域是否可编程,包括:
判断所述编程地址段针对的第一区域是否在安全区域内;
如果所述第一区域在安全区域内,判断所述第一区域是否未封闭;
如果所述第一区域未封闭,则所述第一区域可编程。
4.根据权利要求1所述的方法,其特征在于,所述如果所述第一区域可编程,将密钥数据编写入所述第一区域中未经编程的待编程物理地址中,包括:
判断当前的待编程物理地址是否已编程;
如果当前的待编程物理地址已编程,则试图将密钥数据编写入下一个待编程物理地址中;
如果当前的待编程物理地址未编程,将所述密钥数据编写入所述当前的待编程物理地址中。
5.根据权利要求3所述的方法,其特征在于,当CPU读取所述密钥数据时,将所述安全区域的所述密钥数据译码为统一的预设数据。
6.根据权利要求1所述的方法,其特征在于,在所述判断是否是安全编程命令之前,所述方法还包括:
对所述存储器进行分区,获得多个第一区域,每个所述第一区域包括编程数据来源标识;
根据所述第一区域的编程数据来源标识确定所述第一区域是否是安全区域。
7.一种存储器控制装置,其特征在于,所述装置包括:
总线控制模块,用于判断针对存储器的编程命令是否是安全编程命令;如果所述编程命令是安全编程命令,则获得所述编程命令中的编程地址段;判断所述编程地址段所对应的存储器中的第一区域是否可编程;
存储器操作控制模块,用于如果所述第一区域可编程,将密钥数据编写入所述第一区域中未经编程的待编程物理地址中,其中,所述密钥数据是随机数。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6任一项所述方法的步骤。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质用于存储权利要求1-6任一项所述方法中的密钥数据。
10.一种电子设备,其特征在于,所述电子设备包括处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1-6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910584061.XA CN110275845B (zh) | 2019-06-29 | 2019-06-29 | 存储器控制方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910584061.XA CN110275845B (zh) | 2019-06-29 | 2019-06-29 | 存储器控制方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110275845A true CN110275845A (zh) | 2019-09-24 |
CN110275845B CN110275845B (zh) | 2021-11-19 |
Family
ID=67963887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910584061.XA Active CN110275845B (zh) | 2019-06-29 | 2019-06-29 | 存储器控制方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110275845B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111736911A (zh) * | 2020-08-05 | 2020-10-02 | 北京智芯微电子科技有限公司 | 嵌入式芯片的验证方法及引导加载方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986663A (zh) * | 2010-11-29 | 2011-03-16 | 北京卓微天成科技咨询有限公司 | 一种基于otp的云存储数据存储方法、装置及系统 |
CN103383668A (zh) * | 2012-05-04 | 2013-11-06 | 三星电子株式会社 | 片上系统、操作片上系统的方法和包括片上系统的设备 |
CN106875974A (zh) * | 2017-03-16 | 2017-06-20 | 成都信息工程大学 | 一种otp存储装置以及访问otp存储器的方法 |
CN106952665A (zh) * | 2017-03-16 | 2017-07-14 | 成都信息工程大学 | 一种访问otp存储器的电路 |
CN107004083A (zh) * | 2014-12-12 | 2017-08-01 | 耐瑞唯信有限公司 | 设备密钥保护 |
US10069805B1 (en) * | 2016-09-14 | 2018-09-04 | Cipherloc Corporation | Polymorphic one time pad matrix |
-
2019
- 2019-06-29 CN CN201910584061.XA patent/CN110275845B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986663A (zh) * | 2010-11-29 | 2011-03-16 | 北京卓微天成科技咨询有限公司 | 一种基于otp的云存储数据存储方法、装置及系统 |
CN103383668A (zh) * | 2012-05-04 | 2013-11-06 | 三星电子株式会社 | 片上系统、操作片上系统的方法和包括片上系统的设备 |
CN107004083A (zh) * | 2014-12-12 | 2017-08-01 | 耐瑞唯信有限公司 | 设备密钥保护 |
US10069805B1 (en) * | 2016-09-14 | 2018-09-04 | Cipherloc Corporation | Polymorphic one time pad matrix |
CN106875974A (zh) * | 2017-03-16 | 2017-06-20 | 成都信息工程大学 | 一种otp存储装置以及访问otp存储器的方法 |
CN106952665A (zh) * | 2017-03-16 | 2017-07-14 | 成都信息工程大学 | 一种访问otp存储器的电路 |
Non-Patent Citations (1)
Title |
---|
张剑: ""OTP存储器应用开发技术研究"", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111736911A (zh) * | 2020-08-05 | 2020-10-02 | 北京智芯微电子科技有限公司 | 嵌入式芯片的验证方法及引导加载方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110275845B (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6820177B2 (en) | Protected configuration space in a protected environment | |
EP0851358A2 (en) | Processing system security | |
US7788506B2 (en) | Method and device for protecting a memory against attacks by error injection | |
US7277972B2 (en) | Data processing system with peripheral access protection and method therefor | |
CN106875974B (zh) | 一种otp存储装置以及访问otp存储器的方法 | |
CN102184365B (zh) | 基于SoC芯片外部数据安全存储系统及存取控制方法 | |
US10565130B2 (en) | Technologies for a memory encryption engine for multiple processor usages | |
JP2007066309A (ja) | 工業用制御装置を冗長制御装置と同期化するための方法および装置 | |
WO2004095212A2 (en) | Memory management in a data processing system | |
CN105528308A (zh) | 掉电处理方法、装置及电子设备 | |
CN105701410A (zh) | 一种获得源代码中信息的方法、装置及系统 | |
CN109977702A (zh) | 一种基于ds2432芯片的fpga设备加密认证系统和方法 | |
CN109992532A (zh) | 存储空间的访问权限管理方法及存储权限管理单元 | |
EP2620875B1 (en) | Address translation inspection device, central processing device, and address translation inspection method | |
CN110275845A (zh) | 存储器控制方法、装置及电子设备 | |
US8621643B2 (en) | Semiconductor device | |
CN202102449U (zh) | 基于SoC芯片外部程序安全访问架构 | |
CN202102448U (zh) | 基于SoC芯片外部数据安全存储架构 | |
CN106952665B (zh) | 一种访问otp存储器的电路 | |
CN105117370B (zh) | 一种多协议密码算法处理器及片上系统 | |
TW201727496A (zh) | 記憶體位址變換管理 | |
CN108874579B (zh) | 用于监管和初始化端口的方法 | |
CN106909341A (zh) | 基于寄存器的功能模块的使能方法、装置及移动终端 | |
JP2001527669A (ja) | 集積回路および該集積回路のテスト方法 | |
CN108154039A (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 |