Certificado Digital
Joel Hartmann Junior
Curso de Especialização em Redes e Segurança de Sistemas
Pontifícia Universidade Católica do Paraná
Curitiba, novembro de 2009
1 – Introdução
Certificado Digital é um conjunto de técnicas e processos que provem mais segurança às
transações e comunicações eletrônicas, sua utilização proporciona:
Privacidade: Garantia de que as informações trocadas nas transações eletrônicas não serão
lidas por terceiros.
Integridade: Garantia de que as informações trocadas nas transações eletrônicas não
foram alteradas desde que foram assinadas.
Autenticidade: Garantia de identidade da origem e destino da transação.
Assinatura Digital: Assinatura eletrônica baseada em métodos criptográficos que é gerada
a partir de um conjunto de regras e que atribui ao documento a possibilidade de confirmar, com
segurança, sua integridade e a identificação do autor do documento eletrônico.
Não Repúdio: É a garantia de que somente o titular do Certificado Digital poderia ter
realizado determinada transação, impedindo que os integrantes de uma transação venham a
contestar ou negar uma transação após sua realização.
Esse conceito de segurança da informação envolve não só os aspectos tecnológicos, mas
também uma metodologia de controle e autorizações que varia de acordo com as necessidades e
organização da autoridade máxima certificadora. Com esse procedimento, é possível assinar e
autenticar documentos pelo computador, de qualquer local do mundo, via internet.
Utilizando a certificação digital, é possível evitar que dados sejam adulterados nas
comunicações realizadas via internet. Também é possível saber, com certeza, quem foi o autor de
uma transação ou de uma mensagem, ou ainda, manter dados confidenciais protegidos contra a
leitura por pessoas não autorizadas.
A maioria dos esquemas de assinaturas digitais envolve, além do emissor e do receptor,
duas outras entidades, nomeadas tipicamente de: Autoridade Certificadora (AC) e Autoridade de
Registro (AR), presentes em suas responsabilidades está a tarefa de garantir que uma assinatura
realmente pertença a um usuário, impedindo atos mal intencionados por parte de outras pessoas,
sendo assim qualquer conteúdo eletrônico que foi assinado digitalmente tem garantia de
autenticidade e respaldo jurídico.
Com a certificação digital podemos garantir o conteúdo de uma mensagem, sua autoria e a
data que foi assinada. Além disso a certificação digital pode ser usada também como:
•
Garantia de sigilo e privacidade de sites;
•
Controle de acessos e aplicativos;
•
Assinaturas de formulários;
•
Garantia de sigilo e privacidade de email;
1
•
Identificação do remetente;
•
Assinaturas de mensagens impossibilitando o repúdio.
O papel de uma AR (Autoridade de Registro) é requisitar a emissão de certificados digitais
de uma AC (Autoridade Certificadora), podendo também uma AR ser uma AC e vise-versa.
No Brasil a infra-estrutura de Chaves Públicas (ICP-Brasil) é o orgão gestor, que tem como
principal função definir um conjunto de técnicas, práticas e procedimentos a serem adotados pelas
entidades a fim de estabelecer um sistema de certificação digital baseado em chaves públicas. A
infra-estrutura de chaves públicas do Brasil, definida pela medida provisória nº 2.200-2, de 24 de
agosto de 2001, é denominada Infra-Estrutura de Chaves Públicas Brasileira, ou ICP-Brasil, e a
autoridade certificadora raiz é o Instituto Nacional de Tecnologia de Informação (ITI).
Com a certificação digital presente de maneira marcante no cotidiano da sociedade,
ferramentas de criptografia e criação de chaves estão se tornando fortes opções para usuários
domésticos e corporativos, mesmo uma simples troca de email pode ser realizada fazendo uso de
chaves criptografadas e não necessariamente emitidas por uma AC (Autoridade Certificadora),
existem ferramentas para criação de certificados digitais em meio “standard alone” utilizando-se de
uma estrutura conhecida como PKI-Public Key Infrastructure (infraestrutura de chaves públicas),
embora não tenham o respaldo jurídico de uma AC (Autoridade Certificadora) tornam-se meios
relativamente seguros de baixo custo e rápidos para elevar o nível de segurança nas atividades
cotidianas.
Uma ferramenta muito interessante e largamente utilizada é o OPENSSL utilizado para
gerar e gerenciar certificados digitais, de código fonte aberto baseado nos protocolos SSL e TLS,
mantido por comunidades de desenvolvedores espalhados pela internet, o OPENSSL está disponível
para a maioria dos sistemas do tipo Unix, incluindo Linux, Mac OS X, BSD e Windows. Outra
ferramenta importante o OpenSSH é utilizado para implementar segurança e autenticação através de
chaves de criptografia., pode-se utilizar uma chave de criptografia com 1024 ou 2048 bits, esse
método utiliza-se de criptografia assimétrica trabalhando com um par de chaves, a pública e a
privada.
Outra ferramenta que podemos citar é o Microsoft Certificate Services, onde a empresa
pode montar a sua própria infraestrutura de certificados digitais, sem depender de uma autoridade
certificadora externa.
2
2 - Descrição detalhada do problema
As transações on-line e presenciais tem como ponto diferencial mais significativo a
obrigatoriedade da presença física e a troca de documentos de identificação.
A problemática nas transações on-line é como ter garantia que as partes identificadas são
realmente quem diz ser? Essa questão já rendeu milhares de fraudes lesando consumidores e lojas
virtuais.
A técnica adotada pelas instituições bancárias é a realização de um cadastro prévio de
forma presencial exigindo documentos para realização da identificação, somente após esse contato
são liberadas as informações para acesso on-line. Essa técnica embora tenha um melhor nível de
segurança é parcialmente limitada pois exige a presença das partes no processo de obtenção das
credenciais para o acesso, o que nem sempre é possível, podemos citar como exemplo lojas on-line
que realizam operações comerciais sem nenhum tipo de encontro físico com seus clientes, a
identificação é realizada de forma direta, solicitando ao cliente dados que supostamente apenas ele
deveria saber, como dado finalizador de transações comerciais comumente exigido é o número do
cartão de crédito.
Embora essas técnicas de identificação representem inicialmente um bom nível de
segurança, já estão ultrapassadas, brechas nos esquema de segurança e vulnerabilidades são cada
vez mais evidentes nesse modelo de negócio.
O mesmo ocorre em ambientes internos da corporação, na maioria das vezes ignorado
pelos administradores por se tratar de um “domínio geograficamente sob sua ação” não levando em
conta que acessos a servidores, páginas intranet, email internos e troca de dados entre aplicativos
ocorrem em sua maioria na forma de “texto puro”.
Outra problemática comum é a implementação da tecnologia sem o devido treinamento e
capacitação da equipe que administra a solução e especialmente atentar para a capacitação dos
colaboradores que farão uso da tecnologia. Sem essa mudança cultural, que deve partir dos
administradores, a aplicabilidade da tecnologia no seu cotidiano não exibirá resultados
significativos quanto a Segurança da Informação, que é o principal objetivo da solução. A falta
dessa iniciativa e a não mudança cultural da corporação pode transformar projetos importantes em
desperdício financeiro, perda de competitividade e na própria falta de segurança.
Para exemplificar a fragilidade da comunicação web sem mecanismos de segurança, vamos
explorar uma troca de informações entre o Browser (Internet Explorer) e o servidor HTTP
(Apache), montamos um ambiente com 3 máquinas virtuais, na intenção de capturar pacotes com
auxilio do Sniffer Wireshark comprovando que informações trafegadas em ambiente web podem ser
facilmente interceptadas;
1 - Usuário (Windows XP)
2 – Servidor Web Apache (Ubuntu 9.40)
3 - Invasor com Wireshark (Windows XP)
Figura 1: Esquema de máquinas virtuais
3
Figura 2 : Estação 2 - Servidor Web Ubuntu 9.40 – Apache
Usuário realizando autenticação em página Web.
Figura 3: Estação 1 – Windows XP
Estação do invasor rodando captura de pacotes com Wireshark, já de posse da senha
utilizada pelo usuário na página web.
4
Figura 4: Estação 3 - Invasor – Windows XP
Sem dificuldades a senha do usuário é interceptada.
Outro exemplo de interceptação de dados são as mensagens de correio eletrônico, sem a
devida segurança podem ser capturadas, lidas e alteradas sem maiores dificuldades, um dos
objetivos mais visados pelo atacante é obter dos usuários seu logon e senha, permitindo assim , o
acesso ao servidor.
Seguindo a problemática do email, uma pessoa pode se passar por outra (email falso), se
não existir mecanismos de identificação e verificação mais elaborados, uma ordem em um email
falso pode ser seguida, prejudicando a empresa com informações não reais.
Como os problemas de acessos a informações de servidor podem ser contornados com
configuração bem planejada e mecanismos de segurança, como Firewalls, então, o objetivo dos
invasores passa a ser a captura de informações que os usuários utilizam para se autenticar. Com o
ambiente do servidor bem protegido, as informações ficarão mais vulneráveis no ambiente do
cliente.
Ataques de negação de serviço (Denial of Service (DOS)), Spoofing (disfarçar a posição de
que o ataque origina.) e Sequence Number, durante o momento conhecido como hand-shake
(“Aperto de mão” que é o processo pelo qual duas máquinas afirmam uma a outra que a reconheceu
e está pronta para iniciar a comunicação), quando uma máquina tenta estabelecer comunicação com
outra, a requerente envia uma mensagem SYN (synchronize) para a máquina servidora. A máquina
servidora devolve uma resposta SYN/ACK (acknowledgement-reconhecimento) e um número
sequencial (PSN) para sinalizar a aceitação da conexão. Então para efetivar a conexão, a máquina
requerente finalmente envia uma mensagem ACK para o servidor. Depois desse diálogo entre as
máquinas, a conexão TCP/IP está estabelecida. O ataque DoS consiste em iniciar várias conexões e
não responder ao último ACK do hand-shake, fazendo com que a máquina para qual a conexão foi
5
requisitada fique com um número muito grande de conexões em estado pendente.
O ataque DoS também é utilizado como apoio a ataque combinados de spoofing e
sequence number, que também se utilizam do hand-shake TCP/IP para tomar conexões de forma
mal intencionada. A ideia básica desse tipo de investida é aplicar um ataque DoS sobre uma
máquina que esteja requerendo uma conexão com uma terceira máquina. O atacante então assume o
papel da máquina anulada e se apodera da conexão durante certo tempo, enquanto o DoS não for
detectado e corrigido.
Outro risco à segurança de TI são os Cavalos de Tróia, diferente de vírus, pois costumam
apresentar-se como códigos executáveis que tem a proposta de realizar tarefas especificas para
quem os recebe. Comumente circulam por email, propõem-se a realizar tarefas como servir de
proteção de tela, atualizar software, gerar números seriais e cracks para a prática da pirataria de
softwares. Normalmente esses programas até realizam as tarefas propostas, entretanto além disso
executam tarefas obscuras, que variam entre corromper dados, sistemas operacionais, explorar
brechas de segurança e enviar informações para o criador do Cavalo de Troia (credenciais de rede,
bancos, cartão de crédito, entre outros).
Sem o uso de criptografia não é possível garantir segurança à informação que transita pela
Internet e até mesmo na rede corporativa, especialmente quando os canais de comunicação usados
são inseguros. Mesmo que o meio de comunicação seja inviolável, o que não acontece na maioria
dos casos, o conceito de integridade e autenticação são características essenciais para segurança de
muitas aplicações.
6
3 - Descrição das soluções disponíveis
3.1 Criptografia Simétrica
Baseada na simetria de chaves, ou seja, a mesma chave usada para criptografar será usada
para descriptografar. Essa chave, denominada chave privada, é trocada entre o emissor e o receptor,
através de uma comunicação segura, mas ainda assim apresenta alguns problemas:
• A mesma chave ser usada para cada par, emissor e receptor, se o número de pares for
grande, será necessário um grande número de chaves.
• A criptografia simétrica não garante a identidade de quem enviou ou recebeu a
mensagem.
Alguns exemplos de algorítimos simétricos:
• Data Encryption Standard (DES) - 56 bits
• Triple Data Encryption Standard (3DES) - 112 bits
• Blowfish - até 448 bits
• Twofish - 128, 192 ou 256 bits
• Advanced Encryption Standard (AES) - 128, 192 ou 256 bits.
3.2
Criptografia Assimétrica
Surgiu para contornar os problemas da criptografia simétrica, através de algoritmos que
utilizam chave pública e privada. Pode-se utilizar qualquer das chaves para criptografar a
mensagem, entretanto só a chave inversa pode ser usada para descriptografar. Os algoritmos que
implementam a chave pública e privada, exploram propriedades específicas dos números primos e a
dificuldade de fatorá-los mesmo em equipamentos rápidos. O RSA (Rivest Shamir Adleman),
composto por chaves de 512, 768, 1024 e 2048 bits é a base da maioria das aplicações de
criptografia assimétrica.
3.3
Função Hashing
A função Hashing tem como objetivo garantir a integridade da mensagem recebida e tornar
o deciframento da mesma mais rápida, visto que, a criptografia assimétrica embora muito eficiente
na cifragem da mensagem, é muito lenta no deciframento da mesma. Apesar disso, a função hashing
não criptografa a mensagem. A função Hashing quando aplicada ao conteúdo de uma mensagem,
gera um resumo chamado código hash.
Como exemplo de algoritmos hash, podemos citar o Message Digest 5 (MD5), retorna um
resumo de 128 bits, o Secure Hash Algorithm 1 (SHA-1) retorna um resumo de 160 bits, enquanto o
Secure Hash Algorithm 2 (SHA-2) retorna um resumo que pode ter 256, 384 e 512 bits.
A Função Hashing utilizada de forma isolada na transmissão de uma mensagem, pode não
garantir a integridade, pois um intruso pode violar a mensagem, calcular e substituir o código Hash.
Este problema é resolvido unindo a criptografia assimétrica com os benefícios da função Hashing
em um único processo chamado Assinatura Digital.
O valor hash geralmente é formado por 16 bytes (no caso do MD-2, MD-4 e MD- 5) ou 20
bytes (no caso do SHA-1), mas pode se estender, embora não passe de 512 bytes.
As características de uma função Hash são:
•
O valor de entrada da função possui qualquer tamanho
•
O valor de saída da função possui tamanho fixo
•
H(x) é relativamente fácil de ser computado, para qualquer valor de x
•
H(x) é uma função “one-way”
7
•
H(x) é livre de colisão
Uma função Hash é dita “one-way” pois uma vez obtido o valor Hash h para uma string x,
é computacionalmente impossível fazer o processo inverso, ou seja, encontrar um valor x tal que
H(x) = h.
Diz-se ainda que H(x) é livre de colisão, significando que as funções Hash devem garantir
uma probabilidade mínima de que duas strings diferentes acabem por resultar no mesmo valor
Hash. Qualquer alteração na string original que deu origem ao identificador digital, mesmo que de
um único bit, acabará por gerar uma alteração significativa no valor Hash final.
Com isso, o emissor usa sua chave privada e a chave pública do receptor para assinar
digitalmente o documento. Se este sofrer qualquer alteração, por menor que seja, seu valor Hash
será diferente. Como consequência, o receptor receberá um documento inválido, já que sua chave só
conseguirá trabalhar com o arquivo e com o valor Hash original.
3.4
Assinatura Digital
A assinatura digital utiliza a criptografia assimétrica, pois utiliza um par de chaves, uma
pública e outra privada. A chave privada é usada para assinar o documento, enquanto a pública
verifica a assinatura. Em termos práticos, todos os algoritmos de criptografia assimétrica podem ser
utilizados para assinatura digital, porém o padrão adotado pelo mercado foi o RSA.
Para assinar um documento e manter em segredo evitando que outros usuários o possam
ler, é necessário não só assinatura digital, mas também a sua criptografia utilizando a chave pública
do destinatário.
A partir de um documento e sua assinatura digital, pode-se facilmente verificar sua
autenticidade e integridade. Primeiro utiliza-se a mesma função Hashing aplicada ao documento na
origem, obtendo assim o Hash do documento, depois decifra a assinatura digital com a chave
pública do remetente, que deve produzir o mesmo Hash gerado anteriormente. Com os valores Hash
sendo iguais é possível afirmar que o documento não foi modificado após sua a assinatura, do
contrário, o documento ou a assinatura digital sofreram alterações.
3.5
Certificação Digital
Certificados podem ser emitidos para uma série de funções, como autenticação de usuário na
Internet, autenticação de um servidor Web, autenticação de usuários na rede, autenticação em
correio eletrônico, IPSec para utilização com o protocolo Transaction Layer Security (TLS),
transações financeiras, entrega de declarações oficiais e até assinatura
em programas
desenvolvidos.
Um certificado digital associa a identidade de uma pessoa ou processo, a um par de chaves
criptográficas, uma pública e outra privada, que usadas em conjunto comprovam a identidade. O
certificado digital é um arquivo assinado eletronicamente por uma e Autoridade Certificadora
(AC).
O conteúdo e a autenticidade de um certificado emitido por uma autoridade certificadora,
pode ser examinado por qualquer entidade que conheça a chave pública da AC. O certificado digital
é protegido pela assinatura digital do emissor. No certificado existem 6 campos obrigatórios,
número serial, algoritmo de assinatura, o emissor, validade, chave pública, assunto e 4 campos
opcionais, número da versão, dois identificadores e extensão.
A recomendação mais utilizada para emissão de certificados digitais é a X.509v3, descrita
na RFC 2459.
O X.509 é padrão que especifica o formato dos certificados digitais, amarrando firmemente
um nome a uma chave pública, permitindo autenticação forte. Faz parte das séries X.500 de
recomendações para uma estrutura de diretório global, baseada em nomes distintos para localização.
8
Na ICP-Brasil utilizam-se certificados no padrão X509 V3.
O X.509 é um formato padrão para documentos eletrônicos destinados ao transporte de
chaves públicas tituladas.
A versão 3 da recomendação X.509 definiu um conjunto de campos extras e a
possibilidade da atribuição de novos valores para um certificado. Estas informações estão
armazenadas em campos denominados de extensões. Uma extensão é formada por três partes:
• extnID: é um código identificador da extensão, definido através de um identificador
de objeto (OID).
• critical: é um campo booleano que indica se a extensão é crítica ou não. Este campo
é opcional. A sua ausência indica que a extensão não é crítica. Quando sua extensão for crítica, as
aplicações que a utilizarem deverão reconhecê-la.
• extnValue: este campo armazena efetivamente o valor da extensão. Extensões
definidas pela recomendação X.509v3. As extensões de certificado permitem à Autoridade
Certificadora (AC) incluir informações não suportadas pelos campos básicos de um certificado.
Qualquer organização pode definir extensões privadas requeridas em negócios particulares.
Porém, muitos requisitos podem ser satisfeitos com a extensão padrão. Extensões padrão são
suportadas por softwares comerciais. Elas permitem também interoperabilidade e um custo menor
do que o uso das extensões privadas.
Como citado anteriormente, o Brasil conta com uma Infra-estrutura de Chaves Públicas
(ICP-Brasil) ou, Public Key Infrastructure (PKI), são um conjunto de políticas, técnicas e
procedimentos para que a certificação digital tenha amparo legal e forneça benefícios reais.
A ICP-Brasil trabalha com uma hierarquia onde a AC-Raiz, isto é, a instituição que gera as
chaves das ACs e que regulamenta as atividades de cada uma, é o Instituto Nacional de Tecnologia
da Informação (ITI). A ICP-Brasil tem as seguintes ACs credenciadas:
- Serpro;
- Caixa Econômica Federal;
- Serasa;
- Receita Federal;
- Certisign;
- Imprensa Oficial;
- AC-JUS (Autoridade Certificadora da Justiça);
- ACPR (Autoridade Certificadora da Presidência da República).
Essas instituições devem ser procuradas por quem deseja obter certificado digital
legalmente reconhecido no Brasil. Cada uma dessas entidades pode ter critérios diferentes para a
emissão de certificados, o que inclusive resulta em preços diferentes, portanto, o interessado deve
saber qual AC é mais adequada às suas atividades.
A ICP-Brasil oferece duas categorias de certificados digitais: A e S, sendo que cada uma se
divide em quatro tipos: A1, A2, A3 e A4; S1, S2, S3 e S4. A categoria A é direcionada para fins de
identificação e autenticação, enquanto que o tipo S é direcionado a atividades sigilosas.
A1 e S1: geração das chaves realizada por software com tamanho mínimo de 1024 bits.
armazenamento em dispositivo como HD, CD, DVD, validade máxima de um ano.
A2 e S2: geração das chaves realizada por software com tamanho mínimo de 1024 bits.
Armazenamento em cartão inteligente smartcards ou tokens com validade de até dois anos.
A3 e S3: geração das chaves é feita por hardware, chaves de tamanho mínimo de 1024 bits
armazenamento em cartão inteligente ou token validade de até de três anos.
A4 e S4: geração das chaves é feita por hardware chaves de tamanho mínimo de 2048 bits
armazenamento em cartão inteligente ou token validade de até de três anos.
Os certificados A1 e A3 são os mais utilizados, sendo que o primeiro é geralmente
armazenado no computador do solicitante, enquanto que o segundo é guardado em cartões
inteligentes ou tokens protegidos por senha.
9
A palavra “certificação digital” no Brasil remete a duas importantes iniciativas: o e-CPF e
o e-CNPJ. O primeiro é, essencialmente, um certificado digital direcionado a pessoas físicas, sendo
uma espécie de extensão do CPF, enquanto que o segundo é um certificado digital que se destina a
empresas ou entidades, de igual forma, sendo um tipo de extensão do CNPJ.
Ao adquirir um e-CPF, uma pessoa tem acesso pela internet a diversos serviços da Receita
Federal, muitos dos quais até então disponíveis apenas em postos de atendimento da instituição. É
possível, por exemplo, transmitir declarações de imposto de renda de maneira mais segura,
consultar detalhes das declarações, pesquisar situação fiscal, corrigir erros de pagamentos, entre
outros. No caso do e-CNPJ, os benefícios são semelhantes.
3.6
Autoridade de Registro
Uma AR (Autoridade de Registro) provê uma interface entre um usuário e uma AC
(Autoridade Certificadora). Ela é responsável por conferir as informações do usuário e enviar a
requisição do certificado para a AC. A qualidade do processo de conferência das informações
determina o nível de confiança que deve ser atribuído ao certificado.
A AC deve, obrigatoriamente, confiar na AR, pois a AC emitirá o certificado digital sem
nenhuma verificação adicional. A confiança é necessária para garantir o funcionamento de todas as
etapas do processo. Dependendo da política de certificação adotada em uma ICP, o grau de
verificações executadas na AR pode variar.
3.7
Autoridade Certificadora
A AC é responsável pela geração, renovação, revogação de certificados digitais e emissão
da LCR (lista de certificados revogados), além das regras de publicação dos certificados digitais e
LCR.
Uma autoridade certificadora pode ser uma empresa, organização ou indivíduo, público ou
privado. A AC recebe a requisição de certificado digital, assinada pela AR, confere a assinatura
digital da AR e emite o certificado digital para o usuário final. A política de funcionamento de uma
Autoridade Certificadora, determinando quais os tipos de certificados digitais que ela está apta a
emitir, é designada em um documento intitulado DPC (Declaração de Práticas de Certificação).
3.8
Ferramentas Corporativas para Criação de Certificados.
SSL é o protocolo mais usado para implementar criptografia na Internet (Wan) e intranet
(Lan) . Podemos defini-lo como uma camada intermediária entre as camadas de transporte e de
aplicação.
HTTP
TELNET
FTP
SECURE SOCKETS LAYER
TRANSPORT CONTROL PROTOCOL
INTERNET PROTOCOL
10
Ainda que esse protocolo seja mais usado em servidores web, ele também pode ser usado
para encriptar os seguintes protocolos:
•
NNTP (Net News Transfer Protocol).
•
LDAP (Lightweight Directory Access Protocol ).
•
IMAP (Interactive Message Access Protocol).
•
POP (Post Office Protocol).
•
FTP (File Transfer Protocol).
Devido a sua infra- estrutura de chaves, à encriptação e às checagens que faz usando um
Hash da mensagem, esse protocolo provê confidencialidade, autenticidade e integridade.
3.8.1 Record Protocol
Responsável por encapsular as mensagens que serão enviadas para a camada TCP, e
desencapsulá-la no seu destinatário e antes de entregar a mensagem para a camada superior. Em seu
cabeçalho é identificado o protocolo de nível superior corresponde à mensagem, além do
identificador de sua versão e do tamanho de seu corpo, é feita a criptografia simétrica do SSL, e a
compressão da mensagem.
3.8.2 Protocolo de Handshake
Responsável por:
Identificar a sessão: trata-se de uma sequencia de bytes escolhida pelo servidor para
identificar uma sessão ativa ou uma sessão re-iniciável.
Método de compressão: define qual método de compressão que será utilizado antes da
criptografia dos dados.
Cipher Spec: especifica qual o algoritmo de criptografia vai ser utilizado.
Chave Mestre: chave secreta de 48 bytes que será compartilhada entre o cliente e o
servidor
Is Resumable: A sessão pode ser utilizada para iniciar novas conexões.
3.8.3 Protocolo de troca de algoritmo
Indica que as duas partes podem passar a usar a chave simétrica e o algoritmo de Hash,
sem depender das chaves assimétricas.
3.8.4 Protocolo de Alertas
Responsável por reportar os erros que ocorrem durante a conexão, podendo ser:
•
Recebimento de uma mensagem inesperada (Unexpected_message).
•
Hash não confere (Bad_record_mac).
•
O tamanho da mensagem após a descompressão excede o limite
(Decompression_failure).
•
Problema de segurança durante o Handshake (Handshake_failure).
•
Algum parâmetro do Handshake não confere (Illegal_parameter).
Alerta de aviso:
Já os alertas de aviso informam coisas como a invalidez do certificado (expirado,
revogado, desconhecido).
11
3.8.5 Algoritmos
Algoritmos usados em conexões SSL:
•
DES
•
DSA
•
MD5
•
RC2
•
RC4
•
RSA
•
SHA-1
•
SKIPJACK
•
Triple-DES
3.8.6 Procedimento
•
•
•
•
•
•
•
•
•
•
São enviados para o servidor a versão do protocolo SSL e configurações do
algoritmo que o cliente usa, e informações necessárias ao servidor para que a
conexão SSL seja estabelecida.
O servidor responde com a versão do protocolo SSL e configurações do algoritmo
que ele usa, o servidor envia seu certificado autenticando, e caso necessário solicita
um certificado do cliente.
A partir das informações recebidas, o cliente tenta autenticar o servidor; se for bem
sucedido, segue para o passo seguinte, caso contrário, envia uma mensagem de erro
para o servidor e informa que a conexão não pôde ser criada.
O cliente, usando os dados trocados, com a auxilio do servidor, cria um segredo
temporário, a encripta com a chave pública obtida do certificado do servidor.
Se a autenticação do cliente também foi requisitada, seu certificado é enviado junto a
outros dados extras, encriptando esse conteúdo com a chave secreta temporária.
Caso da autenticação do cliente ter sido requisitada pelo servidor, este tentará o
validar, de modo análogo à autenticação do servidor. Caso bem sucedido, o servidor
usa sua chave privada para decriptar o segredo temporário, e depois segue uma série
de passos que são igualmente seguidos pelo cliente para gerar o segredo a ser usado.
Tanto o cliente, quanto o servidor usam o segredo para gerar as chaves simétricas a
serem usadas na sessão. Com essas chaves, os dois participantes encriptarão e
decriptarão as informações transmitidas durante a sessão SSL.
É enviado pelo cliente uma mensagem ao servidor informando que as novas
mensagens serão encriptadas com a chave secreta. Logo em seguida, ele envia uma
mensagem indicando o fim de sua parte do Handshake.
O servidor, então, envia uma mensagem ao cliente informando que as novas
mensagens serão encriptadas com a chave secreta. Ele envia uma mensagem
indicando o fim de sua parte do Handshake.
O Handshake foi finalizado, cliente e servidor trocam mensagens usando a chave
simétrica para garantir a segurança.
3.8.7 Transmissão
Feito o Handshake, a transmissão de dados pode ser iniciada. Nessa fase, a criptografia é
feita a partir da chave secreta. A camada do SSL recebe da camada superior a mensagem que se
deseja transmitir, encripta a mesma usando a chave simétrica e repassa a mensagem para a camada
12
inferior.
3.8.8 Implementações
Alguma das implementações abertas do SSL:
•
OpenSSL.
•
GnuTLS.
•
SSLeay.
3.8.9 Apache e SSL
O SSL esteve disponível por muitos anos no software Linux comercial como o Stronghold,
um servidor Web comercial baseado no Apache. Contudo devido a algumas restrições de patentes e
de exportação nos Estados Unidos, não houve nenhuma versão aberta do SSL para Linux até o
surgimento do OpenSSL, uma colaboração da comunidade aberta para desenvolvimento do SSL
comercial, da TLS (Transport Layer Security) e de pacotes completos de bibliotecas de criptografia
de uso geral. O OpenSSL é baseado na biblioteca SSLeay, desenvolvida por Eric. A Young e Tim J.
Hudson. A licença do pacote permite que seja usado livremente para fins comerciais ou não.
A implementação do Apache com OpenSSL, capacita um servidor web a fornecer por
padrão criptografia baseada no protocolo SSL, utilizando o OpenSSL e SSLeay, com a
implementação de SSL no servidor Web, ataques como o simulado na figura 4 não teria sucesso.
O protocolo SSL garante a segurança demandada pelas mais diversas aplicações, tais como
bancos e web sites. Seus mecanismos de negociação segura de chave simétrica pelo uso de chaves
assimétricas garante que o problema das chaves simétricas (interceptação da chave secreta) não
ocorrerá, ao mesmo tempo que mantém o baixo custo dos processos de encriptação e decriptação
durante a sessão.
Essas qualidades justificam a larga adoção do protocolo no mundo todo, a qual pode ser
verificada nos milhares de sites web que fazem uso dessa tecnologia para garantir a segurança dos
usuários.
3. 8.10 HTTPS
É um protocolo com um conjunto de regras e códigos e uma camada de segurança que
torna a navegação na mais segura, diferente do HTTP, que não dispõe do mesmo nível de segurança
a navegação.
O HTTPS estabelece um dialogo entre os navegadores e os servidores da seguinte forma:
os navegadores mandam mensagens para os servidores e as mesmas são criptografadas, com isso se
agrega um alto nível de segurança entre a comunicação cliente servidor.
3.8.11 Protocolo SSH
O protocolo SSH possui duas versões, a versão 1 e a versão 2, ambas suportadas pelo
OpenSSH.
3.8.11.1 Protocolo SSH Versão 1
Na versão 1 do protocolo SSH, cada máquina possui uma chave RSA específica usada para
identificar o servidor.
Quando o SSHD inicia gera uma chave RSA do servidor que é recriada a cada hora e
permanece sempre residente em memória.
13
Quando um cliente se conecta, o SSHD responde com sua chave pública e chaves do
servidor. O cliente SSH compara a chave RSA com seu banco de dados para verificar se não foi
modificada. Estando tudo certo, o cliente gera um número aleatório de 256 bits, o encripta usando
ambas as chaves (host e servidor) e envia ao servidor. Ambos os lados então, usam esse número
aleatório como uma chave de sessão para cifrar a transferência de dados.
O restante da sessão é criptografado usando um método de cifragem de dados
convencional como 3DES.
3.8.11.2 Protocolo SSH Versão 2
A versão 2 funciona de forma semelhante a primeira. Cada máquina possui uma chave
RSA/DSA especifica usada para identificação. A diferença é que quando o SSHD inicia, ele não
gera uma chave de servidor. A segurança é oferecida através da concordância de uso de uma chave.
Esta concordância resulta em uma sessão com chave compartilhada. O restante da sessão é
encriptada usando um algoritmo, como 3DES, CAST128, Arcfour, AES.
O cliente é quem seleciona o algoritmo de criptografia que será usado entre os oferecidos
pelo servidor. A versão também possui integridade de sessão feita através de um código de
autenticação de mensagem criptográfica. Oferece também um método de autenticação de chaves
públicas, além do convencional, usando senhas.
3.8.11.3 Chaves de Criptografia
Uma das funcionalidades do Open SSH é implementar segurança e autenticação por meio
de chaves criptográficas, esse método utiliza criptografia assimétrica (RSA ou das) que trabalha
com um par de chaves, a pública e a privada. Outra funcionalidade importante do OpenSSH é
proteger uma conexão com serviços que não suportam encriptação, sendo possível criar túneis
seguros ligando uma das portas da máquina à porta do servidor onde o serviço está ativo.
3.8.12
PGP
Um padrão aberto de criptografia criado por Phil Zimmermann em 1991. O documento que
oficializa o padrão é a RFC2440. Existem diversos softwares compatíveis com esse padrão, dentre
eles o PGP que é comercializado pela PGP Corporation e o GnuPG, que trata-se de uma distribuição
gratuita.
O PGP traz uma abordagem de “teia de confiança” para o problema de autenticação de
chaves públicas. Sua estrutura é descentralizada e se caracteriza pela inexistência de uma
Autoridade Certificadora, em vez disso, a cada participante é dado o poder de assinar a chave
pública dos outros participantes que ele conhece.
A teia de confiança é formada da seguinte forma, se A confia em B e B assinou a chave
pública de C, então A confia que a chave pública de C é verdadeira, mesmo sem conhecer C, e dessa
forma continua recursivamente.
Um ponto fundamental a se tratar é que todos os participantes têm a responsabilidade pela
teia de confiança, caso os participantes assinem irresponsavelmente as chaves sem ter a certeza de
que elas realmente pertencem ao suposto proprietário, a teia de confiança enfraquece.
O padrão OpenPGP aparentemente se mostra mais flexível do que o modelo X.509, talvez
menos pelo padrão em si do que pelo fato de que os principais softwares que seguem o OpenPGP
estão mais voltados para o usuário final, os softwares deste padrão, uma vez instalados, são
totalmente funcionais e facilmente operáveis por um usuário.
O PGP, sigla para Pretty Good Privacy, é um software de criptografia que combina as
melhores técnicas para "embaralhar" dados. Primeiro, o dado a ser criptografado é comprimido, a
14
compressão economiza espaço em disco, tempo de transmissão e já é, por si só, uma forma de
criptografia, podendo ainda dificultar a ação de programas anti-criptografia que buscam por padrões
em dados criptografados afim de decifrá-los.
3.8.12.1
Processo de Descriptografia do PGP
O processo de descriptografia funciona de maneira inversa. O receptor decriptografa os
dados da segunda fase com sua chave privada, o PGP então utiliza a chave de sessão para
descriptografar os dados da primeira fase, restando apenas a descompactação, após estes processos,
os dados estão prontos para serem utilizados.
15
4 – Conclusão
Pode-se dizer que essa estrutura de provedores de serviços de certificação digital é similar
a dos institutos estaduais de identificação, competentes que são, no âmbito da respectiva unidade da
federação, para a emissão de documentos públicos que asseguram a identidade e assinatura de um
determinado indivíduo, e que são reconhecidos como válidos em todo o território nacional.
O uso de certificados digitais deve ser levado em conta para o aumento de segurança tanto
no ambiente interno (rede local), quanto em meio externo (transações web), infelizmente, até
mesmo os sistemas de criptografia mais sofisticados podem, eventualmente, ser comprometidos,
pela variedade de ataques aos quais os mesmos estão sujeitos (Ataques de força bruta,
Criptoanálise,Texto cifrado puro, Texto claro conhecido, entre outros), é fundamental aliar o uso de
certificados digitais a procedimentos e praticas de segurança. Politicas de segurança devem ser
estabelecidas e usuários conscientizados e devidamente preparados para atuar com essas
ferramentes, técnicas e metodologias, apenas com esse conjunto trabalhando de formar sincronizada
podemos atingir resultados que elevam o nível de segurança e agregar vantagens competitivas.
16
5 – Bibliografia
Web
http://br-linux.org/tutoriais/002209.html
Acessado em 15/08/2009
http://www.iti.br/
Acessado em 15/08/2008
http://www.inf.ufsc.br/~schalata/seg/hash.htm
Acessado em 15/08/2009
http://www.openssl.org/
Acessado em 30/08/2009
http://www.pafis.shh.fi/~mathje02/isac/ws1/
Acessado em 30/08/2009
INFO Wester, Assinatura Digital.
http://www.infowester.com/assincertdigital.php
Acessado em 04/10/2009
INFO Wester, Criptografia.
http://www.infowester.com/criptografia.php
Acessado em 04/10/2009
Clube do Hardware
http://www.clubedohardware.com.br/artigos/667/
Acessado em 04/10/2009
Edson's Home Page.
http://www.lsi.usp.br/~elima/seguranca_cripto.html
Acessado em 12/10/2009
http://www.gta.ufrj.br/grad/01_2/tls/toc2.htm
Acessado em 12/10/2009
http://www.ecommerce.org.br/Artigos/assinatura_digital.htm
Acessado em 12/10/2009
Planalto Federal
https://www.planalto.gov.br/ccivil_03/MPV/Antigas_2001/2200-2.htm
Acessado em 17/10/2009
Quaresma, P. Códigos e Criptografia
<http://www.mat.uc.pt/~pedro/lectivos/CodigosCriptografia/apontamentos223a229.pdf>.
Acessado em 17/10/2009
http://www.openssl.org/
Acessado em 02/11/2009
Livros
Volpi, Marlon Marcelo. Assinatura Digital – Aspecto Técnicos, Praticos e Legais, 1ª
Edição, editora Axcel Books.
Cordeiro, Luiz Gustavo. Certificação Digital – Conceitos e Aplicações.
Modelos Brasileiro e Australiano, 1ª Edição, Editora Ciência Moderna Ltda.
17
Download

Joel Hartmann Junior