Tôi muốn bảo vệ dữ liệu có cấu trúc

API Tink lấy các blob nhị phân tuỳ ý làm dữ liệu đầu vào. Điều này có nghĩa là nếu muốn mã hoá dữ liệu có cấu trúc, như vùng đệm giao thức, trước tiên, bạn cần mã hoá dữ liệu đó.

Mã hoá một protobuf

Để mã hoá:

  1. Chuyển đổi tuần tự protobuf thành một mảng byte.
  2. Mã hoá các byte được tuần tự hoá, sau đó lưu trữ hoặc gửi bản mật mã kết quả. Sử dụng:

Cách giải mã:

  1. Giải mã văn bản mật mã.
  2. Nếu Bước 1 thành công, hãy giải tuần tự protobuf.

Bảo vệ protobuf khỏi hành vi can thiệp

Trong hầu hết các trường hợp, tốt nhất bạn chỉ nên mã hoá một protobuf chỉ xác thực.

Cách bảo vệ protobuf khỏi hành vi can thiệp:

  1. Chuyển đổi tuần tự protobuf thành một mảng byte.
  2. Ký hoặc xác thực các byte được chuyển đổi tuần tự. Sử dụng:
  3. Lưu trữ các byte được tuần tự hoá cùng với chữ ký (hoặc MAC).

Để xác minh:

  1. Lấy protobuf tuần tự và chữ ký (hoặc MAC).
  2. Xác minh chữ ký (hoặc MAC).
  3. Giải tuần tự protobuf.

Xin lưu ý rằng chữ ký hoặc địa chỉ MAC hợp lệ không đảm bảo rằng dữ liệu được định dạng chính xác. Quá trình triển khai phân tích cú pháp dữ liệu phải luôn dự kiến rằng dữ liệu có thể bị hỏng.

Bảo vệ nhiều mục dữ liệu

Để bảo vệ nhiều mục dữ liệu, hãy sử dụng phương thức chuyển đổi tuần tự. Thêm tất cả các mục dữ liệu vào một protobuf và mã hoá (hoặc xác thực) dữ liệu đó như mô tả ở trên.

Bạn cũng có thể chuyển đổi tuần tự như sau:

serialize(data1 , data2 , …, datan) = 4-byte-data1's length || data1 || 4-byte-data2's length || data2 || … || 4-byte-dataN's length || dataN

Cuối cùng, mã hoá (hoặc xác thực) mảng byte thu được.