掌桥专利:专业的专利平台
掌桥专利
首页

一种CPK认证系统构建方法和电子设备

文献发布时间:2023-06-19 19:30:30


一种CPK认证系统构建方法和电子设备

技术领域

本发明涉及认证加密技术领域,尤其涉及一种CPK认证系统构建方法,本发明还涉及一种电子设备。

背景技术

CPK认证技术既可以基于一般有限域离散对数问题构建,也可以基于椭圆曲线离散对数问题构建。鉴于椭圆曲线离散对数问题在密码应用中具有在相同安全度条件下所占用的资源小于一般有限域离散对数问题的优势,一般多采用椭圆曲线离散对数问题构建该体系。

然而,现有技术中用户密钥可能发生碰撞问题,碰撞问题是由于密钥因子运算产生密钥时发生碰撞造成的。

因此,如何提供一种问题解决方案,其能够避免发生私钥碰撞,提高本技术方案所产生的公钥和私钥的安全性,已经成为本领域技术人员亟待完成的目标。

发明内容

为解决上述技术问题,本发明的主要目的在于提供一种CPK认证系统构建方法,能够避免发生私钥碰撞,提高本技术方案所产生的公钥和私钥的安全性,此外,本发明还提供一种电子设备,同样具有上述有益效果。

为实现上述目的,本发明提供一种CPK认证系统构建方法,该方法包括:确定椭圆曲线参数;根据所述椭圆曲线参数生成种子密钥矩阵对;基于用户标识数据生成矩阵坐标;根据所述矩阵坐标,从所述种子密钥矩阵对匹配得到公开密钥PK和私有密钥SK;其中,在所述“根据所述椭圆曲线参数生成种子密钥矩阵对”的步骤中包括:通过分离矩阵列数级法对所述种子密钥矩阵对中的私钥矩阵SSK进行处理。

进一步地,在本发明提供的一种CPK认证系统构建方法中,所述“根据所述椭圆曲线参数生成种子密钥矩阵对”包括以下步骤:获取所述椭圆曲线参数

进一步地,在本发明提供的一种CPK认证系统构建方法中,所述“通过分离矩阵列数级法对所述种子密钥矩阵对中的私钥矩阵SSK进行处理”具体为:所述私钥矩阵SSK是

进一步地,在本发明提供的一种CPK认证系统构建方法中,所述“通过分离矩阵列数级法对所述种子密钥矩阵对中的私钥矩阵SSK进行处理”具体为:私钥矩阵SSK是

设定私钥矩阵SSK满足以下条件:

a)任取第i列因子

b)

c)任取第i列因子

d)任取第i列因子:

进一步地,在本发明提供的一种CPK认证系统构建方法中,所述“基于用户标识数据生成矩阵坐标”包括以下步骤:对所述用户标识数据进行映射函数运算得到映射值序列;将所述映射值序列作为所述矩阵坐标。

进一步地,在本发明提供的一种CPK认证系统构建方法中,所述“根据所述矩阵坐标,从所述种子密钥矩阵对匹配得到公开密钥PK和私有密钥SK”包括以下步骤:将所述映射值序列作为矩阵横坐标;将矩阵纵坐标设定为顺序序列;根据所述矩阵横坐标和所述矩阵纵坐标从所述公钥矩阵PSK中匹配获取对应位置的公钥因子生成公开密钥PK;根据所述矩阵横坐标和所述矩阵纵坐标从所述私钥矩阵SSK中匹配获取对应位置的私钥因子生成私有密钥SK。

进一步地,在本发明提供的一种CPK认证系统构建方法中,所述“对所述用户标识数据进行映射函数运算”具体为:对所述用户标识数据进行多次映射函数运算;所述映射函数为哈希函数。

进一步地,在本发明提供的一种CPK认证系统构建方法中,“将矩阵纵坐标设定为顺序序列”包括:基于置换表将所述顺序序列打乱,再匹配获取公钥因子和私钥因子。

进一步地,在本发明提供的一种CPK认证系统构建方法中,所述“确定椭圆曲线参数”包括:

S101记所述椭圆曲线参数为

S102获取随机数a、b,且

S103求解椭圆曲线的阶#E(Fp);

S104判断椭圆曲线是否安全,若不安全,则重新执行步骤S102;

S105若安全,则随机生成椭圆上的点G;

