Nội dung : Hệ mật khóa công khai và chữ ký số là 1 tài liệu tham khảo lĩnh vực ứng dụng lý thuyết số vào mật mã học
Mục lục Chương 1.KIẾN THỨC CHUẨN BỊ 1.1.Quan hệ chia hết 1.2.Ước chung lớn 1.3.Quan hệ Đồng dư 1.4.Vành Zm 1.5.Phương trình đồng dư bậc Chương 2.HỆ MẬT KHĨA CƠNG KHAI RSA 2.1.Công thức Euler nghiệm modulo pq 2.2.Hệ mật khóa cơng khai RSA 10 2.3.Kiểm tra tính nguyên tố số nguyên 12 2.3.1 Phân bố tập số nguyên tố 2.3.2 Chứng minh tính nguyên tố kiểm tra xác suất Versus 15 16 2.4.Thuật tốn Pollard:phân tích nhân tử p − 17 2.5.Phân tích thơng qua hiệu bình phương 19 2.6.Số mịn, sàng, xây dựng mối quan hệ cho nhân tử 24 2.6.1 Số mịn 2.6.2 Sàng bậc 2.6.3 Sàng trường số 24 26 32 2.7.Thặng dư bậc thuận nghịch bậc 35 2.8.Mã hóa theo xác suất hệ mật Goldwasser-Micali 40 Chương 3.CHỮ KÝ SỐ 44 3.1.Chữ ký số ? 44 3.2.Chữ ký số RSA 45 3.3.Chữ ký số Elgamal 48 3.3.1 Hệ mật khóa cơng khai Elgamal 3.3.2 Hệ chữ ký Elgamal 48 50 3.4.Chữ ký số DSA 53 Kết Luận 56 Chương KIẾN THỨC CHUẨN BỊ 1.1 Quan hệ chia hết Định nghĩa 1.1.1 Số nguyên a gọi chia hết cho số nguyên b, hay b chia hết a tồn số nguyên c cho a = bc, a chia hết cho b ta viết b | a b gọi ước a, a gọi bội b Nhận xét Nếu a b chia hết cho a = b a = −b Nếu b = a | b |a| ≤ |b| Nếu a | b b | c a | c n Nếu a | a | xi với xi ∈ Z i=1 1.2 Ước chung lớn Định nghĩa 1.2.1 Cho số nguyên a1 , a2 , , an Số nguyên k gọi ước chung d | , với moi i = 1, 2, , n Số nguyên d gọi ước chung lớn d ước chung d chia hết cho ước chung chúng Người ta ký hiệu số lớn tập ước chung gcd(a1 , a2 , , an ) Nếu gcd(a1 , a2 , , an ) = a1 , a2 , , an gọi số nguyên tố Dễ thấy số nguyên a1 , a2 , , an nguyên tố tồn n số nguyên x1 , x2 , , xn cho aj xj = j=1 Bổ đề 1.2.2 (Bổ đề Euclide) Cho số nguyên a, b, c Khi gcd(a, b) = a chia hết bc a chia hết c Chứng minh gcd(a, b) = nên tồn x, y ∈ Z cho ax + by = 1, nhân hai vế với c ta cax + (cb)y = c chia hết cho a Định nghĩa 1.2.3 (Số nguyên tố, hợp số, số phương) Một số nguyên p gọi số ngun tố p > p khơng có ước ngun dương ngồi Một số nguyên m gọi hợp số m = |m| có ước nguyên dương khác khác m Số tự nhiên n gọi số phương tồn số nguyên a cho a2 = n Nhận xét số nguyên tố p chia hết tích ab p | a p | b Định lý 1.2.4 (Định lý số học) Mọi số tự nhiên lớn phân tích thành tích hữu hạn số nguyên tố, phân tích khơng kể đến thứ tự thừa số Định nghĩa 1.2.5 Số số thuộc dãy 1, 2, , n nguyên tố với n ký hiệu ϕ(n), người ta gọi hàm ϕ(n) hàm Euler Nếu p số nguyên tố ϕ(p) = p − số nguyên tố với p 1, 2, , p − 1.3 Quan hệ Đồng dư Định nghĩa 1.3.1 Cho số nguyên dương m, hai số nguyên a b gọi đồng dư modulo m hiệu a − b chia hết cho m.Nếu a đồng dư với b modulo m, ta viết a ≡ b (mod m) gọi đồng dư thức Quan hệ đồng dư modulo m quan hệ tương đương Z, lớp tương đương theo quan hệ gọi lớp đồng dư modulo m, số lớp thặng dư modulo m m Chúng ta ý Nếu ≡ bi (mod m), với i = 1, 2, , n n n ≡ a) i=1 n bi (mod m) i=1 n ≡ b) i=1 bi (mod m) i=1 Nếu a ≡ b (mod m) gcd(a, m) = gcd(b, m) 1.4 Vành Zm Ký hiệu lớp thặng dư modulo m chứa số nguyên a a a (mod m) Tập Zm = {a : a ∈ Z} tập lớp lớp thặng dư modulo m, ta định nghĩa phép toán cộng nhân sau a+b=a+b a.b = a.b Tập Zm với hai phép toán lập thành vành giao hoán có đơn vị phần tử khơng mà ta gọi vành lớp thặng dư modulo m Định lý 1.4.1 Lớp thặng dư a ∈ Zm khả nghịch gcd(a, m) = Chứng minh a ∈ Zm khả nghịch tồn b ∈ Zm cho a.b = hay tồn b ∈ Z cho ab ≡ (mod m) Tức là, tồn số nguyên a x cho ab + mx = 1, điều xảy gcd(a, m) = Nhận xét p số nguyên tố phần tử khác lớp tương đương (mod p) khả nghịch , Zp trường Có thể kiểm tra tập hợp tất phần tử khả nghịch modulo m với phép nhân Zm lập thành nhóm có cấp ϕ(m) Do aϕ(m) ≡ (mod m) với số nguyên a nguyên tố với m Khi m = p số nguyên tố gcd(a, p) = ta có ap−1 ≡ (mod p) Định nghĩa 1.4.2 Cho số nguyên m > số nguyên a cho gcd(a, m) = 1, số nguyên dương d nhỏ cho ad ≡ (mod m) gọi bậc a modulo m Dễ thấy d tồn ước ϕ(m) Định nghĩa 1.4.3 Cho số nguyên m > Số nguyên g gọi nguyên thủy modulo m g có số mũ ϕ(m) Trường hợp tồn nguyên thủy modulo m m gọi có ngun thủy Nếu m có ngun thủy g g phần tử sinh nhóm phần thử khả nghịch modulo m tức nhóm nhóm cyclic cấp ϕ(m), phần tử g s với gcd(s, ϕ(m)) = nguyên thủy modulo m Nói thêm m số 2, số có dạng pn , 2pn với p nguyên tố lẻ n nguyên dương, có ngun thủy 1.5 Phương trình đồng dư bậc Cho phương trình x2 ≡ a (mod p), (1.1) với p nguyên tố lẻ gcd(a, p) = Nếu tồn số nguyên x0 thỏa mãn x20 ≡ a (mod p) x0 gọi nghiệm phương trình Lớp a (mod p) gọi nghiệm phương trình phần tử lớp tương đương nghiệm Dễ thấy x0 nghiệm x0 (mod p) nghiệm Định nghĩa 1.5.1 Số nguyên a gọi thặng dư bậc hay thặng dư tồn phương modulo p phương trình x2 ≡ a (mod p) có nghiệm Định lý 1.5.2 Nếu a thặng dư bậc hai modulo p phương trình x2 ≡ a (mod p) có hai nghiệm Chứng minh Do a thặng dư bậc hai modulo p nên tồn số nguyên x0 cho x20 ≡ a (mod p), x ≡ x0 (mod p) nghiệm Từ (−x0 )2 = x20 ≡ a (mod p) nên x ≡ −x0 (mod p) nghiệm Nếu x0 ≡ −x0 (mod p) 2x0 ≡ (mod p), p số nguyên tố lẻ nên x0 ≡ (mod p) (mâu thuẫn gcd(a, p) = 1), phương trình bậc hai trường Zp có tối đa hai nghiệm, phương trình x2 ≡ a (mod p) có hai nghiệm phân biệt x0 (mod p) −x0 (mod p) Chương HỆ MẬT KHĨA CƠNG KHAI RSA 2.1 Cơng thức Euler nghiệm modulo pq Cho p số nguyên tố, từ Định lý Fermat nhỏ ta có ap−1 ≡ (mod p), gcd(a, p) = Định lý Fermat nhỏ tính chất đẹp số nguyên tố, chuyện xảy ta thay p số nguyên m không nguyên tố? Liệu công thức am−1 ≡ (mod m) với gcd(a, m) = chứ? Ví dụ sau câu trả lời nói chung "khơng" Với m = 15485207, a = ta có 2m−1 = 215485206 ≡ 4136685 (mod 15485207) ≡ (mod 15485207) Tuy nhiên, xem xét khái quát cho trường hợp m = pq với p, q hai số nguyên tố phân biệt Ta bắt đầu với ví dụ đơn giản Với m = 3.5 = 15, xét số mũ modulo 15 ta nhận thấy có nhiều số mũ đồng dư với (mod 15) Cụ thể a4 ≡ với a4 ≡ (mod 15) với (mod 15) a = 1, 2, 4, 7, 8, 11, 13, 14 a = 3, 5, 6, 9, 10, 12 Các số 1, 2, 4, 7, 8, 11, 13, 14 số nguyên tố với 15 Điều gợi ý cho ta phiên định lý Fecmat nhỏ với số nguyên a nguyên tố với m số mũ khơng phải (m − 1) Ta dễ ràng chứng minh a4 ≡ (mod 15) ⇔ a4 a4 ≡1 ≡1 (mod 3) (mod 5) bội chung (3 − 1) (5 − 1), ta đến phát biểu công thức làm tảng cho hệ mật khóa cơng khai RSA Định lý 2.1.1 Cho p q hai số nguyên tố phân biệt đặt g = gcd(p − 1, q − 1) Khi (p−1)(q−1) a g ≡1 với a thỏa mãn gcd(a, pq) = (mod pq), Chứng minh Từ gcd(a, pq) = ta có gcd(a, p) = với gcd(a, q) = Do a a Do a (p−1)(q−1) g (p−1)(q−1) g (p−1)(q−1) g ≡ a(p−1) ≡a ( q−1 ) g p−1 (q−1) ( g ) ≡1 ≡1 q−1 g p−1 g ≡1 (mod p), ≡1 (mod q) ≡ (mod pq) Nếu p = q số nguyên tố lẻ ta có | (p − 1) | (q − 1), | g Vì (p−1)(q−1) (p−1)(q−1) (p−1)(q−1) ≡ (mod pq) | Do a g Hệ mật RSA mà ta nghiên cứu phần tới có độ bảo mật phụ thuộc vào độ khó việc giải phương trình dạng xe ≡ c (mod N ), e, c, N biết, x ẩn Nếu N số nguyên tố phương trình tương đối dễ tìm nghiệm, mơ tả mệnh đề sau Mệnh đề 2.1.2 Cho p số nguyên tố, e ≥ số nguyên thỏa mãn gcd(e, p − 1) = Khi tồn d để ed ≡ (mod p − 1) phương trình xe ≡ c (mod p) (∗) có nghiệm cd (mod p) Chứng minh Chúng ta xét hai trường hợp sau Trường hợp :Giả sử gcd(c, p) = Khi p ước c, c ≡ (mod p) phương trình xe ≡ c (mod p) trở thành xe ≡ (mod p) Tức là, x ≡ (mod p) Vậy cd (mod p) nghiệm phương trình (∗) Trường hợp :Giả sử gcd(c, p) = Bởi Định lý Fermat nhỏ ta có (cd )e = cde ≡ c1+(p−1)k ≡ c.1k ≡ c (mod p) Do cd nghiệm phương trình xe ≡ c (mod p) Bây cd (mod p) nghiệm (∗) Thật vậy, giả sử (∗) có nghiệm x1 , nghĩa xe1 ≡ c (mod p) Khi xe1 d ≡ cd (mod p) Do x1 nghiệm (∗) 1+(p−1)k nên gcd(x1 , p) = Vì xp−1 ≡ (mod p), suy xde ≡ x1 (mod p) = x1 ed d Do x1 ≡ x1 ≡ c (mod p) Vậy nghiệm (*) thuộc lớp đồng dư cd (mod p) Ngược lại, y ≡ cd (mod p) y nghiệm (*) Vậy phương trình (*) có nghiệm cd (mod p) Từ mệnh đề trên, ta thấy phương trình xe ≡ c (mod N ) giải dễ dàng N số nguyên tố Bây xét trường hợp N có dạng đơn giản tích hai số nguyên tố phân biệt N = p.q nghiệm phương trình xe ≡ c (mod N ) cho mệnh đề sau Mệnh đề 2.1.3 Cho p = q hai số nguyên tố, số nguyên e ≥ thỏa mãn gcd(e, (p − 1)(q − 1)) = 1, nghĩa là, tồn d ∈ Z để de ≡ (mod (p − 1)(q − 1)) Khi phương trình xe ≡ c (mod pq)(∗∗) có nghiệm cd (mod pq) Chứng minh Do de ≡ (mod (p−1)(q −1)) nên tồn k ∈ Z để de = 1+(p−1)(q −1)k Trường hợp 1:Giả sử gcd(c, pq) = Khi x1 := cd nghiệm (**), (cd )e = cde = c1+(p−1)(q−1)k ≡ c (mod pq) Giả sử (**) có nghiệm x2 , ta có x2 ≡ x1 (mod pq) Thât vậy, x2 nghiệm (**) nên xe2 ≡ c (mod pq) suy c = xe2 + pqk Lại gcd(c, pq) = nên tồn x, y ∈ Z để cx + pqy = Do (xe2 + pqk)x + pqy = hay xe2 x + pq(kx + y) = Suy gcd(xe2 , pq) = gcd(x2 , pq) = Vì gcd(x2 , p) = gcd(x2 , q) = Tương tự, ta có gcd(x1 , p) = gcd(x1 , q) = Do ta có x2 ≡ x2 de−(p−1)(q−1)l ≡ x2 de x2 (p−1)(q−1)(−l) ≡ x2 de 1−l ≡ cd ≡ x1 (mod pq) Vậy cd (mod pq) nghiệm (**) Trường hợp 2:Giả sử gcd(c, pq) = pq Khi (**) trở thành xe ≡ (mod pq) Từ gcd(c, pq) = pq suy c ≡ (mod pq) Do cd ≡ (mod pq) Vậy x ≡ cd ≡ (mod pq) nghiệm (**) Giả sư xe ≡ (mod pq) có nghiệm u Khi pq | ue hay pq | u Do u ≡ (mod pq) Vậy trường hợp x ≡ ≡ cd (mod pq) nghiệm phương trình xe ≡ (mod pq) Trường hợp 3:Giả sử gcd(c, pq) = p Từ gcd(c, pq) = p, ta có p | c q c Do cd nghiệm (**), cde = c1+(p−1)(q−1)k ≡ c.c(p−1)(q−1)k (mod pq) Do gcd(c, pq) = p nên gcd(c, q) = Bởi định lý Fermat nhỏ, ta có cq−1 ≡ (mod q) c(q−1)(p−1)k ≡ (mod q) Vì q | (c(q−1)(p−1)k − 1) Do pq | c.(c(q−1)(p−1)k − 1) hay e c.(c(q−1)(p−1)k − 1) ≡ (mod pq) Từ c1+(q−1)(p−1)k − c ≡ (mod pq) cd = cde ≡ c (mod pq) Vậy cd nghiệm (**) x1 ≡ cd (mod pq) nghiệm (**) d Giả sử (**) có nghiệm x2 , tức xe2 ≡ c (mod pq) Do xde ≡ c ≡ x1 (mod pq) Mặt khác pq | (xe2 − c) p | (xe2 − c) Vì p | xe2 p | x2 (vì p | c) Do q x2 nên lập luận tương tự làm với c để có cde ≡ c (mod pq) Ở đây, ta có d xde ≡ x2 (mod pq) x2 ≡ x1 (mod pq) Vậy trường hợp này, c (mod pq) nghiệm (**) Trường hợp 4:Giả sử gcd(c, pq) = q Lập luận tương tự trường hợp với p q đổi vai trò cho nhau, ta có x ≡ cd (mod pq) nghiệm (**) Từ trình chứng minh định lý kết Định lý 2.1.1 với nhận xét gcd(e, (p − 1)(q − 1)) = gcd(e, (p−1)(q−1) ) = với g = gcd(p − 1, q − 1), g ) Khi nghiệm ta thay d d thỏa mãn d e ≡ (mod (p−1)(q−1) g (**) cd ≡ cd (mod pq) Ta minh họa kết ví dụ đơn giản sau Ví dụ 2.1.4 Giải phương trình : x17389 ≡ 43927 (mod 64349) Lời giải Ta biết N = 64349 = 229.281 p = 229, q = 281, c = 43927, e = 17389 Hơn gcd(e, (p − 1)(q − 1)) = gcd(e, 228.280) = Vì ta tính d ≡ 53509 (mod 228.280) ( d ≡ 5629 (mod 15960) ) Do nghiệm phương trình x ≡ 4392753509 ≡ 14458 (mod 64349) ( x ≡ 439275629 ≡ 14458 (mod 64349)) Ở ví dụ trên, ta tìm nghiệm dựa vào việc tính d 80% số bước tính để tìm nghiệm thơng qua việc tính d 2.2 Hệ mật khóa cơng khai RSA Bob Alice gặp phải vấn đề thường lệ việc bảo mật thông tin nhạy cảm kênh giao tiếp không an tồn Ta biết có cách khác để giải vấn đề Ví dụ trao đổi khóa Diffie-Hellman hệ mật khóa cơng khai Elgamal mà độ bảo mật dựa độ khó tốn logarit rời rạc Trong phần ta trình bày hệ mật khóa cơng khai RSA mà độ bảo mật dựa vào độ khó việc giải phương trình xe ≡ c (mod N ) N tích hai số nguyên tố phân biệt Alice Bob Tạo khóa Chọn hai số nguyên tố phân biệt p q Chọn số mũ e cho gcd(e, (p − 1)(q − 1)) = Công khai cặp (N, e) với N = pq Mã hóa Chọn thơng điệp m cần mã hóa Sử dụng khóa (N, e) Bob để tính c ≡ me (mod N ) Gửi c cho Bob Giải mã Tính d ≡ e−1 (mod ((p − 1)(q − 1))) Tính m ≡ cd (mod N ) ( m ≡ m (mod N ) Ở bảng trên, Bob chọn số nguyên tố p = q , khóa cơng khai cặp (N, e) với N = p.q gcd(e, (p − 1)(q − 1)) = Alice chọn thông điệp mà cô muốn gửi cho Bob biến thành số nguyên m nằm N mà ta gọi hiện, mã hóa 10 43 Chương CHỮ KÝ SỐ 3.1 Chữ ký số ? Như biết, hệ thống mã hóa đối xứng bất đối xứng giải vấn đề đảm bảm tính bảo mật kênh giao tiếp khơng an tồn Chữ ký số (hay chữ ký điện tử nói chung) mà ta trình bày sau đây, giải vấn đề khác Mỗi chữ ký số có ý nghĩa giống chữ ký bút mực tài liệu vật lý Giả sử Samantha có tài liệu số D cô muốn thêm vào phần thơng tin DSamantha Cái mà sử dụng để chứng minh tài liệu D cô cô xác nhận khơng phải người khác mạo danh.Tuy mục đích khác thành phần hệ chữ ký số gần tương tự hệ mã hóa bất đối xứng, bao gồm khóa bí mật, khóa cơng khai thuật tốn sử dụng khóa Các thành phần làm nên hệ chữ ký số bao gồm • Một khóa bí mật K pri • Một khóa cơng khai K P ub • Một thuật toán để tạo chữ ký với đầu vào tài liệu D cần ký với khóa bí mật K P ri , đầu chữ ký DSig D • Một thuật tốn để kiểm định chữ ký với đầu vào tài liệu D, chữ ký Dsig , khóa cơng khai K P ub trả giá trị " " "sai" Hệ chữ ký số giúp Samantha xác nhận tài liệu D cô ký mà người khác Mặt khác, tài liệu D kèm chữ ký hợp lệ Samantha khiến cô "khơng thể phủ nhận" tài liệu cô ký Nghĩa cô phải chịu trách nhiệm với tài liệu có chữ ký hợp lệ Chú ý 3.1.1 Người kiểm định chữ ký khơng biết K P ri xác định tính hợp lệ DSig , giá trị đầu "đúng" DSig thỏa mãn điều kiện mối quan hệ ràng buộc D, K P ub DSig , qui định thuật toán kiểm định Do Eve muốn mạo danh chữ ký Samantha để ký lên tài liệu D Những cần làm tạo chữ ký tương ứng thỏa mãn quan hệ Bởi vậy, 44 hệ chữ ký số cần đảm bảo việc mạo danh chữ ký khó xảy Những điều kiện cần thiết hệ chữ ký số • Đưa K P ub việc tìm K pri khơng khả thi khơng thể tìm K P ri khác mà có khả tạo chữ ký hợp lệ K pri • Đưa K P ub danh sach tài liệu số với khóa hợp lệ nó, (Di , DiSig ), i = 1, 2, N , việc tìm chữ ký hợp lệ tài liệu số D khác Di biết khơng khả thi • Việc tạo kiểm định chữ ký thuận tiện Sau ta mô tả vài hệ chữ ký số 3.2 Chữ ký số RSA Hệ chữ ký số RSA thiết lập gần tương tự hệ mật mã khóa cơng khai RSA Giả sử Samantha có tài liệu D dạng số với < D < N cô muốn ký lên D Đầu tiên, cô chọn hai số nguyên tố bí mật p, q công khai giá trị N = p.q với số mũ e > với e thỏa mãn gcd(e, (p − 1)(q − 1)) = Số mũ e dùng làm số mũ xác nhận thuật tốn kiểm định Tiếp theo, tìm d cho de ≡ (mod (p − 1)(q − 1)) giữ bí mật d để làm số mũ tạo chữ ký Nghĩa cô sử dụng d làm khóa bí mật để "mã hóa" tài liệu D thành chữ ký Dsig (lưu ý hệ mật RSA chọn ngược lại Số mũ cơng khai số mũ dùng để mã hóa, số mũ giữ bí mật số mũ dùng để giải mã) Để ký lên D, Samantha tính S với < S < N S ≡ Dd (mod N ) Sau dùng S làm chữ ký D Cuối cùng, cô gửi cặp (D, S) cho Vicror (người kiểm định) Bây giờ, để kiểm định chữ ký, Victor tính S e modN chứng thực Se (mod N ) = D Nếu Eve phân tích N có khóa bí mật d Như phải đối mặt với tốn phân tích N Nhưng nhớ mục đích ban đầu Eve tạo chữ ký hợp lệ với khóa công khai Samantha để làm giả chữ ký cho tài liệu D Những Eve cần làm tìm S cho S e ≡ D (mod N ) Nghĩa tốn ban đầu phải đối mặt giải phương trình xe ≡ D (mod N ) Độ khó tốn giải phương trình đồng dư độ khó việc bẻ khóa hệ mật RSA Bây mơ tả hệ chữ ký RSA bảng sau 45 Samantha Victor Samantha Tạo khóa Chọn hai số ngun tố bí mật p q Chọn số mũ e cho gcd(e, (p − 1)(q − 1)) = Công khai N = p.q e Tạo chữ ký Chọn tài liệu < D < N Tính d thỏa mãn de ≡ (mod (p − 1)(q − 1)) Tính S mod N S ≡ Dd (mod N ) Gửi cặp (D, S) cho Victor Kiểm định chữ ký Tính Se (mod N ) xác minh D Ví dụ 3.2.1 Ta mơ tả hệ chữ ký RSA với số nhỏ làm ví dụ 46 Samantha Victor Samantha Tạo khóa Chọn hai số nguyên tố p = 1223 q = 1987 Chọn e = 948047 Tính N = 1223.1987 = 2430101 Cơng khai (N, e) = (2430101, 948047) Tạo chữ ký Chọn D = 1070777 ≡ 948047−1 (mod (2426892)) Tính d ≡ 1051235 Tính SmodN S ≡ Dd (mod N ) ≡ 10707771051235 ≡ 153337 (mod 2430101) Công khai cặp (D,S) = (1070777, 153337) Kiểm định chữ ký Tính S e = 153337948047 ≡ 1070777 (mod N ) Xác nhận se modN = 1070777 = D 47 Chú ý 3.2.2 Như với mã hóa RSA, ta chọn d e thỏa mãn de ≡ (mod (p − 1)(q − 1) ) gcd((p − 1), (q − 1)) mà hệ chữ ký RSA làm việc 3.3 Chữ ký số Elgamal 3.3.1 Hệ mật khóa cơng khai Elgamal Alice bên thứ ba đáng tin cậy chọn số nguyên tố p đủ lớn số nguyên g có cấp lớn nhóm nhân Fp∗ cơng khai p g Giả sử Alice chọn g nguyên thủy modulo p, tức g có cấp p − (hoặc Alice chọn g giá trị có cấp q (nguyên tố) đủ lớn (cỡ 280 ) cách chọn số a (p−1) khả nghịch modulo p ước nguyên tố (lớn) q (p − 1) Sau tính g = a q Nếu g = 1, g có cấp q ) Bây Alice tạo khóa bí mật số ngun dương a với < a < p − công khai giá trị A ≡ g a (mod p) Bob người muốn gửi m cho Alice Chọn số ngun k ngẫu nhiên (khơng bền) Sau tính ck = g k (mod p) c = mAk (mod p) gửi mã (ck , c) cho Alice Để giải mã, Alice tính (cak )−1 c (mod p) lượng m, −1 (cak )−1 c ≡ (g ak ) −1 m.Ak ≡ (g ak ) m.g ak ≡ m (mod p) Ta mơ tả hệ mật khóa cơng khai Elgamal bảng sau 48 Alice công khai số nguyên tố p lớn g nguyên thủy modulo p Alice Bob Tạo khóa Chọn khóa bí mật a với 1