Mã hóa không kiến thức là gì? Hướng dẫn đơn giản

Mã hóa không kiến thức là gì? Hướng dẫn đơn giản

Mã hóa không kiến thức có nghĩa là nhà cung cấp không thể truy cập dữ liệu của bạn.

Mã hóa không kiến thức là kiến trúc mật mã học nơi nhà cung cấp dịch vụ không thể truy cập dữ liệu người dùng vì khóa mã hóa được tạo ra và lưu trữ chỉ trên thiết bị của người dùng và không bao giờ được truyền đến máy chủ của nhà cung cấp. Không giống như mã hóa đám mây thông thường nơi nhà cung cấp giữ các khóa, mã hóa không kiến thức có nghĩa là ngay cả với lệnh của tòa án, vi phạm dữ liệu hay nhân viên bất hảo, nhà cung cấp cũng không có gì để bàn giao. Hướng dẫn quản lý khóa của NIST (SP 800-57) thiết lập nguyên tắc rằng quyền giám sát khóa xác định quyền truy cập dữ liệu -- mã hóa không kiến thức đưa điều này đến kết luận logic của nó.

Cách mã hóa không kiến thức hoạt động

Ví dụ đơn giản nhất: một két an toàn khách sạn nơi chỉ bạn đặt mã, và khách sạn không bao giờ biết mã đó. Nếu bạn quên mã, khách sạn không thể mở két cho bạn. Đó không phải là lỗi trong thiết kế. Đó chính là thiết kế.

Về mặt kỹ thuật, mã hóa không kiến thức hoạt động qua ba bước:

  1. Dẫn xuất khóa trên thiết bị. Người dùng cung cấp thông tin xác thực (mật khẩu, cụm từ mật khẩu, hoặc hình vẽ). Một hàm dẫn xuất khóa (thường là PBKDF2 hoặc Argon2) kết hợp thông tin xác thực này với một muối mật mã duy nhất để tạo ra khóa mã hóa. Điều này xảy ra hoàn toàn trên thiết bị của người dùng.

  2. Mã hóa trước khi truyền. Tất cả dữ liệu được mã hóa trên thiết bị bằng khóa đã dẫn xuất trước khi rời khỏi thiết bị để lưu trữ đám mây hoặc sao lưu. Đầu ra đã mã hóa (bản mã) là thứ được tải lên.

  3. Nhà cung cấp không bao giờ thấy khóa. Khóa mã hóa chỉ tồn tại trong bộ nhớ của thiết bị trong khi đang sử dụng. Nó không bao giờ được truyền đến máy chủ của nhà cung cấp. Nhà cung cấp lưu trữ các khối dữ liệu đã mã hóa không thể phân biệt với dữ liệu ngẫu nhiên.

Ràng buộc quan trọng: nếu người dùng mất thông tin xác thực và không có cụm từ khôi phục, dữ liệu không thể truy cập vĩnh viễn. Không có quy trình "quên mật khẩu" nào hoạt động nếu không có cơ chế khôi phục được lưu riêng. Nếu một dịch vụ cung cấp đặt lại mật khẩu qua email và dữ liệu của bạn xuất hiện lại, dịch vụ đó không sử dụng mã hóa không kiến thức. Họ giữ khóa của bạn.

Mã hóa không kiến thức so với các loại mã hóa khác

Thuật ngữ "mã hóa" xuất hiện trong tài liệu tiếp thị của hầu hết mọi dịch vụ đám mây. Sự khác biệt giữa các loại là đáng kể.

Loại Ai giữ khóa Nhà cung cấp có thể đọc dữ liệu Tồn tại sau vi phạm nhà cung cấp Ví dụ
Không mã hóa Không áp dụng Không Dropbox (gói tiêu chuẩn)
Mã hóa khi truyền (TLS) Nhà cung cấp Có (khi lưu trữ trên máy chủ của họ) Không Google Photos
Mã hóa phía máy chủ khi lưu trữ Nhà cung cấp Có (họ giữ khóa giải mã) Một phần (tùy thuộc phạm vi vi phạm) iCloud (tiêu chuẩn)
Mã hóa E2E do nhà cung cấp quản lý Nhà cung cấp tạo, người dùng lưu trữ Về mặt kỹ thuật không, nhưng nhà cung cấp đã có quyền truy cập khi tạo khóa Một phần iCloud Advanced Data Protection
Mã hóa không kiến thức Chỉ người dùng (dẫn xuất trên thiết bị) Không. Không thể về mặt toán học. Có. Các khối mã hóa vô dụng nếu không có khóa của người dùng. Signal, Proton Mail, Vaultaire

Sự khác biệt giữa "mã hóa khi lưu trữ" và "mã hóa không kiến thức" là điều bị nhầm lẫn phổ biến nhất. Với mã hóa khi lưu trữ, nhà cung cấp mã hóa dữ liệu của bạn trên máy chủ của họ bằng các khóa họ kiểm soát. Điều này bảo vệ chống lại việc trộm cắp vật lý phần cứng máy chủ. Nó không bảo vệ chống lại nhà cung cấp đọc dữ liệu của bạn, trát tòa án về dữ liệu và khóa, hoặc mối đe dọa từ nội bộ. Nhà cung cấp có khả năng giải mã.

Với mã hóa không kiến thức, nhà cung cấp không bao giờ có khả năng giải mã. Dữ liệu đã mã hóa trên máy chủ của họ cũng mờ với họ như với bất kỳ kẻ tấn công bên ngoài nào.

Tại sao mã hóa không kiến thức quan trọng

Vi phạm dữ liệu ảnh hưởng hàng tỷ bản ghi mỗi năm

Trung tâm Tài nguyên Trộm cắp Danh tính báo cáo 3.205 vụ xâm phạm dữ liệu tại Hoa Kỳ vào năm 2023, ảnh hưởng đến khoảng 353 triệu cá nhân. Khi một nhà cung cấp giữ khóa mã hóa bị xâm phạm, kẻ tấn công có thể có quyền truy cập cả dữ liệu đã mã hóa lẫn khóa để giải mã. Kiến trúc không kiến thức loại bỏ hoàn toàn rủi ro này. Máy chủ bị xâm phạm chỉ chứa bản mã mà về mặt tính toán không thể giải mã được.

Cưỡng bức pháp lý là mối đe dọa thực sự

Các cơ quan chính phủ ở nhiều khu vực pháp lý có thể buộc nhà cung cấp bàn giao dữ liệu đã lưu trữ. Nếu nhà cung cấp giữ khóa mã hóa, họ phải tuân thủ. Theo kiến trúc không kiến thức, phản hồi của nhà cung cấp với trát đòi hầu là khối dữ liệu đã mã hóa, vô dụng nếu không có thông tin xác thực của người dùng. Bảo vệ Dữ liệu Nâng cao của Apple cho iCloud đi theo hướng này nhưng chỉ được giới thiệu trong iOS 16.2 (tháng 12 năm 2022) và không được bật theo mặc định.

"Hãy tin chúng tôi" không phải là kiến trúc bảo mật

Mã hóa thông thường dựa vào lời hứa của nhà cung cấp không truy cập dữ liệu của bạn. Mã hóa không kiến thức thay thế lời hứa đó bằng đảm bảo toán học. Nhà cung cấp không thể truy cập dữ liệu ngay cả khi họ muốn, ngay cả khi nhân viên phản bội, ngay cả khi họ bị mua lại bởi công ty có giá trị quyền riêng tư khác. Kiến trúc thực thi ràng buộc.

Tiêu chuẩn NIST đằng sau mật mã học

AES-256-GCM, mật mã được sử dụng phổ biến nhất trong các triển khai không kiến thức, được chuẩn hóa bởi Viện Tiêu chuẩn và Công nghệ Quốc gia trong SP 800-38D (2007). AES được NIST chọn thông qua cuộc thi công khai vào năm 2001, thay thế tiêu chuẩn DES cũ. "256" đề cập đến độ dài khóa tính bằng bit -- khóa 256-bit có 2^256 giá trị có thể, một con số lớn đến mức tấn công brute-force sẽ đòi hỏi nhiều năng lượng hơn mặt trời sẽ tạo ra trong thời gian còn lại của nó.

GCM (Galois/Counter Mode) thêm mã hóa xác thực, có nghĩa là quá trình giải mã phát hiện bất kỳ sự can thiệp nào với bản mã. Nếu một bit dữ liệu đã mã hóa bị thay đổi, giải mã thất bại thay vì tạo ra đầu ra bị hỏng. Điều này ngăn chặn kẻ tấn công thao túng dữ liệu đã mã hóa mà không bị phát hiện.

PBKDF2 (Hàm Dẫn xuất Khóa Dựa trên Mật khẩu 2), được chỉ định trong RFC 8018, chuyển đổi thông tin xác thực do người dùng cung cấp thành khóa mật mã thông qua băm lặp. Chạy hàm băm hàng trăm nghìn lần khiến mỗi lần đoán mật khẩu tốn kém về mặt tính toán, biến đổi một hình vẽ hoặc mật khẩu đơn giản thành khóa chống lại các cuộc tấn công brute-force.

