CN114491589A - 芯片加密方法和装置、芯片校验方法和装置 - Google Patents

芯片加密方法和装置、芯片校验方法和装置 Download PDF

Info

Publication number
CN114491589A
CN114491589A CN202210047941.5A CN202210047941A CN114491589A CN 114491589 A CN114491589 A CN 114491589A CN 202210047941 A CN202210047941 A CN 202210047941A CN 114491589 A CN114491589 A CN 114491589A
Authority
CN
China
Prior art keywords
chip
electronic signature
original
target
random key
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.)
Pending
Application number
CN202210047941.5A
Other languages
English (en)
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.)
Shenzhen Samkoon Technology Corp ltd
Original Assignee
Shenzhen Samkoon Technology Corp ltd
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 Shenzhen Samkoon Technology Corp ltd filed Critical Shenzhen Samkoon Technology Corp ltd
Priority to CN202210047941.5A priority Critical patent/CN114491589A/zh
Publication of CN114491589A publication Critical patent/CN114491589A/zh
Pending legal-status Critical Current

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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本公开实施例提供芯片加密方法和装置、芯片校验方法和装置,涉及数据安全技术领域。该芯片加密方法,包括:获取随机密钥;获取原始芯片的原始电子签名;根据随机密钥对原始电子签名进行第一加密处理,得到密文文件;将随机密钥、密文文件存储在原始芯片中,得到目标芯片,通过本公开实施例提供的技术方案可以减少芯片加工过程的额外成本支出、减少对外部硬件的依赖、提升芯片的通用性和可移植性,增加了芯片中用户程序被破解的难度,提高了芯片的安全性。

Description

