MỘT SỐ THUẬT TOÁN KÝ VÀ XÁC NHẬN CHỮ KÝ ĐIỆN TỬ
Khoá luận tốt nghiệp Mục lục Lời nói đầu5 Trờngđại đạihọc họcquốc quốcgia giahà hànội nội Trờng Khoa công nghệ Ch¬ng I Khoa c«ng nghƯ Mét số khái niệm sở 1 KÝ hiƯu vµ kh¸i niƯm Thặng d bậc hai ký hiệu Legendre 10 Hµm mét phÝa vµ hµm cưaThanh sËp mét phÝa 10 Hoàng HoàngThị Thị ThanhLiễu Liễu Thuật toán tính nghịch đảo 11 Thuật toán phân tích thừa số 12 Ch¬ng II 13 Một số thuật toán ký Vấn đề m· ho¸ 13 xác nhận chữ ký đIện tử Một số thuật toán ký Đặt vấnxác ®Ò 13 nhận chữ ký đIện tử 2 Khái niÖm hÖ MËt m· .13 HÖ mËt m· RSA .15 Định nghĩa sơ đồ hệ mật mà RSA .15 chÝnh quy kho¸ XÐtluËn độ antốt toànnghiệp hệhệ mậtđại mÃhọc RSA 16 khoá luận tốt nghiệp hệ đại học chÝnh quy Ch¬ng III 17 Ngành: Công nghệ thông tin VÊn ®Ị ký ®iƯn tư 17 Ngành: Công nghệ thông tin Khái niệm ký điện tử .17 S¬ ®å ch÷ ký RSA 19 SơđồCán chữbộkýhớng RSA 19 dÉn: TS TrÞnh Nhật Tiến 2 Chống giả mạo chữ ký 20 3 Sơ đồ chữ ký điện tử ELGamal 21 3 Sơ đồ ch÷ ký ELGamal .21 3 Vấn đề giả mạochữ Hà ký .22 Néi 6-2001 3 Vấn đề Phá khóa theo sơ đồ ELGamal 25 Hµ Néi 6-2001 ChuÈn ch÷ ký sè DSS (Digital Signature Standard) 26 Sơ đồ chữ ký lần 29 Hoµng Thị Thanh Liễu - K42 C Khoá luận tốt nghiệp Chữ ký không phủ định đợc .32 Đặt vÊn ®Ị 32 Sơ đồ chữ ký không phủ định đợc Chaum - van Antverpen 33 Các tính chất sơ đồ Chaum - van Antverpen 34 Sơ đồ chữ ký Fail - Stop 37 Ch¬ng VI 40 Thư nghiƯm ký ®iƯn tư b»ng chơng trình 40 Chơng trình mà hoá RSA 40 Chơng trình ký điện tử theo sơ đồ chữ ký RSA .44 Kết luËn 47 Tài liệu tham khảo .48 Hoàng Thị Thanh Liễu - K42 C Khoá luận tốt nghiệp Lời nói đầu Truyền thông mạng đÃ, phổ biến hoạt động kinh tế xà hội Thông tin đợc truyền nhanh chóng, tiƯn lỵi Ngêi ta cã thĨ “nãi chun” víi nhau, giải trí nhau, mua bán trao đổi với mạng, cách xa hàng trăm ngàn số Việc mua bán mạng đợc thực nh nào? Với giao dịch mua bán bình thờng, ngời mua ngời bán xác nhận đồng ý mua bán cách ký tay vào cuối hợp đồng mua bán Vì cách ngời ta phải thể chữ ký họ kẻ khác giả mạo Mọi cách chép văn thờng bị phát dễ bị phân biệt đợc với gốc Mua bán mạng đợc thực theo cách thức tơng tự nh Nghĩa ngời gửi ngời nhận phải ký vào hợp đồng mua bán Một số văn khác cần phải xác nhận trách nhiệm ngời gửi văn gửi tức họ phải ký vào văn trớc gửi Nhng ký văn truyền qua mạng nh nào, tất nội dung văn đợc biểu diễn dới dạng số hoá (chỉ dùng hai số ta gọi văn loại văn số) Việc giả mạo chép lại văn số hoàn toàn dễ dàng phân biệt đợc gốc với Hơn nữa, văn số bị cắt dán, lắp ghép hoàn toàn ta phân biệt đợc gốc với Vậy chữ ký cuối văn loại chịu trách nhiệm toàn nội dung văn Chữ ký nh thể đợc trách nhiệm toàn văn bản? Chắc chắn chữ ký phải đợc ký bít văn Nh thông tin mạng bị lấy cắp, bị cắt dán, lắp ghép mà văn cần ký tên hay cần xác nhận ngời gửi văn lại văn quan trọng (nhất lĩnh vực quân sự, ngân hàng, thơng mại điện tử), cần đợc bảo vệ an toàn truyền mạng Mà hoá thông tin giúp bảo vệ thông tin an toàn Trở lại câu hỏi ký văn số đợc thùc hiƯn nh thÕ nµo? Thùc chÊt cđa viƯc ký điện tử mà hoá Việc xác nhận chữ ký kiểm nghiệm việc mà hoá có không Luận văn em vào nghiên cứu tìm hiểu số thuật toán ký xác nhận chữ ký thực chất thuật toán mà hoá việc kiểm tra việc mà hoá Hoàng Thị Thanh Liễu - K42 C Khoá luận tốt nghiệp Chơng I Một số khái niệm sở Trình bày khái niệm làm sở cho lý thuyết mà hoá thông tin ký điện tử Chơng II Vấn đề mà hoá Trình bày khái niệm chung hệ mật mà hệ mà khoá công khai - hệ mật mà RSA Chơng III Vấn đề ký điện tử Nghiên cứu chung số sơ đồ chữ ký, bao gồm sè thuËt to¸n ký, giao thøc chèi bá, giao thøc kiĨm thư Ch¬ng IV Mét thư nghiƯm ký điện tử theo sơ đồ chữ ký RSA Thử nghiệm mà hoá thông tin theo hệ Mật mà RSA ký điện tử theo sơ đồ chữ ký RSA Trong chơng trình thử nghiệm, việc mà hoá ký văn với chữ tiếng Anh Việc sử dụng với chữ khác (nh chữ tiếng Việt) tơng tự nh Chơng trình đợc viết ngôn ngữ Turbo C/C++ Hoàng Thị Thanh Liễu - K42 C Khoá luận tốt nghiệp Chơng I Một số khái niệm sở 1 Kí hiệu khái niệm * Kí hiệu chia hết: Cho a b hai số nguyên dơng - Sè a chia hÕt cho sè b ký hiÖu a b Tồn n N cho a = b*n, - Khi ®ã ngêi ta nãi b lµ íc cđa a vµ ký hiƯu: b | a * íc sè chung lín nhÊt: Cho a b hai số nguyên dơng - Ước số chung lín nhÊt cđa a vµ b lµ sè tù nhiên m lớn cho m | a m | b Khi ký hiệu ƯCLN(a, b) = m * Hai sè nguyªn tè cïng nhau: Cho a b hai số nguyên dơng - Số a số b đợc gọi nguyên tố ƯCLN (a, b) = *Đồng d modulo: Cho n N, n vµ a, b Z n* KÝ hiÖu a b (mod n) nghĩa a đồng d với b theo mod n tồn số nguyên k Z n* cho a = b+k*n Tøc lµ (a-b) = k*n, nh vËy n | (a-b) * Mét sè tÝnh chÊt cđa ®ång d modulo: (ab) (mod n) [(a mod n) (b mod n)] (mod n) (a*b) (mod n) [(a mod n) *(b mod n)] (mod n) * Khái niệm Nhóm: Nhóm cặp (G, *), G tập hợp khác rỗng, * phép toán hai G thoả mÃn ba điều kiện sau: Hoàng Thị Thanh Liễu - K42 C Khoá luận tốt nghiệp Phép toán có tính kết hợp: (x*y)* z = x*(y*z) víi mäi x, y, z G Cã phÇn tư phÇn tư trung lËp e G: x*e = e*x = x víi mäi x G Với xG, có phần tử nghịch đảo x’ G: x*x’ = x’*x = e * Nhãm Cyclic: - Nhóm G đợc gọi nhóm Cyclic đợc sinh phần tử Tức có phần tử g G mà phần tử a G tồn số n N ®Ĩ gn = a - Khi ®ã g đợc gọi phần tử sinh hay phần tử nguyªn thủ cđa nhãm G VÝ dơ: Nhãm céng Z gồm số nguyên nhóm Cyclic có phần tử sinh - Cấp G số phần tử G G có hữu hạn phần tử, G có vô hạn phần tử Ví dụ: Nhóm cộng Z gồm số nguyên nhóm Cyclic vô hạn - Nếu không tồn số tự nhiên n để gn =e G có cấp - Trong trờng hợp ngợc lại, tồn số tự nhiên nhỏ n mà g n = e G gồm n phần tử khác nhau: e, g, g2, g3, , gn-1 Khi ®ã G đợc gọi nhóm Cyclic hữu hạn cấp n - Phần tử G đợc gọi có cấp d d số nguyên dơng nhỏ cho d = e Nã cã cÊp nÕu = e Hoàng Thị Thanh Liễu - K42 C Khoá luận tốt nghiệp Chính lẽ trên, nhóm Cyclic đợc định nghĩa nh sau: - Nhóm G đợc gọi nhóm Cyclic tồn số g cho phần tử G luỹ thừa nguyên g * Nhóm con: Cho G lµ mét nhãm, cho S G vµ S - S đợc gọi nhóm G nÕu PhÇn tư trung lËp e cđa G n»m S S khÐp kÝn ®èi víi lt hợp thành G (tức x*y S với mäi x, y S) S khÐp kÝn ®èi víi phép lấy nghịch đảo G (tức x-1 S víi mäi xS) * KÝ hiƯu: Zn = 0, 1, 2, , n-1 Tức Zn tập số nguyên không âm < n Tập với phép cộng lập thành nhóm Cyclic có phần tử sinh Đó nhóm hữu hạn có cấp n Z n* = e Zn, e nguyên tố với n Tức e # - Đó tập số nguyên dơng < n, nhng nguyên tố với n - Z n* đợc gọi tập Thặng d thu gọn theo mod n, lập thành nhóm với phép nhân mod n (n) n) số phần tử tập Z n* * Một số kết quả: Những kết sau đà đợc chứng minh, nhắc lại để sử dụng - Định lý Lagrange: Cho G lµ nhãm cÊp n vµ g G Khi Cấp g ớc n - HƯ qu¶: Gi¶ sư g Z n* cã CÊp m m ớc (n) Nếu b Z n* th× b(n) (mod n) NÕu p số nguyên tố (p) = p-1 Do víi mäi b Z *p (tøc b nguyªn tè víi p) th× b(p) (mod n) hay bp -1 (mod n) - Định lý: Nếu p số nguyên tố Z *p nhóm Cyclic Chú ý Theo định nghĩa ta có: phần tö Z n* cã cÊp d nÕu d số nguyên dơng nhỏ cho d = e Z n* , tøc lµ d (mod n) Hoàng Thị Thanh Liễu - K42 C Khoá luận tốt nghiệp Logarit rời rạc * Khái niệm Logarit rời rạc: Cho p số nguyên tố, phần tử nguyên thuỷ Zp, Z *p Logarit rời rạc việc giải phơng tr×nh x = log (mod p) víi Èn x Hay phải tìm số x cho: x (mod p) - Bỉ ®Ị: NÕu (a, n) = tồn a-1 Zn thoả mÃn a * a-1 (mod n) - Định lý (n) Euler tổng quát): Nếu (a, n) = a(n) mod n = - HƯ qu¶: Víi p số nguyên tố (a, p) = ap-1 (mod p) = 1 Thặng d bậc hai ký hiệu Legendre * Thặng d bậc hai: Cho p số nguyên tố lẻ, x số nguyên dơng p-1 x đợc gọi thặng d bậc hai mod p, phơng trình y2 x mod p cã lêi gi¶i * KÝ hiƯu Legendre: Cho p số nguyên tố lẻ, a số nguyên dơng ký hiệu Legendre nh sau: nÕu a mod p a = b 1, a thặng d bậc hai mod p 1, trờng hợp lại Hµm mét phÝa vµ hµm cưa sËp mét phÝa Hàm f(x) đợc gọi hàm phía tÝnh y = f(x) th× “dƠ”, nhng tÝnh x = f -1 (y) lại khó Ví dụ: Hàm f(x) = x (mod p), víi p lµ sè nguyên tố lớn, ( phần tử nguyên thuỷ mod p) hàm phía - Hàm f(x) đợc gọi lµ hµm cưa sËp mét phÝa nÕu tÝnh y = f(x) dễ, tính x = f -1 (y) lại khó Tuy nhiên có cửa sập z để tính x = f -1 (y) lµ “dƠ” VÝ dơ: Hµm f(x) = xa (mod n) (víi n lµ tÝch cđa hai số nguyên tố lớn n = p*q) hàm phía Nếu biết a n tính x = f -1(y) rÊt khã nhng nÕu biÕt cöa sập p q tính đợc f-1(y) dễ Thuật toán tính nghịch đảo Cho a Z n* , a-1 đợc gọi nghịch đảo cña a a*a-1 (mod n) = Mét sè thuật toán tính nghịch đảo: Cho a-1 chạy từ đến n-1 đến đợc a*a-1 (mod n) = Nếu biết (n) cần tính: a-1 a (n)-1 (mod n) Dïng thuËt to¸n Euclidean mở rộng nh sau: Đầu vào: b n Đầu ra: - nghịch đảo b theo mod n tồn tại, Hoàng Thị Thanh Liễu - K42 C Khoá luận tốt nghiệp - không tồn Đặt n0 = n; b0 = b; t0 = 1; t1 = 1; q = n0/b0; r = n0 - q*b0; while(r>0) { t2 = t0- q*t1; if(t20 ) t2 = t2 mod n; else t2 = n- (- t2 mod n); t0 = t1; t1 = t2; n0 = b0; b0 = r; q = n0/b0; r = n0- q *b0; } if(b0 = = 1) return t mod n; else return 0; Hoàng Thị Thanh Liễu - K42 C Kho¸ ln tèt nghiƯp Tht toán phân tích thừa số Bài toán: cho n tích hai số nguyên tố lớn p q, n = p*q, toán đặt biết n, có cách để tìm đợc p q không? Hiện ngời ta cha có cách tÝnh trùc tiÕp p, q h÷u hiƯu tõ n trõ biÕt (n) V× biÕt (n), ta cã: p*q = n (n) = (p-1)*(q-1) p+q = n-(n)+1 Dựa vào định lý Viet p q nghiệm phơng trình: x2 - (n-(n) +1)*x+n = Giải phơng trình ta dễ dàng tìm đợc p vµ q VÝ dơ n = 84773093, (n) = 84754668 q = 9539, p = 8887 Ngoµi theo cách cổ điển, sử dụng thuật toán : // Input: n // Output: p tho¶ m·n p | n // // trờng hợp ngợc lại for( int i = 3; i< = sqrt(n); i+ = 2) if (!n%i) return i; return 0; Trong thuật toán vòng lặp (n1/ 2/2) Nếu n có 512 bit, giá trị lớn n 2512 Nếu máy tính thực 106 lệnh giây thời gian thùc hiƯn lµ: T = n1/ /2 21/2*512 /2 = 2256 /2 = 2255(giây) 2238 (ngày) 2230 năm (1 ngày = 60*60*24 = 86400 giây 217 giây năm = 30*12*86400 giây = 31104000 giây 225 giây.) Nếu kẻ giả mạo muốn tìm p, q theo cách điều không tởng Hoàng Thị Thanh Liễu - K42 C 10 ... câu hỏi ký văn số đợc thực nh nào? Thực chất việc ký điện tử mà hoá Việc xác nhận chữ ký kiểm nghiệm việc mà hoá có không Luận văn em vào nghiên cứu tìm hiểu số thuật toán ký xác nhận chữ ký thực... Chơng III Vấn đề ký điện tử Nghiên cứu chung số sơ đồ chữ ký, bao gåm mét sè thuËt to¸n ký, giao thøc chèi bá, giao thøc kiĨm thư Ch¬ng IV Một thử nghiệm ký điện tử theo sơ đồ chữ ký RSA Thử nghiệm... tốt nghiệp Chơng III Vấn đề ký điện tử Khái niệm ký điện tử * Kí điện tử ? * Kí điện tử nh ? - Truyền mạng thông tin số hóa, tức dÃy bít - Vậy phải kí bit Sơ đồ chữ ký năm (P, A, K, S, V ), đó: