循環(huán)小數(shù)在序列加密中的應(yīng)用

序列加密是用數(shù)字密碼對數(shù)字信息序列逐個比特進(jìn)行加密的體制。這種加密體制算法簡單,保密性好,是目前常用的一種加密體制。下面我就給大家介紹一種一種采用循環(huán)小數(shù)來生成密碼序列,它具有算法簡單、序列多變、保密性好、抗破譯能力強(qiáng)等特點(diǎn)。

一、序列加密的基本原理

序列加密是對數(shù)字信息序列進(jìn)行加密的,我們把加密前的數(shù)字信息序列叫做明文,把加密后的數(shù)字信息序列叫做密文,把加密時用的密碼序列叫做密碼。于是加密過程就可由以下表達(dá)式給出:

明文序列:P0,P1,P2,P3.....Pn

密碼序列:C0,C1,C2,C3.....Cr(r≥n)

密文序列:So,S1,S2,S3……、Sn

這里有關(guān)系式:

Si=Pi+Ci(i=0、1、2、……n)

其中+表示可以是代數(shù)運(yùn)算也可以是邏輯運(yùn)算。上述關(guān)系式反映了序列加密的基本原理。

破譯攻擊者需要知道的是明文序列一Pi(i=0,1,2,……,n).

但明文序列是不公開發(fā)送的,而公開發(fā)送的只能是密文序列Si=(i=0,1,2,...n),故破譯攻擊者直接截獲的只能是密文序列。要想通過已截獲的密文序列來獲取所需要的明文序列,就必須千方百計地獲得密碼序列Ci=(i=1,2,...r)。因此破譯攻擊者就要采用各種破譯分析手段去獲取密碼序列。由此可見,密碼序列的構(gòu)成是保密性能優(yōu)劣的關(guān)鍵。為了保證密碼序列的保密性能,密碼設(shè)計者必須滿足以下三條基本要求:

1、密碼空間必須足夠廣闊。

2、密碼構(gòu)造必須足夠復(fù)雜。

3、密碼更換必須足夠頻繁。

這三條非常重要。因?yàn)槊艽a空間越廣闊,窮舉攻擊越困難密碼構(gòu)造越復(fù)雜,技術(shù)破譯越不易密碼更換越頻繁,破譯者就難以找出密碼的規(guī)律。

二、有關(guān)循環(huán)小數(shù)的幾個定理

前面提到過,密碼序列可以用各種方式來生成,例如利用某一隨機(jī)數(shù)列、某一函數(shù)、某一多次用余式等等。本文介紹一種利用循環(huán)小數(shù)來生成密碼序列。為了對循環(huán)小數(shù)的性質(zhì)有一個明確的概念,首先給出了有關(guān)循環(huán)小數(shù)的幾個定理:

定理1十進(jìn)制中任意質(zhì)數(shù)P(10),換算成r進(jìn)制數(shù)P(r)后,則P(r)在r進(jìn)制中仍然是質(zhì)數(shù)。

定理2在r進(jìn)制中,a/b (a<b)能化成純循環(huán)小數(shù)的必要和充分條件是在分母b內(nèi)根本不含r的因數(shù)。

定理3在r進(jìn)制中,若(b.r)=1,則a/b(a<b)化成小數(shù)后,其循環(huán)節(jié)的位數(shù)等h的必要和充分條件是h能使rh三l (mod b)成立的最小正整數(shù)。

定理4在r進(jìn)制中,若r是質(zhì)數(shù)P的一個元根,則以P為分母的真分?jǐn)?shù)化成小數(shù)后,其循環(huán)節(jié)位數(shù)是h=φ(P) =P-1;否則是h一①(P)——g,而glq> cP)。

其中①(P)是數(shù)論中的Euler函數(shù)。

定理5若P為質(zhì)數(shù),h是使rh-l (mod p)的最小正整數(shù)。k是使rh—l (mod pk)的最大正整數(shù),則以Pa為分母的既約真分?jǐn)?shù)的循環(huán)節(jié)的位數(shù)為:

h.當(dāng)Q≤k時;

hPa-k,當(dāng)a>k時。

定理6 若b的標(biāo)準(zhǔn)分解式為b—P{-P2z……P備,則以b為分母的既約真分?jǐn)?shù)化成r進(jìn)制的小數(shù)后,其循環(huán)節(jié)的位數(shù)是:

h={hi.h2,h3,……,h。)

其中h.是滿足rh1=l (mod P})的最小正整數(shù)(i=1,2,3.……,n)。

根據(jù)上述定理可知,在十進(jìn)制中除2和5兩個質(zhì)數(shù)外,以任意一個質(zhì)數(shù)(包括它的冪)作分母的真分?jǐn)?shù)以及任意幾個質(zhì)數(shù)的積(包括它們冪的積)作分母的既約真分?jǐn)?shù)都可以化成純循環(huán)小數(shù)。另外,以質(zhì)數(shù)P為分母的真分?jǐn)?shù)化成循環(huán)小數(shù)后,共可獲得P-l種循環(huán)小數(shù)序 列即1/P,2/P.……,(P-I)/P。這樣就滿足了第一條要求:密碼空間必須足夠廣闊。

用循環(huán)小數(shù)來生成密碼序列,其構(gòu)造是多變的,因?yàn)樗\(yùn)算簡便,可以做到每發(fā)送一則信息,更換一個密碼序列,而不象隨機(jī)密碼序列那樣,必須存儲在存儲器中,應(yīng)用一段時間后再更換。這樣就滿足了第一條和第三條要求密碼構(gòu)造必須足夠復(fù)雜和密碼更換必須足夠頻繁。

三、以循環(huán)小數(shù)來生成密碼序列

根據(jù)上述六個有關(guān)循環(huán)小數(shù)的定理,我們可以適當(dāng)選擇真分?jǐn)?shù),來生成任意長度的密碼序列。為了簡明扼要,我們以3/113為例來生成電報通訊的密碼序列。

為了提高計算速度,我們給出了使計算機(jī)每做一次除法便可求出4位商的、用BASIC語言編寫的、在PC-1500計算機(jī)上實(shí)現(xiàn)了的計算程序:

10 : P=113 : Q=3 : R=IE4 :
LPRINT k3/113=";
20 : FOR I=O T0 28
30 : T—INT (Q * R/P)
40 : IF I=o LET B=T/R :
GOT0 60
50 : B=T
60 : s=o *R-T *P
70 : o—s
80 : LPRINT B
90 : NEXT I
IOO : ENiD
計算打印結(jié)果 :
3/113=0. 0265
4867 _2566 _3716 _81-tl
5929 _2035 _3982 _3008
8495 _5752 _2123 _8938
0530 _9734 _5132 _7433
6283 _1858 _1070 _7964
6017 _6991 _1504 _4217
7876 _1061 _9469 _0256

這個電報通信密碼序列長度只有28個漢字,只作為簡要例子而已。如果需要較長的密碼序列周期,可選用較大的質(zhì)數(shù),例如選擇質(zhì)數(shù)99901作分母,它的循環(huán)節(jié)位數(shù)有99900位。
還可根據(jù)定理5選擇113s—1442897作分母,其循環(huán)節(jié)位數(shù)是1430028。若以它作為電報通信的密碼序列,其序列周期長度為357507個漢字.足夠?qū)σ徊块L篇小說稿件進(jìn)行加密了。若
序列周期還不夠長,可以綜合運(yùn)用上述各個定理。使循環(huán)節(jié)位數(shù)根據(jù)需要任意加長。

此種方法也可以生成二進(jìn)制密碼序列,用于數(shù)據(jù)通訊和數(shù)字通訊,也可用于數(shù)據(jù)俘儲保密。將十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制密碼序列有多種方法,現(xiàn)舉出以下三種:

第一種方法是將十進(jìn)制的循環(huán)小數(shù)逐位轉(zhuǎn)換成二進(jìn)制數(shù)。

例如 _ 3/113=o.0265 4867 2566……,進(jìn)行逐位轉(zhuǎn)換有:0=0000.2= 0010,6=—0110, 5= 0101,4=0100, 8= 1000,6-0110,7= 0111.……;

第二種方法是多位進(jìn)行轉(zhuǎn)換,即每次取若干位數(shù),將其轉(zhuǎn)換成二進(jìn)制數(shù)。

例如:3/113=0. 0265 4867 2566-----,進(jìn)行4位轉(zhuǎn)換有0265- 100001001, 4867—1001100000011,……;

第三種方法是直接將3/113中的分子分母分別轉(zhuǎn)換成二進(jìn)制11/1110001,然后直接求商。

采用多種十進(jìn)制和二進(jìn)制轉(zhuǎn)換方式可以增強(qiáng)密文的抗破譯能力。

四、抗破譯能力的初步分析

從上面談到的利用循環(huán)小數(shù)生成的密碼序列具備了保密的三個條件:

1、由于質(zhì)數(shù)是無限的,加之其積和冪,其密碼空間是足夠廣闊的。

2、由于不同的分?jǐn)?shù),其循環(huán)小數(shù)的序列是截然不同的,相同的分母而分子不同的分?jǐn)?shù),其循環(huán)小數(shù)的序列也是不同的。

例如:

1/113=0.0088 4955 7513-----
2/113=0.0176 9911 5044-----
3/113=0. 0265 4867 2566-----

再加上各種不同的轉(zhuǎn)換運(yùn)算方法,采用此方法生成的密碼序列千變?nèi)f化,足夠復(fù)雜。

3、由于此方法計算簡捷,故可做到實(shí)時更換密碼序列,甚至容易做到每發(fā)一條信息更換一次,使破譯者無規(guī)律可循。

此方法勿需將許多密碼序列存入存儲器,只需通訊雙方具有相同的循環(huán)小數(shù)的計算程序和加解密碼的運(yùn)算程序,并在保密通訊前,將所選取的分子、分母及加解密的運(yùn)算方式等用十分機(jī)密代碼——即一種密鑰,及時通知對方即可。此方法若能與其它保密方法混合使用,就會更能增加其通訊保密的可靠性。

小知識之加密體制

加密體制也叫密碼系統(tǒng),是指能完整地解決信息安全中的機(jī)密性、數(shù)據(jù)完整性、認(rèn)證、身份識別、可控性及不可抵賴性等問題中的一個或幾個的一個系統(tǒng)。對一個密碼體制的正確描述,需要用數(shù)學(xué)方法清楚地描述其中的各種對象、參數(shù)、解決問題所使用的算法等。