S106判断[#E(Fp)]G是否是无穷远点O,若为是,则执行步骤S105;

S107若为否,则求解基点G的阶n;

S108判断n是否满足条件:n是素数;

S109若满足则输出

此外,本方案还提供一种电子设备,包括:计算机程序,所述计算机程序执行上述的CPK认证系统构建方法;存储器,所述存储器用于存储所述计算机程序;处理器,所述处理器用于执行所述计算机程序。

本发明提供的一种CPK认证系统构建方法,具体包括如下技术内容:确定椭圆曲线参数;根据所述椭圆曲线参数生成种子密钥矩阵对;基于用户标识数据生成矩阵坐标;根据所述矩阵坐标,从所述种子密钥矩阵对匹配得到公开密钥PK和私有密钥SK;其中,在所述“根据所述椭圆曲线参数生成种子密钥矩阵对”的步骤中包括:通过分离矩阵列数级法对所述种子密钥矩阵对中的私钥矩阵SSK进行处理。相比于现有技术而言,相比于现有技术而言,本发明涉及的技术方案中,先确定椭圆曲线参数,再根据椭圆曲线参数生成种子密码矩阵对;接着基于用户标识数据生成矩阵坐标,通过矩阵坐标从种子密钥矩阵对中得到公开密钥PK和私有密钥SK,实现公开密钥和私有密钥的生成。为了进一步提高安全性及稳定性,对种子密钥矩阵对中的私钥矩阵SSK进行分离矩阵列数级处理,得到不相互影响的私有密钥矩阵。本申请提供的技术方案,能够避免发生私钥碰撞,提高本技术方案所产生的公钥和私钥的安全性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图:

图1为本发明实施例涉及的一种CPK认证系统构建方法的流程图;

图2为本发明实施例中公钥因子的生成流程图;

图3为本发明实施例中SSK与PSK的生成流程图;

图4为本发明实施例中密钥的生成与分发流程图;

图5为本发明实施例中

图6为本发明实施例中置换表(序列3,置换起点是1)示意图;

图7为本发明实施例中使用NIST推荐的椭圆曲线,基元G的生成流程图;

图8为本发明实施例中椭圆曲线上非无穷远点生成流程图;

图9为本发明实施例中CPK认证系统结构图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的典型实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

具体参照图1至图9所示,本发明提供一种CPK认证系统构建方法,具体包括如下技术内容:确定椭圆曲线参数;根据所述椭圆曲线参数生成种子密钥矩阵对;基于用户标识数据生成矩阵坐标;根据所述矩阵坐标,从所述种子密钥矩阵对匹配得到公开密钥PK和私有密钥SK;其中,在所述“根据所述椭圆曲线参数生成种子密钥矩阵对”的步骤中包括:通过分离矩阵列数级法对所述种子密钥矩阵对中的私钥矩阵SSK进行处理。

相比于现有技术而言,本发明涉及的技术方案中,先确定椭圆曲线参数,再根据椭圆曲线参数生成种子密码矩阵对;接着基于用户标识数据生成矩阵坐标,通过矩阵坐标从种子密钥矩阵对中得到公开密钥PK和私有密钥SK,实现公开密钥和私有密钥的生成。为了进一步提高安全性及稳定性,对种子密钥矩阵对中的私钥矩阵SSK进行分离矩阵列数级处理,得到不相互影响的私有密钥矩阵。本申请提供的技术方案,能够避免发生私钥碰撞,提高本技术方案所产生的公钥和私钥的安全性。

具体地,在本发明实施例中,所述“根据所述椭圆曲线参数生成种子密钥矩阵对”包括以下步骤:获取所述椭圆曲线参数

需要说明的是,根据所述椭圆曲线参数的基础上,构建私钥矩阵SSK和公钥矩阵PSK;其中,p为有限域的阶;G为基点,n为基点G的素数阶,

所述私钥矩阵SSK和公钥矩阵PSK如下所示;

其中,

可见SSK是PSK对基点G的倍数值,PSK中任意元素的组合即为SSK中相应元素私钥的组合,即

CPK系统中,种子密钥矩阵维度是

具体地,在本发明实施例中,所述“通过分离矩阵列数级法对所述种子密钥矩阵对中的私钥矩阵SSK进行处理”具体为:所述私钥矩阵SSK是

具体地,在本发明实施例中,所述“通过分离矩阵列数级法对所述种子密钥矩阵对中的私钥矩阵SSK进行处理”具体为:私钥矩阵SSK是

设定私钥矩阵SSK满足以下条件:

a)任取第i列因子

b)

c)任取第i列因子

d)任取第i列因子:

需要说明的是,为了解决“标识映射后的序列不同但是私钥之和相等”的问题,即用户A的标识映射

需要说明的是,私钥碰撞也可由模n运算产生的,即

表1:私钥矩阵规模与n的最小比特长度对应表

需要说明的是,如图2所示,公钥矩阵PSK的生成步骤:

输入椭圆曲线方程a、b、p、G、n;

输入私钥因子---即种子私钥矩阵SSK元素

计算

判断

输出

需要说明的是,进一步的,SSK和PSK的生成流程如图3所示;

