ECC算法的签名方法、装置、设备、电路及存储介质制造方法及图纸

技术编号:37677062 阅读:16 留言:0更新日期:2023-05-26 04:42
本发明专利技术公开了一种ECC算法的签名方法、装置、设备、电路及计算机可读存储介质,涉及数据加密技术领域,该方法包括:获取加密输入信息;其中,加密输入信息包括加密消息、加密私钥和椭圆曲线参数;利用椭圆曲线参数提取椭圆基点,并生成计算随机数;对椭圆基点和/或计算随机数进行盲化处理,并采用随机滑动窗口算法计算椭圆曲线点;根据椭圆曲线点的横坐标、计算随机数、加密私钥、椭圆曲线参数的阶和加密消息对应的消息哈希值,获取加密消息对应的签名;本发明专利技术能够对椭圆基点和/或计算随机数进行随机化处理,并且采用随机滑动窗口算法的方式使得ECC算法的签名过程能够有效抵抗多种侧信道攻击,提高了侧信道防护效果,提升了数据安全性。安全性。安全性。

【技术实现步骤摘要】
ECC算法的签名方法、装置、设备、电路及存储介质


[0001]本专利技术涉及数据加密
,特别涉及一种ECC算法的签名方法、装置、设备、电路及计算机可读存储介质。

技术介绍

[0002]ECC(Elliptic Curve Cryptography,椭圆曲线密码)作为目前主流的椭圆曲线公钥密码算法,广泛运用于金融IT(Internet Technology,互联网技术)行业,且大量使用在商用密码芯片中。
[0003]目前,针对ECC算法的侧信道攻击随着ECC算法在商用领域的大量使用而越来越多,其中包括针对椭圆曲线的侧信道方法(主动攻击和被动攻击),因此,搭载该算法的安全芯片在密码卡等密码设备中的应用面临着严峻的挑战。
[0004]现有技术中,对于ECC算法的侧信道防护主要在点乘法运算的盲化方法,使其功耗平滑均衡;然而,该方法虽然能有效抵抗功耗分析和电磁分析,但对于整个ECC算法的签名过程,需要防护的不仅仅在点乘,也包含其他敏感计算,使得现有ECC算法的签名过程未达到良好的侧信道防护效果。因此,如何能够提高ECC算法的签名过程的侧信道防护效果,提升数据安全性和用户体验,是现今急需解决的问题。

技术实现思路

[0005]本专利技术的目的是提供一种ECC算法的签名方法、装置、设备、电路及计算机可读存储介质,以提高ECC算法的签名过程的侧信道防护效果,提升数据安全性和用户体验。
[0006]为解决上述技术问题,本专利技术提供一种ECC算法的签名方法,包括:
[0007]获取加密输入信息;其中,所述加密输入信息包括加密消息、加密私钥和椭圆曲线参数;
[0008]利用所述椭圆曲线参数提取椭圆基点,并生成计算随机数;
[0009]对所述椭圆基点和/或所述计算随机数进行盲化处理,并采用随机滑动窗口算法计算椭圆曲线点;
[0010]根据所述椭圆曲线点的横坐标、所述计算随机数、所述加密私钥、所述椭圆曲线参数的阶和所述加密消息对应的消息哈希值,获取所述加密消息对应的签名。
[0011]可选的,所述对所述椭圆基点和/或所述计算随机数进行盲化处理,并采用随机滑动窗口算法计算椭圆曲线点,包括:
[0012]对所述椭圆基点和所述计算随机数进行盲化处理,得到所述椭圆曲线点对应的盲化后计算式;其中,所述盲化后计算式为(x1,y1)=k'1×
(G+rand_point)+k'2×
(G+rand_point)

k'1×
rand_point

k'2×
rand_point,(x1,y1)为所述椭圆曲线点,k'=k1×
N+k,N为所述椭圆曲线参数的阶,k为所述计算随机数,k1为第一真随机数;k'=k'1+k'2,k'1和k'2为k'随机拆分得到的两个随机数;rand_point=k2×
G,k2为第二真随机数,G为所述椭圆基点;
[0013]采用随机滑动窗口算法,分别点乘计算所述盲化后计算式中的k'1×
(G+rand_
point)、k'2×
(G+rand_point)、k'1×
rand_point和k'2×
rand_point,并通过所述盲化后计算式得到椭圆曲线点。
[0014]可选的,所述采用随机滑动窗口算法,分别点乘计算所述盲化后计算式中的k'1×
(G+rand_point)、k'2×
(G+rand_point)、k'1×
rand_point和k'2×
rand_point,包括:采用随机滑动窗口算法,点乘计算所述盲化后计算式中的k'1×
(G+rand_point)的过程;
[0015]其中,所述采用随机滑动窗口算法,点乘计算所述盲化后计算式中的k'1×
(G+rand_point)的过程,包括:
[0016]配置点乘数组;其中,所述点乘数组包括计算点G'、3G'、5G'、7G'、9G'、11G'、13G'和15G',G'=(G+rand_point);
[0017]计算k'3=3
×
k'1,并计算k'3最高位为1的位置nb;
[0018]令i=nb

1,计算kb=k'3(i)

k'1(i);其中,k'3(i)为k'3中的第i比特值,k'1(i)为k'1中的第i比特值;
[0019]若kb=0,则计算G'=2G',i=i

1,并执行所述计算kb=k'3(i)

k'1(i)的步骤;
[0020]若kb!=0,则令j=i

