CN101777977A - 基于生物特征点拓扑结构的非对称加解密方法 - Google Patents
基于生物特征点拓扑结构的非对称加解密方法 Download PDFInfo
- Publication number
- CN101777977A CN101777977A CN200910095294A CN200910095294A CN101777977A CN 101777977 A CN101777977 A CN 101777977A CN 200910095294 A CN200910095294 A CN 200910095294A CN 200910095294 A CN200910095294 A CN 200910095294A CN 101777977 A CN101777977 A CN 101777977A
- Authority
- CN
- China
- Prior art keywords
- matrix
- vector
- computing
- round
- setting
- 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
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明基于生物特征点拓扑结构的非对称加解密方法尤其涉及基于生物特征点拓扑结构的非对称加(解)密技术领域。本发明的目的是提供一种基于生物特征点拓扑结构的非对称加(解)密方法,技术特征包括,设定该基于生物特征点拓扑结构的非对称加(解)密模式;设定该基于该生物特征点拓扑结构的矩阵向量;设定该起始运算矩阵向量;设定矩阵向量的基本运算;设定矩阵向量的某一轮运算;设定矩阵向量的若干轮运算;设定加密模式包括对该矩阵向量按加密方私设轮次进行该轮次运算,然后把该运算结果编码值和待加密值相加作为加密信息值发送给解密方;设定解密模式包括对该矩阵向量按解密方原私设轮次进行该轮次运算,然后把该运算编码值减去加密方所发送来的加密信息值作为解密信息值。使用该方法依此发布公钥和隐藏私钥,既可公开地构建安全通信通道,又可认证该发布人的生物特征,从而有利于构筑基于发布人公钥可信认证的安全通信通道。
Description
技术领域:
本发明涉及密码学的非对称加(解)密技术,也涉及基于生物特征点拓扑结构的生物模式识别技术,尤其涉及基于生物特征点拓扑结构的非对称加(解)密方法。
背景技术:
非对称加(解)密方法是分别采用加密密钥进行加密和解密密钥解密的方法。由于可通过公开部分密钥(简称公钥)即可公开地构建经由隐秘密钥(简称私钥)进行加密通信的信息安全通道,因此该加(解)密方法也称为公(私)钥加(解)密方法。
正是非对称加密方法具有可公开构建安全通信通道的特性,因此自非对称加密方法问世以来,专家及学者们提出了许多种非对称加密方法。这些非对称加密方法的安全性都是基于复杂的数学难题。其中著名的非对称加(解)密方法是ECC(Elliptic Curve Cryptography),它是椭园曲线非对称加(解)密方法的简称,椭园曲线非对称加(解)密方法是Miller,Koblitz 1985年独立提出的。
可以把现行的非对称加(解)密方法称之为传统非对称加(解)密方法。尽管传统非对称加(解)密方法凭借发布公钥和隐藏私钥就可依此公开地构建安全通信通道,但该公钥因为并没能包含表征发布人生物特征点拓扑结构的信息,从而不能以此认证该发布人的生物特征。这不利于构筑基于发布人公钥可信身份识别认证的安全通信通道。
获取发布人生物特征的生物模式识别技术是基于模式识别的数字图像预处理技术。通过使用该技术可获取人的生物特征点拓扑结构。该技术是已有技术。通过互联网检索可以看到该技术的一个重要而广泛的应用是基于生物特征的电子护照、电子身份证。
用于生物特征识别认证的生物模式识别技术,是基于生物特征点拓扑结构比对的生物特征识别技术。通过使用该技术可进行人的生物特征识别认证。该技术也是已有技术。该技术的一个重要而广泛的应用是基于生物特征的指纹识别、人脸识别等。
可以例举人的生物特征有指纹特征、虹膜特征、面相特征、声音特征、基因特征等,表征生物特征的特征点拓扑结构即生物特征点拓扑结构,如指纹特征点拓扑结构、面相特征点拓扑结构等。
发明内容:
本发明的目的是提供一种基于生物特征点拓扑结构的非对称加(解)密方法,使用该方法可产生包含表征发布人生物特征点拓扑结构信息的公钥,且凭借发布公钥和隐藏私钥依此既可公开地构建安全通信通道,又可认证该发布人的生物特征,从而有利于构筑基于发布人公钥可信认证的安全通信通道。
为了实现本发明目的,本发明方案的技术特征包括,
1、设定基于生物特征点拓扑结构的非对称加(解)密模式;设定该非对称加(解)密模式中描述生物特征点拓扑结构的数据,为基于该生物特征点拓扑结构的矩阵向量;设定该矩阵向量的元素集合是设定坐标系下基于该生物特征点坐标参数的集合;设定该集合的指定生物特征点坐标参数为该矩阵向量的运算基准,该运算基准包括运算基准点和运算基准方向点,设定具有指定运算基准的矩阵向量为起始运算矩阵向量;设定矩阵向量的基本运算是把该矩阵向量作为该运算的起始运算矩阵向量,并对该矩阵向量按设定运算基准的设定位移、旋转值进行位移、旋转的运算;设定矩阵向量的某一轮运算是把该矩阵向量作为该轮运算的起始运算矩阵向量,并对该矩阵向量按该轮运算所设基本运算次数进行位移旋转的该一轮所设次基本运算,其中该一轮所设次即该一轮所设基本运算次数,该一轮运算所设每次基本运算的位移、旋转值是该一轮运算所设位移、旋转步长;设定矩阵向量的若干轮运算是把该矩阵向量作为该若干轮运算的起始运算矩阵向量,并对该矩阵向量按所设若干轮、以及每轮所设基本运算次数、再及每次基本运算所设位移步长和旋转步长进行位移旋转的该若干轮所设轮次基本运算,其中该若干轮所设该若干次数值是该若干轮所设轮次;设定加密包括首先把解密方公开的起始运算矩阵向量和经其私设轮次运算过的起始运算矩阵向量作为加密方运算的起始运算矩阵向量,并对该俩矩阵向量按加密方私设轮次进行该轮次运算,然后把该后者运算结果编码值和待加密值相加,计算该俩值之和作为加密信息值与前者一起发送给解密方;设定解密包括首先把加密方所公开且经其私设轮次运算的起始运算矩阵向量作为解密方运算的起始运算矩阵向量,并对该矩阵向量按解密方原私设轮次进行该轮次运算,然后把该运算编码值减去加密方所发送来的加密信息值,计算该俩值之差作为解密信息值,且该值等于该待加密值。
2、根据1,该特征还包括其实现的步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(12)、(13)、(14)、(15)、(16)。以下即该步骤:
(1)设定基于生物特征点拓扑结构的非对称加(解)密模式
根据1,包括设定该加密模式C和解密模式E如下:
设定加密模式C可以是:
C={string(Matrix-Vector=J*G),Cm=[f(Matrix-OP=J*W)+M]},
设定解密模式E可以是:
E={matrix(Matrix-String=string(Matrix-Vector=J*G)),Em=Cm-f(Matrix-OP=K*(J*G))},
其中定义:
*是本发明矩阵向量运算符、该运算符的设定实现是步骤(5),
G和W是解密方公开的起始运算矩阵向量、该矩阵向量的设定实现是步骤(2)、(4)、(6)、(7),
J是加密方为设定矩阵向量运算轮次所设的私设轮次值(即加密私钥),
K是解密方为设定矩阵向量运算轮次所设的私设轮次值(即解密私钥),
J*G、J*W是使用J对G和W进行*运算、该运算的设定实现是步骤(3)、(5)、(6)、(7),
K*(J*G)是使用K对(J*G)进行*运算、该运算的设定实现是步骤(3)、(5)、(6)、(7),
string(Matrix-Vector=J*G)是先使用J对G进行*运算然后对包括运算基准的该J*G进行数字串编码的操作、该操作的设定实现是步骤(8),
matrix(Matrix-String=string(Matrix-Vector=J*G))是还原string(Matrix-Vector=J*G)为该矩阵向量的反操作、该反操作的设定实现是步骤(8),
f(Matrix-OP=J*W)和f(Matrix-OP=K*(J*G))是对该矩阵向量进行相关*运算及散列法运算编码、该运算及编码的设定实现是步骤(9),
M是待加密值,
Cm是加密方计算f(Matrix-OP=J*W)与M俩值之和作为加密信息值、该计算实现是步骤(15),
Em是解密方计算Cm与f(Matrix-OP=K*(J*G))俩值之差作为解密信息值、该计算实现是步骤(16),
(2)设定G为基于生物特征点拓扑结构的矩阵向量,G包括子集G1和G2
根据1和步骤(1),设定该非对称加密模式中的G,为基于生物特征点拓扑结构矩阵向量;设定G可以是基于指纹特征点拓扑结构的矩阵向量,也可以是基于人脸面相特征点拓扑结构的矩阵向量;G的子集G1和G2可以分别是该指纹特征点拓扑结构的端点和叉点矩阵向量,也可以分别是该人脸面相眼部和嘴部特征点拓扑结构的矩阵向量;设定G的元素集合可以是设定直角坐标系下基于该生物特征点坐标参数(xGn’yGn)的集合,即G={(xG1,yG1)(xG2,yG2)…(xG(n-1),yG(n-1))(xGn,yGn)},或G={(xGn,yGn)|n=1,2,3,…,n-1,n},其中n是G的元素数;
设定G包括子集G1和G2、即G={G1,G2,…},其中:
①、G1是(xG1m,yG1m)的集合、即:
G1={(xG11,yG11)(xG12,yG12)…(xG1(m-1),yG1(m-1))(xG1m,yG1m)}或
G1={(xG1m,yG1m)|m=1,2,3,…,m-1,m},其中m是G1的元素数,
②、G2是(xG2m′,yG2m′)的集合、即:
G2={(xG21,yG21)(xG22,yG22)…(xG2(m’-1),yG2(m′-1))(xG2m′,yG2m′)}或
G2={(xG2m′,yG2m′)|m′=1,2,3,…,m′-1,m′},其中m′是G2的元素数,
上述G1和G2的元素数之和应小于等于G的元素数,即m+m′≤n;
设定G1和G2的指定生物特征点坐标参数为该矩阵向量的起始运算基准,设定该运算基准所包括运算基准点为P和运算基准方向点为D,设定G1[1]和G2[1]是G1和G2具有指定运算基准PD的起始运算矩阵向量;
(3)设定BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N])
根据1和步骤(1)及(2),设定BioTPM[N]为起始运算矩阵向量、N为大于零的整数(其中N=1、2、…、N)、PD为运算基准、MRNumber[N]为基本运算次数、Move[N]为位移步长、Round[N]为旋转步长;设定该矩阵向量的基本运算是设定MRNumber[N]等于1且把BioTPM[N]按PD的Move[N]和Round[N]数值各进行一次位移、旋转的运算;设定该矩阵向量的某一轮运算为第N轮运算,设定该矩阵向量的第N轮运算是设定MRNumber[N]大于1且把BioTPM[N]按PD的Move[N]和Round[N]数值进行位移、旋转的MRNumber[N]次基本运算;设该第N轮轮运算结果值为BioTPM[N+1]、且该BioTPM[N+1]由该第N轮的MRNumber[N]次基本运算结果赋值获取,则可把该第N轮运算用函数表达式表示,即:
BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N]),
其中MRNumber[N]>1;当MRNumber[N]=1则该式即为该矩阵向量的基本运算函数表达式;
其中该运算的Move[N]、Round[N]、MRNumber[N]设定实现是步骤(10)、(11)、(13);
(4)设定G及子集G1和G2的第N轮运算
根据1和步骤(1)、(2)及(3),设该G=G[1]及G1=G1[1]和G2=G2[1],设定G1或G2的第N轮运算是把N等于1代入N,把G1[1]或G2[1]分别代入BioTPM[N]、G1[2]或G2[2]代入BioTPM[N+1],连同把Move[N]、Round[N]、MRNumber[N]代入BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N])进行该第1轮运算,经该第1轮运算分别可得的G1[2]和G2[2]的值;根据G={G1,G2,…}、及G=G[1],可得G[2]={G1[2],G2[2],…};同理由G[N]={G1[N],G2[N],…}及N=1、2、3、…、N,分别把G1[N]或G2[N]代入BioTPM[N]、G1[N+1]或G2[N+1]代入BioTPM[N+1],连同把Move[N]、Round[N]、MRNumber[N]代入BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N]),进行该第N轮运算,把经该轮运算的相关结果分别赋值给G1[N+1]或G2[N+1],从而由获取子集G1[N]和G2[N]的值获得该G[N+1={G1[N+1],G2[N+1],…};
该设定的计算实现是步骤(13);
(5)设定BioTPM[K+1]=fK(BioTPM[K],Move[K],Round[K],MRNumber[K])=K*BioTPM[K]
根据1和步骤(1)、(2)、(3)及(4),设定该矩阵向量的若干轮运算为K轮次运算,设定起始运算矩阵向量是BioTPM[1],根据步骤(3)对BioTPM[1]进行第1轮运算,该矩阵向量的第1轮运算结果值为BioTPM[2],同理经过第K轮运算该矩阵向量第K轮运算结果值为BioTPM[K+1];由此定义该矩阵向量的K轮次运算是根据步骤(3)把BioTPM[1]进行由第1轮运算连续到第K轮运算;经过K轮次运算该矩阵向量的K轮次运算结果值为BioTPM[K+1];把该K轮次运算用函数表达式表示,即:
BioTPM[K+1]=fK(BioTPM[1],Move[1],Round[1],MRNumber[1]),
其中该运算的Move[N]、Round[N]、MRNumber[N]设定是步骤(10)、(11)、(13);
定义fK(BioTPM[1],Move[1],Round[1],MRNumber[1])可表示为K*BioTPM[1],其中*是步骤(1)所定义;即:
BioTPM[K+1]=K*BioTPM[1];
(6)设定G及子集G1和G2的K轮次运算
根据1和步骤(1)、(2)、(3)、(4)及(5),设定G或G1和G2的K轮次运算,包括分别把G1=G1[1]和G2=G2[1]代入BioTPM[1]、G1[K+1]或G2[K+1]代入BioTPM[K+1],由K=1、2、3、4、…、K,连同Move[K]、Round[N]、MRNumber[N]代入BioTPM[K+1]=fK(BioTPM[K],Move[K],Round[K],MRNumber[K])=K*BioTPM[1],即经该K轮运算可得BioTPM[K+1]=K*BioTPM[1],也即分别得G1[K+1]=K*G1[1]或G2[K+1]=K*G2[1],从而得G[K+1]={G1[K+1],G2[K+1],…}={K*G1[1],K*G2[1],…}=K*G[1];因K*G=K*G[1],K*G1=K*G1[1],K*G2=K*G2[1],故:
K*G={K*G1,K*G2,…};
该设定的计算实现是步骤(13);
(7)设定W=K*G、J*W、J*G、K*(J*G)的运算
根据1和步骤(1)、(2)、(3)、(4)、(5)及(6),设定W=K*G、J*G、J*W、K*(J*G)包括:
①、设定W=K*G、W1=K*G1、W2=K*G2,可得:
W=K*G[1]=K*{G1[1],G2[1],…}={K*G1[1],K*G2[1],…}={W1,W2,…}
其中:设定W1=W1[1]和W2=W2[1],
又可得:W1=W1[1]=K*G1[1]=G1[K+1]
W2=W2[1]=K*G2[1]=G2[K+1],
从而可得:W=K*G[1]=G[K+1];
②、设定J*W=J*{(W1),(W2),…}={(J*W1),(J*W2),…}:
其中:根据①设定W1=W1[1]和W2=W2[1]
又可得:J*W1=J*W1[1]=W1[J+1],
J*W2=J*W2[1]=W2[J+1];
③、设定J*G=J*G[1]=J*{G1,G2,…}={(J*G1),(J*G2),…}、
其中:根据步骤(2)设定G1=G1[1]和G2=G2[1]
又可得:J*G1=J*G1[1]=G1[J+1],
J*G2=J*G2[1]=G2[J+1];
④、设定K*(J*G)=K*{(J*G1),(J*G2),…}={(K*(J*G1)),(K*(J*G2)),…};
其中:根据③设定J*G1=J*G1[1]和J*G2=J*G2[1]
又可得:K*(J*G1)=K*(J*G1[1])=K*G1[J+1],
K*(J*G2)=K*(J*G2[1])=K*G2[J+1];
该设定的计算实现是步骤(13);
(8)设定string(Matrix-Vector)和matrix(Matrix-String)
根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)及(7),设定string(Matrix-Vector)包括把括弧内Matrix-Vector对象按string规则进行编码,设定Matrix-Vector对象组成包括该矩阵向量、还包括该运算基准,设定string编码规则可以是按从左到右从上到下的顺序把Matrix-Vector进行编码、且使之串接成为该集合元素的数字串,设定该数字可以是十进制数也可以是二进制数,设定串接可以是按运算基准、矩阵向量的顺序排列连接为串;其中Matrix-Vector对象可以是G、W、J*G、J*W、K*(J*G),也可以是J*W1、J*W2,还可以是K*(J*G1)、K*(J*G2),即string(Matrix-Vector)可以是string(Matrix-Vector=G或W或J*G或J*W或K*(J*G)),也可以是string(Matrix-Vector=J*W1或J*W2或K*(J*G1)或K*(J*G2)),连带该运算基准PD;
设定matrix(Matrix-String)包括把括弧内Matrix-String对象按matrix格式进行还原,设定该Matrix-String对象组成包括该矩阵向量数字串、还包括该运算基准数字串,设定matrix还原格式可以是按从左到右从上到下的顺序把Matrix-String进行还原,包括把运算基准数字串与矩阵向量数字串分开,包括把二者还原为特征点坐标参数;其中Matrix-String对象可以是string(Matrix-Vector=G),也可以是string(Matrix-Vector=W),还可以是string(Matrix-Vector=J*G),即matrix(Matrix-String)可以是matrix(Matrix-String=string(Matrix-Vector=G)),也可以是matrix(Matrix-String=string(Matrix-Vector=W)),还可以是matrix(Matrix-String=string(Matrix-Vector=J*G)),连带该运算基准PD;
该设定的操作实现是步骤(15)、(16);
(9)设定f(Matrix-OP=J*W)和f(Matrix-OP=K*(J*G))
根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)及(8),设定散列法是f(XORM),设定f(Matrix-OP=J*W)或f(Matrix-OP=K*(J*G))是该子集的f(XORM)运算,该运算包括把括弧内Matrix-OP=(J*W)或(K*(J*G))按f(XORM=(J*W1,J*W2,…))或f(XORM=(K*(J*G1),K*(J*G2),…)),即按设定f(XORM)进行各子集异或散列的运算,该运算值即该编码值;设定该运算编码实现包括:
①、设定f(Matrix-OP=J*W)的f(XORM)运算包括:
f(Matrix-OP=J*W)=f(XORM=(J*W1,J*W2,…))
可以设定异或散列法:f(XORM=(J*W1,J*W2,…))是各子集按步骤(8)进行编码操作,然后进行各子集编码的异或,异或散列的长度可以是最短子集编码长度,即:
也可以设定异或散列法:f(XORM=(J*W1,J*W2,…))是各子集各自元素纵横坐标的异或,即:
其中设定:
a、f(XORM=J*W1)=f(XORM=W1[J+1]),其中:
b、f(XORM=J*W2)=f(XORM=W2[J+1]),其中:
其中:
W1[J+1]={(xW1[J+1]1,yW1[J+1]1)(xW1[J+1]2,yW1[J+1]2)
…(xW1[J+1](m-1),yW1[J+1](m-1))(xW1[J+1]m,yW1[J+1]m)},
W2[J+1]={(xW2[J+1]1,yW2[J+1]1)(xW2[J+1]2,yW2[J+1]2)
…(xW2[J+1](m’-1),yW2[J+1](m′-1))(xW2[J+1]m′,yW2[J+1]m′)}
②、设定f(Matrix-OP=K*(J*G))的f(XORM)运算包括:
f(Matrix-OP=K*(J*G))=f(XORM=(K*(J*G1),K*(J*G2),…))
可以设定异或散列法:f(XORM=(K*(J*G1),K*(J*G2),…))是各子集按步骤(8)进行编码操作,然后进行各子集编码的异或,异或散列的长度可以是最短子集编码长度,即:
也可以设定异或散列法:f(XORM=(K*(J*G1),K*(J*G2),…))是各子集各自元素纵横坐标的异或,即:
其中设定:
a、f(XORM=K*(J*G1))=f(XORM=K*G1[J+1]),其中:
b、f(XORM=K*(J*G2))=f(XORM=K*G2[J+1]),其中:
其中:
K*G1[J+1]={(xK*G1[J+1]1,yK*G1[J+1]1)(xK*G1[J+1]2,yK*G1[J+1]2)
…(xK*G1[J+1](m-1),yK*G1[J+1](m-1))(xK*G1[J+1]m,yK*G1[J+1]m)},
K*G2[J+1]={(xK*G2[J+1]1,yK*G2[J+1]1)(xK*G2[J+1]2,yK*G2[J+1]2)
…(xK*G2[J+1](m’-1),yK*G2[J+1](m′-1))(xK*G2[J+1]m′,yK*G2[J+1]m′)},
该设定的计算实现是步骤(15)、(16);
(10)设定G1[N]、G2[N]与Move[N]、Round[N]、MRNumber[N]映射相关
根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)及(9),可以设定:
①、Move[N]=f(Matrix-OP=G1[N])
②、Round[N]=f(Matrix-OP=G2[N])
③、MRNumber[N]=f(Matrix-OP=(G1[N],G2[N]))
即设定该第N轮运算的基本运算次数(即MRNumber[N])、位移步长(即Move[N])、旋转步长(即Round[N])可以与步骤(4)所设G1[N]、G2[N]映射相关,且该映射相关包括可以设定Move[N]是G1[N]的函数、Round[N]是G2[N]的函数、MRNumber[N]是G1[N]和G2[N]的函数;
设定该实现是步骤(11)、(12);
(11)设定f(Matrix-OP=(G1[N])或(G2[N])或(G1[N],G2[N])的f(XORM)运算
根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)及(10),设定散列法是f(XORM),设定f(Matrix-OP=(G1[N])或(G2[N])或(G1[N],G2[N]))是该子集的f(XORM)运算,该运算包括把括弧内Matrix-OP=(G1[N])或(G2[N])或(G1[N],G2[N])对象按f(XORM=(J*W1),XORM=(J*W2),…)或f(XORM=(K*(J*G1)),XORM=(K*(J*G2)),…),即按设定f(XORM)进行子集各自元素纵横坐标异或散列的运算;设定该运算实现包括:
①、设定f(Matrix-OP=G1[N])子集的f(XORM)运算可以是:
f(Matrix-OP=G1[N])=f(XORM=G1[N])
其中:
②、设定f(Matrix-OP=G2[N])子集的f(XORM)运算可以是:
f(Matrix-OP=G2[N])=f(XORM=G2[N])
其中:
③、设定f(Matrix-OP=(G1[N],G2[N]))子集的f(XORM)运算可以是:
其中已知:
a、G1[N]={(xG1[N]1,yG1[N]1)(xG1[N]2,yG1[N]2)
…(xG1[N](m-1),yG1[N](m-1))(xG1[N]m,yG1[N]m)},
b、G2[N]={(xG2[N]1,yG2[N]1)(xG2[N]2,yG2[N]2)
…(xG2[N](m′-1),yG2[N](m′-1)(xG2[N]m′,yG2[N]m′)}
(12)设定Move[N]、Round[N]、MRNumber[N]映射相关值的计算
根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)及(11),计算Move[N]、Round[N]、MRNumber[N]映射相关值,计算方法包括:
①、首先由G1=G1[1]和G2=G2[1]计算f(Matrix-OP=G1[1])、f(Matrix-OP=G2[1])、f(Matrix-OP=(G1[1],G2[1])),得:
Move[1]=f(Matrix-OP=G1[1])、
Round[N]=f(Matrix-OP=G2[1])、
MRNumber[N]=f(Matrix-OP=(G1[1],G2[1])),
②、将G1[1]和G2[1]分别代入BioTPM[1]、G1[2]和G2[2]分别代入BioTPM[2],连同Move[1]=f(Matrix-OP=G1[1])、Round[N]=f(Matrix-OP=G2[1])、MRNumber[N]=f(Matrix-OP=(G1[1],G2[1]))代入BioTPM[2]=f(BioTPM[1],Move[1],Round[1],MRNumber[1])经该第1轮运算,分别得G1[2]和G2[2]的值,由此获得Move[2]=f(Matrix-OP=G1[2])、Round[2]=f(Matrix-OP=G2[2])、MRNumber[2]=f(Matrix-OP=(G1[2],G2[2]));
③、由N=2、3、4、…N,将G1[N]和G2[N]分别代入BioTPM[N]、G1[N+1]和G2[N+1]分别代入BioTPM[N+1],连同Move[N]=f(Matrix-OP=G1[N])、Round[N]=f(Matrix-OP=G2[N])、MRNumber[N]=f(Matrix-OP=(G1[N],G2[N]))代入BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N])经该第N轮运算,分别得G1[N+1]和G2[N+1]的值,由此计算获得Move[N+1]=f(Matrix-OP=G1[N+1])、Round[N+1]=f(Matrix-OP=G2[N+1])、MRNumber[N+1]=f(Matrix-OP=(G1[N+1],G2[N+1]));
该设定的计算实现是步骤(13);
(13)计算设定K的G[K]={G1[K],G2[K],…}及其运算参数
根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)及(12),设定随机数为K,可计算G[K]={G1[K],G2[K],…}及其运算参数,包括:
①、计算设定K=1、2、3…K的G1[K]、G2[K],包括计算设定f(Matrix-OP=G1[K])、
f(Matrix-OP=G2[K])、f(Matrix-OP=(G1[K],G2[K]))和Move[K]、Round[K]、MRNumber[K];
②、计算设定K和J值相关W1、W1、G1、G2的矩阵向量运算;
③、计算设定string(Matrix-Vector=G、W、J*G);
④、计算设定matrix(Matrix-String=string(Matrix-Vector=G、W、J*G));
⑤、计算设定f(Matrix-OP=J*W)、f(Matrix-OP=K*(J*G))且前后二值相等;
(14)发布string(Matrix-Veetor=G)和string(Matrix-Vector=W),隐藏私钥K
根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(12)及(13),发布string(G)和string(W),设定解密私钥是K,隐藏K;
(15)加密:计算及发送加密信息C={string(Matrix-Vector=J*G),Cm},隐藏私钥J
根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(12)、(13)及(14),设定待加密值M(即:明文编码),加密模式C={string(Matrix-Vector=J*G),Cm=[f(Matrix-OP=J*W)+M]},设定加密私钥J,隐藏J,向解密方发送的加密信息是C={string(J*G),Cm};
(16)解密:计算及解密Em=Cm-f(Matrix-OP=K*(J*G))获M
根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(12)、(13)、(14)及(15),设定解密模式E={matrix(Matrix-String=string(Matrix-Vector=J*G)),Em=Cm-f(Matrix-OP=K*(J*G))},计算Em得明文编码M,即:
Em=Cm-f(Matrix-OP=K*(J*G))=[f(Matrix-OP=J*W)+M]-f(Matrix-OP=K*(J*G))
=[f(Matrix-OP=J*(K*G))+M]-f(Matrix-OP=K*(J*G))=M,且该值等于该待加密值。
因步骤(14)所设定的公钥是string(Matrix-Vector=G)和string(Matrix-Vector=W),且string(Matrix-Vector=G)和string(Matrix-Vector=W)需根据步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(12)、(13)由BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N])经K轮计算获得W=K*G、最后由string(Matrix-Vector)经数字串编码得到string(Matrix-Vector=G)和string(Matrix-Vector=W)而获取,故只要隐藏K就不能由G获得W,从而不能获得string(Matrix-Vector=G)和string(Matrix-Vector=W)。另外由所设定的加密模式C={string(Matrix-Vector=J*G),Cm=[f(Matrix-OP=J*W)+m]}和所设定的解密模式E={matrix(string(Matrix-Vector=J*G))=J*G,Em=Cm-f(Matrix-OP=K*(J*G))},只要隐藏J就难以由G和W计算得J*G、J*W,从而难以获取string(Matrix-Vector=J*G)和f(Matrix-OP=J*W),且不知K就难以由J*G计算得K*(J*G),从而难以获取f(Matrix-OP=K*(J*G)),另外由于异或散列法运算的性质,仅从f(Matrix-OP=J*W)、f(Matrix-OP=K*(J*G))难以分析剖获J*W、K*(J*G),进而难以由Cm计算出Em。同时,尽管string(Matrix-Vector=G)、string(Matrix-Vector=W)、string(Matrix-Vector=J*G)和f(Matrix-OP=J*W)、f(Matrix-OP=K*(J*G))各不相同,但该W、J*G、J*W、K*(J*G)矩阵向量所包含生物特征点的拓扑结构与G却相同,由此使该发布公钥既包含表征发布人生物特征点拓扑结构信息、以此可认证该发布人的生物特征,又可凭借发布公钥和隐藏私钥依此公开地构建安全通信通道,有利于构筑基于发布人公钥可信认证的安全通信通道。值得指出的是步骤(1)、(2)、(3)、(5)为实现步骤(4)、(6)、(7)、(8)、(9)、(10)、(11)、(12)、(13)、(14)、(15)、(16)的必须步骤,步骤(14)是实现步骤(15)、(16)的必须步骤,从而完全实现本发明一种基于生物特征点拓扑结构的非对称加(解)密方法所要达到的目的。
本发明可以用于电子证书的公钥设置,该证书可以是网络电子证书,也可以是基于生物特征的电子护照、电子身份证。该证书认证中心可以采用已有证书认证技术结合使用基于本发明的技术,对该证书进行密码学认证和基于生物特征识别的身份认证,从而可以形成基于本发明为核心技术的可信PKI技术基础。
附图说明:
本发明有五附图,附图说明如下:
图1是本发明运算处理流程示意框图。
图2是本发明矩阵向量基本运算图。
图3是本发明矩阵向量第N轮运算流程图。
图4是本发明矩阵向量K轮运算流程图。
图5是本发明矩阵向量运算流程图。
具体实施方式:
实施例
本发明实施例如图1所示。为了更充分地公开本发明内容,以下结合附图流程序号说明通过实施例进一步说明本发明。其中:
(1)设定基于生物特征点拓扑结构的非对称加(解)密模式
本发明实施例根据1和步骤(1),设定加密模式是:
C={string(Matrix-Vector=J*G),Cm=[f(Matrix-OP=J*W)+M]},
设定解密模式是:
E={matrix(Matrix-String=string(Matrix-Vector=J*G)),Em=Cm-f(Matrix-OP=K*(J*G))},
(2)设定G为基于生物特征点拓扑结构的矩阵向量,G包括子集G1和G2
本发明实施例根据1和步骤(1)及(2),设定G是基于指纹特征点拓扑结构的矩阵向量,G的子集G1和G2分别是该指纹特征点拓扑结构的端点和叉点矩阵向量;
设定该元素集合是直角坐标系下基于该生物特征点坐标参数的集合,设定G={G1,G2}为了方便仅使用括号分隔元素且省略各元素之间逗号不写,即:G={(G1)(G2)};为了更具体说明本发明实施例,本发明者使用已有的指纹模式识别技术,通过采集一真实的指纹图像并作相关处理,且把获取该真实的指纹特征端点和叉点集合赋值给以下G的子集G1和G2,即:
G1={(39,39)(195,67)(95,100)(127,117)(108,126)(153,132)(57,208)(158,219)(70,224)(184,225)(65,235)(57,246)(115,253)(194,254)(44,272)(180,287)(65,292)(190,314)},
G2={(58,43)(178,80)(113,113)(171,129)(151,162)(200,166)(162,272)},
其中G1的元素数m=18,G2的元素数m′=7,G的元素数是n=m+m′=25;
指定点(xG15,yG15)为G1的运算基准点、该点指向点(xG16,yG16)为G1运算基准方向点,指定点(xG25,yG25)为G2的运算基准点、该点指向点(xG26,yG26)为G2运算基准方向,设定G1[1]和G2[1]为G1和G2具有指定运算基准的起始运算矩阵向量;
(3)设定BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N])
本发明实施例根据1和步骤(1)、(2)及(3)设定BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N])是步骤(3);
(4)设定G或G1和G2的第N轮运算
本发明实施例根据1和步骤(1)、(2)、(3)及(4),设定G或G1和G2的第N轮运算是步骤(4);
(5)设定BioTPM[K+1]=fK(BioTPM[K],Move[K],Round[K],MRNumber[K])=K*BioTPM[K]
本发明实施例根据1和步骤(1)、(2)、(3)、(4)及(5),设定BioTPM[K+1]=fK(BioTPM[1],Move[1],Round[1],MRNumber[1])=K*BioTPM[1]是步骤(5);
(6)设定W及G或G1和G2的K轮次运算
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)及(6)设定W及G或G1和G2的K轮次运算是步骤(6);
(7)设定W=K*G、J*W、J*G、K*(J*G)的运算
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)及(7),设定W=K*G、J*W、J*G、K*(J*G)的运算是步骤(7);
(8)设定string(Matrix-Vector)和matrix(Matrix-String)
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)及(8),设定string(Matrix-Vector)和matrix(Matrix-String)是步骤(8);例如可设定把Matrix-Vector对象G={G1,G2}串接编码为数字串的格式是PDG1-G2+m m′+G1G2,其中PDG1-G2表示该集合的运算基准位置序号,如PDG1-G2=5、5、6、6即G1和G2运算基准点P和运算基准方向点D为该矩阵向量元素集合的第5个和第6个元素,其中m m表示集合数字串长度,如m m′=18、7即G1和G2集合数字串长度分别是18和7个元素数,其中G1G2是该矩阵向量元素集合;又如可设定把该Matrix-String数字串反串接编码为矩阵向量对象的格式是G1G2+PDG1-G2+m m′,其中G1G2是该矩阵向量元素集合,其中DG1-G2是集合运算基准位置序号,如PDG1-G2=5、5、6、6即为G1和G2运算基准点和运算基准方向点在该矩阵向量中都是该集合的第5个和第6个元素,其中m m′是集合数字串长度,如m m′=18、7即为G1和G2集合数字串长度是18和7个元素数;
(9)设定f(Matrix-OP=J*W)和f(Matrix-OP=K*(J*G))
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)及(9),设定f(Matrix-OP=(J*W)或(K*(J*G)))的f(XORM)运算是步骤(9),其中:
(10)设定G1[N]、G2[N]与Move[N]、Round[N]、MRNumber[N]映射相关
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)及(10),设定G1[N]、G2[N]与Move[N]、Round[N]、MRNumber[N]映射相关是步骤(10);
(11)设定f(Matrix-OP=(G1[N])或(G2[N])或(G1[N],G2[N])的f(XORM)运算
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)及(11),设定f(Matrix-OP=(G1[N])或(G2[N])或(G1[N],G2[N])的f(XORM)运算是步骤(11),其中为了方便设定f(Matrix-OP=G1[N])可表示为f(G1[N])、f(Matrix-OP=G2[N])可表示为f(G2[N])、f(Matrix-OP=(G1[N],G2[N]))可表示为f(G1[N],G2[N]);
(12)设定Move[N]、Round[N]、MRNumber[N]映射相关值的计算
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)及(12),设定Move[N]、Round[N]、MRNumber[N]映射相关值的计算是步骤(12),其中计算该映射相关值为Move[N]=f(G1[N])、Round[N]=f(G2[N])、MRNumber[N]=f(G1[N],G2[N]),设定Move[N])、Round[N]、MRNumber[N]取值范围是大于或等于3的个位数,且当小于3时取值为3;
(13)计算设定K的G[K]={G1[K],G2[K],…}及其运算参数
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(12)及(13),设定随机数为K和G[1]={G1[1],G2[1]},已编程实现包括:计算设定K=1、2、3…K的G1[K]、G2[K],计算设定f(G1[K])、f(G2[K])、f(G1[K],G2[K]),计算设定Move[K]、Round[K]、MRNumber[K],计算设定W1、W1、G1、G2,计算设定string(Matrix-Vector=G、W、J*G、J*W),计算设定matrix(Matrix-String=string(Matrix-Vector=G、W、J*G)),计算设定f(Matrix-OP=J*W)、f(Matrix-OP=K*(J*G));
①、计算设定K=1、2、3…K的G1[K]、G2[K]
由于计算设定G1[K]、G2[K],需要K=1、2、3…K的每一轮次同时计算f(G1[K])、f(G2[K])、f(G1[K],G2[K])及Move[K]、Round[K]、MRNumber[K],另外为了方便说明和限于篇幅,本发明实施例设定K=38,相关计算结果一并示列如下:
Initial Data
m=18
G1[1]:(39,39)(195,67)(95,100)(127,117)(108,126)(153,132)(57,208)(158,219)(70,224)(184,225)
(65,235)(57,246)(115,253)(194,254)(44,272)(180,287)(65,292)(190,314)
m′=7
G2[1]:(58,43)(178,80)(113,113)(171,129)(151,162)(200,166)(162,272)
K=1 f(G1[1])=76 f(G2[1])=304 f(G1[1],G2[1])=380
Move[1]=6 Round[1]=4 MRNumber[1]=3
m=18
G1[2]:(298,91)(196,208)(217,109)(186,128)(188,107)(161,139)(144,23)(85,103)(125,26)(67,122)
(117,16)(112,3)(77,50)(37,117)(96,-21)(16,89)(67,-13)(-13,84)
m′=7
G2[2]:(390,109)(298,193)(302,122)(258,163)(240,130)(212,167)(142,85)
K=2 f(G1[2])=-495 f(G2[2])=47 f(G1[2],G2[2])=-450
Move[2]=3 Round[2]=7 MRNumber[2]=3
m=18
G1[3]:(18,116)(162,66)(98,140)(134,140)(121,155)(160,142)(117,249)(207,210)(136,255)
(232,203)(137,269)(135,282)(187,260)(255,222)(137,312)(259,257)(165,319)(280,276)
m′=7
G2[3]:(33,131)(154,105)(115,165)(174,150)(172,186)(213,169)(233,274)
K=3 f(G1[3])=457 f(G2[3])=302 f(G1[3],G2[3])=231
Move[3]=7 Round[3]=3 MRNumber[3]=3
m=18
G1[4]:(202,0)(251,142)(178,81)(178,117)(164,104)(175,140)(72,98)(110,187)(66,117)(117,212)
(52,118)(39,117)(61,168)(98,234)(8,118)(63,238)(1,145)(44,259)
m′=7
G2[4]:(259,-9)(284,112)(224,73)(239,132)(205,130)(221,170)(118,188)
K=4 f(G1[4])=256 f(G2[4])=-88 f(G1[4],G2[4])=-344
Move[4]=6 Round[4]=3 MRNumber[4]=3
m=18
G1[5]:(314,180)(175,228)(233,156)(197,156)(210,143)(176,152)(217,54)(130,90)(198,46)(105,98)
(197,33)(198,21)(148,42)(83,78)(197,-11)(79,43)(171,-19)(58,25)
m′=7
G2[5]:(406,219)(286,243)(323,183)(266,198)(267,165)(228,179)(211,80)
K=5 f(G1[5])=493 f(G2[5])=482 f(G1[5],G2[5])=15
Move[5]=3 Round[5]=3 MRNumber[5]=5
m=18
G1[6]:(49,201)(144,94)(132,182)(163,164)(157,180)(181,154)(191,259)(246,187)(213,257)
(265,167)(220,267)(224,278)(257,235)(295,174)(242,305)(315,202)(267,301)(342,207)
m′=7
G2[6]:(62,235)(154,157)(152,224)(194,183)(209,211)(233,180)(296,256)
K=6 f(G1[6])=65 f(G2[6])=168 f(G1[6],G2[6])=233
Move[6]=5 Round[6]=8 MRNumber[6]=3
m=18
G1[7]:(281,249)(143,220)(222,186)(191,170)(208,167)(176,159)(260,101)(171,88)(247,81)
(146,82)(253,71)(260,62)(206,55)(137,52)(275,33)(150,21)(259,13)(142,-5)
m′=7
G2[7]:(364,309)(251,268)(310,236)(253,221)(270,193)(233,189)(266,99)
K=7 f(G1[7])=-416 f(G2[7])=166 f(G1[7],G2[7])=-314
Move[7]=3 Round[7]=6 MRNumber[7]=3
m=18
G1[8]:(71,75)(207,105)(131,138)(161,155)(145,156)(176,163)(92,221)(179,233)(105,240)
(204,239)(100,250)(92,259)(145,266)(213,269)(78,288)(200,300)(93,309)(209,325)
m′=7
G2[8]:(105,74)(217,115)(158,147)(215,161)(199,189)(235,191)(201,280)
K=8 f(G1[8])=274 f(G2[8])=269 f(G1[8],G2[8])=31
Move[8]=4 Round[8]=9 MRNumber[8]=3
m=18
G1[9]:(93,273)(120,140)(156,213)(173,183)(174,199)(178,169)(236,249)(245,165)(255,236)
(251,140)(265,241)(274,249)(281,196)(281,131)(303,263)(312,144)(324,248)(337,135)
m′=7
G2[9]:(127,323)(168,211)(200,270)(214,213)(241,228)(241,194)(330,224)
K =9 f(G1[9])=6 f(G2[9])=270 f(G1[9],G2[9])=264
Move[9]=6 Round[9]=3 MRNumber[9]=4
m=18
G1[10]:(137,50)(237,139)(158,134)(176,164)(162,157)(184,174)(88,182)(155,232)(89,205)
(174,249)(81,212)(68,216)(111,248)(167,279)(43,234)(140,300)(44,258)(135,326)
m′=7
G2[10]:(190,42)(265,134)(202,132)(243,173)(217,187)(246,202)(176,264)
K=10 f(G1[10])=22 f(G2[10])=237 f(G1[10],G2[10])=251
Move[10]=3 Round[10]=7 MRNumber[10]=3
m=18
G1[11]:(163,305)(123,181)(186,223)(186,188)(194,201)(185,177)(269,216)(236,142)(280,197)
(229,118)(290,194)(303,198)(282,150)(250,97)(334,195)(284,92)(345,174)(301,72)
m′=7
G2[11]:(217,369)(198,251)(250,285)(237,229)(264,230)(248,205)(337,186)
K=11 f(G1[11])=132 f(G2[11])=74 f(G1[11],G2[11])=206
Move[11]=3 Round[11]=4 MRNumber[11]=6
m=18
G1[12]:(307,143)(221,232)(225,163)(195,179)(203,166)(189,183)(181,96)(136,159)(160,97)
(120,176)(154,87)(150,76)(119,117)(91,168)(133,50)(68,142)(108,49)(44,137)
m′=7
G2[12]:(406,158)(313,230)(318,170)(276,208)(265,188)(253,210)(194,146)
K=12 f(G1[12])=372 f(G2[12])=333 f(G1[12],G2[12])=57
Move[12]=3 Round[12]=3 MRNumber[12]=7
m=18
G1[13]:(73,167)(189,135)(154,190)(188,190)(175,195)(194,187)(156,265)(222,234)(176,274)
(245,227)(175,285)(174,297)(218,278)(266,249)(175,328)(273,283)(194,341)(290,299)
m′=7
G2[13]:(104,188)(219,172)(185,219)(243,210)(239,228)(257,214)(275,299)
K=13 f(G1[13])=139 f(G2[13])=260 f(G1[13],G2[13])=399
Move[13]=9 Round[13]=3 MRNumber[13]=9
m=18
G1[14]:(217,319)(188,208)(238,238)(239,206)(242,217)(237,204)(306,240)(276,179)(316,220)
(271,157)(325,221)(337,222)(318,182)(293,135)(369,219)(325,128)(383,204)(343,111)
m′=7
G2[14]:(260,380)(248,265)(292,298)(283,241)(298,246)(288,231)(366,216)
K=14 f(G1[14])=367 f(G2[14])=448 f(G1[14],G2[14])=175
Move[14]=7 Round[14]=8 MRNumber[14]=5
m=18
G1[15]:(153,293)(202,193)(220,244)(241,223)(237,230)(240,221)(268,289)(283,225)(289,281)
(293,208)(294,288)(303,296)(312,254)(324,203)(328,315)(353,216)(349,313)(378,216)
m′=7
G2[15]:(173,344)(240,252)(250,302)(280,255)(287,267)(289,251)(355,289)
K=15 f(G1[15])=457 f(G2[15])=70 f(G1[15],G2[15])=399
Move[15]=7 Round[15]=3 MRNumber[15]=9
m=18
G1[16]:(331,309)(239,260)(282,243)(267,227)(271,226)(265,227)(327,201)(268,189)(320,181)
(252,180)(327,178)(333,168)(295,162)(245,148)(353,144)(260,120)(350,122)(260,95)
m′=7
G2[16]:(402,386)(313,319)(360,308)(314,279)(324,275)(312,273)(346,215)
K=16 f(G1[16])=279 f(G2[16])=404 f(G1[16],G2[16])=131
Move[16]=9 Round[16]=4 MRNumber[16]=3
m=18
G1[17]:(172,259)(260,207)(253,249)(275,244)(274,248)(276,242)(268,310)(305,264)(288,313)
(320,256)(286,321)(292,331)(315,301)(351,266)(302,360)(368,293)(322,369)(391,305)
m′=7
G2[17]:(191,301)(293,260)(279,304)(326,279)(325,290)(331,280)(364,338)
K=17 f(G1[17])=308 f(G2[17])=463 f(G1[17],G2[17])=251
Move[17]=8 Round[17]=3 MRNumber[17]=3
m=18
G1[18]:(277,132)(327,219)(286,213)(289,233)(285,233)(292,233)(227,226)(272,262)(225,246)
(280,277)(215,244)(205,250)(235,272)(270,308)(177,260)(243,324)(168,279)(231,347)
m′=7
G2[18]:(312,150)(351,253)(310,239)(334,285)(324,284)(334,289)(277,322)
K=18 f(G1[18])=494 f(G2[18])=486 f(G1[18],G2[18])=8
Move[18]=4 Round[18]=6 MRNumber[18]=8
m=18
G1[19]:(385,282)(291,277)(309,249)(297,243)(297,243)(295,245)(331,198)(282,218)(316,187)
(266,218)(322,178)(322,168)(291,183)(243,192)(327,137)(245,163)(314,122)(231,141)
m′=7
G2[19]:(470,349)(363,329)(396,304)(345,302)(350,297)(343,301)(343,239)
K=19 f(G1[19])=422 f(G2[19])=471 f(G1[19],G2[19])=113
Move[19]=3 Round[19]=3 MRNumber[19]=3
m=18
G1[20]:(265,334)(271,242)(296,257)(300,246)(300,246)(299,244)(345,280)(326,233)(357,267)
(326,218)(365,272)(376,272)(360,242)(352,195)(406,277)(381,197)(422,264)(403,183)
m′=7
G2[20]:(302,423)(322,316)(345,349)(346,298)(351,304)(347,298)(409,298)
K=20 f(G1[20])=205 f(G2[20])=46 f(G1[20],G2[20])=227
Move[20]=5 Round[20]=6 MRNumber[20]=7
m=18
G1[21]:(217,270)(298,236)(297,260)(307,256)(307,256)(307,256)(302,309)(326,271)(314,314)
(338,264)(314,325)(321,332)(338,305)(372,276)(331,361)(386,301)(351,368)(409,313)
m′=7
G2[21]:(231,338)(334,305)(317,338)(357,316)(357,319)(357,316)(387,367)
K=21 f(G1[21])=116 f(G2[21])=275 f(G1[21],G2[21])=359
Move[21]=6 Round[21]=5 MRNumber[21]=9
m=18
G1[22]:(311,188)(340,264)(322,268)(324,271)(324,271)(324,271)(278,269)(311,287)(273,280)
(318,299)(263,279)(254,285)(281,301)(306,332)(225,295)(281,348)(217,312)(272,369)
m′=7
G2[22]:(350,213)(380,314)(351,299)(372,336)(370,335)(372,336)(325,359)
K=22 f(G1[22])=71 f(G2[22])=422 f(G1[22],G2[22])=481
Move[22]=3 Round[22]=3 MRNumber[22]=3
m=18
G1[23]:(406,263)(332,290)(327,273)(326,274)(326,274)(326,274)(326,231)(310,264)(317,228)
(299,270)(317,216)(312,208)(297,234)(266,259)(301,178)(250,234)(284,172)(229,225)
m′=7
G2[23]:(498,317)(397,347)(411,319)(376,337)(375,337)(376,337)(355,294)
K=23 f(G1[23])=354 f(G2[23])=222 f(G1[23],G2[23])=444
Move[23]=4 Round[23]=3 MRNumber[23]=4
m=18
G1[24]:(308,346)(323,272)(335,272)(336,271)(336,271)(336,271)(372,292)(351,266)(379,288)
(353,253)(390,294)(399,293)(384,269)(378,231)(431,299)(407,229)(444,286)(426,216)
m′=7
G2[24]:(341,450)(367,348)(381,373)(383,337)(383,337)(383,337)(429,339)
K=24 f(G1[24])=195 f(G2[24])=124 f(G1[24],G2[24])=191
Move[24]=5 Round[24]=4 MRNumber[24]=3
m=18
G1[25]:(289,217)(343,266)(338,275)(339,276)(339,276)(339,276)(303,295)(336,290)(304,304)
(345,299)(293,310)(289,319)(317,317)(352,331)(268,343)(339,357)(272,361)(341,380)
m′=7
G2[25]:(307,256)(383,329)(355,328)(384,346)(384,346)(384,346)(360,384)
K=25 f(G1[25])=432 f(G2[25])=28 f(G1[25],G2[25])=428
Move[25]=3 Round[25]=8 MRNumber[25]=8
m=18
G1[26]:(282,318)(341,279)(345,282)(345,282)(345,282)(345,282)(357,316)(353,285)(364,318)
(364,280)(370,329)(376,333)(378,307)(396,278)(395,359)(420,297)(413,358)(443,298)
m′=7
G2[26]:(291,410)(376,352)(369,375)(387,353)(387,353)(387,353)(418,379)
K=26 f(G1[26])=179 f(G2[26])=156 f(G1[26],G2[26])=47
Move[26]=9 Round[26]=6 MRNumber[26]=7
m=18
G1[27]:(291,281)(352,310)(350,314)(350,314)(350,314)(350,314)(328,338)(349,321)(331,346)
(356,326)(323,357)(322,364)(344,352)(376,353)(308,392)(371,383)(318,408)(382,404)
m′=7
G2[27]:(315,326)(408,371)(386,373)(409,378)(409,378)(409,378)(403,414)
K=27 f(G1[27])=140 f(G2[27])=143 f(G1[27],G2[27])=3
Move[27]=3 Round[27]=3 MRNumber[27]=3
m=18
G1[28]:(388,260)(359,317)(354,314)(354,314)(354,314)(354,314)(333,296)(352,315)(326,299)
(345,320)(314,291)(308,289)(320,311)(318,341)(281,275)(289,337)(264,285)(268,348)
m′=7
G2[28]:(465,285)(419,376)(419,356)(412,376)(412,376)(412,376)(380,372)
K=28 f(G1[28])=191 f(G2[28])=60 f(G1[28],G2[28])=131
Move[28]=3 Round[28]=3 MRNumber[28]=3
m=18
G1[29]:(406,348)(354,319)(355,315)(355,315)(355,315)(355,315)(371,296)(355,314)(369,289)
(349,307)(377,277)(379,270)(357,283)(328,280)(393,244)(332,252)(382,226)(321,231)
m′=7
G2[29]:(503,433)(413,386)(431,388)(414,379)(414,379)(414,379)(417,352)
K=29 f(G1[29])=107 f(G2[29])=86 f(G1[29],G2[29])=61
Move[29]=7 Round[29]=6 MRNumber[29]=3
m=18
G1[30]:(308,292)(360,321)(359,324)(359,324)(359,324)(359,324)(343,342)(358,325)(345,349)
(363,332)(336,362)(334,368)(355,355)(384,358)(320,394)(380,386)(331,412)(390,407)
m′=7
G2[30]:(335,333)(423,380)(407,378)(423,386)(423,386)(423,386)(419,412)
K=30 f(G1[30])=40 f(G2[30])=46 f(G1[30],G2[30])=6
Move[30]=3 Round[30]=6 MRNumber[30]=6
m=18
G1[31]:(314,299)(364,327)(363,328)(363,328)(363,328)(363,328)(350,344)(362,329)(350,350)
(365,334)(342,364)(339,369)(360,355)(385,359)(325,394)(383,387)(337,411)(392,408)
m′=7
G2[31]:(340,341)(426,387)(412,384)(427,390)(427,390)(427,390)(422,412)
K=31 f(G1[31])=32 f(G2[31])=35 f(G1[31],G2[31])=3
Move[31]=3 Round[31]=5 MRNumber[31]=3
m=18
G1[32]:(421,334)(365,333)(366,332)(366,332)(366,332)(366,332)(369,314)(366,330)(366,309)
(363,329)(366,294)(366,287)(356,310)(333,318)(366,260)(321,293)(348,249)(302,280)
m′=7
G2[32]:(529,391)(431,393)(444,390)(430,391)(430,391)(430,391)(424,373)
K=32 f(G1[32])=344 f(G2[32])=894 f(G1[32],G2[32])=550
Move[32]=4 Round[32]=4 MRNumber[32]=3
m=18
G1[33]:(345,379)(372,331)(373,332)(373,332)(373,332)(373,332)(387,344)(374,333)(391,345)
(376,332)(405,353)(411,355)(396,336)(401,314)(434,369)(429,316)(453,359)(449,306)
m′=7
G2[33]:(386,476)(432,392)(429,404)(434,392)(434,392)(434,392)(451,395)
K=33 f(G1[33])=111 f(G2[33])=45 f(G1[33],G2[33])=66
Move[33]=3 Round[33]=5 MRNumber[33]=6
m=18
G1[34]:(399,379)(374,336)(375,337)(375,337)(375,337)(375,337)(389,331)(377,336)(391,327)
(375,334)(406,318)(411,316)(387,319)(373,304)(433,303)(387,281)(436,282)(389,259)
m′=7
G2[34]:(488,478)(440,397)(446,405)(440,397)(440,397)(440,397)(451,388)
K=34 f(G1[34])=22 f(G2[34])=90 f(G1[34],G2[34])=76
Move[34]=3 Round[34]=3 MRNumber[34]=6
m=18
G1[35]:(358,298)(380,338)(380,338)(380,338)(380,338)(380,338)(368,344)(380,339)(366,347)
(380,339)(353,355)(347,358)(371,353)(382,368)(325,369)(368,390)(321,390)(366,412)
m′=7
G2[35]:(396,323)(444,401)(438,395)(444,401)(444,401)(444,401)(433,407)
K=35 f(G1[35])=171 f(G2[35])=212 f(G1[35],G2[35])=127
Move[35]=3 Round[35]=3 MRNumber[35]=7
m=18
G1[36]:(388,380)(389,339)(389,339)(389,339)(389,339)(389,339)(398,339)(391,339)(401,340)
(391,339)(417,339)(423,339)(401,333)(402,315)(447,339)(423,303)(461,325)(434,285)
m′=7
G2[36]:(455,490)(453,402)(455,408)(453,402)(453,402)(453,402)(461,402)
K=36 f(G1[36])=6 f(G2[36])=45 f(G1[36],G2[36])=43
Move[36]=6 Round[36]=5 MRNumber[36]=3
m=18
G1[37]:(375,311)(394,344)(394,344)(394,344)(394,344)(394,344)(388,348)(392,346)(384,349)
(392,346)(371,357)(366,361)(387,355)(393,370)(344,373)(383,392)(339,392)(382,413)
m′=7
G2[37]:(412,334)(458,407)(455,404)(458,407)(458,407)(458,407)(453,411)
K=37 f(G1[37])=127 f(G2[37])=223 f(G1[37],G2[37])=160
Move[37]=7 Round[37]=3 MRNumber[37]=3
m=18
G1[38]:(441,335)(408,352)(408,352)(408,352)(408,352)(408,352)(405,347)(407,350)(404,346)
(407,350)(397,333)(394,328)(400,347)(385,352)(381,306)(363,343)(363,300)(342,342)
m′=7
G2[38]:(546,370)(473,415)(476,412)(473,415)(473,415)(473,415)(470,410)
K=38 f(G1[38])=18 f(G2[38])=860 f(G1[38],G2[38])=846
Move[38]=8 Round[38]=3 MRNumber[38]=6
m=18
G1[39]:(407,374)(435,356)(435,356)(435,356)(435,356)(435,356)(439,360)(436,359)(437,361)
(436,359)(446,375)(447,379)(440,361)(456,357)(461,402)(478,367)(477,408)(498,367)
m′=7
G2[39]:(431,465)(500,419)(497,421)(500,419)(500,419)(500,419)(504,423)
②、计算设定K和J值相关W1、W1、G1、G2的矩阵向量运算
计算设定K=18、J=19时相关W1、W1、G1、G2的矩阵向量运算,即包括计算设定K=18、J=19相关W1=K*G1、W1=K*G2、J*G1、J*G2、J*W1、J*W2、K*(J*G1)、K*(J*G2))的矩阵向量运算。因①计算设定K=38相关G1、G2的矩阵向量运算结果,故无需计算只要按K=18、J=19即可查获该运算值:
A、因W1=K*G1=G1[K+1],故W1=18*G1=G1[19],查①获该运算值:
W1={(385,282)(291,277)(309,249)(297,243)(297,243)(295,245)(331,198)(282,218)(316,187)(266,218)(322,178)(322,168)(291,183)(243,192)(327,137)(245,163)(314,122)(231,141)};
同理,因W2=K*G2=G2[K+1],故W2=18*G2=G2[19],查①获该运算值:
W2={(470,349)(363,329)(396,304)(345,302)(350,297)(343,301)(343,239)};
B、因J*G1=G1[J+1],故19*G1=G1[20],查①获该运算值:
J*G1={(265,334)(271,242)(296,257)(300,246)(300,246)(299,244)(345,280)(326,233)(357,267)(326,218)(365,272)(376,272)(360,242)(352,195)(406,277)(381,197)(422,264)(403,183)};
同理,因J*G2=G2[J+1],故19*G2=G2[20],查①获该运算值:
J*G2={(302,423)(322,316)(345,349)(346,298)(351,304)(347,298)(409,298)};
C、因J*W1=J*K*G1=G1[K+J+1],故19*W1=G1[38],查①获该运算值:
J*W1={(441,335)(408,352)(408,352)(408,352)(408,352)(408,352)(405,347)(407,350)(404,346)(407,350)(397,333)(394,328)(400,347)(385,352)(381,306)(363,343)(363,300)(342,342)};
同理,因J*W2==J*K*G2=G2[K+J+1],故19*W2=G2[38],查①获该运算值:
J*W2={(546,370)(473,415)(476,412)(473,415)(473,415)(473,415)(470,410)};
D、因K*J*G1=G1[K+J+1],故18*19*G1=G1[38],查①获该运算值:
K*J*G1={(441,335)(408,352)(408,352)(408,352)(408,352)(408,352)(405,347)(407,350)(404,346)(407,350)(397,333)(394,328)(400,347)(385,352)(381,306)(363,343)(363,300)(342,342)};
同理,因K*J*G2=G2[K+J+1],故18*19*G2=G2[38],查①获该运算值:
K*J*G2={(546,370)(473,415)(476,412)(473,415)(473,415)(473,415)(470,410)};
③、计算设定string(Matrix-Vector)
计算设定string(Matrix-Vector),包括按串序设定PDG1-G2=5、5、6、6和m m′=18、7,及编码Matrix-Vector=G、W、J*G,即:
A、string(Matrix-Vector=G)={(5、5、6、6)(18、7)}{(39,39)(195,67)(95,100)(127,117)(108,126)(153,132)(57,208)(158,219)(70,224)(184,225)(65,235)(57,246)(115,253)(194,254)(44,272)(180,287)(65,292)(190,314)(58,43)(178,80)(113,113)(171,129)(151,162)(200,166)(162,272)}
B、string(Matrix-Vector=W)={(5、5、6、6)(18、7)}}{(385,282)(291,277)(309,249)(297,243)(297,243)(295,245)(331,198)(282,218)(316,187)(266,218)(322,178)(322,168)(291,183)(243,192)(327,137)(245,163)(314,122)(231,141)(470,349)(363,329)(396,304)(345,302)(350,297)(343,301)(343,239)}
C、string(Matrix-Vector=J*G)={(5、5、6、6)(18、7)}}{(265,334)(271,242)(296,257)(300,246)(300,246)(299,244)(345,280)(326,233)(357,267)(326,218)(365,272)(376,272)(360,242)(352,195)(406,277)(381,197)(422,264)(403,183)(302,423)(322,316)(345,349)(346,298)(351,304)(347,298)(409,298)};
④、计算设定matrix(Matrix-String)
计算设定matrix(Matrix-String),包括按还原顺序设定反编码Matrix-String=string(Matrix-Vector=G、W、J*G、J*W)和PDG1-G2=5、5、6、6及mm′=18、7,即:
A、matrix(Matrix-String=string(Matrix-Vector=G))=
{(39,39)(195,67)(95,100)(127,117)(108,126)(153,132)(57,208)(158,219)(70,224)(184,225)(65,235)(57,246)(115,253)(194,254)(44,272)(180,287)(65,292)(190,314)(58,43)(178,80)(113,113)(171,129)(151,162)(200,166)(162,272)}和{(5、5、6、6)(18、7)}}
B、matrix(Matrix-String=string(Matrix-Vector=W))=
{(385,282)(291,277)(309,249)(297,243)(297,243)(295,245)(331,198)(282,218)(316,187)(266,218)(322,178)(322,168)(291,183)(243,192)(327,137)(245,163)(314,122)(231,141)(470,349)(363,329)(396,304)(345,302)(350,297)(343,301)(343,239)}和{(5、5、6、6)(18、7)}}
C、matrix(Matrix-String=string(Matrix-Vector=J*G))=
{(265,334)(271,242)(296,257)(300,246)(300,246)(299,244)(345,280)(326,233)(357,267)(326,218)(365,272)(376,272)(360,242)(352,195)(406,277)(381,197)(422,264)(403,183)(302,423)(322,316)(345,349)(346,298)(351,304)(347,298)(409,298)}和{(5、5、6、6)(18、7)}};
⑤、计算设定f(Matrix-OP=J*W)、f(Matrix-OP=K*(J*G))
计算设定f(Matrix-OP=J*W)、f(Matrix-OP=K*(J*G)),即计算设定 和 为方便说明,现假定加密方或解密方知道K=18和J=19,以此计算设定(实际使用时,根据步骤(1)加密方或解密方不可能掌握对方的私钥K或J,故该计算设定只能通过G猜K或J值,以此算获W=K*G或J*G值及对应的G[K+1]或G[J+1];但若K和J非常大则猜算J*G[K+1]或K*G[J+1]就非常难实现,故该计算设定是安全的),即:
A、因J*W1=J*K*G1=G1[K+J+1],J*W2==J*K*G2=G2[K+J+1],故
即:f(Matrix-OP=J*W)=846;
B、因K*J*G1=G1[K+J+1],K*J*G2=G2[K+J+1],故
即:f(Matrix-OP=K*(J*G))=846;
(14)发布string(Matrix-Vector=G)和string(Matrix-Vector=W),隐藏私钥K
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(12)、(13)及(14),隐藏设定解密私钥K=18,发布:
string(Matrix-Vector=G)={(5、5、6、6)(18、7)}{(39,39)(195,67)(95,100)(127,117)(108,126)(153,132)(57,208)(158,219)(70,224)(184,225)(65,235)(57,246)(115,253)(194,254)(44,272)(180,287)(65,292)(190,314)(58,43)(178,80)(113,113)(171,129)(151,162)(200,166)(162,272)},
string(Matrix-Vector=W)={(5、5、6、6)(18、7)}}{(385,282)(291,277)(309,249)(297,243)(297,243)(295,245)(331,198)(282,218)(316,187)(266,218)(322,178)(322,168)(291,183)(243,192)(327,137)(245,163)(314,122)(231,141)(470,349)(363,329)(396,304)(345,302)(350,297)(343,301)(343,239)};
(15)加密:计算及发送加密信息C={string(Matrix-Vector=J*G),Cm},隐藏私钥J
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(12)、(13)、(14)及(15),因C={string(Matrix-Vector=J*G),Cm=[f(Matrix-OP=J*W)+M]},且:
①、设定待加密值M=4,设定加密私钥J=19,隐藏J,
②、f(Matrix-OP=J*W)=846,
则:Cm=f(Matrix-OP=J*W)+M=846+4=850,
又因string(Matrix-Vector=J*G)={(5、5、6、6)(18、7)}}{(265,334)(271,242)(296,257)(300,246)(300,246)(299,244)(345,280)(326,233)(357,267)(326,218)(365,272)(376,272)(360,242)(352,195)(406,277)(381,197)(422,264)(403,183)(302,423)(322,316)(345,349)(346,298)(351,304)(347,298)(409,298)},故:
向解密方发送的加密信息C={string(Matrix-Vector=J*G),Cm}=
{{(xG1[20]5,yG1[20]5)(xG1[20]6,yG1[20]6)(xG2[20]5,yG2[20]5)(xG2[20]6,yG2[20]6)(m=18,m′=7)}{(265,334)(271,242)(296,257)(300,246)(300,246)(299,244)(345,280)(326,233)(357,267)(326,218)(365,272)(376,272)(360,242)(352,195)(406,277)(381,197)(422,264)(403,183)(302,423)(322,316)(345,349)(346,298)(351,304)(347,298)(409,298)},850);
(16)解密:计算及解密Em=Cm-f(Matrix-OP=K*(J*G))获M
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(13)、(14)、(15)及(16),因
E={matrix(Matrix-String=string(Matrix-Vector=J*G)),Em=Cm-f(Matrix-OP=K*(J*G))},且:
①、matrix(Matrix-String=string(Matrix-Vector=J*G))=
{(265,334)(271,242)(296,257)(300,246)(300,246)(299,244)(345,280)(326,233)(357,267)(326,218)(365,272)(376,272)(360,242)(352,195)(406,277)(381,197)(422,264)(403,183)(302,423)(322,316)(345,349)(346,298)(351,304)(347,298)(409,298)}和{(5、5、6、6)(18、7)}}
②、由①计算K*(J*G)得:f(Matrix-OP=K*(J*G))=846
计算Em=Cm-f(Matrix-OP=K*(J*G))=850-846=4,即得明文M=4,且该值等于待加密值。
其中:
本发明实施例根据1和步骤(1)、(2)及(3),该矩阵向量的运算基准和基本运算如图2所示。
图2中该矩阵向量BioTPM[N]以P和D俩点为运算基准(运算基准点P和运算基准方向点D构成PD运算基准),按位移步长Move[N]和旋转步长Round[N]、且按作1次(即:MRNumber[N]=1)位移和旋转,该矩阵向量经基本运算其结果是BioTPM[N+1]。
本发明实施例根据1和步骤(1)、(2)及(3),该矩阵向量的第N轮运算如图3所示。
图3中输入该矩阵向量BioTPM[N](17)和基本运算次数MRNumber[N]、位移步长Move[N]和旋转步长Round[N](18),按运算表达式f(BioTPM[N],Move[N],Round[N],MRNumber[N])(19),作MRNumber[N]次循环基本运算(20),每作一次基本运算后作MRNumber[N]-1(21)操作,一直检查到MRNumber[N]=0(22)完成循环基本运算,并输出基本运算结果BioTPM[N+1](23)。
本发明实施例根据1和步骤(1)、(2)、(3)、(4)及(5),该矩阵向量的K轮运算如图4所示。
图4中首先是通过(24)、(25)、(26)、(27)、(28)、(29)完成初始化,包括初始化输入该矩阵向量BioTPM[N]和基本运算次数MRNumber[N]、位移步长Move[N]和旋转步长Round[N],然后通过(30)、(31)、(32)、(33)完成第N轮该矩阵向量运算,包括按运算表达式f(BioTPM[N],Move[N],Round[N],MRNumber[N]),作MRNumber[N]次循环基本运算,每作一次基本运算后作MRNumber[N]-1操作,一直检查到MRNumber[N]=0完成循环基本运算,并输出基本运算结果BioTPM[N+1],最后通过(34)、(35)、(36)完成K轮该矩阵向量运算,包括把完成了第N轮运算的该矩阵向量作为新K轮运算的起始运算矩阵向量,从而进行新的N=K=K+1轮矩阵向量运算,直到完成设定的K轮运算把运算结果输入BioTPM[K+1],即BioTPM[K+1]=BioTPM[N+1]。由此实现(38)K轮运算表达式:BioTPM[K+1]=fK(BioTPM[K],Move[K],Round[K],MRNumber[K])=K*BioTPM[1]。
本发明实施例根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(12)及(13),计算设定K的矩阵向量G[K]={G1[K],G2[K],…}及其运算参数,如图5所示。
图5中通过(39)G[1]={G1[1],G2[1],…}初始化(40)G[K]={G1[K],G2[K],…},通过G[K]的子集(41)G1[K]和(42)G2[K]的进行(43)运算获取Move[K]=f(Matrix-OP=G1[K])、Round[K]=f(Matrix-OP=G2[K])、MRNumber[K]=f(Matrix-OP=(G1[K],G2[K])),以此进行一轮矩阵向量运算,包括按运算表达式f(BioTPM[N],Move[N],Round[N],MRNumber[N]),作MRNumber[N]次循环基本运算,每作一次基本运算后作MRNumber[N]-1操作,一直检查到MRNumber[N]=0完成循环基本运算,并输出基本运算结果BioTPM[N+1],进而把完成了第N轮运算的该矩阵向量作为新K轮运算的起始运算矩阵向量,从而进行(44)新的K+1轮矩阵向量运算,直到完成(46)设定的K轮运算并把运算结果输入BioTPM[K+1],即通过BioTPM[K+1]=BioTPM[N+1]完成该K轮该矩阵向量运算:(45)BioTPM[K+1]=fK(BioTPM[K],Move[K],Round[K],MRNumber[K])=K*BioTPM[1],且通过G1[K+1]=BioTPM[K+1]或G2[K+1]=BioTPM[K+1]获取(47)G1[K+1]和G2[K+1]完成(48)G[K+1]={G1[K+1],G2[K+1],…}。
需要指出的是本发明者特别采用指纹模式识别技术,对由G及W、J*G、J*W、K*(J*G)模式识别认证该发布人的指纹生物特征进行了编程验证,结果证明是切实可行的。
从而说明:尽管string(Matrix-Vector=G)、string(Matrix-Vector=W)、string(Matrix-Vector=J*G)和f(Matrix-OP=J*W)、f(Matrix-OP=K*(J*G))各不相同,但该W、J*G、J*W、K*(J*G)矩阵向量所包含生物特征点的拓扑结构与G却相同,由此使该发布公钥既包含表征发布人生物特征点拓扑结构信息、以此可认证该发布人的生物特征,又可凭借发布公钥和隐藏私钥依此公开地构建安全通信通道,有利于构筑基于发布人公钥可信认证的安全通信通道。
从而完全实现本发明一种基于生物特征点拓扑结构的非对称加(解)密方法所要达到的目的。
Claims (10)
1.本发明方案的技术特征包括,设定基于生物特征点拓扑结构的非对称加(解)密模式;设定该非对称加(解)密模式中描述生物特征点拓扑结构的数据,为基于该生物特征点拓扑结构的矩阵向量;设定该矩阵向量的元素集合是设定坐标系下基于该生物特征点坐标参数的集合;设定该集合的指定生物特征点坐标参数为该矩阵向量的运算基准,该运算基准包括运算基准点和运算基准方向点,设定具有指定运算基准的矩阵向量为起始运算矩阵向量;设定矩阵向量的基本运算是把该矩阵向量作为该运算的起始运算矩阵向量,并对该矩阵向量按设定运算基准的设定位移、旋转值进行位移、旋转的运算;设定矩阵向量的某一轮运算是把该矩阵向量作为该轮运算的起始运算矩阵向量,并对该矩阵向量按该轮运算所设基本运算次数进行位移旋转的该一轮所设次基本运算,其中该一轮所设次即该一轮所设基本运算次数,该一轮运算所设每次基本运算的位移、旋转值是该一轮运算所设位移、旋转步长;设定矩阵向量的若干轮运算是把该矩阵向量作为该若干轮运算的起始运算矩阵向量,并对该矩阵向量按所设若干轮、以及每轮所设基本运算次数、再及每次基本运算所设位移步长和旋转步长进行位移旋转的该若干轮所设轮次基本运算,其中该若干轮所设该若干次数值是该若干轮所设轮次;设定加密包括首先把解密方公开的起始运算矩阵向量和经其私设轮次运算过的起始运算矩阵向量作为加密方运算的起始运算矩阵向量,并对该俩矩阵向量按加密方私设轮次进行该轮次运算,然后把该后者运算结果编码值和待加密值相加,计算该俩值之和作为加密信息值与前者一起发送给解密方;设定解密包括首先把加密方所公开且经其私设轮次运算的起始运算矩阵向量作为解密方运算的起始运算矩阵向量,并对该矩阵向量按解密方原私设轮次进行该轮次运算,然后把该运算编码值减去加密方所发送来的加密信息值,计算该俩值之差作为解密信息值,且该值等于该待加密值。
2.根据1,该特征还包括其实现的步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)、(12)、(13)、(14)、(15)、(16)。
3.步骤(1)的特征在于根据1,设定该基于生物特征点拓扑结构的非对称加密模式可以是C={string(Matrix-Vector=J*G),Cm=[f(Matrix-OP=J*W)+M]},解密模式可以是E={matrix(Matrix-String=string(Matrix-Vector=J*G)),Em=Cm-f(Matrix-OP=K*(J*G))};定义*是本发明矩阵向量运算符、G和W是解密方公开的起始运算矩阵向量、J是加密方为设定矩阵向量运算轮次所设的私设轮次值(即加密私钥)、K是解密方为设定矩阵向量运算轮次所设的私设轮次值(即解密私钥)、J*G、J*W是使用J对G和W进行*运算、K*(J*G)是使用K对(J*G)进行*运算、string(Matrix-Vector=J*G)是先使用J对G进行*运算然后对包括运算基准的该J*G进行数字串编码的操作、matrix(Matrix-String=string(Matrix-Vector=J*G))是还原string(Matrix-Vector=J*G)为该矩阵向量的反操作、f(Matrix-OP=J*W)和f(Matrix-OP=K*(J*G))是对该矩阵向量进行相关*运算及散列法运算编码、M是待加密值、Cm是加密方计算f(Matrix-OP=J*W)与M俩值之和作为加密信息值、Em是解密方计算Cm与f(Matrix-OP=K*(J*G))俩值之差作为解密信息值。
4.步骤(2)的特征在于根据1和步骤(1),设定该非对称加密模式中的G,为基于生物特征点拓扑结构矩阵向量;设定G可以是基于指纹特征点拓扑结构的矩阵向量,也可以是基于人脸面相特征点拓扑结构的矩阵向量;G的子集G1和G2可以分别是该指纹特征点拓扑结构的端点和叉点矩阵向量,也可以分别是该人脸面相眼部和嘴部特征点拓扑结构的矩阵向量;设定G的元素集合可以是设定直角坐标系下基于该生物特征点坐标参数(xGn,yGn)的集合,其中n是G的元素数;设定G包括子集G1和G2,其中:①G1是(xG1m,yG1m)的集合、该m是G1的元素数,②G2是(xG2m′,yG2m′)的集合、该m′是G2的元素数;设定G1和G2的指定生物特征点坐标参数为该矩阵向量的运算基准,设定该运算基准所包括运算基准点为P和运算基准方向点为D,设定G1[1]和G2[1]是G1和G2具有指定运算基准PD的起始运算矩阵向量。
5.步骤(3)和(4)的特征在于根据1和步骤(1)及(2),步骤(3)设定BioTPM[N]为起始运算矩阵向量、N为大于零的整数(其中N=1、2、…、N)、PD为运算基准、MRNumber[N]为基本运算次数、Move[N]为位移步长、Round[N]为旋转步长;设定该矩阵向量的基本运算是设定MRNumber[N]等于1且把BioTPM[N]按PD的Move[N]和Round[N]数值各进行一次位移、旋转的运算;设定该矩阵向量的某一轮运算为第N轮运算,设定该矩阵向量的第N轮运算是设定MRNumber[N]大于1且把BioTPM[N]按PD的Move[N]和Round[N]数值进行位移、旋转的MRNumber[N]次基本运算;设该第N轮轮运算结果值为BioTPM[N+1]、且该BioTPM[N+1]由该第N轮的MRNumber[N]次基本运算结果赋值获取,则可把该第N轮运算用函数表达式表示,即:BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N]),其中MRNumber[N]>1,当MRNumber[N]=1则该式即为该矩阵向量的基本运算函数表达式;步骤(4)设定G[N]及子集G1[N]和G2[N]的第N轮运算,还包括根据步骤(3)分别把G1[N]或G2[N]代入BioTPM[N]、G1[N+1]或G2[N+1]代入BioTPM[N+1],连同把Move[N]、Round[N]、MRNumber[N]代入BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N]),进行该第N轮运算,把经该轮运算的相关结果分别赋值给G1[N+1]或G2[N+1],从而由获取子集G1[N]和G2[N]的值获得该G[N+1]值。
6.步骤(5)和(6)的特征在于,根据1和步骤(1)、(2)、(3)及(4),步骤(5)设定该矩阵向量的若干轮运算为K轮次运算,设定起始运算矩阵向量是BioTPM[1],根据步骤(3)对BioTPM[1]进行第1轮运算,该矩阵向量的第1轮运算结果值为BioTPM[2],同理经过第K轮运算该矩阵向量第K轮运算结果值为BioTPM[K+1];由此定义该矩阵向量的K轮次运算是根据步骤(3)把BioTPM[1]进行由第1轮运算连续到第K轮运算;经过K轮次运算该矩阵向量的K轮次运算结果值为BioTPM[K+1];把该K轮次运算用函数表达式表示,即:BioTPM[K+1]=fK(BioTPM[1],Move[1],Round[1],MRNumber[1]),定义fK(BioTPM[1],Move[1],Round[1],MRNumber[1])可表示为K*BioTPM[1],其中*是步骤(1)所定义;即:BioTPM[K+1]=K*BioTPM[1];步骤(6)还包括根据步骤(5),设定G或G1或G2的K轮次运算,包括分别把G1=G1[1]和G2=G2[1]代入BioTPM[1]、G1[K+1]或G2[K+1]代入BioTPM[K+1],由K=1、2、3、4、…、K,连同Move[K]、Round[N]、MRNumber[N]代入BioTPM[K+1]=fK(BioTPM[K],Move[K],Round[K],MRNumber[K])=K*BioTPM[1],即经该K轮运算可得BioTPM[K+1]=K*BioTPM[1],也即分别得G1[K+1]=K*G1[1]或G2[K+1]=K*G2[1],从而得G[K+1]={G1[K+1],G2[K+1],…}={K*G1[1],K*G2[1],…}=K*G[1]。
7.步骤(7)的特征在于,设定W=K*G、J*W、J*G、K*(J*G)的运算,包括根据1和步骤(1)、(2)、(3)、(4)、(5)及(6),①设定W=K*G、W1=K*G1、W2=K*G2,可得W=K*G[1]=K*{G1[1],G2[1],…}={K*G1[1],K*G2[1],…}={W1,W2,…};②设定J*W=J*{(W1),(W2),…}={(J*W1),(J*W2),…};③设定J*G=J*G[1]=J*{G1,G2,…}={(J*G1),(J*G2),…};④设定K*(J*G)=K*{(J*G1),(J*G2),…}={(K*(J*G1)),(K*(J*G2)),…}。
8.步骤(8)和(9)的特征在于,根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)及(7),步骤(8)设定string(Matrix-Vector)和matrix(Matrix-String),包括设定string(Matrix-Vector)包括把括弧内Matrix-Vector对象按string规则进行编码,设定Matrix-Vector对象组成包括该矩阵向量、还包括该运算基准,设定string编码规则可以是按从左到右从上到下的顺序把Matrix-Vector进行编码、且使之串接成为该集合元素的数字串,设定串接可以是按运算基准、矩阵向量的顺序排列连接为串;设定matrix(Matrix-String)包括把括弧内Matrix-String对象按matrix格式进行还原,设定该Matrix-String对象组成包括该矩阵向量数字串、还包括该运算基准数字串,设定matrix还原格式可以是按从左到右从上到下的顺序把Matrix-String进行还原,包括把运算基准数字串与矩阵向量数字串分开,包括把二者还原为特征点坐标参数;步骤(9)还包括根据步骤(8)设定f(Matrix-OP=J*W)或f(Matrix-OP=K*(J*G))运算编码,包括设定散列法是f(XORM),且设定f(Matrix-OP=(J*W))或f(Matrix-OP=(K*(J*G)))是该子集的f(XORM)运算,该运算包括把括弧内Matrix-OP=(J*W)或(K*(J*G))按设定f(XORM)进行各子集异或散列的运算,该运算值即该编码值。
9.步骤(10)、(11)和(12)的特征在于,根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)及(9),步骤(10)设定该第N轮运算的基本运算次数(即MRNumber[N])、位移步长(即Move[N])、旋转步长(即Round[N])可以与步骤(4)所设G1[N]、G2[N]映射相关,且该映射相关包括可以设定Move[N]是G1[N]的函数、Round[N]是G2[N]的函数、MRNumber[N]是G1[N]和G2[N]的函数,即:①Move[N]=f(Matrix-OP=G1[N]),②Round[N]=f(Matrix-OP=G2[N]),③MRNumber[N]=f(Matrix-OP=(G1[N],G2[N]));步骤(11)设定f(Matrix-OP=G1[N])或f(Matrix-OP=G2[N])或f(Matrix-OP=(G1[N],G2[N]))运算,还包括根据步骤(10),设定散列法是f(XORM),且设定f(Matrix-OP=G1[N])或f(Matrix-OP=G2[N])或f(Matrix-OP=(G1[N],G2[N]))是该子集的f(XORM)运算,该运算包括把括弧内Matrix-OP=(G1[N])或(G2[N])或(G1[N],G2[N])按设定f(XORM)进行子集各自元素纵横坐标异或散列的运算;步骤(12)还包括根据步骤(10)和(11),设定Move[N]、Round[N]、MRNumber[N]映射相关值的计算,包括:①首先由G1=G1[1]和G2=G2[1]计算f(Matrix-OP=G1[1])、f(Matrix-OP=G2[1])、f(Matrix-OP=(G1[1],G2[1]));②将G1[1]和G2[1]分别代入BioTPM[1]、G1[2]和G2[2]分别代入BioTPM[2],连同Move[1]=f(Matrix-OP=G1[1])、Round[N]=f(Matrix-OP=G2[1])、MRNumber[N]=f(Matrix-OP=(G1[1],G2[1]))代入BioTPM[2]=f(BioTPM[1],Move[1],Round[1],MRNumber[1])经该第1轮运算,分别得G1[2]和G2[2]的值,由此获得Move[2]=f(Matrix-OP=G1[2])、Round[2]=f(Matrix-OP=G2[2])、MRNumber[2]=f(Matrix-OP=(G1[2],G2[2]));③由N=2、3、4、…N,将G1[N]和G2[N]分别代入BioTPM[N]、G1[N+1]和G2[N+1]分别代入BioTPM[N+1],连同Move[N]=f(Matrix-OP=G1[N])、Round[N]f=(Matrix-OP=G2[N])、MRNumber[N]=f(Matrix-OP=(G1[N],G2[N]))代入BioTPM[N+1]=f(BioTPM[N],Move[N],Round[N],MRNumber[N])经该第N轮运算,分别得G1[N+1]和G2[N+1]的值,由此计算获得Move[N+1]=f(Matrix-OP=G1[N+1])、Round[N+1]=f(Matrix-OP=G2[N+1])、MRNumber[N+1]=f(Matrix-OP=(G1[N+1],G2[N+1]))。
10.步骤(13)、(14)、(15)和(16)的特征在于,根据1和步骤(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11)及(12),步骤(13)计算设定K的G[K]={G1[K],G2[K],…}及其运算参数,包括;①计算设定f(Matrix-OP=G1[K])、f(Matrix-OP=G2[K])、f(Matrix-OP=(G1[K],G2[K]))和Move[K]、Round[K]、MRNumber[K],②计算设定K和J值相关W1、W1、G1、G2的矩阵向量运算,③计算设定string(Matrix-Vector=G、W、J*G),④计算设定matrix(Matrix-String=string(Matrix-Vector=G、W、J*G)),⑤计算设定f(Matrix-OP=J*W)、f(Matrix-OP=K*(J*G))且前后二值相等;步骤(14)还包括根据步骤(13)发布string(Matrix-Vector=G)和string(Matrix-Vector=W),隐藏私钥K;步骤(15)还包括根据步骤(13)和(14),设定待加密值M、计算及发送加密信息C={string(Matrix-Vector=J*G),Cm=[f(Matrix-OP=J*W)+M]},隐藏私钥J;步骤(16)还包括根据步骤(13)、(14)和(15),计算及解密Em=Cm-f(Matrix-OP=K*(J*G))获M,且该值等于该待加密值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910095294A CN101777977A (zh) | 2009-01-08 | 2009-01-08 | 基于生物特征点拓扑结构的非对称加解密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910095294A CN101777977A (zh) | 2009-01-08 | 2009-01-08 | 基于生物特征点拓扑结构的非对称加解密方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101777977A true CN101777977A (zh) | 2010-07-14 |
Family
ID=42514319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910095294A Pending CN101777977A (zh) | 2009-01-08 | 2009-01-08 | 基于生物特征点拓扑结构的非对称加解密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101777977A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750529A (zh) * | 2012-07-24 | 2012-10-24 | 南京邮电大学 | 基于量子模糊承诺的指纹生物特征认证方法 |
CN113836546A (zh) * | 2021-08-30 | 2021-12-24 | 广东浪潮智慧计算技术有限公司 | 一种密钥管理方法、装置、设备及存储介质 |
-
2009
- 2009-01-08 CN CN200910095294A patent/CN101777977A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750529A (zh) * | 2012-07-24 | 2012-10-24 | 南京邮电大学 | 基于量子模糊承诺的指纹生物特征认证方法 |
CN102750529B (zh) * | 2012-07-24 | 2014-04-16 | 南京邮电大学 | 基于量子模糊承诺的指纹生物特征认证方法 |
CN113836546A (zh) * | 2021-08-30 | 2021-12-24 | 广东浪潮智慧计算技术有限公司 | 一种密钥管理方法、装置、设备及存储介质 |
CN113836546B (zh) * | 2021-08-30 | 2024-02-13 | 广东浪潮智慧计算技术有限公司 | 一种密钥管理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111049650B (zh) | 一种基于sm2算法的协同解密方法及装置、系统、介质 | |
CN101976321B (zh) | 基于人脸特征密钥生成的加密方法 | |
CN101331706B (zh) | 安全阈值解密协议计算 | |
CN113111373B (zh) | Vbft共识机制的随机数生成方法和共识机制系统 | |
CN101057448B (zh) | 安全地计算相似性度量 | |
Barman et al. | Fingerprint-based crypto-biometric system for network security | |
CN101692636B (zh) | 一种基于数据元和坐标算法的混合型数据加密的方法和装置 | |
CN111259443A (zh) | 一种基于psi技术保护联邦学习预测阶段隐私的方法 | |
CN111130804B (zh) | 一种基于sm2算法的协同签名方法及装置、系统、介质 | |
CN105743645B (zh) | 基于puf的流秘钥生成装置、方法及数据加密、解密方法 | |
CN102571357B (zh) | 一种签名的实现方法和装置 | |
CN104851071B (zh) | 一种基于三维混沌系统的数字图像加密方法 | |
CN101282222A (zh) | 基于csk的数字签名方法 | |
CN103873234B (zh) | 面向无线体域网的生物量子密钥分发方法 | |
CN109067522A (zh) | 一种随机数可验证秘密共享方法 | |
CN106161035B (zh) | Cfl个人隐私保护模式实现方法 | |
CN104158880A (zh) | 一种用户端云数据共享解决方法 | |
CN111162894A (zh) | 具有隐私保护的外包云存储医疗数据聚合的统计分析方法 | |
CN105450419A (zh) | 提高生物识别安全性的方法、装置和系统 | |
CN113886778A (zh) | 一种可监管的动态自我主权身份生成方法 | |
Selvaraju et al. | A method to improve the security level of ATM banking systems using AES algorithm | |
CN113051547B (zh) | 多服务器架构下的双向认证与密钥协商方法 | |
CN104320247B (zh) | 一种基于椭圆曲线与指纹模糊金库的共享密钥保护方法 | |
CN101777977A (zh) | 基于生物特征点拓扑结构的非对称加解密方法 | |
CN103546277A (zh) | 一种智能卡sm4算法的dpa攻击与密钥还原方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100714 |