3.1.1 Hệ mật ElGamal
3.1.1.1 Thuật toán hình thành khóa
Thuật toán hình thành khóa bao gồm các bước như sau: 1- Chọn số nguyên tố p đủ lớn.
2- Chọn g là phần tử sinh của nhóm Z∗p.
3- Chọn khóa mật x là số ngẫu nhiên thỏa mãn: 1<x< p. Tính khóa công khai (y) theo công thức:
y= gxmodp
3.1.1.2 Thuật toán mật mã ElGamal a) Thuật toán mã hóa
Giả sử đối tượng gửi là A, đối tượng nhận là B. Đối tượng nhận B có khóa bí mật là xB và khóa công khai là yB. Khi đó, để gửi thông điệp dữ liệu M cần bảo mật nội dung cho B, với: 0≤M < p, đối tượng gửi A sẽ thực hiện các bước như sau:
1- Chọn số ngẫu nhiên k thỏa mãn: 1<k< p
2- Tính giá trị R theo công thức: R=gk modp
3- Sử dụng khóa công khai của B để tính: C =M×( )yB kmodp
4- Gửi bản mã gồm (C,R) đến đối tượng nhận B. b) Thuật toán giải mã
Để khôi phục thông điệp dữ liệu ban đầu (M) từ bản mã (C,R) nhận được, đối tượng nhận B thực hiện các bước như sau:
1- Tính giá trị Z theo công thức: Z =( )R xBmodp
2- Tính giá trị nghịch đảo của Z: Z−1=( )Z −1modp
3- Khôi phục bản tin ban đầu (M): M =C×Z−1modp
3.1.1.3 Thuật toán chữ ký số ElGamal a) Thuật toán hình thành chữ ký
Thuật toán ký lên thông điệp dữ liệu M bao gồm các bước như sau: 1- Chọn một giá trị ngẫu nhiên k thỏa mãn: 1 < k < p-1.
2- Tính thành phần thứ nhất R của chữ ký theo công thức: R=gkmodp
3- Thành phần thứ hai S của chữ ký được tính theo công thức: S =k−1(H(M)−x×R)mod(p−1), ở đây H(.) là hàm băm. b) Thuật toán kiểm tra chữ ký
Thuật toán kiểm tra tính hợp lệ của chữ ký (R,S) tương ứng với thông điệp dữ liệu M bao gồm các bước như sau:
1- Tính vế thứ nhất của phương trình kiểm tra: A= gH(M)modp
B= yR×RS modp
3- Kiểm tra nếu A=B thì chữ ký (R,S) hợp lệ, do đó nguồn gốc và tính toàn vẹn của thông điệp dữ liệu M được công nhận.
3.1.2 Chuẩn chữ ký số GOST R34.10-94
3.1.2.1 Thuật toán hình thành khóa
Thuật toán hình thành khóa bao gồm các bước sau:
1- Chọn p là số nguyên tố, kích thước từ 509 đến 512 bít, và q cũng là số nguyên tố sao cho: q|(p−1) [16].
2- Chọn 1<g <(p−1) có bậc là q, nghĩa là ( )g q ≡1modp.
3- Chọn 1<x<q là khóa bí mật, và tính khóa công khai theo công thức: y= gxmodp
4- Giữ bí mật giá trị x; công khai các giá trị: p, q, g, y. 3.1.2.2 Thuật toán hình thành và kiểm tra chữ ký a) Thuật toán hình thành chữ ký
Thuật toán bao gồm các bước:
1- Chọn số ngẫu nhiên k thỏa mãn: 1<k<q
2- Tính thành phần thứ nhất của chữ ký: R=(gkmodp)modq
3- Tính thành phần thứ hai của chữ ký: S =(H( )M ×k+x×R)modq
4- Chữ ký tương ứng với thông điệp dữ liệu M là cặp (R,S). b) Thuật toán kiểm tra chữ ký
Thuật toán kiểm tra chữ ký bao gồm các bước: 1- Tính giá trị V theo công thức sau:
V =(H( )M )q−2modq
Z1=S×Vmodq
3- Tính giá trị Z2 theo công thức sau: Z2 =(q−R)×Vmodq
4- Tính giá trị U theo công thức sau:
U =(( ) ( )g z1 × y z2modp) modq
5- So sánh U và R, nếu U = R thì chữ ký hợp lệ, nguồn gốc và tính toàn vẹn của thông điệp dữ liệu M được công nhận.
3.1.3 Cơ sở xây dựng hệ mật ElGamal và chuẩn chữ ký sốGOST R34.10-94 GOST R34.10-94
Hệ mật ElGamal và chuẩn chữ ký số GOST R34.10-94 là một lớp các thuật toán mật mã khóa công khai và chữ ký số được xây dựng trên cơ sở Bài toán logarit rời rạc trong trường hữu hạn nguyên tố (Bài toán logarit rời rạc), mà hiện tại vẫn được xem là một bài toán khó [23], [24], [34], bài toán này có thể được phát biểu như sau: Cho số nguyên tố p, gọi *
p Z g∈ là phần tử sinh của * p Z và một phần tử * p Z y∈ . Cần xác định số nguyên dương * p Z x∈ sao cho p y
gx ≡ mod . Bài toán logarit rời rạc được xem là bài toán khó nếu p được chọn đủ lớn và (p-1) phải có ít nhất một thừa số nguyên tố lớn. Hiện tại chưa có giải thuật thời gian đa thức cho bài toán này.
Ở hệ mật ElGamal và chuẩn chữ ký số GOST R34.10-94, Bài toán logarit rời rạc được sử dụng với vai trò của hàm một chiều trong việc hình thành khóa. Nghĩa là, từ một khóa bí mật (x) cho trước, dễ dàng tính được khóa công khai (y) tương ứng, nhưng điều ngược lại thì rất khó thực hiện, khi đó sẽ phải giải Bài toán logarit rời rạc.
Mục đích của việc tấn công vào thuật toán mật mã ElGamal là khôi phục thông điệp dữ liệu M từ bản mã (C,R) và các tham số công khai của hệ thống: p, q, g. Có thể khôi phục nội dung thông điệp dữ liệu M từ thuật toán mã hóa:
( )y p
C
M = × B −kmod , hay thuật toán giải mã: M C ( )R xB p
mod
−
×
k hoặc x có thể tính được. Để tính được x hoặc k, cần phải giải được một trong hai bài toán logarit rời rạc: y =( )g xmodp hoặc: R=( )g kmodp.
Tấn công vào các lược đồ chữ ký số ElGamal và GOST R34.10-94 là tạo ra chữ ký giả mạo phù hợp với một thông điệp dữ liệu cho trước. Việc giả mạo chữ ký của một đối tượng U có thể thực hiện thành công nếu tính được khóa bí mật x từ khóa công khai y tương ứng của đối tượng U. Một cách khác để tính được khóa bí mật x là tính khóa ngắn hạn k từ thành phần thứ nhất R của chữ ký, sau đó giải: S =k−1(H(M)−x×R)mod(p−1) đối với thuật toán ElGamal, hay giải: S =(H( )M ×k+x×R)modq đối với GOST R34.10-94. Tuy
nhiên, tấn công khóa mật bằng cách này sẽ giải bài toán logarit rời rạc tương tự như đối với thuật toán mật mã El Gamal.
3.2 Xây dựng lược đồ cơ sở dựa trên hệ mật ElGamal và chuẩn chữký số GOST R34.10-94 ký số GOST R34.10-94
Hai lược đồ cơ sở đề xuất ở đây được phát triển từ hệ mật ElGamal và chuẩn chữ ký số GOST R34.10-94. Hai lược đồ này sẽ được sử dụng để xây dựng các lược đồ chữ ký số tập thể theo mô hình ứng dụng đã được đề xuất ở Chương 1.
3.2.1 Lược đồ cơ sở loại 1 - LD 2.01
Lược đồ cơ sở loại 1 - ký hiệu LD 2.01, được xây dựng trên cơ sở chuẩn chữ ký GOST R34.10-94 của Liên bang Nga, có khả năng bảo đảm các yêu cầu:
- Xác thực về nguồn gốc thông điệp dữ liệu.
- Xác thực về tính toàn vẹn của thông điệp dữ liệu.
Lược đồ cơ sở loại 1 được sử dụng để xây dựng lược đồ chữ ký số đơn và lược đồ đa chữ ký theo mô hình chữ ký tập thể, nhưng không hỗ trợ bảo mật thông tin cho các thông điệp dữ liệu được ký.
Thủ tục hình thành các tham số hệ thống và khóa bao gồm các bước: 1 - Chọn cặp số nguyên tố p và q đủ lớn, thỏa mãn: q|(p−1) [16], [26] . 2 - Chọn phần tử sinh: g =h(p−1)/qmodp, có bậc q của nhóm Zp*, nghĩa là
p
gq ≡1mod với: 1<h< p.
3 - Chọn khóa bí mật (x) là một giá trị trong khoảng: 1<x<q. 4 - Tính khóa công khai tương ứng (y) theo công thức:
y =g−xmodp
5 - Lựa chọn hàm băm H:{ }0,1* Zq
6 - Bí mật: x ; công khai: p, q, g.
7- Chứng nhận và công khai y bởi một CA đáng tin cậy. 3.2.1.2 Phương pháp hình thành và kiểm tra chữ ký a) Thuật toán hình thành chữ ký
Dữ liệu đầu vào của thuật toán bao gồm: Thông điệp dữ liệu cần ký (M) và khóa bí mật của đối tượng ký (x). Kết quả đầu ra của thuật toán là chữ ký số (R,S) tương ứng với M. Thuật toán bao gồm các bước như sau:
1 -Tính giá trị k từ khóa bí mật (x) của đối tượng ký và thông điệp dữ liệu cần ký (M): k = H(x||M)
2 - Hình thành phần thứ nhất (R) của chữ ký theo công thức: R=(gkmodp)modq
3 - Tính giá trị đại diện (E) của thông điệp dữ liệu cần ký (M): E=H( )M
4 - Hình thành phần thứ hai (S) của chữ ký theo công thức: S =(k×E−1+x×R)modq
5 - Chữ ký số được tạo ra từ thông điệp dữ liệu (M) và khóa bí mật (x) của đối tượng ký là cặp (R,S).
b) Thuật toán kiểm tra chữ ký
Dữ liệu đầu vào của thuật toán bao gồm: Thông điệp dữ liệu cần thẩm tra (M) với chữ ký tương ứng (R,S) , khóa công khai của đối tượng ký (y). Kết quả đầu ra của thuật toán là sự khẳng định về tính hợp lệ của chữ ký (R,S) hay sự công nhận về nguồn gốc và tính toàn vẹn của M. Thuật toán bao gồm các bước như sau:
1 - Tính giá trị đại diện E của thông điệp dữ liệu cần thẩm tra M: E=H( )M
2- Tính giá trị R theo công thức: R =(gS.E ×yR.E modp)modq
3- Kiểm tra nếu: R =R hay: R=(gS.E ×yR.E modp)modq thì chữ ký (R,S) hợp lệ, do đó nguồn gốc và tính toàn vẹn của thông điệp dữ liệu cần thẩm tra (M) được công nhận.
3.2.1.3 Tính đúng đắn của lược đồ LD 2.01
Điều cần chứng minh ở đây là: cho p, q là 2 số nguyên tố thỏa mãn:
) 1 ( | p− q , 1<h< p, g =h(p−1)/qmodp, 1< x<q, y= g−xmodp, H:{ }0,1* Zq, (x M) H
k = || , R=(gkmodp)modq, E= H( )M , S =(k×E−1 +x×R)modq. Nếu:
(g y p) q R = S.E × R.E mod mod thì: R =R. Chứng minh: Thật vậy, ta có: ( ) ( ) ( ) ( ) ( ) ( ) (( ) ) ( ) ( ) ( ) ( ) (g g g p) q (g p) q R q p p g p g g q p p p g p g g q p p g g q p y g R k E R x E R x k E R x E R x k E R x E R x k E R x E R x E k E R E S = = × × = × × = × × = × = × = − − − − + − mod mod mod mod mod mod mod mod mod mod mod mod mod mod mod mod mod mod . . . . . . . . . . . . . . . . . 1
Đây là điều cần chứng minh.
Mức độ an toàn của lược đồ mới đề xuất được đánh giá bằng: - Khả năng chống tấn công làm lộ khóa mật.
- Khả năng chống giả mạo chữ ký.
a) Khả năng chống tấn công làm lộ khóa mật
Trường hợp 1: Tính khóa mật (x) từ việc giải: y =g−xmodp
Trường hợp 2: Tính giá trị k bằng việc giải: R=(gk modp)modq
Từ giá trị k tìm được, tính khóa mật (x) nhờ việc giải:
S =(k×E−1+x×R)modq
Trong cả 2 trường hợp, để tính được khóa mật đều phải giải bài toán logarit rời rạc. Như vậy, khả năng chống tấn công làm lộ khóa mật của lược đồ phụ thuộc vào mức độ khó của Bài toán logarit rời rạc.
b) Khả năng chống giả mạo chữ ký
Giả sử đối tượng ký U có khóa bí mật là x và khóa công khai tương ứng là y. Có thể mạo danh U để ký lên một thông điệp dữ liệu M bằng cách tạo ra chữ ký giả mạo (R∗,S∗), chữ ký này không được hình thành từ khóa bí mật (x) của U nhưng vẫn được công nhận là hợp lệ nếu thỏa mãn điều kiện của thuật toán kiểm tra chữ ký (Mục 3.2.1.2 b): R∗ =(gS∗.E ×yR∗.E modp)modq
Như vậy, khả năng giả mạo chữ ký do lược đồ tạo ra phụ thuộc vào mức độ khó của việc chọn được các giá trị (R∗,S∗) thỏa mãn điều kiện đã chỉ ra.
Một điểm yếu có thể tấn công của các lược đồ chữ ký họ ElGamal nói chung và của GOST R34.10-94 nói riêng là khi giá trị của khóa ngắn hạn (k) bị sử dụng lại. Thật vậy, giả sử với cùng 1 giá trị của k được sử dụng để ký hai thông điệp dữ liệu khác nhau M1 và M2, khi đó thành phần thứ hai của chữ ký (S1,S2) được tạo ra từ GOST R34.10-94 sẽ là:
S1 =(H( )M1 ×k+x×R)modq
S2 =(H( )M2 ×k +x×R)modq
Từ hệ 2 phương trình 2 ẩn số trên đây có thể dễ dàng tính được khóa bí mật x. Ở lược đồ mới đề xuất, yếu điểm của các lược đồ chữ ký họ ElGamal được khắc phục bằng việc sử dụng giá trị H(x||M) thay cho khóa ngắn hạn (k), mà giá trị của nó thường phải được sinh ra bằng một thuật toán sinh số ngẫu ở mỗi lần ký khác nhau.
3.2.2 Lược đồ cơ sở loại 2 - LD 2.02
Lược đồ cơ sở loại 2 – ký hiệu LD 2.02, được xây dựng trên cơ sở kết hợp lược đồ LD 2.01 và thuật toán mật mã khóa công khai ElGamal nhằm bảo đảm đồng thời các yêu cầu:
- Xác thực về nguồn gốc thông điệp dữ liệu.
- Xác thực về tính toàn vẹn của thông điệp dữ liệu. - Bảo mật nội dung của thông điệp dữ liệu.
Lược đồ cơ sở loại 2 được sử dụng để xây dựng các lược đồ chữ ký số đơn và lược đồ đa chữ ký theo mô hình chữ ký tập thể có khả năng bảo mật thông tin cho các thông điệp dữ liệu được ký.
3.2.2.1 Phương pháp hình thành các tham số hệ thống và khóa
Các tham số hệ thống và khóa ở lược đồ LD 2.02 được hình thành tương tự như lược đồ LD 2.01.
3.2.2.2 Phương pháp kết hợp hình thành chữ ký và mã hóa thông điệp dữ liệu
a) Thuật toán hình thành chữ ký và mã hóa thông điệp dữ liệu
Giả sử đối tượng gửi Ui có khóa bí mật là xi, khóa công khai tương ứng là yi; Đối tượng nhận Uj có khóa bí mật là xj và khóa công khai là yj. Để gửi thông điệp dữ liệu M cần được bảo mật và xác thực (nguồn gốc, tính toàn vẹn thông tin) một cách đồng thời cho đối tượng Uj, Ui thực hiện các bước như
sau:
1- Tính giá trị ki từ khóa bí mật (xi) của đối tượng ký (Ui) và thông điệp dữ liệu cần ký (M): ki =H(xi ||M)
2- Tính giá trị R theo công thức: R= gki modp
3- Hình thành phần thứ nhất (E) của chữ ký từ giá trị R và thông điệp dữ liệu M: E=H(R||M)
4- Hình thành phần thứ hai (S) của chữ ký theo công thức: S =(ki×E−1+xi)modq
5- Sử dụng khóa công khai của đối tượng nhận (yj) để mã hóa thông điệp dữ liệu theo công thức:
C M ( )y ki p
j mod
×
=
6- Gửi bản mã - chữ ký số (C,E,S) đến đối tượng nhận Uj. b) Thuật toán giải mã thông điệp dữ liệu và kiểm tra chữ ký
Từ bản mã - chữ ký số (C,E,S) nhận được, đối tượng Uj sử dụng khóa bí mật của mình (xj) và khóa công khai (yi) của đối tượng gửi (Ui) để giải mã và xác thực (nguồn gốc, tính toàn vẹn thông tin) thông điệp dữ liệu nhận được theo các bước như sau:
1- Tính giá trị R theo công thức: R =gS.E ×( )yi E modp
2- Giải mã thông điệp dữ liệu theo công thức: M C ( )R xj p mod × = 3- Tính giá trị E từ R và M : E =H(R||M) 4- Nếu: E =E hay: E H((g ( )y p) (C (g ( )y E p)xj p)) i E S E i E
S. × mod || × . × mod mod
=
được.
3.2.2.3 Tính đúng đắn của lược đồ LD 2.02
Điều cần chứng minh ở đây là: cho p, q là 2 số nguyên tố thỏa mãn:
) 1 ( | p− q , 1<h< p, g =h(p−1)/qmodp, 1< xi,xj <q, y g xi p