税控设备软件版本智能升级加密验证方法

文档序号:6556291阅读:193来源:国知局
专利名称:税控设备软件版本智能升级加密验证方法
技术领域
本发明是一种可以应用于税控收款机的软件版本智能升级加密设计方案,用于信息技术与电子技术与自动化技术中的税控设备技术领域,以及计算机技术中的加解密认证技术。
背景技术
税务是国家经济的命脉,因而税控产品的设计非常重要。由于税控产品的应用范围广泛,产品软件的更换和升级比较频繁。这就要求税控设备的软件升级具有灵活易行的特性。由于软件升级方式通常采用USB存储盘、以太网等多种形式的介质,而同时税控产品具有严格的安全性要求,这需要软件的升级方式必须具有高度的安全性。
这段情况是这样,常规的升级方法,是不采用加密认证方式的。加密认证的系统构建是我们的发明中提出的。下面一段话可能来自与别的税控收款机的程序升级方法,那么我们的发明优势就在于一切用程序软件构成,无需外部智能卡认证。(在常规密码中,收信方和发信方使用相同的密钥,即加密密钥和解密密钥是相同或等价的,即对称加密算法计算。DES及其各种变形是常用的算法,DES是分块加密的,将明文分割成64bits的块。
CN200410067248.6涉及一种税控收款机控制软件安全更新的方法及装置,在税控收款机进行软件更新下载操作之前,税控收款机必须验证由其他载体提供的软件更新下载安全码,该安全码根据每台税控收款机的特性参数,如具有唯一性的机器编码,通过不对称性加密运算获得数字签名安全码,存贮在随机出售的智能卡中。
至少包括以下顺序的步骤A、税控收款机安全码的建立,后台管理系统(1)输入机器编码,后台管理系统(1)将所述的机器编码发送给SAM卡读写模块(2),SAM卡读写模块(2)根据机器编码和自身的密钥进行非对称算法加密后获得数字签名安全码,并发给后台管理系统(1),后台管理系统(1)将所述的数字签名安全码发送至智能卡读写模块(3),并在智能卡中存储;B、税控收款机智能卡的确认,税控收款机收到软件更新的下载指令后,由税控收款机的微处理器(4)向智能卡读写模块(6)发送身份认证请求命令,智能卡读写模块(6)向税控收款机的微处理器(4)发送多位随机数,微处理器(4)根据税控收款机智能卡身份认证密钥和接收到的多位随机数,由对称算法产生一个结果,智能卡读写模块(6)根据所发送的多位随机数和自己的身份认证密钥,也由对称算法产生一个结果,微处理器(4)对所述两个结果进行比较,只有在上述两个加密结果相同情况下,微处理器(4)确认智能卡有效;C、税控收款机安全码认证,由微处理器(4)对智能卡读写模块(6)进行数字签名读取,微处理器(4)根据税控收款机安全码认证密钥进行非对称算法解密,获得解密后的税控收款机机器编码,微处理器(4)读取税控收款机存储的机器编码,微处理器(4)对所述两个机器编码进行比较,只有在上述两个机器编码结果相同情况下,税控收款机微处理器确认安全码有效;D、税控收款机确认数字签名安全码有效后,税控收款机微处理器(4)通过标准串行接口(7)从PC机(8)中调出更新软件,下载到税控收款机程序存储器(5)。)然而,上述方法比较复杂,对保证软件完整性的技术没有好的方案。还需要多个硬件卡。为了解决税控设备设计中软件升级的安全性方面的问题,本发明对于税控设备的软件升级方式作了加密认证、数字签名等方面的设计,保证了软件升级序列版本号、升级时间以及发行方、用户方身份的一致性,以及待升级软件本身的安全性和完整性。

发明内容
本发明目的是解决税控设备设计中软件升级的安全性方面的问题,保证软件升级序列版本号、升级时间以及发行方、用户方身份的一致性,以及待升级软件本身的安全性和完整性。
在需要更新软件下载时,首先对智能卡进行身份认证,在确认智能卡身份正确后,进行安全码的认证,通过对安全码非对称算法解密,获得的解密码与税控收款存储的机器编码相同时,税控收款机才进行软件更新下载。本发明采用具备唯一性、高安全性的数字签名安全码认证方法,从根本上提高税控收款机系统软件更新下载的安全性和可靠性。
本技术解决方案是本发明采用对称加密算法对可执行程序、软硬件版本进行加密。
1、采用DES对称加密算法,对于待升级的可执行程序和软件版本进行加密。DES算法以及密钥保存在程序发布端和税控机端。
2、采用MD5等散列函数,对于加密后的文件进行消息映射提取,得到验证码。这个散列函数,同时保存在程序发布端和税控机端。
3、采用MD5等散列函数,对于加密后的文件、待升级的机器编号、待升级税控机的软件版本差异、以及程序发布端产生的1字节随机数进行消息映射提取,产生验证码,进行验证。即提取得到验证码。这个散列函数,同时保存在程序发布端和税控机端。验证码,并加上1字节随机数形成5字节验证码,通过升级工作人员携带。
4、升级验证过程中,首先由税控机端使用与程序发布端相同的散列函数对已经加密的分发的程序进行消息映射提取。并将生成的验证码与USB或者网络媒介发布的验证码进行比较。如果两者不一致,则验证失败,表明程序在分发途中遇到篡改,退出升级。
5、由税控机端使用与程序发布端相同的散列函数对已经加密的分发的程序加上本机的机器编号、现有软件版本与待升级的软件版本的差异值、以及程序发布端产生的随机数(即升级人员所携带的第5字节的验证码),进行消息映射提取。如果两者不一致,则验证失败,表明程序与待升级的税控机并不对应,退出升级。
6、税控机将加密的程序分块读取,并用密钥解密。第一块内容包含了软件的版本信息,可以由税控机产生提示信息,由用户确认。
7、税控机将加密的程序分块读取解密,并逐块覆盖原有的可执行程序文件,完成升级过程。
本发明有益效果1、保证升级可执行程序发布过程中的保密性。
2、保证升级过程中可执行程序的完整性和不可篡改性。
3、实现了升级中软件版本以及版本差异的验证过程。
4、本发明实现了升级过程中对于待升级税控机的机器编号的验证。解决税控设备设计中软件升级的安全性方面的问题,保证软件升级序列版本号、升级时间以及发行方、用户方身份的一致性,以及待升级软件本身的安全性和完整性。本发明采用具备唯一性、高安全性的安全码认证方法,从根本上提高税控收款机系统软件更新下载的安全性和完整性、可靠性。


