maio 27, 2012

[Segurança] Esteganografia

Neste sábado, 26 de Maio de 2012, tive a oportunidade de ir na tosconf[0], um evento bem legal realizado pela primeira vez pelo Laboratório Hacker de Campinas (LHC). O evento foi bem organizado e teve várias palestras interessantes, mas gostaria de destacar neste post uma delas, que falou sobre Esteganografia, proferida pelo Vinícius Berardi.

A palestra foi bem didática e explicou uma das técnicas mais conhecidas de esteganografia, que consiste em esconder mensagens dentro de arquivos de imagens, manipulando os bits que representam as cores de cada um dos pixels que formam uma imagem. Eu achei uma versão desta palestra que o Vinícius apresentou no FLISOL de Campinas:



Esteganografia Com PHP


Esta palestra também me lembrou que há muitos anos atrás eu escrevi um pequeno artigo, bem simples, sobre o assunto, que reproduzo abaixo. Não me lembro exatamente quando escrevi este artigo, que estava publicado em um antigo site pessoal que eu criei no falecido Geocities, mas foi provavelmente em 1999. Eu achei essa pequena preciosidade e faço questão de reproduzir o artigo da mesma forma que ele foi escrito na época, sem nenhuma alteração (somente retirei alguns links a sites que não existem mais; mas preferi não corrigir alguns erros de digitação que achei). Segue abaixo.

Steganography

"Steganography is the art and science of communicating in a way which hides the existence of the communication."

O que é isso?

Esteganografia (Steganography) é uma técnica MUUUUUUUUUITO interessante que consiste em esconder (codificar) um TEXTO dentro do código do arquivo de uma imagem gif. Através de um programa especial (como algum dos listados abaixo), é possível alterar a forma em que os bytes correspondentes a uma imagem são gravados de forma a incluir aí uma mensagem, aproveitando bits normalmente não utilizados.

A imagem continua sendo a mesma, aparentemente. A foto da Tiazinha vai continuar a mesma, ela não vai ficar com um bigode a mais por causa disso. Só alguns bits é que vão estar embaralhados, e isso corresponder à um TEXTO, do tipo "O rato roueu a Roupa do Rei de Roma", ou "João ama Maria". Essa é uma forma muito engenhosa de vc transmitir um segredo por email sem que ninguém saiba (do tipo "ei, hacker, a senha do meu chefe chato é abc123". Só é possível ver o texto escondido na imagem se vc utilizar o mesmo programa que usou para gravar a frase. Se vc tentar abrir a imagem com um editor de imagens qualquer, ela vai estar, aparentemente, normal. Nada vai acontecer.

Segue uma explicação mais técnica, tirada do help do prigrama HIP:

HIP hides the file inside the picture by placing the bits of the file in the least-significant bits of each byte in the picture. Suppose you have a picture containing the following bytes representing color intensities:

200 53 2 195 54 69 191 56

The binary values of these numbers are:

11001000 00110101 00000010 11000011 00110110 01000101 10111111 00111000

To hide the character 109 (in binary 01101101), the least-significant bit of each byte would be replaced by a bit of the character. The result would be:

11001000 00110101 00000011 11000010 00110111 01000101 10111110 00111001

Which corresponds to:

200 53 3 194 55 69 190 57

The difference between the new values and the old ones are at most 1, so it is very difficult, if not impossible, for the human eye to identify any difference from the original picture.

With 256-color pictures, the process is a little more complicated, because the bytes do not represent color intensities, but entries in the palette (a sequence of at most 256 different colors). HIP chooses the nearest color in the palette containing the appropriate least-significant bit.

The HIP header (containing information for the hidden file, such as its size and its CRC) and the file to be hidden are encrypted with the Blowfish encryption algorithm, using the password given, before being written in the picture. Their bits are not written in a linear fashion; HIP uses a pseudo-random number generator to choose the place to write each bit. The values given by the pseudo-random number generator depend on your password, so it is not possible for someone trying to read your secret data to get the hidden file (not even the encrypted version) without knowing the password."

Onde conseguir alguns programas?
  • GifShuf (link inexistente)
  • Hideseek (link inexistente)
  • Gifclean (link inexistente)
  • HIP (Hide In Picture) (link inexistente)


Mais informações....

Um comentário:

Felipe Espósito disse...

Anchises, para complementar, escrevi no meu blog pr0teus.blogspot.com sobre esteganografia no tcp/ip que e o meu tema de mestrado. Vale a Pena conferir

Creative Commons License
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of my employee.