DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT 1 DANH MỤC CÁC HÌNH VẼ 2 LỜI NÓI ĐẦU 3 Chương 1. Giao thức HTTP (HyperText Transfer Protocol) 4 1.1. Tổng quan về giao thức HTTP 4 1.2. Mô hình HTTP 4 1.3. Cấu trúc thông điệp HTTP 6 1.3.1 HTTP Request 6 1.3.2 HTTP Response 7 Chương 2. Giao thức SSLTLS 9 2.1. Giới thiệu SSL 9 2.2. Các thuật toán mã hóa trong SSL 11 Chương 3. Giao thức HTTPS 13 3.1. Giới thiệu HTTPS 13 3.2. So sánh HTTP và HTTPS 14 Chương 4. Xây dựng kịch bản so sánh HTTP và HTTPS 18 4.1. Mô hình 18 4.2. Demo 19 DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT Viết tắt Giải thích CA Certificate Authority DES Data Encryption Standard DSA Digital Signature Algorithm FTP File Tranfer Protocol HTTP HyperText Transfer Protocol HTTPS Hypertext Transfer Protocol Secure KEA Key Exchange Algorithm NNTP Network News Transfer Protocol MD5 Message Digest algorithm MIME Multipurpose Internet Mail Extensions SSL Secure Sockets Layer TCP Transmission Control Protocol TSL Transport Layer Security UA User Agent SHA1 Secure Hash Algorithm SMTP Simple Mail Transfer Protocol DANH MỤC CÁC HÌNH VẼ Hình 1.1: HTTP hoạt động ở tầng ứng dụng 5 Hình 1.2: Mô hình HTTP đơn giản 6 Hình 1.3: Mô hình HTTP phức tạp ( nguồn RCF 2616 HTTP) 6 Hình1.4: HTTP request 7 Hình 1.5: Một ví dụ về nội dung thông điệp HTTP 7 Hình 1.6: Ví dụ cụ thể về Request Line 8 Hình 1.7: Cấu trúc thông điệp HTTP Response 8 Hình 1.8: Cụ thể trường Status Line 9 Hình 3.1: Sơ đồ cơ chế HTTP 15 Hình 3.2: Sơ đồ cơ chế HTTP bị phá vỡ 16 Hình 3.3: Ví dụ về HTTPS 16 Hình 3.4: Sơ đồ cơ chế HTTPS bị phá vỡ 17 Hình 4.1: Mô hình thực hiện chặn bắt gói tin Http và Https 19 Hình 4.1: Người dùng truy cập vào website thông qua giao thức Http bị hacker bắt user và password 20 Hình 4.2: User và password được mã hóa khi người dùng truy cập website qua giao thức Https 21
Trang 2Ý KIẾN CỦA GIẢNG VIÊN
Trang 3MỤC LỤC
DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT 1
DANH MỤC CÁC HÌNH VẼ 2
LỜI NÓI ĐẦU 3
Chương 1 Giao thức HTTP (HyperText Transfer Protocol) 4
1.1 Tổng quan về giao thức HTTP 4
1.2 Mô hình HTTP 4
1.3 Cấu trúc thông điệp HTTP 6
1.3.1 HTTP Request 6
1.3.2 HTTP Response 7
Chương 2 Giao thức SSL/TLS 9
2.1 Giới thiệu SSL 9
2.2 Các thuật toán mã hóa trong SSL 11
Chương 3 Giao thức HTTPS 13
3.1 Giới thiệu HTTPS 13
3.2 So sánh HTTP và HTTPS 14
Chương 4 Xây dựng kịch bản so sánh HTTP và HTTPS 18
4.1 Mô hình 18
4.2 Demo 19
Trang 4DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT
MIME Multipurpose Internet Mail Extensions
Trang 5DANH MỤC CÁC HÌNH VẼ
Hình 1.1: HTTP hoạt động ở tầng ứng dụng 5
Hình 1.2: Mô hình HTTP đơn giản 6
Hình 1.3: Mô hình HTTP phức tạp ( nguồn RCF 2616- HTTP) 6
Hình1.4: HTTP request 7
Hình 1.5: Một ví dụ về nội dung thông điệp HTTP 7
Hình 1.6: Ví dụ cụ thể về Request - Line 8
Hình 1.7: Cấu trúc thông điệp HTTP Response 8
Hình 1.8: Cụ thể trường Status - Line 9
Hình 3.1: Sơ đồ cơ chế HTTP 15
Hình 3.2: Sơ đồ cơ chế HTTP bị phá vỡ 16
Hình 3.3: Ví dụ về HTTPS 16
Hình 3.4: Sơ đồ cơ chế HTTPS bị phá vỡ 17
Hình 4.1: Mô hình thực hiện chặn bắt gói tin Http và Https 19
Hình 4.1: Người dùng truy cập vào website thông qua giao thức Http bị hacker bắt user và password 20
Hình 4.2: User và password được mã hóa khi người dùng truy cập website qua giao thức Https 21
Trang 6LỜI NÓI ĐẦU
Mạng internet là xu hướng phát triển của thế giới ngày nay Hiện nay internet đãtrở nên rất phổ biến trên toàn thế giới Thông qua mạng internet mọi người có thể trao đổi thông tin với nhau một cách nhanh chóng thuận tiện Những công ty phát triển và kinh doanh trên môi trường intranet/internet họ phải đối diện với khó khăn lớn là làm thế nào để bảo vệ dữ liệu quan trọng, ngăn chăn những hìnhthức tấn công, truy xuất dữ liệu bất hợp pháp từ bên trong (intranet), lẫn cả bên ngoài (internet) Khi một người muốn trao đổi thông tin với một người hay tổ chức nào đó thông qua mạng máy tính thì yêu cầu quan trọng là làm sao để đảm bảo thông tin không bị sai lệch hoặc bị lộ do sự xâm nhập của kẻ thứ ba Trước yêu cầu cấp thiết đó, một số giải thuật mã hóa đã được xây dựng nhằm đảm bảo tính an toàn dữ liệu tại nơi lưu trữ cũng như khi dữ liệu được truyền trên mạng.Đứng trước vấn đề thực tế đó, các tài liệu chuyên môn bắt đầu đề cập đến nhiều vấn đề để đảm bảo an toàn thông tin cho các máy tính kết nối với mạng Internet.Trong những phương pháp bảo vệ sự toàn vẹn thông tin khi kết nối Internet phổ biến nhất hiện nay là phương pháp mã hóa “Cryptography”
HTTPS là giải pháp dùng mã hóa thay cho HTTP truyền thống giúp giao dịch trên internet được an toàn hơn nhờ kết hợp giao thức SSL\TLS
Trong quá trình làm chúng em chân thành cảm ơn sự hướng dẫn của thầy
Nguyễn Văn Nghị cũng như kiến thức chung về mật mã đã giúp nhóm rất nhiều trong quá trình làm đề tài!
Trang 7Chương 1 Giao thức HTTP (HyperText Transfer
Protocol)1.1 Tổng quan về giao thức HTTP
HTTP là chữ viết tắt từ HyperText Transfer Protocol (giao thức truyền tải siêu văn bản) Nó là giao thức cơ bản mà World Wide Web sử dụng
HTTP là giao thức truyền tải các file từ một Web server vào một trình duyệt Web để người dùng có thể xem một trang Web đang hiện diện trên Internet và làmột giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho Internet) Hoạt động thông thường ở port 80 và là giao thức hướng kết nối Nói cách khác, trước khi thực hiện phiên làm việc, giao thức HTTP sẽ thực hiện bắt tay
Hình 1.1: HTTP hoạt động ở tầng ứng dụng
HTTP cũng được sử dụng như một giao thức chung để truyền thông giữa tácnhân người dùng (User Agent - UA) và các proxy, gateway (Một máy chủ hoạt động như một điểm trung gian đối với máy chủ khác, tiếp nhận các yêu cầu từ máy khách với vai trò như một máy chủ gốc) đến các hệ thống Internet khác, gồm cả các hệ thống hỗ trợ giao thức truyền thư đơn giản (Simple Mail TransferProtocol – SMTP), giao thức truyền tin tức liên mạng (Network News Transfer Protocol – NNTP), giao thức truyền tệp tin (File Tranfer Protocol – FTP), giao thức Gopher (được thiết kế chính để tìm kiếm và lưu trữ tài liệu phân tán) và WAIS (hệ thống tìm kiếm theo mô hình khách – chủ sử dụng tiêu chuẩn ANSI Z39.50) Bằng cách này, HTTP cho phép truy cập siêu phương tiện đến các tài nguyên sẵn có từ các ứng dụng đa dạng
1.2 Mô hình HTTP
Giao thức HTTP là một giao thức có dạng yêu cầu/đáp ứng Khi một máy khách gửi một yêu cầu đến máy chủ gồm phương thức yêu cầu (gồm GET, POST, HEAD,…), URI, phiên bản giao thức, kèm với thông điệp kiểu MIME gồm các tham số chỉnh sửa của yêu cầu, thông tin máy khách và nội dung chính
Trang 8thông qua kết nối đến máy chủ Máy chủ sẽ đáp ứng bằng dòng trạng thái, gồm phiên bản giao thức thông điệp và mã thông báo thành công hay lỗi, kèm với thông điệp kiểu MIME có chứa thông tin về máy chủ, các thông tin thêm về đối tượng và nội dung chính của đối tượng.
Hình 1.2: Mô hình HTTP đơn giản
Khi giao dịch chuyển tải đã được thiết lập một bên (thường là trình duyệt phải gửi yêu cầu cho bên kia đáp lời)
Tình huống phức tạp hơn xảy ra khi có một hoặc nhiều điểm trung gian trong chuỗi yêu cầu/đáp ứng Có ba dạng trung gian phổ biến như: proxy, gateway và tunnel (Một chương trình trung gian hoạt động như một điểm trung chuyển giữahai kết nối) Proxy là một điểm chuyển tiếp, nhận các yêu cầu cho một URI,viết lại tất cả hoặc một phần của thông điệpvà chuyển tiếp yêu cầu đã định dạng lại về phía máy chủ xác định bởi URI Ở đây, gateway hoạt động như một lớp phía trên của máy chủ khácvà nếu cần thiết, biên dịch các yêu cầu tới giao thức máy chủ cơ sở Tunnel hoạt động như một điểm trung chuyển giữa hai kết nối
mà không cần thay đổi thông điệp, các tunnel được sử dụng khi giao tiếp cần phải đi qua một điểm trung gian (như tường lửa) ngay cả khi điểm trung gian này không hiểu được nội dung của thông điệp
Hình 1.3: Mô hình HTTP phức tạp ( nguồn RCF 2616- HTTP)
Hình 3 mô tả ba điểm trung gian (A, B và C) giữa tác nhân người dùng và máy chủ gốc Một thông điệp yêu cầu/đáp ứng sẽ truyền qua toàn bộ các điểm này bằng bốn kết nối riêng biệt Mỗi điểm trung gian có thể được tham gia vào nhiều kết nối và các giao tiếp khác tại cùng một thời điểm Ví dụ, điểm B có thể nhận yêu cầu từ nhiều máy khách khác ngoài A, hay chuyển tiếp yêu cầu đến nhiều máy chủ khác ngoài C đồng thời với việc xử lý yêu cầu từ điểm A
Trang 91.3 Cấu trúc thông điệp HTTP
HTTP có hai tác nhân là client và server Các client gởi yêu cầu (request) vàserver trả lời (response) Vì vậy, chúng ta sẽ phân tích hai thông điệp chính là HTTP Requests và HTTP Responses
1.3.1 HTTP Request
Hình1.4: HTTP request
Hình trên cho thấy cấu trúc cơ bản của HTTP Requests Một HTTP
Requests bắt đầu bởi Request-Line Request-Line có thể được theo sau bởi một hoặc nhiều header và body
Để cụ thể hơn, hình bên dưới cho thấy một thông điệp http (dưới dạng văn bản) do Internet Explorer của Microsoft gửi khi người dùng truy cập vào trang http://www.ft.com Dòng đầu tiên là Request-Line, và tiêu đề thông điệp tạo nên phần còn lại của văn bản
Hình 1.5: Một ví dụ về nội dung thông điệp HTTP
Hình dưới phân tích cụ thể hơn Request-Line, bao gồm 3 phần: Method – phương thức của thông điệp, URI, và Version- phiên bản của HTTP
Trang 10Hình 1.6: Ví dụ cụ thể về Request - Line
Phương thức (method) cụ thể xuất hiện đầu tiên trong Request-Line Trong ví
dụ trên đây là một phương thức GET
Mục tiếp theo trong Request-Line là Request-URI Request-URI chứa nguồn tài nguyên cần truy cập Trong ví dụ trên, Request-uri là (/), chỉ ra một yêu cầu đối với các nguồn tài nguyên gốc Phần cuối cùng của Request-Line là phiên bảnHTTP Như ví dụ trên cho thấy, HTTP phiên bản 1.1
1.3.2 HTTP Response
Request Resonse bắt đầu bởi Status-Line (dòng mã trạng thái) Sau đó là phầnthông tin của Header và một dòng trắng Cuối cùng là phần body
Hình 1.7: Cấu trúc thông điệp HTTP Response
Status-Line bắt đầu bởi số phiên bản của HTTP (trường hợp này là
HTTP/1.1), sau đó là mã trạng thái(trường hợp này là 200 OK)
Trang 11Hình 1.8: Cụ thể trường Status - Line
Trang 12Chương 2 Giao thức SSL/TLS2.1 Giới thiệu SSL
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 điqua 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 TCP/IP 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:
• 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
• 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
Với việc sử dụng SSL các web site có thể cung cấp khả năng bảo mật thông tin, xác thực và toàn vẹn dữ liệu đến người dùng SSL được tích hợp sẵn vào cácbrowser 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 sẽ xuất hiện trên thanh trạng thái của cửa sổ browser và dòng “http” trong hộp nhập địa chỉ URL sẽ đổi thành “https” Một phiên giao dịch HTTPS sử dụngcổng 443 thay vì sử dụng cổng 80 như dùng cho HTTP
SSL không phải là một giao thức đơn lẻ, mà là một tập các thủ tục đã được chuẩn hoá để thực hiện 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 đượ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ắc chắn rằngcertificate và public ID của server là có giá trị và được cấp phát bởi một CA (certificate authority) trong 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ụ như khi gửi mã số credit card qua mạng thì người dùng thực sự muốn kiểm tra liệu server sẽ nhận thông tin này có đúng là server mà họ định gửi đến không
• Xác thực Client: Cho phép phía server xác thực được người sử dụng muốn kết nối Phía server cũng sử dụng các kỹ thuật mã hoá công khai để kiểm tra xem
Trang 13certificate và public ID của server có giá trị hay không và được cấp phát bởi một
CA (certificate authority) trong 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ụ như khi một ngân hàng định gửi các thông tin tài chính 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ác thông tin trao đổi giữa client và server được mã hoátrên đường truyền nhằm nâng cao khả năng bảo mật Điều này rất quan trọng đốivới cả hai bên khi có các giao dịch mang tính riêng tư Ngoài ra, tất cả các dữ liệu được gửi đi trên một kết nối SSL đã được mã hoá còn được bảo vệ nhờ cơ chế tự động phát hiện các xáo trộn, thay đổi trong dữ liệu ( đó là các thuật toán băm – hash algorithm)
SSL cung cấp sự bảo mật truyền thông vốn có ba đặc tính cơ bản:
- Các bên giao tiếp (nghĩa là client và server) có thể xác thực nhau bằng cách
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ụ, bằng cách xem xét các địa chỉ IP nguồn và đích không được mã hóa và các sô cổng TCP, hoặc xem xét lượng dữ liệu được truyền, một người phân tích lưu lượng vẫn có thể xác định các bên nào đang tương tác, các loại dịch vụ đang được sử dụng, và đôi khi ngay cả dành được 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 như 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 sự bảo vệ SSL, cả client lẫn server phải biết rằng phía bên kia đang sử dụng SSL Nói chung, có ba khả năng để giải quyết vấn đề này:
- Sử dụng các số cổng chuyên dụng được dành riêng bởi Internet Asigned Numbers Authority (IANA) Trong trường hợp này, một số cổng riêng biệt phải được gán cho mọi giao thức ứng dụng vốn sử dụng SSL
- Sử dụng số cổng chuẩn cho mọi giao thức ứng dụng và để thương lượng các tùy chọn bảo mật như là một phần của giao thức ứng dụng (bây giờ được chỉnh sửa đôi chút)
Trang 14- 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 như SSL trong suốt giai đoạn thiết lập nối kết TCP thông thường.
2.2 Các thuật toán mã hóa trong SSL
Các thuật toán mã hoá (cryptographic algorithm hay còn gọi là cipher) là cáchàm toán học được sử dụng để 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á, được sử dụng để thực hiện các công việc 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 (sesion key) Client và server có thể hỗ trợ các bộ mật mã (cipher suite) khác nhau tuỳ thuộc vào nhiều yếu tố như phiên bản SSL đang dùng, chính sách của công ty về độ dài khoá mà họ cảm thấy chấpnhận được - điều này liên quan đến mức độ bảo mật của thông tin, …
Các bộ mật mã được trình bày ở phần sau sẽ đề cập đến các thuật toán sau:
* DES (Data Encryption Standard) là một thuật toán mã hoá có chiều dài khoá là
* MD5 (Message Digest algorithm) được phát thiển bởi Rivest
* 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: là các thuật toán mã hoá được phát triển bởi Rivest dùng cho RSA Data Security
* SHA-1 (Secure Hash Algorithm): là một thuật toán băm đang được chính phủ
Mỹ sử dụng
Trang 15Cá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
Trang 16Chương 3 Giao thức HTTPS3.1 Giới thiệu HTTPS
HTTPS là viết tắt của “Hypertext Transfer Protocol Secure”, Nó là một sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay TLS cho phép trao đổi thông tin một cách bảo mật trên Internet Giao thức HTTPS thường được dùng trong các giao dịch nhậy cảm cần tính bảo mật cao
Netscape Communications tạo ra HTTPS vào năm 1994 cho trình duyệt web Netscape Navigator Ban đầu, HTTPS đã được sử dụng với SSL mã hóa Phiên bản hiện hành của HTTPS được chính thức chỉ định bởi RFC 2818 Tháng 5 năm2000
HTTPS đã có lịch sử phát triển khá dài, thậm chí có thể nói rằng nó sinh cùngthời với Web Nhưng cho đến nay, giao thức này vẫn chỉ được sử dụng chủ yếu bởi những trang web có hoạt động chuyển tiền, trang web của các ngân hàng hoặc các cửa hàng trực tuyến Nếu như có những trang web khác sử dụng
HTTPS, thì họ cũng chỉ dùng nó cho một vài tác vụ nhất định mà thôi
Dù chưa đảm bảo được tính bảo mật 100% nhưng HTTPS vẫn an toàn hơn rất nhiều so với HTTP Khi bạn kết nối vào một máy chủ sử dụng HTTPS, trình duyệt sẽ kiểm tra chứng thực bảo mật (security certificate) của trang web này để xem xem chứng thực nói trên có được cung cấp bởi một đơn vị đáng tin cậy hay không Nhờ đó, khi bạn truy cập vào những địa chỉ như https://nganhangA.com, trình duyệt của bạn sẽ xác thực được rằng bạn đang truy cập vào địa chỉ thực của Ngân Hàng A
Dĩ nhiên, HTTPS không phải là không có lỗ hổng: các đơn vị cấp phát chứngthực bảo mật sẽ xác nhận rằng https://nganhangA.com là địa chỉ xác thực của Ngân hàng A Do đó, nếu các đơn vị cấp phát chứng thực để lọt một trang web xấu nào đó, bạn vẫn có thể bị lừa đảo khi truy cập vào các địa chỉ giả sử dụng HTTPS
Dù có lỗ hổng nhưng HTTPS vẫn tỏ ra hữu ích trong hầu hết các trường hợp
sử dụng Khi bạn cần cung cấp các thông tin như số thẻ tín dụng hoặc địa chỉ email, các trang web uy tín thường chuyển sang sử dụng các kênh HTTPS được
mã hóa Nhờ đó, các nhà mạng hoặc hacker gần như không thể dò tìm thông tin của bạn
HTTPS cũng hỗ trợ tăng cường tính riêng tư Ví dụ, hiện nay Google đang sử dụng giao thức HTTPS cho cả trang tìm kiếm của mình Trước đây, do chỉ sử dụng HTTP nên bất kì ai cùng mạng Wi-Fi đều có thể theo dõi các tìm kiếm Google của bạn Nếu như bạn truy cập vào các trang web khác, ví dụ như