芯片加密方法和装置、芯片校验方法和装置
技术领域
本发明涉及数据安全技术领域,尤其涉及一种芯片加密方法和装置、芯片校验方法和装置。
背景技术
在通用型MCU的产品的使用过程中,用户可以通过上载芯片中存储的软件程序文件的方式进行破解和盗用,导致芯片的安全性较低。
发明内容
本公开实施例的主要目的在于提出一种芯片加密方法和装置、芯片校验方法和装置,能够提高芯片的安全性。
为实现上述目的,本公开实施例的第一方面提出了一种芯片加密方法,包括:
获取随机密钥;
获取原始芯片的原始电子签名;
根据所述随机密钥对所述原始电子签名进行第一加密处理,得到密文文件;
将所述随机密钥、所述密文文件存储在原始芯片中,得到目标芯片。
在一些实施例,所述方法还包括:
获取所述原始电子签名的常量地址信息;
对所述常量地址信息进行变量转化处理,得到变量地址信息;
用所述变量地址信息更新所述常量地址信息。
在一些实施例,所述根据所述随机密钥对所述原始电子签名进行第一加密处理,得到密文文件,包括:
获取算法库;
获取算法随机数;
根据所述算法随机数在所述算法库中进行随机选择处理,得到目标算法;
根据所述目标算法对所述原始电子签名进行所述第一加密处理,得到所述密文文件。
在一些实施例,所述将所述随机密钥、所述密文文件存储在原始芯片中,得到目标芯片,包括:
获取固定密钥;
根据固定密钥对所述随机密钥、所述密文文件进行第二加密处理,得到随机子密钥、密文子文件;
将所述随机子密钥、所述密文子文件存储在所述原始芯片中,得到所述目标芯片。
为实现上述目的,本公开实施例的第二方面提出了一种芯片校验方法,包括:
获取根据如上述第一方面所述的方法得到的目标芯片中的随机密钥、密文文件;
获取所述目标芯片的原始电子签名;
根据所述随机密钥对所述密文文件进行解密处理,得到目标电子签名;
将所述原始电子签名与所述目标电子签名进行校验处理,得到校验结果。
在一些实施例,所述获取所述目标芯片的原始电子签名,包括:
获取变量地址信息;
对所述变量地址信息进行常量转化处理,得到常量地址信息;
根据所述常量地址信息得到所述目标芯片的所述原始电子签名。
为实现上述目的,本公开的第三方面提出了一种芯片加密装置,包括:
随机密钥获取模块,用于获取随机密钥;
原始芯片签名获取模块,用于获取原始芯片的原始电子签名;
第一加密处理模块,用于根据所述随机密钥对所述原始电子签名进行第一加密处理,得到密文文件;
目标芯片生成模块,用于将所述随机密钥、所述密文文件存储在原始芯片中,得到目标芯片。
为实现上述目的,本公开的第四方面提出了一种芯片校验装置,包括:
密文文件获取模块,用于获取根据如上述第一方面所述的方法得到的目标芯片中的随机密钥、密文文件;
原始电子签名获取模块,用于获取所述目标芯片的原始电子签名;
目标电子签名获取模块,用于根据所述随机密钥对所述密文文件进行解密处理,得到目标电子签名;
校验模块,用于将所述原始电子签名与所述目标电子签名进行校验处理,得到校验结果。
为实现上述目的,本公开的第五方面提出了一种电子设备,包括:
至少一个存储器;
至少一个处理器;
至少一个程序;
所述程序被存储在存储器中,处理器执行所述至少一个程序以实现本公开:
如上述第一方面所述的方法;
或者,
如上述第二方面所述的方法。
为实现上述目的,本公开的第六方面提出了一种存储介质,该存储介质是计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行:
如上述第一方面所述的方法
或者,
如上述第二方面所述的方法。
本公开实施例提出的芯片加密方法和装置、芯片校验方法和装置,通过获取随机密钥和原始芯片的原始电子签名,并根据随机密钥对原始电子签名进行第一加密处理,得到密文文件,然后将随机密钥、密文文件存储在原始芯片中,得到目标芯片,完成了对原始芯片的加密过程,通过本公开实施例提供的技术方案可以提高芯片的安全性。
附图说明
图1是本公开实施例提供的芯片加密方法的流程图。
图2是本公开另一实施例提供的芯片加密方法的部分流程图。
图3是图1中的步骤S130的流程图。
图4是图1中的步骤S140的流程图。
图5是本公开实施例提供的芯片校验方法的流程图。
图6是图5中的步骤S520的流程图。
图7是本公开实施例提供的芯片加密装置的模块框图。
图8是本公开实施例提供的芯片校验装置的模块框图。
图9是本公开实施例提供的电子设备的硬件结构示意图。
附图标记:随机密钥获取模块710、原始芯片签名获取模块720、第一加密处理模块730、目标芯片生成模块740、密文文件获取模块810、原始电子签名获取模块820、目标电子签名获取模块830、校验模块840、处理器901、存储器902、输入/输出接口903、通信接口904、总线905。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
首先,对本申请中涉及的若干名词进行解析:
PLC(Programmable Logic Controller,可编程逻辑控制器)为自动化产业中常用的控制系统核心设备。
MCU(Micro Controller Unit,微控制器/微控制单元)是可编程逻辑控制器的主控芯片。
电子签名是MCU出厂时由芯片生产厂商设定的、每个MCU独一无二的识别码,存储于无法被用户修改的FLASH区域内。
APP(Application,应用)是可编程逻辑控制器产品中包含用户设置、程序的应用层程序部分,程序中包含所有面向用户需求的功能。
IAP(In Application Programming,引导烧录程序)是可编程逻辑控制器产品中用于下载更新APP程序的引导烧录程序部分,程序中不包含任何面向用户需求的功能,仅用于更新APP程序及判断是否需要运行APP程序。
在通用型MCU的产品的使用过程中,软件程序加密尤为重要,通用型MCU的引脚、功能信息、用户程序的上下载工具均能在MCU生产厂家的官网上获得,有经验的硬件工程师可以通过产品的PCB板得知如何启用MCU的boot模式,上载其中的用户程序从而获取软件程序文件,然后将软件程序文件下载到另一台硬件方案完全相同的产品MCU内,达到复制盗用软件程序的目的,导致芯片的安全性较低。其中,用户程序指的是MCU芯片内储存于用户可读写的FLASH空间内的所有程序,以PLC为例,包括产品的底层软件、用户编写的上层执行逻辑等所有内容;而软件程序文件指的是将用户程序上载后形成的文件。因此,需要实现一种加密方案,令软件程序无法被直接复制,或者令软件程序即使被复制后也无法在其他产品上运行。
常见的实现方案包括:
(1)使用定制的特殊MCU的方案
定制的特殊MCU与通用型MCU不同,其信息无法从芯片生产厂家的官网获取。若将芯片的标识抹除,甚至无法轻易得知芯片的生产厂家信息。因无法获得上载用户软件程序文件(等同于用户程序)的途径,故可以从源头上防止MCU的软件程序被盗用。
使用定制的特殊MCU的方案存在的问题包括:定制成本高,用量规模小的公司无法获得芯片生产厂家的定制服务;通用性很低,有MCU品牌或型号更换需求时可移植性很差。
(2)与外部硬件元件协同完成加密流程的方案
使用无法上传其内容的加密芯片、EEPROM(Electrically ErasableProgrammable read only memory,带电可擦可编程只读存储器)等外部元件与MCU通讯,协同完成加密流程。加密流程中需要使用的一部分内容储存于此类外部元件中,即使MCU软件程序被上载复制,由于无法直接获取外部元件的程序,下载到另一台产品内的MCU程序也无法通过加密校验,从而达到被复制的软件程序无法使用的效果,有效防止盗用。
与外部硬件元件协同完成加密流程的方案存在的问题包括:依赖外部硬件元件,若因某些原因导致用于加密的硬件元件无法正常运作,即使MCU正常运行也无法使用此产品,增加了故障的可能性;需要额外的硬件及电路支持,增加了产品成本和芯片的引脚等硬件资源开销。
基于此,本公开实施例提供一种芯片加密方法和装置、芯片校验方法和装置,通过获取随机密钥和原始芯片的原始电子签名,并根据随机密钥对原始电子签名进行第一加密处理,得到密文文件,然后将随机密钥、密文文件存储在原始芯片中,得到目标芯片,完成了对原始芯片的加密过程;进而获取通过芯片加密方法得到的目标芯片中的随机密钥、密文文件,获取目标芯片的原始电子签名,再根据随机密钥对密文文件进行解密处理,得到目标电子签名,最后将原始电子签名与目标电子签名进行校验处理,得到校验结果,完成了对芯片的校验;通过本公开实施例提供的技术方案可以减少芯片加工过程的额外成本支出、减少对外部硬件的依赖、提升芯片的通用性和可移植性,增加了芯片中用户程序被破解的难度,提高了芯片的安全性。
本公开实施例提供芯片加密方法和装置、芯片校验方法和装置,具体通过如下实施例进行说明,首先描述本公开实施例中的芯片加密法。
本公开实施例提供的芯片加密方法,涉及数据安全技术领域。本公开实施例提供的芯片加密方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机或者智能手表等;服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现芯片加密方法、芯片校验方法的应用等,但并不局限于以上形式。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本公开实施例提出了一种芯片加密方法,包括:获取随机密钥;获取原始芯片的原始电子签名;根据随机密钥对原始电子签名进行第一加密处理,得到密文文件;将随机密钥、密文文件存储在原始芯片中,得到目标芯片。
图1是本公开实施例提供的芯片加密方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S110至步骤S140,具体包括:
S110,获取随机密钥;
S120,获取原始芯片的原始电子签名;
S130,根据随机密钥对原始电子签名进行第一加密处理,得到密文文件;
S140,将随机密钥、密文文件存储在原始芯片中,得到目标芯片。
在步骤S110中,随机密钥由上位机生成,其中,上位机用于跟PLC连接以完成对PLC上的原始芯片的加密过程。
在步骤S120中,原始芯片即为PLC上安装的待进行加密的芯片,原始电子签名为在原始芯片中进行读取得到该芯片出厂时对应的电子签名。需要说明的是,该电子签名储存于不可由用户修改的FLASH区域内。
在步骤S130中,随机密钥为key,原始电子签名为signature1,采用的第一加密处理的算法为F1,则加密过程为cipher=F1(signature1,key),其中,cipher即为得到的密文文件。在具体的实施例中,随机密钥、电子签名和密文文件的参数格式定义为int型,在32位MCU中一般占4个字节。
需要说明的是,加密算法和解密算法互为逆过程,使用含有两个输入的算法是为了以密钥的形式引入随机因素,增强了芯片加密方法的安全性。
在步骤S140中,随机密钥和密文文件存储的具体位置为原始芯片的FLASH中,目标芯片为经过加密处理的原始芯片。
在具体的实施例中,随机密钥和密文文件为整个加密流程中的关键信息,随机密钥和密文文件上位机中的软件生成,只要此加密软件不被泄漏,加密方法就无法被破解。
在具体的实施例中,破解者复制主控芯片FLASH区域内的所有数据,并将其下载到另一台硬件方案完全相同的产品中,也无法盗用经过本公开的实施例提供的芯片加密方法加密处理过的芯片的软件程序。
本公开实施例提供的芯片加密方法,通过获取随机密钥和原始芯片的原始电子签名,并根据随机密钥对原始电子签名进行第一加密处理,得到密文文件,然后将随机密钥、密文文件存储在原始芯片中,得到目标芯片,完成了对原始芯片的加密过程,通过本公开实施例提供的技术方案可以减少芯片加工过程的额外成本支出、减少对外部硬件的依赖、提升芯片的通用性和可移植性,增加了芯片中用户程序被破解的难度,提高了芯片的安全性。
在一些实施例,芯片加密方法还包括:获取原始电子签名的常量地址信息;对常量地址信息进行变量转化处理,得到变量地址信息;用变量地址信息更新常量地址信息。
如图2所示,图2是另一些实施例提供的芯片加密方法的流程图,芯片加密方法还包括:
S210,获取原始电子签名的常量地址信息;
S220,对常量地址信息进行变量转化处理,得到变量地址信息;
S230,用变量地址信息更新常量地址信息。
在步骤S210中,常量地址信息为原始芯片中原本存储的原始电子签名的存储地址,该存储地址以常量的形式在程序文件中存储。
在步骤S220中,变量转化处理为:使用不会被优化的变量组成目标常量的方法,实现将地址由常量信息转化为变量信息。为防止在FLASH数据中透露任何与加密相关的信息,所有固定内容都在代码层面转换为变量,并禁止编译器将其优化为定值。
具体地,若MCU中存储的原始电子签名的常量地址信息为:0x27835146,则其变量转化处理的C语言实现过程为:
volatile char temp[4];
temp[0]=0x27;
temp[1]=0x83;
temp[2]=0x51;
temp[3]=0x46;
其中,volatile是一个特征修饰符,作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值;char temp[4]为转换成变量用于存储的数组,其中,temp[0]、temp[1]、temp[2]、temp[3]分别为这个数组的四个元素,这相当于将该常量地址信息拆分为四个变量存储在数组中,实现了变量转化处理。
在步骤S230中,变量地址信息为将原始电子签名的存储地址进行变量转化后的地址,该地址以变量的形式在程序文件中存储。
在同一家芯片厂商的同一型号芯片中,FLASH内储存MCU电子签名的地址都是恒定的,只要查阅官方芯片用户手册即可得知,若在加密程序的代码中直接使用此地址,表示FLASH地址的32位数据就会原封不动地保存在软件程序文件内,下载到MCU的用户程序FLASH区域中;若破解者将MCU内的用户程序文件上载,根据MCU型号查阅官方用户手册、得知储存电子签名的FLASH地址信息,再在上载的文件内搜索此地址,则能够得知与加密相关的代码段位置,进而可能通过单独修改此地址值的方式,避开MCU电子签名的对比判断。
而本公开提供的芯片加密方法用变量转化的方式,避免了此类与加密流程相关的固定值以常量或能被编译器优化为常量的形式,直接出现在代码内,使得破解者有可乘之机,通过避免常量计算、避免编译器优化,将加密过程中使用到的常量转变为需要在程序运行时计算的变量,从而从FLASH数据中隐藏此常量,提高加密安全性的方式,从而提升了芯片的安全性。
在一些实施例,根据随机密钥对原始电子签名进行第一加密处理,得到密文文件,包括:获取算法库;获取算法随机数;根据算法随机数在算法库中进行随机选择处理,得到目标算法;根据目标算法对原始电子签名进行第一加密处理,得到密文文件。
图3是一些实施例中的步骤S130的流程图,图3示意的步骤S130包括但不限于步骤S310至步骤S340:
S310,获取算法库;
S320,获取算法随机数;
S330,根据算法随机数在算法库中进行随机选择处理,得到目标算法;
S340,根据目标算法对原始电子签名进行第一加密处理,得到密文文件。
在步骤S310中,算法库为包含多套加密算法的集合,为了提高加密安全性,需要避免使用单一的加密算法,在用于加密的上位软件和PLC的IAP程序中,预先准备好多套不同的加密算法,形成算法库。
在步骤S320中,算法随机数由上位机生成,用于在步骤S330中根据随机数对算法进行选择。
具体地,以C语言为例,以系统时间为参数,使用srand(unsigned int_Seed)函数即可将每次的系统时间作为随机数种子,以达到避免伪随机的目的,其中,unsigned int_Seed即为随机数种子。
在步骤S330至步骤S340中,根据随机生成数决定调用算法库中的一个算法,被选择的算法即为目标算法,然后利用该目标算法进行第一加密处理,得到密文文件。
另外,在具体的实施例中,步骤S140中需要将密文文件保存在原始芯片中以得到目标芯片,这需要上位机发送密文文件给PLC,在发送的过程中,用步骤S320生成的算法随机数插入到密文文件的通信帧中,增加通信的安全性。相应地,在步骤S510的密文文件获取过程中,PLC先读取此随机生成数,再从算法库中调用对应的解密算法对密文解密,这使得加密算法不易被破解,同时还能以插入无关数据的形式增加命令通讯帧的复杂度,提高芯片的安全性。
具体地,若上位机生成的算法随机数为X,算法库中包含5种算法,编号为0-4,则通过X%5即可获得0-4范围内的随机值,选择此值对应编号的算法作为目标算法,其中,算法库中的算法包括但不限于DES、AES等。
本公开提供的芯片加密方法,将加密算法从单一逻辑变为随机逻辑,提高了芯片的安全性。
在一些实施例,将随机密钥、密文文件存储在原始芯片中,得到目标芯片,包括:获取固定密钥;根据固定密钥对随机密钥、密文文件进行第二加密处理,得到随机子密钥、密文子文件;将随机子密钥、密文子文件存储在原始芯片中,得到目标芯片。
图4是一些实施例中的步骤S140的流程图,图4示意的步骤S140包括但不限于步骤S410至步骤S430:
S410,获取固定密钥;
S420,根据固定密钥对随机密钥、密文文件进行第二加密处理,得到随机子密钥、密文子文件;
S430,将随机子密钥、密文子文件存储在原始芯片中,得到目标芯片。
在步骤S410中,固定密钥用于对随机密钥和密文文件的第二次加密过程,即第二加密处理过程,以保证随机密钥和密文文件在通信和存储过程的安全性。
在步骤S420中,在根据随机密钥对原始电子签名进行第一加密处理,得到密文文件后,会使用固定密钥再进行一层加密,防止随机生成的加密密钥能在命令通讯帧内被直接读出。
在步骤S430中,随机子密钥为随机密钥经过第二加密处理后得到的密钥,密文子文件为密文文件经过第二加密处理后得到的文件。
根据本公开实施例提供的芯片校验方法,即使破解者复制主控芯片FLASH区域内的所有数据,并将其下载到另一台硬件方案完全相同的产品中,也无法盗用此产品的软件程序。
本公开实施例提供一种芯片校验方法,通过获取通过芯片加密方法得到的目标芯片中的随机密钥、密文文件,获取目标芯片的原始电子签名,再根据随机密钥对密文文件进行解密处理,得到目标电子签名,最后将原始电子签名与目标电子签名进行校验处理,得到校验结果,完成了对芯片的校验;通过本公开实施例提供的技术方案可以减少芯片加工过程的额外成本支出、减少对外部硬件的依赖、提升芯片的通用性和可移植性,增加了芯片中用户程序被破解的难度,提高了芯片的安全性。
本公开实施例提出了一种芯片校验方法,包括:获取根据如上述任一实施例的芯片加密方法得到的目标芯片中的随机密钥、密文文件;获取目标芯片的原始电子签名;根据随机密钥对密文文件进行解密处理,得到目标电子签名;将原始电子签名与目标电子签名进行校验处理,得到校验结果。
图5是本公开实施例提供的芯片校验方法的一个可选的流程图,图5中的方法可以包括但不限于包括步骤S510至步骤S540,具体包括:
S510,获取目标芯片中的随机密钥、密文文件;
S520,获取目标芯片的原始电子签名;
S530,根据随机密钥对密文文件进行解密处理,得到目标电子签名;
S540,将原始电子签名与目标电子签名进行校验处理,得到校验结果。
在步骤S510之前,需要PLC上电后运行IAP程序,整个校验过程在IAP程序的运行过程中执行,以得到校验结果。需要说明的是,引导程序除了完成校验外,还负责更新用户程序,在PLC用户的调试阶段,用户程序经常要更新的,如果不需要更新,就直接跳转用户程序,更新的时候,就停留在引导程序,等待更新。
在步骤S510至S520中,目标芯片由图1所示的芯片加密方法得到,目标芯片即为待校验的芯片,上位机读取目标芯片中存储的随机密钥和密文文件,以及目标芯片的原始电子签名,用于后续的校验过程。
在步骤S530中,与步骤S130中的第一加密过程相对应,随机密钥为key,密文文件为cipher,采用的解密处理的算法为与F1对应的解密算法F2,则解密过程为signature2=F2(signature,cipher),其中,signature2即为解密后得到的目标电子签名。
需要说明的是,加密算法和解密算法互为逆过程,使用含有两个输入的算法是为了以密钥的形式引入随机因素,增强了芯片加密方法的安全性。
在步骤S540中,校验处理包括:将解密得到的目标电子签名signature2和从目标芯片中读取得到的原始电子签名signature1进行比对,校验结果包括签名吻合和签名不吻合;若签名吻合,则PLC执行跳转至APP程序的流程,开始正常运行用户程序;若签名不吻合,则IAP程序将不执行跳转至APP程序的流程,使PLC无法运行APP程序,从实质上达到软件程序无法被盗用的效果。
需要说明的是,未接收过加密密钥信息的PLC中FLASH内储存的随机密钥的数据均为0xFFFF,若随机密钥的数据为空,即为0xFFFF,则必定判断为解密失败,说明该芯片未经过芯片加密算法的处理。
在一些实施例,获取目标芯片的原始电子签名,包括:获取变量地址信息;对变量地址信息进行常量转化处理,得到常量地址信息;根据常量地址信息得到目标芯片的原始电子签名。
图6是一些实施例中的步骤S520的流程图,图6示意的步骤S520包括但不限于步骤S610至步骤S630:
S610,获取变量地址信息;
S620,对变量地址信息进行常量转化处理,得到常量地址信息;
S630,根据常量地址信息得到目标芯片的原始电子签名。
在步骤S610中,变量地址信息为将原始电子签名的存储地址进行变量转化后的地址,该地址以变量的形式在程序文件中存储。
在步骤S620中,若MCU中存储的原始电子签名的常量地址信息为:0x27835146,则其常量转化处理的C语言实现过程为:
int ID_add;
ID_add=(temp[0]<<6*4)|(temp[1]<<4*4)|(temp[2]<<2*4)|temp[3];
其中,“|”为按位与符号,“<<”为左移符号,ID_add为电子签名地址值,temp[0]、temp[1]、temp[2]、temp[3]分别为temp[4]数组的四个元素。
当在芯片验证过程中需要使用电子签名时,通过计算得出电子签名地址值ID_add,避免temp初始化值直接储存在FLASH内,降低破解者从FLASH处获取temp数组的具体值的可能性,增加了破解的难度。
在步骤S630中,常量地址信息为原始芯片中原本存储的关于原始电子签名的存储地址,该存储地址以常量的形式在程序文件中存储。得到常量地址信息之后,根据这个地址信息来提取原始电子签名,用于对芯片的校验。
本公开提供的芯片加密方法用变量转化的方式,避免了此类与加密流程相关的固定值以常量或能被编译器优化为常量的形式,直接出现在代码内,使得破解者有可乘之机,通过避免常量计算、避免编译器优化,将加密过程中使用到的常量转变为需要在程序运行时计算的变量,从而从FLASH数据中隐藏此常量,提高加密安全性的方式,从而提升了芯片的安全性。
请参阅图7,图7示意了一实施例的芯片加密,芯片加密装置包括:
随机密钥获取模块710,用于获取随机密钥;
原始芯片签名获取模块720,用于获取原始芯片的原始电子签名;
第一加密处理模块730,用于根据随机密钥对原始电子签名进行第一加密处理,得到密文文件;
目标芯片生成模块740,用于将随机密钥、密文文件存储在原始芯片中,得到目标芯片。
本实施例的芯片加密装置的具体实施方式与上述芯片加密方法的具体实施方式基本一致,在此不再赘述。
请参阅图8,图8示意了一实施例的芯片校验装置,芯片校验装置包括:
密文文件获取模块810,用于获取根据如上述任一实施例的芯片加密方法得到的目标芯片中的随机密钥、密文文件;
原始电子签名获取模块820,用于获取目标芯片的原始电子签名;
目标电子签名获取模块830,用于根据随机密钥对密文文件进行解密处理,得到目标电子签名;
校验模块840,用于将原始电子签名与目标电子签名进行校验处理,得到校验结果。
本实施例的芯片校验装置的具体实施方式与上述芯片校验方法的具体实施方式基本一致,在此不再赘述。
本公开实施例还提供了一种电子设备,包括:
至少一个存储器;
至少一个处理器;
至少一个程序;
所述程序被存储在存储器中,处理器执行所述至少一个程序以实现本公开实施上述的芯片加密方法或者芯片校验方法。该电子设备可以为包括手机、平板电脑、个人数字助理(Personal Digital Assistant,简称PDA)、车载电脑等任意智能终端。
请参阅图9,图9示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器901,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本公开实施例所提供的技术方案;
存储器902,可以采用ROM(ReadOnlyMemory,只读存储器)、静态存储设备、动态存储设备或者RAM(RandomAccessMemory,随机存取存储器)等形式实现。存储器902可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器902中,并由处理器901来调用执行本公开实施例的芯片加密方法、芯片校验方法;
输入/输出接口903,用于实现信息输入及输出;
通信接口904,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;和
总线905,在设备的各个组件(例如处理器901、存储器902、输入/输出接口903和通信接口904)之间传输信息;
其中处理器901、存储器902、输入/输出接口903和通信接口904通过总线905实现彼此之间在设备内部的通信连接。
本公开实施例还提供了一种存储介质,该存储介质是计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令用于使计算机执行上述芯片加密方法或芯片校验方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本公开实施例描述的实施例是为了更加清楚的说明本公开实施例的技术方案,并不构成对于本公开实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本公开实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图1-6中示出的技术方案并不构成对本公开实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本公开实施例的优选实施例,并非因此局限本公开实施例的权利范围。本领域技术人员不脱离本公开实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本公开实施例的权利范围之内。

