Ao usar a openssl
versão 1.0.2m
, criptografei meu arquivo de teste da seguinte maneira:
openssl enc -aes-256-cbc -salt -in test.txt -out test.txt.enc
Apenas inserindo a senha, era o que eu queria.
Agora, a questão é, ao descriptografar o arquivo, no futuro precisarei desse sal ou o que quer que seja? Ou eu realmente não entendo onde esse sal é armazenado.
O sal (ou IV, vetor de inicialização) é usado apenas para randomizar a criptografia. Sem um, entradas idênticas levam a saídas idênticas, que vazam informações (ou seja, o fato de que as mensagens são as mesmas). Acho que já vi isso chamado de "sal" em conexão com hash de senha e geralmente IV em criptografia, mas a ideia é a mesma. Veja, por exemplo , Salt_(criptografia) e vetor de inicialização na Wikipédia. crypto.stackexchange.com e security.stackexchange.com também teriam mais informações sobre ambos.
O salt é armazenado no arquivo de saída, então você não precisa salvá-lo explicitamente. Você pode ver que o arquivo de saída é menor se você der o
-nosalt
sinalizador.A resposta ilkkachu é enganosa. Salt e IV têm dois propósitos completamente diferentes
Esses propósitos são descritos nas páginas vinculadas da Wikipedia
Sal é usado para derivação de chave. Hashing é usado para criar uma chave de criptografia de comprimento fixo a partir da senha fornecida pelo usuário. O propósito do sal é evitar a criação da mesma chave a partir da mesma senha, para proteger contra ataques de tabela de arco-íris. A senha e o sal são concatenados e, em seguida, hash
O vetor de inicialização tem um propósito diferente. A cifra AES transforma (criptografa) um número fixo de bits (bloco) de texto simples usando uma chave de comprimento fixo e o conteúdo do bloco anterior de texto simples. O primeiro bloco não possui bloco anterior, portanto é criptografado usando o IV e a chave
O sal geralmente é armazenado próximo ao início do arquivo criptografado. não é segredo