APP下载

一种基于分子结构的密码算法的设计方案*

2022-12-12张启超

通信技术 2022年10期
关键词:字符串明文公钥

张启超

(内蒙古工业大学,内蒙古 呼和浩特 010051)

0 引言

在1949 年之前,密码学处于古典密码阶段。这一时期的密码学更像是一门艺术,其核心手段是代替和置换。其中,具有代表性的是凯撒密码和维吉尼亚密码。之后,密码机的迅速发展,让越来越多的数学家加入密码队伍。其中,著名的有波兰“数学三杰”Marian Adam Rejewski、Jerzy Witold Różycki 和Henryk Zygalski,他们破解了第二次世界大战中德国的Enigma机[1]。

1949—1975 年是近代密码阶段。近代密码发展中一个重要突破是1975 年数据加密标准(Data Encrypt Standard,DES)的出现,该标准之后于1977年正式批准并作为美国联邦信息处理标准[2]。

1976 年至今是现代密码阶段。1976 年,Whitfield Diffie 和Martin Hellman 发表了New Directions in Cryptography这篇划时代的文章,奠定了公钥密码系统的基础[3]。公钥密码的概念被提出之后,RSA 公钥加密算法(Rivest-Shamir-Adleman Scheme)[4]、背包体制[5]、椭圆曲线数字签名算 法(Elliptic Curve Digital Signature Algorithm,ECDSA)[6]、ElGamal 体制[7]等公钥密码方案相继被提出,密码学真正进入了一个全新的发展时期。在The First Ten Years of Public-key Cryptography[8]一文中,只有两种类型的公钥系统是安全实用的,即基于大整数分解困难问题的密码体制和基于离散对数困难问题的密码体制。还有一些新的密码体制正在被研究,如基于辫群的密码体制、NTRU 公钥密码体制(Number Theory Research Unit)[9]、量子密码体制等[10]。

随着现代通信网络技术的发展,云计算、人工智能等技术相继出现在大众视野中,其中最受关注的是针对个人隐私的保密技术。而现有的密码算法越来越不安全,已经影响到了部分人的安全隐私,设计新的密码算法势在必行。同时最近的俄乌战争,也变相推动了国家安全和军事对新的密码算法的需求。

在古代军事战争中,将领传递消息会使用“无字天书”,在古代科举考试中,这种“高科技”作弊手法还一度成为古代作弊手段的巅峰,他们利用了一系列化学反应,达成了隐藏军事机密和小抄的目的。这类化学品在当时被称作“隐形墨水”。这类方法在当时可谓风靡一时。放在科技发达的今天,其效用却被极大地削弱了。虽然现在的密码学设计不会使用这样的方法,但是借助化学知识来开展密码设计为后世研究学者创造了一个新的研究领域。

由于破译者可能不了解化学分子结构或者量子化学基础知识,获取新的知识体系需要较长的时间,因此,笔者认为,如果运用化学分子结构的复杂性与多变性对明文进行加密,并辅以数学函数与量子力学,能够在一定程度上降低密文被破译的风险。

综上所述,可以将化学应用到密码学当中,并创造出新的密码编码方式。

1 预备知识

1.1群

令群G={E,I},这个群(称为Ci)里面的两个元素是对称操作,E是不动,I为对原点的倒反。这种组成元素是一些对称操作的群,被称为对称群或点群,且群中元素的数目为群的“阶”,用h表示。因此,上述群的阶为h=2。

把E和I作用到任意函数φ(x,y,z)上,结果为:

如果对φ(x,y,z)先用E作用,再用I作用,则有:

因为φ(x,y,z)是任意函数,故EI=I,此处的“乘”即为连续作用。同理可得,EI=I,II=E,EE=E。可以把以上结果归纳为乘积表,如表1 所示,乘积表中共有h2个元素,单位元素是E,E-1=E,I-1=I。[11]

表1 群G 的对称操作的乘积

1.2 对称操作字母表示

如图1,定义对称操作字母表示,以水分子(H2O)为例。

图1 水分子的结构

如图1 所示,整个水分子在yz平面,有一个对称面σv,为xz平面。与此同时,存在一个镜面反映动作σv。

