一种sm2算法程序的检测方法和系统的制作方法

文档序号:9547499阅读:724来源:国知局
一种sm2算法程序的检测方法和系统的制作方法
【技术领域】
[0001]本发明属于计算机技术、信息安全技术领域,具体涉及一种密码算法SM2算法的检测方法和系统。
【背景技术】
[0002]随着计算机和信息安全技术的发展,硬件处理速度和解密手段也在不断的提高,现有的密码算法为提高数据的安全性,需增加密钥的长度,而同时却会降低算法的处理速度。基于上述问题的存在,2010年12月17日国家密码安全局发布了 SM2椭圆曲线公钥密码算法,该算法基于椭圆曲线上点群离散对数难题。
[0003]SM2椭圆曲线公钥密码算法主要应用在数字签名、公钥加密以及密钥交换协议等方面。数字签名可对信息的完整性及有效性进行验证,公钥加密算法可以对信息进行加解密运算,防止重要信息的泄露,密钥交换协议主要用于密钥的管理和协商。
[0004]目前,对于系统中是否实现SM2算法的检测方法主要包括两类:(1)离线的数据传递方式。在预设SM2算法椭圆曲线参数、密钥和算法输入数据(待加密、解密、签名或验证签名等的数据)的情况下,计算相应的结果,被测系统对预设的输入数据执行相应的SM2算法操作,产生输出结果,将此结果与预先计算得到的结果进行比较,以此判定系统中是否正确实现了 SM2算法;(2)实时调用访问的方式。检测设备或检测程序直接与被检测对象建立数据通信连接,通过主动访问、调用被测对象中的SM2算法功能进而检测SM2算法的实现。以实现SM2算法的1C卡例,根据IS07816.4规定,智能卡与外界的通信数据接口为APDU,利用PC规范,实现PC与智能卡的最底层通信,进而检测密码算法,但需要获取智能卡的APDU指令集。

【发明内容】

