Surveillance
Self-Defense

Những điều cần biết về mã hóa?

Cập nhật lần cuối: 
24-11-2018
This page was translated from English. The English version may be more up-to-date.

Bạn có lẻ từng nghe đến từ “mã hóa” được dùng trong nhiều tình huống và liên hệ đến các từ ngữ khác. Một cách tổng quát mã hóa là quy trình toán học để biến một tin nhắn sang dạng không đọc được ngoại trừ ai có chìa khóa để “giải mã” nó trở lại dạng đọc được.

Xuyên suốt lịch sử, con người đã sử dụng mã hóa để gửi tin nhắn cho nhau với hy vọng rằng tin nhắn đó không bị đọc bởi ai ngoài người nhận tin nhắn. Ngày nay, chúng ta có máy tính với khả năng mã hóa. Công nghệ mã hóa kỹ thuật số đã không còn chỉ bảo mật tin nhắn mà mở rộng ra cho các mục đíc khác; ngày nay, mã hóa có thể sử dụng cho những mục đích tinh vi hơn, ví dụ như để xác nhận người gửi tin nhắn.

Mã hóa là công nghệ tốt nhất để bảo vệ thông tin phòng chống kẻ gian, chính quyền, và công ty cung cấp dịch vụ, và mã hóa đã phát triển tới mức mà gần như không thể bẻ khóa đuợc - nếu dùng cho đúng cách.

Trong cẩm nang này, chúng ta sẽ xem xét hai cách áp dụng mã hóa: bảo mật dữ liệu nằm và dữ liệu đang vận chuyển.

 

Mã hóa dữ liệu nằm Anchor link

Dữ liệu “nằm” (at rest) là dữ liệu được lưu trữ, thí dụ như trong điện thoại, máy tính xách tay, máy chủ, hoặc đĩa cứng ngoài. Khi dữ liệu trong dạng nằm, chúng không di chuyển từ nơi này sang nơi khác.

Một thí dụ của hình thức mã hóa bảo vệ dữ liệu nằm là mã hóa “toàn bộ ổ đĩa” (có khi còn được gọi là “mã hóa thiết bị”). Mã hóa toàn bộ ổ đĩa sẽ mã hóa tất cả thông tin dữ liệu trong thiết bị và bảo vệ chúng bằng một cụm từ mật khẩu hoặc bằng một phương pháp xác minh nào khác. Trên điện thoại hoặc máy tính xách tay, việc này thông thường trông giống như việc khóa màn hình, đòi hỏi phải có số mật mã, mật khẩu, hoặc vân tay. Tuy nhiên, khóa thiết bị (tức là cần phải có mật khẩu để “mở khóa” ) không luôn luôn có nghĩa là thiết bị được mã hóa toàn bộ ổ đĩa.

     
Điện thoại thông minh và máy tính xách tay có màn hình “khóa” bằng mật khẩu.

Bạn nhớ kiểm lại cách thức mà hệ điều hành bật mở và quản trị mã hoá toàn bộ ổ đĩa. Một số hệ điều hành được mã hóa toàn bộ ổ đĩa theo mặc định, trong khi đó một số khác thì không. Điều đó có nghĩa là người khác có thể truy cập dữ liệu trong thiết bị di động của bạn bằng cách bẻ khóa của thiết bị, mà không phải bẻ khóa mã hóa vì thiết bị không được mã hóa. Một số hệ thống lưu trữ văn bản thường chưa mã hóa trong bộ nhớ (RAM), ngay cả khi bạn dùng mã hóa toàn bộ ổ đĩa. RAM là nơi lưu trữ tạm thời, nghĩa là sau khi tắt nguồn thiết bị, một thời gian ngắn sau đó bộ nhớ không thể đọc được nữa, tuy nhiên một đối thủ tinh vi có thể tìm cách cold boot attack và có thể lấy lại được nội dung trong RAM.

Mã hóa toàn bộ ổ đĩa có thể bảo vệ thiết bị phòng chống những người có thể cầm lấy được thiết bị, chẳng hạn như bạn cùng phòng, đồng nghiệp, chủ nhân, viên chức nhà trường, người trong nhà, đối tác, công an, hay những nhân viên công lực khác. Nó còn bảo vệ dữ liệu trong thiết bị trong trường hợp bị đánh cắp hay thất lạc, chẳng hạn như khi bạn để quên điện thoại trên xe buýt hay trong quán ăn.

