在某些特殊设备中,如智能电表等产品,由于使用方并非产品设计方,而使用方又担心设计方将程序外泄,带来使用的安全问题,便要求设计方在单片机存储程序时可自动形成带有一定特征和加密特性的软件标识,以达到使用方可以溯源程序的目的。采用对软件代码计算,并形成校验码的方式,是单片机程序存储中的软件标识的一种良好设计方式。
1 引言
目前,电子设备、智能仪表等器件实现一些功能通常需要安装对应的应用软件。为了便于管理,需要对应用软件进行软件标识,特别是像电能表这类仪表需要执行法制计量机构颁布的相关标准,更加需要对安装于其中的软件进行软件标识,以实现有效管理[1,2]。
现有技术中,软件标识一般是由微处理器软件生成的,用户可更改软件标识,也存在软件更改或更新而未更改软件标识的情形,不利于器件的管理,存在数据泄露的风险[3,4]。
2 设计思路
在单片机生成方法为存储在存储介质中的软件代码生成软件标识,这需要一个前提,即存储介质包括至少一个第一存储单元、至少一个第二存储单元、第三存储单元。第一存储单元用于存储软件代码,第二存储单元用于存储多项式。其中,每个第二存储单元中存储的多项式是不同的。
2.1 实施方法一
如图 1 所示软件标识生成方法,包括以下步骤。
步骤一,设置第二存储单元与第一存储单元的对应关系。
步骤二,对软件代码进行计算以生成校验码。其中,不同的软件代码生成不同的校验码本实施例中,步骤二还包括:(1)从第一存储单元中获取软件代码,从对应的第二存储单元中获取多项式。(2)根据多项式对软件代码进行计算,生成校验码。
具体,当下载软件代码时,将软件代码依次写入第一存储单元中,每将一个第一存储单元写满则从该第一存储单元中获取软件代码,从对应的第二存储单元中获取多项式,根据多项式对软件代码进行计算。
以下通过一个具体实例说明根据多项式对软件代码进行计算的过程:例如,一个第一存储单元中存储的软件代码为 1010。与该第一存储单元对应的第二存储单元中存储的多项式为:H(x)=x3+x+1。
首先,根据变量的指数,将H(x)=x3+x+1转换成对应的二进制数 1011;由于多项式有4位,则把软件代码左移 3(4-1)位,得到 1010000。
其次,用多项式的二进制数对左移 3 位后的软件代码进行模2除,得到余位 011,即为校验码。
由于每个第一存储单元均会生成一个校验码,软件代码存储于几个第一存储单元中,即可得到几个校验码。需要说明的是,校验码的位数可根据实际需要自行设置,也即通过设置多项式的最高次幂实现。
步骤三,根据校验码生成软件标识。若一段软件代码共有 i 个 16 Bit 的校验码,生成软件标识具体可以是:将 i 个校验码进行分组后先进行同或运算,产生 64 Bit 数据,将这 64 Bit 数据与 Flash 的 Key 进行异或运算生成软件标识。
步骤四,将校验码存储于第三存储单元中。本实例中,根据不同的软件代码生成不同的校验码,进而生成不同的软件标识,也即只要软件代码不同,软件标识必不相同。当器件中的应用软件被更改、更新,相应的软件标识也会更改,从而能快速识别器件的应用软件是否符合用户要求,实现器件的安全管理。
2.2 实施方法二
在这种实施方法中,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现实施例一所提供的软件标识生成方法。计算机可读存储介质为 Flash 存储器。
Flash 存储器的程序存储区一般由 M 个存储块(也即第一存储单元)组成,每一存储块分若干个页。程序存储区只支持片擦除,不支持块擦除和页擦除。Flash 存储器的 NVR 区的 NVR1(也即第二存储单元)存有一定的长度的数据码 K(多项式的二进制数),数据码 K 中的第 n 个 16 Bit 数据 Kn 与 M个数据块中的第 n 个块 Mn 对应,在写 Flash 每个存储块时,Flash 控制器根据对应关系选择相应的多项式计算校验码。
其中,NVR1 对用户不支持读写功能。写完一个存储块,则计算出一个 16 Bit 的校验码 Cn,并将此校验码 Cn 存储在 NVR 区的 NVR2(也即第三存储单元)中。NVR2 对用户有只读功能。
下载程序时所需要的存储块都写完后,共有 M 个16 Bit 的校验码。再将这些校验码进行分组后先进行同或运算,产生 64 Bit 数据,将这 64 Bit 数据与Flash 的 Key 进行异或运算生成软件标识。并将此软件标识的 64 Bit 数据存储到 NVR2 中的固定位置。
使用这种方法的计算机可读存储介质存储应用程式,只要 Flash 存储器中的应用软件被更改、更新,相应的软件标识也会更改,从而能快速识别 Flash 存储器的应用软件是否符合用户要求,实现器件的安全管理
2.3 实施方法三
在这种实施方法中,提供一种单片机,如图 2 所示,单片机包括:计算机可读存储介质、控制单元和 TR 接口。其中,计算机可读存储介质为实施例 2 所提供的计算机可读存储介质。
控制单元分别与计算机可读存储介质和 TR 接口电连接。控制单元用于在接收到读取指令时从计算机可读存储介质中获取软件标识,并通过 TR 接口向外输出软件标识。其中读取指令由外设设备生成并发送至单片机。本实施例中,不需要单片机干预,外设设备即可读取软件标识,避免单片机对软件标识进行处理的可能性,便于法律监督机构管理。
在这种实施方法中,可根据实际需求,还可在单片机中设置并串转换电路。控制单元通过并串转换电路与 TR 接口电连接。并串转换电路用于将软件标识转换成串行的 Bit 数据流。从而,经过并串转换的软件标识可有红外或 RS485 通信接口输出至外设设备。
3 结语
根据不同的软件代码生成不同的校验码,进而生成不同的软件标识,也即只要软件代码不同,软件标识必不相同。当器件中的应用软件被更改、更新,相应的软件标识也会更改,从而能快速识别器件的应用软件是否符合用户要求,实现器件的安全管理。
全部0条评论
快来发表一下你的评论吧 !