Revault mã hóa tệp lớn theo từng phân đoạn khoảng 5 MiB, mỗi phân đoạn có thẻ xác thực riêng, nên toàn bộ tệp không bao giờ phải nằm trong bộ nhớ cùng lúc. Trong ứng dụng web, đó là điều giúp hỗ trợ tệp lên tới 1 GiB.

Tại sao không mã hóa toàn bộ tệp cùng lúc?

Các tệp lớn không cần nhiều bộ nhớ. Revault đọc các tệp trong các phân đoạn khoảng 5 MiB, mã hóa từng phân đoạn trong trình duyệt và phân đoạn văn bản mã hóa trong IndexedDB. Tệp gốc không bao giờ được đọc vào một bộ đệm khổng lồ.

Làm việc theo phân đoạn cũng có nghĩa là lượt tải lên bị gián đoạn có thể tiếp tục từ bản mã đã được chuẩn bị sẵn, thay vì phải mã hóa lại toàn bộ tệp.

Điều gì bảo vệ thứ tự và tính toàn vẹn của các phân đoạn?

Mỗi tệp có khóa mã hóa riêng, được dẫn xuất bằng HKDF từ khóa chính của vault. Ngữ cảnh dẫn xuất bao gồm mã định danh của vault và tệp, độ dài tính theo byte của tệp và kích thước phân đoạn.

Nonce 12 byte của mỗi phân đoạn kết hợp một tiền tố ngẫu nhiên được chọn cho tệp đó, một bộ đếm phân đoạn bốn byte và một cờ đánh dấu phân đoạn cuối cùng. Các phân đoạn mang thẻ GCM 128 bit. Nếu các phân đoạn bị hoán đổi, chỉnh sửa hoặc cắt bớt, quá trình xác minh sẽ thất bại.

Điều gì xảy ra nếu lượt tải lên bị gián đoạn?

Sau khi quá trình mã hóa hoàn tất, quá trình tải lên mạng có thể tiếp tục từ văn bản mã hóa được lưu trong bộ nhớ đệm sau khi làm mới trang. Các lần thử lại gửi cùng một byte được mã hóa, thay vì mã hóa nguồn mới theo số cũ. Nếu quá trình mã hóa bị gián đoạn, hãy hủy quá trình tải lên chưa hoàn tất đó và bắt đầu lại với nhận dạng tệp mới.

Tệp tải xuống được xác minh như thế nào?

Khi tải xuống, từng phân đoạn được xác thực trước khi được giải phóng. Vì việc kiểm tra diễn ra trong lúc tệp được truyền, một lỗi ở cuối quá trình tải xuống có thể để lại một tệp chưa hoàn chỉnh, nên hãy đảm bảo quá trình tải xuống hoàn tất thành công trước khi sử dụng tệp.

Có những giới hạn nào?

Mỗi tệp trong ứng dụng web có thể lên tới 1 GiB. Bản xem trước hình ảnh và video có giới hạn bộ nhớ riêng. Xóa bộ nhớ cục bộ của trình duyệt có thể xóa bản mã cần thiết để tiếp tục lượt tải lên.

Định dạng phát trực tuyến tuân theo cấu trúc phát trực tuyến AES-GCM-HKDF đã được ghi lại của Tink, sử dụng các nguyên hàm gốc của Web Crypto. Nhận dạng tệp và độ dài dự kiến ​​​​được ràng buộc trong bối cảnh phái sinh khóa; bộ đếm phân đoạn và điểm đánh dấu cuối cùng bảo vệ thứ tự và hoàn thành. Việc triển khai này chưa nhận được sự kiểm tra mật mã độc lập.

Trang mô hình bảo mật mô tả toàn bộ cấu trúc, bao gồm phần đầu luồng và cách dẫn xuất khóa.