CN117077164A - 一种脱机状态下基于硬件信任的组件保护方法 - Google Patents

一种脱机状态下基于硬件信任的组件保护方法 Download PDF

Info

Publication number
CN117077164A
CN117077164A CN202310978352.3A CN202310978352A CN117077164A CN 117077164 A CN117077164 A CN 117077164A CN 202310978352 A CN202310978352 A CN 202310978352A CN 117077164 A CN117077164 A CN 117077164A
Authority
CN
China
Prior art keywords
key
component
library
pctool
public
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
CN202310978352.3A
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.)
Jiangsu Hoperun Software Co ltd
Original Assignee
Jiangsu Hoperun Software 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 Jiangsu Hoperun Software Co ltd filed Critical Jiangsu Hoperun Software Co ltd
Priority to CN202310978352.3A priority Critical patent/CN117077164A/zh
Publication of CN117077164A publication Critical patent/CN117077164A/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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种脱机状态下基于硬件信任的组件保护方法,涉及操作系统技术领域,方法包括如下步骤:1)商业运行组件库中可能有多个运行组件,需要对每个组件库在核心逻辑运行前进行埋点;2)需要在设备的可信执行环境TEE中新增最终的证书读取及校验逻辑;3)需要在Linux内核中新增可通过ioctl进行通讯的功能模块,以便让组件中埋点的校验程序能够与其进行通讯,同时需要新增通过trusty调用TEE的逻辑,解密后传输给TEE以便实现最终的校验,有效的防止了证书被篡改以及通过不断地重装刷试用期的行为,对未来商业发行版授权给用以防止被滥用有积极的效果。

Description

一种脱机状态下基于硬件信任的组件保护方法
技术领域
本发明属于操作系统技术领域,具体涉及一种脱机状态下基于硬件信任的组件保护方法。
背景技术
目前,脱机状况下的商业组件的知识产权保护,业界并没有很好的办法。因为脱机状态下,商业组件的安装、校验及使用情况,发行方并不完全知晓。因此,现阶段对脱机状况下商业组件的知识产权保护方法,主要有以下几种:
1)在合同中约定,具体的装机数量单纯依靠行业自律,然后定期抽查。
2)发行方提供算号器等工具,在安装激活时采用算号器,计算出唯一的激活码,写入设备的某些目录下。待商业组件运行时,去校验该激活码是否有效。
3)联机发行许可证脱机使用。
其实这些并不安全,因为如果设备被使用在特殊场景中,可能无法抽查。如金融公安等部门,不可能为了让你查询你的组件是否被滥用而给予授权权限。
同时,算号器等也容易被破解。即使无法破解算号器,通过重装系统的方式,依然可以不断的循环使用商业组件。
联机发行的许可证,可以通过调整设备的时间,从而使其失效。
基于以上的行业背景,在此提出一种新的脱机状态下基于硬件信任的运行组件库知识产权保护方法,来解决此类问题。
发明内容
为达到上述目的,本发明的技术方案如下:一种脱机状态下基于硬件信任的组件保护方法,方法包括如下步骤:
1)商业运行组件库中可能有多个运行组件,需要对每个组件库在核心逻辑运行前进行埋点;
2)需要在设备的可信执行环境TEE中新增最终的证书读取及校验逻辑(证书从Rpmb或者efuse或者emmc指定分区中读取);
3)需要在Linux内核中新增可通过ioctl进行通讯的功能模块,以便让组件中埋点的校验程序能够与其进行通讯。同时需要新增通过trusty调用TEE的逻辑,以便将数据从商业组件的埋点校验程序中,能够顺利加密后传输到Linux kernel中的具体功能模块,并且解密后传输给TEE以便实现最终的校验。
作为本发明的一种改进,以上三个部分需要在保证数据传输的安全性,特别是在商业组件埋点校验程序(用户态)和内核态(linux kernel)进行通讯的时候。
此处为了保证安全,用户态与内核态之间的通讯采用一次性密码的方式。一次性密钥最初在埋点校验程序中生成,加密数据后与加密数据一并传输给内核态。内核态解密并验证后,最终结果传输回用户态(埋点程序-最初的调用发起方)时,用此密钥进行加密。在用户态收到数据后,用原来生成的密钥进行解密获取最终结果。同时作废本次传输的密钥,下一次需要时重新生成。一次性密钥能够从根本上保证数据传输的安全性。
作为本发明的一种改进,方法还包括License管理服务器端维护两对公私钥,服务器端根据上送的数据,按厂商匹配并存储,以及授权(按照license余额授权)下发生成的需要写入板子的数据,具体包括以下步骤:
1.1)https服务端口开放监听端口;
1.2)接收pctool传输过来的数据并解密;
1.3)在管理服务中对cpuid,厂商id、申请时间、扣款数等进行归类和处理。
作为本发明的一种改进,方法还包括对uboot部分修改,烧录之前需在maskroom模式下将License服务器上下载的uboot和mimiloader预烧录到开发板中,等待烧录结束后,取cpuid上送,从pctool中获取License服务器的返回值,并原样烧写到具体的emmc中的rpmb分区中。
作为本发明的一种改进,方法还包括:pctool根据不同的厂商定制,获取cpuid之后,从pctool自身缓存区获取厂商信息,拼接后直接转发到License管理服务器,传输方法为一次性密钥。
作为本发明的一种改进,方法还包括通讯保密步骤,烧录过程中usb线直连,uboot中出来的数据经过sm2算法加密,公钥内置在uboot中,pctool不修改;https传输协议、rsa加密、加密公钥内置在pctool中。
作为本发明的一种改进,方法还包括发行版组件库中埋点数据传入的,就是在License服务器中生成证书的hash。
作为本发明的一种改进,步骤1.2)具体包括:
2.1)使用服务器上的私钥解密一次性密钥,并将其作为下一个流程解密的输入;
2.2)使用一次性密钥解密pctool传输过来的字符串,取出厂商的的标识和sm2算法加密后的cpuid,判断是否已生成库保护公私钥对,没有生成则生成该库保护公私钥对P;
2.3)使用sm2算法的私钥解密cpuid。
作为本发明的一种改进,License服务器维护3对密钥包括与芯片制造商相关的cpuid加解密密钥,sm2算法密钥,保证看不出cpuid的值;与下游厂商相关的pctool到License服务器的密钥,rsa密钥主要维护厂商信息的机密性,返回信息靠https自身保证;商业发行版运行库进行验证的sm2算法验证密钥对。
作为本发明的一种改进,验证逻辑包括以下步骤:
3.1)先验证库保护的公钥hash是否正确,如果hash不对,则直接组件库被禁止运行;
3.2)如果库保护的公钥hash验证正确,则读取设备的cpuid验证证书是否正确,如果不正确则说明该证书不是该设备使用,组件库被禁止运行;
3.3)如果库保护的公钥hash是正确的,而且下发的证书也是正确的,那么验证有效期是否正确,如果有效期正确,则进入正式使用,有效期错误则进入试用期或者直接禁止组件使用。
相对于现有技术,本发明的有益效果为:本发明采用脱机状态下,通过获取获取设备的唯一标识(cpuid通过sm3算法计算唯一ID)。在设备许可证管理服务器上通过自主研发的算法,生成唯一的许可证文件。并将该许可证文件写入设备的efuse区或者RPMB区或者EMMC上的特定分区中。在商业组件中进行埋点,待商业组件运行时,通过埋点程序,加密调用linux kernel中的校验程序,最终调用TEE,读取RPMB/EFUSE/EMMC特定分区中的授权证书及时间,判定该运行库是否可运行。该方法可以将硬件设备与商业运行组件进行深度绑定,有效防止商业运行组件被滥用的情况,从而保护发行方的知识产权。本发明将对商业组件的保护验证逻辑放在了TEE中,并且将证书放置在了设备的硬件被保护区,有效的防止了证书被篡改以及通过不断地重装刷试用期的行为。对未来商业发行版授权给用以防止被滥用有积极的效果。
附图说明
图1为本实施例中保护方法校验流程图。
实施方式
下面结合附图和具体实施方式,进一步阐明本发明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
实施例:License服务器-许可证管理服务器,pctool-设备固件烧录工具,目前业界普遍在windows平台进行固件烧录几个前提约定:本技术方案含试用期,试用期指的是在未授权时,可以拥有免授权的30天,使用全部的商业组件运行库。在试用期内激活,则激活日期为当日日期。每一个商业发行版组件都需要通过校验埋点走一遍流程。试用期采用时间累计方式运行,不考虑正确系统时间。通过类驱动ioctl的方式实现用户态与内核态交互。第一次调用商业发行版组件库的时候开始计时。试用期结束后商业发行版组件不再被允许调用。本技术方案中,加密解密签名验签等算法采用国密算法。具体实践中采用其他算法亦可。一种脱机状态下基于硬件信任的组件保护方法,如图1所示,方法包括如下步骤:
1)商业运行组件库中可能有多个运行组件,需要对每个组件库在核心逻辑运行前进行埋点;
2)需要在设备的可信执行环境TEE中新增最终的证书读取及校验逻辑(证书从Rpmb或者efuse或者emmc指定分区中读取);
3)需要在Linux内核中新增可通过ioctl进行通讯的功能模块,以便让组件中埋点的校验程序能够与其进行通讯。同时需要新增通过trusty调用TEE的逻辑,以便将数据从商业组件的埋点校验程序中,能够顺利加密后传输到Linux kernel中的具体功能模块,并且解密后传输给TEE以便实现最终的校验。
进一步地,以上三个部分需要在保证数据传输的安全性,特别是在商业组件埋点校验程序(用户态)和内核态(linux kernel)进行通讯的时候。
此处为了保证安全,用户态与内核态之间的通讯采用一次性密码的方式。一次性密钥最初在埋点校验程序中生成,加密数据后与加密数据一并传输给内核态。内核态解密并验证后,最终结果传输回用户态(埋点程序-最初的调用发起方)时,用此密钥进行加密。在用户态收到数据后,用原来生成的密钥进行解密获取最终结果。同时作废本次传输的密钥,下一次需要时重新生成。一次性密钥能够从根本上保证数据传输的安全性。
进一步地,方法还包括License管理服务器端维护两对公私钥,服务器端根据上送的数据,按厂商匹配并存储,以及授权(按照license余额授权)下发生成的需要写入板子的数据,具体包括以下步骤:
1.1)https服务端口开放监听端口8088(待定);
1.2)接收pctool传输过来的数据并解密;
进一步地,步骤1.2)具体包括:
2.1)使用服务器上的私钥解密一次性密钥,并将其作为下一个流程解密的输入;
2.2)使用一次性密钥解密pctool传输过来的字符串,取出厂商的的标识和sm2算法加密后的cpuid,判断是否已生成库保护公私钥对,没有生成则生成该库保护公私钥对P(P中含公钥pubKey和私钥privKey);
2.3)使用sm2算法的私钥解密cpuid。
**以下开始证书生成流程**
然后获取随机数A,对cpuid进行混淆(此处的混淆执行异或运算),得到值B,对上一步得到的值B使用sm3算法计算摘要,得到值C。
使用库保护的sm2算法验证密钥的私钥(P中的privKey),签名C,得到D;
将A、D、sm2算法验证密钥的公钥(P中的pubKey),按照具体的长度一次排列好,得到二进制数F;
**以上F就是证书,需要永久保存。以下的生成H及拼接,仅为了pctool使用**
对F使用sm3算法计算摘要值G,使用一次性密钥加密G,得到H;
将F和H拼接后,原样返回给pctool。(*pctool需要解密出F,并传送给uboot烧录*)。
1.3)在管理服务中对cpuid,厂商id、申请时间、扣款数等进行归类和处理。
原先厂商需要过来注册用户,并交款购买license数量(同步生成sm2算法解密密钥对);自动生成烧录工具pctool,并给出下载路径。自动生成编译后的miniloader和uboot.img;自动关联生成license授权app。同步展示已发放license的数量以及剩余license的数量,以及每个发放license的详情;自动生成库开发需嵌入的代码。备注:已申请过二次直接返回存储过的F+H的拼接值。license授权用尽以后,直接返回标志字符”nolicense“。解密验证逻辑为上述生成证书逻辑的逆逻辑。
进一步地,方法还包括对uboot部分修改,烧录之前需在maskroom模式下将License服务器上下载的uboot和mimiloader预烧录到开发板中。嵌入点:等待烧录结束后,取cpuid上送(此处对cpuid可不加盐混淆-混淆没有意义,公钥加密后就已经看不出了,加密方式:sm2算法),从pctool中获取License服务器的返回值,并原样烧写到具体的emmc中的rpmb分区中。需要放入emmc的rpmb区的东西:将A,D,sm2算法验证密钥的公钥,E;1、签名后的cpiud。(1中的D);2、cpuid的混淆随机数。(1中的A);3、sm2算法验证密钥的公钥。
进一步地,方法还包括:pctool根据不同的厂商定制(新增用户名密码登录/新增厂商选择下拉选项),获取cpuid之后,从pctool自身缓存区获取厂商信息,拼接后直接转发到License管理服务器,传输方法为一次性密钥。
作进一步地,方法还包括通讯保密步骤,uboot ->pctool:烧录过程中usb线直连,uboot中出来的数据经过sm2算法加密,公钥内置在uboot中,pctool不修改;pctool ->License管理服务器:https传输协议、rsa加密、加密公钥内置在pctool中。
进一步地,License服务器维护3对密钥包括与芯片制造商相关的cpuid加解密密钥,sm2算法密钥,保证看不出cpuid的值;与下游厂商相关的pctool到License服务器的密钥,rsa密钥主要维护厂商信息的机密性,返回信息靠https自身保证;商业发行版运行库进行验证的sm2算法验证密钥对。
进一步地,方法还包括发行版组件库中埋点数据传入的,就是在License服务器中生成证书的hash。
进一步地,验证逻辑包括以下步骤:
3.1)先验证库保护的公钥hash是否正确,如果hash不对,则直接组件库被禁止运行;
3.2)如果库保护的公钥hash验证正确,则读取设备的cpuid验证证书是否正确,如果不正确则说明该证书不是该设备使用,组件库被禁止运行;
3.3)如果库保护的公钥hash是正确的,而且下发的证书也是正确的,那么验证有效期是否正确,如果有效期正确,则进入正式使用,有效期错误则进入试用期或者直接禁止组件使用。
需要说明的是,以上内容仅仅说明了本发明的技术思想,不能以此限定本发明的保护范围,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰均落入本发明权利要求书的保护范围之内。

Claims (10)

1.一种脱机状态下基于硬件信任的组件保护方法,其特征在于,方法包括如下步骤:
1)商业运行组件库中可能有多个运行组件,需要对每个组件库在核心逻辑运行前进行埋点;
2)需要在设备的可信执行环境TEE中新增最终的证书读取及校验逻辑;
3)在Linux内核中新增可通过ioctl进行通讯的功能模块,同时需要新增通过trusty调用TEE的逻辑。
2.根据权利要求1所述的脱机状态下基于硬件信任的组件保护方法,其特征在于,用户态与内核态之间的通讯采用一次性密码的方式,一次性密钥最初在埋点校验程序中生成,加密数据后与加密数据一并传输给内核态,内核态解密并验证后,最终结果传输回用户态时,用此密钥进行加密,在用户态收到数据后,用原来生成的密钥进行解密获取最终结果,同时作废本次传输的密钥,下一次需要时重新生成。
3.根据权利要求2所述的脱机状态下基于硬件信任的组件保护方法,其特征在于,方法还包括License管理服务器端维护两对公私钥,服务器端根据上送的数据,按厂商匹配并存储,以及授权下发生成的需要写入板子的数据,具体包括以下步骤:
1.1)https服务端口开放监听端口;
1.2)接收pctool传输过来的数据并解密;
1.3)在管理服务中进行归类和处理。
4.根据权利要求2所述的脱机状态下基于硬件信任的组件保护方法,其特征在于,方法还包括对uboot部分修改,烧录之前需在maskroom模式下将License服务器上下载的uboot和mimiloader预烧录到开发板中,等待烧录结束后,取cpuid上送,从pctool中获取License服务器的返回值,并原样烧写到具体的emmc中的rpmb分区中。
5.根据权利要求2所述的脱机状态下基于硬件信任的组件保护方法,其特征在于,方法还包括:pctool根据不同的厂商定制,获取cpuid之后,从pctool自身缓存区获取厂商信息,拼接后直接转发到License管理服务器,传输方法为一次性密钥。
6.根据权利要求2所述的脱机状态下基于硬件信任的组件保护方法,其特征在于,方法还包括通讯保密步骤,烧录过程中usb线直连,uboot中出来的数据经过sm2算法加密,公钥内置在uboot中,pctool不修改;https传输协议、rsa加密及加密公钥内置在pctool中。
7.根据权利要求2所述的脱机状态下基于硬件信任的组件保护方法,其特征在于,方法还包括发行版组件库中埋点数据传入的,在License服务器中生成证书的hash。
8.根据权利要求3所述的脱机状态下基于硬件信任的组件保护方法,其特征在于,步骤1.2)具体包括:
2.1)使用服务器上的私钥解密一次性密钥,并将其作为下一个流程解密的输入;
2.2)使用一次性密钥解密pctool传输过来的字符串,取出厂商的的标识和sm2算法加密后的cpuid,判断是否已生成库保护公私钥对,没有生成则生成该库保护公私钥对P;
2.3)使用sm2算法的私钥解密cpuid。
9.根据权利要求6所述的脱机状态下基于硬件信任的组件保护方法,其特征在于,License服务器维护3对密钥包括与芯片制造商相关的cpuid加解密密钥,sm2算法密钥,保证看不出cpuid的值;与下游厂商相关的pctool到License服务器的密钥,rsa密钥主要维护厂商信息的机密性,返回信息靠https自身保证;商业发行版运行库进行验证的sm2算法验证密钥对。
10.根据权利要求7所述的脱机状态下基于硬件信任的组件保护方法,其特征在于,验证逻辑包括以下步骤:
3.1)先验证库保护的公钥hash是否正确,如果hash不对,则直接组件库被禁止运行;
3.2)如果库保护的公钥hash验证正确,则读取设备的cpuid验证证书是否正确,如果不正确则说明该证书不是该设备使用,组件库被禁止运行;
3.3)如果库保护的公钥hash是正确的,而且下发的证书也是正确的,那么验证有效期是否正确,如果有效期正确,则进入正式使用,有效期错误则进入试用期或者直接禁止组件使用。
CN202310978352.3A 2023-08-04 2023-08-04 一种脱机状态下基于硬件信任的组件保护方法 Pending CN117077164A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310978352.3A CN117077164A (zh) 2023-08-04 2023-08-04 一种脱机状态下基于硬件信任的组件保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310978352.3A CN117077164A (zh) 2023-08-04 2023-08-04 一种脱机状态下基于硬件信任的组件保护方法

Publications (1)

Publication Number Publication Date
CN117077164A true CN117077164A (zh) 2023-11-17

Family

ID=88708961

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310978352.3A Pending CN117077164A (zh) 2023-08-04 2023-08-04 一种脱机状态下基于硬件信任的组件保护方法

Country Status (1)

Country Link
CN (1) CN117077164A (zh)

Similar Documents

Publication Publication Date Title
EP1168141B1 (en) A secure and open computer platform
US8041947B2 (en) Computer architecture for an electronic device providing SLS access to MLS file system with trusted loading and protection of program execution memory
JP4067985B2 (ja) アプリケーション認証システムと装置
TWI438686B (zh) 用於使用狀態確認來保護作業系統啟動過程的系統及方法
CN1327357C (zh) 用于验证的系统和方法
US20040255119A1 (en) Memory device and passcode generator
US10498712B2 (en) Balancing public and personal security needs
US20050060568A1 (en) Controlling access to data
US20130086385A1 (en) System and Method for Providing Hardware-Based Security
CN102456111B (zh) 一种Linux操作系统许可控制的方法及系统
US20020112161A1 (en) Method and system for software authentication in a computer system
US5875248A (en) Method of counterfeit detection of electronic data stored on a device
KR20060134037A (ko) 이용 인증 방법, 이용 인증 프로그램을 저장한 컴퓨터 판독 가능 기록 매체, 정보 처리 장치 및 기록 매체
CN101199159A (zh) 安全引导
AU2020244511A1 (en) Balancing public and personal security needs
JP6387908B2 (ja) 認証システム
JP5183517B2 (ja) 情報処理装置及びプログラム
KR101711024B1 (ko) 부정조작방지 장치 접근 방법 및 그 방법을 채용한 단말 장치
CN117077164A (zh) 一种脱机状态下基于硬件信任的组件保护方法
CN114816549A (zh) 一种保护bootloader及其环境变量的方法及系统
EP3731127B1 (en) Control system and method thereof for secure manufacturing
US11455379B2 (en) Control system and method thereof for secure manufacturing
WO2020088515A1 (zh) Pos用户公钥安全认证方法、装置和终端设备
KR101738604B1 (ko) 라이브러리의 불법 사용 방지 시스템 및 방법
KR20150072061A (ko) 모바일 신뢰 모듈 기반 서비스 보안 장치 및 방법

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