图1是本发明程序加密过程框2是本发明程序验证过程框3是本发明利用DES实现框图具体实现方式1、采用DES对称加密算法,对于待升级的可执行程序和软件版本进行加密。为了减少计算量和节省空间,采用分块加密的方法。经过加密产生的文件通过USB、网络等媒介发布。DES算法以及密钥保存在程序发布端和税控机端,如附图1所示。
2、采用MD5等散列函数,对于加密后的文件进行消息映射提取,得到16字节的验证码。这个散列函数,同时保存在程序发布端和税控机端,如附图1所示。
3、采用MD5等散列函数,对于加密后的文件、待升级的机器编号、待升级税控机的软件版本差异、以及程序发布端产生的1字节随机数进行消息映射提取,得到16字节的验证码。这个散列函数,同时保存在程序发布端和税控机端。将16字节验证码分4组异或产生4字节的验证码,并加上1字节随机数形成5字节验证码,通过升级工作人员携带,如附图1所示。
4、升级验证过程中,首先由税控机端使用与程序发布端相同的散列函数对已经加密的分发的程序进行消息映射提取。并将生成的16字节的验证码与USB或者网络媒介发布的验证码进行比较。如果两者不一致,则验证失败,表明程序在分发途中遇到篡改,退出升级。如附图2所示。
5、第二步,由税控机端使用与程序发布端相同的散列函数对已经加密的分发的程序加上本机的机器编号、现有软件版本与待升级的软件版本的差异值、以及程序发布端产生的随机数(即升级人员所携带的第5字节的验证码),进行消息映射提取,并将生成的16字节的验证码与升级人员所携带的前4字节的验证码进行比较。如果两者不一致,则验证失败,表明程序与待升级的税控机并不对应,退出升级。如附图2所示。
6、第三步,税控机将加密的程序分块读取,并用密钥解密。第一块内容包含了软件的版本信息,可以由税控机产生提示信息,由用户确认。如附图2所示。
7、第四步,税控机将加密的程序分块读取解密,并逐块覆盖原有的可执行程序文件,完成升级过程。如附图2所示。
使用标准DES对称加密Public Function EncryptDes(ByVal SourceStr As String)As String”get encodekey string from web.configDim skey As Stringskey=ConfigurationSettings.AppSettings(″EnCodeKey″)”put the input string into the byte arrayDim des As DESCryptoServiceProvider=New DESCryptoServiceProvider()Dim inputByteArray As Byte()inputByteArray=Encoding.Default.GetBytes(SourceStr)”set encrypt object and skeydes.Key=ASCIIEncoding.ASCII.GetBytes(skey)des.IV=ASCIIEncoding.ASCII.GetBytes(skey)Dim ms As MemoryStream=New MemoryStream()Dim cs As CryptoStream=New CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write)Dim sw As StreamWriter=New StreamWriter(cs)sw.Wri te(SourceStr)sw.Flush()cs.FlushFinalBlock()ms.Flush()Return Convert.ToBase64String(ns.GetBuffer(),0,ms.Length)End FunctionMD5算法是Ron Rivest于1992年发明的,它把数据分成512-bit块,产生128-bit的消息摘要值。在最近数年,MD5是最主要的消息摘要算法之一。
MD5算法的实现分为填充消息、确定附加消息长度、初始化缓冲区、分组处理消息、输出消息摘要几个部分。MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
1、填充消息从M填充到M1中|M1|≡448 mod 512|M1|>|M|如果|M|≡448 mod 512,则|M1|=|M|+512填充内容100…0附加消息长度M1填充到M2,消息长度以64位表示若|M1|>264,则仅取低64位|M2|为512的倍数,可分为长度为512的L个分组Y0,Y1,…,YL-12、初始化缓冲区缓冲区长度128位用四个32位的寄存器(A,B,C,D)表示A=01 23 45 67(0x67452301)B=89 AB CD EF(0xEFCDAB89)C=FE DC BA 98(0x98BADCFE)D=76 54 32 10(0x10325476)括号内为每个寄存器的实际数值,前面为实际的存储顺序。
3、分组处理消息算法的核心是压缩函数,由四轮运算组成,每轮进行16步迭代。每轮使用不同的逻辑函数,记为F,G,H,I。T是事先产生的表格,包含64项,每项32位。512位的消息在每轮分为16个分组,每个分组X为32位。
CV0=IVCVi=HMD5(CVi-1,Yi)每一轮包含对缓冲区ABCD的16步操作所组成的一个序列。
a←b+((a+g(b,c,d)+X[k]+T[i])<<<s)其中,a,b,c,d =缓冲区的四个字,以一个给定的次序排列;g =基本逻辑函数F,G,H,I之一;<<<s=对32位字循环左移s位X[k] =M[q×16+k]=在第q个512位数据块中的第k个32位字T[i] =表T中的第i个32位字;+ =模232的加;第一轮运算
·For(k=0;k<16;++k){A←B+((A+g1(B,C,D)+X[ρ1(k)]+T[16×0+K+1])<<<s1[K mod 4])(A,B,C,D)←(A,B,C,D)>>>32}·g1(B,C,D)=(B&C)|(B&D)·ρ1(k)=K,0≤k<16·s1
=[7,12,17,22]第二轮运算·For(k=0;k<16;++k){A←B+((A+g2(B,C,D)+X[ρ2(k)]+T[16×1十k+1])<<<s2[k mod 4])(A,B,C,D)←(A,B,C,D)>>>32}·g2(B,C,D)=(B&D)|(C&D)·ρ2(k)=(1+5k)mod 16,0≤k<16·s2
=[5,9,14,20]第三轮运算·For(k=0;k<16;++k){A←B+((A+g3(B,C,D)+X[ρ3(k)1+T[16×2+K+1])<<<s3[k mod 4])(A,B,C,D)←(A,B,C,D)>>>32}·g3(B,C,D)=BCD·ρ3(k)=(5+3k)nod 16,(0≤k<16·s3
=[4,11,16,23]第四轮运算·For(k=0;k<16;++k){A←B+((A+g4(B,C,D)+X[ρ4(k)]+T[16×3+k+1])<<<s4[K mod 4])(A,B,C,D)←(A,B,C,D)>>>32}·g4(B,C,D)=C(B|D)·ρ4(k)=7k mod 16,0≤k<16·s4
=[6,10,15,21]
CV0=IVCVq+1=SUM32(CVq,RFI[Yq,RFH[Yq,RFG[Yq,RFF[Yq,CVq]]]])MD=CVL其中IV=ABCD的初始值(见步骤3)Yq=消息的第q个512位数据块L =消息中数据块数;CVq =链接变量,用于第q个数据块的处理RFx =使用基本逻辑函数x的一轮功能函数。
MD=最终消息摘要结果SUM32=分别按32位字计算的模232加法结果。
4、输出消息摘要MD=CVL它使用56位密钥对64位的数据块进行加密,并对64bits的数据块进行16轮编码。与每轮编码时,一个48bits的“每轮”密钥值由56bits的完整密钥得出来。由于密钥长度相对比较短,我们采用三重DES。加密成为三步,每一步的密钥都不一样,相当于168Bits的以密钥效果。
令i表示迭代次数,表示逐位模2求和,f为加密函数。DES的加密和解密过程表示如下。
L0R0←IP(<64bit输入码>)Li←Ri-1i=1,2,Λ,16Ri←Li-1f(Ri-1,Ki) i=1,2,Λ,16<64bit密文>←IP-1(R16L16)R16L16←IP(<64bit密文>)Ri-1←Lii=16,15,Λ,1Li←Ri-1f(Ri-1,ki) i=16,15,Λ,1<64bit明文>←IP-1(R0L0)消息提取算法整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的信息摘要。如果在以后传播这个文件的过程中,无论文件的内容发生了任何形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要对这个文件重新计算消息摘要时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。
权利要求
1.税控设备软件版本智能升级加密验证方法,其特征是采用下述步骤(1)采用DES对称加密算法,对于待升级的可执行程序和软件版本进行加密。DES算法以及密钥保存在程序发布端和税控机端;(2)采用MD5等散列函数,对于加密后的文件进行消息映射提取,得到验证码。这个散列函数,同时保存在程序发布端和税控机端;(3)采用MD5等散列函数,对于加密后的文件、待升级的机器编号、待升级税控机的软件版本差异、以及程序发布端产生的1字节随机数进行消息映射提取,产生验证码,进行验证。即提取得到验证码。这个散列函数,同时保存在程序发布端和税控机端。验证码,并加上1字节随机数形成5字节验证码,通过升级工作人员携带;(4)升级验证过程中,首先由税控机端使用与程序发布端相同的散列函数对已经加密的分发的程序进行消息映射提取。并将生成的验证码与USB或者网络媒介发布的验证码进行比较。如果两者不一致,则验证失败,表明程序在分发途中遇到篡改,退出升级。(5)由税控机端使用与程序发布端相同的散列函数对已经加密的分发的程序加上本机的机器编号、现有软件版本与待升级的软件版本的差异值、以及程序发布端产生的随机数(即升级人员所携带的第5字节的验证码),进行消息映射提取;如果两者不一致,则验证失败,表明程序与待升级的税控机并不对应,退出升级;(6)税控机将加密的程序分块读取,并用密钥解密。第一块内容包含了软件的版本信息,可以由税控机产生提示信息,由用户确认;(7)税控机将加密的程序分块读取解密,并逐块覆盖原有的可执行程序文件,完成升级过程。
2.根据权利要求1所述的税控设备软件版本智能升级加密验证方法,其特征是减少计算量和节省空间,采用分块加密的方法;经过加密产生的文件通过USB、网络等媒介发布。
3.根据权利要求1所述的税控设备软件版本智能升级加密验证方法,其特征是采用MD5等散列函数,对于加密后的文件、待升级的机器编号、待升级税控机的软件版本差异、以及程序发布端产生的1字节随机数进行消息映射提取,得到16字节的验证码。这个散列函数,同时保存在程序发布端和税控机端。将16字节验证码分4组异或产生4字节的验证码,并加上1字节随机数形成5字节验证码,通过升级工作人员携带。
4.根据权利要求1所述的税控设备软件版本智能升级加密验证方法,其特征是税控机将加密的程序分块读取,并用密钥解密;第一块内容包含了软件的版本信息,可以由税控机产生提示信息,由用户确认。
全文摘要
税控设备软件版本智能升级加密验证方法,采用下述步骤(1)采用DES对称加密算法,对于待升级的可执行程序和软件版本进行加密;(2)采用MD5等散列函数,对于加密后的文件进行消息映射提取,得到验证码;(3)采用MD5等散列函数,对于加密后的文件、待升级税控机的软件版本差异、以及程序发布端产生的1字节随机数进行消息映射提取,产生验证码,进行验证;(4)升级验证过程中,由税控机端使用与程序发布端相同的散列函数对已经加密的分发的程序进行消息映射提取,并将验证码与USB验证码进行比较;(5)由税控机端使用与程序发布端相同的散列函数的随机数进行消息映射提取;(6)税控机将加密的程序分块读取,并用密钥解密。
文档编号G06F9/445GK1949235SQ20061003982
公开日2007年4月18日 申请日期2006年4月24日 优先权日2006年4月24日
发明者王平, 朱海伟, 冯常伟 申请人:南京熊猫电子股份有限公司, 南京熊猫机电仪技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1