Mã hoá xác thực truyền trực tuyến với dữ liệu liên kết (Truyền trực tuyến AEAD)

Dữ liệu gốc AEAD phát 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. Tính năng này rất hữu ích khi dữ liệu cần mã hoá quá lớn để có thể xử lý chỉ trong một bước. Một số trường hợp sử dụng điển hình là mã hoá các 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 trong các phân đoạn mà các phân đoạn được liên kết với vị trí của các phân đoạn đó trong một bản mật mã và không thể xoá hay sắp xếp lại. Bạn không được chèn các phân đoạn của một đoạn mật mã này vào một đoạn mật mã khác. Để sửa đổi một bả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 vì tại mỗi thời điểm, chỉ một phần của bản mã hoá được giải mã và xác thực. Có thể lấy được một phần văn bản thuần tuý mà không cần xử lý toàn bộ văn bản mật mã.

Việc triển khai AEAD trực tuyến đáp ứng định nghĩa AEADbảo mật OAE2. Chúng 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 thuần tuý, ngoại trừ độ dài của văn bản thuần tuý.
  • Tính xác thực: Bạn không thể thay đổi văn bản thuần tuý đã mã hoá nằm dưới bản mật mã nếu không được phát hiện.
  • Symmetric (Đối xứng): Quá trình mã hoá văn bản thuần tuý và giải mã bản mật mã được thực hiện bằng cùng một khoá.
  • Sắp xếp ngẫu nhiên: Mã hoá được chọn ngẫu nhiên. 2 thông điệp có cùng văn bản thuần tuý mang lại các bản mật mã khác nhau. Kẻ tấn công không thể biết được văn bản mật mã nào tương ứng với một văn bản thuần tuý nhất định.

Dữ liệu liên quan

Bạn có thể sử dụng tính năng phát trực tuyến AEAD để liên kết văn bản mật mã với dữ liệu liên quan cụ thể. Giả sử bạn có một cơ sở dữ liệu với các trường user-idencrypted-medical-history. Trong trường hợp này, bạn có thể dùng user-id làm dữ liệu liên kết khi mã hoá encrypted-medical-history. Nhờ đó, kẻ tấn công không thể di chuyển bệnh án từ người dùng này sang người dùng khác.

Chọn một 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 thường:

  • AES128_GCM_HKDF_1MB (hoặc AES256_GCM_HKDF_1MB) là lựa chọn nhanh hơn. Công cụ này có thể mã hoá 264 tệp, mỗi tệp có tối đa 264 byte. ~1 MB bộ nhớ được sử dụng trong quá trình mã hoá và giải mã.
  • AES128_GCM_HKDF_4KB tiêu tốn khoảng 4 KB bộ nhớ và là 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à một tuỳ chọn thận trọng hơn.

Đảm bảo tính bảo mật

Ưu đãi triển khai AEAD trực tuyến:

  • Bảo mật CCA2.
  • Độ mạnh 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 cộng 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ý được chọn 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 hoặc luồng dữ liệu lớn.


  1. Lý do cho 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. Việc 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 khôi phục, trong đó kẻ tấn công có thể cố gắng khôi phục phiên bản trước của tệp mà không phát hiện được. 

  2. 232 phân đoạn được hỗ trợ, trong đó 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 thuần tuý là 232 * (220-16) ~= 251 byte.

  3. Việc truyền trực tuyến AEAD trở nên không an toàn khi lặp lại tổ hợp khoá dẫn xuất (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). Chúng ta có khả năng chống va chạm 184 bit, tương đương với 264 thông báo nếu muốn xác suất thành công nhỏ hơn 2-32.