hệ mã Elgamal Elgamal là một hệ mật mã công khai. Hệ Elgamal là 1 biến thể của sơ đồ phân phối khóa DiffieHellmal, được đưa ra năm 1984. So với RSA, Hệ Elgamal không có nhiều rắc rối về vấn đề quyền sử dụng. Hệ mật mã elgamal được xây dựng dựa trên bài toán logarithm rời rạc. Tính an toàn của nó phụ thuộc vào độ phức tạp của bài toán logarithm. 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 ≤ p2 : αa ≡ β(mod p) Ta sẽ xác định số nguyên a bằng loga β
Trang 1TRƯỜNG ĐẠI HỌC ĐỒNG THÁP
LỚP LIÊN THÔNG ĐHSP TIN CÀ MAU
- -
Đề tài:
Giảng viên hướng dẫn: Nguyễn Trọng Nhân Sinh viên thực hiện: Trần Văn Kiếm
MSSV: 6120440556
CÀ MAU – 01/2022
TIỂU LUẬN KẾT THÚC MÔN
BẢO MẬT THÔNG TIN
HỆ MẬT MÃ ELGAMAL
Trang 2MỤC LỤC
I CƠ SỞ LÝ THUYẾT 3
1 Cơ sở xây dựng hệ mã Elgamal 3
2 Hệ mã Elgamal 3
a Tạo khóa: 3
b Mã hóa: 3
c Giải mã: 3
II BÀI TẬP MINH HỌA 4
1 Bài tập 1 4
2 Bài tập 2 6
III ƯU, KHUYẾT ĐIỂM VÀ CẢI TIẾN 6
1 Ưu điểm: 7
2 Nhược điểm: 7
3 Độ phức tạp của hệ mật mã Elgamal 7
4 Thám mã đối với hệ mật mã elgamal 7
a Thuật toán Shank (cân bằng thời gian) 7
b Thuật toán Pohlig-Hellman 11
c Thuật toán mật mã khóa bất đối xúng tương lai 12
d Đánh giá độ phức tạp thuật toán 15
e Kết luận 16
III PHẦN LẬP TRÌNH 16
1 Giới thiệu 16
2 Code ngôn ngữ Python 17
3 Ảnh minh họa code 18
a Ảnh khi chạy chương trình 18
b Ảnh sau khi được mã hóa và giải mã 19
Trang 3I CƠ SỞ LÝ THUYẾT
1 Cơ sở xây dựng hệ mã Elgamal
- Elgamal là một hệ mật mã công khai
- Hệ Elgamal là 1 biến thể của sơ đồ phân phối khóa Diffie-Hellmal, được đưa ra năm 1984
- So với RSA, Hệ Elgamal không có nhiều rắc rối về vấn đề quyền sử dụng
- Hệ mật mã elgamal được xây dựng dựa trên bài toán logarithm rời rạc Tính
an toàn của nó phụ thuộc vào độ phức tạp của bài toán logarithm
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 loga β
2 Hệ mã Elgamal
a 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
b Mã hóa:
Chọn 1 số ngẫu nhiên bí mật k Є Zp-1 ,(chú ý là sau khi mã hóa xong thì k sẽ bị hủy) ta xác định : ek(x,k)=(y1 , y2 )
Trong đó: y1= αk mod p
c Giải mã:
Với y1 , y2 Є Zp* ta xác định : dk(y1 , y2 )= y2(y1a )-1 mod p
Trang 4Sơ đồ mã hóa và giải mã hệ mật Elgamal
II BÀI TẬP MINH HỌA
1 Bài tập 1
Cho p= 569 , α = 2 ,a = 109 ,x= 257 , chọn k= 79
β ≡ 2109 mod 569
= > β= 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:
+ y1= αk mod p
= 279 mod 569
Trang 579 2 2
= > y1= 394
+ y2 = x βk mod p
= 257 22979 mod 569
• Tính: 22979 mod 569
= > y2 =257.140 mod 569 = 133
Vậy người A sẽ gửi bản mã (y1,y2) =(394,140) cho người B
Giải mã:
Người B nhận được bản mã (y1,y2) sẽ tiến hành giải mã :
x= y2(y1a )-1 mod p = 140.(394109)-1 mod 569
• Tính 394109 mod 569
Kq= 140 Tính (140)-1 mod 569
Trang 69 1 -4 15
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
2 Bài tập 2
Cho Hệ Elgamal có p = 2579; α = 2; a = 765; chọn k ngẫu nhiêu là 853 Bản
rõ M = 1299
Tìm khóa của hệ mã trên?
Mã hóa:
Trước hết ta tính: β = α mod p = 2765 mod 2579 = 949
Để mã hóa thông điệp M = 1299 ta tính theo k =853:
C1 = α k mod p = 2 853 mod 2579 =435
C2 = (M*β k )mod p = (1299*949 853 ) mod 2579 =2396
Vậy bản mã được gửi đi sẽ là C = (435, 2396)
Giải mã:
Với khóa bí mật a= 765:
(C 1a) -1) mod p = (C1(p-1-a)) mod p = (435(2579-1-765)) mod 2579
= (4351813) mod 2579 = 1980
M = (C2* (C 1a) -1) mod p = (2396*1980) mod 2579 = 1299
Kết luận:
Xây dựng được hệ mã Elgamal bộ khóa:
K = (p, α, a, β) = (2579, 2, 765, 949) với:
- Thành phần khóa công khai:
𝐊𝐔 = (α, β, p)
- Thành phần khóa bí mật:
K R = (a, p) = (765, 2579)
- Mã hóa M=1299 với C(C 1 , C 2 ) = (435,2396)
III ƯU, KHUYẾT ĐIỂM VÀ CẢI TIẾN
Trang 71 Ư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
Độ phức tạp của bài toán logarith lớn nên đọ an toàn cao
Bản mã phụ thuộc vào bản rõ x và giá trị ngẫu nhiên nên từ một bản rõ ta có thể
có nhiều bản ma khác nhau
2 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
3 Độ phức tạp của hệ mật mã Elgamal
Theo thời gian: O(p)
Theo không gian:O(1)
4 Thám mã đối với hệ mật mã elgamal
a 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
* 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 tj: (j, αm.j mod p ) theo αm.j mod p và lưu vào danh sách
L1
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 ti: (I, β.α-i mod p) theo β.α-i mod p và lưu vào danh sách L2
Bước 5: Tìm trong hai danh sách L1và L2 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
= > am.j+i mod p = β mod p
= > a=(m.j+i) mod (p-1)
Trang 8* Độ 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 : 29.j mod 79 với 0≤ j≤8
j =0 => t=1; tj (0,1)
j=1=> 29mod 79 =38; tj (1,38)
j=2=>218 mod 79=13; tj (2,22)
j=3=>227mod 79=46; tj(3,46)
j=4=>236mod 79;
=> tj(4,10)
j=5=>245mod 79
=> tj(5,64)
J=6 => 254mod 79
Trang 9x a d=1
=>tj(6,62)
j =7 => 263mod 79
=> tj(7,65)
j =8 =>272 mod 79
2 50 x
1 51 21 =>tj(8,21)
B2: Sắp xếp các cặp tj 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.(2i)-1 mod 79
i =0: 20 mod 79 = 1 => 1-1 mod 79=1 => 55.(20)-1 mod 79 =55
= >ti(0,55)
Trang 10i =1:21 mod 79=2 => 2-1mod 79=40(tính theo EuClic)
=> 55.(21)-1 mod 79 = 55.40 mod 79=67
= >ti(1,67)
i =2:22 mod 79 =4 => 4-1 mod 79= 20
=>55.(22)-1 mod 79= 55.20 mod 79=73
= >ti(2,73)
i =3: 23 mod 79 =8 => 8-1 mod 79 = 10
=> 55.(23)-1 mod 79=55.10 mod 79=76
= >ti(3,76)
i =4:24 mod 79=16 => 16-1 mod 79 = 5
=> 55.(24)-1 mod 79 = 55.5 mod 79=38
= >ti(4,38)
i =5:25mod 79=32=>32-1mod 79=42
= > 55.(25)-1 mod 79=55.42 mod 79= 74
= >ti(5,74)
i =6:26 mod 79 =64 =>64-1mod 79= 21
= > 55.(26)-1 mod 79 = 55.21 mod 79=49
= >ti(6,49)
i =7:27 mod 79=49 => 49-1 mod 79=50
= > 55.(27)-1 mod 79=55.50 mod 79= 64
= >ti(7,64)
i =8:28 mod 79=19 => 19-1 mod 79 =25
= > 55.(28)-1 mod 79= 55.25 mod 79 = 32
= >ti(8,32)
B4: Sắp xếp các cặp ti: (I, β.α-i mod p) theo thứ tự tăng của β.α-i mod p và lưu vào danh sách L2 :
ti(8,32) ; ti(4,38) ; ti(6,49) ; ti(0,55) ; ti(7,64) ; ti(1,67) ; ti(4,73) ; ti(5,74) ;
ti(3,76)
B5: Tìm trong hai danh sách L1và L2 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 tj(1,38) và cặp ti(4,38) có tọa độ thứ 2 bằng nhau cùng bằng 38 và cặp tj(5,64) với cặp ti(7,64) có tọa độ thứ 2 bằng 64
Trang 11= > 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
= > β≡ 213 mod 79
= > β=55 đúng theo bài ra β =55
Tính theo a=52
= > β≡ 252 mod 79
= > β= 55 (đúng theo bài ra)
b 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(p1/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 = 2n
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
Trang 12m= m0+2m1 +4m2+… + 2n-1mn-1 Khi đó,
1 nếu m0=0
=
-1 nếu m0= 1
Việc tính β(p-1)/2 mất nhiều nhất 2[log2p] bước và sẻ cho ta m0 Khi xác định được
β1=β.α-m
0, ta lặp lại thao tác tương tự để tính m1:
1 nếu m1=0
=
-1 nếu m1=1
Quá trình tính toán cứ thế tiếp diễn cho tới khi chúng ta tìm được mi Độ phức tạp
của thuật toán là : n.(2[log2p]+2) ~O((log2p)2)
c Thuật toán mật mã khóa bất đối xúng tương lai
* 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
Zp* là đủ khó Có thể chọn bằng 8, 16, 32, 64 hoặc 128 byte
- Khoá công khai Kpu = (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 Kpr = a
* 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 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]
Trang 13K 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
* Quá trình giải mã
Nhận được C[i], C[i-1] và biết trước khóa bí mật Kpr = 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)
* 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)
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
Trang 14Chứng minh(2): Tương tự, xét bảng chân trị sau:
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 = r1v với 0 ≤ r1< z,
y mod z = r2v với 0 ≤ r2< z,
x(y mod z)] mod z = xr2mod z = r3v với 0 ≤ r3< z
Dễ thấy: xy= nz+ r1 (1’)
y=mz + r2 với m, n,k là các số nguyên không âm (2’)
x r2=kz + r3 (3’)
Rút r2 ở biểu thức (2’) thay vào biểu thức (3’) ta được:
So sánh với biểu thức(1’) ta được:
(k + mz)x + r3 = nz + r1
Dễ dàng nhận thấy r1 = r3 .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ó:
Dựa vào (1) suy ra B[i] = C[i] XOR C[i-1]
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)
Trang 15=[(𝛼𝑎 𝑚𝑜𝑑 𝑝)𝑘 mod p] XOR X[i] XOR (𝛼𝑎𝑘 mod p) (*)
Mặt khác, ta lại có:
𝛼𝑎𝑘 mod p = 𝛼𝑎(𝑘−1) 𝛼𝑎 mod p
= [𝛼𝑎(𝑘−1) (𝛼𝑎 mod p) mod p] (theo 3)
=(𝛼𝑎 mod p) 𝛼𝑎(𝑘−1)mod p
=(𝛼𝑎 mod p) 𝛼𝑎(𝑘−2)𝛼𝑎 mod p
=[(𝛼𝑎 mod p) 𝛼𝑎(𝑘−2)(𝛼𝑎 mod p)] mod p (theo (3)) =(𝛼𝑎 mod p)2 𝛼𝑎(𝑘−2) mod p
= (𝛼𝑎 mod p)𝑘 mod p
Thay vào (*) ta thu được
VP = [(𝛼𝑎 mod p)𝑘 mod p] XOR X[i] XOR[(𝛼𝑎 mod p)𝑘 mod p]
= [(𝛼𝑎 mod p)𝑘 mod p] XOR [(𝛼𝑎 mod p)𝑘 mod p] XOR X[i]
= X[i]
=VP(đpcm)
d Đá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à864 = 2192 = 10192𝑙𝑔2 ≈ 1058 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.1013), 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à 1058/(2.1013) =5.1044(giây) ≈1.6.1037 (năm)
Rõ ràng độ bảo mật tăng lên vô cùng lớn
Trang 16Kí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 𝑦1 và 𝑦2 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 này loạ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 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 khoảng 2/3 kiến trúc phần
cứng cho quá trình mã hóa và giải mã
e 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 toán 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
III PHẦN LẬP TRÌNH
1 Giới thiệu
Elgamal Encryption là một loại thuật toán khóa bất đối xứng được sử dụng để
mã hóa Nó được sử dụng cho mật mã khóa công khai và dựa trên trao đổi khóa
Diffie-Hellman
Ở đây, em sẽ bao gồm phần giới thiệu, cách sử dụng, thuật toán và mã bằng Python cho thuật toán mã hóa Elgamal
Mật mã mã hóa khóa không đối xứng này dựa trên sự khó khăn trong việc tìm kiếm lôgarit rời rạc trong một nhóm tuần hoàn, nghĩa là chúng ta biết g ^ a và g ^ k, tính g ^ ak
Sử dụng: Hệ thống mật mã kết hợp sử dụng thuật toán này
Thuật toán:
Thuật toán mã hóa Elgamal có ba phần:
- Chọn khóa