張啟超
(內蒙古工業大學,內蒙古 呼和浩特 010051)
在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]。
隨著現代通信網絡技術的發展,云計算、人工智能等技術相繼出現在大眾視野中,其中最受關注的是針對個人隱私的保密技術。而現有的密碼算法越來越不安全,已經影響到了部分人的安全隱私,設計新的密碼算法勢在必行。同時最近的俄烏戰爭,也變相推動了國家安全和軍事對新的密碼算法的需求。
在古代軍事戰爭中,將領傳遞消息會使用“無字天書”,在古代科舉考試中,這種“高科技”作弊手法還一度成為古代作弊手段的巔峰,他們利用了一系列化學反應,達成了隱藏軍事機密和小抄的目的。這類化學品在當時被稱作“隱形墨水”。這類方法在當時可謂風靡一時。放在科技發達的今天,其效用卻被極大地削弱了。雖然現在的密碼學設計不會使用這樣的方法,但是借助化學知識來開展密碼設計為后世研究學者創造了一個新的研究領域。
由于破譯者可能不了解化學分子結構或者量子化學基礎知識,獲取新的知識體系需要較長的時間,因此,筆者認為,如果運用化學分子結構的復雜性與多變性對明文進行加密,并輔以數學函數與量子力學,能夠在一定程度上降低密文被破譯的風險。
綜上所述,可以將化學應用到密碼學當中,并創造出新的密碼編碼方式。
令群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,定義對稱操作字母表示,以水分子(H2O)為例。

圖1 水分子的結構
如圖1 所示,整個水分子在yz平面,有一個對稱面σv,為xz平面。與此同時,存在一個鏡面反映動作σv。
有一個對稱軸c2,也就是z軸,即分子繞z軸轉動180°復原,此對稱操作也可用C2表示,若轉動120°可以復原,那么這個操作就記為C3。還有一個對稱操作是不動,記為E。
水分子的對稱操作的乘積如表2 所示

表2 水分子的對稱操作乘積
表3 給出了點群Schonflies 的字母符號。

表3 點群Schonflies 字母符號
表3 中,Dnh是Dn和C1h的直接乘積,Cnh與Cnv的構造也一樣,則有[11]:

在量子力學中,微觀粒子既有粒子性又有波動性,常用波函數[11]來表示,具體為:

在有機化學、高分子化學或者結構化學中,連接不同原子的化學鍵不同,并且相同原子之間的成鍵規則與分子中化學環境也不同,連接兩個或多個原子所產生的力也不同,故鍵長也有所區別。且鍵長與原子的最外層電子排布、誘導效應,以及軌道雜化、原子半徑等有關[12]。
此外,余弦相似度指通過測量兩個向量的夾角的余弦值來度量它們之間的相似性。余弦值越接近1,則兩向量越相似[13]。
任意一個分子M包含N個原子,R 為分子所屬點群包含的任一個對稱操作,它把分子體系變到另一個等價構型,用x1,y1,z1;x2,y2,z2;…;xN,yN,zN表示分子中各原子原來的坐標,用表示經R 作用后分子中各原子的坐標,即[11]。
本文所提方法的基本公式為:

式中: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的取值,都是由私人保管。
加密算法的流程如下:
(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)加密算法完成。
給定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 位定長密文。
假設上述得到的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。
將上述明文更改為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%。因此,可以大致認為,若改變更多的變量,那么安全性將會隨之提高。
本文給出了一種基于分子結構構造新密碼算法的過程與方法。其中,本文構造的算法可以實現化學結構與密碼學相結合,并且加密與解密共用一套相同的密鑰系統。本文證明復雜的化學結構可以代替數學函數,成為新的設計方向。
然而,本文研究的創新性算法存在著完成一次加密,就需要更換一套加密系統的不足,這會極大地增加準備密鑰庫所需要的空間,并且計算量也較大。此外,本文目前只研究了定態的化學分子結構,而分子是在不停地做無規則運動,并且在進行有機合成時,生成物的結構可能會隨著合成條件的改變而變化。這些性質又會在某種程度上增加保密的安全性,但也會提高此算法的復雜度。
未來的研究將會針對這些問題進行改進,并分析改進算法的安全性。