Việc kết nối giữa một Web browser tới bất kỳ điểm nào trên mạng Internet đi qua rất nhiều các hệ thống độc lập mà không có bất kỳ sự bảo vệ nào với các thông tin trên đường truyền. Không một ai kể cả người sử dụng lẫn Web server có bất kỳ sự kiểm soát nào đối với đường đi của dữ liệu hay có thể kiểm soát được liệu có ai đó thâm nhập vào thông tin trên đường truyền. Để bảo vệ những thông tin mật trên mạng Internet hay bất kỳ mạng TCPIP nào, SSL đã kết hợp những yếu tố sau để thiết lập được một giao dịch an toàn:
Mục lục Chương 1: Tìm hiểu về giao thức SSL trang 04 SSL là gì .trang 04 Lịch sử phát triển .trang 05 Chương 2: Cấu trúc và cách hoạt động trang 06 Cấu trúc của SSL trang 06 Tìm hiểu về các loại mã hóa .trang 10 Handshake Protocol trang 13 Record Protocol trang 17 Chương 3: Các kiểu tấn công và phòng chống trang 23 Các kiểu tấn công .trang 23 Cách phòng chống trang 24 Chương 4: Cài đặt SSL Web Application(sử dụng Self-Signed Cert) trang 25 Chương 1: Tìm hiểu Giao thức SSL/TLS 1/SSL gì? Việc kết nối một Web browser tới bất kỳ điểm nào mạng Internet qua rất nhiều các hệ thống độc lập mà không có bất kỳ bảo vệ nào với các thông tin đường truyền Không một kể người sử dụng lẫn Web server có bất kỳ kiểm soát nào đối với đường của liệu hay có thể kiểm soát liệu có đó thâm nhập vào thông tin đường truyền Để bảo vệ thông tin mật mạng Internet hay bất kỳ mạng TCP/IP nào, SSL đã kết hợp yếu tố sau để thiết lập một 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 làm việc đầu của kết nối Cũng vậy, các trang Web 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 đối tượng thứ ba Để loại trừ việc nghe trộm thông tin “ nhạy cảm” nó truyền qua Internet, liệu phải mã hoá để không thể bị đọc người khác ngoài người gửi và người nhận Toàn vẹn liệu: đảm bảo thông tin không bị sai lệch và nó phải thể xác thông tin gốc gửi đến Với việc sử dụng SSL, các Web site có thể cung cấp khả bảo mật thông tin, xác thực và toàn vẹn liệu đến người dùng SSL tích hợp sẵn vào các browser và Web server, cho phép người sử dụng làm việc với các trang Web chế độ an toàn Khi Web browser sử dụng kết nối SSL tới server, biểu tượng ổ khóa xuất trạng thái của cửa sổ browser và dòng “http” hộp nhập địa URL đổi thành “https” Một phiên giao dịch HTTPS sử dụng cổng 443 thay vì sử dụng cổng 80 dùng cho HTTP SSL là một giao thức đơn lẻ, mà là một tập các thủ tục đã chuẩn hoá để thực các nhiệm vụ bảo mật sau: • Xác thực server: Cho phép người sử dụng xác thực server muốn kết nối Lúc này, phía browser sử dụng các kỹ thuật mã hoá công khai để chắn certificate và public ID của server là có giá trị và cấp phát một CA (certificate authority) danh sách các CA đáng tin cậy của client Điều này rất quan trọng đối với người dùng Ví dụ gửi mã số credit card qua mạng thì người dùng thực muốn kiểm tra liệu server nhận thông tin này có đúng là server mà họ định gửi đến không Page • Xác thực Client: Cho phép phía server xác thực người sử dụng muốn kết nối Phía server sử dụng các kỹ thuật mã hoá công khai để kiểm tra xem certificate và public ID của server có giá trị hay không và cấp phát một CA (certificate authority) danh sách các CA đáng tin cậy của server không Điều này rất quan trọng đối với các nhà cung cấp Ví dụ một ngân hàng định gửi các thông tin tài mang tính bảo mật tới khách hàng thì họ rất muốn kiểm tra định danh của người nhận • Mã hoá kết nối: Tất các thông tin trao đổi client và server mã hoá đường truyền nhằm nâng cao khả bảo mật Điều này rất quan trọng đối với hai bên có các giao dịch mang tính riêng tư Ngoài ra, tất các liệu gửi một kết nối SSL đã mã hoá còn bảo vệ nhờ chế tự động phát các xáo trộn, thay đổi liệu ( đó là các thuật toán băm – hash algorithm) 2/Lịch sử phát triển giao thức SSL & TLS: Như chúng ta đã biết có hai giao thức bảo mật quan trọng lớp vận chuyển (Layer Transport) có tầm quan trọng cao nhất đối với bảo mật của các trình ứng dụng Web: đó là hai giao thức SSL và TLS Nói chung, có một số khả để bảo vệ mật mã lưu lượng liệu HTTP Ví dụ, vào năm 1990, tập đoàn CommerceNet đã đề xuất S-HTTP mà về là một cải tiến bảo mật của HTTP Một phần thực thi của S-HTTP đã làm cho có sẵn công cộng một phiên chỉnh sửa của trình duyệt Mosaic NCSA mà người dùng phải mua (trái với trình duyệt Mo NCSA "chuẩn" có sẵn công cộng và miễn phí Internet) Tuy nhiên, thời điểm Netscape Communication đã giới thiệu SSL và một giao thức tương ứng với phiên của Netscape Navigator, Trái với tập đoàn CommerceNet, Netscape Communications đã không tính phí các khách hàng của nó về việc thực thi giao thức bảo mật của nó Kết quả, SSL trở thành giao thức bật để cung cấp các dịch vụ bảo mật cho lưu lượng liệu HTTP 1994 và S-HTTP lặng lẽ biến mất Cho đến bây giờ, có ba phiên của SSL: SSL 1.0: sử dụng nội bộ Netscape Communications Nó chứa một số khiếm khuyết nghiêm trọng và không tung bên ngoài SSL 2.0: 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 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 không chắn của công chúng về bảo mật của SSL, Microsoft đã giới thiệu giao thức PCT (Private Communication Technology) cạnh tranh lần tung Internet Explorer của nó vào năm 1996 Netscape Communications đã phản ứng lại thách thức PCT của Microsoft cách giới thiệu SSL 3.0 vốn giải các vấn đề SSL 2.0 và thêm một số tính Vào thời điểm này, Microsoft nhượng bộ và đồng ý hỗ trợ SSL tất các phiên phần mềm dựa vào TCP/IP của nó (mặc dù phiên riêng của nó hỗ trợ PCT cho tương thích ngược) Page Thông số kỹ thuật nhất của SSL 3.0 đã tung thức vào tháng năm 1996 Nó thực thi tất các trình duyệt bao gồm ví dụ Microsoft Internet Explorer 3.0 (và các phiên cao hơn), Netscape Navigator 3.0 (và các phiên cao hơn), và Open Như thảo luận phần sau chương này, SSL 3.0 đã điều chỉnh IETF TLS WG Thực tế, thông số kỹ thuật giao thức TLS 1.0 dẫn xuất từ SSL 3.0 Chương 2: Cấu Trúc và cách hoạt động của SSL 1/Cấu trúc giao thức SSL: Cấu trúc của SSL và giao thức SSL tương ứng minh họa hình 1.1(Cấu trúc SSL và giao thức SSL) Theo hình này, SSL ám một lớp (bảo mật) trung gian lớp vận chuyển (Transport Layer) và lớp ứng dụng (Application Layer) SSL xếp lớp lê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 cung cấp TCP Về khả năng, nó có thể cung cấp các dịch vụ bảo mật cho các giao thức ứng dụng tùy ý dựa vào TCP chứ không HTTP Thực tế, một ưu điểm của các giao thức bảo mật lớp vận chuyển (Transport layer) nói chung và giao thức SSL nói riêng là chúng độc lập với ứng dụng theo nghĩa là chúng có thể sử dụng để bảo vệ bất kỳ giao thức ứng dụng xếp lớp lên TCP một cách suốt Hình 1.1 minh họa một số giao thức ứng dụng điển hình bao gồm NSIIOP, HTTP, FTP, Telnet, IMAP, IRC, và POP3 Tất chúng có thể bảo vệ cách xếp lớn chúng lên SSL (mẫu tự S thêm vào các từ ghép giao thức tương ứng định việc sử dụng SSL) Tuy nhiên, chú ý SSL có một định hướng client-server mạnh mẽ và thật không đáp ứng các yêu cầu của các giao thức ứng dụng ngang hàng Cấu trúc của SSL và giao thức SSL Page Tóm lại, giao thức SSL cung cấp bảo mật truyền thông vốn có ba đặc tính bản: Các bên giao tiếp (nghĩa là client và server) có thể xác thực cách sử dụng mật mã khóa chung Sự bí mật của lưu lượng liệu bảo vệ vì nối kết mã hóa suốt sau một thiết lập quan hệ ban đầu và thương lượng khóa session đã xảy Tính xác thực và tính toàn vẹn của lưu lượng liệu bảo vệ vì các thông báo xác thực và kiểm tra tính toàn vẹn một cách suốt cách sử dụng MAC Tuy nhiên, điều quan trọng cần lưu ý là SSL không ngăn các cuộc tấn công phân tích lưu lượng Ví dụ, cách xem xét các địa IP nguồn và đích không mã hóa và các sô cổng TCP, hoặc xem xét lượng liệu truyền, một người phân tích lưu lượng có thể xác định các bên nào tương tác, các loại dịch vụ sử dụng, và dành thông tin về các mối quan hệ doanh nghiệp hoặc cá nhân Hơn nữa, SSL không ngăn các cuộc tấn công có định hướng dựa vào phần thực thi TCP, chẳng hạn các cuộc tấn công làm tràn ngập TCP SYN hoặc cưỡng đoạt session Để sử dụng bảo vệ SSL, client lẫn server phải biết phía bên sử dụng SSL Nói chung, có ba khả để giải vấn đề này: Sử dụng các số cổng chuyên dụng dành riêng Internet Asigned Numbers Authority (IANA) Trong trường hợp này, một số cổng riêng biệt phải gán cho giao thức ứng dụng vốn sử dụng SSL Sử dụng số cổng chuẩn cho giao thức ứng dụng và để thương lượng các tùy chọn bảo mật là một phần của giao thức ứng dụng (bây chỉnh sửa đôi chút) Sử dụng một tùy chọn TCP để thương lượng việc sử dụng một giao thức bảo mật, chẳng hạn SSL suốt giai đoạn thiết lập nối kết TCP thông thường Page Sự thương lượng dành riêng cho ứng dụng của các tùy chọn bảo mật (nghĩa là khả thứ hai) có khuyết điểm là đòi hỏi giao thức ứng dụng chỉnh sửa để hiểu tiến trình thương lượng Ngoài ra, việc xác định một tùy chọn TCP (nghĩa là khả thứ ba) là một giải pháp tốt, đó không thảo luận nghiêm túc Thực tế, các số cổng riêng biệt đã dành riêng và gán IANA cho giao thức ứng dụng vốn có thể chạy SSL hoặc TLS (nghĩa là khả thứ nhất) Tuy nhiên, hãy chú ý việc sử dụng các số cổng riêng biệt có khuyết điểm là đòi hỏi hai nối kết TCP client gì mà server hỗ trợ Trước tiên, client phải nối kết với cổng an toàn và sau đó với cổng không an toàn hay ngược lại Rất có thể các giao thức sau này hủy bỏ phương pháp này và tìm khả thứ hai Ví dụ, SALS (Simple Authentication và Security Layer) xác định một phù hợp để thêm hỗ trợ xác thực vào các giao thức ứng dụng dựa vào kết nối Theo thông số kỹ thuật SALS, việc sử dụng các chế xác thực có thể thương lượng client và server của một giao thức ứng dụng đã cho Các số cổng gán IANA cho các giao thức ứng dụng vốn chạy SSL/TLS tóm tắt bảng 1.2 và minh họa một phần hình 1.1 Ngày nay, "S" định việc sử dụng SSL thêm (hậu tố) nhất quán vào các từ ghép của các giao thức ứng dụng tương ứng (trong một số thuật ngữ ban đầu, S sử dụng và thêm tiền tố một cách không nhất quán và một số từ ghép) Bảng 1: Các số cổng gán cho các giao thức ứng dụng chạy TLS/SSL Từ khóa Cổng Mô tả Nsiiop 261 Dịch vụ tên IIOP TLS/SSL https 443 HTTP TLS/SSl Smtps 465 SMTP TLS/SSL Nntps 563 NNTP TLS/SSL Ldaps 636 LDAP TLS/SSL Ftps-data 989 FTP (dữ liệu) TLS/SSL Ftps 990 FTP (Điều khiển) TLS/SSL Tenets 992 TELNET TLS/SSL Imaps 994 IRC TLS/SSL Pop3s 995 POP3 TLS/SSL Nói chung, một session SSL có trạng thái và giao thức SSL phải khởi tạo và trì thông tin trạng thái một hai phía của session Các phần tử thông tin trạng thái session tương ứng bao gồm một session ID, một chứng nhận ngang hàng, một phương pháp nén, một thông số mật mã, một khóa mật và một cờ vốn định việc session có thể tiếp tục lại hay không, tóm tắt bảng 1.3 Một session SSL có thể sử dụng một số kết nối và các thành phần thông tin trạng thái nối kết tương ứng tóm tắt bảng 1.4 Chúng bao gồm các tham số mật mã, chẳng hạn các chuỗi byte ngẫu nhiên server và client, các khóa mật MAC ghi server và client, các khóa ghi server và client, một vector khởi tạo và một số chuỗi Ở hai trường hợp, điều quan trọng cần lưu ý là các phía giao tiếp phải sử dụng nhiều session SSL đồng thời và các session có nhiều nối kết đồng thời Page Bảng Các thành phần thông tin trạng thái Session SSL Thành Phần Session ID Mô tả Định danh chọn server để nhận dạng một trạng thái session hoạt động hoặc có thể tiếp tục lại Peer certificate Chứng nhân X.509 phiên của thực thể ngang hàng Compression Thuật toán dừng để nén liệu trước mã method hóa Cipher spec Thông số của các thuật toán mã hóa liệu và MAC Master secret Khóa mật 48-byte chia sẻ client và server Is resumable Cờ vốn biểu thị session có thể sử dụng để bắt đầu các nối kết hay không Bảng Các thành phần thông tin trạng thái nối kết SSL Thành Phần Ngẫu nhiên server và client Khóa mật MAC ghi server Khóa mật MAC ghi client Khóa ghi server Khóa ghi client Initialization vector Số chuỗi Mô tả Các chuỗi byte chọn server và client cho nối kết Khóa mật sử dụng cho các hoạt động MAC liệu ghi server Khóa mật sử dụng cho các hoạt động MAC liệu ghi client Khóa sử dụng cho việc mã hóa liệu server và giải mã client Khóa sử dụng để mã khóa liệu client và giải mã server Trạng thái khởi tạo cho một mật mã khối chế độ CBC Trường này khởi tạo SSL Handshake Player Sau đó, khối text mật mã sau từ ghi dành riêng để sử dụng vởi ghi sau đó Mỗi phía trì các số chuỗi riêng biệt cho các thông báo truyền và nhận cho nối kết Như minh họa hình 1.1, giao thức SSL gồm hai phần chính, SSL Record Protocol và một số giao thức SSL xếp lớp nó: Page - Record OK xếp lớp một dịch vụ lớp vận chuyển định hướng nối kết và đáng tin cậy, chẳng hạn cung cấp TCP và cung cấp xác thực nguồn gốc thông báo, bí mật liệu và liệu - Các dịch vụ toàn vẹn (bao gồm thứ chống xem lại) - Các giao thức SSL xếp lớp SSL Record Protocol để cung cấp hỗ trợ cho việc quản lý session SSL và thiết lập nối kết Giao thức SSL quan trọng nhất là SSL Handshake Protocol Lần lượt giao thức này là một giao thức xác thực và trao đổi khóa vốn có thể sử dụng để thương lượng, khởi tạo và đồng bộ hóa các tham số bảo mật và thông tin trạng thái tương ứng đặt một hai điểm cuối của một session hoặc nối kết SSL Sau SSL Handshake Protocol đã hoàn tất, liệu ứng dụng có thể gửi và nhận cách sử dụng SSL Record Protocol và các tham số bảo mật thương lượng và các thành phần thông tin trạng thái SSL Record và Handshake Protocol trình bầy tổng quan phần 2/Tìm Hiểu loại mã hóa Mật mã hóa là quá trình chuyển đổi các thông tin thông thường (văn thường hay văn rõ) thành dạng không đọc trực tiếp được, là văn mã Giải mật mã, là quá trình ngược lại, phục hồi lại văn thường từ văn mã Mật mã là thuật toán để mật mã hóa và giải mật mã Hoạt động xác của mật mã thông thường kiểm soát khóa — một đoạn thông tin bí mật nào đó cho phép tùy biến cách thức tạo văn mã Các giao thức mật mã rõ các chi tiết về việc mật mã (và các nền tảng mật mã hóa khác) sử dụng nào để thu các nhiệm vụ cụ thể Một bộ các giao thức, thuật toán, cách thức quản lý khóa và các hành động quy định trước người sử dụng thi hành một hệ thống tạo hệ thống mật mã Mật mã hóa sử dụng phổ biến để đảm bảo an toàn cho thông tin liên lạc Các thuộc tính yêu cầu là: Bí mật: Chỉ có người nhận đã xác thực có thể lấy nội dung của thông tin chứa đựng dạng đã mật mã hóa của nó Nói khác đi, nó không thể cho phép thu lượm bất kỳ thông tin đáng kể nào về nội dung của thông điệp Nguyên vẹn: Người nhận cần có khả xác định thông tin có bị thay đổi quá trình truyền thông hay không Xác thực: Người nhận cần có khả xác định người gửi và kiểm tra xem người gửi đó có thực gửi thông tin hay không Không từ chối: Người gửi không thể từ chối việc mình đã gửi thông tin Page Chống lặp lại: Không cho phép bên thứ ba copy lại văn và gửi nhiều lần đến người nhận mà người gửi không hề hay biết a.Khóa Đối xứng Thuật toán khóa đối xứng là thuật toán hoặc là sử dụng một khóa cho việc mật mã hóa và giải mật mã hoặc là khóa (thứ hai) sử dụng để giải mật mã có thể dễ dàng tính từ khóa (thứ nhất) đã dùng để mật mã hóa Các thuật toán phổ biến • DES (Data Encryption Standard) là một thuật toán mã hoá có chiều dài khoá là 56 bit • 3-DES (Triple-DES): là thuật toán mã hoá có độ dài khoá gấp lần độ dài khoá mã hoá DES • AES: AES là một tiêu chuẩn mã hóa mới, nó triển khai sử dụng đại trà từ năm 2003 b.Khóa công khai Các thuật toán Mã hóa khóa đối xứng có một số trở ngại không thuận tiện — hai người muốn trao đổi các thông tin bí mật cần phải chia sẻ khóa bí mật Khóa cần phải trao đổi theo một cách thức an toàn, mà các phương thức thông thường dùng để liên lạc Điều này thông thường là bất tiện, và mật mã hóa khóa công khai (hay khóa bất đối xứng) đưa là một giải pháp thay Trong mật mã hóa khóa công khai có hai khóa sử dụng, là khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân), đó khóa công khai dùng để mật mã hóa còn khóa bí mật dùng để giải mật mã (cũng có thể thực ngược lại) Rất khó để có thể thu khóa bí mật từ khóa công khai Điều này có nghĩa là một người nào đó có thể tự gửi khóa công khai của họ bên ngoài theo các kênh không an toàn mà chắn có họ có thể giải mật mã các thông điệp mật mã hóa khóa đó Page Chọn một số ngẫu nhiên lớn để sinh cặp khóa Dùng khoá công khai để mã hóa, dùng khoá bí mật để giải mã Page 10 đáp ứng của client đối với thông báo CERTIFICATERequest của server Trong trường hợp của các chứng nhận X.509v3, một chứng nhận có thể thực tham chiếu đến toàn bộ một chuỗi các chứng nhận, xếp theo thứ tự với chứng nhận của đối tượng gởi trước tiên theo sau là bất kỳ chứng nhận CA tiến hành theo trình tự hướng đến một CA gốc (vốn chấp nhận client) Tiếp theo, server có thể gởi một thông báo SERVERKEYEXCHANGE đến client nó không có chứng nhận, một chứng nhận vốn có thể sử dụng để xác nhận các chữ ký kỹ thuật số hoặc sử dụng thuật toán trao đổi khóa dựa vào token FORITEZZA (KEA) Rõ ràng, thông báo này không yêu cầu chứng nhận site gồm một khóa chung RSA vốn có thể sử dụng việc mã hóa Ngoài ra, một server không nặc danh có thể tùy ý yêu cầu một chứng nhận cá nhân để xác thực client Do đó, nó gởi một thông báo CERTIFICATERequest đến client Thông báo này chứa một danh sách các loại chứng nhận yêu cầu, phân loại theo thứ tự ưu tiên của server một danh sách các tên phân biệt cho các CA có thể chấp nhận Ở cuối bước 2, server gởi một thông báo SERVERHELLODone đến client để định kết thúc SERVERHELLO và các thông báo kèm Sau nhận SERVERHELLO và các thông báo kèm, client xác nhận chứng nhận site server (nếu cung cấp) là hợp lệ và kiểm tra nhằm bảo đảm các thông số bảo mật cung cấp thông báo SERVERHELLO có thể chấp nhận Nếu server yêu cầu xác thực client, client gởi một thông báo CERTIFICATE vốn chứa một chứng nhận cá nhân cho khóa chung của người dùng đến server bước Tiếp theo, client gởi một thông báo CLIENTKEYEXCHANGE có dạng phụ thuộc vào thuật toán cho khóa chọn server: - Nếu RSA sử dụng cho việc xác thực server và trao đổi khóa, client tạo một khóa mật tiền 48 byte, mã hóa nó khóa chung tìm thấy chứng nhận site hoặc khóa RSA tạm thời từ thông báo SERVERKEYEXCHANGE và gởi kết trở về server thông báo CLIENTKEYEXCHANGE Lần lượt server sử dụng khóa riêng tương ứng để giải mã khóa mật - Nếu các token FORTEZZA sử dụng để trao đổi khóa, client dẫn xuất một khóa mã hóa token (TEK) cách sử dụng KEA Phép tình KEA cảu client sử dụng khóa chung từ chứng nhận server với một số tham số riêng token của client Client gởi các tham số chung cần thiết cho server để tạo TEK, sử dụng các tham sô riêng của nó Nó tạo một khóa mật chính, bao bọc nó cách sử dụng TEK và gởi kết với một số vector khởi tạo đến server là một phần của thông báo CLIENTKEYEXCHANGE Lần lượt, server có thể giải mã khóa mật một cách thích hợp Thuật toán trao đổi khóa này không sử dụng rộng rãi Nếu xác thực client yêu cầu, client gởi một thông báo CERTIFICATEVERIFY đến server Thông báo này sử dụng để cung cấp xác thực rõ ràng định danh của người dùng dựa vào chứng nhận các nhân Nó gởi theo sau một chứng client vốn có khả tạo chữ ký (tất chứng nhận ngoại trừ các chứng nhận chứa các tham số DiffeHallman cố định) Sau cùng, client hoàn tất bước cách gởi một thông báo CHANGECIPHERSPEC và một thông báo FINISHED tương ứng đến server Thông báo FINISHED gởi lập tức sau thông báo CHANGECIPERSPEC để xác nhận các tiến trình trao đổi khóa và xác thực Page 15 đã thành công Thực tế, thông báo FINISHED là thông báo vốn bảo vệ các thuật toán thương lượng và các khóa session Nó có thể tạo và xác nhận khóa này cài đặt một cách phù hợp hai phía Không đòi hỏi báo nhận thông báo FINISHED; các phía có thể bắt đầu gởi liệu mã hóa lập tức sau đã gởi thông báo FINISHED Việc thực thi SSL Handshake Protocol hoàn tất việc yêu cầu server gởi một thông báo CHANGECIPHERSPEC và một thông báo FINISHED tương ứng đến client bước Sau thiết lập SSL hoàn tất, một nối kết an toàn thiết lập client và server Nối kết này có thể sử dụng để gởi liệu ứng dụng vốn bao bọc SSL Record Protocol Chính xác hơn, liệu ứng dụng có thể phân đoạn, nén, hoặc mã hóa và đước xác thực theo SSL Record Protocol thông tin trạng thái session và nối kết vốn thiết lập (tùy thuộc việc thực thi SSL Handshake Protocol) SSL Handshake Protocol có thể rutst ngắn client và server định tiếp tục lại một session SSL thiết lập trước đó (và lưu trữ) hoặc lặp lại một session SSL có Trong trường hợp này, ba dòng thông báo và tổng cộng sáu thông báo yêu cầu Các dòng thông báo tương ứng có thể tóm tắt sau: 1: C -> S: CLIENTHELLO 2: S -> C: SERVERHELLO CHANECIPHERSPEC FINISHED 3: S ->C: CHANGECIPHERSPEC FINISHED Ở bước 1, client gởi một thông báo CLIENTHELLO đến server vốn có một định danh session cần tiếp tục lại Lần lượt server kiểm tra cache session của nó để tìm một mục tương hợp Nếu một mục tương hợp tìm thấy, server muốn tiếp tục lại nối kết bên trạng thái session đã xác định, nó trả về một thông báo SERVERHELLO với một định danh session bước Vào thời điểm này, client lẫn server phải gởi các thông báo CHANGECIPHERSPEC và FINISHED đến bước và Một việc tái thiết lập session hoàn tất, client và server có thể bắt đầu trao đổi liệu ứng dung 4/SSL Record Protocol: SSL Record Protocol nhận liệu từ các giao thức SSL lớp cao và xử lý việc phân đoạn, nén, xác thực và mã hóa liệu Chính xác hơn, giao thức này lấy một khối liệu có kích cỡ tùy ý làm liệu nhập và tọa một loạt các đoạn liệu SSL làm liệu xuất (hoặc còn gọi là các ghi) nhỏ hoặc 16,383 byte Page 16 Các bước SSL Record Protocol Các bước khác của SSL Record Protocol vốn từ một đoạn liệu thô đến một ghi SSL Plaintext (bước phân đoạn), SSL Compressed (bước nén) và SSL Ciphertext (bước mã hóa) minh họa hình 1.5 Sau cùng, ghi SSL chứa các trường thông tin sau đây: - Loại nội dung; - Số phiên của giao thức; - Chiều dài; - Tải trọng liệu (được nén và mã hóa tùy ý); - MAC Page 17 Như minh họa hình trên, một số giao thức SSL xếp lớp SSL Record Protocol Mỗi giao thức có thể tham chiếu đến các loại thông báo cụ thể vốn gửi cách sử dụng SSL Record Protocol Thông số kỹ thuật SSL 3.0 xác định ba giao thức SSL sau đây: - Alert Protocol: Protocol sử dụng để chuyển các cảnh báo thông qua SSL Record Protocol Mỗi cảnh báo gồm phần, một mức cảnh báo và một mô tả cảnh báo - Handshake Protocol: đã giới thiệu - Change CipherSpec Protocol:được sử dụng để thay đổi một thông số mật mã này và một SSL_NULL_WITH_NULL_NULL = {thường 0, } thay đổi cuối một thiết lập thông số mật mã khác Mặc dù thông số mật mã quan hệ SSL, nó có thể thay đổi vào bất kỳ thời điểm sau đó Minh họa đoạn thông điệp chứ thông tin về khóa và quy định thuật toán INITIAL (NULL) CIPHER SUITE PUBLICHASH SYMMETRC KEY SSL_RSA_WITH_NULL_MD5 = { 0, ALGORITH } ALGORITH ALGORITH M M M SSL_RSA_WITH_NULL_SHA = { 0, } CIPHER SUITE CODES USED SSL_RSA_EXPORT_WITH_RC4_40_MD5 = { 0, 3IN} SSL MESSAGES SSL_RSA_WITH_RC4_128_MD5 = { 0, } SSL_RSA_WITH_RC4_128_SHA = { 0, } SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = { 0, } SSL_RSA_WITH_IDEA_CBC_SHA = { 0, } SSL_RSA_EXPORT_WITH_DES40_CBC_SHA = { 0, } Premaster secret SSL_RSA_WITH_DES_CBC_SHA = { 0, } Tạo khách hàng, sử dụng để “seed” tính toán của các thông số mã hoá Rất đơn giản: byte của phiên SSL + 46 byte=ngẫu SSL_RSA_WITH_3DES_EDE_CBC_SHA { 0,nhiên 10 } Gửi mã hoá đến náy chủ cách sử dụng khoá công khai của máy chủ Master secret Tạo hai bên từ premaster secret và các giá trị ngẫu nhiên tạo máy khách và máy chủ Key material Giá trị ngẫu nhiên tạo từ master secret và shared random values Encryption keys Trích xuất từ key material Page 18 Minh họa quá trình tạo Master Secret CLIENT SENDS PREMASTER SECRET IN ClientKeyExchange MASTER SECRET IS MD5 HASHES CONCATENATED TOGETHER = 384 BITS Page 19 SENT BY SERVER IN ServerHello SENT BY CLIENT IN ClientHello Minh họa quá trình tạo Key Materials JUST LIKE FORMING THE MASTER SECRET EXCEPT THE MASTER SECRET IS USED HERE INSTEAD OF THE PREMASTER SECRET Page 20 Minh họa quá trình tổng hợp Key Meterials để ghép thành thông điệp SECRET VALUES INCLUDED IN MESSAGE AUTHENTICATION CODES Page 21 SYMMETRIC KEYS INITIALIZATION VECTORS FOR DES CBC ENCRYPTION Chương 3: Các kiểu tấn công và phòng chống 1/Các kiểu công SSL/TLS Mặc dù giao thức SSL/TLS về mặt lý thuyết thì có mức an toàn cao, thực tế nó có thể nó có thể bị tấn công một vài cách sau Có nhiều phương hướng tấn công, đó có hai cách đáng quan tâm nhất: a.Kiểu Man in the middle (MITM) Trong kiểu tấn công này, kẻ phá hoại ngăn chặn lưu lượng trao đổi qua lại client và server, chẳng hạn giả mạo DNS trả lời hay đổi hướng của ARP, sau đó đóng vai client đối với server và ngược lại Trong suốt cuộc tấn công này web browser của người dùng không kết nối trực tiếp với server đích Nhưng thay vì phá hoại host,nó đóng vai web browser và hành động về giống là một proxy Có hai tin dành cho nhà quản trị muốn bảo vệ hệ thống chống lại các cuộc tấn công: Tin tốt là web browser cảnh báo người dùng nhận dạng của web server không thể kiểm chứng, và có thể cuộc tấn công man-in-middle cách một hộp tin nhắn cảnh báo Tin xấu là, thực tế, người dùng thường bỏ qua các tin nhắn Do đó web browser của người dùng chấp nhận kết nối tới các website SSL mà nhân dạng không thể kiểm tra được, chúng ta có thể tin tưởng vào ý thức của người dùng, và tin họ nhấn nút “proceed” cảnh báo Page 22 b.Tấn công Brute-force các khoá session: Bằng cách thử-sai miền không gian các giá trị có thể của khoá Nhưng số phép thử-sai tǎng lên độ dài khoá tǎng và dẫn đến vượt quá khả nǎng và công suất tính toán, kể các siêu máy tính đại nhất Thí dụ, với độ dài khoá là 40bit, thì số phép thử là 240=1,099,511,627,776 tổ hợp Kiểu tấn công này dùng kẻ phá hoại biết hoặc nắm một phần đoạn văn gửi session SSL/TLS, chẳng hạn “GET/HTTP/1.0” Và kẻ tấn công có thể nghe cuộc nói chuyện phiên này (như dùng tcpdump, Ethereal hoặc các chức khác) Sau đó giải mã đoạn bắt việc dùng các khoá có thể, cố gắng tìm các biến thể của nó liệu đã mã hoá của SSL/TLS Nếu khoá tìm ra, đoạn tin nhắn đó có thể dùng để giải mã toàn bộ phần văn phiên giao dịch đó Tin tốt là số lượng khoá lớn nhất phải kiểm tra là 2^128 mã hoá đối xứng 128-bit dùng Ngày nay, chúng ta tin tưởng nó đủ sức bảo vệ các session nhiều lần năm Tuy nhiên, từ CPUs ngày càng tăng kích thước chúng ta không thể dự đoán các khoá đồng bộ 12bit có thể xem là an toàn hay không Cụ thể các hacker có thể truy cập vào một số lượng lớn các siêu máy tính Trong trường hợp bộ mã hoá theo lớp xuất (40 bit, và một số bộ mở rộng là 56 bits) chẳng hạn tấn công brute force có thể thành công một lượng thời gian, chí là vài ngày, phụ thuộc vào số của CPU Nếu có thể dùng bộ mã hoá mạnh thì bạn nên dùng một cách dứt khoát thay 2/Biện pháp phòng chống Theo dõi kết nối an toàn HTTPS Khi bạn thực tấn công MITM nó lấy khía cạnh an toàn của kết nối, thứ có thể xác định trình duyệt Điều này có nghĩa bạn đăng nhập vào tài khoản ngân hàng trực tuyến và thấy nó là một kết nối HTTP chuẩn thì chắn có thứ gì đó sai Bất cứ nào trình duyệt mà bạn chọn sử dụng cần bảo đảm bạn biết cách phân biệt các kết nối an toàn với kết nối không an toàn Lưu tài khoản ngân hàng trực tuyến nhà Cơ hội cho đó có thể chặn lưu lượng của bạn mạng gia đình nhiều so với mạng nơi làm việc của bạn Trong mạng công ty, bạn gì diễn hệ thống mạng, đó có thể “tăm tia” bạn mà bạn ko hề hay biết Page 23 Bảo mật các máy tính bên mạng Các tấn công thường thực thi bên một mạng Nếu các thiết bị mạng của bạn an toàn thì nguy bị theo dõi các package sau đó sử dụng để khởi chạy tấn công chiếm quyền điều khiển session giảm Chương 4: hướng dẫn cài đặt web application sử dụng SSL ( loại Self-Signed certificate) B1: Khởi động giao diện quản lý website IIS (IIS Manager) Page 24 B2: Vào mục Server Certificate và chọn Create Self-Signed Certificate B3: Đặt tên cho Certificate này Page 25 Thông tin của Certificate Page 26 B4: Trở lại giao diện của IIS Manager, tạo website Page 27 B5: Vào Visual Studio tạo một website với tương ứng với Website đã tạo IIS B6: Sửa lại đường dẫn bên ISS cho đúng với đường dẫn của website tạo VS Page 28 B7: Chạy Website thì hình sau B8: chọn Thêm ngoại lệ là Website đã chạy Page 29 ... chạy TLS /SSL Từ khóa Cổng Mô tả Nsiiop 261 Dịch vụ tên IIOP TLS /SSL https 443 HTTP TLS /SSl Smtps 465 SMTP TLS /SSL Nntps 563 NNTP TLS /SSL Ldaps 636 LDAP TLS /SSL Ftps-data 989 FTP (dữ liệu) TLS /SSL. .. Ftps 990 FTP (Điều khiển) TLS /SSL Tenets 992 TELNET TLS /SSL Imaps 994 IRC TLS /SSL Pop3s 995 POP3 TLS /SSL Nói chung, một session SSL có trạng thái và giao thức SSL phải khởi tạo và trì... Các kiểu tấn công và phòng chống 1 /Các kiểu công SSL/ TLS Mặc dù giao thức SSL/ TLS về mặt lý thuyết thì có mức an toàn cao, thực tế nó có thể nó có thể bị tấn công một vài