Aula prática 1 - GPG e senhas
Transcript of Aula prática 1 - GPG e senhas
PGP
• Pretty Good Privacy
• Desenvolvido por Phil R. Zimmermann (1991)
• Padrão para assinatura e encriptação de dados
• Utiliza IDEA, RSA e MD5
PGP: Encriptação
• Compressão dos dados (zip)– Descaracterização da linguagem
– Economia de memória e tempo
• Geração de uma chave de sessão– Chave secreta randômica utilizada uma só
vez
PGP: Encriptação
Mensagem zipada é encriptada com a chave de sessão
Chave de sessão é encriptada com a chave pública do receptor
Criptograma da mensagem + criptograma da chave de sessão
PGP: Decriptação
Mensagem recebida
Criptograma é decriptado com a
chave de sessão
Mensagem original zipada
Criptograma da mensagem
Criptograma da chave de sessão
Chave de sessão é decriptada com a chave privada do receptor
PGP: Característica
• Combina a conveniência da encriptação de chave pública com a velocidade da encriptação de chave secreta
PGP: Assinatura Digital
• É calculado o resumo da mensagem, que enviado junto com a mensagem
• O receptor deve calcular este valor e comparar com o recebido
GPG (GNU Privacy Guard)
• Versão GNU do PGP
• Gratuito e de código aberto
• Suporta ElGamal, DSA, RSA, AES, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 e TIGER
GPG: Aula Prática
• Utilizando o GnuPG (GNU Privacy Guard)– Executável: gpg (Linux), gpg4win (Windows)
• Gerar um par de chaves pública e privada– mkdir ~/.gnupg
– gpg --gen-key
– Siga as instruções
GPG: Aula Prática
• Você acabou de gerar suas chaves pública e privada
• Dê um ls -l no diretório ~/.gnupg
-rw-r--r-- 1 otto otto 908 Aug 28 15:36 pubring.gpg
-rw------- 1 otto otto 600 Aug 28 15:36 random_seed
-rw------- 1 otto otto 1129 Aug 28 15:36 secring.gpg
• Salve a sua chave pública– gpg -a --export seu_nome > seu_nome.asc
GPG: Aula Prática
• Envie sua chave pública aos seus amigos ou disponibilize em algum lugar (por exemplo na sua página HTML)
• Importe a chave de outras pessoas– gpg --import arquivo
• Ex.: gpg --import otto.asc
GPG: Aula Prática
• Liste as chaves públicas que você conhece– gpg --list-keys
• Declare confiança na autenticidade de uma chave pública assinando-a– gpg --sign-key nome
GPG: Aula Prática
• Assine algum arquivo– gpg --clearsign arquivo
• Verifique a assinatura– gpg --verify arquivo.asc
GPG: Aula Prática
• Encripte algum arquivo– gpg -r destinatário -e arquivo
• Decripte o arquivo– gpg -d arquivo.gpg > arquivo
Senhas
• Um código secreto convencionado entre as partes como forma de reconhecimento
• Amplamente utilizadas como forma de autenticação em sistemas computacionais
Senhas Fracas
• Senhas curtas
• Somente letras minúsculas
• Palavras contidas em dicionários
• Dados pessoais públicos
• Sequências visuais no teclado
• Substituições simples nas categorias acima (A : @, I : 1, ...)
Senhas Fracas
Senhas Fortes
• Toda senha pode ser quebrada testando todas as combinações– Tempo
– Recursos
• Uma senha é forte se:– Custo para quebrá-la supera o valor da informação
– Tempo para quebrá-la supera a vida da informação
Custo
Senhas Fortes: Recomendações
• Mínimo de 8 caracteres
• Utilizar– Maiúsculas
– Minúsculas
– Símbolos
– Números
Senhas Fortes: Métodos
• Mnemônico– Esta senha, por exemplo, foi escolhida para
2015! => Es,pe,fep2015!
• Frases-senha alteradas– Es,pe,fep2013! => E5,p3,f&p2013!– To be or not to be => 2B0r!2b
• Combinação e alteração– carta, cadeira, copo => Krt@Kd1r@C0p0
Senhas Fortes: Métodos
• Não deve ser usada a mesma senha em mais de um serviço– A quebra de segurança de um serviço implica na
quebra de todos neste caso
• Método da senha base:1.Criar senha por um dos métodos anteriores
2.Criar uma regra de derivação para cada serviço
Quebrando Senhas
• Força bruta
• Incremental– Força bruta
– Estudos linguísticos
– Cadeias de markov
– Estatística
• Dicionário– Regras de mistura: A:@, I:1, E:3 ...
Senhas: Aula Prática
• John the Ripper
– É gratuito, de código aberto.
– Desenvolvido originalmente UNIX por Alexander Peslyak.
– Hoje John the Ripper está disponível para diversas plataformas.
Senhas: Aula Prática
• Instalação– su
– apt-get install john john-data• Programa principal: john• Utilitário: Unshadow
• Listas de caracteres e dicionário em /usr/share/john/data
• Teste– john --test
Senhas: Aula Prática
• Arquivo de senha de usuário no Linux:<usuário>:<resumo da senha>:<identificador de usuário>:<identificador de
grupo>:<Infrmações de usuário>:<diretório base>:<interpretador de comandos>
• Exemplos:– root:425bea4086598b7c11668dd8483c926c:0:0:Root user:/root:/bin/bash– user:029deb807ad1843954390e990e4f06ed:1023:1008:Some
user:/lab/users/user:/bin/bash
• Linux separa arquivos de senha e dados– unshadow /etc/passwd /etc/shadow > mypasswd
Senhas: Aula Prática
• Ataques:– Manual: man john
– Exemplo: Ataque de dicionáriojohn -format=raw-md5 -wordlist=500-worst-passwords.lst mypasswd
john -format=raw-md5 -wordlist=500-worst-passwords.lst -incremental mypasswd