Phương thức gốc AEAD truyền trực tuyến cung cấp tính năng mã hoá đã xác thực cho dữ liệu truyền trực tuyến. Phương thức này hữu ích khi dữ liệu cần mã hoá quá lớn để xử lý trong một bước. Các trường hợp sử dụng điển hình bao gồm mã hoá tệp lớn hoặc luồng dữ liệu trực tiếp.
Quá trình mã hoá được thực hiện theo các phân đoạn, các phân đoạn này được liên kết với vị trí của chúng trong văn bản đã mã hoá và không thể xoá hoặc sắp xếp lại. Không thể chèn các phân đoạn từ một văn bản đã mã hoá vào một văn bản đã mã hoá khác. Để sửa đổi một thuật toán mật mã hiện có, bạn phải mã hoá lại toàn bộ luồng dữ liệu.1
Quá trình giải mã diễn ra nhanh chóng vì mỗi lần chỉ giải mã và xác thực một phần văn bản đã mã hoá. Bạn có thể lấy một phần văn bản thô mà không cần xử lý toàn bộ văn bản đã mã hoá.
Các phương thức triển khai AEAD truyền trực tuyến đáp ứng định nghĩa AEAD và an toàn theo nOAE. Các thuộc tính này có các thuộc tính sau:
- Bảo mật: Không có thông tin nào về văn bản thô, ngoại trừ độ dài.
- Tính xác thực: Không thể thay đổi văn bản thô đã mã hoá cơ bản của văn bản đã mã hoá mà không bị phát hiện.
- Đối xứng: Việc mã hoá văn bản thô và giải mã văn bản đã mã hoá được thực hiện bằng cùng một khoá.
- Sắp xếp ngẫu nhiên: Quá trình mã hoá được sắp xếp ngẫu nhiên. Hai thông điệp có cùng văn bản thô sẽ tạo ra các văn bản đã mã hoá khác nhau. Kẻ tấn công không thể biết văn bản đã mã hoá nào tương ứng với một văn bản thô nhất định.
Dữ liệu liên quan
Bạn có thể dùng AEAD truyền trực tuyến để liên kết văn bản đã mã hoá với dữ liệu liên kết cụ thể. Giả sử bạn có một cơ sở dữ liệu với các trường user-id
và encrypted-medical-history
. Trong trường hợp này, user-id
có thể được dùng làm dữ liệu liên kết khi mã hoá encrypted-medical-history
. Việc này giúp ngăn chặn kẻ tấn công di chuyển tiền sử y tế từ người dùng này sang người dùng khác.
Chọn loại khoá
Bạn nên dùng AES128_GCM_HKDF_1MB cho hầu hết các trường hợp sử dụng. Thông tin chung:
- AES128_GCM_HKDF_1MB (hoặc AES256_GCM_HKDF_1MB) là tuỳ chọn nhanh hơn. Phương thức này có thể mã hoá 264 tệp, mỗi tệp có kích thước tối đa là 264 byte. ~1 MB bộ nhớ sẽ được sử dụng trong quá trình mã hoá và giải mã.
- AES128_GCM_HKDF_4KB tiêu thụ khoảng 4 KB bộ nhớ và là một lựa chọn phù hợp nếu hệ thống của bạn không có nhiều bộ nhớ.
- AES128_CTR_HMAC_SHA256_1MB (hoặc AES256_CTR_HMAC_SHA256_1MB) là lựa chọn thận trọng hơn.
Cam kết bảo mật
Các phương thức triển khai AEAD trực tuyến cung cấp:
- Bảo mật CCA2.
- Độ mạnh của chế độ xác thực tối thiểu là 80 bit.
- Khả năng mã hoá ít nhất 264 thông báo3 với tổng số 251 byte2 . Không có cuộc tấn công nào có tối đa 232 văn bản thuần tuý hoặc thuật toán mật mã đã chọn có xác suất thành công lớn hơn 2-32.
Trường hợp sử dụng mẫu
Xem phần Tôi muốn mã hoá các tệp lớn hoặc luồng dữ liệu.
-
Một lý do dẫn đến quy định hạn chế này là việc sử dụng thuật toán mật mã AES-GCM. Việc mã hoá một phân đoạn văn bản thuần tuý khác tại cùng một vị trí sẽ tương đương với việc sử dụng lại IV. Điều này vi phạm đảm bảo bảo mật của AES-GCM. Một lý do khác là việc này ngăn chặn các cuộc tấn công quay lại, trong đó kẻ tấn công có thể cố gắng khôi phục phiên bản tệp trước đó mà không bị phát hiện. ↩
-
Hỗ trợ 232 phân đoạn, mỗi phân đoạn chứa
segment_size - tag_size
byte văn bản thuần tuý. Đối với các phân đoạn 1 MB, tổng kích thước văn bản thô là 232 * (220-16) ~= 251 byte. ↩ -
Việc truyền trực tuyến AEAD trở nên không an toàn khi tổ hợp khoá phái sinh (128 bit) và tiền tố số chỉ dùng một lần (giá trị 7 byte ngẫu nhiên độc lập) bị lặp lại. Chúng ta có khả năng chống xung đột 184 bit, tương đương với 264 thông báo nếu muốn xác suất thành công thấp hơn 2-32. ↩