?˜Fµ·Éü¡«A¡»Þ¬œ?¿é¡Éü“¬???ß¾??????›Ê»Ò›H”©›Ê”©äܜ‘S¡?“¬”©?ßû›Ê‘S??äܜ˜F“¬‘S“¬”©??”©Éü¬œ˜F»Þ˜Fµ·‘S“¬¡Éü‘S?“¬¡µ·³–

UNIVERSIDADE CAT?LICA DE GOI?S
DEPARTAMENTO DE COMPUTA??O
GRADU??O EM CI?NCIA DA COMPUTA??O










ESTUDO DE ALGORITMOS CRIPTOGRAFICOS E
IMPLEMENTA??O DE UMA ENTIDADE CERTIFICADORA





AUDIR DA COSTA OLIVEIRA FILHO







JUNHO, 2008



UNIVERSIDADE CAT?LICA DE GOI?S
DEPARTAMENTO DE COMPUTA??O
GRADU??O EM CI?NCIA DA COMPUTA??O















ESTUDO DE ALGORITMOS CRIPTOGRAFICOS E
IMPLEMENTA??O DE UMA ENTIDADE CERTIFICADORA





Trabalho de Conclus?o de Curso apresentado por Audir

da Costa Oliveira Filho ¨¤ Universidade Cat¨®lica de Goi¨¢s,

como requisito parcial para obten??o do t¨ªtulo de Bacharel

em Ci¨ºncia da Computa??o, aprovado em 12/06/2008

pela Banca Examinadora:

Prof. Jos¨¦ Luiz de Freitas J¨²nior, Dr. UCG ¨C Orientador

Prof. Ivon Rodrigues Canedo, Esp. UCG

Prof. Wilmar Oliveira de Queiroz, Msc. UCG


ii




ESTUDO DE ALGORITMOS CRIPTOGRAFICOS E IMPLEMENTA??O DE
UMA ENTIDADE CERTIFICADORA





AUDIR DA COSTA OLIVEIRA FILHO



Trabalho de Conclus?o de Curso apresentado por Audir da Costa Oliveira Filho ¨¤
Universidade Cat¨®lica de Goi¨¢s, como parte dos requisitos para obten??o do t¨ªtulo
Bacharel em Ci¨ºncia da Computa??o.








Prof. Jos¨¦ Luiz de Freitas J¨²nior, Dr.
Prof. Jeov¨¢ Martins Ribeiro, Esp
Orientador
Coordenador do TCC
iii




DEDICAT?RIA





























? Deus pela vida e oportunidades.
Aos meus pais e familiares que nunca mediram
esfor?os para que eu pudesse vencer.
iv




AGRADECIMENTOS


Aos meus pais, por todo o apoio e incentivo em todos os momentos da minha vida.

Ao professor Dr. Jos¨¦ Luiz de Freitas J¨²nior, pela confian?a e paci¨ºncia, durante
todo o curso de gradua??o e muito contribuiu para minha forma??o acad¨ºmica.

A Milena Pacheco Ivo, por todo amor e carinho.

Agrade?o aos amigos e amigas que estiveram ao meu lado durante estes anos e que
comigo partilharam felicidades, decep??es e lutas.

Agrade?o a todos que contribu¨ªram de alguma forma para a realiza??o deste
trabalho.
v




RESUMO

O presente trabalho consiste em um estudo de algoritmos criptogr¨¢ficos,
envolvendo a criptografia sim¨¦trica, assim¨¦trica e fun??o hash, e a implementa??o de uma
entidade certificadora capaz de emitir certificados digitais auto-assinados. No
desenvolvimento do projeto foram utilizados t¨¦cnicas de criptografia como o algoritmo
RSA respons¨¢vel pela emiss?o do par de chaves e o algoritmo SHA-1 utilizado para gerar
c¨®digo hash, podendo assim assinar certificados digitais.

Palavras-chave: criptografia, autoridade certificadora, assinatura digital, certificado
digital.
vi




ESTUDO DE ALGORITMOS CRIPTOGRAFICOS E IMPLEMENTA??O DE
UMA ENTIDADE CERTIFICADORA

SUM?RIO


LISTA DE FIGURAS............................................................................................................x
LISTA DE TABELAS..........................................................................................................xi
LISTA DE ABREVIATURAS E SIGLAS..........................................................................xii
1. INTRODU??O................................................................................................................1
1.1. Justificativa...............................................................................................................1
1.2. Objetivos...................................................................................................................2
1.3. Estado da Arte...........................................................................................................2
1.4. Organiza??o...............................................................................................................3
2. CRIPTOGRAFIA COMPUTACIONAL.........................................................................4
2.1. Defini??es B¨¢sicas....................................................................................................4
2.2. Objetivos dos Protocolos Criptogr¨¢ficos..................................................................4
2.3. Modelos de um Sistema Criptogr¨¢fico......................................................................5
2.4. Classifica??o da Criptografia....................................................................................5
2.4.1. Criptografia Sim¨¦trica....................................................................................6
2.4.1.1. Cifra de Bloco.......................................................................................6
2.4.1.2. Cifra de Fluxo........................................................................................6
2.4.2. Criptografia Assim¨¦trica.................................................................................7
2.5. Resumo de mensagens (Message Digests) ...............................................................7
2.6. C¨®digo de Autentica??o de Mensagens....................................................................8
2.7. Assinaturas Digitais..................................................................................................8
3. FUNDAMENTOS MATEM?TICOS...........................................................................10
3.1. Teorema da Fatora??o ?nica..................................................................................10
3.2. Teorema de Fermat.................................................................................................10
3.3. Teorema de Euler....................................................................................................11
3.4. Algoritmo de Euclides.............................................................................................11
3.5. Algoritmo Estendio de Euclides..............................................................................12
3.6. Grupos.....................................................................................................................13
vii




3.6.1. Grupos Abelianos.........................................................................................13
3.6.2. Grupos Finitos..............................................................................................15
3.7. An¨¦is.......................................................................................................................15
3.8. Corpos.....................................................................................................................16
3.8.1. GF(p).............................................................................................................18
3.8.2. Corpos GF(28)...............................................................................................18
4. O ALGORITMO AES....................................................................................................20
4.1. Breve Hist¨®rico do AES..........................................................................................20
4.2. Detalhes de Funcionamento do AES.......................................................................21
4.3. Especifica??o do Algoritmo....................................................................................22
4.4. Processo de Cifragem..............................................................................................23
4.4.1. Transforma??o SubBytes..............................................................................24
4.4.2. Transforma?¨¤o ShiftRows............................................................................26
4.4.3. Transforma??o MixColumns........................................................................27
4.4.4. Transforma??o AddRoundKey.....................................................................28
4.5. Processo de Expens?o de Chaves............................................................................29
4.6. Processo de Decifragem..........................................................................................30
5. SEGURE HASH ALGORITM 1 (SHA-1)....................................................................32
5.1. Introdu??o...............................................................................................................32
5.2. Defini??es...............................................................................................................33
5.3. Opera??es sobre palavras.......................................................................................33
5.4. Gera??o do Hash.....................................................................................................34
6. O ALGORITMO RSA...................................................................................................36
6.1. Introdu??o...............................................................................................................36
6.2. Gera??o de chaves...................................................................................................36
6.3. Processo de cifragem e decifragem.........................................................................37
7. INFRA ESTRUTURA DE CHAVE P?BLICA............................................................40
7.1. Introdu??o...............................................................................................................40
7.2. Certificados e Certifica??es....................................................................................40
7.2.1. Tipos de Certificados....................................................................................41
7.2.2. X.509............................................................................................................41
7.2.3. PKCS (Public Key Cryptography Standards)...............................................43
7.3. Autoridade Certificadora.........................................................................................44
viii




7.4. Autoridade Registradora.........................................................................................45
7.5. Reposit¨®rio de Certificados.....................................................................................45
7.5.1. Servi?o de Diret¨®rios X.500.........................................................................46
7.5.2. LDAP............................................................................................................46
7.6. Revoga??o de Certificados......................................................................................46
7.6.1. Lista de Certificados Revogados..................................................................47
7.6.2. Extens?es da Entrada de CRL......................................................................48
7.6.3. Extens?es de CRL.........................................................................................48
8. M?TODOS E FERRAMENTAS UTILIZADAS..........................................................50
8.1. Hardware, Plataforma e Considera??es de Implementa??o....................................50
8.2. APIs Java.................................................................................................................50
8.3. Bouncy Castle Provider...........................................................................................51
8.4. HTTP / HTTPS.......................................................................................................51
8.5. TomCat....................................................................................................................52
8.6. Eclipse.....................................................................................................................52
8.7. PostgresSQL............................................................................................................53
9. IMPLEMENTA??O E AN?LISES..............................................................................54
9.1. Principais Requisitos do Sistema............................................................................54
9.1.1. Requisitos Funcionais...................................................................................54
9.1.2. Requisitos N?o Funcionais...........................................................................54
9.2. Especifica??o...........................................................................................................55
9.2.1. Diagrama de Classes.....................................................................................55
9.2.2. Diagrama de Casos de Uso...........................................................................58
9.2.3. Diagrama de Seq¨¹¨ºncia................................................................................62
9.3. Implementa??o........................................................................................................62
10. CONSIDERA??ES FINAIS E SUGEST?ES PARA TRABALHOS FUTUROS......68
10.1. Considera??es Finais...........................................................................................68
10.2. Sugest?es para Trabalhos Futuros.......................................................................69
REFER?NCIAS BIBLIOGR?FICAS.................................................................................70

ix




LISTA DE FIGURAS


Figura 2.1 ¨C Processo de Criptografia Sim¨¦trica ...................................................................6
Figura 2.2 ¨C Processo de Criptografia Assim¨¦trico................................................................7
Figura 2.3 ¨C Processo de Assinatura Digital..........................................................................9
Figura 3.1 ¨C Quadro com c¨¢lculos parciais para encontrar mdc(26, 7)................................12
Figura 4.1 ¨C Bytes de entrada, matriz estado e bytes de sa¨ªda.............................................22
Tabela 4.2 ¨C Processo de Cifragem do AES........................................................................24
Figura 4.3 ¨C Transforma??o no AES....................................................................................25
Figura 4.4 ¨C Transforma??o SubBytes..................................................................................25
Figura 4.5 ¨C Transforma??o ShiftRows................................................................................27
Figura 4.6 ¨C Transforma??o MixColumns............................................................................28
Figura 4.7 ¨C Transforma??o AddRoundKey.........................................................................29
Figura 4.8 ¨C Visualiza??o do vetor de chaves do AES........................................................29
Figura 4.9 ¨C Processo de Decifragem do AES.....................................................................30
Figura 7.1 ¨C Estrutura do Certificado X.509........................................................................42
Figura 7.2 ¨C Estrutura Padr?o de uma CRL.........................................................................47
Figura 9.1 ¨C Diagrama de Classes do Sistema Autoridade Certificadora............................55
Figura 9.2 ¨C Diagrama de Casos de Uso do Sistema Autoridade Certificadora..................58
Figura 9.3 ¨C Diagrama de Seq¨¹¨ºncia do Sistema Autoridade Certificadora........................62
Figura 9.4 ¨C Interface da Implementa??o do sistema de autoridade certificadora...............63
Figura 9.5 ¨C Interface do Sistema para cadastrar um novo certificado................................64
Figura 9.6 ¨C Interface do Sistema para Buscar Certificados Cadastrados............................65
Figura 9.7 ¨C Certificado Raiz da Autoridade Certificadora.................................................66
Figura 9.6 ¨C Certificado Raiz da Autoridade Certificadora Detalhado................................66


x




LISTA DE TABELAS

Tabela 3.1 ¨C Soma m¨®dulo 3................................................................................................18
Tabela 3.2 ¨C Multiplica??o m¨®dulo 3...................................................................................18
Tabela 4.1 ¨C Nr em fun??o do tamanho de blocos e chave..................................................21
Tabela 4.2 ¨C Deslocamento em fun??o do tamanho do bloco..............................................22
Tabela 4.3 ¨C Tabela de substitui??o S-box em nota??o hexadecimal...................................26
Tabela 4.4 ¨C Tabela de substitui??o S-box inversa em nota??o hexadecimal......................31
Tabela 5.1 ¨C Valores para preencher o buffer do SHA-1.....................................................34
Tabela 5.2 ¨C Fun??es e constantes utilizadas pelo SHA-1...................................................35
Tabela 7.1 ¨C Tabela de padr?es de criptografia de chaves p¨²blica definidos pela RSA......43


xi




LISTA DE ABREVIATURAS E SIGLAS


AC
Autoridade Certificadora
AES
Advanced Encryption Standard
API
Application Programming Interface
AR
Autoridade Registradora
CRL
Certificate Revocation List
CSP
Cryptographic Service Providers
DES
Data Encryption Standard
FIPS
Federal Information Processing Standard
HTTP
HyperText Transfer Protocol
HTTPS
HyperText Transfer Protocol Secure
ICP
Infra-estrutura de Chaves P¨²blicas
ICP-Brasil
Infra-estrutura de Chaves P¨²blicas Brasileira
IDE
Integrated Development Environment
IDEIA
International Data Encryption Algorithm
IPSec
IP Security Protocol
JCA
Java Cryptography Architecture
JCE
Java Cryptography Extension
JEE
Java Enterprise Edition
JSP
Java Server Pages
JSSE
Java Secure Socket Extension
KR
Chave privada
KU
Chave p¨²blica
LDAP
Lightweight Directory Access Protocol
MAC
Message Authentication Code
MIT
Massachusetts Institute of Tecnology
MD
Message Digest
MDC
M¨¢ximo Divisor Comum
Nb
Tamanho do bloco
ND
Distinguished Name
NIST
National Institute of Standards and Technology
xii




Nk
Tamanho da chave
Nr
N¨²mero de rodadas
PGP
Pretty Good Privacy
PKCS
Public Key Cryptography Standards
RA
Registration Autority
RSA
Rivest, Shamir e Adleman
SHA-1
Secure Hash Algorithm 1
SQL
Structured Query Language
SSH
Secure Shell
SSL
Secure Sockets Layer
TCP
Transmission Control Protocol
TLS
Transport Layer Security


xiii


1

ESTUDO E IMPLEMENTA??O DE UMA ENTIDADE CERTIFICADORA

CAP?TULO I
INTRODU??O

A internet ¨¦ um meio de comunica??o que vem crescendo a cada ano, trazendo
muitas vantagens, como por exemplo, agilidade em v¨¢rios processos burocr¨¢ticos que antes
gastariam horas. Al¨¦m de agilidade, a internet tamb¨¦m est¨¢ oferecendo muitas outras
vantagens como facilidade e conforto para realizar opera??es que antes eram exaustivas.
Por¨¦m, por ser um meio de comunica??o de car¨¢ter p¨²blico, t¨ºm acesso a informa??es que
nela transita qualquer tipo de pessoa, fazendo com que dados que deveriam ser sigilosos
fiquem expostos na mesma.

Nesta rede, v¨¢rios neg¨®cios s?o feitos, tornando-se necess¨¢rio assim a cria??o de
mecanismos que garantam a integridade e a autenticidade das informa??es confidenciais
que trafegam por esta rede.

Uma das maneiras de se evitar o acesso indevido a informa??es confidenciais ¨¦
atrav¨¦s da cifragem da informa??o, conhecida como criptografia, fazendo com que apenas
as pessoas ¨¤s quais estas informa??es s?o destinadas, consigam compreend¨º-la. A
criptografia fornece t¨¦cnicas para codificar e decodificar os dados, tais que os mesmos
possam ser armazenados, transmitidos e recuperados sem sua altera??o ou exposi??o [1].

1.1 ¨C Justificativa
A escolha pelo referido tema, deve-se ao fato da cria??o de um mundo virtual como
conseq¨¹¨ºncia da populariza??o da internet, por interm¨¦dio da qual pessoas realizam
compras, transa??es banc¨¢rias, cadastramento de clientes em uma empresa, dentre outras.
Por isso, a certifica??o digital vem, em amplo crescimento, fazendo com que
surjam sempre novos protocolos criptogr¨¢ficos que implementam formas mais seguras de
realizarem a certifica??o das entidades pela internet. Junto a estes m¨¦todos surgem a
Entidade Certificadora que tem como objetivo principal regularizar e tornar legal toda
assinatura no meio digital.




2

1.2 ¨C Objetivos

Este trabalho tem como objetivos:
? estudo de algoritmos criptogr¨¢ficos envolvendo criptografia sim¨¦trica, assim¨¦trica e
fun??es de hash;
? a descri??o dos algoritmos criptogr¨¢ficos AES (Advanced Encryption Standard) e
RSA (Rivest, Shamir e Adleman), e da fun??o de hash criptogr¨¢fica SHA-1 (Secure
Hash Algorithm 1);
? Estudo da Infra-Estrutura de Chave P¨²blica e implementa??o de uma entidade
certificadora em um ambiente Web.

1.3 ¨C Estado da Arte


Dentre alguns servi?o e empresas que j¨¢ vem utilizando a inova??o das entidades
certificadoras pode-se citar:
? A Secretaria da Receita Federal do Brasil que j¨¢ vem utilizando o processo
eletr?nico atrav¨¦s da assinatura digital. Implantado em 2005, o e-Processo hoje
representa 90% dos novos processos cadastrados nos Estados da Bahia e Sergipe.
Segundo a Receita Federal, esta estrutura ser¨¢ estendida em julho pr¨®ximo para 21
de suas unidades nos estados, principalmente nas capitais. Este sistema de processo
eletr?nico elimina a utiliza??o de papel nos processos gerados, em peti??es, entrega
de documentos e apresenta??es de consulta [18].
? Com foco exclusivo em certifica??o digital desde 1996, a Certisign emite
certificados digitais utilizando a tecnologia mais avan?ada no desenvolvimento e
presta??o deste servi?o. A companhia est¨¢ credenciada pela ICP-Brasil (Infra-
estrutura de Chaves P¨²blicas Brasileira), institu¨ªda pela Medida Provis¨®ria 2200/2,
e autorizada por seu Comit¨º Gestor a emitir e validar certificados de todos os tipos,
na condi??o de Autoridade Certificadora e Autoridade Registradora. Al¨¦m disso, a
Certisign credencia e oferece sua infra-estrutura para outras organiza??es [18].
? O Tribunal de Contas de Santa Catarina disponibilizou, no dia 05 de maio de 2008,
a primeira edi??o do Di¨¢rio Oficial Eletr?nico DOTC-e ¡ª ve¨ªculo de comunica??o
oficial dos atos processuais e administrativos do TCE. Para garantir a veracidade do
documento, o presidente Jos¨¦ Carlos Pacheco, assinou eletronicamente a primeira
edi??o. Neste ato, ele destacou que os avan?os tecnol¨®gicos t¨ºm de ser utilizados


3

pela administra??o p¨²blica na ado??o de mecanismos mais modernos, eficazes e
eficientes, necess¨¢rios ao desenvolvimento de suas atividades, em prol da sociedade
[18].

1.4 ¨C Organiza??o
Este trabalho est¨¢ dividido em dez cap¨ªtulos. Neste primeiro cap¨ªtulo foram
apresentadas as motiva??es que levaram ao tema deste trabalho.
No segundo cap¨ªtulo s?o apresentados alguns conceitos de criptografia moderna.
No terceiro cap¨ªtulo s?o mostrados os conceitos matem¨¢ticos e teoremas
fundamentais necess¨¢rios para a compreens?o dos algoritmos estudados.
No quarto cap¨ªtulo ¨¦ apresentada uma descri??o do algoritmo criptogr¨¢fico AES,
tido como padr?o de criptografia sim¨¦trica.
No quinto cap¨ªtulo ¨¦ apresentada uma descri??o da fun??o hash SHA-1, sendo este
utilizado por uma grande quantidade de aplica??es e protocolos de seguran?a.
No sexto cap¨ªtulo ¨¦ apresentada uma descri??o do algoritmo criptogr¨¢fico
assim¨¦trico RSA, sendo este, a implementa??o melhor sucedida de sistema de criptografia
de chave p¨²blica.
No s¨¦timo capitulo ¨¦ apresentada uma descri??o de uma Infra Estrutura de Chave
P¨²blica, sendo destacado suas principais funcionalidade.
No oitavo capitulo ¨¦ apresentado os mat¨¦rias e m¨¦todos que viabilizaram a
implementa??o da entidade certificadora.
No nono capitulo ¨¦ apresentada a aplica??o desenvolvida mostrando
descritivamente a an¨¢lise da mesma.
No d¨¦cimo capitulo s?o apresentadas as considera??es finais deste trabalho de
conclus?o de curso e algumas sugest?es para trabalhos futuros.



4

CAP?TULO II
CRIPTOGRAFIA COMPUTACIONAL


Do grego, krypt¨®s significa secreto ou oculto e gr¨¢phos que se refere ¨¤ escrita,
sendo assim a criptografia pode ser definida como a ci¨ºncia de escrever em c¨®digos
secretos. Portanto, a criptografia estuda meios de cifrar informa??es de modo que s¨® o
destinat¨¢rio possa interpret¨¢-la, isto se d¨¢ por meio de algoritmos (m¨¦todos matem¨¢ticos) e
uma chave, que tem como fun??o dar privacidade ao mecanismo, tornando-o secreto para
pessoas que n?o a possu¨ªrem.

Neste cap¨ªtulo ser?o vistos algumas defini??es e conceitos b¨¢sicos sobre
criptografia, assim como tamb¨¦m seus objetivos.

2.1 ¨C Defini??es B¨¢sicas

O processo de transformar uma mensagem leg¨ªvel em uma mensagem ileg¨ªvel
equivalente ¨¦ chamado de cifragem e o processo inverso, realizado por um usu¨¢rio
leg¨ªtimo, ¨¦ chamado de decifragem. As transforma??es realizadas por estes processos s?o
executadas por uma fun??o que ¨¦ parametrizada por uma chave [17].
Em cofres, apesar de todo mundo saber como funciona a sua seguran?a, ningu¨¦m
pode entrar se n?o souber a combina??o que abre a porta. A seguran?a de um algoritmo de
criptografia ¨¦ parecida. Algoritmos criptogr¨¢ficos s?o divulgados a toda sociedade e a
seguran?a do processo reside apenas na chave, esta deve ser secreta.
Existem estudos que tem como objetivo a quebra de sistemas criptogr¨¢ficos, estes
s?o conhecidos como criptoan¨¢lise. O criptoanalista tem como finalidade descobrir
fraquezas nos algoritmos. Do mesmo modo que os cript¨®grafos t¨ºm por finalidade a
cria??o de novos algoritmos.

2.2 ¨C Objetivos dos Protocolos Criptogr¨¢ficos


A criptografia possui quatro objetivos principais, s?o eles:
? Confidencialidade: esta propriedade garante que s¨® o destinat¨¢rio autorizado deve
ser capaz de ter acesso ¨¤s informa??es a ele destinadas e ningu¨¦m mais;


5

? Autenticidade: ¨¦ a propriedade necess¨¢ria para garantir que uma pessoa ¨¦ quem ele
realmente diz ser e se as a??es feitas por ele sejam realmente de sua autoria, ou
seja, dever¨¢ ser capaz de identificar o remetente e verificar que foi ele mesmo que
enviou a mensagem;
? Integridade: garante que um documento aut¨ºntico n?o foi alterado de forma
acidental, intencional ou at¨¦ mesmo que ele esteja sendo utilizado por pessoas n?o
autorizadas sem que este fato possa ser detectado, ou seja, deve permitir ao
destinat¨¢rio descobrir se uma mensagem foi alterada durante a transmiss?o;
? N?o-Rep¨²dio: esta propriedade garante que um documento aut¨ºntico, assinado
digitalmente, possa ser negado pelo seu autor, ou seja, n?o ¨¦ poss¨ªvel ao remetente
negar o envio da mensagem.

2.3 ¨C Modelos de um Sistema Criptogr¨¢fico

H¨¢ duas maneiras b¨¢sicas de se criptografar mensagens: atrav¨¦s de c¨®digos ou de
cifras. A primeira delas procura esconder o conte¨²do da mensagem utilizando c¨®digos
predefinidos entre as partes envolvidas na troca da mensagem. Neste caso, todas as pessoas
que podem ter acesso ¨¤s informa??es, devem conhecer os c¨®digos utilizados.
O outro m¨¦todo usado para criptografar mensagens ¨¦ a cifra, t¨¦cnica na qual o
conte¨²do da mensagem ¨¦ cifrado atrav¨¦s da transposi??o e/ou substitui??o das letras da
mensagem original [2]. Sendo assim, a transposi??o ¨¦ um processo onde se mistura os
caracteres de uma informa??o original, j¨¢ a substitui??o, utiliza-se de uma tabela de
substitui??o predefinida, onde se trocam ou substituem os caracteres de uma informa??o.
Para este tipo de m¨¦todo, utiliza-se o conceito de chaves.

2.4 ¨C Classifica??es da Criptografia


Uma forma de classificar a criptografia moderna ¨¦ atrav¨¦s da forma como se usam
as chaves. Neste sentido, uma criptografia pode ser sim¨¦trica ou assim¨¦trica.




6

2.4.1 ¨C Criptografia Sim¨¦trica


Na criptografia sim¨¦trica, tamb¨¦m chamada de criptografia convencional ou de
chave ¨²nica, os processos de cifragem e decifragem s?o realizados atrav¨¦s de uma ¨²nica
chave, ou seja, tanto o remetente quanto o destinat¨¢rio usam a mesma chave, conforme
apresentado na figura 2.1.

Os sistemas criptogr¨¢ficos de chave sim¨¦trica mais conhecidos s?o: o DES (Data
Encryption Standard), o IDEIA (International Data Encryption Algorithm) e o AES
(Advanced Encryption Standard).

Figura 2.1 ¨C Processo de Criptografia Sim¨¦trica

2.4.1.1 ¨C Cifra de Bloco


A cifra de blocos opera sobre blocos de dados. O texto antes de ser cifrado ¨¦
dividido em blocos que variam normalmente de 8 a 16 bytes que ser?o cifrados ou
decifrados. Quando o texto n?o completa o n¨²mero de bytes de um bloco, este ¨¦
preenchido com dados conhecidos (geralmente valor zero ¡°0¡±) at¨¦ completar o n¨²mero de
bytes do bloco, cujo tamanho j¨¢ ¨¦ predefinido pelo algoritmo que est¨¢ sendo usado [8].

2.4.1.2 ¨C Cifra de Fluxo


Os algoritmos de fluxo cifram a mensagem bit a bit, em um fluxo cont¨ªnuo, sem
esperar que se tenha um bloco completo de bits. ? tamb¨¦m chamado de criptografia de



7

stream de dados, onde a criptografia se d¨¢ mediante a opera??o xor entre o bit de dados e o
bit gerado pela chave [8].

2.4.2 ¨C Criptografia Assim¨¦trica


A criptografia assim¨¦trica, tamb¨¦m conhecida como criptografia de chave p¨²blica,
foi proposta publicamente pela primeira vez por Diffie e Hellman em 1976 [9].

Este tipo de t¨¦cnica consiste em um par de chaves diferentes para o processo de
cifragem e decifragem. Sendo assim, uma chave conhecida como chave p¨²blica ¨¦ utilizada
para cifrar e outra chave conhecida como chave privada ¨¦ utilizada para decifrar, conforme
mostrado na figura 2.2.

Dentre os sistemas criptogr¨¢ficos que utilizam este tipo de criptografia est¨¢ o RSA
que ser¨¢ visto mais detalhadamente em cap¨ªtulos posteriores.


Figura 2.2 ¨C Processo de Criptografia Assim¨¦trica

2.5 ¨C Resumos de Mensagens (Message Digests)


Resumos de mensagem s?o baseadas na id¨¦ia de fun??es hash. Uma fun??o hash
criptogr¨¢fica recebe como entrada uma mensagem de comprimento vari¨¢vel e produz um
bloco de comprimento fixo, que representa o conte¨²do da mensagem.

Uma fun??o hash deve ter seu funcionamento de tal maneira que uma simples
altera??o na mensagem produza uma altera??o em muitos bits no bloco de sa¨ªda. Sendo
que, a probabilidade de duas mensagem diferentes produzirem o mesmo bloco deve ser
praticamente nula.
Os algoritmos hash mais conhecidos s?o:


8

?
"Message-Digest" (MD2; MD4 e MD5) ¨C aceita mensagens de qualquer tamanho e
produz um bloco de 128 bits ("digest"), a mensagem ¨¦ inicialmente dividida em
blocos de 512 bits que s?o processados.
?
SHA (Secure Hash Algorithm) ¨C aceita mensagens de comprimento inferior a 264 e
produz um "digest" de 160 bits. Baseado no MD4, o fato de gerar mais 32 bits do
que o MD4 torna-o mais seguro.

2.6 ¨C C¨®digos de Autentica??o de Mensagens

MAC (Message Authentication Code) ¨¦ uma t¨¦cnica de autentica??o de mensagem
que envolve o uso de uma chave secreta para gerar um pequeno bloco de dados, conhecido
como c¨®digo de autentica??o de mensagem, que ¨¦ anexado a mensagem.
HMAC ¨¦ um algoritmo de autentica??o de mensagens baseado em hash, onde ¡°H¡±
significa hash ou fun??o baseada em hash [17].
Assim como os resumos de mensagens, um HMAC ¨¦ utilizado para garantir a
integridade do conte¨²do da mensagem que est¨¢ sendo representada. Um MAC ¨¦ capaz de
detectar altera??es nos dados ou na soma. Para detectar as altera??es nos dados, um MAC
pode estar baseado em um resumo, cifra de bloco ou cifra de fluxo. Para detectar altera??es
na soma de verifica??o real, o MAC utiliza uma chave [17].

2.7 ¨C Assinaturas Digitais

A assinatura digital pode ser analisada analogamente como uma assinatura
manuscrita, uma vez que uma entidade pode assinar uma informa??o e qualquer entidade
poder ler essa assinatura e verificar se ela ¨¦ verdadeira. A grande vantagem da assinatura
digital ¨¦ que ela ¨¦ virtualmente imposs¨ªvel de ser forjada, em virtude das t¨¦cnicas
matem¨¢ticas e da criptografia assim¨¦trica [17].
Uma assinatura digital ¨¦ o criptograma ¨C resumo de mensagem ¨C resultante da
cifra??o de um determinado bloco de dados (documento) pela utiliza??o da chave privada
de quem assina em um algoritmo assim¨¦trico. A verifica??o da assinatura ¨¦ feita
decifrando-se o criptograma (assinatura) com a suposta chave p¨²blica correspondente. Se o
resultado for v¨¢lido, a assinatura ¨¦ considerada v¨¢lida, ou seja, aut¨ºntica, uma vez que



9

apenas o detentor da chave privada poderia ter gerado esse criptograma, conforme
apresentado na figura 2.3.


Figura 2.3 ¨C Processo de Assinatura Digital




10

CAP?TULO III
FUNDAMENTOS MATEM?TICOS


Neste capitulo ser¨¢ visto algumas defini??es matem¨¢ticas importantes para a
compreens?o dos algoritmos apresentados neste trabalho.

3.1 ¨C Teorema da Fatora??o ?nica

Defini??o. Dado um inteiro positivo n ? 2, pode-se sempre escrev¨º-lo, de modo ¨²nico, na
forma:

e1
n ? p ... ke
p
1
k ,
onde 1 ? p ? p ? ... ? p s?o n¨²meros primos e e ,..., e s?o inteiros positivos.
1
2
k
1
k

Desta forma, o teorema demonstra duas coisas: primeiro, todo inteiro pode ser
escrito como produto de pot¨ºncias de primos, e segundo, s¨® h¨¢ uma escolha poss¨ªvel de
primos e expoentes para a fatora??o de um inteiro dado.

3.2 ¨C Teorema de Fermat

Seja p um n¨²mero primo e a um n¨²mero inteiro, ent?o:
a p ? a (mod p).
Segundo esse teorema, a ¨¦ invis¨ªvel m¨®dulo p. Seja a¡¯ um inteiro positivo tal que
aa¡¯ ? 1 (mod p). Multiplicando ambos os membros de a p ? a (mod p) por a¡¯, ¨¦ obtida a
nova vers?o do teorema de Fermat:
a p¨C1 ? 1 (mod p).

Exemplo: Calcular 25432675 (mod 13) com simplifica??o de c¨¢lculos pelo teorema de
Fermat.
Utilizando a id¨¦ia apresentada anteriormente, basta calcular o resto da divis?o de
5432675 por 12, que ¨¦ igual a 11. Assim, 25432675 ??211 ? 7 (mod 13).



11

3.3 ¨C Teorema de Euler


O teorema de Euler ¨¦ uma generaliza??o do teorema de Fermat para o caso em que
o m¨®dulo n?o ¨¦ primo.

Defini??o: Se n ¨¦ um n¨²mero positivo e a ¨¦ um inteiro tal que mdc (m¨¢ximo divisor
comum) (a, n) = 1, ent?o.
(n)
a?
? 1 (mod n)

Defini??o. Seja n inteiro positivo. A fun??o de Euler ? (n) ¨¦ definida como o n¨²mero de
inteiros positivos n?o excedendo n que s?o relativamente primos com n.

?( ) =
?


Propriedades da fun??o ? de Euler
(i)
Se p ¨¦ primo, ent?o ? (p) = p ¨C 1;
(ii)
A fun??o ? de Euler ¨¦ multiplicativa. Isto ¨¦, mdc (m, n) = 1, ent?o ? (m?n) = ?
(m) ?? (n).

Exemplo: Seja m = 8 e a ??Z*8, onde ? (m) = 4 e Z*8 = {1, 3, 5, 7}. Dessa forma, tem-se
que: 14 ? 1 (mod 8), 34 ? 1 (mod 8), 54 ? 1 (mod 8) e 74 ? 1 (mod 8). Multiplicando ambos
os lados desta equa??o por a, tem-se o seguinte:
(a)(a? (m) mod m) = (1)(a) ? a? (m)+1 (mod m) ? a
Dessa forma, 15 ? 1 (mod 8), 35 ? 3 (mod 8), 55 ? 5 (mod 8) e 75 ? 7 (mod 8) . Este ajuste
alg¨¦brico garante o funcionamento do RSA, pois permite que se possa cifrar os dados e
depois decifr¨¢-los.

3.4 ¨C Algoritmo de Euclides

O objetivo do algoritmo de Euclides ¨¦ calcular o m¨¢ximo divisor comum entre dois
n¨²meros inteiros positivos. Seja a e b inteiros positivos e que a ¡Ý b. O algoritmo de


12

Euclides consiste em dividir a por b, obtendo o resto r1. Se r1 ? 0, divide-se b por r1,
obtendo o resto r2. Se r2 ? 0, divide-se r1 por r2, obtendo-se o resto r3 e assim por diante. O
¨²ltimo resto diferente de zero desta seq¨¹¨ºncia de divis?es ¨¦ o m¨¢ximo divisor comum entre
a e b. Os quocientes n?o s?o usados diretamente no c¨¢lculo do m¨¢ximo divisor comum.
Exemplo: Calcular o mdc(26, 7)
A seguir ¨¦ apresentado um exemplo did¨¢tico, utilizando o algoritmo de Euclides,
onde o quadro da figura 3.1 ¨¦ preenchido com os c¨¢lculos parciais das divis?es necess¨¢rias
para encontrar o mdc(26, 7).


Figura 3.1 ¨C Quadro com c¨¢lculos parciais para encontrar mdc(26, 7)

Dessa forma, tem-se que o mdc(26, 7) = 1, que ¨¦ o ¨²ltimo resto n?o nulo da
seq¨¹¨ºncia de divis?es. Analogamente, pode-se observar que:
mdc(26, 7) = mdc(7, 5) = mdc(5, 2) = mdc(2, 1) = mdc(1, 0) = 1.

3.5 ¨C Algoritmo Estendido de Euclides

Assim como o nome indica, o algoritmo estendido de Euclides ¨¦ uma extens?o do
algoritmo original de Euclides. Atrav¨¦s deste algoritmo ¨¦ f¨¢cil calcular tanto o M¨¢ximo
Divisor Comum (MDC), neste caso representado por d, entre dois n¨²meros inteiros ? e ?
atrav¨¦s da express?o: ? ? a + ? ? b = d, onde a e b s?o n¨²meros inteiros positivos, como
tamb¨¦m o inverso multiplicativo de um inteiro positivo em um m¨®dulo m.

Exemplo: Calcular 7-1 em Z26.
A seguir ¨¦ apresentado um exemplo did¨¢tico do c¨¢lculo do inverso multiplicativo
de 7 em Z26, utilizando o algoritmo estendido de Euclides. Conforme a figura 3.1,
calculando o mdc(26, 7), obtemos a seq¨¹¨ºncia de divis?es que s?o escritas a seguir:
26 = 3 ? 7 + 5, 7 = 1 ? 5 + 2 e 5 = 2 ? 2 + 1
Resolvendo a equa??o linear modular:
1 = 5 - 2 ? 2


13

= 5 - (7 - 5) ? 2
= 3 ? 5 - 2 ? 7
= 3 ? (26 - 3 ? 7) - 2 ? 7
= 3 ??26 - 11 ? 7
Logo, 7-1 = -11 (mod 26) = 15

3.6 ¨C Grupos
Um grupo ¨¦ constitu¨ªdo de dois componentes b¨¢sicos: um conjunto e uma opera??o
definida neste conjunto. Define-se o conjunto de G e a opera??o de *. Por esta opera??o
entende-se como uma regra que a cada dois elementos a, b ? G associa um terceiro
elemento a * b que tamb¨¦m est¨¢ em G. Entretanto nem toda associa??o ¡°conjunto e
opera??o¡± constituem um grupo. Para obter-se um grupo, ¨¦ necess¨¢rio que a opera??o
satisfa?a algumas propriedades [17].
Seja G um conjunto munido de uma opera??o * . Diz-se que a opera??o * define
uma estrutura de grupo sobre o conjunto G ou que o conjunto G ¨¦ um grupo em rela??o ¨¤
opera??o * se, e somente se [17]:
1. para qualquer elemento a, b ? G, a * b ? G. Isto ¨¦, o resultado de uma
opera??o entre dois elementos do grupo G vai ser um elemento do grupo G
(propriedade de fechamento);
2. a opera??o * ¨¦ associativa, isto ¨¦, a*(b*c) = (a*b)*c para todo a,b,c ? G
(propriedade associativa);
3. existe um elemento identidade e ? G, tal que a*e = e*a = a para todo a ? G
(propriedade identidade);
4. para cada a ? G existe um elemento a-1 ? G, chamado inverso de a, tal que
a*a-1 = a-1*a = e (propriedade inversa).

3.6.1 ¨C Grupos Abelianos
Um grupo (G,*) ¨¦ abeliano se ele for um grupo comutativo. O grupo G ¨¦
comutativo ou abeliano se, e somente se:
a*b = b*a, ? a, b ? G, conhecida como propriedade comutativa.



14

Exemplo: Seja o conjunto dos n¨²meros inteiros (Z) e a opera??o de adi??o usual (+), para
todo a, b, c ? Z, tem-se [17]:
? a + b = c. Assim, a opera??o + ¨¦ fechada em Z.
? a + (b + c) = (a + b) + c. A propriedade associativa da opera??o (+) ¨¦
assegurada.
? o elemento identidade da adi??o ¨¦ 0, como 0 ? Z, logo temos que,
a + 0 = 0 + a = a.
? para cada elemento a ? Z existe um elemento -a ? Z, chamado de inverso de a.
Assim tem-se que, a + (-a) = -a + a = 0 (elemento identidade).
? a + b = b + a. Logo Z ¨¦ um grupo abeliano, ou seja, a propriedade comutativa
¨¦ garantida em Z.

Todas as propriedades de grupo foram satisfeitas, por isso o conjunto dos n¨²meros
inteiros e a opera??o de adi??o ¨¦ um grupo, denotado pelo par (Z,+).

Contra-exemplo: Seja o conjunto dos n¨²meros inteiros (Z) com a opera??o de
multiplica??o usual (?), para todo a, b, c ? Z, tem-se [17]:

? a ? b = c. Assim, a opera??o ? ¨¦ fechada em Z.
? a ? (b ? c) = (a ? b) ? c. A propriedade associativa da opera??o foi assegurada.
? O elemento identidade da multiplica??o ¨¦ 1, como 1 ? Z logo, tem-se que,
a ? 1 = 1 ? a = a.
? para todo elemento a ? Z n?o existe o elemento a-1 ? Z, chamado de inverso
de a. Portanto essa propriedade n?o ¨¦ satisfeita.

Como mostrado, os elementos do conjunto Z, exceto o elemento 1, n?o possuem
inversos multiplicativos em Z. Por esse motivo, o conjunto dos n¨²meros inteiros com a
opera??o de multiplica??o usual n?o ¨¦ um grupo.



15

3.6.2 ¨C Grupos Finitos
Um grupo ¨¦ finito se seu conjunto possui um n¨²mero finito de elementos, ou seja,
um grupo (G,*) ¨¦ finito se G ¨¦ um conjunto finito, onde o n¨²mero de elementos de G ¨¦
chamado de ordem do grupo.

Exemplo: Seja o conjunto G={1,-1} e a opera??o de multiplica??o usual (?), temos:

? 1 ? (-1) = -1. A propriedade de fechamento ¨¦ satisfeita.
? 1 ? (-1 ? 1) = (1 ? (-1)) ? 1. A propriedade associativa da opera??o ¨¦
assegurada.
? -1 ? 1 = 1 ? (-1) = 1. Como 1 ¨¦ o elemento identidade da multiplica??o e 1 ? G,
ent?o o conjunto G possui o elemento identidade.
? o inverso de 1 = 1-1 = 1 e o inverso de -1 = (-1)-1 = -1. Observa-se que todos os
elementos de G possui inverso multiplicativo.

Todas as propriedades de grupo foram satisfeitas e como G{-1,1} ¨¦ um conjunto
finito, logo (G,?) ¨¦ um grupo finito.

3.7 ¨C An¨¦is
Um anel ¨¦ um conjunto A munido de duas opera??es: uma de adi??o que ¨¦
representada por + e uma de multiplica??o que ¨¦ representada por ?, onde as seguintes
propriedades s?o satisfeitas [17]:
? em rela??o ¨¤ adi??o, A ¨¦ um grupo comutativo (abeliano) com o elemento
identidade da adi??o (0).
? a opera??o de multiplica??o (?) ¨¦ associativa.
a ? (b ? c) = (a ? b) ? c
? a opera??o de multiplica??o (?) ¨¦ distributiva em rela??o ¨¤ opera??o de
adi??o (+).
a ? (b + c) = a ? b + a ? c, ? a, b, c ? A.

Um anel ¨¦ anel comutativo, se
? a ? b = b ? a, ? a, b ? A.


16


Um anel ¨¦ anel com identidade, se,
? existe o elemento identidade da multiplica??o 1 ? A, sendo,
a ? 1 = 1 ? a = a, ? a ? A.
Sendo a ? 0 e b ? 0 com a ? b = 0, a e b s?o chamados divisores pr¨®prios de zero.
Esta propriedade ¨¦ conhecida como lei do cancelamento do produto.

Exemplo 1: Dado Z6 = {0,1,2,3,4,5}, tem-se que
2 ? 3 = 0 (mod 6).

Um anel comutativo com unidade e sem divisores de zero ¨¦ chamado de anel de
integridade.

Exemplo 2: Um exemplo t¨ªpico de anel de integridade ¨¦ o conjunto dos n¨²meros inteiros
(Z) com as opera??es usuais de adi??o e multiplica??o.

3.8 ¨C Corpos
Os an¨¦is dos conjuntos Z e Q s?o ambos comutativos com unidade. Para ambos
vale a lei do cancelamento do produto. Mas, enquanto que no anel Z somente o elemento 1
admite sim¨¦trico multiplicativo, no anel Q todo elemento n?o nulo admite sim¨¦trico
multiplicativo. Fatos como esses sugerem a defini??o a seguir [17].

Defini??o 1: Um anel A, comutativo com unidade, recebe o nome de corpo, se todo
elemento a, n?o nulo do anel A, admite sim¨¦trico multiplicativo (a-1). Ou seja:
a ? a-1 = 1, ? a ? 0, a-1 ? A

Usando conceitos de grupos, define-se corpos. Um corpo ¨¦ um conjunto de
elementos nos quais pode-se fazer adi??o, subtra??o, multiplica??o e divis?o sem deixar o
conjunto. A adi??o e a multiplica??o devem satisfazer as propriedades comutativa,
associativa e distributiva. Uma defini??o formal de corpo ¨¦ apresentada a seguir.



17

Defini??o 2: Seja F um conjunto de elementos no qual duas opera??es bin¨¢rias, a adi??o
(+) e a multiplica??o (?), s?o definidas. O conjunto F juntamente com duas opera??es
bin¨¢rias + e ?, ¨¦ um corpo se as seguintes propriedades forem satisfeitas [17]:
1. F ¨¦ um grupo comutativo (abeliano) em rela??o ¨¤ opera??o de adi??o (+). O
elemento identidade da adi??o ¨¦ denotado por 0 (zero).
2. o conjunto dos elementos do grupo F sem o elemento zero (F ¨C {0}) ¨¦ um
grupo comutativo em rela??o ¨¤ opera??o de multiplica??o (?). O elemento
identidade da multiplica??o ¨¦ denotado por 1.
3. a opera??o de multiplica??o (?) ¨¦ distributiva em rela??o ¨¤ opera??o de adi??o
(+), isto ¨¦:
a ? (b + c) = a ? b + a ? c, ? a,b,c ? F.
Da defini??o anterior, um corpo F consiste em pelo menos dois elementos, a
identidade aditiva e a identidade multiplicativa. O inverso aditivo de um elemento a ¨¦
denotado por ¨Ca (? a ? F), e o inverso multiplicativo de um elemento a ¨¦ denotado por
a-1 (? a ? 0 ? F).
Ainda, em rela??o a corpo, pode-se afirmar:
1. subtraindo um elemento b de um corpo de um outro elemento a desse mesmo
corpo, ¨¦ o mesmo que somar o elemento a com o inverso aditivo de b (-b), isto
¨¦, a ¨C b = a + (-b), ? a,b ? F.
2. sendo b ? 0, dividir o elemento a por b, ¨¦ o mesmo que multiplicar a pelo
inverso multiplicativo de b (b-1), isto ¨¦, a ? b = a ? b-1, ? a,b ? F.
Corpos finitos s?o corpos que possuem um n¨²mero finito de elementos. O n¨²mero
de elementos em um corpo ¨¦ chamado de ordem do corpo. Os corpos finitos tamb¨¦m s?o
conhecidos como Corpos de Galois (GF ¨C Galois Field). As opera??es do algoritmo AES
s?o realizadas sobre o corpo finito GF(28).
O conjunto Zn ¨¦ definido como o conjunto de restos m¨®dulo n, ou seja,
Zn = {0, 1, 2,..., n-1}. Quando existe o inverso multiplicativo para todo elemento ? 0 em
Zn, ent?o Zn ¨¦ denotado como um corpo.
Se a ¨¦ primo relativo a n, seu m¨¢ximo divisor comum ¨¦ 1, ent?o pelo algoritmo
estendido de Euclides, existem n¨²meros s e t tais que 1 = s ? a + t ? n. Isso significa que
um n¨²mero a ? Z tem inverso multiplicativo se, e somente se, a for primo relativo a n.


18

Zn ¨¦ corpo se, e somente se, n for um n¨²mero primo, j¨¢ que neste caso todos os
n¨²meros 0 < a < n s?o primos relativo a n, e portanto tem inverso multiplicativo.
Corpo de Galois de tamanho p, denotado por GF(p), onde p ¨¦ um n¨²mero primo,
pode ser constru¨ªdo considerando o conjunto de inteiros Zp = {0,1,2,...,p-1}. Em rela??o ¨¤
adi??o modulo p, os elementos de Zp formam um grupo comutativo aditivo. Em rela??o ¨¤
multiplica??o m¨®dulo p, os elementos de Zp sem o elemento 0 (Zp ¨C {0}), formam um
grupo comutativo multiplicativo e como as duas opera??es s?o distributivas, ent?o tem-se
um corpo.

3.8.1 ¨C GF(p)
Os inteiros {0,1,2,...,p-1}, onde p ¨¦ um n¨²mero primo, formam um corpo GF(p) em
rela??o ¨¤ adi??o e ¨¤ multiplica??o m¨®dulo p.

Exemplo: Constru??o do GF(3)
Os inteiros {0,1,2} usando a adi??o e a multiplica??o m¨®dulo 3, tem-se que a
propriedade distributiva ¨¦ assegurada ? a, b, c ? GF(3). Esse corpo pode ser representado
pelas seguintes tabelas:

Tabela 3.1 ¨C Soma m¨®dulo 3
Tabela 3.2 ¨C Multiplica??o m¨®dulo 3



3.8.2 ¨C Corpo GF(28)
Na implementa??o do algoritmo AES, a forma como os n¨²meros ser?o
representados pode influenciar na constru??o do c¨®digo. Visto que os elementos do GF(28)
podem ser representados de v¨¢rias maneiras diferentes, a representa??o bin¨¢ria
proporciona, inclusive, o uso de polin?mios no que diz respeito ¨¤s opera??es sobre esses
elementos.


19

Cada elemento do GF(28) pode ser visto com um byte B que consiste em
b7,.b6,.b5,.b4,.b3,.b2,.b1.e.b0 com coeficientes em GF{2}. Assim sua representa??o como
polin?mio ¨¦

Exemplo:

87 = 01010111b = x6 + x4 + x2 + x1 + 1
131 = 10000011b = x7 + x1 + 1



20

CAP?TULO IV
O ALGORITMO AES


Neste cap¨ªtulo ser¨¢ apresentada uma descri??o do novo padr?o de criptografia
sim¨¦trica, AES (Advanced Encryption Standard), mostrando de forma detalhada todo seu
funcionamento.

4.1 ¨C Breve Hist¨®rico do AES

Com o grande avan?o computacional, uma chave de 56 bits como usada pelo
algoritmo DES n?o poderia mais garantir a seguran?a das informa??es, isto levou o NIST
(National Institute of Standards and Technology) a propor um novo padr?o criptogr¨¢fico.
Sendo assim, em 1997 deu-se in¨ªcio ao concurso que escolheria o sucessor do DES, este
seria chamado de AES. O NIST especificou que os candidatos deveriam operar com chave
e bloco variando com tamanho m¨ªnimo de 128 bits e estabeleceu alguns requisitos [8]:
? Seguran?a forte: O algoritmo deveria suportar ataques futuros.
? Projeto simples: Facilitar a an¨¢lise e certifica??o matem¨¢tica da seguran?a
oferecida pelo algoritmo.
? Desempenho: ser razoavelmente bom em uma variedade de plataformas, variando
de Smart Cards a servidores.
? N?o serem patenteados: os algoritmos devem ser de dom¨ªnio p¨²blico e estar
dispon¨ªveis mundialmente.
Al¨¦m destes requisitos gerais, o NIST especificou que o AES precisaria ser de
cifragem em bloco sim¨¦trico, com um tamanho de bloco de 128 bits e suporte para
tamanhos de chaves de 128, 192 e 256 bits [9].
Na primeira rodada do concurso, o NIST recebeu 21 submiss?es, sendo que apenas
15 atendiam ¨¤s exig¨ºncias. Sendo que estes foram submetidos a testes e avaliados pela
comunidade cient¨ªfica.
Para a segunda rodada foram selecionados apenas cinco algoritmos: MARS, RC6,
Rijndael, Serpent e TwoFish. Todos esses algoritmos satisfaziam as condi??es
estabelecidas, assim como a de ser mais r¨¢pido que o 3DES.
Tr¨ºs anos e meio ap¨®s o in¨ªcio do concurso, no dia 2 de outubro de 2000, o NIST
chega ¨¤ escolha do vencedor: Rijndael. O nome ¨¦ uma fus?o de Vincent Rijmen e Joan


21

Daemen, os dois belgas criadores do algoritmo. Deste momento em diante, esse cifrador
passou a ser chamado de AES, sendo publicado como FIPS 197 (Federal Information
Processing Standard) [10].
A escolha do cifrador Rijndael contra outros quatro finalistas do processo, os quais
tamb¨¦m foram classificados como altamente seguros pelo NIST, baseou-se na efici¨ºncia e
baixa requisi??o de recursos [8].

4.2 ¨C Detalhes de funcionamento do AES

Ao contr¨¢rio dos outros algoritmos, o AES apresenta conceitos alg¨¦bricos e
matem¨¢ticos diferentes dos utilizados anteriormente, pois o projeto do AES est¨¢ voltado
para o paralelismo, o que o torna mais r¨¢pido que os demais.
No AES os dados s?o agrupados em uma estrutura chamada de estado, onde s?o
realizadas opera??es em cada parte do programa. Os estados s?o representados por uma
matriz.
Cada matriz estado pode variar de acordo com o tamanho do da chave utilizada.
Desta forma, ela apresenta tr¨ºs op??es de tamanho de chave, sendo estas de 128, 192 ou
256 bits.
Quanto as suas itera??es, o AES varia o Nr (n¨²mero de rodadas) de acordo com o
Nb (tamanho do bloco) e o Nk (Tamanho da chave), como mostrado na tabela 4.1.

Tabela 4.1 ¨C Nr em fun??o do tamanho de blocos e chave
Nr
Nb = 4
Nk = 128 bits
10
Nk = 192 bits
12
Nk = 256 bits
14

Para cada rodada, o AES realiza quatro fun??es: ByteSub, Deslocamento de linhas,
MixColumn e Adi??o de chave de rodada, sendo que a cada transforma??o ocorrida em
uma determinada fun??o, a matriz resultante serve como entrada para a pr¨®xima fun??o
[6].


22

No estado, denotado pelo s¨ªmbolo s, cada byte individual possui dois ¨ªndices: um
n¨²mero de linha r, variando de 0 ¡Ü r ? 4 e um n¨²mero de coluna c, variando de 0 ¡Ü c ? Nb
[17].
Ao iniciar o processo de cifragem ou decifragem, o texto a ser cifrado ¨¦ colocado
em uma matriz de entrada seguindo a mesma configura??o da matriz estado, como
ilustrado na figura 4.1. As opera??es de cifragem ou decifragem s?o realizadas no estado,
onde o valor final ¨¦ copiado para a sa¨ªda ¨C os bytes out0, out1, ..., out15.


Figura 4.1 ¨C Bytes de entrada, matriz estado e bytes de sa¨ªda

4.3 ¨C Especifica??o do Algoritmo

A transforma??o ByteSub modifica cada byte usando uma matriz conhecida como
S-BOX. Esta matriz ¨¦ gerada matematicamente durante a execu??o.
A pr¨®xima opera??o que o AES realiza ¨¦ a de deslocamento de linhas. Aqui as
linhas do estado sofrem uma rota??o de acordo com a tabela 4.2.

Tabela 4.2 ¨C Deslocamento em fun??o do tamanho do bloco

L1
L2
L3
Nb = 4
1
2
3
Nb = 6
1
2
3
Nb = 8
1
3
4

No caso da fun??o MixColumn, o programa v¨º cada coluna do estado como um
polin?mio, onde, com os mesmos realiza uma multiplica??o m¨®dulo x4 + 1 com o
polin?mio a(x) = {03}x3+{01}x2+{01}x+{02} [6].

23

No algoritmo AES, na cifragem e decifragem, cada bloco (estado) utiliza uma
fun??o que ¨¦ composta de quatro diferentes transforma??es orientadas a bytes:
1. SubBytes: Os bytes de cada bloco s?o substitu¨ªdos por seus equivalentes em
uma tabela de substitui??o (S-box);
2. ShiftRows: Nesta etapa, os bytes s?o rotacionados em grupos de quatro bytes;
3. MixColumns: Cada grupo de quatro bytes sujeita-se a uma multiplica??o em
GF(28), o que proporciona a cada byte do grupo influenciar todos os outros
bytes;
4. AddRoundKey: Nesta fase, o bloco de dados ¨¦ alterado por meio da subchave
da rodada, que realiza uma opera??o xor com o bloco inteiro.

Um detalhe interessante notado no algoritmo foi que, diferentemente do DES que ¨¦
revers¨ªvel apenas invertendo a seq¨¹¨ºncia das chaves, no AES, deve-se realizar as inversas
matem¨¢ticas de cada fun??o.

4.4 ¨C Processo de Cifragem


No processo de cifragem, os bytes de entrada s?o copiados para uma matriz estado
conforme a figura 4.1. Ap¨®s a adi??o inicial da chave de rodada, o estado ¨¦ transformado
pela aplica??o das fun??es que comp?e o AES, para este processo o algoritmo deve ser
executado em um n¨²mero definido de rodadas de acordo com o tamanho da chave e o
tamanho do bloco.

Para cada rodada do algoritmo o processo deve seguir uma ordem definida de
fun??es j¨¢ apresentadas, assim como na figura 4.2, sendo que a rodada final ¨¦ ligeiramente
diferente das Nr ¨C 1 rodadas.
As transforma??es SubBytes, ShiftRows, MixColumns e AddRoundKey s?o descritas
a seguir. As subchaves k0, k1,..., knr s?o geradas atrav¨¦s do processo de expans?o de chaves,
descrito na se??o 4.8.
Como apresentado na figura 4.2, todas as Nr rodadas s?o id¨ºnticas com exce??o da
rodada final, na qual n?o inclui a transforma??o MixColumns.



24


Figura 4.2 ¨C Processo de cifragem do AES

4.4.1 ¨C Transforma??o SubBytes

A transforma??o SubBytes modifica cada byte por meio do uso de uma tabela de
substitui??o chamada S-box, que pode ser criada em tempo de execu??o, visto que ¨¦
constitu¨ªda por meio de uma opera??o matem¨¢tica. A S-box ¨¦ constru¨ªda por meio da
composi??o de duas transforma??es:

25

1. realiza o inverso multiplicativo do elemento em GF(28), com a representa??o
definida por um polin?mio com coeficientes em {0,1} e o elemento 0x00 ¨¦
mapeado em si mesmo.
2. Aplicando-se uma opera??o similar de transforma??o definida na figura4.3.

A aplica??o dessa opera??o para cada byte do estado consiste na opera??o denotada
por SubByte. Para realizar o processo de decifragem ¨¦ necess¨¢rio efetuar a opera??o por
meio da matriz inversa, que ¨¦ obtida com a inversa multiplicativa desta sobre o corpo
GF(28) [8].


Figura 4.3 ¨C Transforma??o no AES

Na figura 4.4, ¨¦ poss¨ªvel visualizar a forma de atua??o da opera??o SubByte sobre o
estado. Do lado esquerdo, um estado com Nb = 4, isto ¨¦, um bloco de dados de 128 bits.
Cada elementodo estado S ¨¦ mapeado por meio da S-box em um novo elemento no estado
no S¡¯, ocupando exatamente a mesma posi??o em S?.


Figura 4.4 ¨C Transforma??o SubBytes


26

A tabela de substitui??o S-box utilizada na transforma??o SubBytes ¨¦ apresentada
em nota??o hexadecimal na tabela 4.3. Por exemplo, se s1,1 = 0x53, ent?o o valor de
substitui??o ser¨¢ determinado pela interse??o da linha com ¨ªndice 5 e coluna com ¨ªndice 3
na tabela 4.2. O resultado atribu¨ªdo em s¡¯1,1 ser¨¢ o valor 0xed.

Tabela 4.3 ¨C Tabela de substitui??o S-box em nota??o hexadecimal


4.4.2 ¨C Transforma??o ShiftRows

Na transforma??o ShiftRows, os bytes das ¨²ltimas tr¨ºs linhas s?o deslocados
circularmente em diferentes n¨²meros de bytes. A primeira linha, r = 0, n?o ¨¦ deslocada.
Mais especificamente, a transforma??o ShiftRows procede da seguinte forma:

onde o valor de rota??o de shift(r, Nb) depende da linha de n¨²mero r, como a seguir
(lembrando que Nb = 4 para o padr?o AES):

O emprego do deslocamento circular tem por finalidade aumentar a difus?o
(propaga??o dos efeitos de um bit de texto simples para outros bits no texto cifrado) sobre
os elementos do estado. ? importante notar que de modo diferente ao que ocorre com os
outros cifradores da atualidade, onde a rota??o ¨¦ realizada em bits, no AES a rota??o ¨¦
realizada em bytes [10].


27

A motiva??o para essa opera??o ser realizada em bytes relaciona-se ao fato de que
o estado j¨¢ sofreu altera??es em bits no processo de adi??o de chaves, no in¨ªcio do
processo de cifragem. A figura 4.5 ilustra o efeito da transforma??o ShiftRows.


Figura 4.5 ¨C Transforma??o ShiftRows


4.4.3 ¨C Transforma??o MixColumns

Na transforma??o MixColumn, as colunas do estado s?o consideradas como
polin?mios sobre GF(28), sendo efetuada uma multiplica??o m¨®dulo (x4 + 1) com um
polin?mio fixo a(x), com coeficientes em nota??o hexadecimal, dado por:

Isto pode ser escrito como uma multiplica??o matricial. Assim, tem-se que:


Como resultado dessa multiplica??o, os quatro bytes de cada coluna s?o
substitu¨ªdos pelo seguinte c¨¢lculo:

28


A figura 4.6 ilustra o efeito da transforma??o MixColumns.

Figura 4.6 ¨C Transforma??o MixColumns

4.4.4 ¨C Transforma??o AddRoundKey

Na transforma??o AddRoundKey, a chave de rodada ¨¦ adicionada ao estado atrav¨¦s
de uma opera??o xor. Cada chave de rodada consiste em Nb palavras originadas do
processo de expans?o de chaves (descrito na se??o 4.4), que ¨¦ adicionada a uma coluna do
estado, como a seguir:

onde w[i] s?o as chaves expandidas e round ¨¦ um valor na faixa de 0 ¡Ü round ¡Ü Nr.
No processo de cifragem, a adi??o inicial da chave de rodada ocorre quando
round = 0, antes do in¨ªcio das itera??es do processo de cifragem. A aplica??o da
transforma??o AddRoundKey nas Nr rodadas ocorre quando 1 ¡Ü round ¡Ü Nr. A figura 4.7
ilustra o efeito desta transforma??o.

29


Figura 4.7 ¨C Transforma??o AddRoundKey


4.5 ¨C Processo de Expans?o de chaves

O processo de expans?o de chaves gera um total de Nb(Nr + 1) palavras a partir da
chave principal. O algoritmo AES necessita inicialmente de um conjunto de Nb palavras e
cada um das Nr rodadas necessita de Nb palavras de chave. O resultado do processo de
expans?o de chaves consiste em um vetor unidimensional de palavras e cada rodada utiliza
como subchave a quantidade de quatro palavras seq¨¹encialmente (no caso de Nb = 4 e
Nk = 4), caminhando progressivamente sobre os elementos do vetor. O processo de
expans?o de chaves tamb¨¦m ¨¦ conhecido como processo de gera??o de subchaves. A figura
4.8 apresenta o vetor de chaves expandidas, onde cada palavra ¨¦ nomeada como wi, onde i
¨¦ a posi??o da palavra dentro vetor [17].


Figura 4.8 ¨C Visualiza??o do vetor de chaves do AES




30

4.6 ¨C Processo de Decifragem

O processo de decifragem no AES consiste na execu??o de diferentes opera??es,
em virtude de sua ess¨ºncia matem¨¢tica. O AES necessita de inversas matem¨¢ticas de suas
transforma??es para realizar o processo de decifragem [8].
O processo de decifragem ¨¦ ilustrado na figura 4.9.

Figura 4.9 ¨C Processo de Decifragem do AES

Realizando-se opera??es inversas da ShiftRow efetuando-se rotacionamento c¨ªclico
¨¤ direita na mesma quantidade de bytes da opera??o de cifragem. A opera??o inversa que

31

possui maior complexidade ¨¦ a MixColumn. Do mesmo modo que o processo de cifragem,
na transforma??o InvMixColumn as colunas dos estados s?o considerados polin?micos
sobre um corpo GF(28) e sofrem multiplica??o modulo x4 ¨C 1 com um polin?mio fixo a-1
(x) dado por:

a-1 (x) = 0Bx3 + 0Dx2 + 09x + 0E

A opera??o inversa da adi??o de chave de rodada ¨¦ a mesma opera??o utilizada
para o processo de cifrar. A opera??o inversa de SubByte consiste no uso da inversa
matem¨¢tica da S-box utilizada para cifrar. A S-box invertida pode ser analisada por meio
da tabela 4.4.

Tabela 4.4 ¨C Tabela substitui??o S-box inversa em nota??o hexadecimal


Neste cap¨ªtulo foi apresentado o algoritmo AES, que ¨¦ o novo padr?o de
criptografia sim¨¦trica de dados. O quarto cap¨ªtulo descreve o algoritmo SHA-1, que gera
resumos de mensagens de 160 bits.


32

CAP?TULO V
SECURE HASH ALGORITHM 1 (SHA-1)


Neste cap¨ªtulo ser¨¢ apresentado o algoritmo de hash criptogr¨¢fico SHA-1 (Secure
Hash Algorithm), que atualmente ¨¦ o mais utilizado em uma grande variedade de
aplica??es e protocolos, incluindo TLS (Transport Layer Security), SSL (Secure Sockets
Layer), PGP (Pretty Good Privacy), SSH (Secure Shell e IPSec (IP Security Protocol).

5.1 ¨C Introdu??o

A fam¨ªlia de algoritmos SHA foi desenvolvida pela NSA (National Security
Agency) juntamente como NIST (National Institute of Standards and Technology) e
publicadas como um padr?o do governo Norte-Americano, sendo que o primeiro membro
da fam¨ªlia, publicado em 1993, foi oficialmente chamado de SHA, no entanto, ¨¦
freq¨¹entemente chamado de SHA-0. Logo em seguida, em 1994, foi publicado o algoritmo
SHA-1, sendo uma revis?o do SHA.
O algoritmo SHA-1 produz uma representa??o compactada de uma mensagem. Esta
representa??o possui um tamanho definido de 160 bits de sa¨ªda, chamados tamb¨¦m de
resumo da mensagem.
Este tamanho de sa¨ªda ¨¦ gerado independente do tamanho da mensagem, ou seja,
mesmo para uma mensagem de tamanho menor que 264 bits a sa¨ªda resultante do algoritmo
ser¨¢ uma seq¨¹¨ºncia de 160 bits.
Sendo assim, o resumo da mensagem pode ser utilizado como entrada para
algoritmos de assinatura digital, visto que este processo torna o m¨¦todo de assinatura
eficiente, pois qualquer mudan?a na mensagem ir¨¢ resultar em um diferente resumo,
tornando assim a verifica??o da assinatura errada.
O SHA-1 ¨¦ considerado seguro, pois ¨¦ computacionalmente dif¨ªcil reconstruir uma
mensagem a partir de um determinado resumo ou encontrar duas diferentes mensagens que
correspondem ao mesmo resumo [11].
Atualmente existem novas fun??es da fam¨ªlia SHA, que est?o sendo testadas e
verificadas quanto a sua efici¨ºncia, s?o eles o SHA-256, SHA-384 e SHA-512.




33

5.2 ¨C Defini??es

A seguir s?o apresentadas as terminologias para seq¨¹¨ºncias de bits e inteiros,
utilizadas na descri??o do SHA-1:
? um d¨ªgito hexadecimal ¨¦ um elemento do conjunto {0, 1, ¡­, 9, A, ¡­, F}. Um
d¨ªgito hexadecimal ¨¦ representado por 4 bits.
? uma palavra equivale a uma seq¨¹¨ºncia de 32 bits, que pode ser representada
como um seq¨¹¨ºncia de 8 d¨ªgitos hexadecimais.
? um inteiro entre 0 e 232 ¨C 1 inclusive, pode ser representado como uma palavra.
Os quatro bits menos significativos de um inteiro s?o representados pelos
d¨ªgitos mais ¨¤ direita de uma palavra em nota??o hexadecimal. Se Z ¨¦ um
inteiro, 0 ? Z ? 264, ent?o Z = 232 ? X + Y, onde 0 ? X ? 232 e 0 ? Y ? 232.
Uma vez que X e Y podem ser representados como palavras x e y,
respectivamente, Z pode ser representado como um par de palavras (x, y).
? um bloco equivale a uma seq¨¹¨ºncia de 512 bits. Um bloco (isto ¨¦, B) pode se
representado como uma seq¨¹¨ºncia de 16 palavras.

5.3 ¨C Opera??es sobre palavras


Sobre as palavras s?o realizadas as seguintes opera??es:

? opera??es l¨®gicas bit a bit sobre palavras:
AND, OR, XOR e NOT.
? adi??o realizada m¨®dulo 232.
A opera??o x + y ¨¦ definida a seguir. As palavras x e y representam inteiros X e
Y, onde 0 ? X ? 232 e 0 ? Y ? 232. Para um inteiro positivo U e V, U mod V
¨¦ resto da divis?o de U por V. Calculando Z = (X + Y) mod 232, ent?o 0 ? Z ?
232. Convertendo Z para uma palavra z, defini-se z = x + y.
? a opera??o de deslocamento circular ¨¤ esquerda ROTLn(x), onde x ¨¦ uma
palavra e n ¨¦ um inteiro 0 ? n ? 232, ¨¦ definida por
ROTLn(x) = (x << n) OR (x >> 32 ¨C n).
Na defini??o anterior, x << n ¨¦ obtido da seguinte forma: descartando os n bits
mais ¨¤ esquerda de x e ent?o preenchendo o resultado com n zeros ¨¤ direita (o
resultado continua sendo uma palavra de 32 bits). x >> n ¨¦ obtido descartando


34

os n bits mais ¨¤ direita de x e ent?o preenchendo o resultado com n zeros ¨¤
esquerda. Assim, ROTLn(x) ¨¦ equivalente a um deslocamento circular de x por
n posi??es ¨¤ esquerda.

5.4 ¨C Gera??o do Hash

O SHA-1, possui um buffer que ¨¦ atualizado a cada opera??o e que ser¨¢ o resultado
final do hash, sendo que, neste caso como a sa¨ªda ¨¦ de 160 bits, o buffer ¨¦ composto de 5
partes de 32 bits cada. Estas partes s?o denominadas A, B, C, D e E. O SHA-1 possui
tamb¨¦m outro buffer de cinco parte de 32 bits que ¨¦ chamado de H0, H1, H2, H3 e H4 [8].
Os valores do buffer do algoritmo SHA-1 deve ser iniciado com os valores contidos
na tabela 5.1.

Tabela 5.1 ¨C Valores para preencher o buffer do SHA-1
Buffer
Valor Inicial
H0
67
45
23
01
H1
EF
CD
AB
89
H2
98
BA
DC
FE
H3
10
32
54
76
H4
C3
D2
E1
F0

No in¨ªcio de cada passo, um bloco de entrada x de 512 bits ¨¦ utilizado para criar um
vetor W de 80 palavras de 32 bits. Inicialmente, o bloco de entrada x ¨¦ dividido para
formar as 16 primeiras palavras do vetor W(W0 a W15). As palavras de W16 a W79 s?o
formadas segundo a express?o:

Wi = (Wi - 3 XOR Wi - 8 XOR Wi - 14 XOR Wi - 16) << 1

O algoritmo SHA-1 possui quatro fun??es e quatro constantes que s?o utilizadas de
acordo com a intera??o que estiver sendo processada. Desta forma, as constantes utilizadas
que indicam em qual intera??o devem ser aplicadas segue como na tabela 5.2.




35

Tabela 5.2 ¨C Fun??es e constantes utilizadas pelo SHA-1
Fun??es
Constante
Itera??o
f(B, C, D) = (B AND C) OR ((NOT B) AND D)
5A827999
0 a 19
f(B, C, D) = B XOR C XOR D
6ED9EBA1
20 a 39
f(B, C, D) = (B AND C) OR (B AND D) OR (C AND D)
8F1BBCDC
40 a 59
f(B, C, D) = B XOR C XOR D
CA62C1D6
60 a 79

Antes de executar as itera??es necess¨¢rias para o processamento de um bloco com o
algoritmo SHA-1, realiza-se uma c¨®pia de valores contidos no buffer H0, H1, H2, H3 e H4
para o buffer A, B, C, D e E.
O processamento de um bloco com o SHA-1 consiste em 80 itera??es, sendo estas
de 0 a 79, em que s?o processadas as seguintes opera??es:

TEMP = (A<<5) + f(B, C, D) + E +W +Ki;
E = D;
D = C;
C = (B<<30);
B = A;
A = TEMP;

Ap¨®s a execu??o do la?o principal, realiza-se o somat¨®rio dos dois buffers como
segue:

H0 = H0 + A;
H1 = H1 + B;
H2 = H2 + C;
H3 = H3 + D;
H4 = H4 + E;

Ap¨®s processar todos os blocos da mensagem, o valor do hash estar¨¢ armazenado
no buffer H0, H1, H2, H3 e H4.


36

CAP?TULO VI
O ALGORITMO RSA


Neste cap¨ªtulo ser¨¢ apresentado o algoritmo criptogr¨¢fico de chave assim¨¦trica
conhecido como RSA.

6.1 ¨C Introdu??o

O RSA foi desenvolvido no MIT (Massachusetts Institute of Tecnology) em 1978
por Ron Rivest, Adi Shamir e Len Adleman, sendo assim o primeiro algoritmo assim¨¦trico ou
de chaves p¨²blicas [5].

Apesar de estar sob ataques h¨¢ mais de vinte e cinco anos, desde sua apresenta??o,
nenhum desses ataques exigiu sequer uma mudan?a na estrutura do mesmo. Contudo, o RSA
possui pontos fracos sendo que o principal deles ¨¦ o alto tempo computacional [5].

Os algoritmos de chave p¨²blica devem ser fun??es de dif¨ªcil invers?o, para que
outros usu¨¢rios em geral n?o consigam obter a chave privada a partir da chave p¨²blica.
Al¨¦m disso, os inteiros envolvidos devem ser extremamente grandes, da ordem de centenas
de d¨ªgitos decimais, para que um computador avan?ado n?o consiga testar todas as
combina??es poss¨ªveis em tempo h¨¢bil [4].

6.2 ¨C Gera??o de chaves

As duas chaves do RSA s?o obtidas por um c¨¢lculo que ¨¦ computacionalmente
f¨¢cil, sendo um algoritmo de tempo polinomial, por¨¦m ¨¦ computacionalmente dif¨ªcil obter
uma das chaves a partir do conhecimento de somente uma delas [5], ou seja, mesmo uma
das chaves sendo p¨²blica, ¨¦ extremamente dif¨ªcil obter a outra chave atrav¨¦s desta.

Para a obten??o do par de chaves no algoritmo RSA, ¨¦ necess¨¢rio seguir alguns
passos, como descrito a seguir;


1. Selecionar dois n¨²meros primos p e q, sendo p ¡Ù q;
2. Calcule o valor de n = p ¡Á q;
3. Calcule ? (n) = (p ¨C 1) ¡Á (q ¨C 1);
4. Selecione um inteiro e relativamente primo ¨¤ ? (n);


37

5. Calcula-se d de forma que (d ¡Á e) mod ? (n) = 1.

Sendo assim, obt¨ºm-se a chave p¨²blica KU = {e, n} e a chave privada KR = {d, n}.
Um exemplo do processo de gera??o das chaves do algoritmo RSA pode ser vista
no exemplo a seguir:

1. Gera??o de dois primos p e q
p = 17 e q = 23

2. Calcular n
n = pq = 391

3. Calcular ?(n)
?(n) = (p ¨C 1)(q ¨C 1) = 352

4. Escolher um inteiro e relativamente primo a ?(n)
e = 7

5. Calcular o inverso de e m¨®dulo ?(n)
d = e-1 mod ?(n) = 151

? Chave p¨²blica: n = 391, e = 7
? Chave privada: n = 391, d = 151

6.3 ¨C Processo de cifragem e decifragem

Obtida as chaves o pr¨®ximo passo do algoritmo RSA ¨¦ a cifragem e decifragem,
estes se baseiam basicamente em dois c¨¢lculos, sendo uma para cifrar e outro para decifrar.
Sendo M a mensagem a ser cifrada, C o texto cifrado, e a chave p¨²blica, d a chave
privada e n um n¨²mero do m¨®dulo calculado e conhecido por todos. Os c¨¢lculos do
algoritmo RSA s?o:

Criptografar: C = Me mod n
Decriptografar: M = Cd mod n



38


Deste modo, o m¨¦todo RSA s¨® ser¨¢ ¨²til se utilizando a opera??o de decifragem
sobre um bloco de dados codificado obt¨ºm-se o bloco original, ou seja, o m¨¦todo tem que
realmente ser revers¨ªvel para funcionar corretamente.

Sendo um sistema com os par?metros p e q, com n = p ¡Á q. Tendo assim n e e para
o processo de codifica??o e n e d para o de decodifica??o, como provar que o m¨¦todo
citado anteriormente funciona?

Considerando que um bloco b ¨¦ um inteiro e 1 ? b ? n-1, sabendo tamb¨¦m que C ¨¦ a
fun??o para cifrar e D a fun??o para decifrar, desta forma D(C(b)) = b. Sendo assim, pode-
se provar que D(C(b)) ? b (mod n), pois tanto D(C(b)) quanto b est?o no intervalo que vai
de 1 a n-1. Logo, s¨® podem ser congruente m¨®dulo n se s?o iguais [3].

Seguindo a defini??o tem-se que:

( ) ? ( e )d
ed
CD b
b
? b (mod n)


Sabendo que d ¨¦ o inverso de e modulo ? (n), ent?o ed = 1 + k? (n), para algum k
[3]. Observe que, como d e e s?o inteiros maiores que 2 e ? (n) > 0, ent?o K > 0.
Substituindo na equa??o anterior temos:

ed
1? k? (n)
? (n)
?
? (
)k
b
b
b
b (mod n)


De acordo com o Teorema de Euler, ?(n)
a
mod n ? 1, logo ¨¦ poss¨ªvel provar que
?(n)
a
mod n ? 1 (mod n). Portanto

D (
C )
b ? b (mod n),
Esta afirma??o estaria completa se n?o estivesse um pouco errada, pois foi usado
?
apenas o teorema de Euler, que neste caso s¨® pode ser usado para concluir que b (n)
¡Ô1(mod n) se mdc(b,n =1).

Tendo-se que n = pq, pode-se calcular a forma reduzida de bed m¨®dulo p e m¨®dulo
q. Sendo o c¨¢lculo an¨¢logo a ambos, bastando calcular apenas uma delas. Sendo:


ed = 1 + k? (n) = 1 + k(p ¨C 1)(q ¨C 1),


39

Logo:

bed ¡Ô b * (bp ¨C 1)k(q ¨C 1) (mod p).


Supondo que p n?o divide b, usando o Teorema de Fermat onde tem-se que bp ¨C 1 ¡Ô
1 (mod p), obt¨ºm-se bed ¡Ô b (mod p).

Atrav¨¦s desta, ca¨ª-se no mesmo problema, por¨¦m o fato de p ser primo nos permite
tratar facilmente o caso em que p divide b. Tendo assim, b ¡Ô 0 (mod p), ¨¦ poss¨ªvel notar
que a congru¨ºncia ¨¦ facilmente verificada. Assim, bed ¡Ô b (mod p) vale para qualquer valor
de b.

Desta forma, sabendo-se que bed ¡Ô b (mod p) vale para qualquer que seja p. Sendo
assim, ¨¦ poss¨ªvel mostrar que bed ¡Ô b (mod q), ou seja, bed ¨C b ¨¦ divis¨ªvel por p e por q.
Como n = pq, conclu¨ª-se que bed ¡Ô b (mod p), para qualquer n¨²mero inteiro b. Desta forma,
tem-se a prova que o algoritmo RSA funciona [3].

Sendo assim, tendo a descri??o detalhada de seu funcionamento e provando que
funciona, surge ent?o uma pergunta: o que faz do RSA um algoritmo seguro? Basicamente,
o RSA concentra sua seguran?a apenas na dificuldade de se fatorar um n¨²mero inteiro
muito grande. Hoje em dia n?o existem algoritmos eficientes que resolvam este problema
em tempo h¨¢bil.
Atualmente, o algoritmo RSA vem sendo muito utilizado em diversos servi?os,
como por exemplo, para solucionar um problema certifica??o digital onde ¨¦ poss¨ªvel
garantir a autenticidade e a integridade de muitas informa??es que trafegam neste meio
inovador que ¨¦ a Internet. Dentre os protocolos e servi?os que utilizam o RSA s?o eles:
Certificados de Seguran?a, Assinaturas Digitais e PGP, assim como tamb¨¦m os protocolos
SSL, TLS e IPSec [7].



40

CAP?TULO VII
INFRA-ESTRUTURA DE CHAVE P?BLICA

Esta parte do trabalho destina-se a explicar os principais elementos que comp?e
uma infra-estrutura de chaves p¨²blicas.

7.1 ¨C Introdu??o

A tecnologia das comunica??es evoluiu a um ponto que processos que antes eram
realizados atrav¨¦s de presen?a f¨ªsica passaram a ser realizados pela Internet, facilitando
assim a abrang¨ºncia, a flexibilidade e a redu??o de custos. Desta forma documentos que
antes eram assinados de forma manuscrita, e que eram validados por cart¨®rios, passaram a
serem migrados para este novo ambiente.
Para dar validade a assinaturas geradas no meio digital, surge a ICP (Infra-
Estrutura de Chave P¨²blica). Uma ICP torna poss¨ªvel identificar e confiar em um usu¨¢rio
da Internet, que pode ser outra pessoa, uma esta??o de trabalho ou qualquer outra entidade
eletr?nica.
A partir de 2001, o governo brasileiro deu legitimidade ¨¤ ICP-Brasil, por meio de
uma medida provis¨®ria, a partir deste momento vem credenciando empresas para emitirem
certificados digitais.

7.2 ¨C Certifica??o e Certificados

Uma assinatura sozinha n?o garante a autenticidade de quem a assinou, ou seja,
qualquer pessoa tem a possibilidade de gerar um par de chaves correlacionadas e publicar
uma delas, isto n?o garante que esta pessoa ¨¦ realmente quem ela diz ser.
Sendo assim, ao utilizar uma chave p¨²blica, uma entidade precisa ter a garantia de
que est¨¢ usando uma chave que efetivamente corresponde ¨¤ chave privada de outra
entidade, haja visto que qualquer entidade tem a possibilidade de gerar um par de chaves
correlacionadas e publicar uma delas [12].
Desta forma, uma entidade tem a necessidade de verificar se a chave utilizada para
assinar um documento pertence realmente a quem o assinou. Para evitar que uma terceira


41

pessoa se passe pela entidade que assinou o documento, faz-se necess¨¢rio a utiliza??o de
uma entidade certificadora que possibilite dar validade ao processo.
Essa entidade confi¨¢vel equivale a um cart¨®rio eletr?nico, onde se pode depositar
uma chave p¨²blica, obtendo um certificado e associando tal chave p¨²blica com o seu
propriet¨¢rio, ou seja, com a entidade que gerou e det¨¦m a chave privada correspondente.
Assim, quando uma entidade apresenta um certificado registrado ¨¦ como se esta entidade
estivesse apresentando uma carteira de identidade digital cuja validade pode ser verificada
junto ¨¤ entidade confi¨¢vel que gerou o certificado [12].
Tento em vista que as entidades que se comunicam possuem cada uma, um
certificado assinado por uma autoridade confi¨¢vel, garante que cada entidade destas seja
vista por outra de forma bem identificada e aut¨ºntica.

7.2.1. ¨C Tipos de Certificados

Existem diversos tipos de certificados digitais, cada qual com sua particularidade.
Eles foram surgindo deve ao in¨ªcio do conceito de chave assim¨¦trica, sendo desenvolvidos
para atender as necessidades da ¨¦poca.
Atualmente com a grande utiliza??o destas solu??es alguns padr?es foram criados
com o intuito de reunir o que h¨¢ de melhor em cada proposta.
Na ICP-Brasil, o padr?o que vem sendo utilizado ¨¦ o X.509, mais especificamente a
vers?o 3, que foi publicada em 2002.

7.2.2. ¨C X.509

O padr?o X.509 ¨¦ o formato padr?o mais usado para certificados. Embora o
formato de certificados X.509 fa?a parte do padr?o X.500 para a constru??o de diret¨®rios
globais de nomes e atributos, ele ¨¦ comumente usado em trabalhos de criptografia com
uma defini??o de formato para certificados [13].
Assim, como ilustrado na Figura 7.1, o certificado X.509 cont¨¦m os seguintes
campos:




42


Figura 7.1 ¨C Estrutura do Certificado X.509.

? Vers?o: Este campo indica as vers?es de formato do certificado, estes podem ser
vers?o 1, vers?o 2 ou vers?o 3.
? N¨²mero serial de certificado: ? um n¨²mero inteiro ¨²nico do certificado emitido
pela entidade certificadora.
? Identificador do algoritmo de assinatura: Identifica o algoritmo utilizado para
assinar o certificado.
? Nome do emissor: Esse campo identifica o nome distinto ND (Nome Distinto) com
o qual a autoridade certificadora cria e assina esse certificado. O ND ¨¦ uma
conven??o de nomes hier¨¢rquicos definidos na recomenda??o X.500, cujo objetivo
¨¦ garantir que o nome seja ¨²nico.
? Validade ¨C N?o antes / N?o depois: Este campo identifica o per¨ªodo que o
certificado ¨¦ considerado v¨¢lido. Caso o certificado esteja dentro de per¨ªodo
descrito neste campo ele s¨® perder¨¢ a validade caso seja revogado.
? Nome do sujeito: Este campo identifica o ND do dono do certificado. Este campo
n?o poder¨¢ ser nulo.


43

? Informa??es sobre a chave p¨²blica do sujeito: Cont¨¦m a chave p¨²blica e a
identifica??o do algoritmo do propriet¨¢rio do certificado.
? Identificador ¨²nico de emissor: Campo opcional presente na vers?o 2 e 3. Cont¨¦m o
identificador ¨²nico que ¨¦ utilizado para exibir de maneira n?o-amb¨ªgua o nome
X.500 da autoridade certificadora.
? Identificador ¨²nico de sujeito: Campo opcional presente na vers?o 2 e 3. Cont¨¦m
um identificador ¨²nico que ¨¦ utilizado para exibir de maneira n?o-amb¨ªgua o nome
X.500 do propriet¨¢rio do certificado.
? Extens?es: Possibilita que uma autoridade certificadora inclua informa??es que
normalmente n?o seria fornecida pelo conte¨²do b¨¢sico de um certificado.
? Assinatura: Identificador do algoritmo utilizado e a assinatura digital da autoridade
que emitiu o certificado.

7.2.3. ¨C PKCS (Public Key Cryptography Standards)

A Empresa RSA, portadora de um papel importante no mercado de normaliza??es,
mant¨¦m uma s¨¦rie de padr?es para o uso de criptografia de chave p¨²blica. Estes padr?es
s?o denominados PKCS (Public Key Cryptography Standards). Atualmente, existem 15
padr?es j¨¢ definidos, assim como descrito na tabela 7.1.

Tabela 7.1 ¨C Tabela de padr?es de criptografia de chaves p¨²blica definidos pela RSA.
Padr?o
Defini??o
Define padr?es para criptografia de chaves p¨²blica usando o algoritmo
PKCS#1
RSA.
PKCS#2
Inclu¨ªdo dentro do PKCS #1
PKCS#3
Especifica um padr?o para o estabelecimento de uma conex?o segura
usando o algoritmo Diffie-Hellman
PKCS#4
Inclu¨ªdo dentro do PKCS #1
Define recomenda??es para a implementa??o de algoritmos baseados em
PKCS#5
senhas
PKCS#6
Estabelece um padr?o de sintaxe para certificados estendidos
PKCS#7
Descreve a sintaxe para dados assinados ou cifrados
PKCS#8
Estabelece um padr?o para informa??es de chaves privadas


44

PKCS#9
Define tipos de atributos a serem usados nos padr?es PKCS #6, PKCS #7,
PKCS #8 e PKCS #10
Descreve a sintaxe para requisi??es de assinaturas de certificados de chaves
PKCS#10 p¨²blicas
PKCS#11 Define uma API para dispositivos de armazenamento de informa??es de
criptografia e fun??es de performance de criptografia
PKCS#12 Descreve um formato para o armazenamento e transporte de chaves
privadas, certificados, etc..
PKCS#13 Especifica padr?es para criptografia usando curvas el¨ªpticas.
PKCS#14 Define padr?o para gera??o de n¨²meros pseudo-aleat¨®rios
PKCS#15 Estabelece um padr?o para assegurar que usu¨¢rios poder?o usar criptografia
para autenticar-se em aplica??es

7.3 ¨C Autoridade Certificadora

Uma AC (Autoridade Certificadora) tem como responsabilidade emitir certificados
digitais. Estes certificados podem ser emitidos para diversos tipos de entidades, tais como:
pessoa, computador, departamento de uma institui??o, empresa etc [11].
Devido a autoridade certificadora ser uma entidade reconhecida para todos como
confi¨¢vel, a possibilita gerar certificados digitais que possuam a assinatura eletr?nica da
AC. Cada certificado tamb¨¦m conter¨¢ um nome ¨²nico ND al¨¦m de uma s¨¦rie de
informa??es pertinentes a ele, dentre estas a chave p¨²blica, que neste caso ser¨¢ utilizada
para comprovar sua identidade.
Um certificado digital, assim que criado, recebe uma data que marca o per¨ªodo de
validade do mesmo. Esta data pode variar de um a tr¨ºs anos e caso exceda este per¨ªodo, o
certificado perde a validade, sendo enviado para uma Lista de Certificados Revogados
CRL (Certificate Revocation List). Todos os certificados contidos nesta lista ser?o negados
por serem considerados inv¨¢lidos.
Sendo as autoridades certificadoras entidades que determinam as pol¨ªticas e os
procedimentos que orientam o uso de certificados por todo o sistema, cabe a esta, diversas
atribui??es importantes, que s?o:
? Manter a mais r¨ªgida seguran?a poss¨ªvel para a chave privada a AC;
? Assegurar que o seu pr¨®prio certificado seja amplamente distribu¨ªdo;
? Emiss?o de certificados;
? Revoga??o de certificados;


45

? Emiss?o da lista de certificados revogados;
? Publica??o da lista de certificados revogados;
? Disponibilizar a situa??o do certificado quando requerida;
? Ger¨ºncia de chaves criptogr¨¢ficas;
? Publica??o de suas regras operacionais;
? Fiscaliza??o do cumprimento dessa pol¨ªtica pelos usu¨¢rios.

7.4 ¨C Autoridade Registradora

Uma AR (Autoridade Registradora) pode ser considerada como um componente
estendido de uma ICP. A medida que aumenta o n¨²mero de entidades finais dentro de uma
dada comunidade da ICP, tamb¨¦m aumenta a carga de trabalho de um AC. Desta forma
uma AR pode servir como uma entidade intermedi¨¢ria entra a AC e seus usu¨¢rios finais,
ajudando a AC em suas fun??es rotineiras para processamento de certificados [14].
Uma AR fornece as seguintes funcionalidades:
? Aceitar e verificar as informa??es de registro sobre novos registradores;
? Gerar chaves em favor de usu¨¢rios finais;
? Aceitar e autorizar solicita??es para um backup e uma recupera??o de chave;
? Aceitar e autorizar solicita??es para revoga??o de certificado;
? Distribuir ou recuperar dispositivos de hardware como tokens, quando necess¨¢rio.

7.5 ¨C Reposit¨®rio de Certificados

Depois que um certificado for gerado, ele precisa ser armazenado para uma
utiliza??o posterior. As Autoridades Certificadoras freq¨¹entemente utilizam um diret¨®rio
de certificado ou uma localiza??o central de armazenamento. Tais reposit¨®rios, al¨¦m de
armazenarem os certificados dos usu¨¢rios finais, s?o utilizados para armazenar tamb¨¦m
certificado das AC e listas de certificados revogados.
O diret¨®rio p¨²blico n?o necessita estabelecer uma conex?o segura com o usu¨¢rio no
momento da busca e download de um certificado. O certificado ¨¦ conferido atrav¨¦s de sua
assinatura digital. O diret¨®rio p¨²blico deve somente possuir os dados atualizados, al¨¦m de
assegurar ao usu¨¢rio mecanismos para manter se n¨ªvel de disponibilidade muito alto [15].


46

Sendo componente importante de uma ICP, um diret¨®rio de certificados fornece um
¨²nico local p¨²blico para a administra??o e distribui??o de certificados.
Os diret¨®rios, em sua grande maioria s?o baseados nos servi?os de diret¨®rio X.500
e LDAP.

7.5.1. ¨C Servi?o de Diret¨®rios X.500

O padr?o X.500 foi criado pela ISO em 1988, desde ent?o tem sofrido uma s¨¦rie de
revis?es que inclu¨ªram suporte para controle de acesso e programa de gerenciamento. O
X.500 permite a usu¨¢rios e aplica??es acessar diret¨®rios sem a consci¨ºncia de que os
servidores de acesso est?o distribu¨ªdos [15].
X.500 ¨¦ um protocolo desenvolvido para trabalhar com o modelo OSI, desta forma
este n?o tornou-se padr?o da Internet, pois o modelo OSI n?o ¨¦ compat¨ªvel com a Internet.

7.5.2. ¨C LDAP

Buscando solucionar o problema do servi?o de diret¨®rios X.500, onde o mesmo n?o
pode ser compat¨ªvel com a Internet, um grupo da Universidade de Michigan prop?s uma
estrat¨¦gia mais leve, esta passou a ser chamada de LDAP (Lightweight Directory Access
Protocol).
O LDAP foi desenvolvido para ser um protocolo leve e flex¨ªvel e, diferentemente
do X.500 que trabalha somente com o protocolo OSI, ele trabalha com o protocolo TCP/IP.
Desta forma, ele rapidamente tornou-se um padr?o de acesso de diret¨®rios na Internet [15].

7.2 ¨C Revoga??o de Certificados

A ICP ¨¦ respons¨¢vel n?o s¨® pelo processo de cria??o do certificado e sim por todo o
ciclo de vida deste certificado, ou seja, deste a requisi??o do certificado at¨¦ sua revoga??o.
Quando um certificado ¨¦ gerado, ele recebe um per¨ªodo de validade. O per¨ªodo ¨¦
definido pela autoridade certificadora que o emitiu. No entanto, algumas circunst?ncias
podem levar o certificado a perder sua validade, mesmo que ele ainda n?o tenha alcan?ado
seu per¨ªodo de validade. Dentre as poss¨ªveis raz?es est?o mudan?a de atributos do



47

certificado, ou seja, troca de endere?o ou email do propriet¨¢rio do certificado, ou at¨¦
mesmo alguma perda da chave privada, levando a perda de confian?a no certificado.
O m¨¦todo mais comum para revogar um certificado ¨¦ atrav¨¦s do uso de uma CRL
(Certificate Revocation List). Em sua forma b¨¢sica, uma CRL ¨¦ uma estrutura de dados
assinada contendo uma lista de data/hora dos certificados revogados. O assinante de uma
CRL ¨¦, em geral, a mesma entidade que originalmente a emitiu, neste caso a AC [14].
Um CRL, logo ap¨®s ser criado, pode ser distribu¨ªdo livremente ou armazenado em
um diret¨®rio p¨²blico assim como os certificados digitais.

7.6.1. ¨C Lista de Certificados Revogados

A LCR ¨¦ uma estrutura que cont¨¦m a lista de certificados revogados. Ela descreve
em detalhes os v¨¢rios campos que comp?e uma CRL na figura 7.2.


Figura 7.2 ¨C Estrutura Padr?o de uma CRL.

? Vers?o: Este campo indica a vers?o da CRL.


48

? Identificador do Algoritmo de Assinatura: Este campo cont¨¦m o identificador do
algoritmo utilizado para assinar a CRL.
? Nome do Emissor: Esse campo identifica o ND, com o formato X.500, da entidade
que emitiu a CRL.
? Esta atualiza??o(data/hora): Esse campo cont¨¦m um valor de data/hora indicando
quando a CRL foi emitida.
? Esta atualiza??o(data/hora): Esse campo opcional contem um valor de data/hora
indicando qual a pr¨®xima CRL ser¨¢ emitida.
? N¨²mero serial do certificado de usu¨¢rio / Data de revoga??o: Esse campo cont¨¦m a
lista dos certificados que foram revogados ou suspensos.
? Extens?es da entrada de CRL: Esse campo ¨¦ discutido na se??o 7.6.2.
? Extens?es de CRL: Esse campo ¨¦ discutido na se??o 7.6.3.
? Assinatura: Esse campo cont¨¦m a assinatura da AC.

7.6.2. ¨C Extens?es da Entrada de CRL

O padr?o X.509 define as quatro extens?es seguintes para utiliza??o com uma
CRL:
? C¨®digo de Raz?o: Essa extens?o especifica a raz?o da revoga??o de certificado.
? C¨®digo de Instru??o de Porte: Essa extens?o n?o-cr¨ªtica suporta a suspens?o
tempor¨¢ria de um certificado.
? Emissores de Certificados: Essa extens?o identifica o nome do emissor de
certificado associado a uma CRL indireta, que neste caso ¨¦ uma alternativa para
melhorar a distribui??o de CRLs.
? Data de Invalidade: Essa extens?o n?o-cr¨ªtica cont¨¦m um valor de data/hora
mostrado quando ocorreu um comprometimento suspeito ou conhecido pela chave
privada.

7.6.3. ¨C Extens?es de CRL

As seguintes extens?es de CRL foram definidas baseadas por CRL:



49

? Identificador de Chave Autoridade: Essa extens?o pode ser usada para diferenciar
entre m¨²ltiplas chaves de assinatura de CRL mantidas por essa AC.
? Nome Alternativo do Emissor: Essa extens?o associa uma ou mais formas
alternativas de nome com o emissor de CRL.
? N¨²mero de CRL: Essa extens?o n?o-cr¨ªtica fornece um meio para facilmente
reconhecer se uma dada CRL foi substitu¨ªda.
? Indicador Delta de CRL: Essa extens?o cr¨ªtica identifica a CRL como uma CRL
delta, ou seja, lista apenas as altera??es incrementais que ocorreram a partir da CRL
precedente.
? Emitindo um ponto de Distribui??o: Essa extens?o cr¨ªtica identifica o nome do
ponto de distribui??o da CRL para uma dada CRL.



50

CAP?TULO VIII
M?TODOS E FERRAMENTAS UTILIZADAS

Este cap¨ªtulo apresenta os m¨¦todos e ferramentas utilizadas para o processo de
implementa??o das aplica??es contidas neste trabalho de conclus?o de curso.
Inicialmente, descreve-se a plataforma de programa??o utilizada assim com a
linguagem de programa??o.

8.1 ¨C Hardware, Plataforma e Considera??es de Implementa??o

As implementa??es que ser?o apresentadas em anexo foram desenvolvidas
utilizando um computador com um processador Intel Pentium M 1,73 GHz, 1 GB de
mem¨®ria RAM, executando o sistema operacional Windows XP Professional Vers?o 2002
Service Pack 2 instalado. A linguagem utilizada para as implementa??es foi a Linguagem
Java?, devido o fato de esta oferecer um maior suporte em aplica??es criptogr¨¢ficas. Pelo
fato do sistema desenvolvido ser voltado para WEB, foi utilizada a plataforma JEE (Java
Enterprise Edition), sendo que a M¨¢quina Virtual Java utilizado foi a JDK 6.0.5. Para o
desenvolvimento foi utilizado o ambiente Eclipse 3.3.1.1.

A aplica??o foi desenvolvida para serem utilizadas em um ambiente WEB, podendo
assim ser utilizada por qualquer browser.

8.2 ¨C APIs JAVA

O Java possui uma arquitetura bem definida para implementa??o de fun??es
relativas ¨¤ seguran?a e criptografia. Na arquitetura de seguran?a modelada para o Java
existem tr¨ºs APIs.
? A JCA (Java Cryptography Architecture) ¨¦ respons¨¢vel por definir uma arquitetura
baseada em CSP (Cryptographic Service Providers). Nesta arquitetura, o
desenvolvedor que consome os servi?os criptogr¨¢ficos de um CSP n?o o utiliza
diretamente. O desenvolvedor deve utilizar a API definida pela JCA e caber¨¢ a API
chamar o CSP respons¨¢vel pela implementa??o real do servi?o requisitado.
? A JCE (Java Cryptography Extension) segue o conceito de CSPs definidos pela
JCA e ¨¦ respons¨¢vel por fun??es espec¨ªficas de criptografia (sim¨¦trica e


51

assim¨¦trica), gera??o e troca de chaves e algoritmos para MAC (Message
Authentication Code).
? A JSSE (Java Secure Socket Extension) ¨¦ respons¨¢vel por implementar conex?es
seguras em SSL e TLS. Com ele ¨¦ poss¨ªvel desenvolver aplica??es clientes que se
comunicam com um servidor de forma segura.

8.3 ¨C Bouncy Castle Provider


O Bouncy Castle ¨¦ um CSP muito famoso no mercado por ser OpenSource
(c¨®digo aberto). Escrito por um grupo de desenvolvedores australianos, o Bouncy Castle
CSP ¨¦ mais um CSP para JCA e JCE. Dentre suas principais caracter¨ªsticas pode-se citar:
? Implementa uma s¨¦rie de algoritmos de gera??o de Hash, Assinatura Digital e
criptografia sim¨¦trica e assim¨¦trica;
? Permite a gera??o e leitura de pacotes PKCS7;
? Permite a gera??o de conte¨²do S/MINE para envido de emails assinados e
criptografados;
? Compat¨ªvel com J2SE, J2EE e J2ME;
? Est¨¢ sendo portado para o mundo .NET, implementado em C#.
? Entre outros...

8.4 ¨C HTTP / HTTPS


O HTTP (HyperText Transfer Protocol) ¨¦ um protocolo de comunica??o que est¨¢
presente na camada de aplica??o. Ele ¨¦ utilizado para a transfer¨ºncia de dados por intranets
e pela World Wide Web.

O uso mais t¨ªpico do HTTP ¨¦ entre um navega??o WEB e um servidor WEB. Para
garantir confiabilidade, o HTTP utiliza TCP. Apesar disso ele ¨¦ um protocolo sem estados,
ou seja, cada transa??o ¨¦ tratada independentemente [9].

Desta maneira, uma implementa??o do protocolo HTTP cria uma nova conex?o
TCP (Transmission Control Protocol) entre o cliente e o servidor e terminara a conex?o
assim que terminada a transa??o.

O HTTPS (HyperText Trasnfer Protocol Secure), ¨¦ uma implementa??o do
protocolo HTTP sobre uma camada SSL ou do TLS, essa camada adicional permite que os


52

dados sejam transmitidos atrav¨¦s de uma conex?o criptografada e que se verifique a
autenticidade do servidor e do cliente atrav¨¦s de certificados digitais. Normalmente ¨¦
utilizada a porta TCP 443 para o protocolo HTTPS.

8.5 ¨C Tomcat


O Tomcat ¨¦ software livre e de c¨®digo aberto, surgido dentro do conceituado
projeto Apache Jakarta e que teve apoio e endosso oficial da Sun Microsystems como
implementa??o de refer¨ºncia para as tecnologias Java Servlet e JavaServer Pages (JSP).
Atualmente, o Tomcat tem seu pr¨®prio projeto de desenvolvimento independente, dentro
da Apache Software Foundation.

Tecnicamente, o Tomcat ¨¦ um Cont¨ºiner Web, parte da plataforma corporativa
JEE que abrange as tecnologias Servlet e JSP (Java Server Pages), incluindo tecnologias
de apoio relacionadas como Realms e seguran?a, JNDI Resources e JDBC DataSources. O
Tomcat tem a capacidade de atuar tamb¨¦m como servidor web/HTTP aut?nomo, ou pode
funcionar integrado a um servidor web dedicado, como Apache httpd ou Microsoft IIS, ou
ainda como parte integrante de um servidor de aplica??es mais amplo, como JBoss AS,
provendo os recursos de Java Servlet e JSP.

8.6 ¨C Eclipse

O Eclipse ¨¦ uma IDE (Integrated Development Environment) de c¨®digo aberto
para a constru??o de sistemas. No princ¨ªpio, ele era substituto patenteado do Visual Age
for Java, da IBM, mas teve seu c¨®digo-fonte aberto (open source) em novembro de 2001.
Atualmente, o Eclipse ¨¦ controlado por uma organiza??o sem fins lucrativos independente,
chamado Eclipse Foundation [16].
Atualmente o Eclipse ¨¦ uma das IDEs Java mais utilizada no mundo. Possui
como caracter¨ªstica marcante a forte orienta??o ao desenvolvimento baseado em plugins.
O Eclipse oferece uma estrutura flex¨ªvel, pois utiliza linguagem Java e vem com
exemplos de constru??o. Isso torna mais f¨¢cil a cria??o, integra??o e utiliza??o das
ferramentas, economizando tempo e dinheiro.




53

8.7 ¨C PostgresSQL


Como base de dados para o armazenamento dos certificados digitais cadastrados no
sistema, foi utilizado o banco de dados PostgresSQL.

Inicialmente desenvolvido na Universidade de Berkeley, Calif¨®rnia, a partir de
1996, depois se firmou como um projeto open source coordenado pelo PostgreSQL Global
Development Group. Embora as atividades do grupo sejam patrocinadas por diversas
organiza??es de todo o mundo.

A escolha para este banco de dados para o sistema se deu pela facilidade na
obten??o do mesmo, visto que este ¨¦ livremente distribu¨ªdo.



54

CAP?TULO IX
IMPLEMENTA??O E AN?LISES

Este cap¨ªtulo ¨¦ destinado ¨¤ apresenta??o e an¨¢lise da implementa??o do sistema de
autoridade certificado.

9.1 ¨C Principais Requisitos do Sistema

O sistema desenvolvido obedece aos seguintes requisitos funcionais e n?o funcionais:

9.1.1. ¨C Requisitos Funcionais

? Requisito Funcional 1: O sistema deve gerar um par de chaves, sendo que, uma deve ser
p¨²blica e a outra deve ser privada.
? Requisito Funcional 2: O sistema deve emitir certificados digitais auto-assinados
obedecendo ao padr?o X.509.
? Requisito Funcional 3: O sistema deve permitir ao usu¨¢rio a inclus?o dos seus dados
pessoais para a obten??o de um certificado digital.
? Requisito Funcional 4: O sistema deve permitir ao usu¨¢rio buscar por algum certificado
j¨¢ cadastrado na entidade certificadora.
? Requisito Funcional 5: O sistema deve emitir uma listagem dos certificados
cadastrados.
? Requisito Funcional 6: O sistema deve disponibilizar para download o certificado da
Entidade Certificadora Raiz, assim como tamb¨¦m, os certificados dos usu¨¢rios.

9.1.2. ¨C Requisitos N?o Funcionais

Requisito n?o Funcional 1: O sistema desenvolvido foi implementado utilizando a
linguagem de programa??o Java 6 Enterprise Edition, utilizando-se para isto a IDE Eclipse
3.3.1.1.
Requisito n?o Funcional 2: O sistema deve utilizar um sistema gerenciador de banco de
dados Postgres.


55

Requisito n?o Funcional 3: O sistema deve ser desenvolvido para ser utilizado em uma
interface WEB, sendo assim, dever¨¢ ser disponibilizado na Internet e visualizado pelos
usu¨¢rios por meio de um navegador Web.
Requisito n?o Funcional 4: O sistema deve possuir alta usabilidade, constituindo facilidade
para que os usu¨¢rios aprendam a oper¨¢-lo, tempo e esfor?o m¨ªnimos para que os usu¨¢rios
atinjam um n¨ªvel aceit¨¢vel de desempenho e m¨ªnimo esfor?o f¨ªsico e cognitivo dos
usu¨¢rios durante o processo de intera??o.

9.2 ¨C Especifica??o

Esta se??o apresenta o diagrama de classes, o diagrama de casos de uso e o
diagrama de seq¨¹¨ºncia do sistema desenvolvido. Para a cria??o destes diagramas foi
utilizada a ferramenta Jude Community 5.0b1.

9.2.1. ¨C Diagrama de Classes


O diagrama de classes exibido na figura 9.1 mostra as classes respons¨¢veis pela
emiss?o do certificado digital para a raiz e o certificado digital para os usu¨¢rios.


Figura 9.1 ¨C Estrutura Padr?o de uma CRL.


56



O diagrama da figura 9.1 representa o relacionamento das classes que comp?e o
sistema da autoridade certificadora, sendo suas descri??es apresentadas a seguir:

? Classe Mfunc


A Classe Mfunc foi estruturada com dois m¨¦todos importantes para este sistema. O
primeiro m¨¦todo ¨¦ o criarParChaves(), este m¨¦todo ¨¦ respons¨¢vel por criar o par de chaves
utilizando o algoritmo RSA para serem utilizados na cria??o do certificado. Neste m¨¦todo,
¨¦ instanciado um objeto do tipo SecureRandom(), que ¨¦ usado para gerar um n¨²mero
aleat¨®rio, este por sua vez ¨¦ informado ao RSA e assim gerado o par de chaves.

O segundo m¨¦todo ¨¦ o gravaCertificado(X509Certificate certificate, File file), este
m¨¦todo tem por finalidade gravar o certificado gerado em um diret¨®rio especificado pelo
sistema.

? Classe CAcertificado e Classe Raiz


As classes CAcertificado e Raiz s?o duas estruturas base para a gera??o de
certificados digitais. ? atrav¨¦s destas classes que o certificado ¨¦ gerado obedecendo a
estrutura do X.509.

Nesta classe existem dois m¨¦todos, o primeiro montarCertificado(Certificado
cert) tem por finalidade ajustar os dados para a cria??o do certificado. Logo ap¨®s montado
os dados, este m¨¦todo chama o m¨¦todo criarCertificado(cert).

Desta forma, o m¨¦todo criarCertificado(cert) tem por finalidade emitir os
certificados. Ele recebe o objeto montado no m¨¦todo montarCertificado(Certificado cert) e
atrav¨¦s das informa??es deste objeto gera o certificado.

No
m¨¦todo
criarCertificado(cert),
um
objeto
¨¦
criado
do
tipo
X509V3CertificateGenerator(), neste objeto criado s?o informados os dados que comp?e o
certificado digital.






57

? Classe EditarCertificado


Esta Classe ¨¦ um servlet que tem por finalidade receber as requisi??es das
p¨¢ginas JSP, trat¨¢-las e devolver o resultado. Um servlet ¨¦ considerado uma extens?o de
servidores. Esta tecnologia disponibiliza ao programador da linguagem Java uma interface
para o servidor Web atrav¨¦s de uma API (Application Programming Interface).

? Classe Certificado


A classe Certificado ¨¦ uma estrutura base para um modelo de certificado, nela
contem alguns atributos que fazem parte de um certificado digital.
Os atributos declarados nesta classe assim como mostrado no diagrama de classe
na figura 9.1 s?o todos do tipo private, sendo assim a exist¨ºncia dos m¨¦todos gets e sets
para cada atributo, sendo que os m¨¦todos gets para buscar algum dado contido nos
atributos e os m¨¦todos sets utilizado para escrever algum dado nos atributos desta classe.

? Classe Conexao


A classe Conex?o cont¨¦m um algoritmo para ser utilizado para conex?o com o
banco de dados, neste caso o Postgres.

Esta classe apresenta um atributo do tipo Connection, esta ¨¦ respons¨¢vel por criar
uma comunica??o com o banco de dados.

Nesta classe s?o apresentados tr¨ºs m¨¦todos importantes, s?o eles: conectar(),
getConnection() e fechar().

Os m¨¦todos que fazem parte desta classe s?o todos static, sendo assim, qualquer
m¨¦todo que queria estabelecer uma conex?o com o banco de dados, pode fazer isso de
forma direta.

? Classe CertificadoDao


A classe CertificadoDao ¨¦ uma estrutura que contem m¨¦todos que ser?o
respons¨¢veis em organizar os dados a serem manipulados pelo banco de dados.


58


Nesta classe existem m¨¦todos como o inserirCertificado(Certificado cert), este
m¨¦todo recebe como par?metro um objeto do tipo Certificado como par?metro e atrav¨¦s
deste monta a estrutura SQL (Structured Query Language) para ser adicionado no banco
de dados

9.2.2. ¨C Diagrama de Casos de Uso


O diagrama de Casos de Uso exibido na figura 9.2 mostra a intera??o do usu¨¢rio
com o sistema, ou seja, as funcionalidades do sistema de autoridade certificadora.


Figura 9.2 ¨C Diagrama de Casos de Uso do Sistema Autoridade Certificadora

? Caso de Uso 1: Cadastrar Certificado

Ator Principal:
Usu¨¢rio

Sum¨¢rio:


59

Este caso de uso ¨¦ utilizado para cadastrar informa??es referente ao certificado
digital. O principal objetivo deste caso de uso ¨¦ informar ao sistema dados pessoais do
usu¨¢rio para a cria??o do certificado.

Pr¨¦-Condi??es:
N?o apresenta nenhuma pr¨¦- condi??o.

Fluxo Principal:
1. Logo ap¨®s a abertura do sistema, o usu¨¢rio informa que deseja cadastrar um novo
certificado acessando o menu certifica??o;
2. O sistema apresenta um formul¨¢rio para que o usu¨¢rio possa entrar com seus dados
pessoais;
3. Conclu¨ªdo o preenchimento do formul¨¢rio o usu¨¢rio envia ao sistema;
4. O sistema coleta as informa??es e manda para uma classe especifica que gera o
certificado;
5. O sistema gera o certificado e as chaves, p¨²blica e privada, e as envia ao cliente
para que este as armazene com seguran?a.

Fluxo Alternativo:

N?o se Aplica

P¨®s-Condi??es:

Efetuar o download dos arquivos de certificado digital e da chave privada do
usu¨¢rio.

? Caso de Uso 2: Gerar Certificado

Ator Principal:
Usu¨¢rio

Sum¨¢rio:
Este caso de uso ¨¦ utilizado para gerar o par de chaves assim como tamb¨¦m ¨¦
respons¨¢vel pela elabora??o do certificado digital.


60


Pr¨¦-Condi??es:
? necess¨¢rio que o usu¨¢rio informe seus dados pessoais para que o sistema possa
gerar o seu certificado.

Fluxo Principal:
1. Informado os dados pessoais, o sistema os envia para o m¨¦todo respons¨¢vel em
gera o certificado;
2. O sistema gera um par de chaves;
3. O sistema utilizando o par de chaves e os dados do usu¨¢rio gera um certificado
seguindo o padr?o X.509;
4. O sistema gera o arquivo do certificado e o armazena em um diret¨®rio p¨²blico;
5. O sistema armazena os dados em uma base de dados.

Fluxo Alternativo:

N?o se Aplica

P¨®s-Condi??es:

N?o se Aplica

? Caso de Uso 3: Buscar Certificado

Ator Principal:
Usu¨¢rio

Sum¨¢rio:
Este caso de uso ¨¦ utilizado para que o usu¨¢rio possa buscar os certificados
cadastrados na Entidade Certificadora.

Pr¨¦-Condi??es:
N?o apresenta nenhuma pr¨¦- condi??o.

Fluxo Principal:


61

1. Logo ap¨®s a abertura do sistema, o usu¨¢rio informa que deseja buscar um
certificado cadastrado no sistema acessando o menu valida??o;
2. O sistema apresenta um formul¨¢rio para que o usu¨¢rio possa entrar com o nome do
usu¨¢rio e assim o sistema realizar a busca do certificado;
3. Conclu¨ªdo o preenchimento do formul¨¢rio o usu¨¢rio envia ao sistema;
4. O sistema buscar o certificado cadastrado;
5. O sistema mostra ao usu¨¢rio atrav¨¦s de uma lista o certificado cadastrado.

Fluxo Alternativo:

N?o se Aplica

P¨®s-Condi??es:

Apresenta uma listagem de certificados pelo qual o usu¨¢rio poder¨¢ fazer o
download do arquivo de certificado digital que se fizer necess¨¢rio.

? Caso de Uso 4: Buscar Certificado Raiz

Ator Principal:
Usu¨¢rio

Sum¨¢rio:
Este caso de uso ¨¦ utilizado para que o usu¨¢rio possa buscar o certificado Raiz da
Autoridade Certificadora. Este certificado ¨¦ disponibilizado para que o usu¨¢rio verifique a
validade dos certificados emitidos por ela, dando assim validade a esta autoridade
certificadora.

Pr¨¦-Condi??es:
N?o apresenta nenhuma pr¨¦- condi??o.

Fluxo Principal:
1. Logo ap¨®s a abertura do sistema, o usu¨¢rio informa que deseja buscar o certificado
Raiz da autoridade certificadora.


62

2. ? apresentado para o usu¨¢rio logo no inicio do sistema um link chamado certificado
Raiz.
3. O usu¨¢rio clica neste link e come?a o processo de download do certificado.

Fluxo Alternativo:

N?o se Aplica

P¨®s-Condi??es:

N?o se Aplica

9.2.3. ¨C Diagrama de Seq¨¹¨ºncia


O diagrama de Seq¨¹¨ºncia exibido na figura 9.3 mostra a intera??o do usu¨¢rio
com o sistema, ou seja, neste diagrama ¨¦ apresentado os passos de como o usu¨¢rio
interagem com as funcionalidades do sistema.


Figura 9.3 ¨C Diagrama de Seq¨¹¨ºncia do Sistema Autoridade Certificadora

9.3 ¨C Implementa??o

Na figura 9.4, apresenta-se a implementa??o da Autoridade Certificadora, onde esta
interface ¨¦ a p¨¢gina inicial do sistema. Nesta p¨¢gina apresenta-se um ¡°menu¡± com as



63

funcionalidades do sistema. Na parte inferior desta p¨¢gina de apresenta??o, est¨¢ o link para
que seja poss¨ªvel baixar o certificado raiz da autoridade certificadora. Pressionando sobre o
link ¡°Certificado Raiz¡± disponibilizar¨¢ para o usu¨¢rio a op??o para que este possa fazer o
download do arquivo de certificado raiz da autoridade certificadora.
Pressionando o link presente no menu, que tem como nome ¡°Certifica??o¡±, abrir¨¢
uma nova pagina assim como na figura 9.5. Esta apresenta-se a interface de cadastro de um
novo certificado. Nesta figura, quando o usu¨¢rio opta por gerar um novo certificado ¨¦
apresentado para ele este formul¨¢rio. ? atrav¨¦s destes dados que ser¨¢ montado o certificado
do usu¨¢rio.


Figura 9.4 ¨C Interface da Implementa??o do sistema de autoridade certificadora




64


Figura 9.5 ¨C Interface do Sistema para cadastrar um novo certificado

Na figura 9.6, apresenta-se a interface para efetuar a busca por um certificado j¨¢
cadastro na entidade certificadora. Quando o usu¨¢rio clicar sobre o ¡°menu¡± ¡°Valida??o¡±
ser¨¢ abre-se a janela mostrada na figura 9.6. Nesta p¨¢gina, quando acessada pela primeira
vez, ser¨¢ mostrado uma listagem com todos os certificados cadastrados. Na mesma p¨¢gina,
¨¦ apresentado um campo de busca onde o usu¨¢rio poder¨¢ digitar um nome e efetuar a busca
somente do certificado que desejar.




65


Figura 9.6 ¨C Interface do Sistema para Buscar Certificados Cadastrados


Com o download do certificado, emitido pela autoridade certificadora, um arquivo
ser¨¢ salvo, este certificado pode ser visto nas figuras 9.7 e 9.8. Este certificado poder¨¢ ser
instalado no reposit¨®rio de certificados digitais tanto do sistema operacional como tamb¨¦m
do browser para poss¨ªveis verifica??es.

Na figura 9.8 s?o apresentados os campos que fazem parte do certificado digital,
como por exemplo, a vers?o, seu n¨²mero de s¨¦rie, o algoritmo de assinatura, etc.





66


Figura 9.7 ¨C Certificado Raiz da Autoridade Certificadora


Figura 9.8 ¨C Certificado Raiz da Autoridade Certificadora Detalhado



67

A entidade certificadora implementada neste trabalho, mostrou-se eficiente no que
se refere as funcionalidades descritas neste cap¨ªtulo. Algumas funcionalidades, como ¨¦ o
caso da fun??o para revoga??o de certificados digitais, n?o puderam ser conclu¨ªdas devido
ao curto tempo proposto, por¨¦m esta fica como principal tema para trabalhos futuros.
Neste cap¨ªtulo apresentou-se a implementa??o da entidade certificadora e a an¨¢lise
da mesma. O d¨¦cimo cap¨ªtulo ser¨¢ apresentado as considera??es finais deste Trabalho de
Conclus?o de Curso e algumas sugest?es para trabalhos futuros.



68

CAP?TULO X
CONSIDERA??ES FINAIS E SUGEST?ES PARA TRABALHOS FUTUROS

Este cap¨ªtulo ¨¦ destinado ¨¤ apresenta??o das considera??es finais deste Trabalho de
Conclus?o de Curso e algumas sugest?es para trabalhos futuros.

10.1 ¨C Considera??es Finais


Este Trabalho de Conclus?o de Curso teve como objetivo estudar e descrever os
algoritmos criptogr¨¢ficos envolvendo criptografia sim¨¦trica, assim¨¦trica e fun??es hash,
assim como estudar e implementar uma entidade certificadora em um ambiente Web.
Apresentou-se o algoritmo AES, que ¨¦ o sistema padr?o de criptografia de chave
secreta, o algoritmo RSA que ¨¦ a mais bem sucedida implementa??o de sistemas de chave
p¨²blica e o algoritmo de hash criptogr¨¢fico SHA-1, utilizado em uma grande variedade de
aplica??es e protocolos de seguran?a.

Em seguida, apresentou-se os conceitos de uma Infra-Estrutura de Chaves P¨²blica,
mostrando como ela ¨¦ estruturada. Pode-se destacar nesta parte do projeto os certificados
digitais, sendo tomado como foco o padr?o X.509, utilizado pela ICP-Brasil em sua vers?o
3.

Com rela??o aos estudos realizados e a implementa??o da autoridade certificadora
destaca-se:
? A cria??o de um sistema Web, utilizando o cont¨ºiner Tomcat, sendo que este foi
configurado para ser utilizado o protocolo HTTPS para a transmiss?o da
informa??o;
? A implementa??o de um sistema capaz de emitir certificados seguindo o padr?o
X.509 para certificados digitais;
? Atrav¨¦s do sistema ¨¦ poss¨ªvel verificar os certificados cadastrados, sendo que ¨¦
dada a possibilidade de o usu¨¢rio do sistema buscar e baixar um certificado j¨¢
cadastrado.
Considerando os estudos e a implementa??o realizada, verifica-se que os objetivos
deste trabalho foram alcan?ados. Portanto, observa-se que:
? a matem¨¢tica est¨¢ cada vez mais presente na criptografia moderna;


69

? analisando as caracter¨ªsticas e os fatores de seguran?a do algoritmo RSA, observa-
se que a aritm¨¦tica de precis?o m¨²ltipla ¨¦ uma necessidade, pois este trabalha com
n¨²meros cada vez maiores;
? a linguagem Java possui uma arquitetura bem definida para a implementa??o de
fun??es relativas ¨¤ seguran?a e criptografia, sendo que tais fun??es s?o
satisfat¨®rias, possibilitando o desenvolvimento de aplica??es que utilizam
operandos grandes, facilitando a implementa??o do algoritmo RSA;
? a linguagem Java possui uma arquitetura baseada em CSP, ou seja, em provedores
de servi?o criptogr¨¢fico, sendo destacado o Bouncy Castle. Este mostrou-se
eficiente para a cria??o de certificados digitais.
Conclui-se que os estudos, as propostas e implementa??es realizadas revelaram
importantes ganhos de aprendizagem em n¨ªvel te¨®rico e pr¨¢tico, al¨¦m de embasamento
para an¨¢lise cr¨ªtica e reflexiva dos assuntos abordados.

10.2 ¨C Sugest?es para Trabalhos Futuros

Como sugest?o para trabalhos futuros, baseado nos resultados obtidos neste
Trabalho de Conclus?o de Curso, cita-se:
? Conclus?o da implementa??o da entidade certificadora, em destaque a parte
a qual se refere a revoga??o de certificados digitais;
? Estudo de outras t¨¦cnicas para o aprimoramento da implementa??o da
entidade certificadora, utilizando agora para sua implementa??o o LDAP
como reposit¨®rio p¨²blico de certificados;
? Estudo comparativo com outras entidades certificadoras j¨¢ existentes.




70

REFER?NCIAS BIBLIOGR?FICAS

[1] TRINTA, FERNANDO ANTONIO MOTA; MAC?DO, RODRIGO CAVALCANTI.
Um Estudo sobre Criptografia e Assinatura Digital. Pernambuco: Universidade
Federal de Pernambuco (UFPE), 1998.

[2] FRANCISCO, JOS? LUIZ MARTINS. Certifica??o Digital do Correio Eletr?nico
na Rede Municipal de Inform¨¢tica. Belo Horizonte: Prodabel / PUC (IRT), 2000.

[3] COUTINHO, S. C. N¨²meros Inteiros e Criptografia RSA. Rio de Janeiro:
IMPA/SBM, 2000.

[4] SILVEIRA, Aline Sousa. Criptografia de chave publica ¨C O papel da aritm¨¦tica em
precis?o m¨²ltipla. ITA.

[5] PAIX?O, C¨¦sar Alison Monteiro. Implementa??o e An¨¢lise Comparativa de
Varia??es do Criptossistema RSA. USP, 2003.

[6] MIERS, Charles Christian; CUST?DIO, Ricardo Felipe. Modelo Simplificado do
AES. Universidade Federal de Santa Catarina, 2002.

[7] BARBOSA, Luis Alberto de Morais. RSA Criptografia Assim¨¦trica e Assinatura
Digital. Unicamp, 2003.

[8] MORENO, Edward David. PEREIRA, F¨¢bio Dac¨ºncio. CHIARAMONTE, Rodolfo
Barro. Criptografia em Software e Hardware. S?o Paulo: Novatec Editora Ltda,
2005.

[9] STALLINGS, Willian. Redes e Sistemas de Comunica??o de Dados: Teoria e
Aplica??es Corporativas. Rio de Janeiro: Elsevier, 2005.

[10] NIST. FIPS 197. Federal Information Processing Standards Publication 197.
Announcing the ADVANCED ENCRYPTION STANDARD, 2001. Dispon¨ªvel em:


71

http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf ¨C 26/11/2007.

[11] SILVA, LINO SARLO DA. Public key Infrastructure PKI. S?o Paulo: Novatec
Editora Ltda, 2004.

[12] MARTINS, ALESSANDRO. Autoridade Certificadora para Acesso Seguro. Rio
de Janeiro: Laborat¨®rio RAVEL/COPPE/UFRJ, 2001.

[13] COULORIS, GEORGE. Sistemas Distribu¨ªdos: Conceito e Projeto. Porto Alegre:
Bookman, 2007, 4.ed.

[14] BURNETT, STEVE. Criptografia e Seguran?a: O Guia Oficial RSA. Rio de
Janeiro: Campus, 2002.

[15] IGNACZAK, LUCIANO. Um Novo Modelo de Infra-Estrutura de Chaves
P¨²blicas para uso no Brasil Utilizando Aplica??es com C¨®digo Fonte Aberto.
Florianopolis: Universidade Federal de Santa Catarina, 2002.

[16] BURNETTE, ED. Eclipse IDE: Guia de bolso. Porto Alegre: Bookman, 2006.

[17] OLIVEIRA, RENAN RODRIGUES: Estudo e Implementa??o de Protocolos
Criptogr¨¢ficos Oferecendo Servi?os de Privacidade, Integra??o, Autentica??o e
N?o Rep¨²dio. Goi?nia: Universidade Cat¨®lica de Goi¨¢s, 2007.

[18] Site da Infra-Estrutura de Chave P¨²blica Brasileira. Dispon¨ªvel em:
https://www.icpbrasil.gov.br/icp-pra-voce/sinList?synmap=noticias. Acessado em 04
de maio de 2008.