matlab拉丁方,基于拉丁方的流密码算法设计与仿真
1. 引言
眾所周知,加密算法是密碼學(xué)的基礎(chǔ)知識,是保護信息安全的一種基本方法,其中的流密碼算法具有加解密速度快和安全性高等優(yōu)點,因而在信息安全領(lǐng)域有著廣泛應(yīng)用。參照最近建立的完善保密系統(tǒng)一般模型,流密碼算法的關(guān)鍵是基本密碼系統(tǒng)和密鑰流序列的設(shè)計。由文獻 [1] [2] [3] [4] [5] 可知,當(dāng)前常見的模2加法流密碼算法的基本密碼系統(tǒng)是由二元加法設(shè)計的,該運算過于簡單,不利于設(shè)計出性能優(yōu)良的流密碼算法。最近,文獻 [6] 利用了比模2加法更復(fù)雜的4階拉丁方運算來設(shè)計基本密碼系統(tǒng),為流密碼算法設(shè)計指明了一條新的設(shè)計路線。同時,文獻 [7] [8] 也相繼研究了16階拉丁方構(gòu)造基本密碼系統(tǒng)的方法。由于拉丁方的數(shù)量會隨著階數(shù)的增加呈指數(shù)式增加,因此,文獻 [6] [7] [8] 所能構(gòu)造的拉丁方及其基本密碼系統(tǒng)是十分有限的,還有許多問題值得進一步研究。當(dāng)前,基于拉丁方設(shè)計基本密碼系統(tǒng)的研究還未充分展開,它們在流密碼算法設(shè)計中的應(yīng)用還很狹窄。為了進一步推廣二元加法流密碼算法的設(shè)計方法,本文將給出一種任意有限階拉丁方及其基本密碼系統(tǒng)構(gòu)造的新方法,并結(jié)合常見的Logistic離散混沌設(shè)計一種新的流密碼算法。
2. 一些基本概念
參照現(xiàn)有密碼學(xué)文獻,流密碼算法的基本步驟為:1) 設(shè)明文序列為
m
=
m
0
m
1
m
2
? ;2) 利用密鑰k和密鑰流發(fā)生器產(chǎn)生一個密鑰流序列
z
=
k
0
k
1
k
2
? ;3) 利用加密變換E逐個加密明文得到密文
c
=
c
0
c
1
c
2
?,其中,
c
j
=
E
(
k
j
,
m
j
),對任意
j
=
0
,
1
,
2
,
? ;4) 利用解密變換D將c依次解密恢復(fù)出明文序列
m
=
D
(
k
0
,
c
0
)
D
(
k
1
,
c
1
)
D
(
k
2
,
c
2
)
?。
由文獻 [6] 知,在常見的二元流密碼算法中,加解密變換E和D都是模2加法。由于基本明文空間和密文空間
Z
2
=
{
0
,
1
} 元素很少,因而所能設(shè)計的基本密鑰變換和基本密碼系統(tǒng)都很簡單,且數(shù)量很少 [6]。為了改進這種常見的模2加法的基本加密方式,文獻 [7] [8] 分別研究了單個16階拉丁方構(gòu)造基本密碼系統(tǒng)的設(shè)計方法,但所構(gòu)造的基本密碼系統(tǒng)類型仍然有限。本文將研究新的高階拉丁方及其相應(yīng)的基本密碼系統(tǒng)的設(shè)計方法。
定義2.1 設(shè)n階方陣
A
=
(
a
i
j
)
n
×
n,
n
∈
{
2
,
3
,
4
,
?
} 滿足
a
i
j
∈
{
0
,
1
,
?
,
n
?
1
}。如果
Z
n
=
{
0
,
1
,
2
,
?
,
n
?
1
} 上所有不同的數(shù)字在n階方陣A的每行和每列中都出現(xiàn),則稱A為n階拉丁方。
由于基本密碼系統(tǒng)取決于選取的拉丁方,因此需要研究拉丁方的構(gòu)造方法。考慮到同一個整數(shù)都能利用十進制和二進制兩種不同形式加以表示,為了便于表述,下面將十進制整數(shù)集
Z
2
t
=
{
0
,
1
,
?
,
2
t
?
1
} 和二進制數(shù)集
Z
2
t
=
{
0
?
00
,
0
?
01
,
1
?
11
} 不加區(qū)別,且把它們對應(yīng)相等的數(shù)也不加區(qū)別。
定理2.1 設(shè)
n
=
2
t。在
Z
n
=
Z
2
t 上定義變換或函數(shù):對任一
m
=
m
1
m
2
m
3
?
m
t
∈
Z
n,
m
j
∈
Z
2,對任一
j
=
1
,
2
,
?
,
t,定義
f
0
(
m
)
=
m
t
m
t
?
1
?
m
2
m
1,
f
1
(
m
)
=
m
t
m
t
?
1
?
m
2
m
ˉ
1,
f
2
(
m
)
=
m
t
m
t
?
1
?
m
ˉ
2
m
1,
?,
f
n
?
1
(
m
)
=
m
ˉ
t
m
ˉ
t
?
1
?
m
ˉ
2
m
ˉ
1。記
A
=
(
a
i
j
)
n
×
n
=
(
f
0
(
0
)
f
0
(
1
)
?
f
0
(
n
?
1
)
f
1
(
0
)
f
1
(
1
)
?
f
1
(
n
?
1
)
?
?
?
?
f
n
?
1
(
0
)
f
n
?
1
(
1
)
?
f
n
?
1
(
n
?
1
)
)
則
A
=
(
a
i
j
)
n
×
n 是一個n階拉丁方。
證明:當(dāng)
m
=
m
1
m
2
m
3
?
m
t
∈
Z
n 依次取遍
0
,
1
,
?
,
n
?
1 時,對于固定的
j
=
0
,
1
,
?
,
n
?
1,依次計算
f
j
(
m
) 會得到一個n維向量,它正好是向量
(
0
,
1
,
?
,
n
?
1
) 的一個置換。因此,矩陣
A
=
(
a
i
j
)
n
×
n 中每一行的全部元素是由
0
,
1
,
?
,
n
?
1 組成的。而且,由變換
f
0
,
f
1
,
?
,
f
n
?
1 的定義,不難發(fā)現(xiàn),當(dāng)選定一個元素
m
=
m
1
m
2
m
3
?
m
t
∈
Z
n 時,
f
0
(
m
)
,
f
1
(
m
)
,
?
,
f
n
?
1
(
m
) 都不相同,因此,
A
=
(
a
i
j
)
n
×
n 中每一列的全部元素也是由
0
,
1
,
?
,
n
?
1 組成的。于是,由定義2.1可知,
A
=
(
a
i
j
)
n
×
n 是一個n階拉丁方,證畢!
特別地,當(dāng)t取8時,由定理2.1可得如下28階拉丁方
L
256
×
256
=
[
0
128
64
192
?
255
1
129
65
193
?
254
2
130
66
194
?
253
3
131
67
195
?
252
?
?
?
?
?
?
255
127
191
63
?
0
]
=
[
T
0
T
1
T
2
T
3
?
T
255
]
其中,
T
0
:
Z
256
?
Z
256 表示可逆變換:
T
0
(
0
)
=
0
,
T
0
(
1
)
=
128
,
?
,
T
0
(
255
)
=
255 等,其中,將
Z
256 與
Z
2
8 中相互對應(yīng)的數(shù)不加以區(qū)別。因此,基于L設(shè)計的理論基本密碼系統(tǒng)
(
M
,
C
,
T
) 滿足
M
=
C
=
Z
2
8
=
Z
256 和
T
=
{
T
0
,
T
1
,
?
,
T
255
}。類似于文獻 [6] 中的記號,下面將所設(shè)計的流密碼系統(tǒng)的具體明文單元設(shè)為
m
j
∈
M,對任意
j
=
0
,
1
,
2
,
?,等等。
3. 一種新的流密碼算法設(shè)計
3.1. 算法描述
參照文獻 [6],保密系統(tǒng)定義為從明文集M到密文集C的一組可逆變換T,可將每次加密的最小明文單元稱為基本明文。基本密鑰、基本密文和基本加解變換可類似定義。當(dāng)
M
,
T
,
C 都是基本單元時,稱
(
M
,
T
,
C
) 為理論基本(密碼)系統(tǒng)。
T
?
1 為理論密鑰(變換)集T的逆變換集。應(yīng)用密碼系統(tǒng)可類似定義。為了方便實際使用,有必要將T和
T
?
1 轉(zhuǎn)化為集合K和加密變換E與解密變換D來實現(xiàn)。上面已設(shè)計出一個理論基本系統(tǒng)
(
M
,
T
,
C
),因而還需要設(shè)計與它對應(yīng)的實際基本(密碼)系統(tǒng)
(
M
,
C
,
K
,
E
,
D
)。
1) 實際基本密碼系統(tǒng)的設(shè)計
(
M
,
C
,
K
,
E
,
D
)
先將
T
=
{
T
0
,
T
1
,
T
2
,
?
,
T
255
} 中每個變換的計算公式表示為:對任意
m
=
m
0
m
1
m
2
?
m
7
∈
Z
2
8,
T
0
(
m
)
=
m
7
m
6
?
m
1
m
0,
T
1
(
m
)
=
m
7
m
6
?
m
1
m
ˉ
0,
T
2
(
m
)
=
m
7
m
6
?
m
ˉ
1
m
0,
?,
T
255
(
m
)
=
m
ˉ
7
m
ˉ
6
?
m
ˉ
1
m
ˉ
0,
其中,
m
i
∈
Z
2,
m
ˉ
i
=
1
?
m
i,
i
=
0
,
1
,
?
,
7。這樣,實際基本密鑰空間
K
=
Z
256 滿足
k
?
T
k,對任意
k
∈
K
=
Z
2
8。因此,基本加密函數(shù)E的計算公式為
c
=
E
(
k
,
m
)
=
T
k
(
m
)。
為了方便實際應(yīng)用,可將基本加密函數(shù)E和解密函數(shù)D的具體計算公式設(shè)計如下:
a) 基本加密函數(shù)E:對任一8比特基本明文
m
=
m
0
m
1
?
m
7
∈
Z
2
8 和8比特密鑰
k
=
k
0
k
1
k
2
?
k
7
∈
Z
2
8,其中
m
0
,
m
1
,
?
,
m
7
,
k
0
,
k
1
,
?
,
k
7
∈
Z
2,將加密變換
c
=
E
(
k
,
m
) 統(tǒng)一設(shè)計為
c
=
(
m
7
⊕
k
0
)
(
m
6
⊕
k
1
)
(
m
5
⊕
k
2
)
(
m
4
⊕
k
3
)
(
m
3
⊕
k
4
)
(
m
2
⊕
k
5
)
(
m
1
⊕
k
6
)
(
m
0
⊕
k
7
),
其中,
⊕ 表示異或運算,多個相連的圓括號表示將多個比特組成一個多比特序列。
b) 基本解密函數(shù)D:對任一8比特密文
c
=
c
0
c
1
c
2
?
c
7
∈
Z
2
8 和8比特密鑰
k
=
k
0
k
1
k
2
?
k
7
∈
Z
2
8,其中
c
0
,
c
1
,
?
,
c
7
,
k
0
,
k
1
,
?
,
k
7
∈
Z
2,可將解密變換
m
=
D
(
k
,
c
) 設(shè)計為
m
=
(
c
7
⊕
k
7
)
(
c
6
⊕
k
6
)
(
c
5
⊕
k
5
)
(
c
4
⊕
k
4
)
(
c
3
⊕
k
3
)
(
c
2
⊕
k
2
)
(
c
1
⊕
k
1
)
(
c
0
⊕
k
0
)。
至此就完成了實際基本密碼系統(tǒng)
(
M
,
C
,
K
,
E
,
D
) 的設(shè)計。
易見,本基本密碼系統(tǒng)是利用定理2.1中的高階拉丁方設(shè)計的,不過,類似于上述方法,若將定理2.1中拉丁方的階數(shù)t加以改變,則可得到不同的拉丁方,進而可設(shè)計出不同的基本密碼系統(tǒng)。本文不再考慮了。
2) 應(yīng)用密碼系統(tǒng)中密鑰流序列的設(shè)計
上面已設(shè)計出實際基本密碼系統(tǒng)
(
M
,
C
,
K
,
E
,
D
),還需要設(shè)計應(yīng)用密鑰序列空間才能構(gòu)成一個完整的流密碼算法。下面再來討論應(yīng)用系統(tǒng)中密鑰序列空間的設(shè)計問題,將利用現(xiàn)有的Logistic混沌系統(tǒng)作為一個密鑰流發(fā)生器來對密鑰流序列空間進行設(shè)計。該混沌系統(tǒng)表達式如下:
x
n
+
1
=
μ
x
n
(
1
?
x
n
)
其中
x
n
∈
[
0
,
1
],對任意的
n
=
0
,
1
,
2
,
?,且
μ
∈
[
0
,
4
]。當(dāng)
μ
∈
[
3.571448
,
4
] 時,系統(tǒng)會處于混沌狀態(tài)。
綜合上述基本密碼系統(tǒng)和Logistic混沌系統(tǒng),下面將給出一種新的流密碼算法設(shè)計步驟:
1) 選擇一幅數(shù)字灰度圖像作為明文,在Matlab軟件中,該明文可表示成一個矩陣
I
=
(
m
i
j
)
m
×
n,其中,
m
i
j
∈
Z
256,對任意
i
,
j
=
0
,
1
,
?
,
255 ;
2) 將矩陣I按照從左到右,從上到下的順序轉(zhuǎn)化為明文序列
m
=
m
?
1
m
?
2
m
?
3
?,其中
m
?
i
∈
Z
256 ;
3) 設(shè)
μ
1
,
x
0
,
μ
2
,
y
0
,
μ
3,
μ
1
,
μ
2
,
μ
3
∈
[
3.571448
,
4
],
x
0
,
y
0
∈
[
0
,
1
] 為算法的5個密鑰,其中
μ
1,
μ
2,
μ
3 為Logistic混沌3個不同的控制參數(shù),
x
0 和
y
0 為2個初值。將
x
0 和
y
0 分別代入
μ
1 和
μ
2 所決定的Logistic混沌系統(tǒng),重復(fù)迭代500次可使得解序列較為混亂,并記
w
0
=
(
x
501
+
y
501
)
/
2 ;
4) 將
w
0 作為初值帶入
μ
3 所決定的Logistic混沌系統(tǒng),進行多次迭代,并舍去前500個數(shù)值,令
k
0
=
r
o
u
n
d
(
w
501
)
,
k
1
=
r
o
u
n
d
(
w
502
)
,
?
?
?,可得密鑰流序列
z
=
k
0
k
1
?,
k
j
∈
Z
2,將密鑰流序列按每8比特進行分組,將分組后的序列記為
z
?
=
k
?
0
k
?
1
?,其中
k
?
0
=
k
0
k
1
k
2
k
3
k
4
k
5
k
6
k
7
∈
Z
256 等;
5) 加密變換:按照加密變換
E
:
c
?
j
=
E
(
k
?
j
,
m
?
j
)
,
j
=
1
,
2
,
?,依次對明文單元
m
?
j 加密,可得密文單元序列
c
=
c
?
1
c
?
2
?,若有必要,可將c變換為2元密文序列;
6) 解密變換:按照解密變換
D
:
m
?
j
=
D
(
k
?
j
,
c
?
j
)
,
j
=
1
,
2
,
?,依次對密文單元
c
?
j 解密,可得明文單元序列
m
=
m
?
1
m
?
2
?。然后可將m還原為原數(shù)字圖像矩陣
I
=
(
m
i
j
)
m
×
n。
3.2. 實驗結(jié)果與分析
將上述密碼算法運用于數(shù)字圖像加解密,取密鑰
x
0
=
0.
5
78,
y
0
=
0.189,
μ
1
=
3.723,
μ
2
=
3.912,
μ
3
=
4.000,與文獻 [9] 中常用密碼算法進行對比,Matlab仿真的加解密效果圖及灰度直方圖如下:
圖1(e)~(g)分別為原始圖像、本算法加密圖像、對比算法加密圖像的像素分布直方圖,從圖中可看出,兩種算法都能對原始圖像進行有效的加解密,密文圖像的灰度直方圖都接近均勻分布,能抵抗統(tǒng)計分析。更進一步,根據(jù)式(3-1)再對兩種算法加密圖像的相鄰像素間的相關(guān)性進行計算,結(jié)果如表1。
r
x
y
=
cov
(
x
,
y
)
D
(
x
)
D
(
y
) (3-1)
(a) 原始圖像
(b) 加密后的圖像
(c) 解密后的圖像
(d) 常用算法加密圖像
(e) 原始圖片直方圖
(f) 本算法加密圖像直方圖
(g) 常用算法加密圖像直方圖
Figure 1. Algorithm simulation renderings
圖1. 算法仿真效果圖
Table 1. Correlation simulation data
表1. 相關(guān)性仿真數(shù)據(jù)
其中:
cov
(
x
,
y
)
=
1
N
∑
i
=
1
N
(
x
i
?
E
(
x
)
)
(
y
i
?
E
(
y
)
)
,
D
(
x
)
=
1
N
∑
i
=
1
N
(
x
i
?
E
(
x
)
)
2
,
E
(
x
)
=
1
N
∑
i
=
1
N
x
i
從表1中可看出,兩種算法加密后的圖像,在各個方向上相鄰像素間的關(guān)系幾乎為零,這說明像素間基本沒有相關(guān)性。其次從表1中可知,本算法加密后的圖像除了在豎直方向上僅有微小的差異外,在水平和對角方向上都比常見的流密碼算法具有更低的像素相關(guān)性,這說明新算法具有更好的置亂效果。
下面對密鑰空間進行分析。本算法包括五個密鑰
x
0
,
y
0
,
μ
1
,
μ
2
,
μ
3,假設(shè)計算精度為10?16,則密鑰空間約為
10
80
≈
2
256。一般認為密鑰空間大于2128便能抵抗窮舉攻擊,因而本密碼算法具有較強的抗窮舉攻擊的能力。另外,再對密鑰敏感性進行測試,密鑰敏感性指的是當(dāng)密鑰發(fā)生細小變化時,系統(tǒng)加解密效果會發(fā)生顯著變化。為了評估本文所提出的加密算法的密鑰敏感度,假定
μ
1
,
μ
2
,
μ
3 為固定值,采用了差別極其微小的兩組密鑰
key
1
=
{
x
0
:
0.278
,
y
0
:
0.189
} 和
key2
=
{
x
0
:
0.278
0000001
,
y
0
:
0.189
} 分別對圖像進行加解密,測試結(jié)果如圖2所示。分析圖2知,即使對解密密鑰進行微小的改動,也無法恢復(fù)出明文,這說明本文所設(shè)計的算法對密鑰極度敏感。
(a) 原始圖像
(b) key1的加密圖像
(c) key1的解密圖像
(d) key2的解密圖像
Figure 2. Key sensitivity test
圖2. 密鑰敏感性測試
下面再進行信息熵分析。根據(jù)圖像信息熵的定義式(3-2)和最大熵原理知,由于本文所選取的Lena圖像的灰度取值范圍是[0, 255],故圖像中各像素值等概率出現(xiàn)時最大信息熵達到8。其中熵的計算公式為
H
(
X
)
=
?
∑
i
=
1
256
P
(
x
i
)
log
2
P
(
x
i
) (3-2)
根據(jù)本文所選取的數(shù)字圖像計算,可得原始圖像信息熵為7.3722,文獻 [9] 中的算法加密后的信息熵為7.9856,本算法加密后的圖像信息熵為7.9994。從結(jié)果可看出,本算法加密后的圖像信息熵比常用密碼算法加密后的圖像信息熵更接近理想值,故新密碼算法具有更好的性能。
4. 小結(jié)
本文提出了一種高階拉丁方的構(gòu)造方法,并研究了這種拉丁方構(gòu)造基本密碼的設(shè)計問題,以及結(jié)合常見的密鑰流產(chǎn)生器提出了一種新的流密碼算法。通過與常見流加密算法對比分析可知,該算法密鑰空間大,且加密后的圖片信息熵更接近理想信息熵,因此該算法具有更強的抗攻擊能力,具有一定的實用參考價值。
總結(jié)
以上是生活随笔為你收集整理的matlab拉丁方,基于拉丁方的流密码算法设计与仿真的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 针对笔记本双显卡安装ubuntu16.0
- 下一篇: 聚石塔服务器 微信,聚石塔云服务器