发明内容
本发明的主要目的是提出一种嵌入式芯片中软件安全保护的方法,旨在解决如何提高嵌入式芯片中软件安全性的技术问题。
为实现上述目的,本发明提出的嵌入式芯片中软件安全保护的方法包括:
获取烧录有***程序的第一嵌入式芯片的第一识别码,所述第一识别码用于唯一标识所述第一嵌入式芯片,其中,所述***程序包括***驱动程序及***功能程序;
对第一识别码进行首次加密运算,得到预存识别摘要和预存密钥数据;
对预存识别摘要和预存密钥数据进行二次加密运算,得到加密数据;
获取产品注册信息,将预存密钥数据、加密数据和产品注册信息通过通信协议打包,得到数据包;
将数据包发送至***驱动程序;
在第二嵌入式芯片中运行***驱动程序;
通过***驱动程序提取数据包中的加密数据和预存密钥数据,对加密数据和预存密钥数据进行解密运算,得到所述预存识别摘要;
通过***驱动程序获取第二嵌入式芯片的第二识别码,对第二识别码进行运算,得到第一当前识别摘要;
比对第一当前识别摘要和预存识别摘要;
确定第一当前识别摘要与预存识别摘要不同,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片,删除第二嵌入式芯片的***功能程序。
可选地,所述对第一识别码进行首次加密运算,得到预存识别摘要和预存密钥数据的步骤包括:
利用MD5报文摘要算法对第一识别码进行运算,得到预存识别摘要;
利用HASH算法对第一识别码进行运算,得到预存识别密钥;
利用MD5报文摘要算法对预存识别密钥进行运算,得到预存密钥数据。
可选地,所述对预存识别摘要和预存密钥数据进行二次加密运算,得到加密数据的步骤包括:
利用AES加密算法对预存识别摘要和预存密钥数据进行运算,得到加密数据。
可选地,所述将数据包发送至***驱动程序的步骤包括:
利用CRC算法对数据包进行运行,得到校验码,将数据包和校验码发送至***驱动程序;
所述通过***驱动程序提取数据包中的加密数据和预存密钥数据,对加密数据和预存密钥数据进行解密运算,得到所述预存识别摘要的步骤之前,还包括:利用校验码校验数据包的完整性。
可选地,在所述通过***驱动程序提取数据包中的加密数据和预存密钥数据,对加密数据和预存密钥数据进行解密运算,得到所述预存识别摘要的步骤之后,还包括:
在第二嵌入式芯片中运行***功能程序;
对加密数据和预存密钥数据进行解密运算,得到所述预存识别摘要;
通过***功能程序获取第二嵌入式芯片的第二识别码,对第二识别码进行运算,得到第二当前识别摘要;
比对第二当前识别摘要和预存识别摘要;
确定第二当前识别摘要与预存识别摘要不同,判断第二嵌入式芯片与第一嵌入式芯片为不同芯片,删除***功能程序。
可选地,在所述通过***驱动程序提取数据包中的加密数据和预存密钥数据,对加密数据和预存密钥数据进行解密运算,得到所述预存识别摘要的步骤之前,还包括:
利用随机算法将数据包存储在一个FLASH区域的不同地址单元中。
可选地,所述利用随机算法将数据包存储在一个FLASH区域的不同地址单元中的步骤包括:
根据预存存识别码16进制字符串的最后两位,利用随机算法将数据包存储在一个2KB的FLASH区域的不同地址单元中。
可选地,所述比对第一当前识别摘要和预存识别摘要的步骤之后,还包括:
确定第二当前识别摘要与预存识别摘要相同,判断第二嵌入式芯片与第一嵌入式芯片为同一芯片,运行***功能程序。
可选地,所述确定第一当前识别摘要与预存识别摘要不同,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片,删除第二嵌入式芯片的***功能程序的步骤包括:
计算第一当前识别摘要与预存识别摘要的相似度;
确定第一当前识别摘要与预存识别摘要的相似度小于预设值,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片;
确定第一当前识别摘要与预存识别摘要的相似度大于预设值,再次对第二识别码进行运算,得到第三当前识别摘要,比对第三当前识别摘要与预存识别摘要,确定第三当前识别摘要与预存识别摘要不同,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片。
可选地,在所述确定第一当前识别摘要与预存识别摘要不同,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片,删除第二嵌入式芯片的***功能程序的步骤之后,还包括:
删除***驱动程序中的数据包、加密数据、预存密钥数据和预存识别摘要。
可选地,在所述确定第一当前识别摘要与预存识别摘要不同,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片,删除第二嵌入式芯片的***功能程序的步骤之后,还包括:
将预存识别摘要作为无效识别摘要存储于第二嵌入式芯片的存储单元中;
在第二嵌入式芯片中运行最新***驱动程序,通过最新***驱动程序提取最新数据包中的最新加密数据和最新预存密钥数据,对最新加密数据和最新预存密钥数据进行解密运算,得到最新识别摘要;
将最新识别摘要与存储单元中的无效识别摘要一一比对;
确定最新识别摘要与其中一无效识别摘要相同,删除最新***功能程序。
本发明还提出一种衣物处理设备,包括:设备本体、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的嵌入式芯片中软件安全保护的方法的步骤。
本发明还提出一种可读存储介质,所述可读存储介质存储有衣物处理设备的控制程序,所述衣物处理设备的控制程序被处理器执行时实现如上所述的嵌入式芯片中软件安全保护的方法的各个步骤。
本发明嵌入式芯片中软件安全保护的方法对第一嵌入式芯片的第一识别码进行加密运算得到预存识别摘要,将该预存识别摘要发送至第一嵌入式芯片的***驱动程序中,在第二嵌入式芯片运行该***驱动程序时,***驱动程序会自动获取第二嵌入式芯片的第二识别码,再自动进行加密运算得到第一当前识别摘要,若预存识别摘要与第一当前识别摘要不同,说明第二识别码与第一识别码不同,由于识别码是用于唯一标识嵌入式芯片的,因此可知第二嵌入式芯片与第一嵌入式芯片为不同芯片,此时可判断第二嵌入式芯片的程序是从第一嵌入式芯片拷贝过去的,因此***驱动程序会自动将第二嵌入式芯片中的***功能程序删除,以防止***功能程序被盗用,实现对嵌入式芯片中软件的安全保护。在判断两个嵌入式芯片是否是同一芯片时,不是直接比对识别码,而是将识别码加密生成识别摘要后再进行比对,如此,可避免用以唯一标识第一嵌入式芯片的识别码被拷贝者获取,从而可对第一嵌入式芯片的识别码起到加密保护作用,以进一步提高第一嵌入式芯片的软件安全性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,若本发明实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,全文中出现的“和/或”的含义为,包括三个并列的方案,以“A和/或B为例”,包括A方案,或B方案,或A和B同时满足的方案。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明提出一种嵌入式芯片中软件安全保护的方法,嵌入式芯片应用于嵌入式产品,如衣物处理设备,即通过嵌入该芯片,衣物处理设备可按照存储于芯片中的程序运行。
在本发明实施例中,如图1至图5所示,该嵌入式芯片中软件安全保护的方法包括:
S1、获取烧录有***程序的第一嵌入式芯片的第一识别码,所述第一识别码用于唯一标识所述第一嵌入式芯片,其中,所述***程序包括***驱动程序及***功能程序;
S2、对第一识别码进行首次加密运算,得到预存识别摘要和预存密钥数据;
S3、对预存识别摘要和预存密钥数据进行二次加密运算,得到加密数据;
S4、获取产品注册信息,将预存密钥数据、加密数据和产品注册信息通过通信协议打包,得到数据包;
S5、将数据包发送至***驱动程序;
S6、在第二嵌入式芯片中运行***驱动程序;
S7、通过***驱动程序提取数据包中的加密数据和预存密钥数据,对加密数据和预存密钥数据进行解密运算,得到所述预存识别摘要;
S8、通过***驱动程序获取第二嵌入式芯片的第二识别码,对第二识别码进行运算,得到第一当前识别摘要;
S9、比对第一当前识别摘要和预存识别摘要;
S10、确定第一当前识别摘要与预存识别摘要不同,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片,删除第二嵌入式芯片的***功能程序。
需要说明的是,嵌入式芯片内的程序分为两部分:***驱动程序(bootloader)和***功能程序。在嵌入式产品的生产阶段,会使用芯片烧录设备将***驱动程序写入芯片(裸片)。嵌入式产品生产出来后,通过上位机的程序升级工具与嵌入式芯片的***驱动程序通讯,通过程序升级工具将***功能程序传递给***驱动程序,再由***驱动程序将***功能程序写入嵌入式芯片。嵌入式芯片再次启动后,先运行***驱动程序,***驱动程序对***功能程序进行校验,如校验通过,则执行***功能程序,使嵌入式产品的功能***正常工作,如加热、吹风等;若校验不通过,则***功能程序无法被执行,也就是嵌入式产品无法正常工作。
嵌入式产品一般都有内部ROM供用户存放***功能程序,有的还会提供EEPROM存储器。嵌入式产品***运行时,嵌入式芯片直接读取ROM中的***功能程序并执行,或先将ROM保存的***功能程序加载到内存(RAM)中再执行。
可以理解,***功能程序是芯片中用于控制嵌入式产品运行的核心程序,如果***功能程序被直接盗录至另一芯片并可被有效驱动,则另一芯片可直接控制另一台嵌入式产品,而无需程序开发者授权。而本实施例的目的就是防止原芯片内的***功能程序被盗录至另一芯片后被直接执行。
在本实施例中,可通过上位机来实现与第一嵌入式芯片进行串口通信,以对第一嵌入式芯片的程序进行加密或更新。也就是说,步骤S1至S5是通过串口通信实现的。其中,第一嵌入式芯片指的是储存有已授权***功能程序的原装芯片。
第一识别码是第一嵌入式芯片的唯一识别码,即不存在另一块识别码与第一识别码相同的芯片。首次加密运算的具体算法不做限制,只需满足可生成预存识别摘要和预存密钥数据即可,举例而言,预存识别摘要可以是128位的摘要参数。将第一识别码加密生成预存识别摘要,可防止第一识别码被盗录者直接获取;而将预存识别摘要和预存密钥数据进行二次加密运算,可进一步提高盗录者对第一识别码的破解难度,从而提高对第一识别码的保密效果。
产品注册信息即嵌入了该第一嵌入式芯的产品的参数信息,如注册时间、温度单位、软件版本等。将产品注册信息和预存密钥数据、加密数据一起打包形成数据包后发送至***驱动程序,可方便标志该芯片与具体产品的一一对应关系。
将数据包发送至***驱动程序后,还需要在第一嵌入式芯片中写入一个校验程序,该校验程序用以在***功能程序执行前被执行,即步骤S6至S10。
需要说明,第二嵌入式芯片与第一嵌入式芯片可能是同一芯片,也可能是不同芯片,这取决于第二嵌入式芯片的第一识别码与第二嵌入式芯片的第二识别码是否相同。第二嵌入式芯片包含有上述驱动程序,当第二嵌入式芯片嵌入产品运行后,***驱动程序会首先加载并启动步骤S6至S10的校验程序。
在校验过程中,由于用以作为比对标准的第一识别码是加密后的识别摘要的形式,所以***驱动程序首先也要将第二嵌入式芯片的第二识别码通过同一加密算法运算得到第一当前识别摘要,若第一当前识别摘要与预存识别摘要相同,说明第二识别码与第一识别码相同,即判断第二嵌入式芯片与第一嵌入式芯片为同一芯片,此时可认为***功能程序没有被盗录,而是在原授权芯片上执行,从而可运行***功能程序,以使嵌入式产品正常工作。
若第一当前识别摘要与预存识别摘要不同,说明第二识别码与第一识别码不同,即判断第二嵌入式芯片与第一嵌入式芯片为不同芯片,此时可认为已授权的第一嵌入式芯片的软件被盗录至未授权的另一芯片中,从而会删除***功能程序,以使***功能程序既无法被执行,也无法被保存在未授权的芯片中,提高对***功能程序的加密效果。
本发明嵌入式芯片中软件安全保护的方法对第一嵌入式芯片的第一识别码进行加密运算得到预存识别摘要,将该预存识别摘要发送至第一嵌入式芯片的***驱动程序中,在第二嵌入式芯片运行该***驱动程序时,***驱动程序会自动获取第二嵌入式芯片的第二识别码,再自动进行加密运算得到第一当前识别摘要,若预存识别摘要与第一当前识别摘要不同,说明第二识别码与第一识别码不同,由于识别码是用于唯一标识嵌入式芯片的,因此可知第二嵌入式芯片与第一嵌入式芯片为不同芯片,此时可判断第二嵌入式芯片的程序是从第一嵌入式芯片拷贝过去的,因此***驱动程序会自动将第二嵌入式芯片中的***功能程序删除,以防止***功能程序被盗用,实现对嵌入式芯片中软件的安全保护。在判断两个嵌入式芯片是否是同一芯片时,不是直接比对识别码,而是将识别码加密生成识别摘要后再进行比对,如此,可避免用以唯一标识第一嵌入式芯片的识别码被拷贝者获取,从而可对第一嵌入式芯片的识别码起到加密保护作用,以进一步提高第一嵌入式芯片的软件安全性。
具体地,如图2所示,所述对第一识别码进行首次加密运算,得到预存识别摘要和预存密钥数据的步骤包括:
S21、利用MD5报文摘要算法对第一识别码进行运算,得到预存识别摘要;
S22、利用HASH算法对第一识别码进行运算,得到预存识别密钥;
S23、利用MD5报文摘要算法对预存识别密钥进行运算,得到预存密钥数据。
MD5报文摘要算法可以将任意长度的第一识别码经过计算得到固定长度的预存识别摘要,而且只有在第一识别码相同的情况下,才能得到相同的识别摘要,并且这个算法是不可逆的,即便得到了加密以后的预存识别摘要,也不可能通过解密算法反算出第一识别码。这样就可以把第一识别码以MD5值的方式保存起来,不但可以避免用户的第一识别码被具有盗录者知道,而且还在一定程度上增加了第一识别码被破解的难度。
HASH算法能将第一识别码变换成固定长度的预存识别密钥,该预存识别密钥与预存识别摘要对应,HASH算法具有独立自主性,能进一步提高预存识别密钥的生产难度。而利用MD5报文摘要算法对预存识别密钥进行运算,能保证预存密钥数据的不可逆性,也就是使盗录者无法通过逆向运算来得到第一识别码。
在实际应用中,所述对预存识别摘要和预存密钥数据进行二次加密运算,得到加密数据的步骤包括:
利用AES加密算法对预存识别摘要和预存密钥数据进行运算,得到加密数据。
AES在软件及硬件上都能快速地加解密,相对来说较易于实现,且只需要很少的存储器。
在一实施例中,所述将数据包发送至***驱动程序的步骤包括:
利用CRC算法对数据包进行运行,得到校验码,将数据包和校验码发送至***驱动程序;
所述通过***驱动程序提取数据包中的加密数据和预存密钥数据,对加密数据和预存密钥数据进行解密运算,得到所述预存识别摘要的步骤之前,还包括:利用校验码校验数据包的完整性。
CRC算法(Cyclic Redundancy Check,CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。其检错能力极强,且检测成本较低;通过采用CRC算法来传输数据包,能确保传输的数据准确无误。
在一实施例中,如图3所示,在所述通过***驱动程序提取数据包中的加密数据和预存密钥数据,对加密数据和预存密钥数据进行解密运算,得到所述预存识别摘要的步骤之后,还包括:
S20、在第二嵌入式芯片中运行***功能程序;
S30、对加密数据和预存密钥数据进行解密运算,得到所述预存识别摘要;
S40、通过***功能程序获取第二嵌入式芯片的第二识别码,对第二识别码进行运算,得到第二当前识别摘要;
S50、比对第二当前识别摘要和预存识别摘要;
S60、确定第二当前识别摘要与预存识别摘要不同,判断第二嵌入式芯片与第一嵌入式芯片为不同芯片,删除***功能程序。
步骤S20至S60是第二校验程序,即使软件盗用者通过非法途径直接跳过步骤S6至S10的校验程序,则在***功能程序运行前会运行第二校验程序。第二校验程序的校验过程与第一校验程序相同,若最终判断第二嵌入式芯片与第一嵌入式芯片为不同芯片,都会直接删除***功能程序。由此,可进一步提高对***功能程序的保密可靠性。
在一实施例中,在所述通过***驱动程序提取数据包中的加密数据和预存密钥数据,对加密数据和预存密钥数据进行解密运算,得到所述预存识别摘要的步骤之前,还包括:
利用随机算法将数据包存储在一个FLASH区域的不同地址单元中。
具体地,所述利用随机算法将数据包存储在一个FLASH区域的不同地址单元中的步骤包括:
根据预存识别码16进制字符串的最后两位,利用随机算法将数据包存储在一个2KB的FLASH区域的不同地址单元中;如,FLASH区域被划分为0-100标记的不同地址单元,假设预存识别码16进制字符串的最后两位为21,随机算法与预存识别码16进制字符串的最后两位进行并运算产生0-100的数值,如并运算后产生数值为63,则将数据包存储在标记号为63的地址单元中。
如此,可提高从第一嵌入式芯片内部直接提取预存密钥数据和加密数据的难度,以进一步防止第一识别码被破解。
在一实施例中,如图4所示,所述确定第一当前识别摘要与预存识别摘要不同,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片,删除第二嵌入式芯片的***功能程序的步骤包括:
S11、计算第一当前识别摘要与预存识别摘要的相似度;
S12、确定第一当前识别摘要与预存识别摘要的相似度小于预设值,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片;
S13、确定第一当前识别摘要与预存识别摘要的相似度大于预设值,再次对第二识别码进行运算,得到第三当前识别摘要,比对第三当前识别摘要与预存识别摘要,确定第三当前识别摘要与预存识别摘要不同,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片。
***驱动程序在获取第二嵌入式芯片的第二识别码后,对第二识别码运算时,可能会出现运算出错,造成得到错误的第一当前识别摘要。也就是说,可能第二识别码与第一识别码相同,当加密运算过程出错,导致得到的第一当前识别摘要与预存识别摘要不同,从而将第二嵌入式芯片误判为与第一嵌入式芯片为不同芯片。
为避免上述误判过程,在第一次确定第一当前识别摘要与预存识别摘要不同后,可计算第一当前识别摘要与预存识别摘要的相似度,若相似度较小,说明第二识别码与第一识别码确实不相同。若相似度较大,说明第二识别码可能与第一识别码相同,此时就有必要再次对第二识别码进行运算,以得到第三当前识别摘要,将第三当前识别摘要进行比对,若第三当前识别摘要仍与预存识别摘要不同,说明第二识别码确实与第一识别码不同。若第三当前识别摘要与预存识别摘要相同,说明第二识别码与第一识别码相同,只是在首次运算中出现错位。由此,可防止因运算过程出错导致对***功能程序误删,以有效保护***功能程序。
在一实施例中,在所述确定第一当前识别摘要与预存识别摘要不同,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片,删除第二嵌入式芯片的***功能程序的步骤之后,还包括:
删除***驱动程序中的数据包、加密数据、预存密钥数据和预存识别摘要。
在判断第一嵌入式芯片与第二嵌入式芯片为不同芯片,可认为第二嵌入式芯片中的程序是从第一嵌入式芯片盗录的,此时***驱动程序可将第二嵌入式芯片中的数据包、加密数据、预存密钥数据和预存识别摘要一并删除,以防止被继续尝试解密,由此,可进一步提高对嵌入式芯片中软件的加密保护效果。
在一实施例中,如图5所示,在所述确定第一当前识别摘要与预存识别摘要不同,判断第一嵌入式芯片与第二嵌入式芯片为不同芯片,删除第二嵌入式芯片的***功能程序的步骤之后,还包括:
S110、将预存识别摘要作为无效识别摘要存储于第二嵌入式芯片的存储单元中;
S120、在第二嵌入式芯片中运行最新***驱动程序,通过最新***驱动程序提取最新数据包中的最新加密数据和最新预存密钥数据,对最新加密数据和最新预存密钥数据进行解密运算,得到最新识别摘要;
S130、将最新识别摘要与存储单元中的无效识别摘要一一比对;
S140、确定最新识别摘要与其中一无效识别摘要相同,删除最新***功能程序。
拷贝至第二嵌入式芯片中的***功能程序被删除后,盗用者可能会再次将第一嵌入式芯片的软件拷贝至第二嵌入式芯片,继续尝试破解。此时,由第一嵌入式芯片运算得到的预存识别摘要已作为无效识别摘要存储在第二嵌入式芯片的存储单元中,第一嵌入式芯片的软件被再次拷贝至第二嵌入式芯片后,在运行其校验程序之前,可先将第一嵌入式芯片的最新识别摘要与第二嵌入式芯片中储存的无效识别摘要一一比对,只要最新识别摘要与其中一无效识别摘要相同,即判断当前的软件属于以前被拷贝过的软件,从而***驱动程序可直接将该软件的***功能程序删除,无需执行校验过程。也就是说,若同一未授权芯片被多次拷贝相同的软件,在未授权芯片第二次运行该软件前,可直接删除***功能程序,从而省去后续的校验步骤,以简化校验过程。
本发明还提出一种衣物处理设备,该衣物处理设备包括设备本体、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的嵌入式芯片中软件安全保护的方法的步骤;该嵌入式芯片中软件安全保护的方法的具体步骤参照上述实施例,由于本衣物处理设备采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
本发明还提出一种可读存储介质,该可读存储介质存储有衣物处理设备的控制程序,所述衣物处理设备的控制程序被处理器执行时实现如上所述的嵌入式芯片中软件安全保护的方法的各个步骤;该嵌入式芯片中软件安全保护的方法的具体步骤参照上述实施例,由于本可读存储介质采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
以上所述仅为本发明的可选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。