2. Chương 2: CHỮ KÝ SỐ BỘI TRÊN ĐƯỜNG CONG ELLIPTIC
2.2 SƠ ĐỒ CHỮ KÝ SỐ BỘI TRÊN ĐƯỜNG CONG ELLIPTIC
2.2.3 Lược đồ chữ ký bội tuần tự
Vẫn giả thiết một nhóm gồm có N thành viên có thẩm quyền cần ký vào văn bản D , tuy nhiên các thành viên có vai trò khác nhau, thứ tự ký của các thành viên đã được xác định trước, thành viên trước ký rồi thì thành viên sau mới được phép ký lên văn bản (tuần tự). Tất cả thành viên trong nhóm tham gia vào quá trình tạo khóa chung của cả nhóm, người cuối cùng MN đóng vai trò là người đại diện của nhóm .
1./ Sinh khóa
Bước 1:Thành viên MN chọn một giá trị nguyên pN ngẫu nhiên trong đoạn [1, n /N] làm khóa bí mật, MN gửi cho MN-1: YN = pNG. (12)
Bước 2: Thành viên MN-1 gửi cho NN-2 :YN-1 = pN-1YN. (13)
Bước 3: Tiếp tục cho đến người thành viên M1 của nhóm, chọn một giá trị nguyên p1 ngẫu nhiên trong đoạn [1, n /N] làm khóa bí mật, M1 tính:Y1 = p1 Y2
làm khóa công khai chung của cả nhóm.
Y = p1 Y2 = p1 p2 … pNG mod n (14)
2./ Ký trên bản rõ D
Văn bản D yêu cầu có chữ ký bội của t t cả các thành viên trong nhóm mới có thể có hiệu lực. Để thực hiện chữ ký bội thì mỗi thành viên trong nhóm làm theo các bước như sau:
Bước 1:Thành viên đầu tiên của nhóm M1 chọn ngẫu nhiên một số nguyên q1
trong khoảng [1, n /N] và gửi Q1 = q1G cho M2
Bước 2:Thành viên M2 chọn ngẫu nhiên một số nguyên q2 trong khoảng [1, n /N] và gửi Q2 = q2Q1 cho M3
Bước 3: Tiếp tục cho đến thành viên MN chọn một số nguyên qN ngẫu nhiên trong đoạn [1, n /N] và MN tính :QN = qN QN-1= qN …q2 q1G mod n
Bước 4:Ta có Q= QN= qN …q2 q1G mod n
Bước 5:Thành viên MN sử dụng hàm băm để tính thành phần thứ nh t của chữ ký: E = h (m,Q) và gửi cho thành viên thứ nh t.
Bước 6:Tính R và T:
- M1 gửi R1 = p1G và T1 = q1G cho M2 - M2 gửi R2 = q2p1G và T2 = p2q1G cho M3.
- Tiếp tục quá trình trên : MN-1 gửi RN-1 = qN-1 qN-2… q2 p1G và TN-1 = pN-1 pN-2… p2 q1G cho MN
- MN tính R = RN = qN qN-1 … q2 p1 Gmod n và T = TN = pN pN-1… p2 q1 Gmod n
Khi đó công khai R, T.
R = qN qN-1 … q2 p1 G mod n
(15)
T = pN pN-1 … p2 q1 G mod n
(16)
Bước 7:
- Thành viên thứ nh t M1 tính: s1 = q1 + p1E , M1 gửi s1 cho M2.
- Thành viên M2 tính: s2 = p2s1 + q2s1 = (q2q1 + q2p1E) + (p2q1 + p2p1E), M2 gửi s2 cho M3.
- Tương tự như vậy M3 tính được s3. Cuối cùng MN sẽ nhận được sN-1 từ MN-1 và sẽ tính:
sN = pNsN-1 + qNsN-1 = [(qN … q2 q1 + qN … q2 p1E) + (pN … p2 q1 + pN … p2 p1E)] mod n (17)
Bước 8:Ta có thành phần thứ 2 của chữ ký bội:
S = sN = [(qN … q2 q1 + qN … q2 p1E) + (pN … p2 q1 + pN … p2 p1E)]mod n (18)
Chi tiết thuật toán cho bởi lưu đồ sau :
Hình 2.5 Thuật toán ký trên bản rõ D của lược đồ chữ ký bội tuần tự
3./ Xác thực chữ ký
Tại nơi nhận sẽ nhận được văn bản D và chữ ký bội (E,S), để xác thực chữ ký làm theo các bước sau:
Bước 1:Tính Z sử dụng Y, R, T và (E, S) bằng công thức:
Z = SG – EY – ER – T .
Z = ((qN … q2 q1 + qN … q2 p1E) + (pN … p2 q1 + pN … p2 p1E))G – EY –ER - T=
= qN … q2 q1G + qN … q2 p1EG + pN … p2 q1G + pN … p2 p1EG– EY –ER - T =
(19)
= Q + ER + T + EY – EY –ER –T =Q
Bước 2:Sử dụng hàm băm tính: E’ = h(D, Z). So sánh E và E’ nếu bằng nhau thì công nhận chữ ký (E, S) xác thực văn bản D.
Độ an toàn của lược đồ chữ ký bội tuần tự cũng giống như của lược đồ chữ ký bội ngang hàng, chủ yếu phụ thuộc vào độ khó của bài toán logarit rời rạc trên đường cong elliptic, tuy nhiên lược đồ trong bài viết đề cập đến có thêm một số đặc điểm sau:
Trong phân tích về độ an toàn của thuật toán chữ ký bội ngang hàng, bài viết có đề cập đến việc nếu như một thành viên trong nhóm luôn là người ký cuối cùng thì anh ta có khả năng giả mạo chữ ký của cả nhóm. Để khắc phục lỗi này lược đồ chữ ký bội tuần tự trong bài viết đưa ra thủ tục sinh khóa ngược, tức là thành viên cuối cùng sẽ là người sinh khóa công khai đầu tiên. Trong khi đó, trong thủ tục ký trên bản rõ D thì thứ tự lần lượt từ người đầu tiên đến cuối cùng (theo qui định) vẫn được tuân thủ. Như vậy, với lược đồ bài viết đưa ra có thể chống lại phương thức t n công từ bên trong của thành viên cuối cùng gửi dữ liệu mà vẫn đảm bảo thứ tự ký của các thành viên trong nhóm.
Đối với lược đồ chữ ký bội ngang hàng, mỗi thành viên tạo ra khóa độc lập riêng của mình. Tuy nhiên đối với lược đồ chữ ký bội tuần tự chỉ duy nh t người đầu tiên tự tạo khóa riêng, còn các thành viên khác khóa của họ đều phụ thuộc vào khóa của những người trước đó. Với cách làm như trên độ an toàn sẽ cao hơn, đáng tin cậy hơn.Hơn nữa trong bước 2 của thủ tục tạo chữ ký bội, một thành viên X b t kỳ của nhóm là người sử dụng hàm băm tạo ra thành phần thứ nh t của chữ ký, việc làm này giúp đảm bảo an toàn cho lược đồ, tránh được khả năng giả mạo chữ ký của người đại diện.
Các phép toán do Chen [7] và Hemlal Sahu - Birendra Kumar Sharma [10] đều sử dụng các phép toán thông thường trên đường cong Elliptic, tuy nhiên qua thực tế cài đặt tôi nhận th y nếu chỉ sử dụng các phép toán thông thường đó thì tốc độ tính toán sẽ lớn, ngoài ra khó áp dụng được trong thực tiễn. Trong hai lược đồ đề xu t có sử dụng thêm phép toán mod n, với n là bậc của điểm G (n được người đại diện sinh ngẫu nhiên và thỏa mãn điều kiện của định lý Hase), việc sử dụng phép toán mod n
vừa làm giảm được tốc độ tính toán vừa tăng độ an toàn cho lược đồ.
Trong lược đồ có liên quan đến hai thông số R và T không được coi là trong chương trình, như vậy làm cho chương trình an toàn hơn