本发明涉及一种设备软件版本验证,尤其涉及一种数据卡、终端设备的软件版本验证。
背景技术:
目前市场上研发的软件产品多样化、系列化,以满足各种客户的定制需求,为了高效的应付不同的客户,上线的版本软件都是基于一套代码,编译出版本也大同小异。一个版本可以在多个设备上升级使用,难免会导致版本升级到不相应的设备上测试验证,浪费公司资源。同时,客户也担心自己定制版本软件泄露,造成损失。
技术实现要素:
针对上述技术问题,本发明提供一种软件版本签名机制,在数码产品版本使用上,确保特定的硬件升级签名的软件版本,保证设备与软件版本的唯一性。
本发明的目的提供一种软件签名版本,所述机制包括如下步骤:
(1)每个项目的软件版本生成一个唯一的密钥对;
(2)项目软件版本生成验证信息;
(3)软件升级过程中版本文件验证。
进一步地,所述密钥对的生成步骤如下:
步骤11,基于RSA算法生成一对公钥与私钥,即(n,e1)为公钥,(n,e2)为公钥;
步骤12,将上述生成的密钥对与现有项目软件所用的密钥对做对比,确认是否已经存在,若存在,则重复步骤11,直到生成唯一的密钥对。
进一步地,所述软件版本生成的验证信息包括软件信息密文和硬件信息密文。
进一步地,所述软件信息密文生成步骤如下:
步骤21,读取软件版本中一个镜像文件一定长度的内容,通过所述密钥对读取的内容加密,产生该镜像文件相对应的密文;
步骤22,按照步骤21操作完成该镜像文件相应的密文。
进一步地,所述硬件信息密文生成步骤如下:
步骤23,配置项目的硬件的信息;
步骤24,根据硬件信息组合成独有字符串信息;
步骤25,所述字符串信息经过MD5加密,产生硬件信息密文长度为32位。
进一步地,软件版本生成验证信息还包括验证信息文件安装一定数据格式的生成,其步骤如下:
步骤26,将所述生成的公钥写入验证信息文件,长度为8个字节,占16字节空间,剩余的8个字节作为保留空间;
步骤27,将所述生成的硬件信息密文按16进制写入验证信息文件;
步骤28,将所述生成所有的软件信息文件的密文按照flash分区表对应文件顺序写入验证信息文件。
进一步地,生成的验证信息文件整合软件版本一起分布,在flash上为其划分一个分区。
进一步地,所述签名版本文件验证包括设备中软件版本的验证、对升级软件版本的验证、设备硬件信息的验证和软件版本的验证。
进一步地,所述设备中软件版本的验证过程为:
步骤30,在升级流程中,先判断设备中版本是否是软件签名版本;
步骤31,设备现有软件是非签名版本,直接升级软件版本;
步骤32,设置现有软件是签名版本,然后进入签名版本验证流程。
进一步地,所述升级软件版本的验证过程为:
步骤33,将升级版本下载到设备内存;
步骤34,判断设备软件是签名版本;
步骤34,从升级版本解析出权利要求6生成验证信息文件;
步骤35,如果没有解析出验证信息文件,则升级版本验证失败,放弃升级;
步骤36,从rsa.bin文件中,解析出权利要求2生成公钥(n,e2);
步骤37,从设备flash解析出该项目公钥,与步骤36中得到的公钥对比,相同,则代码升级软件版本可以升级,否则放弃升级。
进一步地,所述设备硬件信息的验证的验证过程为:
步骤40,进入升级流程,读取设备硬件信息;
步骤41,根据硬件信息组合成独有字符串信息;
步骤42,字符串信息经过MD5加密;
步骤43,从rsa.bin文件中,读出硬件信息的密文,与步骤43得到的密文对比,若相等,则设备硬件信息检测通过,否则,退出升级流程。
进一步地,所述软件版本的验证过程;
步骤44,权利要求10,11,12验证通过后,获取该软件版本的公钥。可以从设备中验证信息文件在的分区读取,也可以从升级版本文件rsa.bin中读取;
步骤45,读取rsa.bin中对应版本文件特定的一段密文;
步骤46,用公钥解密出这段密文,得到相应的明文;
步骤47,明文与密文相对应的版本文件比较,若相同,则说明该版本文件验证通过,反之,该版本文件验证失败,升级失败,推出升级;
步骤48,按照步骤46,47逐个验证版本软件中所有文件。所有文件验证通过说明该版本软件可以在该设备上升级。
与现有技术相比,本发明具有以下有益效果:
本发明经过签名的软件版本更加安全,防止他人替换软件版本部分文件以作他用,同时也防止设备误升级不匹配版本导致不必要的错误,进而提高产品的市场竞争力。
附图说明
图1为软件签名版本生成密文文件的流程图;
图2为软件签名版本验证过程的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1-2,本实施例提供一种软件签名版本,所述机制包括如下步骤:
(1)每个项目的软件版本生成一个唯一的密钥对;
(2)项目软件版本生成验证信息;
(3)软件升级过程中版本文件验证。
进一步地,所述密钥对的生成步骤如下:
步骤11,基于RSA算法生成一对公钥与私钥,即(n,e1)为公钥,(n,e2)为公钥;
步骤12,将上述生成的密钥对与现有项目软件所用的密钥对做对比,确认是否已经存在,若存在,则重复步骤11,直到生成唯一的密钥对。
进一步地,所述软件版本生成的验证信息包括软件信息密文和硬件信息密文。
进一步地,所述软件信息密文生成步骤如下:
步骤21,读取软件版本中一个镜像文件一定长度的内容,通过所述密钥对读取的内容加密,产生该镜像文件相对应的密文;
步骤22,按照步骤21操作完成该镜像文件相应的密文。
进一步地,所述硬件信息密文生成步骤如下:
步骤23,配置项目的硬件的信息;
步骤24,根据硬件信息组合成独有字符串信息;
步骤25,所述字符串信息经过MD5加密,产生硬件信息密文长度为32位。
进一步地,软件版本生成验证信息还包括验证信息文件安装一定数据格式的生成,其步骤如下:
步骤26,将所述生成的公钥写入验证信息文件,长度为8个字节,占16字节空间,剩余的8个字节作为保留空间;
步骤27,将所述生成的硬件信息密文按16进制写入验证信息文件;
步骤28,将所述生成所有的软件信息文件的密文按照flash分区表对应文件顺序写入验证信息文件。
进一步地,生成的验证信息文件整合软件版本一起分布,在flash上为其划分一个分区。
进一步地,所述签名版本文件验证包括设备中软件版本的验证、对升级软件版本的验证、设备硬件信息的验证和软件版本的验证。
进一步地,所述设备中软件版本的验证过程为:
步骤30,在升级流程中,先判断设备中版本是否是软件签名版本;
步骤31,设备现有软件是非签名版本,直接升级软件版本;
步骤32,设置现有软件是签名版本,然后进入签名版本验证流程。
进一步地,所述升级软件版本的验证过程为:
步骤33,将升级版本下载到设备内存;
步骤34,判断设备软件是签名版本;
步骤34,从升级版本解析出权利要求6生成验证信息文件;
步骤35,如果没有解析出验证信息文件文件,则升级版本验证失败,放弃升级;
步骤36,从rsa.bin文件中,解析出权利要求2生成的公钥(n,e2);
步骤37,从设备flash解析出该项目公钥,与步骤36中得到的公钥对比,相同,则代码升级软件版本可以升级,否则放弃升级。
进一步地,所述设备硬件信息的验证的验证过程为:
步骤40,进入升级流程,读取设备硬件信息;
步骤41,根据硬件信息组合成独有字符串信息;
步骤42,字符串信息经过MD5加密;
步骤43,从rsa.bin文件中,读出硬件信息的密文,与步骤43得到的密文对比,若相等,则设备硬件信息检测通过,否则,退出升级流程。
进一步地,所述软件版本的验证过程;
步骤44,权利要求10,11,12验证通过后,获取该软件版本的公钥。可以从设备中验证信息文件在的分区读取,也可以从升级版本文件rsa.bin中读取;
步骤45,读取rsa.bin中对应版本文件特定的一段密文;
步骤46,用公钥解密出这段密文,得到相应的明文;
步骤47,明文与密文相对应的版本文件比较,若相同,则说明该版本文件验证通过,反之,该版本文件验证失败,升级失败,推出升级;
步骤48,按照步骤46,47逐个验证版本软件中所有文件。所有文件验证通过说明该版本软件可以在该设备上升级。
以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。