Còn có một số cách khác để mã hóa dữ liệu nằm. Một cách, gọi là “mã hóa tập tin”, chỉ mã hóa một số tập tin nào đó trong máy tính hoặc trong thiết bị lưu trữ. Một cách khác là “mã hóa đĩa” (drive encryption hoặc disk encryption): cách này mã hóa tất cả dữ liệu trên một đĩa riêng biệt nào đó của thiết bị.

Bạn có thể kết hợp những hình thức mã hóa dữ liệu nằm này. Lấy thí dụ, bạn muốn bảo vệ các thông tin nhạy cảm về hồ sơ bệnh lý. Bạn có thể dùng mã hóa tập tin để mã hóa riêng một tài liệu bệnh lý trong thiết bị. Sau đó bạn có thể dùng mã hóa đĩa để mã hóa một phần thiết bị đang chứa các thông tin bệnh lý. Cuối cùng, nếu bạn đã mở chức năng mã hóa toàn bộ ổ đĩa cho thiết bị, thì mọi thứ—toàn bộ thông tin bệnh lý cũng như các tập tin khác, kể cả tập tin của hệ điều hành máy tính—được mã hóa.

Trong trang web Surveillance Self-Defense (Tự Vệ Chống Theo Dõi), chúng tôi có soạn một số cẩm nang kích hoạt mã hóa cho các thiết bị. Mặc dầu bạn có thể tìm thấy nhiều tài liệu chi tiết về các tùy chọn của mã hóa dữ liệu trên mạng (và trong trang SSD!), lưu ý là những tùy chọn thay đổi khá thường và các bản hướng dẫn có thể lỗi thời khá nhanh.

 

Mã hóa dữ liệu đang vận chuyển Anchor link

Biểu đồ cho thấy dữ liệu chưa được mã hóa đang vận chuyển—thường là thiết đặt mặc định của các nhà cung cấp dịch vụ mạng. Bên trái, điện thoại gửi tin nhắn không có mã hóa, màu xanh đến một điện thoại khác bên tay phải. Dọc đường vận chuyển, trạm phủ sóng chuyển tin nhắn đến máy chủ của nhà mạng di động rồi đến một trạm phủ sóng khác, mà ai cũng thấy được tin nhắn “Hello” không có mã hóa. Tất cả máy tính và mạng truyền tin nhắn này đều có thể đọc được. Cuối cùng điện thoại bên đầu giây kia nhận tin nhắn “Hello”.

Dữ liệu “đang vận chuyển” là thông tin đi ngang qua mạng từ một nơi này đến nơi khác. Thí dụ như khi bạn gửi tin nhắn dùng ứng dụng nhắn tin, tin nhắn đó đi từ thiết bị của bạn, đến máy chủ của ứng dụng, rồi đến thiết bị của người nhận. Một thí dụ khác là việc lướt mạng: khi bạn xem một trang web, dữ liệu từ trang đó đi từ máy chủ đến trình duyệt của bạn.

Một số ứng dụng phổ thông có những tính năng có vẻ như để bảo vệ tin nhắn, chẳng hạn như tính năng tin nhắn biến mất. Tuy nhiên cảm nhận có bảo mật không có nghĩa là thật sự có bảo mật. Các máy tính truyền tin nhắn của bạn qua lại có thể thấy được nội dung của tin nhắn.

Điều quan trọng là kiểm tra xem cuộc chuyện trò giữa bạn và người bên kia có mã hóa không—và nó được mã hóa theo phương thức tầng chuyển tải hay là mã hóa nối đầu.

Có hai cách để mã hoá dữ liệu đang vận chuyển: mã hóa tầng chuyển tảimã hóa nối đầu. Phương thức mã hóa nào được nhà cung cấp dịch vụ sử dụng là yếu tố quan trọng để quyết định xem dịch vụ nào phù hợp với nhu cầu của bạn. Thí dụ sau đây minh họa sự khác biệt giữa mã hóa tầng chuyển tải và mã hóa nối đầu.

 

Mã hóa tầng chuyển tải Anchor link

Biểu đồ cho thấy mã hóa của tầng chuyển tải. Bên trái, điện thoại gửi tin nhắn không có mã hóa, màu xanh: “Hello”. Thông tin này được mã hóa, rồi chuyển qua cho trạm phủ sóng. Ở giữa, máy chủ giải mã tin nhắn, rồi mã hóa lại trước khi chuyển qua cho trạm phủ sóng kế tiếp. Cuối cùng, điện thoại bên kia đầu giây nhận được tin nhắn có mã hóa, rồi giải mã để hiển thị ra “Hello”.

