張翔 陸正福


摘? ?要:對于浮點數(雙精度數)計算中混沌映射存在著比較明顯的有限精度效應,文章設計了一種多精度計算方法,并使用多精度計算來進行混沌迭代運算,比較了精確混沌迭代和近似混沌迭代計算結果的差異。
關鍵詞:混沌映射;多精度計算;迭代
1? ? 混沌簡要介紹
1989年英國數學家Matthews提出混沌加密方法以來,混沌系統陸續被應用于保密通信領域?;煦缰阅軌虺蔀橐环N新的密碼體制,是因為有以下幾個適合作為密碼系統的特性:遍歷性、混合性、非周期性以及對初值的敏感依賴特性。
然而,由于實際計算中存在著有限精度效應,混沌序列在迭代過程中必將退化為周期序列且周期難以度量。此外,由于使用數值映射作為密碼流發生器,有限精度也限制了密鑰空間的大小。這使得混沌序列原本優良的性能大打折扣,難以抵御統計分析和參數重構等攻擊。
在這些方面有著許多的研究,Shujun等[1]中介紹了Baptista混沌密碼及其改進的方法,也指出Baptista混沌密碼及其改進的方法的缺陷和破解方法。周紅等[2-4]中為了提高混沌密碼的保密性,分別把m序列擾動實現,反饋控制,前饋型設計的思想在有限精度下實現。
上面所提到的論文雖然提高了混沌序列的周期,但是由于使用的精度不高,混沌序列的周期也不會超過一定值,所以增加精度才是解決有限精度所帶來影響的根本辦法。
本文提出了一種多精度計算方法,可以有效地提高精度,從而減少混沌映射中的有限精度效應。但是計算機中的空間和時間是有限的(尤其是時間),所以不可以無限制地提高精度。因此,本文提出了一種結合多精度計算生成混沌映射的方式,
2? ? 多精度數及其運算
本文中的程序是在Java平臺下實現的,在這里沒有使用Java程序中的BigDecimal類,而是使用了一種類似于科學計數法的方式來保存數并進行數的加減乘除運算。
2.1? 多精度數的儲存方式
本文中定義了一個類來表示數,該類是這樣定義的:
varNumber
{
byte value[];
int exponent;
byte type;
}
包括value[],exponent,type 3個元素,其中,value數組表示該數的每一位上的值,value[0]表示該數的最高位的值,value[1]表示該數的次高位的值,以此類推,value[len-1](len為value數組的長度)表示該數的最低位的值;在這里定義數的形式為(0.value)*(256^exponent),exponent表示指數;type用來標識數的類型,用0表示正實數,1表示負實數。
在這里使用了256進制,目的在于兩個方面:(1)可以充分利用存儲空間;(2)在把數轉化為二進制時在程序上容易實現。
本文中所定義的數不但可以表示實數,同樣可以用來表示其他類型的數。比如可以用type=2表示實部為正的純虛數,用type=3表示實部為負的純虛數。
最后在本文中定義數的標準形式為value數組的前后第一位均不為0。特殊的定義0為:
varNumber
{
value[0] = 0;
exponent = - 2147483648;
type = 0;
}
其中,-2147483648為Java中最小的整型數。
2.2? 多精度數的計算
本文中的多精度計算包括正實數范圍內的加減乘除計算,實數范圍內的加減乘除計算。
由于在Java程序中byte型數進行加減乘除運算的結果為int型數,因此,在中間計算時使用的數據類型是int型數,最后,再把結果轉化為byte型數。所以,本文中使用了byte數組的全空間來存儲數位的方式并不會在計算中造成數據溢出。
3? ? 混沌映射
3.1? Logistic映射
Logistic映射又被稱為蟲口問題,其映射形式為:
Xn+1=Xn(1-Xn),0 其中,1≤μ≤4,μ∈(0,4)稱為分形參數。當0<μ≤3時,迭代后的值為穩定不動點,μ逐漸增大,出現倍周期分岔現象,當3.569 945 972…<μ≤4時,系統工作于混沌狀態。此時所產生的序列{Xn,n=0,1,…}具有非周期、非收斂以及對初始值十分敏感等特性。 3.2? 分段線性映射 分段線性映射最常見的是帳篷映射和移位映射。帳篷映射的迭代公式如下: 其中,Xn,p∈(0,1)分別為系統的狀態和參數。 移位映射的迭代公式如下: Xn+1=aXn(mod1),Xn∈(0,1) 其中,Xn為系統的狀態,a>1為系統的參數。 4? ? 精確混沌迭代和近似混沌迭代的比較 本文選取Logistic映射進行研究,在Logistic映射中取參數μ=4,初值,x0在程序中表示為: varNumber { value[0]= 32; exponent=0; type=0 } 實驗步驟如下: (1)對該映射進行n次的迭代計算,并在迭代中保留小數的所有位數。
(2)對經過迭代計算得到的數進行取舍(四舍五入),保留其前10位,得到精確迭代計算的結果。
(3)把初值代入混沌映射中進行計算,得到x1的值,對x1的標準形式進行取舍,在byte數組中只保留前10位(不足10位的全部保留)。
(4)按照(3)的方法計算x2,x3,…xn,xn為近似迭代計算的結果。
(5)對精確迭代計算的結果和近似迭代計算的結果進行比較。
5? ? 實驗結果和總結
在實驗中分別取迭代次數n為10,15,20次,并進行比較,比較結果如表1所示。
從表1可知,在迭代次數不高的時候,精確混沌迭代和近似混沌迭代的結果差別不大,但是不同的位數增加了。在無法在精確計算的條件下進行高次迭代(比如300次)時,可以推斷只要迭代次數足夠,近似計算所產生的擾動對混沌映射有很大的影響。
[參考文獻]
[1]SHUJUN L,GUANRONG C,KWOK-WO W,et al.Baptista-type chaotic cryptosystems problems and countermeasures[J].Physics Letters,2004(338):368-375.
[2]周紅,凌燮亭.有限精度混沌系統的m序列擾動實現[J].電子學報,1997(7):95-97.
[3]周紅,羅杰,凌燮亭.混沌非線性反饋密碼序列的理論設計和有限精度實現[J].電子學報,1997(10):57-60.
[4]周紅,俞軍,凌燮亭.混沌前饋型流密碼的設計[J].電子學報,1998(1):98-101.
Comparison of exact chaos iteration and approximation chaos iteration
Zhang Xiang1, 2, Lu Zhengfu2
(1.Puer University, Puer 665000, China; 2.Department of Mathematics, Yunnan University, Kunming 650091, China)
Abstract:There are some problem in chaos because of finite precison. It is obvious when calculating chaos by floating-point numbers(double precision number). This paper presents a more accurate method(multi-precision arithmetic)and calculate chaos by this method, comparing the result between in exact chaos iteration and approximation chaos iteration.
Key words:chaos; multi-precision arithmetic; iteration