Vào năm 1985, Hệ mật mã khố cơng khai ElGamal đƣợc giới thiệu bởi T. ElGamal. Độ an tồn của hệ này phụ thuộc vào độ khĩ giải bài tốn logarithm rời rạc trong trƣờng số hữu hạn Zp. Vì vậy, số nguyên tố p cần phải đƣợc chọn sao cho bài tốn logarithm là khĩ tính tốn. Trƣờng hợp đặc biệt để ngăn ngừa sự tấn cơng, thì số nguyên tố p cần phải đƣợc chọn sao cho số (p - 1) cĩ ít nhất một thừa số nguyên tố lớn q.
2.6.1 Bài tốn logarithm rời rạc
Định nghĩa 2.1: Một trƣờng hữu hạn là một trƣờng F chứa một số hữu hạn
các phần tử. Bậc của nhĩm F là số các phần tử tồn tại trong F .
Hình xxx: Đồ thị so sánh chi phí tấn cơng khĩa bí mật và khĩa cơng khai
64 128 256 512 1K 2K 4K
Độ dài mã khóa (bits)
C
hi
phí
1 2
1. Khĩa bí mật 2. Khĩa cơng khai
Định nghĩa 2.2: Cho Fq là một trƣờng hữu hạn, và một phần tử g Fq, định nghĩa bậc (order) của g là số nguyên dƣơng m nhỏ nhất sao cho: gm 1(mod q), và ký hiệu là:
Ordq(g) = m
Định nghĩa 2.3: Một phần tử sinh g của trƣờng hữu hạn Fq, nếu g cĩ bậc (q–
1);
Phát biểu tương đương: g là phần tử sinh (chính), nếu lũy thừa của g cĩ thể
sinh ra tất cả các phần tử khác khơng của Fq*. Nghĩa là:
{gx : 0 ≤ x ≤ q – 2} = Fq*
Định lý 2.1: Mỗi trƣờng hữu hạn đều cĩ phần tử sinh. Nếu g là một phần tử
sinh của Fq* thì gj là phần tử sinh nếu và chỉ nếu gcd(j, q –1) = 1. Vậy cĩ tổng cộng φ(q – 1) phần tử sinh khác nhau của Fq*.
Định nghĩa 2.4: Cho G là một nhĩm vịng (cyclic) hữu hạn cĩ bậc n và g là
phần tử sinh của G. Logarithm rời rạc của y cơ số g, kí hiệu loggy là một số nguyên duy nhất x, với 0 x n – 1 sao cho:
y = gx.
Bài tốn 2.1: Cho số nguyên tố p, một phần tử sinh g của Zp*, và một phần
tử y Zp*, tìm số nguyên x , 0 x p – 2 sao cho: y = gx (mod p), (tìm x = loggy).
2.6.2 Định nghĩa các tập làm việc của hệ mật mã ElGamal
Tập các bản rõ M = Zp*= {1, 2,..., p-1}
Tập các bản mã C = Zp* Zp*
Tập các khố cơng khai Ke = {p} P Zp* ( với P là tập các phần tử sinh)
Tập các khĩa riêng Kd = Zp - 1 = {1, 2,..., p – 2}
2.6.3 Quá trình tạo khố, mã hố, giải mã
a) Tạo khố:
Tạo số nguyên tố p lớn sao cho bài tốn logarithm rời rạc trong Zp là khĩ giải và số p – 1 cĩ ít nhất một thừa số nguyên tố q lớn.
Chọn số g Zp* là phần tử sinh. Các giá trị p và gthƣờng đƣợc sử dụng nhƣ những tham số chung trong nhĩm.
Ngƣời sử dụng chọn ngẫu nhiên số x sao cho 0 < x < p – 2, và định nghĩa: K = {(p, g, x,y y = gx (mod p)}.
Cơng bố bộ ba số nguyên (p, g, y) làm khố cơng khai, cịn số nguyên x đƣợc giữ bí mật làm khĩa riêng.
b) Mã hố:
Mã hĩa thơng điệp M gửi cho B, thì ngƣời gửi A thực hiện các bƣớc nhƣ sau:
Dùng thuật tốn để chia thơng điệp M ra nhiều khối cĩ chiều dài cố định và mỗi khối đƣợc biến đổi thành một số nguyên tƣơng ứng Mi < p, (i =1,.…, k).
- Biến đổi các ký tự của thơng điệp thành các số tƣơng ứng, thí dụ theo qui tắc: Dấu cách 00, A 01, B 02,..., Z 26.
- Chia thơng điệp số vừa biến đổi thành r nhĩm số cĩ chiều dài bằng nhau, mỗi nhĩm biểu diễn một số nguyên Mi < pvới (1 i r).
Lấy khĩa cơng khai của ngƣời nhận B (p, g, y).
Chọn ngẫu nhiên một số nguyên k sao cho 0 k (p – 2).
Mã hố lần lƣợt từng số Mi với khĩa cơng khai của ngƣời nhận, bằng cách tính: Ci = Eke(Mi) = (Ci1, Ci2), với Ci1 = gk mod p và Ci2 = Mi*yk mod p
Tập số {C1, C2,...,Cr}, với Ci = (Ci1, Ci2), i = 1,…, r là bản mã gửi cho B.
c) Giải mã:
Để giải mã bản mã {C1, C2,...,Cr }, ngƣời nhận B thực hiện các bƣớc nhƣ sau:
Giải mã lần lƣợt các cặp số Ci = (Ci1, Ci2), với 1 i r Tính: Mi = DKd(Ci1, Ci2) = Ci2 * (Ci1x) -1 mod p.
Kết quả thu đƣợc là tập các số nguyên lớn { M1, M2,..., Mr }. Biến đổi các số nguyên Mi trở lại các chuỗi ký tự tƣơng ứng và khơi phục lại thơng điệp M.
Bảng 2.1: Tĩm tắt các bước tạo khố, mã hố, giải mã của Hệ ElGamal
2.6.4 Tính đúng của quá trình giải mã
Ta cĩ: y = gx (mod p) (định nghĩa) và C1 = gk mod p C2 = M *yk mod p DKd(C1, C2) = C2 * (C1x)-1 mod p = M * yk * ([gk)-x mod p = M * gx]k * ([gk)-x mod p = M * gkx * g-kx mod p = M mod p mà M < p, vậy DKd(C1, C2) = M mod p = M
2.6.5 Đánh giá độ an tồn và khả năng ứng dụng của hệ mật mã khĩa cơng khai ElGamal
2.6.5.1 Độ an tồn
Để đảm bảo độ an tồn cho hệ ElGamal ngƣời thiết kế phải tạo số nguyên tố
Mã hố: Mã hố bản rõ M
* Chọn số ngẫu nhiên k: 1 k p – 2
* Tính C = Eke(M) = (C1, C2) với C1 = gk (mod p), C2 = M*yk (mod p)
Giải mã: Giải mã bản mã C
M = D(C) = Dkd(C1, C2) = C2 * (C1x) -1 mod p
Tạo khố:
* Tạo số nguyên tố p lớn, sao cho bài tốn logarithm rời rạc trong Zp* là khĩ thực hiện.
* Chọn g Zp*là phần tử sinh. * Chọn ngẫu nhiên số 0 < x < p – 2. * Tính y = gx (mod p).
p lớn (khoảng 1024-bits), sao cho số p – 1 cĩ ít nhất một thừa số nguyên tố q lớn nhằm ngăn ngừa sự tấn cơng của kỹ thuật Pohlig-Hellman. Ngồi ra số ngẫu nhiên k khơng đƣợc sử dụng để mã hĩa nhiều hơn một thơng địêp. Vì nếu sử dụng k để mã hố cho hai thơng điệp M và M’ với kết quả là (C1, C2) và (C1’, C2’) thì ta cĩ C2(C2’) M(M’)-1(mod p). Vậy nếu biết đƣợc M thì M’ cĩ thể tính tốn đƣợc dễ dàng.
2.6.5.2 Khả năng thực hiện và ứng dụng
Phƣơng pháp tính tốn của hệ mã ElGamal rất phức tạp, vì địi hỏi nhiều phép tính lũy thừa modulo trong quá trình mã hĩa và giải mã, nên cĩ hiệu suất thực hiện kém. Do đĩ thƣờng khơng đƣợc ứng dụng trong những trƣờng hợp mã hĩa khối lƣợng lớn dữ liệu. Tính chất khơng thể phủ nhận (non-repudiation) của hệ này là cơ sở của các lƣợc đồ chứng thực và chữ ký điện tử (phiên bản sửa đổi của lƣợc đồ chữ ký ElGamal là chữ ký DSA đƣợc dùng trong chuẩn chữ ký điện tử của NIST ở Mỹ và cả thế giới).
CHƢƠNG 3 : MỘT SỐ GIẢI THUẬT XỬ LÝ SỐ HỌC ÁP DỤNG ĐỂ TỐI ƢU HĨA QUÁ TRÌNH MÃ HĨA VÀ GIẢI MÃ
CỦA HỆ MÃ RSA