我想保護結構化資料

Tink API 採用任意二進位 blob 做為輸入值。也就是說,如要加密通訊協定緩衝區等結構化資料,就必須先對資料進行編碼。

加密通訊協定緩衝區

加密方式如下:

  1. 將 protobuf 序列化為位元組陣列。
  2. 加密序列化位元組,然後儲存或傳送產生的密文。請使用:

解密方式如下:

  1. 解密密文。
  2. 如果步驟 1 成功,請取消序列化 Protobuf。

保護通訊協定緩衝區,避免遭到竄改

在大多數情況下,加密 Protobuf 比較適合只進行驗證。

如何防止通訊協定緩衝區遭到竄改:

  1. 將 protobuf 序列化為位元組陣列。
  2. 簽署或驗證序列化的位元組。請使用:
  3. 將序列化的位元組與簽章 (或 MAC) 一併儲存。

驗證方法:

  1. 取得序列化的 protobuf 及其簽名 (或 MAC)。
  2. 驗證簽章 (或 MAC)。
  3. 將 Protobuf 反序列化。

請注意,有效的簽名或 MAC 無法保證資料的格式正確無誤。剖析資料的實作應一律預期資料損毀。

保護多個資料項目

如要保護多個資料項目,請使用序列化方法。將所有資料項目新增至 Protobuf,然後依上述方式加密 (或驗證)。

您也可以進行序列化,如下所示:

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

最後,加密 (或驗證) 產生的位元組陣列。