CN116628771A - 芯片安全启动的方法、***、存储介质及终端 - Google Patents

芯片安全启动的方法、***、存储介质及终端 Download PDF

Info

Publication number
CN116628771A
CN116628771A CN202310594864.XA CN202310594864A CN116628771A CN 116628771 A CN116628771 A CN 116628771A CN 202310594864 A CN202310594864 A CN 202310594864A CN 116628771 A CN116628771 A CN 116628771A
Authority
CN
China
Prior art keywords
key
client
data packet
public key
private key
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.)
Pending
Application number
CN202310594864.XA
Other languages
English (en)
Inventor
王超
马千里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xinyicheng Technology Chengdu Co ltd
Original Assignee
Xinyicheng Technology Chengdu Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xinyicheng Technology Chengdu Co ltd filed Critical Xinyicheng Technology Chengdu Co ltd
Priority to CN202310594864.XA priority Critical patent/CN116628771A/zh
Publication of CN116628771A publication Critical patent/CN116628771A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种芯片安全启动的方法、***、存储介质及终端,所述芯片安全启动的方法包括通过主机端生成第一RSA密钥对,将第一RSA密钥对加密后保存并发送至客户端和所述主机端,其中,第一RSA密钥对包括第一公钥和第一私钥;在确定客户端未保存第二私钥之后,生成第二RSA密钥对,将第二RSA密钥对加密后保存至客户端,其中,第二RSA密钥对包括第二公钥和所述第二私钥;通过主机端使用第一私钥和第二公钥对程序镜像数据包签名打包后发送至客户端;在客户端接收程序镜像数据包后进行验证以得到验证结果,根据验证结果选择是否启动对应的应用程序。本发明增强了代码破解难度,提高了芯片启动的安全性。

Description