[0005]本发明针对SM2算法的软件实现,提出一种SM2算法程序的检测方法及系统,简单准确的确定存储单元中是否有实现SM2算法的程序。
[0006]本发明SM2算法程序的检测系统包含检测机和待检测的存储单元(存储单元为计算机的系统硬盘或其他类型存储介质等),通过检测机对存储单元中文件包含的数据进行扫描,采用逐字节匹配判断的扫描方式,如图1所示。
[0007]本发明SM2算法的检测方法之一为,在已知SM2算法椭圆曲线参数的情况下,逐字节扫描存储单元中文件包含的数据,当存在数据与SM2算法中至少一个椭圆曲线参数完全匹配,则判定存储单元中有实现SM2算法的程序。
[0008]SM2算法椭圆曲线参数选自p、a、b、n、xG^P y c,其中,p是大于3的素数,Fp由{0,1,2,..., p-1}中p个元素组成,称之为素域;a、b为椭圆曲线方程中的常数项,a,beFp;G为SM2算法椭圆曲线上的一个基点,Xc和y c为二维坐标系下基点G的坐标;n为基点G的阶。
[0009]SM2算法椭圆曲线优选为国家密码局推荐使用素数域256位椭圆曲线及推荐曲线参数,所述椭圆曲线参数选自b、n、xGiPyGo其中,b为椭圆曲线方程中的常数项;6为SM2算法椭圆曲线上的一个基点,Xc和y c为二维坐标系下基点G的坐标;n为基点G的阶。
[0010]在SM2算法检测过程中,需要根据小端模式(Little-Endian)或大端模式(Big-Endian)对待检测存储单元中文件包含的数据进行逐字节匹配判断。若存在数据与SM2算法中至少一个椭圆曲线参数完全匹配,则判定存储单元中有实现SM2算法的程序。
[0011]本发明SM2算法的检测方法之二为,在SM2算法中数字签名,消息加解密等都需要计算椭圆曲线点[K]G,因此在运行计算的过程中通常会预存G的倍点[K]G列表(G、2G、3G……KG),计算过程中通过查表[K]G加速运算。其中,[K]G为椭圆曲线上点G的K倍点,[K]G = G+G+……G ;倍点[K]G在二维坐标系下的坐标表示为xjP y K,(xK, yK) = [K]G,[Κ]G列表为xK项和yK项的集合,K为正整数,且K〈n。因此扫描存储单元中文件包含的数据,若存在数据与倍点[K]G列表中X!(项或y κ项中至少一项完全匹配时,贝ij判定存储单元中有实现SM2算法的程序。
[0012]SM2算法椭圆曲线优选为国家密码局推荐使用素数域256位椭圆曲线及推荐曲线参数,所述椭圆曲线参数选自xe和ye。其中,G为SM2算法椭圆曲线上的一个基点,X(;和y(;为二维坐标系下基点G的坐标,(xK, yK) = [K]G。
[0013]在SM2算法检测过程中,需要根据小端模式或大端模式对待检测存储单元中文件包含的数据进行逐字节匹配判断。若存在数据与SM2算法椭圆曲线基点G的倍点[K]G列表中xK项或7><项中至少一项完全匹配,其中,K为正整数,K〈n,则判定该存储单元中有实现SM2算法的程序。
[0014]一种SM2算法程序的检测系统,包括检测机和待检测的存储单元(存储单元为计算机的系统硬盘或其他类型存储介质等)。其中,检测机用于扫描存储单元中文件包含的数据,当存在数据与SM2算法中至少一个椭圆曲线参数完全匹配、或者存在数据与SM2算法椭圆曲线基点G的倍点[K]G列表中χκ项或71(项中至少一项完全匹配,其中,Κ为正整数,Κ〈η,则判定存储单元中有实现SM2算法的程序。
[0015]与现有技术相比,本发明的积极效果为:
[0016]本发明主要利用SM2算法独特的椭圆曲线参数特征,以及计算的过程中预存基点G的倍点[K]G列表的特征,实现对SM2算法的检测。仅需检测机对存储单元中文件包含的数据进行逐字节匹配判断,不受操作系统和运行环境的限制,操作简单便利,准确率较高。
[0017]本发明的检测方法还可以辅助检测SM2算法是否为硬件实现。对于硬件实现的SM2算法,安全性比软件实现更高,在很多关键系统及应用中,均要求使用硬件实现的密码算法。在访问硬件实现的SM2算法设备时,同时还需要软件实现配合,以密码机为例,其构成包括密码卡、操作系统、应用程序、接口软件包等。在应用中,调用者无法区分SM2密码算法是由硬件系统(如密码卡)实现,还是由软件系统(如操作系统、应用程序、接口软件包等)实现。本发明的检测方法,通过对软件系统的存储单元进行检测,若未检测出与SM2算法参数匹配的数据,则可以有效排除SM2算法是由软件实现的可能性。由此本发明的检测方法可以辅助检测SM2算法是否为硬件实现。
【附图说明】
[0018]图1为SM2算法检测系统示意图。
[0019]图2为数据切分示意图:
[0020](a)为曲线参数按机器位切分示意图(以256位曲线参数,32位操作系统为例),
[0021](b)为小端模式数据存储示意图,
[0022](c)为大端模式数据存储示意图。
【具体实施方式】
[0023]为了使本发明的目的、技术方案及优点更加清楚明白,以下通过实施例对本发明作进一步详细说明。
[0024]对于SM2算法椭圆曲线公钥密码算法,国家密码局推荐使用素数域256位椭圆曲线及推荐曲线参数,椭圆曲线方程:y2= x3+ax+b
[0025]p = FFFFFFFE FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF 00000000 FFFFFFFFFFFFFFFF
[0026]a = FFFFFFFE FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF 00000000 FFFFFFFFFFFFFFFC
[0027]b = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD414D940E93
[0028]n = FFFFFFFE FFFFFFFF FFFFFFFFFFFFFFFF 7203DF6B 21C6052B 53BBF40939D54123
[0029]xG= 32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589334C74C7
[0030]yG= BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E52139F0A0
[0031]对于SM2算法256位椭圆曲线参数p,a,b, n,xG^P y Go p是大于3的素数,Fp由{0,1,2,...,p-l}中ρ个元素组成,称之为素域。a,b e Fp,且(4a3+27b2)modp乒0,椭圆曲线E(FP)的定义为E(FP) = {(x, y) x, y e Fp},且满足上述椭圆曲线方程及无穷远点的情况。G是椭圆曲线上的一个基点,基点G = (xG, yG) e E (Fp),因此G点是二维坐标系下的一个点对,包含xs和y s两个参数;n为基点G的阶。
[0032]在SM2算法检测过程中,扫描存储单元中文件包含的数据,与椭圆曲线参数p,a,b,n,X(;和y
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1