CN106301770A - 一种Java卡SM2数字签名验证或信息加密的方法及装置 - Google Patents

一种Java卡SM2数字签名验证或信息加密的方法及装置 Download PDF

Info

Publication number
CN106301770A
CN106301770A CN201610702599.2A CN201610702599A CN106301770A CN 106301770 A CN106301770 A CN 106301770A CN 201610702599 A CN201610702599 A CN 201610702599A CN 106301770 A CN106301770 A CN 106301770A
Authority
CN
China
Prior art keywords
digital signature
calculated data
scalar
window width
signature authentication
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
CN201610702599.2A
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.)
Datang Microelectronics Technology Co Ltd
Datang Semiconductor Design Co Ltd
Original Assignee
Datang Microelectronics Technology Co Ltd
Datang Semiconductor Design 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 Datang Microelectronics Technology Co Ltd, Datang Semiconductor Design Co Ltd filed Critical Datang Microelectronics Technology Co Ltd
Priority to CN201610702599.2A priority Critical patent/CN106301770A/zh
Publication of CN106301770A publication Critical patent/CN106301770A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种Java卡SM2数字签名验证或信息加密的方法及装置,所述方法包括:在Java卡SM2应用初始化设置时,对SM2公钥参数进行标量固定窗口宽度Comb算法的初始化预计算,得到多个预计算数据,保存所述多个预计算数据;在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法运算,实现所述数字签名验证或信息加密操作。本发明还提供了一种包括上述装置的Java卡。本发明提供的方案,采用固定窗口的Comb算法实现SM2公钥的标量乘法,可以显著缩短SM2数字签名验证或信息加密的时间,满足Java卡对每秒验证SM2数字签名的次数要求。

Description

一种Java卡SM2数字签名验证或信息加密的方法及装置
技术领域
本发明涉及Java卡技术领域,尤其涉及一种Java卡SM2数字签名验证或信息加密的方法及装置。
背景技术
在Java卡的国密SM2数字签名验证或信息加密算法中,需要用到一次对公钥的标量乘法。公钥的标量乘法,是非定点标量乘法,一般采用滑动窗口计算,该算法计算量大,非常耗时。例如在SM2数字签名验证过程中有一次定点标量乘法和一个公钥标量乘法,非定点标量乘法大概占用了80%的时间,在Java卡的30MHz系统时钟、30MHz加解密时钟的芯片卡上验签一次大概需要65ms,不能满足Java卡每秒验证数字签名20次的要求。
发明内容
本发明的主要目的在于提出一种Java卡SM2数字签名验证或信息加密的方法及装置,旨在解决现有技术的Java卡SM2数字签名验证或信息加密耗时太长问题。
为实现上述目的,本发明提供的一种Java卡SM2数字签名验证或信息加密的方法,包括:
在Java卡SM2应用初始化设置时,对SM2公钥参数进行标量固定窗口宽度Comb算法的预计算,得到多个预计算数据,保存所述多个预计算数据;
在所述Java卡进行数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作。
可选地,其中,所述对SM2公钥参数进行标量固定窗口宽度Comb算法的预计算得到多个预计算数据,保存所述多个预计算数据,包括:
创建一个SM2的公钥对象,申请保存所述多个预计算数据所需的存储空间;
设置所述公钥对象的公钥参数;
调用native函数,按所述标量固定窗口宽度进行Comb算法的预计算,得到所述多个预计算数据;
将所述多个预计算数据保存到所述存储空间。
可选地,其中,在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作,包括:
在所述Java卡SM2应用进行数字SM2签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,替换所述标量固定窗口宽度Comb算法中SM2公钥的标量乘法运算项,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作。
可选地,其中,所述固定窗口宽度为w=4,所述保存预计算数据所需的存储空间为960字节;或者,所述固定窗口宽度为w=3,所述保存预计算数据所需的存储空间为448字节;或者,所述固定窗口宽度为w=2,所述保存预计算数据所需的存储空间为192字节。
本发明还提供了一种Java卡SM2数字签名验证或信息加密的装置,包括:
预计算模块,用于在Java卡SM2应用初始化设置时,对SM2公钥参数进行标量固定窗口宽度Comb算法的预计算,得到多个预计算数据;
存储模块,用于保存所述多个预计算数据;
运算模块,用于在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作。
可选地,其中,所述对SM2公钥参数进行标量固定窗口宽度Comb算法的预计算得到多个预计算数据,包括:
创建一个SM2的公钥对象,向所述存储模块申请保存多个预计算数据所需的存储空间;
设置所述公钥对象的公钥参数;
调用native函数,按所述标量固定窗口宽度进行Comb算法的预计算,得到多个预计算数据;
所述保存所述多个预计算数据,包括将所述多个预计算数据保存到所述存储空间。
可选地,其中,在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作,包括:
在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,替换所述标量固定窗口宽度Comb算法中SM2公钥的标量乘法运算项,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作。
可选地,其中,所述固定窗口宽度为w=4,所述保存预计算数据所需的存储空间为960字节;或者,所述固定窗口宽度为w=3,所述保存预计算数据所需的存储空间为448字节;或者,所述固定窗口宽度为w=2,所述保存预计算数据所需的存储空间为192字节。
本发明还提供了一种包括上述任一项所述数字签名验证或信息加密装置的Java卡。
本发明提供的Java卡SM2数字签名验证或信息加密的方法及装置,采用固定窗口宽度的Comb算法实现公钥的标量乘法,并将Comb算法分为两部分执行,其中的预计算部分在Java卡的发卡SM2应用初始化或升级操作过程的SM2应用初始化时一次性完成并保存预计算数据,在每次进行SM2数字签名验证或信息加密执行时,从所述预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法的运算,可以显著缩短SM2数字签名验证或信息加密的时间,满足Java卡对每秒验证SM2数字签名的次数要求。
附图说明
图1为本发明实施例的一种Java卡SM2数字签名验证或信息加密的方法流程示意图;
图2为本发明实施例的一种Java卡SM2数字签名验证或信息加密的装置框图;
图3为本发明实施例的一种包含SM2数字签名验证或信息加密的装置的Java卡示意图;
图4为本发明的一种示范性实施例的方法流程示意图;
图5为本发明的另一种示范性实施例的方法流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
国密SM2算法的曲线方程是椭圆曲线方程,国密SM2算法中,提供了一组参数p、a、b、n、G,宽度为256bits,其中G=(Gx,Gy)称为定点,对定点的标量乘法称为固定点标量乘法,其它点的标量乘法称为非定点标量乘法。
SM2算法中,将倍数dA称为私钥,将PA=dAG称为公钥,(dA,PA)为一组密钥对,私钥为用户保留,公钥对外公开。
在标量乘法过程中,两个相同点的相加为倍点算法,用D表示;两个不同点的相加称为点加,用A表示。
按照国密SM2推荐的参数宽度256bits椭圆曲线下Comb算法和滑动窗口算法性能比较,如下表一:
算法 W(窗口宽度) 预存储点个数 算法运算量
滑动窗口 5 7 50A+255D
Comb 4 15 59A+63D
Comb 3 7 75A+85D
Comb 2 3 95A+127D
表一
从表一可以发现,固定点标量乘法的Comb算法比非定点标量乘法(滑动窗口)可以显著减少倍点算法D的运算量,从而可以加快标量乘法的运算速度。
Comb算法如下:
t为k的二进制的位数,在k的最左边添加dw-t个比特0,k的比特数变为dw。将k平分为w组,记为:
k=Kw-1||...||K1||K0
Kj是一个行向量,其在如下的矩阵中定义:
K 0 · · · K i · · · K w - 1 = K d - 1 0 ... K 0 0 · · · · · · K d - 1 i ... K 0 i · · · · · · K d - 1 w - 1 ... K 0 w - 1 = k d - 1 ... k 0 · · · · · · k ( i + 1 ) d - 1 ... k i d · · · · · · k w d - 1 ... k ( w - 1 ) d
记矩阵的列向量为a,其中ai为0或1,
[aw-1,…,a2,a1,a0]P=aw-12(w-1)dP+…+a222dP+a12dP+a0P
对所有可能的(aw-1,…,a1,a0)的列向量进行预计算。如窗口宽度w=4,k的比特位数为256,则d=64,则预计算
[a3,a2,a1,a0]P=a32192P+a22128P+a1264P+a0P一共有16个值。0(∞)值不保存,一般保存15个。
标量固定窗口comb算法流程:
输入:固定窗口w,k=(kt-1,…,k2,k1,k0)2,P∈E(Fq)。
输出:kP
1.预计算。对所有的(aw-1,…,a1,a0)预计算
[aw-1,…,a2,a1,a0]P=aw-12(w-1)dP+…+a222dP+a12dP+a0P。
2.在k的最左边添加dw-t个比特0,记k=Kw-1||…||K1||K0,Kj是一d
比特宽度的行向量。表示Kj的第i个比特。
3.Q←0(∞);
4.i从d-1到0,
4.1)Q←2Q
4.2)
5.返回Q。
本申请的发明人发现虽然在SM2体系中公钥是变化的,但是对一个Java卡SM2应用而言,它又是固定的,在Java卡发行商发行Java卡或更新Java的SM2应用时,该公钥就确定了。固定窗口宽度的Comb算法中,比较费时的是其中的预计算过程,因此,如果在Java卡的SM2应用初始化或升级过程中,进行相关公钥的固定窗口Comb算法的预计算,得到预计算数据,并保存这些预计算数据,例如对于w=4,保存15个预计算数据;在Java卡进行SM2数字签名验证或信息加密运算时,仅需执行Comb运算的后续操作步骤,即上述步骤4.2中的从存储的预计算数据中检索读取相应数据即可,无需进行复杂的预计算过程,从而可以大大缩小Java卡进行SM2数字签名验证或信息加密运算的时间。
为此,本发明提供了一种Java卡SM2数字签名验证或信息加密的方法,如图1所示,包括:
步骤10:在Java卡SM2应用初始化设置时,对SM2公钥参数进行标量固定窗口宽度Comb算法的预计算,得到多个预计算数据,保存所述多个预计算数据;
步骤12:在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法的运算,实现所述SM2数字签名验证或信息加密操作。
本发明实施例中,由于Java卡SM2应用在发行或升级过程中,公钥就确定了,即PA=dAG不再变化,针对固定窗口宽度的Comb算法而言,相当于其kP的P值已确定。步骤10可以在Java卡发行时的SM2应用初始化过程中进行或者的Java卡SM2应用的数字证书升级时重新进行SM2应用初始化的过程中进行,虽然比较费时,但仅需执行一次,存储相应的预计算数据即可;
在Java卡SM2应用每次进行SM2数字签名验证或信息加密运算时,由于参数k已经是一个确定的256bits的数字,因此项在存储的预计算数据中检索读取即可,从而省去了繁复的预计算过程,例如对于所述公钥参数而言,当窗口宽度w=4时,这个就是某个[a3,a2,a1,a0]PA,即存储的15个预计算数据之一。因此,步骤12在Java卡SM2应用每次进行SM2数字签名验证或信息加密运算时执行,从所述多个预计算数据中读取相应数据(即每次运算涉及到均可以在存储的预计算数据中检索读取,无需进行该标量乘法运算),完成所述标量固定窗口宽度Comb算法的运算后,即可实现所述SM2数字签名验证或信息加密操作。
本发明提供的Java卡SM2数字签名验证或信息加密的方法,采用固定窗口宽度的Comb算法实现公钥的标量乘法,并将Comb算法分为两部分执行,其中的预计算部分在Java卡的发卡SM2应用初始化或升级操作过程的SM2应用初始化时一次性完成并保存预计算数据,在每次进行SM2数字签名验证或信息加密执行时,从所述预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法的运算,可以显著缩短SM2数字签名验证或信息加密的时间,满足Java卡SM2应用对每秒验证SM2数字签名的次数要求。
可选地,其中,所述对所述SM2公钥参数进行标量固定窗口宽度Comb算法的预计算得到多个预计算数据,保存所述多个预计算数据,包括:
创建一个SM2的公钥对象,申请保存所述多个预计算数据所需的存储空间;
设置所述公钥对象的公钥参数;
调用native函数,按所述标量固定窗口宽度进行Comb算法的预计算,得到所述多个预计算数据;
将所述多个预计算数据保存到所述存储空间。
本实施例中,针对Java卡SM2应用的固定窗口宽度Comb算法的预计算,可以在创建SM2的公钥对象时,同时申请保存所述多个预计算数据所需的存储空间;然后设置所述公钥对象的公钥参数(即PA参数,是两个256bit位的数);调用native函数,按所述标量固定窗口宽度进行Comb算法的预计算,得到所述多个预计算数据;将所述多个预计算数据保存到所述存储空间。根据固定窗口宽度的不同,需要存储的预计算数据个数不同,因此申请保存的存储空间也不同,可以根据Java卡的非易失性存储器,例如EEPROM的容量而定。
可选地,其中,在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,完成所述标量固定窗口宽度Comb算法的运算,实现所述SM2数字签名验证或信息加密操作,包括:
在所述Java卡SM2应该进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,替换所述标量固定窗口宽度Comb算法中SM2公钥的标量乘法运算项,完成所述标量固定窗口宽度Comb算法的运算,实现所述SM2数字签名验证或信息加密操作。
本实施例中,针对SM2标量固定窗口的Comb算法的循环迭代部分(参见上述步骤2~5),尤其是其中的步骤4.2,在循环迭代中,根据从存储的预计算数据检索读取数据,参与运算即可(即利用检索读取的相应预计算数据替换该标量乘法运算,此处对于公钥而言,P=PA),从而可以加快每次Comb算法的执行时间。
可选地,其中,所述固定窗口宽度为w=4,所述保存预计算数据所需的存储空间为960字节;或者,所述固定窗口宽度为w=3,所述保存预计算数据所需的存储空间为448字节;或者,所述固定窗口宽度为w=2,所述保存预计算数据所需的存储空间为192字节。
本实施例中,由于各种Java卡的存储资源不同,可以根据实际可用存储资源的大小,例如EEPROM的可用空间大小,选择不同的窗口宽度w,例如,对于固定窗口宽度为w=4,保存预计算数据所需的存储空间为960字节;对于固定窗口宽度为w=3,保存预计算数据所需的存储空间为448字节;对于固定窗口宽度为w=2,保存预计算数据所需的存储空间为192字节。即使存储空间比较紧张而采用w=3或2时,本发明采用固定窗口Combs算法的速度也比滑动窗口算法要快。
本发明提供的Java卡SM2数字签名验证或信息加密的方法,采用固定窗口宽度Comb算法实现SM2公钥的标量乘法,并将Comb算法分为两部分执行,其中的预计算部分在Java卡的发卡SM2应用初始化或升级过程的SM2应用初始化操作时一次性完成并保存预计算数据,在每次进行SM2数字签名验证或信息加密执行时,从所述预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法的运算,可以显著缩短SM2数字签名验证或信息加密的时间,例如,对于固定窗口宽度w=4,在系统时钟为30MHZ,加解密芯片时钟为30MHz的Java卡,SM2的数字签名验证一次仅需要36毫秒,满足Java卡每秒验证数字签名20次的要求。
相应地、本发明提供了一种Java卡SM2数字签名验证或信息加密的装置,如图2所示,包括:
预计算模块20,用于在Java卡SM2应用初始化设置时,对SM2公钥参数进行标量固定窗口宽度Comb算法的预计算,得到多个预计算数据;
存储模块22,用于保存所述多个预计算数据;
运算模块24,用于在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法的运算,实现所述数字签名验证或信息加密操作。
上述数字签名验证或信息加密的装置可以设置在Java卡的虚拟机上运行。
可选地,其中,所述对所述SM2公钥参数进行标量固定窗口宽度Comb算法的预计算得到多个预计算数据,包括:
创建一个SM2的公钥对象,向所述存储模块申请保存多个预计算数据所需的存储空间;
设置所述公钥对象的公钥参数;
调用native函数,按所述标量固定窗口宽度进行Comb算法的预计算,得到多个预计算数据;
所述保存所述多个预计算数据,包括将所述多个预计算数据保存到所述存储空间。
可选地,其中,在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法的运算,实现所述SM2数字签名验证或信息加密操作,包括:
在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,替换所述标量固定窗口宽度Comb算法中SM2公钥的标量乘法运算项,完成所述标量固定窗口宽度Comb算法的运算,实现所述SM2数字签名验证或信息加密操作。
可选地,所述装置中,
所述固定窗口宽度为w=4,所述保存预计算数据所需的存储空间为960字节;或者,所述固定窗口宽度为w=3,所述保存预计算数据所需的存储空间为448字节;或者,所述固定窗口宽度为w=2,所述保存预计算数据所需的存储空间为192字节。
如图3所示,本发明实施例还提供了一种包括上述任一项所述SM2数字签名验证或信息加密装置的Java卡,所述Java卡包括CPU/虚拟机和存储器,所述存储区存储上述SM2数字签名验证或信息加密装置,所述CPU/虚拟机实施所述SM2数字签名验证或信息加密装置的功能。
下面通过一个示范性实施例,对本发明进行进一步详细说明,如图4所示:
假设Java卡上运行一个应用,采用SM2密钥体系,该Java卡由银行发放,具备充足的EEPROM空间。在银行发放该Java卡应用时,对该卡进行初始化,设置相应的公钥PA,私钥dA由银行保存,PA=dAG,其中G=(Gx,Gy),虽然公钥PA对各个应用是不同的,但对该卡而言则是固定的,G是一个固定的512bits的数。
因此可以分为以下两部分:
(一)Java卡SM2应用初始化操作,步骤30:
由于该卡EEPROM存储空间充足,可以采用固定窗口宽度w=4,在初始化过程中创建一个SM2的公钥对象,同时多申请960个字节用于保存预计算数据;
设置所述公钥对象的公钥参数PA
调用native函数,按所述标量固定窗口宽w=4进行Comb算法的预计算,得到15个预计算数据,每个数据64个字节(无穷远点0不保存);保存所述15个点的预计算数据,占用960字节。
完成对该Java卡的初始化操作后,将该Java卡发放给用户。
上述初始化过程中,按照一般的Comb标量固定窗口w=4的算法流程,执行以下Comb算法的预计算操作:
输入:固定窗口w=4,k=(kt-1,…,k2,k1,k0)2(k为数字签名256bits的数),PA∈E(Fq)。
输出:kPA
1.预计算。对所有的(aw-1,…,a1,a0)预计算
[aw-1,...,a2,a1,a0]PA=aw-12(w-1)dPA+…+a222dPA+a12dPA+a0PA
此处,具体地,选择窗口为w=4,k的bits数为256位,则d=64,上述预计算公式简化为:[a3,a2,a1,a0]PA=a32192PA+a22128PA+a1264PA+a0PA,一共有16个值,0(∞)值不保存,仅需保存15个预计算数据,即1PA,2PA,…,15PA,每个数据为64字节。这个预计算过程在Java卡的初始化时完成,并在EEPROM中保存上述15个预计算数据,每个数据64bit位。
(二)Java卡SM2应用进行SM2数字签名验证,步骤31a
在用户使用该Java卡的SM2应用收到数字签名信息时,需要进行SM2数字签名认证,对于SM2数字签名的某个256bits,执行kPA操作;
在执行Comb标量固定窗口w=4的算法时,涉及步骤1预计算的内容,即
对所有的[a3,a2,a1,a0]PA=a32192PA+a22128PA+a1264PA+a0PA的预计算操作,已经在Java卡的SM2应用初始化时完成,并在EEPROM中保留了15个预计算数据,即1PA,2PA,…,15PA,每个数据为64字节。
因此,进行SM2数字签名验证时,Java卡SM2应用实际需要进行的Comb运算步骤为以下步骤2~5:
2.在k的最左边添加dw-t个比特0,记k=K3||…||K1||K0,Kj是一d比
特宽度的行向量(对于w=4,k为256bits数,d=64)。表示Kj的第i
个比特。
3.Q←0(∞);
4.i从d-1到0,
4.1)Q←2Q
4.2)
5.返回Q。
在步骤4.2的运算中,其中的此时即为:(a3,a2,a1,a0)PA(其中ai为0或1,i=0,1,2,3),即1PA,2PA,…,15PA这15个预计算数据中的某一个,按照相应的kPA(k=1,2,…15)检索存储的15个预计算数据(即1PA,2PA,…,15PA),将相应的数据读出,替换步骤4.2中的标量乘法项(即:通式中的)进行运算即可。
(三)Java卡SM2应用信息加密,步骤31b:
当Java卡SM2应用对信息进行SM2加密运算操作时,涉及公钥标量乘法运算的过程与上述(二)Java卡SM2应用进行SM2数字签名验证的Comb算法类似。
作为另一个示范性实施例,如图5所示,用户使用Java卡过程中,银行可能需要修改Java卡的SM2应用或更新SM2数字证书,如果涉及公钥参数变更,参照图4,对Java重新进行一次SM2应用初始化设置即可,参见如步骤41。
用户后续使用Java卡时,涉及SM2数字签名验证或信息加密时,步骤41a/41b与步骤31a/31b类似。
上述示范性实施例,针对系统时钟为30MHZ,加解密芯片时钟为30MHz的Java卡,采用本发明提供的方法,SM2数字签名验证一次仅需要36毫秒,相比于非定点标量算法的数字签名验证时间65ms时间,大为缩短。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个非易失性存储介质(如ROM、EPROM、EEPROM等)中,执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (9)

1.一种Java卡SM2数字签名验证或信息加密的方法,其特征在于,包括:
在Java卡SM2应用初始化设置时,对SM2公钥参数进行标量固定窗口宽度Comb算法的预计算,得到多个预计算数据,保存所述多个预计算数据;
在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作。
2.如权利要求1所述的方法,其特征在于,所述对所述SM2公钥参数进行标量固定窗口宽度Comb算法的预计算得到多个预计算数据,保存所述多个预计算数据,包括:
创建一个SM2的公钥对象,申请保存所述多个预计算数据所需的存储空间;
设置所述公钥对象的公钥参数;
调用native函数,按所述标量固定窗口宽度进行Comb算法的预计算,得到所述多个预计算数据;
将所述多个预计算数据保存到所述存储空间。
3.如权利要求1所述的方法,其特征在于,在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作,包括:
在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,替换所述标量固定窗口宽度Comb算法中SM2公钥的标量乘法运算项,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作。
4.如权利要求1~3任一项所述的方法,其特征在于,
所述固定窗口宽度为w=4,所述保存预计算数据所需的存储空间为960字节;或者,所述固定窗口宽度为w=3,所述保存预计算数据所需的存储空间为448字节;或者,所述固定窗口宽度为w=2,所述保存预计算数据所需的存储空间为192字节。
5.一种Java卡SM2数字签名验证或信息加密的装置,其特征在于,包括:
预计算模块,用于在Java卡SM2应用初始化设置时,对SM2公钥参数进行标量固定窗口宽度Comb算法的预计算,得到多个预计算数据;
存储模块,用于保存所述多个预计算数据;
运算模块,用于在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作。
6.如权利要求5所述的装置,其特征在于,
所述对所述SM2公钥参数进行标量固定窗口宽度Comb算法的预计算得到多个预计算数据,包括:
创建一个SM2的公钥对象,向所述存储模块申请保存多个预计算数据所需的存储空间;
设置所述公钥对象的公钥参数;
调用native函数,按所述标量固定窗口宽度进行Comb算法的预计算,得到多个预计算数据;
所述保存所述多个预计算数据,包括将所述多个预计算数据保存到所述存储空间。
7.如权利要求5所述的装置,其特征在于,在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作,包括:
在所述Java卡SM2应用进行SM2数字签名验证或信息加密运算时,从所述多个预计算数据中读取相应数据,替换所述标量固定窗口宽度Comb算法中SM2公钥的标量乘法运算项,完成所述标量固定窗口宽度Comb算法运算,实现所述SM2数字签名验证或信息加密操作。
8.如权利要求5~7任一项所述的装置,其特征在于,
所述固定窗口宽度为w=4,所述保存预计算数据所需的存储空间为960字节;或者,所述固定窗口宽度为w=3,所述保存预计算数据所需的存储空间为448字节;或者,所述固定窗口宽度为w=2,所述保存预计算数据所需的存储空间为192字节。
9.一种包括权利要求5~8任一项所述SM2数字签名验证或信息加密装置的Java卡。
CN201610702599.2A 2016-08-22 2016-08-22 一种Java卡SM2数字签名验证或信息加密的方法及装置 Pending CN106301770A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610702599.2A CN106301770A (zh) 2016-08-22 2016-08-22 一种Java卡SM2数字签名验证或信息加密的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610702599.2A CN106301770A (zh) 2016-08-22 2016-08-22 一种Java卡SM2数字签名验证或信息加密的方法及装置

Publications (1)

Publication Number Publication Date
CN106301770A true CN106301770A (zh) 2017-01-04

Family

ID=57662463

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610702599.2A Pending CN106301770A (zh) 2016-08-22 2016-08-22 一种Java卡SM2数字签名验证或信息加密的方法及装置

Country Status (1)

Country Link
CN (1) CN106301770A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106603246A (zh) * 2017-01-22 2017-04-26 武汉理工大学 一种sm2数字签名分割生成方法及系统
CN109660351A (zh) * 2018-11-08 2019-04-19 北京大学 一种sm2公钥密码的数字签名快速生成方法
CN110048844A (zh) * 2019-03-29 2019-07-23 网御安全技术(深圳)有限公司 实现sm2算法的多倍点计算方法、装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007005563A2 (en) * 2005-07-01 2007-01-11 Microsoft Corporation Elliptic curve point multiplication
US20110075836A1 (en) * 2009-09-29 2011-03-31 Fujitsu Limited Method and apparatus for elliptic curve cryptographic processing
CN103475469A (zh) * 2013-09-10 2013-12-25 中国科学院数据与通信保护研究教育中心 一种结合cpu和gpu实现sm2算法的方法及装置
CN104468125A (zh) * 2014-12-24 2015-03-25 江西倍康信息技术有限公司 基于国密算法的移动互联网信息通信加密方法
EP2660796B1 (en) * 2010-12-27 2018-10-31 Mitsubishi Electric Corporation Arithmetical device, arithmetical device elliptical scalar multiplication method and elliptical scalar multiplication program, arithmetical device multiplicative operation method and multiplicative operation program, as well as arithmetical device zero determination method and zero determination program

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007005563A2 (en) * 2005-07-01 2007-01-11 Microsoft Corporation Elliptic curve point multiplication
US20110075836A1 (en) * 2009-09-29 2011-03-31 Fujitsu Limited Method and apparatus for elliptic curve cryptographic processing
EP2660796B1 (en) * 2010-12-27 2018-10-31 Mitsubishi Electric Corporation Arithmetical device, arithmetical device elliptical scalar multiplication method and elliptical scalar multiplication program, arithmetical device multiplicative operation method and multiplicative operation program, as well as arithmetical device zero determination method and zero determination program
CN103475469A (zh) * 2013-09-10 2013-12-25 中国科学院数据与通信保护研究教育中心 一种结合cpu和gpu实现sm2算法的方法及装置
CN104468125A (zh) * 2014-12-24 2015-03-25 江西倍康信息技术有限公司 基于国密算法的移动互联网信息通信加密方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李博: "《预计算类ECC标量乘算法高速存储控制电路设计》", 《计算机应用与软件》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106603246A (zh) * 2017-01-22 2017-04-26 武汉理工大学 一种sm2数字签名分割生成方法及系统
CN106603246B (zh) * 2017-01-22 2019-05-24 武汉理工大学 一种sm2数字签名分割生成方法及系统
CN109660351A (zh) * 2018-11-08 2019-04-19 北京大学 一种sm2公钥密码的数字签名快速生成方法
CN109660351B (zh) * 2018-11-08 2020-09-08 北京大学 一种sm2公钥密码的数字签名快速生成方法
CN110048844A (zh) * 2019-03-29 2019-07-23 网御安全技术(深圳)有限公司 实现sm2算法的多倍点计算方法、装置
CN110048844B (zh) * 2019-03-29 2020-09-11 网御安全技术(深圳)有限公司 实现sm2算法的多倍点计算方法、装置

Similar Documents

Publication Publication Date Title
US6408075B1 (en) Information processing equipment and IC card
US11093817B2 (en) Information processing device and information processing method
CN1677917B (zh) 用于流式密码中的循环存储单元的方法和系统
US20040193890A1 (en) Public key cryptographic method of protecting an electronic chip against fraud
US20030123656A1 (en) Elliptic curve cryptosystem apparatus, storage medium storing elliptic curve cryptosystem program, and elliptic curve cryptosystem arithmetic method
CN106301770A (zh) 一种Java卡SM2数字签名验证或信息加密的方法及装置
JP2002297033A (ja) 情報処理装置の演算方法および耐タンパー演算撹乱実装方式
Hashimoto et al. Secure grouping protocol using a deck of cards
Graepel Kernel matrix completion by semidefinite programming
Ahmadinezhad On pliability of del Pezzo fibrations and Cox rings
CN108063758A (zh) 用于区块链网络的签名验证方法及区块链网络中的节点
CN114528574A (zh) 基于加密算法的数据处理方法、装置、设备及介质
Eisenbarth et al. Faster hash-based signatures with bounded leakage
CN1650254B (zh) 计算模数乘法之结果的装置及方法
Dugan et al. Tiered trees, weights, and q-Eulerian numbers
Fiori Nonlinear damped oscillators on Riemannian manifolds: Numerical simulation
US7742595B2 (en) Cryptographic method protected against covert channel type attacks
US20060133603A1 (en) Integer division method which is secure against covert channel attacks
CN105593876B (zh) 序列化流中的验证
CN105991289A (zh) Sm3密码算法的侧信道能量分析方法及装置
CN116318660B (zh) 一种消息扩展与压缩方法及相关装置
US10333697B2 (en) Nondecreasing sequence determining device, method and program
CN104091131A (zh) 应用程序与权限的关系确定方法及确定装置
Lorch Magic squares and sudoku
CN113837294B (zh) 模型训练及调用方法、装置、计算机设备、存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170104