Claims (10)

1.一种芯片加密方法,其特征在于,包括:
获取随机密钥;
获取原始芯片的原始电子签名;
根据所述随机密钥对所述原始电子签名进行第一加密处理,得到密文文件;
将所述随机密钥、所述密文文件存储在原始芯片中,得到目标芯片。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述原始电子签名的常量地址信息;
对所述常量地址信息进行变量转化处理,得到变量地址信息;
用所述变量地址信息更新所述常量地址信息。
3.根据权利要求1至2任一项所述的方法,其特征在于,所述根据所述随机密钥对所述原始电子签名进行第一加密处理,得到密文文件,包括:
获取算法库;
获取算法随机数;
根据所述算法随机数在所述算法库中进行随机选择处理,得到目标算法;
根据所述目标算法对所述原始电子签名进行所述第一加密处理,得到所述密文文件。
4.根据权利要求1至2任一项所述的方法,其特征在于,所述将所述随机密钥、所述密文文件存储在原始芯片中,得到目标芯片,包括:
获取固定密钥;
根据固定密钥对所述随机密钥、所述密文文件进行第二加密处理,得到随机子密钥、密文子文件;
将所述随机子密钥、所述密文子文件存储在所述原始芯片中,得到所述目标芯片。
5.一种芯片校验方法,其特征在于,包括:
获取根据如权利要求1至4任一项所述的方法得到的目标芯片中的随机密钥、密文文件;
获取所述目标芯片的原始电子签名;
根据所述随机密钥对所述密文文件进行解密处理,得到目标电子签名;
将所述原始电子签名与所述目标电子签名进行校验处理,得到校验结果。
6.根据权利要求5所述的方法,其特征在于,所述获取所述目标芯片的原始电子签名,包括:
获取变量地址信息;
对所述变量地址信息进行常量转化处理,得到常量地址信息;
根据所述常量地址信息得到所述目标芯片的所述原始电子签名。
7.一种芯片加密装置,其特征在于,包括:
随机密钥获取模块,用于获取随机密钥;
原始芯片签名获取模块,用于获取原始芯片的原始电子签名;
第一加密处理模块,用于根据所述随机密钥对所述原始电子签名进行第一加密处理,得到密文文件;
目标芯片生成模块,用于将所述随机密钥、所述密文文件存储在原始芯片中,得到目标芯片。
8.一种芯片校验装置,其特征在于,包括:
密文文件获取模块,用于获取根据如权利要求1至4任一项所述的方法得到的目标芯片中的随机密钥、密文文件;
原始电子签名获取模块,用于获取所述目标芯片的原始电子签名;
目标电子签名获取模块,用于根据所述随机密钥对所述密文文件进行解密处理,得到目标电子签名;
校验模块,用于将所述原始电子签名与所述目标电子签名进行校验处理,得到校验结果。
9.一种电子设备,其特征在于,包括:
至少一个存储器;
至少一个处理器;
至少一个程序;
所述程序被存储在存储器中,处理器执行所述至少一个程序以实现:
如权利要求1至4任一项所述的方法;
或者,
如权利要求5至6任一项所述的方法。
10.一种存储介质,所述存储介质为计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行:
如权利要求1至4任一项所述的方法;
或者,
如权利要求5至6任一项所述的方法。
CN202210047941.5A 2022-01-17 2022-01-17 芯片加密方法和装置、芯片校验方法和装置 Pending CN114491589A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210047941.5A CN114491589A (zh) 2022-01-17 2022-01-17 芯片加密方法和装置、芯片校验方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210047941.5A CN114491589A (zh) 2022-01-17 2022-01-17 芯片加密方法和装置、芯片校验方法和装置

