Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As chamadas para IDataProtector.Protect são operações de encriptação autenticadas. O método Protect oferece tanto confidencialidade como autenticidade, e está ligado à cadeia de propósitos que foi usada para derivar esta instância particular do IDataProtector a partir da sua raiz IDataProtectionProvider.
O IDataProtector.Protect pega num parâmetro de texto simples por byte[] e produz uma carga útil protegida por byte[], cujo formato é descrito abaixo. (Existe também uma sobrecarga de método de extensão que aceita um parâmetro de texto simples e devolve uma carga útil protegida como string. Se esta API for utilizada, o formato da carga útil protegida manterá a estrutura abaixo, mas será codificado em base64url.)
Formato de carga útil protegida
O formato de carga útil protegida consiste em três componentes principais:
Um cabeçalho mágico de 32 bits que identifica a versão do sistema de proteção de dados.
Um ID de chave de 128 bits que identifica a chave usada para proteger esta carga útil em particular.
O restante da carga útil protegida é específico do encriptador encapsulado por esta chave. No exemplo abaixo, a chave representa um encriptador AES-256-CBC + HMACSHA256, e a carga útil é subdividida da seguinte forma:
- Um modificador de chave de 128 bits.
- Um vetor de inicialização de 128 bits.
- 48 bytes de saída AES-256-CBC.
- Uma etiqueta de autenticação HMACSHA256.
Um exemplo de carga útil protegida é ilustrado abaixo.
09 F0 C9 F0 80 9C 81 0C 19 66 19 40 95 36 53 F8
AA FF EE 57 57 2F 40 4C 3F 7F CC 9D CC D9 32 3E
84 17 99 16 EC BA 1F 4A A1 18 45 1F 2D 13 7A 28
79 6B 86 9C F8 B7 84 F9 26 31 FC B1 86 0A F1 56
61 CF 14 58 D3 51 6F CF 36 50 85 82 08 2D 3F 73
5F B0 AD 9E 1A B2 AE 13 57 90 C8 F5 7C 95 4E 6A
8A AA 06 EF 43 CA 19 62 84 7C 11 B2 C8 71 9D AA
52 19 2E 5B 4C 1E 54 F0 55 BE 88 92 12 C1 4B 5E
52 C9 74 A0
A partir do formato de carga útil acima, os primeiros 32 bits, ou 4 bytes, são o cabeçalho mágico que identifica a versão (09 F0 C9 F0)
Os próximos 128 bits, ou 16 bytes, são o identificador de chave (80 9C 81 0C 19 66 19 40 95 36 53 F8 AA FF EE 57)
O restante contém a carga útil e é específico para o formato utilizado.
Advertência
Todas as cargas úteis protegidas por uma determinada chave começarão com o mesmo cabeçalho de 20 bytes (valor predefinido, id da chave). Os administradores podem usar este facto para fins de diagnóstico e aproximar quando uma carga útil foi gerada. Por exemplo, a carga útil acima corresponde à chave {aaaaaaaa-0b0b-1c1c-2d2d-333333333333333}. Se, depois de verificar o repositório de chaves, descobrir que a data de ativação dessa chave específica foi 2015-01-01 e a sua data de expiração foi 2015-03-01, então é razoável assumir que o payload (se não foi adulterado) foi gerado dentro desse intervalo de tempo, considerando uma pequena margem de tolerância em ambas as extremidades da janela.