Universidade Federal do Ceará
Departamento de Computação
Mestrado em Ciências da Computação

SEA54: Um método  subliminar  DE  ESTEGANOGRAFIA  EM  imagens digitais estáticas.

Monografia de Dissertação de Mestrado

José Marconi Marinho Rodrigues

Orientador: 
Prof. Riverson Rios

Co-orientador: 
Prof. Creto Vidal

20 de dezembro de 2002

Resumo

A evolução da computação gráfica e do processamento de imagens fez nascer uma crescente demanda pela proteção aos direitos da propriedade intelectual em imagens digitais. Além disto, a descoberta de meios seguros e imperceptíveis de comunicação tem sido um desafio para os pesquisadores da área de Information Hiding (Informações Camufladas). O aumento pelo interesse nesta área é devido à grande procura por meios de comunicação de maneira secreta para estratégias militares, de marketing e principalmente para Internet. Uma forma de transmissão segura de informação consiste na inserção de dados camuflados dentro do conteúdo de arquivos sem que sejam percebidos (esteganografia). Neste trabalho propomos um novo método de esteganografia, denominado de SEA54, para imagens digitais estáticas, baseado no domínio espacial e na percepção humana. Procurou-se, ainda, descrever as recentes pesquisas e desenvolvimentos neste campo. Apresentamos os resultados obtidos através de Testes Subjetivos, que são baseado nos níveis de percepção humana e na comparação com outros algoritmos existentes. Uma implementação na linguagem C++ também é apresentada. 

Abstract

The evolution of computer graphics and image processing has created a persistent demand for protection of intellectual property rights on digital images. Furthermore the discovery of safe and imperceptible formats for the concealment of secret communication has been a challenge for Information Hiding researchers. The increased interest in this area is due to a great demand for means of communication in a covert way for military strategies, marketing and mainly for the Internet.  One way to safely transmit information is to secretly embed data into the contents of a file without being noticed (Steganography). In this work, we propose and implement a new Steganographic method, called SEA54, for static digital images, based on the spatial domain and in the human perception. Particularly, we describe recent research developments in the Steganography field. We present the results obtained through Subjective Tests that are based on the levels of human perception and in the comparison with other existing algorithms. The implementation was written in the C++ language.

Agradecimentos

Gostaria de manifestar meus sinceros agradecimentos a todos que de alguma forma contribuíram para o êxito deste trabalho e, em especial: 
•	ao Grande Arquiteto do Universo, pela luz e proteção, que me levaram à finalização deste trabalho;
•	aos meus pais e às minhas filhas, pelo apoio e carinho ao longo de todos estes anos, os mais sinceros agradecimentos;
•	à minha Andréa, namorada, companheira e mulher, que pela confiança, força e apoio ao longo deste período me fez acreditar que este trabalho poderia ser feito. Todas estas páginas são dedicadas a você; 
•	aos meus colegas e bolsistas do Centro de Processamento de Dados da PRG/CCV/UFC por terem compreendido o afastamento temporário e momentos austeros causados pelo meu envolvimento nesta dissertação; 
•	ao meu orientador, Prof. Dr. Riverson Rios,  pela atenção concedida, pela orientação e pela oportunidade e à Prof. Dr.ª Elza Braga pelo incentivo.

Sumário
Resumo	II
Abstract	III
Agradecimentos	IV
Sumário	V
Índice de Figuras	VII
Índice de Tabelas	VIII
1  introdução	1
1.1 Caracterização do Problema	1
1.2 Apresentação	2
1.3 Motivação	2
1.4 Objetivo	3
1.5 Estado da Arte	4
1.6 Organização desta Dissertação	5
2  Imagens Estáticas	7
2.1 Conceitos Básicos	7
2.2 Como Enxergamos as cores	9
2.3 Padrões de cores	9
2.3.1 High Color (16 bits)	9
2.3.2 True Color (24 bits)	10
2.3.3 True Color (32 bits)	10
2.3.4 Escala de Cinza (GrayColor)	10
2.3.5 Imagens Baseadas em Palhetas (indexada)	11
2.4 Formatos de arquivos	12
2.4.1 Formato PPM	12
2.4.2 Formato PNG	13
2.5 Compressão de Arquivos	14
3  Esteganografia	15
3.1 Introdução	15
3.2 Estratégias	16
3.2.1 Espaços em disco	17
3.2.2 Pacotes	17
3.2.3 Áudio	17
3.2.4 Textos	17
3.2.5 Aplicativos	18
3.3 Esteganografia, Marcas D’água e impressão Digital	18
4  Esteganografia em Imagens Estáticas	21
4.1. Técnicas	22
4.1.1 Métodos no Domínio Espacial (Spatial domain)	23
4.1.2 Métodos no Domínio da FreqÜencia (Frequency domain)	28
4.1.3 mascaragem da percepção (Perceptual Masking Systems)	31
4.2. Critérios de avaliação	31
4.2.1 Invisibilidade ou Transparência	32
4.2.2 Indetectabilidade	32
4.2.3 Capacidade do Recipiente	32
4.2.4 Complexidade Computacional	33
4.2.5 Robustez	33
4.2.6 Resistência à Adulteração	33
4.3. Métodos de Detecção e Forma de Evitá-los	34
4.3.1 Distorção na Imagem e Ruídos	35
4.3.2 Análise Estatística das Propriedades	38
4.3.3 Histograma	39
5  Método Proposto	41
5.1 Introdução	41
5.2 Apresentação do Método	42
5.2.1 Assertivas	44
5.3 Justificativa	45
5.3.1 Representando 0 e 1	47
5.4 Algoritmo de Seccionamento da Imagem	51
5.4.1 Fator de Embutimento	52
5.4.2 Fator de Embutimento igual a 2 (Algoritmo de ALternância)	53
5.4.3 Fator de Embutimento igual a 3 (secionamento da imagem)	53
5.4.4 Segurança	56
5.5 Algoritmo para embutir a mensagem	57
5.5.1 Exemplo	60
5.6 Algoritmo de Extração da Mensagem	61
5.7 Análise da complexidade dos algoritmos	63
5.8 Implementação	64
6  Experimentos	67
6.1 Introdução	67
6.2 Invisibilidade ou Transparência	67
6.3 Indetectabilidade	71
6.3.1 Distribuição Binomial	72
6.3.2 Análise do Histograma	73
6.4 Comparação com Outros Métodos	75
6.4.1 MSE e PSNR	76
6.4.1 Matriz de Erros	77
7  Conclusão	79
7.1 Trabalhos futuros	81
8  Referências BibliogrÁficas	82

Índice de Figuras

Figura 01: Quadro explicativo de imagens tipo bitmap	7
Figura 02: Característica dos níveis de cinza	10
Figura 03: Imagem baseada em palheta de cores	11
Figura 04: Layout do formato PPM.	13
Figura 05: Ilustração do problema dos prisioneiros.	16
Figura 06: Quadro explicativo de informações camufladas (Information Hiding)	19
Figura 07: Esquema gráfico do modelo de esteganografia	21
Figura 08: Imagens inadequada e adequada para esteganografia.	22
Figura 09: Esboço do método regiões e bits de paridade	25
Figura 10: Esteganografia em imagens baseadas em palhetas	27
Figura 11: Seção de 8 X 8 pixels de uma imagem	29
Figura 12: Os ceficientes gerados pela TDC.	29
Figura 13: Tabela padrão de quantização utilizado pelo JPEG	30
Figura 14: Resultado da quantização	30
Figura 15: Representação de um pixel e sua vizinhança.	35
Figura 16: Imagem da direita possui 1% de ruído gerado de forma aleatória.	36
Figura 17: Anomalias que podem ser causadas por processos de esteganografia.	36
Figura 18: Matrizes de erros geradas pelos métodos SEA54, InfoStego e Secrets.	37
Figura 19: Histograma dos três canais (RGB)	40
Figura 20: Seccionamento da imagem em regiões uniformes.	51
Figura 21: Processo de alternância para E(l) = 2.	53
Figura 22: Imagem 4 X 19 secionada por área.	54
Figura 23: Imagem representada por um  vetor unidimensional	54
Figura 24: Distribuição uniforme dos bits da mensagem obtida pelo algoritmo.	56
Figura 25: Mostra a Matriz de Conversão Direta	59
Figura 26: Tela principal do aplicativo que embute a mensagem (SEA54Extract).	65
Figura 27: Tela do SEA54Embed com a imagens original e portadora.	I
Figura 28: Tela principal do programa de extração SEA54Etract.	66
Figura 29: Histograma do canal azul das imagens do Grupo I.	74
Figura 30: Histograma do canal azul das imagens do Grupo II.	74
Figura 31: Matrizes de Erros das imagens do Grupo I.	77
Figura 32: Matriz de Erros de duas imagens do Grupo II.	78

Índice de Tabelas

Tabela 01: Formatos de arquivos de imagens e algumas de suas características	12
Tabela 02: Coeficientes de erro da quantização.	28
Tabela 03: Relaciona os bits da imagem com os bits da mensagem.	44
Tabela 04: Disposição dos bits 5 e 4	45
Tabela 05: Mostra a conversão de decimal para binário	46
Tabela 06: Combinações possíveis dos elementos de P	47
Tabela 07: Conversão do canal azul para binário	47
Tabela 08: Resultado aplicando a Combinação  II	47
Tabela 09: Resultado aplicando a Combinação I - (0,0) ou (0,1)	48
Tabela 10: Resultado aplicando a Combinação III – (0,0) ou (1, 1)	48
Tabela 11: Resultado aplicando a  Combinação IV – (0,1) ou (1,0)	48
Tabela 12: Resultado aplicando a Combinação V – (1,0) ou (1,1)	48
Tabela 13: Representação binária de um canal RGB de um pixel da imagem	49
Tabela 14: Representação binária de um canal RGB (extremos).	50
Tabela 15: Limites inferior e superior excluídos por terem variação acima de 4.	50
Tabela 16: Exemplo de cálculo do pixel a ser alterado	56
Tabela 17: Agrupamento dos pixels originais da imagem	58
Tabela 18: Imagens do Grupo II.	69
Tabela 19: Resultados das imagens do Grupo I.	70
Tabela 20: Resultados das imagens do Grupo II.	70
Tabela 21: Distribuição de freqüencia dos testes subjetivos.	71
Tabela 22: Desvio padrão esperado e calculado das imagens do Grupo I.	72
Tabela 23: Desvio padrão esperado e calculado  para imagens do Grupo II.	73
Tabela 24: Seção da Tabela-12 do Capítulo-5.	75
Tabela 25: Resultados do PSNR de vários métodos.	76
Tabela 26: PSNR de uma imagem com variação de 1.	77

Capítulo  1

1  introdução

1.1 Caracterização do Problema

A era da informática fez crescer a necessidade de se esconder informações em informações [NEIL-1]. A procura por uma forma de comunicação segura e sigilosa é importante, não apenas para propósitos militares, mas também para propósitos comerciais relacionados à estratégia de mercado e aos direitos autorais, principalmente no meio digital.

O crescente mundo conectado e a facilidade de alteração e distribuição de dados em redes de computadores fez nascer uma indústria de pirataria que, pelas estatísticas recentes, indica que quase a metade dos softwares em uso no mundo são piratas. Além disso, estima-se que as indústrias de vídeo, música e jogos eletrônicos perdem anualmente dezoito bilhões de dólares em todo o globo. Em contrapartida, estas indústrias vêm, ao longo dos anos, procurando minimizar suas perdas por meio de numeração ou de marcas que identifiquem a propriedade de seus produtos. Um dos grandes desafios dos usuários de computadores, principalmente para artistas criadores de imagens digitais, é a constituição de marcas que possam ser introduzidas nos arquivos, possibilitando a identificação dos seus autores. Atualmente há duas correntes que trabalham com o objetivo de definir características para estas marcas. A primeira defende que estes carimbos digitais devam ser aparentes, para que o usuário, de antemão, já saiba os detentores da propriedade da imagem. A outra corrente, ao contrário, defende a total camuflagem destas marcas (esteganografia), evitando que seja percebida sua existência, dificultando, assim, sua adulteração ou eliminação [NEIL-2]. Estes grupos vêm pesquisando métodos no intuito de criar marcas robustas e consistentes.

É válido ressaltar que muitas dessas marcas digitais ou mensagens sigilosas são detectadas, apagadas ou até mesmo alteradas de forma imperceptível, evitando suas identificações. 

Nesse cenário em que é evidenciado o interesse à proteção aos direitos de propriedade e ao envio de forma sigilosa de informações confidenciais, é extremamente necessária a procura de técnicas diferenciadas que proporcionem segurança contra as formas de detecção. Este é o objeto central de estudo desta dissertação.

1.2 Apresentação

Esteganografia é a ciência que estuda as várias formas e técnicas de se esconder camufladamente informações de maneira que não possam ser detectadas, isto é, nem mesmo a intenção da comunicação possa ser captada. O objetivo da esteganografia em meio digital é esconder, de maneira imperceptível, mensagens secretas na forma de imagens, sons e textos, dentro de arquivos multimídia (também chamados de arquivos portadores). Pode-se afirmar que qualquer informação que possa ser representada de forma binária é plausível de camuflagem.

Muitos confundem esteganografia com criptografia. A criptografia consiste da mesclagem do arquivo original, por intermédio de chave(s) e de uma função criptográfica, tornando-o ilegível [STINSON]. Já a esteganografia, como foi definida anteriormente, trata de acobertar a existência de informações sigilosas dentro das informações visíveis. Portanto, a principal diferença entre ambas é que na criptografia sabe-se da existência de uma mensagem, ou seja, a mensagem pode ser detectada, decriptada e alterada. Pode-se por meio de mnemônicos ligar a palavra ilegível à criptografia e imperceptível à esteganografia. Alguns autores, inclusive, sugerem criptografar a mensagem antes de esteganografá-la.

1.3 Motivação

A esteganografia vem ganhando importância devido à popularização da Internet e ao crescente uso de redes digitais para envio e recepção de informações. A necessidade de se ocultar informações confidenciais, para que possam trafegar seguramente em meio digital sem serem notadas, provocou o crescimento da procura pela esteganografia. Vários novos algoritmos com fins de camuflar dados têm sido criados. Além disso, diversos melhoramentos para os já existentes, que usam o bit menos significativo por exemplo, estão sendo propostos, com ênfase em arquivos de desenhos e de imagens, pois possibilitam a dissimulação de um grande volume de informações.

Em 1999, na Mount Sinai School of Medicine in New York, foram camufladas algumas mensagens no código do DNA humano, utilizando a técnica denominada de “genomic steganography” [BANCROFT]. Isso mostra como a procura constante por métodos para intercâmbio de informações confidenciais de forma sigilosa e segura gerou um espaço promissor para a utilização da esteganografia como ferramenta prática e confiável em diversas áreas do conhecimento humano.

Até o final de 2006, todo sinal de televisão transmitido dos Estados Unidos da América será convertido para digital. O sinal digital possui diversas vantagens se comparado ao sinal analógico. Ele é barato, pode ser transmitido através de redes de computadores, é fácil de editar, gravar e permite busca de informações. Estas vantagens geram facilidades para duplicação, edição e distribuição de imagens. Aliado a tudo isto, tem-se o uso indiscriminado da Internet, aumentando, assim, de forma bastante acentuada, a cópia de documentos não autorizados e, conseqüentemente, a violação dos direitos autorais. A esteganografia e a marca d’água digital são poderosas ferramentas utilizadas para diminuir ou até mesmo controlar estes tipos de transgressão.

Um outro ponto muito importante que deve ser ressaltado é que, apesar da complexidade dos algoritmos para criptografar mensagens nas redes, eles serão eventualmente quebrados no futuro devido ao desenvolvimento tecnológico sempre crescente. Além disso, o uso de criptografia pode ser restrito ou proibido por lei em alguns países. Portanto, o uso de obscuridade nas informações como forma de segurança na Internet é uma estratégia cada vez mais utilizada, pois o que não pode ser percebido não poderá ser adulterado.

Com base no exposto anteriormente, pode-se afirmar que a proteção de informações secretas em meio digital tornou-se um importante campo de pesquisa científica. Além disto, a utilização da esteganografia como ferramenta para intercâmbio de informações pessoais e confidenciais, bem como para a defesa dos direitos autorais, tem um futuro promissor no mundo informatizado.

1.4 Objetivo

Há três grandes linhas de pesquisas na área de camuflagem de informações. A primeira delas estuda métodos que tornem totalmente imperceptível a existência de mensagens no arquivo portador, pois um dos grandes desafios dos sistemas esteganográficos é evitar a detecção da comunicação secreta. Já a segunda trabalha no sentido de encontrar falhas nos métodos criados pela primeira, isto é, simplesmente detectar a existência de mensagens através de análises estatísticas da distribuição dos pixels na imagem, por exemplo. Finalmente, a terceira procura apenas destruir qualquer tipo de mensagem embutida, através de processamento de imagens, principalmente por meio de transformações geométricas como rotações, ampliações e reduções.

O objetivo deste trabalho é a proposição de um algoritmo dentro da primeira linha de pesquisa (métodos que tornam imperceptível a existência de mensagens), empregando a combinação dos elementos das técnicas baseadas no domínio espacial e na mascaragem da percepção. Isto é, a inserção de mensagens secretas é feita diretamente no pixel da imagem, procurando mascará-la de forma que não exista diferença visual perceptível entre a fotografia original e a portadora da mensagem. Para averiguar a eficiência do algoritmo no que diz respeito à camuflagem, utiliza-se diversas formas de detecção, propostas em outros trabalhos de pesquisas. Emprega-se testes subjetivos, estatísticos e comparativos, como por exemplo: a comparação dos resultados obtidos com os de outros métodos existentes, o confrontamento da imagem original e da portadora etc. Um outro objetivo deste trabalho de pesquisa consiste no desenvolvimento e implementação de um sistema de esteganografia para arquivos de imagens no formato PPM (Portable PixelMap) [BAXES] aplicando a nova técnica proposta. 
1.5 Estado da Arte

A partir do uso da Internet e de suas facilidades no intercâmbio de dados, a camuflagem de informações (Information hiding) passou a ser extensivamente utilizada, principalmente na área de segurança em auxílio à criptografia, pois acredita-se que informação não detectada é informação não adulterada. Nos últimos anos, o principal desafio nesta área encontra-se na implementação de soluções robustas para promover formas sigilosas de comunicação e evitar a pirataria no mundo digital. No campo de pesquisa de técnicas para marcas d’água digitais, o interesse por algoritmos no domínio da freqüência intensificou-se, em contraste com os que utilizam o domínio espacial, que antes eram vistos como uma excelente opção pelo fato de serem soluções simples e rápidas [KATZENBEISSER]. Os métodos baseados no domínio da freqüência são caracterizados por seu enfoque em algoritmos matemáticos eficientes, proporcionando, com isso, soluções menos vulneráveis aos ataques às imagens. É o caso do método apresentado por Kotaoka e outros, denominado de Transformada Discreta do Cosseno Adaptativo (ADCT), que integra de forma mais consolidada a mensagem à imagem. Detalhes acerca desta transformação são encontrados em [CASTLEMAN] [GONZALEZ].

Um sofisticado algoritmo denominado BPCS-bit-plane complexity segmentation [NODA], colocou novamente em destaque as técnicas baseadas no domínio espacial. Este algoritmo é baseado no casamento das características do domínio espacial e do sistema visual humano, que preceitua que o nosso olho pode captar anomalias na imagem em áreas com cores homogêneas e, dificilmente o faz em áreas complexas. O BPCS divide a imagem em áreas denominadas dummy e procura determinar o grau de complexidade de cada uma delas. Quanto maior a complexidade, melhor sua classificação para o uso em esteganografia.

Nos últimos anos, devido principalmente ao crescimento do e-commerce, observou-se uma maior necessidade de soluções mais confiáveis para a manutenção do sigilo de informações na Internet. Na contramão desta proposição destaca-se um outro campo de interesse, o desenvolvimento de sistemas logísticos integrados a protocolos, objetivando a detecção de informações camufladas em grandes redes. As técnicas utilizadas em tais sistemas são fundamentadas na análise estatística das medidas da entropia dos dados redundantes [PROVOS-2]. Neste contexto, o desafio é justamente a busca por soluções que apresentem melhor desempenho, focalizadas nos parâmetros temporais, isto é, a detecção automática sem a degradação da velocidade de tráfego ou deterioração da imagem.

É certo que o uso de sistemas que proporcionem meios robustos e imperceptíveis de camuflagem de informações tende a crescer acentuadamente, à medida em que a especulação sobre seu controle e meios de detecção tendem a acompanhar este crescimento. Isto gera uma disputa que nos leva a questionar até onde eles podem ser desenvolvidos ao ponto de um, definitivamente, sobrepor o outro.

1.6 Organização desta Dissertação

O restante desta dissertação é organizado da seguinte forma: No segundo capítulo se aborda alguns conceitos relacionados às imagens digitais estáticas, que são utilizados posteriormente. Nesta seção se justifica a utilização do formato de arquivos PPM. O terceiro capítulo trata os conceitos que ladeiam a esteganografia, contando sua história até os dias atuais, expondo suas estratégias para camuflagens de mensagens em computadores. Fala-se também das marcas d'água (watermarking) e impressões digitais (fingerprinting). No quarto capítulo são descritas as técnicas utilizadas para esteganografia em imagens estáticas, seus critérios de avaliação, os métodos de detecção existentes e como evitá-los. O quinto capítulo apresenta a metodologia e o método proposto SEA54 (Sistema de Esteganografia com Alocação do 5º e 4º bits), narrando minuciosamente as estratégias empregadas, justificando e exemplificando os processos utilizados. Após o detalhamento dos algoritmos de secionamento da imagem, embutimento e extração da mensagem, são calculadas suas complexidades. O sexto  capítulo é onde são feitos os testes computacionais e onde são mostrados os resultados. Aqui, narra-se os testes elaborados, analisando seus efeitos e comparando-os com outros métodos existentes. O sétimo capítulo apresenta as conclusões da dissertação, e quão satisfatórios foram os resultados, e finalmente as pretensões para trabalhos futuros. No último capítulo está contida uma referência bibliográfica, incluindo obras relacionadas ao processamento de imagens, software desenvolvidos na área e as mais diversas técnicas utilizadas em esteganografia citadas neste trabalho.

Capítulo  2

2  Imagens Estáticas
2.1 Conceitos Básicos

Como este trabalho é baseado em esteganografia em fotografias digitais, nesta seção são apresentados alguns conceitos relacionados a processamentos gráficos necessários à interpretação e ao entendimento de determinadas características das imagens utilizadas nos testes computacionais. Existem dois tipos básicos de dados gráficos [MURRAY]:
 
•	Os dados vetoriais. Neste tipo, as informações das imagens são representadas por coordenadas e funções que geram linhas, polígonos e/ou curvas. Por exemplo, uma esfera com centro em (10, 2, 5) e raio 40, pode ser descrita pela função esfera(10,2,5,40). 

•	Os Bitmaps (mapas de bits). Os dados são representados por uma matriz de valores numéricos em que cada elemento designa a cor de um pixel. Esta cor pode ser dada pela mistura das três tonalidades do padrão RGB (Red, Green, Blue). Na Figura 01 a cor de cada pixel da imagem possui 3 valores que podem variar de (0, 0, 0) preto a (255, 255, 255) branco. Este trabalho é baseado neste tipo de dado. Portanto, quando for citada a palavra imagem, fica subentendido a referência ao bitmap, caso contrário, é citado o outro tipo em questão. Veja mais sobre formatos na seção 2.4.  

                  

                                          

Toda imagem Bitmap é uma matriz de
 M X  N pixels.

Pixel - Cada um deles, tem 3 valores  numéricos  que representam as cores básicas Vermelho, Verde e Azul. A cor  do pixel é determinada pela mistura destas três cores.

R G B

Imagem

Figura 01: Quadro explicativo de imagens tipo bitmap

Os dispositivos de saída são equipamentos utilizados para a projeção das imagens. Os dispositivos para dados vetoriais são especiais e geralmente de grande precisão e custo, como os plotters, por exemplo. Já os destinados a mapas de bits, são bem mais comuns e de baixo custo, como por exemplo: as impressoras, os scanners e a maioria dos monitores de vídeo existentes. 

A forma como as imagens são armazenadas em disco varia muito de acordo com seu formato de gravação. Há uma grande diversidade de formatos e cada um deles possui suas próprias características. No entanto, a maneira com que as imagens são projetadas no dispositivo de saída é sempre a mesma e só depende do hardware, não importando o formato como ela foi gravada em disco. Portanto, uma imagem, depois de exposta em um monitor de vídeo, é uma matriz de m linhas por n colunas, onde cada ponto Pm,n representa um pixel. Cada pixel é mostrado um a um, da esquerda para direita e de cima para baixo, criando linhas que podem ser mostradas consecutivamente ou alternadamente.

O pixel é a menor unidade programável e mapeada em um monitor de vídeo, à qual pode ser atribuida uma cor. Esta cor é determinada pela combinação dos elementos do padrão RGB (Red, Green, Blue). O pixel pode ser pensado como uma unidade lógica e não física. O tamanho de um pixel depende de como é configurada a resolução de um monitor. Se a resolução for configurada para o máximo, o tamanho físico do pixel será igual ao tamanho físico do dot pitch (veja Abaixo).

Ponto, muitas vezes chamado de pixel físico, é o menor componente visual físico que um monitor pode produzir. Cada ponto é gerado por três feixes de elétrons, onde cada feixe gera uma das três cores vermelha, verde ou azul. Assim, se a resolução de um monitor de vídeo for ajustada para um valor menor do que o máximo determinado pelo fabricante do monitor, cada pixel será composto por mais de um ponto. O pixel físico é definido não apenas pelo monitor, mas também pela capacidade da placa de vídeo de gerenciar todos estes pontos.

Dot pitch é uma medida estabelecida pelos fabricantes de monitores de vídeo. É uma limitação de hardware da ordem de centésimos de milímetros (0.28mm), que define a menor distância física entre dois pontos. Quanto menor esta medida, maior a quantidade de pixels na horizontal e na vertical e melhor a qualidade das imagens que podem ser geradas em resolução máxima.

2.2 Como Enxergamos as cores

As informações de como o olho humano percebe as variações de tonalidades, são importantes para a compreensão dos padrões de cores utilizados em computadores. O nosso olho possui um número finito de receptores, que captam ondas eletromagnéticas com comprimentos variando entre 380 e 770 nanômetros. Como resultado, ele percebe aproximadamente dez mil diferentes cores simultaneamente, embora consigamos perceber um número de cores bem maior quando apresentadas isoladamente. O nosso sistema visual tem sensibilidade diferente às três cores básicas, sendo mais sensível às luzes verde, vermelha e azul nesta ordem [MURRAY].

Uma importante característica humana, utilizada na computação, é a limitação que se tem em discernir cores em pontos muito próximos. Isto é, se cada pixel de uma imagem possuísse uma cor diferente, nosso olho não teria capacidade de identificar onde começaria e terminaria um pixel. Na realidade, o cérebro cria uma adaptação utilizando a média das cores dos pixels adjacentes. Uma implicação deste comportamento foi a criação de dispositivos de saídas em que a cor de cada pixel é gerada por três raios muito próximos, cada um emitindo separadamente variações de vermelho, verde e azul. Logo o olho, devido às caraterísticas acima, capta apenas uma cor para o pixel, que é uma adaptação das três cores emitidas.
2.3 Padrões de cores

Existem diversos sistemas matemáticos para descrever cores. Embora haja outros padrões, como o CMY (Cyan-Magenta-Yellow) usado em impressoras, o YUV (Y-signal, U-signal, V-signal) utilizado em televisões, o HSV (Hue, Saturation, and Value), etc, o RGB, por ser o padrão empregado em monitores de vídeo, é o mais utilizado em computação gráfica. Muitos outros hardwares foram construídos direcionados para ele. Como já foi dito, a coloração do pixel é determinada pela mistura das três cores, vermelho, verde e azul, e a qualidade desta coloração depende da quantidade de bits utilizados para representá-la. Os padrões existentes são classificados de acordo com este número de bits e influenciam sobremaneira nos atributos visuais da imagem. Os mais comuns são descritos a seguir.

2.3.1 High Color (16 bits)

Este padrão utiliza 16 bits para definir a cor de um pixel, sendo 5 bits para cada tonalidade ou canal (RGB), enquanto o bit restante geralmente é utilizado para a cor verde, pois o olho humano é mais sensível a esta cor do que às demais, vermelha e azul.

2.3.2 True Color (24 bits)

True color (24 bits), também conhecido como RGB-24, produz imagens de excelente qualidade visual, pois utiliza 3 bytes de 8 bits, sendo um byte para cada canal, isto é, 256 diferentes padrões de vermelho, 256 de verde e 256 de azul. Com a mesclagem delas obtém-se um total de mais de 16,5 milhões de cores. Esta qualidade, no entanto, incorre num custo bastante elevado, no que diz respeito ao tamanho dos arquivos gerados.

2.3.3 True Color (32 bits)

Este sistema, também denominado de RGBA, utiliza um byte extra chamado de canal Alfa. Ele é utilizado para produzir efeitos especiais na imagem, como transparência difusa ou texturas distintas. É um padrão novo e alguns dispositivos de hardware não possuem a capacidade de gerenciá-lo.

2.3.4 Escala de Cinza (GrayColor)

Aqui estão representadas as fotografias denominadas popularmente de preto-e-branco. Para que seja produzida uma cor cinza, basta que sejam igualados os três valores dos canais RGB. Por exemplo, a cor preta é dada por (0,0,0) e a cor branca por (255,255,255). Escala de cinza ou graycolor são todas as cores geradas entre a branca e a preta, tal que R seja igual a G, que seja igual a B. Portanto, são necessários apenas 8 bits, para se representar todas elas. Apesar de 8 bits proporcionar 255 diferentes tonalidades, nós, devido a uma característica da retina do olho humano, só conseguimos distinguir 40 níveis de cinza diferentes, isto é, se eles não forem apresentados lado a lado. Na Figura 02, os retângulos maior e o menor têm diferentes tonalidades de cinza, porém é possível perceber a diferença entre elas se os retângulos forem mostrados lado a lado. Caso contrário, elas não são distinguidas.

Figura 02: Característica dos níveis de cinza

2.3.5 Imagens Baseadas em Palhetas (indexada)

A cor de cada pixel na imagem é determinada pelo índice de uma tabela denominada palheta de cores. Esta palheta pode ser armazenada dentro do próprio arquivo da imagem, e cada um de seus elementos possui os três valores do padrão RGB. É um dos modelos mais utilizados na Internet, devido principalmente ao tamanho do arquivo produzido [GIBSON]. A quantidade de cores da imagem é definida pelo número de índices da tabela, e o padrão 256 cores utiliza apenas 1 byte de 8 bits.

Palhetas de cores

Pixels da Imagem

0	( 255,  0,  0 )	
1	(255,   0, 10)	
2	(255, 10, 10)	
3	(200,   0,  0 )	
4	(200, 10,  0 )	
5	(200, 10, 10)	

13, 6, 4, 3, 0, 1

Figura 03: Imagem baseada em palheta de cores

Como foi visto, quanto maior a quantidade de bits utilizada, maior o número possível de cores. No entanto, maior será o espaço ocupado em disco pelo arquivo. Para uma melhor compreensão da dicotomia “Qualidade X Espaço de armazenamento”, uma imagem de 640 X 480 pixels com 256 cores, sem compressão, ocuparia 300 Kb. Esta mesma imagem no padrão True Color (24 bits) consumiria o triplo, 900 Kb.

Resumidamente, dentre os vários padrões de cores expostos aqui, pode-se afirmar que os mais comuns são os de 8 e os de 24 bits. Os padrões de 8 bits são muito utilizados devido ao pequeno tamanho dos arquivos gerados e sua grande popularidade na Internet, aqui situando-se o graycolor e os vários formatos baseados em palhetas como GIF, BMP etc. O de 24 bits, atualmente, é muito empregado devido à sua qualidade gráfica, à realidade das cores e ao casamento perfeito entre o hardware dos monitores de vídeo e o padrão RGB, em que cada canal tem exatamente um byte de 8 bits (unidade mínima de endereçamento).

Arquivos demasiadamente grandes não são apropriados para trafegarem em redes de computadores. Mas a crescente necessidade de utilização de imagens digitais complexas e de melhor qualidade visual fez surgir novos formatos de gravação que trabalham com compressão de dados, diminuindo sobremaneira o tamanho dos arquivos gerados.
2.4 Formatos de arquivos

A computação gráfica aprimorou-se bastante com a melhoria do hardware e, com ela, apareceram novos tipos de informações, como animação, multimídia, realidade virtual etc, que precisaram ser tratadas e armazenadas em formatos de arquivos específicos. Particularmente no que concerne às fotografias digitais, existem uma centena de tipos de formatos diversos. Nas subseções seguintes são transcritas algumas características dos mais utilizados na área de esteganografia e que são citados ao longo deste documento. Alguns exemplos podem ser vistos na Tabela 01.

Formato	Bits	Compressão	Perda	
JPEG–Joint Photography Experts Group	Até  24 	JPEG 	Sim	
GIF–CompuServe Graphics Interchange Format	Até  8	LZW	Não 	
PNG–Portable Network Graphics	Até  48	LZ77 variante	Não	
BMP–Microsoft Windows Bitmap	1, 4, 8, 16, 24 e 32	RLE	Não	
TIFF–Tagged Image File Format	Até  24	RLE, LZW, JPEG	Não / Sim	
PPM–Portable PixelMap	Até 24	Não tem	Não	
Tabela 01: Formatos de arquivos de imagens e algumas de suas características

2.4.1 Formato PPM

O PPM é o formato de arquivo de imagem mais simples que existe. Seu conteúdo está armazenado em forma de texto, sem qualquer rebuço, compressão ou otimização de dados. Seu uso é restrito, pois gera arquivos extremamente grandes em relação aos demais formatos. O PPM é geralmente empregado quando quer-se verificar ou alterar de forma fácil os valores dos pixels de uma imagem, pois com qualquer editor de texto pode-se ter acesso ao seu conteúdo. O interior de um arquivo PPM tem a seguinte disposição. Tomando-se como exemplo o arquivo da Figura 4, na primeira linha tem-se a versão, (P3). Nas próximas linhas são encontrados os comentários, que deverão iniciar com o caractere #. Na linha logo após os comentários vem a dimensão da imagem, quantidade de colunas e linhas respectivamente (50 40). Na linha subsequente vem a quantidade de cores por canal RGB, 255. E finalmente, nas linhas restantes, os dados RGB de cada pixel, linha por linha, coluna por coluna.

P3
# Created by the Gimp
# Comments
50 40
255
200 108 36 200 108 36 200 108 34 200 108 36 200 108 36 ...

Figura 04: Layout do formato PPM.

Este formato foi utilizado nos aplicativos desenvolvidos, devido à facilidade que se tem de analisar e modificar o conteúdo das imagens geradas. 

2.4.2 Formato PNG

Oposto ao PPM, o PNG (Portable Network Graphics Format) é um formato rebuscado. Ao contrário da maioria dos outros, o PNG foi planejado e projetado para ser um formato que suprisse todas as carências dos já existentes. A concepção do PNG é ser simples, seguro, totalmente portável para as plataformas (Windows, Linux, OS/2, MAC etc.), livre e, principalmente, ter seu código fonte disponível [PNG]. Os navegadores mais utilizados como o Explorer, Netscape, Mozilla, Galeon e Konqueror  já trabalham com este formato, embora não implementem todas as suas particularidades. O PNG foi produzido com o objetivo de substituir o formato GIF (CompuServe Graphics Interchange Format), que passou a ser um formato proprietário (pay-to-implement). A partir do ano de 2003, todos os usuários do GIF deverão pagar pelo seu uso.

O formato PNG trabalha com imagens no padrão mapa de bits (bitmap). Suporta 16 bits para escala de cinza ou 48 bits por pixel para padrão true color. Aceita canal alfa para transparência e 16 bits para o canal gama de dados. Utiliza compressão de dados sem perda de informação LZ77, que é uma variação da LZW (Lempel-Ziv-Welch) utilizado pelo GIF. Por fim, utiliza CRC (Cyclic Redundancy Checking) para verificação da integridade dos dados [MURRAY].

Uma infinidade de formatos de arquivos para fotografia digitais pode ser elencada [MURRAY]. Alguns formatos são bastantes conhecidos, como os citados na Tabela 01 (JPEG, GIF, BMP e TIFF). Porém, todos trazem algumas deficiências ou proibições que contribuíram para a escolha do PNG. Dentre muitas, pode-se citar: o TIFF cria arquivos longos, logo impróprios para a Internet; o BMP só é utilizado em plataforma Windows, DOS ou OS/2; o JPEG trabalha com compressão de arquivo com perda de dados, portanto não tem uso geral, sendo impróprio para imagens médicas utilizadas para diagnósticos, por exemplo.

2.5 Compressão de Arquivos

O tipo de compressão aplicado em arquivos de imagens é muito importante, pois influencia diretamente na escolha do processo de esteganografia utilizado. Esta compressão tem como objetivo diminuir o tamanho do arquivo, sem perda da qualidade visual da imagem e pode ser classificada por vários critérios, como: física, lógica, simétrica, assimétrica etc. Porém, só são considerados os tipos sem perda de informações.

Sem perda de informações (Lossless) – Este é o mais utilizado em esteganografia. Sua essência consiste em eliminar as informações redundantes da imagem. No ato da descompressão, todas as informações do arquivo original são recuperadas e montadas integralmente, isto é, todos os bits terão rigorosamente o valor original. Como exemplo tem-se o LZ77 (Lempel-Ziv-77) e o RLE (Run-Length Encoding), empregados nos formatos PNG e BMP, respectivamente. 

Com perda de informações (Lossy) - Este tipo é o mais eficiente, pois são eliminadas as informações redundantes e irrelevantes [CASTLEMAN]. Esta compressão só é aplicada em arquivos que admitam perda de dados como algumas imagens, som, vídeo, multimídia etc, não sendo conveniente seu uso em documentos tipo texto. Os programas compactadores fazem uso de funções matemáticas complexas e algoritmos elaborados, como é o caso do JPEG, o qual utiliza a transformada discreta do cosseno e o código de Huffman [CORMEN]. Apesar da existência de perdas, ela pode não ser significativa, uma vez que o usuário, para determinados softwares, tem a possibilidade de decidir seu percentual.

Capítulo  3

3  Esteganografia
3.1 Introdução

A palavra esteganografia é derivada do grego e significa “escrita encoberta”. Diz-se que esteganografia é a arte de se comunicar de maneira que não se possa detectar a existência da comunicação [DURIC]. Através da história, muitas técnicas têm sido usadas para esconder informações. Um dos primeiros documentos descrevendo esteganografia data da História de Heródoto. David, em The Codebreakers [Kahn] como também Bruce, em The Battle of Codes and Ciphers [Norman], citam vários fatos em que a criptografia e a esteganografia foram utilizadas durante grande parte da Segunda Guerra Mundial [IWM]. 

Várias outras estratégias foram utilizadas na antigüidade. Uma delas consistia na raspagem da cabeça de escravos para tatuagem de mensagens. Assim, após semanas, de cabelos crescidos, eles poderiam trafegar livremente sem serem percebidos. Uma outra forma de camuflagem de informações é o emprego de tintas invisíveis. Esta técnica vem sendo usada ao longo dos anos. No entanto, antigamente, ela não se mostrou muito eficiente devido aos odores característicos das tintas àquela época. Atualmente, com o desenvolvimento da química, foram criadas tintas realmente inodoras e invisíveis que são reveladas através de reagentes químicos ou através de raios laser numa determinada freqüência. Sabe-se que diversas formas de camuflagem foram empregadas para comunicação durante a Segunda Guerra Mundial, uma delas eram os textos cifrados. Uma inocente carta poderia conter, nas entrelinhas, uma perigosa mensagem. Por exemplo, o seguinte texto com uma mensagem codificada foi enviado por um espião Alemão [DURIC]. 

Apparently neutral’s protest is thoroughly discounted and ignored. Isman hard hit. Blockade issue affects pretext for embargo on by products, ejecting suets and vegetable oils.

Aparentemente, o protesto dos neutros é descartado completamente e ignorado. Isman bateu forte. Assunto de bloqueio afeta pretexto para embargo de subprodutos, espelindo  sebos e óleos de vegetais. 

Se a segunda letra de cada palavra for separada se obtém a seguinte mensagem secreta “Pershing sails from NY June 1.” (Pershing zarpa de Nova Iorque em 1º de Junho). 
Com a facilidade de detecção das várias formas de mensagens cifradas em textos, os nazistas criaram uma tecnologia chamada micropontos. As informações eram miniatuarizadas de tal forma que um ponto poderia conter desenhos estratégicos ou até mesmo a fotografia de uma base espiã.

Mais recentemente, acredita-se que o terrorista Osama Bin Laden utilizou esteganografia para enviar os mapas e os planos de ataque às torres do World Trade Center em 11 de setembro de 2001.  Estes teriam sido embutidos de forma camuflada em imagens pornográficas e enviados aos seus comparsas no território norte americano [KELLEY].

A esteganografia é melhor ilustrada por Simmons através do modelo clássico de comunicação invisível, caracterizado pelo problema dos prisioneiros [SIM]. O problema dos prisioneiros é o seguinte. Alice e Bob, presos por algum crime, foram colocados em celas separadas. Eles desejam fazer planos de fuga, mas infelizmente toda comunicação entre eles passa pela carcereira Wendy, que não permite que o casal se comunique de forma cifrada. Caso isto ocorra, e seja descoberta alguma mensagem suspeita, Alice e Bob serão automaticamente enviados para a solitária, ficando incomunicáveis para sempre. Portanto, o casal tem que trocar informações de forma sigilosa, não levantando qualquer suspeita da intenção sobre sua fuga. A solução encontrada por eles foi o uso das técnicas de esteganografia para embutir mensagens secretas em inocentes correspondências.

Alice

Bob

Wendy

Figura 05: Ilustração do problema dos prisioneiros.

3.2 Estratégias

No meio digital, além da esteganografia aplicada em imagens, que é a base desta dissertação, há uma grande variedade de maneiras de embutir camufladamente mensagens em computadores. Define-se como mensagem qualquer tipo de dado que possa ser representado por um conjunto de bits, seja ele som, documento, desenho etc.
 
Para os mais variados propósitos, existem determinadas lacunas deixadas pelos softwares, que podem ser utilizadas para esteganografia. Alguns meios de inserir mensagens são apresentados a seguir.

3.2.1 Espaços em disco

A forma como os sistemas operacionais gravam arquivos pode originar espaços não utilizados no disco. Por exemplo, no Windows-95, os dispositivos de armazenamento são formatados no padrão FAT16, isto é, a unidade de alocação mínima é 32 Kb. Isto significa que, se for gerado um arquivo de apenas 2 Kb, tem-se 30Kb de espaço não utilizado para esconder informações que não aparecerão nos diretórios.

3.2.2 Pacotes

Uma infinidade de informações transitam constantemente nas redes de computadores. Os pacotes expedidos pelos protocolos contêm espaços não utilizados que podem servir como meio para camuflar mensagens. O TCP/IP é um dos protocolos utilizados para este fim [Rowland].

3.2.3 Áudio

Camuflar mensagens em som digital é geralmente mais difícil do que em imagens digitais [KATZENBEISSER]. A capacidade auditiva humana é extremamente sensível a perturbações, e pequenas variações nos arquivos de som podem ser facilmente detectadas. Assim, sobra pouco espaço para se camuflar informações neste tipo de arquivo. Uma das técnicas utilizadas para embutir as mensagens é a introdução de pequenos ecos no arquivo de som. Após sua introdução, definem-se dois intervalos de tempo entre o sinal e o eco, que definirão os valores dos binários 0 e 1. Uma outra técnica do uso de esteganografia em áudio é a inclusão de súbitos sinais sonoros de alta amplitude, imperceptíveis ao ouvido humano. Estes sinais são decodificados por equipamentos especiais que analisam e remontam a mensagem.

3.2.4 Textos

Esta é a forma de camuflar informações mais simples e a mais fácil de ser percebida. Modelos de esteganografia em textos, foram citados no Capítulo 3, como as mensagens cifradas utilizadas pelos nazistas durante a Segunda Guerra Mundial, por exemplo.

3.2.5 Aplicativos

A propriedade de aplicativos é muitas vezes identificada pela disposição das linhas de comando dentro dos códigos fonte. Cada programador tem características próprias e pode ser reconhecido pela forma como codifica seus programas.

3.3 Esteganografia, Marcas D’água e impressão Digital

Esteganografia, marca d’água e impressão digital são ramos de uma importante área de pesquisa da ciência da computação denominada Information Hiding, que estuda formas de esconder informações e proteger propriedades. No contexto deste trabalho, estes ramos têm um objetivo em comum, que é o de embutir informações em arquivos digitais dos tipos: texto, imagem, som etc.

As impressões digitais (fingerprints), também conhecidas como rótulos, são marcas ou características existentes em cada objeto que fazem com que eles sejam distinguidos de um outro objeto similar. Geralmente, ela é um número seqüencial embutido em cada cópia do produto. O sistema operacional WINDOWS 2000 [MINASI], por exemplo, possui um código que identifica cada cópia liberada pela linha de produção. Isto possibilita ao proprietário intelectual (MICROSOFT) identificar qual usuário quebrou sua licença de uso, fornecendo seu fingerprint a terceiros. Essencialmente, impressão digital é uma técnica para distinguir cópias.

As marcas d’água ou carimbos digitais são informações de pequenas dimensões, que têm como objetivo primordial rotular o arquivo com dados que o identifiquem. Sua principal preocupação é a robustez (habilidade de sobreviver às operações de processamento de imagens). Para isso, a identificação pode ser embutida várias vezes, em diferentes áreas do arquivo. Como mostra a Figura 06, existem duas correntes de pesquisas envolvidas com marcas d’água. A primeira defende a total camuflagem da mensagem ou rótulo, dificultando os ataques, enquanto a segunda, ao contrário da primeira, defende a total aparência dos carimbos digitais para que os usuários, de antemão, já conheçam os detentores da propriedade daquela obra. A corrente-1 deságua exatamente na esteganografia.

A criptografia, por sua vez, procura tornar as mensagens ilegíveis, dificultando ou até mesmo impossibilitando a leitura do texto original sem o uso das chaves secretas de acesso. A criptografia, muitas vezes, é utilizada no processo de esteganografia para tornar a mensagem secreta indecifrável. Ela é aplicada sobre a mensagem antes de ser embutida na imagem, criando-se, assim, uma camada de proteção. Desse modo, caso o processo esteganográfico seja quebrado, isto é, a mensagem seja detectada e extraída, a mesma não poderá ser lida.

Information
Hiding

Esteganografia

Marca d’água

A identificação de propriedade ou autoria deve ser escondida para evitar que os ataques a adulterem ou danifiquem.

As informações que indicam o direito de propriedade devem ser visíveis para alertar ao usuário sua proibição de cópia.

Criptografia

É sabida a existência de informações, porém elas são cifradas, os que as torna ilegíveis.

Camuflagem total da mensagem embutida, eliminando qualquer indicio da sua existência.

Impressão Digital

Um número serial que diferencia um objeto de um outro similar.

Corrente-1

Corrente-2

Figura 06: Quadro explicativo de informações camufladas (Information Hiding)

Observa-se, portanto, que a esteganografia procura a total camuflagem não só da mensagem, mas principalmente da intenção de comunicação entre as partes. Em Information Hiding, a mensagem pode ser embutida na imagem com um dos dois objetivos: o de identificação (marcas d’água) ou o de comunicação sigilosa (esteganografia), sendo que a grande preocupação desta última é com a indetectabilidade, isto é, a capacidade que o processo esteganográfico tem de evitar a detecção da mensagem.

A Figura 06 mostra que existe uma interseção muito forte entre as filosofias que norteiam marca d’água digital e esteganografia. Por isso, elas são bastante confundidas. No entanto, há características que as diferem de acordo com suas finalidades.

Dentre as diversas estratégias para se embutir informações de modo camuflado no meio digital, a utilização de imagens estáticas têm um papel de destaque. A importância dada às fotografias digitais não é só devido aos vários métodos de esteganografia criados e aprimorados para elas, mas também pela diversidade e facilidade com que são encontradas na Internet. Além, claro, por seu reduzido tamanho se comparadas a outras mídias como som e vídeo. Desta forma, elas se tornaram um meio bastante eficiente de comunicação.

Baseado no exposto acima, o próximo capítulo é dedicado à esteganografia em imagens estáticas, às técnicas utilizadas, aos critérios para sua avaliação, aos métodos de detecção mais utilizados e a como evitá-los.

Capítulo  4

4  Esteganografia em Imagens Estáticas

Este capítulo apresenta diversas técnicas de esteganografia, discutindo critérios de avaliação métodos de detecção e maneiras de se evitar a detecção. A partir desta seção, todo o enfoque e detalhamentos são direcionados para o objeto desta dissertação, que é a esteganografia em imagens digitais estáticas. Alguns outros métodos são apenas citados para que se evidencie a vasta área de utilização da camuflagem de informações.

Para que a esteganografia possa ser aplicada em fotografias digitais, são necessários quatro componentes básicos. Primeiro: um arquivo com a mensagem que se deseja esconder. Segundo: uma imagem denominada capa ou recipiente, que receberá e camuflará a mensagem. Terceiro: o agente ou software que embutirá a mensagem no recipiente, gerando um novo arquivo. A diferença entre os processos de esteganografia reside neste componente. Alguns deles, por exemplo, solicitam uma senha (stego-key) para embutir e extrair a mensagem, enquanto outros utilizam criptografia como ferramenta de segurança. E finalmente, o quarto: o arquivo denominado portador (Carrier), com o resultado da operação.

Capa  ou Recipiente

Software
( Agente )

Portadora ou Carrier

(Senha)

Mensagem

Figura 07: Esquema gráfico do modelo de esteganografia

A senha citada acima é usada para controlar o processo de embutimento, como também para evitar o acesso à informação caso ela seja detectada.

Usando uma notação mais formal, pode-se, sem perda de generalidade, definir que toda imagem capa c de tamanho l(c) pode ser representada por uma seqüência de números ci, onde 1  i  l(c), sendo o índice 1 o canto superior esquerdo e l(c), o canto inferior direito de c. Logo, uma imagem qualquer C é uma função discreta c(x, y) que atribui valor à cor de cada pixel, no espaço bidimensional (x, y). A mensagem secreta, por sua vez, pode ser denotada por m, sua quantidade de bits, por l(m) e cada bit, por mi, onde 1  i  l(m)  e m  { 0, 1 }. Sempre l(m) é menor que l(c).

Os processos de esteganografia podem produzir ruídos perceptíveis na imagem portadora, facilitando a detecção das mensagens. A imagem escolhida como recipiente deverá possuir algumas características específicas que ajudem a dissimular essa deficiência. Por exemplo, fotografias com pequena variação de cor ou com grandes áreas em que predomina a mesma tonalidade, não são boas para uso em esteganografia. Por outro lado, imagens com grande variedade de luminosidade e cor disfarçarão mais facilmente os ruídos indesejáveis. Veja a figura abaixo.

Figura 08: Imagens inadequada e adequada para esteganografia.     
4.1. Técnicas

As técnicas de camuflagem de informações em fotografias digitais podem ser divididas em três categorias [LIN]: 

•	Métodos no Domínio Espacial (Spatial-domain methods): Engloba todos os métodos de esteganografia em que as mensagens são embutidas diretamente no pixel da imagem recipiente.

•	Métodos no Domínio da Freqüência (Frequency-domain methods): Nesta categoria, a imagem capa é inicialmente transformada para o domínio da freqüência. Em seguida, usando o DFT (Discrete Fourier Transform) ou o DCT (Discrete-Cosine transform) ou o Spread Spectrum etc, ela é embutida nos coeficientes alterados.

•	Mascaragem da Percepção (Perceptual Masking Systems): Este grupo explora as propriedades do sistema visual humano para camuflar de forma eficiente a mensagem. Antes de ser efetuado o processo de esteganografia, é realizada uma avaliação da imagem capa para determinar quais são as áreas mais significantes para a percepção visual humana. As informações decorrentes da análise definirão que regiões serão utilizadas e qual o tamanho máximo da mensagem. Os defensores desta categoria acreditam que a mensagem fica bem mais integrada à imagem portadora.

Dentro de cada uma das categorias, existem vários métodos que são citados a seguir. No entanto, são detalhados apenas os que estejam enquadrados nas categorias do domínio espacial e mascaragem da percepção, escopos da técnica proposta. Os demais são descritos apenas superficialmente. [KATZENBEISSER] enquadra, de forma bastante didática, as várias técnicas de esteganografia nas categorias anteriormente descritas.

4.1.1 Métodos no Domínio Espacial (Spatial domain) 

Substituição do bit menos significativo

Conhecido em inglês pela sigla LSB (Least significant bit), é o mais simples dos métodos, e também o mais vulnerável, pois pequenas manipulações na imagem podem acarretar perda de informações. Ele consiste na simples substituição de cada um dos bits menos significativos do pixel da imagem ci  por um bit da mensagem mi. Por sua simplicidade, este método possibilita a camuflagem de um grande volume de informações e é empregado por muitos algoritmos, por exemplo: StegoDos [STEGODOS], S-Tools [BROWN], Mandelsteg [HASTUR], EzStego [MACHADO],  White Noise Storm [ARACHELIAN], Steganos [HANSMANN] etc.

Por definição, a quantidade de bits da mensagem deve ser sempre menor que a quantidade de bits menos significativos da imagem. Deste modo, os processos de esteganografia que utilizam este método apresentam uma séria falha de segurança, pois os bits restantes da imagem permanecerão inalterados. Isto produzirá diferenças nas propriedades estatísticas das duas partes, a que contém e a que não contém a mensagem. Alguns autores sugerem o aumento do tamanho da mensagem através da geração de informação não utilizável (sujeira), tal que o tamanho da mensagem l(m) ocupe todo o tamanho da imagem capa l(c). No entanto, esta proposição aumenta a probabilidade de a mensagem ser detectada.

É interessante ressaltar que, para imagens no padrão true color (24 bits), cada pixel possui três bits menos significativos. No entanto, devido à grande quantidade de cores que podem ser geradas neste padrão (mais de 16 milhões), há a possibilidade de se utilizar 2 bits menos significativos de cada canal, sem perda da qualidade da imagem. Assim, em cada pixel poder-se-ia usar 6 bits para camuflagem de informações. Logo, nestas condições, para uma imagem de 10Kb de tamanho, ter-se-ia 2560 bytes disponíveis para o embutimento de informações. 

Permutação pseudo-randômica

Esta classe nasceu como solução para os problemas do método anterior. Cada um, o emissor e o receptor da imagem, possui uma senha secreta, denominada stego-key, que é utilizada como semente para um gerador de números pseudo-randômicos. Este cria uma seqüência sem repetições { x1, x2 ... xl(m) } que é utilizada como índice de acesso aos bits da imagem, de modo que:

(01)

O bit da mensagem mi é embutido no bit Cxi da imagem capa, onde o índice xi é dado pelo gerador de número pseudo-randômicos. No entanto, para que o gerador possa criar uma seqüência sem repetições, é necessário controlar os índices já utilizados através de um vetor denominado de vetor de colisão. Ele evita o emprego de pixels já utilizados, impedindo que informações anteriores já armazenadas sejam perdidas. Sabe-se também que quanto menor for a diferença l(c) - l(m), maior a probabilidade de haver colisão. Portanto, mensagens que ocupem a maior parte da imagem recipiente podem causar um esforço computacional muito grande na geração de seqüências sem repetições.

Regiões e cálculo do bit de paridade

Este método é bastante semelhante ao anterior. A diferença é dada pelo fato de cada bit da mensagem mi  ser armazenado numa área Ai da imagem e não em um único bit. Nesta técnica, a imagem capa é dividida em um mínimo de l(m) áreas ou regiões contíguas não sobrepostas, e suas disposições ou utilizações são determinadas por um gerador de números aleatórios. Igualmente ao “Permutação pseudo-randômica”, aqui são encontrados problemas de colisão que deverão ser controlados com o emprego de um vetor. Veja um exemplo a seguir.

Considere uma mensagem de tamanho l(m) = 500 bits, uma imagem capa de 200 X 300 pixels e que, para cada pixel, só pode ser utilizado um único LSB, resultando em l(c) = 60.000 bits. Divide-se a capa em um mínimo de 500 regiões, que é o tamanho da mensagem. Logo, tem-se que cada área possui 120 pixels. Feita esta divisão, emprega-se o gerador de números peseudo-randômicos, o qual produzirá um valor j entre 1 e 500, o qual determinará a região a ser utilizada. Logo, o primeiro bit da mensagem m1 é colocado em Aj. Conhecida a área que será utilizada para embutir um bit da mensagem, calcula-se sua paridade p(I) utilizando a Equação 02.

(02)

A paridade é dada pelo resto da divisão por 2 da soma de todos os bits da área ou região. Por exemplo, se p(I) for igual a 1 e o bit da mensagem for 0, basta modificar qualquer um dos 120 LSB para que a paridade mude para 1.

Imagem Recipiente

Mensagem

1 0 0 1 1 1 0 1  . .

0	0	1	0	1	0	0	1	

Vetor de controle de colisões

Figura 09: Esboço do método regiões e bits de paridade

Imagens baseadas em palhetas

Toda imagem baseada em palhetas é constituída de duas partes: uma tabela de cores em forma de lista indexada (.i, Ci.), onde Ci é um ternário (R, G, B) definindo uma cor, e a imagem, propriamente dita, contendo os vários índices i. Portanto, tem-se dois locais que podem ser utilizados para camuflagem de informações: a palheta de cores e a imagem. O emprego direto desta última não é tão eficaz, tendo em vista que o uso do LSB da imagem pode acarretar uma mudança do índice e, conseqüentemente da cor. Como a tabela de cores não está obrigatoriamente ordenada, a mudança de apenas uma unidade no índice pode acessar cores radicalmente diferentes. Logo, a melhor forma de se embutir mensagens é na própria palheta.

 Existem várias formas da tabela de cores ser utilizada para embutir informações. Uma delas é a combinação das diversas maneiras de como a tabela pode ser ordenada. Uma palheta com N cores proporciona N! formas distintas de classificação e estas podem servir como meio para camuflagem de mensagens de pequenos tamanhos. Esta estratégia é extremamente vulnerável, pois basta uma nova classificação da tabela para a mensagem ser destruída. Outras técnicas foram criadas. EzStego [MACHADO], por exemplo, sugere que a ordenação seja feita de acordo com a similaridade das cores, antes do LSB da imagem ser modificado. Esta similaridade pode ser obtida através da distância Euclidiana d no espaço RGB, dada pela Equação 03, para duas cores (R1, G1, B1) e (R2, G2, B2)

(03)

No entanto, foi descoberto que o sistema visual humano é mais sensível à luminescência da cor [murray]. Assim, alguns autores sugerem seu uso como critério de ordenação. A luminescência é dada pela Equação 04:

(04)

A ordenação da palheta de cores por este critério possui alguns inconvenientes, tendo em vista que mesmo cores com a mesma luminescência podem ser radicalmente diferentes. 

Uma outra técnica muita utilizada em imagens baseada em palhetas é a redução da quantidade de cores da tabela, usando-se algum dos métodos de aproximação de cores, denominado de pontilhamento (dithering). O pontilhamento é uma tentativa de aproximar uma cor através da mistura de outras. Muitas vezes o dithering é realizado quando uma cor existente numa página da web, por exemplo, não pode ser exibida pelo navegador ou não é suportada pelo monitor de vídeo. Então, o navegador tenta substituí-la por uma cor aproximada, com a mistura de outras tonalidades que ele possa produzir. 

O pontilhamento é utilizado em esteganografia da seguinte forma: procura-se inicialmente reduzir a quantidade de cores da imagem através de algum processo de dithering. No exemplo da Figura 10, a imagem tinha apenas 4 cores {.(0,255,255),(0,128,128),(0,64,64),(0,32,32).} e através da média aritmética entre as cores semelhantes elas são levas para apenas 2 cores {.(0,192,192),(0,48,48).}. Teoricamente esta mudança/diminuição deve ser imperceptível por causa da semelhança de tonalidades. Como resultado do processo de pontilhamento, tem-se uma duplicação na tabela de cores.

Como as cores estão duplicadas, podem ser utilizados os índices pares da tabela para representar os zeros da mensagem e os índices ímpares de modo a representar os bits de valor um. 

1	1	1	0	0	1	

2	1	4	3	
3	3	1	2	
2	1	4	4	
4	3	2	1	
1	2	3	4	

1	1	3	4	
4	3	1	2	
2	1	4	4	
4	3	2	1	
1	2	3	4	

Imagem capa

Imagem portadora

2	1	4	3	
3	3	1	2	
2	1	4	4	
4	3	2	1	
1	2	3	4	

Imagem

Pontilhamento
(Processo)

2	1	4	3	
3	3	1	2	
2	1	4	4	
4	3	2	1	
1	2	3	4	

Imagem

1	( 0, 255, 255 )	
2	( 0, 128, 128 )	
3	( 0,   64,   64 )	
4	( 0,   32,   32 )	

Tabela de cores

1	( 0, 192, 192 )	
2	( 0, 192, 192 )	
3	( 0,   48,   48 )	
4	( 0,   48,   48 )	

Tabela de cores

Mensagem

Figura 10: Esteganografia em imagens baseadas em palhetas

É importante frisar que, na Figura 10, as imagens capa e portadora são idênticas no que diz respeito às cores que possuem, e que o processo de esteganografia, em si, não provoca nenhuma alteração na imagem. Muitos softwares existentes como S-Tools [BROWN], Mandelsteg [HASTUR], Hide and Seek [MARONEY] e Hide4pg [REPP] utilizam, com pequenas variações, esta técnica da redução de quantidade de cores.

Quantização e pontilhamento (dithering)

Quantização é a tentativa de predizer a intensidade de um pixel, baseado no valor dos pixels de uma vizinhança específica. Esta operação pode ser feita de forma linear ou não. Existem várias técnicas para seu cálculo, porém, na sua forma mais simples, a diferença ei entre os pixels adjacentes xi  e xi+1  é calculada através de uma função quantizadora Q, que fornece como saída uma aproximação discreta i da diferença do sinal xi - xi-1, tal que, i = Q ( xi – xi-1 ). Para cada passo da quantização, um coeficiente de erro é introduzido. Para a esteganografia, a diferença do sinal i  pode ser utilizada para armazenamento de informações. A  Tabela 02 mostra como os coeficientes de erros podem ser utilizados para camuflar informações. Inicialmente os valores 0 ou 1 são atribuídos para os diversos valores de i.

i	-4	-3	-2	-1	0	1	2	3	4	
Valor do bit	0	1	0	1	1	1	0	0	1	
Tabela 02: Coeficientes de erro da quantização.

Daí, o bit mi da mensagem é embutido da seguinte maneira. É obtido o i, que em seguida é aplicado na Tabela 02. Se seu valor não coincidir com o valor do bit da mensagem, então o pixel xi na imagem é modificado, de maneira que o novo cálculo de i resulte no valor desejado. Por exemplo, se o quarto bit da mensagem tem valor 1 e 4 calculado tem valor –2, modifica-se o valor do pixel da mensagem para que o novo ’4 tenha valor –3 ou –1, e assim por diante.

4.1.2 Métodos no Domínio da FreqÜencia (Frequency domain)

Transformação de Domínio

Essa técnica é considerada mais robusta, pois embute a mensagem em áreas significantes da imagem. Ela utiliza funções matemáticas para processamento de sinais digitais no domínio da freqüência livrando, assim, as informações de muitas formas de ataques. A idéia principal é modular a influência de diferentes componentes na imagem. Isto é, um sinal fica caracterizado por suas componentes de freqüência. Existem diversas funções para este fim, como: Transformada Discreta de Fourrier, Transformada Wavelet, Transformada de Hadamard, Transformada geral de chave dependente, Transformada Discreta do Cosseno (TDC) [CASTLEMAN]. Esta última, a TDC, é bastante conhecida devido à sua utilização no formato JPEG (Joint Photography Experts Group). As transformadas, na realidade, mudam o sinal do domínio espacial para o espectral. A fórmula da Transformada Discreta do Cosseno para duas dimensões é definida a seguir.

(05)

E sua inversa é dada por:

(06)

Onde seus coeficientes são: 

(07)

Os processos que utilizam este método trabalham basicamente da seguinte forma. Inicialmente cada pixel da imagem é transformado do padrão RGB para o YUV, fazendo com que a cor de cada pixel seja representada por apenas um número, e não por três, como é usado no RGB. Feito isto, a imagem capa é dividida em regiões não sobrepostas de 8 X 8 pixels. Cada região é utilizada para embutir somente um bit da mensagem secreta.

139	144	149	153	155	155	155	155	
144	151	153	156	159	156	156	156	
150	155	160	163	158	156	156	156	
159	161	162	160	160	159	159	159	
159	160	161	162	162	155	155	155	
161	161	161	161	160	157	157	157	
162	162	161	163	162	157	157	157	
162	162	161	161	163	158	158	158	
Figura 11: Seção de 8 X 8 pixels de uma imagem
  
Em seguida, utilizam-se as fórmulas acima para gerar os coeficientes da Transformada Discreta do Cosseno, como é mostrado na Figura 12. 

1260	-1	-12	-5	2	-2	-3	1	
-23	-17	-6	-3	-3	0	0	-1	
-11	-9	-2	2	0	-1	-1	0	
-7	-2	0	1	1	0	0	0	
-1	-1	1	2	0	-1	1	1	
2	0	2	0	-1	1	1	-1	
-1	0	0	-1	0	2	1	-1	
-3	2	-4	-2	2	1	-1	0	
Figura 12: Os ceficientes gerados pela TDC.

O próximo passo é a etapa de quantização, onde todos os coeficientes são divididos por valores prefixados constantes de uma tabela padrão de quantização. O resultado da divisão é arredondado para o inteiro mais próximo, como é mostrado nas Figura 13 e Figura 14.

16	11	10	161	24	40	51	61	
12	12	14	19	26	58	60	55	
14	13	16	24	40	57	69	56	
14	17	22	29	51	87	80	62	
18	22	37	56	68	109	103	77	
24	35	55	64	81	104	113	92	
49	64	78	87	103	121	120	101	
72	92	95	98	112	100	103	99	
Figura 13: Tabela padrão de quantização utilizado pelo JPEG

79	0	-1	0	0	0	0	0	
-2	-1	0	0	0	0	0	0	
-1	-1	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	
Figura 14: Resultado da quantização

O processo de embutir a mensagem é feito neste instante, após a quantização. O fundamento consiste em utilizar os bits menos significativos dos coeficientes quantizados diferentes de 0, 1 e –1. No exemplo acima, apenas os coeficientes de valores 79 e –2 podem ser utilizados.

Terminado o processo de quantização, é comum o aparecimento de blocos que não podem ser utilizados para embutir mensagens, por não possuírem coeficientes diferentes de 0, 1 e –1. Para evitar este problema, alguns autores sugerem a mudança da tabela de quantização, com o objetivo de aumentar a quantidade de coeficientes que possam ser utilizados.

Espectro Esparso (Spread Spectrum)

Esta tecnologia é definida como um meio de transmissão na qual o sinal que se deseja enviar é conduzido na largura de banda excedente do canal, isto é, na faixa não utilizada pela informação. Esta técnica, apesar de ser utilizada em imagens estáticas, é mais empregada para camuflagem de informações em arquivos de som. 

Seu uso para esteganografia baseia-se no fato de que geralmente a mensagem usada tem uma banda de sinal estreita, comparada com a banda larga da imagem. A tecnologia espectro esparso aplicada sobre a mensagem permite uma melhor distribuição ou equiparação da banda de freqüência. Além do mais, o spread spectrum (SS) soluciona uma dicotomia entre as altas e baixas freqüências. As altas são relevantes para a invisibilidade da mensagem, porém são ineficientes no que diz respeito à robustez. Já as baixas freqüências beneficiam a robustez, porém causam ruídos e imprecisões na imagem. O SS resolve este problema permitindo que um sinal de baixa energia seja embutido em cada uma das bandas de alta ou baixa freqüências.

4.1.3 mascaragem da percepção (Perceptual Masking Systems)

Masking and filtering

Masking se refere ao fenômeno onde um sinal pode tornar-se imperceptível para um determinado observador na presença de um outro sinal que o mascare. Este último é denominado de máscara.
 
Essa técnica é restrita às imagens de grande resolução (24.bits). Muitas vezes faz-se uma análise da imagem à procura de informações relevantes para o processo de camuflagem, como por exemplo: áreas com grandes variações de cores, seleção de regiões com distribuição complexas de bits, contorno de objetos, áreas com predominância da tonalidade azul etc. Após a análise, usam-se estas informações para determinar as regiões significantes e apropriadas para o embutimento da mensagem [WOLFGANG]. Acredita-se que a mensagem fica mais integrada à imagem portadora.

4.2. Critérios de avaliação

Os métodos utilizados para esconder informações são considerados confiáveis se, após a incidência de qualquer tipo de ataque, as propriedades citadas nas subseções seguintes se mantiverem inalteradas. A prioridade das propriedades depende do objetivo da operação. Para a esteganografia, por exemplo, a indetectabilidade é fundamental, enquanto que para a marca d’água e impressão digital, a robustez é mais importante. São considerados ataques para os sistemas que embutem ou escondem informações, qualquer meio não autorizado que detecte, destrua, extraia ou modifique a mensagem embutida.

Os critérios de avaliação das técnicas são baseados na análise do comportamento de algumas de suas características, as quais determinarão os pontos vulneráveis do algoritmo utilizado. De acordo com [FRIDRICH], um bom processo de esteganografia deve satisfazer e manter principalmente as propriedades 4.2.1 à 4.2.4 abaixo. As duas últimas, 4.2.5 e 4.2.6, estão relacionadas às marcas d’água digitais e às impressões digitais.

4.2.1 Invisibilidade ou Transparência

Este conceito está intimamente relacionado à percepção do olho humano. O resultado do processo de esteganografia pode gerar ruídos e distorções, que degradam a imagem a ponto de comprometer sua qualidade visual. É importante que estes fatores não sejam significativos, pois se um usuário verificar algum indício que gere suspeitas da existência de mensagens embutidas, o processo esteganográfico terá falhado, mesmo que estas não possam ser lidas. O teste para verificação da satisfatibilidade desta propriedade pode ser feito da seguinte forma: as duas imagens, a original e a que contém a mensagem, são apresentadas lado a lado a um avaliador, que procurará descobrir alguma diferença entre elas, apontando a que contém a mensagem; se seu percentual de acerto for de 50%, pode-se afirmar que a mensagem é invisível.

4.2.2 Indetectabilidade

Esta propriedade diz respeito à vulnerabilidade da mensagem de ser detectada através de análises estatísticas feitas sobre a imagem portadora. É esperado que determinados valores de alguns atributos da imagem sejam equânimes. Por exemplo, a quantidade de zeros e uns dos bits menos significativos deverá ser aproximadamente igual. Uma diferença acentuada deste valores poderá levar à suspeita da presença de mensagens. O tipo de exame estatístico varia de acordo com a técnica de esteganografia empregada e muitos algoritmos aplicam vários métodos de avaliação sobre a mesma imagem, tentando descobrir se esta é portadora ou não de informações secretas. 

4.2.3 Capacidade do Recipiente

É o tamanho máximo, em bytes de 8 bits, da mensagem que pode ser embutida na imagem recipiente. Esta medida depende do objetivo a ser alcançado. Muitos processos de esteganografia preferem diminuir a capacidade do recipiente para beneficiar a indetectabilidade, pois mensagens muito longas podem ser facilmente detectadas. Outros processos beneficiam a robustez, inserindo mais de uma vez a mensagem em áreas diferentes da imagem. Para a esteganografia, a capacidade do recipiente está intimamente relacionada com a facilidade de detecção. Quanto maior a mensagem, mais facilmente ela será descoberta pela análise estatística das propriedades da imagem.

4.2.4 Complexidade Computacional

O algoritmo que embute ou extrai as mensagens, denominado agente, não deve consumir um tempo computacional grande, pois isto inviabilizará seu uso em grandes volumes de arquivos.

4.2.5 Robustez

Esta característica é considerada crucial para a área de pesquisa de marcas d’água digitais e impressões digitais. Refere-se à habilidade da mensagem de se manter intacta após a incidência de algumas transformações e filtros sobre a imagem. Estas transformações são proporcionadas por softwares elaborados de tratamento de imagens, que submetem a fotografia digital a operações como: nitidez (sharpening) ou desfoco (blurring), redimensionamento, rotação, recorte (cropping) ou decimation [PETITCOLAS]. O UnZign  [UNZIGN] e o StirMark [STIRMARK] são exemplos de programas que procuram destruir a mensagem embutida, utilizando as técnicas acima.

4.2.6 Resistência à Adulteração

Esta propriedade diz respeito à facilidade que um usuário tem de alterar o conteúdo da mensagem embutida sem deixar vestígios. Ela é um elemento importante na apreciação da solidez e da confiabilidade das marcas d’água digitais pois, se a adulteração for imperceptível, a propriedade de uma obra pode ser mudada e facilmente pirateada. Para esteganografia, ela não é uma característica essencial desde que, neste ponto, a mensagem já foi detectada e a não detecção para esteganografia é um fator vital. Portanto, esta propriedade não é utilizada como meio de avaliação do método proposto.

Os sistemas para camuflar informações também podem ser classificados segundo o poder de ataque dos adversários. Nesta classificação existem dois tipos de adversários: O ativo, que tem a capacidade de destruir ou adulterar a mensagem, aqui incluídas as marcas d’água e as impressões digitais; e o passivo, que consegue apenas detectar a mensagem, aqui encontrando-se a esteganografia. Portanto, a abordagem principal na criação de novas técnicas para esconder informações é enquadrada na definição do tipo de adversário que se quer enfrentar.

4.3. Métodos de Detecção e Forma de Evitá-los

A detecção é um fator importante para a esteganografia, não só porque ela caracteriza o fracasso do processo, mas também porque proporciona a otimização do tempo de processamento na eliminação de mensagens indesejáveis. Isto é, aplicar procedimentos sobre todas as imagens que trafegam numa rede com o objetivo de exterminar possíveis mensagens embutidas é extremamente oneroso no que diz respeito ao tempo e à degradação dos sistemas. Acrescente-se a isto o fato de que os programas utilizados para a destruição de mensagens podem danificar as imagens, comprometendo sensivelmente a qualidade gráfica das mesmas. Uma forma mais eficiente seria inicialmente empregar processos de detecção, para posteriormente manipular somente as imagens que realmente possuam mensagens esteganografadas.
 
O ato de detectar a mensagem não é o único elemento que define a quebra de um sistema de camuflagem de informações. O ponto de rompimento depende do objetivo da camuflagem, e pode ser dado também pelos fatores abaixo.

a)	Detecção. Se a mensagem não for detectada, o processo de esteganografia utilizado é considerado teoricamente seguro [KATZENBEISSER]. Caso contrário, a esteganografia perdeu seu objetivo de ser. Já para as marcas d’água da corrente-1 (veja Figura 06, Capítulo 03), esta operação revela os dados de identificação da imagem ou de seu proprietário, não significando a quebra total do sistema como é o caso da esteganografia.

b)	Extração. Neste ponto, o objetivo é extrair a mensagem de forma que seu conteúdo possa ser desvendado, pois de alguma maneira a chave de acesso do sistema foi descoberta e utilizada. A extração da mensagem não implica na leitura do conteúdo da informação, pois a maioria dos sistemas a criptografa antes de embuti-la, criando assim, uma grande barreira para seu reconhecimento. Extração está intrinsecamente relacionada a fatores de segurança.

c)	Destruição. Estes ataques visam a destruir ou tornar ilegível somente a mensagem embutida, mantendo a imagem imutável à percepção humana. A destruição dos dados de propriedades nas marcas d’água e impressões digitais é o grande objetivo dos piratas, pois abre um vasto caminho para cópias não autorizadas. Portanto, uma meta para os pesquisadores destas duas áreas é a descoberta de processos mais robustos que evitem a destruição destes dados de identificação por hackers. Já para os estudiosos da área de segurança, o grande desafio é a descoberta de algoritmos eficientes que possam exterminar, de forma rápida e imperceptível, supostas mensagens embutidas em todas as fotografias que trafegam nas redes.

Devido à importância da detecção para os sistemas de esteganografia, esta seção foi designada para o estudo dos vários processos utilizados. Antes de descrevê-los, porém, deve ser ressaltado que o não conhecimento da imagem original é fundamental, pois bastaria a subtração de uma imagem pela outra para a obtenção da mensagem embutida.

A detecção de informações escondidas sem o conhecimento dos métodos que foram utilizados para embuti-las é extremamente difícil. No entanto, alguns algoritmos de esteganografia deixam sobre a imagem marcas características que agem como verdadeiras assinaturas, identificando a técnica empregada. Existem diversos vestígios que levam à suspeita da existência de mensagens. Para detectá-los, foram criadas várias formas de investigação, dentre elas: a investigação da presença de pixels isolados (ruídos), isto é, pixels cujas cores diferem bastante das dos seus vizinhos; a verificação da tabela de cores (para imagens que as utilizam); a verificação de padrões que se repetem ao longo da imagem; o estudo de propriedades estatísticas da imagem; e finalmente o exame do histograma, que é explicado a seguir.

4.3.1 Distorção na Imagem e Ruídos

É esperado que a tonalidade da cor de um pixel XI,J seja equivalente ou parecida com as cores dos seus circunvizinhos (XI-1,J-1,XI-1,J, XI-1,J+1, XI,J-1, XI,J+1, XI,J+1,XI+1,J-1, XI+1,J, XI+1,J+1). Veja a Figura 15. Existe uma anomalia, denominada de ruídos, causada por pixels cujas cores diferem fortemente das cores dos pixels de sua vizinhança. Eles causam um efeito na imagem vulgarmente chamado de chuviscos. A representação de um ruído pode ser vista na figura abaixo.

XI-1,J-1	XI-1,J	XI-1,J+1	
XI,J-1	XI,J	XI,J+1	
XI+1,J-1	XI+1,J	XI+1,J+1	
Figura 15: Representação de um pixel e sua vizinhança.

Nem sempre os ruídos são visíveis. Por esta razão, é comum o uso de processadores de imagens para detectá-los. Isto é feito, por exemplo, através da ampliação da fotografia digital, o que causa a dilatação dos ruídos, tornando-os visíveis.

Na Figura 16 tem-se um exemplo de ruídos que podem ser causados por processos de esteganografia. A imagem da direita possui aproximadamente 1% de ruídos em relação à original da esquerda.

Figura 16: Imagem da direita possui 1% de ruído gerado de forma aleatória.

Além dos ruídos, os processos de esteganografia podem causar também efeitos degradativos na imagem, trazendo um aspecto visual desconfortável, e indícios de informações camufladas. Eles são denominados de deformações ou anomalias, e geralmente são de fácil detecção. A Figura 17 mostra duas imagens com alguns tipos de deformações. A da esquerda possui anomalias localizadas (veja o rosto da modelo). O aspecto visual da imagem da direita foi notoriamente degradado em toda a sua superfície. As distorções foram amplificadas para melhor visualização.

Figura 17: Anomalias que podem ser causadas por processos de esteganografia. 

Pode-se afirmar que todos os processos de embutimento fundamentados no domínio espacial inserem alguma forma de ruído ou alteração na imagem. O grande objetivo dos programas de esteganografia é não torná-los aparentes e distribuí-los de forma uniforme por toda a superfície da fotografia. Portanto, uma maneira de tentar descobrir se a imagem possui informações camufladas é a análise visual da mesma na procura por qualquer anomalia ou ruído.

(08)

Uma outra importante técnica é o exame visual da distribuição dos ruídos. Através da subtração da imagem portadora da imagem capa, cria-se uma outra imagem denominada de matriz de erros, que possui somente os ruídos gerados pelo processo de esteganografia. Com esta matriz, pode-se verificar o grau de ruídos, sua densidade e a distribuição ao longo da superfície da fotografia. Esta técnica é utilizada pelos criadores de aplicativos de camuflagem de informação para avaliar seu método pois, como foi falado anteriormente, a imagem capa não deverá estar disponível após a geração da portadora. A Equação 08 é utilizada para gerar a matriz de erros.

Onde C(i,j) é o pixel da imagem capa localizado na linha i e coluna j, e P(i,j) é o pixel da imagem portadora com as mesmas coordenadas. A Figura 18 mostra três seções de matrizes de erros distintas, que foram geradas a partir da diferença da mesma imagem capa por três diversas imagens portadoras. As imagens portadoras foram concebidas por três métodos diferentes de camuflagem de informação utilizando as mesmas senha e mensagem secreta. Analisando as matrizes de erros abaixo, verifica-se que, apesar de a imagem capa e a mensagem serem idênticas, elas diferem bastante, conforme o método esteganográfico utilizado. Supostamente, a imagem central é mais facilmente descoberta que as demais, porque a mensagem está concentrada na parte inferior da imagem.

Figura 18: Matrizes de erros geradas pelos métodos SEA54, InfoStego e Secrets.

Existem alguns filtros que eliminam ou minimizam os ruídos e alguns tipos de anomalias das imagens. O mais comum deles determina a cor do pixel central pela média aritmética das cores dos pixels de sua vizinhança. Porém, a aplicação destes filtros após o processo de camuflagem poderá destruir as informações embutidas. Veja filtro da média aritmética abaixo.

XI,J = ( XI-1,J-1 + XI-1,J + XI-1,J+1 + XI,J-1 + XI,J+1 + XI+1,J-1 + XI+1,J + XI+1,J+1 )  / 8.       (09)

4.3.2 Análise Estatística das Propriedades

A análise estatística de determinadas propriedades da imagem portadora pode nos dar indícios da existência de mensagem escondida. Esta verificação é feita através de testes matemáticos, que procuram revelar se determinadas propriedades em uma fotografia alterada são diferentes das propriedades esperadas de uma imagem supostamente normal. Uma destas análises é o estudo da distribuição dos pixels alterados. 

Como foi dito, a maioria dos processos de esteganografia utiliza geradores de números pseudo-randômicos para escolher qual pixel da imagem receberá o bit da mensagem. A utilização destes geradores torna o embutimento da mensagem um processo probabilístico. Então, pode-se afirmar que a distribuição da quantidade de pixels alterados numa fotografia esteganografada é binomial, caso ela não possua vícios [PROVOS-3]. Devido ao seu caráter totalmente aleatório, a probabilidade de um pixel ser alterado é a mesma de não ser, ou seja 50% [FONSECA].

O desvio padrão  de uma distribuição binomial é dado pela raiz quadrada do produto de npq, onde n é o tamanho da amostra, p é a probabilidade do pixel ser alterado e q=1-p é a de não ser modificado. Então temos:

(10)

Consta acima que a probabilidade p de uma distribuição binomial é constante e igual a 0,5. Baseado nisto, a idéia é calcular o desvio padrão da amostra, e compará-lo com o desvio esperado para, assim, ser feito um exame se houve aleatoriedade na escolha do pixel da imagem. Quanto mais próximos eles estiverem, mais randômico foi o processo. Portanto, se houver uma discrepância muito grande, o processo possui vícios que poderão servir como marcas para a detecção.

Um outro teste muito utilizado é o cálculo da média quadrática dos erros ou discrepâncias (MSE - Mean Square Error), e o do sinal de pico para a taxa de ruído (PSNR - Peak Signal to Noise Ratio). Com eles, pode-se avaliar a qualidade das imagens ou comparar a eficiência entre métodos. O MSE é uma medida cumulativa do quadrado do erro entre as imagens capa e portadora, já o PSNR é a medida de pico do erro ou discrepância. As fórmulas para as duas medidas são:

(11)

(12)

Onde C(i,j) é a imagem capa com dimensão de M X N pixels, e P(i,j) é a  portadora. A raiz quadrada do MSE nos dá a medida de dispersão e o resultado do PSNR é dado em decibeis (dB). 

Quanto menor o erro (MSE), maior o PSNR, e quanto maior o PSNR, melhor a qualidade da imagem no que diz respeito a ruídos. Imagens portadoras com alto sinal de pico para a taxa de ruído camuflam melhor as mensagens.

4.3.3 Histograma

O histograma é uma função que mostra a distribuição das cores de cada canal ao longo da imagem. Um histograma muito comum é o bidimensional, cuja abcissa tem as várias tonalidade de cor (0-255), e a ordenada, suas respectivas freqüências.

A tentativa de detecção é feita através de uma análise investigativa do histograma pois, teoricamente, uma imagem "normal" que não sofreu qualquer processo de equalização ou regulagem de cores não tem regra de formação definida para sua distribuição de cores. No entanto, o ato de embutimento de mensagens pode criar verdadeiras assinaturas nos histogramas, delatando os sistemas esteganográficos. O objetivo dos criadores de processos de camuflagem de informação é evitar o aparecimentos destes sinais.
 
 A seguir é mostrada na Figura 19 uma imagem e seu respectivo histograma. Cada canal (RGB) tem sua própria função. Neste exemplo é interessante ressaltar que, apesar de a função do canal azul ser a mais acentuada, não significa obrigatoriamente que esta cor seja a predominante na imagem. Averiguando o histograma abaixo, pode ser visto que o canal azul detém os valores iniciais, mais escuros, da escala de cores, o canal verde, os intermediários e o vermelho, os valores mais elevados. Veja a Figura 19 colorida no Apêndice A.

Azul

Vermelho

Verde

Figura 19: Histograma dos três canais (RGB)

No próximo capítulo é mostrado o método de esteganografia proposto neste trabalho.

Capítulo  5

5  Método Proposto

5.1 Introdução

Este capítulo descreve o método SEA54 (Sistema de Esteganografia com Alocação do 5º e 4º bits), mostrando detalhes dos algoritmos de secionamento da imagem e do embutimento da mensagem. No final do capítulo, é feita uma análise da complexidade dos algoritmos e apresentada a implementação do método.

Em esteganografia, como mencionado anteriormente, a grande preocupação é com a indetectabilidade e a invisibilidade, ao contrário das marcas d’água digitais cuja ênfase é a robustez e a resistência à adulteração. Determinados sistemas de camuflagem de informações em imagens estáticas empregam técnicas no domínio da freqüência, valendo-se de fórmulas laboriosas que consomem um tempo considerável de processamento, e que inviabilizam seu uso em redes com grandes tráficos. Alguns deles, inclusive, podem modificar determinadas características da fotografia, deixando indícios que possibilitam a constatação da existência de mensagens. Além do mais, as técnicas no domínio da freqüência diminuem notavelmente a capacidade do recipiente e têm como prioridade a robustez, fato que as designam para as marcas d’água digitais. Portanto, nossos estudos foram voltados para processos no domínio espacial, que possibilitam a construção de algoritmos de menor complexidade, logo, mais eficientes. 

O método proposto é baseado na combinação dos elementos das técnicas do domínio espacial e da mascaragem da percepção. Na verdade, ele foi agrupado desta forma por se tratar de um processo que embute a mensagem diretamente nos pixels da imagem, ao contrário das que são enquadradas no domínio da freqüência, na qual a mensagem é inserida nos coeficientes quantizados. Um diferencial importante do método proposto em relação aos outros do domínio espacial citados na seção 4.1.1 é que o criado não utiliza os bits menos significativos (LSB) da imagem para embutir a mensagem. Ao contrário, é sugerido o uso de bits mais significativos. Com isto, evita-se que a mensagem seja destruída com um simples procedimento de mudar o valor dos LSBs.

Escolhidos os domínios para os quais as pesquisas seriam direcionadas, era preciso determinar qual padrão de cores seria empregado. Verifica-se, portanto, que era cada vez mais requisitado o uso de fotografias com maiores definições de coloração. A necessidade de se mostrar imagens do mundo real de forma verdadeira e inequívoca forçou o aparecimento de padrões, como o RGB-24 por exemplo, que levasse a nossa realidade cromática para o mundo virtual. Antigamente este padrão não era muito explorado devido às limitações de hardware. No entanto, com o avanço tecnológico, é extremamente comum o uso de imagens no padrão RGB-24. Vale ressaltar que já existe em uso o padrão RGB-32 e fala-se em aumentar ainda mais a quantidade de bits por pixels para que se possa trabalhar com texturas complexas e transparência ao mesmo tempo. Portanto, dentro da realidade que foi apresentada, e devido à crescente demanda por imagens no padrão RGB-24, foi escolhido este padrão para imagens estáticas como receptáculo do método proposto. 

5.2 Apresentação do Método

A maioria dos processos de camuflagem de informação utiliza os bits redundantes da imagem para o embutimento de informações da mensagem. Bits redundantes são todos os bits que podem ser modificados sem alterarem as características visuais e estatísticas da fotografia digital. Na sua grande maioria, os bits redundantes são os menos significativos. O grande desafio neste trabalho de pesquisa foi o de encontrar uma forma de embutir a informação em bits mais significativos da imagem, pois a utilização dos LSBs mostrou-se ineficiente no que diz respeito à integridade das informações. Isto é, um algoritmo de fácil confecção pode ser utilizado para modificar todos os bits menos significativos de uma imagem, não obstante a existência de mensagens. 

O algoritmo abaixo modifica o LSB de uma imagem de M linhas por N colunas, destruindo uma mensagem que poderia ter sido embutida diretamente nos bits menos significativos. Ele coloca zero no último bit menos significativo de toda a imagem:

Entrada: Imagem, Quantidade de Linhas M, Quantidade de Colunas N.
Saída...: 	Imagem.
// A divisão por 2 otimiza o algoritmo
X := int(N/2)
Faça i=1 até M
Faça j=1 até X
ZeraBitMenosSignificativo( pixel(i, j) );
ZeraBitMenosSignificativo ( pixel(i, j + X) );

O método proposto foi denominado de SEA54 (Sistema de Esteganografia com Alocação do 5º e 4º bits), pois o mesmo é baseado na utilização do quinto e quarto bits de um byte do canal RGB para embutir um bit da mensagem. Utiliza-se somente o canal azul por ser menos perceptível ao olho humano.

 O processo de camuflar informações através do SEA54 funciona da seguinte forma:

Passo-1:.Obtém-se o tamanho l(m) em bits da mensagem e o grava nos 24 pixels iniciais da imagem. São utilizados os próximos 3 pixels para armazenar informações sobre o tipo de secionamento da imagem e os próximos 13 para controles diversos. Portanto, a mensagem propriamente dita é embutida a partir do 41º pixel.

Passo-2:.Divide-se a imagem em l(m) zonas quadrangulares, de mesmo tamanho e não sobrepostas, cada uma das quais é utilizada para armazenar um bit da mensagem. Com este procedimento, garante-se uma distribuição uniforme da mensagem. Dependendo de l(m), pode-se inserir o bit da mensagem várias vezes dentro da fotografia digital. O aconselhável seria três vezes, pois, no ato da extração, se na comparação de dois valores existisse diferença, lançar-se-ia mão do terceiro para dirimir a dúvida. O algoritmo de secionamento da imagem é explorado na seção 5.4.

Passo-3:.Solicita-se uma senha numérica, que servirá como semente para um gerador de números pseudo-randômicos. Este gerador produzirá os números que indicarão a seqüência com que as zonas, citadas no segundo passo, são utilizadas. Ao contrário de alguns outros métodos, a senha não é gravada no arquivo da imagem.

Passo-4:.De posse do primeiro bit da mensagem e após o conhecimento de qual zona será utilizada, é calculado o centro da mesma para se saber qual pixel da imagem será usado. Como nosso sistema visual tem sensibilidade diferente às três cores básicas, sendo mais sensitivo às luzes verde, vermelha e azul, nesta ordem, é usado prioritariamente o canal azul, por este tornar menos evidentes as modificações. 

Passo-5:.Analisam-se os valores dos bits 5 e 4 do canal azul do pixel escolhido no passo anterior e aplicam-se estes valores na Tabela 03, verificando-se qual valor eles representam. Compara-se este número com o valor do bit que se quer embutir da mensagem. Se eles coincidirem, ótimo, nada deverá ser feito; caso contrário, mudam-se os valores dos bits 5 e 4 para que estes reflitam o valor do bit da mensagem. Por exemplo, se o bit da mensagem que se deseja embutir for 1 e se ao analisar os bits 5 e 4 da imagem forem encontrados os valores (0,1) ou (1,1) respectivamente, pela tabela abaixo não seria necessário nenhum procedimento. Caso contrário, os bits 5 e 4 deveriam ser alterados para que retratem o valor desejado.

Imagem		Repre-	
Bit-5	Bit-4		sentação	
0	1	
	
1	
1	1			
				
1	0	
	
0	
0	0			
Tabela 03: Relaciona os bits da imagem com os bits da mensagem.

O método proposto pode ser aplicado a imagens armazenadas em qualquer um dos vários formatos de arquivo existentes para gravação de fotografia digitais estáticas, contanto que utilizem 8 bits por canal de cor e façam uso de algoritmos de compressão de dados sem perda de informação (lossless). Particularmente, foi empregado o formato PPM pelas razões já expostas na seção 2.4.1.

Dentro dos preceitos da mascaragem da percepção, foi feito uso de um fato importante das características do sistema visual humano para mascarar a percepção das mudanças feitas sobre a imagem. Mudanças pequenas, para mais ou para menos, na cor de um dos canais em uma imagem no padrão RGB-24 são imperceptíveis aos humanos. Baseado nisto, são descritos agora os fatos que fundamentaram o SEA54.

5.2.1 Assertivas

Considere as seguintes assertivas:

A)	Em uma imagem com padrão RGB-24, a mudança de 4 unidades para mais ou para menos, em qualquer canal de cor, é imperceptível ao olho humano.

B)	Como é mostrado, o quarto e o quinto bits foram escolhidos por satisfazerem a assertiva A, e por definirem o centro do byte, deixando para cada lado três bits que poderão ser utilizados para ajuste de valores. Portanto, estes são os dois bits mais significativos que se pode empregar e que nos proporcionarão mudanças mínimas nos valores dos pixels. É fácil constatar que o emprego de outros pares não satisfaria a assertiva A. O 6º e 5º bits, por exemplo, podem gerar diferenças para mais ou para menos de até 16 unidades.

Três bits para esquerda

Três bits para direita

Bit menos significativo

Bits mais significativos para os menos significativos	
8	7	6	5	4	3	2	1	

Tabela 04: Disposição dos bits 5 e 4

C)	Qualquer canal de cor (vermelho, verde ou azul) com valores menores que 4 e maiores que 251 são desprezados, isto é, não são utilizados para embutir informações, por não atenderem à assertiva A. Esta característica é observada apenas nos extremos inferior (0 a 3) e superior (252 a 255) da escala de cores.

D)	Nenhuma informação significante, como a senha e o tipo de gerador de número aleatórios por exemplo, é embutida na imagem. Somente a própria mensagem, e opcionalmente seu tamanho e alguns pequenos controles de programação.

E)	Um dos pré-requisitos necessários para a garantia da privacidade da mensagem é o não conhecimento da imagem original, pois uma simples subtração entre ela e a imagem portadora delataria a existência de informações.

5.3 Justificativa

Nesta seção procura-se descrever a linha de pesquisa e quais os subsídios empregados para a criação dos vários elementos do método. Pode ser verificado que alguns deles, por tratar-se de um método novo, foram obtidos por observação da disposição da tabela binária.
 
No padrão escolhido (RGB-24), cada canal possui um byte de 8 bits para reproduzir suas tonalidades de vermelho, verde ou azul. Logo, cada um varia de 0 a 255, que é o máximo valor numérico positivo que se pode representar em 8 bits. Avaliando uma tabela de conversão de números decimais para binários, pode-se verificar que existem determinados grupos de elementos que se repetem ao longo dela. Então, foi concentrada inicialmente a análise nesta tabela à procura de um padrão ou conjunto de 4 elementos que se repetisse periodicamente ao longo de toda a sua extensão. Por que 4 elementos? Porque quatro é a quantidade máxima de combinações possíveis de valores dos bits 5 e 4 da imagem, e periódico ao longo de sua extensão porque deveria abranger todos os valores do espectro de cores (0 a 255).

Sabe-se que no sistema decimal os números inteiros possuem um padrão de alternância entre pares e ímpares. Sabe-se também que, quando convertidos para binários, é o primeiro bit menos significativo que designa esta mudança par/ímpar. Observando o universo dos bits 1 e 2 da Tabela 05, se descobriu que existe um padrão que se repete periodicamente, e que satisfaz as proposições citadas acima (possuir 4 elementos e contemplar toda a tabela). Foi decidido isolar este conjunto e começar a estudar uma forma de utilizá-lo para representar os bits da mensagem.

Padrão de repetição dos bits 2 e 1 que foram usados como modelo.

Bits->	8	7	6	5	4	3	2	1				
0	0	0	0	0	0	0	0	0		0	0	
1	0	0	0	0	0	0	0	1		0	1	
2	0	0	0	0	0	0	1	0		1	0	
3	0	0	0	0	0	0	1	1		1	1	
4	0	0	0	0	0	1	0	0		0	0	
5	0	0	0	0	0	1	0	1		0	1	
6	0	0	0	0	0	1	1	0		1	0	
7	0	0	0	0	0	1	1	1		1	1	
∶	∶	∶	∶	∶	∶	∶	∶	∶		∶	∶	

∶	∶	∶	∶	∶	∶	∶	∶	∶		∶	∶	
 248	1	1	1	1	1	0	0	0		0	0	
249	1	1	1	1	1	0	0	1		0	1	
250	1	1	1	1	1	0	1	0		1	0	
251	1	1	1	1	1	0	1	1		1	1	
252	1	1	1	1	1	1	0	0		0	0	
253	1	1	1	1	1	1	0	1		0	1	
254	1	1	1	1	1	1	1	0		1	0	
255	1	1	1	1	1	1	1	1		1	1	
    Tabela 05: Mostra a conversão de decimal para binário

Logicamente, se a Tabela 05 for analisada detalhadamente, serão encontrados alguns outros padrões de repetição nos números binários. No entanto, ao contrário do conjunto escolhido, estes outros podem não satisfazer à assertiva A. Não é descartado o fato da existência de outros conjuntos que possam ser aproveitados. Porém, o elemento importante a considerar é que o padrão aplicado para o embutimento deverá ser o mesmo empregado para a extração.

5.3.1 Representando 0 e 1

Seja P = { (0,0),(0,1),(1,0),(1,1) } o conjunto extraído da Tabela 05. É preciso definir quais dois elementos de P serão utilizados para representar os bits da mensagem com valor zero pois, por exclusão, os outros dois elementos representariam o bit 1. Foram feitos vários experimentos com as combinações possíveis dos elementos e chegou-se à seguinte conclusão: a combinação II, que é usada pelo SEA54, é a melhor entre todas, pois proporciona a menor variação. Esta combinação é exatamente a representação dos números pares 0 e 2.

Combinações para representar o zero	
I		II		III		IV		V	
0	0		0	0		0	0		0	1		1	0	
0	1		1	0		1	1		1	0		1	1	
Tabela 06: Combinações possíveis dos elementos de P

Considere o exemplo. Seja zero o valor do primeiro bit da mensagem que se quer embutir e (42, 101, 25) os valores do pixel escolhido da imagem pela função pseudo-randômica. Convertendo o valor do canal azul para binário, tem-se:

Régua	8	7	6	5	4	3	2	1	
25	0	0	0	1	1	0	0	1	
Tabela 07: Conversão do canal azul para binário

Nos bits 5 e 4 tem-se o valor (1,1). Pela Tabela 07, é preciso mudá-los para  (0,0) ou (1,0), de forma que o valor decimal resultante não seja maior que 29 nem menor que 21 (assertiva A). Verifica-se que o melhor valor seria o (1,0) pois, após o ajustamento dos outros bits à esquerda ou à direita, tem-se uma variação máxima de menos dois. 

Régua->	128	64	32	16	8	4	2	1			
Bits->	8	7	6	5	4	3	2	1		Diferença	
23	0	0	0	1	0	1	1	1		-2	
Tabela 08: Resultado aplicando a Combinação  II

Após a alteração, da melhor forma dos outros bits, é alcançado o resultado 23, que satisfaz plenamente a condição de variação de 4. Observe que os valores dos bits 3 e 2 foram alterados.

Encontrada a forma como os bits 5 e 4 da imagem embutirão o valor do bit da mensagem (combinação II da Tabela 06), é provado, por exclusão, que as demais combinações (I, III, IV e V) podem gerar variação maior do que 4. Mais adiante é mostrado que a combinação eleita mantém a variação de mais ou menos 4 para o espectro de cores ente 4 e 251.

Régua	128	64	32	16	8	4	2	1	
►		128	64	32	16	8	4	2	1			
Bits	8	7	6	5	4	3	2	1			8	7	6	5	4	3	2	1		Diferença	
27	0	0	0	1	1	0	1	1		32	0	0	1	0	0	0	0	0		+5	
Tabela 09: Resultado aplicando a Combinação I - (0,0) ou (0,1)

Régua	128	64	32	16	8	4	2	1	
►		128	64	32	16	8	4	2	1			
Bits	8	7	6	5	4	3	2	1			8	7	6	5	4	3	2	1		Diferença	
16	0	0	0	1	0	0	0	0		24	0	0	0	1	1	0	0	0		+8	
Tabela 10: Resultado aplicando a Combinação III – (0,0) ou (1, 1)

Régua	128	64	32	16	8	4	2	1	
►		128	64	32	16	8	4	2	1			
Bits	8	7	6	5	4	3	2	1			8	7	6	5	4	3	2	1		Diferença	
30	0	0	0	1	1	1	1	0		23	0	0	0	1	0	1	1	1		-7	
Tabela 11: Resultado aplicando a  Combinação IV – (0,1) ou (1,0)

Régua	128	64	32	16	8	4	2	1	
►		128	64	32	16	8	4	2	1			
Bits	8	7	6	5	4	3	2	1			8	7	6	5	4	3	2	1		Diferença	
102	0	1	1	0	0	1	0	1		95	0	1	0	1	1	1	1	1		-7	
Tabela 12: Resultado aplicando a Combinação V – (1,0) ou (1,1)

Tendo mostrado, através da Tabela 09 a Tabela 12, que as demais combinações não podem ser empregadas devido à diferença ser maior que |4|. Precisa-se agora provar que a condição II  atende a todos os números ao longo do espectro de cores de 4 a 251 pois, como foi citado, os limites (0 a 3) e (252 a 255) são descartados. A Tabela 13 contem as alterações possíveis dos bits 8, 7, 6, 3, 2 e 1, provando que sempre existe uma maneira de arranjá-los de forma que a variação do número decimal gerado não ultrapasse o valor desejado, |4|. 

A Tabela 13 contém as seguintes informações:

•	Na coluna A estão os valores em decimal.
•	Na coluna B está a coluna A representada no sistema binário.
•	Na coluna C tem-se as mudanças sofridas pelo byte da imagem para embutir o bit da mensagem se este último for 0.
•	A coluna D é similar à C, tem-se as mudanças sofridas pelo byte da imagem para embutir o bit da mensagem se este último for 1.
•	A última coluna é a diferença entre o valor inicial, coluna A, e o valor alterado, coluna C ou D.
•	Nas colunas C e D existem intervalos que estão parcialmente preenchidos. Isto significa que não é necessária nenhuma alteração, pois o byte da imagem já reflete o valor do bit que se quer embutir. Por exemplo de (4 a 7) na coluna C,  (8 a 15) na coluna D, e assim por diante.

Padrão: Para 0 tem-se (0,0) ou (1,0) e para 1 tem-se (0,1) e (1,1).
A	B		C		D	
	
Pixel original da imagem		Modificação do pixel  da imagem  se o bit da mensagem  for  0		Modificação do pixel da imagem   se o bit da mensagem  for 1	
Régua=>	128	64	32	16	8	4	2	1		128	64	32	16	8	4	2	1		128	64	32	16	8	4	2	1		
Bits =>	8	7	6	5	4	3	2	1		8	7	6	5	4	3	2	1		8	7	6	5	4	3	2	1		
4	0	0	0	0	0	1	0	0					0	0					0	0	0	0	1	0	0	0	+4	
5	0	0	0	0	0	1	0	1					0	0					0	0	0	0	1	0	0	0	+3	
6	0	0	0	0	0	1	1	0					0	0					0	0	0	0	1	0	0	0	+2	
7	0	0	0	0	0	1	1	1					0	0					0	0	0	0	1	0	0	0	+1	
																												
8	0	0	0	0	1	0	0	0		0	0	0	0	0	1	1	1					0	1				-1	
9	0	0	0	0	1	0	0	1		0	0	0	0	0	1	1	1					0	1				-2	
10	0	0	0	0	1	0	1	0		0	0	0	0	0	1	1	1					0	1				-3	
11	0	0	0	0	1	0	1	1		0	0	0	0	0	1	1	1					0	1				-4	
																												
12	0	0	0	0	1	1	0	0		0	0	0	1	0	0	0	0					0	1				+4	
13	0	0	0	0	1	1	0	1		0	0	0	1	0	0	0	0					0	1				+3	
14	0	0	0	0	1	1	1	0		0	0	0	1	0	0	0	0					0	1				+2	
15	0	0	0	0	1	1	1	1		0	0	0	1	0	0	0	0					0	1				+1	
																												
16	0	0	0	1	0	0	0	0					1	0					0	0	0	0	1	1	1	1	-1	
17	0	0	0	1	0	0	0	1					1	0					0	0	0	0	1	1	1	1	-2	
18	0	0	0	1	0	0	1	0					1	0					0	0	0	0	1	1	1	1	-3	
19	0	0	0	1	0	0	1	1					1	0					0	0	0	0	1	1	1	1	-4	
																												
20	0	0	0	1	0	1	0	0					1	0					0	0	0	1	1	0	0	0	+4	
21	0	0	0	1	0	1	0	1					1	0					0	0	0	1	1	0	0	0	+3	
22	0	0	0	1	0	1	1	0					1	0					0	0	0	1	1	0	0	0	+2	
23	0	0	0	1	0	1	1	1					1	0					0	0	0	1	1	0	0	0	+1	
																												
24	0	0	0	1	1	0	0	0		0	0	0	1	0	1	1	1					1	1				-1	
25	0	0	0	1	1	0	0	1		0	0	0	1	0	1	1	1					1	1				-2	
26	0	0	0	1	1	0	1	0		0	0	0	1	0	1	1	1					1	1				-3	
27	0	0	0	1	1	0	1	1		0	0	0	1	0	1	1	1					1	1				-4	
																												
28	0	0	0	1	1	1	0	0		0	0	1	0	0	0	0	0					1	1				+4	
29	0	0	0	1	1	1	0	1		0	0	1	0	0	0	0	0					1	1				+3	
30	0	0	0	1	1	1	1	0		0	0	1	0	0	0	0	0					1	1				+2	
31	0	0	0	1	1	1	1	1		0	0	1	0	0	0	0	0					1	1				+1	
																												
32	0	0	1	0	0	0	0	0					0	0					0	0	0	1	1	1	1	1	-1	
33	0	0	1	0	0	0	0	1					0	0					0	0	0	1	1	1	1	1	-2	
34	0	0	1	0	0	0	1	0					0	0					0	0	0	1	1	1	1	1	-3	
35	0	0	1	0	0	0	1	1					0	0					0	0	0	1	1	1	1	1	-4	
																												
∶	∶	∶	∶	∶	∶	∶	∶	∶		∶	∶	∶	∶	∶	∶	∶	∶		∶	∶	∶	∶	∶	∶	∶	∶		
Tabela 13: Representação binária de um canal RGB de um pixel da imagem

A	B		C		D	
	
Pixel original da imagem		Modificação do pixel  da imagem  se o bit da mensagem  for  0		Modificação do pixel da imagem   se o bit da mensagem  for 1	
Régua=>	128	64	32	16	8	4	2	1		128	64	32	16	8	4	2	1		128	64	32	16	8	4	2	1		
Bits =>	8	7	6	5	4	3	2	1		8	7	6	5	4	3	2	1		8	7	6	5	4	3	2	1		
∶	∶	∶	∶	∶	∶	∶	∶	∶		∶	∶	∶	∶	∶	∶	∶	∶		∶	∶	∶	∶	∶	∶	∶	∶		
228	1	1	1	0	0	1	0	0					0	0					1	1	1	0	1	0	0	0	+4	
229	1	1	1	0	0	1	0	1					0	0					1	1	1	0	1	0	0	0	+3	
230	1	1	1	0	0	1	1	0					0	0					1	1	1	0	1	0	0	0	+2	
231	1	1	1	0	0	1	1	1					0	0					1	1	1	0	1	0	0	0	+1	
																												
232	1	1	1	0	1	0	0	0		1	1	1	0	0	1	1	1					0	1				-1	
233	1	1	1	0	1	0	0	1		1	1	1	0	0	1	1	1					0	1				-2	
234	1	1	1	0	1	0	1	0		1	1	1	0	0	1	1	1					0	1				-3	
235	1	1	1	0	1	0	1	1		1	1	1	0	0	1	1	1					0	1				-4	
																												
236	1	1	1	0	1	1	0	0		1	1	1	1	0	0	0	0					0	1				+4	
237	1	1	1	0	1	1	0	1		1	1	1	1	0	0	0	0					0	1				+3	
238	1	1	1	0	1	1	1	0		1	1	1	1	0	0	0	0					0	1				+2	
239	1	1	1	0	1	1	1	1		1	1	1	1	0	0	0	0					0	1				+1	
																												
240	1	1	1	1	0	0	0	0					1	0					1	1	1	0	1	1	1	1	-1	
241	1	1	1	1	0	0	0	1					1	0					1	1	1	0	1	1	1	1	-2	
242	1	1	1	1	0	0	1	0					1	0					1	1	1	0	1	1	1	1	-3	
243	1	1	1	1	0	0	1	1					1	0					1	1	1	0	1	1	1	1	-4	
																												
244	1	1	1	1	0	1	0	0					1	0					1	1	1	1	1	0	0	0	+4	
245	1	1	1	1	0	1	0	1					1	0					1	1	1	1	1	0	0	0	+3	
246	1	1	1	1	0	1	1	0					1	0					1	1	1	1	1	0	0	0	+2	
247	1	1	1	1	0	1	1	1					1	0					1	1	1	1	1	0	0	0	+1	
																												
248	1	1	1	1	1	0	0	0		1	1	1	1	0	1	1	1					1	1				-1	
249	1	1	1	1	1	0	0	1		1	1	1	1	0	1	1	1					1	1				-2	
250	1	1	1	1	1	0	1	0		1	1	1	1	0	1	1	1					1	1				-3	
251	1	1	1	1	1	0	1	1		1	1	1	1	0	1	1	1					1	1				-4	
Tabela 14: Representação binária de um canal RGB (extremos).

A Tabela 15 justifica a exclusão dos extremos inferior (0 a 3) e superior (252 a 255) do espectro total de cores, pois não existem combinações de bits, tal que a diferença entre o byte original e o modificado seja  |4|.

A	B		C		D	
	
Pixel original da imagem		Modificação do pixel  da imagem  se o bit da mensagem  for  0		Modificação do pixel da imagem   se o bit da mensagem  for 1	
Régua=>	128	64	32	16	8	4	2	1		128	64	32	16	8	4	2	1		128	64	32	16	8	4	2	1		
Bits =>	8	7	6	5	4	3	2	1		8	7	6	5	4	3	2	1		8	7	6	5	4	3	2	1		
0	0	0	0	0	0	0	0	0					0	0					0	0	0	0	1	0	0	0	+8	
1	0	0	0	0	0	0	0	1					0	0					0	0	0	0	1	0	0	0	+7	
2	0	0	0	0	0	0	1	0					0	0					0	0	0	0	1	0	0	0	+6	
3	0	0	0	0	0	0	1	1					0	0					0	0	0	0	1	0	0	0	+5	
																												
252	1	1	1	1	1	1	0	0		1	1	1	1	0	1	1	1					1	1				-5	
253	1	1	1	1	1	1	0	1		1	1	1	1	0	1	1	1					1	1				-6	
254	1	1	1	1	1	1	1	0		1	1	1	1	0	1	1	1					1	1				-7	
255	1	1	1	1	1	1	1	1		1	1	1	1	0	1	1	1					1	1				-8	
Tabela 15: Limites inferior e superior excluídos por terem variação acima de 4.
Agora que se sabe como representar os valores 0 e 1 de um bit da mensagem, pode ser visto como é feita a escolha do pixel da imagem que sofrerá a modificação.

5.4 Algoritmo de Seccionamento da Imagem

O objetivo do algoritmo de seccionamento da imagem capa é o de garantir a distribuição uniforme dos bits da mensagem sobre toda a imagem, evitando concentração em determinadas áreas e escassez em outras. A estratégia da criação de regiões otimiza também o tempo de processamento, já que diminui o consumo de memória tendo em vista que os controles se darão sobre as áreas secionadas e não sobre todos os pixels da imagem.

Como foi explanado na seção 5.2, é utilizado um gerador de números pseudo-randômicos (GNPR) no processo de embutimento. No entanto, o uso simplesmente deste gerador não assegura uma disposição igualitária dos bits da mensagem sobre a imagem, pois alguns destes bits podem-se concentrar em certas regiões, amplificando os ruídos e tornando-os plausíveis de detecção. Para determinados tipos de fotografias, esta má distribuição cria fortes indícios que levam facilmente à suspeita da existência de informações escondidas. Uma forma de solucionar este problema dá-se por meio do seccionamento da imagem em regiões uniformes e da utilização de cada uma delas para o embutimento de um único bit da mensagem. 

Cada área da imagem embutirá um único bit da mensagem.

A Figura 20 mostra que a simples aplicação do GNPR sobre a imagem não é eficiente, pois pode promover o aparecimento de regiões da fotografia que não são utilizadas, gerando assim, concentrações indesejáveis dos bits da fotografia (imagem da esquerda). O seccionamento da imagem em l(m)  regiões e a inserção de um único bit da mensagem em cada uma delas garante uma distribuição espacial uniforme, pois assim se assegura que toda a superfície da fotografia digital é utilizada (imagem da direita). Este é um fator fundamental para evitar a detecção pela avaliação das propriedades estatísticas da imagem. Veja seção 4.3.2.

 

Figura 20: Seccionamento da imagem em regiões uniformes.
Um outro ponto a ser ressaltado é que um mesmo número pode ser gerado mais de uma vez pelo GNPR. Isto acarreta uma sobreposição e conseqüente perda das informações existentes. Logo, é necessário o controle de colisão. Este controle é feito através da criação de um vetor do tamanho da mensagem l(m), que controlará a região que já foi utilizada, evitando que ela seja reaproveitada. Portanto, se não fosse empregado este critério da divisão da imagem em regiões, seria preciso criar um vetor do tamanho da imagem para o controle de colisões, o que levaria a um consumo exagerado de memória e consequentemente a um maior tempo de processamento.

5.4.1 Fator de Embutimento

Foram criados três tipos de fracionamento da imagem de acordo com o seu fator de embutimento. Este fator determina a relação entre o tamanho da imagem em pixels, l(c), e o tamanho da mensagem em bits, l(m). 

Os processos de secionamento da fotografia digital são relativamente simples e funcionam da seguinte forma. Inicialmente calcula-se o fator de embutimento E(l), dividindo-se l(c) decrescido de 40 por l(m). Foi subtraído quarenta ao dividendo porque foram usados 24 bits para guardar o tamanho da mensagem, 3 bits para definir o tipo de fracionamento e os 13 restantes para controles futuros (veja passo-1 na seção 5.2). Pode-se observar que E(l) dará o tamanho de cada região ou área da imagem em pixels após o secionamento.

(13)

A partir de E(l), pode-se fazer as seguintes análises:

Se E(l) = 0	- A imagem não comporta a mensagem.	
Se E(l) = 1	- A mensagem tem quase o mesmo tamanho da imagem. Logo, não se emprega o algoritmo de secionamento. Simplesmente aplica-se o gerador de números pseudo-randômicos para acessar diretamente o pixel da fotografia digital. 	
Se E(l) = 2 	-.Aqui é utilizado o algoritmo que foi denominado de Algoritmo de Alternância. Veja na seção 5.4.2.	
Se E(l)  3 	- Neste caso se emprega a estratégia de secionamento da imagem, que é explicada nos parágrafos seguintes.	

5.4.2 Fator de Embutimento igual a 2 (Algoritmo de ALternância)

O Algoritmo de Alternância é extremamente simples. Ele é baseado no fato de utilizar um pixel e saltar o próximo. O critério é o seguinte: nas linhas pares saltam-se as colunas pares e nas linhas ímpares saltam-se as ímpares. O objetivo é não utilizar dois pixels vizinhos para embutir informações. O GNPR é utilizado para escolher as linhas. Feita esta escolha, é verificado se a linha é par ou ímpar, daí então é aplicado o critério acima. O Algoritmo de Alternância garante uma distribuição perfeita sobre toda a superfície da imagem. O processo é mostrado na figura abaixo.

	Colunas	
	1	2	3	4	5	6	7	
Linha-1								
Linha-2								
Linha-3								
Figura 21: Processo de alternância para E(l) = 2.

5.4.3 Fator de Embutimento igual a 3 (secionamento da imagem)

Aqui é falado do algoritmo de secionamento propriamente dito, pois como foi visto, para fatores de embutimento igual a 1 ou 2 não há secionamento.

Existem diversos algoritmos para fracionamento de imagens. Alguns deles bastante laboriosos, agrupam pixels com algumas características intrínsecas em relação aos seus vizinhos. Porém, neste trabalho, o objetivo é obter um procedimento que proporcione uma distribuição uniforme por toda a superfície da imagem. Logo, o algoritmo de secionamento deve ser bastante simples e eficiente. Para explaná-lo, é utilizado um exemplo prático.

Seja uma imagem hipotética de 4 linhas por 19 colunas, e suponha que se deseja embutir uma mensagem qualquer de 11 bits apenas. Calculando o fator de embutimento E(l), tem-se:

(14)

O cálculo acima nos mostra que existe uma relação de 3 pixels da fotografia digital para cada bit da mensagem. Este número deverá ser exatamente o tamanho de cada área. Portanto, tem-se um mínimo de ((19 * 4 - 40) / 3) = 12 áreas. Por conseguinte, a quantidade de áreas (Qarea )  é 12. 

A Figura 22 mostra a imagem hipotética supracitada dividida em várias regiões de tamanho 3 pixels. Os números em negritos simbolizam o pixel central de cada área. Note que os 40 primeiros pixels são reservados e poderão ser utilizados para controle.

1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16	17	18	19	
20	21	22	23	24	25	26	27	28	29	30	31	32	33	34	35	36	37	38	
39	40	41	42	43	44	45	46	47	48	49	50	51	52	53	54	55	56	57	
58	59	60	61	62	63	64	65	66	67	68	69	70	71	72	73	74	75	76	
Figura 22: Imagem 4 X 19 secionada por área.

Para facilitar a compreensão de algumas equações expostas a seguir, é usada uma estrutura de dados de uma dimensão, isto é, considera-se, sem perda de generalidade, esta imagem como sendo um vetor de 76 posições e não uma matriz bidimensional de 419.

Áreas

1	2	3											7					
			...	...	...						...		...			
41	42	43	44	45	46	47	48	49	50	51	52	53	54	55	56	57	58	59	60	61	62	63	...	

Figura 23: Imagem representada por um  vetor unidimensional

A partir desta premissa, pode-se obter o início da área IA em função do seu índice e de seu tamanho em pixel. Ele é dado por:

(15)

 

Aplicando a Equação 15 para a sétima área (i=7) tem-se ( 3 * ( 7 - 1 ) + 41 ) = 59, que é o início da 7ª seção. Veja a Figura 23.

Agora é facilmente inferida a Equação 16, que determina o final FA da área i. 

(16)

Aplicando-se a Equação 16 para a sétima seção, é obtido  3*7 + 40 = 61, que é o final desta área.

(17)

Neste ponto, a imagem já está devidamente secionada, pois tem-se o início e o fim de cada região. Precisa-se agora definir o critério de escolha do pixel dentro de cada uma delas. Um outro critério que se pode utilizar é o emprego de um GNPR para gerar números entre o início e o fim da área, utilizando a mesma stego-key como semente. Assim, se tem um pixel aleatório dentro da área. No entanto, se deixará este critério para trabalhos futuros. O critério escolhido é a utilização do pixel central de cada região. Este pixel é dado pela média aritmética entre o começo e o final da seção.

(17)

Continuando a exemplificação, aplica-se a Equação 17 para a sétima área. Tem-se (59+61)/2 = 60, que é o seu pixel central. 

É possível obter o pixel P(i) que será utilizado para embutir o bit da mensagem em função do tamanho e do índice da área. Ele é dado pela Equação 18.

  

(18)

Com as equações de E(l) e de P(i) definidas para o vetor, pode-se agora escrevê-las em função da linha Lin e da coluna Col da matriz da imagem (Figura 22), que é o que realmente queremos. Estas duas coordenadas acessarão diretamente o pixel central de cada área desejada, evitando processamento extra. Seja Qx a quantidade de colunas da imagem. Para este exemplo, Qx  é 19.

(19)

(20)

Definidas as três equações necessárias (18, 19 e 20), em função do tamanho da área, da quantidade de linhas e da quantidade de colunas, pode-se mostrar através da Tabela 16 alguns valores obtidos da aplicação do algoritmo de secionamento da imagem.

 Primeiramente aplica-se o GNPR entre 1 e Qarea=12, para criar i que definirá a área a ser utilizada. Depois emprega-se a Equação 18 para encontrar o pixel P(i) que será usado para embutir o bit da mensagem. E finalmente calcula-se a linha e a coluna da matriz pelas Equações 19 e 20, respectivamente.

I=área	P(i)	Lin	Col	
9	66	4	9	
5	54	3	16	
11	72	4	15	
2	45	3	7	
...	...	...	...	
Tabela 16: Exemplo de cálculo do pixel a ser alterado

A Figura 24 relata que o algoritmo proposto para secionamento da imagem mostra-se eficiente no que diz respeito a uma distribuição uniforme e abrangente por toda a sua superfície. O método de embutimento da mensagem, (SEA54) por sua vez, pode ou não alterar o pixel em questão, pois vai depender da informação existente e da que se quer embutir. Este fato aumentará a aleatoriedade na distribuição, o que deve ser comprovado nos resultados obtidos.

																			

																			
Figura 24: Distribuição uniforme dos bits da mensagem obtida pelo algoritmo.

5.4.4 Segurança

Terminada a descrição do algoritmo de secionamento da imagem em áreas, surgem algumas indagações sobre fatores relacionados à segurança do SEA54. Um deles, por exemplo, é a utilização dos 40 primeiros pixels da imagem para armazenar informações vitais no processo de extração, como o tamanho da mensagem (1 ao 24) e o método de fracionamento (25 a 27) utilizado. Ora, bastava modificar os dados destes pixels para perder-se o elo de volta para a obtenção da mensagem embutida. 

Sobre este problema, há dois elementos a considerar. Primeiro, o programa que faz o processo de embutimento informa o tamanho da mensagem, solicitando ao usuário se ele deseja usá-lo como senha. Se a resposta for afirmativa, a senha é o próprio tamanho da mensagem, e estas informações não são gravadas na imagem. Já o programa de extração, por sua vez, pergunta se a senha define o tamanho da mensagem e faz o processo inverso. Logo, esta forma de ataque, a danificação dos 40 primeiros pixels da imagem, não trará para o atacante a garantia da destruição das informações esteganografadas.

Um outro ponto que vale a pena ser abordado é o motivo de se ter classificado de três formas distintas o algoritmo de secionamento, se na realidade ele pode ser considerado um só, diferenciando-se apenas no tamanho da área. O fato é que os geradores de número pseudo-randômicos possuem limitações intrínsecas da linguagem em que foram desenvolvidos, e a partir de um determinado limite superior podem gerar seqüências repetidas. Logo, para imagens e mensagens muito grandes, deve-se criar artimanhas para o controle de colisão. Para o SEA54, quando E(l)=1, dispõe-se do GNPR para acessar as colunas e não os pixels individualmente, e dentro de cada coluna se faz o embutimento seqüencialmente. Assim, é diminuído bastante o volume de cálculos feitos e é mantido a aleatoriedade exigida. Notoriamente este processo não causa anomalias na uniformidade da distribuição, pois todos os pixels da imagem são utilizados.

Portanto, dependendo do tamanho da mensagem, utiliza-se o processo de acesso direto ao pixel através do GNPR ou a artimanha descrita anteriormente. Veja agora como é embutida a mensagem.

5.5 Algoritmo para embutir a mensagem

Todo o processo de embutimento baseia-se numa matriz denominada de Matriz de Conversão Direta (MCD). A utilização desta matriz otimizará os processos, pois os cálculos para a obtenção da nova cor do pixel após o embutimento do bit da mensagem são feitos uma única vez e armazenados na MCD. Assim, todo o procedimento para embutir resume-se a acessos a esta matriz. Toda esta seção é destinada à descrição e à construção da MCD.

Inicialmente, procura-se agrupar os valores originais dos pixels da imagem conforme os novos valores que eles terão após a inserção do bit da mensagem. Depois, é gerado uma matriz, que é denominada de matriz de conversão direta, contendo estes novos valores. Finalmente, utiliza-se esta matriz como facilitadora para conversão dos dados, evitando, assim, cálculos repetitivos. 

Sabe-se que quando se aglutina elementos com as mesmas características, se o universo de possibilidades é diminuído, pois pode-se referenciar ao conjunto ao invés de um único elemento. Logo, favorece-se o desenvolvimento de algoritmos mais simples e de menor complexidade, pois são reduzidos sobremaneira os acessos e os cálculos. A seguir são explicadas a forma de agrupamento e a geração desta matriz detalhadamente.

A Tabela 16 foi construída a partir de uma análise dos dados expostos nas seções anteriores deste capítulo. Pode-se criar uma forma de reunir os valores dos pixels originais da imagem (coluna II ) em grupos (coluna I ) conforme os futuros valores que eles terão após a introdução do bit da mensagem (colunas III ou IV ). Por exemplo, pode-se ver que, para o grupo G1, que engloba os valores {.4,5,6,7.}, se o bit bM da mensagem for 0, o pixel da imagem não sofrerá nenhuma alteração; porém, se bM for 1, para qualquer que seja o elemento de G1, seu novo valor é sempre 8. Para o grupo G2={.8,9,10,11.}, o novo valor do pixel da imagem passaria a ser 7 no caso de o bit da mensagem ser 0, e não sofreria nenhuma alteração para bM=1. De forma semelhante, pode-se calcular os outros valores para os demais grupos.

Foi verificado que se pode criar grupos de 4 elementos ao longo de todo o espectro estudado (valores 4 a 251). Para facilitar a implementação do algoritmo, foi procurado uma relação entre o número do grupo e o novo valor que o pixel da imagem terá após a introdução do bit da mensagem. Daí foi gerada uma matriz com estes valores futuros, o que facilitará a conversão das cores, evitando, assim, que uma operação de cálculo e outra de teste sejam efetuadas para cada pixel P(i).

I	II	III	IV	

Grupo	Valor original do canal azul do pixel da imagem	Para o bit da mensagem = 0,
o valor original do pixel da imagem será alterado para: 	Para o bit da mensagem = 1,
o valor original do pixel da imagem será alterado para: 	
1	4, 5, 6, 7	-	8	
2	8, 9, 10, 11	7	-	
3	12,13,14,15	16	-	
4	16,17,18,19	-	15	
5	20,21,22,23	-	24	
∶	∶	∶	∶	
58	232,233,234,235	231	-	
59	236,237,238,239	240	-	
60	240,241,242,243	-	239	
61	244,245,246,247	-	248	
62	248,249,250,251	247	-	
Tabela 17: Agrupamento dos pixels originais da imagem

Da Tabela 17, é gerada a matriz de conversão composta de 2 linhas por 62 colunas (quantidade de grupos). Nas linhas são encontrados os valores possíveis do bit da mensagem, 0 ou 1, e nas colunas tem-se os novos valores que o pixel da imagem assumirá ao embutir o bit 0 ou 1. Os elementos com valores iguais a zero significam que o pixel da imagem não precisará ser alterado.

Grupos

Bit da mensagem igual a 0.

	1	2	3	4	5	6	7	8	9	...		

Bit da mensagem igual a 1.

	0	7	16	0	0	23	32	0	0	...		
	8	0	0	15	24	0	0	31	40	...		
Figura 25: Mostra a Matriz de Conversão Direta

Para que se possa escrever o procedimento para gerar a matriz acima, é preciso definir os vínculos entre os diversos elementos, isto é, a relação entre o valor original do byte da imagem e o grupo, entre o grupo e o valor alterado etc. Sejam:

– Valor Original do byte da imagem P(i).

–  Grupos pares        (n=2,4,6...)

–  Grupos ímpares  (n=1,3,5... )       

  – Valor Alterado, novo valor que terá o pixel da imagem.

Se for examinada a tabela de agrupamento (Tabela 17) proposta anteriormente, pode-se inferir as seguintes igualdades:

(21)

(22)

Agora pode-se escrever um procedimento em C para gerar a matriz de conversão direta. Ela é chamada desta forma porque, após sua criação, não é necessário nenhum cálculo adicional para ter-se o novo valor do byte da imagem. Pode ser visto que o procedimento abaixo é a parte principal do algoritmo que embutirá a mensagem.

unsigned char BitMsg = 1; // Variável para controlar o valor do bit da mensagem

// Matriz que conterá os valores futuros do byte da imagem sendo inicializado como  0.
unsigned char  MCD [ 2 ] [ 64 ]  = { 0 }; 
for  ( unsigned char  Grp = 0; Grp <=  62;  Grp += 2 )  {
// Se o grupo for par, o valor será o grupo * 4 menos 1
	       MCD [ BitMsg ] [ Grp ] = Grp * 4 - 1;
// Se o grupo for impar, o valor será o (grupo + 1) * 4. Grp+2 porque o passo do loop é 2.
	       MCD [ BitMsg ] [ Grp + 1 ] = ( Grp + 2 ) * 4;
// Troca o valor do bit da mensagem 0 ou 1
	       BitMsg=!BitMsg;  }

Após a geração da matriz, o processo de embutimento é extremamente simples e funciona da seguinte forma:

1.	Separado o byte da imagem VO que é utilizado para inserir o bit da mensagem, divide-se seu valor por 4 para obter o grupo G a que ele pertence. O grupo é a parte inteira do resultado desta divisão. 

2.	Seja bM o bit da mensagem que se quer inserir. Ora, já se tem o grupo G, e com o bM basta acessar a matriz MCD[.bM,.G.] para se retirar o novo valor que o byte da imagem terá ao embutir bM. Se o valor extraído da matriz for zero, deve-se manter o valor original VO.

É importante ressaltar que a utilização da matriz de conversão direta no processo de embutimento torna as operações binárias totalmente aparentes, além do fato de serem evitados cálculos repetitivos e desnecessários.

5.5.1 Exemplo

São mostrados agora, de forma prática e conjunta, todos os processos até aqui descritos que envolvem a inserção da mensagem na imagem através da MCD, para que se possa entender melhor o funcionamento do SEA54. Suponha que se tem um bit da mensagem de valor bM=1 que se quer embutir. Considera-se, ainda, que o Algoritmo de Secionamento, da Imagem juntamente com seu gerador de números pseudo-randômicos nos forneceu que o pixel escolhido P(i) encontra-se na linha 45 e na coluna 22 da imagem. Acessando a imagem(45,22), é obtido 39 como o valor original VO  da cor do canal azul para este pixel. Dividindo-se 39 por 4, tem-se 9, que é o grupo G que é utilizado para acessar a matriz de conversão direta. Fazendo este acesso com bM=1 e G=9, adquire-se o valor alterado VA=40, que é a nova cor que o canal azul terá. Pode-se constatar que todas as assertivas em que é baseado o método proposto foram mantidas até aqui. É importante agora que sejam confirmados estes procedimentos com o algoritmo de extração.

A garantia de que todos estes procedimentos funcionam a contento é dada pelo algoritmo de extração da mensagem, que é descrito na próxima seção.

5.6 Algoritmo de Extração da Mensagem

Este algoritmo comprovará a qualidade dos algoritmos de secionamento da imagem e de embutimento da mensagem. Ele fará exatamente o processo inverso, retirando a mensagem embutida de uma imagem dada para que se possa confrontar com a original. A comparação da mensagem original com a extraída poderá ser feita pelos vários softwares de comparação de arquivos existentes nos diversos sistemas operacionais. No nosso caso, é utilizado o comando fc MessageOrig Message_Ext /l/b do MS-DOS, que faz comparações a nível de bit e mostra todas as linhas que possuem diferenças. Certamente, se todos os três algoritmos aqui descritos (secionamento, embutimento e extração) estiverem corretos, não deverão existir diferenças entre as duas mensagens. 

Após a leitura desta seção, pode-se ver que o método proposto não inclui marcas com o objetivo de identificar as fotografias que contenham informações embutidas. Estas marcas evitam que seja aplicado o procedimento de extração em imagens que não sofreram o processo de esteganografia. Acredita-se, porém, que elas poderão trazer indícios que facilitariam a detecção, levando assim ao fracasso o processo. Portanto, neste trabalho, se for aplicado o algoritmo de extração em imagens capas ou recipientes, são colhidas informações sem sentido. O mesmo fato ocorrerá se for informada a chave de acesso errada, pois não se tem como checá-la. No entanto, o software que retira a mensagem da imagem realiza alguns testes de consistência de dados, como por exemplo: se o tamanho da mensagem embutida nos 24 primeiros pixels for maior que o tamanho da imagem, ou se o processo de secionamento for incoerente com os tamanhos calculados, ele emite mensagens de erros. Estas mensagens advertem o usuário e muitas vezes afirmam que a imagem não possui informações embutidas. O fato de existirem estas mensagens não significa que marcas foram incluídas na imagem que comprovem o ato esteganográfico.

O procedimento de extração consiste em um software que demandará o nome do arquivo da imagem portadora, a chave numérica e o nome do arquivo de saída. Esta deverá ser obrigatoriamente a mesma chave utilizada no processo de inserção da informação. O programa de extração gravará um arquivo com a extensão (.zip), (ZIP é um conhecido algoritmo de compactação de arquivos), com a mensagem retirada, pois o software que embute sugere um arquivo de mensagem compactado neste formato. Este formato é apenas uma sugestão, pois o SEA54 aceita qualquer outro tipo de arquivo. Esta estratégia baseia-se no fato de que qualquer informação que possa ser representada de forma binária (texto, som, vídeo etc.), poderá ser embutida em uma imagem através do SEA54. Portanto, utilizando o padrão zip, após a extração, pode-se reaver o nome e o tipo do arquivo embutido, além do fato de se aumentar a capacidade do recipiente devido à compactação da mensagem. Apesar de esta estratégia ser utilizada, existe sistema operacional, como o Linux por exemplo, que disponibiliza  o comando "file nomedoarquivo" que informa o tipo do arquivo qualquer que seja sua extensão.

Terminado o processo de retirada, simplesmente é descompactado o arquivo de saída para se obter a mensagem. Nos nossos testes, é utilizado o comando FC, citado anteriormente, para se comparar as mensagens originais e extraídas, afim de se verificar possíveis erros nos algoritmos.

O Algoritmo de extração segue os seguintes passos:

1.	Solicita o nome do arquivo da imagem recipiente.
2.	Demanda a chave de acesso e pergunta se ela define o tamanho da mensagem.
3.	Pede o nome do arquivo onde é gravado a mensagem extraída. O arquivo por estratégia, já explicada, terá a extensão (.ZIP).
4.	Calcula o tamanho da imagem e obtém a dimensão da mensagem para que possam ser feitos testes de consistências, como por exemplo: "o tamanho da mensagem maior que o da imagem", "o tipo de fracionamento incoerente com os tamanhos obtidos" etc.
5.	De posse das informações (tamanhos da imagem e mensagem, tipo de fracionamento e senha, realiza o processo inverso do embutimento. Para o caso do E(l)>2 por exemplo, inicialmente calcula o tamanho da área para criar o vetor de controle de colisão. Depois, através do GNPR, cria um número que indicará a área a ser utilizada. Daí então, obtém o valor da cor de canal azul do pixel central desta área. E, finalmente, verifica o valor do bits 5 e 4. Se este for par, o valor representado é zero; e se for ímpar, o valor é 1.
6.	Monta o byte de 8 bits, e o grava no arquivo de saída. 

5.7 Análise da complexidade dos algoritmos

Sem perda de generalidade, pode-se afirmar que os algoritmos que trabalham com processamento de imagens têm complexidade mínima da ordem O(n2), tendo em vista que toda imagem estática é uma matriz bidimensional, e a simples tarefa de percorrê-la leva os processos a esta complexidade. Os algoritmos propostos neste capítulo são relativamente simples, pois os problemas abordados tiveram soluções simplórias sem a necessidade do uso de recursividade. Como foi mostrado, eles foram resolvidos através de cálculos aritméticos elementares envolvendo somente as quatro operações básicas. No entanto, precisa-se comprovar, através da análise dos procedimentos aqui expostos, se suas complexidades não ultrapassam O(n2).

Todos as rotinas do SEA54 trabalham com chamada de módulos ou funções. Portanto, se analisarmos as complexidades do conjunto de módulos utilizados para embutir a mensagem juntamente com o que seciona a imagem, se está indiretamente avaliando também o algoritmo de extração. Isto deve-se ao fato do algoritmo de extração executar os mesmos processos na ordem inversa do algoritmo de embutimento.

 São analisados a seguir os módulos utilizados pelos processos de secionamento e embutimento. O Módulo-1 gera todas as áreas necessárias de forma aleatória e as armazena no vetor VetArea. Notoriamente,  sua complexidade é quadrática.

Complexidade

				Módulo-1 (Gera áreas aleatoriamente controlando colisão)	
O	(	n	)	Lê o arquivo da imagem e armazena numa matriz ( Imagem[ ] )  	
O	(	n	)	Lê os bits do arquivo da mensagem e armazena num vetor ( VetMsg[ ] )	
		1		Obtém o tamanho da Imagem ( TamImg ) e da Mensagem ( TamMsg )	
		1		Calcula o tamanho e Quantidade de áreas ( TamArea ) ( QtdArea )	
		1		Cria os vetores de colisões e de área. VetColi[ QtdArea ]=0,   VetCnt[ QtdArea ]=0	
				Para J = 1 até QtdArea faça	
				Faça	
		n		Rand = GNPR(QtdArea) 	
	n			Enquanto (VetColi [Rand])	
				VetColi [ Rand ]  = 1	
				VetArea [ J ]  = Rand 	
				FimPara	

É visto abaixo que a complexidade do Módulo-2, que faz a inserção propriamente dita do bit da mensagem na imagem, é elementar e da ordem de O(n). 

				Módulo-2 (Embute a mensagem)	
				Para J = 1 até TamMsg	
		1		Bit = VetMsg[ J ]	
		1		Area = VetArea[ J ]	
		1		Calcula Pixel central, Linha (Lin) e Coluna (Col)	
	n	1		ValOldPix = Image[ Lin, Col ].	
		1		Calcula grupo	
		1		ValNewPix = MCD[ Bit, Grupo]	
		1		Se ( ValNewPix > 0 )	
		1		Image[ Lin, Col ] = ValNewPix	
				FimPara	

Para não se ser repetitivo, não se calcula a complexidade do procedimento que gera a Matriz Direta de Conversão, porque se pode avaliá-lo através da leitura do programa na linguagem C descrito na seção 5.5. Pelo fato de ele possuir apenas um laço simples não encapsulado que varia de 0 a 62, e seus comandos internos são executados uma única vez a cada laço, pode-se garantir que a complexidade assintótica do Módulo-2 é também da ordem de O(n). Note que ele é executado uma única vez no início do programa.

Como os módulos são executados em seqüência, o tempo total é dado por um polinômio. Desta forma, a complexidade total é dada pela complexidade do coeficiente de maior grau. Pode-se concluir, através das avaliações feitas acima, que os nossos algoritmos não possuem a complexidade maior que O(n2). Logo, o objetivo é alcançado no que diz respeito à construção de algoritmos simples e velozes, tendo em vista tratar-se de procedimentos para processamento de imagens.

5.8 Implementação

Um dos pontos decisivos dos sistemas de esteganografia voltados para fotografias digitais é a avaliação visual da imagem portadora da mensagem secreta. O objeto desta dissertação trata-se de um método novo. Logo, foram desenvolvidas as ferramentas necessárias para aplicá-lo, testá-lo e melhorá-lo. O SEA54embed é o aplicativo responsável pelo embutimento de mensagens secretas em imagens digitais estáticas, e o SEA54Extract é o software responsável pela extração desta mensagem.

Como foi dito no Capítulo 2, foi utilizado o formato PPM por este armazenar os dados da imagem em forma de texto. Portanto, facilmente acessado e alterado por editores para este fim.

Basicamente, a interface do usuário provê dispositivos de entrada da imagem capa e da mensagem a ser embutida, e a de saída gera a mensagem portadora e alguns dados estatísticos. Quanto às janelas do sistema, as figuras a seguir mostrarão as principais, descrevendo suas funções e modos de manuseio.

A Figura-26 mostra a tela principal do SEA54Embed. Na barra de ferramentas tem-se três botões numerados de 1 a 3 para indicar a ordem em que eles devem ser executados. O primeiro deles serve para obter o arquivo da mensagem. Neste procedimento é calculado o tamanho da mensagem, solicitando ao usuário se ele deseja utilizá-lo como senha. O segundo botão proporciona a mudança ou inclusão de uma nova senha. E o terceiro faz o embutimento propriamente dito, emite alguns dados estatísticos e mostra a imagem portadora. Ao fechar a janela da imagem resultante do processo, o software indaga se o usuário deseja gravá-la ou não.
Figura 26: Tela principal do aplicativo que embute a mensagem (SEA54Extract).

A Figura 26 mostra a imagem original à esquerda e a portadora à direita. Neste momento é bom observar que o botão que calcula o PSNR fica ativo e os botões 2 e 3 inativos. Estes dois últimos ficarão inativos até a janela da imagem portadora ser fechada.

Figura 27: Tela do SEA54Embed com a imagens original e portadora.

 A Figura 28 mostra a tela principal do SEA54Extract. Na barra de ferramentas tem-se o botão com uma chave e um arquivo, que ao ser executado solicita a senha para o processo de extração e o nome do arquivo que deve ser gerado com a mensagem. Este arquivo sempre é gravado com a extensão ZIP, porém o usuário poderá renomeá-lo. Tem-se também o botão que calcula o PSNR de duas imagens quaisquer.

Figura 28: Tela principal do programa de extração SEA54Etract.

Ambos os programas foram escritos na linguagem C++ para o ambiente Windows. Explicada a implementação, passa-se aos testes efetuados com eles.

 Capítulo  6

6  Experimentos 

6.1 Introdução 

Neste capítulo são explicados os testes necessários para averiguar a eficiência do novo método de esteganografia (SEA54) criado e implementado. Todos os testes foram voltados para a avaliação de determinadas propriedades que designam a qualidade dos sistemas de camuflagem de informações. Outros testes são feitos no sentido de comparar o método proposto com outros conhecidos. 

De acordo com [FRIDRICH], um bom processo de esteganografia deve principalmente satisfazer às seguintes propriedades: Invisibilidade ou Transparência, Indetectabilidade, Capacidade do Recipiente e Complexidade Computacional. São abordadas preferencialmente nesta seção as duas primeiras propriedades, tendo em vista que a Capacidade do Recipiente para o método criado é fixa (o tamanho da imagem em pixels menos 40), e a Complexidade Computacional já foi avaliada na seção 5.7, onde é comprovada que a complexidade assintótica do SEA54 é quadrática.

6.2 Invisibilidade ou Transparência 

A invisibilidade ou transparência está relacionada à percepção humana e é colocada à prova através dos testes subjetivos. Os testes subjetivos são feitos por pessoas que procuram diferenças visuais entre as duas imagens, capa e portadora, tentando eleger qual delas é a original. Se o percentual de acerto dos avaliadores for de 50%, pode-se concluir que a mensagem está invisível. Na realidade, os analisadores deverão procurar por ruídos ou imperfeições, pois teoricamente todo procedimento de camuflagem insere alguma forma de anomalia na imagem. Em suma, os testes subjetivos tentam avaliar a capacidade que um método esteganográfico tem de esconder os defeitos gerados por ele mesmo. 

Em tratando-se de esteganografia, os testes subjetivos têm um papel crucial na avaliação dos métodos. Portanto, para que haja uma homogeneidade e imparcialidade nos experimentos, são seguidas as seguintes regras:

•	Explicar para os observadores como funciona e quais os objetivos do sistema de esteganografia que será avaliado.
•	Apresentar, lado a lado, somente duas fotografias de cada vez, a original e/ou a modificada. A ordem de apresentação tem que ser aleatória, isto é, a primeira à esquerda poderá ser qualquer uma das duas.
•	As imagens deverão possuir as mesmas dimensões em pixels e não terem sofrido nenhum outro processo, a não ser o de esteganografia.
•	Cuidar para que os nomes dos arquivos que identificam as imagens não induzam os analisadores nas respostas.
•	Não permitir o uso de qualquer ferramenta de processamento de imagens pelos observadores. A avaliação deve ser feita baseada apenas nos níveis de percepção humana.
•	Cada examinador deverá expor sua própria opinião e não poderá influenciar ou ser influenciado pelos demais.
•	As imagens deverão ser mostradas para todos os observadores. De preferência, no mesmo equipamento, com a mesma resolução gráfica e sob as mesmas condições de iluminação. Em nosso caso elas foram exibidas e avaliadas em um monitor Samsung SyncMaster 750v de 17” ajustado para duas resoluções (640 X 480, 256 cores) e (1024 X 768 True Color-24).

O critério de escolha das fotografias que foram utilizadas nos experimentos é muito importante para dar credibilidade ao ensaio. Como foi explicado no Capítulo 4, existem fotografias adequadas e inadequadas para o processo de esteganografia. Logo, para que se tenha resultados significativos nos testes, elas foram escolhidas segundo estes dois critérios. Trabalha-se com dois grupos de acordo com os resultados esperados. O primeiro deles é composto pelas fotografias adequadas, pois supostamente trarão bons resultados, enquanto que o outro grupo é formado pelas inadequadas, que poderão trazer soluções  não satisfatórias. Veja Apêndice A.

Nos nossos exames, foi feita a mesma pergunta a todos os analisadores das imagens "Qual das duas imagens é a original? (esquerda ou direita)". Como foi dito, acertos na ordem de 50% são considerados excelentes resultados.

Foram escolhidas 10 fotografias para as verificações, 3 do grupo I (adequadas à esteganografia) e 7 do grupo II (inadequadas). Como é muito difícil testar todas as variedades existentes de amostra, procurou-se expor o SEA54 às piores condições de testes possíveis. Isto é, foram empregadas imagens que são fortemente rejeitadas para esteganografia e foram criadas situações que teoricamente trariam resultados negativos. Acredita-se que se as soluções obtidas para os piores casos forem satisfatórias, certamente elas também serão satisfatórias para os demais casos. Baseado nisto, para as imagens do grupo I, foram feitas as seguintes alterações: Apesar de o SEA54 ser aplicado apenas para valores de cores entre [4 a 251], se decidiu aplicá-lo também para os intervalos [0 a 3] e [252 a 255] para as fotografias do grupo I, desde que a soma dos pixels alterados nestes últimos intervalos não ultrapasse a 1% do total de pixels da imagem. Como é sabido, os intervalos inferior e superior foram descartados por gerarem diferenças maiores que |4|. 

Para as imagens do grupo II, foram geradas fotografias monocromáticas, pois estudos opticométricos revelaram que o sistema de visão humano é muito bom para perceber pontos em superfícies com cores uniformes, sendo este o pior caso para sistemas de esteganografia. Estas fotografias foram selecionadas, respeitando-se os limites estipulados pelo SEA54 para o canal azul (4 a 251). Na escolha das imagens para este grupo, se procurou abranger as três cores básicas do (RGB), de tal forma que todas as fotografias, após receber o bit da mensagem, sofram alterações de amplitude máxima |4| no canal azul, (esta mudança, como se sabe varia de 0 a 4). Veja a Tabela 18 com as características das fotografias, também denominadas chapadas, escolhidas para o grupo II. É bom lembrar que o Apêndice A traz uma versão colorida de todas elas.

IMAGEM	Cor da Imagem	Observação	
1	RGB(255, 0, 4)	Contempla a cor vermelha. O valor do canal azul não pode ser zero devido ao SEA54.	
2	RGB(0, 255, 4)	Contempla a cor verde.	
3	RGB(0, 0, 251)	Contempla a cor azul. Esta não pode ser 255 devido ao SEA54.	
4	RGB(255,255,251)	Limite superior máximo aceitável da escala de cores. 	
5	RGB(255,255,4)	Limite superior da escala de cores, com o limite inferior do canal azul aceitável pelo SEA54.	
6	RGB(0,0,4)	Limite inferior máximo aceitável da escala de cores.	
7	RGB(0,0,124)	Cor azul intermediária da escala de cores que proporciona variação de |4|.	
Tabela 18: Imagens do Grupo II.

Para que se tenha noção da capacidade de camuflagem do SEA54, as mensagens foram geradas a partir de capítulos desta dissertação, todos eles compactados pelo ZIP. Os capítulos 1 e 3 geraram as mensagens 1 e 2, respectivamente. A mensagem 3 é composta de todas as tabelas do Capítulo 5. Assim, a Imagemi do grupo I recebe a Mensagemi, onde i varia de 1 a 3. Para o grupo II, todas as fotografias receberão a mesma mensagem 1.

Todas as fotografias originais empregadas nos testes estão no Apêndice A. Elas foram analisadas por 100 examinadores, seguindo os passos descritos acima. Suas características, bem como os resultados obtidos, estão descritos nas tabelas a seguir.

	
Imagem /
Mensagem	Tamanho da Imagem 	 Tamanho da Mensagem
( bits )	Pixels Alterados da Imagem 		Acerto dos avaliadores 
a questão	
		
(pixels)	 
(Bytes)		
( 4 a 251 )	
( 0 a 3 )	
( 252 a 255 )	
Total			

G
R
U
P
O

I	
1	72.160
100%	701K
*	67.832
94,00%	33.843
46,90%	679
0,94%	0	34.522
47,84%		
51%	
	
2	128.400
100%	1.295K
*	88.920
69,25%	44.514
34,67%	110
0,09%	119
0,09%	44.743
34,85%		
48%	
	
3	133.910
100%	1.315K
*	129.400
96,63%	64.808
48,40%	4
0,003%	129
0,10%	64.941
48,96%		
50%	
Tabela 19: Resultados das imagens do Grupo I.

Analisando os resultados acima para o grupo I, vê-se que o índice de acerto à pergunta "Qual das duas imagens é a original?" é da ordem de 50%. Isto nos faz concluir que o SEA54 não gerou qualquer indícios que levasse os examinadores à identificação correta da imagem original. Portanto, no que diz respeito ao aspecto visual, a fotografia original e a sua respectiva portadora são idênticas.

Todas as imagens do grupo II têm o mesmo tamanho (250X280 pixels), embutem a mesma mensagem-1 (67.832 bits) e não utilizam os intervalos (0 a 3) e (252 a 255). Para evitar repetições, foram subtraídas algumas colunas desnecessárias, de modo a expor os resultados obtidos para este grupo. 

G R U P O   I I	Imagem	
	1	2	3	4	5	6	7	
Pixels alterados da imagem (4 a 251)	33.910	33.910	33.949	33.949	33.910	33.910	33.910	
Acertos à questão	49%	50%	54%	87%	49%	50%	71%	
Cor predominante	Vermelha	Verde	Azul
Escura	Branca	Amarela	Preta	Azul
clara	
Tabela 20: Resultados das imagens do Grupo II.

Os testes foram um sucesso para as cores vermelha, verde, amarela e preta. Era aguardado um resultado não satisfatório para a cor branca, pois ela amplifica visualmente os ruídos e ressalta as imperfeições. Porém, não era esperado que as imagens portadora com predominância de cor azul obtivessem estes índices. Logo, é preciso averiguar se o fato de o SEA54 utilizar o canal azul para embutir os bits da mensagem foi o fator fundamental para esta tendência. Para provar o contrário,  é preciso encontrar imagens com tonalidade azul que não delatem a presença de informações camufladas.

Foi solicitado a 10 pessoas que selecionassem duas cores azuis quaisquer do espectro de cores (foi utilizado o software de processamento de imagens GIMP). Gerou-se 20 imagens chapadas com as mesmas dimensões (250X280 pixels) e se embutiu o capítulo 1 desta dissertação em cada uma delas. As 20 imagens foram expostas aos 10 observadores, rearrumadas e submetidas novamente. Assim, foram obtidas 20 respostas para cada imagem. Os resultados estão expostos na Tabela 21. 
Percentual de Acerto à questão	40	45	50	55	60	65	70	75	Total	
Quantidade de Imagem	2	5	5	4	2	1	-	1	20	
Tabela 21: Distribuição de freqüencia dos testes subjetivos.

Analisando-se a tabela acima pode-se verificar claramente que a maioria das imagens obteve um percentual de acerto entre 40 e 60 porcento. Portanto, não se constatou nenhuma relação entre a detectabilidade e a tonalidade azul.

Apesar de as imagens com cores únicas jamais serem usadas para embutir informações, elas foram utilizas nos testes subjetivos do SEA54. Os resultados gerais obtidos nestes testes foram bastante satisfatórios, tendo em vista que as fotografias do grupo I tiveram um percentual médio de 49,67% e as do grupo II um aproveitamento médio dos percentuais de 58,57%.

Na seção a seguir, são feitas algumas considerações acerca das propriedades estatísticas das imagens para avaliar sua detectabilidade.

6.3 Indetectabilidade 

Bons resultados nos testes subjetivos não significam o sucesso total do método proposto, pois deve-se averiguar uma outra propriedade fundamental que é a indetectabilidade. O processo de embutimento pode produzir distorções que só são descobertas através da análise estatística das propriedades da fotografia. Estes exames são feitos através de testes envolvendo operações matemáticas, que procuram revelar se as propriedades estatísticas de uma imagem alterada são diferentes das propriedades esperadas de uma imagem teoricamente normal. Um deles é o estudo da distribuição dos pixels escolhidos pelo gerador de números pseudo-randômico (GNPR), juntamente com o algoritmo de secionamento, para serem alterados no processo de embutimento. Aplica-se, aqui, todos os testes descritos na seção 4.3.

6.3.1 Distribuição Binomial

(23)

Devido ao seu caráter aleatório, o uso de GNPR para a escolha do pixel da imagem torna probabilístico o processo de embutimento. Então, pode-se inferir que, se não houver vícios, a distribuição do número de pixels alterados na fotografia deverá ser binomial. Logo, a probabilidade de k pixels serem modificados num total de n é dada por:

onde p é a probabilidade de que um determinado pixel escolhido seja alterado. Ora, como a mensagem a ser embutida possui também um caráter aleatório, pois não existe uma regra de formação definida para seus bits, se pode esperar que p seja 1/2 e que a média dos pixels alterados seja aproximadamente de 50%.

Como foi dito anteriormente, o desvio padrão de uma distribuição binomial é dado pela raiz quadrada do produto de npq onde q=1-p. Então, para o nosso caso tem-se que:

(24)

Pelas fórmulas 23 e 24, se vê que a probabilidade p é constante e igual a 0,5. Deve-se, agora, verificar se os pixels alterados das imagens seguem esta probabilidade. Uma discrepância muito grande caracteriza vícios que certamente servirão de sinal que facilitaria a detecção.

Mensagem/ Imagem	 Tamanho da mensagem
( bits )	Quantidade de
Pixels alterados	Desvio Padrão  ()	Probabilidade 
P = Calculado /  n	
			Esperado	Calculado		
1	67.832	34.522	130,223	130,202	0,4999	
2	88.920	44.743	149,097	149,094	0,5000	
3	129.400	64.941	179,861	179,859	0,5000	
Tabela 22: Desvio padrão esperado e calculado das imagens do Grupo I.

Veja um exemplo para a mensagem 1. O desvio padrão esperado é a raiz quadrada do tamanho da imagem (67.832) dividido por 2 que é igual a 130,223. E o desvio padrão calculado é dado por:

Veja que o desvio padrão calculado está bem próximo do desvio padrão esperado, e que a probabilidade calculada, 0,4999, pode ser considerada igual à esperada (0,5). Com estes resultados, pode-se concluir que a escolha do pixel a ser alterado é totalmente aleatória e sem vícios. Vale ressaltar que esta escolha é dada pelo casamento do gerador de números pseudo-randômicos com o algoritmo de seccionamento da imagem em regiões. Portanto, estes resultados corroboram a eficiência desta união.

Para o grupo II, se teve só duas quantidades de pixels alterados para as 7 imagens. Por isso a Tabela 23 foi rearrumada para evitar repetições. Veja resultados do Grupo II abaixo. 

Imagens	 Tamanho da mensagem
( bits )	Quantidade de
Pixels alterados	Desvio Padrão  ()	Probabilidade
P = Calculado/ n	
			Esperado	Calculado		
1,2,5,6,7	67.832	33.910	130,223	130,222	0.50	
3,4	67.832	33.949	130,223	130,222	0.50	
Tabela 23: Desvio padrão esperado e calculado  para imagens do Grupo II.

Os resultados para os Grupos I e II podem ser considerados os mesmos. A probabilidade esperada é de 0,5 e a calculada foi de 0,5. Isto nos faz concluir que a escolha do pixel a ser alterado é um processo probabilístico, seguindo exatamente as propriedades de uma distribuição binomial.

6.3.2 Análise do Histograma

A análise investigativa do histograma das fotografias resultantes do processo de embutimento feito pelo SEA54 não mostrou resultados favoráveis. Os histogramas das imagens portadoras apresentaram grandes picos seqüenciados, os quais tornaram os gráficos acentuadamente serrilhados, delatando a presença de informações camufladas. Todas as figuras aqui apresentadas bem como algumas outras testadas apresentaram as mesmas características.

A Figura 29 exibe os histogramas somente do canal azul das 3 imagens capas e portadoras do Grupo I. Assim, pode-se avaliar a diferença entre elas. Para o Grupo II, é exibida apenas a primeira fotografia (veja Figura 30), pois por se tratar de imagens com cores únicas, a disposição do histograma é a mesma.

1

2

3

     

Figura 29: Histograma do canal azul das imagens do Grupo I.

	

Figura 30: Histograma do canal azul das imagens do Grupo II.

Este problema deve-se à aproximação, para mais ou para menos, feita pelo método para modificar os valores dos bits 5 e 4. Isto é, quando um pixel precisa ser alterado, seu novo valor é sempre algum dos elementos da MCD (matriz de conversão direta) 7, 8, 15, 16, 23, 24 etc. Se os histogramas forem analisados, verificaremos que os picos ocorrem exatamente sobre estes elementos, porque valores próximos sempre convergem para eles. Por exemplo, todo pixel da imagem original com valor entre (4 e 7) que precisar ser alterado, terá 8 como seu novo valor. Todo pixel entre (8 e 11) que precisar ser modificado receberá 7 como novo valor, (veja a Tabela 24). Como toda a estratégia do SEA54 é baseada nisto, ela não poderá ser modificada, sob pena de descaracterizar o método.

Pixel original da imagem		Modificação do pixel  da imagem  se o bit da mensagem  for  0		Modificação do pixel da imagem   se o bit da mensagem  for 1	
Régua=>	128	64	32	16	8	4	2	1		128	64	32	16	8	4	2	1		128	64	32	16	8	4	2	1		
Bits =>	8	7	6	5	4	3	2	1		8	7	6	5	4	3	2	1		8	7	6	5	4	3	2	1		
4	0	0	0	0	0	1	0	0					0	0					0	0	0	0	1	0	0	0	+4	
5	0	0	0	0	0	1	0	1					0	0					0	0	0	0	1	0	0	0	+3	
6	0	0	0	0	0	1	1	0					0	0					0	0	0	0	1	0	0	0	+2	
7	0	0	0	0	0	1	1	1					0	0					0	0	0	0	1	0	0	0	+1	
																												
8	0	0	0	0	1	0	0	0		0	0	0	0	0	1	1	1					0	1				-1	
9	0	0	0	0	1	0	0	1		0	0	0	0	0	1	1	1					0	1				-2	
10	0	0	0	0	1	0	1	0		0	0	0	0	0	1	1	1					0	1				-3	
11	0	0	0	0	1	0	1	1		0	0	0	0	0	1	1	1					0	1				-4	
Tabela 24: Seção da Tabela-12 do Capítulo-5.

	Este problema pode ser minimizado de duas maneiras. Antes do processo de embutimento, é feita uma análise prévia da imagem para escolher qual semente do gerador de números pseudo-randômicos proporcionaria menos pixels alterados. Esta semente seria gravada na imagem portadora e acessada através da senha do usuário. Neste ponto, dá-se inicio ao processo de camuflagem propriamente dito. Uma outra maneira de minimizar este problema seria a mudança dos valores dos pixels vizinhos ao pixel que embutirá o bit da mensagem, evitando grandes diferenças. Testes preliminares com as duas operações sugeridas acima, mostraram melhora substancial no histograma da imagem-1. Porém, uma pesquisa mais aprofundada é proposta para trabalhos futuros.

6.4 Comparação com Outros Métodos 

Existem vários aplicativos para camuflar informações em imagem digitais estáticas. Cada um deles tem suas próprias técnicas de camuflagem e trabalha com formatos específicos de arquivos. Alguns utilizam métodos no domínio da freqüência e formatos de arquivos com compressão com perda de dados (JPEG), como é o caso dos aplicativos JpegX [JPEGZ], JstegShell [JSTEGSH], JP Hide and Seek [JPHS] etc.  Outros trabalham com técnicas de embutimento voltadas para imagens que possuem tabela de cores, como o tipo GIF por exemplo, utilizados pelo software HideSeek95 [HIDESEEK]. Por fim, se pode citar aqueles que escondem mensagem em arquivos de som e em trilhas do disco rígido, como o MP3Stego [MP3STEGO] e o ScramDisk [SCRAMDISK], respectivamente.

Dentro desta variedade de meios e procedimentos, existem 5 métodos que possuem as principais características do (SEA54), são eles: Contraband, Info Stego, Secrets, Third Eye e WbStego. Eles embutem mensagens no domínio espacial, trabalham com imagens de 8 bits por canal RGB e utilizam arquivos com formato sem perda de dados. A diferença básica entre eles é que o SEA54 utiliza o quinto e quarto bits e os outros algoritmos empregam o bit menos significativo para inserir a mensagem. Deve ser ressaltado que existem outros métodos com estas características, mas que apresentaram algumas incoerências, como é o caso do Camouflage, que aumentava sobremaneira o tamanho da imagem portadora.

6.4.1 MSE e PSNR

O método de comparação utilizado foi o cálculo do MSE e do PSNR das imagens dos Grupos I e II. O PSNR é aplicado a imagens em tons de cinza que têm variação de cores no espectro de 0 a 255. Como o método criado utiliza somente o canal azul do pixel da imagem e sua variação está dentro do espectro acima, o PSNR pode ser empregado para a avaliação do nível de ruído gerado pelo SEA54 para este canal. Os cálculos foram efetuados utilizando-se as Equações 11 e 12 descritas no Capítulo 4.

Os respectivos valores para os vários métodos testados estão na Tabela 25. Para o SEA54, todos as imagens do Grupo II (1 a 7) tiveram os mesmos resultados, pois a variação entre o pixel original e o alterado é sempre de |4|.

	Grupo I		Grupo II	
APLICATIVOS	1	2	3		1	2	3	4	5	6	7	
SEA54	42,41	43,97	42,55		40,56	40,56	40,56	40,56	40,56	40,56	40,56	
Contraband	46,44	46,34	46,54		48,15	48,11	48,12	43,35	48,12	43,36	43,39	
InfoStego	47,34	48,68	47,61		49,54	49,55	49,54	43,53	49,54	43,54	43,54	
Secrets	29,06	24,98	21,40		31,78	29,30	31,19	31,34	31,34	30,15	30,93	
ThirdEye	51,41	52,71	51,38		52,78	53,59	52,78	51,53	52,78	51,55	51,55	
WbStego	46,45	46,35	46,55		48,13	48,15	48,15	43,36	48,13	43,38	43,36	
Tabela 25: Resultados do PSNR de vários métodos.

Como pode ser verificado, o SEA54 mostrou resultados bastante favoráveis quando comparado com os demais, apresentando valores bem próximos e em alguns casos melhores do que os outros métodos. É importante ressaltar que o PSNR calcula a dispersão entre as imagens capa e portadora. Os demais métodos utilizam o pixel menos significativo, isto é, implicam alteração máxima de 1, enquanto que o SEA54 aceita alteração no pixel da imagem de até 4. Era esperado que o MSE, que mede a dispersão, fosse bastante elevado para o SEA54, e conseqüentemente o PSNR bem inferior aos dos demais métodos, porém eles são equiparáveis. 

Foi dito neste capítulo que o SEA54 seria submetido às piores condições de testes. No entanto, é interessante conhecer seu comportamento quando exposto a condições semelhantes a de outros métodos. A Tabela 26 mostra os resultados do PSNR da fotografia RGB(50,150,247). Quando submetida ao SEA54, a imagem portadora oriunda dela tem uma diferença de apenas uma unidade, semelhante aos outros métodos que utilizam o bit menos significativo. Analisando a tabela abaixo, pode-se constatar que quando avaliado sob as mesmas condições dos demais métodos, variação de um, o SEA54 obteve o melhor resultado.

APLICATIVOS	RGB(50,150,247)	
SEA54	52,69	
Contraband	48,12	
InfoStego	47,32	
Secrets	32,97	
ThirdEye	52,67	
WbStego	48,12	
Tabela 26: PSNR de uma imagem com variação de 1.

6.4.1 Matriz de Erros

Foi citado no Capítulo 4 que a criação da matriz de erros é uma boa forma de avaliar a distribuição dos ruídos pela superfície da imagem. Ela é gerada pela subtração da imagem portadora da imagem capa, obtendo-se uma outra imagem que possui somente os ruídos, ou pontos negros, gerados pelo processo de esteganografia. Com ela, pode-se verificar o grau de ruídos, sua densidade e a sua distribuição pela fotografia.

A  Figura 31 mostra a matriz de erros das imagens do Grupo I para os vários métodos analisados na seção anterior. 

Imagem	SEA54	Contraband	InfoStego	Secrets	ThirdEye	WbStego	

1

2

3

Figura 31: Matrizes de Erros das imagens do Grupo I.
Analisando a Figura 31, pode-se notar que as matrizes de erros são diferentes e caracterizam cada método. O SEA54, o Contraband e o WbStego possuem forma de distribuição equivalentes, já o InfoStego concentrou toda a mensagem secreta no final da imagem.

Na Figura 32 é mostrada a Matriz de Erro das imagens 2 e 4 do Grupo II. Elas foram escolhidas porque obtiveram resultados opostos nos Teste Subjetivos (veja Tabela 20). A segunda imagem alcançou o melhor resultado enquanto que a quarta obteve o pior. Apesar dos resultados terem sidos diametralmente opostos, não é visível qualquer distúrbio acentuado nas Matrizes de Erros.

Imagem	SEA54	Contraband	InfoStego	Secrets	ThirdEye	WbStego	

2

4

Figura 32: Matriz de Erros de duas imagens do Grupo II.

 Capítulo  7

7  Conclusão

Neste trabalho um novo método para camuflagem de informações (esteganografia) em imagens digitais estáticas foi descrito, implementado e testado, o SEA54. O desenvolvimento deste modelo foi baseado em evidências das características visuais humanas e nos elementos da técnica do domínio espacial, a qual preceitua que a informação é armazenada diretamente no pixel da imagem.

Concebida a idéia básica do método, a alteração dos 5° e 4º bits da componente azul do pixel, a etapa que consumiu mais tempo foi a criação de ferramentas para viabilizá-lo e testá-lo. Era preciso ter a garantia de que possíveis falhas não eram oriundas das ferramentas. Por isso, elas foram bastante testadas de modo a garantir sua confiabilidade. Em seguida, foram iniciados os testes no método proposto. 

As imagens geradas pelo SEA tiveram exatamente o mesmo tamanho e a mesma qualidade gráfica das originais, não tornando aparente a presença de informações embutidas. O SEA54 mostrou-se bastante eficiente no que diz respeito à camuflagem de informações. Ele conseguiu ocultar a mensagem à percepção visual humana e à maioria dos teste que avaliaram as propriedades estatísticas da imagem, como mostra a análise abaixo, dos resultados obtidos no Capítulo 6.

No que concerne aos testes de invisibilidade (Testes Subjetivos), o modelo criado não só revelou excelentes resultados quando aplicado em imagens diversas (veja Tabela 19: Resultados das imagens do Grupo I.), como também bons resultados para fotografias que certamente seriam rejeitadas para uso em esteganografia, devido às suas características delatadoras (veja Tabela 20: Resultados das imagens do Grupo II.). 

Nos teste relativos à indetectabilidade foram obtidos os seguintes resultados:

Distribuição Binomial:
As probabilidades calculadas foram de 50%, idênticas às esperadas para a uma distribuição binomial. Isto corrobora a eficácia da união do gerador de números pseudo-randômicos com o algoritmo de seccionamento da imagem em áreas.

Comparação com outros métodos:
Os testes que compararam o método aqui proposto com outros existentes, demonstraram bons resultados. Os PSNRs (Sinal de Pico para a Taxa de Ruídos) calculados para ele ficaram bem próximos e, em alguns casos, até melhores do que os dos outros métodos. Vale ressaltar dois pontos principais: primeiro, o SEA54 aceita uma variação de valores para os pixels de até 4 unidades, bem acima dos outros algoritmos que só aceitam variação de 1. Segundo, quando testado sob as mesmas condições o SEA54 apresentou o melhor resultado dentre os demais.

Análise do Histograma:
Ao lado do sucesso dos vários testes a que foi submetido o SEA54, o exame investigativo dos histogramas das imagens geradas trouxe resultados desfavoráveis, quase que inviabilizando seu uso para fins de camuflagem. Uma simples averiguação no histograma do canal azul da imagem portadora dá indícios da existência de mensagens camufladas. O agravante é a existência de um formato característico de serrilhas acentuadas, que agem como uma verdadeira assinatura, delatando o SEA54. Soluções para o problema foram sugeridas neste trabalho, como a mudança dos valores dos pixels vizinhos ao pixel que embutirá o bit da mensagem, por exemplo. Porém, pesquisas mais aprofundadas deverão ser feitas em trabalhos futuros, pois acredita-se que novos estudos serão necessários para aumentar a indetectabilidade do SEA54.

Pode-se concluir que o grande diferencial e vantagem do método proposto sobre os outros é o fato do SEA54 não utilizar os bits menos significativos para embutir a mensagem, não sendo portanto, tão vulnerável aos algoritmos que destroem estes bits. Por outro lado, esse trabalho de dissertação abre novas linhas de pesquisas provando que existem outros meios de serem inseridas informações em imagens digitais estáticas dentro do domínio espacial que não seja os LSBs.

Como resultado destes trabalho de pesquisa pode-se elencar as seguintes contribuições.
•	Avaliação de vários métodos de esteganografia que utilizam imagens true color 24 bits.
•	Avaliação de diversos tipos de detecção.
•	Criação e implementação de um novo método de esteganografia (SEA54).
•	Criação e implementação de um algoritmo de secionamento de imagem.

Em suma, este projeto levantou novas questões no campo das pesquisas de informações camufladas. Será que a simples modificação de todos os bits menos significativos de uma fotografia destrói possíveis mensagens escondidas? Será que, como este método que não emprega os bits menos significativos, existem outros não publicados que estão sendo utilizado para comunicação sigilosa? Muitos aspectos destas questões necessitam investigação mais aprofundada. No entanto, isto serve como um bom começo para a divulgação e o entendimento, como o avanço de novos perspectivas neste campo.

7.1 Trabalhos futuros 

Como continuidade dos objetivos iniciais deste trabalho, uma nova fase de pesquisa deve ser realizada na perspectiva de solucionar os problemas de indetectabilidade surgidos na fase de testes. Novas propostas devem ser feitas, porém, com a preocupação de não desvirtuar o SEA54. O modelo básico do método criado deve ser mantido. Assim, como trabalhos futuros, sugere-se:

1.	Análise prévia da imagem para escolher qual semente do gerador de números pseudo-randômicos proporcionaria menos pixels alterados.
2.	Alteração dos pixels da imagem não utilizados no processo de camuflagem, objetivando diminuir os picos encontrados nos histogramas (interpolação).
3.	Inserção de 3 bits da mensagem em cada pixel da imagem, utilizando os três canais. 
4.	Uso de bits de canais diferentes de um mesmo pixel. Por exemplo, emprego do bit 5 do canal azul e do bit 4 do verde.
5.	Melhoramentos para o método como a não utilização dos pixels com valores (8, 16, 32, 64, 128).
6.	Mudança no critério de escolha do pixel a ser alterado dentro da área. Atualmente é o pixel central. A escolha poderia ser aleatória dentro da própria região.
7.	Ampliação do SEA54 para trabalhar com o formato PNG (Portable Network Graphics Format).

8  Referências BibliogrÁficas

[ARACHELIAN] Arachelian, R., White Noise Storm, 1994.
ftp://ftp.csua.berkeley.edu/pub/cypherpunks/steganography/wns210.zip.

[BANCROFT] Brancoft F. Carter, Counterfeit-Resistant DNA-Based Authentication, Department of Physiology and Biophysics of Mount Sinai School of Medicine, New York, 1999.

[BAXES] Gragory A. Baxes, Digital Image Processing Principles and Applications, John Wiley & Sons Inc., USA, 1994.

[BROWN] Brown, A., S-Tools for Windows, 1996.
ftp://idea.sec.dsi.unimi.it/pub/security/crypt/code/s-tools4.zip.

[CASTLEMAN] Kenneth R. Castleman. Digital Image Processing. Prentice Hall 1996.

[CORMEN] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest. Introduction to Algorithms. Mc.Graw Hill 1990.

[DURIC] Zoran Duric at al. Information Hiding, Steganography and Watermarking – Attacks and Countermeasures. Kluwer Academic Publishers, Boston. Second Printing, 2001.

[FRIDRICH] Jiri Fridrich. Applications of Data Hiding in Digital Images. Tutorial for the ISPACS’98 Conference in Melbourne, Australia, 1998. 

[FONSECA] Jairo Simon, Gilberto de A. Martins. Curso de Estatística. Editora Atlas, (6ª edição) São Paulo, 1996. 

[GIBSON] Jerry D. Gibson, Toby Berger, Tom Lookabaug, Dave Lindberg, Richard L. Baker, Digital Compression for Multimedia, Principles & Standards, Morgan Kaufman Publishers, Inc., San Francisco, California, USA, April 1998. 

[GONZALEZ] Rafael C. Gonzalez, Richard E. Woods, Digital Image Processing, Addison-Wesley Pub Co; ISBN: 0201180758; (2nd edition) January 15, 2002 . 

[HANSMANN] Hansmann, F., Steganos Ex Machina Communications, 1996.
http://www.steganography.com/

[Haskell] A.N. Netravali and B.G. Haskell, Digital Pictures: Representation, Compression, and Standards (2nd Ed), Plenum Press, New York, NY (1995).

[HASTUR] Hastur H., Mandelsteg, 1994.
ftp://idea.sec.dsi.unimi.it/pub/security/crypt/code/steg.tar.Z

[HIDESEEK] software: 
ftp://ftp.hacktic.nl/pub/crypto/incoming/hideseek95.zip

 [IWM] Enigma and the Code Breakers. Online Exhibition, Imperial War Museum, 2002.
http://www.iwm.org.uk/online/enigma/eni-intro.htm

[JPEGX] software:
http://www.webattack.com/get/jpegx.shtml

[JSTEGSH] software:
 http://members.tripod.com/steganography/stego/jstegs

[JPHS] software:
 http://linux01.gwdg.de/~alatham/stego.html

[KAHN] David Kahn. The Codebreakers: The Story of Secret Writing.  Scribner,   December 1996.

[KATZENBEISSER] Stefam Katzenbeisser, Fabien A. P. Petitcolas. Information Hiding – Techniques for steganography and digital watermarking. Artech House, Norwood MA,  2000.

[KELLEY] Jack Kelley. Terror groups hide behind Web Encryption. USA TODAY, February 2001.
http://www.usatoday.com/life/cyber/tech/2001-02-05-binladen.htm

[LIN] Lin, Eugene T., Edward J.Delp. A Review of Data Hiding in Digital Image. NEC Research 1999.

[MACHADO] Machado, R., EzStego Stego Online, Stego. 1997.
http://www.stego.com/

[MARONEY] Maroney, C., Hide and Seek. 1994-1997.
ftp://ftp.csua.berkeley.edu/pub/cypherpunks/steganography/hdsk41b.zip
http://www.rugeley.demon.co.uk/security/hdsk50.zip

[MINASI] Mark Minasi, Mastering Windows 2000 Professional Sybex; ISBN: 078212853X ; 2nd edition (October 23, 2000), USA.

[MP3STEGO] software:
http://www.cl.cam.ac.uk/~fapp2/steganography/mp3stego/

[MURRAY] James D. Murray, William VanRyper, Graphics File Formats. O’Reilly & Associates, Inc. Second Edition, April 1996.

[Neil-1] Johnson, Neil F. Steganography. Information System Security paper, George Mason University, 1995.
http://isse.gmu.edu/~njohnson/stegdoc/

[Neil-2] Johnson, Neil F. Introduction to Watermark Recovery from Images. Conference (IDR’99) San Diego, CA Fevereiro, 1999.

[NODA] JEREMIAH Spaulding, Hideki Noda, Mahdad N. Shirazi, Eiji Kawaguchi, BPCS Steganography using EZW lossy compressed images. Elsevier Science B.V., PII:S0167-8655(02)00122-8, April 2002.

[NORMAN] Bruce Norman. The battle of Codes and Ciphers. David & Charles, UK, May 1990.

[PETITCOLAS] F. Petitcolas, R. Anderson, Attacks on Copyright Marking Systems, Proc. Information Hiding Workshop, Portland, Oregon, USA, April 1998.

[PNG] Portable Network Graphics.
http://www.libpng.org/pub/png/

[PROVOS-1] Niels Provos. OutGuess–Universal Steganography. August 1998.
http://www.outguess.org/

[PROVOS-2] Niels Provos and Peter Honeyman, Detecting Steganography Content on the Internet, San Diego, CA, Fevereiro 2002.
 http://www.citi.umich.edu/techreports/reports/citi-tr-01-11.pdf

[PROVOS-3] Niels Provos, Defending Against Statistical Steganalysis. 10th USENIX Security Symposium. Washington, DC, August 2001. http://www.citi.umich.edu/techreports/reports/citi-tr-01-4.ps.gz

[PROVOS-4] Niels Provos, Probabilistic Methods for Improving Information Hiding. CITI Technical Report 01-1, January 2001. http://www.citi.umich.edu/techreports/reports/citi-tr-01-1.ps.gz

[REPP] Repp, H., Hide and Seek, 1996.
http://www.rugeley.demon.co.uk/security/hide4pgp.zip

[Rowland] Rowland, C.H. Covert Channels in the TCP/IP Protocol Suite, 1996.
http://www.psionic.com/papers/

[SCRAMDISCK] software:
http://www.scramdisk.clara.net/

[SIM] Gustavus J. Simmons, The prisoners' problem and the subliminal channel, Advances in Cryptology: Proceedings of Crypto 83 (David Chaum, ed.), Plenum Press, 1984, pp.51-67.

[STINSON] Douglas R. Stinson. Cryptography Theory and Practice. CRC Press. 1995.

[STIRMARK] software:
http://www.cl.cam.ac.uk/~fapp2/watermarking/stirmak, 1997.

[STEGODOS] StegoDos-Black Wolf’s Pictures Encoder. 1993. ftp://ftp.csua.berkeley.edu/pub/cypherpunks/steganography/stegodos.zip.

[UNZIGN] software:
http://altern.org/watermark.

[WOLFGANG] Raymond B. Wolfgang, Christine I. Podilchuk, Edward J. Delp. Perceptual Watermarks for Digital Images and Video. School of Electrical and Computer Engineering, Purdue University, West USA.