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

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


Ataque estatístico e Referências



Ataque estatístico

Este ataque baseia-se na divisão da imagem em blocos e na análise estatística da distribuição dos valores 1 e 0 nos bits menos significativos dos mesmos.

Em imagens "normais", essa distribuição tende a uma predominância de valor, uma vez que as cores dos pixels próximos seguem uma transição gradual. Já em imagens esteganografadas, há uma tendência de balanceamento entre os valores 1 e 0 devido à informação arbitrária embutida nos bits menos significativos, o que pode ser facilmente visualizado através de um gráfico.

O algoritmo abaixo analisa a distribuição de valores nos bits menos significativos de cada linha da figura e gera um gráfico em função do número de bits 1. O gráfico é gerado com a biblioteca gráfica matplotlib, que pode ser instalada nas distribuições Linux baseadas em Debian através do pacote python-matplotlib.

# coding: utf-8

import Image
import pylab

def ataque_estatistico(imagem):
    # Abre a imagem, obtém seus atributos e carrega os pixels para a memória
;     img = Image.open(imagem)
    largura, altura = img.size
    pix = img.load()
    
    # Lista de valores para o eixo y
    coord_y = []

    # Percorre cada linha da imagem
    for y in xrange(altura):
        # Percorre todos os pixels da linha contando a quantidade de bits 1
        cont = 0
        for x in xrange(largura):
            cont += len([cor for cor in pix[x, y][:3] if cor % 2])
        coord_y.append((cont * 100) / (3 * largura))
        
    # Define os rótulos do gráfico
    ytext = pylab.ylabel('LSB valor 1 (%)')
    xtext = pylab.xlabel('Linhas')
    
    # Plota e exibe a imagem
    pylab.plot(xrange(altura), coord_y, 'o')
    pylab.show()

O gráfico da Figura 4 demonstra o resultado do algoritmo em uma imagem sem informações embutidas. Como se pode perceber, a maior parte dos bits menos significativos das linhas analisadas tendem ao valor 1. Já o gráfico da Figura 5 ilustra o resultado do algoritmo de ataque estatístico em uma imagem com o texto da Licença GNU esteganografado.

As linhas que possuem informações embutidas nos bits menos significativos apresentam uma distribuição característica, onde os valores dos bits 1 e 0 tendem a 50%, o que permite determinar quais são as partes da imagem que possuem informações ocultas.
Linux: Esteganografia e Esteganálise: transmissão e detecção de informações ocultas em imagens digitais
Figura 4
Linux: Esteganografia e Esteganálise: transmissão e detecção de informações ocultas em imagens digitais
Figura 5

Referências

Sobre o autor

Rafael Alencar é graduando no Curso Superior de Tecnologia em Sistemas para Internet, no Instituto Federal do Sudeste de Minas Gerias, Campus Barbacena.

Contatos:
http://rafael-labs.com
@rafjaa
Página anterior    

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

Trabalhando com permutações em ordem lexicográfica crescente

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

Embutindo imagens nos scripts Python para aplicações Tkinter

Gerar Códigos QRCode 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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts