CN111709044B - 基于国密算法的硬件指纹信息生成方法及系统 - Google Patents
基于国密算法的硬件指纹信息生成方法及系统 Download PDFInfo
- Publication number
- CN111709044B CN111709044B CN202010565463.8A CN202010565463A CN111709044B CN 111709044 B CN111709044 B CN 111709044B CN 202010565463 A CN202010565463 A CN 202010565463A CN 111709044 B CN111709044 B CN 111709044B
- Authority
- CN
- China
- Prior art keywords
- inf
- information
- data
- bytes
- byte
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
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
本发明公开了基于国密算法的硬件指纹信息生成方法及系统,包括:创建空白文件,检测CPU指令支持情况,若满足要求,则进入下一步;如果不满足要求,则将错误信息接入空白文件,结束;生成四组随机数,将第一组随机数作为序列号;获取当前时间,生成INF信息段;从INF信息段中提取位置信息、偏移量和临时密钥种子;采用国密算法分别对序列号和INF信息段进行加密,生成加密初始值参数,生成加密用主密钥;生成硬件信息,利用硬件信息、当前时间和CPU信息构造数据段;对数据段进行加密,计算校验值,将所有数据写入文件,结束。
Description
技术领域
本公开涉及硬件指纹生成技术领域,特别是涉及基于国密算法的硬件指纹信息生成方法及系统。
背景技术
本部分的陈述仅仅是提到了与本公开相关的背景技术,并不必然构成现有技术。
提取计算机信息并基于此信息生成授权码进行软件授权是目前一种比较有效且主流的软件保护方法,目前主要有基于网卡MAC地址、操作系统序列号等计算机信息。
发明人发现,这些方法存在如下问题:
首先,MAC地址可以伪造,且网卡属于易耗品,网卡损坏或更换后信息失效,同样操作系统更新后序列号也会变更;
第二,无论是网卡信息还是操作系统序列号等计算机信息属于隐私信息,直接将该信息提供给软件开发方存在一定的隐私泄露的风险;
最后,提取的计算机信息具有惟一性,第三方有可能利用计算机信息和生成的硬件信息进行破解使软件保护失效。
发明内容
为了解决现有技术的不足,本公开提供了基于国密算法的硬件指纹信息生成方法及系统;
第一方面,本公开提供了基于国密算法的硬件指纹信息生成方法;
基于国密算法的硬件指纹信息生成方法,包括:
创建空白文件,检测CPU指令支持情况,若满足要求,则进入下一步;如果不满足要求,则将错误信息接入空白文件,结束;
生成四组随机数,将第一组随机数作为序列号;
获取当前时间,生成INF信息段;从INF信息段中提取位置信息、偏移量和临时密钥种子;
采用国密算法分别对序列号和INF信息段进行加密,生成加密初始值参数,生成加密用主密钥;
生成硬件信息,利用硬件信息、当前时间和CPU信息构造数据段;
对数据段进行加密,计算校验值,将所有数据写入文件,结束。
第二方面,本公开提供了基于国密算法的硬件指纹信息生成系统;
基于国密算法的硬件指纹信息生成系统,包括:
空白文件创建模块,其被配置为:创建空白文件,检测CPU指令支持情况,若满足要求,则进入下一步;如果不满足要求,则将错误信息接入空白文件,结束;
随机数生成模块,其被配置为:生成四组随机数,将第一组随机数作为序列号;
信息段生成模块,其被配置为:获取当前时间,生成INF信息段;从INF信息段中提取位置信息、偏移量和临时密钥种子;
加密模块,其被配置为:采用国密算法分别对序列号和INF信息段进行加密,生成加密初始值参数,生成加密用主密钥;
数据段构造模块,其被配置为:生成硬件信息,利用硬件信息、当前时间和CPU信息构造数据段;
硬件指纹信息生成模块,其被配置为:对数据段进行加密,计算校验值,将所有数据写入文件,结束。
第三方面,本公开还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述第一方面所述的方法。
第四方面,本公开还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述的方法。
第五方面,本公开还提供了一种计算机程序(产品),包括计算机程序,所述计算机程序当在一个或多个处理器上运行的时候用于实现前述第一方面任意一项的方法。
与现有技术相比,本公开的有益效果是:
提取多种硬件信息后进行混淆和SM3哈希操作后获取唯一的的硬件信息,在保护用户隐私的同时保证硬件信息的唯一性和可靠性。同时利用随机数生成加密参数对硬件信息进行SM4加密和混淆保护生成硬件指纹信息,使得同一台计算机每次生成的硬件指纹信息都不同。最后对生成的硬件指纹信息进行SM3哈希和混淆后得到校验信息保证信息的真实性。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1为第一个实施例的方法流程图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
本实施例提供了基于国密算法的硬件指纹信息生成方法;
如图1所示,基于国密算法的硬件指纹信息生成方法,包括:
S101:创建空白文件,检测CPU指令支持情况,若满足要求,则进入S102;如果不满足要求,则将错误信息接入空白文件,结束;
S102:生成四组随机数,将第一组随机数作为序列号;
S103:获取当前时间,生成INF信息段;从INF信息段中提取位置信息、偏移量和临时密钥种子;
S104:采用国密算法分别对序列号和INF信息段进行加密,生成加密初始值参数,生成加密用主密钥;
S105:生成硬件信息,利用硬件信息、当前时间和CPU信息构造数据段;
S106:对数据段进行加密,计算校验值,将所有数据写入文件,结束。
进一步地,所述创建空白文件步骤之后,所述检测CPU指令支持情况步骤之前,还包括:生成描述性信息,保存至硬件指纹信息字符串bsinfo。
进一步地,检测CPU指令支持情况,是检测CPU是否支持算法所需指令集,如果支持则将检测信息cpuid追加至bsinfo。如无法全部支持,将错误信息追加到bsinfo,将bsinfo写入文件。
应理解的,为了加速算法实现通常会用到特殊指令集,但是比较老的CPU不支持一些新的指令集如AES-NI, BMI2, AVX-2等。因此需要检测CPU是否支持这些新的指令集AES-NI, BMI2, AVX-2等。
应理解的,指令支持情况一般与密码算法实现相关,如在x64平台下利用AES硬件加速模块则需要支持AES-NI,SM2则需要BMI2指令集支持。由用户指定需要支持哪些指令集。
应理解的,INF信息段用于存储一些关键信息,取名为INF, 该段大小为320字节,首先利用320字节数组随机数填充该320字节。
进一步地,所述S102:生成四组随机数,将第一组随机数作为序列号;具体步骤包括:
S1021:用随机数生成器生成256比特的随机数,将其划分为32个8比特的小块,如果超过15个小块为全0,判断为随机数生成失败, 将错误信息追加到bsinfo, 将bsinfo写入文件,返回错误信息,退出;否则将随机数存入第一组随机数iC0;
S1022:重复S1021三次,生成第二组随机数iC1、第三组随机数iC2和第四组随机数iC3;
S1023:将第一组随机数iC0设置为序列号,将序列号标识信息和序列号追加到bsinfo。
进一步地,所述S103的获取当前时间,具体步骤包括:
获取64位的当前时间,将当前时间信息追加到bsinfo。
进一步地,所述S103的生成INF信息段,具体步骤包括:
S103a1:设置临时序号i为0,生成320字节的无符号数组INF[320],该数组需要16字节内存对齐;
S103a2:设置错误次数为0;
S103a3:用随机数生成器生成256比特的随机数,将其划分为32个8比特的小块,如果超过12个小块为全0,判断为随机数生成失败, 错误次数+1;
S103a4:如果错误次数<10,转步骤S103a3,否则判断随机数生成失败,将错误信息追加到bsinfo, 将bsinfo写入文件,返回错误信息,退出;否则将随机数复制到INF 第 i*32字节开始的位置,转S103a5。
S103a5:临时序号i+1,如果i=10,从INF信息段中提取位置信息;否则转S103a2。
进一步地,从INF信息段中提取位置信息,具体步骤包括:
从INF 168字节开始的信息段中获取4个位置信息
pos0= 128+ INF[168+ INF[181]%16]%16;
pos1= 32+ INF[168+ INF[173]%16]%16;
pos2= 64+ INF[168+ INF[175]%16]%16;
pos3= 192+ INF[168+ INF[179]%16]%16;
其中,pos0表示第一位置信息;pos1表示第二位置信息;pos2表示第三位置信息;pos3表示第四位置信息。
进一步地,从INF信息段中提取偏移量,具体步骤包括:
获取4个偏移量:
shift0=(INF[168+ INF[172]%16]%16)*8;
shift1=( INF[168+ INF[182]%16]%16)*8;
shift2=( INF[168+ INF[180]%16]%16)*8;
shift3=( INF[168+ INF[176]%16]%16)*8;
其中,Shift0表示第一循环移位值,Shift1表示第二循环移位值,Shift2表示第三循环移位值,Shift3表示第四循环移位值,用于将加密后的数据循环移位后保存,增加数据破解难度。
进一步地,从INF信息段中提取密钥种子,具体步骤包括:
获取临时密钥种子INFT= INF[168+ INF[183]%16]%16
将临时密钥种子扩展到16字节作为主密钥,以SM4算法对32字节的序列号执行解密算法,将输出的32字节数据复制到INF数组pos3开始的32字节。
设置临时密钥种子 INFT为预设固定值,如INFT = 0xac;
将临时密钥种子扩展到16字节作为主密钥,以SM4算法对INF数组168字节开始的16字节数据执行解密算法,将输出的16字节数据复制到原位置。
进一步地,所述S104中,对序列号进行加密,对INF信息段进行加密,生成加密初始值参数,生成加密用主密钥;具体步骤包括:
S1041:将iC0 256比特数据循环左移shift0比特得到待加密数据,将iC1循环左移shift1比特生成临时密钥,以该密钥为主密钥利用SM4算法对待加密数据执行加密算法,得到16字节临时变量buf, 将buf复制到16字节的加密初始值参数IV,将buf循环右移shift0比特后复制到INF数组pos1开始的16字节。
S1042:将iC2 256比特数据循环左移shift2比特得到待加密数据,将iC3循环左移shift3比特生成临时密钥,以该密钥为主密钥对待加密数据执行SM4加密算法,得到16字节临时变量buf, 将buf循环右移shift0比特后复制到INF数组pos0开始的16字节。
进一步地,所述S105中,生成硬件信息的具体步骤包括:
S105a1:获取主板序列号,如果主板序列号长于16字节,将主板序列号后16字节复制到ROOTRAND第16字节开始的内存;否则将全部主板序列号复制到ROOTRAND第16字节开始的位置,以ROOTRAND第16字节开始的16字节为主密钥生成SM4解密方式轮密钥;
S105a2:获取CPU的序列号,如果CPU序列号长于16字节,将CPU序列号后16字节复制到ROOTRAND第32字节开始的内存;否则将全部CPU序列号复制到ROOTRAND第32字节开始的位置;
S105a3:获取主板BIOS序列号,如果BIOS序列号长于16字节,将BIOS列号后16字节复制到ROOTRAND第48字节开始的内存;否则将全部BIOS序列号复制到ROOTRAND第48字节开始的位置;
S105a4:利用SM3算法计算ROOTRAND数组64字节的哈希值;将32字节哈希值平均拆分为2个16字节的比特串,按字节异或得到16字节的待加密信息;
S105a5:利用SM4算法以S105a1生成的主密钥对16字节的待加密信息执行解密算法,将输出的16字节信息复制到硬件信息数组;
S105a6:检测CPU虚拟机标志位,如果虚拟机标志位非0,返回0;
S105a7:检测CPU超线程标志位,保存至1字节的临时变量iHyb;
S105a8:检测CPU线程数,保存至2字节的临时变量iLogical;
S105a9:检测CPU核心数,保存至2字节的临时变量iCore;
如果超线程标志位为1,同时核心数<线程数则设置iHyb为0;
设置8字节的无符号整形数处理器特征值为0,将iHyb复制到该参数第1字节,将iLogical复制到该参数第2,3字节,将iCore复制到该参数第4,5字节。
返回处理器特征值。
进一步地,所述S105中,利用硬件信息、当前时间和CPU信息构造数据段;具体步骤包括:
S105b1:分配48字节的临时数组data;
S105b2:将生成的16字节的硬件信息和8字节的CPU信息,将硬件信息复制到data;
S105b3:将CPU信息复制到data第16字节开始的8字节;
S105b4:将得到的时间信息复制到data第24字节开始的8字节;
S105b5:混淆cpu信息,将INF数组第171字节开始的8字节数据按字节异或CINFBASE各字节后保存至data第32字节开始的8个字节中;
S105b6:Data[40]= cpuid, 临时变量i=0。
进一步地,所述S106中,对数据段进行加密,计算校验值,将所有数据写入文件;具体步骤包括:
S1061:用生成的buf作为主密钥对IV执行SM4加密算法,结果按字节异或data[i]...data[i+16]后保存至data 第i字节开始的16字节;
S1062:IV[0]++, i=i+16;
S1063:重复S1061两次;
S1064:将data[0]...data[15] 循环左移shift3比特后保存至INF第pos2开始的16字节中;将data[16]...data[31] 循环右移shift2比特后保存至INF第pos2+16开始的16字节中;将data[32]...data[40]复制到INF第pos2+32开始的9个字节中;
S1065:利用SM3算法计算INF320字节的哈希值,将哈希值标志追加到bsinfo, 将哈希值按字节异或iC0 32字节后追加到bsinfo;
S1066:加数据段开始描述信息至bsinfo;将320字节INF数据追加到bsinfo;追加数据段结束描述信息至bsinfo;将bsinfo保存至文件,关闭文件,结束。
生成64字节的随机数数组ROOTRAND作为硬件信息基础常参数,用于提高随机性,将该随机数以固定参数的形式应用于各方法。
生成64比特的随机数CINFBASE, 将该随机数以固定参数的形式应用于方法。
实施例二
本实施例提供了基于国密算法的硬件指纹信息生成系统;
基于国密算法的硬件指纹信息生成系统,包括:
空白文件创建模块,其被配置为:创建空白文件,检测CPU指令支持情况,若满足要求,则进入下一步;如果不满足要求,则将错误信息接入空白文件,结束;
随机数生成模块,其被配置为:生成四组随机数,将第一组随机数作为序列号;
信息段生成模块,其被配置为:获取当前时间,生成INF信息段;从INF信息段中提取位置信息、偏移量和临时密钥种子;
加密模块,其被配置为:采用国密算法分别对序列号和INF信息段进行加密,生成加密初始值参数,生成加密用主密钥;
数据段构造模块,其被配置为:生成硬件信息,利用硬件信息、当前时间和CPU信息构造数据段;
硬件指纹信息生成模块,其被配置为:对数据段进行加密,计算校验值,将所有数据写入文件,结束。
此处需要说明的是,上述空白文件创建模块、随机数生成模块、信息段生成模块、加密模块、数据段构造模块和硬件指纹信息生成模块对应于实施例一中的步骤S101至S106,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为系统的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
上述实施例中对各个实施例的描述各有侧重,某个实施例中没有详述的部分可以参见其他实施例的相关描述。
所提出的系统,可以通过其他的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如上述模块的划分,仅仅为一种逻辑功能划分,实际实现时,可以有另外的划分方式,例如多个模块可以结合或者可以集成到另外一个系统,或一些特征可以忽略,或不执行。
实施例三
本实施例还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述实施例一所述的方法。
应理解,本实施例中,处理器可以是中央处理单元CPU,处理器还可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASIC,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。
实施例一中的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元即算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
实施例四
本实施例还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例一所述的方法。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (11)
1.基于国密算法的硬件指纹信息生成方法,其特征是,包括:
S101:创建空白文件,检测CPU指令支持情况,若满足要求,则进入S102;如果不满足要求,则将错误信息接入空白文件,结束;
S102:生成四组随机数,将第一组随机数作为序列号;
S103:获取当前时间,生成INF信息段;所述INF信息段用于存储关键信息,该段大小为320字节,从INF信息段中提取位置信息、偏移量和密钥种子;
从INF信息段中提取位置信息,具体步骤包括:
从INF 168字节开始的信息段中获取4个位置信息
pos0=128+INF[168+INF[181]%16]%16;
pos1=32+INF[168+INF[173]%16]%16;
pos2=64+INF[168+INF[175]%16]%16;
pos3=192+INF[168+INF[179]%16]%16;
其中,pos0表示第一位置信息;pos1表示第二位置信息;pos2表示第三位置信息;pos3表示第四位置信息;
从INF信息段中提取偏移量,具体步骤包括:
获取4个偏移量:
shift0=(INF[168+INF[172]%16]%16)*8;
shift1=(INF[168+INF[182]%16]%16)*8;
shift2=(INF[168+INF[180]%16]%16)*8;
shift3=(INF[168+INF[176]%16]%16)*8;
其中,shift0表示第一循环移位值,shift1表示第二循环移位值,shift2表示第三循环移位值,shift3表示第四循环移位值,用于将加密后的数据循环移位后保存,增加数据破解难度;
从INF信息段中提取密钥种子,具体步骤包括:
获取临时密钥种子INFT=INF[168+INF[183]%16]%16;
将临时密钥种子扩展到16字节作为主密钥,以SM4算法对32字节的序列号执行解密算法,将输出的32字节数据复制到INF数组pos3开始的32字节;
设置临时密钥种子INFT为预设固定值;
将临时密钥种子扩展到16字节作为主密钥,以SM4算法对INF数组168字节开始的16字节数据执行解密算法,将输出的16字节数据复制到原位置;
S104:采用国密算法对序列号进行加密,生成加密初始值参数,生成加密用主密钥,将所述加密初始值参数和所述加密用主密钥保存到INF信息段,具体包括:
将第一组随机数iC0 256比特数据循环左移shift0比特得到待加密数据,将第二组随机数iC1循环左移shift1比特生成临时密钥,以该密钥为主密钥利用SM4算法对待加密数据执行加密算法,得到16字节临时变量buf,将buf复制到16字节的加密初始值参数IV,将buf循环右移shift0比特后复制到INF数组pos1开始的16字节,S1042:将第三组随机数iC2 256比特数据循环左移shift2比特得到待加密数据,将第四组随机数iC3循环左移shift3比特生成临时密钥,以该密钥为主密钥对待加密数据执行SM4加密算法,得到16字节临时变量buf,将buf循环右移shift0比特后复制到INF数组pos0开始的16字节;
S105:生成硬件信息,利用硬件信息、当前时间和CPU信息构造数据段;
S106:对数据段进行加密,计算校验值,将所有数据写入文件,结束。
2.如权利要求1所述的方法,其特征是,所述S102:生成四组随机数,将第一组随机数作为序列号;具体步骤包括:
S1021:用随机数生成器生成256比特的随机数,将其划分为32个8比特的小块,如果超过15个小块为全0,判断为随机数生成失败,将错误信息追加到bsinfo,将bsinfo写入文件,返回错误信息,退出;否则将随机数存入第一组随机数iC0,所述bsinfo是指硬件指纹信息字符串;
S1022:重复S1021三次,生成第二组随机数iC1、第三组随机数iC2和第四组随机数iC3;
S1023:将第一组随机数iC0设置为序列号,将序列号标识信息和序列号追加到bsinfo。
3.如权利要求2所述的方法,其特征是,所述S103的获取当前时间,具体步骤包括:
获取64位的当前时间,将当前时间信息追加到bsinfo。
4.如权利要求2所述的方法,其特征是,所述S103的生成INF信息段,具体步骤包括:
S103a1:设置临时序号i为0,生成320字节的无符号数组INF[320],该数组需要16字节内存对齐;
S103a2:设置错误次数为0;
S103a3:用随机数生成器生成256比特的随机数,将其划分为32个8比特的小块,如果超过12个小块为全0,判断为随机数生成失败,错误次数+1;
S103a4:如果错误次数<10,转步骤S103a3,否则判断随机数生成失败,将错误信息追加到bsinfo,将bsinfo写入文件,返回错误信息,退出;否则将随机数复制到INF第i*32字节开始的位置,转S103a5;S103a5:临时序号i+1,如果i=10,从INF信息段中提取位置信息;否则转S103a2。
5.如权利要求2所述的方法,其特征是,所述S104中,对序列号进行加密,对INF信息段进行加密,生成加密初始值参数,生成加密用主密钥;具体步骤包括:
S1041:将iC0 256比特数据循环左移shift0比特得到待加密数据,将iC1循环左移shift1比特生成临时密钥,以该密钥为主密钥利用SM4算法对待加密数据执行加密算法,得到16字节临时变量buf,将buf复制到16字节的加密初始值参数IV,将buf循环右移shift0比特后复制到INF数组pos1开始的16字节;
S1042:将iC2 256比特数据循环左移shift2比特得到待加密数据,将iC3循环左移shift3比特生成临时密钥,以该密钥为主密钥对待加密数据执行SM4加密算法,得到16字节临时变量buf,将buf循环右移shift0比特后复制到INF数组pos0开始的16字节。
6.如权利要求1所述的方法,其特征是,所述S105中,生成硬件信息的具体步骤包括:
S105a1:获取主板序列号,如果主板序列号长于16字节,将主板序列号后16字节复制到ROOTRAND第16字节开始的内存;否则将全部主板序列号复制到ROOTRAND第16字节开始的位置,以ROOTRAND第16字节开始的16字节为主密钥生成SM4解密方式轮密钥,所述ROOTRAND是指64字节的随机数数组;
S105a2:获取CPU的序列号,如果CPU序列号长于16字节,将CPU序列号后16字节复制到ROOTRAND第32字节开始的内存;否则将全部CPU序列号复制到ROOTRAND第32字节开始的位置;
S105a3:获取主板BIOS序列号,如果BIOS序列号长于16字节,将BIOS列号后16字节复制到ROOTRAND第48字节开始的内存;否则将全部BIOS序列号复制到ROOTRAND第48字节开始的位置;S105a4:利用SM3算法计算ROOTRAND数组64字节的哈希值;将32字节哈希值平均拆分为2个16字节的比特串,按字节异或得到16字节的待加密信息;
S105a5:利用SM4算法以S105a1生成的主密钥对16字节的待加密信息执行解密算法,将输出的16字节信息复制到硬件信息数组;
S105a6:检测CPU虚拟机标志位,如果虚拟机标志位非0,返回0;
S105a7:检测CPU超线程标志位,将所述CPU超线程标志位保存至1字节的临时变量iHyb;
S105a8:检测CPU线程数,将所述CPU线程数保存至2字节的临时变量iLogical;
S105a9:检测CPU核心数,将所述CPU核心数保存至2字节的临时变量iCore;
如果超线程标志位为1,同时核心数<线程数则设置iHyb为0;设置8字节的无符号整形数处理器特征值为0,将iHyb复制到所述加密初始值参数第1字节,将iLogical复制到所述加密初始值参数第2,3字节,将iCore复制到所述加密初始值参数第4,5字节。
7.如权利要求4所述的方法,其特征是,所述S105中,利用硬件信息、当前时间和CPU信息构造数据段;具体步骤包括:
S105b1:分配48字节的临时数组data;
S105b2:将生成的16字节的硬件信息和8字节的CPU信息,将硬件信息复制到data;
S105b3:将CPU信息复制到data第16字节开始的8字节;
S105b4:将得到的时间信息复制到data第24字节开始的8字节;
S105b5:混淆CPU信息,将INF数组第171字节开始的8字节数据按字节异或CINFBASE各字节后保存至data第32字节开始的8个字节中,所述CINFBASE是指64比特的随机数;
S105b6:data[40]=cpuid,所述cpuid为检测CPU是否支持算法所需指令集的检测信息。
8.如权利要求2所述的方法,其特征是,所述S106中,对数据段进行加密,计算校验值,将所有数据写入文件;具体步骤包括:
S1061:用生成的buf作为主密钥对IV执行SM4加密算法,结果按字节异或data[i]...data[i+16]后保存至data第i字节开始的16字节,所述buf是指16字节临时变量,所述IV是指16字节的加密初始值参数;
S1062:IV[0]++,i=i+16;
S1063:重复S1061两次;
S1064:将data[0]...data[15]循环左移shift3比特后保存至INF第pos2开始的16字节中;将data[16]...data[31]循环右移shift2比特后保存至INF第pos2+16开始的16字节中;将data[32]...data[40]复制到INF第pos2+32开始的9个字节中;
S1065:利用SM3算法计算INF320字节的哈希值,将哈希值标志追加到bsinfo,将哈希值按字节异或iC0 32字节后追加到bsinfo;
S1066:加数据段开始描述信息至bsinfo;将320字节INF数据追加到bsinfo;追加数据段结束描述信息至bsinfo;将bsinfo保存至文件,关闭文件,结束。
9.基于国密算法的硬件指纹信息生成系统,其特征是,包括:
空白文件创建模块,其被配置为:创建空白文件,检测CPU指令支持情况,若满足要求,则进入下一步;如果不满足要求,则将错误信息接入空白文件,结束;
随机数生成模块,其被配置为:生成四组随机数,将第一组随机数作为序列号;
信息段生成模块,其被配置为:获取当前时间,生成INF信息段;从INF信息段中提取位置信息、偏移量和密钥种子;
从INF信息段中提取位置信息,具体步骤包括:
从INF 168字节开始的信息段中获取4个位置信息
pos0=128+INF[168+INF[181]%16]%16;
pos1=32+INF[168+INF[173]%16]%16;
pos2=64+INF[168+INF[175]%16]%16;
pos3=192+INF[168+INF[179]%16]%16;
其中,pos0表示第一位置信息;pos1表示第二位置信息;pos2表示第三位置信息;pos3表示第四位置信息;
从INF信息段中提取偏移量,具体步骤包括:
获取4个偏移量:
shift0=(INF[168+INF[172]%16]%16)*8;
shift1=(INF[168+INF[182]%16]%16)*8;
shift2=(INF[168+INF[180]%16]%16)*8;
shift3=(INF[168+INF[176]%16]%16)*8;
其中,shift0表示第一循环移位值,shift1表示第二循环移位值,shift2表示第三循环移位值,shift3表示第四循环移位值,用于将加密后的数据循环移位后保存,增加数据破解难度;
从INF信息段中提取密钥种子,具体步骤包括:
获取临时密钥种子INFT=INF[168+INF[183]%16]%16;
将临时密钥种子扩展到16字节作为主密钥,以SM4算法对32字节的序列号执行解密算法,将输出的32字节数据复制到INF数组pos3开始的32字节;
设置临时密钥种子INFT为预设固定值;
将临时密钥种子扩展到16字节作为主密钥,以SM4算法对INF数组168字节开始的16字节数据执行解密算法,将输出的16字节数据复制到原位置;
加密模块,其被配置为:采用国密算法对序列号进行加密,生成加密初始值参数,生成加密用主密钥,将所述加密初始值参数和所述加密用主密钥保存到INF信息段,具体包括:
将第一组随机数iC0 256比特数据循环左移shift0比特得到待加密数据,将第二组随机数iC1循环左移shift1比特生成临时密钥,以该密钥为主密钥利用SM4算法对待加密数据执行加密算法,得到16字节临时变量buf,将buf复制到16字节的加密初始值参数IV,将buf循环右移shift0比特后复制到INF数组pos1开始的16字节,S1042:将第三组随机数iC2 256比特数据循环左移shift2比特得到待加密数据,将第四组随机数iC3循环左移shift3比特生成临时密钥,以该密钥为主密钥对待加密数据执行SM4加密算法,得到16字节临时变量buf,将buf循环右移shift0比特后复制到INF数组pos0开始的16字节;
数据段构造模块,其被配置为:生成硬件信息,利用硬件信息、当前时间和CPU信息构造数据段;
硬件指纹信息生成模块,其被配置为:对数据段进行加密,计算校验值,将所有数据写入文件,结束。
10.一种电子设备,其特征是,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述权利要求1-8任一项所述的方法。
11.一种计算机可读存储介质,其特征是,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565463.8A CN111709044B (zh) | 2020-06-19 | 2020-06-19 | 基于国密算法的硬件指纹信息生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565463.8A CN111709044B (zh) | 2020-06-19 | 2020-06-19 | 基于国密算法的硬件指纹信息生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111709044A CN111709044A (zh) | 2020-09-25 |
CN111709044B true CN111709044B (zh) | 2021-06-22 |
Family
ID=72541453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010565463.8A Active CN111709044B (zh) | 2020-06-19 | 2020-06-19 | 基于国密算法的硬件指纹信息生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111709044B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111246382B (zh) * | 2020-03-26 | 2021-02-09 | 嘉兴嘉赛信息技术有限公司 | 一种通过硬件指纹检测智能手机是否为受控设备的方法 |
CN113504894B (zh) * | 2021-09-09 | 2021-12-17 | 华控清交信息科技(北京)有限公司 | 一种随机数产生器、生成伪随机数的方法和一种芯片 |
CN115118527B (zh) * | 2022-08-26 | 2022-11-25 | 深圳市成为信息股份有限公司 | 超高频模组与pda的双向认证方法及相关设备 |
CN115795413B (zh) * | 2023-02-07 | 2023-05-16 | 山东省计算中心(国家超级计算济南中心) | 基于国密算法的软件认证保护方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1561026A (zh) * | 2004-02-20 | 2005-01-05 | 胡祥义 | 一种基于加密算法技术的软件防盗版方法 |
CN101873331A (zh) * | 2010-07-07 | 2010-10-27 | 中国工商银行股份有限公司 | 一种安全认证方法和系统 |
CN106357400A (zh) * | 2016-11-07 | 2017-01-25 | 福建星海通信科技有限公司 | 建立tbox终端和tsp平台之间通道的方法以及系统 |
CN107516038A (zh) * | 2017-08-08 | 2017-12-26 | 北京梆梆安全科技有限公司 | 一种确定设备指纹的方法及装置 |
CN108156268A (zh) * | 2016-12-05 | 2018-06-12 | 腾讯科技(深圳)有限公司 | 设备标识的获取方法及服务器、终端设备 |
CN109286501A (zh) * | 2018-11-13 | 2019-01-29 | 北京深思数盾科技股份有限公司 | 用于加密机的认证方法以及加密机 |
US10659232B2 (en) * | 2014-04-09 | 2020-05-19 | Ictk Holdings Co., Ltd. | Message authentication apparatus and method based on public-key cryptosystems |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6129699B2 (ja) * | 2013-09-18 | 2017-05-17 | 株式会社東芝 | 個体識別装置、記憶装置、個体識別システム、その方法、およびプログラム |
-
2020
- 2020-06-19 CN CN202010565463.8A patent/CN111709044B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1561026A (zh) * | 2004-02-20 | 2005-01-05 | 胡祥义 | 一种基于加密算法技术的软件防盗版方法 |
CN101873331A (zh) * | 2010-07-07 | 2010-10-27 | 中国工商银行股份有限公司 | 一种安全认证方法和系统 |
US10659232B2 (en) * | 2014-04-09 | 2020-05-19 | Ictk Holdings Co., Ltd. | Message authentication apparatus and method based on public-key cryptosystems |
CN106357400A (zh) * | 2016-11-07 | 2017-01-25 | 福建星海通信科技有限公司 | 建立tbox终端和tsp平台之间通道的方法以及系统 |
CN108156268A (zh) * | 2016-12-05 | 2018-06-12 | 腾讯科技(深圳)有限公司 | 设备标识的获取方法及服务器、终端设备 |
CN107516038A (zh) * | 2017-08-08 | 2017-12-26 | 北京梆梆安全科技有限公司 | 一种确定设备指纹的方法及装置 |
CN109286501A (zh) * | 2018-11-13 | 2019-01-29 | 北京深思数盾科技股份有限公司 | 用于加密机的认证方法以及加密机 |
Also Published As
Publication number | Publication date |
---|---|
CN111709044A (zh) | 2020-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111709044B (zh) | 基于国密算法的硬件指纹信息生成方法及系统 | |
CN111709010B (zh) | 基于国密算法的终端认证信息提取和验证方法及系统 | |
CN111709059B (zh) | 基于国密算法的终端认证信息生成方法及系统 | |
JP3810425B2 (ja) | 改竄検出用データ生成方法、および改竄検出方法及び装置 | |
US11100011B2 (en) | Flash translation layer with hierarchical security | |
JP5734685B2 (ja) | インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体 | |
JP4074620B2 (ja) | メモリ管理ユニット | |
WO2011134207A1 (zh) | 软件保护方法 | |
US20210004456A1 (en) | Method for executing a binary code of a secure function with a microprocessor | |
US11829464B2 (en) | Apparatus and method for authentication of software | |
CN112989405A (zh) | 一种数据存证的可信化存储方法、装置、设备和存储介质 | |
EP3561705B1 (en) | Secure activation of functionality in a data processing system using iteratively derived keys | |
US20220171715A1 (en) | Electronic device | |
CN111147477B (zh) | 一种基于区块链网络的验证方法及装置 | |
JP5759827B2 (ja) | メモリシステム、情報処理装置、メモリ装置、およびメモリシステムの動作方法 | |
CN111523885B (zh) | 区块链钱包的加密多账户构造方法、计算机可读存储介质和区块链加密多账户钱包 | |
CN114579337A (zh) | 用于在用户设备中生成核心转储的方法和系统 | |
US12088722B2 (en) | Method for executing a computer program by means of an electronic apparatus | |
US20220294634A1 (en) | Method for executing a computer program by means of an electronic apparatus | |
US10242195B2 (en) | Integrity values for beginning booting instructions | |
CN105897405B (zh) | 一种128位对称密钥生成及保护装置 | |
JP6069120B2 (ja) | 情報処理システム | |
TWI778644B (zh) | 系統單晶片和其資料燒入方法 | |
WO2024057411A1 (ja) | メモリ更新装置、情報処理システム、メモリ更新方法及びコンピュータ可読媒体 | |
CN112069553B (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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20200925 Assignee: JINAN DONGSHUO MICROELECTRONIC CO.,LTD. Assignor: SHANDONG COMPUTER SCIENCE CENTER(NATIONAL SUPERCOMPUTER CENTER IN JINAN) Contract record no.: X2022980000636 Denomination of invention: Hardware fingerprint information generation method and system based on state secret algorithm Granted publication date: 20210622 License type: Common License Record date: 20220118 |