Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 85 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
85
Dung lượng
3,97 MB
Nội dung
CHƢƠNG GIAO THỨC Trong chương trước, tìm hiểu cách thức thực tính bảo mật, tính chứng thực tính không thoái thác phương pháp mã hóa đối xứng mã hóa khóa công khai Chương trước tiên tìm hiểu chế chống lại hình thức công phát lại thông điệp (replay attack) Tiếp theo trình bày giao thức bảo mật, nguyên tắc áp dụng kỹ thuật mã hóa nhằm đảm bảo việc truyền liệu an toàn trước hình thức công đề cập chương Chương trình bày giao thức dạng nguyên tắc lý thuyết, chương trình bày số giao thức ứng dụng thực tiễn 6.1 Phát lại thông điệp (Replay Attack) Trong hình thức công phát lại thông điệp, Trudy chặn thông điệp Alice gửi cho Bob, sau thời gian gửi lại thông điệp cho Bob Như Bob nghĩ Alice gửi thông điệp hai lần khác Tuy nhiên thực Alice gửi lần Chỉ sử dụng mã hóa đối xứng mã hóa khóa công khai ngăn cản hình thức công Để chống lại reply attack có phương pháp: 1) Dùng số định danh: thông điệp gửi cho Bob, Alice nhúng vào số định danh thông điệp S Mỗi thông điệp ứng với S khác || phép nối dãy bít Do Trudy phát lại thông điệp, Bob biết hai thông điệp có số định danh loại bỏ thông điệp thứ hai Tuy nhiên, phương pháp có hạn chế Bob phải lưu trữ số định danh Alice để có sở so sánh Do phương pháp thường sử dụng cho phiên làm việc (connection oriented) 2) Dùng timestamp: thông điệp gửi cho Bob, Alice nhúng vào timestamp T xác định thời điểm gửi Bob chấp nhận thông điệp đến Bob giới hạn thời gian kể từ lúc gửi Tuy nhiên phương pháp yêu cầu đồng hồ Alice Bob phải đồng bộ, không sai lệch đáng kể Ngoài độ trễ việc truyền tin mạng trở ngại phương pháp 3) Dùng chế challenge/response: để bảo đảm thông điệp từ Alice replay, Bob gửi số ngẫu nhiên N cho Alice (gọi nounce) Alice nhúng N thông điệp gửi cho Bob N A C=E(P||N, KAB) B Mã hóa đối xứng A N A C=E(M||N, KUB) A 100 B Mã hóa khóa công khai Khi Bob giải mã kiểm tra N mà Bob nhận xem có trùng khớp với N Bob gửi không Như Trudy replay thông điệp E(P||N, KAB) lần Bob gửi số N khác Tuy nhiên phương pháp đòi hỏi thêm bước Bob phải gửi N trước cho Alice Vì thực tế tùy trường hợp mà người ta sử dụng kỹ thuật cho hợp lý 6.2 Giao thức bảo mật Trong thực tế, hai người chưa biết trước muốn trao đổi liệu với nhau, họ phải xác định người ai, sau thống với phải dùng phương pháp mã hóa nào, khóa gì,… Để làm điều họ phải tiến hành thông qua giao thức bảo mật Như định nghĩa giao thức bảo mật quy định mà hai cá thể tuân theo quy định đó, họ trao đổi liệu với cách an toàn bảo mật Một giao thức bảo mật thường nhằm xác định yếu tố sau: Định danh hai cá thể trao đổi liệu, chống replay attack Trao đổi khóa phiên bí mật để mã hóa liệu Vì mã đối xứng thực nhanh mã hóa công khai nên ngày người ta dùng mã đối xứng để mã hóa liệu, việc trao đổi khóa phiên bí mật dùng mã hóa đối xứng hay mã hóa khóa công khai Trong phần 3.9 hay phần 4.6.2 4.7 xem số giao thức tập trung vào việc trao đổi khóa phiên Trong phần này, ta mở rộng giao thức nhằm định danh cá thể trao đổi liệu chống replay attack 6.2.1 Định danh trao đổi khóa phiên dùng mã hóa đối xứng với KDC Xét lại mô hình phần 3.9 trao đổi khóa phiên KDC REQUEST to B E(KAB, KA)||E(KAB, KB) A E(KAB, KB) B E(P, KAB) Mô hình bị công replay attack Ví dụ, Trudy replay bước mà B nghĩ A gửi B tiếp tục dùng KAB làm khóa phiên Dựa sở Trudy tiếp tục replay bước (việc replay liệu bước gây hậu không mong muốn đề cập chương 1) Needham and Schroeder đề xuất sửa đổi mô hình sau: 1) A KDC: IDA||IDB||N1 2) KDC A: E(KS||IDB||N1||E(KS||IDA, KB), KA) // KS khóa phiên, IDB ể A biết khóa phiên dùng với B 101 3) A giải mã có KS E(KS||IDA, KB) 4) A B: E(KS||IDA, KB) 5) B A: E(N2, KS) 6) A B: E(f(N2), KS) 7) A B: E(P, KS) // IDA ể B biết khóa phiên dùng với A // f hàm Tại bước 1, A gửi cho KDC nounce N1 KDC nhúng N1 vào rõ bước Do bước bị replay attack (theo phương pháp challenge/response) Tại bước 5, B gửi cho A giá trị nounce N2, chờ A gửi lại giá trị f(N2), f hàm chọn trước Do Trudy replay attack bước Trudy thực bước Trudy KS để tính N2 f(N2) Bob nhận biết Trudy giả mạo Trudy replay liệu tiếp bước Như thấy bước 4, 5, hình thức challenge/response để chống replay attack Để phòng Trudy replay bước để sử dụng lại KS cũ Bob challenge bước yêu cầu response bước xem người gửi có biết KS không (chỉ có Alice biết KS) Tuy nhiên giao thức chưa hoàn toàn chặc chẽ, có khuyết điểm sau Trudy biết KS E(KS||IDA, KB) tương ứng Trudy replay attack bước 4, sau dựa KS tính N2 phản hồi N2 cho Bob Như Bob Trudy mạo danh Alice tiếp tục dùng khóa phiên KS bị lộ Do giao thức Needham/Schroeder tiếp tục sửa lại sau: 1) 2) 3) 4) 5) A B: B KDC: KDC A: A B: A B: IDA ||NA IDB||NB||E(IDA||NA, KB) E(IDB||NA||KS, KA)|| E(IDA|| KS, KB)|| NB E(IDA||KS, KB)|| E(NB, KS) E(P, KS) Trong giao thức A gửi NA cho Bob, Bob gửi tiếp cho KDC, KDC nhúng NA vào rõ gửi cho A Do A nhận NA có nghĩa mã E(IDB||NA||KS, KA) bước không bị replay attack B gửi NB cho KDC, KDC gửi lại cho A, A gửi lại NB cho B dạng mã hóa Đo B nhận NB có nghĩa E(IDA||KS, KB) bước không bị replay attack Do KS mà Alice Bob nhận khóa phiên Trudy replay lại mã E(P, KS) cũ lần trước bước 6.2.2 Định danh trao đổi khóa phiên dùng mã hóa khóa công khai Xét lại mô hình phần 4.6.2 1.CA 2.CB A 3.E( E(KS , KRA), KUB) E(P, KS) 102 B Trong mô hình trên, Trudy replay bước mà B nghĩ A gửi B tiếp tục dùng KS làm khóa phiên Dựa sở Trudy tiếp tục replay bước Ở áp dụng chế challenge/response khác để chống replay sau: CA CB||NB E(E(S , KRA), KUB) H(KS) A A B E(P||KS) Mô tả: - Bước 1: A gửi chứng CA cho B - Bước 2: B gửi chứng CB nounce NB cho A - Bước 3: A chọn tiền khóa phiên S tính khóa phiên KS = H(S||NB) A gửi chứng thực bảo mật S cho B B tính khóa phiên KS - Bước 4: A gửi giá trị hash H(KS) cho B, B kiểm tra giá trị hash với giá trị hash B tự tính Nếu khớp, B biết bước bị replay attack Giả sử Trudy replay bước S, Trudy không tính KS tương ứng với NB Bob, từ Trudy tính H(KS) Do Trudy replay bước mà không bị Bob phát - Bước 5: A B tiến hành trao đổi liệu 6.3 Câu hỏi ôn tập 1) Tấn công phát lại thông điệp gì? Nêu tác hại thao tác công so sánh với việc sửa đổi thông điệp vào mạo danh 2) Nêu phương pháp chống lại công phát lại thông điệp 3) Nêu mục đích giao thức 6.4 Bài tập Xét giao thức sau: IDA CB||NB E(S , KUB) H(KS) A A B E(P||KS) 103 a) B chắn A người ứng với IDA không? Nếu Trudy mạo danh A sử dụng IDA B có phát không? Giải thích b) Giả sử A có password để định danh với B, B lưu trữ giá trị hash password A Hãy sửa giao thức để B định danh A 104 CHƢƠNG MỘT SỐ ỨNG DỤNG THỰC TIỄN 7.1 Giới thiệu Trong chương này, tìm hiểu việc áp dụng mô hình lý thuyết chương trước vào số giao thức thực tiễn Trước hết chuẩn chứng thực X.509, chuẩn thực tiễn áp dụng vấn đề trao đổi khóa công khai mà đề cập phần 4.6.1 Tiếp theo sau tìm hiểu giao thức bảo mật web Secure Socker Layer (SSL), giao thức bảo mật mạng cục Keberos Có thể minh họa giao thức mô hình mạng OSI sau: Application Layer PGP HTTP SSL Keberos Transport Layer TCP/ UDP Network Layer IP/IPSec S/MIME SMTP Link Layer Physical Layer Trong mô hình thấy việc ứng dụng bảo mật vào truyền thông mạng tiến hành tầng khác tầng mạng hay tầng ứng dụng Trong giao thức TCP/IP, người ta thay giao thức IP thường giao thức IP Security để việc bảo mật thực tầng mạng Do ứng dụng khác tầng ứng dụng không cần quan tâm đến bảo mật nữa, việc bảo mật IPSec thực Chi tiết IPSec trình bày [3] Các giao thức SSL, Keberos, PGP hay S/MIME thực tầng ứng dụng Vì giao thức phải thực chế bảo mật cho riêng 7.2 Chứng thực X.509 7.2.1 Cấu trúc chứng thực Chứng thực X.509 áp dụng dựa lý thuyết chữ ký điện tử phần 5.4 Sơ đồ nguyên tắc để sinh chứng thực X.509 sau: Chứng chưa ký, gồm ID public key người sử dụng Tính Hash H KRCA E Mã hóa khóa riêng CA để tạo chữ ký Chứng ký CA, người sử dụng kiểm tra khóa công khai CA Certificate = ID||KU||E(H(ID, KU), KRCA) Hình 7-1 Sơ đồ tạo chứng X.509 105 version version version Cấu trúc chứng X.509 gồm có thành phần sau: Version Version Serial Number 05:A0:4C Certificate Signature Algorithm PKCS #1 SHA-1 With RSA Encryption Issuer Name OU = Equifax Secure Certificate Authority; O = Equifax Validity (Not Before, Not After) 04/01/2006 17:09:06 PM GMT - 04/01/2011 17:09:06 PM GMT Subject CN= login.yahoo.com; OU= Yahoo; O= Yahoo! Inc Subject Public Key Algorithm PKCS #1 RSA Encryption Subject Public Key 30 81 89 02 81 81 00 b5 6c 4f ee ef 1b 04 5d be… Issuer Unique Identifie Subject Unique Identifier Extension for version all version Certificate Signature Algorithm PKCS #1 SHA-1 With RSA Encryption Certificate Signature Value 50 25 65 10 43 e1 74 83 2f 8f 9c 9e dc 74 64 4e… Hình 7-2 Cấu trúc ví dụ chứng X.509 Mục đích thành phần là: Version: phiên X.509 chứng này, có phiên 1, Serial Number: số serial chứng trung tâm chứng thực CA ban hành Certificate Signature Algorithm: thuật toán ký chứng chỉ, gồm loại hàm Hash phương pháp mã hóa khóa công khai Issuer name: Tên trung tâm chứng thực CA (CN: common name, O: organization, OU: organization unit) Validity: thời gian hiệu lực chứng Subject: tên chủ sở hữu chứng chỉ, gồm có CN, O, OU,… Subject Public Key Algorithm: thuật toán mã hóa khóa công khai mà tương ứng với khóa công khai chứng Subject Public Key: khóa công khai chứng chỉ, tức khóa công khai chủ sở hữu Đối với RSA thuộc tính lưu giữ giá trị Modulus Exponent nối tiếp (N e) Issuer Unique Identifier, Subject Unique Identifier: dành cho version 2, sử dụng Extension: dành cho version Certificate Signature Algorithm: thuật toán ký chứng chỉ, giống mục thứ Certificate Signature Value: giá trị chữ ký Đối với version phần Extension gồm thông tin sau: Authority key identifier: Một số dùng để định danh trung tâm chứng thực Thuộc tính Issuer Name cung cấp tên trung tâm chứng thực dạng text, điều gây nhầm lẫn Subject key identifier: Một số dùng để định danh người sử dụng chứng thực Tương tự Issuer Name, thuộc tính Subject cung cấp tên 106 người dạng text, điều gây nhầm lẫn Ngoài việc dùng số định danh cho phép người sử dụng có nhiều chứng khác Key Usage: mục đích sử dụng chứng Mỗi chứng có nhiều mục đích sử dụng như: mã hóa liệu, mã hóa khóa, chữ ký điện tử, không thoái thác … CRL Distribution Point: địa để lấy danh sách chứng hết hạn hay bị thu hồi (certificate revocation list) Một chứng thường lưu file có phần mở rộng cer Hình 7-3 Xem nội dung chứng thực Firefox 2.0 (dùng giao thức SSL) Vì chứng ký khóa riêng CA, nên bảo đảm chữ ký bị làm giả tin tưởng vào khóa công khai CA tin tưởng vào chứng mà CA cấp phát Do khóa công khai CA phải cung cấp cách tuyệt đối an toàn đến tay người sử dụng Trong ví dụ chứng thực Yahoo cung cấp Equifax Secure FireFox tin tưởng vào Equifax khóa công khai Equifax tích hợp sẵn cài đặt FireFox Vì duyệt đến trang web Yahoo, FireFox có chứng Yahoo, FireFox tin tưởng vào Equifax nên tin tưởng vào Yahoo cho phép người sử dụng duyệt trang web (xem thêm phần giao thức SSL bên dưới) Trên giới có nhiều tổ chức cung cấp chứng thực X509 VeriSign, Equifax, Thawte, SecureNet… VeriSign tổ chức lớn Verisign cung cấp chứng X509 theo ba mức độ (class): 107 - Class 1: ID đối tượng email đối tượng Sau đối tượng đăng ký email public key qua mạng Internet, Verisign gửi email để kiểm tra địa email hợp lệ cấp chứng thực - Class 2: ID địa nơi đối tượng, Verisign gửi confirm qua đường bưu điện để kiểm tra địa hợp lệ - Class 3: đối tượng cần có giấy tờ pháp lý để chứng minh tư cách pháp nhân 7.2.2 Phân cấp chứng thực Trên giới có trung tâm chứng thực CA mà có nhiều trung tâm chứng thực Những người sử dụng khác đăng ký chứng thực CA khác Do để trao đổi liệu, người cần phải tin tưởng vào khóa công khai tất trung tâm chứng thực Để giảm bớt gánh nặng này, X.509 đề chế phân cấp chứng thực Ví dụ, Alice tin tưởng vào trung tâm chứng thực X1, chứng thực Bob trung tâm chứng thực X2 cung cấp Nếu Alice khóa công khai X2, Alice kiểm tra chứng thực Bob? Biện pháp giải Alice đọc Authority key identifier (tức ID X2) chứng thực Bob Sau Alice kiểm tra xem X1 có cấp chứng thực cho X2 hay không Nếu có, Alice tìm thấy khóa công khai X2 tin tưởng vào khóa (do X1 xác nhận) Từ Alice kiểm tra tính xác thực chứng Bob X1 X2 Alice Bob Việc phân cấp chứng thực không giới hạn hai trung tâm chứng thực mà thông qua dãy trung tâm chứng thực tạo thành mạng lưới chứng thực (Web of Trust) Hình minh họa ví dụ thực tế 108 Hình 7-4 Minh họa mô hình phân cấp chứng thực Trong ví dụ chứng thực MSN-Passport Microsoft chứng thực “Verisign Class Extended Validation SSL CA”, Firefox sẵn khóa công khai trung tâm Tuy nhiên Firefox có khóa công khai “Verisign Class Public Primary CA”, từ FireFox chứng thực trung tâm “Verisign Class Public Primary CA – G5” qua chứng thực “Verisign Class Extended Validation SSL CA” 7.2.3 Các định dạng file chứng X.509 1) Dạng DER (.cer): nội dung chứng X.509 lưu format DER, định dạng liệu binary chuẩn cho môi trường máy tính 2) Dạng PEM (.pem): dạng DER mã hóa dạng text theo chuẩn Base64 Một file text PEM bắt đầu dòng -BEGIN CERTIFICATE kết thúc dòng -END CERTIFICATE 3) Dạng PKCS#7 (.p7c hay p7b): định dạng liệu mã hóa hay ký Do có kèm chứng 4) Dạng PKCS#10 (.p10 hay p10): định dạng dùng để gửi yêu cầu cấp chứng X509 đến trung tâm chứng thực Định dạng có ID public key người yêu cầu 5) Dạng PKCS#12 (.p12): lưu trữ chứng X509 private key tương ứng (có password bảo vệ) file 6) Dạng PFX (.pfx): lưu chứng X509 private key theo định dạng Microsoft Hình bên chứng Verisign cung cấp dạng PEM 109 Tuy nhiên nam@xyz.com hacker, nam@xyz.com nhập comment sau: Excellent!!! alert("I'm hacker"); Thì trang HTML trở thành: Bình luận CÁC Ý KIẾN CỦA BẠN ĐỌC admin@xyz.com This is a cool website! nam@xyz.com Excellent!!! alert("I'm hacker"); son@xyz.com 5-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 [...]... 10 2 2 4 2 4 4 8 6 10 6 6 2 4 2 10 4 6 10 4 4 4 2 6 4 4 4 2 2 2 2 2 2 6 2 4 8 2 4 8 2 6 2 6 2 4 6 10 8 8 8 4 4 2 2 2 4 2 2 6 2 2 6 2 6 6 16 4 2 12 2 2 6 4 4 6 2 4 3 6 8 2 6 2 4 4 12 2 10 8 8 8 4 4 2 6 4 8 4 10 2 8 2 2 2 4 6 4 6 6 2 10 2 10 8 4 4 6 6 10 4 2 8 2 12 10 8 10 6 2 4 2 2 2 10 4 2 6 2 4 2 4 4 2 2 2 4 10 6 8 14 2 4 2 2 4 10 2 2 4 8 2 12 2 4 10 2 8 8 2 2 12 6 12 2 2 4 5 2 4 6 10 4 2 4 8 4 8 2. .. 6 4 6 2 2 6 4 8 6 6 2 2 12 8 8 2 2 4 10 4 6 2 2 6 2 4 2 6 6 2 2 8 4 6 8 2 6 4 Output XOR (4 bít) 6 7 8 9 4 4 4 10 4 6 8 8 6 6 4 6 2 4 4 2 8 4 4 4 4 2 2 4 6 6 2 8 10 2 6 2 4 2 2 12 4 8 6 10 4 4 8 2 2 2 4 2 4 2 4 4 4 4 2 4 4 2 6 2 2 4 4 6 8 2 2 6 2 6 2 14 6 6 6 2 10 6 2 2 6 6 4 12 2 8 2 2 10 4 6 4 4 6 2 8 6 10 4 2 10 6 6 6 12 6 6 4 2 6 14 2 4 2 2 4 4 6 8 2 2 4 2 12 2 10 2 8 6 6 2 8 14 4 2 2 2 4 2 8 6... -2 4 6 -6 -4 4 8 2 0 -2 -6 12 -4 -4 2 4 -10 -2 -4 -4 4 4 0 0 -4 -8 -4 -8 -4 4 0 0 0 -4 2 -2 2 -2 0 0 -4 -2 6 2 -6 0 -4 0 -2 4 -2 0 -2 4 8 2 4 -2 -4 -2 0 0 6 -4 2 -4 6 0 0 6 4 -2 8 -6 -4 4 6 -2 2 2 -4 4 -4 -2 -2 -2 -2 0 0 6 2 -4 6 -4 -4 -18 2 2 -4 -2 -4 0 -6 2 2 6 2 6 6 -10 -2 -6 6 2 6 2 2 6 -2 2 6 2 -2 2 2 2 2 -6 2 6 -2 2 2 0 -2 0 0 2 -2 -2 0 -6 0 0 -2 -2 4 6 0 -2 -4 2 -6 8 6 0 2 0 -6 -2 0 0 -4 4 2. .. 6 12 4 2 8 2 4 6 4 4 6 6 2 4 2 2 6 2 4 4 4 2 2 4 4 8 4 4 2 6 8 8 12 8 6 2 2 4 6 4 2 2 4 4 8 4 6 2 4 6 6 4 6 8 4 6 6 6 8 4 2 4 6 2 4 2 4 2 2 2 2 14 8 8 4 4 4 6 2 2 2 4 6 4 4 14 6 6 2 4 4 6 2 4 8 6 6 4 2 2 3 2 4 2 6 8 2 4 2 6 4 6 4 4 12 8 6 2 2 2 4 6 2 8 2 6 4 2 10 8 2 14 10 2 10 4 4 6 2 4 4 2 2 6 12 4 4 12 10 12 2 2 8 8 6 6 4 6 2 8 2 2 4 12 8 10 10 4 2 4 2 4 2 4 6 6 4 3 4 8 4 6 4 10 2 4 4 2 123 Trong... 32 với a từ 1 đến 32 và b từ 1 đến 15 a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 1 0 -2 -2 2 -2 0 -4 4 0 -2 2 -2 6 0 0 2 2 4 4 4 0 6 2 2 -2 0 4 -4 4 2 2 0 2 0 -2 -2 -2 -2 0 0 -2 6 0 -8 0 0 -2 -2 2 -2 0 -4 0 4 2 6 8 4 -6 6 2 -2 0 -4 0 3 4 5 0 0 0 -4 -2 0 -4 -2 0 -4 -2 0 0 -2 -4 4 0 4 8 0 0 6 -6 -6 -6 -2 -6 2 0 6 -2 -4 -10 6 0 2 6 4 -2 -2 2 2 6 -2 -2 0 -2. .. 4 2 4 6 4 4 4 10 6 4 4 4 4 4 6 2 4 6 6 6 6 8 6 4 2 2 2 4 4 4 22 2 4 4 8 6 4 2 6 14 2 4 8 2 14 14 2 2 4 4 2 6 4 2 4 6 2 6 4 2 2 A B C D E F 12 8 4 6 4 4 8 2 8 6 2 6 4 4 2 6 6 2 6 2 4 6 10 12 2 2 12 4 2 8 10 4 6 6 6 6 2 8 2 2 2 2 2 4 2 6 4 4 2 4 6 4 2 2 8 6 4 6 2 12 6 6 8 4 10 2 6 8 4 2 2 4 2 10 6 8 4 10 6 2 2 2 6 4 6 10 2 6 4 6 6 4 4 4 2 6 6 2 4 2 6 8 4 4 10 4 4 2 6 2 8 2 6 4 2 8 2 8 8 6 4 4 2 6 12. .. cộng và phép nhân + 0 1 x x+1 x2 x2 + 1 x2 + x x2 + x + 1 0 0 1 x x+1 x2 x2+1 x2+x x2+x+1 1 1 0 x+1 x 2 x +1 x2 x2+x+1 x2+x x x x+1 0 1 2 x +x 2 x +x+1 x2 x2+1 x+1 x+1 x 1 0 2 x +x+1 x2+x x2+1 x2 x2 x2 x2+1 x2+x x2+x+1 0 1 x x+1 x2 + 1 x2 + 1 x2 x2+x+1 x2+x 1 0 x+1 x x2+x x2+x x2+x+1 x2 x2+1 x x+1 0 1 x2+x+1 x2+x+1 x2+x x2+1 x2 x+1 x 1 0 x2 + 1 0 2 x +1 1 x2 x 2 x +x+1 x+1 x2+x x2+x 0 2 x +x 2 x +x+1... -4 2 -4 0 -4 4 -4 0 0 4 -8 -4 -4 -4 4 0 2 -4 -8 6 4 2 0 6 -6 0 -6 2 -2 -2 2 -10 2 2 2 -6 -2 2 -6 -2 4 -2 2 -4 -2 0 0 0 b 6 7 8 0 0 0 -4 6 2 -4 6 2 -4 -6 -2 -4 -2 2 0 0 0 0 4 4 0 -4 -4 4 -4 0 8 2 -2 4 2 -6 0 2 2 -4 -2 2 0 0 4 4 -4 -4 4 -6 0 -4 10 -4 0 4 -6 -8 - 12 -2 4 0 2 4 -4 10 0 2 4 0 -2 - 12 4 2 4 0 2 4 4 4 -2 -8 4 -2 0 -4 -2 -4 0 2 0 -2 0 4 2 4 0 0 0 9 10 11 12 13 14 15 0 0 0 0 0 0 0 0 0 6 4 -2 -6... mối quan hệ giữa input XOR và output XOR, điều đó được thể hiện qua bảng sau: 122 Input XOR (6 bít) 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 0 64 1 2 14 4 2 4 8 4 4 6 2 10 2 8 4 4 6 6 4 4 8 2 2 10 2 6 2 6 2 4 2 4 4 2 10 12 6 10 12 4 4 12 4 6 6 2 4 4 4 2 2 2 6 6 2 4 4... x2 + 1 0 2 x +1 1 x2 x 2 x +x+1 x+1 x2+x x2+x 0 2 x +x 2 x +x+1 1 2 x +1 x+1 x x2 x2+x+1 0 2 x +x+1 x2+1 x 1 2 x +x x2 x+1 a) Bảng phép cộng x 0 1 x x+1 x2 x2 + 1 x2 + x x2 + x + 1 0 0 0 0 0 0 0 0 0 1 0 1 x x+1 x2 x2 + 1 x2 + x x2+x+1 x 0 x x2 x2 + x x+1 1 2 x +x+1 x2+1 x+1 0 x+1 x2 + x x2 + 1 x2+x+1 x2 1 x x2 0 x2 x+1 2 x +x+1 x2 + x x 2 x +1 1 b) Bảng phép nhân Để tìm phân tử nghịch đảo của phép nhân ... -2 -2 -2 -2 -4 -2 0 -4 -4 0 -2 -6 -4 -2 2 -4 -4 -2 -2 -2 -2 0 -4 -4 -4 -1 8 2 -4 -2 -4 -6 2 6 -1 0 -2 -6 6 2 -2 -2 2 2 -6 -2 2 -2 0 -2 -2 -6 0 -2 -2 -2 -4 -6 -6 -2 0 -4 2 -6 4 -2 -2 0 2 -4 - 12 -6 ... -2 -4 -2 0 -2 -4 4 0 -6 -6 -6 -2 -6 -2 -4 -1 0 6 -2 -2 2 -2 -2 -2 -4 -4 -4 -4 0 -8 -4 -4 -4 -4 -8 6 -6 -6 -2 -2 -1 0 2 -6 -2 -6 -2 -2 -4 -2 0 b 0 -4 -4 -4 -6 -2 -4 -2 0 0 4 -4 -4 -4 -2 -6 2 -4 -2 . .. 4 -4 -4 -6 -4 10 -4 -6 -8 - 12 -2 4 -4 10 -2 - 12 4 4 -2 -8 -2 -4 -2 -4 -2 4 0 10 11 12 13 14 15 0 0 0 0 -2 -6 -2 -6 -4 -2 -6 12 -4 -4 -1 0 -2 -4 -4 4 0 -4 -8 -4 -8 -4 0 -4 -2 -2 0 -4 -2 -6 -4 -2