CN110298145A - 一种基于公开密钥密码算法的固件程序装载保护方法 - Google Patents
一种基于公开密钥密码算法的固件程序装载保护方法 Download PDFInfo
- Publication number
- CN110298145A CN110298145A CN201910583473.1A CN201910583473A CN110298145A CN 110298145 A CN110298145 A CN 110298145A CN 201910583473 A CN201910583473 A CN 201910583473A CN 110298145 A CN110298145 A CN 110298145A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- plaintext
- public key
- mark
- password
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000012795 verification Methods 0.000 claims abstract description 60
- 230000008569 process Effects 0.000 claims abstract description 21
- 238000001629 sign test Methods 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 26
- 230000004913 activation Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 abstract description 12
- 238000012790 confirmation Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例涉及一种基于公开密钥密码算法的固件程序装载保护方法,包括:生成第一公钥和第一私钥;接收上位机根据算法标识生成并发送的第二公钥;根据算法标识、第一私钥,对第一校验数据进行解密处理,生成第一明文;对第一明文进行拆解;对第一用户名和第一口令进行第一校验处理;当第一校验成功后,对第二校验数据进行解密处理,生成第二明文和第二明文长度;进行第二校验处理;当第二校验成功后,对第二明文进行拆解,生成第三明文和第一签名;进行第三校验处理;当第三校验成功后,将第三明文写入固件文件并激活。由此,实现了固件装载的操作权限管制,实现了固件装载的代码完整性确认,实现了固件装载过程的数据传输加密防护。
Description
技术领域
本发明涉及计算机嵌入式软件领域,特别涉及到一种基于公开密钥密码算法的固件程序装载保护方法。
背景技术
固件程序是单片机嵌入式操作系统的启动引导程序,不但负责单片机在启动过程中对所有硬件的初始化,还负责应用层代码的系统区数据维护,如果固件程序在装载过程中发生错误或者被恶意篡改,则会直接导致单片机出现不工作或者工作失误的重大安全事故。
发明内容
本发明的目的,就是针对上述技术缺陷,通过提供的一种基于公开密钥密码算法的固件程序装载保护方法,实现了固件装载的操作权限管制,实现了固件装载的代码完整性确认,实现了固件装载过程的数据传输加密防护。
为实现上述目的,本发明提供了一种基于公开密钥密码算法的固件程序装载保护方法,包括:
接收上位机发送的算法标识,根据所述算法标识,生成第一公钥和第一私钥;
向所述上位机发送所述第一公钥;
接收所述上位机根据所述算法标识生成并发送的第二公钥;
接收所述上位机发送的第一校验数据、第二校验数据;
根据所述算法标识、第一私钥,对所述第一校验数据进行解密处理,生成第一明文;
对所述第一明文进行拆解,生成第一用户名和第一口令;
对所述第一用户名和所述第一口令,进行第一校验处理;
当所述第一校验成功后,根据所述算法标识、第一私钥,对所述第二校验数据进行解密处理,生成第二明文和第二明文长度;
根据所述第二明文长度,对所述第二明文,进行第二校验处理;
当所述第二校验成功后,对所述第二明文进行拆解,生成第三明文和第一签名;
根据所述算法标识、第二公钥,对所述第三明文和所述第一签名,进行第三校验处理;
当所述第三校验成功后,将所述第三明文写入固件程序文件并进行固件程序激活处理。
进一步的,所述根据所述算法标识,生成第一公钥和第一私钥,具体包括:
当所述算法标识的值为第一算法标识时,按照第一公开密钥密码算法,生成第一算法第一公钥和第一算法第一私钥;
当所述算法标识的值为第二算法标识时,按照第二公开密钥密码算法,生成第二算法第一公钥和第二算法第一私钥。
进一步的,所述接收所述上位机根据所述算法标识生成并发送的第二公钥,具体包括:
当所述算法标识的值为第一算法标识时,按照第一公开密钥密码算法,所述上位机生成第一算法第二公钥和第一算法第二私钥,并发送所述第一算法第二公钥。
当所述算法标识的值为第二算法标识时,按照第二公开密钥密码算法,所述上位机生成第二算法第二公钥和第二算法第二私钥,并发送所述第二算法第二公钥。
进一步的,所述根据所述算法标识、第一私钥,对所述第一校验数据进行解密处理,生成第一明文,具体包括:
当所述算法标识的值为所述第一算法标识时,根据所述第一算法第一私钥,按所述第一公开密钥密码算法,对所述第一校验数据进行解密处理,生成第一解密第一明文;
当所述算法标识的值为所述第二算法标识时,根据所述第一算法第一私钥,按所述第二公开密钥密码算法,对所述第一校验数据进行解密处理,生成第二解密第一明文。
进一步的,所述对所述第一明文进行拆解,生成第一用户名和第一口令,具体包括:
对所述第一明文进行拆解,获取所述第一明文的第一口令字节,生成所述第一口令;
对所述第一明文进行拆解,获取所述第一明文的第一用户名字节,生成所述第一用户名。
进一步的,所述对所述第一用户名和所述第一口令,进行第一校验处理,具体包括:
从本地存储区获取第二用户名、第二口令;
对所述第一用户名和所述第二用户名,进行用户名验证处理;
当所述用户名验证处理成功后,对所述第一口令和所述第二口令,进行口令验证处理;
当所述口令验证处理成功,则所述第一校验处理成功。
优选的,所述根据所述算法标识、第一私钥,对所述第二校验数据进行解密处理,生成第二明文和第二明文长度,具体包括:
当所述算法标识的值为所述第一算法标识时,按照第一公开密钥密码算法,根据所述第一算法第一私钥,对所述第二校验数据进行解密处理,生成第一算法临时明文;对所述第一算法临时明文进行拆解,获取所述第一算法临时明文的第一算法第二明文长度字节,生成第一算法第二明文长度;对所述第一算法临时明文进行拆解,获取所述第一算法临时明文的第一算法第二明文字节,生成第一算法第二明文;
当所述算法标识的值为所述第二算法标识时,按照第二公开密钥密码算法,根据所述第二算法第一私钥,对所述第二校验数据进行解密处理,生成第二算法临时明文;对所述第二算法临时明文进行拆解,获取所述第二算法临时明文的第二算法第二明文长度字节,生成第二算法第二明文长度;对所述第二算法临时明文进行拆解,获取所述第二算法临时明文的第二算法第二明文字节,生成第二算法第二明文。
进一步的,所述根据所述第二明文长度,对所述第二明文,进行第二校验处理,具体包括:
计算所述第二明文的长度,生成临时明文长度;
当所述临时明文长度的值与所述第二明文长度的值相等时,所述第二校验成功。
进一步的,所述根据所述算法标识、第二公钥、对所述第三明文和所述第一签名,进行第三校验处理,具体包括:
当所述算法标识的值为所述第一算法标识时,按照第一公开密钥密码算法,根据所述第一算法第二公钥,对所述第三明文和所述第一签名进行验签处理,生成第一验签结果;当第一验签结果为成功时,所述第三校验成功。
当所述算法标识的值为所述第二算法标识时,按照第二公开密钥密码算法,根据所述第二算法第二公钥,对所述第三明文和所述第一签名进行验签处理,生成第二验签结果;当第二验签结果为成功时,所述第三校验成功。
本发明实施例提供的一种基于公开密钥密码算法的固件程序装载保护方法,在上位机需要更新单片机的固件时,通过使用公开密钥密码算法对身份信息(用户名+口令)和固件升级数据进行加密方式传输,避免了明文传输的数据泄露;通过用户名+口令的方式进行身份确认,避免了固件升级没有管理权限的风险;对代码采用签名验签的方式进行核对,避免了数据在传输过程前后发生变化,从而导致下载后程序执行发生的风险;通过在上位机与本地之间采用非对称的公开密钥密码算法,从算法本身加大了恶意破解的难度;通过算法标识,在上位机与本地之间进行多种公开密钥密码算法的选择,使用多组公钥-私钥对,从算法应用角度,再次将恶意破解的几率降低。
附图说明
图1为本发明实施例一提供的一种基于公开密钥密码算法的固件程序装载保护方法工作示意图。
图2为本发明实施例二提供的一种基于公开密钥密码算法的固件程序装载保护方法工作示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例在上位机需要更新单片机的固件的过程中,增加了一系列的防护手段,从而实现了对装载过程的安全保护:固件数据准备阶段,上位机根据算法标识,选择不同实现原理和实现过程的公开密钥密码算法,使用对应的上位机私钥对固件数据进行签名并将签名数据随同固件数据准备一同发送到单片机;身份数据准备阶段,上位机将操作员的用户名与口令组装准备一同发送到单片机;数据发送阶段,上位机根据算法标识,选择不同的公开密钥密码算法,使用对应的单片机公钥,对用户名+口令进行加密生成第一校验数据,对固件+签名进行加密生成第二校验数据,并发送到单片机;数据接收阶段,单片机根据算法标识,选择不同的公开密钥密码算法,使用对应的单片机私钥对第一、二校验数据进行解密,从而提取出身份信息与固件信息;身份校验阶段,单片机根据提取的身份信息完成固件装载权限验证,从而保证装载的操作权限受到管制;代码校验阶段,单片机机根据算法标识,选择不同的公开密钥密码算法,使用对应的上位机公钥,对提取的固件+签名数据进行验签校验,从而保障代码不受篡改。
本发明提到的公开密钥密码算法是一种非对称密钥密码算法,它的加解密过程需要一对密钥才能完成,即公钥-私钥对。非对称密钥密码算法的加密原则是采用公钥对明文进行加密,采用私钥对密文进行解密;非对称密钥密码算法的验签原则是采用私钥进行签名,采用公钥对签名数据进行验签。
本发明提到的交互设备(上位机与单片机)在各自产生公钥-私钥对后,私钥都保存于本地,公钥则需传递给对方。只有这样,上位机通过本地私钥签名的数据,单片机才能通过已接收的上位机公钥进行成功验签;上位机正确接收了单片机发送的单片机公钥,才能确保使用单片机公钥加密了的数据发送给对方后,对方能使用单片机私钥正确解密装载。
下述表1,提供了根据本发明实施固件装载的单片机的算法标识说明。其中第一算法为RSA算法(RSA算法是一种国际通用的公开密钥密码算法),第一算法标识是0x01;第二算法为SM2算法(SM2算法是国密商用算法序列中的公开密钥密码算法),第二算法标识是0x02。当算法标识的值为第一算法标识时,第一算法第一公、私钥就是RSA第一公、私钥,第一算法第二公、私钥就是RSA第二公、私钥;当算法标识的值为第二算法标识时,第二算法第一公、私钥就是SM2第一公、私钥,第二算法第二公、私钥就是SM2第二公、私钥。
(表1)
按表1所示,当上位机决定选择采用RSA算法进行固件装载时,在单片机端采用了本发明方法的实施例一,如图1为本发明实施例一提供的一种基于公开密钥密码算法的固件程序装载保护方法工作示意图所示,方法具体包括以下步骤:
步骤11,接收算法标识,根据算法标识,生成第一公钥和第一私钥。
接收到的算法标识的值为0x01,为第一算法标识,即RSA算法标识;说明上位机期望通过RSA算法完成固件装载过程;单片机在本地按照算法标识指定方式,生成第一公钥第一私钥(即RSA第一公钥和RSA第一私钥)以用于后续处理流程。
步骤12,向上位机发送第一公钥。
此处,算法标识的值为0x01,则单片机向上位机发送的是步骤11中生成的RSA第一公钥。
步骤13,接收上位机根据算法标识生成并发送的第二公钥。
此处,算法标识的值为0x01,上位机按照RSA算法方式生成上位机公钥-私钥对,即RSA第二公钥和RSA第二私钥;为确保后续流程中数据处理无误,上位机将生成的RSA第二公钥发送给单片机。
步骤14,接收第一校验数据、第二校验数据。
此处,第一校验数据为用户名+口令(其中,用户名数据长度具体为8字节,口令数据长度具体为8字节)的加密数据,第二校验数据为原文长度+原文(其中,原文长度的数据长度具体为2字节,原文数据具体为固件代码+签名)的加密数据;第一、二校验数据均采用单片机公钥加密;第二校验数据内包含的签名数据采用上位机私钥签名。
步骤15,根据算法标识、第一私钥,对第一校验数据进行解密处理,生成第一明文。
此处,算法标识的值为0x01,算法环境为RSA算法环境;单片机使用本地存储的RSA第一私钥对第一校验数据进行解密处理,生成第一明文。
步骤16,对第一明文进行拆解,生成第一用户名和第一口令,
具体包括:步骤161,对第一明文进行拆解,获取第一明文的第一口令字节(本实施例为第一明文的第1-8字节),生成第一口令;
步骤162,对第一明文进行拆解,获取第一明文的第一用户名字节(本实施例为第一明文的第9到文末字节),生成第一用户名。
步骤17,对第一用户名和所述第一口令,进行第一校验处理,
具体包括:步骤171,从本地存储区获取第二用户名、第二口令;
步骤172,对第一用户名和第二用户名进行用户名验证处理,即比对第一用户名与第二用户名是否相等,如果相等则用户名验证成功;
步骤173,用户名验证处理成功后,对第一口令和第二口令进行口令验证处理,即比对第一口令与第二口令是否相等,如果相等则口令验证成功;
步骤174,口令验证处理成功,则第一校验处理成功,说明进行装载操作的是合法用户。
步骤18,当第一校验成功后,根据算法标识、第一私钥,对第二校验数据进行解密处理,生成第二明文和第二明文长度,
具体包括:步骤181,算法标识的值为0x01,根据RSA第一私钥,对第二校验数据进行RSA解密,生成第一临时明文;
步骤182,对第一临时明文进行拆解,获取第一临时明文的第二明文长度字节(本实施例为第一临时明文的第1-2字节),生成第二明文长度;
步骤183,对第一临时明文进行拆解,获取第一临时明文的第二明文字节(本实施例是第一临时明文的第3-文末字节),生成第二明文。
步骤19,根据第二明文长度,对第二明文,进行第二校验处理,
具体包括:步骤191,计算第二明文的长度,生成临时明文长度;
步骤192,临时明文长度的值与第二明文长度的值相等,第二校验成功,说明固件代码解密后数据长度未曾遭受破坏。
步骤20,当第二校验成功后,对第二明文进行拆解,生成第三明文和第一签名,
具体包括:步骤201,对第二明文进行拆解,获取第二明文的第三明文字节,生成第三明文;
步骤202,对第二明文进行拆解,获取第二明文的第一签名字节,生成第一签名。
步骤21,根据算法标识、第二公钥、对第三明文和第一签名,进行第三校验处理,
具体包括:步骤211,算法标识的值为0x01说明算法环境为RSA算法环境,根据RSA第二公钥,对第三明文和第一签名进行RSA验签处理,生成第一验签结果;
步骤212,第一验签结果为成功,第三校验成功,说明传输的固件代码未曾遭受到篡改。
步骤22,当第三校验成功后,将第三明文作为固件代码原文写入固件程序并进行固件程序激活处理。
按表1所示,当上位机决定选择采用SM2算法进行固件装载时,单片机端采用了本发明方法的实施例二,如图2为本发明实施例二提供的一种基于公开密钥密码算法的固件程序装载保护方法工作示意图所示,方法具体包括以下步骤:
步骤211,接收算法标识,根据算法标识,生成第一公钥和第一私钥。
此处,接收到的算法标识的值为0x02,为第二算法标识,即SM2算法标识;说明上位机期望通过SM2算法完成固件装载过程;单片机在本地按照算法标识指定方式,生成第一公钥第一私钥(即SM2第一公钥和SM2第一私钥)以用于后续处理流程。
步骤212,向上位机发送SM2第一公钥。
此处,算法标识的值为0x02,单片机向上位机发送的是步骤211中生成的SM2第一公钥。
步骤213,接收上位机根据算法标识生成并发送的SM2第二公钥。
此处,算法标识的值为0x02,上位机按照SM2算法方式生成了上位机的公钥-私钥对,即SM2第二公钥和SM2第二私钥;为确保后续流程中数据处理无误,上位机将生成的SM2第二公钥发送给单片机。
步骤214,接收第一校验数据、第二校验数据。
此处,第一校验数据为用户名+口令(其中,用户名数据长度具体为8字节,口令数据长度具体为8字节)的加密数据,第二校验数据为原文长度+原文(其中,原文长度的数据长度具体为2字节,原文数据具体为固件代码+签名)的加密数据;第一、二校验数据均采用单片机公钥加密;第二校验数据内包含的签名数据采用上位机私钥签名。
步骤215,根据算法标识、第一私钥,对第一校验数据进行解密处理,生成第一明文。
此处,算法标识的值为0x02,算法环境为SM2算法环境;根据约定,第一单片机使用本地存储的SM2第一私钥对第一校验数据进行SM2解密处理,生成第一明文。
步骤216,对第一明文进行拆解,生成第一用户名和第一口令,
具体包括:步骤2161,对第一明文进行拆解,获取第一明文的第一口令字节((本实施例为第一明文的第1-8字节),生成第一口令;
步骤2162,对第一明文进行拆解,获取第一明文的第一用户名字节(本实施例为第一明文的第9到文末字节),生成第一用户名。
步骤217,从本地存储区获取第二用户名、第二口令。
步骤218,判断第一用户名和第二用户名的值是否相等,如果第一用户名和第二用户名的值相等,则表示用户名验证成功,转至步骤219;如果第一用户名和第二用户名的值不相等,则表示用户名验证失败,转至步骤410。
步骤219,判断第一口令和第二口令的值是否相等,如果第一口令和第二口令的值相等,则表示用户口令验证成功,转至步骤220;如果第一口令和第二口令的值不相等,则表示用户口令验证失败,转至步骤420。
步骤220,当第一校验成功后,根据算法标识、第一私钥,对第二校验数据进行解密处理,生成第二明文和第二明文长度,
具体包括:步骤2201,算法标识的值为0x02,根据SM2第一私钥,对第二校验数据进行SM2解密,生成第一临时明文;
步骤2202,对第一临时明文进行拆解,获取第一临时明文的第二明文长度字节(本实施例为第一临时明文的第1-2字节),生成第二明文长度;
步骤2203,对第一临时明文进行拆解,获取第一临时明文的第二明文字节(本实施例是第一临时明文的第3-文末字节),生成第二明文。
步骤221,计算第二明文的长度,生成临时明文长度。
步骤222,判断临时明文长度的值与第二明文长度的值是否相等,如果临时明文长度的值与第二明文长度值相等,则第二校验成功,转至步骤223;如果临时明文长度的值与第二明文长度不相等,则第二校验失败,转至步骤430。
步骤223,当第二校验成功后,对第二明文进行拆解,生成第三明文和第一签名,
具体包括:步骤2231,对第二明文进行拆解,获取第二明文的第三明文字节,生成第三明文;
步骤2232,对第二明文进行拆解,获取第二明文的第一签名字节,生成第一签名。
步骤224,根据算法标识、SM2第二公钥、对第三明文和第一签名,进行验签处理,生成第一验签结果,
具体包括:算法标识的值为0x02,说明算法环境为SM2算法环境,根据SM2第二公钥,对第三明文和第一签名进行SM2验签处理,生成第一验签结果。
步骤225,判断第一验签结果是否成功,如果第一验签结果成功,则第三校验成功,说明传输的固件代码未曾遭受到篡改,转至步骤226;如果第一验签结果失败,则第三校验失败,转至步骤440。
步骤226,当第三校验成功后,将第三明文作为固件代码原文写入固件程序并进行固件程序激活处理。
步骤410,退出流程,返回错误信息:用户名不存在。
导致该项错误的原因主要是上位机传输至单片机的用户名与本地存储的用户名不符。
步骤420,退出流程,返回错误信息:口令验证失败。
导致该项错误的原因主要是上位机传输至单片机额的用户口令与本地存储的用户口令不符。
步骤430,退出流程,返回错误信息:固件明文长度错误。
导致该项错误的原因主要是上位机传输至单片机的固件代码经过解密之后发现数据长度发生变化。
步骤440,退出流程,返回错误信息:固件验签错误。
导致该项错误的原因主要是上位机传输至单片机的固件代码经过解密之后发现数据内容发生变化。
本发明实施例提供的一种基于公开密钥密码算法的固件程序装载保护方法,在基于安全度较高的公开密钥密码算法的基础上,在对单片机的固件程序装载过程中,提供了一种用户名与口令信息的加密传输手段,提供了一种固件代码信息的加密传输手段,提供了一种对固件代码合法性的验签确认手段。通过本发明提供的一种基于公开密钥密码算法的固件程序装载保护方法,在实际应用中,上位机对单片机固件程序做更新、装载过程中,可以完全避免因明文传输导致用户名与口令泄露引发的风险,也避免了以明文方式传输固件代码导致代码被窃取或被篡改的风险。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于公开密钥密码算法的固件程序装载保护方法,其特征在于,所述方法包括:
接收上位机发送的算法标识,根据所述算法标识,生成第一公钥和第一私钥;
向所述上位机发送所述第一公钥;
接收所述上位机根据所述算法标识生成并发送的第二公钥;
接收所述上位机发送的第一校验数据、第二校验数据;
根据所述算法标识、第一私钥,对所述第一校验数据进行解密处理,生成第一明文;
对所述第一明文进行拆解,生成第一用户名和第一口令;
对所述第一用户名和所述第一口令,进行第一校验处理;
当所述第一校验成功后,根据所述算法标识、第一私钥,对所述第二校验数据进行解密处理,生成第二明文和第二明文长度;
根据所述第二明文长度,对所述第二明文,进行第二校验处理;
当所述第二校验成功后,对所述第二明文进行拆解,生成第三明文和第一签名;
根据所述算法标识、第二公钥,对所述第三明文和所述第一签名,进行第三校验处理;
当所述第三校验成功后,将所述第三明文写入固件程序文件并进行固件程序激活处理。
2.根据权利要求1所述方法,其特征在于,所述根据所述算法标识,生成第一公钥和第一私钥,具体包括:
当所述算法标识的值为第一算法标识时,按照第一公开密钥密码算法,生成第一算法第一公钥和第一算法第一私钥;
当所述算法标识的值为第二算法标识时,按照第二公开密钥密码算法,生成第二算法第一公钥和第二算法第一私钥。
3.根据权利要求1所述方法,其特征在于,所述接收所述上位机根据所述算法标识生成并发送的第二公钥,具体包括:
当所述算法标识的值为第一算法标识时,按照第一公开密钥密码算法,所述上位机生成第一算法第二公钥和第一算法第二私钥,并发送所述第一算法第二公钥。
当所述算法标识的值为第二算法标识时,按照第二公开密钥密码算法,所述上位机生成第二算法第二公钥和第二算法第二私钥,并发送所述第二算法第二公钥。
4.根据权利要求2所述方法,其特征在于,所述根据所述算法标识、第一私钥,对所述第一校验数据进行解密处理,生成第一明文,具体包括:
当所述算法标识的值为所述第一算法标识时,根据所述第一算法第一私钥,按所述第一公开密钥密码算法,对所述第一校验数据进行解密处理,生成第一解密第一明文;
当所述算法标识的值为所述第二算法标识时,根据所述第一算法第一私钥,按所述第二公开密钥密码算法,对所述第一校验数据进行解密处理,生成第二解密第一明文。
5.根据权利要求1所述方法,其特征在于,所述对所述第一明文进行拆解,生成第一用户名和第一口令,具体包括:
对所述第一明文进行拆解,获取所述第一明文的第一口令字节,生成所述第一口令;
对所述第一明文进行拆解,获取所述第一明文的第一用户名字节,生成所述第一用户名。
6.根据权利要求1所述方法,其特征在于,所述对所述第一用户名和所述第一口令,进行第一校验处理,具体包括:
从本地存储区获取第二用户名、第二口令;
对所述第一用户名和所述第二用户名,进行用户名验证处理;
当所述用户名验证处理成功后,对所述第一口令和所述第二口令,进行口令验证处理;
当所述口令验证处理成功,则所述第一校验处理成功。
7.根据权利要求2所述方法,其特征在于,所述根据所述算法标识、第一私钥,对所述第二校验数据进行解密处理,生成第二明文和第二明文长度,具体包括:
当所述算法标识的值为所述第一算法标识时,按照第一公开密钥密码算法,根据所述第一算法第一私钥,对所述第二校验数据进行解密处理,生成第一算法临时明文;对所述第一算法临时明文进行拆解,获取所述第一算法临时明文的第一算法第二明文长度字节,生成第一算法第二明文长度;对所述第一算法临时明文进行拆解,获取所述第一算法临时明文的第一算法第二明文字节,生成第一算法第二明文;
当所述算法标识的值为所述第二算法标识时,按照第二公开密钥密码算法,根据所述第二算法第一私钥,对所述第二校验数据进行解密处理,生成第二算法临时明文;对所述第二算法临时明文进行拆解,获取所述第二算法临时明文的第二算法第二明文长度字节,生成第二算法第二明文长度;对所述第二算法临时明文进行拆解,获取所述第二算法临时明文的第二算法第二明文字节,生成第二算法第二明文。
8.根据权利要求1所述方法,其特征在于,所述根据所述第二明文长度,对所述第二明文,进行第二校验处理,具体包括:
计算所述第二明文的长度,生成临时明文长度;
当所述临时明文长度的值与所述第二明文长度的值相等时,所述第二校验成功。
9.根据权利要求3所述方法,其特征在于,所述根据所述算法标识、第二公钥、对所述第三明文和所述第一签名,进行第三校验处理,具体包括:
当所述算法标识的值为所述第一算法标识时,按照第一公开密钥密码算法,根据所述第一算法第二公钥,对所述第三明文和所述第一签名进行验签处理,生成第一验签结果;当第一验签结果为成功时,所述第三校验成功。
当所述算法标识的值为所述第二算法标识时,按照第二公开密钥密码算法,根据所述第二算法第二公钥,对所述第三明文和所述第一签名进行验签处理,生成第二验签结果;当第二验签结果为成功时,所述第三校验成功。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910583473.1A CN110298145B (zh) | 2019-06-28 | 2019-06-28 | 一种基于公开密钥密码算法的固件程序装载保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910583473.1A CN110298145B (zh) | 2019-06-28 | 2019-06-28 | 一种基于公开密钥密码算法的固件程序装载保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110298145A true CN110298145A (zh) | 2019-10-01 |
CN110298145B CN110298145B (zh) | 2022-03-18 |
Family
ID=68029684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910583473.1A Active CN110298145B (zh) | 2019-06-28 | 2019-06-28 | 一种基于公开密钥密码算法的固件程序装载保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110298145B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114726606A (zh) * | 2022-03-31 | 2022-07-08 | 北京九州恒盛电力科技有限公司 | 一种用户认证方法、客户端、网关及认证服务器 |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025770A (zh) * | 2006-02-20 | 2007-08-29 | 联想(北京)有限公司 | 一种启动受保护分区的方法 |
CN101436141A (zh) * | 2008-11-21 | 2009-05-20 | 深圳创维数字技术股份有限公司 | 基于数字签名的固件升级、固件封装方法与装置 |
CN101894238A (zh) * | 2010-08-09 | 2010-11-24 | 中国人民解放军海军工程大学 | 基于双重认证的word文档电子印章系统及方法 |
CN102043642A (zh) * | 2009-10-12 | 2011-05-04 | 凌群电脑股份有限公司 | 产品启动方法及系统 |
US20120198234A1 (en) * | 2011-01-31 | 2012-08-02 | Intuit Inc. | Method and apparatus for ensuring the integrity of a downloaded data set |
CN104166565A (zh) * | 2014-08-11 | 2014-11-26 | 成都瑞博慧窗信息技术有限公司 | 一种智能显示终端固件升级方法 |
CN104573527A (zh) * | 2014-12-30 | 2015-04-29 | 北京工业大学 | 一种基于更新安全机制的uefi系统更新方法 |
CN105812570A (zh) * | 2016-04-21 | 2016-07-27 | 深圳市旭子科技有限公司 | 终端固件更新方法及装置 |
CN106598632A (zh) * | 2015-10-15 | 2017-04-26 | 中兴通讯股份有限公司 | 一种光模块的固件升级方法及装置 |
CN107911218A (zh) * | 2017-11-06 | 2018-04-13 | 上海斐讯数据通信技术有限公司 | 一种固件签名装置、系统及方法 |
CN108304722A (zh) * | 2017-12-21 | 2018-07-20 | 广州小鹏汽车科技有限公司 | 一种软件安装包及其生成方法、升级方法和系统 |
CN108595198A (zh) * | 2018-04-18 | 2018-09-28 | 南京方寸微电子科技有限公司 | 一种安全的固件更新方法 |
CN108762782A (zh) * | 2018-05-16 | 2018-11-06 | 山东华芯半导体有限公司 | 一种基于安全加密固态硬盘和bios芯片的安全访问控制方法 |
CN108762791A (zh) * | 2018-06-07 | 2018-11-06 | 深圳市元征科技股份有限公司 | 固件升级方法及装置 |
CN108958768A (zh) * | 2018-06-26 | 2018-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种gpu固件更新方法、装置、设备及计算机可读存储介质 |
CN109063470A (zh) * | 2018-07-26 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种bmc固件的安全验证方法及系统 |
CN109144552A (zh) * | 2018-09-10 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种引导固件刷新方法和装置 |
US10187200B1 (en) * | 2017-12-18 | 2019-01-22 | Secure Channels Inc. | System and method for generating a multi-stage key for use in cryptographic operations |
CN109743174A (zh) * | 2018-12-21 | 2019-05-10 | 积成电子股份有限公司 | 电力监测安全管控系统程序更新的监管方法 |
CN109829294A (zh) * | 2019-01-31 | 2019-05-31 | 云丁网络技术(北京)有限公司 | 一种固件验证方法、系统、服务器及电子设备 |
-
2019
- 2019-06-28 CN CN201910583473.1A patent/CN110298145B/zh active Active
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025770A (zh) * | 2006-02-20 | 2007-08-29 | 联想(北京)有限公司 | 一种启动受保护分区的方法 |
CN101436141A (zh) * | 2008-11-21 | 2009-05-20 | 深圳创维数字技术股份有限公司 | 基于数字签名的固件升级、固件封装方法与装置 |
CN102043642A (zh) * | 2009-10-12 | 2011-05-04 | 凌群电脑股份有限公司 | 产品启动方法及系统 |
CN101894238A (zh) * | 2010-08-09 | 2010-11-24 | 中国人民解放军海军工程大学 | 基于双重认证的word文档电子印章系统及方法 |
US20120198234A1 (en) * | 2011-01-31 | 2012-08-02 | Intuit Inc. | Method and apparatus for ensuring the integrity of a downloaded data set |
CN104166565A (zh) * | 2014-08-11 | 2014-11-26 | 成都瑞博慧窗信息技术有限公司 | 一种智能显示终端固件升级方法 |
CN104573527A (zh) * | 2014-12-30 | 2015-04-29 | 北京工业大学 | 一种基于更新安全机制的uefi系统更新方法 |
CN106598632A (zh) * | 2015-10-15 | 2017-04-26 | 中兴通讯股份有限公司 | 一种光模块的固件升级方法及装置 |
CN105812570A (zh) * | 2016-04-21 | 2016-07-27 | 深圳市旭子科技有限公司 | 终端固件更新方法及装置 |
CN107911218A (zh) * | 2017-11-06 | 2018-04-13 | 上海斐讯数据通信技术有限公司 | 一种固件签名装置、系统及方法 |
US10187200B1 (en) * | 2017-12-18 | 2019-01-22 | Secure Channels Inc. | System and method for generating a multi-stage key for use in cryptographic operations |
CN108304722A (zh) * | 2017-12-21 | 2018-07-20 | 广州小鹏汽车科技有限公司 | 一种软件安装包及其生成方法、升级方法和系统 |
CN108595198A (zh) * | 2018-04-18 | 2018-09-28 | 南京方寸微电子科技有限公司 | 一种安全的固件更新方法 |
CN108762782A (zh) * | 2018-05-16 | 2018-11-06 | 山东华芯半导体有限公司 | 一种基于安全加密固态硬盘和bios芯片的安全访问控制方法 |
CN108762791A (zh) * | 2018-06-07 | 2018-11-06 | 深圳市元征科技股份有限公司 | 固件升级方法及装置 |
CN108958768A (zh) * | 2018-06-26 | 2018-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种gpu固件更新方法、装置、设备及计算机可读存储介质 |
CN109063470A (zh) * | 2018-07-26 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种bmc固件的安全验证方法及系统 |
CN109144552A (zh) * | 2018-09-10 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种引导固件刷新方法和装置 |
CN109743174A (zh) * | 2018-12-21 | 2019-05-10 | 积成电子股份有限公司 | 电力监测安全管控系统程序更新的监管方法 |
CN109829294A (zh) * | 2019-01-31 | 2019-05-31 | 云丁网络技术(北京)有限公司 | 一种固件验证方法、系统、服务器及电子设备 |
Non-Patent Citations (2)
Title |
---|
SUNJING_: ""基于RSA算法实现软件注册码原理初讨"", 《HTTPS://BLOG.CSDN.NET/SUNJING_/ARTICLE/DETAILS/93197023》 * |
结城浩: "《图解密码技术》", 30 June 2016 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114726606A (zh) * | 2022-03-31 | 2022-07-08 | 北京九州恒盛电力科技有限公司 | 一种用户认证方法、客户端、网关及认证服务器 |
CN114726606B (zh) * | 2022-03-31 | 2023-03-24 | 北京九州恒盛电力科技有限公司 | 一种用户认证方法、客户端、网关及认证服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN110298145B (zh) | 2022-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109313690B (zh) | 自包含的加密引导策略验证 | |
US9824353B2 (en) | Key protection method and system | |
TWI717907B (zh) | 用於安全記憶體的方法與系統 | |
ES2970201T3 (es) | Sistema de identificación personal con tarjeta sin contacto | |
RU2356169C2 (ru) | Привязка программного обеспечения к аппаратным средствам с использованием криптографии | |
US8250373B2 (en) | Authenticating and verifying an authenticable and verifiable module | |
CN105144626B (zh) | 提供安全性的方法和设备 | |
CN101350723B (zh) | 一种USB Key设备及其实现验证的方法 | |
CN108255505A (zh) | 一种固件更新方法、装置、设备及计算机可读存储介质 | |
TW202109320A (zh) | 基於可信執行環境的應用程式啟動方法及裝置 | |
JP2004265026A (ja) | アプリケーション認証システムと装置 | |
CN111639325B (zh) | 基于开放平台的商户认证方法、装置、设备和存储介质 | |
CN103269271A (zh) | 一种备份电子签名令牌中私钥的方法和系统 | |
CN110730159B (zh) | 一种基于TrustZone的安全和可信混合系统启动方法 | |
CN111382397B (zh) | 升级软件包配置方法、软件升级方法、设备及存储装置 | |
CN106897761A (zh) | 一种二维码生成方法及装置 | |
CN109241702A (zh) | 一种软件使用授权方法及客户端 | |
JP3749640B2 (ja) | Icカード利用装置、icカード及び記憶媒体 | |
CN108092764B (zh) | 一种密码管理方法、设备和具有存储功能的装置 | |
CN112787813A (zh) | 一种基于可信执行环境的身份认证方法 | |
US20190132119A1 (en) | Method for exchanging messages between security-relevant devices | |
CN114168909A (zh) | 基于代码签名的程序保护方法、装置、设备和存储介质 | |
CN110298145A (zh) | 一种基于公开密钥密码算法的固件程序装载保护方法 | |
CN112446782A (zh) | 初始密钥下载的方法、计算机设备及存储介质 | |
CN111385083A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100080, Beijing, Suzhou Street, Haidian District No. 20, building 2, on the north side of the four floor Applicant after: Zhaoxun Hengda Technology Co., Ltd Address before: 100080, Beijing, Suzhou Street, Haidian District No. 20, building 2, on the north side of the four floor Applicant before: MEGAHUNT MICROELECTRONIC TECH. (BEIJING) Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |