Tải bản đầy đủ (.doc) (22 trang)

Tìm Hiểu Hệ Mật mã ELGAMAl

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (363.08 KB, 22 trang )

LỜI NÓI ĐẦU
Ta biết rằng tin truyền trên mạng rất dễ bị lấy cắp. Để đảm bảo việc truyền tin an toàn
người ta thường mã hoá thông tin trước khi truyền đi. Việc mã hoá thường theo quy tắc nhất
định gọi là hệ mật mã.
Hiện nay có hai loại hệ mật mã: mật mã cổ điển và mật mã khoá công khai. Mật mã cổ điển
dễ hiểu, dễ thực thi nhưng độ an toàn không cao. Vì giới hạn tính toán chỉ thực hiện trong
phạm vi bảng chữ cái sử dụng văn bản cần mã hoá. Với các hệ mã cổ điển, nếu biết khoá lập
mã hay thuật toán lập mã, người ta có thể "dễ" tìm ra được bản rõ. Ngược lại các hệ mật mã
khoá công khai cho biết khoá lập mã K và hàm lập mã C
k
thì cũng rất "khó" tìm được cách giải
mã.
Hệ mã hóa với khoá công khai Elgamal được đề xuất năm 1985, dựa vào độ phức tạp của
bài toán lôgarit rời rạc. Với chủ đề 11, “xây dựng chương trình mô phỏng hệ mã Elgamal”,
chúng ta sẽ có cái nhìn tổng quan về hệ mã hóa công khai Elgamal.
Nhóm 11
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 1
PHẦN I: LÝ THUYẾT
1.1.Cơ sở xây dựng hệ mã Elgamal
Hệ mật mã elgamal được xây dựng dựa trên bài toán logarithm rời rạc .
Bài toán logarithm được phát biểu như sau:
I={p,α,β}
Trong đó: p là số nguyên tố
α Є Zp là là phần tử nguyên thủy
β Є Zp
*
Mục tiêu: Hãy tìm một số nguyên duy nhất a ,0 ≤ a ≤ p-2 : α
a
≡ β(mod p)
Ta sẽ xác định số nguyên a bằng log
a


β
1.2. Hệ mã Elgamal
*. Tạo khóa:
Cho p là số nguyên tố sao cho bài toán logarithm rời rạc trong Zp là khó giải. Cho α Є
Zp
*
là phần tử nguyên thủy. Giả sử P= Zp
*
, C= Zp
*
x Zp
*
.Ta định nghĩa :
K={(p,α,a,β): β ≡ α
a
(mod p) }
Khóa công khai là: (p, α , β)
Khóa bí mật là : a
*. Mã hóa:
Chọn 1 số ngẫu nhiên bí mật k Є Z
p-1
,(chú ý là sau khi mã hóa xong thì k sẽ bị hủy) ta
xác định : e
k
(x,k)=(y
1
, y
2
)
Trong đó: y

1
= α
k
mod p
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 2
y
2
=x.β
k
mod p
*. Giải mã:
Với y
1
, y
2
Є Zp
*
ta xác định : d
k
(y
1
, y
2
)= y
2
(y
1
a
)
-1

mod p
1.3. Ví dụ
Cho p= 569 , α = 2 ,a = 109 ,x= 257 , chọn k= 79
*, tạo khóa: β ≡ α
a
mod p
β ≡ 2
109
mod 569
x a y=1
10
9
2 2
54 4 x
27 16 32
13 256 226
6 101 x
3 528 407
1 543 229
= > β= 229
Vậy: Khóa công khai là : (p,α,β)=(569,2,229)
Khóa bí mật là a=109
*. Mã hóa
Chọn k ngẫu nhiên k=79
Khi người A gửi bản tin x=257 cho người B thì người A sẽ mã hóa như sau:
+. y
1
= α
k
mod p

= 2
79
mod 569
x a y=1
79 2 2
39 4 8
19 16 128
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 3
9 256 335
4 101 x
2 528 x
1 543 394
= > y
1
= 394
+. y
2
= x. β
k
mod p
= 257 .229
79
mod 569
• tính: 229
79
mod 569
x a y=1
79 229 229
39 93 244
19 114 504

9 478 225
4 315 x
2 219 x
1 165 140
= > y
2
=257.140 mod 569 = 133
Vậy người A sẽ gửi bản mã (y
1
,y
2
) =(394,140) cho người B
*. Giải mã:
Người B nhận được bản mã (y
1
,y
2
) sẽ tiến hành giải mã :
x= y
2
(y
1
a
)
-1
mod p = 140.(394
109
)
-1
mod 569

• Tính 394
109
mod 569
x a y=1
109 394 394
54 468 x
27 528 347
13 543 82
6 107 x
3 69 537
1 209 140
Kq= 140
Tính (140)
-1
mod 569
x a b y
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 4
569 1 0
140 0 1 4
9 1 -4 15
5 -15 61 1
4 16 -65 1
1 -31 126
Kq = 126
= > x =133.126 mod 569 = 257
Vậy người B sau khi giải mã sẽ nhận được bản rõ x= 257
1.4. Ưu nhược điểm của hệ mật mã Elgamal
• Ưu điểm:
Do được xây dựng từ bài toán logarithm rời rạc nên hệ mã khó tìm được các loagarithm rời
rạc nếu p được chọn cẩn thận. Để khó tấn công p phải có ít nhất 150 chữ số và (p-1) phải có ít

nhất 1 thừa số nguyên tố lớn.
• Nhược điểm:
Dung lượng bộ nhớ dành cho việc lưu trữ các bản mã là lớn gấp đôi so với các hệ mã
khác .
Do việc sử dụng các số nguyên tố nên việc sinh khóa và quản lý khóa cũng khó khăn hơn
các hệ mã khối.
1.5. Độ phức tạp của hệ mật mã Elgamal
Theo thời gian: O(p)
Theo không gian:O(1)
1.6. Thám mã đối với hệ mật mã elgamal
1.6.1.Thuật toán Shank(cân bằng thời gian)
Nếu chúng ta có đủ bộ nhớ thì có thể sử dụng bộ nhớ đó để làm giảm thời gian thực
hiện của bài toán xuống.
 Input: số nguyên tố p , phần tử nguyên thủy α của Z
p
*
, số nguyên β
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 5
 Output : cần tìm a sao cho α
a
mod p = β
 Thuật toán:
Gọi m=[(p-1)
1/2
] (lấy phần nguyên)
Bước 1: tính α
m.j
mod p với 0≤ j≤ m-1
Bước 2: Sắp xếp các cặp t
j

: (j, α
m.j
mod p ) theo α
m.j
mod p và lưu vào
danh sách L
1
Bước 3: tính β.α
-i
mod p với 0≤i≤m-1
Bước 4: Sắp xếp các cặp t
i
: (I, β.α
-i
mod p) theo β.α
-i
mod p và lưu vào
danh sách L
2
.
Bước 5: Tìm trong hai danh sách L
1
và L
2
xem có tồn tại cặp (j, α
m.j
mod p)
và (I, β.α
-i
mod p) nào mà α

m,j
mod p= β.α
-i
mod p (tọa độ thứ 2 của hai cặp
bằng nhau).
Bước 6: a=(m.j+i) mod (p-1)
Kết quả này có thể kiểm chứng từ công thức α
m.j
mod p=β.α
-i
mod p
= > a
m.j+i
mod p = β mod p
= > a=(m.j+i) mod (p-1)
 Độ phức tạp thuật toán:
Phụ thuộc vào m=[(p-1)
1/2
], với giá trị của m, chúng ta cần tính các phần tử thuộc 2 danh
sách L1 và L2 , đều là các phép toán lũy thừa phụ thuộc vào j và i ; mà j và I lại phụ thuộc vào
m nên có thể nhận thấy là thuật toán này chỉ có thể áp dụng trong những trường hợp p nhỏ
 Ví dụ minh họa :
Cho p=79, α=2, β=55 .Tìm a theo thuật toán Shank
Bài giải
Tính m=[(p-1)
1/2
] = 9
B1: Tính t= α
m.j
mod p với 0≤ j≤ m-1 : 2

9.j
mod 79 với 0≤ j≤8
j =0 => t=1; t
j
(0,1)
j=1=> 2
9
mod 79 =38; t
j
(1,38)
j=2=>2
18
mod 79=13; t
j
(2,22)
j=3=>2
27
mod 79=46; t
j
(3,46)
j=4=>2
36
mod 79;
x a d=1
36 2 x
18 4 x
9 16 16
4 19 x
2 45 x
1 50 10

AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 6
=> t
j
(4,10)
j=5=>2
45
mod 79
x a d=1
45 2 2
22 4 x
11 16 32
5 19 55
2 45 x
1 50 64
=> t
j
(5,64)
J=6 => 2
54
mod 79
x a d=1
54 2 x
27 4 4
13 16 64
6 19 x
3 45 36
1 50 62
=>t
j
(6,62)

j =7 => 2
63
mod 79
x a d=1
63 2 2
31 4 8
15 16 49
7 19 62
3 45 25
1 50 65
=> t
j
(7,65)
j =8 =>2
72
mod 79
x a d=1
72 2 x
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 7
36 4 x
18 16 x
9 19 19
4 45 x
2 50 x
1 51 21
=>t
j
(8,21)
B2: Sắp xếp các cặp t
j

theo hướng tăng dần của α
m.j
mod p
(0,1);(4,10);(2,13);(8,21);( 1,38);(3,46);(6,62); (5,64);(7,65)
B3: tính β.α
-i
mod p với 0≤i≤m-1 : 55.(2
-i
) mod 79 với 0≤i≤8
Hay tính 55.(2
i
)
-1
mod 79
i =0: 2
0
mod 79 = 1 => 1
-1
mod 79=1 => 55.(2
0
)
-1
mod 79 =55
= >t
i
(0,55)
i =1:2
1
mod 79=2 => 2
-1

mod 79=40(tính theo EuClic)
=> 55.(2
1
)
-1
mod 79 = 55.40 mod 79=67
= >t
i
(1,67)
i =2:2
2
mod 79 =4 => 4
-1
mod 79= 20
=>55.(2
2
)
-1
mod 79= 55.20 mod 79=73
= >t
i
(2,73)
i =3: 2
3
mod 79 =8 => 8
-1
mod 79 = 10
=> 55.(2
3
)

-1
mod 79=55.10 mod 79=76
= >t
i
(3,76)
i =4:2
4
mod 79=16 => 16
-1
mod 79 = 5
=> 55.(2
4
)
-1
mod 79 = 55.5 mod 79=38
= >t
i
(4,38)
i =5:2
5
mod 79=32=>32
-1
mod 79=42
= > 55.(2
5
)
-1
mod 79=55.42 mod 79= 74
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 8
= >t

i
(5,74)
i =6:2
6
mod 79 =64 =>64
-1
mod 79= 21
= > 55.(2
6
)
-1
mod 79 = 55.21 mod 79=49
= >t
i
(6,49)
i =7:2
7
mod 79=49 => 49
-1
mod 79=50
= > 55.(2
7
)
-1
mod 79=55.50 mod 79= 64
= >t
i
(7,64)
i =8:2
8

mod 79=19 => 19
-1
mod 79 =25
= > 55.(2
8
)
-1
mod 79= 55.25 mod 79 = 32
= >t
i
(8,32)
B4: Sắp xếp các cặp t
i
: (I, β.α
-i
mod p) theo thứ tự tăng của β.α
-i
mod p và lưu vào danh
sách L
2 :
t
i
(8,32) ; t
i
(4,38) ; t
i
(6,49) ; t
i
(0,55) ; t
i

(7,64) ; t
i
(1,67) ; t
i
(4,73) ; t
i
(5,74) ; t
i
(3,76)
B5: Tìm trong hai danh sách L
1
và L
2
xem có tồn tại cặp (j, α
m.j
mod p) và (I, β.α
-i
mod p)
nào mà α
m,j
mod p= β.α
-i
mod p (tọa độ thứ 2 của hai cặp bằng nhau).
Ta thấy cặp t
j
(1,38) và cặp t
i
(4,38) có tọa độ thứ 2 bằng nhau cùng bằng 38 . và cặp t
j
(5,64)

với cặp t
i
(7,64) có tọa độ thứ 2 bằng 64
= > chon : bộ 1: j=1 ;i=4 ; bộ 2: j=5;i=7
B6:
Với bộ 1: a=(m.j+i) mod (p-1)
a =(9.1+4) mod (p-1) =13
với bộ 2: a=(9.5+7)mod 78 =52
( Kiểm tra: ta có β≡α
a
mod p theo trên tính a=13
= > β≡ 2
13
mod 79
x a d=1
13 2 2
6 4 x
3 16 32
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 9
1 19 55
= > β=55 đúng theo bài ra β =55
Tính theo a=52
= > β≡ 2
52
mod 79
x a d=1
52 2 x
26 4 x
13 16 16
6 19 x

3 45 9
1 50 55
= > β= 55 đúng theo bài ra )
1.6.2.Thuật toán Pohlig-Hellman
Có những trường hợp đặc biệt mà bài toán Logarithm rời rạc có thể giải quyết với độ phức
tạp nhỏ hơn O(p
1/2
), chẳng hạn như khi (p-1) chỉ có các ước nguyên tố nhỏ. Một thuật toán làm
việc với các trường hợp như vậy đã được Pohlig và Hellman đưa ra vào năm 1978.
Giả sử, p-1 = 2
n
.
Gọi α là phần tử nguyên thủy của Z
*
p
, p là một số lẻ và α
(p-1)/2
mod p= -1. Gọi m là số
nguyên thuộc
[0,p-2] mà chúng ta cần tìm để β= α
m
mod p. giả sử, m được biểu diễn thành dạng nhị phân
m= m
0
+2m
1
+4m
2
+…. + 2
n-1

m
n-1
. Khi đó,
1 nếu m
0
=0
=
-1 nếu m
0
= 1
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 10
Việc tính β
(p-1)/2
mất nhiều nhất 2[log
2
p] bước và sẻ cho ta m
0
. Khi xác định được β
1
=β.α
-m
0
,
ta lặp lại thao tác tương tự để tính m
1
:

1 nếu m
1
=0

=
-1 nếu m
1
=1
Quá trình tính toán cứ thế tiếp diễn cho tới khi chúng ta tìm được m
i
. Độ phức tạp của
thuật toán là : n.(2[log
2
p]+2) ~O((log
2
p)
2
).
1.7. Thuật toán mật mã khóa bất đối xúng tương lai(Advanced Elgamal)
1.7.1. Thuật toán
Thuật toán Elgamal còn nhược điểm khá lớn là tạo ra các văn bản mã giống nhau nếu cùng
khối văn bản gốc. Điều này là một yếu điểm chung của phương pháp mật mã khóa bất đối
xứng, làm giảm tính an toàn của thuật toán vì có thế sự dụng phương pháp thám mã theo xác
suất[1,2]. Mặt khác, các khối dữ liệu sau mã hóa đi trên mạng, do chủ quan hay khách quan,
một vài khối có thế bị mất đi hoặc thêm vào hoặc bị thay đổi nội dung. Nơi nhận hoàn toàn
không phát hiện được. Thuật toán sau giải quyết vấn đề này.
Cho p là số nguyên tố lớn có chiều dài n byte sao cho việc giải bài toán trong miền
Z
p
* là đủ khó. Có thể chọn bằng 8, 16, 32, 64 hoặc 128 byte.
-Khoá công khai K
pu
= (p,α,β), trong đó: p: một số nguyên tố lớn bất kì; α: số
nguyên bất phần tử sinh; β = mod p, với a nguyên bất kì thỏa mãn 1 ≤ a ≤ p-2.

-Khóa bí mật K
pr
= a.
1.7.2 quá trình mã hóa
Chia dữ liệu cần mã hóa thành các khối X[i] có kích thước n byte. Khối cuối cùng có kích
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 11
thước nhỏ hơn n byte sẽ không đưuọc mã hóa.
Bước 1: Tính A[i] = ( mod p) XOR X[i]
K là số nguyên bất kì thỏa 1 ≤ a ≤ p-2.
Bước 2: Thực hiện dịch vòng trái LCS(Left Circular Shift) từng byte của A[i] theo vectơ
dịch SV(Shift Vectơ) thu đưoojwc B[i]
B[i][j]=A[i][j]<<<SV
SV là ma trận hàng gồm n phần tử, mỗi phần tử thỏa điều kiện:
0≤ SV[i] ≤ 7.
Bước 3: Thu được văn bản sau mã hóa bằng cách:
C[i]=B[i] XOR C[i-1]
Trong đó C[i-1] là văn bản liền trước. Sử dụng vectơ khởi tạo IV(Initial Vectơ) cho lần đầu
tiên
1.7.3. quá trình giải mã
Nhận được C[i], C[i-1] và biết trước khóa bí mật K
pr
= a.
Bước 1: Tìm B[i] = C[i] XOR C[i-1], sử dụng vectơ khởi tạo IV(Inital Vectơ)cho lần đầu
tiên.
Bước 2: Sử dụng vectơ liên hiệp dịch dịch vòng trái LCS từng byte B[i] để thu A[i].
Vectơ liên hiệp dịch là ma trận được suy ra từ vectơ SV, với [i]=(8-SV[i]) XOR 8
A[i][j]=B[i][j]<<< SV .
Bước 3: Ta thu được X[i] = A[i] XOR ( mod p)
1.7.4.Chứng minh thuật toán
Trước tiên ta cần chứng minh:

Nếu a XOR b = c thì c XOR b = a (1)
a XOR b XOR c = a XOR c XOR b (2)
xy mod z = [x(y mod z)] mod z (3)
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 12
Chứng minh(1): Xét bảng chân trị sau

So sánh cột 1 và 4, ta thấy (1) đúng với số 1 bit. Vì phép XOR thực hiện trên từng bit, nên
(1) cũng dúng trong trường hợp a và b là số nhiều bit. Vậy (1) đã được chứng minh
Chứng minh(2): Tương tự, xét bảng chân trị sau:

AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 13
a b a
XORb=c
C
XOR b
0 0 0 0
0 1 1 0
1 0 1 1
1 1 0 1
a b c a XOR b XOR
c
a XOR c XOR
b
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 0
1 0 0 1 1
1 0 1 0 0
1 1 0 0 0

1 1 1 1 1
So sánh cột 4 và 5, ta thấy (2) đã được chứng minh
Chứng minh(3): xy mod z = [x(y mod z)] mod z
Đặt : xy mod z = r
1
v với 0 ≤ r
1
< z,
y mod z = r
2
vvới 0 ≤ r
2
< z,
x(y mod z)] mod z = xr
2
mod z = r
3
v với 0 ≤ r
3
< z.
Dễ thấy: xy= nz+ r
1
(1’)
y=mz + r
2
với m, n,k là các số nguyên không âm (2’)
x r
2
=kz + r
3

(3’)
Rút r
2
ở biểu thức (2’) thay vào biểu thức (3’) ta được:
xy= (k+mz) + r
3
So sánh với biểu thức(1’) ta được:
(k + mz)x + r
3
= nz + r
1
Dễ dàng nhận thấy r
1
= r
3
.Hay xy mod z = [x(y mod z)] mod z (đpcm)
Chứng minh thuật toán giải mã:
Theo bước 3 của quá trình mã hóa, ta có:
C[i] = B[i] XOR C[i-1]
Dựa vào (1) suy ra B[i] = C[i] XOR C[i-1]
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 14
Do B[i] = A[i] <<SV(bước 2 quá trinh mã hóa), mặt khác, là vectơ liên hiệp dịch của
SV, việc dịch vòng trái từng byte của khối B[i] thao [i] bit chính là trả về trị ban đầu A[i].
Nghĩa là: A[i] = B[i] <<
Ta chỉ cần chứng minh X[i] = A[i] XOR ( mod p) . Thay A[i] ở bước 1 của quá trình
mã hóa vào ta có:
VP = ( mod p) XOR X[i] XOR ( mod p)
=[ mod p] XOR X[i] XOR ( mod p) (*)
Mặt khác, ta lại có:
mod p = mod p

= [ mod p) mod p] (theo 3)
= mod p) mod p
= mod p) mod p
=[ mod p) mod p)] mod p (theo (3))
= mod p

= mod p
Thay vào (*) ta thu được
VP = [ mod p] XOR X[i] XOR mod p]
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 15
= [ mod p] XOR mod p] XOR X[i]
= X[i]
=VP(đpcm)
1.7.5 Đánh giá độ phức tạp thuật toán
Thuật toán phát triển dựa trên độ khó của bài toàn logarit trong Elgama nên vẫn giữ được
ưu điểm khó thám mã tương đương với RSA và Elgamal.
Để thám mã thành công thuật toán Elgamanl độ dài 64 byte, với máy tính đơn có bộ vi
xử lý PIV 2.6 GHz, cần thời gian 300000 giờ(khoảng 34 năm). Thế nhưng nếu sử dụng mạng
gồm 100000 máy thì thời gian thám mã chỉ còn hơn 3 giờ(theo tài liệu tính toán của RSA Inc)
Thuật toán Elgamal giải quyết tốt vấn đề bảo mạt, nhờ sử dụng vectơ dịch SV theo ma
trận hàng. Một số tính năng ưu việt nổi bật của thuật toán này như sau:
Độ bảo mật được tăng cường rất lớn so với các thuật toán khóa mã công khai hiện tại.
Với cùng kích thước bài toán 64byte nhu trên, vectơ dịch SV là ma traanj1x64, mỗi phân của
SV có giá trị 0 ddeens7. Đế thám mã thành công thuật toán Elgamal, ngoài việc vượt qua độ
khó của bài toán logarit như trên, cần phải tìm được chính xác SV. Tập không gian SV là
vectơ. Theo trung tâm ứng dụng siêu quốc gia MỸ,
(12/2003), một hệ thống siêu mạnh với 1500 máy chủ có thể thực hiện được 20 nghìn tỉ(2.
), phép tính trên giây. Với hệ thống siêu mạng này, theo ước tính của tác giả, thời gian để tìm
ra chính xác SV bằng phương pháp vét cạn để thám mã là /(2. ) =5. (giây) 1.6.
(năm). Rõ ràng độ bảo mật tăng lên vô cùng lớn.

Kích thước dữ liệu sau mã hóa không thay đổi. So với thuật toán Elgamal, ứng với mỗi
dữ liệu x sẽ cho ra văn bản mã c gồm và . Riêng thuật toán Elgamal, chỉ sinh ra văn bản
mã C[i] có kích thước bằng với kích thước văn bản gốc X[i].
Chống thám mã theo xác suất xuất hiện. Các phương pháp mã hóa theo mô hình khóa
đối xứng đều có cùng nhược điểm là tạo ra các khối văn bản mã giống nhau với cùng văn bản
gốc. Nhờ phép XOR với văn bản mã liền trước, Advanced Elgamal sẽ tạo ra các văn bản mã
khác nhau cho dù văn bản gốc đầu đều giống nhau. Điều nayloại bỏ hoàn toàn thám mã theo
xác suất.
Nhận ra sự thay đổi dữ liệu trên đường truyền. Một ai đó cố tình phá hoại hệ thống bảo
mật bằng cách tạo ra các khối giống với khối văn bản mã, hay cố tình sủa đối nội dung văn
bản mã trên đường truyền. Theo thuật toán Elgamal và RSA, nơi nhận không phát hiện điều
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 16
này. Kĩ thuật XOR các văn bản mã với nhau trong thuật toán Advanced Elgamal giúp giải
quyết triệt để vấn đề này.
Tốc độ thực thi cao nhờ sử dụng các phép gần với ngôn ngữ máy(phép dịch vòng, phép
XOR)
Hiệu quả trong thiết kế phần cứng: Sử dụng chung khoanrg2/3 kiến trúc phần cứng cho
quá trình mã hóa và giải mã.
1.7.6. Kết luận
Tuy tốc độ mã hóa và giải mã được cải thiện rõ nét, nhưng không ngoại lệ, thuật toán
Advanced Elgamal cũng giống như các thuật toán thuộc hệ mã công khai, vẫn còn cồng kềnh
so với thuật toán hệ bí mật. Vì vậy, thuật rất thích hợp cho các ứng dụng có kích thước nhỏ,
đòi hỏi độ bảo mật cao, không cần định danh trước đối tác sử dụng khóa. Do đó, khả năng ứng
dụng trong thương mại, giao dịch điện tử, thu tín điện tử là rất lớn.
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 17
S
Đ
S
Đ
II. PHẦN LẬP TRÌNH

2.1 Mã Hóa Bản Tin
2.1.1 sơ đồ thuật toán Mã Hóa
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 18
Nhập (P, α, ß)
Nhập Banro
Nhập K
Banma=(y
1,
y
2
)
KT(P, α, ß,K)
KT(Banro)
x=banro.charAt[i]
y=x.β
k
mod p
y
2
+=(char) y
i+=1
i=0
i>=banro.lengt
h
y
1
= α
k
mod p
Begin

2.1.2 Hàm xử lý Mã Hóa
public void xulyMahoa(int alpha, int beta, int p, int k, String banRo){
int y1=mod.tinhMod(alpha, k, p);
//y1=alpha
k
mod p (Theo Bình phương và nhân)
tBanMa.setText(""+(char)y1);
for (int i=0; i<banRo.length(); i++){
int x2[] = new int[2];
x2 = doi.tachSo((int)banRo.charAt(i));
//Vì giá trị của x2 (bản rõ) có thể lớn hơn P nên cần chia nhỏ x2 ra để xử lý
//Bản mã (y1,y2=x2.beta
k
mod p) (Theo Bình phương và nhân)
tBanMa.append(""+(char)((x2[0] * mod.tinhMod(beta, k, p)) % p));
tBanMa.append(""+(char)((x2[1] * mod.tinhMod(beta, k, p)) % p));
}
}
2.1.1 Hàm xử lý Giải Mã

public void xulyGiaima(int alpha, int p, int a, String banMa){
tBetaGiai.setText(""+mod.tinhMod(alpha,a,p));
// Tự sinh beta=alpha^a mod p (Theo Bình phương và nhân)
int y1=(int)banMa.charAt(0);
tBanRo.setText("");
for (int i=1; i<banMa.length(); i+=2){
//Bản rõ x=y2*y0
//Trong đó y2 là bản mã
//y0=(y
1

a
)
-1
mod p (theo Euclid + Bình phương và nhân)
int y0=dao.Calculate(mod.tinhMod(y1, a, p), p);
int ix[] = new int[2];
ix[0]=((int)banMa.charAt(i) * y0) % p;
ix[1]=((int)banMa.charAt(i+1) * y0) % p;
int x=doi.ghepSo(ix); //Ghép cặp sô trên thu được bản rõ ban đầu
tBanRo.append(""+(char)x);
}
}
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 19
Đ
S
Đ
S
2.1.2 Sơ đồ thuật toán Giải Mã
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 20
Begin
Y
1
=(int)banma[0]
KT(P, α,a)
KT(Banm
a)
Nhập (P, α,a)
Nhập
(Banma)
i=1

y
2
=(int)banma[i]
x= y
2
(y
1
a
)
-1
mod p
i+=1
Banro+=(char)x
i>=banma.lengt
h
hienthi(Banro)
2.3 Giao Diện Chương Trình
2.3.1 Home, Mã Hóa, Giải Mã
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 21
TÀI LIỆU THAM KHẢO
[1] Nguyễn Văn Tảo, Hà Thị Thanh, Nguyễn Lan Oanh, bài giảng an toàn và bảo mật thông
tin, 2011.
[2] Đại học Hàng Hải, giáo trình an toàn và bảo mật thông tin,2008.
[3] Tạp chí khoa học và công nghệ, tập 44,số 2, 2006.
[4] />ration.htm
AT8C – Nhóm 11 – Cơ Sở Lý Thuyết Mật Mã Page 22

×