CN111709010A - 基于国密算法的终端认证信息提取和验证方法及系统 - Google Patents
基于国密算法的终端认证信息提取和验证方法及系统 Download PDFInfo
- Publication number
- CN111709010A CN111709010A CN202010565442.6A CN202010565442A CN111709010A CN 111709010 A CN111709010 A CN 111709010A CN 202010565442 A CN202010565442 A CN 202010565442A CN 111709010 A CN111709010 A CN 111709010A
- Authority
- CN
- China
- Prior art keywords
- data
- information
- terminal authentication
- bytes
- authentication information
- 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
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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- 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
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
本发明公开了基于国密算法的终端认证信息提取和验证方法及系统,包括:获取终端认证信息文件;从终端认证信息文件中获取终端认证信息;依次判断终端认证信息中的序列号是否读取成功,判断校验信息是否读取成功,判断数据段校验值是否验证成功;如果上述判断结果均为成功,则解密数据,重新加密数据,输出重新加密后的数据,并对重新加密后的数据进行恢复。
Description
技术领域
本公开涉及终端认证技术领域,特别是涉及基于国密算法的终端认证信息提取和验证方法及系统。
背景技术
本部分的陈述仅仅是提到了与本公开相关的背景技术,并不必然构成现有技术。
终端认证是版权保护的有效方法,目前主要采用远程服务器认证和本地认证两种方法,但是均存在一定的弊端。远程服务器认证要求客户端必须连接网络服务器,在很多时候客户端无法满足该条件;本地认证则存在数据被篡改、终端伪造等问题;此外这两种方法都存在系统保护手段和保护目标单一的问题。
发明内容
为了解决现有技术的不足,本公开提供了基于国密算法的终端认证信息提取和验证方法及系统;
第一方面,本公开提供了基于国密算法的终端认证信息提取和验证方法;
基于国密算法的终端认证信息提取和验证方法,包括:
获取终端认证信息文件;从终端认证信息文件中获取终端认证信息;
依次判断终端认证信息中的序列号是否读取成功,判断校验信息是否读取成功,判断数据段校验值是否验证成功;
如果上述判断结果均为成功,则解密数据,重新加密数据,输出重新加密后的数据,并对重新加密后的数据进行恢复。
第二方面,本公开提供了基于国密算法的终端认证信息提取和验证系统;
基于国密算法的终端认证信息提取和验证系统,包括:
获取模块,其被配置为:获取终端认证信息文件;从终端认证信息文件中获取终端认证信息;
判断模块,其被配置为:依次判断终端认证信息中的序列号是否读取成功,判断校验信息是否读取成功,判断数据段校验值是否验证成功;
恢复模块,其被配置为:如果上述判断结果均为成功,则解密数据,重新加密数据,输出重新加密后的数据,并对重新加密后的数据进行恢复。
第三方面,本公开还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述第一方面所述的方法。
第四方面,本公开还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述的方法。
第五方面,本公开还提供了一种计算机程序(产品),包括计算机程序,所述计算机程序当在一个或多个处理器上运行的时候用于实现前述第一方面任意一项的方法。
与现有技术相比,本公开的有益效果是:
利用硬件指纹信息对终端进行可靠性验证无需第三方服务器辅助,同时通过提取核心文件校验值作为输入参数来防止核心文件被篡改,对系统进行多重保护,此外将认证信息文件中保存的已加密系统核心数据利用终端硬件指纹信息等多种特定信息结合随机数进行重新加密,保证每次验证后的数据不同,可有效抵御静态分析等攻击方法。此外,在信息恢复过程关键参数参与全部信息提取和验证过程,任何参数的恶意篡改都将导致无法获取正确的结果,同时在运算过程中不进行错误判断,不返回错误信息,可抵抗静态分析和逆向攻击。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1为第一个实施例的方法流程图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
本实施例提供了基于国密算法的终端认证信息提取和验证方法;
如图1所示,基于国密算法的终端认证信息提取和验证方法,包括:
S1:获取终端认证信息文件;从终端认证信息文件中获取终端认证信息;
S2:依次判断终端认证信息中的序列号是否读取成功,判断校验信息是否读取成功,判断数据段校验值是否验证成功;
S3:如果上述判断结果均为成功,则解密数据,重新加密数据,输出重新加密后的数据,并对重新加密后的数据进行恢复。
基于国密算法的终端认证信息提取和验证方法,包括:
S101:获取硬件信息;获取终端认证信息文件;打开终端认证信息文件,判断是否打开成功,如果是就获取终端认证信息,读取并处理序列号,进入下一步;如果否,就关闭终端认证信息文件,结束;
S102:判断序列号是否读取成功,如果是,就读取并处理校验信息,进入下一步;如果否,就关闭终端认证信息文件,结束;
S103:判断校验信息是否读取成功,如果是,就读取并处理数据段数据,计算数据段校验值并进行验证,如果验证通过,则进入下一步,如果否,就关闭终端认证信息文件,结束;
S104:判断数据段校验值验证是否成功,如果是,就关闭终端认证文件,解密数据段,提取序列号、硬件指纹信息、有效期和加密数据,基于提取的数据解密数据,重新加密数据,输出重新加密后的数据和数据长度,结束;如果否,就关闭终端认证文件,结束;
S105:对重新加密的数据进行恢复。
进一步地,S101中,获取硬件信息;具体步骤包括:
生成64字节的随机数数组ROOTRAND;
获取主板序列号,如果主板序列号长于16字节,取后16字节,将主板序列号复制到ROOTRAND第16字节开始的内存,否则将全部主板序列号复制到ROOTRAND第16字节开始内存,以ROOTRAND第16字节开始的16字节为密钥生成解密用轮密钥;
获取CPU的CPUID,将CPUID复制到ROOTRAND第32字节开始的内存;
获取主板BIOS序列号,将BIOS序列号复制到ROOTRAND第48字节开始的内存;
利用SM3算法计算ROOTRAND数组32字节的哈希值;
将哈希值分解为2个16字节的比特串,按字节异或得到16字节的待加密信息。
利用轮密钥以SM4算法加密16字节的待加密信息,将加密后的信息复制到硬件信息数组;
利用CPUID检查虚拟机标志位,如果虚拟机标志位为1,返回0;
利用CPUID检测超线程标志位,保存至1字节的临时变量iHyb;
利用CPUID检测线程数,保存至2字节的临时变量iLogical;
利用CPUID检测核心数,保存至2字节的临时变量iCore;
如果超线程标志位为1同时核心数<线程数则设置超线程标志位为0;
返回iHyb||iLogical||iCore||0 8字节的无符号整数。
生成64字节的随机数数组ROOTRAND,将该随机数以常数的形式保存至各程序;生成64比特的随机数CINFBASE,将该随机数以常数的形式保存到各程序。
进一步地,所述获取终端认证信息文件,具体步骤包括:获取硬件信息并复制到临时数组bufAC。
进一步地,所述终端认证信息文件,具体生成步骤包括:
B104:从硬件指纹信息中读取并解密序列号;从硬件指纹信息中读取并解密校验信息;从硬件指纹信息中读取并解密数据段数据;
计算数据段校验值并进行验证,验证计算得到的校验值与存储的校验值是否一致,如果是就进入下一步,如果否,就将错误信息写入文件,结束;
B105:解密数据段,从文件中提取序列号、硬件指纹信息、信息生成时间和CPU信息;进行数据一致性验证,如果计算得到的值与存储的值一致,则验证成功,就进入下一步,如果否,就将错误信息写入文件,结束;
B106:生成随机数;基于随机数与文件校验值,生成数据段信息,将信息段和数据段信息写入文件,结束。
基于国密算法的终端认证信息生成方法,还包括:
B101:计算文件校验值;输入待加密数据,获取待加密数据长度和待加密数据的有效期,获取文件校验值,获取硬件指纹信息文件位置;
B102:根据硬件指纹信息文件位置,打开硬件指纹信息文件;判断是否打开成功,如果是则进入下一步,如果否就将错误信息写入终端认证信息文件,结束;
B103:读取硬件指纹信息,创建并打开终端认证信息文件,判断是否打开成功,如果是就进入下一步,如果否,结束。
应理解的,所述终端认证信息文件,保存了终端认证必须的信息和加密数据、有效期等。
应理解的,B104中,从硬件指纹信息中读取并解密序列号,是指将加密混淆过的序列号修改为原始序列号。
应理解的,B104中,从硬件指纹信息中读取并解密校验信息,是指将加密混淆过的校验信息修改为原始的校验信息。
进一步地,所述计算文件校验值,具体步骤包括:
使用SM3算法计算一个核心文件的哈希值,将哈希值平均分解为2个16字节的子块,按照字节异或得到16字节的文件校验值CRC。
所述核心文件,是指:库文件或参数文件。例如:应用程序执行必须的动态链接库、储存参数的文件等。
进一步地,所述B101中,待加密数据,例如:程序执行中的核心函数需要的常参数;
进一步地,硬件指纹信息的生成步骤包括:
SA101:创建空白文件,检测CPU指令支持情况,若满足要求,则进入SA102;如果不满足要求,则将错误信息接入空白文件,结束;
SA102:生成四组随机数,将第一组随机数作为序列号;
SA103:获取当前时间,生成INF信息段;从INF信息段中提取位置信息、偏移量和临时密钥种子;
SA104:采用国密算法分别对序列号和INF信息段进行加密,生成加密初始值参数,生成加密用主密钥;
SA105:生成硬件信息,利用硬件信息、当前时间和CPU信息构造数据段;
SA106:对数据段进行加密,计算校验值,将所有数据写入文件,结束。
进一步地,所述创建空白文件步骤之后,所述检测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字节。
进一步地,所述SA102:生成四组随机数,将第一组随机数作为序列号;具体步骤包括:
SA1021:用随机数生成器生成256比特的随机数,将其划分为32个8比特的小块,如果超过15个小块为全0,判断为随机数生成失败,将错误信息追加到bsinfo,将bsinfo写入文件,返回错误信息,退出;否则将随机数存入第一组随机数iC0;
SA1022:重复SA1021三次,生成第二组随机数iC1、第三组随机数iC2和第四组随机数iC3;
S1023:将第一组随机数iC0设置为序列号,将序列号标识信息和序列号追加到bsinfo。
进一步地,所述SA103的获取当前时间,具体步骤包括:
获取64位的当前时间,将当前时间信息追加到bsinfo。
进一步地,所述SA103的生成INF信息段,具体步骤包括:
SA103a1:设置临时序号i为0,生成320字节的无符号数组INF[320],该数组需要16字节内存对齐;
SA103a2:设置错误次数为0;
SA103a3:用随机数生成器生成256比特的随机数,将其划分为32个8比特的小块,如果超过12个小块为全0,判断为随机数生成失败,错误次数+1;
SA103a4:如果错误次数<10,转步骤S103a3,否则判断随机数生成失败,将错误信息追加到bsinfo,将bsinfo写入文件,返回错误信息,退出;否则将随机数复制到INF第i*32字节开始的位置,转SA103a5。
SA103a5:临时序号i+1,如果i=10,从INF信息段中提取位置信息;否则转SA103a2。
进一步地,从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字节数据复制到原位置。
进一步地,所述SA104中,对序列号进行加密,对INF信息段进行加密,生成加密初始值参数,生成加密用主密钥;具体步骤包括:
SA1041:将iC0 256比特数据循环左移shift0比特得到待加密数据,将iC1循环左移shift1比特生成临时密钥,以该密钥为主密钥利用SM4算法对待加密数据执行加密算法,得到16字节临时变量buf,将buf复制到16字节的加密初始值参数IV,将buf循环右移shift0比特后复制到INF数组pos1开始的16字节。
SA1042:将iC2 256比特数据循环左移shift2比特得到待加密数据,将iC3循环左移shift3比特生成临时密钥,以该密钥为主密钥对待加密数据执行SM4加密算法,得到16字节临时变量buf,将buf循环右移shift0比特后复制到INF数组pos0开始的16字节。
进一步地,所述SA105中,生成硬件信息的具体步骤包括:
SA105a1:获取主板序列号,如果主板序列号长于16字节,将主板序列号后16字节复制到ROOTRAND第16字节开始的内存;否则将全部主板序列号复制到ROOTRAND第16字节开始的位置,以ROOTRAND第16字节开始的16字节为主密钥生成SM4解密方式轮密钥;
SA105a2:获取CPU的序列号,如果CPU序列号长于16字节,将CPU序列号后16字节复制到ROOTRAND第32字节开始的内存;否则将全部CPU序列号复制到ROOTRAND第32字节开始的位置;
SA105a3:获取主板BIOS序列号,如果BIOS序列号长于16字节,将BIOS列号后16字节复制到ROOTRAND第48字节开始的内存;否则将全部BIOS序列号复制到ROOTRAND第48字节开始的位置;
SA105a4:利用SM3算法计算ROOTRAND数组64字节的哈希值;将32字节哈希值平均拆分为2个16字节的比特串,按字节异或得到16字节的待加密信息;
SA105a5:利用SM4算法以S105a1生成的主密钥对16字节的待加密信息执行解密算法,将输出的16字节信息复制到硬件信息数组;
SA105a6:检测CPU虚拟机标志位,如果虚拟机标志位非0,返回0;
SA105a7:检测CPU超线程标志位,保存至1字节的临时变量iHyb;
SA105a8:检测CPU线程数,保存至2字节的临时变量iLogical;
SA105a9:检测CPU核心数,保存至2字节的临时变量iCore;
如果超线程标志位为1,同时核心数<线程数则设置iHyb为0;
设置8字节的无符号整形数处理器特征值为0,将iHyb复制到该参数第1字节,将iLogical复制到该参数第2,3字节,将iCore复制到该参数第4,5字节。
返回处理器特征值。
进一步地,所述SA105中,利用硬件信息、当前时间和CPU信息构造数据段;具体步骤包括:
SA105b1:分配48字节的临时数组data;
SA105b2:将生成的16字节的硬件信息和8字节的CPU信息,将硬件信息复制到data;
SA105b3:将CPU信息复制到data第16字节开始的8字节;
SA105b4:将得到的时间信息复制到data第24字节开始的8字节;
SA105b5:混淆cpu信息,将INF数组第171字节开始的8字节数据按字节异或CINFBASE各字节后保存至data第32字节开始的8个字节中;
SA105b6:Data[40]=cpuid,临时变量i=0。
进一步地,所述SA106中,对数据段进行加密,计算校验值,将所有数据写入文件;具体步骤包括:
SA1061:用生成的buf作为主密钥对IV执行SM4加密算法,结果按字节异或data[i]...data[i+16]后保存至data第i字节开始的16字节;
SA1062:IV[0]++,i=i+16;
SA1063:重复SA1061两次;
SA1064:将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个字节中;
SA1065:利用SM3算法计算INF320字节的哈希值,将哈希值标志追加到bsinfo,将哈希值按字节异或iC0 32字节后追加到bsinfo;
SA1066:加数据段开始描述信息至bsinfo;将320字节INF数据追加到bsinfo;追加数据段结束描述信息至bsinfo;将bsinfo保存至文件,关闭文件,结束。
生成64字节的随机数数组ROOTRAND作为硬件信息基础常参数,用于提高随机性,将该随机数以固定参数的形式应用于各方法。
生成64比特的随机数CINFBASE,将该随机数以固定参数的形式应用于方法。
进一步地,所述B103中,创建并打开终端认证信息文件,包括:创建并打开终端认证信息文件;生成描述性信息,保存至终端认证信息字符串bsinfoX。
进一步地,所述B104中,从硬件指纹信息中读取并解密序列号;具体步骤包括:
B104a1:从硬件指纹信息字符串bsinfo中查找序列号标识信息,如没有找到,将错误信息追加到终端认证信息字符串bsinfoX,将终端认证信息字符串bsinfoX写入文件,返回错误信息,退出;
B104a2:取出32字节的序列号信息,如果失败,将错误信息追加到终端认证信息字符串bainfoX,将终端认证信息字符串bsinfoX写入文件,返回错误信息,退出;否则将序列号复制到无符号64位整形数组u64DA[4]。
B104a3:对u64DA数组进行8字节大小端置换。
进一步地,所述B104中,读取并解密校验信息,具体步骤包括:
B104b1:从硬件指纹信息字符串bsinfo中查找校验值标识信息,如果没有找到,将错误信息追加到终端认证信息字符串bsinfoX,将终端认证信息字符串bsinfoX写入文件,返回错误信息,退出;
B104b2:取出32字节的校验值,如果失败,将错误信息追加到终端认证信息字符串bainfoX,将终端认证信息字符串bsinfoX写入文件,返回错误信息,退出;否则将校验值复制到无符号64位整形数组u64D[4];对u64D数组进行8字节大小端置换。
进一步地,所述B104中,利用国密算法计算数据段校验值并进行验证,验证计算得到的校验值与存储的校验值是否一致,如果是就进入下一步,如果否,就将错误信息写入文件,结束;具体步骤包括:
B104c1:从硬件指纹信息字符串bsinfo中查找数据段开始标识信息和数据段结束标志信息。如果没有找到标志信息,将错误信息追加到终端认证信息字符串bsinfoX,将终端认证信息字符串bsinfoX写入文件,返回错误信息,退出;
B104c2:提取数据段数据,复制到u8DA数组,进行8字节大小端置换。令无符号字节指针bsinfo1指向u8DA数组首个元素;
B104c3:计算数据段数据哈希值。异或u64DA对应的256比特数据,结果与B104b2中的校验值比对,如果不一致,判断为数据段数据错误,将错误信息追加到终端认证信息字符串bsinfoX,将终端认证信息字符串bsinfoX写入文件,返回错误信息,退出;否则转步骤B104c4;
B104c4:将bsinfo1第171字节开始的8字节数据复制到64比特无符号整形数curTime0。
进一步地,B106中,所述生成数据段信息;具体步骤包括:
B1061:提取位置信息、偏移量信息和密钥种子信息;
B1062:利用硬件指纹信息和核心文件校验值生成密钥;
B1063:生成随机数,利用随机数生成有效期对应的时间信息,加密有效期事件信息;
B1064:利用硬件指纹信息文件中存储的文件生成初始日期和待加密数据的有效期生成加密用参数;
B1065:利用国密SM4算法加密序列号、硬件指纹信息文件中存储的文件生成初始日期、待加密数据的有效期,加密待加密的数据;
B1066:计算数据段校验值。
本发明中所有的方法均使用如下两组参数,须保证一致。
生成64字节的随机数数组ROOTRAND,将该随机数以常数的形式保存至各程序;生成64比特的随机数CINFBASE,将该随机数以常数的形式保存到各程序。
进一步地,所述获取终端认证信息,读取并处理序列号,具体步骤包括:
S101a1:获取终端认证信息至临时数组bsinfo;从临时数组bsinfo中查找序列号标识信息,如没有找到,返回错误信息,退出;
S101a2:取出64字节的字符,将其转换为64位无符号整形数组u64DA[4],如果整形数量不等于32,返回错误信息,退出;如果整形数量等于32,则进入下一步;
S101a3:对u64DA数组进行8字节置换。
进一步地,所述读取并处理校验信息,具体步骤包括:
S101b1:从临时数组bsinfo中查找哈希值标识信息,如果没有找到,返回错误信息,退出;
S101b2:取出64字节的字符,将其转换为64位无符号整形数组u64D[4],如果整形数量不等于32,返回错误信息,退出;如果整形数量等于32,则进入下一步。
进一步地,所述读取并处理数据段数据,计算数据段校验值并进行验证,具体步骤包括:
S101c1:从临时数组bsinfo中查找数据段开始标识信息和数据段结束标志信息;如果没有找到标志信息,返回错误信息,退出;
S101c2:提取数据段数据,复制到64位无符号整形数组u8DA,按照8字节置换令无符号字节指针bsinfo1指向u8DA数组首个元素;
S101c3:计算数据段u8DA数据哈希值;平均分为4个64比特的元素,依次异或64位无符号整形数组u64DA的4个元素,将结果与S101a2中的4个数值依次比对,如果不一致,则判断为数据段数据错误,返回错误信息,退出;如果一致,则进入下一步。
进一步地,所述解密数据段,具体步骤包括:
解密index段:
Bsinfo1首字节开始的16字节,bsinfo1第245字节开始的16字节,bufAC数组的16字节按字节异或后输出至key数组;
以key为主密钥,对bsinfo1第192字节开始的16字节执行SM4加密运算,将结果覆盖bsinfo1第192字节开始的16字节;
以key为主密钥,对bsinfo1第208字节开始的16字节执行SM4解密运算,将结果覆盖bsinfo1第208字节开始的16字节;
以key为主密钥对bsinfo1第224字节开始的16字节执行SM4解密运算,并保存至buf;
将bsinfo1第197字节开始的16字节与buf 16字节按字节异或后保存至crc32数组。
进一步地,所述提取序列号、硬件指纹信息、有效期和加密数据,具体步骤包括:
S104a1:用SM3算法计算输入的核心文件的哈希值,平均分解为2个16字节的子块,两个子块按字节异或得到16字节的文件校验值CRC,将CRC划分为4个4字节的子块,即每个子块对应32比特的无符号整数;将crc32数组平均分解为4个4字节子块,即每个子块对应32比特的无符号整数;将两组整数异或后得到4个32位无符号整数,对这4个无符号整数执行或操作后将结果保存至crcv1。
S104a2:获取4个位置信息:
pos_0=5+bsinfo1[192+bsinfo1[209]%32]%32;
pos_1=56+bsinfo1[192+bsinfo1[213]%32]%32;
pos_2=120+bsinfo1[192+bsinfo1[207]%32]%32;
pos_3=288+bsinfo1[192+bsinfo1[215]%32]%32;
其中,pos_0表示第一位置信息;pos_1表示第二位置信息;pos_2表示第三位置信息;pos_3表示第四位置信息;
S104a3:获取8个偏移量信息:
shift_0=(bsinfo1[192+bsinfo1[221]%32]%16)*8;
shift_1=(bsinfo1[192+bsinfo1[206]%32]%16)*8;
shift_2=(bsinfo1[192+bsinfo1[211]%32]%16)*8;
shift_3=(bsinfo1[192+bsinfo1[195]%32]%16)*8;
shift_4=(bsinfo1[192+bsinfo1[198]%32]%16)*8;
shift_5=(bsinfo1[192+bsinfo1[202]%32]%16)*8;
shift_6=(bsinfo1[192+bsinfo1[210]%32]%16)*8;
shift_7=(bsinfo1[192+bsinfo1[214]%32]%16)*8;
其中,shift_0表示第一偏移量信息;shift_1表示第二偏移量信息;shift_2表示第三偏移量信息;shift_3表示第四偏移量信息;shift_4表示第五偏移量信息;shift_5表示第六偏移量信息;shift_6表示第七偏移量信息;shift_7表示第八偏移量信息;
S104a4:设置INFT=bsinfo1[192+(bsinfo1[211]%16)];
S104a5:4个位置信息按字节异或crcv1后覆盖4个位置信息。
进一步地,所述S104中,解密数据的具体步骤包括:
S104b1:以key为主密钥,对bsinfo1第pos_1位置开始的16字节执行SM4解密运算,运算输出的16字节复制到临时数组All2;
S104b2:bsinfo1第205字节开始的16字节循环右移shift_0比特后保存至主密钥mkey;
S104b3:设临时变量i=0;
S104b4:All0[i]=crc32[i]^bsinfo1[192+(shift_4+i)%16)]^INFT;
其中,All0[i]表示临时数组;
S104b5:i++,如果i>15,转步骤S104b6,否则转步骤S104b4;
S104b6:All0循环右移shift_3比特后保存至key。
进一步地,所述S104中重新加密数据的具体步骤包括:
S104c1:mkey作为主密钥,对key执行SM4加密运算,将结果保存至key,并复制到All1;key循环左移shfit_2比特后保存至主密钥mkey;将All2开始的8字节复制到curTime,将All2第8字节开始的8字节复制到原始时间信息oldTime;
S104c2:将bsinfo1第205字节开始的8字节复制到有效期时间信息ExpTIme;
ExpTime=ExpTime异或oldTime;
获取64比特的无符号整形的当前时间oldTime;
令u64D[2]=oldTime;u64D[3]=ExpTime;
计算oldTime=(ExpTime-oldTime)>>63;
oldTime=oldTime*0xA321EFFeCD328765;
临时数组All2循环左移shift_1位后保存至buf;
S104c3:mkey为主密钥,对buf执行SM4加密运算,将运算得到的16字节循环左移shift_5位后保存至IV;
IV[0]^=oldTime,得到SM4加密算法的初始变量IV;
以临时变量All1为主密钥生成解密用轮密钥;
以临时变量All1为主密钥对SM4加密算法的初始变量IV进行SM4解密运算,运算结果异或bsinfo1第pos_2开始的16字节,然后异或u64DA,得到iF128;
S104c4:IV[0]++;
S104c5:以All1为主密钥对IV进行SM4解密运算,结果保存至buf;
buf异或bsinfo1第pos_2+16开始的16字节,然后异或u64DA+2开始的16字节,得到临时变量iG128;
iG128=iF128|iG128;
64比特的无符号整形临时变量tds=iG128高64位|iG128低64位;
以All1为主密钥生成加密用轮密钥;
IV[1]^=tds;
S104c6:IV[0]++;
S104c7:以All1为主密钥,对IV执行SM4加密运算,输出结果至iE128;
bsinfo1 pos_3开始的16字节循环右移shift_0位,保存至iD128;
iE128=iE128^iD128^crc32;
Len=iE128低32位,block=len/16;
生成128比特随机数保存至mkey作为主密钥;令j=0;
S104c8:IV[j%2]++;
S104c9:以All1为主密钥,加密IV保存至buf,buf按字节异或data第j*16开始的16字节,将结果保存至buf;
将buf16字节循环右移shift_N N=j%8保存至data第j*16字节开始的16字节位置;
j++,如果j<len/16;转S104c8,否则转S104c10;
S104c10:设置j=0,以mkey为主密钥对核心文件校验值执行SM4加密运算,结果保存至buf,异或硬件指纹信息后复制到odata+len/16开始的16字节;
S104c11:加密buf,将结果保存至buf,异或data开始j*16开始的16字节后保存至odata第j*16+16字节开始的16字节;
S104c12:j++,如果j<len/16;转S104c11,否则转S104c13;
S104c13:取odata j*16+13字节;
将文件哈希值循环右移S104c13生成的位数后作为主密钥对mkey执行SM4解密运算,将结果保存至二次加密数据odata;
验证通过,返回加密数据长度,结束。
进一步地,所述S105:对重新加密的数据进行恢复;具体步骤包括:
S1051:取二次加密数据odata最后16字节开始的第13字节;
S1052:获取核心文件哈希值和硬件指纹信息;所述核心文件为用户从应用程序中随机指定的一个文件;如果该文件被篡改,应用程序将无法正常运行;
S1053:将文件哈希值循环左移S1051得到的位数后作为主密钥对二次加密数据odata前16字节执行SM4加密运算,将结果作为主密钥mkey;
S1054:以mkey为主密钥,对核心文件校验值执行SM4加密运算,结果保存至buf,buf异或最后16字节后与硬件指纹信息比对,如不一致,将buf16字节设置为0,清空odata;如果一致,则进入S1055;
S1055:设置临时序号j=0;
S1056:以mkey为主密钥对buf执行SM4加密运算,将结果保存至buf,异或data开始j*16+16开始的16字节后,保存至恢复数据revdata第j*16字节开始的16字节;
S1057:j++,如果j<len/16;转S1056,否则转S1058;
S1058:返回len除以16,结束,输出二次加密后的数据,返回数据块数;
其中,返回数据块数等于len值除以16所得到的商。
实施例二
本实施例提供了基于国密算法的终端认证信息提取和验证系统;
基于国密算法的终端认证信息提取和验证系统,包括:
获取模块,其被配置为:获取终端认证信息文件;从终端认证信息文件中获取终端认证信息;
判断模块,其被配置为:依次判断终端认证信息中的序列号是否读取成功,判断校验信息是否读取成功,判断数据段校验值是否验证成功;
恢复模块,其被配置为:如果上述判断结果均为成功,则解密数据,重新加密数据,输出重新加密后的数据,并对重新加密后的数据进行恢复。
此处需要说明的是,上述获取模块、判断模块和*恢复模块对应于实施例一中的步骤S1至S3,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为系统的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
上述实施例中对各个实施例的描述各有侧重,某个实施例中没有详述的部分可以参见其他实施例的相关描述。
所提出的系统,可以通过其他的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如上述模块的划分,仅仅为一种逻辑功能划分,实际实现时,可以有另外的划分方式,例如多个模块可以结合或者可以集成到另外一个系统,或一些特征可以忽略,或不执行。
实施例三
本实施例还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述实施例一所述的方法。
应理解,本实施例中,处理器可以是中央处理单元CPU,处理器还可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASIC,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。
实施例一中的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元即算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
实施例四
本实施例还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例一所述的方法。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.基于国密算法的终端认证信息提取和验证方法,其特征是,包括:
获取终端认证信息文件;从终端认证信息文件中获取终端认证信息;
依次判断终端认证信息中的序列号是否读取成功,判断校验信息是否读取成功,判断数据段校验值是否验证成功;
如果上述判断结果均为成功,则解密数据,重新加密数据,输出重新加密后的数据,并对重新加密后的数据进行恢复。
2.如权利要求1所述的方法,其特征是,包括:
S101:获取硬件信息;获取终端认证信息文件;打开终端认证信息文件,判断是否打开成功,如果是就获取终端认证信息,读取并处理序列号,进入下一步;如果否,就关闭终端认证信息文件,结束;
S102:判断序列号是否读取成功,如果是,就读取并处理校验信息,进入下一步;如果否,就关闭终端认证信息文件,结束;
S103:判断校验信息是否读取成功,如果是,就读取并处理数据段数据,计算数据段校验值并进行验证,如果验证通过,则进入下一步,如果否,就关闭终端认证信息文件,结束;
S104:判断数据段校验值验证是否成功,如果是,就关闭终端认证文件,解密数据段,提取序列号、硬件指纹信息、有效期和加密数据,基于提取的数据解密数据,重新加密数据,输出重新加密后的数据和数据长度,结束;如果否,就关闭终端认证文件,结束;
S105:对重新加密的数据进行恢复。
3.如权利要求2所述的方法,其特征是,包括:S101中,获取硬件信息;具体步骤包括:
生成64字节的随机数数组ROOTRAND;
获取主板序列号,如果主板序列号长于16字节,取后16字节,将主板序列号复制到ROOTRAND第16字节开始的内存,否则将全部主板序列号复制到ROOTRAND第16字节开始内存,以ROOTRAND第16字节开始的16字节为密钥生成解密用轮密钥;
获取CPU的CPUID,将CPUID复制到ROOTRAND第32字节开始的内存;
获取主板BIOS序列号,将BIOS序列号复制到ROOTRAND第48字节开始的内存;
利用SM3算法计算ROOTRAND数组32字节的哈希值;
将哈希值分解为2个16字节的比特串,按字节异或得到16字节的待加密信息;
利用轮密钥以SM4算法加密16字节的待加密信息,将加密后的信息复制到硬件信息数组;
利用CPUID检查虚拟机标志位,如果虚拟机标志位为1,返回0;
利用CPUID检测超线程标志位,保存至1字节的临时变量iHyb;
利用CPUID检测线程数,保存至2字节的临时变量iLogical;
利用CPUID检测核心数,保存至2字节的临时变量iCore;
如果超线程标志位为1同时核心数<线程数则设置超线程标志位为0;返回iHyb||iLogical||iCore||0 8字节的无符号整数;
生成64字节的随机数数组ROOTRAND,将该随机数以常数的形式保存至各程序;生成64比特的随机数CINFBASE,将该随机数以常数的形式保存到各程序。
4.如权利要求2所述的方法,其特征是,所述获取终端认证信息,读取并处理序列号,具体步骤包括:
S101a1:获取终端认证信息至临时数组bsinfo;从临时数组bsinfo中查找序列号标识信息,如没有找到,返回错误信息,退出;
S101a2:取出64字节的字符,将其转换为64位无符号整形数组u64DA[4],如果整形数量不等于32,返回错误信息,退出;如果整形数量等于32,则进入下一步;
S101a3:对u64DA数组进行8字节置换。
5.如权利要求2所述的方法,其特征是,所述读取并处理校验信息,具体步骤包括:
S101b1:从临时数组bsinfo中查找哈希值标识信息,如果没有找到,返回错误信息,退出;
S101b2:取出64字节的字符,将其转换为64位无符号整形数组u64D[4],如果整形数量不等于32,返回错误信息,退出;如果整形数量等于32,则进入下一步。
6.如权利要求2所述的方法,其特征是,所述读取并处理数据段数据,计算数据段校验值并进行验证,具体步骤包括:
S101c1:从临时数组bsinfo中查找数据段开始标识信息和数据段结束标志信息;如果没有找到标志信息,返回错误信息,退出;
S101c2:提取数据段数据,复制到64位无符号整形数组u8DA,按照8字节置换令无符号字节指针bsinfo1指向u8DA数组首个元素;
S101c3:计算数据段u8DA数据哈希值;平均分为4个64比特的元素,依次异或64位无符号整形数组u64DA的4个元素,将结果与S101a2中的4个数值依次比对,如果不一致,则判断为数据段数据错误,返回错误信息,退出;如果一致,则进入下一步。
7.如权利要求2所述的方法,其特征是,所述S105:对重新加密的数据进行恢复;具体步骤包括:
S1051:取二次加密数据odata最后16字节开始的第13字节;
S1052:获取核心文件哈希值和硬件指纹信息;所述核心文件为用户从应用程序中随机指定的一个文件;如果该文件被篡改,应用程序将无法正常运行;
S1053:将文件哈希值循环左移S1051得到的位数后作为主密钥对二次加密数据odata前16字节执行SM4加密运算,将结果作为主密钥mkey;
S1054:以mkey为主密钥,对核心文件校验值执行SM4加密运算,结果保存至buf,buf异或最后16字节后与硬件指纹信息比对,如不一致,将buf16字节设置为0,清空odata;如果一致,则进入S1055;
S1055:设置临时序号j=0;
S1056:以mkey为主密钥对buf执行SM4加密运算,将结果保存至buf,异或data开始j*16+16开始的16字节后,保存至恢复数据revdata第j*16字节开始的16字节;
S1057:j++,如果j<len/16;转S1056,否则转S1058;
S1058:返回len除以16,结束,输出二次加密后的数据,返回数据块数;
其中,返回数据块数等于len值除以16所得到的商。
8.基于国密算法的终端认证信息提取和验证系统,其特征是,包括:
获取模块,其被配置为:获取终端认证信息文件;从终端认证信息文件中获取终端认证信息;
判断模块,其被配置为:依次判断终端认证信息中的序列号是否读取成功,判断校验信息是否读取成功,判断数据段校验值是否验证成功;
恢复模块,其被配置为:如果上述判断结果均为成功,则解密数据,重新加密数据,输出重新加密后的数据,并对重新加密后的数据进行恢复。
9.一种电子设备,其特征是,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述权利要求1-7所述的方法。
10.一种计算机可读存储介质,其特征是,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1-7所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565442.6A CN111709010B (zh) | 2020-06-19 | 2020-06-19 | 基于国密算法的终端认证信息提取和验证方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565442.6A CN111709010B (zh) | 2020-06-19 | 2020-06-19 | 基于国密算法的终端认证信息提取和验证方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111709010A true CN111709010A (zh) | 2020-09-25 |
CN111709010B CN111709010B (zh) | 2021-05-07 |
Family
ID=72541472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010565442.6A Active CN111709010B (zh) | 2020-06-19 | 2020-06-19 | 基于国密算法的终端认证信息提取和验证方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111709010B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114006930A (zh) * | 2021-09-30 | 2022-02-01 | 三一海洋重工有限公司 | 一种抓料机的远程控制方法、操作方法、装置及系统 |
CN114915416A (zh) * | 2022-04-20 | 2022-08-16 | 中金金融认证中心有限公司 | 用于对文件进行加密的方法、解密验证的方法及相关产品 |
WO2022252466A1 (zh) * | 2021-06-04 | 2022-12-08 | 统信软件技术有限公司 | 一种应用程序的授权方法、计算设备以及存储介质 |
CN115795413A (zh) * | 2023-02-07 | 2023-03-14 | 山东省计算中心(国家超级计算济南中心) | 基于国密算法的软件认证保护方法及系统 |
CN117472035A (zh) * | 2023-12-27 | 2024-01-30 | 东方电气风电股份有限公司 | 一种主控系统软件硬件的校验方法 |
CN118075037A (zh) * | 2024-04-25 | 2024-05-24 | 安徽华云安科技有限公司 | 数据加密方法、装置、设备以及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105323355A (zh) * | 2015-09-22 | 2016-02-10 | 电子科技大学 | 一种基于掌纹识别的Android隐私保护系统 |
CN106897631A (zh) * | 2017-02-03 | 2017-06-27 | 广东欧珀移动通信有限公司 | 数据处理方法、装置及系统 |
CN108304698A (zh) * | 2018-01-25 | 2018-07-20 | 深圳市广和通无线股份有限公司 | 产品授权使用方法、装置、计算机设备和存储介质 |
CN108600414A (zh) * | 2018-05-09 | 2018-09-28 | 中国平安人寿保险股份有限公司 | 设备指纹的构建方法、装置、存储介质及终端 |
US20200065503A1 (en) * | 2017-04-21 | 2020-02-27 | Ntropy Llc | Systems and Methods for Securely Transmitting Large Data Files |
CN110955896A (zh) * | 2019-10-30 | 2020-04-03 | 西安海云物联科技有限公司 | 一种通过近场通信实现单片机固件安全升级的方法 |
-
2020
- 2020-06-19 CN CN202010565442.6A patent/CN111709010B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105323355A (zh) * | 2015-09-22 | 2016-02-10 | 电子科技大学 | 一种基于掌纹识别的Android隐私保护系统 |
CN106897631A (zh) * | 2017-02-03 | 2017-06-27 | 广东欧珀移动通信有限公司 | 数据处理方法、装置及系统 |
US20200065503A1 (en) * | 2017-04-21 | 2020-02-27 | Ntropy Llc | Systems and Methods for Securely Transmitting Large Data Files |
CN108304698A (zh) * | 2018-01-25 | 2018-07-20 | 深圳市广和通无线股份有限公司 | 产品授权使用方法、装置、计算机设备和存储介质 |
CN108600414A (zh) * | 2018-05-09 | 2018-09-28 | 中国平安人寿保险股份有限公司 | 设备指纹的构建方法、装置、存储介质及终端 |
CN110955896A (zh) * | 2019-10-30 | 2020-04-03 | 西安海云物联科技有限公司 | 一种通过近场通信实现单片机固件安全升级的方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022252466A1 (zh) * | 2021-06-04 | 2022-12-08 | 统信软件技术有限公司 | 一种应用程序的授权方法、计算设备以及存储介质 |
CN114006930A (zh) * | 2021-09-30 | 2022-02-01 | 三一海洋重工有限公司 | 一种抓料机的远程控制方法、操作方法、装置及系统 |
CN114006930B (zh) * | 2021-09-30 | 2023-09-08 | 三一海洋重工有限公司 | 一种抓料机的远程控制方法、操作方法、装置及系统 |
CN114915416A (zh) * | 2022-04-20 | 2022-08-16 | 中金金融认证中心有限公司 | 用于对文件进行加密的方法、解密验证的方法及相关产品 |
CN114915416B (zh) * | 2022-04-20 | 2024-05-31 | 中金金融认证中心有限公司 | 用于对文件进行加密的方法、解密验证的方法及相关产品 |
CN115795413A (zh) * | 2023-02-07 | 2023-03-14 | 山东省计算中心(国家超级计算济南中心) | 基于国密算法的软件认证保护方法及系统 |
CN117472035A (zh) * | 2023-12-27 | 2024-01-30 | 东方电气风电股份有限公司 | 一种主控系统软件硬件的校验方法 |
CN117472035B (zh) * | 2023-12-27 | 2024-03-08 | 东方电气风电股份有限公司 | 一种主控系统软件硬件的校验方法 |
CN118075037A (zh) * | 2024-04-25 | 2024-05-24 | 安徽华云安科技有限公司 | 数据加密方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111709010B (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111709010B (zh) | 基于国密算法的终端认证信息提取和验证方法及系统 | |
CN111709044B (zh) | 基于国密算法的硬件指纹信息生成方法及系统 | |
CN111709059B (zh) | 基于国密算法的终端认证信息生成方法及系统 | |
JP3810425B2 (ja) | 改竄検出用データ生成方法、および改竄検出方法及び装置 | |
JP5914604B2 (ja) | 暗号化されたファイルを復号化する装置およびその方法 | |
US9659181B2 (en) | System, apparatus and method for license key permutation | |
CN110457873B (zh) | 一种水印嵌入与检测方法及装置 | |
CN101840361B (zh) | 程序验证装置及其方法 | |
JP6184751B2 (ja) | データ保護システムおよび方法 | |
WO2008116146A1 (en) | Software tamper resistance via integrity-checking expressions | |
CN113065169A (zh) | 一种文件存证方法、装置及设备 | |
CN112532379A (zh) | 一种文件保护方法及装置 | |
CN114386058A (zh) | 一种模型文件加密与解密方法及装置 | |
CN113434876A (zh) | 一种数据加密方法、装置、内存控制器、芯片及电子设备 | |
JPH03151738A (ja) | 検証用データ生成装置 | |
CN112989405A (zh) | 一种数据存证的可信化存储方法、装置、设备和存储介质 | |
CN108376212B (zh) | 执行代码安全保护方法、装置及电子装置 | |
JP2004185064A (ja) | プログラムの難読化装置及び難読化方法 | |
EP2286610A2 (en) | Techniques for peforming symmetric cryptography | |
Dobrovolsky et al. | Development of a hash algorithm based on cellular automata and chaos theory | |
KR102154897B1 (ko) | 블록체인 및 핑거프린팅을 이용한 디지털 콘텐츠 관리 방법, 이를 수행하기 위한 장치 및 기록매체 | |
CN116611032A (zh) | 一种jar包中嵌入和提取软件水印的方法、系统和存储介质 | |
CN114422209B (zh) | 一种数据处理的方法、装置及存储介质 | |
CN111523885B (zh) | 区块链钱包的加密多账户构造方法、计算机可读存储介质和区块链加密多账户钱包 | |
CN113553626A (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 |