Projeto de Criptografia Jorge Ferraz (jfof) Marcus Vinicius (mvgs)

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

Alex Coletta Rafael Curi
André Oliveira Castro Marcelo Siqueira Pereira Filho
Criptografia Assimétrica
Tipos Primitivos, Variáveis e Operadores Aritméticos
Rodrigo Aldegheri Thais Rachel Thiago Felix Thomas Holland Engenharia de Computação - PUC-CAMPINAS 1.
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTERFACES Prof. Thiago Pereira Rique
Perspectivas baseadas em procedimentos e orientadas por objectos Conceitos principais: Encapsulamento, Herança, Polimorfismo (Encapsulation, Hierarchy,
Apresentado por Walfredo Cirne
Criptografia e Segurança em Redes Capítulo 13
Criptografia e Segurança em Redes Capítulo 13
Criptografia e Segurança em Redes Capítulo 9 Quarta Edição William Stallings William Stallings Slides de Lawrie Brown Tradução: Bruno e Mario.
Criptografia e Segurança em redes capitulo 11.
Criptografia e Segurança em redes capítulo 11
Dornélio Mori Ney Bermudes
Criptografia de chave pública
Funções de hash unidirecionais
Uma introdução à criptografia com curvas elípticas
Segurança de Sistemas e Redes
Java Cryptography Architecture (JCA)
TEORIA DOS NÚMEROS Embora existam diversos tipos de números na Matemática (reais, complexos, etc.), o nome "Teoria dos Números" é tradicionalmente reservado.
Funções Criptográficas de Hash
Autenticação de Mensagens
Meditar produz sabedoria phgmw dvtvrgxc vehgruld Segredos (chaves públicas) são trocados Sistemas criptográficos assimétricos.
Função Hash e Autenticação em Redes de Computadores
Public Key Infrastructure PKI
PHP Tipos de dados Constantes.
CADEIA DE CARACTERES (Strings)
Hashing - Espalhamento
Linhas de Pesquisa FRAMESEC
Documentos Digitais Aula 9.
DNSSEC.
7: Segurança de Redes1 Capítulo 7: Segurança de Redes Fundamentos: r o que é segurança? r criptografia r autenticação r integridade de mensagens r distribuição.
Assinaturas digitais.
PROGRAMAÇÃO - INTRODUÇÃO George Gomes Cabral. DECOMPOSIÇÃO Dividir para conquistar: Paradigma básico para tratamento de grandes problemas. Nossa meta.
LUCAS DE ANDRADE VINICIUS BERNARDINO DA SILVA
Ataque KGC Malicioso na Criptografia Sem Certificado José Rodrigo Molina Moraes Sidarta Omar Semprebon da Silva São Leopoldo, 08 de junho de UNISINOS.
Segurança & Auditoria de Sistemas AULA 07 Eduardo Silvestri
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Exercício 3 Função de hash Assinatura digital
Sistemas Seguros Criptografia Simétrica e Assimétrica
Assinatura Digital kryptós + gráphein Thiago Castelló Fonseca Verônica Taquette Vaz Redes de Computadores I Prof. Otto Carlos Muniz Bandeira Duarte.
PGP – Pretty Good Privacy Privacidade Bastante Boa
Seminário Criptografia
Java Kickstart, day 2 Semelhanças com linguagem C.
Tópicos Avançados em Redes de Computadores
Exercício 2 Função resumo (hash) Assinatura digital
Key confirmation and adaptive corruptions in the protocol security logic (Chave de confirmação e Corrupções Adaptativas em um protocolo de segurança lógica)
SEC (Single Error Correction) Código de Hamming
Algoritmos de Chave Pública
EQUAÇÕES EXPONENCIAIS
Autenticação de Mensagens
Segurança & Auditoria de Sistemas AULA 08 Eduardo Silvestri
Execícios de Revisão Redes de Computadores Edgard Jamhour
Recursividade Profs. De Prog2 e Lab2.
3. Criptografia Assimétrica
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Criptografia Assimétrica e Autenticação de Mensagens
Números Primos – algoritmos e aplicações
Aula Prática 13 Orientação a Objeto Monitoria
A Assinatura Digital.
MAC499 – Trabalho de Formatura Supervisionado
OO com Java Luiz Carlos d´Oleron Roteiro de aula.
Segurança de Redes de Computadores
Aluno: Fillipe Oliveira Lima
Segurança de Redes de Computadores Prof. Paulo Fernando da Silva.
1 Assinatura Digital Msc. Adilson Eduardo Guelfi Msc. Frank Meylan Laboratório de Sistemas Integráveis Escola Politécnica da.
Curso Básico de Android
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Segurança de Rede Prof. Sales Filho Pretty Good Privace - PGP.
Transcrição da apresentação:

Projeto de Criptografia Jorge Ferraz (jfof) Marcus Vinicius (mvgs)

Dois Projetos  Implementação de um esquema de assinatura digital utilizando-se das classes comuns de java (pacote java.math)  Implementação do esquema de assinatura digital, usando classes alto nível (pacote java.security);

Primeiro  java.math: classe BigInteger:  Representação Binária;  Operações comuns sobre inteiros;  Operações sobre bits;  Operações de aritmética modular;  Geração de números primos;

Primeiro  Algoritmo RSA Rivest, Shamir, Adleman Sistema de Chaves Assimétricas Resistente (difícil de quebrar) Exponenciação e aritmética modular

Algoritmo RSA a) Um número p, primo; b) Um número q, igualmente primo; c) Um número N (módulo), tal que N = p * q; d) Um número e (expoente); e e) Um número d (expoente), tais que e * d mod[(p-1)(q-1)] = 1

RSA – classe java public RSA(int bitlen) { SecureRandom r = new SecureRandom(); p = new BigInteger(bitlen / 2, 100, r); q = new BigInteger(bitlen / 2, 100, r); n = p.multiply(q); BigInteger m = (p.subtract(BigInteger.ONE)).multiply(q.subtract(BigInteger.ONE)); e = new BigInteger("3"); while(m.gcd(e).intValue() > 1) e = e.add(new BigInteger("2")); d = e.modInverse(m); }

Considerações sobre a classe acima  O problema de geração de números primos – resolvido pela classe BigInteger de java. O construtor utilizado produz um número primo do tamanho desejado com uma probabilidade de 1 – 1/2 100  Igualmente, as demais funções da classe – GCD (Máximo Divisor Comum) e operadores de aritmética modular – tornam simples a geração dos demais números.

Assinatura Digital  Problema da autenticidade Autenticação (o destinatário deve ser capaz de checar a assinatura) Integridade (a assinatura deve ser não- falsificável) Não-Repúdio (o remetente não pode negar sua autenticidade)

Dois paradigmas implementados  Trapdoor (utilização direta do algoritmo RSA)  Hash Then Invert (utilização de uma função Hash nos algoritmos de assinatura e verificação)

TrapDoor Extremamente Vulnerável Consegue-se produzir falsificações com grande facilidade

Solução: Hash-Then-Invert  Utilização de uma Função Hash antes da aplicação do RSA

Na Implementação...  Foi utilizada uma implementação da função SHA1 Freenet by Ian Clarke ( ) public class SHA1 {... public String doHash(String s); }

No final das contas  Percebemos que a utilização da Função Hash garante uma melhoria enorme do sistema. Os Forgers que quebravam o TrapDoor passam a não mais quebrar o Hash- Then-Invert  Ao mesmo tempo, a mesma não acarreta um overhead computacional muito grande

Segundo  Utilizando package java.security; Define uma maneira simples de utilizar os algoritmos de segurança; Porém não fornece uma implementação dos mesmo – necessidade de utilizar Provider’s de terceiros; A utilização dos algoritmos – dado que eles estão prontos – é feita em poucas linhas de código.

Segundo Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); KeyPairGenerator kpg; KeyPair kp; kpg = KeyPairGenerator.getInstance("RSA", "BC"); kpg.initialize(512); kp = kpg.genKeyPair();

Segundo ASSINATURA public byte[] Assinatura(){ Signature sig = Signature.getInstance("MD5withRSA", "BC"); /* Initialize for signing */ sig.initSign(kp.getPrivate()); /* Process the document */ sig.update(mensagemchar); /* Sign it */ return sig.sign(); }

Segundo VERIFICAÇÃO public boolean Verificar() { /* Get Signature object */ Signature sig = Signature.getInstance("MD5withRSA", "BC"); /* Initialize for verifying */ sig.initVerify(kp.getPublic()); /* Process the document */ sig.update(mensagemchar); /* Verify authenticity */ return sig.verify(assinatura); }

Segundo  Fizemos uma pequena simulação:

Segundo  Problemas: Conversões de String para byte[];  É necessário conhecer muito bem a linguagem para poder garantir as propriedades de segurança da aplicação;  A partir do que foi exercitado, fica simples adicionar segurança a uma aplicação java.

Referências  Artigo sobre java.security: nicalArticles/Security/Crypto/ nicalArticles/Security/Crypto/  Endereço do provider gratuito:  Notas de aula Capítulo 8 Capítulo 12