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

Cá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 bạn muốn mã hoá dữ liệu có cấu trúc, như bộ đệm giao thức, bạn cần mã hoá dữ liệu trước.

Mã hoá một protobuf

Cách mã hoá:

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

Cách giải mã:

  1. Giải mã thuật toá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ông bị can thiệp

Trong hầu hết các trường hợp, tốt hơn là nên mã hoá một protobuf thay vì chỉ xác thực.

Cách bảo vệ protobuf khỏi bị can thiệp:

  1. Tuần tự hoá 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 chuyển đổi tuần tự cùng với chữ ký (hoặc MAC).

Để xác minh:

  1. Lấy protobuf được chuyển đổi tuần tự và chữ ký của protobuf đó (hoặc MAC).
  2. Xác minh chữ ký (hoặc MAC).
  3. Giải tuần tự protobuf.

Lưu ý rằng chữ ký hoặc MAC hợp lệ không đảm bảo rằng dữ liệu chính xác đã định dạng. Việc 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ủa bạn 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ả dữ liệu mục với một protobuf và mã hoá (hoặc xác thực) nó 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 kết quả.