1 / 25

Márcio Moreira, Rogério Mendes & Flamaryon Guerin

Márcio Moreira, Rogério Mendes & Flamaryon Guerin marcio.moreira@uniminas.br , rogerio@websec.com.br & flamaryon@uniminas.br 6º CONTECSI - 3 a 5 de Junho de 2009 – USP – São Paulo – Brasil.

yoko-moran
Download Presentation

Márcio Moreira, Rogério Mendes & Flamaryon Guerin

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Márcio Moreira, Rogério Mendes & FlamaryonGuerin marcio.moreira@uniminas.br , rogerio@websec.com.br & flamaryon@uniminas.br 6º CONTECSI - 3 a 5 de Junho de 2009 – USP – São Paulo – Brasil Algoritmo de Assinatura Digital por Curvas ElípticasECDSA (Elliptic Curve Digital Signature Algorithm)

  2. Agenda • Introdução • ECDSA • Aplicações • Implementação Java • Conclusões

  3. Introdução • A segurança é cada vez mais necessária: • A necessidade de assinar digitalmente documentos vem crescendo significativamente • As assinaturas digitais devem fornecer: • Autenticidade: • Garantir que o documento é autêntico • Não repúdio: • O autor não pode negar a assinatura • Integridade: • O documento assinado não pode ser alterado

  4. Tipos de algoritmos de assinatura Origem Destino • Diretos: • O processo de assinatura envolvem somente a origem e o destino. • Normalmente utilizam algoritmos de criptografia simétricos. • Em caso de disputas, uma terceira parte precisa ter acesso à mensagem, à assinatura e à chave privada para fazer as verificações. • Arbitrados: • O documento assinado é enviado a um árbitro que checa as três características fundamentais da assinatura digital e envia o documento assinado ao destino. • Os métodos de criptografia normalmente envolvidos neste tipo de processo é o de chave pública. Origem Árbitro Destino

  5. Assinatura digital • Assinando uma mensagem: • Hash = resumo(texto plano) • Assinatura = cifra(hash, chave privada emissor) • Mensagem = texto plano + assinatura Máquina da Maria chave privada da Maria  Assinatura Digital Hash Função Hash Algoritmo de cifrar texto plano Mensagem

  6. Verificando uma assinatura digital • Hash1 = resumo (texto plano) • Hash2 = decifra(assinatura, chave pública emissor) Máquina do João texto plano Assinatura Digital chave pública da Maria Função Hash Algoritmo de decifrar Hash1 Hash2 Comparação

  7. Agenda • Introdução • ECDSA • Aplicações • Implementação Java • Conclusões

  8. ECDSA • Porque curvas elípticas? • Consegue-se o mesmo nível de segurança do RSA com no mínimo 1/6 do esforço computacional • Algumas curvas:

  9. DSA x ECDSA

  10. Vantagens do ECDSA • Utiliza chaves menores. • Utiliza soma ao invés de multiplicações. • Utiliza multiplicações (soma cumulativa) ao invés de exponenciações. • É mais eficiente em termos de tempo de resposta. • Consome menos espaço de armazenamento. • É adequado para equipamentos com poucos recursos de hardware disponíveis.

  11. Ataques ao ECDSA • Padrões: • Ataques contra as curvas elípticas e contra o problema dos logaritmos discretos que sustentam criptosistemas baseados nestas curvas. • Ataques à função hash utilizada (SHA-1). • Outros tipos de ataques. • Específicos: • Aplicação da força bruta para quebrar Q = d G. • Fatoração da ordem do grupo finito (n) em torno de G: redução da complexidade da fatoração de n utilizando o teorema chinês do resto. • Curvas definidas sobre grupos finitos pequenos. • Conclusão: • O importante é que, com os parâmetros propostos pela ANSI X9.62, uma máquina com 330 mil processadores precisaria de 32 dias para quebrar um ECC. Assim, o ECDSA é recomendado pelo NIST como um dos algoritmos mais seguros de assinatura digital. Fonte: NIST, http://csrc.nist.gov/groups/ST/toolkit/digital_signatures.html e www.ipa.go.jp/security/enc/CRYPTREC/fy15/doc/1051_ecdsa.pdf

  12. Agenda • Introdução • ECDSA • Aplicações • Implementação Java • Conclusões

  13. Aplicações do ECDSA • Assinatura irrefutável de e-mails. • Assinatura de pedidos em comércio eletrônico. • Identificação de sites, comprovando a autenticidade do endereço. • Acompanhamento e aditamento de processos judiciais ou administrativos. • Recepção do Diário Oficial Eletrônico da União. • Viabilizar a apresentação de projetos de lei diretamente pelos cidadãos.

  14. Aplicações do ECDSA • Assinatura do Imposto de Renda e outros serviços da Receita Federal. • Enviar e receber documentos eletrônicos para cartórios. • Permitir transações seguras entre instituições financeiras, como por exemplo o SPB – Sistema de Pagamentos Brasileiro, em uso desde 2002. • Assinatura eletrônica de documentos em geral, em substituição ao enorme número de senhas que as pessoas passaram a ter que criar e gerir com o uso cada vez mais crescente da informática e dos problemas decorrentes de segurança.

  15. Agenda • Introdução • ECDSA • Aplicações • Implementação Java • Conclusões

  16. Implementação Java • Biblioteca: java.security • Provider: BouncyCastle (www.bouncycastle.org) • 1. Entrar no site http://www.bouncycastle.org/latest_releases.html e baixar o arquivo: bcprov-jdk15-133.jar ou mais recente. • 2. Copiar este arquivo para as pastas: • C:\Arquivos de programas\Java\jdk<r>\jre\lib • C:\Arquivos de programas\Java\jre<r>\lib • Onde: <r> = release = por exemplo: 1.5.0_07 • 3. Na seqüência de providers dos arquivos: • C:\Arquivos de programas\Java\jdk<r>\jre\lib\security\java.security • C:\Arquivos de programas\Java\jre<r>\lib\security\java.security • Acrescentar a linha: • security.provider.<n>=org.bouncycastle.jce.provider.BouncyCastleProvider • Onde: <n> = número do último provider instalado + 1

  17. Bibliotecas • 4. Instalar a biblioteca bcprov-jdk15-133 apontando para este arquivo numa das pastas do item 2. • Bibliotecas: • importjava.security.*; • importorg.bouncycastle.crypto.params.ECPublicKeyParameters; • importorg.bouncycastle.jce.ECNamedCurveTable; • importorg.bouncycastle.jce.spec.ECNamedCurveParameterSpec; • Parametrização da curva: • ECNamedCurveParameterSpecECCparam = ECNamedCurveTable.getParameterSpec("prime192v2");

  18. Geração de chaves • Geração das chaves: • KeyPairGeneratorkeyGen = KeyPairGenerator.getInstance("ECDSA", "BC"); • keyGen.initialize(ECCparam); • keyPair = keyGen.generateKeyPair(); • PublicKeypubKey = keyPair.getPublic(); • PrivateKeyprvKey = keyPair.getPrivate(); • Publicação das chaves como string: • jTACPrivada.setText(prvKey.toString()); • jTACPublica.setText(pubKey.toString());

  19. Assinando e verificando um texto • Assinatura: • Signature ecdsa = Signature.getInstance("ECDSA", "BC"); • ecdsa.initSign(prvKey); • ecdsa.update(m.getBytes()); • byte[] sig = ecdsa.sign(); • jTFAssinatura.setText(sig.toString()); • Verificação da assinatura: • ecdsa.initVerify(pubKey); • ecdsa.update(m.getBytes()); • booleansigok = ecdsa.verify(sig);

  20. Tela da aplicação

  21. Agenda • Introdução • ECDSA • Aplicações • Implementação Java • Conclusões

  22. Conclusões • As curvas elípticas vêm ganhando cada vez mais espaço no mundo dos sistemas criptográficos: • Isto se deve à eficiência oferecida por elas em relação aos métodos tradicionais utilizados nos sistemas criptográficos. • O ECDSA pode ser utilizado com segurança como um método de assinatura digital, pois ele foi reconhecido por todas as instituições mais importantes de padronização e recomendação de padrões do mundo.

  23. Contribuições do trabalho • O trabalho nos permitiu: • Fazer uma revisão teórica do conceito de assinatura digital, das curvas elípticas, dos algoritmos DSA e ECDSA. • Ver quão prática e simples é a implementação de métodos complexos quando utilizamos uma biblioteca reconhecidamente de boa qualidade e segura. • Acreditamos que o trabalho cumpriu seu propósito de trazer conceitos abstratos da criptografia para um ambiente concreto e prático.

  24. Referências • João N. Souza, Márcio A. R. Moreira e Ilmério R. Silva, A Multi-UserKeyand Data Exchange Protocol to Manage a Secure Database, SBBD 2002 - XVII Simpósio Brasileiro de Banco de Dados, este artigo está disponível para download em: http://200.146.233.98/empresa/marcio/2002_10_sbbd.pdf • W. Stallings, Cryptography and Network Security: Principles and Practice, Prentice Hall, 1999. • Elliptic Curve, http://mathworld.wolfram.com/EllipticCurve.html • D. Johnson e A. Menezes, The Elliptic Curve Digital Signature Algorithm (ECDSA), http://citeseer.ist.psu.edu/cache/papers/cs/8755/http:zSzzSzcacr.math.uwaterloo.cazSz~ajmenezezSzpublicationszSzecdsa.pdf/johnson99elliptic.pdf • Don Johnson, Alfred Menezes e Scott Vanstone, TheElliptic Curve Digital Signature Algorithm (ECDSA), CerticomCorporation, 2001, disponível em http://www.certicom.com/index.php?action=forms,login2&mode=do&next_aid=27&qual=2&

  25. Obrigado! Dúvidas? Disponível em: www.geocities.com/marciomoreira Márcio Moreira, Rogério Mendes & FlamaryonGuerin marcio.moreira@uniminas.br , rogerio@websec.com.br & flamaryon@uniminas.br 6º CONTECSI - 3 a 5 de Junho de 2009 – USP – São Paulo – Brasil Algoritmo de Assinatura Digital por Curvas ElípticasECDSA (Elliptic Curve Digital Signature Algorithm)

More Related