criptografia com hashing diogo martins rafael pierre william kurosawa
TRANSCRIPT
Criptografia com Hashing
Diogo MartinsRafael PierreWilliam Kurosawa
Criptografia com Hashing
Introdução à criptografiaRevisão de HashingHashing + CriptografiaAlgoritmos
Introdução à Criptografia
Com o surgimento da internet e sua facilidade de entregar
informações de maneira precisa e extremamente rápida, a
criptografia tornou-se uma ferramenta fundamental para
permitir que apenas o emissor e o receptor tenham acesso
livre à informação trabalhada.
Introdução à Criptografia
Na computação, as técnicas mais conhecidas envolvem o
conceito de chaves, as chamadas "chaves criptográficas".
Trata-se de um conjunto de bits baseado em um
determinado algoritmo capaz de codificar e de decodificar
informações. Se o receptor da mensagem usar uma chave
incompatível com a chave do emissor, não conseguirá
extrair a informação.
Revisão de Hashing
•Uma função hashing (ou algoritmo hashing) é uma função
que sumariza ou identifica probabilisticamente um dado.
•Uma propriedade importante das funções hashing é que,
se dois valores hash são diferentes, então as duas entradas
diferem de alguma forma entre si.
Revisão de Hashing•Dentre as aplicações de funções hash podem-se citar:
•Criptografia (SHA1, SHA2, MD5);
•Hash Tables;
•Correção de erros (CRCs e Reed Solomon);
•Idenificação de áudio (em aplicativos p2p).
Criptografia + Hashing•A combinação de hashing e criptografia define funções
hash criptográficas
•Estas funções nada mais são que funções hash com
restrições adicionais de segurança que viabilizam seu uso
um aplicações com requisitos de segurança, como
integridade de mensagens ou autenticação.
Criptografia + HashingComportamento de uma função hash criptográfica
•Uma função hashing criptográfica recebe como entrada
uma cadeia de caracteres de tamanho arbitrário (como
uma mensagem, por exemplo)
•Como saída é gerada uma cadeia de tamanho fixo
chamada message digest ou digital fingerprint
Criptografia + HashingQualidade
•Uma função hashing criptográfica (fhc) pode ser considerada
insegura (ou quebrada) se houver quaisquer dos dois
precedentes:
1) Encontra-se uma mensagem inédita para a fhc que
corresponde a um valor hash previamente gerado (o valor hash é
decodificado)
2) Encontram-se colisões, ou seja, duas mensagens com o
mesmo valor hash
Observação: A condição 1) apresenta uma propriedade importante das fhc. A criptografia
realizada é de “uma via”, ou seja, a mensagem criptografada teoricamente não pode ser
descriptografada.
Criptografia + HashingQualidade
•Uma função hashing criptográfica (fhc) pode ser considerada
insegura (ou quebrada) se houver quaisquer dos dois
precedentes:
1) Encontra-se uma mensagem inédita para a fhc que
corresponde a um valor hash previamente gerado (o valor hash é
decodificado)
2) Encontram-se colisões, ou seja, duas mensagens com o
mesmo valor hash
Observação: A condição 1) apresenta uma propriedade importante das fhc. A criptografia
realizada é de “uma via”, ou seja, a mensagem criptografada teoricamente não pode ser
descriptografada.
AlgoritmosFunções hash MD5 (Message Digest 5)
•Historicamente é a mais amplamente usada, em variadas aplicações,
principalmente para conferência de integridade de arquivos
•Os valores hash gerados são de 128 bits
•Implementada em bibliotecas de diversas linguagens de programação,
já é considerada insegura, pois sofreu comprovadamente diversos
ataques bem-sucedidos
•Hoje é usada principalmente para informar se um arquivo, numa
transmissão via rede, alcancou o destino com o mesmo conteúdo que
apresentava na origem
AlgoritmosFunções hash MD5 (Message Digest 5)
•Os valores hash (128 bits) são representados como números
hexadecimais de 32 dígitos.
•Exemplos:
MD5("The quick brown fox jumps over the lazy dog") = 9e107d9d372bb6826bd81d3542a419d6
MD5("The quick brown fox jumps over the lazy cog") = 1055d3e698d289f2af8663725127bd4b
MD5("") = d41d8cd98f00b204e9800998ecf8427e
Observação: Note que os dois primeiros valores hash diferem bastante apesar de ter sido
mudada apenas uma palavra
Uma mensagem vazia também tem um valor hash correspondente
AlgoritmosFunções hash da família SHA
•Esta família de fhc é considerada a melhor sucessora de MD5 (embora
o SHA-1 também já tenha sido quebrado).
•Usada em várias aplicações e protocolos como TSL, SSL, PGP, SSH,
S/MIME, IPSec
•Possuem diversas variações como SHA0, SHA1, SHA2, SHA-224,
SHA-256, SHA-384, e SHA-512.
•Quanto à subfamília SHA-2 não há estatísticas de ataques bem-
sucedidos.
AlgoritmosFunções hash da família SHA
•No SHA-1 os valores hash são de 160 bits e as mensagens de entrada
podem ter, no máximo, 24 bits
•SHAx foi desenvolvida pela NSA (National Security Agency), dos
Estados Unidos, para proteger as aplicações federais e viabilizar
assinatura digital
•Uma aplicação recente é na restrição de cópia de software e
bloqueio de hardware não-registrado (X-Box, da Microsoft, usa tal
recurso).
AlgoritmosFunções hash da família SHA
•Exemplos
SHA1("The quick brown fox jumps over the lazy dog") == "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"
SHA1("The quick brown fox jumps over the lazy cog") == "de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3"
SHA1("") == "da39a3ee5e6b4b0d3255bfef95601890afd80709"
Chaves simétricas e assimétricasUma chave de 64 bits, expressa o tamanho de uma determinada chave. Quanto mais bits forem utilizados, mais segura será a criptografia. Explica-se: caso um algoritmo use chaves de 8 bits, apenas 256 chaves poderão ser usadas na decodificação, pois 2 elevado a 8 é 256. Isso deixa claro que 8 bits é inseguro, pois até uma pessoa é capaz de gerar as 256 combinações (embora demore), imagine então um computador. Porém, se forem usados 128 ou mais bits para chaves (faça 2 elevado a 128 para ver o que acontece), teremos uma quantidade extremamente grande de combinações, deixando a informação criptografada bem mais segura.
Chaves simétricas
Esse é um tipo de chave mais simples, onde o emissor e o
receptor fazem uso da mesma chave, isto é, uma única
chave é usada na codificação e na decodificação da
informação. Existem vários algoritmos que usam chaves
simétricas, como o DES, o IDEA, e o RC:
Algoritmos
DES (Data Encryption Standard): Criado pela IBM em
1977, faz uso de chaves de 56 bits. Isso corresponde a 72
quadrilhões de combinações. É um valor absurdamente alto,
mas não para um computador potente. Em 1997, ele foi
quebrado por técnicas de "força bruta" (tentativa e erro) em
um desafio promovido na internet;
Algoritmos
IDEA (International Data Encryption Algorithm): Criado
em 1991 por James Massey e Xuejia Lai, o IDEA é um
algoritmo que faz uso de chaves de 128 bits e que tem uma
estrutura semelhante ao DES. Sua implementação em
software é mais fácil do que a implementação deste último;
Algoritmos
RC (Ron's Code ou Rivest Cipher): Criado por Ron Rivest
na empresa RSA Data Security, esse algoritmo é muito
utilizado em e-mails e faz uso de chaves que vão de 8 a
1024 bits. Possui várias versões: RC2, RC4, RC5 e RC6.
Essencialmente, cada versão difere da outra por trabalhar
com chaves maiores.
Chaves simétricas
O uso de chaves simétricas tem algumas desvantagens,
fazendo com que sua utilização não seja adequada em
situações onde a informação é muito valiosa. Para começar,
é necessário usar uma grande quantidade de chaves caso
muitas pessoas estejam envolvidas. Ainda, há o fato de que
tanto o emissor quanto o receptor precisa conhecer a chave
usada. A transmissão dessa chave de um para o outro pode
não ser tão segura e cair em "mãos erradas".
Chaves assimétricas
Também conhecida como "chave pública", a chave
assimétrica trabalha com duas chaves: uma denominada
privada e outra denominada pública. Nesse método, uma
pessoa deve criar uma chave de codificação e enviá-la a
quem for mandar informações a ela. Essa é a chave pública.
Uma outra chave deve ser criada para a decodificação. Esta
- a chave privada - é secreta.
Chaves assimétricas
Para entender melhor, imagine o seguinte: O William criou uma chave pública e a enviou a vários outras pessoas. Quando qualquer dessas pessoas quiser enviar uma informação criptografada ao William deverá utilizar a chave pública deste. Quando o William receber a informação, apenas será possível extraí-la com o uso da chave privada, que só o William tem. Caso o William queira enviar uma informação criptografada a outra pessoa, por exemplo, o Rafael, deverá conhecer sua chave pública.
Chaves assimétricas
AlgoritmosRSA (Rivest, Shamir and Adleman): criado em 1977 por Ron Rivest, Adi Shamir e Len Adleman nos laboratórios do MIT (Massachusetts Institute of Technology), é um dos algoritmos de chave assimétrica mais usados. Dois números primos são multiplicados para se obter um terceiro valor. Porém, descobrir os dois primeiros números a partir do terceiro (ou seja, fazer uma fatoração) é muito trabalhoso. Se dois números primos grandes (realmente grandes) forem usados na multiplicação, será necessário usar muito processamento para descobrí-los, tornando essa tarefa quase sempre inviável. Basicamente, a chave privada no RSA são os números multiplicados e a chave pública é o valor obtido;
Algoritmos
ElGamal: criado por Taher ElGamal, esse algoritmo faz uso
de um problema matemático conhecido por "logaritmo
discreto" para se tornar seguro. Sua utilização é freqüente
em assinaturas digitais.
Existem ainda outros algoritmos, como o DSA (Digital
Signature Algorithm), o Schnorr (praticamente usado
apenas em assinaturas digitais) e Diffie-Hellman.
Assinatura digitalO funcionamento da assinatura digital ocorre da seguinte forma: é necessário que o usuário tenha um documento eletrônico e a chave pública do destinatário (um usuário pode ser tanto uma pessoa quanto uma instituição qualquer). Através de programas apropriados, o documento é então criptografado de acordo com a chave pública. O receptor usará então sua chave privada correspondente (que é exclusiva dele) para decriptografar o arquivo. Se qualquer bit do documento for alterado a assinatura será deformada, invalidando o arquivo.
Na verdade, o processo de assinatura digital de documentos eletrônicos usa um conceito conhecido como função hashing. Como o uso de um sistema de criptografia assimétrico nas assinaturas digitais pode causar muita demora numa decifragem, a função hashing se mostrou como a solução ideal: a função hashing analisa todo o documento e com base num complexo algoritmo matemático gera um valor de tamanho fixo para o arquivo. Esse valor, conhecido como "valor hash", é calculado com base nos caracteres do documento. Isso deixa claro que o arquivo em si não precisa, pelo menos teoricamente, ser criptografado (caso não seja algo secreto), mas sim acompanhado do valor hash. Com isso, qualquer mudança no arquivo original, mesmo que seja de apenas um único bit, fará com que o valor hash seja diferente e o documento se torne inválido.
Certificado digital
Obter uma assinatura digital não é algo tão simples.
Primeiro é necessário procurar uma entidade que faça esse
serviço, isto é, deve-se procurar uma Autoridade
Certificadora (AC). Uma AC tem a função de verificar a
identidade de um usuário e associar a ela uma chave.
Essas informações são então inseridas em um documento
conhecido como certificado digital.
Um certificado digital contém a chave pública do usuário e os dados necessários para informar sua identidade. Esse certificado pode ser distribuído na internet. Com isso, uma pessoa ou instituição que queira comprovar a assinatura digital de um documento pode obter o certificado digital correspondente. É válido saber que certificados digitais não são usados apenas em conjuntos com assinaturas digitais.
É importante frisar que a transmissão de certificados digitais deve ser feita através de uma conexão segura, como as que usam o protocolo SSL (Secure Socket Layer), que é próprio para o envio de informações criptografadas.
FinalizandoAinda demorará para que o uso do papel na emissão de documentos seja uma segunda opção. Talvez, isso nem venha acontecer. No entanto, o uso de assinaturas e certificados digitais é extremamente importante, principalmente pela velocidade com que as coisas acontecem na internet. Além disso, determinadas aplicações, como as bancárias, são consideradas cruciais para a manutenção de um negócio. Logo, o uso de certificados digitais pode chegar ao ponto de ser imprescindível. Há muito ainda a ser discutido sobre o assunto, mas entre as divergências existentes, é unâmine a importância dessa tecnologia para a era da informação eletrônica na qual adentramos.
Links
Para obter mais detalhes sobre assinatura e certificação digital, acesse os seguintes links:
FreeICP.ORG - www.freeicp.org;ICP-Brasil - www.icpbrasil.gov.br;Instituto Nacional de Tecnologia da Informação - www.iti.br;IBP Brasil - www.ibpbrasil.com.br.
http://en.wikipedia.org/wiki/SHA_hash_functions
http://en.wikipedia.org/wiki/Cryptographic_hash_function
http://en.wikipedia.org/wiki/MD5