Quero proteger os dados estruturados

As APIs Tink usam blobs binários arbitrários como entrada. Isso significa que, para criptografar dados estruturados, como buffers de protocolo, é necessário codificar os dados primeiro.

Criptografar um protobuf

Para criptografar:

  1. Serialize o protobuf para uma matriz de bytes.
  2. Criptografar os bytes serializados e, em seguida, armazenar ou enviar o texto criptografado resultante. Usar:

Para descriptografar:

  1. Descriptografar o texto criptografado.
  2. Se a etapa 1 tiver sido bem-sucedida, desserialize o protobuf.

Proteja um protobuf contra adulterações

Na maioria dos casos, a criptografia de um protobuf é preferível à autenticação sozinha.

Para proteger um protobuf contra adulterações:

  1. Serialize o protobuf para uma matriz de bytes.
  2. Assine ou autentique os bytes serializados. Usar:
  3. Armazene os bytes serializados com a assinatura (ou MAC).

Para verificar:

  1. Receba o protobuf serializado e a assinatura (ou MAC).
  2. Verifique a assinatura (ou MAC).
  3. Desserialize o protobuf.

Uma assinatura ou MAC válido não garante que os dados estejam formatados corretamente. Uma implementação que analisa os dados precisa sempre esperar que eles estejam corrompidos.

Proteger vários itens de dados

Para proteger vários itens de dados, use um método de serialização. Adicione todos os itens de dados a um protobuf e criptografe (ou autentique) conforme descrito acima.

Também é possível serializar da seguinte maneira:

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

Por fim, criptografe (ou autentique) a matriz de bytes resultante.