Tìm hiểu kỹ hơn về giao thức HTTP và HTTPs (rất dễ hiểu) Update 11/2024

Xin chào các bạn, trong bài này chúng ta sẽ nói về giao thức HTTP, HTTPs và chứng chỉ bảo mật SSL/ TLS. Nhưng trước tiên, mình sẽ nói qua một chút về khái niệm trước đã.

I. Tìm hiểu về giao thức HTTP

#1. HTTP là gì?

HTTP là viết tắt của cụm từ HyperText Transfer Protocol – đây là một giao thức truyền tải siêu văn bản được sử dụng trong WWW (World Wide Web).

HTTP là một giao thức chuẩn về mạng Internet, được phát triển từ những năm 1990. Nó được dùng để liên hệ thông tin giữa MÁY CUNG CẤP DỊCH VỤ (Web SERVER) và MÁY SỬ DỤNG DỊCH VỤ (Web Client). Chính vì vậy, việc truy cập vào một website được tiến hành dựa trên các giao tiếp giữa 2 đối tượng trên.

Ngoài ra thì HTTP cũng là một giao thức ứng dụng của bộ giao thức TCP/IP (đây là các giao thức nền tảng cho Internet). Và thường thì giao thức HTTP sử dụng cổng 80 (Port 80) là chủ yếu.

HTTP được sử dụng để truyền tải dữ liệu giữa web server đến các trình duyệt web mà bạn đang sử dụng, chẳng hạn như Microsoft Edge, Google Chrome, Safari, Cốc Cốc hay là FireFox…

Ví dụ như khi bạn truy cập vào địa chỉ web như blogchiasekienthuc.com, giao thức HTTP:// hoặc HTTPS:// sẽ được tự động thêm vào.

tim-hieu-ve-giao-thuc-http-va-https (4)

Giao thức HTTP sẽ truyền dữ liệu đi dưới dạng văn bản thô (không được mã hóa) nên rất dễ bị lấy cắp (sniff) bởi các tin tặc, bằng việc sử dụng các công cụ Free như: Wireshark, TCPDump hay fiddler (nhất là người ở trong cùng mạng LAN/Wi-Fi của bạn).

Vậy nên bạn hãy bỏ ngay thói quen dùng các mạng Wi-Fi công cộng không đặt pass để truy cập vào các tài khoản nhạy cảm nhé (ví dụ như tài khoản ngân hàng, hay các giao dịch, hoặc đăng nhập facebook… chẳng hạn).

Bởi rất có khả năng, đó là một hotspot mà hacker tạo ra để nhử mồi đấy, điều đáng sợ là họ có thể làm được với các smartphone cực kỳ nhỏ gọn, và rất khó bị phát hiện.

Đọc thêm: Hãy cẩn thận khi sử dụng WiFi công cộng và các mạng WiFi Free

tim-hieu-ve-giao-thuc-http-va-https (5)

Nếu bạn chỉ xem tin tức trên các trang web thông thường và không nhập bất cứ dữ liệu nhạy cảm (thông tin cá nhân, mật khẩu, thẻ ngân hàng,…) nào thì không vấn đề gì.

Thế nhưng, nếu bạn nhập các dữ liệu “nhạy cảm” thì sẽ rất dễ bị đánh cắp đấy. Bởi những dữ liệu nhạy cảm này sẽ đi từ máy tính của bạn => đến mạng LAN Ethernet/Wi-Fi/ Router công cộng => để đến máy chủ web.

Trên đường đi, các tin tặc ở đâu đó trên Internet có thể “sniff” và lấy cắp những thông tin này.

Như vậy: tên, địa chỉ, số điện thoại, số thẻ ngân hàng… của bạn đã nằm trong tay kẻ gian và họ có thể sử dụng với mục đích xấu: chạy quảng cáo, làm hồ sơ vay tiền, mua đồ trái phép,…

#2. Giao thức HTTP hoạt động như thế nào?

Nói về giao thức HTTP thì rất dài, vậy nên ở đây mình sẽ giải thích một cách ngắn gọn và dễ hiểu nhất về cách thức hoạt động của giao thức này. OK !

Khi bạn truy cập vào một trang web sử dụng giao thức HTTP => thì lúc này trình duyệt web sẽ thực hiện các phiên kết nối đến SERVER của trang web đó (thông qua 1 địa chỉ IP, do hệ thống phân giải tên miền DNS cấp).

=> Và SERVER sau khi nhận lệnh => sẽ trả về các lệnh tương ứng giúp website có thể hiển thị đầy đủ các nội dung (video, hình ảnh…)

cach-ma-giao-thuc-http-hoat-dong

Trong quá trình kết nối và trao đổi thông tin giữa máy tính và máy SERVER, trình duyệt web sẽ mặc định thừa nhận địa chỉ IP đó đến từ SERVER của chính website mà bạn muốn truy cập, mà nó không hề có biện pháp xác thực nào cả.

Và tất cả các thông tin được gửi đi qua giao thức HTTP (trong đó có địa chỉ IP, hay các thông tin mà bạn nhập vào website…) cũng không hề được mã hóa và bảo mật.

Vậy nên người dùng rất có thể sẽ bị tấn công sniffing. Hacker có thể dễ dàng “chen ngang” vào kết nối giữa máy tính của bạn và máy chủ (SERVER) để đánh cắp các dữ liệu mà người dùng đã gửi đi (ví dụ như mật khẩu, thông tin của thẻ tín dụng, tài khoản ngân hàng…). Thậm chí, mọi thao tác của người dùng trên website đó đều có thể bị ghi lại mà họ không hề hay biết.

=> Và đây chính là kẽ hở chết người của giao thức HTTP, rất nhiều hacker đã lợi dụng kẽ hở này để đánh cắp thông tin người dùng, thường được gọi là tấn công sniffing như mình đã nói bên trên.

II. Tìm hiểu về giao thức HTTPS

#1. Giao thức HTTPs là gì?

HTTPs (viết tắt là Hyper Text Transfer Protocol Secure) hay còn gọi là “Giao thức truyền tải siêu văn bản bảo mật”, hiểu đơn giản thì nó là giao thức HTTP được cộng thêm tính năng bảo mật nữa.

HTTPS sử dụng cổng 443 (Port 443) – đây chính là cổng có hỗ trợ mã hóa kết nối từ máy tính Client (máy tính của bạn) đến SERVER (máy chủ của web), nhằm bảo vệ gói dữ liệu đang được truyền đi một cách an toàn hơn.

#2. HTTPs hoạt động như thế nào?

Nói chung là HTTPS hoạt động tương tự như HTTP, tuy nhiên nó được bổ sung thêm chứng chỉ bảo mật SSL (Secure Sockets Layer) hoặc TLS (Transport Layer Security). Ở thời điểm hiện tại thì đây là các tiêu chuẩn bảo mật hàng đầu cho hàng triệu trab web trên toàn thế giới.

Khác với HTTP, khi bạn truy cập vào một trang web thì HTTPs sẽ hỗ trợ xác thực tính đích danh của website đó thông qua việc kiểm tra xác thực bảo mật (Security Certificate).

  • Các xác thực bảo mật này được cung cấp và xác minh bởi Certificate Authority (CA) – đây là các tổ chức phát hành các chứng thực của các loại chứng thư số cho các cá nhân, doanh nghiệp, máy chủ, mã nguồn, phần mềm…
  • Và đương nhiên, các tổ chức này đóng vai trò là bên thứ ba, được cả hai bên tin tưởng để hỗ trợ quá trình trao đổi thông tin an toàn.

HTTPS có nhiệm vụ mã hóa dữ liệu của HTTP, HTTPs sẽ đảm bảo rằng tất cả dữ liệu được truyền qua Internet giữa máy tính và máy SERVER được bảo mật bằng cách sử dụng các thuật toán mã hóa + hàm băm (AES, MD5, SHA2,…) để xáo trộn dữ liệu trước khi truyền đi.

cach-hoat-dong-cua-giao-thuc-https

Nhiều bạn đọc đến đây sẽ thắc mắc là tại sao dữ liệu đã bị xáo trộn, bị mã hoá rồi mà Client và SERVER vẫn đọc được, trong khi đó người thứ 3 thì không thể. Có đúng không ạ?

Vậy thì các bạn hãy tìm hiểu thêm mô hình PKI mã hoá bằng khoá công khai – asymmetric public key infrastructure.

Hiểu nôm na là dữ liệu SERVER gửi đến Client (máy tính người dùng) => được server mã hoá bằng khoá công khai của chính Client + khóa quy ước giữa client + server, và ngược lại.

Bạn nên tìm hiểu riêng về PKI, bởi nó là một chủ đề rộng và rất phức tạp, không thể nói đôi ba câu hay lồng ghép nó vào bài viết này được, rất rối, cho nên các bạn đừng bỡ ngỡ khi nghe các khái niệm chuyên ngành (vốn không nên dịch ra tiếng Việt) như: certificate, hash, public-key, private-key,…

tim-hieu-ve-giao-thuc-http-va-https (1)

Ví dụ, nếu bạn vào các trang web đạt tiêu chuẩn bảo mật thì bạn sẽ thấy có một chữ s sẽ được thêm vào sau chữ http trong địa chỉ web => https.

tim-hieu-ve-giao-thuc-http-va-https (2)

Điều này cho biết rằng bạn hiện đang sử dụng giao thức https, và đã vào một trang web bảo mật, nơi mà dữ liệu nhạy cảm sẽ được sẽ được bảo vệ trên đường truyền.

Ngoài việc chữ S được thêm vào thì trình duyệt web sẽ hiển thị biểu tượng “ổ khóa” màu xanh trong thanh địa chỉ để cho biết rằng HTTPs đang được sử dụng, được trang bị đầy đủ 100% HTTPS (chứ không phải đơn thuần bản thân web là https, còn một số thành phần như script, image được load qua kênh http thông thường).

trang-web-co-https-chua-chac-da-an-toan (6)

Bằng cách sử dụng HTTPs, tất cả dữ liệu bao gồm mọi nội dung bạn nhập sẽ không còn được gửi dưới dạng văn bản thô (raw) như với giao thức HTTP nữa, mà nó sẽ được mã hoá để không thể đọc được bởi bên thứ 3 khi nó di chuyển trên Internet.

Nếu bạn là dân chuyên thì chắc chắn bạn đã không còn lạ lẫm gì khi các “service” phổ biến đều được thêm chữ “s” huyền thoại này vào đúng không:

Ví dụ như FTPS, IMAPS, LDAPS,… chúng đều là những dịch vụ dễ bị tin tặc sniff, nhưng có thêm chữ S này vào thì mọi chuyện đã hoàn toàn khác, bạn đã thấy điều kì diệu của công nghệ chưa?

#3. HTTPs bảo mật dữ liệu bằng cách nào?

Những ví dụ và giải thích ở phần #2 đã phần nào giúp các bạn hiểu hơn về cách thức hoạt động của HTTPs cũng như cách mà nó bảo mật dữ liệu rồi phải không ạ !

Tuy nhiên, mình vẫn muốn nói kỹ hơn về phần này một chút. Đầu tiên là chứng chỉ bảo mật SSL:

giao-thuc-https

SSL là chữ viết tắt của Secure Sockets Layer, là một giao thức được sử dụng để đảm bảo an ninh trên Internet. Nó sử dụng mã hóa khóa công khai PKI để bảo mật dữ liệu.

Chứng chỉ SSL là chứng chỉ kỹ thuật số được sử dụng để xác thực danh tính của website. Về cơ bản thì nó được sử dụng để cho máy tính của bạn biết rằng trang web mà bạn đang truy cập là đáng tin cậy.

Mình sẽ giải thích một cách đơn giản nhất về SSL cho các bạn dễ hình dung nhé:

Khi bạn mở một trang web có sử dụng SSL (ví dụ như blogchiasekienthuc.com chẳng hạn) => lúc này trình duyệt web của máy tính sẽ yêu cầu trang web đó phải chứng thực được danh tính => máy chủ của trang web (SERVER) sẽ gửi một bản sao chứng chỉ SSL cho máy tính đó

