HỆ CHỮ KÝ ELGAMMAL • Mục đích dành riêng cho chữ kí số , điểm mạnh của nó là cùng số nguyên tố p trong cùng một sơ đồ thì với k là ngẫu nhiên nên ta có thể có nhiều chữ kí số, không tất [r]
(1)CHỮ KÝ ĐIỆN TỬ (2) NỘI DUNG THUYẾT TRÌNH • KHÁI NIỆM (CHỮ KÝ ĐIỆN TỬ VÀ HỆ CHỮ KÝ ĐIỆN TỬ) • SỬ DỤNG CHỮ KÝ ĐIỆN TỬ • MỘT SỐ HỆ CHỮ KÝ ĐIỆN TỬ VÀ CƠ SỞ TOÁN HỌC (RSA, ELGAMMAL, DSA, DSS …) (3) CHỮ KÝ ĐIỆN TỬ LÀ GÌ? • Dựa trên kỹ thuật sử dụng mã hóa khóa công khai: người dùng phải có cặp khóa gồm khóa công khai và khóa bí mật • Là định danh điện tử tạo máy có hiệu và có hiệu lực là các chữ ký tay • Là thông tin kèm theo liệu nhằm mục đích xác nhận người chủ liệu đó • Các chữ ký điện tử sinh và sử dụng các hệ chữ ký điện tử Một sơ đồ chữ ký điện tử chứa hai thành phần: ● Thuật toán ký sig() ● Thuật toán xác minh công khai ver() (4) HỆ CHỮ KÝ ĐIỆN TỬ LÀ GÌ? • Một hệ chữ ký điện tử là (P, A, K, S, V) thỏa mãn: 1.P là tập hữu hạn các điện 2.A là tập hợp các chữ ký 3.K là không gian khóa 4.Với k K tồn thuật toán ký sigk S và thuật toán xác minh verk V Mỗi sigk: P > A và verk: P*A > {TRUE, FALSE} là hàm cho điện x P và chữ ký y A thỏa mãn phương trình: ● Nếu y=sigk(x) thì ver(x, y) = TRUE ● Nếu y=sigk(x) thì ver(x, y) = FALSE Với k K, hàm sigk và verk là các đa thức thời gian Hàm verk là công khai còn sigk là bí mật (5) SỬ DỤNG CHỮ KÝ ĐIỆN TỬ • Bạn dùng khoá cá nhân để ký Sau đó, cung cấp khoá công cộng cho người cần xác nhận chữ ký đó (chẳng hạn ngân hàng, nơi bạn vay tiền) • Khoá cá nhân và công cộng có quan hệ tương ứng với nhau, trên phương diện toán học, vì mã khoá công cộng có thể xác nhận chữ ký đó mà không cần phải biết khoá cá nhân • Trên thực tế, không thể dựa vào khoá công cộng mà đoán khoá cá nhân (6) SƠ ĐỒ SỬ DỤNG CKĐT (7) SƠ ĐỒ SỬ DỤNG CKĐT (mở rộng) (8) HỆ CHỮ KÝ RSA • 1/ Tạo cặp khóa (bí mật, công khai) (a, b): Chọn số nguyên tố p, q, xác định n = p * q, n là công khai, đặt P = A = Zn và định nghĩa: Tính (n) = (p-1).(q-1) Chọn khóa công khai b < (n),nguyên tố cùng với (n) Khóa bí mật a là phần tử nghịch đảo b theo mod (n): a*b1 (mod (n) Tập cặp khóa (bí mật, công khai) K = (a, b)/ a, b Zn , a*b (mod (n)) • 2/.Ký số: Chữ ký trên x P là y = sigk (x) = xa (mod n), yA • 3/.Kiểm tra chữ ký: verk(x, y) = TRUE xyb (mod n) với x, y Zn (9) EXAMPLE Chữ ký trên x = *Tạo cặp khóa (bí mật, công khai) (a, b): Chọn số nguyên tố: p=3, q=5 n = p*q = 3*5 = 15(công khai) Đặt P = A = Zn Tính (n) = (p-1).(q-1) = * = Chọn khóa công khai b = < (n), nguyên tố với (n) = =>Tìm a: là phần tử nghịch đảo b theo mod (n): a*b1 (mod (n)) Bước i N b Ri+1 Qi+1 Xi Xi+1 Xi+2 2 -2 1 -2 2 1 -2 -5 Vậy khóa bí mật a = (10) EXAMPLE * Ký số: Chữ ký trên x = 2P là: y = sigk (x) = xa (mod n)= 23 (mod 15) = 8, yA * Kiểm tra chữ ký: verk(x, y) = TRUE xyb (mod n) 283 (mod 15) (11) ĐỘ AN TOÀN CỦA CHỮ KÝ RSA • Bài toán bảo đảm độ an toàn Sơ đồ chữ ký RSA: a) Ký trước, Mã hóa sau: T ký trước vào x chữ ký y = sigk(x), sau đó mã hoá x và y nhận z = eT(x, y) T gửi z cho N Nhận z, N giải mã z để x, y Tiếp theo kiểm tra chữ ký verN(x, y) = true ? b) Mã hóa trước, Ký sau: T mã hoá trước x u = eT (x), sau đó ký vào u chữ ký v = sigT(u) T gửi (u, v) cho N Nhận (u, v), N giải mã u x Tiếp theo kiểm tra chữ ký verN(u, v) = true ? (12) HỆ CHỮ KÝ ELGAMMAL • Mục đích dành riêng cho chữ kí số , điểm mạnh nó là cùng số nguyên tố p cùng sơ đồ thì với k là ngẫu nhiên nên ta có thể có nhiều chữ kí số, không tất định giống hệ thống mã khoá công khai Elgamal • Ở sơ đồ chữ kí RSA ta thấy trên cùng sơ đồ với cùng số nguyên tố p thì ta có chữ kí số => Điều này có nghĩa là có nhiều chữ kí hợp lệ trên điện cho trước bất kì Thuật toán xác minh phải có khả chấp nhận bất kì chữ kí hợp lệ nào xác thực chữ kí đó (13) KHÔNG GIAN Zn VÀ Zn* Không gian Zn (các số nguyên theo modulo n) • là tập hợp các số nguyên không âm nhỏ n: •Tức là : Zn={ 0, 1, 2, …, n-1} Không gian Zn* •Là tập hợp các số nguyên pЄZn , nguyên tố cùng n •Tức là : Zn*={p ЄZn | gcd(n, p)=1}, ɸ(n) là số phần tử Zn* •Nếu n là số nguyên tố thì: Zn*={p ЄZn | 1<=p<= n-1}số phần tử nhóm là n-1 •Ví dụ: Z2={0, 1} thì Z2*={1} vì gcd (1, 2)=1 •Z*n có thể gọi là tập phần tử khả nghịch Zn •Z*13 , Z*21 = ? (14) KHÔNG GIAN Zn VÀ Zn* • Z*13 , Z*21 = ? • Kết quả: • Z*13 = {1,2,3,4,5,6,7,8,9,10,11,12} • Z*21 = {1,2,4,5,8,10,11,13,16,17,19,20} (15) CẤP CỦA Zn*, PTỬ NGUYÊN THỦY • Cấp nhóm Zn* chính là số phần tử Zn* • Định nghĩa : Cho a Є Zn*, đó cấp a là số nguyên dương t nhỏ cho at ≡ (mod n) Zn* • Ký hiệu cấp nhóm G là ord(G) |G|; cấp phần tử a kí hiệu là ord(a) |a| • Định nghĩa : Cho α Є Zn*, cấp α là φ(n), đó α gọi là phần tử sinh hay phần tử nguyên thủy Zn* (16) EXAMPLE α Є Z5* Cấp α 1 4 Ta thấy Z*5 có cấp là mà hai phần tử và lại có cấp là => và là phần tử sinh α Є Z8* Cấp α 2 Ta thấy cấp Z*8 là và ko có phần tử nào có cấp là => ko có phần tử sinh (17) HỆ CHỮ KÝ ELGAMMAL • 1/ Tạo cặp khóa (bí mật, công khai) (a, k) : Chọn phần tử nguyên tử α Zp* Đặt P = Z p*, A = Z p* x Z p-1 Chọn khóa bí mật là a Zp* Tính khóa công khai β α a mod p Định nghĩa tập khóa: = {(p, α, a, β): β α a mod p} Các giá trị p, α, β công khai, phải giữ bí mật a (18) HỆ CHỮ KÝ ELGAMMAL • 2/.Ký số: Dùng khóa ký: khóa a và số ngẫu nhiên kZp-1* (Vì kZp-1* , nên nguyên tố cùng p -1, đó tồn k-1 mod (p -1) ) Chữ ký trên xP là y = sigk(x, k) = (, ), yA (E1) Trong đó Z p*, Zp-1: = α k mod p và = (x – a * ) * k-1 mod (p -1) • 3/.Kiểm tra chữ ký: verk (x, , ) = TRUE β * α x mod p (E2) (19) EXAMPLE Chữ ký Elgamal trên liệu x = 112 * 1/ Tạo cặp khóa (bí mật, công khai) (a, β) : Chọn số nguyên tố p = 463 Đặt P = Z p*, A = Z p* x Z p-1 Chọn phần tử nguyên tử α = 2Zp* Chọn khóa bí mật là a = 211Zp* Tính khóa công khai β α a mod p = 2211 mod 463 = 249 Định nghĩa tập khóa: = {(p, α, a, β): β α a mod p} Các giá trị p, α, β công khai, phải giữ bí mật a (20) EXAMPLE Tính β α a mod p = 2211 mod 463 = 249 i e[i]= 21110 p=p*p p=p mod 463 p= p*2 p= p mod 463 1 0 1 64 642 3212 2552 2052 2472 64 392 255 205 355 356 784 710 712 64 321 255 205 247 249 (21) EXAMPLE • 2/.Ký số: Chọn ngẫu nhiên bí mật • k= 235 Zp-1* Khóa ký là (a, k ) Vì kZp-1* nguyên tố cùng p -1, Ǝ k-1 mod (p -1) Cụ thể: ƯCLN(k, p-1) = ƯCLN(235, 462) = 1, nên k-1 mod (p-1) = 235 -1 mod 462 = 289 Chữ ký trên liệu x = 112 là ( , ) = (16, 108), đó: = α k mod p = 2235 mod 463 = 16 = (x – a* )*k-1 mod (p -1)=(112- 211*16)*289 mod 462 = 108 (22) EXAMPLE k-1 mod (p-1) = 235 -1 mod 462 = 289 Bước i N b Ri+1 Qi+1 Xi Xi+1 Xi+2 462 235 227 1 -1 235 227 1 -1 2 227 28 -1 -57 2 -57 116 1 -57 116 -173 1 116 -173 289 (23) EXAMPLE Tính = α k mod p = 2235 mod 463 = 16 i e[i]= 23510 p=p*p p=p mod 463 p= p*2 p= p mod 463 1 1 1 64 1282 1792 1882 1562 572 64 179 94 156 260 8 128 188 520 16 128 179 188 156 57 16 (24) EXAMPLE * 3/.Kiểm tra chữ ký: verk (x, , ) = đúng β * α x mod p β * = 24916 * 16 108mod 463 = 132 α x mod p = 2112 mod 463 = 132 Hai giá trị đó nhau, chữ ký là đúng (25) ĐỘ AN TOÀN CỦA HỆ CHỮ KÝ ELGAMAL * Bài toán bảo đảm độ an toàn Sơ đồ chữ ký Elgammal: 1) TH1: Giả mạo chữ ký cùng với tài liệu ký T có thể ký trên tài liệu ngẫu nhiên cách chọn trước đồng thời x,, * Chọn x,, thoả mãn điều kiện kiểm thử sau: Chọn các số nguyên i, j cho i, j p-2, GCD(j, p-1) = và tính: = α i β j mod p = - j -1 mod (p -1) x = - ij -1 mod (p -1) * Chứng minh (, ) là chữ ký trên x, cách kiểm tra điều kiện kiểm thử: β * β αi β j( αi β j ) αi β j j -1 mod p α x mod p (26) EXAMPLE * Chọn các tham số sơ đồ chữ ký Elgammal: Chọn p = 463, phần tử sinh α = 2, Khóa bí mật a = 135 Khóa công khai β = α a mod p = 135 mod 463 = 272 * Chọn x,, thoả mãn điều kiện kiểm thử sau: Chọn i = 89, j = 125, i, j p-2, gcd(j, p-1) = Tính j -1 mod (p-1) = 377 = α i * β j mod p = 289 * 272125 mod 463 = 218 = – * j -1 mod (p -1) = -218 * 377 mod 462 = 50 x = - * i * j -1 mod (p -1) = -218 * 89 * 377 mod 462 = 292 * (, ) = (218, 50) là chữ ký trên x = 292, vì TM Đkiện kiểm thử: β * = 272 218 * 218 50 322 (mod 463) α x = 292322 (mod 467) (27) ĐỘ AN TOÀN CỦA HỆ CHỮ KÝ ELGAMAL 2, TH2: Sử dụng lại chữ ký điện trước đó * Nếu (, ) là chữ ký trên tài liệu x có từ trước, thì có thể giả mạo chữ ký trên tài liệu x’ khác + Chọn số nguyên k, i, j thỏa mãn k, i, j p-2, (k – j, p-1) = và tính: = h α i β j mod p = (h – j) -1 mod (p -1), x’ = (hx + i) (h – j) -1 mod (p -1) * (, ) là chữ ký trên x’, vì thỏa mãn điều kiện kiểm thử: β * α x' mod p (28) TÓM LẠI Cả hai cách giả mạo nói trên cho chữ ký đúng trên tài liệu tương ứng, đó không phải là tài liệu chọn theo ý người giả mạo Tài liệu đó tính sau tính chữ ký, vì giả mạo loại này thực tế không có ý nghĩa nhiều (29) THUẬT TOÁN CKĐT DSA & CHUẨN CKĐT DSS • Thuật toán CKĐT DSA là thuật toán đề nghị chuẩn chữ ký điện tử DSS (Digital Signature Standard) NIST • Nó cung cấp trình tự để tạo và xác nhận CKĐT • DSA sử dụng cặp khóa công khai – khóa riêng.Trong giai đoạn ký và xác nhận văn ký thể dạng thông điệp rút gọn là kết việc áp dụng hàm băm SHA-1 lên văn cần ký (30) THUẬT TOÁN CKĐT DSA 1,Tạo khoá •Chọn số nguyên tố 160 bit q •Chọn số nguyên tố L bit p, cho p=qz+1 với số nguyên z nào đó, 512 ≤ L ≤ 1024, L chia hết cho 64 •Chọn h, với < h < p - cho g = hz mod p > (z = (p-1) / q.) •Chọn x ngẫu nhiên, thoả mãn < x < q •Tính giá trị y = gx mod p •Khoá công là (p, q, g, y) Khoá riêng là x (31) THUẬT TOÁN CKĐT DSA 2, Ký số •Tạo số ngẫu nhiên với thông điệp, giá trị k thỏa mãn < k <q •Tính r = (gk mod p) mod q •Tính s = (k-1(SHA-1(m) + x*r)) mod q, đây SHA-1(m) là hàm băm mã hoá SHA-1 áp dụng cho thông điệp m •Tính toán lại chữ ký trường hợp không chắn r=0 s=0 •Chữ ký là (r,s) (32) THUẬT TOÁN CKĐT DSA 3, Kiểm tra chữ ký •Loại bỏ chữ ký 0< r <q 0< s <q không thỏa mãn •Tính w = (s)-1 mod q •Tính u1 = (SHA-1(m)*w) mod q •Tính u2 = (r*w) mod q •Tính v = ((gu1*yu2) mod p) mod q •Chữ ký là có hiệu lực v = r (33) CHUẨN CKĐT DSS • Chuẩn chữ ký số DSS là phiên cải tiến sơ đồ chữ ký Elgamal công bố hồ sơ liên bang Mỹ vào ngày 19/5/1994 và lấy làm chuẩn vào 1/12/1994 • Nếu dùng chữ ký RSA với thành phần kiểm thử chữ ký là nhỏ, thì việc kiểm thử nhanh việc ký Đối với DSS, ngược lại, việc ký nhanh kiểm thử • Mục đích: đảm bảo độ an toàn với số p lớn và chữ ký phải ngắn, có thể xác minh chữ ký sau nhiều năm (34) CHUẨN CKĐT DSS • DSS đã sửa đổi hệ chữ ký elgamal để 160 bit điện ký sử dụng chữ ký 320 bit, với 512 bit modulo p • Điều này thực cách dùng nhóm cyclic Zq* Zp* thay cho Zp*, đó tính toán thực Zp*, thành phần chữ ký lại thuộc Zq* • Cách này thực nhờ việc chia nhỏ Zp* thành các trường có kích thước 2160 => thay đổi: • = (x + a * ) * k-1 mod (p -1) • Dẫn đến giá trị kiểm tra thay đổi: • αxβ (mod p) • Nếu gcd(x + α, p-1)=1 thì Ǝ -1 mod (p-1) =>Công thức biến đổi thành: αx*-1 β*-1 (mod p) Do đó: α, β, tối giản modulo p mà không ảnh hưởng đến việc xác minh (35) CHUẨN CKĐT DSS 1, Tạo cặp khóa: Cho p là số nguyên tố 512 bit trường logarit rời rạc Zp ; q là số nguyên tố 160 bit và q chia hết cho (p-1) Cho α Є Zp*; P=Zp*; A =Zp*Zq: K={(p, q, α, a, β): β αa (mod p)} với p, q, α, β công khai, a là bí mật Chọn số ngẫu nhiên k(1<=k<=q-1) 2, Ký số: sigk( , ) đó: =(ak mod p) mod q & =(x+a* )k-1 mod q Với x Є Zp* và , Є Zq 3, Kiểm tra chữ ký: Tính e1=x* -1 và e2= * -1 Ver(x, , )= TRUE (αe1βe2 mod p) mod q= (36) CHUẨN CKĐT DSS • Giả sử: q=101, p=78q + 1=7879 • là phần tử nguyên tử Z7879 nên ta có thể lấy: a = 78 mod 7879 =170 Giả sử a=75, đó B=aa mod 7879 = 4567 Bây giả sử Bob muốn kí điện x = 1234 chọn số ngẫu nhiên k = 50, vì thế: k -1 mod 101 =99 Khi đó: =(17050 mod 7879) mod 101= 2518 mod 101=94 Và =(1234 + 75 *94) mod 101=97 => chữ ký: ( 94, 97) (37) CHUẨN CKĐT DSS • Chứng minh: • -1 =97-1 mod 101 = 25 • e1= 1234 * 25 mod 101=45 • e2=94 * 25mod 101=27 • (17045*456727 mod 7879) mod 101=2518 mod 101=94 • Vì chữ kí hợp lệ (38) (39)