需要补充说明的是:种子私钥矩阵与公钥矩阵是一起生成的,按照种子私钥矩阵生成条件得到相应的随机值

具体地,在本发明实施例中,所述“基于用户标识数据生成矩阵坐标”包括以下步骤:对所述用户标识数据进行映射函数运算得到映射值序列;将所述映射值序列作为所述矩阵坐标。

具体地,在本发明实施例中,所述“根据所述矩阵坐标,从所述种子密钥矩阵对匹配得到公开密钥PK和私有密钥SK”包括以下步骤:将所述映射值序列作为矩阵横坐标;将矩阵纵坐标设定为顺序序列;根据所述矩阵横坐标和所述矩阵纵坐标从所述公钥矩阵PSK中匹配获取对应位置的公钥因子生成公开密钥PK;根据所述矩阵横坐标和所述矩阵纵坐标从所述私钥矩阵SSK中匹配获取对应位置的私钥因子生成私有密钥SK。

需要说明的是,用户公/私钥对是根据该用户标识的映射值序列为矩阵横坐标,顺序序列为矩阵纵坐标分别公钥矩阵和私钥矩阵中选取对应位置的因子,再进行组合运算而生成的。映射函数的选取要保证不同的用户标识具有不同的映射值。

假设某用户标识经过映射运算,生成映射值序列为

SK和PK构成用户的私钥、公钥对。PSK、SSK 由密钥中心统一生成并保管。用户公钥是 t (密钥矩阵的列数)个公钥因子的和(椭圆曲线上的点加运算),用户私钥是 t 个私钥因子的算术和(有限域Fp的运算)。密钥的生成与分发流程如图4所示。

图4密钥生成和分发的过程中,在查询用户的公钥时,首先通过该用户的标识和映射函数得到公钥矩阵因子坐标(与私钥因子坐标相同),然后将选取的公钥因子作椭圆曲线上的点加运算,最终得到该用户的公钥;选取的私钥因子作素数域Fp上的加法运算,最终得到该用户的私钥,通过物理通道发放至个人。

具体地,在本发明实施例中,所述“对所述用户标识数据进行映射函数运算”具体为:对所述用户标识数据进行多次映射函数运算;所述映射函数为哈希函数。

需要说明的是,本申请中,用户标识与密钥矩阵坐标的关联方法包括三种实施方式。第一种实施方式为:

基于身份标识的密钥对产生:对标识进行哈希函数(比如SHA-1、MD5、SHA-2、SM3)、行映射(分组加密算法)实现。即用户唯一标识ID通过hash函数得到唯一的hash序列YS,

上述分组加密的次数不定,比如s=32=2

具体地,在本发明实施例中,“将矩阵纵坐标设定为顺序序列”包括:基于置换表将所述顺序序列打乱,再匹配获取公钥因子和私钥因子。

需要说明的是,本申请中,用户标识与密钥矩阵坐标的关联方法包括三种实施方式。第二种实施方式为:

密钥矩阵的行坐标、列坐标都需要由用户标识经过映射变换得到相应的对应关系,其中列坐标映射过程中用到了置换表。列坐标映射是指把顺序序列{1,2,3,4,5,6,.....,t}打乱,大部分情况下t=32,因此接下来以32为例说明,把32个列坐标分成4组,每组的序号进行8×8的置换表进行置换。

具体步骤,身份唯一标识通过哈希函数(根据后面的需求,一般采用SHA-2或SM3)得到唯一序列YS,即

若置换序号是3,置换起点是1,则应取置换表中框内的元素(如图6所示)

例子如表2所示:

表2:例子说明

实现步骤------置换矩阵记为

输入:需要置换的序列(input)、置换的序列(row)、置换的起点(start)

输出:变换后序列(out)

置i=7~0,分别得到输入置换后的下标序列(change_index)、输出序列下标(out_index):change_index[7-i]=

out_index[7-i]=(start+i)%8;

置i=0~7:

for j =0~7:

if out_index[i]==change_index[j]:

out[i] = input[j]

Break

return out

需要说明的是,本申请中,用户标识与密钥矩阵坐标的关联方法包括三种实施方式。第三种实施方式为:

方案三(查看相应的CPK应用):

在方案一的基础上进行的改进,用户ID通过映射函数变换后得到的序列分为33份,即

具体地,在本发明实施例中,所述“确定椭圆曲线参数”包括:

S101记所述椭圆曲线参数为

S102获取随机数a、b,且

S103求解椭圆曲线的阶#E(Fp);

S104判断椭圆曲线是否安全,若不安全,则重新执行步骤S102;

S105若安全,则随机生成椭圆上的点G;

