Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Fase final da produção de um svcd a 'queima'
Por Al_Qaeda
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Esteganografia e Esteganálise: transmissão e detecção de informações ocultas em imagens digitais
Linux user
rafael.alencar
30/08/2011
Teoria e implementação da técnica de Esteganografia de imagens baseada nos bits menos significativos (LSB), que visa embutir dados em imagens digitais, e das técnicas de Esteganálise (estrutural, visual e estatística), que consistem na busca de padrões que permitam identificar a existência informações ocultas nas imagens suspeitas.
Por: Rafael José de Alencar Almeida | Blog: http://www.rafael-labs.com
[ Hits: 14351 ]
Conceito: 9.9   8 voto(s)8 voto(s)8 voto(s)8 voto(s)8 voto(s) + quero dar nota ao artigo

Introdução, Imagens digitais e os bits menos significativos

Introdução: Criptografia e Esteganografia

Na sociedade tecnológica contemporânea, a informação representa um bem de enorme valor, tanto para o governo, as empresas e os indivíduos em geral. Com o crescente nível de transmissões de dados por redes sujeitas à interceptação, como a Internet, é de grande relevância a busca de tecnologias que permitam a troca de informações confidenciais de forma íntegra e secreta.

Ao longo da história foram desenvolvidas diversas técnicas para se assegurar (e também burlar) o sigilo nas trocas de informações, compondo o ramo da ciência que hoje é chamado de Criptologia. Dentro da Criptologia, a Criptografia e a Esteganografia evoluíram como ramificações paralelas, porém de caráter complementar. Enquanto a Criptografia consiste em se tornar uma mensagem ilegível a um possível interceptador, a Esteganografia visa ocultar a existência da própria mensagem.

A Criptologia em geral se beneficiou enormemente com o advento dos computadores, que permitiram a implementação de algoritmos extremamente sofisticados, seguros e consequentemente complexos. Produto desta nova era, a esteganografia digital, foco deste artigo, consiste em se ocultar informações, criptografadas ou não, em arquivos do computador, como imagens, áudio ou vídeo.

A linguagem Python foi escolhida para a implementação dos exemplos deste artigo devido ser multiplataforma, nativa na maioria das distribuições Linux e principalmente pela sua poderosa biblioteca de manipulação gráfica PIL (Python Imaging Library), que fornece diversos métodos para processamento de imagens.

Imagens digitais e os bits menos significativos

As imagens digitais podem ser classificadas em duas categorias:
  • Vetoriais: Constituídas por descrições geométricas em um sistema de coordenadas cartesianas. Sua principal característica é o redimensionamento sem perda de qualidade. O formato mais popular de imagem vetorial é o SVG.
  • Bitmap: Definidas a partir de uma matriz de pontos finitos denominados pixels (a menor unidade que compõe este tipo de imagem). Quanto mais pixels são utilizados para representar uma imagem, melhor é a sua qualidade. Exemplos de formatos de imagem bitmap são PNG, JPEG e GIF. A técnica de esteganografia que será descrita no presente artigo manipula os bits dos tons de cor de cada pixel da imagem, portanto, o tipo de imagem utilizado será o bitmap.
Em imagens bitmap, a representação das cores tipicamente se dá no padrão RGB (Red, Green, Blue), sistema de cor que, como o próprio nome indica, utiliza combinações em diferentes níveis destas três cores (vermelho, verde e azul) para compor a gama cores que um pixel pode possuir.

Cada um dos três tons de cor que compõe um pixel é representado por um inteiro de 8 bits, o que proporciona 2 ^ 24 cores possíveis (algo em torno de 16 milhões de cores), com 24 bits por pixel. Alguns formatos de imagem como o PNG e o GIF permitem que se adicione transparência às imagens. Também chamada de camada alfa, no formato PNG a transparência é definida em cada pixel, sendo também representada por 8 bits. Neste caso, o pixel possuirá 32 bits.

