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: 66.445 ]

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


Esteganálise e Ataque estrutural



Esteganálise

A evolução da Criptologia se deve, em grande parte, às linhas de pesquisa que visam justamente explorar falhas em seu funcionamento, como a Criptoanálise e a Esteganálise.

Como seus nomes indicam, elas consistem na análise de falhas nos algoritmos de criptografia e esteganografia, respectivamente, seja para interceptar informações, garantir a eficiência de determinado método ou buscar falhas que contribuam com o aprimoramento de futuros algoritmos.

As técnicas de esteganálise exploram o funcionamento do algoritmo empregado para ocultar a informação digital. Portanto, cada técnica é específica para determinado tipo de esteganografia. Os algoritmos que serão discutidos a seguir empregam as análises, também conhecidas como ataques, estrutural, visual e estatística, com foco nas imagens esteganografadas com a técnica LSB.

Conforme descrito anteriormente, a esteganografia LSB (Least Significant Bit) consiste em se ocultar bits de informação nos bits menos significativos de cada tom de cor primária que compõe os pixels de uma imagem. Além de não alterar o tamanho do arquivo (já que reorganiza bits ao invés de adicioná-los), esta técnica produz alterações imperceptíveis a olho nu, mesmo comparando-se a imagem esteganografada com a original.

O processo de esteganálise dessas imagens consiste na busca de padrões que permitam identificar a existência de alguma informação embutida nas imagens suspeitas.

A recuperação da informação esteganografada já é um passo mais complexo, uma vez que ela pode estar disposta de forma imprevista, evitando a obviedade de se utilizar os bits menos significativos dos pixels sequencialmente. Além disso, a mensagem pode estar ilegível, uma vez que as técnicas de esteganografia e criptografia costumam ser empregadas em conjunto para proporcionar uma dupla camada de proteção.

Ataque estrutural

Este tipo de ataque tem como foco a análise das propriedades estruturais do arquivo suspeito, no caso as propriedades das imagens digitais.

Em teoria, uma imagem com dados embutidos nos bits menos significativos não possui diferença no tamanho em disco em relação à original, já que não houve inserção propriamente dita de bits extras. Entretanto, alguns formatos de imagem como o PNG realizam uma compressão sem perdas, agregando padrões repetidos e reduzindo o tamanho em disco da mesma.

Mas enquanto os bits da imagem original seguem uma variação padronizada, os da imagem esteganografada possuem bits que tendem a ser randômicos (os bits de informação nos LSBs), o que dificulta a busca de padrões para compressão. Consequentemente, a imagem esteganografada fica maior que a original (já que a sua compressão não é tão eficiente), o que acaba por denunciar o processo de esteganografia.

Já em formatos de imagem que não empregam técnicas de compressão, como o BMP, não é possível determinar se existem dados embutidos apenas observando o tamanho em disco das imagens.

Neste caso, uma das técnicas mais simples de esteganálise estrutural consiste em comprimir as imagens para o formato ZIP, que como é de se esperar também utiliza compressão sem perdas, e comparar o tamanho dos arquivos comprimidos, seguindo o mesmo princípio de análise das imagens PNG (os formatos ZIP e PNG empregam o mesmo algoritmo de compressão, conhecido como DEFLATE).

O algoritmo a seguir implementa uma rotina para determinar o nível de alteração entre duas imagens analisando a razão dos tamanhos da imagem original e da imagem suspeita, após uma compressão sem perdas nas mesmas. Se o valor retornado for 1, não há indícios de esteganografia. Quanto mais este valor se afastar de 1, maior a quantidade de informações embutidas na imagem suspeita.

A compressão é realizada utilizando o módulo zipfile da biblioteca padrão da linguagem Python.

# coding: utf-8

import os
import zipfile

def ataque_estrutural(img1, img2):
    # Armazena o tamanho das imagens comprimidas;
    tam = []
    
    for img in (img1, img2):
        # Comprime a imagem
        zip = zipfile.ZipFile('imagem.zip', 'w')
        zip.write(img, img, zipfile.ZIP_DEFLATED)
        
        # Obtém o tamanho da imagem comprimida;
        tam.append(float(zip.infolist()[0].compress_size))
        
        # Fecha o arquivo e o remove
        zip.close()
        os.remove('imagem.zip')
        
    # Retorna a proporção entre os tamanhos;
    return tam[1] / tam[0]
Página anterior     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

Como baixar fotos e vídeos do Instagram com Python

ISO8583py - Utilizando Python para o tratamento de mensagens ISO8583

Como isolar seus projetos Python com virtualenv (ambiente virtual)

Interagindo com servidores HTTP com Python

Clicador automático de Tinder com Python

  
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