Você está na página 1de 87

Ricardo Borges Junior

ESTEGANOGRAFIA: UM ESTUDO DE CASO UTILIZANDO O


ALGORITMO F5 EM IMAGENS PARA GARANTIR A
CONFIDENCIALIDADE DOS DADOS

Trabalho de conclusão de curso apresentado ao


Instituto Federal de São Paulo, como parte dos
requisitos para a obtenção do grau de Tecnólogo
em Sistemas para Internet.

Área de Concentração: Segurança da


Informação

Orientador: Prof. Roan Simões da Silva

São João da Boa Vista


2014
Autorizo a reprodução e divulgação total ou parcial deste trabalho, por qualquer
meio convencional ou eletrônico, para fins de estudo e pesquisa, desde que
citada a fonte.

 
 
 

                                Ficha catalográfica preparada pela Seção de Tratamento 
                                  da Informação do Serviço de Biblioteca – IFSP 

Borges, Ricardo Jr.


Esteganografia: Um Estudo De Caso Utilizando O
Algoritmo F5 Em Imagens Para Garantir A Confidencialidade
Dos Dados. / Ricardo Borges Junior; orientador Roan
Simões Silva. São João da Boa Vista, 2014.

Trabalho de Conclusão de Curso, IFSP, 2014.

1. Esteganografia. 2. Criptografia. 3. Segurança da


Informação 4. Java.

I. Esteganografia: Desenvolvimento de uma


biblioteca Java Para Aplicação de
esteganografia em Imagens Utilizando o
Algoritmo F5.
AGRADECIMENTOS

Ao professor Roan Simões da Silva, em especial, por sua orientação,


atenção, esclarecimentos e confiança durante todo o decorrer deste trabalho.

Aos parentes e amigos cujo apoio foi de extrema importância e aos colegas
do curso de Tecnólogo de Sistemas para Internet pelo companheirismo que
foi de extrema importância.

Enfim todos aqueles que colaboram direta e indiretamente para conclusão


deste trabalho.
RESUMO

BORGES, R. J. (2014). Esteganografia: Um Estudo De Caso Utilizando O Algoritmo F5


Em Imagens Para Garantir A Confidencialidade Dos Dados. Trabalho de Conclusão de
Curso - Instituto Federal de São Paulo, São João da Boa Vista, 2014.

A esteganografia é uma técnica pouco conhecida e utilizada se comparada com a


criptografia. Devido à grande circulação de imagens no formato JPEG na Internet, em alguns
casos se torna favorável a aplicação da esteganografia nesse tipo de arquivo. Este trabalho
tem como objetivo realizar um estudo de caso onde será analisada a utilização da
esteganografia como recurso de segurança. Além disso, também foi desenvolvida e
disponibilizada uma biblioteca de classes Java que implementa o algoritmo F5 para que
futuros softwares possam utilizar a esteganografia em imagens como mecanismo de
segurança. Para este estudo de caso, foram desenvolvidas uma aplicação utilizando o sistema
criptográfico AES com uma chave de 256 bits, uma aplicação sem qualquer mecanismo de
segurança e outra utilizando o algoritmo esteganográfico F5. Na análise foram realizados
experimentos para coletar dados sobre consumo de memória, processador, rede e
armazenamento em disco. Após a coleta dos dados ficou evidente que a esteganografia é uma
solução viável, porém, com consumo de uma maior quantidade de recursos quando
comparada com a criptografia, restringindo a sua aplicação como mecanismo de segurança.

Palavras-chave: Esteganografia. Criptografia. Segurança da Informação. Java.


ABSTRACT

BORGES, R. J. (2014). Steganography: A Case Study Using The Algorithm F5 On


Images To Ensure Data Confidentiality. Course Conclusion Project – Instituto Federal de
São Paulo, São João da Boa Vista, 2014.

The steganography is a little known and widely used technique compared to the
encryption. Due to the wide circulation of images in JPEG format on the Internet, in some
cases becomes favorable application of steganography that file type. This paper aims to
conduct a case study which will assess the use of steganography as a safety feature.
Furthermore, it was also developed and made available a library of Java classes that
implements the algorithm for future F5 software can use steganography in images as a safety
mechanism. For this case study, an application using the AES cryptographic system with a
256-bit key, an application without any security mechanism and another using the
stenographic algorithm F5 were developed. The analysis experiments were conducted to
collect data on memory consumption, CPU, network and disk storage. After collecting the
data it became apparent that steganography is a viable solution, but with consumption of a
larger amount of resources compared to encryption, restricting its application as a safety
mechanism.

Keywords: Steganography. Cryptography. Information Security. Java.


LISTA DE FIGURAS

Figura 1 – Número de Incidentes de Segurança no Brasil ............................... 23 


Figura 2 - Número de Incidentes relatados ao CAIS ........................................ 24 
Figura 3 - Liberação do conteúdo da mensagem ............................................. 25 
Figura 4 - Análise de tráfego ............................................................................ 27 
Figura 5 – Disfarce ........................................................................................... 28 
Figura 6 – Repasse .......................................................................................... 29 
Figura 7 - Modificação de mensagem .............................................................. 29 
Figura 8 - Negação de serviço ......................................................................... 30 
Figura 9 - Ilustração do uso da esteganografia em uma imagem..................... 35 
Figura 10 - Grelha de Cardano......................................................................... 37 
Figura 11 - Ocultação do código Morse em um desenho ................................. 37 
Figura 12 – Mecanismo de retransmissão por timeout genérico ...................... 40 
Figura 13 - Esteganografia de retransmissão................................................... 41 
Figura 14 - Histograma do coeficiente AC de 1000 imagens JPEG sem
esteganografia ............................................................................... 43 
Figura 15 - Histograma dos seguintes algoritmos esteganográficos (a) F5;
(b) JPEG-JSteg v1; (c) JPEG-JSteg v4; (d) Model-Based v1.2;
(e) Outguess v0.2; and (f) Steghide v0.5.1. ................................... 44 
Figura 16 - As áreas em rosa mostra onde foram feitas alterações na
imagem para incorporação da mensagem..................................... 45 
Figura 17 - As áreas em rosa mostram onde foram feitas alterações para a
incorporação da mensagem utilizando o algoritmo F5. ................. 46 
Figura 18 - Sequencia de passos do algoritmo F5 na incorporação de uma
mensagem ..................................................................................... 47 
Figura 19 - Consumo de memória na incorporação no experimento um .......... 57 
Figura 20 - Consumo de processador na incorporação do experimento um .... 57 
Figura 21 - Consumo de memória na extração do experimento um................. 58 
Figura 22 - Consumo de processador na extração do experimento um ........... 58 
Figura 23 - Consumo de processador na incorporação do experimento dois .. 59 
Figura 24 - Consumo de processador na incorporação do experimento dois .. 59 
Figura 25 - Consumo de memória na extração do experimento dois ............... 60 
Figura 26 - Consumo de processador na extração do experimento dois ......... 60 
Figura 27 - Consumo de memória na incorporação do experimento três ......... 61 
Figura 28 - Consumo de memória na extração do experimento três ................ 61 
Figura 29 - Consumo de processador na incorporação do experimento três ... 61 
Figura 30 - Consumo de processador na extração do experimento três .......... 62 
Figura 31 - Consumo de processador na incorporação do experimento
quatro ............................................................................................. 62 
Figura 32 - Consumo de processador durante a quinta execução no
processo de incorporação do experimento quatro ......................... 63 
Figura 33 - Consumo de processador durante a sexta execução no
processo de incorporação do experimento quatro ......................... 63 
Figura 34 - Consumo de memória na incorporação do experimento quatro ..... 64 
Figura 35 - Consumo de memória durante a segunda execução no processo
de incorporação do exeperimento quatro ....................................... 65 
Figura 36 - Consumo de memória durante a décima execução no processo
de incorporação do exeperimento quatro ....................................... 65 
Figura 37 - Consumo de memória durante a segunda execução no processo
de extração do experimento quatro................................................ 66 
Figura 38 - Consumo de memória durante a terceira execução no processo
de extração do experimento quatro................................................ 66 
Figura 39 - Consumo de memória no processo de extração no experimento
quatro ............................................................................................. 67 
Figura 40 - Consumo de processador durante a segunda execução no
processo de extração do experimento quatro ................................ 67 
Figura 41- Consumo de processador durante a terceira execução no
processo de extração do experimento quatro ................................ 68 
Figura 42 - Consumo de processador no processo de extração no
experimento quatro ........................................................................ 68 
Figura 43 - Consumo de processador no processo de incorporação no
experimento cinco .......................................................................... 69 
Figura 44- Consumo de memória no processo de incorporação no
experimento cinco .......................................................................... 69 
Figura 45 - Consumo de memória no processo de extração no experimento
cinco ............................................................................................... 70 
Figura 46 - Consumo de processador no processo de extração no
experimento cinco .......................................................................... 70 
Figura 47 - Consumo de memória no processo de cifragem no experimento
um .................................................................................................. 71 
Figura 48 - Consumo de processador no processo de cifragem no
experimento um ............................................................................. 71 
Figura 49 - Consumo de memória no processo de decifragem no
experimento um ............................................................................. 71 
Figura 50 - Consumo de processador no processo de decifragem no
experimento um ............................................................................. 72 
Figura 51 - Consumo de memória no processo de cifragem no experimento
dois ................................................................................................ 72 
Figura 52 - Consumo de processador no processo de cifragem no
experimento dois ........................................................................... 72 
Figura 53- Consumo de memória no processo de decifragem no
experimento dois ........................................................................... 73 
Figura 54- Consumo de processador no processo de decifragem no
experimento dois ........................................................................... 73 
Figura 55 - Consumo de memória no processo de cifragem no experimento
três ................................................................................................. 74 
Figura 56 - Consumo de processador no processo de cifragem no
experimento três ............................................................................ 74 
Figura 57- Consumo de memória no processo de decifragem no
experimento três ............................................................................ 74 
Figura 58 - Consumo de processador no processo de decifragem no
experimento três ............................................................................ 75 
Figura 59 - Consumo de memória no processo de cifragem no experimento
quatro............................................................................................. 75 
Figura 60 - Consumo de processador no processo de cifragem no
experimento quatro ........................................................................ 75 
Figura 61 - Consumo de memória no processo de decifragem no
experimento quatro ........................................................................ 76 
Figura 62 - Consumo de processador no processo de decifragem no
experimento quatro ........................................................................ 76 
Figura 63 - Consumo de memória no processo de cifragem no experimento
cinco ............................................................................................... 77 
Figura 64 - Consumo de processador no processo de cifragem no
experimento cinco .......................................................................... 77 
Figura 65 - Consumo de memória no processo de decifragem no
experimento cinco .......................................................................... 77 
Figura 66 - Consumo de procesador no processo de decifragem no
experimento cinco .......................................................................... 78 
Figura 67 - Consumo médio de mémoria no incorporação e cifragem ............ 78 
Figura 68 - Consumo médio de mémoria no processo de extração e
decifragem ..................................................................................... 79 
Figura 69 - Consumo médio de processador no processo de incorporação e
cifragem ......................................................................................... 79 
Figura 70- Consumo médio de processador no processo de extração e
decifragem ..................................................................................... 80 
LISTA DE TABELAS

Tabela 1 - Comparativo entre o que é necessário para a criptografia de


chaves assimétrica e simétrica funcionarem ................................. 33 
Tabela 2 - Comparativo entre o que é necessário para a segurança da
criptografia de chaves assimétrica e simétrica .............................. 34 
Tabela 3 - Ambiente de Desenvolvimento ........................................................ 52 
Tabela 4 - Especificações de hardware e software utilizados .......................... 55 
Tabela 5 - relação as imagens utilizadas em cada experimento ...................... 55 
Tabela 6 - Tamanho os arquivos gerados por cada aplicação cliente.............. 80 
Tabela 7 - Tempo de transmissão em segundo das aplicações cliente-
servidor .......................................................................................... 81 
LISTA DE SIGLAS

API - Application Programming Interface

CAIS - Central de Atendimento a Incidentes de Segurança

CERT - Centro de Estudo, Resposta e Tratamento de Incidentes no Brasil

DCT - Discrete Cosine Transform

DDoS - Distributed Denial of Service

DoS - Denial of Service

HTML - Hyper Text Markup Language

IP – Internet Protocol

JDK - Java Development Kit

JVM - Java Virtual Machine

LSB - Less Significant Bit

RNP - Rede Nacional de Ensino e Pesquisa

SAH - Sistema Auditivo Humano

TCP - Transmission Control Protocol

XML - Extensible Markup Language


SUMÁRIO

1  INTRODUÇÃO .......................................................................................................... 19 

1.1  Motivação ............................................................................................................................. 20 

1.2  Objetivos ............................................................................................................................... 21 

1.3  Organização deste trabalho ................................................................................................... 21 

2  PESQUISA BIBLIOGRÁFICA ................................................................................... 23 

2.1  Ataques de Rede ................................................................................................................... 23 

2.1.1 Ataques Passivos ................................................................................................................ 25 

2.1.1 Ataques Ativos ................................................................................................................... 27 

2.2  Criptografia ........................................................................................................................... 31 

2.2.1 Terminologia ...................................................................................................................... 31 

2.2.2 Criptografia de chave simétrica.......................................................................................... 32 

2.2.3 Criptografia de chave assimétrica ...................................................................................... 32 

2.3  Esteganografia ...................................................................................................................... 34 

2.3.1 Histórico da esteganografia ................................................................................................ 35 

2.3.2 Aplicação da Esteganografia em arquivos digitais............................................................. 37 

2.3.3 Algoritmos para Esteganografia em Imagens Digitais ....................................................... 41 

2.3.4 Técnicas de Detecção de Esteganografia em Imagens Digitais ......................................... 42 

2.3.5 Algoritmo F5 ...................................................................................................................... 45 

2.3.6 Biblioteca de Classe Java ................................................................................................... 47 

2.3.7 Licença LGPL .................................................................................................................... 48 

2.4  Trabalhos Relacionados ........................................................................................................ 49 

3  METODOLOGIA ....................................................................................................... 51 

3.1  Ambiente de Desenvolvimento ............................................................................................. 51 

3.2  Desenvolvimento da biblioteca ............................................................................................. 52 

3.3 Descrições das aplicações desenvolvidas .............................................................................. 54 


3.3  Comparativo de Desempenho ............................................................................................... 54 

3.4  Descrição das imagens utilizadas pela esteganografia.......................................................... 55 

4  RESULTADOS ........................................................................................................... 56 

4.1  Desempenho Esteganografia ................................................................................................ 56 

4.1.1 Experimento um ................................................................................................................. 56 

4.1.2 Experimento dois ............................................................................................................... 58 

4.1.3 Experimento três ................................................................................................................ 60 

4.1.4 Experimento quatro ............................................................................................................ 62 

4.1.5 Experimento cinco ............................................................................................................. 68 

4.2  Desempenho Criptografia ..................................................................................................... 70 

4.2.1 Experimento um ................................................................................................................. 70 

4.2.2 Experimento dois ............................................................................................................... 72 

4.2.3 Experimento três ................................................................................................................ 73 

4.2.4 Experimento quatro ............................................................................................................ 75 

4.2.5 Experimento cinco ............................................................................................................. 76 

4.3  Transmissão cliente-servidor ................................................................................................ 80 

5  CONCLUSÕES ........................................................................................................... 83 

5.1  Trabalho futuros ................................................................................................................... 84 

REFERÊNCIAS ................................................................................................................ 85 


Capítulo

19

1 Introdução

Esteganografia é a arte e ciência da ocultação de informação e comunicação invisível.

É diferente da criptografia, pois segundo Manoj (2010) a criptografia pode ser definida como

a arte e ciência de transformar informação em uma sequência de bits que aparentemente são

aleatórios e sem sentido aos olhos de um observador ou atacante e, em alguns casos remover-

se dados redundantes para comprimir a informação. Por sua vez, as técnicas de esteganografia

se esforçam para esconder a própria presença dos dados na mensagem, onde um observador

que não tem conhecimento de qual foi o procedimento utilizado para esconder a mensagem,

fica impossibilitado de lê-la (CUMMINS et al, 2004).

Logo, pode se concluir que a esteganografia e criptografia são utilizados para garantir

a confidencialidade dos dados. No entanto, a principal diferença entre elas é que, com a

criptografia qualquer um pode ver que ambas as partes estão se comunicando em segredo. Já a

esteganografia esconde a existência de uma mensagem secreta e, no melhor dos casos

ninguém pode ver que ambas as partes estão se comunicando secretamente (EL-EMAM,

2007).

Atualmente, a esteganografia é utilizada notadamente em arquivos multimídia digitais

(vídeo, áudio e imagens). Esconder informações dentro de imagens é a técnica

esteganográfica mais popular hoje em dia. Uma imagem com uma mensagem secreta no

interior pode ser facilmente espalhada sobre a Internet ou em um grupo de notícias. Para

ocultar uma mensagem dentro de uma imagem, sem alterar suas propriedades visíveis, a fonte

de cobertura (imagem onde será inserida a informação) pode ser alterada nas áreas que

possuem “ruído”, com muitas variações de cores, e que portanto, resultarão em menos atenção
20

atraída para as modificações. Os métodos mais comuns para fazer estas alterações implicam a

utilização do bit menos significativo (LSB – Less Significant Bit) (EL-EMAM, 2007).

1.1 Motivação

A internet, provavelmente, está entre os grandes feitos da humanidade,

interconectando milhares de computadores e dispositivos, e hoje possui extrema importância

econômica, social, educacional e até mesmo cultural, sendo uma das bases da sociedade

contemporânea (KUROSE; ROSS, 2010).

Sendo a utilização da Internet imprescindível para inúmeras tarefas cotidianas, é


necessário o uso de mecanismos de segurança para que dados sigilosos possam ser
transmitidos, de maneira que caso um intruso consiga ter acesso às informações elas sejam
inutilizáveis.

A criptografia é o principal meio de proteção de dados atualmente, entretanto, a


esteganografia também poderia ser utilizada para garantir confidencialidade de uma
determinada informação, por exemplo, escondendo informações sensíveis em imagens em
formato digital.

Por se tratar de uma técnica pouco conhecida, a esteganografia tem pouca utilização e
são escassas informações as respeito a seu desempenho na utilização de recursos como
memória e processador em relação a criptografia e além que são raros os recursos para a
criação de uma aplicação que a utilize como mecanismo de segurança. Diferente da
criptografia, onde existe uma vasta coleção de bibliotecas e APIs (Application Programming
Interface) para facilitar o desenvolvimento de aplicações, ao usar esteganografia é necessário
implementar o algoritmo à partir das equações matemáticas nas quais o algoritmo utilizado na
biblioteca é baseado, o que não é muito atraente do ponto de vista do desenvolvimento de
software.
21

1.2 Objetivos

Diante das dificuldades apresentadas na seção anterior, este trabalho tem como
objetivo contribuir para facilitar a utilização da esteganografia em aplicações que envolvem
segurança da informação.

O objetivo principal é analisar a eficiência da esteganografia como um recurso de


segurança para garantir a confidencialidade dos dados. Para isso, esta técnica de segurança
será aplicada em um estudo de caso e comparada a uma técnica de criptografia convencional,
em termos de desempenho.

Para viabilizar o estudo de caso, este trabalho também realizou a implementação de


uma biblioteca de classes na linguagem Java, utilizando o algoritmo esteganográfico F5. Esta
biblioteca tem como objetivo facilitar o desenvolvimento de futuras aplicações que
necessitem ou planejam utilizar a esteganografia através do algoritmo F5. Por fim, também
foi elaborado um manual detalhando o uso da biblioteca.

No estudo de caso, uma aplicação que faz uso da esteganografia foi desenvolvida e
comparada, em termos de desempenho, com uma versão sem o uso de recursos de proteção e
uma versão utilizando criptografia convencional, de modo a demonstrar sua possível
viabilidade prática.

1.3 Organização deste trabalho

Este trabalho está organizado em capítulos com a seguinte ordem:

O capítulo 1 contém a introdução sobre a esteganografia e criptografia, motivação e


objetivos deste trabalho.

O capítulo 2 possui informações mais detalhadas sobre o histórico e funcionamento da


criptografia e esteganografia, além da descrição do algoritmo utilizado.

A metodologia e as ferramentas utilizadas para execução neste trabalho se encontram


no capítulo 3.
22

No capítulo 4 podem ser obtidos os resultados alcançados por este projeto.

O capítulo 5 contém as conclusões obtidos no decorrer do trabalho.


Capítulo

23

2 Pesquisa Bibliográfica

Neste capítulo são apresentados os principais ataques de rede ativos e passivos, uma
visão geral da criptografia e de sistemas criptográficos simétricos e assimétricos, além de uma
visão mais aprofundada da esteganografia incluindo como ela era utilizada no passado, as
principais técnicas atuais, técnicas de detecção e detalhes do algoritmo F5.

2.1 Ataques de Rede

É notável o aumento do número de incidentes de segurança, decorrente do uso de


computadores e da Internet, o que demostra a importância da segurança da informação em
sistemas computacionais (NAKAMURA, GEUS, 2007). Este fato, pode ser comprovado
analisando a figura 1, que apresenta o número de incidentes de segurança reportados ao
CERT (Centro de Estudo, Resposta e Tratamento de Incidentes no Brasil) desde 1999 (CERT,
2014).

 
Figura 1 – Número de Incidentes de Segurança no Brasil 
Fonte: http://www.cert.br/stats/incidentes/ 
24

O CAIS (Central de Atendimento a Incidentes de Segurança) da RNP (Rede Nacional


de Ensino e Pesquisa) também disponibiliza estáticas de incidentes relatados a central desde
1997(CAIS, 2014). Os dados do CAIS estão apresentados na figura 2.

 
Figura 2 ‐ Número de Incidentes relatados ao CAIS 
Disponível em: http://www.rnp.br/cais/estatisticas/index.php 

Esses dados se referem apenas aos incidentes reportados ao CAIS e ao CERT e em


escala nacional. Grande parte dos incidentes não é reportada e outros simplesmente sequer são
descobertos pelos administrados dos sistemas, tornando o número ainda maior do que os
mostrados nas estatísticas de incidentes.
25

Ataques podem ser classificados em passivos ou ativos os ataques passivos tem o


objetivo de descobrir informações ou utilizar informações do sistema, já os ataques ativos
tentam alterar ou afetar um sistema (STALLINGS, 2008). Nas seções seguintes tais tipos de
ataques serão descritos emdetalhes.

2.1.1 Ataques Passivos

Os ataques passivos possuem a natureza de bisbilhotar ou monitorar transmissões com


o objetivo de obter informações que estão sendo transmitidas. Dois dos principais tipos de
ataques passivos são a liberação do conteúdo da mensagem e a análise de tráfego
(STALLINGS, 2008).

A liberação do conteúdo da mensagem é facilmente compreendida através da Figura 3.


Neste tipo de ataque, uma conversa telefônica, mensagem de correio eletrônico ou um arquivo
transferido, podem conter informações importantes ou confidenciais (STALLINGS, 2008).

 
Figura 3 ‐ Liberação do conteúdo da mensagem 
Fonte: Stallings, 2008, p. 6 
26

Esse tipo de ataque onde o intruso apenas intercepta e lê as informações capturadas da


comunicação entre dois computadores é chamado de liberação de mensagem (Release of
Message Contents).

Milhares de pessoas acessam à Internet por meio de redes sem fio utilizando laptop,
smartphone ou tablet, enquanto este acesso quase onipresente à Internet disponibiliza
inúmeros benefícios, também abre uma grande brecha de segurança, pois um receptor
próximo ao transmissor sem fio, pode capturar cada pacote enviado (STALLINGS, 2008).

Por exemplo, o Secure Socket Layer (popularmente conhecido pela sigla SSL), é
utilizado para aprimorar protocolo TCP (Transmission Control Protocol) com serviços de
segurança, incluindo sigilo, integridade dos dados e autenticação para proteger a privacidade e
autenticidade do tráfego de um site (KUROSE; ROSS, 2010).

Agora, imagine que João utilize o SSL em seu site.A atual infraestrutura de chaves
públicas (na seção 2.1.2 será tratado melhor esse assunto) do site de João é inexistente ou
possui falhas de segurança permitindo que um ataque man-in-the-middle (também conhecido
como ataque homem no meio, onde o atacante fica estrategicamente posicionado entre a
comunicação de dois computadores capturando dados) seja lançado. Suponha que Paulo vai
acessar o site de João, mas há um intruso entre os dois que vai interceptar a comunicação, de
modo que a chave pública criada pelo intruso se passe pela original do site de João. Assim,
quando Paulo aceita o certificado falso, ele de fato enviou informações para o Intruso. O
intruso pode então começar uma conexão SSL com a página WWW real de João. Mesmo que
seja usada criptografia e autenticação, uma vez que o intruso convenceu Paulo que sua chave
falsa é a chave pública de João, ele poderá bisbilhotar o tráfego entre Paulo e João
(STALLINS, 2008; KUROSE; ROSS, 2010; DESMEDT, 2011).

Um segundo tipo de ataque passivo, a análise de tráfego, apresentada na Figura 4, é


mais sutil. Suponha que tivéssemos uma maneira de ofuscar o conteúdo das mensagens ou de
outro tráfego de informações de maneira que os oponentes, mesmo que captassem a
mensagem, não poderiam extrair suas informações.

A técnica comum para ofuscar o conteúdo é a criptografia. Se tivéssemos proteção por


criptografia, um oponente ainda poderia conseguir observar o padrão dessas mensagens. O
oponente poderia determinar o local e a identidade do emissor e receptor envolvidos na
27

comunicação e observar a frequência e o tamanho das mensagens trocadas, além do tempo de


requisição e resposta. Essas informações poderiam ser úteis para descobrir a natureza da
comunicação que estava ocorrendo (STALLINS, 2008; COULL, 2011).

 
Figura 4 ‐ Análise de tráfego 
Fonte: Stallings, 2008, p. 6 

Ataques passivos são muitos difíceis de detectar, pois não envolvem alteração dos
dados. Normalmente, o tráfego de mensagens ocorre em um padrão aparentemente normal, e
nem emissor nem o receptor estão cientes de que um terceiro leu as mensagens ou observou o
padrão do tráfego. Porém, normalmente, é viável impedir o sucesso desses ataques por meio
da criptografia (STALLINS, 2008).

2.1.1 Ataques Ativos

Ataques ativos envolvem algumas modificações do fluxo de dados ou a criação de um


fluxo falso e podem ser subdivididos em quatro categorias: disfarce (masquerade), repetição
(replay), modificação de mensagem (modification of message content) e negação de serviço
(Denial of Service) (STALLINGS, 2008).

Um disfarce ocorre quando uma entidade finge ser uma entidade diferente, conforme
apresentado na Figura 5. Um ataque de disfarce normalmente inclui outras formas de ataque
ativo. Por exemplo, sequencias de autenticação podem ser copiadas e reproduzidas depois que
28

houver uma sequência de autenticação válida, permitindo assim que uma entidade autorizada
com poucos privilégios obtenha privilégios extras, imitando essa entidade que tenha esses
privilégios (STALLINS, 2008).

 
Figura 5 – Disfarce 
Fonte: Stallings, 2008, p. 7 

A repetição, descrita na Figura 6, envolve a captura passiva de uma unidade de dados


e sua subsequente retransmissão para produzir um efeito não autorizado. Um ataque de
repetição é um ataque em que o intruso registra uma sessão de comunicação e repete toda a
sessão, ou alguma parte dela, em um momento posterior. A mensagem repetida pode ser
enviada para o mesmo verificador, como aquele que participou na sessão original, ou a um
verificador diferente (STALLINS, 2008, ADAMS, 2011).

A modificação de mensagens, descrita na figura 7, simplesmente significa que alguma


parte de uma mensagem legítima foi alterada ou ainda que as mensagens foram adiadas ou
reordenadas para produzir um efeito não autorizado. Por exemplo, uma mensagem
significando “Permitir que Jonh Smith leia contas de arquivos confidencias” é modificada
para “Permitir que Fred Brown leia contas de arquivos confidenciais” (STALLING, 2008).
29

 
Figura 6 – Repasse 
Fonte: Stallings, 2008, p. 7 

 
Figura 7 ‐ Modificação de mensagem 
Fonte: Stallings, 2008, p.8 

A negação de serviço conhecido também pela sigla DoS (Denial of Service) impede ou
inibe o uso ou gerenciamento normal das instalações de comunicação (Figura 8). Esse ataque
pode ter um alvo específico; por exemplo, uma entidade pode suprimir todas as mensagens
dirigidas a determinado destinos (por exemplo, o serviço de auditoria de segurança). Outra
30

forma de negação de serviço é a interrupção de uma rede inteira, seja desativando a rede ou
sobrecarregando-a com mensagens a fim de prejudicar o desempenho (STALLINGS, 2008).

Em junho de 2010 a Internet tinha por volta de 2 bilhões de usuários. Muitos usuários
navegavam na Internet sem o software de segurança adequado, ou utilizaram sistemas
operacionais e softwares que não estavam devidamente atualizados. Atacantes podem
empregar técnicas automatizadas para descobrir tais sistemas e usar vulnerabilidades
conhecidas para instalar as ferramentas DDoS (Distributed Denial of Service) nesses sistemas.
Tais computadores infectados são geralmente referidos como computadores zumbis, ou bots
(SCHNEIDER, 2012).

 
Figura 8 ‐ Negação de serviço 
Fonte: Stallings, 2008, p. 8 

Mesmo que a criptografia não possa ser utilizada para inibir ou proteger de um ataque
de negação de serviço, ela possui relação com esse tipo de ataque, crackers utilizam
comunicação criptografada entre ele e os computadores de sua botnet (conjunto de vários bots
que pode variar de algumas dezenas de computadores infectados e milhares) para coordenar
um ataque (MANOJ, 2010).
31

2.2 Criptografia

A palavra criptografia vem do grego onde cripto significa secreto e grafia escrita, ou
seja, a arte e ciência da “escrita secreta”. A criptografia tem uma longa história e
historicamente recebeu contribuição de quatro grupos no qual são pessoas que queriam
guardar memórias, amantes, diplomatas e militares, sendo este último o que deu a maior
contribuição. Algoritmos criptográficos podem ser implementados tanto em hardware, para
obter desempenho, quanto em software, para se obter flexibilidade (TANEMBAUM, 2003).

2.2.1 Terminologia

É necessário definirmos alguns termos utilizados na criptologia (área do conhecimento


dedicada à criação e quebra de mecanismos criptográficos), segundo Stallings(2008):

Criptoanálise é a área responsável pelo estudo da decifragem de uma mensagem sem


qualquer conhecimento do sistema criptográfico utilizado. Outra área é a criptografia em si
com seus sistemas de cifragem e decifragem de mensagens.

Uma mensagem não cifrada (que não foi aplicado nenhum método de criptografia) é
chamada de texto plano (ou plaintext) e uma mensagem criptografada é chamada de texto
cifrado ou (ciphertext). O processo de transcrição de texto claro para texto cifrado é chamado
de criptografia ou cifragem e recuperar um texto claro a partir de um texto cifrado é chamado
de descriptografia e também por decifragem (KUROSE; ROSS, 2009).

Todos os algoritmos criptográficos consistem em alterar (cifrar) um dado (texto claro)


por outro dado (texto cifrado) que apresenta ter nenhum sentido e sem que aconteça perdas
quando esses dados forem decifrados (STALLINGS, 2008).

Atualmente em aplicações para fins práticos se utilizam de dois sistemas


criptográficos os de chaves simétricas e chaves assimétricas.
32

2.2.2 Criptografia de chave simétrica.

Segundo Stallings (2008, p. 18) a criptografia de chave simétrica necessita de dois


requisitos para o uso seguro:

1. Precisamos de um algoritmo de criptografia forte. No mínimo, queremos que um


oponente que conheça o algoritmo e tenha acesso a um ou mais textos cifrados
seja incapaz de decifrar o texto cifrado ou descobrir a chave. Esse requisito
normalmente é indicado em uma forma mais forte: o oponente deverá ser
incapaz de descriptografar o texto cifrado ou descobrir a chave mesmo que
possua diversos textos cifrados combinados ao texto claro que produziu cada
texto cifrado.

2. Emissor e receptor precisam ter cópias da chave secreta de uma forma segura e
precisam manter a chave protegida. Se alguém puder descobrir a chave e souber
o algoritmo, toda a comunicação usando essa chave poderá ser lida.

Stallings (2008) ainda complementa que o custo para decifrar um texto cifrado deve
ser maior que a informação criptografada e que o tempo exigido para quebrar a cifragem seja
superior a vida útil da informação codificada.

Um ataque de força bruta consiste em utilizar todas as chaves possíveis até que se
obtenha uma que decifre ao texto cifrado para texto claro. Em média metade das chaves
possíveis precisa ser testada para que se obtenha sucesso.

Em um sistema criptográfico de chaves assimétricas, qualquer sequência de caracteres


alfanumérica pode ser utilizada como chave desde que tenha o tamanho correto e adequado
para o algoritmo criptográfico selecionado (MORENO, PEREIRA, CHIARAMONTE 2005).

2.2.3 Criptografia de chave assimétrica

Até a década 1970 todos os sistemas criptográficos exigiam que o emissor e receptor
usassem a mesma chave para cifrar e decifrar as mensagens, o que dificulta o uso deste tipo
de abordagem, pois as duas partes precisam em concordar em utilizar a mesma e compartilhar
essa chave de forma segura (KUROSE; ROSS, 2009).
33

Em muitos casos as partes que se desejam comunicar usando um sistema criptográfico


nunca terão essa oportunidade de se encontrar e definir qual chave utilizar ou a
disponibilidade de um meio seguro de transferência da chave que será utilizada na cifragem
de decifragem das mensagens, nesses casos se faz necessário o uso da criptografia de chave
assimétrica (KUROSE; ROSS, 2009).

O conceito de criptografia de chave assimétrica é bastante simples e consiste


basicamente em uma chave usada para cifrar a mensagem e outra para decifrar a mensagem
cifrada (KUROSE; ROSS, 2009).

Suponhamos que João pretende se comunicar com Paulo utilizando um sistema


criptográfico de chave assimétrica (também conhecido como criptografia de chave pública).
João informa a chave pública (que tem a capacidade de apenas cifrar o texto claro para texto
cifrado) para Paulo, até mesmo o intruso pode ter acesso a essa chave.

Como a chave cedida por João é capaz de apenas cifrar mensagens, qualquer pessoa
pode ter acesso à essa chave pública, pois mesmo que ela caia em mãos erradas, será
completamente inútil para decifrar qualquer texto cifrado por esta chave pública. Isso ocorre,
pois a chave utilizada para decifrar os textos cifrados é chamada de chave privada, a qual
deve estar em posse apenas de João e mais nenhuma outra pessoa, caso contrário toda a
comunicação estará comprometida (STALLINGS, 2008).

Nas tabelas 1 e 2 mostra um breve comparativo entre a criptografia de chave


assimétrica e chave simétrica.

Tabela 1 ‐ Comparativo entre o que é necessário para a criptografia de chaves assimétrica e simétrica 
funcionarem 
Criptografia de chave assimétrica Criptografia de chave simétrica
Necessário para funcionar Necessário para funcionar

1. O mesmo algoritmo com a mesma chave é 1. Um algoritmo é usado para criptografia


usado para criptografar e descriptografar. e descriptografia com um par de chaves,
uma para criptografia e outra para
O emissor e o receptor precisam compartilhar o descriptografia.
algoritmo e a chave 2. O emissor e o receptor precisam ter uma
das chaves do par casado de chaves (não
a mesma chave)
Fonte: Stallings, p. 184 
34

Tabela 2 ‐ Comparativo entre o que é necessário para a segurança da criptografia de chaves 
assimétrica e simétrica 
Criptografia de chave assimétrica Criptografia de chave simétrica

Necessário para a segurança Necessário para a segurança

1. A chave precisa permanecer secreta. 1. Uma das duas chaves precisa permanecer
2. Deverá ser impossível ou pelo menos secreta.
impraticável decifrar uma mensagem se 2. Deverá ser impossível ou pelo menos
nenhuma outra informação estiver impraticável decifrar uma mensagem se
disponível. nenhuma outra informação estiver
O conhecimento algoritmo mais amostras do disponível.
texto cifrado precisam ser insuficientes para O conhecimento do algoritmo mais uma das
determinar a chave. chaves mais amostras do texto cifrado precisa ser
insuficiente para determinar a outra chave.
Fonte: Stallings, p. 184 

2.3 Esteganografia

Esteganografia que vem do grego, onde estegano significa escondido, mascarado e


grafia significa escrito, logo a esteganografia é a técnica da escrita oculta, ou seja,
ocultamento de informações em outros meios (JULIO; BRAZIL; ALBUQUERQUE, 2007).

A esteganografia não é a rigor um método criptográfico, o que difere a esteganografia


da criptografia é o fato de que a criptografia transforma uma mensagem em texto claro em
uma mensagem inteligível após a cifragem, ao passo que a esteganografia se propõem em
esconder a mensagem em algum meio (STALLINGS, 2008).

Primeiramente, serão definidos quais são os principais termos utilizados no estudo da


esteganografia, segundo Julio, Brazil, Albuquerque (2007):

Dado embutido ou embedded data – é o dado que será enviado de maneira secreta,
normalmente em uma mensagem, texto ou imagem.

Mensagem de cobertura ou cover-message - é a mensagem que servirá para


mascarar o dado embutido. Esta mensagem de cobertura pode ser de áudio (cover-
audio), de texto (cover-text) ou uma imagem (cover-image);

Estego-objeto ou stego-object - após a inserção do dado embutido na mensagem de


cobertura se obtém o estego-objeto;
35

Estego-chave ou stego-key - adicionalmente pode ser usada uma chave para se


inserir os dados do dado embutido na mensagem de cobertura. A esta chave se dá o
nome de estego-chave;

Número de série digital ou marca fingerprinting - consiste em uma série de números


embutidos no material que será protegido a fim de provar a autoria do documento.

 
Figura 9 ‐ Ilustração do uso da esteganografia em uma imagem 
Adaptado de: JULIO; BRAZIL; ALBUQUERQUE, 2007 

Na próxima seção será apresentado um histórico da esteganografia.

2.3.1 Histórico da esteganografia

Técnicas de esteganografia simples têm sido utilizadas há centenas de anos, mas com
o aumento do uso de arquivos em formato eletrônico, novas técnicas de ocultação de
informação tornaram-se possíveis.

Heródoto conta que em torno de 440 A.C Histiaeus raspou a cabeça de seu escravo
mais confiável e tatuou uma mensagem que desapareceu depois que o cabelo tinha crescido.
36

O objetivo desta mensagem era para instigar uma revolta contra os persas. Outro escravo
poderia ser usado para enviar uma resposta. Heródoto também descreve que, um mensageiro
para burlar a segurança, se disfarçou de caçador e escondeu a mensagem dentro de uma lebre
(JULIO; BRAZIL; ALBUQUERQUE, 2007 apud KHAN 1996).

Esteganografia também foi usado nas duas Guerras Mundiais. Espiões alemães
esconderam texto usando tinta invisível para imprimir pequenos pontos acima ou abaixo de
letras e, alterando as alturas de cursos de letras, neste mesmo período foram utilizadas tintas
invisíveis que só eram visíveis após a aplicação de um determinado reagente (CUMMINS et
al, 2004; JULIO; BRAZIL; ALBUQUERQUE, 2007).

O mais famoso exemplo que ilustra o uso da esteganografia é o Simmon's Prisoner


Problem no qual Alice e Bob estão presos, trancados em celas separadas distantes uns dos
outros e desejam elaborar um plano de fuga. Eles podem se comunicar por meio de envio de
mensagens via mensageiros. Mas os mensageiros são agentes da Eve diretora (o adversário) e
vão vazar toda a comunicação para ela. Se Eve identificar qualquer sinal de conspiração, ela
vai frustrar os planos de fuga, transferindo os presos para as celas de alta segurança de onde
que ninguém jamais escapou. Alice e Bob estão bem cientes desses fatos, de modo que antes
de serem presos, eles compartilharam uma palavra-código secreta que irão agora explorar
para a incorporação de uma informação escondida em suas mensagens aparentemente
inocentes. Se Alice e Bob obtiverem sucesso eles podem trocar informações que lhes permita
coordenar a sua fuga sem que Eve suspeite das mensagens (CACHIN, 2011; SIMMONS,
1984).

Por volta de quinhentos anos atrás, o matemático italiano Girolamo Cardano


reinventou um método chinês antigo de escrita secreta. Neste método uma máscara de papel
com furos é compartilhada entre as duas partes que pretendem se comunicar, esta máscara é
colocada sobre um papel em branco e o remetente escreve a sua mensagem secreta através
dos furos, em seguida, retira a máscara e preenche os espaços em branco para que a
mensagem aparece como um texto inócuo, como mostrado na figura 10, este método é
creditado a Cardano e é chamado Grelha de Cardano (CHEDDAD, et al, 2010, apud
MOULIN, KOETTER, 2005)

 
37

Figura 10 ‐ Grelha de Cardano 
Fonte: Cheddad, et al, 2010 

Em 1945 o exército nazista, escondeu uma mensagem em código Morse em um


desenho, representado na Figura 11. As informações ocultas estavam codificadas na grama
ao lado do rio. A relva alta é considerada uma linha e a relva baixa é considerada um ponto, a
mensagem decodificada é: ‘‘Compliments of CPSA MA to our chief Col Harold R. Shaw on
his visit to San Antonio May 11th 1945’’(CHEDDAD, et al, 2009, apud MOULIN,
DELAHAYE, 2005).

 
Figura 11 ‐ Ocultação do código Morse em um desenho 
Fonte: Cheddad, et al, 2010 
 

2.3.2 Aplicação da Esteganografia em arquivos digitais.

Segundo Lou et al (2012), a incorporação de mensagens ocultas em arquivos de


imagens é a mais comum, e grande parte das técnicas utilizada são baseadas na modificação
38

dos bits menos significativos (LSB) da imagem de cobertura. Em uma aplicação simples que
utiliza essa técnica, todo plano LSB é substituído por stego-dados.

Ainda segundo Cheddad et al (2010) existem sistemas sofisticados onde os locais de


inserção são adaptativamente selecionados, dependendo de características da visão humana,
onde até uma pequena distorção é aceitável. Porém, uma aplicação simples do LSB pode
resultar em perda de todos os dados incorporados após transformações simples, como
redimensionamento ou compressão, além de ser facilmente detectáveis por ataque estáticos.

Existem também, técnicas de esteganografia baseadas em algoritmos e transformações


conseguem tirar proveito de um dos principais problemas da inserção no canal LSB, que é a
compressão. Sendo embutido no domínio de transformação, os dados escondidos residem em
áreas onde os dados embutidos continuam inalterados após uma compressão, espalhadas
através da imagem inteira e fornecem melhor resistência contra processamento de sinal
(JULIO, BRAZIL, ALBUQUERQUE, 2007).

De forma geral, estas técnicas baseadas em algoritmos e transformações aplicam uma


determinada transformação em blocos de 8x8 pixels na imagem. Em cada bloco, devem ser
selecionados os coeficientes que são redundantes ou de menor importância Posteriormente,
estes coeficientes são utilizados para atribuir a mensagem a ser escondida em um processo em
que cada coeficiente é substituído por um valor pré-determinado para o bit 0 ou 1 (JULIO,
BRAZIL, ALBUQUERQUE, 2007, apud POPA, 1998).

Um dos fatores para a aplicação da esteganografia em imagens ser a mais popular é o


fato de ser um tipo de arquivo encontrado com extrema facilidade na Internet, dificultando
qualquer tipo de sistema de detecção em massa, o que implicaria em uma quantidade
gigantesca de arquivos para serem analisados. Outro fator é a quantidade de informação que
pode ser inserida em imagens ser bastante satisfatório. Mas também é possível aplicar a
esteganografia em arquivos de áudio e vídeo, ou em formatos mais simples como arquivos
HTML, XML e até mesmo em arquivos executáveis (CHEDDAD, et al, 2009).

A esteganografia em vídeo é muito similar à esteganografia em imagens, exceto pelo


fato de que as informações são escondidas em cada quadro do arquivo de vídeo. Da mesma
forma que nas imagens, quanto maior for a quantidade de informação a ser escondida no
39

vídeo, maior será a possibilidade do método esteganográfico ser detectado (JULIO, BRAZIL,
NEVES, ALBUQUERQUE, 2007).

A esteganografia em sinais de áudio é a uma das mais complexas pois o sistema


auditivo humano (SAH) é extremamente sensível, e qualquer alteração na frequência, ruído
ou perturbações no áudio pode ser detectada, porém, algumas distorções comuns do ambiente
são ignorados pelo SAH. Deste modo, os mecanismos de esteganografia sobre áudio utilizam
essa deficiência para incorporar a mensagem. Existem vários aspectos que devem ser
considerados para esse tipo de técnica, como a representação digital do sinal ou seja, como a
mensagem será incorporada no arquivo de áudio e o caminho de transmissão do sinal. Como
exemplo, após a decodificação do sinal é necessário converter o sinal digital para analógico
para que possa ser reproduzido nos alto-falantes, essa conversão pode resultar em ruídos
consequentemente a perda da mensagem (JULIO, BRAZIL, NEVES, ALBUQUERQUE,
2007).

Em arquivos HTML é utilizada a técnica simples de esteganografia que consiste em


inserir de forma ordenada espaços em branco no arquivo, pois o navegador os ignora. A
informação pode ser inserida ao alternar de forma sistemática, entre a caixa alta e caixa baixa
as tags, como por exemplo <br> <Br>. Outro modo, consiste em simplesmente inserir
informações fora das tags <html> e </html>, que apesar de ser simples de ser visualizada por
qualquer pessoa, o browser não exibirá esses dados (SHAHREZA, 2006).

Existe também a esteganografia utilizada diretamente no protocolo TCP, conforme


apresentado nas Figuras 12 e 13, a qual é chamada de esteganografia de retransmissão, onde
transmissor e receptor tem ciência que vão trocar pacotes com informações incorporadas. Seu
funcionamento básico é bastante e simples, e consiste basicamente na manipulação do
handshake (mecanismo de estabelecimento e finalização de conexão) do protocolo TCP.
Neste caso, o receptor não envia o pacote de confirmação que recebeu o pacote ACK
confirmando o recebimento do pacote recebido, gerando um erro de timeout pois prazo de
espera da resposta será excedido, forçando a retransmissão do pacote. É nessa retransmissão
que o transmissor envia o pacote com dados escondidos no cabeçalho do protocolo
(MAZURCZYK, SMOLARCZYK; SZCZYPIORSKI, 2009).
40

 
Figura 12 – Mecanismo de retransmissão por timeout genérico 
Adaptado de: Mazurczyk, Smolarczyk, Szczypiorski; 2009 
 
41

 
Figura 13 ‐ Esteganografia de retransmissão 
Adaptado de: Mazurczyk, Smolarczyk, Szczypiorski; 2009 

2.3.3 Algoritmos para Esteganografia em Imagens Digitais

Nesta seção será apresentado alguns algoritmos utilizados para esteganografia em


imagens digitais sendo eles o JPEG-Steg, Model-Based, Outguess, e Steghide.
O JPEG-JSteg também conhecido por somente JSteg foi criado por Derek Upham e é
o primeiro sistema esteganográfico para imagens no formato JPEG e utiliza o LSB para
incorporação da mensagem na imagem. O algoritmo não necessita de um segredo
compartilhado, como resultado qualquer um que conheça o sistema pode recuperar a
mensagem oculta pelo JSteg (PROVOS, HONEYMAN, 2003). Upham realizou uma série de
alterações para que o JSteg utilizasse a versão quatro do padrão JPEG essa versão modificada
foi chamada de JEPG-JSteg v4 ou JSegt v4 em quanto a versão original como JEPG-JSteg v1
ou JSteg v1.( CHEN, et al, 2012; PROVOS, HONEYMAN, 2003)
O Model-Based foi proposto por Phil Sallee como um modelo teórico com objetivo de
possuir alta capacidade de incorporação e evitar ataques estatísticos (CHEN, et al, 2012).
42

O algoritmo Outguess modifica o LSB dos coeficientes DCT, verificando


estatisticamente a imagem original, desta forma reduzindo possíveis ataques estatísticos
(PROVOS, HONEYMAN, 2003).
O Steghide também tem o objetivo de resistir a ataques estatísticos de primeira ordem.
Note-se que Model-Based e Outguess Steghide não excedem a capacidade máxima de
imcorporação da imagem de cobertura diferentemente dos métodos anteriores (CHEN, et al,
2012).

2.3.4 Técnicas de Detecção de Esteganografia em Imagens Digitais

Segundo Julio, Brazil, Neves, e Albuquerque(2007), os dois principais ataques que


uma imagem digital pode sofrer são o visual e estatístico.

O ataque visual consiste simplesmente na capacidade da visão humana em perceber


alterações e distúrbios na imagem, grande parte das técnicas atuais de esteganografia não é
vulnerável a esse tipo de ataque, entretanto, quanto maior a quantidade de informação
incorporada, maior é a degradação da imagem. E a principal falha em vários métodos de
esteganografia é o fato de que uma vez descoberta uma falha ou simplesmente descobrir como
o mecanismo de incorporação de mensagem funciona toda a técnica se torna inútil (JULIO,
BRAZIZ, ALBUQUERQUE, 2007).

A análise estatística, analisa as imagens por meio da aplicação de testes estatísticos a fim
de encontram anomalias em imagens. Tais testes utilizados são o coeficiente de chi quadrado,
análise de blockiness (distorção que torna a imagem “pixelada” em algumas áreas),
comparação de pixel dentre outras. A presença de ruído aumenta a dificuldade de um sistema
de detecção encontrar uma mensagem esteganografia e alguns casos é propositalmente
inserido (CHEN, et al, 2012).

A figura 14 mostra o histograma extraído à partir do coeficiente AC (resto dos


coeficientes utilizados para compressão utilizando a codificação de Huffman1) de 1000
imagens JPEG limpas (sem qualquer mensagem incorporada) selecionadas aleatoriamente, e a
figura 15 apresenta a escala ampliada do histograma das mesmas sem imagens após a

1
HUFFMAN, D. A. A Method for the construction of minimum-redundancy codes. In: PROCEEDINGS OF
THE I.R.E.,9, 1952, New York, Proceedings… New York: I.R.E., 1953, p. 1098-1101
43

incorporação de uma mensagem de 1,04 KB com diferentes algoritmos esteganográficos


(CHEN, et al, 2012; SILVA, 2008)

 
Figura 14 ‐ Histograma do coeficiente AC de 1000 imagens JPEG sem esteganografia 
Fonte: Chen, et al, 2012 
44

Figura 15 ‐ Histograma dos seguintes algoritmos esteganográficos (a) F5; (b) JPEG‐JSteg v1; (c) JPEG‐
JSteg v4; (d) Model‐Based v1.2; (e) Outguess v0.2; and (f) Steghide v0.5.1. 
Fonte : Chen, et al, 2012 

Como pode ser visto, as alterações feitas nos valores dos coeficientes dos histogramas
tanto do JPEG-JStegno v1 e JPEG-JStegno v4 são óbvias. Métodos de esteganografia sobre o
formato JPEG como o F5, Model-Based v1.2, OutGuess v0.2 e Steghide v0.5.1 mostrados na
figura 11 (a), (d), (e) e (f) manipulam os coeficientes propositalmente para aumentar a
dificuldade de uma análise estatística. Em cada um destes procedimentos experimentais as
alterações no tamanho dos arquivos foram de aproximadamente 0,1 KB, 0,2 KB, 0,3 KB, 0,4
KB, 0,5 KB, 1,0 KB, e 1,5 KB respectivamente (CHEN, et al, 2012).

É importante ressaltar que nos resultados apresentados por Chen et al (2012) o


atacante tinha posse tanto da imagem limpa quanto a com a mensagem incorporada, e que
com essas informações em mão o ataque se torna mais preciso sem correr o risco de um falso
positivo. Outro ponto importante é o fato de que sem o conhecimento do algoritmo utilizado
para incorporação da mensagem se torna impraticável a extração dos dados embutidos
(JULIO, BRAZIL, NEVES, ALBUQUERQUE, 2007).
45

2.3.5 Algoritmo F5

O algoritmo F5 foi proposto por Andreas Westfeld (2001) e seus principais benefícios
são:

 Alta capacidade de incorporação de mensagens: É possível incorporar uma mensagem de


aproximadamente 13% do tamanho do arquivo de cobertura, por exemplo, é possível
inserir uma mensagem de 15480 bytes em uma imagem de cobertura com 115685 bytes
de tamanho, ou seja 13% dos bytes que constituem o arquivo de uma imagem com uma
mensagem incorporada são os dados da mensagem.
 Resistente a ataques estáticos: Outros vários algoritmos esteganográficos inserem a
mensagem de forma sequencial na imagem, como apresentado na Figura 16, os tornando
suscetíveis a ataques estáticos. O algoritmo F5 utiliza uma stegano-chave e a partir dela
gera uma permutação aparentemente aleatória, como apresentado na Figura 17, o que
dificulta muito um ataque estatístico, pois viabiliza a criação de histogramas que apontam
a existência de uma mensagem incorporada na imagem. Deve se utilizar para extrair a
mensagem a mesma stegano-chave utilizada para incorporação.

 
Figura 16 ‐ As áreas em rosa mostra onde foram feitas alterações na imagem para incorporação da 
mensagem 
Fonte: Westfeld, 2001 
46

 
Figura 17 ‐ As áreas em rosa mostram onde foram feitas alterações para a incorporação da 
mensagem utilizando o algoritmo F5. 
Fonte: Westfeld, 2001 

 Utiliza o JPEG como cobertura e possui o código fonte disponível: A circulação de


imagens no formato JPEG é extremamente elevada na Internet, além do fato de que
vários tipos de dispositivos são capazes de criar imagens utilizando esse formato gerando
pouca desconfiança por ser um formato extremamente popular (CHEN, et al, 2012).
Westfeld disponibilizou o código fonte da implementação do algoritmo por ele criado o
que tornou possível esse projeto ser realizado.

A figura 18 mostra os passos utilizados para incorporação de dados pelo algoritmo F5.
O primeiro passo é a aplicação do DCT2 e a quantização, que são utilizados para comprimir a
imagem, a entrada da quantização é o fator de qualidade que será empregado na imagem,
sendo que quanto maior esse fator, menor será o arquivo resultante e por sua vez terá menor
qualidade gráfica (SILVA, 1998). Antes e após a incorporação da mensagem é utilizada a
permutação que fará a distribuição de onde será inserida a mensagem, segundo os números
gerados pelo pseudo-gerador de números aleatórios, que por sua vez utiliza a stegano-chave
como semente de aleatoriedade. Após isso é aplicado codificação de Huffman para compactar
o arquivo.

Mais informações em:


2
RIGOTTI, H. G. Codificação de imagem utilizando a transformada cosseno discreta. 2004. 85 f.
Dissertação (Mestrado em Ciência da Computação) – Departamento de Computação e Estatística, Universidade
Federal de Mato Grosso do Sul. Campo Grande, 2004
47

Figura 18 ‐ Sequencia de passos  do algoritmo F5 na incorporação de uma mensagem 
Fonte: Westfeld, 2001 
 

2.3.6 Biblioteca de Classe Java

Em 1991 a Sun Microsystems financiou um projeto de pesquisa interno que resultou


na linguagem Java e o anúncio formal da linguagem ocorreu em maio de 1995, hoje, a
linguagem Java pertence à Oracle Corporation que adquiriu a Sun em 2010 (DEITEL, 2010).
Apesar de a Oracle ser detentora da marca Java, o processo de especificação da linguagem é
aberto e realizado pelo Java Community Process instituído em 1998, o qual é um grupo
formado por centenas de pessoas, instituições e empresas que definem além das
especificações do Java, também sua implementação de referência e suítes de testes (Java
Community Process, 2013).

Um programa escrito em Java utiliza o paradigma orientado a objeto que consiste em


várias partes chamadas classes, que incluem os métodos que realizam tarefas e retornam
informações quando estas são concluídas. É possível que os desenvolvedores criem diversas
classes para compor seu software por eles desenvolvidos, mas no entanto a maioria tira
proveito das ricas coleções de classes existentes nas bibliotecas de classe Java, também
48

conhecida como Java API, que facilita a implementação de programas por já terem prontas
inúmeras implementações, que vão de estruturas de dados a componentes de interface gráfica.
Mas no entanto a linguagem Java não traz nenhuma biblioteca de classe que implementa um
método esteganográfico e este trabalho tem como objetivo colaborar em reduzir essa lacuna.

2.3.7 Licença LGPL

A Lesser General Public License (Licença Pública Geral Menor), conhecida


anteriormente como Library General Public License (Licença Geral Pública para
Bibliotecas), foi criada por Richard Matthew Stallman fundador da Free Software
Foundation3 e criador do projeto GNU (GNU's Not Unix) que tinha como objetivo criar um
sistema operacional livre compatível com o UNIX, o projeto GNU se baseia em quatro
liberdades (GNU Project, 2013):

 A liberdade de executar o programa, para qualquer propósito.(Liberdade nº 0)


 A liberdade de estudar como o programa funciona e adaptá-lo às suas necessidades
(liberdade nº 1). Acesso ao código-fonte é um pré-requisito para isso.
 A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo
(liberdade n º 2)
 A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos para
público, de modo que toda a comunidade se beneficie (liberdade 3). Acesso ao código-
fonte é um pré-requisito para isso.

A GNU GPL (General Public License) foi criada em 1989 e se baseia nessas quatro
liberdades, além de trazer informações legais e técnicas sobre o uso do código-fonte de um
software licenciado sob a GPL, mas ela possui algumas restrições no que diz respeito a
utilização de uma biblioteca licenciada utilizando a GPL em um software proprietário. Por
isso em 1991 foi criada a LGPL para licenciar bibliotecas, tornando possível a utilização de
uma biblioteca livre em um software proprietário sem infringir seu licenciamento.

3
Mais informações sobre a Free Software Foundation: http://www.fsf.og
49

2.4 Trabalhos Relacionados

Fredrich, Pevný, Kobodovský (2007) propuseram uma versão aperfeiçoada do


algoritmo F5, chamado nsF5, esse novo algoritmo foi comparado a vários algoritmos
esteganográficos aplicados em imagens JPEG, dentre eles o F5, para comprovar os ganhos
alcançados na taxa de incorporação e capacidade de tornar o conteúdo incorporado
indetectável.

Lou et al (2011) utilizaram um método para medir a razão de modificação dos


algoritmos F5 e nsF5 onde os resultados experimentais apresentaram-se superar os métodos
de esteganálise existentes contra o F5 e o nsF5.

Chen et al (2012) construíram um sistema de reconhecimento de padrões para detectar


anomalias em imagens JPEG para identificar conteúdo esteganografado por seis métodos
populares de esteganografia para o formato JPEG.

Liu et al (2013) analisaram o modo de incorporação de mensagem do algoritmo F5 e


sua variante nsF5 em imagens JPEG, afim de desenvolver técnicas de esteganálise com maior
precisão para esses algoritmos, utilizando a cadeias de Markov.

Este trabalho, se diferencia dos demais citados, por desenvolver uma biblioteca sob a
licença LGPL e utilizar o algoritmo F5, além de realizar um estudo de caso comparando com
a criptografia.
Capítulo

51

3 Metodologia

Nas seções deste capítulo é apresentado o processo de desenvolvimento deste trabalho,


o que inclui a descrição das funcionalidades da biblioteca Java que será desenvolvida, além
das aplicações que serão desenvolvidas como forma de estudo de caso de utilização da
referida biblioteca. Para isso, serão apresentados também os softwares e hardware utilizados
no desenvolvimento e o modo como foram realizados os testes comparativos entra a aplicação
utilizando um mecanismo de segurança criptográfico e uma com o uso da esteganografia.

3.1 Ambiente de Desenvolvimento

Para o desenvolvimento da biblioteca e das aplicações foi utilizada a linguagem Java,


pelo fato de ser uma linguagem de desenvolvimento orientada a objetos bastante popular no
mercado, além de ser de código aberto.

A IDE utilizada para auxiliar o desenvolvimento foi o NetBeans4, por se tratar de uma
IDE de código aberto e com vários recursos que facilitam o desenvolvimento.

A JDK utilizada foi a OpenJDK5, escolhida por se tratar também de uma


implementação de código aberto e principalmente por ser a JVM de referência desde a versão
7 da linguagem Java.

Será utilizado também, o sistema de versionamento GIT, escolhido por oferecer um


serviço gratuito de alta qualidade, e que permite que seja possível disponibilizar o código

4
Disponível para download em: https://netbeans.org/features/index.html
5
Disponível em: http://openjdk.java.net/projects/jdk7/
52

fonte da biblioteca em um repositório no GitHub6, que possui grande popularidade entre


desenvolvedores de aplicações e que é licenciado sob a GPL7.

Tabela 3 ‐ Ambiente de Desenvolvimento 
Ambiente de Desenvolvimento
Software Versão
NetBeans 7.4
OpenJDK 7
GIT 1.8.4.1

3.2 Desenvolvimento da biblioteca

A biblioteca foi desenvolvida a partir do código fonte do algoritmo F5 disponibilizado


por Westfeld8.

O algoritmo F5 foi escolhido por sua baixa vulnerabilidade a ataques visuais e


estatísticos, como é possível verificar com os dados apresentados por Chen et al (2012). A sua
segurança é aperfeiçoada por utilizar uma stego-chave para incorporação da mensagem,
tornando possível que várias aplicações sejam desenvolvidas utilizando este algoritmo sem
que haja a possibilidade de diferentes implementações serem capazes de extrair dados
incorporados por outras implementações do mesmo algoritmo.

A biblioteca possui o método de incorporação de um arquivo em uma imagem JPEG


ou BMP, sendo que os parâmetros para esse método serão a imagem de cobertura, a qual se
refere ao arquivo que será embutido; o caminho para onde será gerando a imagem com o
arquivo já embutido, chave para gerar aleatoriedade e a qualidade da imagem gerada como no
exemplo a seguir.

6
Repositório da biblioteca: https://github.com/ricardoborgesjr/JavaSteganoLibrary

7
Licença LGPL na integra está disponível em (inglês): http://www.gnu.org/licenses/lgpl-3.0.txt

8
Fontes da implementação do algoritmo disponível em: https://www2.htw-
dresden.de/~westfeld/publikationen/f5r11.zip
53

1. import stegano.f5.Embed;

2. public class Incorpora

3. {

4. public static void main(String[] args)

5. {

6. File imagem_cobertura = new File("/Caminho/para/a/imagem.jpg");

7. File arquivo = new File("/Caminho/para/o/arquivo.file");

8. File imagem_estenografada = new File("/Caminho/onde/sera/criada/a/imagem.jpg");

9. String chave = "s3nh4_5ecR3T4";

10. int qualidade = 80;

11. Embed.embed(imagem, arquivo, imagem_estenografada, chave, qualidade);

12. }

13 }

O método de extração do arquivo é responsável pela recuperação dos dados


escondidos na imagem, onde será necessário passar como parâmetros o caminho da imagem,
o caminho para onde será extraído o arquivo e a chave utilizada na incorporação. Abaixo
temos uma exemplificação do uso da biblioteca utilizando o método de extração.

1. import stegano.f5.Extract;

2. public class Extrai

3. {

4. public static void main(String[] args)

5. {

6. File imagem_estenografada = new File("/Caminho/da/imagem.jpg") ;

7. File arquivo = new File("/Caminho/onde/sera/criado/o/arquivo.file");

8. String chave = "s3nh4_5ecR3T4";

9. Extract.extract(imagem_estenografada, arquivo, chave);

10. }

11. }
54

3.3 Descrições das aplicações desenvolvidas

Foram desenvolvidas três aplicações na arquitetura cliente e servidor, que trocam


mensagens pela Internet utilizando os protocolos TCP/IP. O uso da Internet tem como
objetivo simular as condições de troca de pacotes mais próximas da realidade.

Das três aplicações desenvolvidas, uma aplicação transmite dados sem qualquer tipo
de mecanismo de segurança e outras duas utilizarão, respectivamente, criptografia e
esteganografia como métodos de segurança.

Em todas as aplicações cliente, a mensagem será transmitida e após a transmissão a


aplicação será encerrada. Já a aplicação servidor, assim que executada, ficará aguardando uma
conexão, e quando uma conexão for iniciada e a transmissão da mensagem for finalizada, o
software encerará sua execução.

O sistema criptográfico utilizado foi o AES com uma chave de 128 bits, e aplicação
utilizando a esteganografia foi implementada com o auxílio da biblioteca desenvolvida neste
trabalho.

3.3 Comparativo de Desempenho

Foram realizados testes de desempenho verificando o consumo de memória e


processamento entre a aplicação que utiliza criptografia e a que usa esteganografia com o
auxílio da ferramenta VisualVM, que permite uma visão detalhada sobre os recursos
consumidos na execução da aplicação.

Foram realizados experimentos em cifrar e embutir dados de 100 kilobytes (KB), 256
KB, 512 KB, 1 megabyte (MB) e 2 MB, e cada experimento é composto por dez execuções
consecutivas para a obtenção de dados mais confiáveis.

Os arquivos utilizados nos experimentos foram gerados contendo apenas sequencias


aleatórias de bytes. Para verificar se o arquivo extraído ou decifrado não havia sofrido algum
tipo de alteração após o processo de esteganografia e criptografia foi utilizada a ferramenta
md5sum. Para isso foi utilizado um computador com especificações descritas na tabela 4.
55

Tabela 4 ‐ Especificações de hardware e software utilizados 
Processador AMD Phenom II X6 1055T 2.8 GHz
Memória 6 GB
Sistema Operacional GNU/Linux 3.13 AMD64
JVM OpenJDK 7 AMD64

Para transmissão de dados pela internet foi utilizada uma conexão com velocidade de
2048 Kbps para download e 350 Kbps para upload.

Com os dados obtidos das análises foi elaborado um gráfico comparativo entre as duas
aplicações que adotam um mecanismo de segurança e a aplicação sem qualquer sistema de
segurança.

3.4 Descrição das imagens utilizadas pela esteganografia

Foram utilizadas imagens em escala de cinza para a incorporação dos dados utilizando
o F5. Esta escolha teve como objetivo gerar resultados mais uniformes, pois assim as imagens
teriam características semelhantes. Seria difícil conseguir a mesma uniformidade utilizando
imagens coloridas, pois a quantidade de variações nas imagens é maior, em especial no que
diz respeito a cromaticidade. Na tabela 4 encontra-se a relação de imagens utilizadas em cada
experimento assim como seu respectivo tamanho.

Tabela 5 ‐ relação as imagens utilizadas em cada experimento 
Tamanho do arquivo (kilobytes) Tamanho da imagem (kilobytes)
Experimento 1 100 6458
Experimento 2 256 8996
Experimento 3 512 18597
Experimento 4 1024 19200
Experimento 5 2048 31785
Capítulo

56

4 Resultados

Além da biblioteca de classes que implementa o algoritmo F5 que está disponível em


https://github.com/ricardoborgesjr/JavaSteganoLibrary juntamente com o código fonte e um
pequeno manual exemplificando seu uso.
Neste capítulo são apresentados e comparados os resultados obtidos nos testes
descritos no capítulo 3.

4.1 Desempenho Esteganografia

O processo de esteganografia utilizando a biblioteca desenvolvida se mostrou


funcional, pois em todos os experimentos os arquivos foram incorporados e extraídos sem
qualquer perda ou alteração da informação esteganografada.
Os detalhes individuais de cada experimento serão discutidos a seguir.

4.1.1 Experimento um

Nas execuções desse experimento a biblioteca obteve pouca variação no consumo de


memória entre as repetições. O gráfico da figura 19 mostra o consumo máximo de memória,
tanto a utilizada pela aplicação quanto a alocada pela JVM no processo de incorporação no
experimento um.
57

Figura 19 ‐ Consumo de memória na incorporação no experimento um 

O consumo de processador também se mostrou equilibrado na maioria das repetições


dos experimentos executados nessa fase.

Figura 20 ‐ Consumo de processador na incorporação do experimento um 

É possível notar variações como na terceira execução onde o consumo de memória


(Figura 19) é menor em relação as demais execuções da mesma forma que a décima execução
obteve maior consumo de processador (Figura 20) que os demais testes. Inicialmente se
concluiu que a causas dessas variações eram causadas pelo sistema operacional em função de
inúmeros fatores, porém, no experimento quatro foi possível verificar a causa dessas
variações e porque no processo de extração os resultados de cada execução eram mais
próximos uns dos outros. Na apresentação do experimento quatro serão fornecidos mais
detalhes sobre esse assunto.
A média de consumo de memória e processamento no processo de incorporação nessa
primeira coleta de dados foram respectivamente 459,1 megabytes (800,3 megabytes de heap)
e 55,48%.
58

As variações no consumo de recursos durante o processo de extração foi bem menor


em relação ao processo de incorporação e, diferentemente dos demais experimentos, o
experimento um foi o único no qual a quantidade de memória utilizada para extração não foi
significantemente menor que a incorporação.
As figuras 21 e 22 apresentam a quantidade utilizada de memória e processador para a
extração de informação da imagem.

 
Figura 21 ‐ Consumo de memória na extração do experimento um 

 
Figura 22 ‐ Consumo de processador na extração do experimento um 

A quantidade média de memória utilizada foi de 413,2 megabytes e 533,1 megabytes


de memória alocada e um consumo médio de 21,93% de processador.

4.1.2 Experimento dois

Assim como as execuções do experimento um, as execuções deste experimento


também obtiveram comportamento uniforme em todas as execuções, mas com maior consumo
59

de memória, como é possível verificar no gráfico da figura 23. Já em relação ao consumo de


processador, este foi menor que o apresentado no experimento anterior, causado pelas
variações na imagem, como é possível verificar no gráfico da figura 24, onde são
apresentados o uso de recursos no processo de incorporação.

 
Figura 23 ‐ Consumo de processador na incorporação do experimento dois 

 
Figura 24 ‐ Consumo de processador na incorporação do experimento dois 

Durante a extração foi verificado um menor consumo de recursos e menor variação na


utilização do mesmo em relação ao processo de embutir dados na imagem. Esse
comportamento foi verificado em todos os demais experimentos, exceto no primeiro como
descrito na seção 2.4.1.
O Gráfico da figura 25 mostra a quantia de memória utilizada na extração deste
experimento, já a figura 26 apresenta o gráfico do consumo de processamento.
60

 
Figura 25 ‐ Consumo de memória na extração do experimento dois 

 
Figura 26 ‐ Consumo de processador na extração do experimento dois 

O consumo médio de processamento e memória foi respectivamente de 21,57% e


468,7 megabytes de memória utilizada e 609 megabytes de memória alocada.

4.1.3 Experimento três

Nas execuções deste experimento também foi notado o aumento do consumo de


recursos. Outra característica identificada no experimento três foi o menor consumo de
recursos durante o processo de extração em comparação com a incorporação. Esta
característica pode ser vista nos gráficos das figuras 27 e 28, onde se encontra o consumo de
memória no processo de incorporação e extração respectivamente.
61

 
Figura 27 ‐ Consumo de memória na incorporação do experimento três 

 
Figura 28 ‐ Consumo de memória na extração do experimento três 

O gráfico da figura 29 possui informações relacionadas ao consumo de processador no


processo de incorporação, enquanto a figura 30 apresenta o gráfico relacionado ao consumo
de processador na extração.

 
Figura 29 ‐ Consumo de processador na incorporação do experimento três 
62

 
Figura 30 ‐ Consumo de processador na extração do experimento três 

Esse experimento apresentou como valor médio de consumo de memória 2250,5


megabytes e como média de memória alocada 2783 megabytes de memória alocada e 75,23%
de utilização de CPU.

4.1.4 Experimento quatro

Nesse experimento foi possível verificar o motivo das variações dos resultados obtidos
nos experimentos anteriores em relação ao consumo de processador quando dados eram
embutidos nas imagens.
Primeiramente será mostrado no gráfico da figura 31 o resultado da coleta de dados
em relação ao consumo de processador durante a incorporação do arquivo na imagem.

 
Figura 31 ‐ Consumo de processador na incorporação do experimento quatro 

As execuções cinco e seis obtiveram o maior e o segundo menor consumo de recursos


respectivamente, mas esse é o pico de utilização de processador durante toda a execução da
63

aplicação. Na figura 32 temos o gráfico de consumo de processador durante s execução cinco


e na figura 33 o gráfico referente a execução seis.

 
Figura 32 ‐ Consumo de processador durante a quinta execução no processo de incorporação do 
experimento quatro 

 
Figura 33 ‐ Consumo de processador durante a sexta execução no processo de incorporação do 
experimento quatro 

Fica visível que na maior parte do tempo ambas as aplicações possuem o mesmo
comportamento, porém, ocorre um alto consumo de processamento por volta dos 10 primeiros
segundos após o início do processo e após isso a utilização de CPU fica estabilizada, com
variações entre 16 e 18 por cento do processador.
Esse pico de processamento é causado pelo método getYCCArray na classe JpegInfo,
este método cria e preenche apartir da imagem de entrada três matrizes, Y (que contém a
64

valores da luminância), Cb (contendo valores que representam a crominâncias azul) e Cr


(que possui os valores que representam crominâncias vermelha), para minimizar as
chances do método grabPixels da classe PixelGrabber lançar um exceção é necessário pegar
alguns pixels a cada linha horizontal da imagem e processa-los, em algumas situações essa
solução causa esse overhead de memória.
Até então os gráficos gerados pelo VisualVM mostravam o pico de processamento
causado por esse método, porém, como as demais partes do algoritmo possuem um menor
consumo de recursos e também pelo fato que a quantidade de informação embutida e o
tamanho das imagens eram menores nos experimentos anteriores, não ficava clara essa
divisão.
Foi observado também que o consumo de memória no processo de incorporação
possuía as mesmas características do consumo de CPU, um pico de consumo com variações
entre as execuções e após isso a aplicação se comportou de maneira semelhante entre os
testes.
O gráfico apresentado na figura 34 mostra o consumo máximo de memória durante as
execuções de incorporação.

 
Figura 34 ‐ Consumo de memória na incorporação do experimento quatro 

Existe uma diferença de 457,7 megabytes entre o menor e o maior consumo, sendo
eles registrados nas execuções dois e dez respectivamente. Na figura 35 temos o gráfico de
consumo de memória durante a segunda execução nesse experimento. Enquanto a figura 36
possui o gráfico que mostra o consumo da décima execução, na área em azul de ambos os
gráficos temos a quantidade de memória utilizada enquanto a área laranja se refere a memória
alocada pela JVM.
65

 
Figura 35 ‐ Consumo de memória durante a segunda execução no processo de incorporação do 
exeperimento quatro 

 
Figura 36 ‐ Consumo de memória durante a décima execução no processo de incorporação do 
exeperimento quatro 

A extração por outro lado teve execução uniforme durante todas as execuções, nas
figuras 37 e 38 temos o gráfico de consumo de processador das execuções dois e três, sendo
possível notar que ambas obtiveram resultados semelhantes.
66

 
Figura 37 ‐ Consumo de memória durante a segunda execução no processo de extração do 
experimento quatro 

Figura 38 ‐ Consumo de memória durante a terceira execução no processo de extração do 
experimento quatro 

Fica visível que ocorreram apenas pequenas variações entre as duas execuções,
diferentemente do processo de incorporação onde as variações eram maiores. A seguir temos
a figura 39 com o gráfico da utilização de memória durante a extração em todas as execuções
realizadas neste experimento.
67

 
Figura 39 ‐ Consumo de memória no processo de extração no experimento quatro 

A média de consumo de memória nesse processo foi de 1961,9 megabytes utilizados e


2091,8 megabytes alocados.

Também foram pequenas as variações no que se diz respeito ao uso de processador


durante a extração. Este fato pode ser observado na figura 39 que representa o gráfico do uso
de CPU durante a segunda execução, enquanto a figura 40 representa a terceira execução.

 
Figura 40 ‐ Consumo de processador durante a segunda execução no processo de extração do 
experimento quatro 
68

 
Figura 41‐ Consumo de processador durante a terceira execução no processo de extração do 
experimento quatro 

Na figura 42 possui o gráfico com o consumo de processador de todas as execuções


realizadas neste experimento.

 
Figura 42 ‐ Consumo de processador no processo de extração no experimento quatro 

É possível verificar que a média de consumo de processador ficou em 44,22%.

4.1.5 Experimento cinco

O consumo de processador nesse experimento obteve resultados semelhantes ao

experimento quatro. A média de utilização de CPU foi de 88,8%, enquanto o experimento

anterior foi de 85,6%. O gráfico da figura 43 mostra o consumo de cada execução desse

experimento.
69

 
Figura 43 ‐ Consumo de processador no processo de incorporação no experimento cinco 

Por outro lado, o consumo de memória foi superior ao experimento quatro e também

esse foi o único experimento onde a quantidade de memória utilizada obteve média acima da

média da quantidade alocada pela JVM. As respectivas médias de consumo foram 2954,7

megabytes e 2929 megabytes, a figura 44 possui o gráfico com o consumo de memória das

execuções realizadas neste experimento.

 
Figura 44‐ Consumo de memória no processo de incorporação no experimento cinco 

Foi obtida uma média de 2859,3 megabytes de memória utilizada e 2929,0 megabytes

de heap como é mostrado no gráfico da figura 45 um média de 50,13% de utilização de CPU

no processo de extração como é possível verificar na figura 46.


70

Figura 45 ‐ Consumo de memória no processo de extração no experimento cinco 

Figura 46 ‐ Consumo de processador no processo de extração no experimento cinco 

4.2 Desempenho Criptografia

Os experimentos relacionados à criptografia obtiveram poucas diferenças. Em todos os


experimentos a quantidade de memória alocada foi de 93,5 megabytes. A seguir são
detalhados os resultados obtidos em cada experimento.

4.2.1 Experimento um

Este experimento obteve uma média de 2,69% de consumo de processador e uma


média de 11,2 megabytes de memória utilizada para o processo de cifragem. No processo de
decifragem, houve uma média de 2,5% de utilização de processador e média de 10,1
megabytes.
71

No gráfico apresentado na figura 47 é possível observar o consumo de memória do


processo de cifragem, já a figura 48 possui o gráfico com informações referentes ao consumo
de processador nesse mesmo processo.

  
Figura 47 ‐ Consumo de memória no processo de cifragem no experimento um 

 
Figura 48 ‐ Consumo de processador no processo de cifragem no experimento um 

A figura 49 ilustra o gráfico com o consumo de processador e o gráfico da figura 50

possui informações sobre consumo de memória, ambos do processo de decifragem.

Figura 49 ‐ Consumo de memória no processo de decifragem no experimento um 
72

 
Figura 50 ‐ Consumo de processador no processo de decifragem no experimento um 

4.2.2 Experimento dois

Este experimento obteve resultados semelhantes ao experimento anterior, com o


consumo de memória variando apenas 0,1 megabytes a mais que o experimento um.
Entretanto a média da utilização de processador foi 0,1% maior em relação ao experimento
anterior, ficando em 2,6%.
Os gráficos a seguir, apresentados nas figuras 51 e 52 são referentes ao consumo de
memória e processamento, respectivamente, no processo de cifragem de cada execução.

 
Figura 51 ‐ Consumo de memória no processo de cifragem no experimento dois 

 
Figura 52 ‐ Consumo de processador no processo de cifragem no experimento dois 
73

O consumo médio de memória no processo de decifragem foi de 10,9 megabytes e


3,3% de consumo médio de CPU o gráfico na figura 53 mostra os resultados obtidos
referentes ao consumo de memória e o gráfico 54 ao consumo de processador no processo de
decifragem nesse experimento.

Figura 53‐ Consumo de memória no processo de decifragem no experimento dois 

 
Figura 54‐ Consumo de processador no processo de decifragem no experimento dois 

4.2.3 Experimento três

O experimento três obteve uma média de 3% de utilização de CPU e 11 megabytes de

memória consumida na cifragem. Nas figuras 55 e 56 são apresentados os gráficos com o uso

de memória e processado deste experimento.


74

  
Figura 55 ‐ Consumo de memória no processo de cifragem no experimento três 

 
Figura 56 ‐ Consumo de processador no processo de cifragem no experimento três 

O processo de decifragem obteve a mesma média de consumo de processador, mas o


consumo de memória foi 0,6 megabytes maior que o processo de cifragem ficando em 11, 6
megabytes.
Os gráficos das figuras 57 e 58 são relativos ao consumo de memória e processador do
processo de decifragem.

 
Figura 57‐ Consumo de memória no processo de decifragem no experimento três 
75

 
Figura 58 ‐ Consumo de processador no processo de decifragem no experimento três 

4.2.4 Experimento quatro

A média de memória utilizada na cifragem nesse experimento foi a mesmo do


experimento anterior, ou seja, 11 megabytes. Já a quantidade de processador foi 0,1% maior,
ficando com uma média de 2,9%. Na figura 59 e 60 temos os gráficos do consumo de
memória e CPU respectivamente.

  
Figura 59 ‐ Consumo de memória no processo de cifragem no experimento quatro 

 
Figura 60 ‐ Consumo de processador no processo de cifragem no experimento quatro 
76

Esse experimento obteve uma média de 11 megabytes a mesma do processo de


decifragem e uma média de 3,1% de utilização do processador, os gráficos do consumo de
memória e processador estão nas figuras 61 e 62.

  
Figura 61 ‐ Consumo de memória no processo de decifragem no experimento quatro 

 
Figura 62 ‐ Consumo de processador no processo de decifragem no experimento quatro 

4.2.5 Experimento cinco

Este experimento obteve o maior consumo de processamento e memória tanto na


cifragem quanto na decifragem.
A média de memória utilizada na cifragem foi de 13,2 megabytes, o uso de CPU se
mostrou mais que o dobro dos experimentos anteriores com uma média de 6,2% na figura 63
temos o gráfico da quantidade de memória utilizada na cifragem, e na figura 64 temos o
gráfico do uso de CPU.
77

  
Figura 63 ‐ Consumo de memória no processo de cifragem no experimento cinco 

 
Figura 64 ‐ Consumo de processador no processo de cifragem no experimento cinco 

Por outro lado, a decifragem obteve resultados semelhantes aos experimentos


anteriores, com uma média de 12 megabytes de memória consumida e 3,8% de uso de
processador nos gráficos nas figuras 65 e 66 temos o consumo de memória e processador
respectivamente.

  
Figura 65 ‐ Consumo de memória no processo de decifragem no experimento cinco 
78

 
Figura 66 ‐ Consumo de procesador no processo de decifragem no experimento cinco 

O gráfico da figura 67 possui o gráfico comparando os valores médios de consumo de


memória o processo de incorporação e cifragem e o gráfico da figura 68 o consumo médio de
memória no processo de extração e decifragem.

 
Figura 67 ‐ Consumo médio de mémoria no incorporação e cifragem 
79

 
Figura 68 ‐ Consumo médio de mémoria no processo de extração e decifragem 

É importante ressaltar que essas são as médias somente da quantidade de memória


utilizada.
Nos gráficos das figuras 69 e 70 temos a média do consumo de CPU nos processos de
incorporação e cifragem e nos processos de extração e decifragem respectivamente.

Figura 69 ‐ Consumo médio de processador no processo de incorporação e cifragem 
80

Figura 70‐ Consumo médio de processador no processo de extração e decifragem 

4.3 Transmissão cliente-servidor

A tabela 5 possui qual foi o tamanho do arquivo resultante de cada experimento


utilizando a esteganografia, criptografia e sem qualquer tipo de mecanismo de segurança nas
aplicações de cliente e servidor.

Esteganografia Criptografia Sem Segurança


Experimento 1 1099 KB 101 KB 100 KB
Experimento 2 2426 KB 257 KB 256 KB
Experimento 3 4117 KB 513 KB 512 KB
Experimento 4 9317 KB 1024 KB 1024 KB
Experimento 5 17917 KB 2049 KB 2048 KB
Tabela 6 ‐ Tamanho os arquivos gerados por cada aplicação cliente 

Como pode ser visto as imagens com o arquivo embutido pela esteganografia são
maiores que o arquivo cifrado, e os arquivos cifrados por sua vez têm quase o mesmo
tamanho dos arquivos sem a utilização de quaisquer tipos de mecanismos de segurança.

Essas diferenças impactaram diretamente no tempo de transmissão, sendo as


aplicações que implementam a esteganografia levaram maior tempo para transmissão da
informação, enquanto a aplicação sem segurança e a que utilizava criptografia obtiveram
resultados muito próximos. Na tabela 6 são apresentados os resultados do tempo gasto por
cada aplicação no processo de transmissão dos dados.
81

Esteganografia Criptografia Sem Segurança


Experimento 1 25s 3s 2s
Experimento 2 54s 5s 6s
Experimento 3 1m 32s 10s 10s
Experimento 4 3m 29s 23s 20s
Experimento 5 6m 59s 45s 46s
Tabela 7 ‐ Tempo de transmissão em segundo das aplicações cliente‐servidor 
Capítulo

83

5 Conclusões

Com base na análise dos resultados obtidos nos experimentos, conclui-se que apesar
de a esteganografia também ser uma alternativa em relação à criptografia, ainda existe um
grande caminho a ser percorrido para que a técnica seja empregada de forma tão abrangente
como a criptografia.

O atual estágio da esteganografia mostra que sua aplicação em dispositivos com pouco
poder de processamento, como dispositivos móveis, pode se tornar inviável mesmo com os
grandes avanços que essa área vem sofrendo atualmente.

A transmissão em conexões de baixa velocidade ou armazenamento de grandes


quantidades de informação também fica impossibilitada com o uso da esteganografia.

A incorporação de grande quantidade de informação também é problemática não só


em relação ao alto consumo de recursos, mas também pelo fato de que são necessárias
imagens extremante grandes tornando inviável em muitos casos sua aplicação.

Entretanto, o uso da esteganografia como mecanismos para pequenas quantidades de


informação se mostra viável mesmo consumindo mais recursos que a criptografia, pois
considerando o poder de processamento dos computadores atuais, essa tarefa pode ser
realizada sem empecilhos.

Foi notado que após a alterações como redimensionamento, recorte, compactação e


filtros em uma imagem que contem informação estenografada essa informação é perdida desta
forma o F5 pode ser utilizado como mecanismo de autenticidade, certificando que
determinada imagem não sofreu nenhum tipo de manipulação.

Apesar de a esteganografia ser uma técnica antiga ela ainda não foi explorada em sua
totalidade na computação e por isso abre espaço para que novos estudos e técnicas sejam
84

desenvolvidas e aprimoradas, tornando a esteganografia uma técnica viável na prática, assim


como a criptografia.

5.1 Trabalho futuros

Em alguns trechos da biblioteca foi verificado que ela utiliza processamento de forma
paralela, mas por outro lado existem partes onde todo processamento é feito de forma
sequencial.
Projetos futuros podem se empenhar em tonar uma maior quantidade de código
executável de forma paralela.
Futuramente outros projetos podem se esforçar em tornar a aplicação do F5 possível
em outros formatos de imagens e arquivos, como por exemplo em vídeo e áudio, assim como
a análise de desempenho nesses formatos.
Uma outra abordagem é portar a biblioteca para utilização em GPU (Graphics
Processing Unit) que possuem um grande poder de processamento paralelo, podendo obter
resultados relevantes.
85

Referências

ADAMS, C. Replay Attack. In: TILBORG, H. C. A. van; JAJODIA, S. (Org.) Encyclopedia


of Cryptography and Security. Nava York: Springer, 2011. p. 1042 – 1043

CENTRO DE ATENDIMENTO A INCIDENTES DE SEGURANÇA. Estatísticas. Rede


Nacional de Ensino e Pesquisa, 2014. Disponível em: <http://www.rnp.br>. Acesso em .05
jul. 2014.

CENTRO DE ESTUDO, RESPOSTA E TRATAMENTO DE INCIDENTES NO BRASIL.


Estatísticas dos Incidentes Reportados ao CERT.br. CERT, 2014. Disponível em:
<http://www.cert.br/>. Acesso em 05 jul. 2014.

CHEDDAD, A., et al. Digital image steganography: Survey and analysis of current methods.
Signal Processing, Amsterdam, v. 90, n. 3, p. 727-752, Mar. 2010.

CHEN, C. L. P., et al. A pattern recognition system for JPEG steganography detection.
Optics Communications, Amsterdam, v. 285, n. 21-22, p. 4253-4261, Oct, 2012.

CACHIN, C. Digital Steganography. In: TILBORG, H. C. A. van; JAJODIA, S. (Org.)


Encyclopedia of Cryptography and Security. New York: Springer, 2011. p. 348-352.

COULL, S. E. Traffic analysis. In: TILBORG, H. C. A. van; JAJODIA, S. (Org.)


Encyclopedia of Cryptography and Security. New York: Springer, 2011. p. 1311 – 1313.

CUMMINS, J.; DISKIN, P.; LAU, S.; PARLETT, R. Steganography and digital
watermarking. In: Computer Security, 2004, 2004, Birmingham. Seminary... Birmingham,
2004: The University of Birmingham, 2004, p. 1 – 24.

DEITEL, H. M. , DEITEL, P . J. . Java - Como programar, 8 ed., São Paulo: Pearson, 2010.

DESMEDT, Y. Man-in-the-middle attack. In: TILBORG, H. C. A. van; JAJODIA, S. (Org.)


Encyclopedia of Cryptography and Security. New York: Springer, 2011. p. 169-160.

EL-EMAM, N. N.; Hiding a large amount of data with high security using steganography
Algorithm. Journal of Computer Science, New York, v. 3, n. 4, p. 223-232, 2007.
86

FRIDRICH, J.; PEVNÝ, T.; KODOVSKÝ, J. Statistically undetectable jpeg steganography:


dead ends challenges, and opportunities. In: Proceedings of the 9th workshop on
Multimedia & security, 9, 2007, Dallas, Proceedings…New York:ACM, 2007, p. 3-14

GNU PROJECT. What is Free Software?. The GNU operating system. 2013. Disponível
em: http://www.gnu.org. Acesso em: 02 nov. 2013.
Java Community Process. Overview. The Java Community Process. 2013. Disponível em:
http://www.jcp.org. Acesso em: 27 out. 2013.

JAVA COMMUNITY PROCESS. FAQ: What is the Java Community Process (JCP)?. JCP, 2014.
Disponível em: <https://www.jcp.org/en/introduction/faq#jcp>. Acesso em 05 jul. 2014.

JULIO, E. P.; BRAZIL, W. G.; ALBUQUERQUE, C. V. N. Esteganografia e suas aplicações.


In: Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais, 7,
2007, Rio de Janeiro, Simpósio … Rio de Janeiro: Universidade Federal Fluminense, 2007, p.
64-102.

KUROSE, J. F.; Ross, K. W. Redes de computadores e a Internet: Uma abordagem Top


Down. 5 ed. São Paulo: Pearson, 2010.

LIU, Y. et al. Steganalysis of F5-like steganography based on selection of joint distribution


features. In: Proceedings of the Fifth International Conference on Internet Multimedia
Computing and Service, 5, 2013, Huangshan, Proceedings… New York:AMC, 2013, p. 71-
75.

LOU, X. et al. On F5 steganography in images. The Computer Journal, Oxford, v. 55, n. 4,


p. 447-456, Apr. 2012.

PROVOS, N.; HONEYMAN, P. Hide and seek: an introduction to steganography. Security


& Privacy, IEEE, IEEE, v. 1, n. 3, p. 32-44, Jun. 2003.

MANOJ, I. V. S.; Cryptography and steganography. International Journal of Computer


Applications, Nova York, v. 1, n. 12, p. 63-68, 2010.

MAZURCZYK, M.; SMOLARCZYK, M.; SZCZYPIORSKI, K. Retransmission


Steganography Applied. In: International Conference on Multimedia Information
Networking and Security,2010, 2010, Nanjing, Conference… Nanjing: MINES, 2010, p.
846-850.

MORENO, D. E., PEREIRA, F. D.,CHIARAMONTE, R. B., Criptografia em software e


hardware. São Paulo: Novatec, 2005.
87

NAKAMURA, E. T.; GEUS, P. L. Segurança de redes em ambientes cooperativos. 1 ed.


São Paulo: Novatec, 2007.

SCHNEIDER, D. The state of network necurity. Network Security, San Francisco, v. 2012,
n. 2, p. 14-20, feb. 2012.

Silva, F. A. da. Compressão de imagens utilizando a transformada discreta do cosseno.


1998. 34 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) -
Faculdade de Informática de Presidente Prudente, Universidade do Oeste Paulista, Presidente
Prudente, 1998 .

SIMMONS, G. J. The prisoners’ problem and the subliminal channel. In: CHAUM D. (Org.)
Advances in cryptology: Proceedings of Crypto 83, Nova York: Spinger, 1984. p. 51 – 67

SHAHREZA, M. S. A New Method for Steganography in HTML Files. In: Elleithy, K.;
Sobh, T.; Mahmood, A.; Iskander, M.; Karim, M. (Org.). Proceedings of IETA 2005, TeNe
2005, EIAE 2005. Houten: Spinger Netherlands, 2006. p. 247 – 252.

STALLINGS, W. Criptografia e segurança de redes. 4 ed. São Paulo: Pearson, 2008.

TANENBAUM. A. S. Redes de computadores. 4 ed. São Paulo: Campus, 2003.

WESTFELD, A. F5 - A Steganographic Algorithm: High Capacity Despite Better


Steganalysis. In: International Workshop, 4, 2001, Pittsburgh, Proceedings… Pittsburgh:
Springer, 2001, p. 289-302.

Você também pode gostar