Esteganografia e Esteganálise: transmissão e detecção de informações ocultas em imagens digitais

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.

[ Hits: 50.004 ]

Por: Rafael José de Alencar Almeida em 30/08/2011 | Blog: http://www.rafael-labs.com


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

Automatizando a criação de uma base de conhecimento em Prolog para gerenciar os acessos a um site

Python: automatizando a extração de informações na web com expressões regulares

Leitura recomendada

Python - Uma linguagem orientada a objetos

Python - Threads

Alimentando Desktopcouch com Zeitgeist

Desenvolvendo aplicações GUI simples em Python & Glade (PyGTK) com banco de dados SQLite

Robótica com Android e Arduino

  
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 !

[9] Comentário enviado por rodrigocontrib em 02/04/2013 - 09:26h

Tenho uma Pergunta,
A analise do objeto estegnografado so pode ser executado apartir de um objeto não estegnografado ou as analises de comparação tem uma autosuficiencia em sua analise, não precisando assim de um objeto original ?

Minha pergunta é porque nas redes sociais existe uma gama de metodos de transmissao de informação de arquivos estegnografados ou não.

[10] Comentário enviado por sprayone1 em 18/10/2016 - 21:54h

Que louco! Muito bom artigo, excelente explanação.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
{BANNER_MODEL3}

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts