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 . C
hi ph
64 12
Đị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à:
1);
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–
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*
ã Tp cỏc kh cng 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à g thƣờ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 < p vớ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
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).
Khố cơng khai: (p, g, y) Khĩa riêng: ( x )
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 2.6.4Tính đúng của q 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
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 q 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