Ich möchte strukturierte Daten schützen

Tink APIs akzeptieren beliebige binäre Blobs als Eingabe. Wenn Sie also strukturierte Daten wie Protokollpuffer verschlüsseln möchten, müssen Sie die Daten zuerst codieren.

Protokollzwischenspeicher verschlüsseln

So verschlüsseln Sie die Datei:

  1. Der Protokollzwischenspeicher wird in ein Byte-Array serialisiert.
  2. Verschlüsseln Sie die serialisierten Byte und speichern oder senden Sie den resultierenden Geheimtext. Verwenden Sie:

So entschlüsseln Sie den Code:

  1. Entschlüsseln Sie den Geheimtext.
  2. Wenn Schritt 1 erfolgreich war, deserialisieren Sie den Protokollzwischenspeicher.

Protobuf vor Manipulation schützen

In den meisten Fällen ist die Verschlüsselung eines Protokollzwischenspeichers der Authentifizierung allein vorzuziehen.

So schützen Sie einen Protobuf vor Manipulationen:

  1. Der Protokollzwischenspeicher wird in ein Byte-Array serialisiert.
  2. Signieren oder authentifizieren Sie die serialisierten Byte. Verwenden Sie:
  3. Speichern Sie die serialisierten Bytes zusammen mit der Signatur (oder dem MAC).

So nehmen Sie eine Bestätigung vor:

  1. Rufen Sie den serialisierten Protokollzwischenspeicher und seine Signatur (oder MAC) ab.
  2. Überprüfen Sie die Signatur (oder den MAC).
  3. Deserialisiert den protobuf-Wert.

Beachten Sie, dass eine gültige Signatur oder ein gültiger MAC nicht garantiert, dass die Daten richtig formatiert sind. Bei einer Implementierung, die die Daten parst, sollte immer davon ausgegangen werden, dass die Daten beschädigt sind.

Mehrere Datenelemente schützen

Verwenden Sie eine Serialisierungsmethode, um mehrere Datenelemente zu schützen. Fügen Sie alle Datenelemente zu einem Protokollzwischenspeicher hinzu und verschlüsseln (oder authentifizieren) Sie ihn wie oben beschrieben.

Sie können auch wie folgt serialisieren:

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

Zum Schluss verschlüsseln (oder authentifizieren) Sie das resultierende Byte-Array.