Publications (1)

Publication Number Publication Date
CN114491589A true CN114491589A (zh) 2022-05-13

Family

ID=81511337

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210047941.5A Pending CN114491589A (zh) 2022-01-17 2022-01-17 芯片加密方法和装置、芯片校验方法和装置

Country Status (1)

Country Link
CN (1) CN114491589A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116070293A (zh) * 2023-03-09 2023-05-05 深圳市好盈科技股份有限公司 一种通过芯片加密进行固件保护的处理方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105763315A (zh) * 2014-12-16 2016-07-13 展讯通信(深圳)有限公司 数据加密和解密的方法、装置以及通信系统
KR20190031986A (ko) * 2017-09-19 2019-03-27 한국인터넷진흥원 모바일 생체인식 인증 수행 장치 및 인증 요청 장치
CN111984988A (zh) * 2020-09-01 2020-11-24 深圳壹账通智能科技有限公司 加密代码的生成方法、系统、计算机设备与存储介质
CN113177201A (zh) * 2021-05-20 2021-07-27 北京奕斯伟计算技术有限公司 程序校验、签名方法及装置、soc芯片

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105763315A (zh) * 2014-12-16 2016-07-13 展讯通信(深圳)有限公司 数据加密和解密的方法、装置以及通信系统
KR20190031986A (ko) * 2017-09-19 2019-03-27 한국인터넷진흥원 모바일 생체인식 인증 수행 장치 및 인증 요청 장치
CN111984988A (zh) * 2020-09-01 2020-11-24 深圳壹账通智能科技有限公司 加密代码的生成方法、系统、计算机设备与存储介质
CN113177201A (zh) * 2021-05-20 2021-07-27 北京奕斯伟计算技术有限公司 程序校验、签名方法及装置、soc芯片

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
QLEXCEL: "stm32芯片利用唯一ID对程序进行加密的一种方法", pages 1 - 5, Retrieved from the Internet <URL:https://blog.csdn.net/qlexcel/article/details/92404123> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116070293A (zh) * 2023-03-09 2023-05-05 深圳市好盈科技股份有限公司 一种通过芯片加密进行固件保护的处理方法和装置

