A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Márcio Moreira, Rogério Mendes & Flamaryon Guerin &"— Transcrição da apresentação:

1 Márcio Moreira, Rogério Mendes & Flamaryon Guerin & 6º CONTECSI - 3 a 5 de Junho de 2009 – USP – São Paulo – Brasil

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

3 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 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 Destino Origem Destino Árbitro

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

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

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

8 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: MétodoPrincípioOperações RSALogaritmo* & / de números ECDSACurvas Elípticas+ & - de pontos

9 FaseAlgoritmo DSAAlgoritmo ECDSA Geração das chaves Escolha p, q, x e q | p - 1, 1 x < q. Escolha h Z p * e calcule: g = h (p-1)/q mod p até que g 1. y = g x mod p Chave pública: (p, q, g, y) Chave privada: x Escolha E sobre Z p, Escolha d, 1 d < n. Escolha G E(Z p ) de ordem n. Q = d G Chave pública: (E, n, G, Q) Chave privada: d Assinatura Escolha k, 1 k < q. Calcule: r = (g k mod p) mod q s = k -1 ( h(m) + xr) mod q (r, s) é a assinatura de m. Escolha k, 1 k < n. Calcule: k G = (x 1, y 1 ) e r = x 1 mod n s = k -1 ( h(m) + dr) mod n (r, s) é a assinatura de m. Checagem da Assinatura w = s -1 mod q u 1 = h(m)w mod q u 2 = rw mod q v = (g u1 y u2 mod p) mod q Se v = r então (r, s) está ok. w = s -1 mod n u 1 = h(m)w mod n u 2 = rw mod n u 1 G + u 2 Q = (x 2, y 2 ), v = x 2 mod n Se v = r então (r, s) está ok.

10 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 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, e

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

13 Assinatura irrefutável de s. 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 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 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 Introdução ECDSA Aplicações Implementação Java Conclusões

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

17 4. Instalar a biblioteca bcprov-jdk apontando para este arquivo numa das pastas do item 2. Bibliotecas: import java.security.*; import org.bouncycastle.crypto.params.ECPublicKeyParameters; import org.bouncycastle.jce.ECNamedCurveTable; import org.bouncycastle.jce.spec.ECNamedCurveParameterSpec; Parametrização da curva: ECNamedCurveParameterSpec ECCparam = ECNamedCurveTable.getParameterSpec("prime192v2");

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

19 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()); boolean sigok = ecdsa.verify(sig);

20

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

22 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 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 João N. Souza, Márcio A. R. Moreira e Ilmério R. Silva, A Multi-User Key and Data Exchange Protocol to Manage a Secure Database, SBBD XVII Simpósio Brasileiro de Banco de Dados, este artigo está disponível para download em: W. Stallings, Cryptography and Network Security: Principles and Practice, Prentice Hall, Elliptic Curve, D. Johnson e A. Menezes, The Elliptic Curve Digital Signature Algorithm (ECDSA), waterloo.cazSz~ajmenezezSzpublicationszSzecdsa.pdf/johnson99ellipti c.pdf waterloo.cazSz~ajmenezezSzpublicationszSzecdsa.pdf/johnson99ellipti c.pdf Don Johnson, Alfred Menezes e Scott Vanstone, The Elliptic Curve Digital Signature Algorithm (ECDSA), Certicom Corporation, 2001, disponível em ext_aid=27&qual=2& ext_aid=27&qual=2&

25 Disponível em: Márcio Moreira, Rogério Mendes & Flamaryon Guerin & 6º CONTECSI - 3 a 5 de Junho de 2009 – USP – São Paulo – Brasil


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

Apresentações semelhantes


Anúncios Google