ICP ou PKI  ICP  (Infra-estrutura de chaves públicas) ou  PKI  (Public key Infrastructure):  É uma fonte confiável para obtenção de chaves públicas; Garante a autenticidade de uma pessoa física ou jurídica; Certificados Principal elemento de uma ICP Contém a chave pública de uma pessoa física ou jurídica e a chave privada da autoridade certificadora; É valido por um período definido
ICP ou PKI  AC  (Autoridade Certificadora) Pública Emite certificados que podem ser obtidos publicamente; Ex: VeriSign, Thawte, Certsign etc. Privada Emite certificados no âmbito de uma organização;
ICP ou PKI  X.509 Formato mais aceito para certificados, introduzido em 1988; Última revisão em 1996 x.509v3 X.509v1, x.509v2, x509v3 v3 houve a padronização de 14 campos adicionais Ex: Uso da Chave, Restrições de uso etc...
ICP ou PKI  Certificate Revocation List (CRL) Um grande problema para as CA's; É disponibilizada através de um arquivo para download; Há muita latência no cliente em relação a verificação dos certificados revogados; Solução mais comum Fragmentar o arquivo por faixas de seriais de certificados; Há muitas soluções para a distribuição de CRL Repositório em LDAP é o mais utilizado;
ICP ou PKI  Online Certificate Status Protocol (OCSP) RFC 2560 Uma aplicação que utiliza OCSP passa para o servidor o serial do certificado; Respostas do servidor Good, Revoked, Unknown; Vulnerabilidades Ataque de DOS (denial of service); Interceptação de mensagens de retorno do servidor;
ICP ou PKI  Tipos de Certificados Pessoais Conhecidos como Class1 Digital ID; http://www.verisign.com/ Mais baratos; Limitados para a segurança de email; Assinatura de Código Utilizado por vendedores de software; Web Site Certificados de Servidores;
OpenSSL – Criando uma AC A - Configurações iniciais 1) Definir o diretório raíz para a CA $ mkdir /home/usuario/exemploca $ cd /home/usuario/exemploca 2) Criar os diretórios que vão armazenar os certificados e a chave privada da CA $ mkdir certs private newcerts crl 3) Proteger a chave privada da CA $ chmod g-rwx,o-rwx private
OpenSSL – Criando uma AC A - Configurações iniciais 4) Criar o arquivo que irá armazenar o número serial dos certificados da CA $ echo '01' > serial 5) Criar o arquivo que irá armazenar a cadeia de certificados $ touch index.txt 6) Criando o arquivo de configuração da AC $ copiar o arquivo openssl.cnf Alterar o caminho para a pasta raíz da AC
OpenSSL – Criando uma AC A - Configurações iniciais 7) Informar a localização do arquivo de configuração para o OpenSSL $OPENSSL_CONF=/home/leandro/projetos_openssl/exemploca/openssl.cnf $ export OPENSSL_CONF
OpenSSL – Criando uma AC B - Certificado Raíz para a AC 1) Gerar um certificado raíz auto assinado $ openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM Descrição: Gera um Certificado no padrão x509, e ainda  gera  uma  chave privada  de 2048 bits para a AC (./private/cakey.pem) utilizando o algoritmo RSA. É recomendado no mínimo uma chave de 2048 bits para a chave da AC. O  certificado auto assinado  será armazenado no arquivo cacert.pem no formato PEM. 2) Exibir os detalhes do Certificado gerado $ openssl x509 -in cacert.pem -text -noout
OpenSSL – Criando uma AC C – Emitindo Certificados 1) Requisitar um certificado da AC $ openssl req -newkey rsa:2048 -keyout testkey.pem -keyform PEM -out testreq.pem Descrição: testreq.pem  => contém o certificado requisitado; testkey.pem  => contém a chave privada; A  chave pública  correspondente é armazenada no certificado. A primeira frase secreta (PEM pass phrase) solicitada é usada para criptografar a chave privada. A segunda frase secreta (challenge password) solicitada é armazenada no certificado requisitado e é ignorada pelo OpenSSL. Algumas CA's fazem uso desta frase secreta.
OpenSSL – Criando uma AC C – Emitindo Certificados 2) Visualizar o Certificado Requisitado $ openssl req -in testreq.pem -text -noout
OpenSSL – Criando uma AC C – Emitindo Certificados 3) Validar o certificado para uso $ openssl ca -in testreq.pem Descrição: Será solicitado a frase secreta da chave privada da AC (cakey.pem) para assinar o certificado solicitado. Uma confirmação de assinatura do certificado será solicitada. Também será solicitado uma confirmação de validação do certificado na AC. Após a confirmação será gerado um serial único para o certificado na AC (serial) e o banco de dados de certificados será atualizado (index.txt). O novo certificado será armazenado no diretório que está definido na variável (new_certs_dir) do arquivo openssl.cnf
OpenSSL – Criando uma AC D - Criptografando um arquivo  1) Criptografando um arquivo com o Certificado validado Criar o arquivo emailOriginal.txt com alguma informação. $ openssl smime -encrypt -in emailOriginal.txt -des3 -out emailEncriptado.txt newcerts/01.pem Descrição: Obtém a chave pública do certificado X.509 (01.pem) para criptografar o conteúdo do arquivo (emailOriginal.txt) com o algoritmo 3DES.  O resultado criptografado é armazenado no arquivo (emailEncriptado.txt).
OpenSSL – Criando uma AC D - Criptografando um arquivo  2) Descriptografando um arquivo com o Certificado validado $ openssl smime -decrypt -in emailEncriptado.txt -recip newcerts/01.pem -inkey testkey.pem -out emailDecriptado.txt Descrição: Obtém a chave pública do certificado X.509 (01.pem), verifica a congruência com a chave privada (testkey.pem). Sendo as chaves congruentes, descriptografa a mensagem S/MIME do arquivo emailEncriptado.txt utilizando a chave privada. O arquivo descriptografado é armazenado no arquivo emailDecriptado.txt.
OpenSSL – Criando uma AC E – Assinatura Digital  1) Assinando um arquivo com o Certificado validado $ openssl smime -sign -in emailOriginal.txt -text -out emailAssinado.sgn -signer newcerts/01.pem -inkey testkey.pem -certfile newcerts/01.pem Descrição: A assinatura do certificado é obtida do arquivo (01.pem), e o conteúdo do arquivo (emailOriginal.txt) será assinado com a chave privada testkey.pem.  O certificado será incluido na mensagem S/MIME . O arquivo assinado será armazenado em emailAssinado.sgn.
OpenSSL – Criando uma AC E – Assinatura Digital  2) Criptografando o arquivo assinado $ openssl smime -encrypt -in emailAssinado.sgn -out emailAssinadoEncriptado.sgn -des3 newcerts/01.pem Descrição: O arquivo assinado (emailAssinado.txt) será criptografado com o algoritmo 3DES, utilizando ainda, a chave pública do usuário que é proprietário do certificado (01.pem).
OpenSSL – Criando uma AC E – Assinatura Digital  3) Descriptografando o arquivo $ openssl smime -decrypt -in emailAssinadoEncriptado.sgn -recip newcerts/01.pem -inkey testkey.pem -out emailAssinadoDecriptado.sgn Descrição: O arquivo criptografado (emailAssinadoEncriptado.txt) será descriptografado com a chave privada do usuário (testkey.pem). O arquivo descriptografado e assinado será armazenado em emailAssinadoDecriptado.sgn
OpenSSL – Criando uma AC E – Assinatura Digital  4) Verificando a assinatura Desafio !!!!!!! Verificar a assinatura do arquivo emailAssinadoDecriptado.sgn com o framework OpenSSL na linha de comando. Enviar a solução para: [email_address]
OpenSSL – Criando uma AC F - Revogação de Certificados 1) Revogando o certificado $ openssl ca -revoke newcerts/01.pem Descrição: Será solicitado a senha secreta para a chave privada da AC, isso por questões de segurança, para verificar se o certificado que será revogado foi emitido pela AC, ou seja, se a assinatura do certificado é equivalente a chave privada da AC. O banco de dados da AC (index.txt) será atualizado informando que o certificado de número serial 01 foi revogado, isso através da letra (R) na linha referente ao certificado 01.
OpenSSL – Criando uma AC F - Revogação de Certificados 2) Visualizar o banco de dados da AC e observar que o certificado 01 foi Revogado; $ cat index.txt 3) Vizualizar o certificado e observar as informações de data e hora referentes a validade do certificado; $ openssl x509 -in newcerts/01.pem -text -noout
OpenSSL – Criando uma AC F – Revogação de Certificados 4) Emitir a CRL (Lista de Certificados Revogados)   $ openssl  ca  -gencrl  -out  crl/lista.crl Descrição: Será solicitado a senha secreta da chave privada da AC para que a lista de certificados revogados (lista.crl) seja assinada. Com isso é garantido a autenticidade da CRL emitida pela AC. 5) Visualizar a CRL $ openssl  crl  -in  crl/lista.crl  -text  -noout
Trabalho  Elliptic Curve Cryptography Implementing Elliptic Curve Cryptography, by Michael Rosing (Manning) OCSP (Online Certificate Status Protocol) RFC 2560 Diffie Hellman RFC 2631 CA - X.509v3
Trabalho  Medida Provisória sobre ICP-Brasil CA com LDAP Cyrus SASL MIT Kerberos V

Certificação Digital - Aula2 Exercícios

  • 1.
    ICP ou PKI ICP (Infra-estrutura de chaves públicas) ou PKI (Public key Infrastructure): É uma fonte confiável para obtenção de chaves públicas; Garante a autenticidade de uma pessoa física ou jurídica; Certificados Principal elemento de uma ICP Contém a chave pública de uma pessoa física ou jurídica e a chave privada da autoridade certificadora; É valido por um período definido
  • 2.
    ICP ou PKI AC (Autoridade Certificadora) Pública Emite certificados que podem ser obtidos publicamente; Ex: VeriSign, Thawte, Certsign etc. Privada Emite certificados no âmbito de uma organização;
  • 3.
    ICP ou PKI X.509 Formato mais aceito para certificados, introduzido em 1988; Última revisão em 1996 x.509v3 X.509v1, x.509v2, x509v3 v3 houve a padronização de 14 campos adicionais Ex: Uso da Chave, Restrições de uso etc...
  • 4.
    ICP ou PKI Certificate Revocation List (CRL) Um grande problema para as CA's; É disponibilizada através de um arquivo para download; Há muita latência no cliente em relação a verificação dos certificados revogados; Solução mais comum Fragmentar o arquivo por faixas de seriais de certificados; Há muitas soluções para a distribuição de CRL Repositório em LDAP é o mais utilizado;
  • 5.
    ICP ou PKI Online Certificate Status Protocol (OCSP) RFC 2560 Uma aplicação que utiliza OCSP passa para o servidor o serial do certificado; Respostas do servidor Good, Revoked, Unknown; Vulnerabilidades Ataque de DOS (denial of service); Interceptação de mensagens de retorno do servidor;
  • 6.
    ICP ou PKI Tipos de Certificados Pessoais Conhecidos como Class1 Digital ID; http://www.verisign.com/ Mais baratos; Limitados para a segurança de email; Assinatura de Código Utilizado por vendedores de software; Web Site Certificados de Servidores;
  • 7.
    OpenSSL – Criandouma AC A - Configurações iniciais 1) Definir o diretório raíz para a CA $ mkdir /home/usuario/exemploca $ cd /home/usuario/exemploca 2) Criar os diretórios que vão armazenar os certificados e a chave privada da CA $ mkdir certs private newcerts crl 3) Proteger a chave privada da CA $ chmod g-rwx,o-rwx private
  • 8.
    OpenSSL – Criandouma AC A - Configurações iniciais 4) Criar o arquivo que irá armazenar o número serial dos certificados da CA $ echo '01' > serial 5) Criar o arquivo que irá armazenar a cadeia de certificados $ touch index.txt 6) Criando o arquivo de configuração da AC $ copiar o arquivo openssl.cnf Alterar o caminho para a pasta raíz da AC
  • 9.
    OpenSSL – Criandouma AC A - Configurações iniciais 7) Informar a localização do arquivo de configuração para o OpenSSL $OPENSSL_CONF=/home/leandro/projetos_openssl/exemploca/openssl.cnf $ export OPENSSL_CONF
  • 10.
    OpenSSL – Criandouma AC B - Certificado Raíz para a AC 1) Gerar um certificado raíz auto assinado $ openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM Descrição: Gera um Certificado no padrão x509, e ainda gera uma chave privada de 2048 bits para a AC (./private/cakey.pem) utilizando o algoritmo RSA. É recomendado no mínimo uma chave de 2048 bits para a chave da AC. O certificado auto assinado será armazenado no arquivo cacert.pem no formato PEM. 2) Exibir os detalhes do Certificado gerado $ openssl x509 -in cacert.pem -text -noout
  • 11.
    OpenSSL – Criandouma AC C – Emitindo Certificados 1) Requisitar um certificado da AC $ openssl req -newkey rsa:2048 -keyout testkey.pem -keyform PEM -out testreq.pem Descrição: testreq.pem => contém o certificado requisitado; testkey.pem => contém a chave privada; A chave pública correspondente é armazenada no certificado. A primeira frase secreta (PEM pass phrase) solicitada é usada para criptografar a chave privada. A segunda frase secreta (challenge password) solicitada é armazenada no certificado requisitado e é ignorada pelo OpenSSL. Algumas CA's fazem uso desta frase secreta.
  • 12.
    OpenSSL – Criandouma AC C – Emitindo Certificados 2) Visualizar o Certificado Requisitado $ openssl req -in testreq.pem -text -noout
  • 13.
    OpenSSL – Criandouma AC C – Emitindo Certificados 3) Validar o certificado para uso $ openssl ca -in testreq.pem Descrição: Será solicitado a frase secreta da chave privada da AC (cakey.pem) para assinar o certificado solicitado. Uma confirmação de assinatura do certificado será solicitada. Também será solicitado uma confirmação de validação do certificado na AC. Após a confirmação será gerado um serial único para o certificado na AC (serial) e o banco de dados de certificados será atualizado (index.txt). O novo certificado será armazenado no diretório que está definido na variável (new_certs_dir) do arquivo openssl.cnf
  • 14.
    OpenSSL – Criandouma AC D - Criptografando um arquivo 1) Criptografando um arquivo com o Certificado validado Criar o arquivo emailOriginal.txt com alguma informação. $ openssl smime -encrypt -in emailOriginal.txt -des3 -out emailEncriptado.txt newcerts/01.pem Descrição: Obtém a chave pública do certificado X.509 (01.pem) para criptografar o conteúdo do arquivo (emailOriginal.txt) com o algoritmo 3DES. O resultado criptografado é armazenado no arquivo (emailEncriptado.txt).
  • 15.
    OpenSSL – Criandouma AC D - Criptografando um arquivo 2) Descriptografando um arquivo com o Certificado validado $ openssl smime -decrypt -in emailEncriptado.txt -recip newcerts/01.pem -inkey testkey.pem -out emailDecriptado.txt Descrição: Obtém a chave pública do certificado X.509 (01.pem), verifica a congruência com a chave privada (testkey.pem). Sendo as chaves congruentes, descriptografa a mensagem S/MIME do arquivo emailEncriptado.txt utilizando a chave privada. O arquivo descriptografado é armazenado no arquivo emailDecriptado.txt.
  • 16.
    OpenSSL – Criandouma AC E – Assinatura Digital 1) Assinando um arquivo com o Certificado validado $ openssl smime -sign -in emailOriginal.txt -text -out emailAssinado.sgn -signer newcerts/01.pem -inkey testkey.pem -certfile newcerts/01.pem Descrição: A assinatura do certificado é obtida do arquivo (01.pem), e o conteúdo do arquivo (emailOriginal.txt) será assinado com a chave privada testkey.pem. O certificado será incluido na mensagem S/MIME . O arquivo assinado será armazenado em emailAssinado.sgn.
  • 17.
    OpenSSL – Criandouma AC E – Assinatura Digital 2) Criptografando o arquivo assinado $ openssl smime -encrypt -in emailAssinado.sgn -out emailAssinadoEncriptado.sgn -des3 newcerts/01.pem Descrição: O arquivo assinado (emailAssinado.txt) será criptografado com o algoritmo 3DES, utilizando ainda, a chave pública do usuário que é proprietário do certificado (01.pem).
  • 18.
    OpenSSL – Criandouma AC E – Assinatura Digital 3) Descriptografando o arquivo $ openssl smime -decrypt -in emailAssinadoEncriptado.sgn -recip newcerts/01.pem -inkey testkey.pem -out emailAssinadoDecriptado.sgn Descrição: O arquivo criptografado (emailAssinadoEncriptado.txt) será descriptografado com a chave privada do usuário (testkey.pem). O arquivo descriptografado e assinado será armazenado em emailAssinadoDecriptado.sgn
  • 19.
    OpenSSL – Criandouma AC E – Assinatura Digital 4) Verificando a assinatura Desafio !!!!!!! Verificar a assinatura do arquivo emailAssinadoDecriptado.sgn com o framework OpenSSL na linha de comando. Enviar a solução para: [email_address]
  • 20.
    OpenSSL – Criandouma AC F - Revogação de Certificados 1) Revogando o certificado $ openssl ca -revoke newcerts/01.pem Descrição: Será solicitado a senha secreta para a chave privada da AC, isso por questões de segurança, para verificar se o certificado que será revogado foi emitido pela AC, ou seja, se a assinatura do certificado é equivalente a chave privada da AC. O banco de dados da AC (index.txt) será atualizado informando que o certificado de número serial 01 foi revogado, isso através da letra (R) na linha referente ao certificado 01.
  • 21.
    OpenSSL – Criandouma AC F - Revogação de Certificados 2) Visualizar o banco de dados da AC e observar que o certificado 01 foi Revogado; $ cat index.txt 3) Vizualizar o certificado e observar as informações de data e hora referentes a validade do certificado; $ openssl x509 -in newcerts/01.pem -text -noout
  • 22.
    OpenSSL – Criandouma AC F – Revogação de Certificados 4) Emitir a CRL (Lista de Certificados Revogados) $ openssl ca -gencrl -out crl/lista.crl Descrição: Será solicitado a senha secreta da chave privada da AC para que a lista de certificados revogados (lista.crl) seja assinada. Com isso é garantido a autenticidade da CRL emitida pela AC. 5) Visualizar a CRL $ openssl crl -in crl/lista.crl -text -noout
  • 23.
    Trabalho EllipticCurve Cryptography Implementing Elliptic Curve Cryptography, by Michael Rosing (Manning) OCSP (Online Certificate Status Protocol) RFC 2560 Diffie Hellman RFC 2631 CA - X.509v3
  • 24.
    Trabalho MedidaProvisória sobre ICP-Brasil CA com LDAP Cyrus SASL MIT Kerberos V