CN111552497B - 一种硬件钱包的固件更新方法及*** - Google Patents
一种硬件钱包的固件更新方法及*** Download PDFInfo
- Publication number
- CN111552497B CN111552497B CN202010397854.3A CN202010397854A CN111552497B CN 111552497 B CN111552497 B CN 111552497B CN 202010397854 A CN202010397854 A CN 202010397854A CN 111552497 B CN111552497 B CN 111552497B
- Authority
- CN
- China
- Prior art keywords
- script
- firmware
- hardware wallet
- upper computer
- ciphertext
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0435—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开一种硬件钱包的固件更新方法及***,该方法包括:上位机判断硬件钱包的模式为虚拟机模式则从服务器中获取第一切换脚本密文加密结果并发送给硬件钱包进行解密得到第一切换脚本,硬件钱包通过运行第一切换脚本将虚拟机模式切换为固件更新引导模式,断电并重启;上位机判断硬件钱包的模式为固件更新引导模式则从服务器中获取固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果并转发给硬件钱包进行解密得到图片脚本、固件脚本和第二切换脚本,根据图片脚本显示相应内容,运行固件脚本进行固件更新,通过运行第二切换脚本将固件更新引导模式切换为虚拟机模式,断电并重启。本发明技术方案提高固件更新的安全性。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种硬件钱包的固件更新方法及***。
背景技术
固件是一般存储于设备中的电可擦除只读存储器EEPROM(ElectricallyErasable Programmable ROM)或FLASH芯片的程序。为完善设备功能、增强设备稳定性、修补设备漏洞等,需要对设备中的固件进行更新。现有固件更新技术中,硬件钱包从服务器下载固件的明文数据后直接进行安装,存在安全隐患。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种硬件钱包的固件更新方法及***。
本发明提供了一种硬件钱包的固件更新方法,包括:
步骤S1:当上位机接收到用户触发固件更新信息时,检测是否有硬件钱包连接,当检测到有硬件钱包连接时执行步骤S2;
步骤S2:所述上位机从硬件钱包中获取模式状态信息;
步骤S3:所述上位机根据所述模式状态信息判断硬件钱包的模式是否为虚拟机模式或固件更新引导模式,如为虚拟机模式则执行步骤S4;如为固件更新引导模式则执行步骤S8;
步骤S4:所述上位机请求服务器对所述硬件钱包的身份进行验证,同时请求所述硬件钱包对所述服务器的身份进行验证,如均验证成功则所述服务器与所述硬件钱包通过所述上位机协商会话密钥并缓存,执行步骤S5,否则报错,结束;
步骤S5:所述上位机从所述服务器中获取最新的固件版本号并从所述硬件钱包中获取固件版本号,判断从所述服务器中获取的最新版本号是否大于从所述硬件钱包中获取的固件版本号,是则执行步骤S6,否则报错,结束;
步骤S6:所述上位机从所述服务器中获取经过会话密钥加密的第一切换脚本密文加密结果并发送给所述硬件钱包,提示用户在所述硬件钱包上进行确认;
步骤S7:所述硬件钱包提示用户确认是否进入固件更新引导模式,当接收到用户的确认信息时给所述上位机返回确认信息,依次使用缓存的所述会话密钥和预置的对称密钥解密第一切换脚本密文加密结果得到第一切换脚本,通过运行所述第一切换脚本将虚拟机模式切换为固件更新引导模式,自动断电并重启;
步骤S8:所述上位机请求所述服务器对所述硬件钱包的身份进行验证,同时请求所述硬件钱包对所述服务器的身份进行验证,如均验证成功则所述服务器与所述硬件钱包通过所述上位机协商会话密钥并缓存,执行步骤S9,否则报错,结束;
步骤S9:所述上位机从所述服务器中获取经过所述会话密钥加密最新版本的固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果并转发给所述硬件钱包;所述硬件钱包分别依次使用缓存的所述会话密钥和预置的对称密钥解密所述图片脚本密文加密结果和所述固件脚本密文加密结果得到图片脚本和固件脚本,根据所述图片脚本显示相应内容;
步骤S10:所述硬件钱包运行所述固件脚本并判断固件更新是否成功,是则依次使用所述会话密钥和所述对称密钥解密所述第二切换脚本密文加密结果得到第二切换脚本,通过运行所述第二切换脚本将固件更新引导模式切换为虚拟机模式,给所述上位机返回更新成功信息,断电并重启,否则给所述上位机返回更新失败信息。
进一步地,所述步骤S3与所述步骤S8之间还包括:
步骤Y0:所述上位机从所述硬件钱包中获取固件更新引导模式状态信息;
步骤Y1:所述上位机根据所述固件更新引导模式状态信息更新显示信息,并提示用户进行确认,当接收到确认信息时,判断所述固件更新引导模式状态信息的类型,如为第一信息则执行步骤Y2,如为第二信息则执行步骤S5;如为第三信息则结束;
步骤Y2:所述上位机从所述服务器中获取经过会话密钥加密的第二切换脚本密文加密结果并转发给所述硬件钱包;
步骤Y3:所述硬件钱包依次使用所述会话密钥和对称密钥解密第二切换脚本密文加密结果得到第二切换脚本,通过运行所述第二切换脚本将固件更新引导模式切换为虚拟机模式,给所述上位机返回切换成功信息,断电并重启。
进一步地,所述步骤S2具体为:
步骤S21:所述上位机给所述硬件钱包发送选择指令;
步骤S22:所述硬件钱包给所述上位机返回模式状态信息。
进一步地,所述步骤Y0具体为:
步骤Y01:所述上位机给所述硬件钱包发送获取固件更新引导模式状态信息指令;
步骤Y02:所述硬件钱包给所述上位机返回固件更新引导模式状态信息。
进一步地,所述上位机请求服务器对是硬件钱包的身份进行验证,同时请求所述硬件钱包对所述服务器的身份进行验证,包括:
所述上位机从所述硬件钱包中获取硬件钱包证书,并将所述硬件钱包证书发送给所述服务器,所述服务器判断接收到的所述硬件钱包证书是否与保存的硬件钱包证书匹配,是则服务器对硬件钱包的身份验证成功,否则验证失败;
所述上位机从所述服务器中获取服务器证书,并将所述服务器证书发送给所述硬件钱包,所述硬件钱包判断接收到的所述服务器证书是否与预先保存的服务器证书匹配,是则硬件钱包对服务器的身份验证成功,否则验证失败。
进一步地,所述步骤S5包括:
步骤S5-1:所述上位机从所述服务器中获取最新的固件版本号;从所述硬件钱包中获取固件版本号;
步骤S5-2:所述上位机判断从所述服务器中获取的最新的固件版本号是否大于从所述硬件钱包中获取的固件版本号,是则执行步骤S6,否则提示用户无需进行固件更新,结束。
进一步地,所述步骤S5与所述步骤S6之间还包括:
步骤D:所述上位机提示用户有新固件版本存在,并显示新固件版本的详细信息,并询问用户是否继续进行固件更新,当接收到用户的确认触发信息时执行步骤S6;当接收到用户的取消触发信息时则结束。
进一步地,所述步骤S6包括:
步骤S6-1:所述上位机向所述服务器发送获取第一切换脚本的请求;
步骤S6-2:所述服务器使用所述会话密钥对保存的第一切换脚本密文进行加密得到第一切换脚本密文加密结果并发送给所述上位机;
步骤S6-3:所述上位机缓存第一切换脚本密文加密结果,提示用户在硬件钱包上进行确认并给所述硬件钱包发送包含第一切换脚本密文加密结果的指令。
进一步地,所述步骤S7具体为:
所述硬件钱包接收包含第一切换脚本密文加密结果的指令并提示用户确认是否进入固件更新引导模式,当接收到用户的触发信息时,判断触发信息的类型,如为确认键则给所述上位机返回确认信息,使用所述会话密钥对指令中的所述第一切换脚本密文加密结果进行解密得到第一切换脚本密文,使用所述对称密钥解密所述第一切换脚本密文得到第一切换脚本,通过运行所述第一切换脚本将虚拟机模式切换为固件更新引导模式,硬件钱包自动断电并重启;如为取消键则给上位机返回取消信息,执行步骤S8。
进一步地,所述步骤S7之后还包括:
步骤E:所述上位机判断是否超时,是则返回步骤D,否则所述上位机提示所述硬件钱包进入固件更新引导模式,结束。
进一步地,所述上位机提示所述硬件钱包进入固件更新引导模式,包括:
步骤T1:所述上位机判断接收到的所述硬件钱包返回的触发信息的类型,如为确认信息则执行步骤T2,如为取消信息则返回步骤D;
步骤T2:所述上位机提示已进入固件更新引导模式,结束。
进一步地,所述步骤Y3包括:
步骤Y31:所述上位机向所述服务器发送获取第二切换脚本的请求;
步骤Y32:所述服务器使用所述会话密钥对保存的第二切换脚本密文进行加密得到第二切换脚本密文加密结果,并将所述第二切换脚本密文加密结果发送给所述上位机;
步骤Y33:所述上位机将所述第二切换脚本密文加密结果发送给所述硬件钱包的固件引导程序。
进一步地,所述步骤S1包括:当上位机接收到用户触发固件更新信息时,开启枚举线程,通过枚举线程检测是否有硬件钱包连接,当检测到有硬件钱包连接时挂起枚举线程,执行步骤S2。
进一步地,所述步骤S9包括:
步骤B1:所述上位机向所述服务器发送获取最新版本的固件脚本的请求;
步骤B2:所述服务器使用会话密钥对最新版本的固件脚本密文、第二切换脚本密文和图片脚本密文进行加密得到固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文,并将固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果发送给所述上位机;
步骤B3:所述上位机将所述第二切换脚本密文加密结果、所述固件脚本密文加密结果和所述图片脚本密文加密结果发送给所述硬件钱包;所述硬件钱包使用所述会话密钥分别对固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文进行解密得到固件脚本密文、第二切换脚本密文和图片脚本密文,使用保存的对称密钥对分别对固件脚本密文、第二切换脚本密文和图片脚本密文进行解密得到固件脚本、第二切换脚本和图片脚本,根据所述图片脚本显示相应内容。
进一步地,所述步骤Y3中还包括:读取配置区中的PIN码和对称密钥并保存;
所述步骤B3包括:
步骤B301:所述上位机将包含所述图片脚本密文加密结果的命令发送给所述硬件钱包;
步骤B302:所述硬件钱包接收所述包含图片脚本密文加密结果的命令,使用所述会话密钥解密所述图片脚本密文加密结果得到图片脚本密文,使用所述对称密钥解密图片脚本密文得到图片脚本,根据图片脚本确定是要显示数据域中的内容,并根据坐标及长度将确定的所述内容显示在所述硬件钱包的屏幕上,给所述上位机返回显示成功信息;
步骤B303:所述上位机给所述硬件钱包发送固件脚本的第一条APDU指令;
步骤B304:所述硬件钱包接收到APDU指令后设置所述固件更新引导模式状态信息为第二信息;
步骤B305:所述硬件钱包检查APDU指令的格式是否符合要求,是则执行步骤B306,否则给所述上位机返回错误信息;
步骤B306:所述硬件钱包判断接收到的APDU指令的类型,如为第一条APDU指令则执行步骤B307,如为最后一条APDU指令则执行步骤B309,如为其他则执行步骤B308;
步骤B307:所述硬件钱包使用所述会话密钥解密APDU指令中的数据域密文得到第一解密结果,再使用所述对称密钥解密所述第一解密结果得到固件哈希值并缓存,给所述上位机返回成功信息,执行步骤B310;
步骤B308:所述硬件钱包使用会话密钥解密APDU指令中的数据域密文得到固件脚本密文,再使用所述对称密钥解密所述固件脚本密文得到固件脚本并缓存,给所述上位机返回成功信息,执行步骤B310;
步骤B309:所述硬件钱包对缓存中的固件脚本进行哈希运算得到哈希结果,并判断计算得到的哈希结果与缓存的固件哈希值是否一致,是则设置所述固件更新引导模式状态信息为第三信息,给所述上位机返回成功信息,执行步骤B310,否则给所述上位机返回失败信息;
步骤B310:当所述上位机接收到所述硬件钱包返回的成功信息时,判断固件脚本是否全部发送完成,是则执行步骤B312,否则执行步骤B311;
步骤B311:所述上位机判断固件脚本是否只剩最后一条APDU指令,是则所述上位机给硬件钱包发送固件脚本的最后一条APDU,执行步骤B305,否则所述上位机给硬件钱包发送固件脚本的下一条APDU指令,返回步骤B305;
步骤B312:所述上位机给所述硬件钱包发送所述第二切换脚本密文加密结果。
进一步地,所述步骤S10包括:
步骤S101:所述硬件钱包通过运行所述固件脚本更新虚拟机,提示用户不要断开连接并通过显示屏显示更新进度,判断固件更新是否成功,是则执行步骤S102,否则提示更新失败信息并给所述上位机返回更新错误信息;
步骤S102:所述硬件钱包使用所述会话密钥解密所述第二切换脚本密文加密结果得到第二切换结果密文,使用所述对称密钥解密所述第二切换脚本密文得到第二切换脚本,通过运行所述第二切换脚本,并将固件更新引导模式切换为虚拟机模式,给所述上位机返回更新成功信息,所述硬件钱包断电并重启。
进一步地,所述判断固件更新是否成功包括:所述硬件钱包判断显示屏显示的更新进度与所述图片脚本是否匹配,是则固件更新成功,否则固件更新失败。
进一步地,所述步骤S10之后还包括:
步骤C:所述上位机接收并判断所述硬件钱包返回的信息类型,如为更新成功信息则提示固件更新成功,如为更新失败信息则报错,结束。
进一步地,所述固件为虚拟机脚本,所述步骤C之前还包括:所述上位机从所述硬件钱包中获取应用程序编号和应用程序的版本号;所述上位机从所述服务器中获取应用程序的最新版本号;所述上位机判断从所述服务器中获取的应用程序的最新版本号是否大于从所述硬件钱包中获取的应用程序的版本号,是则执行步骤C,否则报错,结束。
进一步地,所述步骤C中提示固件更新成功之后还包括:
步骤A1:所述上位机判断是否保存有所述应用程序编号,是则读取保存的应用程序编号,执行步骤A3,否则执行步骤A2;
步骤A2:所述上位机跳转到下载界面,提示用户下载应用程序,结束;
步骤A3:所述上位机对所述硬件钱包的身份进行验证,如验证成功则执行步骤A4,否则报错,结束;
步骤A4:所述上位机将包括所述应用程序编号的获取应用程序请求发送给所述服务器;
步骤A5:所述服务器给所述上位机返回对应所述应用程序编号的最新版本的应用程序脚本;
步骤A6:所述上位机将应用程序脚本发送给所述硬件钱包,并显示应用程序安装进度;
步骤A7:所述硬件钱包通过运行应用程序脚本安装应用程序,并判断应用程序是否安装成功,是则执行步骤A8,否则执行步骤A9;
步骤A8:所述硬件钱包开始正常工作,并给所述上位机返回应用程序安装成功信息,执行步骤A10;
步骤A9:所述硬件钱包报错,并给所述上位机返回安装失败信息,执行步骤A10;
步骤A10:所述上位机根据接收到的信息判断硬件钱包安装应用程序是否成功,是则提示硬件钱包更新应用程序成功,删除上位机保存的应用程序编号和应用程序的版本号,结束;否则提示硬件钱包更新应用程序失败,结束。
进一步地,所述步骤A3包括:所述上位机从所述硬件钱包中获取硬件钱包证书,并将所述硬件钱包证书发送给所述服务器,所述服务器判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则验证成功,给上位机返回验证成功信息,否则验证失败,给上位机返回验证失败信息,结束。
本发明又提供了一种硬件钱包的固件更新***,包括上位机、服务器和硬件钱包,所述上位机包括:
第一接收检测模块,用于接收用户触发固件更新信息时,当接收到用户触发固件更新信息是检测是否有硬件钱包连接,当检测到有硬件钱包连接时触发第一获取模块;
所述第一获取模块,用于从硬件钱包中获取模式状态信息;
第一判断模块,用于根据所述模式状态信息判断硬件钱包的模式是否为虚拟机模式或固件更新引导模式,如为虚拟机模式则触发第一请求验证模块;如为固件更新引导模式则触发第二请求验证模块;
所述第一请求验证模块,用于请求服务器对所述硬件钱包的身份进行验证,同时请求所述硬件钱包对所述服务器的身份进行验证,如均验证成功则所述服务器与所述硬件钱包通过所述上位机协商会话密钥并缓存,触发第一获取判断模块,否则报错,结束;
所述第一获取判断模块,用于从所述服务器中获取最新的固件版本号并从所述硬件钱包中获取固件版本号,判断从所述服务器中获取的最新版本号是否大于从所述硬件钱包中获取的固件版本号,是则触发第一获取发送提示模块,否则报错,结束;
所述第一获取发送提示模块,用于从所述服务器中获取经过会话密钥加密的第一切换脚本密文加密结果并发送给所述硬件钱包,提示用户在所述硬件钱包上进行确认;
所述第二请求验证模块,用于请求所述服务器对所述硬件钱包的身份进行验证,同时请求所述硬件钱包对所述服务器的身份进行验证,如均验证成功则所述服务器与所述硬件钱包通过所述上位机协商会话密钥并缓存,触发第二获取发送模块,否则报错,结束;
所述第二获取发送模块,用于从所述服务器中获取经过所述会话密钥加密最新版本的固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果并转发给所述硬件钱包;
所述硬件钱包包括:
接收提示返回模块,用于接收所述上位机发送的第一切换脚本密文加密结果,并提示用户确认是否进入固件更新引导模式,当接收到用户的确认信息时给所述上位机返回确认信息;
第一解密切换模块,用于依次使用缓存的所述会话密钥和预置的对称密钥解密第一切换脚本密文加密结果得到第一切换脚本,通过运行所述第一切换脚本将虚拟机模式切换为固件更新引导模式,自动断电并重启;
接收解密显示模块,用于接收所述上位机发送的固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果,分别依次使用缓存的所述会话密钥和预置的对称密钥解密所述图片脚本密文加密结果和所述固件脚本密文加密结果得到图片脚本和固件脚本,根据所述图片脚本显示相应内容;
第一运行判断模块,用于运行所述接收解密显示模块解密得到的固件脚本并判断固件更新是否成功,是则触发第二解密切换模块,否则给所述上位机返回更新失败信息;
所述第二解密切换模块,用于依次使用所述会话密钥和所述对称密钥解密所述第二切换脚本密文加密结果得到第二切换脚本,通过运行所述第二切换脚本将固件更新引导模式切换为虚拟机模式,给所述上位机返回更新成功信息,断电并重启。
进一步地,所述上位机还包括:
第二获取模块,用于当所述第一判断模块判断硬件钱包的模式为固件更新引导模式时从所述硬件钱包中获取固件更新引导模式状态信息;
显示提示模块,用于根据所述固件更新引导模式状态信息更新显示信息,并提示用户进行确认,当接收到确认信息时,判断所述固件更新引导模式状态信息的类型,如为第一信息则触发第三获取发送模块,如为第二信息则触发所述第二请求验证模块;如为第三信息则结束;
所述第三获取发送模块,用于从所述服务器中获取经过会话密钥加密的第二切换脚本密文加密结果并转发给所述硬件钱包;
所述硬件钱包还包括:
接收解密运行模块,用于接收所述上位机发送的第二切换脚本密文加密结果,依次使用所述会话密钥和对称密钥解密第二切换脚本密文加密结果得到第二切换脚本,通过运行所述第二切换脚本将固件更新引导模式切换为虚拟机模式,给所述上位机返回切换成功信息,断电并重启。
进一步地,所述第一获取模块具体用于给所述硬件钱包发送选择指令;
所述硬件钱包还包括:
第一接收返回模块,用于接收所述上位机发送的选择指令并给所述上位机返回模式状态信息。
进一步地,所述第二获取模块具体用于当所述第一判断模块判断硬件钱包的模式为固件更新引导模式时给所述硬件钱包发送获取固件更新引导模式状态信息指令;
所述硬件钱包还包括:
第二接收返回模块,用于接收所述上位机发送的获取固件更新引导模式状态信息指令并给所述上位机返回固件更新引导模式状态信息。
进一步地,所述第一请求验证模块,包括:
第一获取发送子模块,用于从所述硬件钱包中获取硬件钱包证书,并将所述硬件钱包证书发送给所述服务器;
第二获取发送子模块,用于从所述服务器中获取服务器证书,并将所述服务器证书发送给所述硬件钱包;
所述服务器包括:
第一验证模块,用于判断接收到的所述硬件钱包证书是否与保存的硬件钱包证书匹配,是则服务器对硬件钱包的身份验证成功,触发第一协商模块,否则验证失败;
所述第一协商模块,用于根据所述硬件钱包证书生成会话密钥并缓存;
所述硬件钱包还包括:
第二验证模块,用于判断接收到的所述服务器证书是否与预先保存的服务器证书匹配,是则硬件钱包对服务器的身份验证成功,触发第二协商模块,否则验证失败;
所述第二协商模块,用于根据所述服务器证书生成会话密钥并缓存;
所述第二请求验证模块,包括:
第三获取发送子模块,用于从所述硬件钱包中获取硬件钱包证书,并将所述硬件钱包证书发送给所述服务器;
第四获取发送子模块,用于从服务器中获取服务器证书,并将所述服务器证书发送给所述硬件钱包;
所述服务器包括:
第三验证模块,用于判断接收到的所述硬件钱包证书是否与保存的硬件钱包证书匹配,是则服务器对硬件钱包的身份验证成功,触发第三协商模块,否则验证失败;
所述第三协商模块,用于根据所述硬件钱包证书生成会话密钥并缓存;
所述硬件钱包还包括:第四验证模块,用于判断接收到的所述服务器证书是否与预先保存的服务器证书匹配,是则硬件钱包对服务器的身份验证成功,触发第四协商模块,否则验证失败;
所述第四协商模块,用于根据所述服务器证书生成会话密钥并缓存。
进一步地,所述第一获取判断模块,包括:
第一获取子模块,用于从所述服务器中获取最新的固件版本号;还用于从所述硬件钱包中获取固件版本号;
第一判断子模块,用于判断从所述服务器中获取的最新的固件版本号是否大于从所述硬件钱包中获取的固件版本号,是则触发第一获取发送提示模块,否则提示用户无需进行固件更新,结束。
进一步地,所述上位机还包括:
提示询问接收模块,用于当所述第一获取判断模块判断为是时提示用户有新固件版本存在,并显示新固件版本的详细信息,并询问用户是否继续进行固件更新,当接收到用户的确认触发信息时触发第一获取发送提示模块;当接收到用户的取消触发信息时则结束。
进一步地,所述第一获取发送提示模块包括:
第一发送子模块,用于向所述服务器发送获取第一切换脚本的请求;
缓存提示发送子模块,用于接收并缓存所述服务器发送的第一切换脚本密文加密结果,提示用户在硬件钱包上进行确认并给所述硬件钱包发送包含第一切换脚本密文加密结果的指令;
所述服务器包括:第一加密发送模块,用于使用所述会话密钥对保存的第一切换脚本密文进行加密得到第一切换脚本密文加密结果并发送给所述上位机。
进一步地,所述接收提示返回模块,具体用于接收包含第一切换脚本密文加密结果的指令并提示用户确认是否进入固件更新引导模式,当接收到用户的触发信息时,判断触发信息的类型,如为确认键则给所述上位机返回确认信息;
所述第一解密切换模块,具体用于使用所述会话密钥对指令中的所述第一切换脚本密文加密结果进行解密得到第一切换脚本密文,使用所述对称密钥解密所述第一切换脚本密文得到第一切换脚本,通过运行所述第一切换脚本将虚拟机模式切换为固件更新引导模式,硬件钱包自动断电并重启;如为取消键则给上位机返回取消信息。
进一步地,所述上位机还包括:
第二判断模块,用于接收到所述硬件钱包返回的确认信息时判断是否超时,是则触发提示询问接收模块,否则触发第一提示模块;
所述第一提示模块,用于提示所述硬件钱包进入固件更新引导模式。
进一步地,所述第一提示模块,包括:
第三判断子模块,用于判断接收到的所述硬件钱包返回的触发信息的类型,如为确认信息则触发第一提示子模块,如为取消信息则触发提示询问接收模块;
所述第一提示子模块,用于提示已进入固件更新引导模式。
进一步地,所述第二获取发送模块包括:
第三发送子模块,用于向所述服务器发送获取第二切换脚本的请求;
第一接收发送子模块,用于接收所述服务器发送的所述第二切换脚本密文加密结果并将所述第二切换脚本密文加密结果发送给所述硬件钱包的固件引导程序;
所述服务器还包括:第三接收加密发送模块,用于接收所述上位机发送的获取第二切换脚本的请求,使用所述会话密钥对保存的第二切换脚本密文进行加密得到第二切换脚本密文加密结果,并将所述第二切换脚本密文加密结果发送给所述上位机。
进一步地,第一接收检测模块,具体用于接收用户触发固件更新信息时,开启枚举线程,通过枚举线程检测是否有硬件钱包连接,当检测到有硬件钱包连接时挂起枚举线程,触发第一获取模块。
进一步地,所述第二获取发送模块包括:
第四发送子模块,用于向所述服务器发送获取最新版本的固件脚本的请求;
第二接收发送子模块,用于接收所述服务器发送的所述第二切换脚本密文加密结果、所述固件脚本密文加密结果和所述图片脚本密文加密结果,并将所述第二切换脚本密文加密结果、所述固件脚本密文加密结果和所述图片脚本密文加密结果发送给所述硬件钱包;
所述服务器包括:第四接收加密发送模块,用于接收所述上位机发送的获取最新版本的固件脚本的请求,使用会话密钥对最新版本的固件脚本密文、第二切换脚本密文和图片脚本密文进行加密得到固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文,并将固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果发送给所述上位机;
所述接收解密显示模块,具体用于使用所述会话密钥分别对固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文进行解密得到固件脚本密文、第二切换脚本密文和图片脚本密文,使用保存的对称密钥对分别对固件脚本密文、第二切换脚本密文和图片脚本密文进行解密得到固件脚本、第二切换脚本和图片脚本,根据所述图片脚本显示相应内容。
进一步地,所述接收解密运行模块还用于读取配置区中的PIN码和对称密钥并保存;
所述第二接收发送子模块包括:第一接收单元、第一发送单元、第二发送单元、接收判断单元、判断返回单元、第三发送单元;
所述接收解密显示模块包括:接收解密显示单元、接收设置单元、第一检查单元、第一判断单元、第一解密返回单元、第二解密返回单元、计算判断单元;
所述第一接收单元,用于接收所述服务器发送的所述第二切换脚本密文加密结果、所述固件脚本密文加密结果和所述图片脚本密文加密结果;
所述第一发送单元,用于将包含所述图片脚本密文加密结果的命令发送给所述硬件钱包;
所述接收解密显示单元,用于接收所述包含图片脚本密文加密结果的命令,使用所述会话密钥解密所述图片脚本密文加密结果得到图片脚本密文,使用所述对称密钥解密图片脚本密文得到图片脚本,根据图片脚本确定是要显示数据域中的内容,并根据坐标及长度将确定的所述内容显示在所述硬件钱包的屏幕上,给所述上位机返回显示成功信息;
所述第二发送单元,用于给所述硬件钱包发送固件脚本的第一条APDU指令;
所述接收设置单元,用于接收到APDU指令后设置所述固件更新引导模式状态信息为第二信息;
所述第一检查单元,用于检查APDU指令的格式是否符合要求,是则触发所述第一判断单元,否则给所述上位机返回错误信息;
所述第一判断单元,用于判断接收到的APDU指令的类型,如为第一条APDU指令则触发所述第一解密返回单元,如为最后一条APDU指令则触发所述计算判断单元,如为其他则触发所述第二解密返回单元;
所述第一解密返回单元,用于使用所述会话密钥解密APDU指令中的数据域密文得到第一解密结果,再使用所述对称密钥解密所述第一解密结果得到固件哈希值并缓存,给所述上位机返回成功信息;
所述第二解密返回单元,用于使用会话密钥解密APDU指令中的数据域密文得到固件脚本密文,再使用所述对称密钥解密所述固件脚本密文得到固件脚本并缓存,给所述上位机返回成功信息;
所述计算判断单元,用于对缓存中的固件脚本进行哈希运算得到哈希结果,并判断计算得到的哈希结果与缓存的固件哈希值是否一致,是则设置所述固件更新引导模式状态信息为第三信息,给所述上位机返回成功信息,否则给所述上位机返回失败信息;
所述接收判断单元,用于当接收到所述硬件钱包返回的成功信息时,判断固件脚本是否全部发送完成,是则执行步骤B312,否则触发所述判断返回单元;
所述判断返回单元,用于判断固件脚本是否只剩最后一条APDU指令,是则所述上位机给硬件钱包发送固件脚本的最后一条APDU,触发所述第一检查单元,否则所述上位机给硬件钱包发送固件脚本的下一条APDU指令,触发所述第一检查单元;
所述第三发送单元,用于给所述硬件钱包发送所述第二切换脚本密文加密结果。
进一步地,所述第一运行判断模块,具体用于通过运所述接收解密显示模块解密得到的固件脚本更新虚拟机,提示用户不要断开连接并通过显示屏显示更新进度,判断固件更新是否成功,是则触发第二解密切换模块,否则提示更新失败信息并给所述上位机返回更新错误信息;
所述第二解密切换模块,具体用于使用所述会话密钥解密所述第二切换脚本密文加密结果得到第二切换结果密文,使用所述对称密钥解密所述第二切换脚本密文得到第二切换脚本,通过运行所述第二切换脚本,并将固件更新引导模式切换为虚拟机模式,给所述上位机返回更新成功信息,所述硬件钱包断电并重启。
进一步地,所述第一运行判断模块中的所述判断固件更新是否成功包括:判断显示屏显示的更新进度与所述图片脚本是否匹配,是则固件更新成功,否则固件更新失败。
进一步地,所述上位机还包括:
接收判断提示模块,用于接收并判断所述硬件钱包返回的信息类型,如为更新成功信息则提示固件更新成功,如为更新失败信息则报错,结束。
进一步地,所述固件为虚拟机脚本,所述上位机还包括:第三获取判断模块,用于从所述硬件钱包中获取应用程序编号和应用程序的版本号;从所述服务器中获取应用程序的最新版本号;判断从所述服务器中获取的应用程序的最新版本号是否大于从所述硬件钱包中获取的应用程序的版本号,是则触发所述接收判断提示模块,否则报错,结束。
进一步地,所述上位机还包括:判断读取模块、跳转提示模块、身份验证模块、第五发送模块、接收发送显示模块、判断提示删除模块;所述服务器包括第三接收返回模块;所述硬件钱包还包括第三运行判断模块、工作返回模块和报错返回模块;
所述判断读取模块,用于判断是否保存有所述应用程序编号,是则读取保存的应用程序编号,触发身份验证模块,否则触发跳转提示模块;
所述跳转提示模块,用于跳转到下载界面,提示用户下载应用程序,结束;
所述身份验证模块,用于对所述硬件钱包的身份进行验证,如验证成功则触发第五发送模块,否则报错,结束;
所述第五发送模块,用于将包括所述应用程序编号的获取应用程序请求发送给所述服务器;
所述第三接收返回模块,用于接收获取应用程序请求并给所述上位机返回对应所述应用程序编号的最新版本的应用程序脚本;
所述接收发送显示模块,用于接收应用程勋脚本并将应用程序脚本发送给所述硬件钱包,显示应用程序安装进度;
所述第三运行判断模块,用于通过运行应用程序脚本安装应用程序,并判断应用程序是否安装成功,是则触发所述工作返回模块,否则触发所述报错返回模块;
所述工作返回模块,用于开始正常工作,并给所述上位机返回应用程序安装成功信息,触发所述判断提示删除模块;
所述报错返回模块,用于报错,并给所述上位机返回安装失败信息,触发所述判断提示删除模块;
所述判断提示删除模块,用于根据接收到的信息判断硬件钱包安装应用程序是否成功,是则提示硬件钱包更新应用程序成功,删除上位机保存的应用程序编号和应用程序的版本号,结束;否则提示硬件钱包更新应用程序失败,结束。
进一步地,所述身份验证模块具体用于从所述硬件钱包中获取硬件钱包证书,并将所述硬件钱包证书发送给所述服务器;
所述服务器还包括:第四判断返回模块,用于判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则验证成功,给上位机返回验证成功信息,否则验证失败,给上位机返回验证失败信息,结束。
本发明与现有技术相比,具有以下优点:
本发明技术方案厂商使用对称密钥对固件脚本进行加密后上传到服务器上,上位机请求服务器下载固件脚本时服务器使用会话密钥对固件脚本密文再次进行加密得到固件脚本密文加密结果然后下发给上位机,上位机将固件脚本密文加密结果并发送给硬件钱包,硬件钱包需要使用会话密钥和对称密钥对固件脚本密文加密结果进行二次解密后进行更新安装,提高固件更新的安全性,且在固件更新过程中,服务器和硬件钱包相互进行验证进一步提高固件更新的安全性。
附图说明
图1为本发明实施例一提供的一种硬件钱包的固件更新方法流程图;
图2和图3为本发明实施例二提供的一种硬件钱包的固件更新方法流程图;
图4为本发明实施例三提供的一种硬件钱包的固件更新***方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本实施例中,固件脚本、第一切换脚本、第二切换脚本和图片脚本均是厂商使用预置的对称密钥加密之后上传到服务器中的。硬件钱包与服务器之间相互验证身份成功后会协商会话密钥并缓存,当上位机请求下载脚本时服务器使用缓存的会话密钥对固件脚本、第一切换脚本、第二切换脚本、图片脚本进行加密之后再下载。即对称密钥为生产厂商在出厂前预置在硬件钱包中,会话密钥为硬件钱包与服务器通过供应商上位机协商生成的。
实施例一
本发明实施例一提供一种硬件钱包的固件更新方法,如图1所示,包括:
步骤S1:当上位机接收到用户触发固件更新信息时,检测是否有硬件钱包连接,当检测到有硬件钱包连接时执行步骤S2;
可选的,在本实施例中,步骤S1包括:当上位机接收到用户触发固件更新信息时,开启枚举线程,通过枚举线程检测是否有硬件钱包连接,当检测到有硬件钱包连接时挂起枚举线程,执行步骤S2。
步骤S2:上位机从硬件钱包中获取模式状态信息;
在本实施例中,步骤S2具体为:
步骤S21:上位机给硬件钱包发送选择指令;
步骤S22:硬件钱包给上位机返回模式状态信息。
步骤S3:上位机根据模式状态信息判断硬件钱包的模式,如为虚拟机模式则执行步骤S4;如为固件更新引导模式则执行步骤S8;
步骤S4:上位机请求服务器对硬件钱包的身份进行验证,同时请求硬件钱包对服务器的身份进行验证,如均验证成功则服务器与硬件钱包通过上位机协商会话密钥并缓存,执行步骤S5,否则报错,结束;
具体的,在本实施例中,上位机请求服务器对是硬件钱包的身份进行验证,同时请求硬件钱包对服务器的身份进行验证,包括:
上位机从硬件钱包中获取硬件钱包证书,并将硬件钱包证书发送给服务器,服务器判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则服务器对硬件钱包的身份验证成功,否则验证失败;
上位机从服务器中获取服务器证书,并将服务器证书发送给硬件钱包,硬件钱包判断接收到的服务器证书是否与预先保存的服务器证书匹配,是则硬件钱包对服务器的身份验证成功,否则验证失败。
步骤S5:上位机从服务器中获取最新的固件版本号并从硬件钱包中获取固件版本号,判断从服务器中获取的最新版本号是否大于从硬件钱包中获取的固件版本号,是则执行步骤S6,否则报错,结束;
具体的,在本实施例中,步骤S5包括:
步骤S5-1:上位机从服务器中获取最新的固件版本号;从硬件钱包中获取固件版本号;
步骤S5-2:上位机判断从服务器中获取的最新的固件版本号是否大于从硬件钱包中获取的固件版本号,是则执行步骤S6,否则提示用户无需进行固件更新,结束。
步骤S6:上位机从服务器中获取经过会话密钥加密的第一切换脚本密文加密结果并发送给硬件钱包,提示用户在硬件钱包上进行确认;
可选的,步骤S5与步骤S6之间还包括:
步骤D:上位机提示用户有新固件版本存在,并显示新固件版本的详细信息,并询问用户是否继续进行固件更新,当接收到用户的确认触发信息时执行步骤S6;当接收到用户的取消触发信息时则结束。
具体的,在本实例中,步骤S6包括:
步骤S6-1:上位机向服务器发送获取第一切换脚本的请求;
步骤S6-2:服务器使用会话密钥对保存的第一切换脚本密文进行加密得到第一切换脚本密文加密结果并发送给上位机;
步骤S6-3:上位机缓存第一切换脚本密文加密结果,提示用户在硬件钱包上进行确认并给硬件钱包发送包含第一切换脚本密文加密结果的指令。
步骤S7:硬件钱包提示用户确认是否进入固件更新引导模式,当接收到用户的确认信息时给上位机返回确认信息,依次使用缓存的会话密钥和预置的对称密钥解密第一切换脚本密文加密结果得到第一切换脚本,通过运行第一切换脚本将虚拟机模式切换为固件更新引导模式,自动断电并重启;
在本实施例中,步骤S7具体为:
硬件钱包接收包含第一切换脚本密文加密结果的指令并提示用户确认是否进入固件更新引导模式,当接收到用户的触发信息时,判断触发信息的类型,如为确认键则给上位机返回确认信息,使用会话密钥对指令中的第一切换脚本密文加密结果进行解密得到第一切换脚本密文,使用对称密钥解密第一切换脚本密文得到第一切换脚本,通过运行第一切换脚本将虚拟机模式切换为固件更新引导模式,硬件钱包自动断电并重启;如为取消键则给上位机返回取消信息,执行步骤S8。
可选的,本实施例的步骤S7之后还包括:
步骤E:上位机判断是否超时,是则返回步骤D,否则上位机提示硬件钱包进入固件更新引导模式,结束。
其中,上位机提示硬件钱包进入固件更新引导模式,包括:
步骤T1:上位机判断接收到的硬件钱包返回的触发信息的类型,如为确认信息则执行步骤T2,如为取消信息则返回步骤D;
步骤T2:上位机提示已进入固件更新引导模式,结束。
步骤S8:上位机请求服务器对硬件钱包的身份进行验证,同时请求硬件钱包对服务器的身份进行验证,如均验证成功则服务器与硬件钱包通过上位机协商会话密钥并缓存,执行步骤S9,否则报错,结束;
具体的,在本实施例中,上位机请求服务器对是硬件钱包的身份进行验证,同时请求硬件钱包对服务器的身份进行验证,包括:
上位机从硬件钱包中获取硬件钱包证书,并将硬件钱包证书发送给服务器,服务器判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则服务器对硬件钱包的身份验证成功,否则验证失败;
上位机从服务器中获取服务器证书,并将服务器证书发送给硬件钱包,硬件钱包判断接收到的服务器证书是否与预先保存的服务器证书匹配,是则硬件钱包对服务器的身份验证成功,否则验证失败。
步骤S9:上位机从服务器中获取经过会话密钥加密最新版本的固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果并转发给硬件钱包;硬件钱包分别依次使用缓存的会话密钥和预置的对称密钥解密图片脚本密文加密结果和固件脚本密文加密结果得到图片脚本和固件脚本,根据图片脚本显示相应内容;
具体的,在本实施例中,步骤S9包括:
步骤B1:上位机向服务器发送获取最新版本的固件脚本的请求;
步骤B2:服务器使用会话密钥对最新版本的固件脚本密文、第二切换脚本密文和图片脚本密文进行加密得到固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文,并将固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果发送给上位机;
步骤B3:上位机将第二切换脚本密文加密结果、固件脚本密文加密结果和图片脚本密文加密结果发送给硬件钱包;硬件钱包使用会话密钥分别对固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文进行解密得到固件脚本密文、第二切换脚本密文和图片脚本密文,使用保存的对称密钥对分别对固件脚本密文、第二切换脚本密文和图片脚本密文进行解密得到固件脚本、第二切换脚本和图片脚本,根据图片脚本显示相应内容。
步骤S10:硬件钱包运行固件脚本并判断固件更新是否成功,是则依次使用会话密钥和对称密钥解密第二切换脚本密文加密结果得到第二切换脚本,通过运行第二切换脚本将固件更新引导模式切换为虚拟机模式,给上位机返回更新成功信息,断电并重启,否则给上位机返回更新失败信息。
具体的,在本实施例中,步骤S10包括:
步骤S101:硬件钱包通过运行固件脚本更新虚拟机,提示用户不要断开连接并通过显示屏显示更新进度,判断固件更新是否成功,是则执行步骤S102,否则提示更新失败信息并给上位机返回更新错误信息;
步骤S102:硬件钱包使用会话密钥解密第二切换脚本密文加密结果得到第二切换结果密文,使用对称密钥解密第二切换脚本密文得到第二切换脚本,通过运行第二切换脚本,并将固件更新引导模式切换为虚拟机模式,给上位机返回更新成功信息,硬件钱包断电并重启。
可选的,判断固件更新是否成功包括:硬件钱包判断显示屏显示的更新进度与图片脚本是否匹配,是则固件更新成功,否则固件更新失败。
在本实施例中,步骤S3与步骤S8之间还包括:
步骤Y0:上位机从硬件钱包中获取固件更新引导模式状态信息;
可选的,本实施例中的步骤Y0具体为:
步骤Y01:上位机给硬件钱包发送获取固件更新引导模式状态信息指令;
步骤Y02:硬件钱包给上位机返回固件更新引导模式状态信息。
步骤Y1:上位机根据固件更新引导模式状态信息更新显示信息,并提示用户进行确认,当接收到确认信息时,判断固件更新引导模式状态信息的类型,如为第一信息则执行步骤Y2,如为第二信息则执行步骤S5;如为第三信息则结束;
步骤Y2:上位机从服务器中获取经过会话密钥加密的第二切换脚本密文加密结果并转发给硬件钱包;
步骤Y3:硬件钱包依次使用会话密钥和对称密钥解密第二切换脚本密文加密结果得到第二切换脚本,通过运行第二切换脚本将固件更新引导模式切换为虚拟机模式,给上位机返回切换成功信息,断电并重启。
具体的,在本实施例中,步骤Y3包括:
步骤Y31:上位机向服务器发送获取第二切换脚本的请求;
步骤Y32:服务器使用会话密钥对保存的第二切换脚本密文进行加密得到第二切换脚本密文加密结果,并将第二切换脚本密文加密结果发送给上位机;
步骤Y33:上位机将第二切换脚本密文加密结果发送给硬件钱包的固件引导程序。
可选的,本实施例中的步骤Y3中还包括:读取配置区中的PIN码和对称密钥并保存;
相应的,上述步骤B3包括:
步骤B301:上位机将包含图片脚本密文加密结果的命令发送给硬件钱包;
步骤B302:硬件钱包接收包含图片脚本密文加密结果的命令,使用会话密钥解密图片脚本密文加密结果得到图片脚本密文,使用对称密钥解密图片脚本密文得到图片脚本,根据图片脚本确定是要显示数据域中的内容,并根据坐标及长度将确定的内容显示在硬件钱包的屏幕上,给上位机返回显示成功信息;
步骤B303:上位机给硬件钱包发送固件脚本的第一条APDU指令;
步骤B304:硬件钱包接收到APDU指令后设置固件更新引导模式状态信息为第二信息;
步骤B305:硬件钱包检查APDU指令的格式是否符合要求,是则执行步骤B306,否则给上位机返回错误信息;
步骤B306:硬件钱包判断接收到的APDU指令的类型,如为第一条APDU指令则执行步骤B307,如为最后一条APDU指令则执行步骤B309,如为其他则执行步骤B308;
步骤B307:硬件钱包使用会话密钥解密APDU指令中的数据域密文得到第一解密结果,再使用对称密钥解密第一解密结果得到固件哈希值并缓存,给上位机返回成功信息,执行步骤B310;
步骤B308:硬件钱包使用会话密钥解密APDU指令中的数据域密文得到固件脚本密文,再使用对称密钥解密固件脚本密文得到固件脚本并缓存,给上位机返回成功信息,执行步骤B310;
步骤B309:硬件钱包对缓存中的固件脚本进行哈希运算得到哈希结果,并判断计算得到的哈希结果与缓存的固件哈希值是否一致,是则设置固件更新引导模式状态信息为第三信息,给上位机返回成功信息,执行步骤B310,否则给上位机返回失败信息;
步骤B310:当上位机接收到硬件钱包返回的成功信息时,判断固件脚本是否全部发送完成,是则执行步骤B312,否则执行步骤B311;
步骤B311:上位机判断固件脚本是否只剩最后一条APDU指令,是则上位机给硬件钱包发送固件脚本的最后一条APDU,执行步骤B305,否则上位机给硬件钱包发送固件脚本的下一条APDU指令,返回步骤B305;
步骤B312:上位机给硬件钱包发送第二切换脚本密文加密结果。
可选的,在本实施例中,步骤S10之后还包括:
步骤C:上位机接收并判断硬件钱包返回的信息类型,如为更新成功信息则提示固件更新成功,如为更新失败信息则报错,结束。
在本实施例中,固件可包括虚拟机脚本和/或应用程序,两者可以同时一起下载更新,也可以分别下载更新,如分别下载更新则上述步骤中的固件为虚拟机脚本,则在步骤C之前还包括:上位机从硬件钱包中获取应用程序编号和应用程序的版本号;上位机从服务器中获取应用程序的最新版本号;上位机判断从服务器中获取的应用程序的最新版本号是否大于从硬件钱包中获取的应用程序的版本号,是则执行步骤C,否则报错,结束。
相应的,步骤C中提示固件更新成功之后还包括:
步骤A1:上位机判断是否保存有应用程序编号,是则读取保存的应用程序编号,执行步骤A3,否则执行步骤A2;
步骤A2:上位机跳转到下载界面,提示用户下载应用程序,结束;
步骤A3:上位机对硬件钱包的身份进行验证,如验证成功则执行步骤A4,否则报错,结束;
具体的,步骤A3包括:上位机从硬件钱包中获取硬件钱包证书,并将硬件钱包证书发送给服务器,服务器判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则验证成功,给上位机返回验证成功信息,否则验证失败,给上位机返回验证失败信息,结束。
步骤A4:上位机将包括应用程序编号的获取应用程序请求发送给服务器;
步骤A5:服务器给上位机返回对应应用程序编号的最新版本的应用程序脚本;
步骤A6:上位机将应用程序脚本发送给硬件钱包,并显示应用程序安装进度;
步骤A7:硬件钱包通过运行应用程序脚本安装应用程序,并判断应用程序是否安装成功,是则执行步骤A8,否则执行步骤A9;
步骤A8:硬件钱包开始正常工作,并给上位机返回应用程序安装成功信息,执行步骤A10;
步骤A9:硬件钱包报错,并给上位机返回安装失败信息,执行步骤A10;
步骤A10:上位机根据接收到的信息判断硬件钱包安装应用程序是否成功,是则提示硬件钱包更新应用程序成功,删除上位机保存的应用程序编号和应用程序的版本号,结束;否则提示硬件钱包更新应用程序失败,结束。
在本实施例中,固件可以包括虚拟机脚本和/应用程序;虚拟机脚本与应用程序可以单独分别下载更新(先下载更新虚拟机脚本在下载更新应用程序),虚拟机脚本与应用程序也可以同时下载更新。
实施例二
本发明实施例二提供一种硬件钱包的固件更新方法,如图2和图3所示,包括:
步骤101:当上位机接收到用户触发固件更新信息时,开启枚举线程,当通过枚举线程检测到有硬件钱包连接时挂起枚举线程,执行步骤102;
在本实施例中,枚举线程每隔1秒检测是否有硬件钱包连接;
步骤102:上位机给硬件钱包发送选择指令;
例如,本实施例中的选择指令为00 A4 04 00;
步骤103:硬件钱包给上位机返回模式状态信息;
例如,硬件钱包给上位机返回的模式状态信息为6F 13 84 0B D0 42 6F 6F 746C 6F 61 64 65 72 A5 04 9F 6E 20 00;或硬件钱包给上位机返回的模式状态信息为6F5C 84 08 A0 00 00 00 03 00 00 00 A5 50 73 4A 06 07 2A 86 48 86 FC 6B 01 60 0C06 0A 2A 86 48 86 FC 6B 02 02 01 01 63 09 06 07 2A 86 48 86 FC 6B 03 64 0B 0609 2A 86 48 86 FC 6B 04 02 55 65 0B 06 09 2B 85 10 86 48 64 02 01 03 66 0C 060A 2B 06 01 04 01 2A 02 6E 01 02 9F 65 01 FF;
步骤104:上位机根据模式状态信息判断硬件钱包的模式,如为虚拟机模式则执行步骤105,如为固件更新引导模式则执行步骤117;
例如,如模式状态信息包括84 0B D0 42 6F 6F 74 6C 6F 61 64 65 72则硬件钱包的模式为固件更新引导模式;如模式信息包括84 08 A0 00 00 00 03 00 00 00 A5 5073则硬件钱包的模式为虚拟机模式;
步骤105:上位机请求服务器对硬件钱包的身份进行验证,同时请求硬件钱包对服务器的身份进行验证,如均验证成功则服务器与硬件钱包通过所述上位机协商会话密钥并缓存,执行步骤106,否则报错,结束;
具体的,在本实施例中,步骤105包括:
步骤105-1:上位机从硬件钱包中获取硬件钱包证书,并将硬件钱包证书发送给服务器,服务器判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则根据硬件钱包证书生成会话密钥并缓存,给上位机返回包括服务器证书的验证成功信息,否则验证失败,给上位机返回验证失败信息;
具体的,本实施例中硬件钱包的身份信息包括硬件钱包序列号和硬件钱包设备证书,例如上位机向硬件钱包发送80CB800005DFFF028101获取硬件钱包序列号,发送80CABF2106A60483021518获取硬件钱包设备证书;
步骤105-2:上位机从服务器中获取服务器证书,并将服务器证书发送给硬件钱包,硬件钱包判断接收到的服务器证书是否与预先保存的服务器证书匹配,是则验证成功,根据服务器证书生成会话密钥并缓存,给上位机返回验证成功信息,否则验证失败,给上位机返回验证失败信息;
步骤106:上位机从服务器中获取最新的固件版本号;
例如,上位机通过给服务器发送三类APDU指令来获取最新的固件版本号,三类指令分别为开始命令;80210000数据长度COS哈希、固件脚本APDU:80200000xx xxxx、结束命令:80220000xx xxxx;如固件脚本太长,则需要多条固件脚本APDU指令;
步骤107:上位机从硬件钱包中获取固件版本号;
例如,上位机给硬件钱包发送80 CB 80 00 05 DF FF 02 80 03,硬件钱包给上位机返回e.g:1000,indicate 1.0.00;即获取的固件版本号为1.0.00;
在本实施例中,步骤106与步骤107的顺序可调换;
步骤108:上位机判断从服务器中获取的最新的固件版本号是否大于从硬件钱包中获取的固件版本号,是则执行步骤109,否则提示用户无需进行固件更新,结束;
步骤109:上位机提示用户有新固件版本存在,显示新固件版本的详细信息,并询问用户是否继续进行固件更新,当接收到用户的确认触发信息时执行步骤110;当接收到用户的取消触发信息时则结束;
步骤110:上位机向服务器发送获取第一切换脚本的请求;
在本实施例中,第一切换脚本实现了硬件钱包由虚拟机模式切换为固件更新引导模式;
步骤111:服务器使用会话密钥对保存的第一切换脚本密文进行加密得到第一切换脚本密文加密结果并发送给上位机;
步骤112:上位机缓存第一切换脚本密文加密结果,提示用户在硬件钱包上进行确认并给硬件钱包发送包含第一切换脚本密文加密结果的指令;
步骤113:硬件钱包接收包含第一切换脚本密文加密结果的指令并提示用户是否进入固件更新引导模式,当接收到用户的触发信息时,判断触发信息的类型,如为确认键则给上位机返回确认信息,使用会话密钥对指令中的第一切换脚本密文加密结果进行解密得到第一切换脚本密文,使用对称密钥解密第一切换脚本密文得到第一切换脚本,通过运行第一切换脚本将虚拟机模式切换为固件更新引导模式,硬件钱包自动断电并重启,执行步骤114;如为取消键则给上位机返回取消信息,执行步骤114;
在本实施例中,在模式切换工作过程中如发生错误则步骤117中硬件钱包给上位机返回错误信息;
步骤114:上位机判断是否超时,是则返回步骤109,否则执行步骤115;
步骤115:上位机判断接收到的硬件钱包返回的触发信息的类型,如为确认信息则,执行步骤116,如为取消信息则返回步骤109;
步骤116:上位机提示已进入固件更新引导模式,结束;
步骤117:上位机给硬件钱包发送获取固件更新引导模式状态信息指令;
例如,上位机给硬件钱包发送00 A4 04 00获取固件更新引导模式下的状态;
步骤118:硬件钱包给上位机返回固件更新引导模式状态信息;
在本实施例中,固件更新引导模式状态信息包括:第一信息(例如2000)表示当前虚拟机正常,用户选择不进行固件更新操作,将固件更新引导模式切换回当前虚拟机,或用户选择继续固件更新操作,需下载新的虚拟机固件;第二信息(例如2001)表示当前虚拟机异常,用户只能选择继续固件更新操作;第三信息(例如2002)表示新的虚拟机正常,固件更新已完成;硬件钱包在第一次固件更新时虚拟机正常,如在本次更新过程中出现异常则设置固件更新引导模式状态信息为第二信息,下次固件更新时用户只能选择继续固件更新操作;
步骤119:上位机请求服务器对硬件钱包的身份进行验证,同时请求硬件钱包对服务器的身份进行验证,如均验证成功则服务器与硬件钱包通过所述上位机协商会话密钥并缓存,执行步骤120,否则报错,结束;
具体的,在本实施例中,步骤119包括:
步骤119-1:上位机从硬件钱包中获取硬件钱包证书,并将硬件钱包证书发送给服务器,服务器判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则根据硬件钱包证书生成会话密钥并缓存,给上位机返回包括服务器证书的验证成功信息,否则验证失败,给上位机返回验证失败信息;
步骤119-2:上位机从服务器中获取服务器证书并将服务器证书发送给硬件钱包,硬件钱包判断接收到的服务器证书是否与预先保存的服务器证书匹配,是则验证成功,根据服务器证书生成会话密钥并缓存,给上位机返回验证成功信息,否则验证失败,给上位机返回验证失败信息;
步骤120:上位机根据保存的固件更新引导模式状态信息更新显示信息,并提示用户进行确认,当接收到确认信息时,判断固件更新引导模式状态信息的类型,如为第一信息则执行步骤121,如为第二信息则执行步骤127;如为第三信息则结束;
在本实施例中,更新显示信息包括:显示固件更新引导模式状态信息并提示用户进行选择确认;
步骤121:上位机向服务器发送获取第二切换脚本的请求;
在本实施例中,第二切换脚本实现了硬件钱包由固件更新引导模式切换为虚拟机模式;
步骤122:服务器使用会话密钥加密第二切换脚本密文得到第二切换脚本密文加密结果,将第二切换脚本密文加密结果发送给上位机;
步骤123:上位机将第二切换脚本密文加密结果发送给硬件钱包的固件引导程序;
步骤124:硬件钱包使用会话密钥对接收到的第二切换脚本密文加密结果进行解密得到第二切换脚本密文,使用对称密钥解密第二切换脚本密文得到第二切换脚本,通过运行第二切换脚本将固件更新引导模式切换为虚拟机模式,提示用户断开连接,并读取配置区中的PIN码和对称密钥并保存;
步骤125:硬件钱包给上位机返回切换成功信息,断电并重启;
步骤126:上位机提示切换成功信息,结束;
可选的,在本实施例中,步骤113中将虚拟机模式切换为固件更新引导模式之后还包括:删除应用程序;相应的,在步骤126中还包括:上位机从服务器中获取应用程序脚本并发送给硬件钱包进行安装;
步骤127:上位机向服务器发送获取最新版本的固件脚本的请求;
步骤128:服务器分别使用会话密钥对保存的最新版本的固件脚本密文、第二切换脚本密文和图片脚本密文进行加密得到固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果并转发给上位机;
优选的,硬件钱包生产厂商通过预置密钥分别对最新版本的固件脚本、第二切换脚本和图片脚本进行加密并将加密结果上传到服务器中保存,服务器使用会话密钥对最新版本的固件脚本密文、第二切换脚本密文和图片脚本密文进行加密,上位机从服务器中获取的脚本均通过预置密钥和会话密钥二次加密后的数据;
步骤129:上位机将固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果发送给硬件钱包,硬件钱包依次使用会话密钥和对称密钥对图片脚本密文加密结果和固件脚本密文加密结果进行解密得到图片脚本和固件脚本,根据图片脚本显示相应内容;
具体的,在本实施例中,步骤129包括:
步骤129-1:上位机将包含图片脚本密文加密结果的命令发送给硬件钱包的引导程序中;
例如,本实施例中的图片脚本结构如下:
80E382 14数据长度x坐标y坐标图片宽度图片高度图片内容;
或者80E382 94数据长度x坐标y坐标图片宽度图片高度图片内容;
步骤129-2:硬件钱包的引导程序接收包含图片脚本密文加密结果的命令,使用会话密钥解密图片脚本密文加密结果得到图片脚本密文,使用对称密钥解密图片脚本密文得到图片脚本,根据图片脚本确定要显示的内容,并根据坐标及长度将确定的内容显示在硬件钱包的屏幕上,给上位机返回显示成功信息;
步骤129-3:上位机给硬件钱包发送固件脚本的第一条APDU指令;
步骤129-4:硬件钱包接收到APDU指令后设置固件更新引导模式状态信息为第二信息;
例如,在本实施例中,硬件钱包设置固件更新引导模式状态信息为2001,表示虚拟机异常;
步骤129-5:硬件钱包检检查APDU指令的格式是否符合要求,是则执行步骤129-6,否则给上位机返回错误信息;
步骤129-6:硬件钱包判断接收到的APDU指令的类型,如为第一条APDU指令则执行步骤129-7,如果为最后一条APDU指令则执行步骤129-9,如为其他则执行步骤129-8;
具体的,硬件钱包判断APDU指令的前两字节数据,如为第一数值则为第一条APDU指令(即开始命令),如为第二数值则为最后一条APDU指令(即结束命令),如为第三数值则为其他(固件脚本APDU指令);
例如第一数值为8021,第三数值为8020,第二数值为8022;
步骤129-7:硬件钱包使用会话密钥解密解密APDU指令中的数据域密文得到第一解密结果,再使用对称密钥解密第一解密结果得到固件哈希值并缓存,给上位机返回成功信息,执行步骤129-10;
步骤129-8:硬件钱包使用会话密钥解密解密APDU指令中的数据域密文得到固件脚本密文,再使用对称密钥解密固件脚本密文得到固件脚本并缓存,给上位机返回成功信息,执行步骤129-10;
步骤129-9:硬件钱包对缓存中的固件脚本进行哈希运算得到哈希结果,并判断计算得到的哈希结果与缓存的固件哈希值是否一致,是则设置固件更新引导模式状态信息为第三信息,给上位机返回成功信息,执行步骤129-10,否则给上位机返回失败信息;
例如,硬件钱包设置固件更新引导模式状态信息为2002,表示新的虚拟机正常,固件更新已完成;
步骤129-10:当上位机接收到硬件钱包返回的成功信息时,判断固件脚本是否全部发送完成,是则执行步骤129-12,否则执行步骤129-11;
步骤129-11:上位机判断固件脚本是否只剩最后一条APDU指令,是则上位机给硬件钱包发送固件脚本的最后一条APDU,执行步骤129-5,否则上位机给硬件钱包发送固件脚本的下一条APDU指令,返回步骤129-5;
步骤129-12:上位机给硬件钱包发送第二切换脚本密文加密结果;
步骤130:硬件钱包通过运行缓存的固件脚本更新虚拟机,提示用户不要断开连接并通过显示屏显示更新进度,判断固件更新是否成功,是则执行步骤131,否则提示更新失败信息并给上位机返回更新错误信息,执行步骤132;
例如,该步骤中的更新错误信息为9001;
具体的,在本实施例中,判断是否更新成功包括:硬件钱包判断显示屏显示的更新进度与解密得到的图片脚本是否匹配,是则固件更新成功,否则固件更新失败;
步骤131:硬件钱包使用会话密钥解密第二切换脚本密文加密结果得到第二切换脚本密文,使用对称密钥解密第二切换脚本密文得到第二切换脚本,通过运行第二切换脚本将固件更新引导模式切换为虚拟机模式,给上位机返回更新成功信息,硬件钱包断电并重启,执行步骤132;
例如,该步骤中的更新成功信息为9000;
步骤132:上位机判断硬件钱包返回的信息类型,如为更新成功信息则提示固件更新成功,如为更新失败信息则报错,结束;
在本实施例中,固件脚本更新之后还可以自动更新应用程序,则在步骤132之前,还包括:上位机从硬件钱包中获取应用程序编号和应用程序的版本号;上位机从服务器中获取应用程序的最新版本号;上位机判断从服务器中获取的应用程序的最新版本号是否大于从硬件钱包中获取的应用程序的版本号,是则继续,否则报错,结束;
例如,上位机给硬件钱包发送获取指令80CB800005DFFF028106,硬件钱包给上位机返回4FAID1的长度AID1;4F AID2的长度AID2......;其中一个AID对应一个应用程序,上位机通过选择不同的AID,分别获取每个应用程序的版本号;
具体的,在步骤133中提示固件更新成功之后还包括:
步骤A1:上位机判断是否保存有应用程序编号,是则读取保存的应用程序编号,执行步骤A3,否则执行步骤A2;
步骤A2:上位机跳转到下载界面,提示用户下载应用程序,结束;
步骤A3:上位机对硬件钱包的身份进行验证,如验证成功过则执行步骤A4,否则报错,结束;
具体的,在本实施例中,步骤A3包括:上位机从硬件钱包中获取硬件钱包证书,并将硬件钱包证书发送给服务器,服务器判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则验证成功,给上位机返回验证成功信息,否则验证失败,报错,结束;
步骤A4:上位机将包括应用程序编号的获取应用程序请求发送给服务器;
步骤A5:服务器给上位机返回对应该应用程序编号的最新版本的应用程序脚本;
步骤A6:上位机将应用程序脚本发送给硬件钱包,并显示应用程序安装进度;
步骤A7:硬件钱包运行应用程序脚本安装应用程序,并判断应用程序是否安装成功,是则执行步骤A8,否则执行步骤A9;
步骤A8:硬件钱包开始正常工作,并给上位机返回应用程序安装成功信息,执行步骤A10;
步骤A9:硬件钱包报错,并给上位机返回安装失败信息,执行步骤A10;
步骤A10:上位机根据接收到的信息判断硬件钱包安装应用程序是否成功,是则提示硬件钱包更新应用程序成功,删除上位机保存的应用程序编号和应用程序的版本号,结束;否则提示硬件钱包更新应用程序失败,结束。
在本实施例中,服务器对第一切换脚本密文、第二切换脚本密文和固件脚本密文进行加密的会话密钥可以为同一个会话密钥,也可以为不同的会话密钥,所有会话密钥均在服务器与硬件钱包相互验证成功后进行协商得到的。
在本实施例中,为使固件更新更安全可靠,本实施例方法将提示语言写入图片脚本中,且生产厂商使用对称密钥进行加密上传给服务器,服务器在使用会话密钥进行加密后进行传输;且生产厂商使用对称密钥对固件脚本、第一切换脚本和第二切换脚本进行加密之后上传到服务器,当上位机请求下载固件脚本、第一切换脚本和第二切换脚本时服务器使用会话密钥对固件脚本密文、第一切换脚本密文、第二切换脚本密文进行加密之后通过给上位机转发给硬件钱包,硬件钱包使用会话密钥和对称密钥分别对固件脚本密文加密结果、第一切换脚本密文加密结果、第二切换脚本密文加密结果进行解密之后进行运行,通过运行固件脚本实现固件更新,提高固件更新的安全性,且在固件更新过程中,服务器和硬件钱包相互进行验证进一步提高固件更新的安全性。
实施例三
本发明实施例三提供一种硬件钱包的固件更新***,如图4所示,包括上位机40、服务器41和硬件钱包42,上位机40包括:
第一接收检测模块401,用于接收用户触发固件更新信息时,当接收到用户触发固件更新信息是检测是否有硬件钱包连接,当检测到有硬件钱包42连接时触发第一获取模块402;
第一获取模块402,用于从硬件钱包中获取模式状态信息;
第一判断模块403,用于根据模式状态信息判断硬件钱包的模式,如为虚拟机模式则触发第一请求验证模块404;如为固件更新引导模式则触发第二请求验证模块407;
第一请求验证模块404,用于请求服务器41对硬件钱包42的身份进行验证,同时请求硬件钱包42对服务器41的身份进行验证,如均验证成功则服务器42与硬件钱包41通过上位机40协商会话密钥并缓存,触发第一获取判断模块405,否则报错,结束;
第一获取判断模块405,用于从服务器41中获取最新的固件版本号并从硬件钱包42中获取固件版本号,判断从服务器41中获取的最新版本号是否大于从硬件钱包42中获取的固件版本号,是则触发第一获取发送提示模块406,否则报错,结束;
第一获取发送提示模块406,用于从服务器41中获取经过会话密钥加密的第一切换脚本密文加密结果并发送给硬件钱包42,提示用户在硬件钱包42上进行确认;
第二请求验证模块407,用于请求服务器41对硬件钱包42的身份进行验证,同时请求硬件钱包42对服务器41的身份进行验证,如均验证成功则服务器41与硬件钱包42通过上位机40协商会话密钥并缓存,触发第二获取发送模块408,否则报错,结束;
第二获取发送模块408,用于从服务器41中获取经过会话密钥加密最新版本的固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果并转发给硬件钱包42;
硬件钱包42包括:
接收提示返回模块421,用于接收上位机40发送的第一切换脚本密文加密结果,并提示用户确认是否进入固件更新引导模式,当接收到用户的确认信息时给上位机40返回确认信息;
第一解密切换模块422,用于依次使用缓存的会话密钥和预置的对称密钥解密第一切换脚本密文加密结果得到第一切换脚本,通过运行第一切换脚本将虚拟机模式切换为固件更新引导模式,自动断电并重启;
接收解密显示模块423,用于接收上位机40发送的固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果,分别依次使用缓存的会话密钥和预置的对称密钥解密图片脚本密文加密结果和固件脚本密文加密结果得到图片脚本和固件脚本,根据图片脚本显示相应内容;
第一运行判断模块424,用于运行接收解密显示模块解密得到的固件脚本并判断固件更新是否成功,是则触发第二解密切换模块425,否则给上位机40返回更新失败信息;
第二解密切换模块425,用于依次使用会话密钥和对称密钥解密第二切换脚本密文加密结果得到第二切换脚本,通过运行第二切换脚本将固件更新引导模式切换为虚拟机模式,给上位机40返回更新成功信息,断电并重启。
可选的,本实施例中的上位机40还包括:
第二获取模块,用于当第一判断模块403判断硬件钱包的模式为固件更新引导模式时从硬件钱包42中获取固件更新引导模式状态信息;
显示提示模块,用于根据固件更新引导模式状态信息更新显示信息,并提示用户进行确认,当接收到确认信息时,判断固件更新引导模式状态信息的类型,如为第一信息则触发第三获取发送模块,如为第二信息则触发第二请求验证模块407;如为第三信息则结束;
第三获取发送模块,用于从服务器41中获取经过会话密钥加密的第二切换脚本密文加密结果并转发给硬件钱包42;
硬件钱包42还包括:
接收解密运行模块,用于接收上位机40发送的第二切换脚本密文加密结果,依次使用会话密钥和对称密钥解密第二切换脚本密文加密结果得到第二切换脚本,通过运行第二切换脚本将固件更新引导模式切换为虚拟机模式,给上位机40返回切换成功信息,断电并重启。
在本实施例中,第一获取模块402具体用于给硬件钱包42发送选择指令;
相应的,硬件钱包42还包括:第一接收返回模块,用于接收上位机40发送的选择指令并给上位机40返回模式状态信息。
其中,本实施例中的第二获取模块具体用于当第一判断模块403判断硬件钱包42的模式为固件更新引导模式时给硬件钱包42发送获取固件更新引导模式状态信息指令;
相应的,硬件钱包42还包括:
第二接收返回模块,用于接收上位机40发送的获取固件更新引导模式状态信息指令并给上位机40返回固件更新引导模式状态信息。
具体的,本实施例中的第一请求验证模块404,包括:
第一获取发送子模块,用于从硬件钱包42中获取硬件钱包证书,并将硬件钱包证书发送给服务器41;
第二获取发送子模块,用于从服务器41中获取服务器证书,并将服务器证书发送给硬件钱包42;
服务器41包括:第一验证模块,用于判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则服务器41对硬件钱包42的身份验证成功,触发第一协商模块,否则验证失败;
第一协商模块,用于根据硬件钱包证书生成会话密钥并缓存;
硬件钱包42还包括:
第二验证模块,用于判断接收到的服务器证书是否与预先保存的服务器证书匹配,是则硬件钱包42对服务器41的身份验证成功,触发第二协商模块,否则验证失败;
第二协商模块,用于根据服务器证书生成会话密钥并缓存;
第二请求验证模块407,包括:
第三获取发送子模块,用于从硬件钱包42中获取硬件钱包证书,并将硬件钱包证书发送给服务器41;
第四获取发送子模块,用于从服务器41中获取服务器证书,并将服务器证书发送给硬件钱包42;
服务器41包括:
第三验证模块,用于判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则服务器41对硬件钱包42的身份验证成功,触发第三协商模块,否则验证失败;
第三协商模块,用于根据硬件钱包证书生成会话密钥并缓存;
硬件钱包42还包括:第四验证模块,用于判断接收到的服务器证书是否与预先保存的服务器证书匹配,是则硬件钱包42对服务器41的身份验证成功,触发第四协商模块,否则验证失败;
第四协商模块,用于根据服务器证书生成会话密钥并缓存。
在本实施例中,第一获取判断模块405,包括:
第一获取子模块,用于从服务器41中获取最新的固件版本号;还用于从硬件钱包42中获取固件版本号;
第一判断子模块,用于判断从服务器41中获取的最新的固件版本号是否大于从硬件钱包42中获取的固件版本号,是则触发第一获取发送提示模块406,否则提示用户无需进行固件更新,结束。
可选的,本实施例中的上位机40还包括:
提示询问接收模块,用于当第一获取判断模块405判断为是时提示用户有新固件版本存在,并显示新固件版本的详细信息,并询问用户是否继续进行固件更新,当接收到用户的确认触发信息时触发第一获取发送提示模块406;当接收到用户的取消触发信息时则结束。
具体的,本实施例中的第一获取发送提示模块406包括:
第一发送子模块,用于向服务器41发送获取第一切换脚本的请求;
缓存提示发送子模块,用于接收并缓存服务器41发送的第一切换脚本密文加密结果,提示用户在硬件钱包42上进行确认并给硬件钱包42发送包含第一切换脚本密文加密结果的指令;
服务器41包括:第一加密发送模块,用于使用会话密钥对保存的第一切换脚本密文进行加密得到第一切换脚本密文加密结果并发送给上位机40。
在本实施例中,接收提示返回模块421,具体用于接收包含第一切换脚本密文加密结果的指令并提示用户确认是否进入固件更新引导模式,当接收到用户的触发信息时,判断触发信息的类型,如为确认键则给上位机40返回确认信息;
第一解密切换模块422,具体用于使用会话密钥对指令中的第一切换脚本密文加密结果进行解密得到第一切换脚本密文,使用对称密钥解密第一切换脚本密文得到第一切换脚本,通过运行第一切换脚本将虚拟机模式切换为固件更新引导模式,硬件钱包42自动断电并重启;如为取消键则给上位机40返回取消信息。
可选的,本实施例中的上位机40还包括:
第二判断模块,用于接收到硬件钱包42返回的确认信息时判断是否超时,是则触发提示询问接收模块,否则触发第一提示模块;
第一提示模块,用于提示硬件钱包42进入固件更新引导模式。
具体的,第一提示模块,包括:
第三判断子模块,用于判断接收到的硬件钱包42返回的触发信息的类型,如为确认信息则触发第一提示子模块,如为取消信息则触发提示询问接收模块;
第一提示子模块,用于提示已进入固件更新引导模式。
在本实施例中,第二获取发送模块408包括:
第三发送子模块,用于向服务器41发送获取第二切换脚本的请求;
第一接收发送子模块,用于接收服务器41发送的第二切换脚本密文加密结果并将第二切换脚本密文加密结果发送给硬件钱包42的固件引导程序;
相应的,服务器41还包括:第三接收加密发送模块,用于接收上位机40发送的获取第二切换脚本的请求,使用会话密钥对保存的第二切换脚本密文进行加密得到第二切换脚本密文加密结果,并将第二切换脚本密文加密结果发送给上位机40。
在本实施例中,第一接收检测模块401,具体用于接收用户触发固件更新信息时,开启枚举线程,通过枚举线程检测是否有硬件钱包42连接,当检测到有硬件钱包42连接时挂起枚举线程,触发第一获取模块402。
具体的,本实施例中的第二获取发送模块408包括:
第四发送子模块,用于向服务器41发送获取最新版本的固件脚本的请求;
第二接收发送子模块,用于接收服务器41发送的第二切换脚本密文加密结果、固件脚本密文加密结果和图片脚本密文加密结果,并将第二切换脚本密文加密结果、固件脚本密文加密结果和图片脚本密文加密结果发送给硬件钱包42;
服务器41包括:第四接收加密发送模块,用于接收上位机40发送的获取最新版本的固件脚本的请求,使用会话密钥对最新版本的固件脚本密文、第二切换脚本密文和图片脚本密文进行加密得到固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文,并将固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果发送给上位机40;
接收解密显示模块423,具体用于使用会话密钥分别对固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文进行解密得到固件脚本密文、第二切换脚本密文和图片脚本密文,使用保存的对称密钥对分别对固件脚本密文、第二切换脚本密文和图片脚本密文进行解密得到固件脚本、第二切换脚本和图片脚本,根据图片脚本显示相应内容。
可选的,接收解密运行模块还用于读取配置区中的PIN码和对称密钥并保存;
第二接收发送子模块包括:第一接收单元、第一发送单元、第二发送单元、接收判断单元、判断返回单元、第三发送单元;
接收解密显示模块423包括:接收解密显示单元、接收设置单元、第一检查单元、第一判断单元、第一解密返回单元、第二解密返回单元、计算判断单元;
第一接收单元,用于接收服务器41发送的第二切换脚本密文加密结果、固件脚本密文加密结果和图片脚本密文加密结果;
第一发送单元,用于将包含图片脚本密文加密结果的命令发送给硬件钱包42;
接收解密显示单元,用于接收包含图片脚本密文加密结果的命令,使用会话密钥解密图片脚本密文加密结果得到图片脚本密文,使用对称密钥解密图片脚本密文得到图片脚本,根据图片脚本确定是要显示数据域中的内容,并根据坐标及长度将确定的内容显示在硬件钱包42的屏幕上,给上位机40返回显示成功信息;
第二发送单元,用于给硬件钱包42发送固件脚本的第一条APDU指令;
接收设置单元,用于接收到APDU指令后设置固件更新引导模式状态信息为第二信息;
第一检查单元,用于检查APDU指令的格式是否符合要求,是则触发第一判断单元,否则给上位机40返回错误信息;
第一判断单元,用于判断接收到的APDU指令的类型,如为第一条APDU指令则触发第一解密返回单元,如为最后一条APDU指令则触发计算判断单元,如为其他则触发第二解密返回单元;
第一解密返回单元,用于使用会话密钥解密APDU指令中的数据域密文得到第一解密结果,再使用对称密钥解密第一解密结果得到固件哈希值并缓存,给上位机40返回成功信息;
第二解密返回单元,用于使用会话密钥解密APDU指令中的数据域密文得到固件脚本密文,再使用对称密钥解密固件脚本密文得到固件脚本并缓存,给上位机40返回成功信息;
计算判断单元,用于对缓存中的固件脚本进行哈希运算得到哈希结果,并判断计算得到的哈希结果与缓存的固件哈希值是否一致,是则设置固件更新引导模式状态信息为第三信息,给上位机40返回成功信息,否则给上位机40返回失败信息;
接收判断单元,用于当接收到硬件钱包42返回的成功信息时,判断固件脚本是否全部发送完成,是则执行步骤B312,否则触发判断返回单元;
判断返回单元,用于判断固件脚本是否只剩最后一条APDU指令,是则上位机40给硬件钱包42发送固件脚本的最后一条APDU,触发第一检查单元,否则上位机40给硬件钱包42发送固件脚本的下一条APDU指令,触发第一检查单元;
第三发送单元,用于给硬件钱包42发送第二切换脚本密文加密结果。
在本实施例中,第一运行判断模块424,具体用于通过运接收解密显示模块423解密得到的固件脚本更新虚拟机,提示用户不要断开连接并通过显示屏显示更新进度,判断固件更新是否成功,是则触发第二解密切换模块425,否则提示更新失败信息并给上位机40返回更新错误信息;
第二解密切换模块425,具体用于使用会话密钥解密第二切换脚本密文加密结果得到第二切换结果密文,使用对称密钥解密第二切换脚本密文得到第二切换脚本,通过运行第二切换脚本,并将固件更新引导模式切换为虚拟机模式,给上位机40返回更新成功信息,硬件钱包42断电并重启。
在本实施例中,第一运行判断模块424中的判断固件更新是否成功包括:判断显示屏显示的更新进度与图片脚本是否匹配,是则固件更新成功,否则固件更新失败。
可选的,本实施例的上位机40还包括:
接收判断提示模块,用于接收并判断硬件钱包42返回的信息类型,如为更新成功信息则提示固件更新成功,如为更新失败信息则报错,结束。
进一步地,上位机40还包括:第三获取判断模块,用于从硬件钱包42中获取应用程序编号和应用程序的版本号;从服务器41中获取应用程序的最新版本号;判断从服务器41中获取的应用程序的最新版本号是否大于从硬件钱包42中获取的应用程序的版本号,是则触发接收判断提示模块,否则报错,结束。
在本实施例中,固件为虚拟机脚本,上位机40还包括:判断读取模块、跳转提示模块、身份验证模块、第五发送模块、接收发送显示模块、判断提示删除模块;服务器41包括第三接收返回模块;硬件钱包42还包括第三运行判断模块、工作返回模块和报错返回模块;
判断读取模块,用于判断是否保存有应用程序编号,是则读取保存的应用程序编号,触发身份验证模块,否则触发跳转提示模块;
跳转提示模块,用于跳转到下载界面,提示用户下载应用程序,结束;
身份验证模块,用于对硬件钱包42的身份进行验证,如验证成功则触发第五发送模块,否则报错,结束;
第五发送模块,用于将包括应用程序编号的获取应用程序请求发送给服务器41;
第三接收返回模块,用于接收获取应用程序请求并给上位机40返回对应应用程序编号的最新版本的应用程序脚本;
接收发送显示模块,用于接收应用程勋脚本并将应用程序脚本发送给硬件钱包42,显示应用程序安装进度;
第三运行判断模块,用于通过运行应用程序脚本安装应用程序,并判断应用程序是否安装成功,是则触发工作返回模块,否则触发报错返回模块;
工作返回模块,用于开始正常工作,并给上位机40返回应用程序安装成功信息,触发判断提示删除模块;
报错返回模块,用于报错,并给上位机40返回安装失败信息,触发判断提示删除模块;
判断提示删除模块,用于根据接收到的信息判断硬件钱包42安装应用程序是否成功,是则提示硬件钱包42更新应用程序成功,删除上位机40保存的应用程序编号和应用程序的版本号,结束;否则提示硬件钱包42更新应用程序失败,结束。
在本实施例中,身份验证模块具体用于从硬件钱包42中获取硬件钱包证书,并将硬件钱包证书发送给服务器41;
服务器41还包括:第四判断返回模块,用于判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则验证成功,给上位机40返回验证成功信息,否则验证失败,给上位机40返回验证失败信息,结束。
在本实施例中,固件可以包括虚拟机脚本和/应用程序;虚拟机脚本与应用程序可以单独分别下载更新(先下载更新虚拟机脚本在下载更新应用程序),虚拟机脚本与应用程序也可以同时下载更新。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (42)
1.一种硬件钱包的固件更新方法,其特征在于,包括:
步骤S1:当上位机接收到用户触发固件更新信息时,检测是否有硬件钱包连接,当检测到有硬件钱包连接时执行步骤S2;
步骤S2:所述上位机从硬件钱包中获取模式状态信息;
步骤S3:所述上位机根据所述模式状态信息判断硬件钱包的模式是否为虚拟机模式或固件更新引导模式,如为虚拟机模式则执行步骤S4;如为固件更新引导模式则执行步骤S8;
步骤S4:所述上位机请求服务器对所述硬件钱包的身份进行验证,同时请求所述硬件钱包对所述服务器的身份进行验证,如均验证成功则所述服务器与所述硬件钱包通过所述上位机协商会话密钥并缓存,执行步骤S5,否则报错,结束;
步骤S5:所述上位机从所述服务器中获取最新的固件版本号并从所述硬件钱包中获取固件版本号,判断从所述服务器中获取的最新版本号是否大于从所述硬件钱包中获取的固件版本号,是则执行步骤S6,否则报错,结束;
步骤S6:所述上位机从所述服务器中获取经过会话密钥加密的第一切换脚本密文加密结果并发送给所述硬件钱包,提示用户在所述硬件钱包上进行确认;
步骤S7:所述硬件钱包提示用户确认是否进入固件更新引导模式,当接收到用户的确认信息时给所述上位机返回确认信息,依次使用缓存的所述会话密钥和预置的对称密钥解密第一切换脚本密文加密结果得到第一切换脚本,通过运行所述第一切换脚本将虚拟机模式切换为固件更新引导模式,自动断电并重启;
步骤S8:所述上位机请求所述服务器对所述硬件钱包的身份进行验证,同时请求所述硬件钱包对所述服务器的身份进行验证,如均验证成功则所述服务器与所述硬件钱包通过所述上位机协商会话密钥并缓存,执行步骤S9,否则报错,结束;
步骤S9:所述上位机从所述服务器中获取经过所述会话密钥加密最新版本的固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果并转发给所述硬件钱包;所述硬件钱包分别依次使用缓存的所述会话密钥和预置的对称密钥解密所述图片脚本密文加密结果和所述固件脚本密文加密结果得到图片脚本和固件脚本,根据所述图片脚本显示相应内容;
步骤S10:所述硬件钱包运行所述固件脚本并判断固件更新是否成功,是则依次使用所述会话密钥和所述对称密钥解密所述第二切换脚本密文加密结果得到第二切换脚本,通过运行所述第二切换脚本将固件更新引导模式切换为虚拟机模式,给所述上位机返回更新成功信息,断电并重启,否则给所述上位机返回更新失败信息。
2.如权利要求1所述的方法,其特征在于,所述步骤S3与所述步骤S8之间还包括:
步骤Y0:所述上位机从所述硬件钱包中获取固件更新引导模式状态信息;
步骤Y1:所述上位机根据所述固件更新引导模式状态信息更新显示信息,并提示用户进行确认,当接收到确认信息时,判断所述固件更新引导模式状态信息的类型,如为第一信息则执行步骤Y2,如为第二信息则执行步骤S5;如为第三信息则结束;
步骤Y2:所述上位机从所述服务器中获取经过会话密钥加密的第二切换脚本密文加密结果并转发给所述硬件钱包;
步骤Y3:所述硬件钱包依次使用所述会话密钥和对称密钥解密第二切换脚本密文加密结果得到第二切换脚本,通过运行所述第二切换脚本将固件更新引导模式切换为虚拟机模式,给所述上位机返回切换成功信息,断电并重启。
3.如权利要求1所述的方法,其特征在于,所述步骤S2具体为:
步骤S21:所述上位机给所述硬件钱包发送选择指令;
步骤S22:所述硬件钱包给所述上位机返回模式状态信息。
4.如权利要求2所述的方法,其特征在于,所述步骤Y0具体为:
步骤Y01:所述上位机给所述硬件钱包发送获取固件更新引导模式状态信息指令;
步骤Y02:所述硬件钱包给所述上位机返回固件更新引导模式状态信息。
5.如权利要求1所述的方法,其特征在于,所述上位机请求服务器对是硬件钱包的身份进行验证,同时请求所述硬件钱包对所述服务器的身份进行验证,包括:
所述上位机从所述硬件钱包中获取硬件钱包证书,并将所述硬件钱包证书发送给所述服务器,所述服务器判断接收到的所述硬件钱包证书是否与保存的硬件钱包证书匹配,是则服务器对硬件钱包的身份验证成功,否则验证失败;
所述上位机从所述服务器中获取服务器证书,并将所述服务器证书发送给所述硬件钱包,所述硬件钱包判断接收到的所述服务器证书是否与预先保存的服务器证书匹配,是则硬件钱包对服务器的身份验证成功,否则验证失败。
6.如权利要求1所述的方法,其特征在于,所述步骤S5包括:
步骤S5-1:所述上位机从所述服务器中获取最新的固件版本号;从所述硬件钱包中获取固件版本号;
步骤S5-2:所述上位机判断从所述服务器中获取的最新的固件版本号是否大于从所述硬件钱包中获取的固件版本号,是则执行步骤S6,否则提示用户无需进行固件更新,结束。
7.如权利要求1所述的方法,其特征在于,所述步骤S5与所述步骤S6之间还包括:
步骤D:所述上位机提示用户有新固件版本存在,并显示新固件版本的详细信息,并询问用户是否继续进行固件更新,当接收到用户的确认触发信息时执行步骤S6;当接收到用户的取消触发信息时则结束。
8.如权利要求1所述的方法,其特征在于,所述步骤S6包括:
步骤S6-1:所述上位机向所述服务器发送获取第一切换脚本的请求;
步骤S6-2:所述服务器使用所述会话密钥对保存的第一切换脚本密文进行加密得到第一切换脚本密文加密结果并发送给所述上位机;
步骤S6-3:所述上位机缓存第一切换脚本密文加密结果,提示用户在硬件钱包上进行确认并给所述硬件钱包发送包含第一切换脚本密文加密结果的指令。
9.如权利要求1所述的方法,其特征在于,所述步骤S7具体为:
所述硬件钱包接收包含第一切换脚本密文加密结果的指令并提示用户确认是否进入固件更新引导模式,当接收到用户的触发信息时,判断触发信息的类型,如为确认键则给所述上位机返回确认信息,使用所述会话密钥对指令中的所述第一切换脚本密文加密结果进行解密得到第一切换脚本密文,使用所述对称密钥解密所述第一切换脚本密文得到第一切换脚本,通过运行所述第一切换脚本将虚拟机模式切换为固件更新引导模式,硬件钱包自动断电并重启;如为取消键则给上位机返回取消信息,执行步骤S8。
10.如权利要求7所述的方法,其特征在于,所述步骤S7之后还包括:
步骤E:所述上位机判断是否超时,是则返回步骤D,否则所述上位机提示所述硬件钱包进入固件更新引导模式,结束。
11.如权利要求10所述的方法,其特征在于,所述上位机提示所述硬件钱包进入固件更新引导模式,包括:
步骤T1:所述上位机判断接收到的所述硬件钱包返回的触发信息的类型,如为确认信息则执行步骤T2,如为取消信息则返回步骤D;
步骤T2:所述上位机提示已进入固件更新引导模式,结束。
12.如权利要求2所述的方法,其特征在于,所述步骤Y3包括:
步骤Y31:所述上位机向所述服务器发送获取第二切换脚本的请求;
步骤Y32:所述服务器使用所述会话密钥对保存的第二切换脚本密文进行加密得到第二切换脚本密文加密结果,并将所述第二切换脚本密文加密结果发送给所述上位机;
步骤Y33:所述上位机将所述第二切换脚本密文加密结果发送给所述硬件钱包的固件引导程序。
13.如权利要求1所述的方法,其特征在于,所述步骤S1包括:当上位机接收到用户触发固件更新信息时,开启枚举线程,通过枚举线程检测是否有硬件钱包连接,当检测到有硬件钱包连接时挂起枚举线程,执行步骤S2。
14.如权利要求2所述的方法,其特征在于,所述步骤S9包括:
步骤B1:所述上位机向所述服务器发送获取最新版本的固件脚本的请求;
步骤B2:所述服务器使用会话密钥对最新版本的固件脚本密文、第二切换脚本密文和图片脚本密文进行加密得到固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文,并将固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果发送给所述上位机;
步骤B3:所述上位机将所述第二切换脚本密文加密结果、所述固件脚本密文加密结果和所述图片脚本密文加密结果发送给所述硬件钱包;所述硬件钱包使用所述会话密钥分别对固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文进行解密得到固件脚本密文、第二切换脚本密文和图片脚本密文,使用保存的对称密钥对分别对固件脚本密文、第二切换脚本密文和图片脚本密文进行解密得到固件脚本、第二切换脚本和图片脚本,根据所述图片脚本显示相应内容。
15.如权利要求14所述的方法,其特征在于,所述步骤Y3中还包括:读取配置区中的PIN码和对称密钥并保存;
所述步骤B3包括:
步骤B301:所述上位机将包含所述图片脚本密文加密结果的命令发送给所述硬件钱包;
步骤B302:所述硬件钱包接收所述包含图片脚本密文加密结果的命令,使用所述会话密钥解密所述图片脚本密文加密结果得到图片脚本密文,使用所述对称密钥解密图片脚本密文得到图片脚本,根据图片脚本确定是要显示数据域中的内容,并根据坐标及长度将确定的所述内容显示在所述硬件钱包的屏幕上,给所述上位机返回显示成功信息;
步骤B303:所述上位机给所述硬件钱包发送固件脚本的第一条APDU指令;
步骤B304:所述硬件钱包接收到APDU指令后设置所述固件更新引导模式状态信息为第二信息;
步骤B305:所述硬件钱包检查APDU指令的格式是否符合要求,是则执行步骤B306,否则给所述上位机返回错误信息;
步骤B306:所述硬件钱包判断接收到的APDU指令的类型,如为第一条APDU指令则执行步骤B307,如为最后一条APDU指令则执行步骤B309,如为其他则执行步骤B308;
步骤B307:所述硬件钱包使用所述会话密钥解密APDU指令中的数据域密文得到第一解密结果,再使用所述对称密钥解密所述第一解密结果得到固件哈希值并缓存,给所述上位机返回成功信息,执行步骤B310;
步骤B308:所述硬件钱包使用会话密钥解密APDU指令中的数据域密文得到固件脚本密文,再使用所述对称密钥解密所述固件脚本密文得到固件脚本并缓存,给所述上位机返回成功信息,执行步骤B310;
步骤B309:所述硬件钱包对缓存中的固件脚本进行哈希运算得到哈希结果,并判断计算得到的哈希结果与缓存的固件哈希值是否一致,是则设置所述固件更新引导模式状态信息为第三信息,给所述上位机返回成功信息,执行步骤B310,否则给所述上位机返回失败信息;
步骤B310:当所述上位机接收到所述硬件钱包返回的成功信息时,判断固件脚本是否全部发送完成,是则执行步骤B312,否则执行步骤B311;
步骤B311:所述上位机判断固件脚本是否只剩最后一条APDU指令,是则所述上位机给硬件钱包发送固件脚本的最后一条APDU,执行步骤B305,否则所述上位机给硬件钱包发送固件脚本的下一条APDU指令,返回步骤B305;
步骤B312:所述上位机给所述硬件钱包发送所述第二切换脚本密文加密结果。
16.如权利要求1所述的方法,其特征在于,所述步骤S10包括:
步骤S101:所述硬件钱包通过运行所述固件脚本更新虚拟机,提示用户不要断开连接并通过显示屏显示更新进度,判断固件更新是否成功,是则执行步骤S102,否则提示更新失败信息并给所述上位机返回更新错误信息;
步骤S102:所述硬件钱包使用所述会话密钥解密所述第二切换脚本密文加密结果得到第二切换结果密文,使用所述对称密钥解密所述第二切换脚本密文得到第二切换脚本,通过运行所述第二切换脚本,并将固件更新引导模式切换为虚拟机模式,给所述上位机返回更新成功信息,所述硬件钱包断电并重启。
17.如权利要求16所述的方法,其特征在于,所述判断固件更新是否成功包括:所述硬件钱包判断显示屏显示的更新进度与所述图片脚本是否匹配,是则固件更新成功,否则固件更新失败。
18.如权利要求1所述的方法,其特征在于,所述步骤S10之后还包括:
步骤C:所述上位机接收并判断所述硬件钱包返回的信息类型,如为更新成功信息则提示固件更新成功,如为更新失败信息则报错,结束。
19.如权利要求18所述的方法,其特征在于,所述固件为虚拟机脚本,所述步骤C之前还包括:所述上位机从所述硬件钱包中获取应用程序编号和应用程序的版本号;所述上位机从所述服务器中获取应用程序的最新版本号;所述上位机判断从所述服务器中获取的应用程序的最新版本号是否大于从所述硬件钱包中获取的应用程序的版本号,是则执行步骤C,否则报错,结束。
20.如权利要求19所述的方法,其特征在于,所述步骤C中提示固件更新成功之后还包括:
步骤A1:所述上位机判断是否保存有所述应用程序编号,是则读取保存的应用程序编号,执行步骤A3,否则执行步骤A2;
步骤A2:所述上位机跳转到下载界面,提示用户下载应用程序,结束;
步骤A3:所述上位机对所述硬件钱包的身份进行验证,如验证成功则执行步骤A4,否则报错,结束;
步骤A4:所述上位机将包括所述应用程序编号的获取应用程序请求发送给所述服务器;
步骤A5:所述服务器给所述上位机返回对应所述应用程序编号的最新版本的应用程序脚本;
步骤A6:所述上位机将应用程序脚本发送给所述硬件钱包,并显示应用程序安装进度;
步骤A7:所述硬件钱包通过运行应用程序脚本安装应用程序,并判断应用程序是否安装成功,是则执行步骤A8,否则执行步骤A9;
步骤A8:所述硬件钱包开始正常工作,并给所述上位机返回应用程序安装成功信息,执行步骤A10;
步骤A9:所述硬件钱包报错,并给所述上位机返回安装失败信息,执行步骤A10;
步骤A10:所述上位机根据接收到的信息判断硬件钱包安装应用程序是否成功,是则提示硬件钱包更新应用程序成功,删除上位机保存的应用程序编号和应用程序的版本号,结束;否则提示硬件钱包更新应用程序失败,结束。
21.如权利要求20所述的方法,其特征在于,所述步骤A3包括:所述上位机从所述硬件钱包中获取硬件钱包证书,并将所述硬件钱包证书发送给所述服务器,所述服务器判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则验证成功,给上位机返回验证成功信息,否则验证失败,给上位机返回验证失败信息,结束。
22.一种硬件钱包的固件更新***,其特征在于,包括上位机、服务器和硬件钱包,所述上位机包括:
第一接收检测模块,用于接收用户触发固件更新信息时,当接收到用户触发固件更新信息是检测是否有硬件钱包连接,当检测到有硬件钱包连接时触发第一获取模块;
所述第一获取模块,用于从硬件钱包中获取模式状态信息;
第一判断模块,用于根据所述模式状态信息判断硬件钱包的模式是否为虚拟机模式或固件更新引导模式,如为虚拟机模式则触发第一请求验证模块;如为固件更新引导模式则触发第二请求验证模块;
所述第一请求验证模块,用于请求服务器对所述硬件钱包的身份进行验证,同时请求所述硬件钱包对所述服务器的身份进行验证,如均验证成功则所述服务器与所述硬件钱包通过所述上位机协商会话密钥并缓存,触发第一获取判断模块,否则报错,结束;
所述第一获取判断模块,用于从所述服务器中获取最新的固件版本号并从所述硬件钱包中获取固件版本号,判断从所述服务器中获取的最新版本号是否大于从所述硬件钱包中获取的固件版本号,是则触发第一获取发送提示模块,否则报错,结束;
所述第一获取发送提示模块,用于从所述服务器中获取经过会话密钥加密的第一切换脚本密文加密结果并发送给所述硬件钱包,提示用户在所述硬件钱包上进行确认;
所述第二请求验证模块,用于请求所述服务器对所述硬件钱包的身份进行验证,同时请求所述硬件钱包对所述服务器的身份进行验证,如均验证成功则所述服务器与所述硬件钱包通过所述上位机协商会话密钥并缓存,触发第二获取发送模块,否则报错,结束;
所述第二获取发送模块,用于从所述服务器中获取经过所述会话密钥加密最新版本的固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果并转发给所述硬件钱包;
所述硬件钱包包括:
接收提示返回模块,用于接收所述上位机发送的第一切换脚本密文加密结果,并提示用户确认是否进入固件更新引导模式,当接收到用户的确认信息时给所述上位机返回确认信息;
第一解密切换模块,用于依次使用缓存的所述会话密钥和预置的对称密钥解密第一切换脚本密文加密结果得到第一切换脚本,通过运行所述第一切换脚本将虚拟机模式切换为固件更新引导模式,自动断电并重启;
接收解密显示模块,用于接收所述上位机发送的固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果,分别依次使用缓存的所述会话密钥和预置的对称密钥解密所述图片脚本密文加密结果和所述固件脚本密文加密结果得到图片脚本和固件脚本,根据所述图片脚本显示相应内容;
第一运行判断模块,用于运行所述接收解密显示模块解密得到的固件脚本并判断固件更新是否成功,是则触发第二解密切换模块,否则给所述上位机返回更新失败信息;
所述第二解密切换模块,用于依次使用所述会话密钥和所述对称密钥解密所述第二切换脚本密文加密结果得到第二切换脚本,通过运行所述第二切换脚本将固件更新引导模式切换为虚拟机模式,给所述上位机返回更新成功信息,断电并重启。
23.如权利要求22所述的***,其特征在于,所述上位机还包括:
第二获取模块,用于当所述第一判断模块判断硬件钱包的模式为固件更新引导模式时从所述硬件钱包中获取固件更新引导模式状态信息;
显示提示模块,用于根据所述固件更新引导模式状态信息更新显示信息,并提示用户进行确认,当接收到确认信息时,判断所述固件更新引导模式状态信息的类型,如为第一信息则触发第三获取发送模块,如为第二信息则触发所述第二请求验证模块;如为第三信息则结束;
所述第三获取发送模块,用于从所述服务器中获取经过会话密钥加密的第二切换脚本密文加密结果并转发给所述硬件钱包;
所述硬件钱包还包括:
接收解密运行模块,用于接收所述上位机发送的第二切换脚本密文加密结果,依次使用所述会话密钥和对称密钥解密第二切换脚本密文加密结果得到第二切换脚本,通过运行所述第二切换脚本将固件更新引导模式切换为虚拟机模式,给所述上位机返回切换成功信息,断电并重启。
24.如权利要求22所述的***,其特征在于,所述第一获取模块具体用于给所述硬件钱包发送选择指令;
所述硬件钱包还包括:
第一接收返回模块,用于接收所述上位机发送的选择指令并给所述上位机返回模式状态信息。
25.如权利要求23所述的***,其特征在于,所述第二获取模块具体用于当所述第一判断模块判断硬件钱包的模式为固件更新引导模式时给所述硬件钱包发送获取固件更新引导模式状态信息指令;
所述硬件钱包还包括:
第二接收返回模块,用于接收所述上位机发送的获取固件更新引导模式状态信息指令并给所述上位机返回固件更新引导模式状态信息。
26.如权利要求22所述的***,其特征在于,所述第一请求验证模块,包括:
第一获取发送子模块,用于从所述硬件钱包中获取硬件钱包证书,并将所述硬件钱包证书发送给所述服务器;
第二获取发送子模块,用于从所述服务器中获取服务器证书,并将所述服务器证书发送给所述硬件钱包;
所述服务器包括:
第一验证模块,用于判断接收到的所述硬件钱包证书是否与保存的硬件钱包证书匹配,是则服务器对硬件钱包的身份验证成功,触发第一协商模块,否则验证失败;
所述第一协商模块,用于根据所述硬件钱包证书生成会话密钥并缓存;
所述硬件钱包还包括:
第二验证模块,用于判断接收到的所述服务器证书是否与预先保存的服务器证书匹配,是则硬件钱包对服务器的身份验证成功,触发第二协商模块,否则验证失败;
所述第二协商模块,用于根据所述服务器证书生成会话密钥并缓存;
所述第二请求验证模块,包括:
第三获取发送子模块,用于从所述硬件钱包中获取硬件钱包证书,并将所述硬件钱包证书发送给所述服务器;
第四获取发送子模块,用于从服务器中获取服务器证书,并将所述服务器证书发送给所述硬件钱包;
所述服务器包括:
第三验证模块,用于判断接收到的所述硬件钱包证书是否与保存的硬件钱包证书匹配,是则服务器对硬件钱包的身份验证成功,触发第三协商模块,否则验证失败;
所述第三协商模块,用于根据所述硬件钱包证书生成会话密钥并缓存;
所述硬件钱包还包括:第四验证模块,用于判断接收到的所述服务器证书是否与预先保存的服务器证书匹配,是则硬件钱包对服务器的身份验证成功,触发第四协商模块,否则验证失败;
所述第四协商模块,用于根据所述服务器证书生成会话密钥并缓存。
27.如权利要求22所述的***,其特征在于,所述第一获取判断模块,包括:
第一获取子模块,用于从所述服务器中获取最新的固件版本号;还用于从所述硬件钱包中获取固件版本号;
第一判断子模块,用于判断从所述服务器中获取的最新的固件版本号是否大于从所述硬件钱包中获取的固件版本号,是则触发第一获取发送提示模块,否则提示用户无需进行固件更新,结束。
28.如权利要求22所述的***,其特征在于,所述上位机还包括:
提示询问接收模块,用于当所述第一获取判断模块判断为是时提示用户有新固件版本存在,并显示新固件版本的详细信息,并询问用户是否继续进行固件更新,当接收到用户的确认触发信息时触发第一获取发送提示模块;当接收到用户的取消触发信息时则结束。
29.如权利要求22所述的***,其特征在于,所述第一获取发送提示模块包括:
第一发送子模块,用于向所述服务器发送获取第一切换脚本的请求;
缓存提示发送子模块,用于接收并缓存所述服务器发送的第一切换脚本密文加密结果,提示用户在硬件钱包上进行确认并给所述硬件钱包发送包含第一切换脚本密文加密结果的指令;
所述服务器包括:第一加密发送模块,用于使用所述会话密钥对保存的第一切换脚本密文进行加密得到第一切换脚本密文加密结果并发送给所述上位机。
30.如权利要求22所述的***,其特征在于,
所述接收提示返回模块,具体用于接收包含第一切换脚本密文加密结果的指令并提示用户确认是否进入固件更新引导模式,当接收到用户的触发信息时,判断触发信息的类型,如为确认键则给所述上位机返回确认信息;
所述第一解密切换模块,具体用于使用所述会话密钥对指令中的所述第一切换脚本密文加密结果进行解密得到第一切换脚本密文,使用所述对称密钥解密所述第一切换脚本密文得到第一切换脚本,通过运行所述第一切换脚本将虚拟机模式切换为固件更新引导模式,硬件钱包自动断电并重启;如为取消键则给上位机返回取消信息。
31.如权利要求28所述的***,其特征在于,所述上位机还包括:
第二判断模块,用于接收到所述硬件钱包返回的确认信息时判断是否超时,是则触发提示询问接收模块,否则触发第一提示模块;
所述第一提示模块,用于提示所述硬件钱包进入固件更新引导模式。
32.如权利要求31所述的***,其特征在于,所述第一提示模块,包括:
第三判断子模块,用于判断接收到的所述硬件钱包返回的触发信息的类型,如为确认信息则触发第一提示子模块,如为取消信息则触发提示询问接收模块;
所述第一提示子模块,用于提示已进入固件更新引导模式。
33.如权利要求23所述的***,其特征在于,所述第二获取发送模块包括:
第三发送子模块,用于向所述服务器发送获取第二切换脚本的请求;
第一接收发送子模块,用于接收所述服务器发送的所述第二切换脚本密文加密结果并将所述第二切换脚本密文加密结果发送给所述硬件钱包的固件引导程序;
所述服务器还包括:第三接收加密发送模块,用于接收所述上位机发送的获取第二切换脚本的请求,使用所述会话密钥对保存的第二切换脚本密文进行加密得到第二切换脚本密文加密结果,并将所述第二切换脚本密文加密结果发送给所述上位机。
34.如权利要求22所述的***,其特征在于,所述第一接收检测模块,具体用于接收用户触发固件更新信息时,开启枚举线程,通过枚举线程检测是否有硬件钱包连接,当检测到有硬件钱包连接时挂起枚举线程,触发第一获取模块。
35.如权利要求23所述的***,其特征在于,所述第二获取发送模块包括:
第四发送子模块,用于向所述服务器发送获取最新版本的固件脚本的请求;
第二接收发送子模块,用于接收所述服务器发送的所述第二切换脚本密文加密结果、所述固件脚本密文加密结果和所述图片脚本密文加密结果,并将所述第二切换脚本密文加密结果、所述固件脚本密文加密结果和所述图片脚本密文加密结果发送给所述硬件钱包;
所述服务器包括:第四接收加密发送模块,用于接收所述上位机发送的获取最新版本的固件脚本的请求,使用会话密钥对最新版本的固件脚本密文、第二切换脚本密文和图片脚本密文进行加密得到固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文,并将固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文加密结果发送给所述上位机;
所述接收解密显示模块,具体用于使用所述会话密钥分别对固件脚本密文加密结果、第二切换脚本密文加密结果和图片脚本密文进行解密得到固件脚本密文、第二切换脚本密文和图片脚本密文,使用保存的对称密钥对分别对固件脚本密文、第二切换脚本密文和图片脚本密文进行解密得到固件脚本、第二切换脚本和图片脚本,根据所述图片脚本显示相应内容。
36.如权利要求35所述的***,其特征在于,所述接收解密运行模块还用于读取配置区中的PIN码和对称密钥并保存;
所述第二接收发送子模块包括:第一接收单元、第一发送单元、第二发送单元、接收判断单元、判断返回单元、第三发送单元;
所述接收解密显示模块包括:接收解密显示单元、接收设置单元、第一检查单元、第一判断单元、第一解密返回单元、第二解密返回单元、计算判断单元;
所述第一接收单元,用于接收所述服务器发送的所述第二切换脚本密文加密结果、所述固件脚本密文加密结果和所述图片脚本密文加密结果;
所述第一发送单元,用于将包含所述图片脚本密文加密结果的命令发送给所述硬件钱包;
所述接收解密显示单元,用于接收所述包含图片脚本密文加密结果的命令,使用所述会话密钥解密所述图片脚本密文加密结果得到图片脚本密文,使用所述对称密钥解密图片脚本密文得到图片脚本,根据图片脚本确定是要显示数据域中的内容,并根据坐标及长度将确定的所述内容显示在所述硬件钱包的屏幕上,给所述上位机返回显示成功信息;
所述第二发送单元,用于给所述硬件钱包发送固件脚本的第一条APDU指令;
所述接收设置单元,用于接收到APDU指令后设置所述固件更新引导模式状态信息为第二信息;
所述第一检查单元,用于检查APDU指令的格式是否符合要求,是则触发所述第一判断单元,否则给所述上位机返回错误信息;
所述第一判断单元,用于判断接收到的APDU指令的类型,如为第一条APDU指令则触发所述第一解密返回单元,如为最后一条APDU指令则触发所述计算判断单元,如为其他则触发所述第二解密返回单元;
所述第一解密返回单元,用于使用所述会话密钥解密APDU指令中的数据域密文得到第一解密结果,再使用所述对称密钥解密所述第一解密结果得到固件哈希值并缓存,给所述上位机返回成功信息;
所述第二解密返回单元,用于使用会话密钥解密APDU指令中的数据域密文得到固件脚本密文,再使用所述对称密钥解密所述固件脚本密文得到固件脚本并缓存,给所述上位机返回成功信息;
所述计算判断单元,用于对缓存中的固件脚本进行哈希运算得到哈希结果,并判断计算得到的哈希结果与缓存的固件哈希值是否一致,是则设置所述固件更新引导模式状态信息为第三信息,给所述上位机返回成功信息,否则给所述上位机返回失败信息;
所述接收判断单元,用于当接收到所述硬件钱包返回的成功信息时,判断固件脚本是否全部发送完成,是则执行步骤B312,否则触发所述判断返回单元;
所述判断返回单元,用于判断固件脚本是否只剩最后一条APDU指令,是则所述上位机给硬件钱包发送固件脚本的最后一条APDU,触发所述第一检查单元,否则所述上位机给硬件钱包发送固件脚本的下一条APDU指令,触发所述第一检查单元;
所述第三发送单元,用于给所述硬件钱包发送所述第二切换脚本密文加密结果。
37.如权利要求22所述的***,其特征在于,
所述第一运行判断模块,具体用于通过运所述接收解密显示模块解密得到的固件脚本更新虚拟机,提示用户不要断开连接并通过显示屏显示更新进度,判断固件更新是否成功,是则触发第二解密切换模块,否则提示更新失败信息并给所述上位机返回更新错误信息;
所述第二解密切换模块,具体用于使用所述会话密钥解密所述第二切换脚本密文加密结果得到第二切换结果密文,使用所述对称密钥解密所述第二切换脚本密文得到第二切换脚本,通过运行所述第二切换脚本,并将固件更新引导模式切换为虚拟机模式,给所述上位机返回更新成功信息,所述硬件钱包断电并重启。
38.如权利要求37所述的***,其特征在于,所述第一运行判断模块中的所述判断固件更新是否成功包括:判断显示屏显示的更新进度与所述图片脚本是否匹配,是则固件更新成功,否则固件更新失败。
39.如权利要求22所述的***,其特征在于,所述上位机还包括:
接收判断提示模块,用于接收并判断所述硬件钱包返回的信息类型,如为更新成功信息则提示固件更新成功,如为更新失败信息则报错,结束。
40.如权利要求39所述的***,其特征在于,所述固件为虚拟机脚本,所述上位机还包括:第三获取判断模块,用于从所述硬件钱包中获取应用程序编号和应用程序的版本号;从所述服务器中获取应用程序的最新版本号;判断从所述服务器中获取的应用程序的最新版本号是否大于从所述硬件钱包中获取的应用程序的版本号,是则触发所述接收判断提示模块,否则报错,结束。
41.如权利要求40所述的***,其特征在于,所述上位机还包括:判断读取模块、跳转提示模块、身份验证模块、第五发送模块、接收发送显示模块、判断提示删除模块;所述服务器包括第三接收返回模块;所述硬件钱包还包括第三运行判断模块、工作返回模块和报错返回模块;
所述判断读取模块,用于判断是否保存有所述应用程序编号,是则读取保存的应用程序编号,触发身份验证模块,否则触发跳转提示模块;
所述跳转提示模块,用于跳转到下载界面,提示用户下载应用程序,结束;
所述身份验证模块,用于对所述硬件钱包的身份进行验证,如验证成功则触发第五发送模块,否则报错,结束;
所述第五发送模块,用于将包括所述应用程序编号的获取应用程序请求发送给所述服务器;
所述第三接收返回模块,用于接收获取应用程序请求并给所述上位机返回对应所述应用程序编号的最新版本的应用程序脚本;
所述接收发送显示模块,用于接收应用程勋脚本并将应用程序脚本发送给所述硬件钱包,显示应用程序安装进度;
所述第三运行判断模块,用于通过运行应用程序脚本安装应用程序,并判断应用程序是否安装成功,是则触发所述工作返回模块,否则触发所述报错返回模块;
所述工作返回模块,用于开始正常工作,并给所述上位机返回应用程序安装成功信息,触发所述判断提示删除模块;
所述报错返回模块,用于报错,并给所述上位机返回安装失败信息,触发所述判断提示删除模块;
所述判断提示删除模块,用于根据接收到的信息判断硬件钱包安装应用程序是否成功,是则提示硬件钱包更新应用程序成功,删除上位机保存的应用程序编号和应用程序的版本号,结束;否则提示硬件钱包更新应用程序失败,结束。
42.如权利要求41所述的***,其特征在于,所述身份验证模块具体用于从所述硬件钱包中获取硬件钱包证书,并将所述硬件钱包证书发送给所述服务器;
所述服务器还包括:第四判断返回模块,用于判断接收到的硬件钱包证书是否与保存的硬件钱包证书匹配,是则验证成功,给上位机返回验证成功信息,否则验证失败,给上位机返回验证失败信息,结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010397854.3A CN111552497B (zh) | 2020-05-12 | 2020-05-12 | 一种硬件钱包的固件更新方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010397854.3A CN111552497B (zh) | 2020-05-12 | 2020-05-12 | 一种硬件钱包的固件更新方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111552497A CN111552497A (zh) | 2020-08-18 |
CN111552497B true CN111552497B (zh) | 2023-04-07 |
Family
ID=72001899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010397854.3A Active CN111552497B (zh) | 2020-05-12 | 2020-05-12 | 一种硬件钱包的固件更新方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111552497B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732288B (zh) * | 2020-12-11 | 2024-05-28 | 北京握奇智能科技有限公司 | 一种数字货币硬件钱包应用升级的方法和装置 |
CN112822182A (zh) * | 2020-12-31 | 2021-05-18 | 北京握奇数据股份有限公司 | 硬件钱包介质替换***及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017127878A1 (en) * | 2016-01-29 | 2017-08-03 | Xard Group Pty Ltd | System and method for updating firmware |
CN109413009A (zh) * | 2017-08-18 | 2019-03-01 | 厦门雅迅网络股份有限公司 | 车辆固件空中升级的方法及计算机可读存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8713559B2 (en) * | 2010-11-15 | 2014-04-29 | Schneider Electric It Corporation | System and method for updating firmware |
US9792439B2 (en) * | 2012-09-19 | 2017-10-17 | Nxp B.V. | Method and system for securely updating firmware in a computing device |
KR20150074414A (ko) * | 2013-12-24 | 2015-07-02 | 현대자동차주식회사 | 펌웨어 업그레이드 방법 및 그 시스템 |
US11157901B2 (en) * | 2016-07-18 | 2021-10-26 | Dream Payments Corp. | Systems and methods for initialization and activation of secure elements |
US20200013052A1 (en) * | 2018-07-05 | 2020-01-09 | Esmart Tech, Inc. | Offline cryptocurrency wallet with secure key management |
CN109257332B (zh) * | 2018-08-15 | 2020-06-02 | 飞天诚信科技股份有限公司 | 数字货币硬件钱包应用更新的安全通道的创建方法及装置 |
CN109408085A (zh) * | 2018-09-27 | 2019-03-01 | 上海和数软件有限公司 | 硬件钱包的升级方法、装置、***和存储介质 |
CN112015455B (zh) * | 2020-10-29 | 2021-03-09 | 上海银基信息安全技术股份有限公司 | 固件升级方法、装置、电子设备和存储介质 |
-
2020
- 2020-05-12 CN CN202010397854.3A patent/CN111552497B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017127878A1 (en) * | 2016-01-29 | 2017-08-03 | Xard Group Pty Ltd | System and method for updating firmware |
CN109413009A (zh) * | 2017-08-18 | 2019-03-01 | 厦门雅迅网络股份有限公司 | 车辆固件空中升级的方法及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111552497A (zh) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106658493B (zh) | 密钥管理方法、装置和*** | |
CN111552497B (zh) | 一种硬件钱包的固件更新方法及*** | |
CN110719166A (zh) | 芯片烧录方法、芯片烧录装置、芯片烧录***及存储介质 | |
US20200106775A1 (en) | Method, device, system for authenticating an accessing terminal by server, server and computer readable storage medium | |
US8256009B2 (en) | Method and apparatus for managing digital rights of secure removable media | |
TWI390938B (zh) | 認證裝置以及認證方法 | |
US10268845B2 (en) | Securing of the loading of data into a nonvolatile memory of a secure element | |
US9461822B2 (en) | Image forming apparatus, control method, and storage medium | |
CN112104672B (zh) | 一种通过微信小程序下载蓝牙设备证书的实现方法及*** | |
TW201544982A (zh) | 機器控制系統、機器控制裝置、機器控制方法以及程式產品 | |
CN113630246A (zh) | 一种智能家居控制方法、装置、电子设备及存储介质 | |
EP3787219A1 (en) | Key processing method and device | |
JP4732805B2 (ja) | サービス利用方法及び端末 | |
CN111405550A (zh) | 一种WhatsApp的key文件提取方法及设备 | |
CN111444496A (zh) | 应用控制方法、装置、设备以及存储介质 | |
CN104852806A (zh) | 一种根据密钥类型进行签名的实现方法 | |
CN107678886B (zh) | 一种保存、恢复应用程序数据的方法及终端设备 | |
CN110716732B (zh) | 一种升级汽车仪表ui和固件程序的装置及方法 | |
CN115357274A (zh) | 远程io设备固件升级方法及*** | |
JP6388622B2 (ja) | 通信システム、端末装置、通信方法、及びプログラム | |
JP5230710B2 (ja) | 画像形成システム | |
WO2021114113A1 (zh) | 刷机处理方法及相关装置 | |
KR20180028308A (ko) | 암호화된 해시값에 기반하여 클라우드 접속 허가를 결정하는 클라우드 시스템, 및 클라우드 접속 방법과 클라우드 단말에 설치된 소켓 데몬 장치 | |
WO2020075640A1 (ja) | 情報処理装置、及び情報処理システム | |
CN113037466B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |