Hệ mật ElGamal và chuẩn chữ ký số GOST R34.10-94

Một phần của tài liệu Nghiên cứu, phát triển các lược đồ chữ ký số tập thể (Trang 70)

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 ∗

p

Z .

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 ( )y k p

B mod ×

=

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

2-Tính vế thứ hai của phương trình kiểm tra: 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: (adsbygoogle = window.adsbygoogle || []).push({});

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ý

1- Tính giá trị V theo công thức sau: V =(H( )M )q−2modq

2- Tính giá trị Z1 theo công thức sau: Z1=S×V modq

3- Tính giá trị Z2 theo công thức sau: Z2 =(qRVmodq

4- Tính giá trị U theo công thức sau: U =(( ) ( )g zy 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 gxy modp. 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: M C ( )y k p

B − mod

×

= , hay thuật toán giải mã: M C ( )R xB p

mod

×

= , nếu

khóa mật 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 (adsbygoogle = window.adsbygoogle || []).push({});

.

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 đồ đ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ý.

3.2.1.1 Phương pháp hình thành các tham số hệ thống và khóa

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ố pq đủ lớn, thỏa mãn: q|(p−1) [16], [26] . 2 - Chọn phần tử sinh: g =h(p−1)/q modp, có bậc q của nhóm *

p

Z , 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 =gx modp

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.Emodp)modq (adsbygoogle = window.adsbygoogle || []).push({});

3- Kiểm tra nếu: R =R hay: R =(gS.E ×yR.Emodp)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 ( | pq , 1<h<p, g =h(p−1)/qmod p, 1<x<q, y=gxmodp, 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.

3.2.1.4 Mức độ an toàn của lược đồ LD 2.01

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 =gx modp

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. (adsbygoogle = window.adsbygoogle || []).push({});

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 g ( )y E p

i E

S. × mod

=

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ừ RM : E =H(R||M) 4- Nếu: E =E hay:

( ) ( ) ( ( ( ) ) ) (g y p C g y p p) H E E xj i E S E i E

S. × mod || × . × mod mod

= thì M =M

(E,S) là chữ ký hợp lệ đối với thông điệp dữ liệu nhận được. 3.2.2.3 Tính đúng đắn của lược đồ LD 2.02

Một phần của tài liệu Nghiên cứu, phát triển các lược đồ chữ ký số tập thể (Trang 70)