Mã hóa

Mã hoá thường là một chủ đề nhằm bảo mật nhưng quyền riêng tư cũng rất quan trọng. Mục tiêu của mã hoá là ngăn người khác đọc thông tin đã mã hoá... nhưng việc ngăn người khác đọc thông tin của bạn là một cách để bảo mật thông tin. Người dùng thường bị giới hạn về khả năng tự thực hiện. Tuy nhiên, với sự hỗ trợ của bạn với tư cách là nhà cung cấp dịch vụ mà họ đang sử dụng, quá trình mã hoá có thể giúp giữ lại dữ liệu của họ.

Có 3 cách liên quan để áp dụng phương thức mã hoá nhằm hỗ trợ quyền riêng tư của người dùng: mã hoá trong quá trình truyền, mã hoá khi lưu trữ và mã hoá hai đầu:

  • Mã hoá trong quá trình truyền tải là quá trình mã hoá dữ liệu giữa người dùng và trang web của bạn, tức là HTTPS. Bạn có thể đã thiết lập HTTPS cho trang web của mình, nhưng bạn có chắc chắn tất cả dữ liệu truyền đến trang web của bạn đều được mã hoá không? Đây là mục đích của lệnh chuyển hướng và HSTS, được mô tả dưới đây và nên là một phần trong quá trình thiết lập HTTPS của bạn.
  • Mã hoá trong quá trình lưu trữ là quá trình mã hoá dữ liệu được lưu trữ trên máy chủ của bạn. Việc này giúp bảo vệ chống lại các sự cố rò rỉ dữ liệu và là một phần quan trọng trong quan điểm bảo mật của bạn.
  • Mã hoá hai đầu là việc mã hoá dữ liệu trên máy khách trước khi dữ liệu đó được gửi đến máy chủ của bạn. Việc này giúp bảo vệ dữ liệu người dùng ngay cả đối với bạn: bạn có thể lưu trữ dữ liệu của người dùng nhưng không thể đọc dữ liệu đó. Cách này khó triển khai và không phù hợp với mọi loại ứng dụng, nhưng là cách hỗ trợ hiệu quả cho quyền riêng tư của người dùng, vì không ai có thể xem dữ liệu của họ ngoài chính họ.

HTTPS

Bước đầu tiên là phân phối dịch vụ web của bạn qua HTTPS. Rất có thể bạn đã thực hiện việc này, nhưng nếu chưa thì đây là một bước quan trọng. HTTPS là HTTP, giao thức mà trình duyệt sử dụng để yêu cầu trang web từ máy chủ, nhưng được mã hoá bằng SSL. Điều này có nghĩa là kẻ tấn công bên ngoài không thể đọc hoặc can thiệp vào yêu cầu HTTPS giữa người gửi (người dùng của bạn) và người nhận (bạn), vì yêu cầu này được mã hoá nên họ không thể đọc hoặc thay đổi yêu cầu. Đây là quá trình mã hoá trong quá trình chuyển dữ liệu: trong khi dữ liệu di chuyển từ người dùng sang bạn hoặc từ bạn sang người dùng khác. Phương thức mã hoá HTTPS khi truyền cũng ngăn ISP của người dùng hoặc nhà cung cấp Wi-Fi mà họ đang sử dụng đọc được dữ liệu mà họ đang gửi cho bạn trong quá trình họ sử dụng dịch vụ của bạn. Điều này cũng có thể ảnh hưởng đến tính năng của dịch vụ: nhiều trường hợp sử dụng API JavaScript hiện tại yêu cầu trang web phải được phân phát qua HTTPS. MDN có danh sách đầy đủ hơn, nhưng các API được đặt cổng sau ngữ cảnh bảo mật bao gồm trình chạy dịch vụ, thông báo đẩy, chia sẻ web và tiền mã hoá web, cũng như một số API thiết bị.

Để phân phát trang web của bạn qua HTTPS, bạn cần có chứng chỉ SSL. Các tệp này có thể được tạo miễn phí thông qua Let's Encrypt hoặc thường do dịch vụ lưu trữ của bạn cung cấp nếu bạn đang sử dụng. Bạn cũng có thể sử dụng một dịch vụ của bên thứ ba để "tạo proxy" cho dịch vụ web của bạn và có thể cung cấp HTTPS, cũng như dịch vụ lưu vào bộ nhớ đệm và CDN. Có rất nhiều ví dụ về các dịch vụ như vậy, chẳng hạn như Cloudflare và Fastly — việc sử dụng chính xác dịch vụ nào phụ thuộc vào cơ sở hạ tầng hiện tại của bạn. Trước đây, HTTPS có thể tốn kém hoặc tốn kém khi triển khai. Đó là lý do HTTPS thường chỉ được dùng trên các trang thanh toán hoặc nguồn gốc đặc biệt bảo mật; nhưng các chứng chỉ được cung cấp miễn phí, những điểm cải tiến về tiêu chuẩn và sự gia tăng nhanh chóng của các trình duyệt đã loại bỏ được tất cả những trở ngại đó.

Nên

  • Bật HTTPS trên máy chủ của bạn cho mọi thứ (bất kể bạn chọn phương pháp nào).
  • Bạn nên dùng một proxy trước máy chủ của mình, chẳng hạn như Cloudflare (httpsiseasy.com/ giải thích quy trình này).
  • Let's Encrypt sẽ hướng dẫn bạn thực hiện quy trình tạo chứng chỉ SSL Let's Encrypt của riêng mình.
  • Bạn cũng có thể trực tiếp sử dụng OpenSSL để tạo chứng chỉ của riêng bạn và ký chứng chỉ đó bằng tổ chức phát hành chứng chỉ (CA) mà bạn chọn (Bật HTTPS giải thích chi tiết cách thực hiện).

Phương pháp bạn chọn phụ thuộc vào sự đánh đổi của hoạt động kinh doanh. Việc thiết lập kết nối SSL cho một bên thứ ba là cách dễ dàng nhất, ngoài ra còn đi kèm với các lợi ích khác như cân bằng tải, lưu vào bộ nhớ đệm và phân tích. Tuy nhiên, điều này cũng đi kèm với việc nhường lại một số quyền kiểm soát cho bên thứ ba đó và sự phụ thuộc không thể tránh khỏi các dịch vụ của họ (và việc thanh toán có thể có, tuỳ thuộc vào dịch vụ bạn sử dụng và mức lưu lượng truy cập của bạn).

Quy trình SSL trước đây thường tạo và có chữ ký của CA nhưng việc sử dụng Let's Encrypt có thể dễ dàng hơn nếu được nhà cung cấp của bạn hỗ trợ hoặc nếu nhóm máy chủ của bạn đủ thành thạo về mặt kỹ thuật và việc này lại miễn phí. Nhà cung cấp của bạn cũng thường cung cấp SSL dưới dạng dịch vụ nếu bạn đang sử dụng dịch vụ ở cấp cao hơn so với dịch vụ lưu trữ trên đám mây, vì vậy, bạn nên kiểm tra.

Tại sao nên

Bảo mật là một phần trong câu chuyện về quyền riêng tư của bạn: việc có thể chứng minh rằng bạn giữ an toàn cho dữ liệu người dùng khỏi sự can thiệp sẽ giúp tạo dựng lòng tin. Nếu bạn không sử dụng HTTPS, thì trang web của bạn cũng bị trình duyệt gắn cờ là "không an toàn" (và trong một thời gian dài). Các API JavaScript hiện tại thường chỉ được cung cấp cho các trang HTTPS ("nguồn gốc bảo mật"). Việc này cũng giúp bảo vệ người dùng khỏi việc nhà cung cấp dịch vụ Internet (ISP) sử dụng trang web của họ. Đây chắc chắn là một phương pháp hay nhất; không có lý do gì để không sử dụng HTTPS cho các trang web ngay bây giờ.

Cách trình duyệt trình bày một trang HTTP (không an toàn)