有一个对称轴c2,也就是z轴,即分子绕z轴转动180°复原,此对称操作也可用C2表示,若转动120°可以复原,那么这个操作就记为C3。还有一个对称操作是不动,记为E。

水分子的对称操作的乘积如表2 所示

表2 水分子的对称操作乘积

1.3 点群Schonflies 符号

表3 给出了点群Schonflies 的字母符号。

表3 点群Schonflies 字母符号

表3 中,Dnh是Dn和C1h的直接乘积,Cnh与Cnv的构造也一样,则有[11]:

1.4 其他学科知识

在量子力学中,微观粒子既有粒子性又有波动性,常用波函数[11]来表示,具体为:

在有机化学、高分子化学或者结构化学中,连接不同原子的化学键不同,并且相同原子之间的成键规则与分子中化学环境也不同,连接两个或多个原子所产生的力也不同,故键长也有所区别。且键长与原子的最外层电子排布、诱导效应,以及轨道杂化、原子半径等有关[12]。

此外,余弦相似度指通过测量两个向量的夹角的余弦值来度量它们之间的相似性。余弦值越接近1,则两向量越相似[13]。

2 算法方案

2.1 对称操作群表示

任意一个分子M包含N个原子,R 为分子所属点群包含的任一个对称操作,它把分子体系变到另一个等价构型,用x1,y1,z1;x2,y2,z2;…;xN,yN,zN表示分子中各原子原来的坐标,用表示经R 作用后分子中各原子的坐标,即[11]。

2.2 算法基本公式及其内容

本文所提方法的基本公式为:

式中:Mr为相对分子质量,是一个分子中所有原子的相对原子质量之和;k为一个基础坐标(X,Y,Z)的乘积,即k=X×Y×Z,X,Y和Z的取值在2.3 节中做出了规定与解释;K为k与Mr的乘积,若k=5,Mr=6,则K=30。即使两个或多个分子的相对分子质量相同,也会存在不同的原子组成不同的分子,如果原子组成相同,也会有不同的分子结构。

式(6)中的K和Mr与公钥密码异曲同工,都是作为公钥,而k为私钥,包括k中的X,Y,Z的取值,都是由私人保管。

2.3 加密算法流程

加密算法的流程如下:

(1)给出公钥Mr,假设Mr=72,在有机化学中,相对分子质量为72 的分子化学式有C5H12,C4H8O,C4H9N,C3H6N2,C3H4O2等。

拥有相同的分子式,但具有不同结构的化合物互称为同分异构体。然而在有机化学中,同分异构体还有结构更为复杂的顺反异构体、手性异构体、构型、构象,这几种结构在本文中暂不会提及[14]。

在本文中,只列举其中几种同分异构体,如图2 所示。

(2)列举出相对分子质量相同的分子的所有不同结构并编号。如果选择的是其中的某个结构,那么就输入与结构对应的数字编号。例如在本文中,假设图2 中的新戊烷是所选用的密码载体,并假设它的编号为3,接下来的所有计算都将围绕新戊烷展开讨论。

图2 戊烷的同分异构体

(3)找出上一步中密码载体的所有对称操作,并对所有对称操作编号,假设此处选用的对称操作编号是5。

(4)定义函数:

式(7)为式(5)中波函数的简化式。本文暂不讨论粒子的波长、频率、观测时间对函数的影响,只讨论对称操作下密码载体的结构变化,故为定态讨论。式(5)中的i,λ,v,t均不作为变量影响结果,因此忽略不计。

式(7)中的因变量X为步骤(2)与步骤(3)中的两个编号的和,即X=X2+X3=3+5=8。

(5)代入式(7),得Y=6.76×1021。

(6)令Z为分子结构的放大倍数,例如,在结构化学中,定义C-C 的键长为154×10-12m,在此处只选用154 为结构键长。假设Z=1 000,则键长扩大成154 000。

(7)令分子结构中心的坐标为(X,Y,Z),故本例中分子中心坐标为(8,6.76×1021,1 000)。

(8)计算该分子所有原子的坐标。若该分子的总原子数较小,则所有原子参与坐标计算;若该分子的总原子数较大,则该分子的主链原子参与坐标计算。若计算出的坐标带负号,则用A 代替负号。例如,坐标为(8,-3,5),则字符串为8A35。然后,按化学结构逆时针的方向进行排列,如图3 所示,并按顺序规则将坐标写成字符串,例如:

图3 乙烷结构编号

若上述数字串位数达不到128 位,则先在字符串后填充0 到128 位,若超过128 位,则将多余的字符舍弃。之后按顺序分组,每组16 个字符,让这串字符作为初始值赋值给明文的每组8 个字符,例如:

假设明文为i,l,u,则在赋值时的字母顺序为iluabcdefghijklmnopqrstuvwxyz。1~26 分别代表a~z,并且明文部分要加上自己本身所代表的数字,非明文部分的字母不加本身数字,例如:

(11)将明文以8 个字符为一组分组,之后轮番填充26 个字母到64 位。在上述举例中,ilu 将填充为iluabc...xyzabc...xyzabcdefghi。

(12)以下将以一组8 个字符为例进行轮赋值,过程如下:

(13)赋值过程中的T1与T2是步骤(3)中的对称操作的后一位,此处为6。重新计算X和Y值,Z值保持不变。

重复步骤(4)至步骤(9),在步骤(9)的轮赋值中,位数将增长到512 位或1 024 位,位数不够则以0 补充,位数多则舍弃。第一轮的T1与T2为W1与W2,第二轮的T1与T2为W3与W4,以此类推。

(14)赋值过程中可能会出现如下这种情况:

W1=123,W2=931,T1=111,T2=871

而Wn=Wn+Tn,这步赋值会让W2变成4 位数,改变其原本的位数。笔者选用了16 进制,但在后续计算中仍然有进位,故将进上去的1 加在前一个字符串中,计算结果如下:

(15)重复一次步骤(4)至步骤(9),可以完成16 轮(512 位)或32 轮(1 024 位)。本文中一组明文字符的加密需要80 轮(512 位)或96 轮(1 024 位),故完成轮加密需要5 个(512 位)或3 个(1 024 位)对称操作。因此,在明文加密过程中,最多需要6 个对称操作,若选用的化学结构的对称操作总数h少于所需要的对称操作数,则某一个或某几个对称操作可以重复使用。

(16)将完成最后一轮加密的128 位字符串输出,这就是经过一系列加密操作所得到的一组8 字符密文。之后连续输出其余7 组密文字符串,并按明文顺序组成1 024 位密文字符串。最后输出密文的长度相等,密文的长度不受明文长度的影响。

(17)加密算法完成。

2.4 加密算法举例

给定Mr=208,相对分子质量为208 的有查尔酮、BaCl2、PCl5、C16H16、C15H28等,此处只象征性列举5 种化学物质。此次举例,选用的结构是3 号PCl5,其结构如图4 所示。

图4 PCl5 结构

PCl5的Mr应该为31+5×35.5=208.5,但在化学中有效数字修约规则遵循“四舍六入五成双”。该规则具体内容为:(1)被修约的数字小于5 时,数字舍去;(2)被修约的数字大于5 时,则进位;(3)被修约的数字等于5 时,要看5 前面的数字,若为奇数则进位,若为偶数则将5 舍去[15]。故208.5 可被修约为208。

PCl5分子的对称性如图5 所示。

图5 σh 平面图

图5 中,PCl5分子的中间有1 个三重轴c3(主轴),垂直于c3轴有1 个对称面σh,在这个面上有3 个垂直于c3轴的c2轴,3 个包含c3轴和c2轴的对称面σv,还有S3=σhc3和一共有12 个对称操作,属于D3h群[11],则有:

上述的c3轴为C1上C1下的连线;对称面σh为C11、C12、C13和P 构成的正三角形面(见图5);c2轴为图5 中的3 条高;σv为包含C1上C1下与C11的竖直面,这样的面一共有3 个。

表4 PCl5 5 号操作各原子坐标

图6 PCl5 5 号操作结构

故,初始字符串为:

接下来计算赋值时需要使用的替换加密字符串,即T1,T2,…