Dentre os bits que compõem cada pixel, alguns são modificados durante o processo de esteganografia da imagem, para que passem a armazenar alguns bits do dado embutido. O bit menos significativo, do inglês LSB (Least Significant Bit), é aquele que se encontra mais à direita da cadeia binária, já que quando invertido, o valor inteiro por ele representado sofre a alteração de apenas uma unidade. Este é o bit mais conveniente para o emprego da esteganografia, pois quando modificado produz alterações mínimas nas cores da imagem, praticamente imperceptíveis à visão humana.

A esteganografia LSB consiste em se ocultar os bits da informação a ser embutida nos bits menos significativos de cada um dos três tons que compõe a cor dos pixels. Assim, cada pixel da imagem comporta 3 bits de informação, de onde se calcula a capacidade de "armazenamento" de informação da imagem como 3 vezes o número de pixels que ela possui.

É interessante destacar que não ocorre alteração no tamanho da imagem após a esteganografia, uma vez que os bits menos significativos terão apenas seu valor alterado pelo valor da informação embutida, não havendo, portanto, inserção de bits extras. Eventualmente, mais bits ou até mesmo a camada alfa podem ser modificados para aumentar a capacidade de armazenamento de informação em cada pixel. Entretanto, quanto mais bits forem modificados, maiores as chances da técnica ser descoberta, visto que as alterações se tornarão mais perceptíveis aos olhos humanos.

Como todos os arquivos digitais são representados sob a forma de bits, é possível ocultar qualquer arquivo (documentos de texto, outras imagens, áudio, etc.) em uma imagem utilizando a técnica LSB, desde que respeitada a proporção entre os tamanhos da informação a ser embutida e da imagem.

A Figura 1 esquematiza o funcionamento da esteganografia LSB, onde a string "Tux" é embutida em uma imagem com o logotipo da linguagem Python.

Conforme já foi mencionado, a mensagem deve estar representada sob a forma de bits para ser embutida na imagem. Assim, o código ASCII de cada letra é convertido em binário, e cada pixel tem seus três bits menos significativos substituídos por três bits da mensagem.
Linux: Esteganografia e Esteganálise: transmissão e detecção de informações ocultas em imagens digitais
Figura 1
Próxima página >>




Páginas do artigo
   1. Introdução, Imagens digitais e os bits menos significativos
   2. Implementação da técnica de Esteganografia LSB
   3. Esteganálise e Ataque estrutural
   4. Ataque visual
   5. Ataque estatístico e Referências

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por wadilson em 30/08/2011 - 23:29h:

Rafael, muito bom.

Só não digo que esse post é uma aula por que de fato são várias aulas.

Sensacional. Para ler, guardar e usar.

[2] Comentário enviado por mauricio1241 em 31/08/2011 - 10:12h:

Muito bom mesmo =D

[3] Comentário enviado por patricia.malvina em 31/08/2011 - 11:02h:

Conhecia o seu projeto mas não com esse detalhamento tão completo. Parabéns, Rafael.

[4] Comentário enviado por rafael.alencar em 31/08/2011 - 13:01h:

Pessoal, obrigado pelos comentários!
Patrícia, que bom que você ainda não se cansou de tanto ouvir sobre Esteganografia e Esteganálise :D

[5] Comentário enviado por julio_hoffimann em 31/08/2011 - 20:07h:

Parabéns Rafael!

Fazia tempo que não lia um artigo tão interessante no Viva o Linux! Muito bom mesmo! Além de explicar os conceitos de forma clara, você forneceu o código, o que extermina qualquer dúvida. :-)

Abraço!

[6] Comentário enviado por JohnRobson em 01/09/2011 - 19:22h:

http://www.larc.usp.br/~pbarreto/Tese.pdf

[7] Comentário enviado por rafael.alencar em 01/09/2011 - 19:46h:

Olá John,

Excelente material esta tese de doutorado. É bem legal saber que há acadêmicos brasileiros trabalhando nesta área.
Se eu conseguir destrinchar as notações matemáticas vou implementar os algoritmos descritos na tese.
Obrigado por compartilhar!

[8] Comentário enviado por malfatti-filho em 03/09/2011 - 23:38h:

Caramba , coisa de doido

Parabens , Tá tão bem explicado que lendo a gente agrega muita informação

Parabens !


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.