Để thiết lập sơ đồ chữ ký, cần xác định các tham số: lựa chọn đƣờng cong E trên trƣờng hữu hạn ( ), điểm cơ sở ( )
Trong đó: p là số nguyên tố (p>2). Một số khuyến nghị khi lựa chọn các tham số:
• Kích thƣớc q của trƣờng: hoặc q = p hoặc q = 2m .
• Chọn đƣờng cong Elliptic:
- Nếu q = p, đƣờng cong Elliptic trên trƣờng nguyên tố hữu hạn Fp
(p là số nguyên tố, p > 2) cho bởi phƣơng trình dạng:
( ) (1)
- Nếu , đƣờng cong Elliptic trên trƣờng nhị phân hữu hạn cho bởi
phƣơng trình có dạng:
với (2)
• Hai phần tử và thuộc xác định điểm cơ sở ( ), bậc n của
G với n > 2160 và √ .
3.3.3.2. Lược đồ chữ ký bội song song
Giả thiết rằng nhóm ngƣời có thẩm quyền ký gồm N thành viên, các thành viên có vai trò nhƣ nhau (song song) cùng ký vào văn bản D. Tất cả thành viên trong nhóm M tham gia vào quá trình tạo khóa chung cho cả nhóm. Cả nhóm cần thống nhất cử ra một ngƣời đại diện cho nhóm, ngƣời đại diện là ngƣời tin cậy của tất cả các thành viên nhóm, nhƣng không phải thành viên trong nhóm (không tham gia ký), hoặc nhờ cơ quan chứng thực (CA – Certificate Authority) đáng tin cậy làm đại diện.
1/. Sinh khóa
- Bƣớc 1: Mỗi thành viên ( ) trong nhóm M chọn ngẫu nhiên một số
nguyên trong khoảng [1, n/N] (n – bậc n của điểm G, N – số thành viên của nhóm), di
đóng vai trò là khóa bí mật của mỗi cá nhân trong việc sinh khóa công khai chung của cả nhóm. Đồng thời tính Yi theo công thức , sau đó các thành viên gửi các cho ngƣời đại diện.
- Bƣớc 2: Ngƣời đại diện tính khóa công khai chung cho cả nhóm theo công thức:
∑ (3)
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ì các thành viên trong nhóm làm theo các bƣớc nhƣ
sau:
- Bƣớc 1: Mỗi thành viên trong nhóm chọn ngẫu nhiên một số nguyên , , - đóng vai trò là khóa bí mật của mỗi cá nhân, đồng thời tính , gửi cho ngƣời đại diện.
- Bƣớc 2: Ngƣời đại diện tính: ∑ và gửi kết quả Q vừa tính đƣợc cho mọt thành viên bất kỳ X trong nhóm
- Bƣớc 3: Thành viên X sử dụng hàm băm h (với h là hàm băm được chọn
đủ an toàn, chẳng hạn: SHA-1, MD5) cùng với văn bản D cần ký, tính thành phần thứ
nhất của chữ ký chung của cả nhóm: E = h(D, Q) [1, 2t] rồi gửi cho tất cả thành viên
còn lại trong nhóm.
- Bƣớc 4: Mỗi thành viên tính phần thứ hai của chữ ký cá nhân theo công thức: ( ) và đồng thời gửi cho ngƣời đại diện.
∑ .
3/. Xác thực chữ ký
Tại nơi cần xác thực chữ ký, 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 theo công thức:
∑ ,(∑ ) (∑ ) -
- Bƣớc 2: Tính h(D, Z), so sánh giá trị h(D, Z) và h(D, Q). Nếu hai giá trị giống nhau thì công nhận chữ ký (E, S) đƣợc ký bởi nhóm N thành viên trên văn bản D và ngƣợc lại.
4/. Đánh giá độ an toàn của lƣợc đồ
Tất cả các giai pháp nhằm đảm bảo an toàn trong bài viết đƣợc đƣa ra đều phụ
thuộc vào độ khó của bài toán logarit rời rạc trên đƣờng cong elliptic (Elliptic Curve
Discrete Logarith Problem – ECDLP), cho tới thời điểm hiện tại độ an toàn thu đƣợc của ECDLP đƣợc xem là tin cậy, đó là lý do mà lƣợc đồ đƣợc xây dựng dựa trên hệ mật mã đƣờng cong Elliptic.
Michels & Horster [12] đã phân loại các phƣơng thức tấn công chữ ký bội thành hai loại, tấn công bên trong và bên ngoài. Họ cũng chỉ ra rằng một số phƣơng pháp chữ ký
bội có thể bị xâm hại bởi sự giả mạo của kẻ tấn công bên trong. Do đó, bài viết xem
xét đến các khả năng bị tấn công từ cả hai phía.
a. Tấn công từ bên ngoài
• Phương thức 1: Thám mã có ý định đánh cắp khóa bí mật , bằng cách sử dụng
khóa công khai Yi hoặc chữ ký cá nhân si của thành viên Mi
- Với ý định tạo khóa bí mật di sử dụng khóa công khai Yi của thành viên Mi không
thể làm đƣợc vì khó khăn khi giải bài toán ECDLP.
- Thám mã muốn đánh cắp khóa cá nhân ( ). Trƣờng hợp này
cũng không thể thực hiện đƣợc vì: thám mã không biết đƣợc hai tham số và , do vậy không thể tính đƣợc .
• Phương thức 2: Giả sử thám mã lấy đƣợc văn bản D và chữ ký bội trong quá trình truyền tin, thám mã thay đổi nội dung văn bản thành D’ và giả mạo chữ ký số bội (E’, S’) trên văn bản D’.
- Để giả mạo chữ ký bội hợp lệ cho văn bản D, thám mã chọn ngẫu nhiên một điểm
- Biết đƣợc Z’ và E’ giả mạo, kẻ tấn công tính S’ bằng cách sử dụng các phƣơng trình xác thực sau: Z’’ = S’G – E’Y, trong đó G, Y công khai, tức là:
(5) - Tuy nhiên, theo lý thuyết về bài toán rời rạc trên đƣờng cong elliptic (ECDLP) hiện nay chƣa có thuật toán nào đƣợc xem là hiệu quả để giải quyết bài toán để tính S’.
b. Tấn công từ bên trong
• Phƣơng thức 1: Một thành viên của nhóm cố tình giả mạo chữ ký bội (E, S) trên văn bản D mà không đƣợc sự hợp tác (thống nhất) của cả nhóm.
Tƣơng tự nhƣu phƣơng thức tấn công từ bên ngoài, khi một thành viên trong nhóm muốn giả mạo chữ ký bội theo phƣơng thức: đánh cắp khóa bí mật sử dụng khóa công
khai của thành viên , đánh cắp chữ ký cá nhân hay thay đổi nội dung văn bản và
giả mạo chữ ký cá nhân của chính mình nhƣng độ khó của ECDLP nên phƣơng thức
tấn công này sẽ không thành công.
• Phương thức 2:
Trong lƣợc đồ trên, ngƣời đại diện cho nhóm là ngƣời đáng tin cậy và không là thành viên nhóm, thành viên thực hiện ký trên bản rõ đƣợc chọn ngẫu nhiên. Đây là điểm cải tiến so với lƣợc dồ do Chen [8] đƣa ra, trong lƣợc đồ này của Chen giả sử ngƣời đại diện nhóm là MN – ngƣời gửi thông tin cuối cùng trong bƣớc 4 (phần sinh khóa) và bƣớc 2.5 (phần ký trên bản rõ D) thì có thể xảy ra tình huống tấn công: thành
viên MN có thể ký chữ ký hợp pháp mà các thành viên khác đã đăng ký và giả mạo
chính chữ ký của anh ta, chữ ký giả mạo đƣợc chấp nhận bởi ngƣời thẩm định. Cụ thể:
1/. Sinh khóa:
Sau khi nhận đƣợc chữ ký của tất cả các thành viên Mj (1 ≤ j ≤ N-1) trong bƣớc 1
của thủ tục sinh khóa, thành viên MN chọn ngẫu nhiên một số dN. Tiếp đó, MN tính:
∑ (6)
Và thành viên MN gửi YN cho các thành viên còn lại trong nhóm.
2/. Tạo chữ ký:
• Bƣớc 1: Sau khi nhận đƣợc tất cả ( ) trong bƣớc 2 của thủ tục ký
trên bản rõ D, thành viên MN chọn ngẫu nhiên một số rN và tính:
∑ (7)
• Bƣớc 3: Thành viên MN tính: ( ) và ( ) (8)
∑ (9)
• Bƣớc 4: Thành viên MN gửi E cho tất cả các thành viên khác trong nhóm và tính
thành phần thứ hai của chữ ký bội theo công thức: ∑
• Bƣớc 5: Chữ ký bội (E, S) và bản rõ D đƣợc gửi cho bên cần xác thực.
3/. Xác thực chữ ký:
Bằng cách giả mạo này MN có thể qua mặt đƣợc ngƣời thẩm định vì khi đó:
∑ ∑ ∑ ∑ (10)
( ) ( )
Do đó, ( ) ( ). Vậy ngƣời thẩm định sẽ chấp nhận tính hợp lệ của chữ ký.
3.3.3.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 MN-2: YN-1=pN-1YN. (13)
• Bước 3: Tiếp tục cho đến thành viên M1 của nhóm, chọn một giá trị p1 ngẫu nhiên trong đoạn [1, n/N] làm khóa bí mật, M1 tính: Y1 = p1Y2 làm khóa công khai chung của cả nhóm.
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. Các bƣớc hình thành chữ ký bội 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 trong khoảng
[1, n/N] và MN tính: QN = qNQN-1 = qN…q2q1G
• Bƣớc 4: Ta có Q = QN = qN…q2q1G
• 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-1qN-2…q2p1G và TN-1 = pN-1pN-2 … p2q1G
- MN tính R = RN = qNqN-1…q2p1G và T = TN = pNpN-1 … p2q1G.
Khi đó công khai R, T:
• Bước 7:
R = qN qN-1…q2 p1G T = pN pN-1 … p2 q1G
- Thành viên thứ nhất M1 tính: s1 = (q1 + p1E) mod n, M1 gửi s1 cho M2.
- Thành viên M2 tính: s2 = p2s1 + q2s1 = [(q2q1+q2p1E)+ (p2q1+p2p1E)] mod n, M2 gửi
s2 cho thành viên 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:
,( ) ( )-
• Bước 8: Ta có thành phần thứ 2 của chữ ký bội:
,( ) ( )-
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:
(( ) ( ))
• 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.
4/. Đánh giá độ an toàn của thuật toán
Độ 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 song song, 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 song song, 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ì lần lƣợt từ ngƣời đầu tiên đến ngƣời cuối cùng (theo qui định) vẫn đƣợc tuân thủ. Nhƣ vậy, với lƣợc đồ bài viết này đƣ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 giữ dữ liệu mà vẫn đảm bảo thứ tự ký của thành viên trong nhóm.
- Đối với lƣợc đồ chữ ký bội song song, mỗi thành viên tạo khóa độc lập riêng của mình. Tuy nhiên đối với lƣợc đồ chữ ký bộ 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 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.
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.
3.3.4. Sơ đồ chứ ký bội mù Harn trên ECC
Chữ ký bội đƣợc hiểu là chữ ký đƣợc tạo thành bởi nhiều ngƣời ký. Có văn bản cần đƣợc ký bởi một số ngƣời thay vì một ngƣời nhằm đảm bảo tính an toàn. Những ngƣời ký không biết về nội dung văn bản ký.
3.3.4.1. Sinh khóa
Việc chọn các tham số cho đƣờng cong elliptic tƣơng tự nhƣ sơ đồ chữ ký Harn. Giả
sử rằng có t ngƣời ký là Ui, với i = 1,…, t. Việc sinh khóa đƣợc thực hiện qua các bƣớc:
• Mỗi ngƣời ký Ui chọn ngẫu nhiên khóa bí mật di là một số nguyên , -.
• Khóa công khai của ngƣời ký U
i là điểm: ( ) với i = 1…t.
• Khóa công khai cho tất cả ngƣời ký là: Q = Q1 +…+ Qt = dG = (xd, yd) với
d=d1+d2+...+dt(mod q).
3.3.4.2. Ký mù trên m
• Ngƣời ký Ui sinh ra một lần cặp ( ̅ ̅ ) bằng cách chọn ngẫu nhiên ̅ , -
và tính ̅ ̅ ( ) đặt ̅
̅̅̅ rồi gửi ̅ và ̅ cho ban thƣ ký.
• Ban thƣ ký chọn các tham số làm mù , -, tìm điểm R trên E sao cho ̅ ( ) trong đó ̅ ̅̅̅ ̅̅̅ và Q = Q1+…+Qt . Ban thƣ ký tính ( )( ) và ̅ ( ) . Sau đó, gửi ̅ và đến cho ngƣời ký Ui . • Ui tính chữ ký ̅ ( ̅ ) ̅ ( ) , gửi ̅ tới ban thƣ ký. • Ban thƣ ký tính ̅ ( ̅ ) ( ) và kiểm tra ̅ ( ), Chữ ký bội mù ECC là cặp (r, s) trong đó s = ( ) và ̅ ̅ ( ) 3.3.4.3. Chứng minh
Cặp (r, s) là chữ ký do nhiều thành viên ký trên thông điệp m. Việc xác minh chữ
ký tính hợp lệ của đa chữ ký (r, s) trên thông điệp m đƣợc thực hiện nhƣ sau:
• Tìm một điểm E sao cho sG – (m + r)Q = (xe , ye).
• Kiểm tra r = xe mod q. Nếu đúng thì (r, s) đƣợc chấp nhận. Dễ dàng xác minh rằng
sG – (m + r)Q = R.
Với các ̅ ̅ ̅ ̅ ̅ và cặp chữ ký hợp lệ (r, s) của thông điệp m, chúng ta có: ( ) ( ̅ ) ( ) Ta phải chỉ ra rằng ̅ . Thật vậy: ̅ ( ̅ ̅ (( ̅ ) ( )) = (∑ ∑ ( ̅ ) ) ( ̅ ) ( ) = ( ) = ( )
Chương 4. ỨNG DỤNG VÀ THỰC NGHIỆM 4.1. ỨNG DỤNG CHỮ KÝ BỘI TRONG KÝ KẾT HỢP ĐỒNG
Trong thực tiễn, chúng ta thƣờng gặp các thỏa thuận, các dự án, các hợp đồng,… cần đƣợc ký bởi một vài đối tác. Nếu sử dụng phƣơng pháp ký thông thƣờng thì sẽ nảy
sinh ra vấn đề là chữ ký có độ dài và kích thƣớc quá lớn, nhƣ ta đã biết chữ ký
thƣờng đƣợc tạo ra từ chính văn bản gốc và có kích thƣớc xấp xỉ với văn bản gốc, vậy càng nhiều chữ ký thì văn bản và chữ ký gửi đi có dung lƣợng càng lớn. Ngoài ra khi có nhiều đối tác tham gia ký vào văn bản thì gây khó khăn cho việc xác minh chữ ký của bên nhận (có N thành viên ký thì cần xác minh N lần với N khóa công khai của N thành viên). Nhƣ vậy sử dụng các chữ ký đơn vào bài toán thỏa thuận và ký kết hợp đồng
kinh doanh mà có nhiều đối tác tham gia là bất cập. Giải pháp đƣa ra là sử dụng một
loại chữ ký đảm bảo:
- Chữ ký đƣợc hình thành từ một nhóm ngƣời có thẩm quyền, không thể phát sinh