摘? 要: 本算法通過加密因子對(duì)數(shù)據(jù)進(jìn)行運(yùn)算,改變數(shù)據(jù)形態(tài),實(shí)現(xiàn)加密。本文闡述了算法的加密原理和加密因子的生成原理,并分析了算法的復(fù)雜度以及難以破解性。根據(jù)本算法編寫的程序,經(jīng)過大量實(shí)驗(yàn),證明了算法的可行性。
關(guān)鍵詞: 算法;數(shù)據(jù)加密;本原多項(xiàng)式;m序列;加密因子;非線性變換;周期長(zhǎng)度
中圖分類號(hào): TP309.2? ? 文獻(xiàn)標(biāo)識(shí)碼: A? ? DOI:10.3969/j.issn.1003-6970.2020.10.031
本文著錄格式:張國(guó)慶. ZGQ數(shù)據(jù)加密算法[J]. 軟件,2020,41(10):129131
【Abstract】: This algorithm operates on data through encryption factors, changes the data form, and implements encryption. This article explains the encryption principle of the algorithm and the generation principle of the encryption factor, and analyzes the complexity and difficulty of the algorithm. The program written according to this algorithm, after a lot of experiments, proved the feasibility of the algorithm.
【Key words】: Algorithm; Data encryption; Primitive polynomial; M-sequence; Encryption factor; Nonlinear transformation; Period length
0? 引言
為了保護(hù)信息安全,目前我們能夠采取的手段一般就是口令認(rèn)證方式。這種方式存在很多弱點(diǎn),(1)有后門。經(jīng)常有這樣的情況,不需要輸入口令即可付款,說明可以繞過口令直接通過后門進(jìn)入我們的體系; (2)簡(jiǎn)單破解。由于賬號(hào)口令設(shè)置簡(jiǎn)單而被進(jìn)入的情況屢見不鮮,即便是復(fù)雜一些的口令,也不能確保信息安全,比如我們經(jīng)常使用的六位數(shù)字口令密碼,其窮盡量?jī)H為106=100萬次,這個(gè)數(shù)量級(jí)對(duì)于現(xiàn)代計(jì)算機(jī)來說,完全不在話下,相信有很多破譯軟件可以輕易破解;(3)無意泄密。口令很方便,也很隨意,但是無意中已被周圍的人所知,這一點(diǎn)也使我們無法確保信息安全。凡此種種我們期待有更好的加密方式出現(xiàn),本人獨(dú)立研發(fā)的“ZGQ數(shù)據(jù)加密算法”,就是一款可以確保信息安全的加密算法。
以下的介紹涉及到一些數(shù)學(xué)知識(shí),因篇幅所限,本文只引用結(jié)論,不做具體闡述,感興趣者可查閱相關(guān)資料,特此說明。
1? 形象描述
“ZGQ數(shù)據(jù)加密算法”顧名思義,就是對(duì)數(shù)據(jù)進(jìn)行加密。與口令方式的不同點(diǎn)在于,口令是將數(shù)據(jù)存放在一個(gè)受保護(hù)的地方,憑借口令才能獲取數(shù)據(jù)。而本算法加密后的數(shù)據(jù)改變了原有的形態(tài),只有通過相應(yīng)的解密軟件才能使其還原成本來的樣子。如果沒有解密軟件,唯一的辦法就是破解其算法。
后面的分析我們將看到,這個(gè)算法是非常難以破解的。
2? 數(shù)據(jù)加密算法原理
眾所周知,隨機(jī)序列是不可破解的?;诖吮舅惴ㄖ荚诶媒o定的生成邏輯構(gòu)造一條隨機(jī)序列或準(zhǔn)隨機(jī)序列,并用這條序列作為加密因子,對(duì)數(shù)據(jù)(文件)的二進(jìn)制信息進(jìn)行運(yùn)算,達(dá)到加密的目的。
本算法由兩部分組成,一是加密方式,二是加密因子生成邏輯。
2.1? 加密方式
首先引入三個(gè)概念:明文,密文,加密因子
明文:要加密的數(shù)據(jù)文件
密文:加密后的結(jié)果
加密因子:對(duì)明文進(jìn)行加密的元素
加密公式: 加密因子-明文=密文
解密公式: 加密因子-密文=明文
為了直觀起見,以十進(jìn)制數(shù)進(jìn)行mod10運(yùn)算,舉例如下:
加密因子:3209773581
明文:1234567890
則密文:3209773581-1234567890=2075216791
解密:3209773581-2075216791=1234567890
加密后,非法訪客只能看到2075216791,如果他想得到明文1234567890,只有破解加密因子的生成邏輯以及獲取相應(yīng)的加密軟件才行。
2.2? 加密因子生成邏輯
一個(gè)n級(jí)線性反饋移位寄存器(LFSR)[1]可以產(chǎn)生一條01序列,這條序列的周期[2]長(zhǎng)度是2n–1或2n–1的因子,當(dāng)其周期為2n–1時(shí),這條序列稱作m序列[3]。LFSR的數(shù)學(xué)模型就是建立在GF(2)上的多項(xiàng)式理論,m序列與GF(2)上的本原多項(xiàng)式[4](一個(gè)n次本原多項(xiàng)式是指周期長(zhǎng)度為2n–1的不可約多項(xiàng)式)是一一對(duì)應(yīng)的,理論界對(duì)GF(2)上本原多項(xiàng)式的研究已經(jīng)非常透徹,其結(jié)論完全適用m序列,在此不再贅述。研究結(jié)論表明,盡管m序列有很好的統(tǒng)計(jì)特性,很長(zhǎng)的反復(fù)周期,但是,由于其內(nèi)在的線性生成規(guī)律,極易被破解,因此,被稱作偽隨機(jī)序列。加密因子生成邏輯的重點(diǎn)就是破壞其偽隨機(jī)性特點(diǎn)。
(1)首先需要有一個(gè)n次本原多項(xiàng)式,并生成一條周期長(zhǎng)度為p1=2n–1的m序列。
比如:令n=31,查表得到本原多項(xiàng)式
(2)其次需要構(gòu)造一條隨機(jī)序列或準(zhǔn)隨機(jī)序列
然后用H對(duì)m序列進(jìn)行重新組合,破壞其線性特點(diǎn),得到一條周期為
的隨機(jī)序列或準(zhǔn)隨機(jī)序列S,進(jìn)行截取,就是所要的加密因子序列。由于對(duì)m序列進(jìn)行了非線性變換,破壞了其線性規(guī)律,因此,序列S可以看做隨機(jī)序列或準(zhǔn)隨機(jī)序列。
非線性序列H的構(gòu)造方法有很多,舉例如下。
1)手寫法就是根據(jù)某種規(guī)則,人工寫出一串?dāng)?shù)字,并以此作為非線性序列H。這種方法原始,但無規(guī)律可乘,因此也是最安全的隨機(jī)序列,缺點(diǎn)是不便于大量生成。例如:
2)機(jī)器生成法給定一個(gè)生成邏輯讓機(jī)器生成H。比如以混同余算法為基礎(chǔ)生成一條混同余序列,然后再進(jìn)行一次模處理,變成一條非線性序列,這種方法的好處是不依賴人工,便于大量生成,缺點(diǎn)是有一定規(guī)律可乘,考慮到其對(duì)m序列的破壞,這種規(guī)律很難以被利用,不失為一種選擇,其產(chǎn)生的序列可以看做準(zhǔn)隨機(jī)序列。例如:
這就是我們要的非線性序列H。
(3)關(guān)于截取
由于m序列很長(zhǎng),變換后的S更長(zhǎng),因此,不可能也沒必要完全生成后再進(jìn)行截取。采用密鑰控制,不同的密鑰代表從不同的起點(diǎn)開始,生成足夠多的比特,以此實(shí)現(xiàn)把序列S截取為若干段互不相同的Si的目的。
說明:有關(guān)本原多項(xiàng)式和m序列方面的知識(shí),網(wǎng)上很多,有興趣者可自行查閱相關(guān)內(nèi)容,在此只引用結(jié)論,不做具體闡述。
3? 算法的復(fù)雜度分析
加密算法的復(fù)雜度決定了破解難度,一般取決于下列幾個(gè)因素。
3.1? 生成因素的隨機(jī)性
隨機(jī)性是復(fù)雜度的主要考察因素。破解的目的就是找出并利用其規(guī)律。人工手寫的序列是隨機(jī)的,無規(guī)律可循,是無法破解的。但是人工無法大量手寫,因此往往是采用一些復(fù)雜的變換由機(jī)器生成,這種變換五花八門,其復(fù)雜度也是無法考量的。
一般認(rèn)為,隨機(jī)序列是復(fù)雜度最高的序列,而一條非隨機(jī)序列與隨機(jī)序列(或準(zhǔn)隨機(jī)序列)相結(jié)合的產(chǎn)物就是隨機(jī)序列(或準(zhǔn)隨機(jī)序列)?;谶@個(gè)共識(shí),本算法提出了人為構(gòu)造一條較短的隨機(jī)序列或準(zhǔn)隨機(jī)序列,控制偽隨機(jī)序列m進(jìn)行變換,破壞其規(guī)律,得到加密因子序列Si。
因?yàn)檫@種變換是有隨機(jī)或準(zhǔn)隨機(jī)因素參與的,因此加密因子序列也可以看做是隨機(jī)序列或準(zhǔn)隨機(jī)序列,所以這種變換保證了其足夠的復(fù)雜度。
3.2? S序列周期長(zhǎng)度
加密因子序列的周期長(zhǎng)度,也是考察復(fù)雜度的一個(gè)因素。以本人編寫的“本原加密軟件”為例進(jìn)行說明。
選用的多項(xiàng)式是31級(jí)(次),其產(chǎn)生的m序列長(zhǎng)度為p1=231–1=2147483647
這是一個(gè)梅森素?cái)?shù)[5](梅森素?cái)?shù)Mn是指形如2n–1的素?cái)?shù))人工構(gòu)造的非線性序列H周期
p2=1057(這個(gè)長(zhǎng)度是由具體序列H的元素ai決定的),
因?yàn)椋╬1,p2)=1,即p1, p2互素,因此加密因子序列S的周期為
p=p1*p2,
也就是說,加密因子序列S的周期p是2147483647的1057倍,這是一個(gè)天文數(shù)字,完全可以滿足復(fù)雜度對(duì)周期長(zhǎng)度的要求。
3.3? 生成因素變化量
加密因子序列生成因素的變化量,是復(fù)雜度的另一個(gè)考察因素。前面說過,生成因素有2個(gè),即非線性控制序列H和線性m序列。
首先僅考慮31級(jí)的m序列就有69273666個(gè),這個(gè)數(shù)字已經(jīng)足夠大,更何況還有其他級(jí)數(shù)的m序列 (已知的有足夠級(jí)數(shù)的m序列并非無限)。
其次非線性變換序列可以任意給出,因此是無限的。兩者結(jié)合其變化量也是無限的,遠(yuǎn)遠(yuǎn)超過復(fù)雜度的要求。
綜上所述,算法的復(fù)雜度無論對(duì)于商用還是民用,都是足夠的。也就是說,本算法對(duì)于目前已知的各種攻擊手段比如黑客,病毒,盜竊,非法破譯等等,有足夠的抗攻擊能力。
4? 實(shí)驗(yàn)結(jié)果
經(jīng)過多年的潛心研究,本人獨(dú)立研發(fā)了“ZGQ數(shù)據(jù)加密算法”,并編寫了應(yīng)用程序“本原加密軟件”,在國(guó)家版權(quán)局的注冊(cè)登記號(hào)為2008SR25184。
事實(shí)上,這個(gè)算法構(gòu)成了一個(gè)加密體系,而由算法派生的這個(gè)軟件可以看做是一個(gè)密碼體系(裝置)的軟件化實(shí)現(xiàn)。
生成軟件按照給定的密鑰生成足夠長(zhǎng)度的加密因子序列Si;加密軟件利用Si對(duì)明文(或密文)的比特流(不考慮其文件格式)進(jìn)行加密(或解密),因此任意格式的文件均可加密(解密);文件超長(zhǎng)時(shí),則循環(huán)利用Si進(jìn)行加密。生成軟件生成的加密因子序列Si是互不相同的,確保一人一密。
經(jīng)過對(duì)word,excel,視頻,圖片,dll,exe,bmp等各種文件格式的大量實(shí)驗(yàn),證明了本原加密軟件可以對(duì)任意格式,任意長(zhǎng)度的文件進(jìn)行加密。且無需設(shè)置口令,無需安裝,一人一密,安全可靠,完全實(shí)現(xiàn)了算法提出的要求。
5? 結(jié)束語(yǔ)
本算法是一項(xiàng)核心技術(shù),擁有完全獨(dú)立的自主知識(shí)產(chǎn)權(quán)。具有以下特點(diǎn):(1)幾乎不可破解的安全性;(2)因?yàn)槭菍?duì)數(shù)據(jù)本體進(jìn)行加密,因此沒有后門;? (3)可對(duì)各種類型數(shù)據(jù)進(jìn)行加密;(4)加密因子序列是唯一的且互不相同,保證了加密結(jié)果的安全性。
“本原加密軟件”是算法的具體實(shí)現(xiàn),大量實(shí)驗(yàn)證明了算法的可行性。本算法顛覆了我們對(duì)加密的認(rèn)識(shí),填補(bǔ)了民用加密方式的一項(xiàng)空白,為信息安全提供了一個(gè)可靠選項(xiàng)。
國(guó)家的強(qiáng)大離不開企業(yè)的發(fā)展,企業(yè)的發(fā)展離不開科學(xué)技術(shù)和自主核心技術(shù)的開發(fā)和保護(hù)。本算法有能力為企業(yè)的信息安全保駕護(hù)航。
參考文獻(xiàn)
[1]楊鶴. 一種可重構(gòu)線性反饋移位寄存器設(shè)計(jì)[J]. 通信技術(shù), 2010(8): 172-174.
[2]何士元. m序列與其一類短周期Niho型采樣序列的互相關(guān)性研究[D]. 中南民族大學(xué), 2019.
[3]林智慧, 陳綏陽(yáng), 王元一. m序列及其在通信中的應(yīng)用[J]. 現(xiàn)代電子技術(shù), 2009, 32(9): 49-51+55.
[4]呂輝, 何晶, 王剛. 偽隨機(jī)序列中本原多項(xiàng)式生成算法[J]. 計(jì)算機(jī)工程, 2004(16): 108-109+165.
[5]趙云. 梅森素?cái)?shù)探究永不休[J]. 科學(xué)世界, 2018(4): 128- 129.
[6]尹曉琦, 殷奎喜, 李中惠, 等. 偽隨機(jī)序列及其在通信加密中的應(yīng)用[J]. 現(xiàn)代電子技術(shù), 2005(19): 42-44.
[7]李澤帥. 偽隨機(jī)序列設(shè)計(jì)及其隨機(jī)性分析[D]. 電子科技大學(xué), 2019.
[8]本原多項(xiàng)式表(64)[OL] https://wenku.baidu.com/view/b7300 87611661ed9ad51f01dc281e53a5802510f.html.