芯片安全启动的方法、***、存储介质及终端
技术领域
本发明涉及深度学习技术领域,尤其涉及一种芯片安全启动的方法、***、存储介质及终端。
背景技术
目前物联网领域芯片安全启动主要采用通过对程序数据计算哈希值(例如Sha128,Sha256等)生成数据摘要,然后使用一对RSA密钥对完成对数据摘要的加密,即数字签名。主机端(生成代码和RSA密钥对的一方,通常指计算机)通过下发RSA公钥到客户端(芯片端),客户端使用接收到的RSA公钥完成对签名文件中签名信息的解签验证。客户端对签名文件中的代码部分进行哈希值计算,并与解签生成的数据作比较,如果相等,则表示文件合法,芯片端验证文件成功,可以进行下一步操作,例如保存到flash,以后每次上电启动时,ROM中启动代码对文件镜像进行签名验证,验证成功则启动对应代码,否则文件非法,结束启动流程。
但是这种方法主要存在两个安全隐患,一是安全启动保护手段单一,主机端RSA密钥使用明文保存,如果主机端密钥丢失,则失去安全启动保护机制,第三方破解者可以随意运行任何其他版本程序,进而引发更为严重的问题。二是芯片内部应用程序(除ROM代码之外的其他程序)存在可以被复制到另一颗相同类型芯片上运行的风险,例如Flash没有完善的读保护机制时存在此风险。
因此,有必要提供一种新型的芯片安全启动的方法、***、存储介质及终端以解决现有技术中存在的上述问题。
发明内容
本发明的目的在于提供一种芯片安全启动的方法、***、存储介质及终端,增强了代码破解难度,提高了芯片启动的安全性。
为实现上述目的,本发明的所述一种芯片安全启动的方法,包括:
通过主机端生成第一RSA密钥对,将所述第一RSA密钥对加密后保存至客户端和所述主机端,其中,所述第一RSA密钥对包括第一公钥和第一私钥;
在确定所述客户端未保存第二私钥之后,生成第二RSA密钥对,将所述第二RSA密钥对加密后保存至所述客户端,其中,所述第二RSA密钥对包括第二公钥和所述第二私钥;
通过所述主机端使用所述第一私钥和所述第二公钥对程序镜像数据包签名打包后发送至客户端;
在所述客户端接收所述程序镜像数据包后进行验证以得到验证结果,根据所述验证结果选择是否启动对应的应用程序。
本发明所述芯片安全启动的方法的有益效果在于:通过主机端分别生成第一RSA密钥对和第二RSA密钥对,利用第一RSA密钥对和第二RSA密钥对来对程序镜像数据包签名后发送至客户端,通过双重加密的方式提高破解难度,以提高芯片启动的安全性。
可选的,通过主机端生成第一RSA密钥对,将所述第一RSA密钥对加密后保存至客户端和所述主机端,包括:
通过所述主机端生成所述第一公钥和所述第一私钥;
所述主机端通过预设算法生成第一加密密钥,通过所述第一加密密钥对所述第一私钥进行加密后得到第一加密私钥;
所述主机端保存所述第一公钥和所述第一加密私钥之后,将所述第一公钥发送至所述客户端。
可选的,所述将所述第一公钥发送至所述客户端,包括:
所述主机端采用所述第一公钥生成第一数据包,所述第一数据包的第一签名信息由所述第一私钥对所述第一公钥的哈希值签名生成;
所述主机端将所述第一数据包发送至客户端;
所述客户端使用所述第一数据包中的所述第一公钥解签所述第一签名信息以得到第一解签摘要值,计算所述第一公钥的哈希值后得到第一数字摘要值,将所述第一数字摘要值和所述第一解签摘要值比较;
在所述第一数字摘要值和所述第一解签摘要值相等以确定所述第一公钥接收正确之后,所述客户端将所述第一公钥的哈希值写入到存储区域,并更新相关标志,完成所述第一公钥的保存。
可选的,所述在确定所述客户端未保存第二私钥之后,生成第二RSA密钥对,将所述第二RSA密钥对加密后保存至所述客户端,包括:
判断所述客户端是否保存所述第一私钥;
在确定所述客户端未保存所述第一私钥之后,所述主机端生成所述第二公钥和所述第二私钥;
所述主机端根据所述客户端的芯片唯一ID和真随机数动态生成第二加密密钥,根据所述第二加密密钥对所述第二公钥和所述第二私钥进行加密后得到第二加密公钥和第二加密私钥;
采用所述第一私钥对所述第二加密公钥、所述第二加密私钥进行数字签名以得到第二签名信息并生成第二数据包;
所述主机端将所述第二数据包发送至所述客户端之后,所述客户端对所述第二数据包进行验证,在验证通过后保存所述第二公钥和所述第二加密私钥。其有益效果在于:利用客户端的芯片唯一ID和真随机数动态生成第二加密密钥,利用第二RSA密钥对和第一RSA密钥对共同加密提高安全性的同时,由于第二RSA密钥对的第二加密密钥是通过客户端的芯片唯一ID和真随机数动态生成的,即使第一RSA密钥对和第二RSA密钥对被泄露,由于第二RSA密钥对的第二加密密钥是采用芯片唯一ID和真随机数结合得到的,可以确保每颗芯片的加密密钥的唯一性,以解决代码被第三方复制到相同型号芯片运行的问题。
可选的,所述通过客户端对所述第二数据包进行验证,在验证通过后保存所述第二公钥和所述第二加密私钥,包括:
所述客户端对所述所述第一公钥进行验证;
在验证所述第一公钥正确之后,根据所述第一公钥对所述第二签名信息解签以得到解签后的第二解签摘要值;
所述客户端对所述第二数据包中的所述第二加密公钥、所述第二加密私钥进行哈希值计算以得到第二数字摘要值;
在确定所述第二解签摘要值和所述第二数字摘要值相等之后,根据所述第二加密密钥对所述第二加密公钥进行解密以得到所述第二公钥,将所述第二公钥和所述第二加密私钥保存至存储区域,并更新相关标志。
可选的,所述通过所述主机端使用所述第一私钥和所述第二公钥对程序镜像数据包签名打包后发送至客户端,包括:
采用所述第二公钥对程序镜像原始数据进行签名以得到第三签名信息;
采用所述第一私钥对所述第三签名信息进行签名以得到第四签名信息;
根据所述第三签名信息和所述第四签名信息生成所述程序镜像数据包并发送至所述客户端。
可选的,所述采用所述第二公钥对程序镜像原始数据进行签名以得到第三签名信息,包括:
计算所述程序镜像原始数据的哈希值并生成第三摘要值;
采用所述第二公钥对所述第三摘要值进行数字签名以得到所述第三签名信息;
所述采用所述第一私钥对所述第三签名信息进行签名以得到第四签名信息,包括:
计算所述第三签名信息的哈希值并得到第四摘要值;
采用所述第一私钥对所述第四摘要值进行数字签名以得到所述第四签名信息。
可选的,所述程序镜像数据包中包括依次排列的所述第一公钥、所述第四签名信息、所述第三签名信息和所述程序镜像原始数据。
可选的,所述在所述客户端接收所述程序镜像数据包后进行验证以得到验证结果,包括:
验证所述程序镜像数据包中的所述第一公钥与存储的所述第一公钥是否相同;
在确定两者相同之后,采用所述第一公钥对所述程序镜像数据包中的所述第四签名信息进行解签以得到第四摘要值,并对所述程序镜像数据包中的所述第三签名信息进行哈希值计算以得到所述第五摘要值;
在确定所述第五摘要值和所述第四摘要值相等之后,采用所述第二密钥对所述第二加密私钥进行解密以生成所述第二私钥;
采用所述第二私钥对所述第三签名信息进行解签以生成第三摘要值,对所述程序镜像原始数据进行哈希值计算并生成第六摘要值;
在所述第三摘要值和所述第六摘要值相等时确定所述程序镜像数据包验证通过,否则验证不通过。
可选的,所述根据所述验证结果选择是否启动对应的应用程序,包括:
在所述程序镜像数据包验证通过之后,保存所述程序镜像数据包并对应启动应用程序;
在所述程序镜像数据包验证不通过之后,结束启动流程。
可选的,所述采用所述第二密钥对所述第二加密私钥进行解密以生成所述第二私钥,包括:
在所述客户端读取所述存储区域确定所述第二加密私钥存在之后,从所述存储区域读取所述第二加密私钥;
启动代码读取所述客户端的芯片唯一ID和真随机数以生成所述第二密钥;
通过所述第二密钥对所述第二加密私钥进行解密以生成所述第二私钥。
本发明还公开了一种芯片安全启动的***,包括:
第一加密模块,用于通过主机端生成第一RSA密钥对,将所述第一RSA密钥对加密后保存至客户端和所述主机端,其中,所述第一RSA密钥对包括第一公钥和第一私钥;
第二加密模块,用于在确定所述客户端未保存第二私钥之后,生成第二RSA密钥对,将所述第二RSA密钥对加密后保存至所述客户端,其中,所述第二RSA密钥对包括第二公钥和所述第二私钥;
发送模块,用于通过所述主机端使用所述第一私钥和所述第二公钥对程序镜像数据包签名打包后发送至客户端;
验证启动模块,用于在所述客户端接收所述程序镜像数据包后进行验证以得到验证结果,根据所述验证结果选择是否启动对应的应用程序。
本发明所述芯片安全启动的***的有益效果在于:通过第一加密模块和第二加密模块分别生成第一RSA密钥对和第二RSA密钥对,利用第一RSA密钥对和第二RSA密钥对来对程序镜像数据包签名后发送至客户端,通过双重加密的方式提高破解难度,以提高芯片启动的安全性。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的芯片安全启动的方法。
本发明还公开了一种终端,包括:处理器及存储器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行上述的芯片安全启动的方法。
附图说明
图1为本发明所述芯片安全启动的方法的流程图;
图2为本发明所述芯片安全启动的方法中主机端生成并保存第一RSA密钥对的流程图;
图3为本发明所述芯片安全启动的方法中发送第一公钥至客户端的流程图;
图4为本发明所述芯片安全启动的方法中第一数据包的格式示意图;
图5为本发明所述芯片安全启动的方法中主机端生成第二RS密钥对的流程图;
图6为本发明所述芯片安全启动的方法中第二数据包的格式示意图;
图7为本发明所述芯片安全启动的方法中发送程序镜像数据包至客户端的流程图;
图8为本发明所述芯片安全启动的方法中程序镜像数据包的格式示意图;
图9为本发明所述芯片安全启动的方法中对程序镜像数据包的验证过程示意图;
图10为本发明所述芯片安全启动的方法中第二加密私钥的解密示意图;
图11为本发明所述芯片安全启动的***的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。除非另外定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本文中使用的“包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
针对现有技术存在的问题,本发明的实施例提供了一种芯片安全启动的方法,参考图1,包括如下步骤:
S101、通过主机端生成第一RSA密钥对,将所述第一RSA密钥对加密后保存至客户端和所述主机端,其中,所述第一RSA密钥对包括第一公钥和第一私钥。
在一些实施例中,通过主机端生成第一RSA密钥对,将所述第一RSA密钥对加密后保存至客户端和所述主机端,包括:
通过所述主机端生成所述第一公钥和所述第一私钥;
所述主机端通过预设算法生成第一加密密钥,通过所述第一加密密钥对所述第一私钥进行加密后得到第一加密私钥;
所述主机端保存所述第一公钥和所述第一加密私钥之后,将所述第一公钥发送至所述客户端。
在本实施例中,参考图2,首先通过主机端生成第一RSA密钥对,比如1024位的密钥,所述第一RSA密钥对包括第一公钥public-keyA和第一私钥private-keyA,之后主机端通过预设算法动态生成第一加密密钥E,并通过第一加密密钥E对第一私钥private-keyA进行加密后生成第一加密私钥,之后主机端分别保存第一加密私钥的密文和第一公钥的明文至指定文件上,同时将第一公钥public-keyA发送至客户端之中。
在一些实施例中,所述将所述第一公钥发送至所述客户端,包括:
所述主机端采用所述第一公钥生成第一数据包,所述第一数据包的第一签名信息由所述第一私钥对所述第一公钥的哈希值签名生成;
所述主机端将所述第一数据包发送至客户端;
所述客户端使用所述第一数据包中的所述第一公钥解签所述第一签名信息以得到第一解签摘要值,计算所述第一公钥的哈希值后得到第一数字摘要值,将所述第一数字摘要值和所述第一解签摘要值比较;
在所述第一数字摘要值和所述第一解签摘要值相等以确定所述第一公钥接收正确之后,所述客户端将所述第一公钥的哈希值写入到存储区域,并更新相关标志,完成所述第一公钥的保存。
示例性的,参考图3,首先主机端采用第一公钥public-keyA生成第一数据包,第一数据包的第一签名信息由第一私钥private-keyA对第一公钥public-keyA的哈希值签名生成,生成的第一数据包的格式参考图4,由上到下依次包括第一公钥public-keyA、第一公钥public-keyA的哈希值Signature-A和第一公钥public-keyA。之后主机端将所述数据包发送至客户端,客户端使用数据包中的第一公钥public-keyA对数据包中的第一签名信息进行解签得到第一解签摘要值,同时计算第一公钥public-keyA的哈希值得到第一数字摘要值,并对第一解签摘要值和第一数字摘要值进行比较,在确定第一解签摘要值和第一数字摘要值相等之后,客户端即可确定对第一公钥public-keyA接收正确,之后客户端将第一公钥public-keyA的哈希值写入一次性可编程区域(One Time Programmable,OTP)或者可编程存储区域,并更新相关标志flag之后完成对第一公钥public-keyA的保存。
S102、在确定所述客户端未保存第二私钥之后,生成第二RSA密钥对,并将所述第二RSA密钥对加密后保存至所述客户端,其中,所述第二RSA密钥对包括第二公钥和第二私钥。
在一些实施例中,所述在确定所述客户端未保存第二私钥之后,生成第二RSA密钥对,将所述第二RSA密钥对加密后保存至所述客户端,所述第二RSA密钥对包括第二公钥和所述第二私钥,包括:
判断所述客户端是否保存所述第一私钥;
在确定所述客户端未保存所述第一私钥之后,所述主机端生成所述第二公钥和所述第二私钥;
所述主机端根据所述客户端的芯片唯一ID和真随机数动态生成第二加密密钥,根据所述第二加密密钥对所述第二公钥和所述第二私钥进行加密后得到第二加密公钥和第二加密私钥;
采用所述第一私钥对所述第二加密公钥、所述第二加密私钥进行数字签名以得到第二签名信息并生成第二数据包;
所述主机端将所述第二数据包发送至所述客户端之后,所述客户端对所述第二数据包进行验证,在验证通过后保存所述第二公钥和所述第二加密私钥。
在本实施例中,参考图5,首先主机端和客户端建立通信,以确定客户端中是否保存第一私钥private-keyA,如果客户端中保存了第一私钥private-keyA,则结束操作,而当客户端中没有保存第一私钥private-keyA,则主机端生成第二RSA密钥对,比如1024位的密钥,包括第二私钥private-keyB和第二公钥public-keyB,之后主机端获取客户端的芯片唯一ID和真随机数,以根据芯片唯一ID和真随机数随机生成第二加密密钥,之后主机端使用第二加密密钥对第二私钥private-keyB和第二公钥public-keyB进行加密之后,得到第二加密私钥和第二加密公钥,同时采用第一私钥private-keyA对第二加密私钥和第二加密公钥进行数字签名以得到第二签名信息,同时生成第二数据包,生成的第二数据包的格式参考图6,由上到下依次包括第一公钥public-keyA、第二加密私钥的哈希值Signature-B和第二加密私钥private-keyB,并将第二数据包发送至客户端。客户端在接收到第二数据包之后对第二数据包进行验证,并在验证通过后将第二公钥和第二加密私钥保存起来。
在有一些实施例中,所述通过客户端对所述第二数据包进行验证,在验证通过后保存所述第二公钥和所述第二加密私钥,包括:
所述客户端对所述所述第一公钥进行验证;
在验证所述第一公钥正确之后,根据所述第一公钥对所述第二签名信息解签以得到解签后的第二解签摘要值;
所述客户端对所述第二数据包中的所述第二加密公钥、所述第二加密私钥进行哈希值计算以得到第二数字摘要值;
在确定所述第二解签摘要值和所述第二数字摘要值相等之后,根据所述第二加密密钥对所述第二加密公钥进行解密以得到所述第二公钥,将所述第二公钥和所述第二加密私钥保存至存储区域,并更新相关标志。
具体的,为了对第二数据包进行验证,首先对第一公钥public-keyA进行验证,如果第一公钥public-keyA错误则直接结束,如果第一公钥public-keyA正确,则客户端通过第一公钥public-keyA对第二数据包中的第二签名信息进行解签以得到解签后的第二解签摘要值,另一方面,客户端对第二数据包中的第二加密私钥进行哈希值计算以得到第二数字摘要值,通过判断第二解签摘要值和第二数字摘要值的大小,在确定第二解签摘要值和第二数字摘要值两者相等之后,即可确定验证通过,则客户端根据芯片唯一ID和真随机数生成第二加密密钥,并利用第二加密密钥对第二加密公钥进行解密以得到第二公钥public-keyB,之后客户端将第二公钥public-keyB的明文和第二加密私钥的密文保存至相关的存储区域之中,同时更新相关标志flag之后,客户端即可完成对第二密钥的保存过程,便于后期进行启动验证。
S103、通过所述主机端使用所述第一私钥和所述第二公钥对程序镜像数据包签名打包后发送至客户端。
在一些实施例中,所述通过所述主机端使用所述第一私钥和所述第二公钥对程序镜像数据包签名打包后发送至客户端,包括:
采用所述第二公钥对程序镜像原始数据进行签名以得到第三签名信息;
采用所述第一私钥对所述第三签名信息进行签名以得到第四签名信息;
根据所述第三签名信息和所述第四签名信息生成所述程序镜像数据包并发送至所述客户端。
示例性的,参考图7,主机端首先采用第二公钥对程序镜像原始数据进行签名以得到第三签名信息,其中,程序镜像原始数据为待启动的应用程序的原始数据。类似的,使用第一私钥private-keyA对第三签名信息进行签名以得到第四签名信息,之后根据第三签名信息和第四签名信息生成对应的程序镜像数据包并发送至客户端,即可便于客户端对程序镜像数据包进行验证。
在一些实施例中,所述采用所述第二公钥public-keyB对程序镜像原始数据进行签名以得到第三签名信息,包括:
计算所述程序镜像原始数据的哈希值并生成第三摘要值;
采用所述第二公钥对所述第三摘要值进行数字签名以得到所述第三签名信息;
所述采用所述第一私钥对所述第三签名信息进行签名以得到第四签名信息,包括:
计算所述第三签名信息的哈希值并得到第四摘要值;
采用所述第一私钥对所述第四摘要值进行数字签名以得到所述第四签名信息。
在一些实施例中,参考图8,所述程序镜像数据包中包括依次排列的所述第一公钥、所述第四签名信息、所述第三签名信息和所述程序镜像原始数据。
具体的,生成第三签名信息和第四签名信息的过程如下,主机端首先计算程序镜像原始数据的哈希值并生成第三摘要值,之后采用第二公钥public-keyB对第三摘要值进行数字签名以得到第三签名信息S1,同样的计算第三签名信息的哈希值并得到第四摘要值,并采用第一私钥private-keyA对第四摘要值进行数字签名以得到第四签名信息S2,将第一公钥public-keyA、第四签名信息S2、第三签名信息S1和程序镜像原始数据按序排列在一起,即可生成程序镜像数据包。
S104、在所述客户端接收所述程序镜像数据包后进行验证以得到验证结果,根据所述验证结果选择是否启动对应的应用程序。
在又一些实施例中,所述在所述客户端接收所述程序镜像数据包后进行验证以得到验证结果,包括:
验证所述程序镜像数据包中的所述第一公钥与存储的所述第一公钥是否相同;
在确定两者相同之后,采用所述第一公钥对所述程序镜像数据包中的所述第四签名信息进行解签以得到第四摘要值,并对所述程序镜像数据包中的所述第三签名信息进行哈希值计算以得到所述第五摘要值;
在确定所述第五摘要值和所述第四摘要值相等之后,采用所述第二密钥对所述第二加密私钥进行解密以生成所述第二私钥;
采用所述第二私钥对所述第三签名信息进行解签以生成第三摘要值,对所述程序镜像原始数据进行哈希值计算并生成第六摘要值;
在所述第三摘要值和所述第六摘要值相等时确定所述程序镜像数据包验证通过,否则验证不通过。
参考图9,在客户端接收到主机端发送的程序镜像数据包之后,首先对程序镜像数据包中存储的第一公钥public-keyA与其自身存储的第一公钥public-keyA进行比对判断是否相同,当确定两者相同之后即可确定第一公钥第一公钥public-keyA有效,之后采用第一公钥public-keyA对程序镜像数据包中的第四签名信息S2进行解签以得到第四摘要值,同时对程序镜像数据包中的第三签名信息进行哈希值计算以得到第五摘要值,当第四摘要值和第五摘要值不相等的时候即可确定程序镜像数据包验证不通过。而当第四摘要值和第五摘要值相等,即可进行后续的判断,之后采用客户端的第二密钥对所述第二加密私钥进行解密以得到第二私钥private-keyB的明文,之后采用第二私钥private-keyB对第三签名信息S1进行解签以生成第三摘要值,同时客户端对程序镜像数据包中的程序镜像原始数据进行哈希值计算以生成第六摘要值,当确定第三摘要值和第六摘要值的大小相等之后,确定程序镜像数据包验证通过,否则验证不通过。
在另外一些实施例中,所述根据所述验证结果选择是否启动对应的应用程序,包括:
在所述程序镜像数据包验证通过之后,保存所述程序镜像数据包并对应启动应用程序;
在所述程序镜像数据包验证不通过之后,结束启动流程。
在本实施例中,当客户端对程序镜像数据包验证通过之后,确定当前的程序镜像数据包是被授权的且安全的,将所述程序镜像数据包保存并启动对应的应用程序,完成芯片的启动过程,而当程序镜像数据包,验证不通过之后就结束流程。
进一步的,在后续芯片启动的过程中,都采用上述的方法对程序镜像数据包进行验证,验证通过后即可启动对应的应用程序,验证不通过之后则结束流程,此处不再赘述。
在一些实施例中,所述采用所述第二密钥对所述第二加密私钥进行解密以生成所述第二私钥,包括:
在所述客户端读取所述存储区域确定所述第二加密私钥存在之后,从所述存储区域读取所述第二加密私钥;
启动代码读取所述客户端的芯片唯一ID和真随机数以生成所述第二密钥;
通过所述第二密钥对所述第二加密私钥进行解密以生成所述第二私钥。
示例性的,参考图10,在客户端确定第二加密私钥存在之后,启动代码读取客户端的芯片唯一ID和真随机数生成第二密钥,通过第二密钥对第二加密私钥进行解密以生成第二私钥。
本发明所述的芯片安全启动的方法通过同时使用两对RSA密钥对、哈希值计算、AES加密技术、芯片唯一ID和真随机数结合有效增加了芯片安全启动中代码破解难度。即使两对RSA密钥对同时泄露,由于芯片唯一ID和真随机数的结合得到的第二密钥,可以确保每颗芯片的AES密钥的唯一性,以此解决代码被第三方复制到相同型号芯片运行的问题,利用第一RSA密钥对和第二RSA密钥对来对程序镜像数据包签名后发送至客户端,通过双重加密的方式提高破解难度,以提高芯片启动的安全性。
本发明还公开了一种芯片安全启动的***,参考图11,包括:
第一加密模块1101,用于通过主机端生成第一RSA密钥对,将所述第一RSA密钥对加密后保存至客户端和所述主机端,其中,所述第一RSA密钥对包括第一公钥和第一私钥;
第二加密模块1102,用于在确定所述客户端未保存第二RSA密钥对之后,生成所述第二RSA密钥对,将所述第二RSA密钥对加密后保存至所述客户端,其中,所述第二RSA密钥对包括第二公钥和第二私钥;
发送模块1103,用于通过所述主机端使用所述第一私钥和所述第二公钥对程序镜像数据包签名打包后发送至客户端;
验证启动模块1104,用于在所述客户端接收所述程序镜像数据包后进行验证以得到验证结果,根据所述验证结果选择是否启动对应的应用程序。
需要说明的是,上述芯片安全启动的***的结构及原理与上述芯片安全启动的方法中的步骤一一对应,故在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,选择模块可以为单独设立的处理元件,也可以集成在上述***的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述***的存储器中,由上述***的某一个处理元件调用并执行以上x模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,ASIC),或,一个或多个数字信号处理器(Digital Signal Processor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上***(System-On-a-Chip,芯片)的形式实现。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的芯片安全启动的方法。
本发明还公开了一种终端,包括:处理器及存储器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行上述的芯片安全启动的方法。
本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的芯片安全启动的方法。
本发明的存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述的方法。所述存储介质包括:只读存储器(Read-Only Memory,ROM)、随机访问存储器(Random Access Memory,RAM)、磁碟、U盘、存储卡或者光盘等各种可以存储程序代码的介质。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明公开的另一个实施例中,本发明还提供一种芯片***,芯片***与存储器耦合,用于读取并执行所述存储器中存储的程序指令,以执行上述芯片安全启动的方法的步骤。
虽然在上文中详细说明了本发明的实施方式,但是对于本领域的技术人员来说显而易见的是,能够对这些实施方式进行各种修改和变化。但是,应理解,这种修改和变化都属于权利要求书中所述的本发明的范围和精神之内。而且,在此说明的本发明可有其它的实施方式,并且可通过多种方式实施或实现。

Claims (14)

1.一种芯片安全启动的方法,其特征在于,包括:
通过主机端生成第一RSA密钥对,将所述第一RSA密钥对加密后保存至客户端和所述主机端,其中,所述第一RSA密钥对包括第一公钥和第一私钥;
在确定所述客户端未保存第二私钥之后,生成第二RSA密钥对,并将所述第二RSA密钥对加密后保存至所述客户端,其中,所述第二RSA密钥对包括第二公钥和所述第二私钥;
通过所述主机端使用所述第一私钥和所述第二公钥对程序镜像数据包签名打包后发送至客户端;
在所述客户端接收所述程序镜像数据包后进行验证以得到验证结果,根据所述验证结果选择是否启动对应的应用程序。
2.根据权利要求1所述的芯片安全启动的方法,其特征在于,通过主机端生成第一RSA密钥对,将所述第一RSA密钥对加密后保存至客户端和所述主机端,包括:
通过所述主机端生成所述第一公钥和所述第一私钥;
所述主机端通过预设算法生成第一加密密钥,通过所述第一加密密钥对所述第一私钥进行加密后得到第一加密私钥;
所述主机端保存所述第一公钥和所述第一加密私钥之后,将所述第一公钥发送至所述客户端。
3.根据权利要求2所述的芯片安全启动的方法,其特征在于,所述将所述第一公钥发送至所述客户端,包括:
所述主机端采用所述第一公钥生成第一数据包,所述第一数据包的第一签名信息由所述第一私钥对所述第一公钥的哈希值签名生成;
所述主机端将所述第一数据包发送至客户端;
所述客户端使用所述第一数据包中的所述第一公钥解签所述第一签名信息以得到第一解签摘要值,计算所述第一公钥的哈希值后得到第一数字摘要值,将所述第一数字摘要值和所述第一解签摘要值比较;
在所述第一数字摘要值和所述第一解签摘要值相等以确定所述第一公钥接收正确之后,所述客户端将所述第一公钥的哈希值写入到存储区域,并更新相关标志,完成所述第一公钥的保存。
4.根据权利要求2所述的芯片安全启动的方法,其特征在于,所述在确定所述客户端未保存第二私钥之后,生成第二RSA密钥对,并将所述第二RSA密钥对加密后保存至所述客户端,包括:
判断所述客户端是否保存所述第二私钥;
在确定所述客户端未保存所述第二私钥之后,所述主机端生成所述第二公钥和所述第二私钥;
所述主机端根据所述客户端的芯片唯一ID和真随机数动态生成第二加密密钥,根据所述第二加密密钥对所述第二公钥和所述第二私钥进行加密后得到第二加密公钥和第二加密私钥;
采用所述第一私钥对所述第二加密公钥、所述第二加密私钥进行数字签名以得到第二签名信息并生成第二数据包;
所述主机端将所述第二数据包发送至所述客户端之后,所述客户端对所述第二数据包进行验证,在验证通过后保存所述第二公钥和所述第二加密私钥。
5.根据权利要求4所述的芯片安全启动的方法,其特征在于,所述通过客户端对所述第二数据包进行验证,在验证通过后保存所述第二公钥和所述第二加密私钥,包括:
所述客户端对所述所述第一公钥进行验证;
在验证所述第一公钥正确之后,根据所述第一公钥对所述第二签名信息解签以得到解签后的第二解签摘要值;
所述客户端对所述第二数据包中的所述第二加密公钥、所述第二加密私钥进行哈希值计算以得到第二数字摘要值;
在确定所述第二解签摘要值和所述第二数字摘要值相等之后,根据所述第二加密密钥对所述第二加密公钥进行解密以得到所述第二公钥,将所述第二公钥和所述第二加密私钥保存至存储区域,并更新相关标志。
6.根据权利要求1所述的芯片安全启动的方法,其特征在于,所述通过所述主机端使用所述第一私钥和所述第二公钥对程序镜像数据包签名打包后发送至客户端,包括:
采用所述第二公钥对程序镜像原始数据进行签名以得到第三签名信息;
采用所述第一私钥对所述第三签名信息进行签名以得到第四签名信息;
根据所述第三签名信息和所述第四签名信息生成所述程序镜像数据包并发送至所述客户端。
7.根据权利要求6所述的芯片安全启动的方法,其特征在于,所述采用所述第二公钥对程序镜像原始数据进行签名以得到第三签名信息,包括:
计算所述程序镜像原始数据的哈希值并生成第三摘要值;
采用所述第二公钥对所述第三摘要值进行数字签名以得到所述第三签名信息;
所述采用所述第一私钥对所述第三签名信息进行签名以得到第四签名信息,包括:
计算所述第三签名信息的哈希值并得到第四摘要值;
采用所述第一私钥对所述第四摘要值进行数字签名以得到所述第四签名信息。
8.根据权利要求7所述的芯片安全启动的方法,其特征在于,所述程序镜像数据包中包括依次排列的所述第一公钥、所述第四签名信息、所述第三签名信息和所述程序镜像原始数据。
9.根据权利要求7所述的芯片安全启动的方法,其特征在于,所述在所述客户端接收所述程序镜像数据包后进行验证以得到验证结果,包括:
验证所述程序镜像数据包中的所述第一公钥与存储的所述第一公钥是否相同;
在确定两者相同之后,采用所述第一公钥对所述程序镜像数据包中的所述第四签名信息进行解签以得到第四摘要值,并对所述程序镜像数据包中的所述第三签名信息进行哈希值计算以得到所述第五摘要值;
在确定所述第五摘要值和所述第四摘要值相等之后,采用所述第二密钥对所述第二加密私钥进行解密以生成所述第二私钥;
采用所述第二私钥对所述第三签名信息进行解签以生成第三摘要值,对所述程序镜像原始数据进行哈希值计算并生成第六摘要值;
在所述第三摘要值和所述第六摘要值相等时确定所述程序镜像数据包验证通过,否则验证不通过。
10.根据权利要求9所述的芯片安全启动的方法,其特征在于,所述根据所述验证结果选择是否启动对应的应用程序,包括:
在所述程序镜像数据包验证通过之后,保存所述程序镜像数据包并对应启动应用程序;
在所述程序镜像数据包验证不通过之后,结束启动流程。
11.根据权利要求9所述的芯片安全启动的方法,其特征在于,所述采用所述第二密钥对所述第二加密私钥进行解密以生成所述第二私钥,包括:
在所述客户端读取所述存储区域确定所述第二加密私钥存在之后,从所述存储区域读取所述第二加密私钥;
启动代码读取所述客户端的芯片唯一ID和真随机数以生成所述第二密钥;
通过所述第二密钥对所述第二加密私钥进行解密以生成所述第二私钥。
12.一种芯片安全启动的***,其特征在于,包括:
第一加密模块,用于通过主机端生成第一RSA密钥对,将所述第一RSA密钥对加密后保存至客户端和所述主机端,其中,所述第一RSA密钥对包括第一公钥和第一私钥;
第二加密模块,用于在确定所述客户端未保存第二私钥之后,生成第二RSA密钥对,并将所述第二RSA密钥对加密后保存至所述客户端,其中,所述第二RSA密钥对包括第二公钥和所述第二私钥;
发送模块,用于通过所述主机端使用所述第一私钥和所述第二公钥对程序镜像数据包签名打包后发送至客户端;
验证启动模块,用于在所述客户端接收所述程序镜像数据包后进行验证以得到验证结果,根据所述验证结果选择是否启动对应的应用程序。
13.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的芯片安全启动的方法。
14.一种终端,其特征在于,包括:处理器及存储器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行权利要求1至11中任一项所述的芯片安全启动的方法。
CN202310594864.XA 2023-05-24 2023-05-24 芯片安全启动的方法、***、存储介质及终端 Pending CN116628771A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310594864.XA CN116628771A (zh) 2023-05-24 2023-05-24 芯片安全启动的方法、***、存储介质及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310594864.XA CN116628771A (zh) 2023-05-24 2023-05-24 芯片安全启动的方法、***、存储介质及终端

Publications (1)

Publication Number Publication Date
CN116628771A true CN116628771A (zh) 2023-08-22

Family

ID=87636094

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310594864.XA Pending CN116628771A (zh) 2023-05-24 2023-05-24 芯片安全启动的方法、***、存储介质及终端

Country Status (1)

Country Link
CN (1) CN116628771A (zh)

Similar Documents

Publication Publication Date Title
US11757662B2 (en) Confidential authentication and provisioning
CN108809646B (zh) 安全共享密钥共享***
CN109510708B (zh) 一种基于Intel SGX机制的公钥密码计算方法和***
US8462955B2 (en) Key protectors based on online keys
US20180013555A1 (en) Data transmission method and apparatus
US7693286B2 (en) Method of delivering direct proof private keys in signed groups to devices using a distribution CD
US9185111B2 (en) Cryptographic authentication techniques for mobile devices
US8495383B2 (en) Method for the secure storing of program state data in an electronic device
EP3001598B1 (en) Method and system for backing up private key in electronic signature token
US20070211893A1 (en) Encryption and verification using partial public key
JP2017517979A (ja) 署名生成および暗号化/暗号解読のための共通法rsa鍵対
CN112152792A (zh) 基于mts的相互认证的远程证明
CN113268715A (zh) 软件加密方法、装置、设备及存储介质
CN103546289A (zh) 一种基于USBKey的安全传输数据的方法及***
EP2538366B1 (en) Generating secure device secret key
CN112351037B (zh) 用于安全通信的信息处理方法及装置
WO2006025952A2 (en) Method of delivering direct proof private keys to devices using a distribution cd
US20230325516A1 (en) Method for file encryption, terminal, electronic device and computer-readable storage medium
CN111241492A (zh) 一种产品多租户安全授信方法、***及电子设备
CN108242997B (zh) 安全通信的方法与设备
CN116628771A (zh) 芯片安全启动的方法、***、存储介质及终端
CN114297673A (zh) 一种口令验证方法、固态硬盘和上位机
CN110858246B (zh) 安全代码空间的认证方法和***、及其注册方法
CN114070564A (zh) 数字签名的方法和装置
TW202314543A (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