Explicação do sinalizador -hmac no SSL aberto

3

Eu me deparei com o seguinte comando para unix no binance que eu estava tentando descompactar. Veja aqui: link

(Seção: Exemplos de terminal endpoint para POST / api / v1 / order)

openssl dgst -sha256 -hmac

O que eu entendo é que é uma chamada para o comando openssl para produzir um resumo, o resumo será da variedade sha256 conforme acordado pelas especificações padrão. O que não entendo é o -hmac flag. O que é e o que faz até um nível matemático?

Minha tentativa de resolver o problema:

Eu fiz uma pesquisa no google com openssl -hmac e openssl dgst -hmac , mas os 10 melhores resultados não foram úteis para mim. Então, imagino que usuários mais experientes seriam melhores para perguntar.

Atualizações:

O sinalizador não é mencionado nesses documentos: link e, portanto, estou começando a acreditar pode não ter propósito criptográfico. Embora eu não esteja certo agora.

Encontrei o que parece ser a bandeira mencionada em Esta pergunta: link

    
por frogeyedpeas 07.04.2018 / 02:54

1 resposta

4

O HMAC também é chamado de hash com chave. Portanto, você só pode gerar o mesmo hash durante a verificação se tiver a mesma chave usada durante a geração de assinatura. O resultado do MAC é chamado de autenticação tag .

O HMAC é uma construção especial que usa duas chamadas para o hash - no seu caso SHA-256 - que é usado internamente, e não usa nenhuma outra primitivas criptográficas . Por conseguinte, pode ser visto como um modo específico do próprio hash. Daí a inclusão em dgst .

Faltando o seu código estão os dados chave, que é obviamente necessário para criar um hash com chave. Isso deve ser apresentado após -hmac . Infelizmente openssl requer um formato binário da chave. Para mais informações, consulte esta conversa antiga na lista de discussão do OpenSSL .

EDIT # 1: cavando um pouco mais fundo, se você quiser especificar a chave como hexadecimals você poderia usar uma linha como esta:

echo -n "Hello world!" | openssl dgst -sha256 -mac hmac -macopt hexkey:01020304

A saída da função é a saída da segunda execução do hash, portanto, é indistinguível de apenas SHA-256, se você apenas olhar para o tamanho do resultado hash / HMAC. É claro que o conteúdo será completamente diferente de apenas hashing dos dados (ou chave e dados concatenados).

EDIT # 2: No entanto, você não especificou uma chave, então, na verdade, o HMAC é ignorado e o SHA-256 é usado. Isso foi sinalizado como um bug, consulte aqui

    
por 07.04.2018 / 04:08

Tags