Hệ thống mã hóa và đi sâu nghiên cứu phương pháp mã hóa DES - Pdf 33

MỤC TIÊU:
- Đề tài giới thiệu về hệ thống mã hóa và đi sâu nghiên cứu phương pháp mã hóa DES,
đưa ra hướng dẫn cài đặt chương trình mã hóa văn bản, file văn bản một cách đơn giản,
hiệu quả.
PHẠM VI ĐỀ TÀI:
- Tìm hiểu mã hóa thông tin
- Tìm hiểu hệ mã chuẩn DES
- Cài đặt chương trình mã hóa và giải mã file, văn bản sử dụng hệ mã DES
BỐ CỤC ĐỀ TÀI:
Nội dung của đồ án được trình bày trong 4 chương
Chương 1: Tổng quan
Giới thiệu tổng quan các khái niệm cơ bản về mật mã học và hệ thống mã hóa, đồng thời
giới thiệu sơ lược về hệ thống mã hóa quy ước và hệ thống mã hóa công cộng.
Chương 2: Một số phương pháp mã hóa quy ước
Nội dung chương 2 sẽ giới thiệu chi tiết hơn về hệ thống mã hóa quy ước( hay còn gọi là
hệ thống mã hóa đối xứng). Một số phương pháp mã hóa quy ước kinh điển như phương
pháp dịch chuyển, phương pháp thay thế… và giới thiệu qua mã hóa theo khối DES.
Chương 3: Mật mã hóa DES
Chương này em giới thiệu chi tiết về đặc điểm cũng như thuật toán của phương pháp mã
hóa DES
Chương 4: Mô phỏng và kết quả
Nội dung chương IV sẽ phân tích chức năng của bài toán đặt ra, quá trình kiểm thử, kết
quả của chương trình Demo.
- 1 -
ĐỊNH NGHĨA, VIẾT TẮT :
AES Advanced Encyption Standard Chuẩn mã hóa nâng cao Cryptography Mật mã
Cryptosystem Hệ thống mã hóa
Symmetric key Khóa đối xứng

Hình 3.3: Sơ đồ khối quá trình sinh khóa.................................................................21
Hình 3.4: Sơ đồ mã hóa DES....................................................................................23
Hình 3.5: Sơ đồ một vòng DES................................................................................24
Hình 3.6: Sơ đồ hàm F.............................................................................................27
Hình 3.7: Sơ đồ tạo khóa con....................................................................................28
Hình 3.8: Sơ đồ của hàm mở rộng............................................................................30
Hình 4.1: Sơ đồ chức năng của chương trình mô phỏng..........................................40
Hình 4.2:Biểu đồ hoạt động của chương trình mô phỏng...............................................41
Hình 4.3: Giao diện chính của chương trình.............................................................43
DANH MỤC BẢNG
Bảng 3.1:Các khóa yếu của DES...............................................................................18
Bảng 3.2:Các khóa nửa yếu của DES........................................................................18
Bảng 3.3:Hoán vị IP..................................................................................................25
Bảng 3.4: Hoán vị IP-1.............................................................................................25
Bảng 3.5: Hoán vị PC-1............................................................................................29
Bảng 3.6: Bảng dịch bit tại các vòng lặp của DES...................................................29
Bảng 3.7: Hoán vị PC-2............................................................................................30
Bảng 3.8: Hàm mở rộng E........................................................................................31
Bảng 3.9: 8 hộp S-Box..............................................................................................33
Bảng 3.10: Bảng hoán vị P........................................................................................34
- 3 -
CHƯƠNG 1
TỔNG QUAN
1.1. MẬT MÃ HỌC:
Mật mã là ngành khoa học ứng dụng toán học vào việc biến đổi thông tin thành
một dạng khác với mục đích che dấu nội dung, ý nghĩa thông tin cần mã hóa. Đây là một
ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội. Ngày nay, các ứng dụng
mã hóa vào bảo mật thông tin đang được sử dụng ngày càng phổ biến hơn trong các lĩnh
vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng…, cho đến các
lĩnh vực dân sự như trong thương mại điện tử, ngân hàng…

d e x x x P= ∀ ∈
Tính chất 4, là chính chất chính và quan trọng của một hệ thống mã hóa. Tính chất này
đảm bảo một mẩu tin x∈P được mã hóa bằng luật mã hóa e
k
∈E có thể giải mã chính
xác bằng luật d
k
∈D.
- 4 -
Định nghĩa 1. 2: Z
m
được định là tập hợp {0, 1, ..., m-1}, được trang bị phép cộng( ký hiệu
+) và phép nhân(ký hiệu x). Phép cộng và phép nhân trong Z
m
được thực hiện tương tự như
trong Z, ngoại trừ kết quả tính toán theo modulo m
Ví dụ: Giả sử cần tính giá trị 11x13 trong Z
16.
Trong Z, ta có kết quả của phép nhân
11x13=143. Do 143≡15(mod 16) nên 11x13=15 trong Z
16.
Một số tính chất của Z
m

1. Phép cộng đóng trong Z
m
, i.e., ∀ a, b ∈ Z
m
, a+b ∈ Z
m

m
, a×b=b×a
8. Tính kết hợp của phép cộng trong Z
m
, i.e., ∀ a, b, c ∈ Z
m
, (a×b)×c
. = a×(b×c)
9. Z
m
, có phần tử đơn vị là 1, i.e., ∀ a ∈ Z
m
, a×1=1×a=a
10. Tính phân phối của phép nhân đối với phép cộng, i.e., ∀ a, b, c ∈ Z
m
, . .
(a+b)×c =(a×c)+(b×c)
11. Z
m
, có các tính chất 1, 3, -5 nên tạo thành 1 nhóm, Do Z
m
, có tính chất 2 nên tạo
thành nhóm Abel, Z
m
, có các tính chất (1) – (10) nên tạo thành 1 vành
1. 3. HỆ THỐNG MÃ HÓA QUY ƯỚC:
Trong hệ thống mã hóa quy ước, quá trình mã hóa và giải mã một thông điệp sử
dụng cùng một mã khóa gọi là KHÓA BÍ MẬT (secret key) hay KHÓA ĐỐI XỨNG
(symmetric key). Do đó vấn đề bảo mật thông tin đã mã hóa hoàn toàn phụ thuộc vào việc
giữ bí mật nội dung của mã khóa đã được sử dụng.

2.1. HỆ THỐNG MÃ HÓA QUY ƯỚC
Hệ thống mã hóa quy ước là hệ thống mã hóa trong đó quy trình mã hóa và giải
mã đều được sử dụng chung một khóa – khóa bí mật. Việc bảo mật thông tin phụ thuộc
vào việc bảo mật khóa
Trong hệ thống mã hóa quy ước, thông điệp nguồn được mã hóa với mã khóa k
được thống nhất trước giữa người gửi A và người nhận B. Người A sẽ sử dụng mã khóa k
để mã hóa thông điệp x thành thông điệp y và gửi y cho người B, người B sẽ sử dụng khóa
k để giải mã thông điệp y này. Vấn đề an toàn bảo mật thông tin được mã hóa phụ thuộc
vào việc giữ bí mật nội dung mã khóa k. Nếu người C biết được khóa k thì C có thể “mở
khóa” thông điệp đã được mã hóa mà người A gửi cho người B.
Hình 2.1. Mô hình hệ thống mã hóa quy ước
2.2. PHƯƠNG PHÁP MÃ HÓA DỊCH CHUYỂN
Phương pháp mã hóa dịch chuyển là một trong những phương pháp lâu đời nhất
được sử dụng để mã hóa. Thông điệp được mã hóa bằng cách dịch chuyển xoay vòng từng
ký tự đi k vị trí trong bảng chử cái.
Trong trường hợp đặc biệt k =3, phương pháp mã hóa bằng dịch chuyển được gọi
là phương pháp mã hóa Caesar
- 7 -
Cho P=C=K= Zn
Với mỗi khóa k ∈ K, định nghĩa:
e
k
(x)=(x+k)mod n và d
k
(y)=(y-k)mod n với x,y ∈ Zn
E={ e
k
, k ∈ K} và D={ d
k,
k ∈ K}

, π∈ K} và D={D
π
, π∈K}
Thuật toán 2.2. phương pháp mã hóa bằng thay thế
Đây là phương pháp đơn giản, thao tác mã hóa và giải mã được thực hiện nhanh
chóng. Phương pháp này khắc phục điểm hạn chế của phương pháp mã hóa bằng dịch
chuyển là có không gian khóa K nhỏ nên dễ dàng bị giải mã bằng cách thử nghiệm lần
lượt n giá trị khóa k∈K. Trong phương pháp mã hóa thay thế có không gian khóa K rất
lớn với n! phần tử nên không thể bị giải mã bằng cách ‘vét cạn’ mọi trường hợp khóa k.
Tuy nhiên, trên thực tế thông điệp được mã hóa bằng phương pháp này vẫn có thể bị giải
mã nếu như có thể thiết lập được bảng tần số xuất hiện của các ký tự trong thông điệp hay
nắm được một số từ, ngữ trong thông điệp nguồn ban đầu
- 8 -
2.4. PHƯƠNG PHÁP AFFINE
Nếu như phương pháp bằng dịch chuyển là một trường hợp đặc biệt của phương pháp
mã hóa bằng thay thế, trong đó chỉ sử dụng n giá trị khóa k trong số n! phần tử, thì phương
pháp Affine lại là một trường hợp đặc biệt khác của mã hóa bằng thay thế
Cho P=C=Z
n
K={(a,b)∈Z
n
x Z
n
: gcd (a,b)=1}
Với mỗi khóa k=(a,b) ∈ K, định nghĩa:
e
k
(x)=(ax+b)mod n và d
k
(x)=(a

,có thể được giải mã một cách chính xác
Gọi φ(n) Z
n
và nguyên tố cùng nhau với n.
Trong phương pháp mã hóa Affine, ta có n khả năng chọn giá trị b, φ(n) khả năng chọn
giá trị a. vậy không gian khóa K có tất cả nφ (n) phần tử.
Vấn đề đặt ra cho phương pháp mã hóa Affine là để có thể giải mã được thông tin đã
được mã hóa cần phải tính giá trị phần tử nghịch đảo a
-1
∈Z
n
. Thuật toán Euclide mở rộng
có thể giải quyết trọn vẹn vấn đề này.
- 9 -
Trước tiên cần khảo sát thuật toán Euclide (ở dạng cơ bản) sử dụng trong việc tìm ước
số chung lớn nhất của hai số nguyên dương r
0
và r
1
với r
0
> r
1
. Thuật toán Euclide bao
gồm một dãy các phép chia.
r
0
=q
1
r

< r
m-1
r
m-1
= q
m
r
m
Dễ dàng nhận thấy rằng gcd( r
0
, r
1
)= gcd( r
1
, r
2
)=...= gcd( r
m-1
, r
m
)= r
m
Như vậy, ước số chung lớn nhất của r
0
, r
1
là r
m
Xây dựng dãy số t
0

và r
j
được xác định theo
thuật toán Euclide và t
j
được xác định theo công thức truy hồi nêu trên.
Định lý 2.4 : nếu r
0
và r
1
nguyên tố cùng nhau (với r
1
> r
1
) thì t
m
là phần tử nghịch đảo
của r
1
trong Z
r0
.
Gcd(r
0,
r
1
)=1=> t
m
= r
1

0
= 0
q=1






0
0
a
n
r= n
0
– qa
0
while r > 0 do
temp = t
0
– qt
if temp ≥ 0 then
temp=temp mod n
end if
if temp < 0 then
temp = n – (( -temp)mod n)
end if
t
0
=t

a
-1
=t mod n
end if
Thuật toán 2.4 Thuật toán Euclide mở rộng xác định phần tử nghịch đảo của a(modulo n)
- 11 -
2.5. PHƯƠNG PHÁP VIGENERE
Trong phương pháp mã hóa bằng thay thế cũng như các trường hợp đặc biệt của
phương pháp này (mã hóa bằng dịch chuyển, mã hóa Affine…), ứng với một khóa k được
chọn, mỗi phần tử x∈P được ánh xạ vào duy nhất một phần tử y∈C. Nói cách khác, ứng
với mỗi khóa k∈K, một song ánh được thiết lập từ P vào C.
Khác với hướng tiếp cận này, phương pháp Vigenere sử dụng một từ khóa có độ dài
m. Có thể xem như phương pháp mã hóa Vigenere Cipher bao gồm m phép mã hóa bằng
dịch chuyển được áp dụng luân phiên nhau theo chu kỳ.
Không gian khóa K của phương pháp Vigenere Cipher có số phần tử là “n”, lớn hơn
hẳn phương pháp số lượng phần tử của không gian khóa K trong phương pháp mã hóa
bằng dịch chuyển.Do đó, việc tìm ra mã khóa k để giải mã thông điệp đã được mã hóa sẽ
khó khăn hơn đối với phương pháp mã hóa bằng dịch chuyển.
Chọn số nguyên dương m. Định nghĩa P=C=K =(Z
n
)
m
K={(k
0
,k
1
,…,k
r-1
) ∈ (Z
n

)mod n)
D
k
(y
1
,y
2
,…,y
m
)=((y
1
–k
1
)mod n, (y
2
- k
2
)mod n,...,(y
m
– k
m
)mod n)
Với x,y ∈ (Z
n
)
m
Thuật toán 2.5. Phương pháp mã hóa Vigenere
2.6. PHƯƠNG PHÁP HILL
Phương pháp Hill được Lester S.Hill công bố năm 1929: Cho số nguyên dương m,
định nghĩa P=C= (Z









=
,2,1,
,21,2
,12,11,1




, định nghĩa:
- 12 -
( ) ( )












(y) = yk
–1
với y∈ C
mọi phép toán số học đều được thực hiện trên Z
n
Thuật toán 2.6 . Phương pháp mã hóa Hill
2.7. PHƯƠNG PHÁP MÃ HÓA HOÁN VỊ
Những phương pháp mã hóa nêu trên đều dựa trên ý tưởng chung: thay thế mỗi ký tự
trong thông điệp nguồn bằng một ký tự khác để tạo thành thông điệp đã được mã hóa.Ý
tưởng chính của phương pháp mã hóa hoán vị (Permutation) là vẫn giữ nguyên các ký tự
trong thông điệp nguồn mà chỉ thay đổi vị trí các ký tự, nói cách khác thông điệp nguồn
được mã hóa bằng cách sắp xếp lại các ký tự trong đó
Chọn số nguyên dương m. Định nghĩa:
P = C = (Z
26
)
m
và K là tập hợp các hoán vị của m phần tử {1, 2, ..., m}
Với mỗi khóa π ∈ K, định nghĩa:
( )
( ) ( ) ( )
( )
mm
xxxxxxe
ππππ
,...,,...,,
2121
=
và
( )

nên k
π
là ma trận khả nghịch. Rõ ràng, mã hóa
bằng phương pháp Hill với ma trận k
π

hoàn toàn tương đương với mã hóa bằng phương
pháp hoán vị với hoán vị π.
2.8. PHƯƠNG PHÁP DES ( DATA ENCYPTION STANDARD )
- 13 -
2.8.1 Phương pháp DES
Khoảng những năm 1970, Tiến sĩ Horst Feistel đã đặt nền móng đầu tiên cho chuẩn
mã hóa dữ liệu DES với phương pháp mã hóa Feistel Cipher. Vào năm 1976 Cơ quan bảo
mật Quốc gia Hoa kỳ (NSA) đã công nhận DES dựa trên phương pháp Feistel là chuẩn mã
hóa dữ liệu. Kích thước khóa của DES ban đầu là 128 bit nhưng tại bản công bố FIPS kích
thước khóa được rút xuống còn 56 bit.
Trong phương pháp DES, kích thước khối là 64 bit. DES thực hiện mã hóa dữ liệu qua
16 vòng lặp mã hóa, mỗi vòng sử dụng một khóa chu kỳ 48 bit được tạo ra từ khóa ban
đầu có độ dài 56 bit. DES sử dụng 8 bảng hằng số S-box để thao tác
Quá trình mã hóa của DES có thể tóm tắt như sau : Biểu diễn thông điệp nguồn x∈ P
bằng dãy 64 bit. Khóa k có 56 bit. Thực hiện mã hóa theo 3 giai đoạn :
1. Tạo dãy 64 bit x
0
bằng cách hoán vị x theo hoán vị IP (Initial Permutation)
Biểu diễn x
0
=IP(x)=L
0
R
0

=L
i-1
⊕ f(R
i-1
, K
i
)
Với ⊕ biểu diễn phép toán XOR trên hai dãy bit, K
1
, K
2
,...,K
16
là các dãy 48 bit phát
sinh từ khóa K cho trước ( Trên thực tế, mỗi khóa K
i
được phát sinh bằng cách hoán vị các
bit trong khóa K cho trước)
3. Áp dụng hoán vị ngược IP
-1
đối với dãy bit R
16
L
16
, thu được từ y gồm 64 bit. Như
vậy, y=IP
-1
(R
16
L

i
Thực hiện phép toán XOR cho hai dãy 48 bit E(A) và J, ta thu được một dãy 48 bit B.
Biểu diễn B thành từng nhóm 6 bit như sau: B=B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
Sử dụng 8 ma
trận S
1
, S
2
, ..., S
8
mỗi ma trận S
i
có kích thước 4x16 và mỗi dòng của ma trận nhận đủ 16
giá trị từ 0 đến 15. Xét dãy gồm 6 bit B
j

b
5
. Bằng cách này, ta xác định được các dãy 4
bit C
j
=S
j
(B
j
), 1 ≤ j ≤ 8.
Tập hợp các dãy 4 bit C
j
lại, ta có được dãy 32 bit C= C
1
C
2
C
3
C
4
C
5
C
6
C
7
C
8
. Dãy 32
bit thu được bằng cách hoán vị C theo một quy luật P nhất định chính là kết quả của hàm

. Các vòng có
chức năng giống nhau, nhận input là L
i-1
và R
i-1
từ vòng truớc và sinh ra output là các xâu
32 bit L
i
và R
i
như sau:
L
i
=R
i-1
;
R
i
=L
i-1
⊕ f(R
i-1
) trong đó f(R
i-1
, K
i
)=P(S(E(R
i-1
)⊕K
i

) của K bị bỏ đi (áp
dụng PC1). 56 bit còn lại được hoán vị và gán cho hai biến 28 bit C và D sẽ được quay 1
hoặc 2 bit, và các khóa con 48 bit K
i
được chọn từ kết quả của việc ghép hai xâu với nhau.
Như vậy, ta có thể mô tả toàn bộ thuật toán sinh mã DES dưới dạng công thức như
sau:
Y = IP
-1
• f
16
• T • f
15
• T • ... • f
2
• T • f
1
• IP(X)
Trong đó :
- T mô tả phép hoán vị của các khối L
i
, R
I
(1 ≤ i ≤ 15).
- f
i
mô tả việc dùng hàm f với khóa K
i
(1 ≤ i≤ 16)


như nhau : K
1
=K
2
=... =K
16
Điều đó khiến cho việc mã hóa và giải mã đối với khóa yếu là giống hệt nhau
Khóa yếu (Hex) C
0
D
0
0101 0101 0101 0101
FEFE FEFE FEFE FEFE
1F1F 1F1F 0E0E 0E0E
E0E0 E0E0 F1F1 F1F1
{0}
28
{1}
28
{0}
28
{1}
28
{0}
28
{1}
28
{1}
28
{0}

14
{10}
14
{0}
28
{1}
28
{01}
14
{01}
14
01FE 01FE 01FE 01FE
1FE0 1FE0 1FE0 1FE0
01E0 01E0 01F1 01F1
1FFE 1FFE 0EFE 0EFE
011F 011F 010E 010E
E0FE E0FE F1FE F1FE
FE01 FE01 FE01 FE01
E01F E01F E01F E01F
E001 E001 F101 F101
FE1F FE1F FE0E FE0E
1F01 1F01 0E01 0E01
FEE0 FEE0 FEF1 EF1
{10}
14
{10}
14
{10}
14
{10}

1
và K
2
thì sẽ luôn được khóa K
3
như sau :
E
K2
(E
K1
(X))=E
K3
(X)
Nói một cách khác, việc mã hóa DES mang tính chất “nhóm”, đầu tiên mã hóa bản rõ
bằng khóa K
1
sau đó là khóa K
2
sẽ giống với việc mã hóa ở khóa K
3
. Điều này thực sự
- 18 -
quan trọng nếu sử dụng DES trong đa mã hóa. Nếu một “nhóm” được phát với cấu trúc
hàm quá nhỏ thì tính an toàn sẽ giảm.
3.3.3.4. Không gian khóa K
DES có 2
56
= 10
17
khóa. Nếu chúng ta biết được một cặp “tin/mã” thì chúng ta có thể

Phá mã vi sai là thuật toán xem xét những cặp mã khóa khác nhau, đây là những cặp mã
hóa mà bản mã của chúng là khác biệt. Người ta sẽ phân tích tiến trình biến đổi của những
cặp mã này thông qua các vòng của DES khi chúng được mã hóa với cùng một khóa K. Sau
đó sẽ chọn hai bản rõ khác nhau một cách ngẫu nhiên hợp lý nhất. Sử dụng sự khác nhau của
kết quả bản mã và gán cho những khóa khác nhau một cách phù hợp nhất. Khi phân tích nhiều
hơn những cặp bản mã, chúng ta sẽ tìm ra một khóa được xem là đúng nhất.
- 19 -
3.4. SƠ ĐỒ KHỐI
Hình 3.2. Sơ đồ khối chương trình DES
- 20 -
Hình
3.3. Sơ
đồ khối
quá
trình
sinh
khóa
3.5.
THUẬT TOÁN
DES là thuật toán mã hóa khối, nó xử lý từng khối thông tin của bản rõ có độ dài xác
định là 64 bit. Trước khi đi vào 16 chu trình chính, khối dữ liệu cần bảo mật được “bẻ”
ra từng khối 64 bit, và từng khối 64 bit này sẽ được lần lượt đưa vào 16 vòng mã hóa
DES để thực hiện
- 21 -
Input: bản rõ M = m
1
m
2
… m
64,

m
50
. . . m
8
, R
0
= m
57
m
49
. . . m
7
)
3. Với i chạy từ i=1 đến 16 thực hiện:
Tính các L
i
và R
i
theo công thức:
L
i
=R
i-1
;
R
i
=L
i-1
⊕ f(R
i-1

1
r
2
. . . r
32
r
1
)
 T’ ← T ⊕ K
i
. Biểu diễn T’ như là các xâu gồm 8 ký tự 6 bit T’ = ( B
1
, . . . ,B
8
)
 T’’ ← ( S
1
( B
1
) , S
2
( B
2
) , . . . , S
8
( B
8
) ). Trong đó S
i
( B

1
t
2
. . . t
32
sinh ra t
16
t
7 . . .
t
25
4. Khối từ b
1
b
2
. . . b
64
← ( R
16
, L
16
) ( đổi vị trí các khối cuối cùng L
16
, R
16
)
5. C ← IP
-1
( b
1

64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Bảng 3.3. Hoán vị IP
3.5.1.2.Giai đoạn 2:
Tính toán 16 lần lập theo 1 hàm xác định. Ta sẽ tính LiRi (1≤ i ≤ 16) theo quy tắc:
Li=Ri-1
Ri = Li-1⊕ f (Ri-1, Ki)
⊕ là toán tử Xor
k1,k2,k3.....k16 là xâu bit độ dài 48 bit được tính qua hàm khoá K (thực tế thì Ki là 1
phép hoán vị bit trong K)
3.5.1.3.Giai đoạn 3:
Áp dụng hoán vị ngược IP-1 cho xâu bit R16 L16 ta thu được bản mã y:
y = IP-1 (R16 L16)
+ Chú ý vị trí của R16 và L16.
IP-1
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
Bảng 3.4. Hoán vị IP-1
- 25 -


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status