Quero proteger os dados estruturados

As APIs do Tink usam blobs binários arbitrários como entrada. Isso significa que, se você quiser criptografar dados estruturados, como buffers de protocolo, é preciso e codificar os dados primeiro.

Criptografar um protobuf

Para criptografar:

  1. Serialize o protobuf para uma matriz de bytes.
  2. Criptografe os bytes serializados e armazene ou envie o texto criptografado resultante. Use:

Para descriptografar:

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

Proteger um protobuf contra adulterações

Na maioria dos casos, é preferível criptografar um protobuf à autenticação.

Para proteger um protobuf contra adulterações:

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

Para verificar:

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

Observe que uma assinatura ou um MAC válido não garante que os dados estejam corretamente formatado. Uma implementação que analisa os dados deve sempre esperar que os os dados podem estar corrompidos.

Proteger vários itens de dados

Para proteger vários itens de dados, use um método de serialização. Adicionar todos os dados para um protobuf e criptografe ou autentique-o 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.