这时选择的是6 号操作c2´,分子结构变化如图7 所示。

图7 PCl56 号操作结构

故此时各原子坐标如表5 所示。

表5 PCl56 号操作各原子坐标

因此,轮加密替换字符为:

设明文为ilu,则一组明文的前两轮轮值如表6所示。

表6 明文ilu 的前两轮轮值

按照上述规则完成80 轮加密,通过计算,最终得到一个128 位的密文字符串,如下:

继而连续输出其余7 组字符串,构成1 024 位定长密文。

2.5 解密算法流程与举例

假设上述得到的128 位字符串为密文,即:

4A893EBACBF5695DB9BBF16F4F8092E397E1 A84A9598339904BCC30A539954AB

B9BEDC4CCEE1D26619A272F19A10CA83E42B 4309B19754AC04929FD86C0D4C42

(1)将1 024 位密文按顺序分为8 份,每份以16 个字符为一组,并按顺序赋值为C1,C2,…,C8。以下是一份密文的解密赋值算法:

(2)密文的一份字符串经过80 轮或96 轮解密赋值,之后得到初始赋值后的字符串:

(3)按之前所保管的私钥k=8×6.76×1021×1 000,计算初始值。然后按照16 个字符为一组分组,并与C1至C8比较,因有8 份密文串,故需要比较8 次。若其中值相等,则不是明文;若不相等,则进行如下计算:

对比得C1至C3不相等,故计算得:

(4)按顺序写出,即为明文,解密完成。最后得到明文ilu。

2.6 安全性检验

将上述明文更改为llu,仅改变第一位明文,用与上述加密过程相同的公钥与私钥进行加密。通过80 轮加密计算,得到128 位密文字符串,该字符串为:

将串2 与串1 比较。比较结果显示,其相似度为98.437 5%。很明显,这并不安全。但是本文中研究的这类算法并不是依靠固定的相对分子质量、化学式、化学结构、分子放大倍数、单元对称操作等对明文进行加密,其中的每个变量都可根据加密人的个人意愿随时更改。

故接下来仅改变上述单元对称操作的序号,即初始值选择的序号更改为6,赋值的操作序号则顺位变为7,明文依旧是ilu。接下来进行80 轮加密计算,验证更改某一变量,在明文不变的情况下,安全性是否增加。

初始值为:

经过80 轮加密计算,得到的密文为:

利用余弦相似度,1~F 每个字符的出现次数构成一个向量,即:

串1 为向量A=(7,7,7,9,12,5,5,3,6,17,10,13,10,4,7,6);

串4 为向量B=(9,7,9,12,10,6,6,8,7,2,9,7,12,6,9,9)。

由于:

得:

故串1 与串4 相似性大致为86%,与仅改变一个明文字符相比,安全性提高了大约12%。因此,可以大致认为,若改变更多的变量,那么安全性将会随之提高。

3 结语

本文给出了一种基于分子结构构造新密码算法的过程与方法。其中,本文构造的算法可以实现化学结构与密码学相结合,并且加密与解密共用一套相同的密钥系统。本文证明复杂的化学结构可以代替数学函数,成为新的设计方向。

然而,本文研究的创新性算法存在着完成一次加密,就需要更换一套加密系统的不足,这会极大地增加准备密钥库所需要的空间,并且计算量也较大。此外,本文目前只研究了定态的化学分子结构,而分子是在不停地做无规则运动,并且在进行有机合成时,生成物的结构可能会随着合成条件的改变而变化。这些性质又会在某种程度上增加保密的安全性,但也会提高此算法的复杂度。

未来的研究将会针对这些问题进行改进,并分析改进算法的安全性。

猜你喜欢

字符串明文公钥
基于文本挖掘的语词典研究
一种基于混沌的公钥加密方案
奇怪的处罚
HES:一种更小公钥的同态加密算法
奇怪的处罚
SM2椭圆曲线公钥密码算法综述
四部委明文反对垃圾焚烧低价竞争
基于格的公钥加密与证书基加密
一种新的基于对称性的字符串相似性处理算法
依据字符串匹配的中文分词模型研究