CAMOUFLAGED SECURITY SYSTEM : Protótipo de software...
Transcript of CAMOUFLAGED SECURITY SYSTEM : Protótipo de software...
CAMOUFLAGED SECURITY SYSTEM: Protótipo de
software que emprega técnicas de criptografia,
assinatura digital e esteganografia para
comunicação segura
Guilherme Martinez Floriano
Porto Alegre
2007
Guilherme Martinez Floriano
Camouflaged Security System: Protótipo de software que
emprega técnicas de criptografia, assinatura digital e
esteganografia para comunicação segura
Trabalho de Conclusão de Curso II
apresentado a Faculdade de Informática
do Centro Universitário Ritter dos Reis,
como requisito parcial à obtenção do titulo
de Bacharel em Sistemas de Informação.
Orientador: Prof. Vinicius Gadis Ribeiro
Porto Alegre
2007
Dedico esse Trabalho de Conclusão
de Curso aos meus avós, pelo
carrinho, incentivo, confiança, amor
e principalmente fé dedicados a
mim.
AGRADECIMENTOS
Agradeço primeiramente a Deus, principal responsável por tudo isso.
Aos meus avós, Cleusa e Juan, pelo incentivo e amor que sempre me
dedicaram, por um dia terem acreditado em mim e me proporcionado à chance
de realizar os meus sonhos.
Aos meus pais e minha irmã, Cleidi, Marco e Gabriela, pelo apoio,
incentivo, compreensão, amor e principalmente pelo companheirismo, sempre
estando ao meu lado quando precisei.
Á minha namorada, Camila, pela dedicação, amor e compreensão,
principalmente na minha ausência no decorrer desse trabalho.
Ao meu Orientador, Vinicius Gadis Ribeiro, pela paciência, dedicação,
incentivo e sabedoria que muito me auxiliou para conclusão deste Trabalho de
Conclusão de Curso.
A todos os mestres e amigos de verdade, que me ensinaram,
incentivaram e ajudaram, direta ou indiretamente, contribuindo assim, para que
eu pudesse crescer.
“O homem que remove uma
montanha começa carregando as
pequenas pedras”. (William Harrison
Faulkner)
RESUMO
Este Trabalho de Conclusão de Curso visa o estudo e implementação de um
software que empregue técnicas de segurança de sistemas buscando prover
uma comunicação segura. Com a utilização de diferentes mecanismos de
segurança em conjunto - a criptografia, assinaturas digitais e a esteganografia
– pretende-se fornecer um meio seguro e efetivo para troca de mensagens.
Para isso, utiliza-se o algoritmo de criptografia RSA para cifrar e decifrar e as
mensagens, o algoritmo SHA-1 para gerar as assinaturas digitais destas
mensagens e a técnica de esteganografia LSB para ocultar esta assinatura
digital em uma imagem. Com a utilização das técnicas de forma adequada
pretende-se garantir que os dados não serão corrompidos, dificultando ainda
mais o trabalho do atacante que tem de trabalhar sobre informações diferentes
resultantes de diferentes técnicas de segurança.
Palavras-Chaves: Segurança de Sistemas; Criptografia; Assinatura Digital;
Esteganografia.
ABSTRACT
This Job Completion of the course aims to study and implementation of a
software that employs techniques of seeking security systems provide a secure
communication. With the use of different mechanisms of security in set - the
cryptography, digital signatures and the steganography - it is intended to supply
a safe and effective way exchange of messages. For this, one uses the
algorithm of criptografia RSA to cipher and to decipher and the messages,
algorithm SHA-1 to generate the digital signatures of these messages and the
technique of steganography LSB to occult this digital signature in an image.
With the use of the techniques of adequate form it is intended to guarantee that
the data will not be corrupted, making it difficult still more the work of the
aggressor who has to work on resultant different information of different
techniques of security.
Key-Words: Security System; Criptography; Digital Signature; Steganography;
LISTA DE FIGURAS
FIGURA 1 - Cifragem e Decifragem..................................................................20
FIGURA 2 - Cifrando a mensagem ENSINO com a utilização de cifras de
transposição, embaralhando os caracteres da mensagem ..............................22
FIGURA 3 - Cifragem e Decifragem utilizando uma chave ..............................25
FIGURA 4 - Cifragem e Decifragem com duas chaves diferentes ...................30
FIGURA 5 - Análise do pixel que pode ser alterado .........................................39
FIGURA 6 - Processo de alteração do pixel escolhido anteriormente ..............40
FIGURA 7 - Imagem Para testar a Técnica LSB ..............................................41
FIGURA 8 - Impacto sofrido na imagem após empregar a técnica ..................43
FIGURA 9 - Software StegoBMP.......................................................................46
FIGURA 10 - Software DAMN Hash Calculator.................................................47
FIGURA 11 – Telas de duas ferramentas que utilizam o algoritmo RSA..........49
FIGURA 12 – Funcionalidade do processo de envio de mensagem.................52
FIGURA 13 – Funcionalidade do processo de recebimento de
mensagem.........................................................................................................54
FIGURA 14 - Diagrama de Caso de Uso da ferramenta ..................................56
FIGURA 15 - Diagrama de atividades dos casos de uso Gerar Chaves, Enviar
Mensagem e Criar Mensagem ..........................................................................59
FIGURA 16 - Diagrama de atividades dos casos de uso Gerar Assinatura,
Cifrar Mensagem e Ocultar Informação ............................................................60
FIGURA 17 - Diagrama de Atividades dos casos de uso Obter Informação da
Imagem, Decifrar Mensagem e Comparar Assinaturas ....................................61
FIGURA 18 – Interface gráfica da tela principal do sistema..............................64
FIGURA 19 – Interface gráfica da tela Gerar Chaves.......................................66
FIGURA 20 – Logs do processo da tela gerar chaves......................................67
FIGURA 21 – Tela de configuração do sistema na aba Internet.......................68
FIGURA 22 – Tela de configurações do sistema na aba Geral.........................69
FIGURA 23 – Módulo Emissor, carregando as chaves e informando a
mensagem.........................................................................................................70
FIGURA 24 – Módulo Emissor, cifrando a mensagem......................................71
FIGURA 25 – Módulo Emissor, gerando a assinatura digital da mensagem.....72
FIGURA 26 – Módulo Emissor, carregando a imagem que vai ser
esteganografada................................................................................................73
FIGURA 27 – Módulo Emissor, esteganografando a assinatura digital na
imagem..............................................................................................................74
FIGURA 28 – Módulo Emissor, Logs do processo de ocultação da assinatura
na imagem.........................................................................................................75
FIGURA 29 – Módulo Emissor, enviando a mensagem por email....................77
FIGURA 30 – Módulo Receptor, carregando as chaves no sistema.................78
FIGURA 31 – Módulo Receptor, decifrando a mensagem recebida..................79
FIGURA 32 – Módulo Receptor, gerando assinatura digital da mensagem
decifrada............................................................................................................80
FIGURA 33 – Módulo Receptor, carregando a imagem recebida.....................81
FIGURA 34 – Módulo Receptor, buscando a assinatura digital oculta na
imagem..............................................................................................................82
FIGURA 35 – Módulo Receptor, mensagem apresentada se as informações
forem corrompidas.............................................................................................83
FIGURA 36 – Módulo Receptor, mensagem apresentada se as informações
estiverem corretas.............................................................................................84
FIGURA 37 – Módulo Receptor, logs do processo de recebimento de
mensagem.........................................................................................................85
LISTA DE QUADROS
QUADRO 1 - Representação da informação.....................................................41
LISTA DE TABELAS
TABELA 1 - Mapa de bits dos valores originais do RGB...................................42
TABELA 2 - Mapa de bits dos valores alterados do RGB.................................42
TABELA 3 - Elementos principais de um Caso de Uso.....................................55
TABELA 4 - Elementos principais de um diagrama de atividades.....................59
TABELA 5 - Representação da implementação da técnica LSB mostrando
todos os processos realizados para ocultação da informação em uma
imagem..............................................................................................................95
LISTA DE ABREVIATURAS E SIGLAS
AES – Advanced Encryption Standart
DES – Data Encryption Standard
DH – Diffie e Hellman
ID – Identificação do Usuário
LSB – Least Significant Bit
MD5 – Message Digest 5
MIT – Massachusetts Institute of Technology
NBC – National Bureau of Standards
NIST – National Institute of Standards and Technology
NSA – National Security Agency
RAD – Rapid Application Development
RGB – Red, Green, Blue
RSA – Rivest Shamir Adleman
SHA – Secure Hash Algorithm
UML – Unified Modeling Language
SUMÁRIO
LISTA DE IMAGENS...........................................................................................07
LISTA DE QUADROS........................................................................................09
LISTA DE TABELAS.........................................................................................10
LISTA DE ABREVIATURAS E SIGLAS............................................................11
1 INTRODUÇÃO ...............................................................................................14
1.1 Objetivos ....................................................................................................14
1.2 Estrutura .....................................................................................................15
2 SEGURANÇA DE SISTEMAS .......................................................................16
2.1 Definições e Conceitos .............................................................................18
2.2 Criptografia ................................................................................................19
2.2.1 Serviços Básicos ......................................................................................22
2.2.2 Criptanálise ...............................................................................................23
2.2.3 Criptografia Simétrica ...............................................................................25
2.2.4 Criptografia Assimétrica ...........................................................................28
2.3 Assinatura Digital .....................................................................................32
2.3.1 Função Hash ............................................................................................33
2.4 Esteganografia ..........................................................................................36
2.4.1 Imagens Digitais .......................................................................................37
2.4.2 Least Significant Bit – LSB .......................................................................38
3 ESTUDO DE CASOS ....................................................................................45
3.1 StegoBMP...................................................................................................45
3.2 DAMN Hash Calculator 1.5.1.....................................................................47
3.3 criptografia RSA.........................................................................................48
4. CAMOUFLAGED SECURITY SYSTEM........................................................50
4.1 Especificação e requisitos........................................................................50
4.1.2 Funcionalidade do protótipo .....................................................................51
4.2 Modelagem do protótipo ..........................................................................55
4.2.1 Casos de Uso ..........................................................................................55
4.2.2 Diagrama de atividades ...........................................................................58
4.3 Desenvolvimento ......................................................................................61
4.3.1 Técnicas e Ferramentas Utilizadas ..........................................................62
4.3.2 Interface Gráfica.......................................................................................63
4.3.3 Ferramentas auxiliares.............................................................................65
4.3.4 Módulo Emissor.........................................................................................70
4.3.5 Módulo Receptor.......................................................................................77
5 CONSIDERAÇÕES FINAIS ...........................................................................86
REFERÊNCIAS ................................................................................................88
ANEXO A – Processo completo de ocultação da informação exemplificada
na sessão 2.4.1 ................................................................................................90
ANEXO B – Algoritmos utilizados para realizar o processo de ocultação
da assinatura digital na imagem....................................................................96
ANEXO C – Algoritmos utilizados para realizar o processo de busca da
assinatura digital oculta na mensagem.........................................................98
14
1. INTRODUÇÃO
Neste capítulo são apresentadas as motivações, os objetivos e a
estrutura deste Trabalho de Conclusão de Curso.
1.1 Objetivos
Com o passar dos anos, a necessidade de segurança teve um alto
índice de crescimento, empresas e organizações perceberam a necessidade
de expandir seus negócios para as redes computacionais, que cada vez mais
aproximam e agilizam as pessoas e os processos.
Assim, tornou-se extremamente necessária a criação de novos e
eficientes meios de realizar essa comunicação de forma segura. Podendo
garantir a privacidade e autenticidade do conteúdo das mensagens, a
confiabilidade na comunicação, a garantia dos envolvidos na mesma e a
integridade da mensagem.
Com esses conceitos garantidos, as organizações podem realizar a
transmissão de dados de uma forma segura, agilizando seus processos e
gerando lucratividade.
Motivado nisso, este Trabalho de Conclusão de Curso teve como
objetivo o estudo de técnicas de criptografia, assinatura digital e
esteganografia, pretendendo-se prover, através da implementação destas
técnicas de segurança de sistemas, um meio seguro para troca de informações
que necessitam de segurança.
Com a implementação do algoritmo de criptografia RSA, para cifrar e
decifrar as mensagens a serem enviadas, o algoritmo de hash SHA-1, para
gerar uma assinatura digital da mensagem, e por fim, o algoritmo de
esteganografia LSB, para ocultar essa assinatura digital em uma imagem
digital.
15
O principal objetivo da implementação destes algoritmos é dificultar o
trabalho do atacante, que terá de trabalhar sobre duas informações - a
mensagem cifrada e a imagem com a assinatura digital -, que foram
empregadas a diferentes técnicas de segurança - Criptografia de chave
pública, assinatura digital e esteganografia.
1.2 Estrutura
O presente Trabalho de Conclusão de Curso esta subdividido em cinco
capítulos. O presente capitulo apresentou os objetivos e a estrutura do
trabalho. No segundo capítulo, são apresentados os conceitos importantes de
segurança de sistemas. Este é subdividido em quatro sub-capítulos: conceitos
importantes para entendimentos futuros do trabalho, conceitos de criptografia,
conceitos de assinatura digital e os conceitos de esteganografia.
No terceiro capítulo, é apresentado o estudo de casos das técnicas,
sendo apresentado três softwares que fazem o uso das técnicas de segurança
de sistemas implementados neste trabalho.
No quarto capítulo, são apresentados a modelagem, passos, processos
e dificuldades enfrentadas para conclusão deste Trabalho de Conclusão de
Curso, mostrando as funcionalidades do protótipo a ser desenvolvido e como
foi realizado o processo para alcançar os objetivos pretendidos.
E por fim, o quinto capítulo apresenta as considerações finais deste
trabalho, explanando os resultados alcançados e as dificuldades enfrentadas
para conclusão deste Trabalho de Conclusão de Curso.
16
2. SEGURANÇA DE SISTEMAS
Neste capitulo, serão tratados os conceitos principais de segurança de
sistemas, o porquê das necessidades de segurança e como as proteger
adequadamente.
Atualmente, as redes de computadores vêm crescendo de forma
considerável; empresas estão se integrando cada vez mais nesta área para
conduzir seus negócios de forma mais ágil e lucrativa. Com base nisso, surge a
necessidade de melhores mecanismos para garantir a segurança das
transações de informações confidenciais - sendo muitas destas informações
essenciais para a empresa -, não podendo estar expostas.
Segundo BURNETT e PAINE (2002, p.10), podem-se associar estes
conceitos da seguinte maneira:
No mundo fático, a segurança é um conceito simples: se tivermos trancas fortes e sistemas de alarmes que os ladrões não possam ameaçar em roubar nossos valores, estamos seguros; se fizermos um contrato qualquer que seja e as duas partes o assinarem é garantido que ele tem validade, não podendo ser quebrado. No mundo virtual é relativamente parecido, sendo fortemente baseado em diversos conceitos, sendo os principais a privacidade, a integridade, a autenticidade e por fim o não-repúdio.
A privacidade visa garantir que seus arquivos ou documentos digitais
não serão lidos por nenhuma outra pessoa que não a que você autorize; a
integridade é um mecanismo que informa quando algo foi alterado;
autenticidade é a garantia de que determinada pessoa realmente é quem diz
ser e o não repúdio - muitas vezes também chamado de irretratabilidade -, é a
garantia de que determinada pessoa realmente participou de determinado
processo. Segundo BURNETT e PAINE (2002, p.10), “uma associação no
mundo fático se refere ao tabelião do cartório que reconhece uma assinatura
em um contrato, garantindo que aquela pessoa realmente participou da
transação”.
Atualmente, existem diversos tipos de ataques à segurança que visam
obter informações não autorizadas, desde senhas e dados pessoais até
segredos de negócios das grandes organizações. “Um ataque à segurança é
17
qualquer ação que comprometa a segurança da informação” (SCHNEIER,
1996, p. 27).
Segundo STALLINGS (2005, p. 35-37), SCHNEIER (1996, p. 27), estes
ataques são classificados em quatro categorias, sendo elas:
• Interceptação, que é um ataque passivo, e tem por funcionalidade a
obtenção de informações sigilosas por uma entidade não autorizada;
• Interrupção, que por sua vez é um ataque ativo, e visa à destruição de
um componente ativo na informação, tornando-a indisponível;
• Fabricação, que também é um ataque ativo e visa à inserção de objetos
falsificados na informação por uma entidade não autorizada; e
• Modificação, que também é um ataque ativo que consiste na obtenção
dos dados sigilosos por parte de uma entidade não autorizada e a
falsificação dos componentes ativos da mensagem.
Para os dados permanecerem seguros, é extremamente necessário
adicionar proteções extras, que normalmente o sistema operacional não
oferece.
As proteções predefinidas no mesmo podem ser suficientes em
determinados casos, mas não em todos. Conforme cita BURNETT e PAINE
(2002, p. 8), “Se ninguém jamais tentar invadir ou roubar os dados, ou se o
invasor não souber evitar os mecanismos padrões simples você está seguro”;
mas sabe-se, que atualmente, os invasores têm habilidade e recursos
suficientes para quebrar a segurança básica de um sistema.
Em razão disto, é necessário que os dados realmente importantes sejam
protegidos, para não correr o risco de serem roubados; assim, deve-se
adicionar outros mecanismos de segurança.
Decorrente dessa demanda de segurança, há diversos mecanismos de
segurança implementados, que empregam diferentes técnicas de segurança da
informação hoje no mercado. Mecanismo de segurança, segundo JASCONE
(2003, p.17), “são técnicas, procedimentos e algoritmos projetados para
detectar, prever ou descobrir um ataque à segurança”.
Os mecanismos de segurança mais conhecidos e utilizados atualmente
são a criptografia e a esteganografia, que visam, cada uma da sua forma,
18
fornecer a devida segurança aos dados, provendo a esses um meio
relativamente seguro para comunicação digital podendo suportar ataques de
pessoas não autorizadas.
2.1 Definições e Conceitos
Para que se compreendam corretamente os assuntos tratados
futuramente, é necessário conhecer alguns conceitos importantes e
fundamentais. São eles:
• Chave Secreta: É a informação secreta escolhida pelo usuário para
encriptar e decriptar a mensagem necessária. Conforme citam
BURNETT e PAINE (2002, p. 16), “a chave secreta funciona da mesma
maneira que uma chave convencional”, ela é utilizada em uma
fechadura, que seria para nós o algoritmo de criptografia, e protegerá as
informações, somente com a chave certa o usuário poderá proteger e ter
acesso às mesmas.
• Tabela de chaves: Segundo BURNETT e PAINE (2002, p.31),
“Praticamente todas as cifras simétricas utilizam a chave para construir
uma tabela de chaves, que normalmente é um array pseudoaleatório
com um tamanho e um formato específico”. Utiliza-se uma tabela de
chaves em função dos algoritmos necessitarem de uma chave de
mesmo tamanho e, caso queira utilizar chaves com diferentes tamanhos,
pode-se usar essa tabela para solucionar esse problema. Assim,
segundo BURNETT e PAINE (2002, p. 31), “constrói-se uma tabela de
chaves (que seja maior do que o maior tamanho possível de chave)”. A
utilização de uma tabela de chaves tem como vantagem que “mesmo
com uma chave ruim é possível criar uma boa tabela de chaves”, cita
BURNETT e PAINE (2002, p. 32).
• Atalhos: Conforme citam BURNETT e PAINE (2002, p. 78), “para todos
os algoritmos de chave pública, há técnicas que os quebrarão mais
19
rapidamente que com força bruta”. Os atalhos são estas técnicas
utilizadas pelo criptanalista para quebrarem a informação indevidamente
adquirida.
• Número Primo: Um número primo, ou primo, é um número que só pode
ser igualmente divisível por 1 e por ele mesmo; por exemplo, 3, 5, 7, 13
e 17 são primos.
• Documento Eletrônico: Segundo CASTRO (2001), pode-se definir um
documento eletrônico como:
“A representação de um fato concretizado por meio de um computador e armazenado em formato específico (organização singular de bits e bytes), capaz de ser traduzido ou apreendido pelos sentidos mediante o emprego de programa (software) apropriado”.
• RESUMO DE MENSAGENS OU CÓDIGO HASH: Segundo BURNETT
e PAINE (2002, p. 121), um resumo de mensagem ou hash “é o resultado
de um mecanismo que recebe uma entrada e mescla a entrada para
produzir uma saída pseudo-aleatória de largura fixa”.
2.2 Criptografia
Do Grego kryptós, "escondido", e gráphein, "escrever”, a criptografia é o
estudo e aplicação de técnicas que tem por objetivo transformar uma
informação original e legível para outra completamente ilegível, que a torna
difícil de ser lida por alguém não autorizado. Sua interpretação só pode ser
feita caso seja conhecida sua "chave secreta". (SCHNEIER, 1996, p. 1).
Conforme citam BURNETT e PAINE (2002, p. 11), a criptografia tem
como funcionalidade “a capacidade de conversão de dados legíveis em algo
sem sentido, com a capacidade de recuperar os dados originais a partir desses
dados sem sentido”. Para tornar isso possível é utilizado um cryptographic
algorithm, que é “uma função matemática utilizada para cifrar e decifrar uma
mensagem” cita SCHNEIER (1996, p. 2).
20
Técnicas de criptografia são as mais utilizadas para prover um meio
efetivo de proteção contra ataques, estejam armazenadas em disco ou sendo
transmitidas pelas redes computacionais.
A criptografia fornece a pessoas devidamente autorizadas, a
determinados processos, serviços básicos de: autenticidade, confidencialidade,
integridade e não repúdio para os dados.
A criptografia tem como funcionalidade a alteração de uma mensagem
original para outra cifrada. Para conseguir isso, a mensagem deve passar por
um processo de cifragem, que consiste basicamente no emprego da
mensagem a um mecanismo que, através de uma chave “específica”, cifre a
mesma. Ou seja, após a mensagem ser empregada ao algoritmo de
criptografia com esta chave secreta a mesma será totalmente alterada ficando
completamente ilegível. E um processo contrário, que é a decifragem onde,
novamente, através da chave específica, pode-se converter os dados cifrados
para a mensagem original.
A Figura 1 exemplifica a funcionalidade da criptografia:
FIGURA 1 - Cifragem e Decifragem (traduzido de SCHNEIER, 1996, p. 1).
Com intuitos históricos, de exemplificar técnicas de criptografia utilizadas
antigamente, pode-se comentar sobre as cifras de substituição e cifras de
transposição.
Segundo SILVA (1998), o funcionamento das cifra de substituição
consiste basicamente em “trocar os bits, caracteres ou blocos de caracteres
por outros”, ou seja, troca-se um caractere por outro seguindo uma tabela de
substituição. Por exemplo, se na tabela de substituição é indicado que deve-se
alterar os caracteres em cinco posições, a consoante B, após ser cifrada, irá
assumir o valor da consoante G.
As técnicas de substituição são o tipo de cifragem mais simples,
conhecido e fácil de ser quebrada. É necessário somente analisar a freqüência
21
com que aparecem os caracteres e ir comparando com a freqüência dos
caracteres em determinado idioma. Por exemplo, em português, o caractere
que mais vezes aparece em textos é a vogal E; então, se a mensagem a ser
analisada for em português, provavelmente o caractere que aparecer mais
vezes no texto cifrado é a letra E, e assim realiza-se uma análise sobre toda a
mensagem.
O exemplo mais conhecido da utilização de cifras de substituição é a
Cifra de César ou Código de César. Criado pelo Imperador Julio César com o
objetivo de possibilitar uma comunicação de forma sigilosa com seus generais
passando informações militares. A técnica consiste em alterar a posição dos
caracteres em três posições à frente, ou seja, a vogal A se transformaria na
consoante D após ser cifrada.
As cifras de transposição ou cifras de permutação, por sua vez,
consistem, segundo SILVA (1998), “em reorganizar a ordem dos bits,
caracteres ou bloco de caracteres”, ou seja, consistem em trocar as posições
dos caracteres no texto. Como nas cifras de substituição é importante definir
uma ordem para realizar a troca das posições.
Por exemplo, se pegar um texto com 20 caracteres, dividem-se estes
caracteres em um vetor de 20 posições, define-se uma ordem para realizar a
transposição, de tal forma que todos os caracteres mudem de posição, ou seja,
define-se que a posição um do vetor trocará de lugar com a posição 10, a
posição dois com a posição 15, e assim por diante, até que toda a mensagem
tenha trocado de posição.
Outro exemplo básico da utilização de transposição é, simplesmente,
pegar uma palavra e embaralhar a posição dos caracteres, conforme observa-
se na Figura 2.
22
FIGURA 2 - Cifrando a mensagem ENSINO com a utilização de cifras de transposição,
embaralhando os caracteres da mensagem.
Atualmente, existem dois tipos de criptografia: simétrica e assimétrica.
A criptografia simétrica utiliza uma única chave no processo de
criptografia, e esta chave deve ser mantida em segredo.
A criptografia assimétrica utiliza duas chaves, matematicamente
relacionadas, sendo uma delas para encriptar outra para decriptar. Uma das
chaves é mantida em segredo, e a outra é divulgada.
A principal diferença encontrada nas duas técnicas é com relação as
chaves utilizadas. A criptografia simétrica utiliza somente uma chave para
realizar o processo de cifragem e decifragem da mensagem e a assimétrica
utiliza duas chaves, uma pública e outra privada, sendo uma utilizada para
cifrar e a outra para decifrar a mensagem.
Assim, observa-se que a criptografia assimétrica soluciona o problema
de distribuição de chaves e facilita a comunicação segura entre quaisquer
pessoas. Mas na criptografia simétrica, o processo de cifragem e decifragem é
extremamente mais rápido do que com a assimétrica.
2.2.1 Serviços básicos
É necessário que alguns serviços básicos sejam assegurados para que
a criptografia realmente seja um meio efetivo para proteção dos dados, são
eles:
23
• Autenticidade: Assegura a validade da transmissão, da mensagem e
das entidades envolvidas. Conforme BURNETT e PAINE (2002, p. 10),
“a autenticidade pode ser comparada à identificação de usuário - ID -
requerido para retirar dinheiro de uma conta corrente”.
• Confidencialidade: Restringe o acesso à informação apenas às
pessoas autorizadas, tornando, assim, o documento protegido. A
confidencialidade seria a garantia de privacidade da comunicação.
• Integridade: Tem como objetivo a garantia da não alteração dos dados,
ou seja, garantia de que a mensagem recebida é exatamente igual à
mensagem enviada, e não sofreu nenhuma alteração. Conforme
BURNETT e PAINE (2002, p. 10), “A integridade é um mecanismo que
informa se algo foi alterado, assim como um alarme da ferramenta”.
• Não-Repúdio: É a garantia de que determinada pessoa que participou
de determinada operação realmente participou, não podendo negar a
propriedade de tal ato. “Um remetente não pode negar mais tarde que
enviou determinada mensagem ou executou determinada ação”,
(SCHNEIER, 1996, p. 2).
2.2.2 Criptanálise
“A criptanálise é a parte da criptografia que estuda as técnicas para
obter o texto original a partir do texto cifrado” (SCHNEIER, 1996, p. 5). Ou seja,
a criptanálise é o ramo da ciência criptografia que estuda formas de decodificar
uma mensagem sem saber a sua chave secreta. Ela é responsável por estudar
como se pode quebrar o código da mensagem, ou ainda, como minimizar o
esforço para descobri-la.
Então, no momento de desenvolver um sistema de criptografia –
criptosistema – é com a criptanálise que devemos nos preocupar, porque se
alguém quiser atacar o sistema, com a utilização da criptanálise pode ter
sucesso.
24
Segundo SCHNEIER (1996, p. 5-6), atualmente existem quatro tipos
gerais de ataques criptoanalíticos; todos eles consideram que o criptanalista
tenha o conhecimento completo do algoritmo de criptografia utilizado, sendo
eles:
• Ataque sobre mensagens cifradas: o criptanalista tem diversas
mensagens cifradas anteriormente pelo mesmo algoritmo de
encriptação. Ele tem o trabalho recuperar os textos originais das
mensagens possíveis para, assim, poder deduzir a chave ou chaves
utilizadas para cifrar as mensagens, com a finalidade de poder decifrar
futuras mensagens cifradas com as mesmas chaves.
• Ataque sobre mensagens originais: o criptanalista tem acesso não
somente as mensagens cifradas como acima, mas também às
mensagens originais das mesmas. Seu trabalho é deduzir a chave
secreta utilizada para realizar a criptografia nestas mensagens para,
com ela, poder vir a decifrar novas mensagens que venham a ser
cifradas com esta chave.
• Ataque escolhendo blocos das mensagens originais: o criptanalista
tem acesso às mensagens originais e cifradas, como já visto, mas pode
escolher as mensagens originais na qual começará cifrando. Este tipo
de ataque tem vantagens com relação ao anterior, pois o criptanalista
pode escolher os blocos específicos da mensagem a ser cifrada, sendo
os blocos escolhidos os que poderão render mais informações sobre a
chave que está sendo utilizada para, mais uma vez, deduzir a chave
utilizada e poder decifrar outras mensagens que possam vir a ser
cifradas com esta chave.
• Ataque adaptável escolhendo os blocos das mensagens originais:
este é um exemplo especial de ataque escolhendo os blocos da
mensagem original: o criptanalista não somente escolhe a mensagem a
ser cifrada, mas também pode modificar a sua escolha, baseando-se
nos resultados obtidos de cifragens anteriores em um ataque de escolha
de blocos, ou seja, o criptanalista pode escolher um bloco menor da
mensagem original e então escolher outros blocos baseados em
encriptações precedentes.
25
Este último tipo de ataque leva vantagem quanto ao anterior em função
de que, no anterior, o criptanalista pode escolher somente um grande bloco
para cifrar e, neste último, pode escolher um bloco menor e escolher outros
blocos, que possam vir a render informações relevantes para obtenção da
chave baseada em resultados anteriores.
O criptanalista deve levar em consideração fatores de complexidade de
uma criptanálise, ou seja, devem levar em consideração recursos de tempo,
memória e dados necessários para realizar a criptanálise.
A complexidade do tempo consiste no número de operações que devem
ser executadas para realizar a criptanálise, a complexidade da memória é a
quantidade necessária de armazenamento requerida para executar o ataque, e
por fim, a complexidade de dados, que é a quantidade de plaintexts
(mensagens originais) e mensagens cifradas utilizadas para realizar a
criptanálise.
2.2.3 Criptografia Simétrica
Conforme BURNETT e PAINE (2002, p. 11), “Nessa abordagem, um
algoritmo utiliza uma chave para converter as informações naquilo que se
parece com bits aleatórios e utiliza a mesma chave para recuperar os dados
originais”.
A Figura 3 ilustra o funcionamento de um algoritmo de criptografia
simétrico:
FIGURA 3 - Cifragem e Decifragem utilizando uma chave (Adaptado de SCHNEIER, 1996, p.
6).
26
Se Alice quiser enviar uma mensagem para Bob, ela deverá empregar a
mensagem que deseja enviar a um algoritmo e alimentá-lo com uma chave
secreta. Assim, a informação vai ser encriptada e um atacante não pode
visualizá-la; ela envia a mensagem para Bob e ele executa o processo reverso:
emprega a mensagem cifrada ao algoritmo e o alimenta com a mesma chave
secreta para poder decriptá-la.
A criptografia de chave simétrica até pode manter seguros seus dados,
mas se precisar compartilhar com outras pessoas, é inevitável que você
compartilhe a chave secreta também. Portanto, é extremamente necessário
que se guarde e/ou transmita essa chave de forma segura, pois se um dos dois
não armazenar de forma segura esta chave ou se a distribuição da mesma não
for realizada de forma segura, ela pode ser roubada por um atacante, e
utilizada para interceptar a mensagem ou até mesmo falsificar novas
mensagens.
Existem dois tipos de algoritmos de criptografia simétrica, a cifragem de
blocos que opera sobre blocos de dados e cifragens de fluxo que operam
utilizando a técnica de criptografia de enchimento de uma única vez.
Conhece-se varias implementações de algoritmos simétricos, podendo
citar como exemplos a cifra de César, cifras de transposição, algoritmo DES
(Data Endrypition Standart), AES (Advanced Encryption Standard), 3DES
dentre outros, sendo abaixo apresentando alguns dados históricos e conceitos
básicos de dois algoritmos simétricos, o DES e o AES.
a) Algoritmo DES (Data Encryption Standart)
O algoritmo LUCIFER foi criado em 1970 por Horst Feistel, que
trabalhava no Thomas J. Watson Laboratory da IBM, e apresentado para a
NBC - National Bureau of Standards - decorrente de uma solicitação pública da
mesma por algoritmos de criptografia.
Após ser feita avaliação sobre o algoritmo pela NSA (National Security
Agency), em 1977, o algoritmo LUCIFER foi adotado pelo governo americano
após algumas modificações sob a denominação de DES e foi rapidamente
adotado.
27
O DES trabalha sobre cifragem de blocos, dividindo a mensagem em
blocos de 64 bits usando chaves de encriptação de 64 bits, sendo 56 bits reais
e os últimos 8 utilizados para verificação da chave, empregando a informação a
operações de XOR com essa chave para obter a mensagem cifrada.
Atualmente, já existe variação para o algoritmo DES denominada Triple
DES. Ela utiliza o DES em três ciframentos sucessivos, podendo empregar
uma versão com duas ou com três chaves diferentes (112 ou 168 bits). É mais
seguro que o DES, porém não é aplicável por ser muito lento, não podendo ser
adotado como um algoritmo padrão.
b) Algoritmo AES (Advanced Encryption Standar)
No ano de 2000, o NIST (National Institute of Standards and
Technology) selecionou o algoritmo AES dentre 15 propostos. Este foi
anunciado como um novo padrão de criptografia de chave secreta e tinha como
objetivo a substituição do DES em função de suas chaves estarem se tornando
pequenas comparadas à necessidade.
O Advanced Encryption Standard (AES), baseado no algoritmo Rijndael
é o algoritmo padrão de criptografia simétrica utilizado hoje em dia pelo
governo americano. Foi criado por Rijmen e Daemen, por isso o nome Rijndael,
da junção e abreviatura dos nomes de seus criadores.
O algoritmo AES funciona da seguinte maneira conforme cita JASCONE
(2003, p. 31).
É um cifrador de substituição e permutação. Ele cifra um texto claro de 128 bits em um texto cifrado de 128 bits, usando para isso n fases, onde cada resultado intermediário entre as transformações é chamado de “estado”. O número de fases n definido para a cifra depende do tamanho de bloco e do tamanho de chave que estão sendo utilizados. O menor número de fases é 10 (correspondendo ao tamanho de bloco de 128 bits e tamanho de chave de 128 bits), sendo este limite válido para todos os tamanhos de blocos e de chaves. Cada fase consiste na aplicação seguida das transformações de: substituição (ByteSub), deslocamento de linhas (ShiftRow), mesclagem de colunas (MixColumn) e adição de chaves (AddRoundKey).
28
2.2.4 Criptografia Assimétrica
Decorrente dos problemas com a distribuição das chaves, que é a
necessidade de distribuir a mesma chave secreta entre as pessoas envolvidas
no processo, tornou-se necessário a criação de ferramentas que pudessem
fazer a distribuição das chaves de forma segura. Então, foram criados os
algoritmos de criptografia de chave assimétrica ou de chave pública, como
também são conhecidos.
Em meados da década de 70, o aluno Whitfield Diffie, graduado pela
Stanford University, e o professor Martin Hellman investigaram a criptografia
em geral e o problema de distribuição de chaves. Eles criaram o primeiro
esquema de chave pública, no qual duas pessoas poderiam trocar informações
utilizando meios de comunicação públicos, através de chaves secretas
compartilhadas, ou seja, eles poderiam criar uma chave secreta trocando
informações públicas. Este esquema ficou conhecido como DH (Diffie,
Hellman), decorrente das iniciais dos nomes de seus criadores. Em 1976, Diffie
e Hellman publicaram seus resultados no artigo “New Directions in
Cryptography”, descrevendo a idéia de criptografia de chave pública e seus
resultados até o momento.
“O DH resolve o problema de distribuição de chaves, mas não é o
algoritmo final. Ele não é efetivo para a criptografia, mas ainda é muito utilizado
até hoje”, cita BURNETT e PAINE (2002, p. 79).
Conforme SCHNEIER (1996, p. 31), pode-se definir a técnica da
seguinte maneira: “A criptografia assimétrica utiliza duas diferentes chaves,
uma pública e outra privada, de modo que é computacionalmente complexo e
normalmente impraticável a dedução da chave privada por meio da chave
pública”.
Assim, qualquer pessoa pode cifrar a mensagem com a chave pública,
mas jamais pode decifrá-la com a mesma chave, sendo necessário à chave
privada para decifrá-la, que, teoricamente, só a pessoa autorizada, dona da
chave pública informada e utilizada para cifrar a mensagem, a terá.
29
É relevante salientar que as duas chaves (pública e privada) detêm uma
relação matemática entre elas. A geração das chaves (problema direto) é
rápida e eficiente, já o problema reverso (a partir da chave pública definir a
chave privada), é oneroso e proibitivo.
Segundo SCHNEIER (1996, p. 31), pode-se definir o processo
encriptação da seguinte maneira:
“Matematicamente, o processo de encriptação é baseado nas funções de sentido único (one-Ways), a encriptação é o sentido fácil, sendo necessário somente à chave publica para realizar esta tarefa, e qualquer pessoa poderá realizá-la”.
A decifração é a parte complexa da técnica de chave assimétrica,
conforme SCHNEIER (1996, p. 31), “Uma pessoa com um computador Cray
(super computador) poderia levar milhares de anos para conseguir decifrar a
mensagem sem a chave privada, com a chave o processo é tão simples quanto
a encriptação”.
Ainda, segundo SCHNEIER (1996, p. 32), a técnica de criptografia de
chave pública funciona basicamente da seguinte maneira:
• Alice deseja enviar uma mensagem de forma segura para Bob;
• Alice e Bob concordam com um sistema de criptografia de chave pública
em comum;
• Bob fornece para a Alice sua chave pública, podendo enviá-la ou
disponibilizá-la em qualquer meio de comunicação, não sendo
necessário um meio seguro;
• Alice cifra a mensagem que ela deseja enviar com a chave pública do
Bob e a envia para Bob;
• Bob ao receber a mensagem, a decifra utilizando sua chave privada e
obtém a mensagem original enviada por Alice.
30
A Figura 4 exemplifica o funcionamento básico da técnica:
FIGURA 4 - Cifragem e Decifragem com duas chaves diferentes (Adaptado de SCHNEIER,
1996, p.4).
a) Algoritmo RSA (Rivest Shamir Adleman)
“Sabe-se que o algoritmo DH não é um algoritmo final, ele soluciona o
problema da distribuição das chaves, mas ainda deixa falhas quando se trata
da criptografia propriamente dita”, BURNETT e PAINE (2002, p. 79).
Após a publicação das descobertas de Diffie e Hellman sobre os
algoritmos assimétricos, diversos pesquisadores desenvolveram vários outros
algoritmos de chave pública.
Este ponto do trabalho trata do algoritmo RSA (Rivest Shamir Adleman),
“que é o mais comumente utilizado para solucionar o problema de distribuição
de chaves e criptografia nos dias de hoje”, segundo BURNETT e PAINE (2002,
p. 79).
O algoritmo RSA foi desenvolvido por Ron Rivest e mais dois colegas –
Adi Shamir e Len Adleman –, todos do MIT – Massachusetts Institute of
Technology – eles estavam intrigados com a idéia de Diffie e Hellman sobre a
distribuição de chaves e criptografia de chave pública e decidiram criar o
algoritmo final. Conforme BURNETT e PAINE (2002, p. 79), “o trio desenvolveu
um algoritmo que de fato poderia criptografar os dados com segurança, este
algoritmo tornou-se conhecido como RSA, as iniciais dos seus criadores, sendo
publicado em 1978”. O sistema consiste basicamente em gerar duas chaves,
uma pública e outra privada, sendo que “a chave pública normalmente é
utilizada para cifrar a mensagem, e a privada é geralmente utilizada para
31
decifrar”, cita ABREU (2004). Segundo MARGI (2000, p. 44), “o algoritmo
apóia-se na dificuldade de fatorar números primos extensos para determinar as
chaves pública e privada”.
Conforme BURNETT e PAINE (2002, p. 83), “o tamanho da chave mais
comumente utilizada no algoritmo RSA é de 1024 bits”, sendo dois números
primos de 512 bits cada, explica ABREU (2004), “em algumas aplicações,
como por exemplo, aplicações bancárias, que exigem o máximo de segurança
a chave chega a ser de 2048 bits”, acrescenta.
Para gerar as chaves utilizadas para cifrar e decifrar as mensagens é
necessário realizar as seguintes tarefas:
• Escolhem-se dois números primo grandes (p e q), normalmente com
mais de 100 dígitos;
• Gera-se um número n através do produto dos números escolhidos
anteriormente (n = p * q);
• Gera-se um número z através do produto de z = (p-1)*(q-1);
• Escolhe-se um número e que seja primo relativo à z;
• Calcula-se d, tal que (e * d) mod z = 1, ou d = 1/e mod z;
Assim, obtêm-se as chaves públicas e privadas, sendo {e,n} a chave
pública e {d,m} a chave privada.
Então, após gerar as chaves pública e privada, pode-se realizar o
processo de cifragem e decifragem. Para cifrar a mensagem é necessário
empregar a mensagem original (M) sobre a seguinte função obtendo a
mensagem cifrada (C):
C = M e mod n
E, para obter novamente o texto original tendo o texto cifrado, faz-se a
seguinte operação:
D = C d mod n
32
“Para que as chaves sejam realmente seguras, recomenda-se que os
valores de p e q sejam mantidos em segredo ou até mesmo destruídos”, cita
Abreu (2004).
2.3 Assinatura Digital
De uma forma básica, pode-se obter uma assinatura digital da seguinte
maneira:
Caso Alice deseja enviar uma mensagem pra Bob, e garantir que foi ela
mesma que enviou. Ela pode criptografar a mensagem com sua chave privada
e enviar a mensagem cifrada para Bob. Bob então decifra esta mensagem com
a chave pública de Alice. Se a mensagem for decifrada corretamente, então, é
garantida que foi realmente Alice quem enviou a mensagem.
Neste caso, pode não haver a garantia de que somente Bob vai ler a
mensagem, pois se os dados foram cifrados com a chave privada de Alice,
qualquer pessoa que tiver a chave pública pode decifrá-la, mas existe a
garantia de que foi realmente Alice quem enviou a mensagem.
A utilização da assinatura digital dessa forma “serve para assegurar o
conteúdo de uma mensagem e quem a enviou” (BURNETT e PAINE 2002, p.
117). Assim, conclui-se que qualquer informação que seja cifrada com uma
chave privada, somente pode ser decifrada com a respectiva chave pública,
garantindo que foi realmente a pessoa quem a enviou.
Existe outra forma de gerar uma assinatura digital, que consiste,
basicamente, na criação de um código de tamanho fixo resultante de uma
mensagem original, de modo que a pessoa ou entidade que receber uma
mensagem contendo este código possa verificar se o remetente é mesmo
quem diz ser e identificar se a mensagem possa ter sido modificada.
As assinaturas digitais fazem o uso de chaves públicas e privadas,
utilizadas por técnicas de criptografia assimétrica e utilizam conceitos
conhecidos como função hashing, que consistem na obtenção de um valor de
tamanho fixo (Assinatura) chamado de valor hash ou resumo da mensagem,
33
decorrente da aplicação da mensagem a ser enviada juntamente com a chave
a um algoritmo hashing, que irá gerar a assinatura da mensagem.
O funcionamento da assinatura digital ocorre da seguinte forma: é
necessário que o usuário tenha um documento eletrônico e a chave pública do
destinatário (um usuário pode ser tanto uma pessoa quanto uma instituição
qualquer). Com a chave pública, a mensagem original e o algoritmo de função
hash, gera-se a assinatura digital da mensagem. Através de programas
apropriados, o documento original é então criptografado de acordo com a
chave pública.
O receptor usa então sua chave privada correspondente (que é
exclusiva dele) para decodificar o arquivo. Ao decodificar o arquivo ele
emprega novamente a função hash e gerar a assinatura digital da mensagem
recebida. Assim, o receptor confere o valor obtido com o valor da assinatura
digital original enviada junto com a mensagem. Caso tenha ocorrido alguma
alteração ou visualização na transmissão da mensagem, o valor hash calculado
pelo receptor vai ser completamente diferente do enviado junto à mensagem
calculado pelo remetente, invalidando o arquivo recebido, pois, se algo for
alterado, fica evidente, levando em consideração que a assinatura gerada da
mensagem recebida é completamente diferente da enviada junto com a
mensagem.
2.3.1 Função Hash
Segundo MARGI (2000, p. 45), pode-se definir uma função hash da
seguinte maneira:
Uma função hash é um mecanismo utilizado para verificar a integridade de uma mensagem. São funções unidirecionais, possuem saídas de tamanho fixo independente do valor de entrada e devem ser resistentes a colisão, ou seja, mais de uma entrada pode gerar a mesma saída, mas dada uma saída deve ser impossível encontrar duas entradas que sejam capazes de gerá-las.
34
A função hash é a operação aplicada ao documento enviado que permite
obter um resumo da mensagem dos dados originais, conforme tratado acima.
Esse resumo é de tamanho fixo, independente do tamanho da entrada. Uma
alteração nos dados de origem gera um valor de hash diferente e uma
modificação no hash dá lugar a um documento diferente do original.
Para obter-se um código hash ou um resumo de mensagem, é
necessário o emprego de um algoritmo de hash. Existem diversas
implementações de hash atualmente, que resultam em diferentes tamanhos e
formas de resumo de mensagem, sendo duas dessas implementações
apresentadas a seguir:
a) Algoritmo MD5
O algoritmo MD5 foi criado por Rom Rivest, estando esse algoritmo na
sua 5ª geração. BURNETT e PAINE (2002, p. 126), abordam alguns pontos
importantes sobre o mesmo, como se pode observar.
O MD5 foi o mais bem sucedido, mostrou-se muito mais forte e rápido do que o MD2, tornando-se o algoritmo dominante e ainda é comumente utilizado. Até 2002, o algoritmo MD5 ainda não havia sido quebrado e ninguém encontrou colisões; em vez disso, algumas partes internas do algoritmo são vulneráveis. Se faltasse um ou dois componentes no algoritmo, ele seria quebrado. Mas, visto que esses componentes estão ai, o algoritmo sobrevive.
O MD5 gera um resumo de mensagem de 16 bytes, como o MD2, mas,
com o passar dos anos, pesquisas mostraram que ele tinha diversas fraquezas
em potenciais.
b) Algoritmo SHA – 1 (Secure Hash Algorithm)
“O algoritmo SHA-1 é muito parecido com o MD5, porém suas parte
internas são mais fortes e ele produz um resumo mais longo, de 160 bits
comparado aos 128 bits do MD5”, cita BURNETT e PAINE (2002, p. 126).
35
Segundo SCHNEIER (1996, p. 442), “o algoritmo SHA-1 recebe uma
mensagem com tamanho máximo menor que 264 bits e gera um resumo de
mensagem de 160 bits, trabalhando sobre blocos de mensagem de 512 bits”.
Já foi desenvolvido quatro variantes do SHA-1, elas diferenciam-se
quanto a capacidades de saída, tendo seus valores aumentados, e são
conhecidas como: SHA-224, SHA-256, SHA-384, e SHA-512, muitas vezes
também chamadas de SHA-2.
Como o SHA-1 trabalha sobre blocos de mensagem de 512 bits,
primeiramente é necessário ajustar o tamanho dos bits da mensagem, sendo
necessário que o tamanho da mensagem seja múltiplo de 512. Após ajustar a
mensagem acrescenta-se a ela um bloco de 64 bits contendo o tamanho
original da mensagem. São inicializadas as cinco variáveis de 32 bits
responsáveis por armazenar os resultados intermediários e finais denominadas
de A, B, C, D e E.
Então, é executado o laço principal do algoritmo, que segundo
SCHNEIER (1996, p. 443) “consiste em um laço com quatro ciclos de 20
operações em cada”.
Após o processamento de todos os blocos de informação, o algoritmo irá
gerar, ao final da ultima operação, o resumo da mensagem contendo 160 bits.
O SHA-1 já sobreviveu a análises criptográficas e é altamente
recomendado pela comunidade de criptografia. Porém, em 13 de fevereiro de
2005, três pesquisadores chineses, publicaram o artigo Collision Search
Attacks on SHA1 (Ataques da busca de colisão em SHA1) afirmando que
haviam quebrado o algoritmo.
A divulgação da quebra do algoritmo foi feita por um dos maiores nomes
da criptografia atual, Bruce Schneier, que publicou um artigo em seu site, no
dia 15 de fevereiro de 2005, divulgando a pesquisa dos chineses Xiaoyun
Wang, Yiqun Lisa Yin e Hongbo Yu da universidade chinesa Shandong.
Segundo SCHNEIER (2005) “o ataque utilizado para quebrar o algoritmo foi
baseado em ataques utilizados anteriormente contra SHA-0 e ao próprio SHA-
1”.
36
2.4 Esteganografia
A Esteganografia deriva do grego, onde estegano é “esconder” ou
“mascarar” e grafia, “escrita”. Logo, esteganografia é a arte da escrita para
comunicações ocultas.
Segundo SCHNEIER (1996, p. 9), “a esteganografia tem como finalidade
esconder mensagens secretas em outras mensagens, de forma que a
mensagem secreta esteja bem escondida que o invasor não consiga identificá-
la”.
É importante que seja bem definida a diferença entre esteganografia e
criptografia: enquanto a esteganografia tem o objetivo de esconder a existência
da informação, a criptografia oculta o significado da informação, tornando-a
ilegível. Algumas vezes são empregadas conjuntamente.
A esteganografia é uma ciência que vem sendo estudada e utilizada
pelos povos há muitos anos. Como exemplo de técnicas desenvolvidas, pode-
se citar a utilização de tintas invisíveis, micro pontos, arranjos de caracteres,
assinaturas digitais, comunicação por espalhamento de espectro, entre outros.
Uma das aplicações que utilizam as técnicas de esteganografia é para a
implementação de mecanismos de verificação de direitos autorais em imagens
e mídias de áudio e vídeo.
Conforme cita BUSTAMANTE (2006), “a esteganografia está presente
em nossas vidas mais do que se pode imaginar, se pegar qualquer cédula
monetária ou documento de identificação, pode-se encontrar diversas
evidencias das técnicas”.
Segundo STALLINGS (2005, p. 53), “A esteganografia tem alguns
problemas quando comparada com a criptografia, pois requer muito
processamento para esconder pequenos pedaços de informações”. Mas a
esteganografia também tem algumas vantagens, como por exemplo:
Se uma pessoa tem algo a perder caso sua comunicação secreta seja descoberta, ela pode empregar técnicas de esteganografia, pois a criptografia rotula o tráfego das informações importantes, podendo,
37
assim, identificar o remetente ou o receptor como alguém que tem algo a esconder (STALLINGS, 2005, p. 53).
Para poder garantir ainda mais a segurança das informações
transmitidas, podemos empregar técnicas de esteganografia juntamente com
técnicas de criptografia. Assim, pode-se criptografar uma mensagem que deve
ser secreta e empregá-la a técnicas de esteganografia que escondam esta
mensagem em uma imagem, dificultando o trabalho de quem deseja atacar
esta informação.
2.4.1 Imagens Digitais
Uma imagem digital de padrão Bitmap consiste, de uma forma básica,
em um conjunto de pontos dispostos de forma matricial contendo números que
representam as cores de cada posição da matriz. Esta matriz é chamada de
bitmap ou “Mapa de Bits”, um mapa de bits são dados de blocos de pixels
(Picture Elements) organizados de determinada maneira, sendo os pixels cada
posição / ponto dessa matriz.
O Mapa de bits possui um determinado número de linhas (A) e um
determinado Número de colunas (B) tendo o tamanho total da imagem o
produdo de A e B.
A aplicação de técnicas de esteganografia em imagens digitais foi uma
grande evolução para e, atualmente, tem grande utilização. Como exemplo da
utilização desta técnica, pode-se citar a LSB (Least Significant Bit), algoritmos
de transformações e algoritmos de filtragem e mascaramento. - Cada uma
delas trabalhando com determinadas informações da imagem.
38
2.4.2 Least Significant Bit - LSB
Dentre as diversas técnicas de aplicação da esteganografia, a forma
mais utilizada atualmente, e desenvolvida futuramente neste trabalho, é a
técnica denominada de LSB (least Significant Bit).
Conforme JASCONE (2003, p. 38), “a técnica consiste em utilizar o bit
menos significativo de cada pixel (ou de cada cor) da imagem, para ocultar a
mensagem”. Para a utilização desta técnica é necessário imagens que
possuem qualidade de 24 bits, pois são imagens grandes que utilizam três
bytes para a representação de cada pixel.
Pode-se exemplificar a técnica da seguinte maneira segundo JASCONE
(2003, p. 39):
“Para esconder uma informação em uma imagem de 24 bits, onde cada pixel possui três bytes, utilizando o método de inserção do último bit significativo, podem-se armazenar três bits em cada pixel, utilizando um bit de cada byte desse pixel, ou seja, cada byte da informação a ser escondida irá ocupar oito bytes da imagem. Por exemplo, em uma imagem com resolução de 1024 x 768 (786.432 pixel), que possui um tamanho real de 2.359.296 Kb (cada pixel ocupa três bytes), pode-se armazenar uma informação de 294.912 Kb (oito bytes da imagem para armazenar um byte do texto”).
Com a imagem possuindo três bytes por pixel, cada um deles representa
a quantidade de vermelho, azul e verde de cada pixel, contendo oito bits em
cada um desses bytes, levando em consideração que cada um desses bits
pode assumir valores de 0 a 255, cada pixel terá 256 valores para representar
a quantidade da associação de cada uma das três cores que tem um pixel.
Se apenas o bit menos significativo de cada byte for alterado, o valor
desse byte irá variar somente em uma unidade. Assim sendo, essa alteração
fica praticamente impossível de ser identificada a olho nu.
Por exemplo, usa-se uma imagem qualquer e seleciona-se uma parte
dela. Aplicando zoom sobre a parte selecionada, pode-se ver definida a
posição de cada pixel. Selecionando um pixel qualquer da imagem, pode-se
observar que os valores referentes à quantidade de vermelho, verde e azul,
valores que juntos definem a cor do pixel, são respectivamente 148, 148 e 148.
39
Então neste pixel poderemos esconder uma informação de três bits, um em
cada bit menos significativo dos valores do RGB - Red, Green e Blue -,
conforme ilustra a Figura 5.
FIGURA 5 - Analise do pixel que pode ser alterado
Continuando o exemplo, se a informação a ser escondida na mensagem
for o número 7, que é representado de forma binária como 111, pode-se
esteganografá-la em um pixel. Assim, alteram-se os bits menos significativos
do pixel, que originalmente eram 000, para 111. Obtêm-se os valores do RGB
variando em uma unidade, passando de 148 para 149 em cada um dos
valores. Na Figura 6, observa-se que a tonalidade do pixel alterado é
praticamente a mesma, não se notando a alteração a olho nu.
40
FIGURA 6 - Processo de alteração do pixel escolhido anteriormente
Para que seja possível observar a aplicação desta técnica e verificar o
impacto sofrido na imagem após o processo, foi utilizada uma imagem no
formato Bitmap com dimensões de 420 x 300 pixel. Foi selecionada uma parte
qualquer da imagem que caiba a informação a ser escondida, como se pode
observar na Figura 7.
41
FIGURA 7 - Imagem para testar a Técnica LSB
Seguindo, será esteganografada a mensagem “testando a tecnica lsb”.
Para realizar esse processo é necessário obter os valores referentes a cada
caractere da informação, sendo eles apresentadas no Quatro 1.
QUADRO 1 - Representação da informação.
Para esteganografar essa mensagem é necessário a utilização de 132
bits ou 44 pixels da área selecionada, lembrando que serão utilizados somente
os bits menos significativos, ou seja, os últimos bits de cada byte da imagem.
42
A região selecionada da imagem original tem os valores do RGB
referentes a cada pixel representado de forma matricial no Tabela 1, sendo a
parte azul os campos que serão utilizados para realizar a operação.
TABELA 1 - Mapa de bits dos valores originais do RGB.
É necessário que estes valores sejam convertidos para serem
representados de forma binária e assim, possa-se empregar a técnica nos bits
menos significativos. O processo de conversão dos bits completo pode ser
observado no ANEXO A, que apresenta todos os passos necessários para
executar essa tarefa.
Após ser empregada a técnica na região selecionada da imagem,
obtém-se a matriz da região alterada demonstrada no Tabela 2.
TABELA 2 - Mapa de bits dos valores Alterados do RGB.
Assim, pode-se verificar visualmente o impacto que sofreu a imagem
após ter sido empregada a técnica, lembrando que a esteganografia não tem o
objetivo de modificar a mensagem e sim escondê-la. Conseqüentemente, a
pessoa que receber a mensagem só terá de saber em qual área da imagem foi
escondida à informação para obtê-la.
43
Observa-se na Figura 8, o impacto sofrido na imagem, sendo a primeira
imagem da figura, a região selecionada original, e a segunda imagem, a região
na qual sofreu o acréscimo da informação.
FIGURA 8 - Impacto sofrido na imagem após empregar a técnica.
Assim, pode-se observar que as duas imagens são praticamente iguais,
não se percebendo alterações. Lembrando que estamos com a imagem em
zoom trabalhando sobre uma área selecionada de 6 X 8 pixels da imagem que
tem 420 X 300 pixels de dimensões totais.
Então, conclui-se que a alteração é ainda mais imperceptível
observando a imagem como um todo, sem grandes chances de ser percebida,
e isso se dá pelo fato de que, com a utilização desta técnica, a imagem só terá
seus valores de RGB - referentes a cada pixel -, alterados na pior das
hipóteses em uma unidade para cima ou para baixo. Observa-se que, se o
valor do bit menos significativo for igual ao da mensagem o valor não será
alterado.
Foi escolhido imagens no formato bitmap para implementação desta
técnica por ser a maneira mais facil de lidar com imagens, pois não precisa de
paleta de cores para trabalhar com os pixels, e cada pixel é representado por
três bits, com os valores de RGB. Além disso, não existe qualquer compressão
de dados e o número de cores possiveis, mais de 16 milhões, é
suficientemente grande para diluir as pequenas diferenças introduzidas pela
mensagem oculta.
Mas deve-se levar em conta que uma informação escondida com a
utilização da esteganografia LSB pode ser facilmente destruída, conforme cita
ROCHA (2003, apud JASCONE, 2003, p. 38), “se uma mensagem for
44
escondida em uma imagem no formato bitmap, e esta for convertida para um
formato JPEG, a informação é perdida”. Isso acontece em decorrência da
utilização de algoritmos de compressão de dados com perdas, segundo
JASCONE (2003, p. 38), “esses algoritmos selecionam apenas as partes mais
significativas do objeto, ou seja, os bits menos significativos têm uma chance
bem menor de serem selecionados”, perdendo a informação contida neles.
É utilizado imagens no formato bitmap para execução desta técnica por
serem imagens mais fácil de lidar, pois não precisa de paleta de cores para a
verificação dos valores das cores. Além disso, não existe qualquer compressão
dos dados e os números de cores possíveis (mais de 16 milhões) é
suficientemente grande para diluir as pequenas diferenças introduzidas pela
mensagem que esta oculta.
45
3. ESTUDO DE CASOS
Neste capitulo, são apresentados alguns softwares que empregam
técnicas de criptografia, esteganografia e assinaturas digitais.
Atualmente, no meio digital, existem diversos softwares que empregam
técnicas de segurança de sistemas, comerciais ou de livre distribuição. Porém,
nenhum com a mesma aplicação do protótipo proposto neste Trabalho de
Conclusão de Curso.
Foram analisados softwares que empregam a criptografia,
esteganografia e assinaturas digitais de forma individual, ou seja, cada um dos
softwares emprega somente uma das três técnicas.
3.1 StegoBMP
O StegoBMP é um software didático que usa métodos de esteganografia
para ocultar mensagens em uma imagem no formato BMP 24 bits e realiza
testes para verificar a detectação ou desconfiança da utilização da técnica LSB
na imagem.
É um software freeware distribuído pela licença Creative Commons, que
pode ser visualizada no site apresentado nas referências bibliográficas. O
software pode ser copiado, exibido, distribuído e executado, desde que sejam
seguidas as condições apresentadas nesta licença.
Ele emprega métodos classificados como esteganografia aberta, pelo
fato dos dados não serem criptografados antes de serem ocultos. Então não é
recomendada a utilização do mesmo comercialmente, ficando a caráter do
usuário a utilização ou não.
Tem como funcionalidades a ocultação e busca de informações em
imagens BMP 24 bits e a realização de teste para tentar detectar se a imagem
em questão pode conter informações ocultas com a técnica LSB.
46
Para isso, o software faz diversas varreduras na imagem buscando a
presença de dados fora do padrão geral, utiliza algoritmos estatísticos que
analisam os valores das cores da imagem, apresentando os resultados na
forma de ruídos em um gráfico.
A Figura 9 apresenta a utilização de algumas das funcionalidades do
software. O relatório apresentado do lado esquerdo superior da figura
representa a varredura efetuada na imagem para buscar a informação, a
primeira imagem da “Google” apresentada na figura é a imagem com a
informação oculta, a segunda imagem passou pela aplicação do algoritmo de
detecção denominado TESTE VISUAL e o gráfico foi empregado no algoritmo
denominado TESTE LSB RANDÔMICO.
FIGURA 9 - Software StegoBMP.
O executável do StegoBMP é disponibilizado para download e pode ser
obtido no site que esta no referencial teórico.
47
3.2 DAMN Hash Calculator 1.5.1
O DAMN Hash Calculator é um software com licença freeware para uso
não comercial, foi desenvolvido na linguagem C++ por Ivanopulo / DAMN em
Dezembro de 2000.
Tem como funcionalidade a aplicação de diversos algoritmos de
assinatura digital para calculo de valores hash de textos ou arquivos.
Emprega os seguintes algoritmos de assinatura digital: SHA de 160, 256,
384 e 512 bits, HAVAL de 128, 160, 192, 224 e 256 bits com 3, 4 ou 5 passos,
RIPEMD-160, MD5, CRC-32.
A Figura 10 apresenta a interface do software. Inicialmente deve-se
selecionar quais os algoritmos de assinatura digital quer empregar, informar a
mensagem ou o arquivo que deseja gerar as assinaturas e executar através do
botão Calculate. Tendo, como resultado, o texto exibido na figura, mostrando
as assinaturas digitais, selecionadas anteriormente, da mensagem informada.
FIGURA 10 - Software DAMN Hash Calculator.
48
O executável do DAMN Hash Calculator é de autoria de DAMN
Ivanolupo e é disponibilizado para download no site que encontra-se no
referencial teórico.
3.3 Criptografia RSA
Foram analisados dois softwares que implementam o algoritmo RSA, os
dois foram feitos em Java Script. As duas são um modelo simplificado da
implementação e utilização do algoritmo RSA, utilizam expoentes pequenos,
para não tornar o script lento e são ferramentas didáticas, auxiliares no
entendimento do algoritmo.
A Figura 11 apresenta as telas das duas ferramentas.
49
FIGURA 11 – Telas de duas ferramentas que utilizam o algoritmo RSA.
A primeira ferramenta (ferramenta 1) apresentada na Figura 11 é
disponibilizada no site http://www.ohdave.com/rsa/. E a segunda ferramenta
(Ferramenta 2) é disponibilizada no site
http://www.numaboa.com/content/view/350/57/1/3/
50
4. CAMOUFLAGED SECURITY SYSTEM
Nos capítulos anteriores, foram apresentados os principais esquemas de
segurança de sistemas e os principais aspectos necessários para o
desenvolvimento desde Trabalho de Conclusão de Curso. Após analisar estes
mecanismos é, possível especificar o desenvolvimento deste protótipo.
Assim, neste capitulo, serão apresentados os principais conceitos,
requisitos, dificuldades e passos necessários para implementação deste
Trabalho de Conclusão de Curso, cuja implementação foi chamada de
Camouflaged Security System.
4.1 Especificação e requisitos
O protótipo de software desenvolvido neste Trabalho de Conclusão de
Curso utiliza técnicas de criptografia, assinaturas digitais e esteganografia em
conjunto. A criptografia é feita através do algoritmo de chave pública RSA, a
assinatura digital, por sua vez, utiliza o algoritmo de hash SHA-1 e, por fim, a
esteganografia é feita através do método LSB ou inserção no bit menos
significativo.
Foi escolhido o algoritmo RSA para realizar a implementação da
criptografia porque é o mais comumente utilizado, conforme citado na 2.2.4, ele
soluciona o problema de distribuição, assim, podendo quaisquer pessoas
realizar a troca de mensagens de forma segura facilmente.
O algoritmo SHA-1 foi escolhido para realizar os processos necessários
para gerar as assinaturas digitais por ser altamente recomendado pela
comunidade de criptografia e já ter sobrevivido a diversas analises
criptografias.
E o algoritmo LSB foi escolhido para realizar a esteganografia da
assinatura digital em imagens bitmaps por ser a maneira mais facil de lidar com
imagens para a implementação da técnica, conforme citado na sessão 2.4.2.
Pois além de se pode trabalhar diretamente com valores de RGB da imagem
51
para ocultar as informações, o número de cores possiveis, mais de 16 milhões,
é suficientemente grande para diluir as pequenas alterações que serão feitas
após ocultar as informações.
O protótipo de software foi desenvolvido na linguagem de programação
delphi 7, e tem suas especificações definidas com a utilização de diagrama de
caso de uso e diagramas de atividades. Contempla dois tipos de usuários, o
emissor e o receptor. O emissor tem como dados de entrada uma chave de
criptografia, a mensagem a ser enviada e uma imagem no formato bitmap, e
terá como saída uma imagem com a assinatura digital da mensagem oculta
salva no formato bmp e uma mensagem texto cifrada salva no formato txt.
O receptor, por sua vez, tem o arquivo texto com a mensagem
criptografada e a imagem com a assinatura digital da mensagem original
oculta, e terá, como saída, a mensagem decifrada, a assinatura digital dessa
mensagem e a assinatura digital obtida de dentro da imagem recebida,
podendo assim ter acesso a informação recebida e verificar o status desta.
Deste modo, é possível realizar a troca de informações sigilosas de
forma segura, tendo três diferentes técnicas de segurança de sistemas
empregadas em conjunto, aumentando o nível de segurança, validade da
transmissão e dificultando o trabalho de um atacante. Podendo ao final deste
processo de envio e recebiment de mensagens, o comparar as informações e
verificar a validade da transmissão.
O protótipo possibilita, também, que os dois tipos de usuários possam
gerar chaves criptográficas, salvá-las e carrega-las com a utilização de senhas,
e realize a configuração de seu servidor SMTP para enviar e-mail.
4.1.2 Funcionalidade do Protótipo
Inicialmente, são apresentadas as funcionalidades básicas definidas
para este protótipo de software.
A ferramenta tem como finalidade principal a transmissão e o
recebimento de mensagens que necessitam da segurança extra, levando em
52
conta a necessidade de garantir os conceitos de autenticidade, integridade,
confiabilidade e não repúdio tratados anteriormente. Para isso, foram
implementadas técnicas de segurança de sistemas, conforme se observa na
Figura 12, que apresenta o módulo emissor do sistema, o qual poderá gerar
mensagens secretas e envia-las com segurança para o seu destinatário.
FIGURA 12 - funcionalidade do processo de envio de mensagem.
Para alcançar o objetivo do projeto, o usuário primeiramente deve gerar
um par de chaves, sendo uma pública e outra privada; para gerar estas chaves,
a ferramenta emprega o algoritmo de chave pública RSA.
Após o usuário informar ou gerar as chaves necessárias para alimentar
os algoritmos, pode realizar as seguintes tarefas:
• O usuário alimenta o sistema com a mensagem original que deseja
enviar;
• O protótipo emprega essa mensagem inicialmente ao algoritmo de
criptografia RSA juntamente com uma das chaves de criptografia,
obtendo, assim, uma mensagem cifrada;,
53
• Após, o protótipo emprega a mensagem original ao algoritmo de função
hash SHA - 1, gerando a assinatura digital correspondente à mensagem
original.
• Esta assinatura digital é esteganografada em uma imagem com a
utilização da técnica LSB de esteganografia (substituição do bit menos
significativo);
• Assim, ao final desses processos, o sistema terá gerado uma imagem
(.bmp) com uma assinatura digital e uma mensagem (.txt)
aparentemente sem sentido (cifrada);
Tendo essas duas informações, o usuário pode enviá-las com uma
segurança alta ao seu destinatário. Para facilitar a comunicação entre os
usuários, o protótipo prove uma ferramenta em que o usuário possa enviar
estas informações geradas ao seu destinatário.
Assim, foi implementado uma rotina de envio de e-mail por servidor SMTP,
para que o usuário possa, após criptografar e esteganografar os dados, enviar
um e-mail contendo como anexos um arquivo texto com a mensagem cifrada,
uma imagem no formato bmp com a assinatura digital oculta, facilitando e
agilizando o processo de troca de mensagens.
O usuário receptor, ao receber o e-mail, deve baixar os anexos contidos
no e-mail, e alimentar as informações dele no sistema, conforme observa-se na
Figura 13:
54
FIGURA 13 - Funcionalidade do processo de recebimento de mensagem
Após baixar os anexos recebidos, o usuário informa a devida chave
criptografia ao sistema, informar a mensagem e a imagem que ele recebeu, e
segue os seguintes passos:
• Emprega a mensagem cifrada ao algoritmo de criptografia RSA para
descifrá-la;
• Emprega a mensagem decifrada ao algoritmo de hash SHA-1 para obter
a assinatura digital dessa mensagem;
• Emprega a imagem recebida ao algoritmo LSB de esteganografia, para
obter a assinatura digital original oculta ali;
• E, por fim, comparar as assinaturas, gerando como resultado o status da
troca de mensagem.
Ao final desse processo, o usuário tem uma mensagem legível, e duas
assinaturas digitais, a original, enviada dentro da imagem, e uma nova
assinatura obtida da mensagem decifrada. Se as assinaturas forem iguais é
sinal de que a mensagem está segura e não foi violada durante sua
transmissão.
55
4.2 Modelagem do Protótipo
Para especificação deste protótipo, foram utilizadas duas técnicas de
modelagem empregadas na UML (Unified Modeling Language), sendo elas os
diagramas de caso de uso e diagramas de atividades.
4.2.1 Caso de Uso
O caso de uso tem como objetivo representar de forma usual os principais
requisitos necessários para implementação do protótipo. É composto por
quatro elementos básicos sendo eles apresentados na Tabela 3.
TABELA 3 - Elementos principais de um Caso de Uso
Foram implementados nove casos de uso na ferramenta, sendo eles
apresentados na Figura 14.
56
FIGURA 14 - Diagrama de Caso de Uso da Ferramenta.
Os casos de usos apresentados na Figura 14 realizam as seguintes tarefas:
• Gerar Chaves: tem como objetivo realizar as ações necessárias para
gerar as chaves pública e privada do usuário. O caso de uso tem como
dados de entrada o tamanho da chave que o usuário deseja deseja
gerar e o número de interações nos números primos que devem ser
executados para gerá-las, e tem como resultado dois pares de chaves,
uma pública e outra privada, podendo salvar estas chaves com a
utilização de uma senha para mantê-las mais segura;
• Obter Informação da imagem: realiza as ações necessárias para obter
a informação ocultada na imagem. O usuário alimenta o sistema com a
57
imagem recebida e tem como resultado a assinatura digital oculta nessa
imagem;
• Comparar Assinatura: compara as duas assinaturas digitais, a que veio
na imagem e a nova assinatura da mensagem decifrada. Este caso de
uso depende dos casos de uso Obter Informação da Imagem e Gerar
Assinatura Digital para estar completo. Após o usuário gerar a
assinatura digital da mensagem decifrada e obter a assinatura digital da
mensagem original oculta na imagem o sistema era realizar uma
comparação entre as duas assinaturas, gerando como resultado um
status da mensagem;
• Decifra Mensagem: responsável por fazer a decifragem da mensagem
recebida. O usuário alimenta o sistema com a mensagem cifrada e a
chave de criptografia correspondente a que foi utilizada para cifrar a
mensagem, e tem como resultado uma mensagem decifrada;
• Criar Mensagem: responsável por entrar com a mensagem a ser
transmitida e a imagem na qual será ocultada a imagem. O usuário
alimenta o sistema com a informação a ser transmitida e com a imagem
na qual será oculta a assinatura digital, podendo assim realizar os
procedimentos para adicionar a devida segurança as informações.
• Cifrar Mensagem: realiza as ações para a cifragem da mensagem
original. Este caso de uso depende do caso de uso Criar Mensagem
para estar completo. Após o usuário criar a mensagem o protótipo ira
empregar a informação a ser transmitida juntamente com a chave de
criptografia neste caso de uso, tendo como resultado uma mensagem
cifrada;
• Gerar Assinatura Digital: gera a assinatura digital da mensagem
criada. Este caso de uso precisa do caso de uso Criar Mensagem ou
Decifrar Mensagem para estar completo. Após o usuário alimentar o
58
caso de uso com a mensagem a ser enviada ou a mensagem decifrar
recebida o caso de uso irá gerar como saída uma assinatura digital
dessas informações;
• Oculta informação na Imagem: responsável por realizar as ações de
esteganografia da assinatura digital na imagem digital. Este caso de uso
precisa do caso de uso Gerar Assinatura Digital para ficar completo. O
usuário alimenta o caso de uso com a assinatura digital gerada e a
imagem que deseja ocultar essa assinatura e tem como saída uma
imagem com uma assinatura digital esteganografada;
• Enviar Mensagem: Responsável por fazer o envio das informações
geradas pelo protótipo. Após o usuário realizar os casos de uso criar
mensagem, cifrar mensagem, gerar assinatura digital e ocultar
informação na imagem ele poderá enviar os resultados desses processo
por e-mail para o seu destinatário, precisando apenas configurar seu
servidor SMTP e informar o e-mail do destinatário.
4.2.2 Diagrama de Atividades
Os diagramas de atividades têm como objetivo mostrar o mapeamento
do fluxo das ações ou passos realizados em cada caso de uso. É composto por
quatro elementos básicos, sendo eles apresentados no Tabela 4.
59
TABELA 4 - Elementos principais de um diagrama de atividades.
Os casos de uso realizam as seguintes atividades representadas nos
diagramas de atividades que foram criados. Foi realizado um diagrama de
atividades para cada caso de uso do protótipo, ou seja, o mapeamento das
atividades realizadas para realizar cada caso de uso, sendo eles apresentados
em três imagens cada uma com três diagramas.
Na Figura 14 são apresentados os diagramas de atividade dos casos de
uso Gerar Chaves, Enviar Mensagem e Criar Mensagem.
FIGURA 15 - Diagrama de atividades dos casos de uso Gerar Chaves, Enviar Mensagem e
Criar Mensagem.
60
Na Figura 15 estão representados os diagramas de atividade dos casos
de uso Gerar Assinatura, cifrar mensagem e Ocultar Informação.
FIGURA 16 - Diagrama de atividades dos casos de uso Gerar Assinatura, Cifrar Mensagem e Ocultar Informação.
E, por fim, na Figura 16 são apresentados os diagramas de atividade
dos casos de uso Obter Informação da Imagem, Decifrar Mensagem e
Comparar Assinaturas.
61
FIGURA 17 - Diagrama de Atividades dos casos de uso Obter Informação da Imagem, Decifrar Mensagem e Comparar Assinaturas.
4.3 Desenvolvimento
A seguir é apresentado o desenvolvimento e a implementação do
protótipo de software denominado Camouflaged Security System.
Foi implementado em um desktop com processador Intel Core Duo
D925, 2Gb de memória Ram e 180Gb de espaço em disco, sob o sistema
operacional Windows XP Professional. Foi desenvolvido no ambiente de
programação Borland Delphi 7 - que é uma Linguagem de Programação Visual,
tendo como objetivo o desenvolvimento de sistemas pelo método RAD (Rapid
Application Development), que comprovadamente proporciona um
desenvolvimento Win 32 acelerado, gerando muito mais produtividade na
criação de programas.
A elaboração de sistemas utilizando linguagens visuais inicia pela
criação de sua interface, que é a parte visual do aplicativo a qual o usuário irá
interagi. Essas linguagens têm como princípio a utilização de formulários e
62
componentes para a criação destas interfaces. Posteriormente cria-se a parte
lógica do sistema, desenvolvendo as funcionalidades que o mesmo deverá
executar, propiciando uma excelente agilidade no desenvolvimento, focando o
esforço no desenvolvimento propriamente dito.
4.3.1 Técnicas e Ferramentas Utilizadas
A Criptografia é responsável por cifrar e decifrar as mensagens
transmitidas. Esta funcionalidade foi desenvolvida com o auxilio de componente
de terceiros, chamado TPLockBox - sendo utilizado o algoritmo RSA
implementado neste componente. O TPLockBox é um componente open
source desenvolvido pela empresa Turbo Power. Era distribuído de forma
comercial anteriormente, mas a empresa liberou o componente. Este emprega
diversas técnicas de criptografia e assinaturas digitais de forma profissional,
proporcionando bastante segurança na sua utilização.
O protótipo trabalha com esse componente, definindo no componente a
mensagem a ser cifrada ou decifrada e a chave secreta de criptografia, tendo
como resultado a mensagem cifrada ou decifrada.
As Assinaturas Digitais são responsáveis por gerar um resumo de
mensagem de uma mensagem. Esta funcionalidade foi desenvolvida com a
utilização do componente TPLockBox também, fazendo o uso do algoritmo
SHA-1 implementado no mesmo.
O protótipo interage com esse componente definindo nele, a mensagem
original tendo como resultado, um resumo de mensagem ou assinatura digital
dessa mensagem.
E a Esteganografia é responsável por ocultar e extrair as assinaturas
digitais da imagem. Este módulo do trabalho necessita da utilização de
imagens digitais no formato bitmap e tem como dados de entrada a assinatura
digital da imagem e a imagem, resultando em uma imagem com a assinatura
digital da mensagem oculta ou, a partir apenas da imagem, buscar a assinatura
digital oculta na mesma.
63
Essa funcionalidade foi implementada em sua totalidade, necessitando
de algoritmos que trabalhem nas tonalidades das cores da imagem através dos
valores referentes ao RGB de cada pixel, buscando e alterando os mesmos,
trabalhem com conversão de valores binário, hexadecimal, decimal e ASC II e
o algoritmo LSB de esteganografia.
A esteganografia é implementada em dois momentos no sistema, uma
para ocultar a assinatura e outra para obter a assinatura.
O protótipo contempla também duas ferramentas auxiliares para o
processo de envio e recebimento das informações: a primeira delas é a
ferramenta Gerar Chaves - responsável por gerar ou carregar as chaves de
criptografia do usuário, além de possibilitar que o mesmo salve as suas chaves
com a utilização de senha, deixando o conteúdo do arquivo seguro.
A segunda ferramenta é a de configuração do sistema. É responsável
por receber os dados do servidor de e-mail do usuário, para poder enviar e-
mails do protótipo, e apresenta dados do computador no qual o sistema está
sendo executado - como versão do Windows, espaço em disco e outras.
E ainda é contemplada uma ferramenta destinada para ajuda ao usuário
na execução do sistema.
4.3.2 Interface Gráfica
A Figura 18 apresenta a tela inicial do sistema. É a partir dessa interface
inicial que o usuário vai interagir com o sistema, podendo escolher as tarefas
que deseja realizar no mesmo.
64
FIGURA 18 – Interface gráfica da tela principal do sistema.
Pelo menu existente na parte superior da tela, o usuário tem as
seguintes opções de tarefas dentro do sistema:
• Gerar Chaves: ativa a ferramenta auxiliar responsável por gerar as
chaves de criptografia. Pode ser acionada clicando com o mouse sobre
a opção ou pressionando as teclas “alt + g” do teclado;
• Criar Mensagem: ativa o módulo emissor do protótipo. Pode ser
acionada clicando com o mouse sobre a opção ou pressionando as
teclas “alt + c” do teclado;
• Receber mensagem: ativa o módulo receptor do protótipo. Pode ser
acionada clicando com o mouse sobre a opção ou pressionando as
teclas “alt + r” do teclado;
• Configuração do sistema: ativa a ferramenta auxiliar responsável por
realizar a configuração do servidor de e-mail do usuário e apresentar
informações do computador onde o sistema esta sendo executado. Pode
ser acionada clicando com o mouse sobre a opção ou pressionando as
teclas “alt + s” do teclado;
• Help: aciona o menu contendo duas opções: a primeira é a tradicional
“Sobre o sistema”, que apresenta a versão do sistema, o nome do
65
desenvolvedor e e-mail para contado. A segunda é a “Ajuda”, que
apresenta um conteúdo de ajuda sobre a execução do sistema.
A interface gráfica do sistema foi desenvolvida visando à exemplificação
e demonstração de todos os processos realizados no sistema, não sendo
levada em consideração à facilidade da sua utilização. Para tanto, é necessário
que o usuário acione todos os processos existentes no sistema e o sistema
apresenta os resultados da execução de todos estes processos - como os
dados gerados, o tempo gasto para realizar estes processos, como foi
realizado dentre outros.
Para um melhor entendimento do funcionamento do protótipo de
software são apresentadas, nas sessões que seguem, o funcionamento e as
interfaces gráficas dos dois módulos de usuário e das ferramentas auxiliares
que o mesmo contempla, mostrando todos os passos realizados pelo protótipo
e pelo usuário para a configuração do sistema, envio e recebimento das
informações.
4.3.3 Ferramentas auxiliares
A primeira ferramenta auxiliar implementada no protótipo é a “Gerar
Chaves”. Ela é responsável por gerar um par de chaves criptográficas para o
usuário e ou carregá-las para que o usuário possa ver suas chaves. A Figura
19 apresenta a interface desta ferramenta.
66
FIGURA 19 – Interface gráfica da tela Gerar Chaves.
Para chegar até esta ferramenta é necessário que o usuário acione o
botão “Gerar Chaves” que se encontra no menu da tela principal ou utiliza as
teclas de atalho “alt + g”. Após acionar esta tarefa, o usuário poderá gerar e/ou
carregar suas chaves de criptografia dentro dessa ferramenta auxiliar.
Para gerar um par de chaves de criptografia é necessário que o usuário
informe o tamanho da chave no campo “Tamanho da Chave”, sendo esse
tamanho em bytes, o número de interações que o laço de execução deve
realizar para selecionar os números primos aleatoriamente, no campo
“Quantidade de teste de interações dos primos”, e por fim acionar o botão
“Gerar Par de Chaves”. Assim, o sistema apresenta, no quadro “Chaves
Obtidas”, os pares de chaves de criptografia geradas, sendo duas chaves
públicas e duas chaves privadas.
O usuário deve então salvar estas chaves. Essa tarefa torna-se
operacional no botão “Salvar Chaves”. O objetivo é permitir que as chaves
possam ser usadas futuramente. Para garantir a privacidade, o usuário pode
utilizar uma senha para encriptar os dados das chaves e, após realizar este
processo, as chaves estão salvas sem formato definido no local desejado pelo
usuário. É valido ressaltar que a segurança das chaves não fica a cargo do
sistema e sim do usuário, que deve mantê-las guardada em um local seguro.
67
Na Figura 19 é possível ver que tem dois botões “Salvar Chaves”, sendo
um no quadro “Chaves Públicas” e outro no quadro “Chaves Privadas”, tendo o
usuário que salvar as duas chaves para que possa realizar as comunicações
com estas chaves.
O protótipo apresenta como feedback o tempo de processamento gasto
para gerar os pares de chaves. Para isso, é necessário que o usuário clique na
aba “Logs do Processo”, que se encontra no canto superior da tela conforme
pode-se observar na Figura 20.
FIGURA 20 – Logs do processo da tela gerar chaves.
O processo de geração das chaves de criptografia foi implementado com
a utilização de componentes de terceiros - sendo este o TPLockBox, que é o
mesmo componente utilizado para realizar a criptografia do sistemas.
Para carregar chaves de criptografia na ferramenta o usuário deve
acionar os botões “Carregar chaves”, existentes nos quadros “Chaves públicas”
e “Chaves Privadas”, assim ele poderá visualizar as chaves que ele já tem e
salvá-las com outras senhas.
68
A segunda ferramenta auxiliar implementada no protótipo é a
“Configuração do Sistema”. Essa é responsável por carregar no sistema os
dados de configuração do servidor SMTP do usuário, dados estes necessários
para realizar o envio por e-mail das informações; além disso, essa ferramenta
apresenta dados do computador que o sistema esta executando e possibilita a
configuração das cores do sistema.
A Figura 21 apresenta a tela de configuração do servidor SMTP
existente no protótipo. Ela se encontra na interface de ferramenta
“Configuração do Sistema” dentro da aba “Internet”.
FIGURA 21 – Tela de configuração do sistema na aba Internet.
Para configurar o servidor de SMTP do usuário, é necessário que o
mesmo informe o seu nome no campo “Nome”, o seu servidor de SMTP no
campo “Servidor SMTP”, o seu endereço de e-mail no campo “Endereço de
Email”, o seu usuário de autenticação do e-mail no campo “Usuário” e a sua
senha de autenticação do e-mail no campo “Senha”, assim, acionando o botão
“Aplicar” para que estes dados sejam salvos.
Uma vez que o usuário informe estes dados, os mesmos serão salvos
em arquivos textos que estarão dentro da pasta “..../Security System/Dados”
69
que é disponibilizada juntamente com o software, não havendo a necessidade
de informá-los a cada vez que for enviar mensagens.
A ferramenta de envio tem como restrição a necessidade que o servidor
de e-mail de suporte o envio de mensagens por SMTP. Foram testados os
servidores de e-mail pagos Terra, PortoWeb e Via-rs e todos estes funcionaram
corretamente. A título de curiosidade, os servidores de e-mail gratuito Gmail,
Hotmail e pop foram testados e não atenderam às funcionalidades.
A Figura 22 apresenta a outra funcionalidade existente dentro desta
ferramenta. Essa funcionalidade encontra-se dentro da aba “Geral” que esta
dentro da ferramenta “Configurações do sistema”.
FIGURA 22 – Tela de configurações do sistema na aba Geral.
Nesta funcionalidade da ferramenta é apresentada a versão do sistema
operacional no qual o protótipo está sendo executado, a capacidade total do
disco rígido do computador e o espaço livre em disco, e possibilita ao usuário
alterar as cores das janelas do sistema. Para alterar a cor do sistema o usuário
deverá selecionar no campo “Cor das Janelas”, que se encontra na aba
“Geral” da ferramenta, a cor que o mesmo deseja.
Esta funcionalidade da ferramenta é meramente ilustrativa, tendo como
objetivo somente a apresentação das informações do computador no qual o
sistema esta sendo executado.
70
4.3.4 Módulo Emissor
Conforme citado sessão 4.1, o módulo emissor tem como dados de
entrada uma chave de criptografia, a mensagem a ser enviada e uma imagem
no formato bitmap, e tem como saída uma imagem com a assinatura digital da
mensagem oculta, salva no formato bitmap, e uma mensagem texto cifrada
salva no formato txt.
Para realizar o envio da informação, é necessário que o usuário
inicialmente alimente o sistema com a chave de criptografia no campo “Informe
as chaves”, ativando o botão “Carrega Chaves”, e a informação que deseja
transmitir no campo “Criptografia”, conforme se observa na Figura 23, que
apresenta a primeira tela do módulo emissor - é a tela na qual será informada a
chave de criptografia e a mensagem a ser enviada e realiza o processo de
criptografia da mensagem e geração da assinatura digital da mesma.
FIGURA 23 – Módulo Emissor, carregando as chaves e informando a mensagem.
71
Ao carregar a chave de criptografia, o sistema habilita o botão “cifrar”,
podendo o usuário, através deste, ativar o processo de cifragem da mensagem.
Ao ativar o processo, o sistema envia ao componente utilizado para realizar a
criptografia a chave de criptografia e a mensagem original, e tem como
resposta do componente uma mensagem cifrada - que é colocada no campo
“mensagem Criptografada” conforme se observa na Figura 24. Destaca-se que
uma vez executada uma função o sistema desabilita o botão que executa essa
função, visando a consistência do sistema para que o usuário não execute
duas vezes o mesmo processo.
FIGURA 24 – Módulo Emissor, cifrando a mensagem.
Após cifrar a mensagem, o sistema libera o botão “Gerar Assinatura” e o
usuário pode ativá-lo executando o processo de geração da assinatura digital.
Ao ativar esse processo, o sistema envia ao componente responsável por gerar
a assinatura digital a mensagem original e tem como resposta um resumo de
mensagem da mensagem original que é colocado no campo “Assinatura Digital
da Mensagem”, conforme se observa na Figura 25.
72
FIGURA 25 – Módulo Emissor, gerando a assinatura digital da mensagem.
Após gerar a assinatura digital da mensagem, o sistema libera o botão
“Ocultar Assinatura”, e o usuário pode ativá-lo para esteganografar a assinatura
digital na imagem. Ao ativar esse botão, o sistema abre a segunda janela do
módulo emissor, na qual é necessário que o sistema primeiramente transformar
a assinatura gerada, que originalmente está no formato hexadecimal, para o
formato binário. Após, o usuário carrega a imagem bitmap que quer utilizar
para esteganografar a informação, através do botão “Buscar Imagem’ (é
aconselhado que a imagem bitmap tenha no mínimo a resolução de 110 x 110
para ocultar toda a assinatura de forma segura), e o sistema libera o botão
“Esteganografar”, podendo assim, ser ativado para realizar os processos para
ocultar a assinatura na imagem, conforme se observa na Figura 26.
73
FIGURA 26 – Módulo Emissor, carregando a imagem que vai ser esteganografada.
Para realizar o processo de ocultação da assinatura digital, o protótipo
realiza um laço que vai percorrendo a imagem original a partir do pixel [1,1]
ocultando três bits da assinatura por pixel até ter ocultado toda a assinatura.
Cada vez que o protótipo executa o laço, os valores referentes ao RGB
do pixel encontrados são capturados no formato decimal e transformados para
binário. Então, é alterado o ultimo bit de cada byte do RGB do pixel por um bit
da assinatura digital binária. Assim, antes de sair do laço, os valores alterados
dos bytes de RGB em binário são transformados novamente para decimal e
carregados na imagem novamente.
O tamanho do laço é executado conforme o número de bits da
assinatura digital. No caso, a assinatura tem um tamanho fixo de 320 bits,
sendo esse número obtido após a transformação da assinatura de hexadecimal
para binário. Então o laço executa sempre 107 vezes, para ocultar linearmente
toda a assinatura.
A Figura 27 apresenta a tela de ocultação da mensagem após realizar
todos estes processos. No quadro azul da tela, pode-se visualizar a imagem
74
original carregada pelo usuário e, no quadro verde, pode-se observar a imagem
após ser ocultada a assinatura digital. Clicando na imagem com assinatura
oculta a mesma aparece em um tamanho maior, para que o usuário possa
perceber o impacto visual sofrido nesta imagem após a ocultação da
assinatura.
FIGURA 27 – Módulo Emissor, esteganografando a assinatura digital na imagem.
É possível visualizar a assinatura digital a ser oculta em dois formatos,
no formato hexadecimal e no formato binário. Para isso, deve-se selecionar
qual o formato deseja ser visualizado nas abas “Assinatura Hexadecimal” e
“Assinatura Binária” situadas na parte superior da tela apresentada na Figura
28. É possível também visualizar todo o processo realizado para ocultação da
assinatura digital na imagem bitmap, para isso deve-se selecionar a aba
“Informações”, conforme é observado na Figura 28.
75
FIGURA 28 – Módulo Emissor, Logs do processo de ocultação da assinatura na imagem.
Nesta aba, são apresentadas as informações da imagem selecionada e
do processo de ocultação da assinatura digital na imagem. No lado esquerdo
da tela, pode-se visualizar o local onde a imagem original está salva, as
dimensões em pixels da mesma, o seu tamanho total, o total de informações
que pode ser oculta nessa e o tempo de processamento gasto para realizar a
ocultação da assinatura.
No lado direito da tela, é possível visualizar todo o processo de
ocultação da assinatura, sendo apresentando o pixel que o laço passou, os
valores originais e alterados no formato decimal do RGB deste pixel e os
valores originais e alterados do pixel no formato binário.
Ao final do processo de ocultação da assinatura o usuário deve salvar a
imagem em algum local de seu computador. Para tanto, deve acionar o botão
76
“Salva”, selecionando o local onde deseja salvar a imagem e pode fechar esta
tela, retornando para a primeira tela do módulo.
Nesta primeira tela do módulo o sistema apresenta um feedback dos
processos já realizados - na aba “Segurança”, no campo “Processos já
Realizados” . Para o nível de proteção da informação original, no campo “Nível
de Proteção da Informação”, também é apresentado um feedback do
desempenho da execução na aba “Desempenho” - podendo visualizar o tempo
de processamento gasto para cifrar os dados, o tempo de processamento
gasto para gerar a assinatura digital e os dados da execução do módulo .
Ao retornar para a primeira tela do módulo o botão “Enviar Informação”
vai estar habilitado, podendo assim o usuário enviar a mensagem a seu
destinatário, após clicar neste botão o sistema abre a terceira tela deste
módulo, na qual o usuário deve informar os dados do destinatário da
mensagem. Deve ser informado o nome do destinatário no campo “Nome”, o e-
mail do destinatário no campo “Endereço de E-mail”, o assunto da mensagem
no campo “Assunto” e uma mensagem que ele queira enviar no campo
“Mensagem” - sendo que estas duas últimas não têm o preenchimento
obrigatório.
Os anexos já vêm carregados com a imagem digital e o arquivo texto
gerado - tendo que, após informar os dados do destinatário, acionar o botão
“Enviar” para que a mensagem seja enviada para seu destinatário. A Figura 29
apresenta a terceira tela do Módulo Emissor, responsável por enviar as
informações seguras para o seu destinatário.
77
FIGURA 29 – Módulo Emissor, enviando a mensagem por email.
Esta tela apresenta como feedback todo o processo de envio na barra
que se encontra na parte inferior da tela. Ali, é mostrado quando o sistema está
se conectando ao servidor, quando se conectou, quando está enviando a
mensagem e se a mensagem foi enviada corretamente. Como citado
anteriormente, esta funcionalidade visa facilitar a transmissão das informações,
não sendo obrigatória a sua execução. Caso o usuário queira, pode usar a
imagem salva e a mensagem texto e enviar como achar melhor para seu
destinatário, não tendo a necessidade de utilizar essa funcionalidade. Mas,
caso queira utilizar, deverá ter configurado previamente o sistema com o seu
servidor SMTP.
4.3.5 Módulo Receptor
Conforme citado sessão 4.1, o módulo receptor tem como dados de
entrada uma chave de criptografia, a mensagem cifrada e uma imagem no
formato bitmap com a assinatura digital dessa mensagem original, e tem como
saída uma mensagem decifrada, a assinatura digital dessa mensagem
78
decifrada e a assinatura digital obtida da imagem, podendo assim comparar os
dados e verificar o status da mensagem e da transmissão.
Para realizar o processo de recebimentos das informações é necessário
que o usuário inicialmente alimente o sistema com a chave de criptografia no
campo “Chaves”, informando a senha do arquivo, caso necessário, no campo
“Senha de arquivo” e ativando o botão “Carregar Chaves” conforme se observa
na Figura 30.
FIGURA 30 – Módulo Receptor, carregando as chaves no sistema.
Após isso, o usuário deve informar a mensagem texto recebida no
campo “Informe a mensagem a ser decifrada”. Ao final desse processo o
usuário pode ativar o botão “Decifrar” obtendo a mensagem decifrada no
campo ”Mensagem Decifrada”, a Figura 31 mostra esse processo realizado.
79
FIGURA 31 – Módulo Receptor, decifrando a mensagem recebida.
Após decifrar a mensagem, é necessário que o usuário acione o
processo para gerar a assinatura digital desta mensagem decifrada; para isso,
o usuário deve acionar o botão “Assinatura” tendo como resultado a assinatura
digital da mensagem decifrada no campo “Assinatura da Mensagem Decifrada”
conforme observa-se na Figura 32.
80
FIGURA 32 – Módulo Receptor, gerando assinatura digital da mensagem decifrada.
Continuando, após decifrar a mensagem e gerar a assinatura digital da
mesma, o usuário deve realizar o processo para buscar a informação que veio
oculta dentro da imagem recebida. Para isso, o usuário deve acionar o botão
“Busca Imagem”, selecionando o local onde esta salva a imagem recebia e
carregando a mesma no sistema. A Figura 33 mostra o processo após realizar
a busca da imagem.
81
FIGURA 33 – Módulo Receptor, carregando a imagem recebida.
Depois de carregar a imagem, o usuário deve acionar o botão “Buscar
Informação” – obtendo a assinatura digital que se encontrava esteganografada
na imagem bitmap recebida no campo “Assinatura Obtida da Imagem”
conforme se observa na Figura 34.
82
FIGURA 34 – Módulo Receptor, buscando a assinatura digital oculta na imagem.
Para realizar o processo de busca da informação o sistema realiza um
conjunto de processos parecidos com os mencionados na sessão anterior.
O sistema realiza um laço de repetição que busca, pixel a pixel, os
valores referentes ao RGB de cada um deles, convertendo-os para o formato
binário e analisando o bit menos significativo. Ao final deste processo o sistema
tem uma lista de valores binários, estes valores são divididos em conjuntos de
8 números (8 bits = 1 byte) e convertidos para o formato hexadecimal, obtendo
assim, a assinatura digital que estava na imagem.
Depois de processar todos os dados recebidos o usuário pode verificar o
status da mensagem e da transmissão das informações. Para isso, o usuário
deve acionar o botão “Verificar Mensagem” obtendo o status da informação na
aba “Status da Informação”.
Se qualquer uma das informações transmitidas for alterada durante a
transmissão o sistema apresenta uma mensagem de erro acusando tal
situação. Se a informação foi corrompida é apresentada a mensagem
83
“Assinaturas NÃO conferem, as informações foram CORROMPIDAS durante a
transmissão” conforme observa-se na Figura 35.
FIGURA 35 – Módulo Receptor, mensagem apresentada se as informações forem corrompidas.
Se a informação foi transmitida em segurança e está integra, o sistema
apresenta a mensagem “Assinaturas digitais CONFEREM, mensagem esta
segura” conforme se observa na Figura 36 - obtendo, ao final destes
processos, uma mensagem decifrada, a assinatura digital desta mensagem, a
assinatura digital da mensagem original obtida de entro da imagem recebida e
o status da mensagem.
84
FIGURA 36 – Módulo Receptor, mensagem apresentada se as informações estiverem corretas.
O sistema apresenta feedback de todos os processos realizados. Na aba
“Logs do processo da mensagem” é apresentado o tempo de processamento
gasto para decifrar a mensagem e gerar a assinatura digital desta mensagem
decifrada e, na aba, “Logs do processo da imagem” é apresentado o diretório
no qual está salva a imagem, as dimensões desta imagem, o tamanho total de
pixels, total de informações que pode ser oculta, o tempo de processamento
gasto para realizar os processos necessários para buscar a informação da
imagem e todos os pixels que tem informação oculta no formato binário, a
Figura 37 apresenta as telas dos feedbacks apresentados pelo sistema.
85
FIGURA 37 – Módulo Receptor, logs do processo de recebimento de mensagem.
Assim, após executar todos estes processos, o usuário terá acesso à
mensagem secreta transmitida pelo emissor, com a garantia de que somente
as pessoas permitidas tiveram acesso a esta mensagem, e que a mesma foi
transmitida de forma segura.
86
5. CONSIDERAÇÔES FINAIS
Para o levantamento teórico do presente trabalho, foram estudadas a
criptografia, através do algoritmo de chave pública RSA, as assinaturas digitais,
através do algoritmo SHA – 1 e a esteganografia, através do método LSB ou
inserção no bit menos significativo.
Através de tais estudos, foi observado que apenas com a utilização da
criptografia de chave pública já é possível garantir um alto nível de segurança,
pois esta soluciona o problema de distribuição de chaves, facilitando a
comunicação entre quaisquer pessoas, e, de uma forma básica, garantindo a
identidade dos envolvidos.
Ademias, destaca-se que, com a utilização de assinaturas digitais, é
possível garantir a integridade da mensagem aumentando ainda mais a
eficácia do sistema. E que a esteganografia - que é uma técnica que se
encontra em evolução e tem como vantagem a não rotulação da transmissão
de informações importantes - pode complementar o sistema agregando mais
segurança ao mesmo sem perder desempenho de processamento.
Este Trabalho de Conclusão de curso teve seus objetivos alcançados,
sendo realizado, alem dos estudos prévios necessários, a modelagem e
implementação do protótipo.
O protótipo desenvolvido permite que quaisquer pessoas troquem
mensagens secretas de maneira segura e confiável, pois com a utilização
destas três técnicas em conjunto pode-se fornecer um nível de segurança
ainda mais elevado, garantindo, além da privacidade da informação, a
segurança da assinatura digital.
Dentre as dificuldades encontradas, a principal delas foi o levantamento
bibliográfico sobre esteganografia, por se tratar de um assunto pouco
abordado, sendo que todas as referências encontradas apresentavam
basicamente o funcionamento das técnicas.
Umas das restrições deste software e a necessidade de utilizar somente
imagens no formato bitmap. As imagens neste formato normalmente são
grandes para armazenamento em disco e por serem grandes podem ser um
87
problema ao transmitir essa imagem ao receptor, além de que o método de
esteganografia utilizado não permite a compressão da imagem.
Como trabalho futuro, é possível realizar a automatização dos processos
necessários para a total e correta execução do sistema, tendo o usuário
somente que alimentar o sistema com as devidas informações e acionar o
processo de envio ou recebimento de mensagem.
Ainda, como trabalhos futuros, é possível realizar o estudo e
implementação de outras técnicas de esteganografia para a ocultação da
assinatura digital, dentre outras estudadas pode-se citar os algoritmos de
transformação, que geralmente trabalham com formas mais sofisticadas de
manuseio de imagens como brilho, saturação e compressão das imagens,
podendo-se, assim, utilizar imagens no formato jpg, que são imagens menores
comparadas as bitmaps utilizadas na realização deste trabalho.
Considera-se que todos os objetivos propostos foram alcançados de
forma correta, implementando-se um protótipo de software que permitiu um
profundo aprendizado cientifico e tecnológico, aprofundando temas estudados
durante a graduação.
88
REFERÊNCIAS
ABREU, Carlos Magno Oliveira. Algoritmo de criptografia RSA. 2004. Artigo disponível em: http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=123&mode=thread&order=0&thold=0>. Acesso em 12 de maio de 2007.
BURNETT, Steve & PAINE, Stephen Criptografia e segurança: o guia oficial RSA. 1.ed. Rio de janeiro: Campus Ltda., 2002.
BUSTAMANTE, Leonardo. Esteganografia – A Arte de Esconder. 2006. Artigo disponível em: <http://www.imasters.com.br/artigo/4500/forense/esteganografia_-a_arte_de_esconder/>. Acesso em: 26 de Maio de 2007.
CASTRO, Aldemario Araújo. O DOCUMENTO ELETRÔNICO E A ASSINATURA DIGITAL – Uma Visão Geral. Artigo disponível em: <http://jus2.uol.com.br/doutrina/texto.asp?id=2632>. Acesso em: 18 de junho de 2007.
DAMN, Ivanopulo. DAMN Hash Calculator. Disponível em: <http://www.numaboa.com/component/option,com_docman/task,doc_download/ gid,135/Itemid,35>. Acesso em 05 de novembro de 2007.
Departamento de Engenharia Elétrica da Universidade de Brasília. Disponível em: <http://www.redes.unb.br/security/criptografia/rsa/rsa.html#-%20Topo> . Acesso em 13 de abril de 2006.
DIFFIE, Whitfield; HELLMAN, Martin E. New Directions in Cryptography. IEEE Transactions on Information Theory, volume IT-22, nr. 6. Novembro 1976.
FORRISTAL, Jeff Site Seguro Aplicações Web 1. Ed. Rio de janeiro: Alta Books Ltda, 2002.
HOWARD, Michael; LEBLANC, David. Escrevendo código seguro: estratégias e técnicas práticas para codificação segura de aplicativos em um mundo em rede. 2. Ed. Porto Alegre: BookMan, 2005.
JASCONE, Fábio Luis Tavares. Protótipo de Software para Ocultar Texto criptografado em Imagens Digitais. Blumenau, 2003. Trabalho de Conclusão de curso – Ciências da Computação, Universidade Regional de Blumenau. Disponível em <
89
http://www.inf.furb.br/~pericas/orientacoes/Esteganografia2003.pdf>. Acesso em: 12 de maio de 2007.
Licença Creative Commons. Disponibilizada em <http://creativecommons.org/licenses/by-nc-sa/2.0/br/deed.pt>. Acessado em: 20 de novembro de 2007.
MARGI, Cíntia Borges. Um Mecanismo para Distribuição Segura de Vídeo MPEG. São Paulo, 2000. Dissertação de mestrado – Departamento de computação e sistemas digitais, Escola politécnica da Universidade de São Paulo. Disponível em : <http://www.larc.usp.br/~cbmargi/pdf/dissertacao-cintia-borges-margi.pdf>. Acesso em 10 de maio de 2007.
SCHNEIER, Bruce. Applied Cryptography: Protocols, Algorithms and Source Code in C. 2. ed.New York: John Wiley & Sons, Inc., 1996.
SCHNEIER, Bruce. SHA-1 Broken. Disponível em: <http://www.schneier.com/blog/archives/2005/02/sha1_broken.html>. Acesso em 27 de junho de 2007.
SILVA, Rogério Guedes. Segurança de Redes de Computados. Rio de Janeiro, 1998. Departamento de ensino Superior da CEFET-RJ, Disciplina de Redes de Computadores. Disponível em: <http://www.cefetrio.hpg.ig.com.br/ciencia_e_educacao/8/trabalhos/seguranca2/seguranca.htm> . Acesso em 27 de junho de 2007.
STALLINGS, William Cryptography and network security: Principles and pratice 4.ed. New Jersey: Prentice Hall, 2005.
WANG, Xiaoyun & YIN, Yiqun Lisa & YU, Hongbo. Collision Search Attacks on SHA1. China, 2005. Disponível em: <http://theory.csail.mit.edu/~yiqun/shanote.pdf>. Acesso em 27 de junho de 2007.
TKOTZ, Viktoria StegoBMP. Disponibilizado em: <http://www.numaboa.com/component/option,com_docman/task,doc_download/gid,7/Itemid,35/>. Acesso em 14 de novembro de 2007.
90
ANEXO A – Processo completo de ocultação da informação exemplificada
na sessão 2.4.1
Neste anexo é apresentado o processo de ocultação da informação
“testando a tecnica lsb” representada na sua forma decimal e binária na Tabela
1. Esta informação será ocultada em uma área selecionada aleatoriamente na
Figura 7, que é uma imagem no formato bitmap de 420 X 300 pixel.
Foi utilizada uma área de 6 x 8 pixel desta imagem e a informação é
inserida no bit menos significativo dos valores de RGB de cada pixel. Os
valores de RGB são os valores referentes à quantidade da cor vermelha, verde
e azul que determinam à tonalidade do pixel.
A tabela 5 representa todo o processo de ocultação. A coluna 1
representa a posição do pixel. Cada uma dessas posições tem três linhas que
representam os valores de RGB do pixel.
A Coluna “Pixel” representa a posição dos pixels na área selecionada,
lembrando, que uma imagem no formato bitmap consiste em uma matriz de
números, cada um representando a tonalidade da cor. Assim, a primeira linha
da coluna representa a primeira posição da matriz, e assim sucessivamente.
A coluna “Número” apresenta o valor referente à tonalidade original do
pixel no formato decimal e as colunas “Número no Formato Binário”
apresentam esse valor no formato binário.
A coluna “Informação” contém os valores da informação que vai ser
ocultada, estes valores representando o texto “testando a técnica lsb” no
formato binário.
Os números em vermelho representam a coluna aonde será oculta a
informação e terá seus valores substituídos pelos valores da coluna em azul.
Por fim, a coluna “Valor Resultante” representa os valores resultantes
após a ocultação da informação no formato decimal, pode-se observar que em
muitos casos os valores resultantes permanecem iguais aos valores originais,
deixando mais imperceptível ainda a alteração da imagem.
91
Pixel Número Número no formato Binário Informação Valor
Resultante
95 0 1 0 1 1 1 1 1 1 95
105 0 1 1 0 1 0 0 1 1 105 1.1
122 0 1 1 1 1 0 1 0 1 123
78 0 1 0 0 1 1 1 0 0 78
95 0 1 0 1 1 1 1 1 1 95 1.2
115 0 1 1 1 0 0 1 1 0 114
63 0 0 1 1 1 1 1 1 0 62
85 0 1 0 1 0 1 0 1 1 85 1.3
106 0 1 1 0 1 0 1 0 1 107
73 0 1 0 0 1 0 0 1 0 72
101 0 1 1 0 0 1 0 1 0 100 1.4
123 0 1 1 1 1 0 1 1 1 123
100 0 1 1 0 0 1 0 0 0 100
134 1 0 0 0 0 1 1 0 1 135 1.5
159 1 0 0 1 1 1 1 1 1 159
119 0 1 1 1 0 1 1 1 1 119
159 1 0 0 1 1 1 1 1 1 159 1.6
185 1 0 1 1 1 0 0 1 0 184
140 1 0 0 0 1 1 0 0 0 140
149 1 0 0 1 0 1 0 1 1 149 2.1
164 1 0 1 0 0 1 0 0 1 165
87 0 1 0 1 0 1 1 1 1 87
100 0 1 1 0 0 1 0 0 1 101 2.2
117 0 1 1 1 0 1 0 1 1 117
74 0 1 0 0 1 0 1 0 0 74
92 0 1 0 1 1 1 0 0 1 93 2.3
112 0 1 1 1 0 0 0 0 0 112
53 0 0 1 1 0 1 0 1 0 52
78 0 1 0 0 1 1 1 0 1 79 2.4
100 0 1 1 0 0 1 0 0 1 101
2.5 89 0 1 0 1 1 0 0 1 0 88
92
119 0 1 1 1 0 1 1 1 0 118
143 1 0 0 0 1 1 1 1 0 142
108 0 1 1 0 1 1 0 0 0 108
144 1 0 0 1 0 0 0 0 1 145 2.6
170 1 0 1 0 1 0 1 0 1 171
182 1 0 1 1 0 1 1 0 1 183
188 1 0 1 1 1 1 0 0 0 188 3.1
202 1 1 0 0 1 0 1 0 1 203
106 0 1 1 0 1 0 1 0 1 107
115 0 1 1 1 0 0 1 1 1 115 3.2
132 1 0 0 0 0 1 0 0 0 132
80 0 1 0 1 0 0 0 0 1 81
95 0 1 0 1 1 1 1 1 1 95 3.3
114 0 1 1 1 0 0 1 0 0 114
72 0 1 0 0 1 0 0 0 0 72
93 0 1 0 1 1 1 0 1 1 93 3.4
114 0 1 1 1 0 0 1 0 0 114
58 0 0 1 1 1 0 1 0 0 58
84 0 1 0 1 0 1 0 0 1 85 3.5
107 0 1 1 0 1 0 1 1 1 107
100 0 1 1 0 0 1 0 0 0 100
130 1 0 0 0 0 0 1 0 1 131 3.6
156 1 0 0 1 1 1 0 0 1 157
246 1 1 1 1 0 1 1 0 1 247
250 1 1 1 1 1 0 1 0 1 251 4.1
255 1 1 1 1 1 1 1 1 1 255
140 1 0 0 0 1 1 0 0 1 141
147 1 0 0 1 0 0 1 1 0 146 4.2
163 1 0 1 0 0 0 1 1 0 162
96 0 1 1 0 0 0 0 0 0 96
107 0 1 1 1 0 1 0 1 0 106 4.3
125 0 1 1 1 1 1 0 1 1 125
4.4 74 0 1 0 0 1 0 1 0 1 75
93
91 0 1 0 1 1 0 1 1 1 91
111 0 1 1 0 1 1 1 1 1 111
64 0 1 0 0 0 0 0 0 0 64
87 0 1 0 1 0 1 1 1 1 87 4.5
109 0 1 1 0 1 1 0 1 0 108
68 0 1 0 0 0 1 0 0 0 68
94 0 1 0 1 1 1 1 0 1 95 4.6
119 0 1 1 1 0 1 1 1 1 119
250 1 1 1 1 1 0 1 0 0 250
252 1 1 1 1 1 1 0 0 0 252 5.1
255 1 1 1 1 1 1 1 1 1 255
189 1 0 1 1 1 1 0 1 0 190
195 1 1 0 0 0 0 1 1 1 195 5.2
209 1 1 0 1 0 0 0 1 1 209
115 0 1 1 1 0 0 1 1 1 115
124 0 1 1 1 1 1 0 0 0 124 5.3
139 1 0 0 0 1 0 1 1 0 138
92 0 1 0 1 1 1 0 0 0 92
105 0 1 1 0 1 0 0 1 1 105 5.4
124 0 1 1 1 1 1 0 0 1 125
70 0 1 0 0 0 1 1 0 1 71
88 0 1 0 1 1 0 0 0 1 89 5.5
108 0 1 1 0 1 1 0 0 0 108
62 0 0 1 1 1 1 1 0 1 63
86 0 1 0 1 0 1 1 0 1 87 5.6
110 0 1 1 0 1 1 1 0 1 111
246 1 1 1 1 0 1 1 0 0 246
249 1 1 1 1 1 0 0 1 1 249 6.1
255 1 1 1 1 1 1 1 1 1 255
237 1 1 1 0 1 1 0 1 0 236
241 1 1 1 1 0 0 0 1 1 240 6.2
253 1 1 1 1 1 1 0 1 0 252
6.3 142 1 0 0 0 1 1 1 0 0 142
94
150 1 0 0 1 0 1 1 0 1 151
163 1 0 1 0 0 0 1 1 1 163
102 0 1 1 0 0 1 1 0 1 103
113 0 1 1 1 0 0 0 1 0 112 6.4
131 1 0 0 0 0 0 1 1 0 130
73 0 1 0 0 1 0 0 1 0 72
88 0 1 0 1 1 0 0 0 1 88 6.5
107 0 1 1 0 1 0 1 1 1 107
64 0 1 0 0 0 0 0 0 1 65
84 0 1 0 1 0 1 0 0 1 85 6.6
108 0 1 1 0 1 1 0 0 0 108
240 1 1 1 1 0 0 0 0 0 240
243 1 1 1 1 0 0 1 1 0 242 7.1
250 1 1 1 1 1 0 1 0 0 250
251 1 1 1 1 1 0 1 1 1 251
255 1 1 1 1 1 1 1 1 1 255 7.2
255 1 1 1 1 1 1 1 1 1 255
187 1 0 1 1 1 0 1 1 0 186
193 1 1 0 0 0 0 0 1 1 193 7.3
207 1 1 0 0 1 1 1 1 1 207
114 0 1 1 1 0 0 1 0 0 114
123 0 1 1 1 1 0 1 1 0 122 7.4
140 1 0 0 0 1 1 0 0 1 141
85 0 1 0 1 0 1 0 1 1 85
98 0 1 1 0 0 0 1 0 1 99 7.5
115 0 1 1 1 0 0 1 1 0 114
72 0 1 0 0 1 0 0 0 0 72
90 0 1 0 1 1 0 1 0 1 91 7.6
112 0 1 1 1 0 0 0 0 1 113
241 1 1 1 1 0 0 0 1 1 241
243 1 1 1 1 0 0 1 1 1 243 8.1
250 1 1 1 1 1 0 1 0 0 250
8.2 250 1 1 1 1 1 0 1 0 0 250
95
255 1 1 1 1 1 1 1 1 0 255
255 1 1 1 1 1 1 1 1 1 255
8.3 188 1 0 1 1 1 1 0 0 0 188
TABELA 5 – Representação da implementação da técnica mostrando todos os processos realizados para ocultação da informação em uma imagem.
96
ANEXO B – Algoritmos utilizados para realizar o processo de ocultação
da assinatura digital na imagem.
Abaixo são apresentados os algoritmos utilizados para o processo de
ocultação da assinatura digital na mensagem. O primeiro algoritmo é executado
quando for ativado o botão “Esteganografar” da tela apresentada na Figura 26,
ele inicialmente verifica os limites da imagem para definir a execução do laço
de repetição, cada vez que ele passa no laço ele carrega a cor do pixel que o
laço esta, passando essa cor por parâmetro para a função PegaRGB, que
retorna o valor alterado, com a assinatura digital oculta, e é carregado
novamente na imagem.
//FUNÇÃO QUE INICIA A OCULTAÇÃO DA ASSINATURA NA IMAGEM Procedure TFEsteganografia.bbOcultarClick(Sender: TObject); var i,x, j: integer; color: TColor; Largura, Altura: integer; Tempo : TTime; begin Tempo := 0; Tempo := GetTickCount; Largura:= imgOri.Picture.Bitmap.Width; Altura:= imgOri.Picture.Bitmap.Height; for i := 1 to Altura-1 do for j:= 1 to Largura-1 do begin if length(szAssinaturaTemp) <= cont then begin MostraTempo(Tempo); exit; end; Color:=ImgAlterada.Picture.Bitmap.Canvas.Pixels[i,j]; Color := PegaRGB(color,1); ImgAlterada.Picture.Bitmap.Canvas.Pixels[i,j] := color; end; end;
O segundo algoritmo é chamado pelo algoritmo acima, ele tem a função
de buscar os valores do RGB do pixel e chamar o algoritmo “esconde”, que
esconde a assinatura digital no pixel. Ele inicialmente busca os valores do RGB
do pixel no formato decimal, converte estes valores para binário e chama a
97
função “esconde”, a qual retorna o valor do pixel com a assinatura oculta, o
algoritmo então altera novamente os valores do formato binário para decimal e
retorna a valor do RGB alterado.
//FUNÇÃO PARA PEGAR O VALOR DE RGB DO PIXEL E CHAMAR A FUNÇÃO ESCONDE Function TFEsteganografia.PegaRGB(Color:TColor):TColor; Var r ,g,b:Byte; r1,g1,b1:String; binario: string; aux: String; tam,j: integer; Begin Color:=ColorToRGB(Color); r:=GetRValue(Color); g:=GetGValue(Color); b:=GetBValue(Color); aux:= ''; r1 := esconde(DecToBinStr(r)); g1 := esconde(DecToBinStr(g)); b1 := esconde(DecToBinStr(b)); r := BinToInt(r1); g := BinToInt(g1); b := BinToInt(b1); result:=RGB(r,g,b); End;
O terceiro algoritmo é chamado pela algoritmo “PegaRGB”, ele tem a
função de alterar o bit menos significativo do pixel em questão para o bit da
assinatura digital, ele recebe como parâmetro o valor do byte do RGB em
binário e retorna o valor alterado.
//FUNÇÂO QUE OCULTA A ASSINATURA NO ULTIMO BIT DO PIXEL Function TFEsteganografia.Esconde(Binario: String); var Numero :String; i : integer; Begin i:= length(binario); if not (binario[i] = szAssinaturaTemp[cont]) then Binario[i] := szAssinaturaTemp[cont]; Cont := cont + 1; Result := Binario; end;
98
ANEXO C – Algoritmos utilizados para realizar o processo de busca da
assinatura digital oculta na mensagem.
Abaixo são apresentados os algoritmos responsáveis por realizar a
varredura na imagem e buscar a assinatura digital oculta na mesma.
O primeiro dos algoritmos é acionado ao ativar o botão “Buscar
Informação” do módulo receptor, e chama os outros dois durante a sua
execução. Ele inicialmente verifica os limites da imagem para realizar o laço e
vai passando, pixel a pixel, informando a cor do pixel e acionando a função
“PegaRGB” que pega o valor oculto no pixel. Chegando no final do processo de
busca, o laço é interrompido e os valores apresentados.
//FUNÇÃO QUE INICIA A BUSCA DA ASSINATURA DIGITAL OCULTA NA IMAGEM procedure TFRecebeInfo.bbBuscaClick(Sender: TObject); var i,x, j: integer; color: TColor; Largura, Altura: integer; tam: integer; aux: string; aux1: integer; AssTemp: string; assTemp1: integer; Tempo : TTime; begin Tempo := 0; Tempo := GetTickCount; AssTemp :=''; AssinaturaBin := ''; aux1:= 0; tam := length(AssinaturaMem) * 8; Largura:= imgOri.Picture.Bitmap.Width; Altura:= imgOri.Picture.Bitmap.Height; for i := 1 to Altura-1 do for j:= 1 to Largura-1 do begin if length(AssinaturaBin) >= tam then Break; Color:=imgOri.Picture.Bitmap.Canvas.Pixels[i,j]; PegaRGB(color,1);
99
end; for x := 1 to length(AssinaturaBin) do begin aux := aux + AssinaturaBin[x]; aux1:= aux1 + 1; if aux1 = 8 then begin assTemp1 := BinToInt(aux); assTemp := assTemp + chr(assTemp1); aux := ''; aux1:= 0; end; end; AssinaturaImg := AssTemp; Tempo := GetTickCount - Tempo; end;
O segundo algoritmo é responsável por pegar os valores do RGB do
pixel e acionar a função de busca de informação desde valores, ele recebe
como parâmetro um valor de cor, assim ele emprega esse valor em uma outra
função chamada “GetRGBValue”, que busca o valor do RGB do pixel no
formato decimal, e aciona a função “busca” que busca o valor do ultimo bit de
cada um desses bytes, retornando o valor do RGB obtido.
//FUNÇÃO PARA PEGAR O VALOR DE RGB DO PIXEL E CHAMAR A FUNÇÃO QUE BUSCA A INFORMAÇÃO OCULTA Function TFRecebeInfo.PegaRGB(Color:TColor):TColor; Var r,g,b:Byte; r1,g1,b1:String; binario: string; aux: String; tam,j: integer; Begin Color:=ColorToRGB(Color); r:=GetRValue(Color); g:=GetGValue(Color); b:=GetBValue(Color); aux:= ''; r1 := Busca(DecToBinStr(r)); g1 := Busca(DecToBinStr(g)); b1 := Busca(DecToBinStr(b));
100
r := BinToInt(r1); g := BinToInt(g1); b := BinToInt(b1); result:=RGB(r,g,b); End;
E por fim, o terceiro algoritmo é responsável por buscar os valores
ocultos no último bit de cada byte do pixel, ele recebe como parâmetro uma
string contendo o conjunto de 8 bits de cada byte dos pixels, realizando a
busca para obter o valor do ultimo bit de cada um destes bytes e retorna uma
string contendo a assinatura digital obtida de dentro da imagem no formato
binário.
//ALGORITMO QUE BUSCA O VALOR DA ASSINATURA OCULTA NO PIXEL Function TFRecebeInfo.Busca(Binario: String); var i : integer; Begin i := Length(binario); AssinaturaBin := AssinaturaBin + Binario[i]; end;