Criptografia Web (Apache + PHP) Um estudo de caso, literalmente.... Bruno Nunes MSDPA 2006/2007
Arquitectura Prevista
O que nos espera... One-Way Cypher Mhash MCrypt
One-Way Cypher string crypt (string input_string, [string salt]) Vários algoritmos (especificados no “Salt”) CRYPT_STD_DES 2 Caracteres CRYPT_EXT_DES 9 Caracteres CRYPT_MD5 12 Caracteres, começando como “$1$” CRYPT_BLOWFISH 16 Caracteres começando como “$2$” Exemplo
Mhash Biblioteca de funções de hashing Algoritmos suportados: Exemplo CRC32; HAVAL160; MD5; CRC32B; HAVAL192; RIPEMD160; GOST; HAVAL224; SHA1; HAVAL128; HAVAL256; TIGER; Exemplo
MCrypt Extensão ao PHP Suporta Encriptação e Desencriptação Criptografia por Blocos Blowfish; RC2; Safer-sk64 xtea; Cast-256; RC4; Safer-sk128; DES; RC4-iv; Serpent; Enigma;Rijndael-128; Threeway; Gost; Rijndael-192; TripleDES; LOKI97; Rijndael-256; Twofish; Panama; Saferplus;Wake Continua
MCrypt (continuação) Vários modos de encriptação: Exemplo ECB (electronic codebook) – Aconselhado para encriptação pequenos volumes de dados, como números de cartões de crédito CBC (cipher block chaining) – Ideal para a encriptação de grandes volumes de dados, como fcheiros CFB (cipher feedback) – deve ser utilizado apenas para quantidades muito pequenas de dados, em que há necessidade de encriptar bytes individuais, como em streams Exemplo
GnuPG (Gnu Privacy Guard) Livre, mesmo para uso comercial Baseia-se no padrão OpenPGP Criar par de chaves pública/privada: > gpg --gen-key Seleccionar tipo de chave (DSA e ElGamal, DSA, RSA) Seleccionar tamanho da chave (768,1024, 2048) Data de validade (expirar) User ID – para identificar a chave Nome Real + Comentário + Email “Nome Real <Comentário> <Email>” Frase-Passe Continua
GnuPG Tem como resultado Encriptar um ficheiro: Uma chave privada (secring.gpg) Uma chave publica (pubring.gpg) Encriptar um ficheiro: >gpg –r ”identificação” –f ”ficheiro” Desencriptar um ficheiro: >gpg –d ”ficheiro” Será preciso indicar a frase-chave definida na criação das chaves.
GnuGP Importar chaves públicas: Aceder a um site de publicação de chaves (ex: http://www.keyserver.net ) > gpg –-import “ficheiro chave(extensão .asc)” Será pedida a frase-chave
Questões? Dúvidas? ... ofertas ?....