1. 1
CRIPTOGRAFIA E INFRA-ESTRUTURA DE CHAVES PÚBLICAS
Samuel Sangio Canuto Teixeira
Orientador: Prof. Maurílio Coutinho
Departamento de Eletrônica (DON)
Resumo – O objetivo deste trabalho é o de
levantar os aspectos de uma ICP e, em
específico, da ICP-Brasil; observando-se suas
leis, decretos, resoluções, que determinaram
suas evolução e atual condição operacional.
Antes, porém, será feita uma explanação
acerca da criptografia, seus algoritmos e os
dois tipos de chaves usadas, mostrando suas
diferenças e aplicabilidades.
Palavras-Chave: Criptografia, Chave
Pública, Infra-Estrutura de Chave Pública,
ICP-Brasil, Certificação Digital, Autoridade
Certificadora, Autoridade de Registro.
I. INTRODUÇÃO
A segurança em uma Rede de Computadores,
independente do seu tamanho, deve ser
proporcional ao valor das informações que por
ela transitam. Então, é importante garantir um
meio de transmissão seguro, confiável e
específico à necessidade. Além disso, deve-se
também proteger os dados transmitidos de
possíveis invasões aos sistemas, impedindo que
àqueles fiquem à mercê de ações inescrupulosas.
Para tanto, usa-se a criptografia, que, mesmo
antes do advento das redes computacionais, é
uma ferramenta útil para a proteção de dados
sensíveis a olhos curiosos [1].
I.1 – Um Pouco de História
Há milhares de anos a criptografia tem sido
usada para fins militares e diplomáticos. Nos
dias de hoje, a Internet exige que as transações
comerciais requeiram privacidade e integridade
aos seus 327 bilhões de dólares movimentados
em transações comerciais em 2002 [2].
Seu uso nos princípios da comunicação foi
amplamente estudado por Claude Shannon nos
anos 40 e 50; e, até meados da década de 70, os
algoritmos de ciframento eram baseados em
transposições, substituições e a combinação de
ambas; dispondo de uma única chave para cifrar
e decifrar a mensagem, chamada chave secreta.
Atualmente, a criptografia computacional ainda
utiliza esses tipos de ciframento, porém, em
1976, os pesquisadores da Universidade de
Stanford, Whitfield Diffie e Martin Hellman,
desenvolveram um novo sistema criptográfico
(sistema criptográfico assimétrico) baseado em
operações e funções matemáticas que utiliza
duas chaves distintas: uma para cifrar e outra
para decifrar a mensagem; sendo, em termos
práticos, impossível, senão muito difícil, obter
uma a partir da outra [1]. Surgia aí o conceito de
chaves públicas e chaves privadas.
Além da mudança conceitual, tal método abriu
novos horizontes para as garantias que um
sistema criptográfico pode oferecer (discutidas
adiante), viabilizando assim, uma transmissão
de dados praticamente infalível às invasões.
Basta que o usuário crie o seu par de chaves,
guarde para si a chave de deciframento, e torne
pública a sua chave de ciframento.
Porém, esse é um ponto delicado desse sistema:
o fato da chave de ciframento ser pública requer
que alguém fique com essas chaves e as
administre de forma confiável, segura e,
principalmente, desinteressada quanto aos
motivos de quem as usa.
Então, foram criadas regras para que uma
entidade ganhe o direito de administrar as
chaves, passando a ser uma Autoridade
Certificadora – AC ou uma Autoridade de
Registro – AR, e toda uma infra-estrutura, a
chamada Infra-estrutura de Chave Pública –
ICP foi projetada para se garantir a emissão de
chaves e os certificados que lhes dão validade e
autenticidade [2].
I.2 – Situação da ICP no Mundo e no Brasil
A ICP (PKI – Public Key Infrastructure) foi
estabelecida pela IEEE P1363 [3] e
ANAIS DOS TRABALHOS DE DIPLOMA – DEZEMBRO/2002
INSTITUTO DE ENGENHARIA ELÉTRICA
UNIVERSIDADE FEDERAL DE ITAJUBÁ
2. 2
implementada pela IETF – Internet Engineering
Task Force (Força Tarefa de Engenharia da
Internet) por meio da IETF – Internet X.509
Public Key Infrastructure [4].
Para a IETF a ICP é um conjunto de serviços de
segurança capaz de proporcionar o uso e o
gerenciamento da criptografia de chave pública,
assim como os certificados digitais, incluindo o
gerenciamento de chave e sua política de uso.
No Brasil, foi instaurada recentemente uma ICP,
denominada Infra-estrutura de Chaves
Públicas-Brasil – ICP-Brasil seguindo a Medida
Provisória 2.200 de 18 de junho de 2001 [5].
Esta MP determinou a criação de um Comitê
Gestor da ICP-Brasil – CG-ICP Brasil. O CG é
“a entidade máxima responsável pelo
estabelecimento e administração das políticas a
serem seguidas pelas ACs integrantes desta
estrutura” [6].
A ICP-Brasil vem atender à necessidade das
organizações governamentais e privadas
brasileiras em dar suporte técnico e legal aos
documentos criados e transmitidos
eletronicamente.
I.3 – Objetivos deste trabalho
O objetivo deste trabalho é o de levantar os
aspectos de uma ICP e, em específico, da ICP-
Brasil; observando-se suas leis, decretos,
resoluções, que determinaram suas evolução e
atual condição operacional. Antes, porém, será
feita uma explanação acerca da criptografia,
seus algoritmos e os dois tipos de chaves usadas,
mostrando suas diferenças e aplicabilidades.
II. A CRIPTOGRAFIA
A criptografia, do grego kryptós (oculto) e
grápho (escrita), ou escrita oculta, é a ciência
que propõe tornar incompreensível uma
mensagem originalmente escrita com clareza a
quem desconhece o processo de codificação
usado [1]. Dessa forma, uma informação pode
ser transmitida por meios de comunicação não
confiáveis, garantindo que somente o
destinatário, que sabe como decifrá-la, a
compreenda. Ao cifrar uma mensagem, esta
sofre transformações ditadas por um algoritmo,
que a tornam ininteligível. Para se decifrar a
mensagem, segue-se o algoritmo ao inverso, e
extrai-se a mensagem original.
Figura 1 – Modelo de Criptosistema [7].
II.1 – A Chave Criptográfica
A chave criptográfica é o verdadeiro segredo de
um algoritmo. Ela muitas vezes é o próprio
algoritmo, e, senão o é, dita os caminhos para
que um algoritmo aparentemente simples torne-
se imune a uma criptoanálise (a ciência de
determinar a chave ou decifrar mensagens sem o
conhecimento da chave) bem aplicada. A chave
pode ser um número, uma seqüência de bits,
uma cifra, um código, uma tabela, etc. Sempre
há uma chave de ciframento e outra para
deciframento da mensagem (Figura 1). Porém,
nos métodos simétricos elas são consideradas
iguais e, portanto, é tratada como uma só.
À luz da criptografia computacional, uma chave
pode ter dimensões brutais, como no caso do
algoritmo RSA (vide o item II.3.2.2), cujas
chaves chegam a ordem de 10200
.
II.2 – Tipos de Algoritmos Criptográficos
O tipo de algoritmo criptográfico diz o tipo de
chave usada para cifrar e decifrar a mensagem.
II.2.1 – Algoritmos Criptográficos Simétricos
Os algoritmos criptográficos simétricos podem
ser dos tipos transposição, substituição e
ciframentos compostos, e visam somente o
embaralhamento dos caracteres da mensagem, a
substituição dos caracteres da mensagem,
segundo uma tabela, ou a aplicação de ambas as
técnicas ao mesmo tempo, respectivamente [1].
Nesses casos, a chave de criptografia usada é
chamada de chave secreta, pois exige que o
usuário a mantenha oculta sob seu poder, e só a
repasse para quem for transmitida uma
mensagem criptografada. Isto se faz necessário,
pois a mesma chave que é usada para cifrar uma
mensagem serve também para decifrá-la [1].
Então, se a chave for de domínio público,
qualquer um que interceptar a transmissão de
uma mensagem codificada com essa chave
consegue decifrá-la, acessando seu conteúdo.
II.2.2 – Algoritmos Criptográficos Assimétricos
Os algoritmos criptográficos assimétricos
seguem os princípios da unidirecionalidade [1]
de certas funções ou propriedades matemáticas,
que permitem um cálculo rápido, simples e
barato de seus resultados, porém é inviável a
partir destes, retornar ao ponto inicial sem seu
conhecimento. Um exemplo, usado no algoritmo
RSA (vide adiante), é o produto de dois
números primos, que, por maiores que sejam,
pode ser feito em instantes, e a obtenção destes,
sem se saber quais são, a partir da fatoração do
produto, despende muito tempo [1].
Então, Whitfield e Hellman propuseram a
criação de um par distinto de chaves, uma usada
3. 3
para cifrar, chamada de chave pública, e outra
usada para decifrar, chamada de chave privada,
seguindo o conceito da unidirecionalidade
acima. Assim, um usuário cria um par de
chaves com um algoritmo assimétrico, publica a
sua chave pública e guarda para si a chave
privada. Se for necessário enviar uma
mensagem criptografada a esse usuário, basta
acessar sua chave pública, usá-la para cifrar a
mensagem e enviar esta ao usuário, que, por sua
vez, será o único capaz de decifrá-la, acessando
seu conteúdo [1].
II.2.3 – Diferenças e Aplicação Real
Os métodos assimétricos garantem maior
segurança em relação aos métodos simétricos,
pois a distribuição de chaves nestes pode ser
algo perigosa se houver qualquer tipo de escuta
durante a troca de chaves. Com aqueles, a
distribuição de chaves é simples, pois qualquer
usuário pode, sem medo de interceptações ou
escutas, publicar sua chave de ciframento, que
será impossível obter-se a sua correlata. Porém,
os métodos assimétricos podem exigir muito
tempo, mesmo com os recursos computacionais
disponíveis atualmente, para se codificar uma
mensagem de tamanho considerável, quando
comparado com o tempo gasto por um método
simétrico para se realizar a mesma tarefa. Então,
para se agilizar o processo sem perder a
segurança, usa-se um algoritmo simétrico para
cifrar a mensagem, e a chave secreta usada é,
por sua vez, cifrada com um método
assimétrico, usando-se a chave pública do
destinatário, que será o único, com sua chave
privada, capaz de decifrar a chave secreta e, com
esta, então, decifrar a mensagem.
Tudo isto pode parecer um tanto trabalhoso de
se fazer, mas com os recursos computacionais
disponíveis atualmente, todo o processo é feito
de modo automático e praticamente transparente
ao usuário, se ele assim o desejar.
II.3 – A Criptografia Computacional
O propósito da criptografia computacional é
dispor da grande velocidade de processamento
disponível aliada à facilidade em se implementar
os algoritmos criptográficos em linguagens de
programação, visando se obter um sistema
criptográfico viável de se computar e
praticamente inviável de se computar sua
inversa [1].
II.3.1 – Garantias da Criptografia
Computacional
As garantias que um bom sistema criptográfico
computacional deve dar, além da descrita no
item anterior, são [1]:
Sigilo de informações;
Integridade de informações;
Autenticação de usuário;
Autenticação de remetentes;
Autenticação de destinatários;
Autenticação de atualidade.
A primeira garantia diz que somente os usuários
autorizados possam ter acesso à informação, ou
que consigam torná-la inteligível. A segunda
oferece inalterabilidade da informação, seja ela
intencional ou acidental, mantendo-a sempre a
mesma. As quatro seguintes garantem,
respectivamente, a real identidade do usuário ao
sistema usado; que, de fato, um, e somente um
usuário emitiu aquela mensagem específica,
tendo inclusive validade como prova perante um
tribunal; que o destinatário de uma mensagem
especifica foi recebida por ele, e somente ele; e,
por fim, que a informação enviada naquele
momento não possa ser reenviada em outro
momento qualquer, impossibilitando que uma
versão antiga, interceptada por um agente
externo, seja usada para se obter informações
atuais do sistema [1].
Essas garantias são as bases de uma ICP.
II.3.2 – Tipos de Algoritmos Computacionais
A criptografia computacional simétrica nasceu
nos laboratórios da IBM na década de sessenta,
culminando em 1971 com o algoritmo chamado
LUCIFER, criado por Horst Feistel. Entre 1972
e 1974, baseado neste sistema, o pesquisador
Walter Tuchman, veterano da IBM e
especialista em teoria da informação, criou o
DES - Data Encryption Standart (Padrão de
Ciframento de Dados), padronizado pelos EUA
como sendo o algoritmo padrão, primeiro, para
uso pelos órgãos não governamentais e não
militares, em 1978, e depois pelo segmento
privado e instituições financeiras, em 1981 [8].
O sistema assimétrico nasceu da falha dos
métodos simétricos em garantir autenticação e
privacidade em redes de grande porte (WANs e
a Internet). Whitfield Diffie e Martin Hellman
debruçaram-se sobre este problema e, em 1976,
divulgaram seus conceitos sobre um método de
troca de mensagens cifradas sem que haja a
necessidade de se compartilhar as chaves [9].
Bastava se aproveitar da intratabilidade de certas
funções ou propriedades matemáticas. Assim,
em 1978, Ronald Rivest, Adi Shamir e Leonard
Adleman, na época professores do MIT –
Massachusetts Institute of Technology (Instituto
de Tecnologia de Massachustts),
implementaram um algoritmo chamado RSA (o
acrônimo é a inicial dos sobrenomes dos
inventores do algoritmo) baseado na
intratabilidade de se fatorar um produto muito
4. 4
grande entre dois números primos também
muito grandes [1].
II.3.2.1 – O Algoritmo DES
O DES é um algoritmo simétrico feito para ser
implementado em hardware, e está restrito à
cifragem de dados não confidenciais. “O DES é
um ciframento composto que cifra blocos de 64
bits (8 caracteres) em blocos de 64 bits, usando
uma chave de 56 bits (64 bits, dos quais 8 de
paridade)” [1]. Basicamente, o processo de
cifragem do DES segue os seguintes passos
(Figura 2):
1. A mensagem é dividida em blocos de 64
bits, que serão cifrados individualmente.
2. Cada bloco sofre uma transposição inicial
TI, alterando a ordem dos bits segundo uma
tabela.
3. Cada bloco de 64 bits é dividido em blocos
de 32 bits cada, um esquerdo, LI, e outro
direito, RI.
4. A chave de 56 bits é usada para gerar 16
chaves de 48 bits cada (K1 até K16).
5. O bloco LI-1 sofre uma transformação T de
acordo com a primeira chave, K1, de 48 bits
e a metade RI-1. Este bloco não é alterado
nem o número original de 64 bits (Figura 3).
6. Os blocos de 32 bits são trocados de
posição (LI-1 → RI e RI-1 → LI).
7. O “novo” bloco esquerdo LI sofre uma
transformação pela segunda chave, K2.
8. Repetem-se os passos 6 e 7 até a 16.a
chave.
9. O bloco de 64 bits é reunido e sofre uma
transposição final TF, inversa à inicial.
10. Os passos de 1 a 9 são repetidos para cada
bloco de 64 bits da mensagem inteira, que é
reconstruída com todos os blocos cifrados.
O processo de cifragem é representado da forma
C = DES(K,M); onde C é a mensagem cifrada,
DES é o algoritmo aplicado, K é a chave usada e
M é a mensagem a ser criptografada.
O processo de decifragem, M = DES(K,C),
segue os mesmos passos da cifragem, somente
invertendo-se a ordem das chaves usadas em
cada um dos 16 estágios [1].
Figura 2 – Processo de Cifragem do DES [7].
Figura 3 – Transformação T e Inversão de
Blocos do DES [7].
O algoritmo diz que quaisquer pequenas
alterações na mensagem original provocam
grandes alterações na mensagem cifrada. Em 20
anos a criptoanálise não encontrou nenhum
método eficaz para se “quebrar” o DES além da
aplicação da “força bruta”, ou seja, tentar todas
as combinações possíveis de chaves. Como a
chave tem 56 bits, existem no máximo 256
(≈72.000.000.000.000.000) diferentes chaves
para serem testadas. Por isso a única maneira
eficiente de se implementar este algoritmo é por
hardware [10].
II.3.2.2 – O Algoritmo RSA
O RSA é um processo assimétrico que envolve a
escolha de dois números primos, multiplicá-los
e obter duas chaves, uma em função da outra
seguindo os seguintes passos:
1. Usa-se um algoritmo probabilístico para se
calcular dois números primos distintos p e
q, da ordem de 10100
cada um.
2. Calcula-se um número n = p⋅q e f(n) = (p-
1)⋅(q-1). Ambos da ordem de 10200
.
3. Gera-se um número inteiro c, ao acaso,
dentro do intervalo (1,f(n)) tal que
mdc(c,f(n)) = 1 e c < f(n). Ou seja, c e f(n)
são primos entre si.
4. Com a equação c⋅d⋅modf(n) = 1 no intervalo
[0,f(n)], determina-se o número d; sendo a
operação mod o resto de uma divisão.
5. Com isso, obtém-se a chave privada P =
(c,n) e a chave secreta S = (d,n).
Um usuário para cifrar uma mensagem usando a
chave P, quebra a mensagem em blocos de bits
de tamanho m no intervalo 0 ≤ m < n, e cifra
cada bloco m usando o procedimento de
exponenciação modular P(m) = mc
mod n. O
destinatário decifra a mensagem por meio da
S(P(m)) = md
mod n = m.
Convém notar, como dito em [1], que o RSA é
um sistema criptográfico comutativo, ou seja,
pode-se cifrar uma mensagem também com a
chave privada, e, conseqüentemente, decifrá-la
com a chave pública. É provado, também em
5. 5
[1], que se a mensagem foi criptografada com
uma das chaves, só é possível decifrá-la com a
outra chave. Isso torna o RSA capaz de prover
assinaturas digitais e trocas de chaves entre
usuários.
Atualmente, o RSA é a base do sistema PGP –
Pretty Good Privacy (Privacidade Satisfatória),
sistema não estruturado de troca de chaves
públicas, que também usa a lógica do sistema
IDEA (vide adiante) para embaralhar os bits da
mensagem. O algoritmo também suporta o
Kerberos, uma aplicação que permite a
autenticação de duas pessoas frente a um
servidor de autenticação específico. Vários
fornecedores como a IBM, NEC, HP e Sun,
visam a implantação do sistema em seus
Sistemas Operacionais UNIX [11].
II.3.2.3 – Outros Algoritmos
Muitos dos métodos descritos foram
implementados seguindo as filosofias do DES e
do RSA.
Os RC2, RC4, RC5 e RC6 – Rivest Cipher
são notoriamente mais rápidos que o DES, e
os dois últimos permitem uma chave de
tamanho variável (sendo muito seguro),
enquanto os outros possuem uma chave de
somente 40 bits (facilmente quebrável por
força bruta) [12] [10].
O Triplo DES é o mesmo algoritmo DES
aplicado três vezes segundo a equação C =
DES{K1,DES-1
[K2,(K1,M)]}, onde DES-1
representa o algoritmo inverso (decifragem)
e K1 e K2 são duas chaves secretas distintas.
O 3DES é usado atualmente no lugar do
DES comum [10].
O IDEA – International Data Encryption
Algorithm (Algoritmo de Cifragem de
Dados Internacional) embaralha blocos de
64 bits com uma chave de 128 bits. É um
algoritmo simétrico projetado para ser fácil
de ser programado e é forte o suficiente para
resistir à maioria dos ataques
criptoanalíticos [12].
O algoritmo Diffie-Hellman é baseado na
dificuldade em se calcular logaritmos
discretos em um plano finito. Foi o primeiro
algoritmo implementado para troca de
chaves, e é usado unicamente para isso. É o
método base para o RSA [1].
O algoritmo DSA – Digital Signature
Algorithm (Algoritmo para Assinatura
Digital), desenvolvido pela NSA dos
Estados Unidos, é utilizado somente para a
implementação da assinatura digital. A
força desse algoritmo está na dificuldade de
se calcular logaritmos discretos [13].
O El Gammal é um algoritmo parecido com
o RSA, porém utiliza a aritmética dos
módulos além do cálculo de logaritmos
discretos para criptografar os dados. Assim
como o RSA, o El Gammal é um dos
poucos métodos que permite a cifragem de
dados e também a assinatura digital [7].
Recentemente foi especificado o novo
algoritmo simétrico, chamado Rijndael,
(Vincent Rijmen e Joan Daemen) para ser
usado pelo governo dos EUA para proteger
informações restritas. O FIPS – Federal
Information Processing Standard (Padrão
de Processamento de Informação Federal)
aprovou o AES – Advanced Encryption
Standard (Padrão de Criptografia
Avançado), que determinou a adoção desse
novo padrão. O Rijndael trabalha com
tamanhos de chaves de 128, 192 e 256 bits,
criptografando blocos de mesmo tamanho,
sendo possível usar todas as nove
combinações, e se estender facilmente esses
números para múltiplos de 32 bits. O código
do algoritmo é bem enxuto e não depende
de números aleatórios ou constantes
matemáticas, como o número pi, por isso o
Rijndael possui alto nível de segurança e é
facilmente implementado em equipamentos
que utilizam pouca RAM [14].
II.3.2.4 – Um Pouco de Polêmica
Apesar de alguns desses algoritmos serem
notoriamente mais seguros que o DES e o RSA,
ambos são os algoritmos mais difundidos para o
uso geral. Só o fato de terem sido adotados
como padrões nos EUA já é um indicativo de
suas “popularidades”. Os dois algoritmos são
também famosos, em parte, devido as diversas
polêmicas em que estiveram, e estão envolvidos.
O primeiro é duramente criticado pela
comunidade acadêmica porque foi supostamente
alterado pela NSA – National Security Agency
(Agência de Segurança Nacional) dos EUA,
durante a sua implementação técnica na IBM,
para conter uma “porta dos fundos” (do inglês
back-door), que permitiria livre acesso à agência
ao conteúdo da mensagem, e a redução do
número de bits da chave de 128 bits, usado no
LUCIFER, para os 56 bits, padrão no DES. Isso
gerou um certo repúdio das entidades privadas
quanto ao quesito privacidade. Além disso, o
algoritmo possui a fraqueza de ter uma chave
com dimensão muito pequena para os dias de
hoje (em julho de 1998, um hardware, custando
U$250.000,00 foi apresentado pela EFF –
Eletronic Frontier Foundation, que realizava o
trabalho de quebrar o DES em pouco mais de 3
horas usando a “força bruta”), e o seu aumento é
inviável, pois o tamanho da chave faz parte do
6. 6
projeto. O método de criptoanálise diferencial,
revelado há pouco tempo, reduz as chaves para
247
. Com outro método, chamado criptoanálise
linear esse número cai para 243
[10] [15] [16].
O RSA possui o inconveniente de ser fundado
em uma propriedade matemática: a dificuldade
em se fatorar números primos grandes; e, a
qualquer momento alguém pode descobrir uma
maneira mais simples de se resolver esse
problema. Por enquanto a única maneira de se
fazer isso é por “força bruta”. O pior é que, logo
na sua invenção, em 1977, os criadores do RSA,
Rivest, Shamir e Adleman, propuseram um
desafio de quebrar uma mensagem codificada
com uma chave pública de 129 bits, e afirmaram
que poderia ficar oculta por décadas. Essa tarefa
ficou conhecida como a tarefa RSA129. No ano
de 1993, milhares de pessoas usando máquinas
poderosas trocaram dados e testes através da
Internet, e, em 1994, em menos de um ano de
tentativa, quebraram a famosa chave.
Então, parece fácil admitir que agora essa
sempre será uma tarefa fácil, mas deve-se
atentar que a quebra da chave só foi possível
com o auxílio de supercomputadores, e poucas
pessoas no mundo têm acesso a eles (Figura 4).
Ademais, um ano é tempo suficiente para que
qualquer informação contida nas mensagens que
utilizam uma chave desse tamanho perca sua
validade.
Figura 4 – Tempo para se Quebrar Diversos
Tamanhos de Chaves Usando Força Bruta por
Diversas Entidades [17].
II.3.3 – Assinatura Digital
O ponto mais importante dos métodos
assimétricos é a corroboração imediata das seis
garantias da criptografia computacional. Isso
pode ser feito por meio da assinatura digital de
duas maneiras: usando a chave privada ou a
função Hash.
A assinatura digital é muito usada por empresas
que disponibilizam instalações de softwares,
atualizações, plug-ins, etc. Sempre que aparece
na tela do computador uma janela pedindo
autorização para se confiar em tal produto de tal
empresa, está-se fazendo uso da assinatura
digital. Se for aceita a assinatura, o navegador
automaticamente armazena a chave pública da
empresa, para facilitar o processo em caso de
futuras instalações.
Para assinar usando sua chave privada, o usuário
Remetente a utiliza para cifrar uma mensagem e
a envia ao usuário Destinatário. Este recebe a
mensagem cifrada e acessando a chave pública
daquele, comprova que não há como outro
usuário ter mandado aquela mensagem, somente
ele.
Deve-se notar, porém, que a assinatura não
garante o sigilo da informação, pois qualquer
um que interceptar a mensagem e usar a chave
pública do Remetente para decifrá-la terá acesso
ao seu conteúdo. Então, para se garantir o sigilo
da informação, garantindo também a
autenticação de destinatário, o Remetente, após
cifrar a mensagem com sua chave privada, usa a
chave pública do Destinatário para cifrar tudo de
novo. Assim, somente o Destinatário será capaz
de decifrar, primeiro com a sua chave privada, a
mensagem duplamente cifrada, e logo em
seguida usa a chave pública do Remetente para
decifrar a mensagem pela segunda vez.
II.3.4 – A Função Hash
A assinatura digital por chave privada é um
processo muito demorado e pode-se criar uma
mensagem, no mínimo, com o dobro do
tamanho original. A solução encontrada é usar
um processo, chamado a função Hash (do
inglês, confundir ou moer), que identifique
aquela mensagem de modo único, assegurando
que não haverá dois textos diferentes com a
mesma identidade, chamada message digest
(mensagem compilada). O message digest é a
essência da mensagem original. Mesmo se
mudar uma só palavra desta, a função Hash
produzirá outro messagem digest completamente
diferente do anterior.
Então, para assinaturas digitais mais eficientes
combina-se a assinatura digital por chaves
privadas com a função Hash, da seguinte
maneira (Figura 5): passa-se a mensagem por
uma função Hash, obtendo-se seu message
digest. Este é cifrado com a chave privada do
Remetente e com a chave pública do
Destinatário. O message digest cifrado é
anexado à mensagem e ambos são enviados. O
Destinatário segue o roteiro inverso para
decifrar o message digest, passa a função Hash
pela mensagem e obtém um message digest que
é comparado ao recebido. Se forem idênticos,
está garantida a integridade da informação.
Contudo, apesar da praticidade, esse método não
garante o sigilo da informação, pois não houve
qualquer tipo de ciframento da mensagem.
Os algoritmos de Hash mais comuns são:
O MD5 – Message Digest 5 foi criado por
Ron Rivest e produz um valor de hash de
128 bits. Esse algoritmo é otimizado para
processadores Intel, mas ultimamente seu
7. 7
uso vem caindo, pois algumas partes do seu
algoritmo foram comprometidas [15].
O SHA-1 – Secure Hash Algoritm-1 foi
criado pela NSA. Ele produz um valor de
Hash de 160 bits. O SHA-1 se tornou
bastante popular e hoje é utilizado para criar
assinaturas digitais [15].
Figura 5 – Geração (a) e Verificação (b) de
Assinatura Digital [18].
III. A INFRA-ESTRUTURA DE CHAVE
PÚBLICA
Uma ICP garante a tecnologia necessária para se
adotar uma política adequada ao armazenamento
das chaves públicas. Ela também estabelece as
formas de certificação e autenticação das
chaves.
A IETF designou um grupo de trabalho, o PKIK
working group (Grupo de Trabalho ICP), para
avaliar as técnicas, protocolos, políticas de
trabalho, arquiteturas, perfis de documentos,
gerenciamento, etc. que forem apresentadas ao
grupo; que também decide quais serão os
padrões adotados que promoverão a
interoperabilidade das diversas ICPs já
instaladas.
Uma ICP pode ser hierárquica, que prevê uma
Autoridade Certificadora Raiz – AC Raiz, ou
distribuída, com Autoridades Certificadoras em
Ponte. Esta arquitetura realiza o credenciamento
par-a-par, cujo contrato de certificação é
cruzado, sendo verificadas as políticas de
certificados e práticas operacionais baseados em
políticas de mapeamento. Na arquitetura
hierárquica, cada ambiente dita suas políticas e
práticas por meio das DROs – Declaração de
Regras Operacionais, e cada contrato de adesão
é avaliado e validado conforme ao processo de
credenciamento a que está subordinado [19].
Esta é a arquitetura adotada pela ICP-Brasil
(Figura 6).
III.1 – Distribuição de Chaves Públicas
O ponto fraco da criptografia assimétrica é a
distribuição das chaves públicas. Quando dois
usuários decidem trocar mensagens secretas eles
devem concordar em usar uma chave especifica
para aquela conversa, denominada chave de
sessão. O problema é transmitir essa chave por
um meio não confiável. Para se garantir tal troca
deve-se assegurar que um terceiro usuário, de
confiança de ambas as partes, sirva de árbitro e
garanta a autenticidade das chaves usadas.
Figura 6 – Estrutura de uma ICP [20].
III.2 – A Autoridade Certificadora Raiz
É a primeira entidade em uma cadeia de
certificação. É ela quem distribui os certificados
para todas as outras ACs da estrutura. Para isso
ela mesma assina o seu certificado. A AC Raiz
não pode emitir certificados diretamente ao
usuário, responsabilidade essa dada às ACs
comuns.
III.3 – A Autoridade Certificadora
Uma Autoridade Certificadora – AC é a
entidade designada para desempenhar o papel de
árbitro durante a troca de mensagens entre
usuários, fornecendo, certificando e validando
as chaves usadas, segundo a DRO vigente.
Um usuário que desejar criar um par de chaves
pode fazê-lo direto em uma AC. Durante o
processo, esta cria um Certificado Digital
padrão, de acordo com a norma adotada, que
ateste sua legitimidade e unicidade, sempre que
outro usuário precisar verificar a autenticidade
da chave.
III.4 – A Autoridade de Registro
Para se evitar que uma AC fique sobrecarregada
com todas as verificações que forem
requisitadas a ela, foram criadas as Autoridades
de Registro – ARs. Estas dão suporte às ACs
para que possam dispor de tempo para gerar
certificados.
Deve-se notar que uma AR nunca estará
autorizada a criar um certificado. Seu único
papel é o de verificar as informações pertinentes
aos certificados já criados. Ela é a última
entidade possível da cadeia antes do usuário.
III.5 – Certificados Digitais
Um Certificado Digital é a identidade digital de
um par de chaves criado frente a uma AC
qualquer. Ele armazena todas as informações
pertinentes ao dono do par de chaves e a esta em
questão. Quando criado, o certificado é assinado
8. 8
digitalmente com a chave privada da AC,
evitando-se qualquer possibilidade de
falsificação, ou alteração, acidental ou não, do
mesmo. Todo certificado digital possui uma data
de validade, então, de tempos em tempos a AC
cria uma Lista de Certificados Revogados –
LCR, que fica disponível para consultas.
O padrão digital para os certificados digitais
adotados pela International Telecomunication
Union – ITU-T (União de Telecomunicação
Internacional) é o X.509 v3 (o “v3” indica que
essa é a terceira versão do certificado). O PKIK
working group se encarregou de criar padrões
suportáveis pela Internet, facilitando a
comunicação entre diferentes ICPs. Atualmente,
o X.509 já está amplamente difundido na
Internet. Muitas lojas eletrônicas somente
realizam uma transação, mediante o certificado
padrão X.509 autenticado por uma AC.
Contudo, o que ocorre é um padrão comum
difundido para certificados digitais, mas não há
um consenso global para gerenciá-los. As
grandes empresas da Internet simplesmente
forçam o seu produto como padrão para
interoperabilidade, esquecendo-se que o maior
recurso de uma ICP é a sua integração com
diversas espécies de aplicações. Se uma ICP
perder essa interoperabilidade, perde totalmente
sua utilidade [2].
Um fato curioso no uso da certificação digital,
por meio da assinatura digital, é a sua
similaridade com a estrutura de autenticação de
cartório, usado no sistema legal do Brasil. Os
cartórios no caso da ICP seriam as ACs e ARs.
IV. A INFRA-ESTRUTURA DE CHAVE
PÚBLICA BRASIL
Prevista como um meio confiável de trocas de
documentos sigilosos através da Internet entre as
entidades governamentais brasileiras, a ICP-Gov
[21] ganhou âmbito público depois que as
empresas brasileiras exigiram o uso de tal
recurso para tornar seguras suas transações via
Internet. Revisto o projeto, a ICP-Gov passou a
ser chamada de ICP-Brasil (Figura 7) [5].
Figura 7 – Logotipo da ICP-Brasil [22].
A ICP-Brasil segue as características de uma
ICP hierárquica, possuindo uma AC Raiz,
diversas entidades credenciadas como AC, e
outras como AR e prestadoras de serviços
(Figuras 8, 9 e 10).
IV.1 – O CG ICP-Brasil
Instaurado pela MP 2.200 e definido pelo
decreto 3.872 [24], o CG, como já foi dito, é a
entidade máxima na estrutura da ICP Brasil, e
exerce a função de Autoridade Gestora de
Políticas – AGP da ICP (Art. 1°).
Ficou disposto pelo decreto 3.872, a composição
do CG, as medidas, políticas, critérios e as
normas para implantação e funcionamento da
ICP-Brasil, e licenciamento das ACs, ARs e das
demais prestadores de serviços de suporte à ICP,
em todos os níveis da cadeia de certificação.
IV.2 – A AC Raiz da ICP-Brasil
“O ITI – Instituto Nacional de Tecnologia da
Informação, Autarquia Federal vinculada à Casa
Civil da Presidência da República, é a
Autoridade Certificadora Raiz da ICP-Brasil”
[23]. O ITI ganhou o status de AC Raiz da ICP-
Brasil pela MP 2.200.
O ITI segue os padrões, técnicas e políticas
definidas na DRO da AC Raiz [25], que entre
outras coisas define que o certificado desta
entidade utilizará o RSA com o SHA-1 como
algoritmos de assinatura digital. Diz também
que o próprio certificado não deverá ter validade
superior a dez anos nem inferior a oito anos.
Figura 8 – Estrutura Hierárquica da ICP-Brasil em 26/11/2002. (As ACs em amarelo são as entidades já
credenciadas. As ACs em verde estão em processo de credenciamento) [23].
9. 9
Figura 9 – Entidades Credenciadas da ICP-Brasil [23].
Figura 10 – Entidades em Processo de Credenciamento da ICP-Brasil [23].
Todos os certificados emitidos pela AC Raiz
devem estar em conformidade com o padrão
ISO/IEC 9594 X.509 v3, tendo os seguintes
campos:
Versão;
Emissor;
Validade;
Assinatura Digital da AC, segundo o
algoritmo vigente;
Usuário;
Chave pública do usuário;
Número Serial, único em cada AC.
São definidos os serviços oferecidos pela AC
Raiz: a Política de Revogação de Certificados,
os acordos para certificação cruzada com ICPs
de outros países, a segurança dos dados
armazenados (chaves, certificados, LCR) e a:
IV.3 – Política de Certificado da ICP-Brasil
A PC da ICP-Brasil estabelece as regras
específicas à aplicabilidade dos certificados
conforme os requisitos de segurança ditados
pela Política de Segurança da própria ICP [26].
Para tanto, foram estabelecidos quatro níveis de
segurança relacionados com assinatura digital
(A) e quatro com sigilo (S), que classificam os
certificados em (Figura 11).
Figura 11 – Tabela dos Tipos de Certificados da
ICP-Brasil [27].
V. CONCLUSÃO
Uma ICP é vital para o uso da criptografia
assimétrica e da certificação digital. Mas, apesar
de todo seu aspecto técnico, muito se discute
acerca da aplicabilidade legal dada à ICP-Brasil.
Sendo toda ela basicamente calcada na ICP dos
EUA, a crítica recai sobre a nossa dependência
em relação a uma tecnologia que exige uma base
legal bem fundada e específica ao âmbito
jurídico em que é estabelecida.
Enquanto o modelo europeu dá margem legal
para certificados não cadastrados frente a uma
entidade oficial, o modelo brasileiro, decalcado
do modelo dos EUA, força uma ditadura
disfarçada de “tecnologia a serviço de todos”.
Os certificados eletrônicos declarados ilegais
pela MP 2.200 (Art. 12.°) paradoxalmente têm
valor garantido pelo Código Civil desde 1917
10. 10
(Art. 129.°) [28] e são derrubados em seus
artigos 5.°, 11.° e 12.° [28], mudados para
satisfazer a MP 2.200.
Outro fato discutível é que apesar das empresas
brasileiras estarem despertando para a
certificação digital e a criptografia de chave
pública para a proteção de seus dados, visando o
crescimento via Internet, elas devem atentar
para o fato de que as grandes empresas
detentoras de tais recursos são dos EUA.
E lá as empresas seguem as normas de
segurança da NSA, que não permite que os
sistemas criptográficos lá registrados sejam
exportados se a chave ultrapassa 40 bits. Sem
contar os rumores de que todo padrão adotado
por lá possui uma porta-dos-fundos para que a
NSA vasculhe os documentos alheios sob a
égide de sua segurança nacional.
Então, seria uma prática salutar que as empresas
brasileiras busquem os recursos necessários aqui
mesmo, visto que somos fonte exportadora de
bons sistemas criptográficos, e que os mesmos
são adequados às nossas necessidades.
Para a ICP internacional, fica a espera da
resolução dos problemas relacionados a padrões
e interoperabilidade de aplicações, e,
conseqüente, possibilidade de gerenciamento
global de certificados digitais.
Mas, a despeito de todo esse falatório, fica a
certeza de que não há um sistema criptográfico
que garanta privacidade ideal. O ideal é aliar a
criptografia com todos os outros métodos que se
conhece para, ao menos, prevenir que os ataques
recebidos não causem tanto estrago.
A criptografia sempre foi uma das melhores
estratégias de ocultação de dados, porém não
deve ser a única. Um usuário mal-intencionado
pode muito bem, como vingança por não ter
acesso aos dados alheios, apagá-los, interceptar
e impedir seu envio, comprometer o programa
criptográfico, alterando-o para trocar ou
armazenar as chaves geradas, ou para
simplesmente gerar chaves diferentes daquelas
previstas pelo dono do programa, mas de acordo
com a vontade do invasor [29].
VI. AGRADECIMENTOS
Ao professor Maurílio por sua paciência em
aceitar o encargo de me orientar. Também
agradeço a liberdade e incentivo para que o
trabalho tivesse o meu jeito.
Muito obrigado à Marilena por seu eterno bom
humor e disponibilidade.
E, por último, mas não menos importante,
agradeço à Aline por entender que um dia isso
terá um fim.
VII. REFERÊNCIAS
[1] Lucchesi, Cláudio Leonardo, Introdução à
criptografia computacional, Editora da
UNICAMP, 1986.
[2] SecureNet, Zaninoti, Thiago, Entendendo a
Infra-estrutura de Chaves Públicas, artigo
publicado em 06/01/2001, disponível em:
www.securenet.com.br/artigo.php?artigo=90
, acessado em 30/10/2002.
[3] Página da Internet, The IEEE P1363 Home
Page Standard Specification for Public-Key
Cryptography, disponível em
http://grouper.ieee.org/groups/1363/,
acessado em 16/11/2002.
[4] IETF – Internet X.509 Public Key
Infrastructure, disponível em www.ietf.org/,
acessado em 16/11/2002.
[5] Medida Provisória 2.200, de 18 de junho de
2001, disponível em www.icpbrasil.gov.br/,
acessado em 17/04/2002.
[6] Termo de Referência do CG ICP-Brasil,
disponível em
www.planalto.gov.br/ccivil_03/consulta_pub
lica/PDF/termodereferencia.pdf, acessado
em 11/03/2002.
[7] Weber, R. F., Criptografia Contemporânea,
Instituto de Informática – UFRGS, Porto
Alegre – RS, disponível em
www.inf.ufsc.br/~castoldi/_Criptografia.pdf,
acessado em 17/11/2002.
[8] Redes de Computadores e suas Aplicações
na Educação, DES – Data Encrypt Standard,
disponível em
http://penta.ufrgs.br/gere96/segur2/des.htm,
acessado em 30/10/2002.
[9] Certising, AJUDA – Introdução à
Criptografia disponível em
https://digitalid.certisign.com.br/server/serve
r/help/hlpIntroCryp.htm, acessado em
30/10/2002.
[10] Criptografia, disponível em
www.dei.isep.ipp.pt/~andre/documentos/crip
tografia.html, acessado em 27/01/2001.
[11] Redes de Computadores e suas Aplicações
na Educação, RSA, disponível em
http://penta.ufrgs.br/gere96/segur2/rsa.htm,
acessado em 13/11/2001.
[12] UNICAMP, Equipe de Segurança em
Sistemas e Redes - Documentos - Conceitos
Básicos, disponível em
www.security.unicamp.br/docs/conceitos/o3.
html, acessado em 30/10/2002.
[13] FUTURE TECNOLOGIES, Stohler, Paulo,
página da Internet, Criptografia: Conceitos
Básicos – Primeira Parte, publicado em
25/02/2002, disponível em
www.fti.com.br/n_jornal/artigo_paulo_cripto
01.htm, acessado em 30/10/2001.
[14] FUTURE TECNOLOGIES, Stohler, Paulo,
página da Internet, Criptografia: Conceitos
11. 11
Básicos – Segunda Parte, publicado em
25/02/2002, disponível em
www.fti.com.br/n_jornal/artigo_paulo_cripto
01.htm, acessado em 30/10/2001.
[15] Revista do Linux, Introdução à
Criptografia, disponível em
www.revistadolinux.com.br/ed/005/criptogra
fia.php3, acessado em 30/10/2002.
[16] Domingos, Henrique J. L., artigo,
Segurança em Sistemas Informáticos
Distribuídos, Departamento de Informática,
Faculdade de Ciências e Tecnologia,
Universidade Nova de Lisboa, disponível em
www.asc.di.fct.unl.pt/ssid/docs/acetatos/ssid
-mei-01-02-4.pdf, acessado em 02/12/2002.
[17] CÂMARA DE COMÉRCIO FRANÇA-
BRASIL, Palestra sobre Criptografia:
Conceito e Uso, disponível em
www.ccfb.com.br/eventos/cmss_int_sp.asp,
acessado em 27/11/2002.
[18] Linhalis, Flávia, Moreira, Dilvan de A.,
artigo, Interface de Segurança para
Servidores de Dados Universais, disponível
em
http://java.icmc.sc.usp.br/dilvan/papers/2001
-SSI/siuds01.pdf, acessado em 17/11/2002.
[19] Machado, Pedro Paulo Lemos, ICP-Gov -
Infra-estrutura de Chaves públicas do Poder
Executivo Federal, via correio eletrônico em
26/07/2002.
[20] Santos, André A. J. dos, Santos, Igor Lucas
C. dos, Borges, Leonardo M., Vieira Thaís
Ruas, Seminário de Comércio Eletrônico
ICP Brasil, disponível em
http://prometeu.speed.dcc.ufmg.br/~nolineon
line/seminario-icp.ppt, acessado em
17/11/2002.
[21] Decreto 3.587, de 05 de Setembro de 2000,
disponível em www.icpbrasil.gov.br,
acessado em 17/04/2002.
[22] ICP Brasil, disponível em
www.icpbrasil.gov.br, acessado em
27/07/2002.
[23] ITI – Instituto Nacional da Tecnologia da
Informação – Autoridade Certificadora Raiz
da ICP-Brasil, publicado em 26/11/2002,
disponível em www.iti.gov.br, acessado em
02/12/2002.
[24] Decreto 3.872, de 18 de Julho de 2001,
disponível em www.icpbrasil.gov.br,
acessado em 17/04/2002.
[25] Parte II-1 – Declaração de Regras
Operacionais da AC-Raiz, INTEGRANTE
DA ICP-Brasil, disponível em
www.iti.gov.br, acessado em 05/04/2002.
[26] Parte III – Política de Segurança da ICP-
Brasil, publicado em 19/06/2001, disponível
em www.icpbrasil.gov.br, acessado em
05/04/2002.
[27] Parte I-1 – Políticas de Certificado da ICP-
Brasil, Assinatura Digital Nível 1 ao 4,
Sigilo Nível 1 ao 4, disponíveis em
www.icpbrasil.gov.br, acessados em
05/04/2002.
[28] Marcacini, Augusto, artigos diversos,
disponíveis em
http://augustomarcacini.cjb.net/dirinfo.html,
acessado em 30/10/2002.
[29] VERDADE ABSOLUTA, O que a
criptografia não protege, disponível em
http://www.absoluta.org/cripty/cripty_dont_
do.htm, acessado em 14/02/2002.
BIOGRAFIA:
Samuel Sangio Canuto Teixeira
Nasceu em Guaratinguetá-SP em
21 de Novembro de 1976.
Mudou-se para Salvador em
1985, onde adquiriu seu diploma
de Técnico em Eletrônica em
1993. Ingressou na EFEI em Agosto de 1995,
onde graduar-se-á Engenheiro Eletricista em
Janeiro de 2003. Estagiou no Laboratório de
Telecomunicações - ALCATEL/UNIFEI do
Grupo de Telecomunicações da Universidade
Federal de Itajubá – UNIFEI de Setembro a
Dezembro de 2002.