Criptografia - como utilizar

447 visualizações

Publicada em

Slides da palestra apresentada na PHP Conference 2015 sobre como utilizar criptografia, quais algoritmos são seguros ou não e quando utiliza-los. Exemplos de implementação em PHP.

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
447
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
6
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Criptografia - como utilizar

  1. 1. Criptografia Como utilizar Felipe Weckx felipe@weckx.net @weckx
  2. 2. PHP Conference 2015 2 Segurança da Informação ● Confidencialidade ● Autenticidade ● Integridade ● Disponibilidade
  3. 3. PHP Conference 2015 3 Criptografia ● Transformação da informação para que que seja conhecida apenas pelas partes desejadas. ● Algoritmos – Cifra de Bloco – Modo de Operação – Tamanho da Chave ● Criptografia forte – algoritmos resistentes à ataques criptoanalíticos
  4. 4. PHP Conference 2015 4 Criptografia vs Segurança ● Apenas criptografia não é suficiente ● Criptografia não resolve todos os problemas ● Má utilização é pior do que nenhuma criptografia ● Ataques – Força bruta – Ataque teórico – Ataque de implementação
  5. 5. PHP Conference 2015 5 Hashes ● Criptografia de mão única ● Dados originais não podem ser recuperados ● Salt – essencial para sempre gerar um valor distinto ● Usos – Assinaturas digitais – Armazenamento de senhas – Verificação de integridade
  6. 6. PHP Conference 2015 6 Hashes - Algoritmos ● MD5, SHA1 – ultrapassados, não utilizar ● SHA256, SHA512 ● WHIRLPOOL ● HMAC – Hash-based Message Authentication Code – Assinatura de mensagens (dados) com hashes
  7. 7. PHP Conference 2015 7 Criptografia ● Chave Simétrica – Mesma chave utilizada para criptografar e descriptografar ● Chave Assimétrica – Uma chave para criptografar – Uma chave para descriptografar ● Criptografia Autenticada – Combinação de Criptografia + HMAC – Garante confidencialidade e autenticidade
  8. 8. PHP Conference 2015 8 Criptografia - Algoritmos ● Chave Simétrica – AES – 3DES (em desuso) – DES (não utilizar, inseguro) ● Chave Assimétrica – RSA – ElGamal
  9. 9. PHP Conference 2015 9 No PHP...
  10. 10. PHP Conference 2015 10 Principais Bibliotecas/Funções ● Mcrypt – abandonware – não utilizar – Último release libmcrypt: 19/02/2007 ● OpenSSL – Ativamente mantida, utilizada em inúmeros projetos ● libsodium-php – Extensão baseada na libsodium, moderna e ativamente mantida ● crypt(), password_*() – Funções do PHP para hash
  11. 11. PHP Conference 2015 11 Hash ● password_hash() (PHP >= 5.5) – Utilizar para armazenamento e verificação de senhas – Geração automática de salt e uso do algoritmo mais seguro – password_needs_rehash() verifica se a senha precisa ser hasheada novamente – password_verify() verificação simples de senha para autenticação ● Extensão HASH – Habilitada por padrão – Suporta HMAC e principais algoritmos
  12. 12. PHP Conference 2015 12 Hash – importância do salt SEM SALT Valor 1: phpconference Hash SHA1: 068fb0a3d6cd126ca0132c798b6d90db50f504be Valor 2: novasenha2015 Hash SHA1: 61e9e9a8942cf25619fa162600ffa139d44230f3 Valor 3: phpconference Hash SHA1: 068fb0a3d6cd126ca0132c798b6d90db50f504be COM SALT Valor 1: phpconference Salt: QE/m4ueJzHA= Hash SHA1: 8ca52fcf30105c686ad4df512f58395bc32c8ff7 Valor 2: novasenha2015 Salt: EtE33ovfCsE= Hash SHA1: 69eb34c2c41e376cd60015242ea8927eea2ac291 Valor 3: phpconference Salt: NKRAYDmovvk= Hash SHA1: c92def2a9d6ac80d647d48110f9afee554ad3ddf
  13. 13. PHP Conference 2015 13 Problemas de má implementação... Fonte: http://arstechnica.com/security/2015/09/once-seen-as-bulletproof-11-million-ashley-madison-passwords-already-cracked/
  14. 14. PHP Conference 2015 14 Criptografia de Dados ● Armazenamento de dados sensíveis ● Algoritmo Recomendado AES-256 – Utilizar OpenSSL ou libsodium ● Gerar chaves seguras – Não utilizar rand() nem mt_rand() – Utilizar openssl_random_pseudo_bytes() ● Armazenar chaves em local separado dos dados
  15. 15. PHP Conference 2015 15 Criptografando com AES ● Modo de Operação – Nunca utilizar ECB – Utilizar CBC ou CTR ● Gerar chaves seguras ● Utilizar HMAC para gerar código de autenticação – Validar ao ler dados Original AES com ECB
  16. 16. PHP Conference 2015 16 Exemplo – AES OpenSSL
  17. 17. PHP Conference 2015 17 IV? ● Initialization Vector ● String aleatória de tamanho fixo que normalmente deve ser aleatória (depende do algoritmo) ● IV não é secreto ● Garante valores criptografados distintos para mesmo valor original, semelhante ao salt
  18. 18. PHP Conference 2015 18 Criptografia Autenticada
  19. 19. PHP Conference 2015 19 Melhores Práticas ● Nunca crie seu próprio algoritmo criptográfico ● Utilize algoritmos e bibliotecas já testados e conhecidos ● Não utilizar mcrypt ● Criptografia é apenas uma parte da segurança
  20. 20. PHP Conference 2015 20 Perguntas?

×