Qual é a diferença entre openssl pkeyutl -sign e openssl rsautl -sign

0

Qual é a diferença entre openssl pkeyutl -sign -pkeyopt digest:sha256 e openssl rsautl -sign ? Eles fazem a mesma coisa?

    
por demonguy 22.07.2015 / 15:13

1 resposta

6

pkeyutl -sign com uma chave RSA (e rsa_padding_mode assumido como pkcs1 que significa especificamente pkcs1-v1_5) E -pkeyopt digest:$hash executa as etapas 2-6 do EMSA-PKCS1-v1_5-ENCODE na seção 9.2 do rfc3447, em seguida, etapa 2 do RSASSA-PKCS1-v1_5-SIGN na seção 8.2. Em outras palavras, ele faz tudo menos hash os dados (mas verifica o tamanho do hash de entrada). Observe que, se o hash nome especificado aqui for diferente do hash que você realmente usou, a assinatura resultante não será verificada corretamente.

rsautl -sign (semelhantemente padronizado) faz apenas os passos 4-6 e 2. Em outras palavras, ele NÃO adiciona a codificação ASN.1 AlgorithmIdentifier ao hash bruto, então você mesmo precisa fazer isso se quiser assinaturas para serem compreendidas e aceitas pelos outros. pkeyutl -sign SEM -pkeyopt digest também ignora a codificação ASN.1.

Para completar, dgst -$hash -sign ou sua forma abreviada $hash -sign com uma chave RSA faz todo o trabalho: hash, codificação ASN.1, pad 01FF..00 e modexp.

    
por 22.07.2015 / 15:42

Tags