Cách Vaultaire triển khai mã hóa không kiến thức

Vaultaire là ứng dụng vault cho iPhone được xây dựng trên kiến trúc không kiến thức. Đây là cách triển khai hoạt động ở mỗi lớp.

Dẫn xuất khóa. Người dùng vẽ hình trên lưới 5x5 gồm 25 chấm. Chuỗi các chấm, theo thứ tự, được đưa vào PBKDF2 với HMAC-SHA512 và một muối mật mã duy nhất cho mỗi vault. Đầu ra là khóa mã hóa AES 256-bit. Hình vẽ không bao giờ được lưu trữ trên thiết bị. Không phải dạng băm, không phải dạng biểu diễn, không phải dạng nào cả.

Mã hóa tệp. Mỗi tệp được nhập vào được mã hóa bằng AES-256-GCM sử dụng khóa đã dẫn xuất và vectơ khởi tạo (IV) được tạo ngẫu nhiên duy nhất cho tệp đó. Các tệp giống hệt nhau tạo ra bản mã khác nhau vì IV khác nhau.

Mã hóa siêu dữ liệu. Tên tệp, ngày tạo và dữ liệu thumbnail được mã hóa riêng bằng ChaCha20, một mật mã khác cung cấp sự đa dạng mật mã học và loại bỏ các cuộc tấn công kênh phụ theo thời gian cache.

Quản lý khóa. Apple Secure Enclave lưu trữ tài liệu khóa trong bộ đồng xử lý phần cứng chuyên dụng với bộ nhớ được mã hóa riêng. Khóa bị xóa khỏi bộ nhớ ứng dụng khi Vaultaire đóng hoặc người dùng chuyển sang ứng dụng khác.

Không có sổ đăng ký vault. Không có cơ sở dữ liệu liệt kê vault, không có số lượng, không có tên. Mỗi hình vẽ mở một vault khác nhau. Bản thân ứng dụng không thể xác định có bao nhiêu vault tồn tại. Xem kiến trúc bảo mật đầy đủ và giải thích mã hóa hình vẽ.

Cách nhận biết nếu ứng dụng sử dụng mã hóa không kiến thức thực sự

Ba bài kiểm tra mất chưa đến một phút:

  1. Bài kiểm tra quên mật khẩu. Nếu ứng dụng có thể đặt lại mật khẩu của bạn qua email và dữ liệu của bạn xuất hiện lại, ứng dụng giữ khóa mã hóa của bạn. Không phải không kiến thức.

  2. Bài kiểm tra thiết bị mới. Nếu bạn đăng nhập trên thiết bị mới và dữ liệu của bạn xuất hiện mà không chuyển khóa từ thiết bị cũ hoặc nhập cụm từ khôi phục, máy chủ có khóa của bạn. Không phải không kiến thức.

  3. Bài kiểm tra tài khoản. Nếu ứng dụng yêu cầu địa chỉ email hoặc số điện thoại, nhà cung cấp có liên kết giữa danh tính của bạn và dữ liệu của bạn. Điều này không nhất thiết là không đủ tiêu chuẩn, nhưng kết hợp với bất kỳ điều nào ở trên, nó xác nhận rằng nhà cung cấp có thể truy cập dữ liệu của bạn.

Các ứng dụng vượt qua cả ba: Signal, Proton Mail, Standard Notes, Vaultaire. Các ứng dụng thất bại ít nhất một: hầu hết các dịch vụ lưu trữ đám mây, hầu hết các ứng dụng "vault" trên App Store.

Câu hỏi thường gặp

Mã hóa không kiến thức có giống mã hóa đầu cuối không?

Hai khái niệm này có điểm chung nhưng không giống nhau. Mã hóa đầu cuối (E2EE) có nghĩa là dữ liệu được mã hóa trên thiết bị người gửi và chỉ được giải mã trên thiết bị người nhận. Mã hóa không kiến thức có nghĩa là nhà cung cấp không thể truy cập dữ liệu. Một dịch vụ có thể mã hóa đầu cuối mà không có kiến thức bằng không nếu nhà cung cấp đã tạo hoặc từng có quyền truy cập khóa. Mã hóa không kiến thức là tiêu chuẩn chặt chẽ hơn.

Điều gì xảy ra nếu tôi mất mật khẩu khi sử dụng mã hóa không kiến thức?

Dữ liệu của bạn sẽ không thể truy cập vĩnh viễn. Không có khóa chính, không có cửa hậu, và không có quy trình khôi phục nào hoạt động nếu không có cụm từ khôi phục được lưu riêng. Đây là sự đánh đổi cơ bản: quyền riêng tư tuyệt đối đòi hỏi trách nhiệm tuyệt đối. Một số ứng dụng không kiến thức (bao gồm Vaultaire) tạo cụm từ khôi phục khi tạo vault có thể tái tạo khóa mã hóa nếu thông tin xác thực chính bị mất.

Cơ quan thực thi pháp luật có thể truy cập dữ liệu mã hóa không kiến thức không?

Cơ quan thực thi pháp luật có thể yêu cầu nhà cung cấp bàn giao dữ liệu đã lưu trữ. Với mã hóa không kiến thức, dữ liệu mà nhà cung cấp bàn giao là một khối dữ liệu đã mã hóa vô dụng nếu không có khóa của người dùng. Liệu cơ quan thực thi pháp luật có thể buộc người dùng cung cấp khóa là một câu hỏi pháp lý riêng biệt khác nhau tùy theo khu vực pháp lý. Các tòa án ở Hoa Kỳ thường cho rằng việc buộc mở khóa sinh trắc học (Face ID, vân tay) là được phép, trong khi việc buộc tiết lộ mật khẩu/hình vẽ gây tranh cãi hơn theo Tu chính án thứ Năm.

Mã hóa không kiến thức có chậm hơn mã hóa thông thường không?

Các hoạt động mã hóa và giải mã là giống nhau. AES-256-GCM chạy với cùng tốc độ bất kể ai giữ khóa. Chi phí bổ sung duy nhất là dẫn xuất khóa: chạy PBKDF2 với hàng trăm nghìn lần lặp mất khoảng 0,5-2 giây trên iPhone hiện đại. Điều này xảy ra một lần khi mở khóa vault, không phải mỗi tệp. Trong thực tế, người dùng không nhận thấy sự khác biệt về tốc độ.

Không kiến thức có nghĩa là ứng dụng không thu thập dữ liệu nào không?

Không nhất thiết. Không kiến thức đề cập cụ thể đến kiến trúc mã hóa. Nhà cung cấp không thể truy cập nội dung đã mã hóa. Ứng dụng vẫn có thể thu thập số liệu phân tích ẩn danh, báo cáo sự cố hoặc siêu dữ liệu sử dụng nếu người dùng chọn tham gia. Điều nó không thể thu thập là nội dung của các tệp đã mã hóa, khóa mã hóa hoặc thông tin xác thực được dùng để tạo ra nó. Chính sách quyền riêng tư của Vaultaire mô tả chi tiết chính xác những dữ liệu tùy chọn nào được thu thập với sự cho phép của người dùng.

Mã hóa không kiến thức so sánh với Bảo vệ Dữ liệu Nâng cao của Apple như thế nào?

Bảo vệ Dữ liệu Nâng cao (ADP) của Apple, được giới thiệu trong iOS 16.2, mở rộng mã hóa đầu cuối cho hầu hết các danh mục dữ liệu iCloud. Với ADP được bật, Apple không thể truy cập dữ liệu được bảo vệ. Sự khác biệt chính so với ứng dụng không kiến thức chuyên dụng: ADP phải chọn tham gia (tắt theo mặc định), yêu cầu Apple ID, và chỉ bảo vệ dữ liệu trong hệ sinh thái của Apple. Ứng dụng vault không kiến thức như Vaultaire hoạt động độc lập với cơ sở hạ tầng của Apple, không cần tài khoản và thêm các tính năng như từ chối hợp lýchế độ cưỡng bức mà ADP không cung cấp.

Tóm tắt

Mã hóa không kiến thức là kiến trúc nơi nhà cung cấp về mặt toán học không thể truy cập dữ liệu người dùng vì khóa mã hóa không bao giờ rời khỏi thiết bị của người dùng. Nó khác với mã hóa thông thường, mã hóa khi lưu trữ, và thậm chí một số hình thức mã hóa đầu cuối theo một cách quan trọng: sự không thể của nhà cung cấp trong việc truy cập dữ liệu được thực thi bằng toán học, không phải chính sách. Sự đánh đổi -- mất khóa có nghĩa là mất dữ liệu -- không phải là lỗi. Đó là cơ chế làm cho đảm bảo trở nên thực.

Đọc kiến trúc bảo mật