BÀI TẬP LỚN AN TOÀN BẢO MẬT GIAO THỨC MẬT MÃInternet ra đời cùng với lĩnh vực công nghệ tin không ngừng phát triền đã mang lại rất nhiều tiện ích hữu dụng cho người sử dụng. Một trong các tiện ích phổ biến của Internet là hệ thống thư điện tử (email), trò chuyện trực tuyến(chat), máy truy tìm dữ liệu (search engine), các dịch vụ thương mại và chuyển ngân,....Chúng cung cấp một khối lượng thông tin và dịch vụ khổng lồ trên Internet.
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÀI TẬP LỚN AN TOÀN BẢO MẬT ĐỀ TÀI: GIAO THỨC MẬT MÃ Giáo viên hướng dẫn: TS. Trần Đức Khánh Học viên thực hiện : NHÓM 03 1. Vũ Thị Uyên CB120122 2. Vũ Tuấn CB121362 3. Dương Phú Thuần CB121358 4. Vũ Tuấn Minh CB121355 5. Phạm Anh Tuấn CB121361 Lớp: 12BCNTT2 Chuyên ngành: Công nghệ thông tin Hà Nội, 06/2013 1 MỤC LỤC I. Giao thức và giao thức mật mã 3 1. Giao thức 3 2. Giao thức mật mã 4 II. Tổng quan về SSL 4 1. Lịch sử phát triển của SSL 4 2. Cơ bản về SSL 5 III. Kiến trúc của SSL 6 1. Các thuật toán mã hóa dùng trong SSL 6 2. Kiến trúc của SSL 6 IV. Các giao thức dùng trong SSL 7 1. SSL Record Protocol 7 2. SSL Change Cipher Spec Protocol 10 3. Giao thức SSL Alert 10 4. Giao thức SSL Handshake 11 V. Tấn công SSL 13 1. Tấn công Diffie Hellman MITM 13 2. Tấn công SSL Sniff và SSL Strip MITM 14 VI. Ứng dụng của SSL 15 1. Các ứng dụng phổ biến 15 2. Webserver 15 Kết luận 17 2 Mở đầu Internet ra đời cùng với lĩnh vực công nghệ tin không ngừng phát triền đã mang lại rất nhiều tiện ích hữu dụng cho người sử dụng. Một trong các tiện ích phổ biến của Internet là hệ thống thư điện tử (email), trò chuyện trực tuyến(chat), máy truy tìm dữ liệu (search engine), các dịch vụ thương mại và chuyển ngân, Chúng cung cấp một khối lượng thông tin và dịch vụ khổng lồ trên Internet. Nguồn thông tin khổng lồ kèm theo các dịch vụ tương ứng chính là hệ thống các trang Web liên kết với nhau và các tài liệu khác trong WWW (World Wide Web). Đó là một kênh trao đổi thông tin rất hữu ích và nhanh chong . Song tất cả không phải là toàn mỹ, nghĩa là mọi thông tin khi bạn trao đổi thông qua Internet có thể bị bên thứ 3 tác động vào, dẫn đến lộ thông tin, mất mát thông tin,…. Để khắc phục những hạn chế đó người ta đã phát triển nên các giao thức giúp phần nào hạn chế điều đó. Trong đó biết tới một giao thức góp phần tối ưu công việc bảo mật thông tin trên nền World Wide Web. Đó là giao thức SSL (viết tắt Secure Sockets Layer). 3 I. Giao thức và giao thức mật mã 1. Giao thức Giao thức truyền thông (communication protocol) - trong công nghệ thông tin gọi tắt là giao thức (protocol). Giao thức là một tập hợp các quy tắc chuẩn dành cho việc biểu diễn dữ liệu, phát tín hiệu, chứng thực và phát hiện lỗi dữ liệu - những việc cần thiết để gửi thông tin qua các kênh truyền thông, nhờ đó mà các máy tính (và các thiết bị) có thể kết nối và trao đổi thông tin với nhau. Các giao thức truyền thông dành cho truyền thông tín hiệu số trong mạng máy tính có nhiều tính năng để đảm bảo việc trao đổi dữ liệu một cách đáng tin cậy qua một kênh truyền thông không hoàn hảo. Có nhiều giao thức được sử dụng để giao tiếp hoặc truyền đạt thông tin trên Internet, dưới đây là một số các giao thức tiêu biểu: TCP (Transmission Control Protocol): thiết lập kết nối giữa các máy tính để truyền dữ liệu. Nó chia nhỏ dữ liệu ra thành những gói (packet) và đảm bảo việc truyền dữ liệu thành công. IP (Internet Protocol): định tuyến (route) các gói dữ liệu khi chúng được truyền qua Internet, đảm bảo dữ liệu sẽ đến đúng nơi cần nhận. HTTP (HyperText Transfer Protocol): cho phép trao đổi thông tin chủ yếu ở dạng (siêu văn bản) qua Internet. FTP (File Transfer Protocol): cho phép trao đổi tập tin qua Internet. SMTP (Simple Mail Transfer Protocol): cho phép gởi các thông điệp thư điện tử (e-mail) qua Internet. POP3 (Post Office Protocol, phiên bản 3): cho phép nhận các thông điệp thư điện tử qua Internet. MIME (Multipurpose Internet Mail Extension): một mở rộng của giao thức SMTP, cho phép gởi kèm các tập tin nhị phân, phim, nhạc, theo thư điện tử. WAP (Wireless Application Protocol): cho phép trao đổi thông tin giữa các thiết bị không dây, như điện thoại di động. 4 2. Giao thức mật mã Giao thức mật mã = giao thức truyền thông + mật mã học. Thông thường một giao thức mật mã kết hợp các khía cạnh sau: Thống nhất khóa; Xác thực; Mã hóa; Chống phủ nhận. II. Tổng quan về SSL 1. Lịch sử phát triển của SSL Ngày nay việc bảo mật thông tin là yếu tố quan trọng để quyết định sự sống còn của một tổ chức ,một công ty hay doanh nghiệp. Với sự phát triển nhanh chóng của công nghệ đã mang lại nhiều tiện ích cho người dùng nhưng đồng thời cũng đặt ra một nhu cầu hết sức cấp thiết về sự an toàn và bảo mật .Và SSL chính là giải pháp tốt nhất hiện nay đáp ứng những nhu cầu đó và nó được coi như là “lá chắn cuối cùng” trong bảo mật thương mại điện tử. Việc truyền các thông tin nhạy cảm trên mạng rất không an toàn vì những vấn đề sau: Bạn không thể luôn luôn chắc rằng bạn đang trao đổi thông tin với đúng đối tượng cần trao đổi. Dữ liệu mạng có thể bị chặn ,vì vậy dữ liệu có thể bị 1 đối tượng thứ 3 khác đọc trộm, thường được biết đến như attacker . Nếu attacker có thể chặn dữ liệu, attacker có thể sửa đổi dữ liệu trước khi gửi nó đến người nhận. Như vậy SSL được đã được phát triển nhằm giải quyết triệt để các vấn đề trên. Giao thức SSL ban đầu được phát triển bởi Netscape.Ngày nay Visa, MasterCard, American Express cũng như nhiều công ty giải pháp tài chính hàng đầu khác trên thế giới đã và đang ứng dụng SSL trong thương mại điện tử. Cho đến bây giờ, có ba phiên bản của SSL: SSL 1.0: được sử dụng nội bộ chỉ bởi Netscape Communications. Nó chứa một số khiếm khuyết nghiêm trọng và không bao giờ được tung ra bên ngoài. 5 SSL 2.0: được kết nhập vào Netscape Communications 1.0 đến 2.x. Nó có một số điểm yếu liên quan đến sự hiện thân cụ thể của cuộc tấn công của đối tượng trung gian. Trong một nỗ lực nhằm dùng sự không chắc chắn của công chúng về bảo mật của SSL, Microsoft cũng đã giới thiệu giao thức PCT cạnh tranh trong lần tung ra Internet Explorer đầu tiên của nó vào năm 1996. SSL 3.0: Netscape Communications đã phản ứng lại sự thách thức PCT của Microsoft bằng cách giới thiệu SSL 3.0 vốn giải quyết các vấn đề trong SSL 2.0 và thêm một số tính năng mới. Vào thời điểm này, Microsoft nhượng bộ và đồng ý hỗ trợ SSL trong tất cả các phiên bản phần mềm dựa vào TCP/IP của nó. 2. Cơ bản về SSL SSL (Secure Sockets Layer) là giao thức an ninh thông tin mạng được sử dụng rộng rãi nhất hiện nay nhằm mã hóa và cung cấp một kênh an toàn giữa các máy tính trên Internet hoặc mạng nội bộ. SSL thường được sử dụng khi một trình duyệt web cần kết nối bảo mật đến một máy chủ web. Giao thức SSL đã được sử dụng rộng rãi trên World Wide Web trong việc xác thực và mã hoá thông tin giữa client và server. Tổ chức IETF (Internet Engineering Task Force) đã chuẩn hoá SSL và đặt lại tên là TLS (Transport Layer Security). Tuy nhiên SSL là thuật ngữ được sử dụng rộng rãi hơn. Giao thức SSL hoạt động bên trên TCP/IP và bên dưới các giao thức ứng dụng tầng cao hơn như là HTTP (Hyper Text Transport Protocol), IMAP ( Internet Messaging Access Protocol) và FTP (File Transport Protocol). => Để đảm bảo tính bảo mật thông tin trên internet hay bất kì mạng TCP/IP nào thì SSL (Secure Socket Layer) ra đời kết hợp với những yếu tố sau để thiết lập giao dịch an toàn: Xác thực: đảm bảo tính xác thực của trang mà bạn sẽ làm việc ở đầu kia của kết nối. Cũng như vậy, các trang Web cũng cần phải kiểm tra tính xác thực của người sử dụng. Mã hoá: đảm bảo thông tin không thể bị truy cập bởi đối tượng thứ ba. Để loại trừ việc nghe trộm những thông tin “ nhạy cảm” khi nó được truyền qua Internet, dữ liệu phải được mã hoá để không thể bị đọc được bởi những người khác ngoài người gửi và người nhận. 6 Toàn vẹn dữ liệu: đảm bảo thông tin không bị sai lệch và nó phải thể hiện chính xác thông tin gốc gửi đến. III. Kiến trúc của SSL 1. Các thuật toán mã hóa dùng trong SSL Các thuật toán mã hoá (cryptographic algorithm -cipher) là các hàm để mã hoá và giải mã thông tin. Giao thức SSL hỗ trợ rất nhiều các thuật toán mã hoá, sử dụng trong quá trình xác thực server và client, truyền tải các certificates và thiết lập các khoá của từng phiên giao dịch. Một số thuật toán SSL sử dụng: DES (Data Encryption Standard) DSA (Digital Signature Algorithm): MD5 (Message Digest algorithm): RSA: là thuật toán mã hoá công khai dùng cho cả quá trình xác thực và mã hoá dữ liệu được Rivest, Shamir, and Adleman phát triển. RSA key exchange: là thuật toán trao đổi khoá dùng trong SSL dựa trên thuật toán RSA. RC2 and RC4 SHA-1 (Secure Hash Algorithm) Các thuật toán trao đổi khoá như KEA, RSA key exchange được sử dụng để 2 bên client và server xác lập khoá đối xứng mà họ sẽ sử dụng trong suốt phiên giao dịch SSL. Và thuật toán được sử dụng phổ biến là RSA key exchange. Các phiên bản SSL 2.0 và SSL 3.0 hỗ trợ cho hầu hết các bộ mã hoá. Người quản trị có thể tuỳ chọn bộ mã hoá sẽ dùng cho cả client và server. Khi một client và server trao đổi thông tin trong giai đoạn bắt tay (handshake), họ sẽ xác định bộ mã hoá mạnh nhất có thể và sử dụng chúng trong phiên giao dịch SSL. 2. Kiến trúc của SSL SSL được thiết kế để dùng TCP cung cấp 1 dịch vụ bảo mật đầu cuối-đến-đầu cuối đáng tin cậy.SSL không phải là một giao thức đơn mà là 2 lớp giao thức,như minh họa 7 dưới đây: Theo hình này, SSL ám chỉ một lớp (bảo mật) trung gian giữa lớp vận chuyển (Transport Layer) và lớp ứng dụng (Application Layer). SSL được xếp lớp lên trên một dịch vụ vận chuyển định hướng nối kết và đáng tin cậy, chẳng hạn như được cung cấp bởi TCP. SSL Record Protocol cung cấp các dịch vụ bảo mật cơ bản cho nhiều giao thức khác nhau ở các lớp trên.Trong thực tế, Hyper Text Transfer Protocol (HTTP),cung cấp dịch vụ trao đổi cho tương tác Web client/server,có thể hoạt động trên đỉnh của SSL.Ba giao thức lớp trên được định nghĩa như là các phần của SSL: Handshake Protocol, Change Cypher Spec Protocol và Alert Protocol.Các giao thức mang tính đặc trưng-SSL này được dùng trong phần quản lý trao đổi SSL - Như vậy có ta thấy SSL có 2 lớp giao thức hay 4 thành phần con của SSL: + SSL Handshake Protocol. + SSL Change Cipher Spec Protocol. + SSL Alert Protocol. + SSL Record Protocol. IV. Các giao thức dùng trong SSL 1. SSL Record Protocol SSL Record Protocol cung cấp 2 dịch vụ cho kết nối SSL: + Confidentiality (tính cẩn mật): Handshake Protocol định nghĩa 1 khóa bí mật được chia sẻ, khóa này được sử dụng cho mã hóa quy ước các dữ liệu SSL. 8 + Message integrity (tính toàn vẹn thông điệp):Handshake Protocol cũng định nghĩa 1 khóa bí mật được chia sẻ, khóa này được sử dụng để hình thành MAC (mã xác thực message). Hình sau chỉ ra toàn bộ hoạt động của SSL Record Protocol.SSL Record Protocol nhận 1 message ứng dụng sắp được truyền đi,phân mảnh dữ liệu thành nhiều block,nén dữ liệu 1 cách tùy chọn,áp dụng vào 1 MAC,mã hóa,thêm vào header,và truyền khối kết quả thu được trong 1 segment TCP.Dữ liệu nhận được được giải mã, kiểm tra, giải nén, sắp xếp lại và phân phối đến người sử dụng ở lớp cao hơn. Phân mảnh: Mỗi message của lớp bên trên được phân mảnh thành các block, mỗi block là 214 byte (16384 byte) hoặc ít hơn. Nén: Nén phải là không mất mát thông tin và có thể không làm tăng chiều dài nội dung nhiều hơn 1024 byte (Dĩ nhiên,người ta mong muốn nén làm co lại dữ liệu hơn là nới rộng dữ liệu.Tuy nhiên, với những block ngắn,có thể ,do định dạng quy ước,thuật toán nén thực sự làm cho output dài hơn input). Trong SSLv3 (cũng như phiên bản hiện tại của TLS), không có thuật toán nén nào được chỉ rõ,vì vậy thuật toán nén mặc định là null. Tính toán MAC (mã xác thực message) trên dữ liệu đã được nén.Để thực hiện cần dùng đến 1 khóa bí mật được chia sẻ.Phép tính được định nghĩa như sau: hash(MAC_write_secret || pad_2 || hash(MAC_write_secret || pad_1 ||seq_num ||SSLCompressed.type|| SSLCompressed.length || SSLCompressed.fragment)) 9 trong đó: + || : phép nối /hoặc. + MAC_write_secret: khóa bí mật được chia sẻ. + hash: thuật toán băm mã hóa, MD5 hoặc SHA-1. + pad_1: byte 0x36 (0011 0110) được lặp lại 48 lần (384 bit) cho MD5 và 40 lần (320 bit) cho SHA-1. + pad 2: byte 0x5c (0101 1100) được lặp lại 48 lần cho MD5 và 40 lần cho SHA- 1. + seq_num: sequence number cho message nay + SSLCompressed.type: giao thức ở lớp trên được dùng để xử lí phân mảnh này. + SSLCompressed.length: chiều dài của phân mảnh đã được nén. +SSLCompressed.fragment: phân mảnh đã được nén (nếu nén không được dùng, phân mảnh ở dạng plaintext). Mã hóa theo phương pháp mã hóa đối xứng:Mã hóa có thể không làm tăng chiều dài nội dung hơn 1024 byte, vì vậy chiều dài tổng cộng không vượt quá 214+2048. Các thuật toán mã hóa sau được cho phép: Gắn thêm vào1 header bao gồm các mục sau: Content Type (8 bit): giao thức lớp trên được dùng để xử lí phân mảnh đi kèm. Major Version (8 bit): chỉ ra phiên bản SSL tối đa được dùng. Ví dụ, SSLv3,giá trị này là 3. Minor Version (8 bit) : chỉ ra phiên bản tối thiểu được dùng.Ví dụ, SSLv3 ,giá trị này là 0. [...]... vẫn là giao thức bảo mật cao nhất mà chưa một giao thức bảo mật nào có thể thay thế vai trò của nó Nó phổ biến đến mức nếu thấy tên một giao thức có hậu tố “s” thì người ta biết ngay giao thức ứng dụng đó được kết hợp kèm với SSL Với sự phát triển nhanh chóng của công nghệ đã mang lại nhiều tiện ích cho người dùng nhưng đồng thời cũng đặt ramột nhu cầu hết sức cấp thiết về sự an toàn và bảo mật Và... thể chấp nhận 4 Giao thức SSL Handshake 11 Giao thức này cho phép server và client chứng thực với nhau và thương lượng cơ chế mã hóa , thuật toán MAC và khóa mật mã được sử dụng để bảo vệ dữ liệu được gửi trong SSL record .Giao thức SSL Handshake thường được sử dụng trước khi dữ liệu của ứng dụng được truyền đi Cơ chế giao thức SSL Handshake: 1) Client sẽ gửi cho server số phiên bản SSL đang dùng, các... dùng).Gía trị lớn nhất là 214+2048 2 SSL Change Cipher Spec Protocol Giao thức SSL Change Cipher Spec là giao thức đơn giản nhất trong ba giao thức đặc trưng của SSL mà sử dụng giao thức SSL Record Giao thức này bao gồm một message đơn 1 byte giá trị là 1 Mục đích chính của message này là sinh ra trạng thái tiếp theo để gán vào trạng thái hiện tại,và trạng thái hiện tại cập nhật lại bộ mã hóa để sử... tại,và trạng thái hiện tại cập nhật lại bộ mã hóa để sử dụng trên kết nối này 3 Giao thức SSL Alert Giao thức SSL Alert được dùng để truyền cảnh báo liên kết SSL với đầu cuối bên kia.Như với những ứng dụng khác sử dụng SSL, alert messages được nén và mã hóa, được chỉ định bởi trạng thái hiện tại Mỗi message trong giao thức này gồm 2 bytes Byte đầu tiên giữ giá trị cảnh báo(1) hoặc nguy hiểm (2) để... làm việc SSL bắt đầu Cả hai phía client và server sẽ sử dụng các session key để mã hoá và giải mã thông tin trao đổi giữa hai bên, và kiểm tra tính toàn vẹn dữ liệu V Tấn công SSL 1 Tấn công Diffie Hellman MITM Trong quá trình bắt tay, nếu Client và Server quyết định sử dụng thuật toán trao đổi khóa Anonymous Diffie Hellman thì sẽ xảy ra sự trao đổi các tham số (g,p, ga mod p, gb mod p) của thuật toán... bí mật (private key) để giải mã premaster secret, sau đó thực hiện một số bước để tạo ra master secret 7) Client và server sẽ sử dụng master secret để tạo ra các session key, đó chính là các khoá đối xứng được sử dụng để mã hoá và giải mã các thông tin trong phiên làm việc và kiểm tra tính toàn vẹn dữ liệu 12 8) Client sẽ gửi một lời nhắn đến server thông báo rằng các message tiếp theo sẽ được mã hoá... làm việc, mã hoá bằng khoá công khai (public key) mà server gửi đến trong certificate ở bước 2, và gửi đến server 5) Nếu server có yêu cầu xác thực client, thì phía client sẽ đánh dấu vào phần thông tin riêng chỉ liên quan đến quá trình “bắt tay” này mà hai bên đều biết Trong trường hợp này, client sẽ gửi cả thông tin được đánh dấu và certificate của mình cùng với premaster secret đã được mã hoá tới... như không thể giải nén hoặc giải nén lớn hơn độ dài tối đa cho phép) handshake_failure: bên gửi không thể thương lượng một bộ chấp nhận được của các thông số bảo mật được đưa ra từ những lựa chọn có sẵn illegal_parameter: một trường trong một handshake message thì vượt khỏi dãy hoặc trái với những trường khác Phần còn lại của cảnh báo thì như sau: close_notify: thông báo cho bên nhận rằng bên gửi sẽ... rằng các message tiếp theo sẽ được mã hoá bằng session key Sau đó nó gửi một lời nhắn đã được mã hoá để thông báo rằng phía client đã kết thúc giai đoạn “bắt tay” 9) Server cũng gửi một lời nhắn đến client thông báo rằng các message tiếp theo sẽ được mã hoá bằng session key Sau đó nó gửi một lời nhắn đã được mã hoá để thông báo rằng server đã kết thúc giai đoạn “bắt tay” 10) Lúc này giai đoạn “bắt tay”... thêm.Byte thứ hai chứa một mã chỉ ra cảnh báo đặc trưng Đầu tiên, chúng ta liệt kê những cảnh báo đó mà luôn ở mức nguy hiểm (được định nghĩa từ những thông số SSL): unexpected_message: message không thích hợp bad_record_mac: MAC không chính xác 10 decompression_failure: việc giải nén nhận input không thích hợp(ví dụ như không thể giải nén hoặc giải nén lớn hơn độ dài tối đa cho phép) handshake_failure: bên . Layer). 3 I. Giao thức và giao thức mật mã 1. Giao thức Giao thức truyền thông (communication protocol) - trong công nghệ thông tin gọi tắt là giao thức (protocol). Giao thức là một tập. Change Cipher Spec Protocol Giao thức SSL Change Cipher Spec là giao thức đơn giản nhất trong ba giao thức đặc trưng của SSL mà sử dụng giao thức SSL Record . Giao thức này bao gồm một message. thiết bị không dây, như điện thoại di động. 4 2. Giao thức mật mã Giao thức mật mã = giao thức truyền thông + mật mã học. Thông thường một giao thức mật mã kết hợp các khía cạnh sau: Thống