提高带有片外存储器的电子产品数据安全存储的方法

文档序号:6463202阅读:202来源:国知局
专利名称:提高带有片外存储器的电子产品数据安全存储的方法
技术领域
本发明涉及电子产品安全领域,特别涉及一种提高带有片外存储器的电子产 品数据安全存储的方法。
背景技术
随着电子产品的应用领域越来越广泛,人们对电子产品存储信息的需求也越 来越多,为适应这一需求,目前越来越多的电子产品都采用在主控芯片外扩一片 外存储器的方式来实现。所谓固件程序(Firmware)就是写入EPROM或EEPROM中的程序,与普 通软件不同,它是固化在集成电路内部的程序代码,负责控制和协调集成电路的 功能,担任着一个系统最基础、最底层工作的软件, 一般电子产品生产商或开发 商都会自己开发电子产品的固件程序。但是,在带片外存储器的电子产品的生产过程中由于一般都是批量生产,这 样每次烧写到电子产品的主控芯片中的固件程序都是一致的,因此,使得电子产 品中主控芯片对其外扩的片外存储器的存储规则、加密规则等也都存在一致性, 如果其中的一个或几个电子产品被破解或被解剖后,其他同类别的电子产品的使 用也将变得不再安全;另外,由于电子产品中的片外存储器很容易被克隆或直接 用到其他电子产品中,所以这种片外存储器的存储规则、加密规则等存在的一致 性会大大降低电子产品数据的安全性。发明内容为了解决上述电子产品由于其内与主控芯片连接的片外存储器的存储规则 及加密规则等的一致性,导致的电子产品数据安全性低的问题,本发明提出一种 提高电子产品数据安全存储的方法,通过利用在嵌入固件程序中的全排列随机数 表,使每个产品中存储区域的存储规则及加密规则等发生变化,从而提升电子产 品的安全性能。一种提高带有片外存储器的电子产品数据安全存储的方法,其特征是所述方法包括下列步骤…在电子产品的主控芯片中烧写嵌入全排列随机数表的固件程序;--依据嵌入在所述主控芯片内的固件程序中的全排列随机数表对所述片外 存储器进行乱序读/写操作和/或密文读/写操作。所述对片外存储器乱序读/写操作方法的具体步骤为将主控芯片对片外存储器进行读/写操作的原地址的部分或全部数值作为索 引值,在固件程序中嵌入的全排列随机数表中找到该索引值对应的内容值,将所 述内容值替代所述原地址中作为索引部分数值后的地址数据作为新的读出/写入 地址,或将所述内容值作为新的读出/写入地址,对所述片外存储器进行读/写操 作。所述对片外存储器进行乱序读/写操作方法的具体步骤为将主控芯片对片外存储器进行读/写操作的原地址的部分或全部数值利用预 先设定算法计算得到索引值,在固件程序嵌入的全排列随机数表中找到该索引值 对应的内容值,将所述内容值替代所述原地址中作为索引部分数值后的地址数据 作为新的读出/写入地址,或将所述内容值作为新的读出/写入地址,对所述片外 存储器进行读/写操作。所述对片外存储器进行密文写操作的方法具体步骤为将主控芯片对片外存储器进行写操作的地址的部分或全部作为索引值,在固 件程序嵌入的全排列随机数表中找到该索引值对应的内容值,利用所述内容值对 要写入的数据做加密运算,将加密结果写入所述地址。所述对片外存储器进行密文读操作的方法具体步骤为将主控芯片对片外i储器进行读操作的地址的部分或全部作为索引值,在固 件程序嵌入的全排列随机数表中找到该索引值对应的内容值,利用所述内容值对 片外存储器所述地址中的数据做解密运算,将解密结果读出。所述对片外存储器进行密文写操作的方法具体步骤为将主控芯片对片外存储器进行写操作的地址的部分或全部利用预先设定算 法计算得到索引值,在固件程序嵌入的全排列随机数表中找到该索引值对应的内 容值,利用所述内容值对要写入的数据做加密运算,将加密结果写入所述地址。所述对片外存储器进行密文读操作的方法具体为将主控芯片对片外存储器进行读操作的地址的部分或全部利用预先设定算 法计算得到索引值,在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值,利用所述内容值对片外存储器所述地址中的数据做解密运算,将解密结果 读出。有益效果本发明提供的一种提高带有片外存储器的电子产品数据安全存储的方法,由于每个电子产品的固件程序中嵌入的全排列随机数表都是不同的,所 以通过利用嵌入在固件程序中的全排列随机数表,使每个产品中片外存储器的存 储规则或加密规则互不相同,使得即使破解其中的一个或几个电子产品,并不能 对其他电子产品的使用产生影响,另外,也可以有效防止片外存储器被克隆或直 接与其他的主控芯片连接,用于其他的产品中,从而提升电子产品的安全性能; 另一方面,由于本发明提供的方法是通过对嵌入在固件程序中的全排列随机数表 进行查表进而实现安全读写的,查表的效率相对其他的利用算法等而言,效率很 高,故本发明读写的速度很快。


图l是本发明的硬件结构框图; 图1-1是本发明实施例1提供的一种乱序写操作的方法流程图; 图1-2是本发明实施例1提供的一个乱序写操作示例的示意图; 图1-3是本发明实施例1提供的一种乱序读操作的方法流程图; 图1-4是本发明实施例1提供的一个乱序读操作示例的示意图; 图2-1是本发明实施例2提供的一种乱序写操作的方法流程图; 图2-2是本发明实施例2提供的一个乱序写操作示例的示意图; 图2-3是本发明实施例2提供的一个乱序读操作的方法流程图; 图2-4是本发明实施例2提供的一个乱序读操作示例的示意图;图3-1是本发明实施例3提供的一个密文写操作的方法流程图;图3-2是本发明实施例3提供的一个密文读操作的方法流程图;图4-1是本发明实施例4提供的一个密文写操作的方法流程图; 图4-2是本发明实施例4提供的一个密文读操作的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实 施方式作进一步地详细描述。包括主控芯片和外扩片外存储器的电子产品,在生产时,即向电子产品中的 主控芯片烧写固件程序时,将全排列随机数表嵌入到固件程序中烧写到主控芯片 中,由于每个全排列随机数表是不同的,所以导致每个电子产品的主控芯片中烧 写的固件程序存在不一致性,主控芯片利用嵌入在固件程序中的全排列随机数表 对其外扩的片外存储器进行读/写操作时,使得每个电子产品中片外存储器的存 储规则或加密规则等都具有了不一致性,从而提高了电子产品的安全性,避免了施例1:参见图1-1,本发明实施例提供了一种提高带有片外存储器的电子产品数据 安全存储的方法,其中电子产品包括主控芯片和片外存储器,上述方法包括如下 步骤在主控芯片中烧写嵌入全排列随机数表的固件程序;优选的,可以采用一种能够自动产生全排列随机数表,并能向被烧写程序中 自动嵌入上述全排列随机数表的智能编程器来实现在主控芯片中烧写嵌入全排 列随机数表的固件程序。其中智能编程器包括编程接口和程序存储模块,另外还包括设置模块,用于设置表生成模块生成的全排列随机数表的表首地址和表长 度,上述表首地址指向全排列随机数表向主控芯片中烧写的表首位置;优选的,设置模块具体可以为存储模块,用于存储表首地址和表长度,作为 表生成模块生成的全排列随机数表的表首地址和表长度,其中表首地址指向所述 全排列随机数表向主控芯片中烧写的表首位置。优选的,设置模块具体还可以为获取模块,用于根据预先定义的特征值,查 找并获取表首地址和表长度,作为表生成模块生成的全排列随机数表的表首地址 和表长度,其中表首地址指向所述全排列随机数表向主控芯片中烧写的表首位 置。在实际应用中,设置模块设置的表首地址和表长度可以为一对或多对,分别 与一个或多个主控芯片类型相对应。表生成模块,用于生成设置模块中设置的表长度的全排列随机数表;表生成模块可以由全排列随机数生成芯片或振荡电路实现,还可以由内置伪全排列随机数生成算法的微控制芯片实现,表生成模块还可以与编程模块集成在一颗控制芯 片中实现。其中伪全排列随机数生成算法可以是生产商或开发商自设置开发的伪全排列随机数生成算法,也可以利用现有的一些伪全排列随机数生成算法。所谓 全排列随机数表,通俗的说就是该随机数表中的随机数都是不重复的,是一种全 排列的状态,以便进一步提高安全性。编程模块,用于通过编程接口将表生成模块生成的全排列随机数表及程序存 储模块中存储的被烧写程序以嵌套的方式烧写到主控芯片中,其中写入主控芯片 中的全排列随机数表的表首位置为设置模块中设置的表首地址。编程模块优选的 可以由一颗控制芯片实现。优选的,智能编程器还包括为编程器提供电源管理的电源回路。优选的,智能编程器还包括用于指示当前编程器及其电源工作状态的状态指 示模块,等。主控芯片依据嵌入在固件程序中的全排列随机数表对与其连接的片外存储 器进行乱序写操作的步骤包括步骤Sh将主控芯片对片外存储器进行写操作的原地址的部分或全部作为 索引值;步骤S2:在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值;步骤S3:将该内容值替代原地址中作为索引的部分作为新的写入地址,或 将该内容值作为新的写入地址,对该片外存储器进行写操作。参见图1-2,给出利用嵌入在固件程序中的全排列随机数表对片外存储器进 行乱序写操作的一个示例,主控芯片要对片外存储器的Addressl地址进行写操 作,要写入的内容为A,地址Addressl共16位,由前4位L、中间8位M和后 4位N组成,取地址Addressl的中间8位M作为索引值,在固件程序中嵌入的 全排列随机数表Table中找到该索引值M对应的内容值K,将该内容值K替代 Addressl的中间8位,前4位L和后4位N不变,作为新的地址Address2,将 主控芯片要写入片外存储器中的内容A写入片外存储器地址Address2中。还可以将主控芯片Addressl的全部16位内容全部作为索引值,在固件程序 中嵌入的全排列随机数表Table中找到该索引值对应的内容值K,将内容值K作 为新的地址Address2,将主控芯片要写入片外存储器中的内容A写入片外存储 器地址Address2中。参见图1-3,本发明实施例提供的主控芯片依据嵌入在固件程序中的全排列 随机数表对与其连接的片外存储器进行乱序读操作的步骤包括步骤Dl:将主控芯片对片外存储器进行读操作的原地址的部分或全部作为 索引值;步骤D2:在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值; 步骤D3:将该内容值替代原地址中作为索引的部分作为新的读取地址,或 将该内容值作为新的读取地址,对该片外存储器进行读操作。参见图1-4,给出利用嵌入在固件程序中的全排列随机数表对与其连接的片 外存储器进行乱序读操作的一个示例,主控芯片要对片外存储器的Addressl地 址进行读操作,地址Addressl共16位,由前4位L、中间8位M和后4位N 组成,取地址Addressl的中间8位M作为索引值,在固件程序中嵌入的全排列 随机数表Table中找到该索引值M对应的内容值K,将该内容值K替代Addressl 的中间8位,前4位L和后4位N不变,作为新的地址Address2,主控芯片从新的地址Address2中读出内容到主控芯片中即可。还可以将主控芯片Addressl的全部16位内容全部作为索引值,在固件程序 中嵌入的全排列随机数表Table中找到该索弓I值对应的内容值K,将内容值K作 为新的地址Address2,主控芯片从新的地址Address2中读出内容到主控芯片中 即可。所谓全排列随机数表,通俗的说就是该随机数表中的随机数都是不重复的, 是一种全排列的状态。由此可见,由于在生产电子产品即向电子产品中的主控芯片内烧写固件程序 的时候,嵌入在每个电子产品中的全排列随机数表是不固定的,是随机生成的, 所以当电子产品中的主控芯片向与其相连的片外存储器进行写操作时,即使是批 量生产的电子产品,写入到片外存储器中的地址也是不一致的,即利用嵌入在固 件程序中的全排列随机数表实现了对片外存储器的乱序存储,改变了其存储规则 的一致性,这样,即使是破解了同一批次的其中一个或几个产品,其他的产品的 安全性也是很高的,即大大提高了电子产品存储的安全能力。实施例2:参见图2-1,本发明实施例提供了一种提高带有片外存储器的电子产品数据 安全存储的方法,其中电子产品包括主控芯片和片外存储器,上述方法包括如下 步骤在主控芯片中烧写嵌入全排列随机数表的固件程序;优选的,可以采用一种能够自动产生全排列随机数表,并能向被烧写程序中 自动嵌入上述全排列随机数表的智能编程器来实现在主控芯片中烧写嵌入全排 列随机数表的固件程序。其中智能编程器包括编程接口和程序存储模块,另外还包括设置模块,用于设置表生成模块生成的全排列随机数表的表首地址和表长度,上述表首地址指向全排列随机数表向主控芯片中烧写的表首位置;优选的,设置模块具体可以为存储模块,用于存储表首地址和表长度,作为表生成模块生成的全排列随机数表的表首地址和表长度,其中表首地址指向所述全排列随机数表向主控芯片中烧写的表首位置。优选的,设置模块具体还可以为获取模块,用于根据预先定义的特征值,査找并获取表首地址和表长度,作为表生成模块生成的全排列随机数表的表首地址和表长度,其中表首地址指向所述全排列随机数表向主控芯片中烧写的表首位置。在实际应用中,设置模块设置的表首地址和表长度可以为一对或多对,分别与一个或多个主控芯片类型相对应。表生成模块,用于生成设置模块中设置的表长度的全排列随机数表;表生成 模块可以由全排列随机数生成芯片或振荡电路实现,还可以由内置伪全排列随机 数生成算法的微控制芯片实现,表生成模块还可以与编程模块集成在一颗控制芯 片中实现。其中伪全排列随机数生成算法可以是生产商或开发商自设置开发的伪 全排列随机数生成算法,也可以利用现有的一些伪全排列随机数生成算法。所谓 全排列随机数表,通俗的说就是该随机数表中的随机数都是不重复的,是一种全 排列的状态,以便进一步提高安全性。编程模块,用于通过编程接口将表生成模块生成的全排列随机数表及程序存 储模块中存储的被烧写程序以嵌套的方式烧写到主控芯片中,其中写入主控芯片 中的全排列随机数表的表首位置为设置模块中设置的表首地址。编程模块优选的 可以由一颗控制芯片实现。优选的,智能编程器还包括为编程器提供电源管理的电源回路。优选的,智能编程器还包括用于指示当前编程器及其电源工作状态的状态指 示模块,等。主控芯片依据嵌入在固件程序中的全排列随机数表对与其连接的片外存储 器进行乱序写操作的步骤包括步骤Ql:将主控芯片对片外存储器进行写操作的原地址的部分或全部利用 预先设定算法计算得到索引值;步骤Q2:在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值;步骤Q3:将该内容值替代原地址中作为索引的部分作为新的写入地址,或 将该内容值作为新的写入地址,对该片外存储器进行写操作。参见图2-2,给出利用嵌入在固件程序中的全排列随机数表对片外存储器进 行乱序写操作的一个示例,主控芯片要对片外存储器的Addressl地址进行写操 作,要写入的内容为A,地址Addressl共16位,由前4位L、中间8位M和后 4位N组成,取地址Addressl的中间8位M利用预先设定算法计算得到索引值 i,这里的算法可根据需要自行设计,比如加、减、乘、除、与、或、非、位置 替换等等均可,在固件程序中嵌入的全排列随机数表Table中找到该索引值i对 应的内容值K,将该内容值K替代Addressl的中间8位,前4位L和后4位N 不变,作为新的地址Address2,将主控芯片要写入片外存储器中的内容A写入 片外存储器地址Address2中。还可以将主控芯片Addressl的全部16位内容全部利用预先设定算法计算得 到索引值i,在固件程序中嵌入的全排列随机数表Table中找到该索引值i对应的内容值K,将内容值K作为新的地址Address2,将主控芯片要写入片外存储器 中的内容A写入片外存储器地址Address2中。参见图2-3,本发明实施例提供的主控芯片依据嵌入在固件程序中的全排列 随机数表对与其连接的片外存储器进行乱序读操作的步骤包括步骤Kl:将主控芯片对片外存储器进行读操作的原地址的部分或全部利用 预先设定算法计算得到索引值;步骤K2:在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值;步骤K3:将该内容值替代原地址中作为索引的部分作为新的读取地址,或 将该内容值作为新的读取地址,对该片外存储器进行读操作。参见图2-4,给出利用嵌入在固件程序中的全排列随机数表对与其连接的片 外存储器进行乱序读操作的一个示例,主控芯片要对片外存储器的Addressl地 址进行读操作,地址Addressl共16位,由前4位L、中间8位M和后4位N 组成,取地址Addressl的中间8位M利用预先设定算法计算得到索引值i,这 里的算法可根据需要自行设计,比如加、减、乘、除、与、或、非、位置替换等 等均可,在固件程序中嵌入的全排列随机数表Table中找到该索引值i对应的内 容值K,将该内容值K作为新的地址Address2的中间8位,前4位L和后4位 N不变,主控芯片从新的地址Address2中读出内容到主控芯片中即可。还可以将主控芯片Addressl的全部16位内容全部利用预先设定算法计算得 到索引值i,在固件程序中嵌入的全排列随机数表Table中找到该索引值i对应的 内容值K,将内容值K作为新的地址Address2,主控芯片从新的地址Address2 中读出内容到主控芯片中即可。由此可见,由于在生产电子产品即向电子产品中的主控芯片内烧写固件程序 的时候,嵌入在每个电子产品中的全排列随机数表是不固定的,是随机生成的, 所以当电子产品中的主控芯片向与其相连的片外存储器进行写操作时,即使是批 量生产的电子产品,写入到片外存储器中的地址也是不一致的,即利用嵌入在固 件程序中的全排列随机数表实现了对片外存储器的乱序存储,改变了其存储规则 的一致性,同理,当电子产品中的主控芯片向与其相连的片外存储器进行读操作 时也是一样,所以,即使是破解了同一批次的其中一个或几个产品,其他的产品 的安全性也是很高的,即大大提高了电子产品存储的安全能力。实施例3:参见图3-1,本发明实施例提供了一种提高带有片外存储器的电子产品数据 安全存储的方法,其中电子产品包括主控芯片和片外存储器,上述方法包括如下 步骤在主控芯片中烧写嵌入全排列随机数表的固件程序;优选的,可以采用一种能够自动产生全排列随机数表,并能向被烧写程序中 自动嵌入上述全排列随机数表的智能编程器来实现在主控芯片中烧写嵌入全排 列随机数表的固件程序。其中智能编程器包括编程接口和程序存储模块,另外还包括-设置模块,用于设置表生成模块生成的全排列随机数表的表首地址和表长 度,上述表首地址指向全排列随机数表向主控芯片中烧写的表首位置;优选的,设置模块具体可以为存储模块,用于存储表首地址和表长度,作为 表生成模块生成的全排列随机数表的表首地址和表长度,其中表首地址指向所述 全排列随机数表向主控芯片中烧写的表首位置。优选的,设置模块具体还可以为获取模块,用于根据预先定义的特征值,查 找并获取表首地址和表长度,作为表生成模块生成的全排列随机数表的表首地址 和表长度,其中表首地址指向所述全排列随机数表向主控芯片中烧写的表首位 置。在实际应用中,设置模块设置的表首地址和表长度可以为一对或多对,分别 与一个或多个主控芯片类型相对应。表生成模块,用于生成设置模块中设置的表长度的全排列随机数表;表生成 模块可以由全排列随机数生成芯片或振荡电路实现,还可以由内置伪全排列随机 数生成算法的微控制芯片实现,表生成模块还可以与编程模块集成在一颗控制芯 片中实现。其中伪全排列随机数生成算法可以是生产商或开发商自设置开发的伪全排列随机数生成算法,也可以利用现有的一些伪全排列随机数生成算法。所谓全排列随机数表,通俗的说就是该随机数表中的随机数都是不重复的,是一种全排列的状态,以便进一步提高安全性。编程模块,用于通过编程接口将表生成模块生成的全排列随机数表及程序存储模块中存储的被烧写程序以嵌套的方式烧写到主控芯片中,其中写入主控芯片中的全排列随机数表的表首位置为设置模块中设置的表首地址。编程模块优选的可以由一颗控制芯片实现。优选的,智能编程器还包括为编程器提供电源管理的电源回路。 优选的,智能编程器还包括用于指示当前编程器及其电源工作状态的状态指示模块,等。主控芯片依据嵌入在固件程序中的全排列随机数表对与其连接的片外存储 器进行密文写操作的步骤包括步骤Al:将主控芯片对片外存储器进行写操作的地址的部分或全部作为索引值;步骤A2:在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值; 步骤A3:利用该内容值对要写入的数据做加密运算; 步骤A4:将加密结果写入上述地址。为了更清楚的说明,下面给出一个利用嵌入在固件程序中的全排列随机数表对片外存储器进行密文写操作的示例,主控芯片要对片外存储器的Addressl地 址进行写操作,要写入的内容为A,地址Addressl共16位,由前4位L、中间 8位M和后4位N组成,取地址Addressl的中间8位M作为索引值,在固件程 序中嵌入的全排列随机数表Table中找到该索引值对应的内容值K,利用该内容 值K对要写入的内容A做加密运算,得到加密结果A',加密运算比如可以是A '=A ' K等,将加密结果A'写入地址Addressl中。还可以是将地址Addressl 的全部作为索引值。参见图3-2,本发明实施例提供的主控芯片依据嵌入在固件程序中的全排列 随机数表对与其连接的片外存储器进行密文读操作的步骤包括步骤Bl:将主控芯片对片外存储器进行读操作的地址的部分或全部作为索 引值;步骤B2:在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值; 步骤B3:利用该内容值对上述地址中的数据做解密运算; 步骤B4:将解密结果读出到主控芯片中。为了更清楚的说明,下面给出一个利用嵌入在固件程序中的全排列随机数表 对片外存储器进行密文读操作的示例,主控芯片要对片外存储器的Addressl地 址进行写操作,该地址Addressl内存储的内容为A',地址Addressl共16位, 由前4位L、中间8位M和后4位N组成,取地址Addressl的中间8位M作 为索引值,在固件程序中嵌入的全排列随机数表Table中找到该索引值对应的内 容值K,利用该内容值K对地址Addressl内存储的内容为A'做解密运算,得 到解密结果A,将解密结果A读出到主控芯片中,解密算法比如可以是A' = A~ K等。还可以是将地址Addressl的全部作为索引值。本实施例中的加密算法和解密算法包括可逆算法,包括DES、 3DES、 RC2、 RC4等均可。由此可见,由于在生产电子产品即向电子产品中的主控芯片内烧写固件程序 的时候,嵌入在每个电子产品中的全排列随机数表是不固定的,是随机生成的, 所以当电子产品中的主控芯片向与其相连的片外存储器进行写操作时,即使是批 量生产的电子产品,写入到片外存储器中的内容也是不一致的,即利用嵌入在固件程序中的全排列随机数表实现了对片外存储器的密文存储,改变了其存储及加 密规则的一致性,同理,当电子产品中的主控芯片向与其相连的片外存储器进行 读操作时也是一样,所以,即使是破解了同一批次的其中一个或几个产品,其他 的产品的安全性也是很高的,即大大提高了电子产品存储的安全能力。 实施例4:参见图4-1,本发明实施例提供了一种提高带有片外存储器的电子产品数据 安全存储的方法,其中电子产品包括主控芯片和片外存储器,上述方法包括如下 步骤在主控芯片中烧写嵌入全排列随机数表的固件程序;优选的,可以采用一种能够自动产生全排列随机数表,并能向被烧写程序中 自动嵌入上述全排列随机数表的智能编程器来实现在主控芯片中烧写嵌入全排 列随机数表的固件程序。其中智能编程器包括编程接口和程序存储模块,另外还包括设置模块,用于设置表生成模块生成的全排列随机数表的表首地址和表长 度,上述表首地址指向全排列随机数表向主控芯片中烧写的表首位置;优选的,设置模块具体可以为存储模块,用于存储表首地址和表长度,作为 表生成模块生成的全排列随机数表的表首地址和表长度,其中表首地址指向所述 全排列随机数表向主控芯片中烧写的表首位置。优选的,设置模块具体还可以为获取模块,用于根据预先定义的特征值,査 找并获取表首地址和表长度,作为表生成模块生成的全排列随机数表的表首地址 和表长度,其中表首地址指向所述全排列随机数表向主控芯片中烧写的表首位 置。在实际应用中,设置模块设置的表首地址和表长度可以为一对或多对,分别 与一个或多个主控芯片类型相对应。表生成模块,用于生成设置模块中设置的表长度的全排列随机数表;表生成 模块可以由全排列随机数生成芯片或振荡电路实现,还可以由内置伪全排列随机 数生成算法的微控制芯片实现,表生成模块还可以与编程模块集成在一颗控制芯 片中实现。其中伪全排列随机数生成算法可以是生产商或开发商自设置开发的伪 全排列随机数生成算法,也可以利用现有的一些伪全排列随机数生成算法。所谓 全排列随机数表,通俗的说就是该随机数表中的随机数都是不重复的,是一种全 排列的状态,以便进一步提高安全性。编程模块,用于通过编程接口将表生成模块生成的全排列随机数表及程序存 储模块中存储的被烧写程序以嵌套的方式烧写到主控芯片中,其中写入主控芯片中的全排列随机数表的表首位置为设置模块中设置的表首地址。编程模块优选的可以由一颗控制芯片实现。优选的,智能编程器还包括为编程器提供电源管理的电源回路。 优选的,智能编程器还包括用于指示当前编程器及其电源工作状态的状态指示模块,等。主控芯片依据嵌入在固件程序中的全排列随机数表对与其连接的片外存储 器进行密文写操作的步骤包括步骤Fl:将主控芯片对片外存储器进行写操作的地址的部分或全部利用预 先设定算法计算得到索引值;步骤F2:在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值;步骤F3:利用该内容值对要写入的数据做加密运算;步骤F4:将加密结果写入上述地址。为了更清楚的说明,下面给出一个利用嵌入在固件程序中的全排列随机数表对片外存储器进行密文写操作的示例,主控芯片要对片外存储器的Addressl地 址进行写操作,要写入的内容为A,地址Addressl共16位,由前4位L、中间 8位M和后4位N组成,取地址Addressl的中间8位M利用预先设定算法计算 得到索引值i,这里的算法可根据需要自行设计,比如加、减、乘、除、与、或、 非、位置替换等等均可,在固件程序中嵌入的全排列随机数表Table中找到该索 引值i对应的内容值K,利用该内容值K对要写入的内容A做加密运算,得到 加密结果A',将加密结果A'写入地址Addressl中。还可以是将地址Addressl 的全部作为索引值。参见图4-2,本发明实施例提供的主控芯片依据嵌入在固件程序中的全排列 随机数表对与其连接的片外存储器进行密文读操作的步骤包括步骤HI:将主控芯片对片外存储器进行读操作的地址的部分或全部利用预 先设定算法计算得到索引值;步骤H2:在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值;步骤H3:利用该内容值对上述地址中的数据做解密运算;步骤H4:将解密结果读出到主控芯片中。为了更清楚的说明,下面给出一个利用嵌入在固件程序中的全排列随机数表对片外存储器进行密文读操作的示例,主控芯片要对片外存储器的Addressl地 址进行写操作,该地址Addressl内存储的内容为A',地址Addressl共16位, 由前4位L、中间8位M和后4位N组成,取地址Addressl的中间8位M利 用预先设定算法计算得到索引值i,这里的算法可根据需要自行设计,比如加、减、乘、除、与、或、非、位置替换等等均可,在固件程序中嵌入的全排列随机 数表Table中找到该索引值i对应的内容值K,利用该内容值K对地址Addressl 内存储的内容为A'做解密运算,得到解密结果A,将解密结果A读出到主控芯 片中。还可以是将地址Addressl的全部作为索引值。本实施例中的加密算法和解密算法包括可逆算法,包括DES、 3DES、 RC2、 RC4等均可。由此可见,由于在生产电子产品即向电子产品中的主控芯片内烧写固件程序 的时候,嵌入在每个电子产品中的全排列随机数表是不固定的,是随机生成的, 所以当电子产品中的主控芯片向与其相连的片外存储器进行写操作时,即使是批 量生产的电子产品,写入到片外存储器中的内容也是不一致的,即利用嵌入在固 件程序中的全排列随机数表实现了对片外存储器的密文存储,改变了其加密规则 的一致性,同理,当电子产品中的主控芯片向与其相连的片外存储器进行读操作 时也是一样,所以,即使是破解了同一批次的其中一个或几个产品,其他的产品 的安全性也是很高的,即大大提高了电子产品存储的安全能力。下面是用于乱序存储地址变换的主控芯片汇编程序代码,以CY7C63813芯 片为例,指定要变换的地址RomAddressH及RomAddressL ,调用函数 ChangAddress就可以得到变换后的地址RomAddressH及RomAddressL,在函数 代码中,CHANGTABLE指向一个256字节的全排列随机数表的表首,查表用指 令indexCHANGTABLE,查表仅需13个时钟周期就可完成;完成乱序存储地址 变换仅需15行汇编代码,约100个时钟周期,相对利用其他算法实现而言效率 非常高,比如采用TEA算法实现的话, 一般需要几百行汇编代码,约上千个时 钟周期才能实现。ChangAddress:mov网,[RomAddressL];[R0]=[RomAddressL]and[RomAddressL],Oxlf;[RomAddressL]=[RomAddressL] & Ox Ifand[RO],OxeOmova, [RomAddressH]anda,Olfhora,网 ;a ={[RomAddressH] & Ox If} | {[R0] & OxeO}indexCHANGTABLE;a = [CHANGTABLE+a]mov网,a;[R0]=aanda,OxeOor [RomAddressL],a; [RomAddressL] = [R0] & 0xe0 | [RomAddressL] and [R0],0xlf and [RomAddressH],0xe0 mov a,[R0]or [RomAddressH],a ;[RomAddressH] = {[RomAddressH] & OxeO }|{[R0] & Oxlf} ret下面是用于数据加/解密的主控芯片汇编程序代码,以CY7C63813芯片为 例,指定要加/解密的数据(存放在a中)及其存储地址RomAddressH及 RomAddressL,调用函数ChangData就可以得到解/加密的数据(存放在a中),在 函数代码中,CHANGTABLE指向一个256字节的全排列随机数表的表首,查表 用指令index CHANGTABLE,査表仅需13个时钟周期就可完成;完成数据 加/解密仅需12行汇编代码,约80个时钟周期,相对利用其他算法实现而言效 率非常高,比如采用TEA算法实现的话, 一般需要几百行汇编代码,约上千个 时钟周期才能实现。ChangData:mov[Rl],a;[Rl]=amova, [RomAddressL]anda,OlfhindexCHANGTABLE;a=[CHANGTABLE + [RomAddressL]&0x If]mov网,a;网=amova, [RomAddressL]anda,OeOhora, [RomAddressH]xora,网 ;a==[RomAddressL]&0xe0 | [RomAddressH] A网indexCHANGTABLE;a=[CHANGTABLE+a]xora,[Rl];a=[Rl]Aaret由此可见,利用嵌入在固件程序中的全排列随机数表进行乱序读写操作及密 文读写操作时,其中对全排列随机数表的操作都是由査表的方法来实现的,查表 的效率相对其他的算法等而言,本发明读写的速度很快,故效率很高。综上所述,本发明实施例提供的一种提高带有片外存储器的电子产品数据安 全存储的方法,由于每个电子产品的固件程序中嵌入的全排列随机数表都是不同17的,所以通过利用嵌入在固件程序中的全排列随机数表,使每个产品中片外存储 器的存储规则或加密规则等互不相同,使得即使破解其中的一个或几个电子产 品,并不能对其他电子产品的使用产生影响,另外,也可以有效防止片外存储器 被克隆或直接与其他的主控芯片连接,用于其他的产品中,从而提升电子产品的 安全性能;另一方面,由于本发明实施例提供的方法是通过对嵌入在固件程序中 的全排列随机数表进行査表进而实现安全读写的,査表的效率相对其他的利用算 法等而言,效率很高,故本发明读写的速度很快。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精 神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护 范围之内。
权利要求
1、一种提高带有片外存储器的电子产品数据安全存储的方法,其特征是所述方法包括下列步骤---在电子产品的主控芯片中烧写嵌入全排列随机数表的固件程序;---依据嵌入在所述主控芯片内的固件程序中的全排列随机数表对所述片外存储器进行乱序读/写操作和/或密文读/写操作。
2、 根据权利要求1所述的提高带有片外存储器的电子产品数据安全存储的 方法,其特征是所述对片外存储器乱序读/写操作方法的具体步骤为将主控芯片对片外存储器进行读/写操作的原地址的部分或全部数值作为索 引值,在固件程序中嵌入的全排列随机数表中找到该索引值对应的内容值,将所 述内容值替代所述原地址中作为索引部分数值后的地址数据作为新的读出/写入 地址,或将所述内容值作为新的读出/写入地址,对所述片外存储器进行读/写操 作。
3、 根据权利要求1所述的提高带有片外存储器的电子产品数据安全存储的 方法,其特征是所述对片外存储器进行乱序读/写操作方法的具体步骤为将主控芯片对片外存储器进行读/写操作的原地址的部分或全部数值利用预 先设定算法技算得到索引值,在固件程序中嵌入的全排列随机数表中找到该索引 值对应的内容值,将所述内容值替代所述原地址中作为索引部分数值后的地址数 据作为新的读出/写入地址,或将所述内容值作为新的读出/写入地址,对所述片 外存储器进行读/写操作。
4、 根据权利要求1所述的提高带有片外存储器的电子产品数据安全存储的 方法,其特征是所述对片外存储器进行密文写操作的方法具体步骤为将主控芯片对片外存储器进行写操作的地址的部分或全部作为索引值,在固 件程序嵌入的全排列随机数表中找到该索引值对应的内容值,利用所述内容值对 要写入的数据做加密运算,将加密结果写入所述地址。
5、 根据权利要求1所述的提高带有片外存储器的电子产品数据安全存储的 方法,其特征是所述对片外存储器进行密文读操作的方法具体步骤为将主控芯片对片外存储器进行读操作的地址的部分或全部作为索引值,在固 件程序嵌入的全排列随机数表中找到该索引值对应的内容值,利用所述内容值对 片外存储器所述地址中的数据做解密运算,将解密结果读出。
6、 根据权利要求1所述的提高带有片外存储器的电子产品数据安全存储的方法,其特征是所述对片外存储器进行密文写操作的方法具体步骤为将主控芯片对片外存储器进行写操作的地址的部分或全部利用预先设定算法计算得到索引值,在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值,利用所述内容值对要写入的数据做加密运算,将加密结果写入所述地址。 7、根据权利要求1所述的提高带有片外存储器的电子产品数据安全存储的方法,其特征是所述对片外存储器进行密文读操作的方法具体为将主控芯片对片外存储器进行读操作的地址的部分或全部利用预先设定算法计算得到索引值,在固件程序嵌入的全排列随机数表中找到该索引值对应的内容值,利用所述内容值对片外存储器所述地址中的数据做解密运算,将解密结果读出。
全文摘要
提升电子产品的安全性能、避免被破解的安全隐患且高效的一种提高带有片外存储器的电子产品数据安全存储的方法,其特征是所述方法包括下列步骤在电子产品的主控芯片中烧写嵌入全排列随机数表的固件程序;依据嵌入在所述主控芯片内的固件程序中的全排列随机数表对所述片外存储器进行乱序读/写操作和/或密文读/写操作。
文档编号G06F12/14GK101256538SQ20081010274
公开日2008年9月3日 申请日期2008年3月26日 优先权日2008年3月26日
发明者于华章, 舟 陆 申请人:北京飞天诚信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1