Similar Documents

Publication Publication Date Title
CN111143869B (zh) 应用程序包处理方法、装置、电子设备及存储介质
CN107450941B (zh) 自动打包方法、装置、存储介质和计算机设备
CN107770622B (zh) 一种更新Linux系统中文件的方法
US20170161502A1 (en) Secure remote kernel module signing
CN103729597A (zh) 系统启动校验方法、系统启动校验装置和终端
CN103645910A (zh) 用于更新应用程序的方法
CN111897520A (zh) 前端项目框架的构建方法、装置、计算机设备及存储介质
CN111008034B (zh) 一种补丁生成方法及装置
CN106560830A (zh) 一种Linux嵌入式系统中的安全防护方法及系统
CN110119601B (zh) 基于应用程序安装包的程序加固方法及装置
CN107122295B (zh) 测试用例脚本的生成方法和装置
CN103136678A (zh) 智能终端的识别方法及装置、识别信息的处理方法及装置、识别系统
CN104866739A (zh) 安卓系统中应用程序加密方法及系统
CN106293849B (zh) 一种应用更新方法和终端
CN105159732A (zh) 在移动终端安装或更新应用程序的方法和移动终端
CN109408486B (zh) 文件发布方法和系统、发布服务器和文件生成装置
US20210234686A1 (en) Information processing device, information processing method, and storage medium
CN111432013B (zh) 配置项下发方法、配置项获取方法、设备及可读存储介质
CN106020868B (zh) 一种智能卡固件更新方法及系统
CN114491589A (zh) 芯片加密方法和装置、芯片校验方法和装置
CN111488169A (zh) 应用程序热更新的方法及装置、存储介质及电子设备
CN113849210A (zh) 一种基于tee的固件升级方法及装置
KR101823226B1 (ko) 코드 보호 방법 및 시스템
CN108664796B (zh) 一种so文件保护方法及装置
CN115185551A (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