1,kb=2
×
kb,计算kb1=k'3(j)

k'1(j);其中,k'3(j)为k'3中的第j比特值,k'1(j)为k'1中的第j比特值;
[0021]若kb1>0,则令kb=kb+1,j=j

1;
[0022]若kb1<0,则令kb=kb

1,j=j

1;
[0023]若abs(kb)>15,则令nbs=i

j+1,i=i

1,并执行所述计算kb=k'3(i)

k'1(i)的步骤;
[0024]若j<0,则令i=i

1,并执行所述计算kb=k'3(i)

k'1(i)的步骤;
[0025]若j≥0,则令j=i

1,并执行所述计算kb1=k'3(j)

k'1(j)的步骤;
[0026]在kb%2!=0且j!=0的情况下,若kb1>0,则令kb=(kb

1)/2;若kb1<0,则令kb=(kb+1)/2,nbs=nbs

1;
[0027]令nbz=0,判断kb%2是否等于0;若kb%2等于0,则令kb=kb/2,nbs=nbs

1,nbz=nbz+1,并执行所述判断kb%2是否等于0的步骤;
[0028]若kb%2不等于0或i<1,则取m=0至m=nbs

1,执行G'=2G';
[0029]若kb>0,则计算G'=G'+point_pre(abs(kb));
[0030]若kb≤0,则计算G'=G'

point_pre(abs(kb)),i=i

nbs;
[0031]取m=0至m=nbz

1,执行G'=2G',i=i

nbz,并执行所述计算kb=k'3(i)

k'1(i)的步骤。
[0032]可选的,所述利用所述椭圆曲线参数提取椭圆基点,并生成计算随机数之前,还包括:
[0033]对所述加密消息、所述加密消本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种ECC算法的签名方法,其特征在于,包括:获取加密输入信息;其中,所述加密输入信息包括加密消息、加密私钥和椭圆曲线参数;利用所述椭圆曲线参数提取椭圆基点,并生成计算随机数;对所述椭圆基点和/或所述计算随机数进行盲化处理,并采用随机滑动窗口算法计算椭圆曲线点;根据所述椭圆曲线点的横坐标、所述计算随机数、所述加密私钥、所述椭圆曲线参数的阶和所述加密消息对应的消息哈希值,获取所述加密消息对应的签名。2.根据权利要求1所述的ECC算法的签名方法,其特征在于,所述对所述椭圆基点和/或所述计算随机数进行盲化处理,并采用随机滑动窗口算法计算椭圆曲线点,包括:对所述椭圆基点和所述计算随机数进行盲化处理,得到所述椭圆曲线点对应的盲化后计算式;其中,所述盲化后计算式为(x1,y1)=k'1×
(G+rand_point)+k'2×
(G+rand_point)

k'1×
rand_point

k'2×
rand_point,(x1,y1)为所述椭圆曲线点,k'=k1×
N+k,N为所述椭圆曲线参数的阶,k为所述计算随机数,k1为第一真随机数;k'=k'1+k'2,k'1和k'2为k'随机拆分得到的两个随机数;rand_point=k2×
G,k2为第二真随机数,G为所述椭圆基点;采用随机滑动窗口算法,分别点乘计算所述盲化后计算式中的k'1×
(G+rand_point)、k'2×
(G+rand_point)、k'1×
rand_point和k'2×
rand_point,并通过所述盲化后计算式得到椭圆曲线点。3.根据权利要求2所述的ECC算法的签名方法,其特征在于,所述采用随机滑动窗口算法,分别点乘计算所述盲化后计算式中的k'1×
(G+rand_point)、k'2×
(G+rand_point)、k'1×
rand_point和k'2×
rand_point,包括:采用随机滑动窗口算法,点乘计算所述盲化后计算式中的k'1×
(G+rand_point)的过程;其中,所述采用随机滑动窗口算法,点乘计算所述盲化后计算式中的k'1×
(G+rand_point)的过程,包括:配置点乘数组;其中,所述点乘数组包括计算点G'、3G'、5G'、7G'、9G'、11G'、13G'和15G',G'=(G+rand_point);计算k'3=3
×
k'1,并计算k'3最高位为1的位置nb;令i=nb

1,计算kb=k'3(i)

k'1(i);其中,k'3(i)为k'3中的第i比特值,k'1(i)为k'1中的第i比特值;若kb=0,则计算G'=2G',i=i

1,并执行所述计算kb=k'3(i)

k'1(i)的步骤;若kb!=0,则令j=i

1,kb=2
×
kb,计算kb1=k'3(j)

k'1(j);其中,k'3(j)为k'3中的第j比特值,k'1(j)为k'1中的第j比特值;若kb1>0,则令kb=kb+1,j=j

1;若kb1<0,则令kb=kb

1,j=j

1;若abs(kb)>15,则令nbs=i

j+1,i=i

1,并执行所述计算kb=k'3(i)

k'1(i)的步骤;若j<0,则令i=i

1,并执行所述计算kb=k'3(i)

k'1(i)的步骤;若j≥0,则令j=i

1,并执行所述计算kb1=k'3(j)

k'1(j)的步骤;在kb%2!=0且j!=0的情况下,若kb1>0,则令kb=(kb

1)/2;若kb1<0,则令kb=(kb+1)/2,nbs=nbs

1;
令nbz=...

【专利技术属性】
技术研发人员:万刘蝉郑茳肖佐楠匡启和汪建强
申请(专利权)人:苏州国芯科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1