“Dữ liệu của bạn được mã hóa” là một trong những lời tuyên bố phổ biến nhất mà một sản phẩm chú trọng quyền riêng tư đưa ra, và cũng là một trong những lời tuyên bố ít hữu ích nhất nếu đứng một mình. Mã hóa mô tả một cơ chế: biến dữ liệu có thể đọc được thành dữ liệu không thể đọc được bằng một chiếc chìa khóa. Nó không nói gì về việc ai là người giữ chiếc chìa khóa đó về sau, và cái chi tiết đó quyết định gần như mọi thứ về việc thực sự thì ai là người bị nhốt ở bên ngoài. Zero-knowledge (không kiến thức) là thuật ngữ dùng để chỉ việc làm cho chi tiết đó trở nên đúng đắn.
Ý tưởng cốt lõi
Mã hóa zero-knowledge có nghĩa là công ty vận hành dịch vụ không bao giờ có quyền truy cập vào khóa cần thiết để giải mã dữ liệu của bạn. Không phải là “lựa chọn không nhìn vào”, mà là về mặt cấu trúc không thể làm được, bởi vì khóa không bao giờ rời khỏi thiết bị của bạn và ngay từ đầu đã không bao giờ được truyền tới máy chủ của họ. Nó thường được dẫn xuất từ một thứ gì đó mà chỉ bạn biết: mật khẩu, mã PIN, hoặc mẫu vẽ, được chạy qua một quy trình dẫn xuất khóa ngay tại máy cục bộ (local), và chỉ có kết quả, văn bản đã được mã hóa, là từng thoát khỏi sự kiểm soát của bạn.
Điều này rất quan trọng bởi vì “chúng tôi mã hóa dữ liệu của bạn” và “chúng tôi không thể đọc được dữ liệu của bạn” là hai tuyên bố rất khác nhau, và hầu hết các sản phẩm chỉ thực hiện được vế đầu tiên. Một công ty có thể mã hóa các tệp trên máy chủ của họ bằng các thuật toán mạnh mẽ như AES-256 nhưng đồng thời chính họ vẫn nắm giữ khóa giải mã, điều đó có nghĩa là việc mã hóa chỉ giúp ngăn chặn các kẻ tấn công từ bên ngoài nhưng không làm gì để cản bước công ty đó, một vụ vi phạm của công ty đó, hoặc một lệnh pháp lý tống đạt đến công ty đó. Zero-knowledge lấp đầy khoảng trống đó một cách chuyên biệt.
Zero-knowledge vs. mã hóa đầu cuối (End-to-End Encryption)
Hai thuật ngữ này hay được sử dụng thay thế cho nhau, nhưng chúng không hẳn là cùng một mức độ đảm bảo. Mã hóa đầu cuối thường đề cập đến việc dữ liệu được mã hóa trong khi nó di chuyển, vì vậy một máy chủ đóng vai trò chuyển tiếp sẽ không thể đọc được nó trong quá trình truyền tải. Đó là một sự bảo vệ thực sự, nhưng nó không nói lên điều gì về những gì sẽ xảy ra sau khi dữ liệu tới nơi; rất nhiều hệ thống mã hóa đầu cuối vẫn thực hiện giải mã khi dữ liệu tới nơi và lưu trữ văn bản gốc (plaintext), hoặc lưu trữ một bản sao ký quỹ (escrowed copy) của khóa đó ở phía máy chủ.
Zero-knowledge là phiên bản mạnh mẽ hơn, trọn vẹn hơn: nhà cung cấp không bao giờ có khóa, cho dù dữ liệu đang di chuyển hay đang nằm yên. Một hệ thống zero-knowledge chân chính sẽ mã hóa dữ liệu ngay cả ở trạng thái nghỉ, nghĩa là các tệp nằm trong bộ lưu trữ vẫn không thể bị đọc được đối với nhà cung cấp vô thời hạn, chứ không chỉ trong quá trình tải lên.
Những gì nó bảo vệ bạn khỏi
Giá trị của thiết kế zero-knowledge thể hiện rõ ràng trong các tình huống mà một hệ thống chỉ-có-mã-hóa thông thường sẽ thất bại:
- Một vụ vi phạm máy chủ (server breach). Nếu một kẻ tấn công xâm nhập vào máy chủ của một công ty và công ty đó nắm giữ khóa của người dùng, kẻ tấn công có khả năng sẽ lấy được con đường để giải mã dữ liệu của người dùng luôn. Nếu công ty chưa bao giờ nắm giữ các khóa này, vụ rò rỉ chỉ thu về được những đoạn văn bản mã hóa không thể đọc.
- Một yêu cầu pháp lý. Một lệnh triệu tập hoặc phán quyết của tòa án chỉ có thể ép buộc một công ty giao nộp những gì nó thực sự có. Một nhà cung cấp zero-knowledge có thể bàn giao các tệp đã mã hóa và thành thật nói rằng họ cũng không thể mở chúng ra, bởi vì họ không thể.
- Một kẻ nội gián (insider). Một nhân viên có quyền truy cập máy chủ trong một hệ thống không-phải-zero-knowledge có thể có khả năng tiếp cận trực tiếp dữ liệu người dùng. Trong một hệ thống zero-knowledge, chẳng có thứ gì trên máy chủ để mà tiếp cận cả.
Không điều nào trong số này đòi hỏi bạn phải tin tưởng vào ý định của công ty. Nó là một thuộc tính của hệ thống kiến trúc, đó chính xác là lý do tại sao nó đáng giá hơn nhiều so với một lời hứa trong chính sách bảo mật.
Làm thế nào để biết một lời tuyên bố có phải là thật hay không
Có một bài kiểm tra thực tế có thể cắt ngang hầu hết những ngôn từ tiếp thị: hãy tìm kiếm luồng “quên mật khẩu” hoặc khôi phục tài khoản nhằm khôi phục lại quyền truy cập vào dữ liệu đã mã hóa của bạn. Nếu một công ty có thể thiết lập lại mật khẩu của bạn và giúp bạn quay trở lại với các tệp của mình, họ nắm giữ một mảnh nào đó của khóa, bất kể họ có gọi sản phẩm đó là zero-knowledge hay không. Một sản phẩm zero-knowledge đích thực không thể làm được điều này. Nếu mật khẩu hoặc mã PIN của bạn đã mất và không có một phương pháp khôi phục nào được tạo riêng lẻ và lưu giữ trên thiết bị, dữ liệu của bạn cũng sẽ biến mất theo thiết kế, bởi vì đó cũng chính là thuộc tính giúp ngăn chặn tất cả những kẻ khác.
Đó cũng là lý do tại sao các sản phẩm zero-knowledge phải dựa vào những thứ như cụm từ khôi phục được tạo cục bộ (local) thay vì một email đặt lại mật khẩu. Cụm từ khôi phục cũng không bao giờ chạm tới máy chủ; nó chỉ là một bản sao ngoại tuyến thứ hai của các chất liệu cấu thành khóa mã hóa mà chỉ có bạn nắm giữ.
Cách Vaultine áp dụng điều này
Khóa mã hóa két của Vaultine xuất phát từ mã PIN hoặc mẫu vẽ của riêng bạn, được dẫn xuất và sử dụng hoàn toàn trên thiết bị của bạn, không bao giờ được gửi đến bất kỳ máy chủ nào (xem bài Tại sao một ứng dụng két không có tài khoản lại thực sự an toàn hơn để biết cách thức điều đó cũng đồng thời loại bỏ nhu cầu về một tài khoản ngay từ ban đầu). Mọi tệp đều được mã hóa bằng khóa AES-256 riêng của nó trước khi chạm vào bộ lưu trữ, và tính năng sao lưu Dropbox tùy chọn sẽ mã hóa các tệp trên thiết bị trước tiên, vì vậy những gì đến được Dropbox đã là văn bản mã hóa, bất kể việc mã hóa riêng của Dropbox có tốt hay không (xem bài Tính năng mã hóa của Dropbox có đủ cho các tệp nhạy cảm không? cho câu hỏi riêng biệt đó).
Việc làm mất mã PIN và không lưu lại cụm từ khôi phục có nghĩa là Vaultine không thể lấy lại các tệp cho bạn. Đó không phải là một sự thiếu hụt trong hỗ trợ; nó là hệ quả trực tiếp, không thể tránh khỏi của chính thiết kế nhằm ngăn chặn một vụ rò rỉ, một lệnh triệu tập, hoặc một nhân viên của chúng tôi tiếp cận chúng.
Phiên bản ngắn gọn
“Được mã hóa” (Encrypted) cho bạn biết rằng có tồn tại một ổ khóa. “Zero-knowledge” cho bạn biết ai là người KHÔNG có chìa khóa. Hai tuyên bố này nghe có vẻ giống nhau và hầu như được sử dụng thay thế cho nhau trong các văn bản tiếp thị, nhưng chỉ một trong số chúng thực sự quyết định liệu chính công ty đó có bị nhốt bên ngoài dữ liệu của bạn hay không. Hãy kiểm tra xem có luồng thiết lập lại mật khẩu hay không trước khi tin vào bất kỳ điều nào trong số chúng.
Khóa mã hóa của Vaultine không bao giờ rời khỏi thiết bị của bạn. Bắt đầu với 10 tệp miễn phí tại vaultine.app.



