Quiero proteger los datos estructurados

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

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. Usa lo siguiente:

Para desencriptarlos, haz lo siguiente:

  1. Desencripta el texto cifrado.
  2. Si el paso 1 fue exitoso, deserializa el protobuf.

Cómo proteger un protobuf contra la manipulación

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

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. Usa lo siguiente:
  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 MAC).
  3. Deserializa el protobuf.

Ten en cuenta que una firma válida o un MAC no garantizan que los datos tengan el formato correcto. Una implementación que analiza los datos siempre debe esperar que los datos estén dañados.

Protege varios elementos de datos

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

También puedes serializar la información 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.