Esteganografia

3. Técnicas

No período que engloba os séculos XVI e XVII, já existia uma extensa literatura na área de esteganografia. Em seu livro Schola Steganographica, Gaspar Schott explica algumas das técnicas praticadas, entre elas, como informações podem ser escondidas através de partituras, onde cada nota representa uma letra, ou através de desenhos geométricos, usando pontos, linhas ou triângulos que em diferentes situações representam as diferentes letras [PETITCOLAS et al. 1999]. As técnicas empregadas na esteganografia vêm sendo desenvolvidas desde a antigüidade, como mostrado na Introdução.

Este trabalho está focado nas técnicas de esteganografia digital, como dito anteriormente, que se baseiam em algum meio digital para que a informação seja camuflada. Estas técnicas podem ser divididas de acordo com o critério utilizado para esconder o conteúdo que se deseja transmitir [WAYNER 2002]. Abaixo, são citados alguns desses critérios, que serão explicados adiante.

  • Ruído: é uma técnica simples que consiste em substituir o ruído em uma imagem ou em um arquivo de áudio pela informação que se deseja transmitir;
  • Espalhando a Informação: mecanismos mais sofisticados espalham a informação nos pixels de uma imagem ou em partes de arquivos de áudio;
  • Ordenação: consiste em transmitir a informação através da ordem em que os elementos de uma lista são dispostos;
  • Dividindo a Informação: divide a mensagem em partes que seguem caminhos diferentes até o destino; algumas técnicas mais sofisticadas possibilitam, inclusive, que a informação seja reconstruída a partir de uma fração do total de pacotes em que a mensagem foi dividida.

A combinação das técnicas expostas acima permitem diferentes níveis de segurança, gerando informações ocultas difíceis de serem decifradas. Uma imagem digital que se deseja transmitir secretamente, por exemplo, pode ser escondida em uma lista, que, por sua vez, pode ser armazenada no ruído de um segundo arquivo, o qual pode ser transmitido de forma a ocultar a fonte da informação.

É importante ressaltar que os algoritmos de esteganografia fornecem segurança e sigilo à informação em um grau que é difícil de ser medido. Uma das formas de verificar esse grau é usar a esteganálise imaginando uma série de possíveis ataques que um algoritmo pode sofrer. Todavia, esse método não pode garantir que o algoritmo não terá falhas na segurança e no sigilo da informação contra todo e qualquer ataque, uma vez que pode existir algum que não foi considerado.

Sempre é possível detectar uma técnica esteganográfica, pois ela altera propriedades estatísticas do meio original [PROVOS et al. 2003]. Todavia, tendo em vista que os melhores ataques (tentativa de descobrir os dados ocultos e/ou de removê-los) são aqueles específicos para a técnica, se a técnica é mais difícil de ser detectada, ela será mais eficiente na tentativa de proteger a mensagem, pois o atacante terá que usar um método mais geral e, portanto, menos eficaz.

3.1 - Ruído

Mídias digitais, como fotografias, filmes e música, possuem uma quantidade significativa de ruído gerada de sua conversão em sinal digital. Esconder a informação que se deseja transmitir nesse ruído é, provavelmente, a técnica esteganográfica mais utilizada [WAYNER 2002].

Muitas fotografias coloridas digitais possuem 32 bits alocados para cada pixel. Desses 32 bits, existem 8 bits usados para guardar cada uma das quantidades de vermelho, azul e verde, ou das quantidades de ciano, magenta e amarelo, de cada pixel. Com isso, são usados 24 bits. Se apenas um bit de cada uma das cores for alocado para esconder informação, essa quantidade corresponderá a 10% de todo o arquivo [WAYNER 2002].

Uma questão que pode ser levantada é o quanto a aparência da imagem pode ser afetada com o uso de 10% de seu total de bits para transmitir um conteúdo escondido. Cada 8 bits armazena um número entre 0 e 255. O bit mais significativo equivale a 128, caso seu valor seja igual a 1. O bit menos significativo, por sua vez, altera a imagem cerca de 0.5% a 1%. Conclui-se, portanto, que usar 10% do tamanho em bits de uma imagem e obter como resultado visual final uma modificação aproximada de 1% é uma solução eficiente [WAYNER 2002].

Um problema enfrentado ao se fazer uso desta técnica diz respeito à possível dificuldade de se encontrar ruídos que possam ser utilizados para esconder a informação. Essa dificuldade pode estar relacionada à quantidade de ruído disponível ou à qualidade do ruído que se encontra no arquivo. Apesar de ser extensa a quantidade de ruído disponível nos bits menos significativos de arquivos digitais, algoritmos de compressão visam a eliminação desses espaços extras, o que pode acabar levando à perda de informação. Com isso, algumas pessoas tendem a esconder a informação em partes mais perceptíveis da imagem, que não serão eliminadas pelos algoritmos de compressão, mas que, por outro lado, pode facilitar a detecção da esteganografia [WAYNER 2002].

3.1.1 - Least Significant Bits

Uma das técnicas de esconder informações em imagens JPEG, usando o ruído, é conhecida como LSB (Least Significant Bits). Ela consiste em usar os bits menos significativos para guardar os dados que se deseja camuflar. Em uma imagem JPEG, trocar os bits menos significativos pode mudar a intensidade de um pixel em no máximo 1%, como já foi dito anteriormente. Isto faz com que a técnica seja uma ótima solução esteganográfica, uma vez que a imagem fica praticamente inalterada, principalmente no que diz respeito à percepção visual do ser humano [WAYNER 2002].

A idéia se baseia na propriedade de que imagens JPEG possuem redundância. Para cada componente de uma cor, a imagem JPEG usa a transformada de cosseno discreta (Discrete Cosine Transform – DCT) para transformar blocos sucessivos de 8 x 8 pixels da imagem em 64 coeficientes de uma DCT. Assim, os bits menos significativos dos coeficientes das DCT podem ser utilizados como bits redundantes para esconder uma mensagem. Esse tipo de técnica não deixa rastros perceptíveis para análises visuais do arquivo, uma vez que as modificações estão concentradas no domínio da freqüência, e não no domínio espacial [PROVOS et al. 2003].

Existem diversas implementações possíveis no sentido de usar os bits menos significativos dos coeficientes das DCT. Uma delas consiste em substituir seqüencialmente esses bits com os dados das mensagens. Esse algoritmo é o mais simples de todos, e conseqüentemente o mais fácil de ser detectado. Ataques estatísticos utilizando o teste do chi-quadrado (χ²) podem detectar diferenças entre as freqüências dos coeficientes. Estudos mostram que a probabilidade calculada, a partir desses testes, de haver mensagens escondidas é grande, o que torna a técnica suscetível a ataques e, portanto, não muito eficiente [PROVOS et al. 2003].

Outra possível implementação se baseia em usar um gerador de números randômicos para selecionar os coeficientes da DCT. Dessa forma, os testes χ² usados para a técnica seqüencial não conseguem detectar a presença de uma mensagem. Porém, outros tipos de testes podem ser aplicados de maneira a detectá-la.

Existem ainda outros métodos mais sofisticados para o LSB. Um deles decrementa o valor absoluto de um bit menos significativo do coeficiente de uma DCT em um processo conhecido como codificação de matriz. Existem ainda algoritmos em estudo que tentam achar a melhor configuração entre os coeficientes de maneira a minimizar as mudanças nas estatísticas da imagem [PROVOS et al. 2003].

3.1.2 - Bit-Plane Complexity Segmentation

Uma imagem que é composta por pixels de n bits pode ser decomposta em n imagens binárias, uma imagem relacionada a cada bit. Portanto, teremos os chamados planos de bits, desde o mais significativo, até o menos significativo. Quanto mais próximo o plano está do menos significativo, maior é a quantidade de ruídos encontrada. A Figura 2 mostra uma imagem e alguns planos de bit em relação à sua componente vermelha.

Figura 2. Exemplo de planos de bits: (a) mostra a imagem original; (b) mostra um plano de bits mais próximo ao mais significativo; (c) mostra um plano intermediário; (d) mostra um plano de bits mais próximo ao menos significativo. [Referência da Figura 2]

O BPCS (Bit-Plane Complexity Segmentation) é uma técnica de esteganografia que utiliza o critério do ruído nos planos de bits. Ele se baseia principalmente na natureza da visão humana: um ser humano não consegue perceber um rastro de informação em um padrão binário complicado e complexo, o que é característico de um ruído. Portanto, a idéia é dividir os planos de bits de uma imagem BMP, PNG ou JPG em regiões com ruídos e sem ruídos, guardando os blocos de dados, provenientes das mensagens que se deseja camuflar, nas regiões que possuem ruídos. Dessa forma, não haveria como identificar a presença de mensagens escondidas, já que as regiões complexas das imagens foram substituídas por outros padrões binários, o que é invisível para o olho humano [KAWAGUCHI et al. 1999].

Através dessa técnica, a qualidade da imagem não é prejudicada. A razão dessa característica diz respeito à inserção das mensagens, a qual é realizada até que a imagem tenha somente dados indispensáveis. Experimentos mostraram que essa técnica consegue fazer com que a capacidade de uma imagem true color para esconder uma informação seja de até 50% ou mais, bem maior do que a capacidade de 5-15% geralmente obtida pelas outras técnicas. É válido destacar que isso é feito sem aumentar o tamanho da imagem [KAWAGUCHI et al. 1999].

A Figura 3a mostra uma imagem BMP de 839.862 bytes (648x432). Através da utilização da técnica BPCS, um arquivo PDF de 361.139 bytes, ou seja, aproximadamente 43% da capacidade da imagem, foi camuflado dentro da mesma, resultando na imagem mostrada na Figura 3b. A olho nu, elas não possuem diferenças, e a imagem resultante possui 839.862 bytes, ou seja, o mesmo tamanho da imagem original. Caso o atacante tenha em mãos o arquivo original, a suspeita de que alguma técnica esteganográfica foi empregada diminui drasticamente.

Figura 3. Exemplo da técnica BPCS: (a) mostra a imagem original, e (b) mostra a imagem resultante.

3.2 - Espalhando a Informação

Nesta técnica de esteganografia digital, a informação é separada em partes e alocada em quantidades que podem ser frações. Na prática, esses números são aproximados [WAYNER 2002].

Os algoritmos utilizados baseiam-se em uma série de técnicas desenvolvidas por engenheiros de rádio que também enfrentaram problemas em esconder informações. Eles fizeram uso do espectro de freqüências das ondas de rádio, por onde toda a energia é distribuída. Dessa forma, o sinal a ser transmitido é codificado em um sinal similar a um ruido de radio e é, então, transmitido pelo espectro de freqüências, com o objetivo de obter uma comunicação mais confiável, mais eficiente e mais secreta [WAYNER 2002].

Muitas dessas técnicas de espalhamento de espectro de rádio são usadas em esteganografia digital. Em alguns casos, são usadas diversas freqüências em um determinado tempo, onde cada freqüência transmite um pedaço da informação. Ao fim, a mensagem é obtida através da combinação das informações [WAYNER 2002].

Alguns aspectos importantes de um sistema de espalhamento de espectro são: a escolha das localizações, a identificação da intensidade do sinal e o estudo da resposta humana. Se uma informação será espalhada por um documento, é preciso escolher os locais que serão responsáveis por carregar esta informação. Esses locais podem ser um bloco de pixels ou uma seção em um arquivo de áudio, por exemplo. Além disso, a identificação da intensidade do sinal que se deseja transmitir também é importante. As técnicas de espalhamento tentam esconder a informação dentro do ruído e, portanto, o sinal deve ser menor que a quantidade de ruído disponível para seu armazenamento [WAYNER 2002].

Muitas soluções usando o espalhamento de espectro para arquivos de áudio e vídeo estudam os limites dos sentidos humanos, tentando ajustar seus sinais de tal forma que continuem além desses limites. Contudo, a sensibilidade auditiva e visual varia entre as pessoas. Há casos em que é desenvolvida uma solução que permanece além dos limites dos sentidos de seus desenvolvedores, mas que, por outro lado, é facilmente detectada por outras pessoas [WAYNER 2002].

