Quiero proteger los datos estructurados

Las APIs de Tink toman BLOB binarios arbitrarios como entrada. Esto significa que si quieres encriptar datos estructurados, como búferes de protocolo, debes codificarlos primero.

Encripta un protobuf

Para encriptar, sigue estos pasos:

  1. Serializa el protobuf en un array de bytes.
  2. Encripta los bytes serializados y, luego, almacena o envía el texto cifrado resultante. Usar:

Para desencriptarlos, sigue estos pasos:

  1. Desencripta el texto cifrado.
  2. Si el paso 1 tuvo éxito, deserializa el protobuf.

Cómo proteger un protobuf de la manipulación

En la mayoría de los casos, es preferible encriptar un protobuf en lugar de solo la autenticación.

Para proteger un protobuf contra la manipulación, haz lo siguiente:

  1. Serializa el protobuf en un array de bytes.
  2. Firma o autentica los bytes serializados. Usar:
  3. Almacena los bytes serializados junto con la firma (o MAC).

Para verificar, haz lo siguiente:

  1. Obtén el protobuf serializado y su firma (o MAC).
  2. Verifica la firma (o el MAC).
  3. Deserializa el protobuf.

Ten en cuenta que una firma o un MAC válidos no garantiza que los datos estén con formato. Una implementación que analiza los datos siempre debe esperar que el los datos podrían estar dañados.

Cómo proteger varios elementos de datos

Para proteger varios elementos de datos, usa un método de serialización. Agrega todos los datos a un protobuf y encriptarlos (o autenticarlos) como se describió anteriormente.

También puedes serializar de la siguiente manera:

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

Por último, encripta (o autentica) el array de bytes resultante.