O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas.
Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
Certificação Digital
Publicado em 11 de abril de 2004
Recebemos do Diogo C. Gonzaga (diogo.gonzaga at planalto.gov.br) um interessante artigo introdutório sobre certificação digital, explicando os conceitos envolvidos e algumas das ferramentas básicas. A leitura é mais do que recomendada, aindamais quando se considera que ele promete para breve outros artigos sobre a implementação da criptografia e certificação digital utilizando as linguagens de programação Java, C e PHP. O Diogo mantém uma versão atualizada deste artigo, caso você queira consultar. Certificação Digital Autor: Diogo C. Gonzaga (diogo.gonzaga at planalto.gov.br) O que é "Certificado Digital"? É um documento criptografado que contém informações necessárias para identificação de uma pessoa física ou entidade jurídica. Qualquer conteúdo eletrônico que foi assinado digitalmente tem garantia de autenticidade de origem. Por exemplo: ao receber uma requisição, verifica-se os campos do certificado digital, a partir desses dados pode-se ter certeza que a origem da requisição é confiável e autentica. Um certificado digital é emitido por uma Autoridade Certificadora (AC), uma entidade confiável do ponto de vista jurídico. No entanto, isso não impede que você mesmo crie um certificado digital para fins particulares, como mostraremos posteriormente nesse mesmo documento. O certificado digital é transmitido através de uma conexão segura, que usa um protocolo de transmissão específico para transmitir dados criptografados: o SSL (Secure Socket Layer). Você só poderá usar um certificado digital se a aplicação (navegador da web, cliente de e-mail, etc) que você estiver utilizando implementar o suporte a conexões seguras. Para que um certificado digital seja válido do ponto de vista jurídico, a operação de emissão do certificado deve envolver duas entidades: * uma AR (Autoridade de Registro) O papel de uma AR (Autoridade de Registro) é requisitar a emissão de certificados digitais de uma AC (Autoridade Certificadora). Por exemplo: Uma organização financeira (Ex.:um banco) determina que cada usuário deve realizar transações criptografadas; então, ela (organização financeira) requisita certificados digitais de uma AC (Autoridade Certificadora) para todos os seus funcionários. Se a organização possuir cem funcionários, Antes de prosseguirmos com a explicação, será necessário que o conceito de hash, criptografia e chaves sejam totalmente esclarecido. * Hash
* criptografia simétrica * criptografia assimétrica - O que é uma chave? Temos: * Cômodos na casa (quarto, sala, etc)
Cômodos da casa <--> Arquivos no seu computador (criptografados ou não) Assim sendo... Tenhos um arquivo, desejamos criptografá-lo. Apenas uma pessoa será autorizada a realizar o método decriptográfico. Então, definimos o algoritmo criptográfico que será usado para cifrar o conteúdo. Feito isso, utilizamos a chave criptográfica para gerar uma cópia criptografada do arquivo de origem. Para que outras pessoas (autorizadas) visualizem o conteúdo do arquivo, utilizamos a chave privada para gerar chaves públicas. Dessa forma, apenas as pessoas que possuírem a chave pública poderão decriptografar o arquivo cifrado. Se o receptor do arquivo possuir sua chave pública, além de decriptografar também poderá Nota: Da mesma forma que você não entregaria a sua chave-mestra para ninguém, a chave privada também não deve ser entregue. Com a sua chave privada, qualquer um pode decriptografar suas informações e criar chaves públicas para que outras pessoas também o façam. Entre os algoritmos utilizados na criptografia assimétrica podemos citar o DES (Data Encryption Standard), o 3DES (Triple Data Encryption Standard) e o IDEA (International Data Encryption Algorithm).
No caso da criptografia simétrica, não existe o conceito de chave pública e chave privada. O método criptográfico é realizado por um algoritmo de domínio público e qualquer pessoa pode facilmente decriptografar conteúdos criptografados simetricamente (é como se você entregasse a chave-mestra da sua casa para qualquer pessoa). Conclui-se que a forma mais segura de criptografar conteúdo em nosso contexto tecnológico é a criptografia assimétrica. Obs.: Nenhum método criptográfico não-assimétrico é considerado suficientemente
Além de preservar a sua chave privada e seus certificados, alguns pré-requisitos e princípios básicos de segurança são necessários para garantir a segurança e confiabilidade dos seus certificados: * As AC's e as AR's devem ser confiáveis entre si. Se isso não acontecer, a possibilidade de fraudes e clonagens de certificados digitais aumentam consideravelmente. Por esse motivo, as AC's devem restringir o número de AR's parceiras apenas às entidades de sua confiança. Por esse motivo, é sempre bom informar-se sobre a relação da organização com a AC e principalmente sobre o processo de obtenção e geração da sua chave privada * Caso haja suspeitas de roubo, clonagem ou adulteração de informações em algum processo que envolva o seu certificado digital, faça o pedido de revogação IMEDIATAMENTE! É a única maneira de contestar algum fato ou transação realizada por algum usuário mal intencionado. * Nunca deixe sua chave privada em locais de acesso público (cd-rom, disquete, diretórios compartilhados, diretórios no servidor de backup da sua empresa, etc). Caso haja necessidade de uma cópia em disquete ou cd-rom, esconda-os em um local seguro de difícil acesso.
* Garantia de sigilo e privacidade na web - Ao visitar um site que está em um servidor WWW que implementa a certificação digital, o seu computador recebe o certificado contendo a chave pública do site que será utilizada * Controle de acesso - Um servidor de aplicações pode solicitar um certificado digital do cliente, evitando o controle de acesso baseado no método tradicional: usuário e senha. * Garantia de sigilo e privacidade - O sistema de correio eletrônico utilizado para troca de mensagens através da Internet não possui recursos nativos para impedir a violação da correspondência eletrônica. Com o uso de certificados digitais, você pode selar a sua correspondência em um "envelope digital criptografado" e certificar-se de que apenas o destinatário será capaz de compreender seu conteúdo.
Podemos utilizar o "openssl" para gerar e gerenciar nossos certificados digitais. O openssl possui código-fonte aberto e é mantido por uma comunidade de desenvolvedores espalhados pela Internet.
Para utilizar o openssl basta fazer o download no site oficial www.openssl.org, descompactar, compilar e instalar. Obs.: Não entraremos em detalhes sobre a instalação do openssl.
Para fixarmos os conceitos, vamos imaginar um cenário real e quase comum (pelo menos desejado) por muitas organizações: criptografar documentos e criar o controle de acesso através das chaves públicas. O exemplo será realizado em quatro etapas: Gerar uma chave privada de 2048 bits utilizando o algoritmo de criptografia 3DES # openssl genrsa -des3 -out chave_privada.key 2048 Criar uma chave pública utilizando a chave privada gerada anteriormente # openssl rsa -in chave_privada.key -pubout -out chave_publica.key Criptografar o documento com nossa chave privada e gerar um arquivo criptografado texto_cifrado.des3 # openssl rsautl -sign -inkey chave_privada.key -in texto.txt -out texto_cifrado.des3 Para que um indivíduo leia o arquivo criptografado, você deverá entregar-lhe a chave pública gerada anteriormente. Com a chave pública em mãos: # openssl rsautl -inkey chave_publica.key -in texto_cifrado.des3 -out texto.txt -pubin Pronto! Acabamos de decriptografar o documento criptografado anteriormente texto.des3 (texto.txt criptografado).
O processo envolve apenas duas etapas: gerar o conteúdo criptografado # openssl base64 -in arquivo.txt -out arquivo_cifrado.b64 decriptografar o conteúdo criptografado anteriormente # openssl base64 -d -in arquivo_cifrado.b64 -out arquivo.txt
No próximo artigo falaremos sobre a implementação da criptografia e certificação digital utilizando as linguagens de programação Java, C e PHP. Aguardem!
http://www.iti.br/ Autor: Comentários para "Certificação Digital"
» Postado por: Adriana C. Kleiber em maio 26, 2004 03:21 PM, 200.207.142:
» Postado por: Nathalia Oliveira em agosto 17, 2004 10:24 AM, 200.206.192:
» Postado por: ANDRE LUIZ DE AMEIDA em agosto 27, 2004 03:34 PM, 161.148.71.:
» Postado por: Jair em outubro 15, 2004 08:07 PM, 200.248.202:
» Postado por: leonardo Nery em outubro 21, 2004 07:59 PM, 200.207.168:
» Postado por: leonardo Nery em outubro 21, 2004 07:59 PM, 200.207.168:
Antes de comentar...
- Preserve a qualidade desta discussão - Leia os Termos de Uso. - Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum. - Mantenha o foco nos argumentos e no assunto - Não faça ataques pessoais. - Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro - Não seja um e-mala ;-) ![]() Envie seu comentário
|