Um sistema digital de espalhamento de espectro segue, não só os passos da escolha da localização, da identificação do sinal e do estudo da resposta humana, mas também o passo da inclusão da informação no arquivo onde será escondida, fazendo modificações simultâneas em todas as partes do mesmo. A remoção do sinal é feita usando os mesmos passos, com o intuito de encontrar as localizações corretas no arquivo [WAYNER 2002].

3.3 - Ordenação

Ordenar dados que não precisam ter uma determinada ordenação é uma das técnicas empregadas em esteganografia. O primeiro passo é mapear cada permutação de um conjunto de objetos em um inteiro positivo. Esse mapeamento é, então, usado para transmitir o conteúdo escondido, alterando a ordenação dos objetos, os quais, para o meio de transmissão, não apresentam uma ordenação específica [ARTZ 2001]. É importante observar que esta técnica apresenta uma limitação determinada pelo número máximo de permutações que podem ser feitas.

A Figura 4 mostra um exemplo da aplicação desta técnica para representar um bit de dado. A ordem dos atributos alt e name determina o valor do bit. A primeira linha pode representar o bit 0, enquanto a segunda pode representar o bit 1.

Figura 4. Exemplo de esteganografia usando ordenação de elementos.

Em geral, esta técnica não altera a qualidade da informação que está sendo transmitida; entretanto, a informação pode ser perdida facilmente caso o meio seja codificado novamente. Pode ser citado o exemplo de uma imagem GIF cujo mapa de cores contém uma informação escondida. Se esta imagem for aberta em um editor de imagens e salva novamente, visualmente não serão notadas modificações em relação à imagem anterior. Por outro lado, a ordenação pode ter sido perdida [ARTZ 2001].

3.4 - Dividindo a Informação

Um método esteganográfico que pode ser bastante eficiente é dividir a informação em pequenas partes, de modo que ela só possa ser obtida novamente se o receptor possuir todas, ou talvez algumas, partes em suas mãos. Uma técnica de álgebra linear pode ser usada para que uma pessoa esconda uma mensagem, de tal forma que somente o receptor que tenha a correta combinação das partes possa descobrir essa mensagem. Por exemplo, pode-se desenvolver um sistema esteganográfico de arquivos com esse objetivo. A partir de um grande bloco de um disco rígido, esse sistema pode torná-lo randômico e criar senhas para os arquivos. Dessa forma, somente a pessoa que possua a senha para um determinado arquivo pode achá-lo. Esse sistema, por ser mais simples, é muito suscetível a ataques. Outras técnicas mais sofisticadas estão sendo desenvolvidas ultimamente, inclusive usando criptografia [WAYNER 2002].

A Figura 5 mostra um esquema simples de como o processo de dividir a informação pode ser usado para a área de esteganografia.

Figura 5. Esquema simples da divisão da informação aplicada à esteganografia. Adaptado de [ARTZ 2001]

3.5 - Outras Técnicas

Além das técnicas já mencionadas, podem ser citados programas que escondem dados em um arquivo de texto e programas que escondem a informação em pacotes TCP. Este último caso pode ser considerado bastante efetivo se os dados continuarem intactos durante a transmissão. Entretanto, durante uma transmissão, pacotes podem ser reescritos, o que reduz a chance de manter os dados no cabeçalho do pacote [ARTZ 2001].

Uma outra técnica esteganográfica existente consiste em esconder a informação no lugar de números randômicos, os quais foram gerados por programas específicos com a finalidade de dar mais realismo a cenas de jogos. Personagens de monstros, por exemplo, ficam mais bem representados quando os números rândomicos adicionam manchas, verrugas e cicatrizes à sua face. Logo, informações podem ser escondidas nessas partes [WAYNER 2002].

Pode-se citar ainda uma técnica que usa o eco para esconder informações. Ela usa o princípio de que o ouvido humano não percebe pequenos ecos que sejam da ordem de um milissegundo. Assim, ela consiste em introduzir dois tipos de ecos curtos que possuem diferentes atrasos, a fim de que os bits 0 e 1 possam ser representados. O espaço entre esses bits é determinado de forma randômica [PETITCOLAS et al. 1999].