S106判断[#E(Fp)]G是否是无穷远点O,若为是,则执行步骤S105;

S107若为否,则求解基点G的阶n;

S108判断n是否满足条件:n是素数;

S109若满足则输出

需要说明的是,椭圆曲线参数的确立过程中,先将椭圆曲线参数记为:

进一步的,安全椭圆曲线的参数一般要满足:

满足抗MOV攻击条件(需要输入MOV阈及#E(Fp)的素因子)

置t=1;

对i从1到B(当p>2

输出“是”。

抗异常曲线的攻击条件(输入椭圆曲线的阶#E(Fp))

若#E(Fp)=p,则输出“否”;否则输出“是”

其他条件:

基点G的阶n是一个足够大的素数,一般要求n>2

n的余因子h是一个小整数,一般取1,要求1≤h≤4,即#E(Fp)=nh,满足输出“是”,否则输出“否”。

需要说明的是,椭圆曲线参数的确立有3个实施方式;

第一个实施方式的步骤为:

输入:大素数p;

输出:椭圆曲线参数a、b、G、n;

步骤1、随机产生a、b且

步骤2、求解椭圆曲线的阶#E(Fp);

步骤3、判断椭圆曲线是否安全-------根据安全椭圆曲线的一般要求,若判断参数是否满足条件时输出“否”,则不安全返回步骤1;

步骤4、随机生成椭圆上的点G;

步骤5、判断[#E(Fp)]G是否是无穷远点O,否则返回步骤1;

步骤6、求解基点G的阶n;

步骤7、判断n是否满足条件:n是素数;

步骤8:输出椭圆曲线参数a、b、G、n。

第二个实施方式为:

如图7所示,安全椭圆曲线参数的选取可以采用NIST推荐的曲线,以下列举5条曲线参数(p-192、p-224、p-256、p-384、p-521)----这些系数的椭圆曲线是安全的。

p-192的参数为(其中h称为余因子h=n/nS):

p=2

b=0x64210519 E59C80E7 0FA7E9AB 72243049 FEB8DEEC C146B9B1

n=0xFFFFFFFF FFFFFFFF FFFFFFFF 99DEF836 146BC9B1 B4D22831

p-224 的参数为:

p=2

b=0xB4050A85 0C04B3AB F5413256 5044B0B7 D7BFD8BA 270B3943 2355FFB4

n=0xFFFFFFFF FFFFFFFF FFFFFFFF FFFF16A2 E0B8F03E 13DD2945

5C5C2A3D

p-256 的参数为:

p=2

b=0x5AC635D8 AA3A93E7 B3EBBD55 769886BC 651D06B0 CC53B0F6 3BCE3C3E27D2604B

n=0xFFFFFFFF 00000000 FFFFFFFF FFFFFFFF BCE6FAAD A7179E84 F3B9CAC2FC632551

p-384 的参数为:

p=2

b=0xB3312FA7 E23EE7E4 988E056B E3F82D19 181D9C6E FE814112 0314088F5013875A C656398D 8A2ED19D 2A85C8ED D3EC2AEF

n=0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF C7634D81F4372DDF 581A0DB2 48B0A77A ECEC196A CCC52973

p-521 的参数为:

p=2

b=0x00000051 953EB961 8E1C9A1F 929A21A0 B68540EE A2DA725B 99B315F3B8B48991 8EF109E1 56193951 EC7E937B 1652C0BD 3BB1BF07 3573DF88 3D2C34F1EF451FD4 6B503F00

n=0x000001FF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFA 51868783 BF2F966B 7FCC0148 F709A5D0 3BB5C9B8 899C47AEBB6FB71E 91386409

需要补充说明的是,如图8所示,给定有限域Fp上的椭圆曲线

输入:素数p,Fp上的椭圆曲线E的参数a,b。

输出:E上一个非无穷远点。

步骤如下:

a、选取随机整数x,x∈[0,p-1];

b、置

c、若

d、求

e、若步骤d)的输出是“不存在平方根”,则返回步骤a);否则,步骤d)的输出是整数y,y∈(0,p),且

f、输出(x,y)。

此外,本方案还提供一种电子设备,包括:计算机程序,所述计算机程序执行上述的CPK认证系统构建方法;存储器,所述存储器用于存储所述计算机程序;处理器,所述处理器用于执行所述计算机程序。

此外,本方案还提供一种CPK认证系统,该系统应用上述CPK认证系统构建方法构建。CPK认证系统模块包括密钥生成中心、密钥管理中心、证书注册生成系统(证书是x.209编码)、公开访问数据库,具体如图9所示。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

相关技术
  • 一种基于CPK标识认证的端对端身份认证及加密方法
  • 一种基于CPK标识认证的无线网络接入认证的方法及装置
技术分类

06120115930752