Steghide é um programa de esteganografia que é capaz de esconder dados em vários tipos de arquivos de áudio e de imagem. As frequências de som e de cor, respectivamente, não são alteradas tornando o arquivo resistente contra testes estatísticos de primeira ordem.
Recursos incluem:
- compressão de dados incorporados;
- criptografia dos dados incorporados;
- checagem de integridade automática usando checksum.
Formatos de arquivos JPEG, BMP, WAV e AU são suportados para uso como arquivo de "cobertura". Não há restrições sobre o formato dos dados secretos.
O algoritmo de criptografia padrão é o Rijndael com uma chave de 128 bits de comprimento (que é AES - Advanced Encryption Standard). Se você não confia nesta combinação por qualquer razão, sinta-se à vontade para escolher outra combinação modo/algoritmo (informações sobre todos os algoritmos e modos possíveis podem ser visualizados pelo comando encinfo):
steghide encinfo
O checksum é calculado usando o algoritmo CRC32.
Neste artigo serão explicadas as opções básicas para utilização do steghide em ambientes
Linux. Para mais informações, veja steghide(1).
Escondendo dados
Para esconder dados num arquivo, você deve usar a opção embed (ou --embed). Assim, um arquivo esteganografado será criado.
Então especifica-se como ocorrerá a incorporação dos dados secretos através das seguintes opções:
-ef, --embedfile filename
Especifica o nome do arquivo cuja mensagem será incorporada. Perceba que o steghide incorpora o nome do arquivo original num arquivo esteganografado. Quando os dados são extraídos (veja abaixo) o tratamento padrão é salvar os dados escondidos num arquivo do diretório corrente que tenha o nome original filename.
Se este argumento é omitido ou nome de arquivo é -, steghide lerá os dados secretos da entrada padrão e, ao extrair, a opção -xf (veja abaixo) deve ser usada.
-cf, --coverfile filename
Especifica o nome do arquivo de cobertura que será usado para esconder os dados. Este arquivo deve ser um dos formatos especificados acima. O formato é identificado pela informação do header, e não na extensão.
Se este argumento é omitido ou nome de arquivo é -, steghide lerá os dados secretos da entrada padrão.
O exemplo a seguir é utilizado para esconder o conteúdo de secret-msg.txt em paisagem.jpg:
steghide embed -ef secret-msg.txt -cf paisagem.jpg
Enter passphrase: abc123
Re-Enter passphrase: abc123
embedding "secret-msg.txt" in "paisagem.jpg"... done
Em geral, o steghide solicita ao usuário por uma senha (passphrase), a qual não é exibida na tela durante a escrita. Esta senha pode ser fornecida por linha de comando, embora isso só seja recomendado em um casos extremos (ex. scripts). Para isso, use a opção -p (ou --passphrase), seguida da senha a ser utilizada.
-sf, --stegofile filename
Especifica o nome para o arquivo esteganografado que será criado. Se omitido quando embed é usado, as modificações serão feitas diretamente no arquivo de cobertura.
Neste comando, o arquivo esteganografado não será o original paisagem.jpg, mas sim natural.jpg:
steghide embed -ef secret.txt -cf paisagem.jpg -sf natural.jpg
Enter passphrase: abc123
Re-Enter passphrase: abc123
embedding "secret.txt" in "paisagem.jpg"... done
writing stego file "natural.jpg"... done
-e, --encryption algo [ mode ] | mode [ algo ]
Especifica parâmetros de criptografia. mode é um dos modos de criptografia e algo é o algoritmo (um dos dois argumentos pode ser omitido). Veja encinfo acima para saber quais modos/algoritmos são implementados. Se você não quer usar qualquer algoritmo ou modo de criptografia, use, -e none.
O comando abaixo faz o mesmo que no primeiro exemplo, mas utilizando, agora, o algoritmo de criptografia Blowfish:
steghide embed -ef secret-msg.txt -cf paisagem.jpg -e blowfish
Enter passphrase: abc123
Re-Enter passphrase: abc123
embedding "secret-msg.txt" in "paisagem.jpg"... done
Extraindo dados
Para extrair os dados, ao invés de embed usa-se extract (ou --extract).
Argumentos adicionais podem especificar o tratamento dos dados esteganografados.
-sf, --stegofile filename
Especifica o arquivo esteganografado, que contém dados escondidos.
Se este argumento é omitido ou filename é -, steghide lerá um arquivo esteganografado da entrada padrão.
-xf, --extractfile filename
Cria um arquivo com o nome filename e escreve os dados escondidos nele. Esta opção sobrescreve o nome do arquivo que é incorporado no arquivo esteganografado (especificado na opção -ef).
Para descriptografar, utilize a opção extract. A seguir, a saída será extraída para um arquivo chamado secret-msg-received.txt:
steghide extract -sf paisagem.jpg -xf secret-msg-received.txt
Enter passphrase: abc123
wrote extracted data to "secret-msg-received.txt".
Referência bibliográfica: adaptação da manpage steghide(1).