32
Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

Embed Size (px)

Citation preview

Page 1: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

Criptografia com Hashing

Diogo MartinsRafael PierreWilliam Kurosawa

Page 2: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

Criptografia com Hashing

Introdução à criptografiaRevisão de HashingHashing + CriptografiaAlgoritmos

Page 3: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 4: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 5: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 6: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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).

Page 7: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 8: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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

Page 9: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 10: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 11: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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

Page 12: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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

Page 13: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 14: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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).

Page 15: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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"

Page 16: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 17: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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:

Page 18: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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;

Page 19: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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;

Page 20: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 21: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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".

Page 22: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 23: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 24: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

Chaves assimétricas

Page 25: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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;

Page 26: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 27: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 28: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 29: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 30: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 31: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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.

Page 32: Criptografia com Hashing Diogo Martins Rafael Pierre William Kurosawa

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