=> Sau khi đã nhận được chứng chỉ SSL từ máy chủ thì trình duyệt web trên máy tính sẽ thực hiện kiểm tra để đảm bảo rằng chứng chỉ này là đáng tin cậy => và một khi đã xác thực chứng chỉ là đáng tin cậy thì nó sẽ gửi thông điệp đến máy chủ web (SERVER) => máy chủ web sẽ xác nhận lại phần kiểm tra SSL đã xong => cuối cùng thì dữ liệu được mã hóa đã có thể trao đổi qua lại giữa máy tính và máy chủ web.

Tuy nhiên, giao thức SSL (v3.0 năm 2000) đã bị lỗi thời, có lỗ hổng trong thiết kế và đang được thay thế bởi một giao thức khác, đó là giao thức TLS.

tim-hieu-ve-giao-thuc-http-va-https (3)

TLS là chữ viết tắt của Transport Layer Security, đây là giao thức mã hóa theo tiêu chuẩn công nghiệp mới nhất, nó là sự kế thừa của SSL và nó dựa trên cùng thông số kỹ thuật.

Mình vẫn nhắc đến SSL ở trên là vì nếu website sử dụng TLS thì vẫn có khả năng bị hacker tấn công downgrade từ TLS 1.0 xuống SSL 3.0 để khai thác những lỗ hổng của SSL, cho nên mới nói an ninh mạng là cực kì phức tạp.

Cũng giống như SSL, TLS (phiên bản mới nhất là 1.3 dùng từ năm 2018) cũng xác thực máy chủ, máy khách và mã hóa dữ liệu trước khi truyền tải đi.

Như các bạn đều biết, hiện tại đã có rất nhiều trang web sử dụng giao thức https, mặc dù những trang web này chỉ đơn thuần là các trang web báo chí, blog… không hề trao đổi bất kỳ thông tin mua bán hay giao dịch nào cả.

NOTE: Trước đây chỉ những trang web thương mại điện tử, trang web ngân hàng, tài chính.. những trang web cần nhập thông tin nhạy cảm… thì họ mới sử dụng  đến giao thức https.

Điều này là bởi vì Google ngày càng nghiêm ngặt hơn trong việc kiểm soát các website an toàn, ông lớn này đang chủ động “gắn cờ” các trang web không sử dụng giao thức https là không an toàn (hơn nữa website có https sẽ được “SEO rank” đánh giá cao hơn trong mắt Google – cái này thì anh em làm SEO mới hiểu :D).

Nói tóm lại là, khi sử dụng một trang web, một dịch vụ có sử dụng giao thức bảo mật HTTPS thì người dùng và máy chủ hoàn toàn có thể tin tưởng lẫn nhau, các thông tin được chuyển giao qua lại luôn trong trạng thái nguyên vẹn, không qua bất kì chỉnh sửa, sai lệch nào so với dữ liệu đầu vào.

Đọc thêm:

III. Kết luận

Vâng, như vậy là mình đã giới thiệu một cách cơ bản nhất về giao thức HTTP và HTTPs rồi nhé. Qua bài viết này thì bạn cũng hiểu được HTTP là gì?HTTPs là gì rồi đúng không?

Đây coi như là bài nhập môn về bảo mật an ninh mạng, cho nên mình chỉ gợi mở thêm các từ khóa để nếu muốn, các bạn có thể tra thêm Google để tìm hiểu thêm về chúng nhé (ưu tiên các tài liệu tiếng Anh).

Với các bạn làm văn phòng, học sinh/ sinh viên thì chỉ cần hiểu một điều là luôn ưu tiên truy cập các trang web có giao thức https, nhất là trong môi trường công cộng: Wi-Fi cà phê, quán Net…

Còn đối với các bạn Webmaster thì nên triển khai web với giao thức https ngay lập tức, vừa là để bảo mật cho server/người dùng, vừa là để tăng thứ hạng trên Google, hãy thử tìm hiểu Cloudflare Flexible SSL để triển khai hoàn toàn miễn phí nhé !

CTV: Dương Minh Thắng – Blogchiasekienthuc.com