This is a cool website!
nam@xyz.comExcellent!!! alert("I'm hacker");
son@xyz.com5-stars website!
Lúc đoạn alert("I'm hacker"); không nội dung bình luận mà biến thành đoạn JavaScript thực lệnh mà người lập trình không mong muốn Hay hacker gõ vào comment sau: Excellent!!! Khi hiển thị trang trình duyệt thấy có thẻ IMG nên truy xuất địa http://hackerurl.com/hack.php Đây website chứa mã độc hacker Để chống lại lỗi chèn câu lệnh script, cần kiểm tra kỹ liệu nhập vào, gặp ký tự < >, cần chuyển chúng sang dạng < > 11.3 Bài tập thực hành Viết chương trình giấu tin ảnh bitmap theo giao diện bên dưới: 170 Viết chương trình thực công buffer overflow phần 2.1 171 PHỤ LỤC Chi Tiết S-box mã hóa DES b1b2 b3b4 A B C D E F E D F B A C b0b5 F E D A C B E D B F C A F C B E A D E F DES S-box b1b2 b3b4 b0b5 A B C D F E B D C A D F E C A B E B A D C F D A F B C E DES S-box b1b2 b3b4 A B C D E F A E F D C B b0b5 D A E C B F D F B C A E A D F E B C DES S-box b1b2 b3b4 A B C D E F D E A B C F b0b5 D B F C A E A C B D F E 3 F A D B C E DES S-box b1b2 b3b4 A B C D E F C A B F D E b0b5 E B C D F A B A D F C E B C E D F A DES S-box 172 b1b2 b3b4 b0b5 C 1 A F 9 A F E F A B C C C C F A D E F D D E E B B A D B B E D DES S-box b1b2 b3b4 A B C D E F B E F D C A b0b5 D B A E C F B D C E A F B D A F E C DES S-box b1b2 b3b4 A B C D E F D F B A E C b0b5 F D A C B E B C E A D F E A D F C B DES S-box 173 PHỤ LỤC Thuật toán Euclid 1) Thuật toán Euclid Thuật toán Euclid dùng để tìm ước số chung lớn hai số nguyên a b Ta ký hiệu ước số chung lớn gcd(a, b) Thuật toán dựa định lý sau: Định lý: với số nguyên a ≥ b > thì: gcd(a, b) = gcd(b, a mod b) Chứng minh: Gọi d ước số chung lớn a b Gọi r phần dư phép chia a mod b: a = bq + r (1) Ta chứng minh hai điều sau: b r chia hết cho d: Vì a b chia hết cho d nên từ đẳng thức (1) ta có r phải chia hết cho d Không tồn e > d mà b r chia hết cho e: Giả sử tồn số e > d mà b r chia hết cho e Như từ đẳng thức (1) ta có a chia hết cho e Vậy a b chia hết cho e trái với giả thiết d ước số chung lớn a b Vậy ước số chung lớn b r d (đpcm) Vì gcd(b, 0) = b nên áp dụng liên tiếp định lý r = ta tìm gcd(a,b) Cụ thể ta có thuật toán Euclid sau áp dụng cho trường hợp a ≥ b > 0: /* Thuật toán Euclid tính gcd(a,b) */ EUCLID (a,b) A = a; B = b; while B0 R = A mod B; A = B; B = R; end while return A; Thuật toán minh họa qua hình sau: Ví dụ: a= 57, b = 42 A1 = B1q + R1 57 = 42 × + 15 A2 = B2q + R2 42 = 15 × + 12 A3 = B3q + R3 15 = 12 × + … 12 = An = Bnq + gcd(a,b) 174 An+1 3×4 + 0 2) Thuật toán Euclid mở rộng Thuật toán mở rộng thuật toán Euclid điểm trường hợp a b nguyên tố nhau, gcd(a, b) = với a ≥ b > 0, thuật toán cho biết thêm giá trị nghịch đảo b-1 b phép chia modulo a (tức bb-1 mod a) /* Thuật toán Euclid mở rộng trả hai giá trị: */ /* - gcd(a,b); */ -1 /* - gcd(a,b)=1; trả b mod a */ EXTENDED_EUCLID(a,b) A1 = 1; A2 = 0; A3 = a; B1 = 0; B2 = 1; B3 = b; while (B30)AND(B31) Q = A3 div B3; R1 = A1 - QB1; R2 = A2 - QB2; R3 = A3 - QB3; /* A3 mod B3 */ A1 = B1; A2 = B2; A3 = B3; B1 = R1; B2 = R2; B3 = R3; end while If B3=0 then return A3; no inverse; If B3=1 then return 1; B2; Trước vào vòng lặp ta có tính chất sau: aA1 + bA2 = A3 (1) aB1 + bB2 = B3 (2) lần lặp thứ nhất: aR1 + bR2 = aA1 - aQB1 + bA2 - bQB2 = A3 – QB3 aR1 + bR2 = R3 (3) Vậy suốt trình lặp thuật toán đẳng thức (1), (2), (3) thỏa mãn Trong trường hợp gcd(a, b) 1, thuật toán hoạt động tương tự thuật toán Euclid chuẩn (A3 B3 tương tự A B thuật toán chuẩn) Khi kết thúc vòng lặp B3 = 0, A3 ước số chung lớn nhất) Trong trường hợp gcd(a, b) = Theo thuật toán Euclid chuẩn A3 = 1, B3= Suy lần lặp trước B3 = Trong thuật toán mở rộng vòng lặp kết thúc B3 = Ta có: aB1 + bB2 = B3 aB1 + bB2 = bB2 mod a Vậy B2 nghịch đảo b phép modulo m 175 Ví dụ: a = 63, b= 35 A3 B3 Q R3 A2 B2 Q R2 63 = 35 × + 28 = 35 = 28 × + = -1 × + 28 = 7×4 + -1 = 1×1 - ×4 - Không có nghịch đảo Ví dụ: a = 25, b= A3 B3 Q R3 A2 25 = ×3 + = = 4×1 +3 = -3 × + 4 = 3×1 + -3 = B2 Q R2 1×3 - ×1 - -7 Nghịch đảo là: -7 + 25 = 18 (7*18 = 126 mod 25) Phương pháp kiểm tra số nguyên tố lớn Miller-Rabin Để kiểm tra xem số p có phải số nguyên tố hay không, thuật toán cổ điển kiểm tra xem p có chia hết cho p chia hết cho số lẻ từ đến ⌊√ ⌋ hay không Nếu p không chia hết cho số p số nguyên tố, ngược lại cần p chia hết cho số trên, p số nguyên tố Tuy nhiên p số nguyên tố lớn việc kiểm tra số không hiệu mặt thời gian Đối với số nguyên tố, ta có hai bổ đề sau: Bổ đề 1: với p số nguyên tố, x số nguyên, x2 mod p x mod p x (p1) mod p Chứng minh: x2 mod p x2 - mod p (x – 1)(x+1) mod p (*) Vì p số nguyên tố nên (*) tương đương với x10 mod p hay x+1 mod p Hay nói khác x mod p hay x (p1) mod p (đpcm) Bổ đề 2: với p số nguyên tố, viết lại p dạng p = 2kq + q số lẻ Với a số nguyên dương nhỏ p, ta có kết luận sau: *) Hoặc **) Hoặc dãy số (mod p) Chứng minh: Đặt 176 ta viết lại dãy số thành tồn số mà đồng dư với Theo định lý Fermat, ta có suy 1 hay Như dãy số dụng bổ đề 1, ta có kết luận sau: có số cuối đồng dư với Vận Hoặc phần tử lại dãy đồng dư với Trong trường hợp ta có kết luận *) Hoặc có số theo bổ đề **) (đpcm) p nhiên Đo Trong trường hợp ta có kết luận Như p số nguyên tố p phải thỏa mãn hai bổ đề Tuy nhiên mệnh đề ngược lại chưa đúng, có nghĩa số hợp số thỏa mãn hai bổ đề Từ nhận xét trên, người ta xây dựng thuật toán kiểm tra số nguyên tố Miller-Rabin sau: /* Thuật toán Miller-Rabin kiểm tra tính nguyên tố số nguyên p /* TEST(p) Tìm k, q với k> 0, q lẻ thỏa mãn Chọn số ngẫu nhiên a khoảng [2, p - 1] If Then return ‚p số nguyên tố‛; For j= to k-1 If Then return ‚p số nguyên tố‛; return ‚p số nguyên tố‛; Ví dụ : kiểm tra số p = 29 29 k = 2, q = Nếu chọn a = 10: 107 mod 29 = 17 ta tiếp tục tính (107)2 mod 29 = 28 thủ tục kiểm tra trả “có thể số nguyên tố” Nếu chọn a = 2: 27 mod 29 = 12 ta tiếp tục tính (27)2 mod 29 = 28 thủ tục trả “có thể số nguyên tố” Vì vậy, thử vài giá trị a, ta chưa thể kết luận tính nguyên tố p Tuy nhiên thử hết giá trị a từ đến 28 ta nhận kết “có thể số nguyên tố” Vì chắn 29 số nguyên tố Ví dụ : kiểm tra số p = 221 221 55 k = 2, q = 55 Nếu chọn a = 5: 555 mod 221 = 112 ta tiếp tục tính (555)2 mod 29 = 168, thủ tục kiểm tra trả ‚không phải số nguyên tố‛ Điều 221 = 13 x 17 177 Tuy nhiên chọn a = 21: 2155 mod 221 = 200 ta tiếp tục tính (2155)2 mod 29 = 220, lúc thủ tục trả ‚có thể số nguyên tố‛ Nghĩa số trường hợp a, thuật Miller-Rabin không xác định tính nguyên tố 221 Người ta tính xác suất để trường hợp p hợp số, thuật toán MillerRabin đưa khẳng định ‚không phải số nguyên tố‛ 75% Trong 25% lại, Miller-Rabin không xác định p nguyên tố hay hợp số Do áp dụng thuật toán t lần (mỗi lần với giá trị a khác nhau) xác suất không xác định (trong t lần) (0.25)t Với t 10, xác suất bé, nhỏ 0.000001 Tóm lại nguyên tắc kiểm tra tính nguyên tố số nguyên p thực sau: - Thực thuật toán Miller-Rabin 10 lần với 10 số a ngẫu nhiên khác - Nếu 10 lần thuật toán cho kết ‚có thể số nguyên tố‛, ta khẳng định p số nguyên tố - Chỉ cần lần thuật toán cho kết ‚không phải số nguyên tố‛, ta khẳng định p hợp số Ví dụ 3: p = 41, 41 k = 3, q = 5, p-1 = 40 aq mod p 38 9 38 14 40 40 a 12 13 16 24 25 31 37 a2q mod p 40 40 9 a4q mod p 40 32 40 40 40 41 số nguyên tố Ví dụ 4: p = 133, 133 a 11 17 27 30 38 58 75 94 102 121 33 k = 2, q = 33, p-1 = 132 aq mod p 83 132 76 132 132 1 a2q mod p 106 57 133 số nguyên tố (133 = * 19) Tuy tính toán phức tạp thuật toán Miller-Rabin thuật toán kiểm tra số nguyên tố hiệu nhất, thực nhanh thuật toán kiểm tra số nguyên tố biết 178 Định lý số dƣ Trung Hoa Định lý số dư Trung Hoa cho phép thay phải thực phép toán mod T trường hợp T lớn, ta chuyển tính toán phép mod ti , với ti nhỏ T Do định lý số dư Trung Hoa giúp tăng tốc độ tính toán thuật toán RSA ∏ Giả sử: Trong số đôi Xét tập ZT tập X tích Decarte tập đến T-1): nguyên tố (ZT tập số nguyên từ Ta có hai định lý số dư Trung Hoa sau: Định lý 1: Tồn song ánh tập ZT tập X Nghĩa là: cho A = f(a1, a2, …, ak) cho (a1, a2, …, ak) = f -1(A) Chứng minh: 1) Ánh xạ thuận: Để chuyển A thành (a1, a2, …, ak), ta tính = A mod ti 2) Ánh xạ nghịch: Để chuyển (a1, a2, …, ak) thành A, ta thực sau: Phương án (do nhà toán học người Trung Quốc Chin Chiu-Shao đề xuất vào năm 1247): Đặt Ti = T/ti = t1.t2…ti-1.ti+1 tk , Ti mod tj , i≠j Ngoài có Ti nguyên tố với ti (theo giả thiết ti nguyên tố nhau) Suy tồn phần tử nghịch đảo cho : Ta tính A công thức: Để bảo đảm ánh xạ nghịch đúng, ta cần chứng minh = A mod ti Ta có: ( ) (vì T chia hết cho ti) (vì Tj mod ti , i≠j) 1 (vì ) (đpcm) Phương án (do nhà toán học H.L.Garner đề xuất vào năm 1959): Trong phương án dùng thuật toán Euclid mở rộng, lập sau: số j i t1 t2 t3 t4 t1 t2 c12 t3 c13 c23 t4 c14 c24 c34 179 Và tính k giá trị trung gian bi sau: ( ) … ( ) Và A tính theo công thức: Để bảo đảm ánh xạ nghịch đúng, ta cần chứng minh = A mod ti Ta có: Ta có: ( Đặt ) , ta có: … Vậy ta có kết luận: Định lý 2: Các phép toán số học modulo thực ZM thực k phép toán tương tự trên: Cụ thể, A (a1, a2, …, ak), B (b1, b2, …, bk) thì: Dựa vào định lý A, B, M số lớn thuộc không gian ZT khó tính toán, ta chuyển đổi A, B, M dạng ai, bi, ti Sau thực tính toán không gian tập , cuối chuyển ngược kết lại không gian ZT Do số phép tính nhiều, việc thực không gian tập mang lại hiệu cao so với chi phí chuyển đổi 180 Ví dụ định lý số dư Trung Hoa: Cho T = 1813 = 37 x 49 Tính X+Y = 678+973 mod 1813 Ta có t1 = 37, t2 = 49 Vậy X biểu diễn thành: (678 mod 37, 678 mod 49) = (12, 41) Y biểu diễn thành (973 mod 37, 973 mod 49) = (11, 42) Do đó: (678+973) mod 1813 = ((12+11) mod 37, (41+42) mod 49) = (23, 34) Và cuối kết phép cộng là: Theo phương án 1: T1 = 49, T2 = 37 34 23 49 = 38318 = 4335 34 34 32 37 1813 1813 1813 = 1651 678 973 Theo phương án 2: c12 = b1 = 23, b2 = (34 – 23)4 mod 49 = 44 23 44 37 = 1651 Cài đặt giao thức SSL cho Web server IIS (Xem nội dung MSOpenLab http://msopenlab.com/index.php?article=68) 181 TÀI LIỆU THAM KHẢO [1] Bảo mật thông tin, mô hình ứng dụng Nguyễn Xuân Dũng Nhà xuất Thống Kê 2007 [2] Cryptography and Network Security Principles and Practices, 4th Edition William Stallings Prentice Hall 2005 [3] Information Security Principles and Practices Mark Stamp John Wiley&Son, Inc 2006 [4] Applied Cryptography, 2nd Edition Bruce Sneider John Wiley&Son, Inc 1996 [5] AES Proposal: Rijndael Block Cipher Joan Deamen, Vincent Rijmen [6] Differential Cryptanalysis of DES-like cryptosystem – Edi Biham, Adi Shamir - 1990 [7] Linear Cryptanalysis Method for DES cipher – Matsui – Springer-Velag – 1998 [8] Guide to elliptic curve cryptography – Hankerson, Menezes, Vanstone – Springer, 2004 [9] How Secure Is Your Wireless Network Lee Barken Prentice Hall 2003 182 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN - - BÀI GIẢNG AN TOÀN VÀ BẢO MẬT THÔNG TIN (Lưu hành nội bộ) Nha Trang, tháng năm 2008 183 BÀI GIẢNG AN TOÀN VÀ BẢO MẬT THÔNG TIN Biên soạn: Trần Minh Văn (Tài liệu tham khảo chính: Cryptography and Network Security Principles and Practices, 4th Edition William Stallings Prentice Hall 2005) 184