Pergunta

Quais são os básicos e mais simples Algoritmos de Steganografia e métodos?

Quero dizer, a Steganografia aplicada às imagens.

Como funciona um programa simples que oculta dados das imagens? Quais são as principais técnicas usadas? Como o programa Reconhecer a mensagem criptografada na imagem sem a imagem de origem?

Foi útil?

Solução

Quais são os algoritmos e métodos básicos e mais simples de Steganografia? Quero dizer, a Steganografia aplicada às imagens.

Eu escrevi uma biblioteca para isso há muito tempo, para que eu possa descrever o processo.

Basicamente, se você tiver um formato de arquivo, digamos o formato BMP de 24 bits. Primeiro, você precisa de uma maneira de ler e escrever pixels nesse formato de arquivo. Você pode usar uma biblioteca ou escrever o seu próprio depois de aprender qual é o formato do arquivo.

Uma imagem pode ser vista como uma série de pixels. Considere uma imagem de 4x4 pixels:

xxxx
xxxx
xxxx
xxxx

Número desses pixels de 1 a 16:

01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16

Cada pixel numerado acima possui um componente vermelho, um componente verde e um componente azul. Cada um desses componentes é de 1 byte cada e, portanto, cada componente pode ser visto como um valor de 0 a 255. (24 bits = 8 bits para vermelho, 8 bits para verde, 8 bits para azul). Portanto, cada um dos números acima tem 3 conjuntos de valores de 0 a 255.

Portanto, no exemplo acima, com uma imagem 4x4, você tem um total de 16pixels*3COLOR_COMPONENTS = 48 bytes de dados em sua imagem. Normalmente, o que você fará é usar apenas o bit menos significativo de cada componente de cores para codificar sua imagem. Nesse caso, você teria 48 bits de dados disponíveis para você = 6 bytes disponíveis para codificar qualquer mensagem de 6 bytes desejar.

Para facilitar isso, vamos apenas olhar para codificar uma mensagem simples de 3 bits em um único pixel. E vamos supor que estamos usando apenas 1 bit por componente de cores. Digamos que queremos codificar a mensagem de 3 bits: 111

Aqui está um exemplo do valor pixel 1 Acima tem antes de você codificar os dados:

R: 10101011
G: 11111010
B: 00011010

O que você faz é mudar apenas o pouco menos significativo para os novos dados:

R: 1010101 1
G: 1111101 1
B: 0001101 1

O pixel terá a mesma aparência para o olho humano, mas agora você está usando o bit menos significativo para representar os dados que deseja codificar.

Se você deseja codificar mais de 3 bits de dados em um único pixel, também pode fazer isso. O que acontece é que você codificará mais do que apenas o bit menos significativo, você pode usar os menos 2 bits significativos, ou o menos 3 etc. Quanto mais bits você usa, você começará a notar um pouco de diferença no qualidade da imagem. Você pode usar até 7 bits e sua imagem ainda parecerá reconhecível.

Normalmente, você terá muito mais de 3 bits de dados que deseja codificar. Quanto mais dados você deseja codificar, você terá que ter mais pixels ou usar mais bits por pixel para codificar os dados. Digamos que você tenha 9 bits de dados que deseja codificar, bem, se você estiver usando apenas o bit menos significativo, precisará de 3 pixels para codificar essas informações. Se você deseja usar apenas 1 pixel, pode fazer isso usando os 3 bits menos significativos por componente de cores para codificar esses dados.

Para fazer esse tipo de trabalho, você provavelmente desejará criar algumas funções para trabalhar facilmente com bits de dados que abstravam as complexidades de lidar constantemente com operadores bit -bitwise.

A técnica variará para diferentes formatos de arquivo, mas o conceito é o mesmo. A Steganografia também pode se referir apenas a ocultar os dados, por exemplo, em um bloco de extensão GIF. Normalmente, você o esconde variando os pixels da imagem, ou em alguns formatos de arquivo, a tabela de pesquisa de cores.

Algumas imagens têm uma tabela de pesquisa colorida no cabeçalho e, em seguida, os pixels são índices nessas tabelas de pesquisa de cores. O que você pode fazer é reordenar a tabela de pesquisa de cores para que as cores mais semelhantes sejam próximas, você pode codificar dados na própria tabela de pesquisa de cores e nos índices dos pixels. Porque não importa se o índice muda ligeiramente porque a tabela de pesquisa é ordenada de acordo com ser semelhante.

Você realmente precisa entender os formatos de arquivo para fazer esse tipo de trabalho. Ou pelo menos usar uma biblioteca que possa manipular o formato e os dados do arquivo para você. Se você está realmente interessado neste tópico, sugiro começar com um formato de arquivo simples como o BMP e aprender. Você sempre pode encontrar especificações de formato de arquivo em sites como www.wotsit.org.

Como o programa reconhece a mensagem criptografada na imagem sem a imagem de origem?

Você está certo. O programa que decodifica as informações não precisa da imagem de origem. Como isso funciona é que ele simplesmente faz o inverso, o programa precisará saber quantos bits de dados você pode usar e usar o mesmo para decodificar. Ele simplesmente iterará sobre cada pixel e combinará os bits em bytes e escreverá esses bytes em um arquivo.

Outras dicas

Modificando bits menos significativos de pixels de bitmap.

Para uma boa visão geral, veja esta página

Existem literalmente maneiras infinitas de ocultar informações nas imagens.

Uma maneira simples é perceber que alterar o bit menos significativo de cada valor RGB não faz uma diferença perceptível; portanto, definir a parte menos significativa de todos os bytes na imagem nos dá (#-bits-in-image / 8) bits para armazenar dados ocultos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top