Mã hóa tầng chuyển tải, còn được gọi là bảo mật tầng chuyển tải (TLS, viết tắt của transport layer security), bảo mật tin nhắn khi chúng được chuyển đi từ thiết bị bạn đến máy chủ của ứng dụng rồi từ đó đến thiết bị của người nhận. Ở giữa, nhà cung cấp dịch vụ tin nhắn—hoặc trang web bạn đang xem, hoặc ứng dụng bạn đang dùng—có thể xem thấy nội dung không mã hóa của tin nhắn. Cũng vì tin nhắn bạn gửi có thể được xem (và thường được lưu trữ) bởi máy chủ của công ty, đây là điểm yếu của nó nếu cơ quan công lực đòi xem hoặc bị lộ ra nếu máy chủ bị xâm nhập.

Thí dụ của mã hóa tầng chuyển tải: HTTPS

Bạn có để ý thấy ổ khóa màu xanh và chữ “https://” bên cạnh địa chỉ trang web ssd.eff.org trong ô địa chỉ của trình duyệt? HTTPS là một thí dụ của việc mã hóa tầng chuyển tải mà chúng ta thường gặp khi lướt mạng. Nó bảo mật hơn là giao thức HTTP không có mã hóa. Tại sao thế? Vì máy chủ của trang web HTTPS bạn đang xem có thể xem được dữ liệu bạn nhập vào trong trang (thí dụ như: tin nhắn, tìm kiếm, số thẻ tín dụng, và tên đăng nhập) tuy nhiên những thông tin này được bảo vệ không bị kẻ khác xem lén trong cùng mạng lưới.

Nếu ai đó đang rình rập trong mạng lưới và tìm cách xem bạn đang xem các trang web nào, thì kết nối dạng HTTP không bảo vệ được bạn. Trong khi đó, kết nối HTTPS dấu đi các chi tiết về trang web bạn đang xem—tức là tất cả thông tin phía sau dấu “/”. Lấy thí dụ, nếu bạn dùng HTTPS để kết nối vào trang “https://ssd.eff.org/en/module/what-encryption” thì kẻ rình rập trong mạng lưới chỉ thấy “https://ssd.eff.org”.

Mạng internet đang trong tiến trình chuyển các trang web sang dạng HTTPS. Lý do là vì HTTP không an toàn và HTTPS bảo mật hơn theo mặc định. Trang web nào dùng HTTP sẽ gặp mối nguy bị xem lén, bị nhét nội dung khác vào, cookie bị đánh cắp, tên đăng nhập và mật khẩu bị đánh cắp, bị kiểm duyệt và nhiều vấn đề khác.

Chúng tôi đề nghị dùng phần mở rộng cho trình duyệt của EFF là HTTPS Everywhere để được bảo vệ tối đa với giao thức HTTPS. HTTPS Everywhere bảo đảm là nếu có trang web nào mà chúng tôi biết là có dùng giao thức HTTPS cũng như HTTP, thì bạn sẽ luôn dùng phiên bản HTTPS an toàn hơn cho trang web đó.

Khi một dịch vụ dùng HTTPS không có nghĩa là dịch vụ đó sẽ bảo vệ quyền riêng tư của người dùng khi vào xem trang web. Lấy thí dụ, một trang web dùng HTTPS vẫn dùng cookies để theo dõi hoặc chứa mã độc trong trang.

Thí dụ của mã hóa tầng chuyển tải: VPN

Một mạng riêng ảo (VPN viết tắt cho Virtual Private Network) là một thí dụ khác của việc mã hóa tầng chuyển tải. Nếu không có VPN, lượng giao thông của bạn sẽ đi ngang qua đường kết nối của nhà mạng. Với VPN, lượng giao thông vẫn đi ngang qua kết nối của nhà mạng, nhưng sẽ được mã hóa giữa bạn và dịch vụ VPN. Nếu ai đó đang rình rập trong mạng nội bộ và muốn biết bạn đang xem trang web nào, họ sẽ chỉ thấy bạn kết nối với VPN, nhưng không biết bạn xem trang web nào. Nhà mạng thì có thể dò biết dịch vụ VPN bạn đang dùng.

Mặc dầu dùng VPN che dấu lượng giao thông của bạn không cho nhà mạng thấy, nhưng công ty VPN thì sẽ thấy hết hết. Dịch vụ VPN có thể thấy, lưu trữ và chỉnh sửa lượng giao thông của bạn. Khi dùng VPN bạn đang chuyển sự tin cậy từ nhà mạng qua cho VPN, thành ra phải bảo đảm là dịch vụ VPN thật sự bảo vệ dữ liệu của bạn.

Để xem hướng dẫn cách chọn VPN cho phù hợp với nhu cầu của bạn, đọc cẩm nang của SSD về VPNs.

 

Mã hóa nối đầu Anchor link

Biểu đồ cho thấy mã hóa nối đầu. Bên trái, điện thoại gửi tin nhắn chưa mã hóa, màu xanh: “Hello”. Tin nhắn này được mã hóa, rồi chuyển đến trạm phủ sóng và máy chủ. Điện thoại bên đầu kia nhận được tin nhắn có mã hóa, và giải mã để ra trở lại chữ “Hello”. Khác với lối mã hóa tầng chuyển tải, nhà mạng của bạn không thể giải mã tin nhắn được; chỉ có hai đầu (thiết bị gửi và nhận tin nhắn mã hóa) mới có chìa khóa để giải mã tin nhắn.  

Mã hóa nối đầu bảo vệ tin nhắn trên đường chuyển tải từ lúc gửi đến lúc nhận. Nó bảo đảm là thông tin được biến thành nội dung bảo mật bởi người gửi (“đầu” thứ nhất) và chỉ được giải mã duy nhất bởi người nhận (“đầu” thứ nhì). Không có ai khác, kể cả ứng dụng đang dùng, có thể “nghe lén” để biết nội dung trao đổi của bạn.

Truy cập các tin nhắn được mã hóa nối đầu trong một ứng dụng trên thiết bị của bạn có nghĩa là chính công ty ứng dụng cũng không đọc được. Đây là một đặc tính cốt lõi của một phương pháp mã hóa tốt: ngay cả người thiết kế và triển khai nó cũng tự họ không thể bẻ gảy được.

Trong trang Tự Vệ Chống Theo Dõi, chúng tôi có những cẩm nang chỉ dẫn cách dùng các công cụ mã hóa nối đầu trong cẩm nang Liên lạc với người khác

 

Mã Hóa Tầng Chuyển Tải hay Mã Hóa Nối Đầu? Anchor link

Những câu hỏi quan trọng đặt ra để quyết định là bạn cần mã hóa tầng chuyển tải hay mã hóa nối đầu: Bạn tin tưởng vào ứng dụng hay dịch vụ đang dùng? Bạn có tin tưởng vào hạ tầng cơ sở kỹ thuật? Còn chính sách bảo vệ riêng tư của dịch vụ đối với yêu cầu của cơ quan công lực thì sao?

Nếu bạn trả lời “không” cho bất cứ câu hỏi này, thì bạn cần mã hóa nối đầu. Nếu bạn trả lời “có” cho những câu này, thì một dịch vụ chỉ hỗ trợ mã hóa tầng chuyển tải có lẻ cũng đủ—nhưng tốt hơn hết thì dùng những dịch vụ nào có hỗ trợ mã hóa nối đầu nếu có thể được.

 

Chúng tôi thực hiện đoạn hoạt họa sau đây để minh hoạ cách làm việc của mã hóa nối đầu và mã hóa tầng chuyển tải cho dữ liệu đang vận chuyển. Bên trái là một ứng dụng tin nhắn dùng mã hóa nối đầu (một hộp chat dùng giao thức tin nhắn mã hóa OTR tức Off-the-Record). Bên phải là một hộp chát dùng mã hóa tầng chuyển tải (dùng giao thức HTTPS của trang Google Hangout).

Trong hình GIF, người dùng chính gõ vào hộp chat của Google Hangouts:

“Xin chào! Nội dung này không được mã hóa nối đầu. Google có thể xem được cuộc trò chuyện của chúng ta.”

Người dùng này cũng mở một hộp chat OTR và chọn cài đặt “private conversation” (trò chuyện riêng tư). Trong hộp chat, có ghi hàng chữ:

“Đang tìm cách khởi động cuộc trò chuyện riêng tư với [tài khoản gmail]. Trò chuyện riêng tư với [tài khoản gmail] đã bắt đầu. Tuy nhiên, danh tính của họ chưa được phối kiểm.”

Cùng lúc, trong hộp chat Google Hangouts, các dòng chữ mã hóa vô nghĩa đang được trao đổi, cho thấy là người dùng đang sử dụng giao thức mã hóa nối đầu Off-the-Record (OTR). Tất cả tin nhắn đi ngang qua hộp chat OTR cũng hiện lên trong hộp chat Google Hangouts, tuy nhiên, thay vì trong dạng đọc được, chỉ thấy dòng chữ vô nghĩa. Người dùng bên kia điền vào tin nhắn trong ứng dụng OTR:

“Dòng chữ này nhìn thấy vô nghĩa đối với người khác.”

Người dùng chính viết:

“Đúng vậy, chỉ thấy vô nghĩa”

Người dùng bên kia gửi một biểu tượng cười.

 

Mã hóa trong lúc vận chuyển không bảo đảm điều gì Anchor link

Mã hoá không là liều thuốc trị bá bệnh. Ngay cả khi bạn gửi tin nhắn có mã hóa, tin nhắn sẽ được người mà bạn đang liên lạc giải mã. Nếu hai đầu (tức là thiết bị mà đôi bên đang dùng để liên lạc) bị xâm nhập, thông tin có thể bị thất thoát. Ngoài ra, người mà bạn đang liên lạc có thể chụp lại màn hình, hoặc giữ lại thông tin bạn gửi.

Nếu bạn để tự động sao lưu các cuộc trò chuyện mã hóa lên “đám mây” (tức các máy tính khác), cần lưu ý là dữ liệu sao lưu cũng được mã hóa. Để bảo đảm là cuộc trò chuyện được mã hóa trong lúc vận chuyển cũng như khi được lưu trữ.

Nếu bạn mã hóa dữ liệu lúc vận chuyển, nó sẽ bảo vệ nội dung thông tin liên lạc, nhưng sẽ không mã hóa siêu dữ liệu. Lấy thí dụ, bạn dùng mã hóa để biến đổi các tin nhắn giữa bạn và người quen thành những từ ngữ vô nghĩa, nhưng không dấu được:

  • bạn và người quen đang liên lạc với nhau.
  • bạn đang dùng mã hóa để liên lạc
  • những dữ kiện khác về thông tin liên lạc của bạn như địa điểm, thời gian và thời hạn của cuộc liên lạc.

Những ai có mối quan tâm lớn về chuyện bị theo dõi (thí dụ như quan tâm bị giám sát thường trực trong mạng lưới) có thể gặp rủi ro nếu họ chỉ dùng mã hóa vào những lúc nhạy cảm hoặc cho một số hoạt động nào đó. Tại sao thế? Nếu bạn chỉ dùng mã hóa đôi khi thì sẽ lộ ra mối liên hệ giữa siêu dữ liệu và các thời điểm quan trọng. Do đó, dùng mã hóa càng nhiều càng tốt, ngay cả cho những sinh hoạt thường nhật.

Ngoài ra, nếu bạn là người duy nhất dùng mã hóa trong một mạng lưới, siêu dữ liệu này sẽ gây ra nghi ngờ. Đây là lý do tại sao giới cổ vũ cho mã hóa khuyến khích mọi người dùng các công cụ mã hóa khi có thể được: nhằm để bình thường hóa việc sử dụng mã hóa cho những ai có nhu cầu thật sự.

 

Tổng kết lại Anchor link

Khi kết hợp cả hai việc mã hóa dữ liệu được vận chuyển và dữ liệu nằm sẽ giúp bạn được bảo mật toàn diện hơn là chỉ dùng một cách mã hóa. Đây là điều mà giới bảo mật thông tin gọi là “phòng thủ sâu xa”. Khi dùng nhiều phương thức để bảo vệ dữ liệu, bạn sẽ đạt được tầng bảo vệ cao.

Lấy thí dụ, nếu bạn gửi tin nhắn không có mã hóa (tức không mã hóa dữ liệu được vận chuyển) từ một thiết bị di động có mã hóa (mã hóa dữ liệu nằm của bạn), các tin nhắn đó sẽ có thể gặp rủi ro bị chặn bắt và nghe lén bởi chính quyền, nhà mạng, hoặc đối thủ giỏi kỹ thuật. Tuy nhiên, dữ liệu trong thiết bị di động của bạn thì an toàn không bị ai đó mở ra xem nếu họ không có khóa để vào máy.

Ngược lại, nếu bạn gửi một tin nhắn có mã hóa nối đầu (tức là mã hóa dữ liệu được vận chuyển) trên một thiết bị không có mã hóa (không mã hóa dữ liệu nằm của bạn), các tin nhắn đó sẽ không bị ai đọc lén được khi di chuyển qua mạng. Tuy nhiên, nếu ai đó có được thiết bị của bạn thì họ có thể đọc được các tin nhắn lưu trong máy.

Với các thí dụ vừa nêu, mã hóa dữ liệu cả khi trên đường chuyển tải qua mạng và khi được lưu trữ trong máy là tốt nhất để bảo vệ bạn không gặp nhiều chuyện rủi ro.

Để đi sâu vào cách dùng mã hóa, xin đọc tiếp cẩm nang Các khái niệm căn bản của mã hóa.

JavaScript license information