Phương pháp sử dụng hai khóa bí mật tức thời

Một phần của tài liệu Nghiên cứu một số giải pháp đảm bảo an toàn và hiệu quả cho lược đồ chữ ký số kiểu ECSchnorr. (Trang 51 - 55)

Trong [23], [26] đưa ra các lược đồ sửa đổi bằng cách sử dụng hai khóa bí mật tức thời �1 và �2. Ở đây, � không thể được xác định dù là lặp lại cùng với các khóa bí mật tức thời (((((((((((((((1, �2). Các quá trình là phức tạp hơn lược đồ ECDSA thông thường và điều đó làm tăng mức độ an toàn. Giai đoạn sinh cặp khóa là giống như ECDSA.

Thuật toán ký ECDSA - dùng 2 khóa:

Đầu vào: m, a. Đầu ra: (((((((((((((((1, 2, ) . Bước 1: Chọn �1, �2 ∈� [1, … , − 1 ]. Bước 2: Tính �1(�1, 1) = 1 ; � 2(�2, 2) = 2�. Bước 3: Tính �1 = 1 ; �2 = 2 . Bước 4: Tính ℎ = (�). Bước 5: Tính = � −1ℎℎℎℎℎℎℎℎℎℎℎℎℎℎℎ( 2 + (�1 + 2)) . 1

Thuật xác minh chữ ký:

Đầu vào: m, �, (((((((((((((((1, 2, ) .

Đầu ra: “Chữ ký hợp lệ” hoặc “Chữ ký không hợp lệ”.

Bước 1 : Kiểm tra �1, �2 và � thuộc khoảng [1, − 1 ]? Nếu sai, đưa ra “chữ ký

không hợp lệ” và dừng lại. Bước 2: Tính = � −1 . Bước 3: Tính ℎ = (�). Bước 4: Tính �1 ℎ ℎℎℎℎℎℎℎℎℎℎℎℎℎℎ= 2 . Bước 5: Tính �2 = (((((((((((((( (1 + 2) ) ) ) ) ) ) ) ) ) ) ) ) ) ) . Bước 6: Tính (�0, 0) = 1 + � 2�. Bước 7: Tính = � 0 .

Bước 8: Đưa ra “Chữ ký hợp lệ” nếu � = �1; ngược lại trả về “Chữ ký

không hợp lệ”.

Nhận xét: Khóa �2 được sử dụng trong thuật toán ký được sử dụng như một

khóa bí mật tức thời, nhưng nó lại được sử dụng trong bước 4 của thuật toán xác minh. Điều này dẫn đến sự bất hợp lý của lược đồ này. Tuy nhiên, đây không phải là một vấn đề quá lớn, vì chỉ cần thực hiện một vài thay đổi nhỏ để đảm bảo tính hợp lý cho lược đồ này. Cụ thể, có 3 chỉnh sửa là:

- Chữ ký trong bước 6 của thuật toán ký là (((((((((((((((1, �2, �) thay cho (�1, �2, �). - Bước 4 của thuật toán xác minh �1 ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ← �.

- Bước 6 của thuật toán xác minh được sửa là (�0, 0) ← 1�2 + �2�.

Thuật toán ký ECDSA 2 khóa được sửa đổi:

Đầu vào: m, a. Đầu ra: (((((((((((((((1, 2, ) . Bước 1: Chọn �1, �2 ∈ [1, … , − 1] . Bước 2: Tính �1(�1, 1) = 1 ; � 2(�2, 2) = 2�. Bước 3: Tính �1 = 1 , �2 = 2 . Bước 4: Tính ℎ = (�). Bước 5: Tính = � −1ℎℎℎℎℎℎℎℎℎℎℎℎℎℎℎ( 2 + (�1 + 2)) . 1

Thuật xác minh chữ ký:

Đầu vào: m, �, (((((((((((((((1, 2, ) .

Đầu ra: “Chữ ký hợp lệ” hoặc “Chữ ký không hợp lệ”.

Bước 1: Kiểm tra �1 và � thuộc khoảng [1, . . , − 1 ]? và kiểm tra �2 thuộc

đường cong? Bước 2: Tính = � −1 . Bước 3: Tính ℎ = (�). Bước 4: Tính �1 ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ = . Bước 5: Tính �2 = (((((((((((((( (1 + 2) ) ) ) ) ) ) ) ) ) ) ) ) ) ) . Bước 6: Tính (�0, 0) = 1�2 + 2�. Bước 7: í í í í í í í í í í í í í í í ℎ = 0 ��� �.

Bước 8: Đưa ra “Chữ ký hợp lệ” nếu = � 1; ngược lại trả về “Chữ ký không

hợp lệ”.

Tính đúng đắn của việc sửa đổi ở trên được thể hiện ở chỗ, nếu (�1, 2, ) là chữ ký của � được sinh ra theo thuật toán sinh chữ ký thì khi kiểm tra bằng thuật toán xác minh sẽ cho kết quả hợp lệ. Thật vậy, ta luôn có:

= � −1ℎℎℎℎℎℎℎℎℎℎℎℎℎℎℎ( 2 + (�1 + 2)) ⇔ 1 = −1ℎℎℎℎℎℎℎℎℎℎℎℎℎℎℎ( 2 + (�1 + 2)) ⇔ 1 ℎℎ ℎℎℎℎℎℎℎℎℎℎℎℎℎ= −1�2 + (�1 + 2)�−1� ⇔ 1 ℎℎ ℎℎℎℎℎℎℎℎℎℎℎℎℎ= 2 + (((((((((((((( (1 + 2))))))))))))))) ⇔ 1 = 1�2 + 2�. Do đó, ta luôn thu được:

điều này dẫn đến:

�1 = � 1�2 + � 2��, �1(�1, 1) = 1�2 + 2� = (�0, 0), và vì vậy: �1 = �1 = 0 = �.

Nghĩa là thuật toán xác minh luôn trả về kết quả hợp lệ nếu chữ ký được kiểm tra được sinh ra từ thuật toán tạo chữ ký. Do đó, dưới đây NCS sẽ đánh giá về lược đồ sửa đổi thay vì đánh giá lược đồ ban đầu.

Đánh giá thuật toán ký ECDSA 2 khóa sửa đổi: Theo [23], [26], nếu sử dụng cùng cặp khóa bí mật tức thời (((((((((((((((1, �2) đối với việc ký hai thông điệp �1, 2 khác nhau (giả sử hai chữ ký tương ứng là (((((((((((((((1, �2, �1) và (((((((((((((((1, �2, �2)) thì khóa ký � không bị lộ bởi lý do sau:

�1 = −1(((((((((((((((2ℎ1 + (�1 + 2)) { �21 = −1(((((((((((((((2ℎ2 + (�1 + 2)) ở đây ℎ1 = (((((((((((((((1) và ℎ2 = (((((((((((((((2), nên ta có: �1�1 − 1�2 = (ℎ1�2 + (�1 + 2) − ℎ2�2 − (�1 + 2)) . ⇔ 1(�1 − 2) = 2(ℎ1 − ℎ2) ��� �. (2.1) Theo các tác giả trong [23] và [26] kết luận rằng vì không thể thu được �1, 2 từ phương trình (2.1) và do vậy lược đồ này là an toàn hơn lược đồ ECDSA gốc. Tuy nhiên, theo quan điểm của NCS thì điều này không thực sự chính xác, bởi mặc dù không thể tìm ra cụ thể �1, 2 (nên khóa ký � không bị lộ) nhưng dựa trên mối liên hệ giữa �1 và �2 theo (2.1) thì kẻ tấn công sử dụng thông điệp nào cũng có thể giả mạo chữ ký hợp lệ trên thông điệp � tùy ý mà không cần biết khóa ký �. Điều này được NCS đưa ra trong mệnh đề sau.

Mệnh đề 2.1. Trong thuật toán ký ECDSA 2 khóa sửa đổi, nếu hai thông điệp

�1 ≠ 2 cùng được ký bởi cặp khóa bí mật tức thời (�1, 2) thì bất cứ kẻ tấn công sử dụng thông điệp nào cũng có thể giả mạo chữ ký hợp lệ trên thông điệp tùy ý mà không cần biết khóa ký của người dùng .

Chứng minh: Với ℎ1 = (�1) và ℎ2 = �(�2), chúng ta xét 2 trường hợp: TH1: nếu ℎ1 = ℎ2, thì dễ dàng suy ra chữ ký hợp lệ trên �1 cũng là hợp lệ trên �2, nên kẻ tấn công có thể yêu cầu chữ ký (�1, �2, �) trên �1 và sau đó đưa ra cặp thông điệp chữ ký giả mạo hợp lệ là �2, (�1, �2, �), mà không cần biết khóa ký của người dùng �.

TH2: Như đã đề cập, nếu sử dụng cùng cặp khóa bí mật tức thời (((((((((((((((1, 2) đối với việc ký hai thông điệp �1, 2 khác nhau (giả sử hai chữ ký tương ứng là

(((((((((((((((1, 2, 1) và (((((((((((((((1, 2, 2)) thì chúng ta thu được mối liên hệ là:

�1(�1 − 2) = 2(ℎ1 − ℎ2) . Do đó, chúng ta có:

�−1�2 = (ℎ1 − ℎ2)−1(�1 − 2) ��� �. (2.2) Từ thông tin này, việc giả mạo chữ ký trên thông điệp � được thực hiện đơn giản như sau:

1. Tính ℎ = (�) và � = ℎ − ℎ1.

2. � = (�1 + (ℎ1 − ℎ2)−1(�1 − 2)�) .

3. Trả về chữ ký (((((((((((((((1, 2, ) cho thông điệp �.

Chúng ta có thể thấy nếu (((((((((((((((1, 2, 1) là chữ ký của thông điệp �1 theo thuật toán ký, thì (�1, 2, ) là chữ ký hợp lệ của thông điệp �. Thật vậy, chúng ta có = (�((((((((((((((( 1 + (ℎ1 − ℎ2)−1(�1 − 2)) , nên theo (2.2) ta có: = (� ((((((((((((((( 1 + −1�2(ℎ − ℎ1)) . = −1(((((((((((((((2ℎ1 + (�1 + 2)) + −1�2(ℎ − ℎ1) . 1 1 = −1(((((((((((((((2ℎ + (�1 + 2)) . Do đó, dễ thấy rằng: (�−1ℎ)�2 + (�1 + 2)�−1 = � 1�.

hay chữ ký (�1, 2, ) và thông điệp � thỏa mãn phương trình xác minh và như vậy (�1, 2, ) là chữ ký hợp lệ của thông điệp �.■

Nhận xét: Các lược đồ chữ ký số như ECDSA, EC-Schnorr,… cũng đã được

thử sửa theo hướng sử dụng hai khóa ký �1, 2 đối với một người sử dụng �. Tuy nhiên, vẫn nhận được một kết quả tương tự là lược đồ chữ ký số sửa đổi không an toàn hơn lược đồ chữ ký số gốc.

Một phần của tài liệu Nghiên cứu một số giải pháp đảm bảo an toàn và hiệu quả cho lược đồ chữ ký số kiểu ECSchnorr. (Trang 51 - 55)

Tải bản đầy đủ (DOC)

(131 trang)
w