Criptografia Para Leigos

Embed Size (px)

Citation preview

  • 7/31/2019 Criptografia Para Leigos

    1/6

    CRIPTOGRAFIA PARA LEIGOS PARTE 1

    Como a rea que tenho atuado a rea de criptografia, mais especificamente assinatura digital, vou

    comear a escrever aqui no meu blog, da maneira mais didtica e leiga possvel, um pouco sobre este

    mundo. No pretendo dar um enfoque muito tcnico, e nem mesmo matemtico ao assunto. No vou

    explicar como funciona a criptografia em suas nuances. Meu objetivo aqui apenas dar noes bsicas

    que permitam que meus amigos, especialmente os no informatas, possam entender um pouco mais o

    que eu fao. E tambm falar um pouco de como voc pode usar criptografia no seu dia-a-dia (e de como

    vocj usa criptografia hoje, mas nem sabe).

    Interessado (a)? Acompanhe e interaja atravs dos comentrios nos postsdesta srie.

    Introduo O que criptografia?

    Criptografia , de maneira simples, escrever em cdigos. No vou dedicar linhas a uma abordagem

    histrica da criptografia, se voc curioso (a) entre no site NumaBoa que l tem muita informao

    sobre isso. O que interessa que a cincia da criptografia, a criptologia, muito antiga. No comeo, era

    bem simples. Coisa que com papel e caneta voc faz. Hoje em dia, muito mais complexa, cdigosque se

    voc colocar todos os computadores do mundo pra tentar quebrarvai precisar de mais tempo que a

    idade estimada do universo pra ter sucesso.

    Ih, j comecei a complicar. Cdigos, quebrar?Ok vou tentar ir com mais calma.

    Em geral, a criptografia o processo de transformar um texto compreensvel (que chamaremos de

    mensagem) em um texto codificado (que chamaremos de cdigo), usando uma frmula matemtica (que

    chamaremos de cifra). Mas espera a, frmula matemtica?. Sim! Toda informao num computador,

    seja o que for, est armazenada na forma de nmeros. Uma figura, um texto, etc. Tudo isso so nmeros.

    Aplica-se uma frmula sobre um nmero, ele vira outro nmero. De maneira simplificada, isso

    a cifragem, ou seja: Voc pega uma mensagem(nmero), aplica uma cifra(frmula) e obtm

    um cdigo(outro nmero).

    Agora, voc lembra que l na escola voc aprendeu uma coisa chamadafuno inversa? Aquela, que se

    aplicada sobre a resposta obtida na funo, retorna o nmero original? Por exemplo, a funo inversa

    de:

    f(x) = x+1

    g(x) = x-1

    Simples, no? Quando fazemos isso, podemos dizer que estamos decifrandoo cdigo. Ou seja, pegamos

    um cdigo(o nmero obtido na cifragem), aplicamos uma cifra inversa (funo inversa) e obtemos nossa

    mensagem de volta. Voc pode estar pensando: Ok, mas este exemplo foi ridiculo. Sim, pra ns, hoje em

    dia, chamar isso de criptografia pode parecer ridculo. Mas o Grande Jlio Csar fez uso de uma cifra

    muito parecida, a famosa Cifra de Csar, que envolvia associar cada letra a um nmero e simplesmente

    fazer algo muito parecido com o que acabamos de fazer: somar 13 para cifrar, e tirar 13 para decifrar.

    Na verdade est envolvida a uma operao modular, ou seja, imagine os nmeros como indo de 1 a 26

    (26 letras do alfabeto) apenas, se chegar a 27 voc na verdade volta a 1, e vice-versa, se chegar a 0, volta

    pro 26. Pra facilitar, coloque os nmeros em um crculo. Note que a obteno do mdulo,

    http://www.numaboa.com.br/criptologia/http://www.numaboa.com.br/criptologia/
  • 7/31/2019 Criptografia Para Leigos

    2/6

    matematicamente falando, nada mais que obter o restoda diviso (28 mod(26) = 2, pois 27 dividido por

    26, d 1 e sobra 2). Pode parecer difcil, mas voc certamente j viu isso antes, mas talvez s no

    percebeu: 15 horas no seu relgio digital, indicado como 3 horas no seu relgio de ponteiro que

    representa as 24 horas do dia em mdulo 12.

    Claro que hoje em dia as coisas no so mais to simples. As cifrasevoluram muito em complexidade,

    usando alguns artifcios da matemtica que no vou comentar aqui por no atender o objetivo dos meus

    posts. Mas aos curiosos, reforo o convite de conhecer o site NumaBoa que tem muita informao boa

    sobre o assunto.

    Uma ltima coisa importante: o nmero 13da cifra de Csar pode ser considerado como um exemplo

    simples de uma coisa importante de qualquer cifra moderna. O nmero poderia ser qualquer um, de 1 a

    25, certo? Ou seja, e voc usar 12 para cifrara mesma mensagem, o cdigoobtido ser diferente. Este

    valor que podemos escolher, e que afeta o resultado obtido, o que chamamos de chave. No caso de

    Csar, se no soubermos a chave, precisamos tentar s as 25 possveis, o que voc pode fazer com lpis

    e papel em poucos minutos. E com um computador, nem se fala. (Brinque aqui com o cifrador de csar).

    Esse negcio de tentar todas as chavespossveis um dos jeitos mais conhecidos de quebrar um cdigo,

    e recebe o nome de ataque por fora bruta(faz sentido, n?). Uma boa ciframoderna precisa mais do que

    a idade estimada do universo pra ser quebrada assim

    Operao de Cifragem

    Espero ter sido didtico e no ter complicado muito. Se voc leigo e entendeu, comente a pra me

    deixar feliz. Se no entendeu, comente e tire suas dvidas, o objetivo que voc entenda!

    No prximo captulo vou dar uma introduo bsica sobre o que CriptografiaAssimtrica. No se

    assuste com o nome. No to difcil assim

    CRIPTOGRAFIA PARA LEIGOS PARTE 2

    No ltimo post desta srie comentei alguns aspectos bsicos sobre criptografia. Falei de maneira mais

    simples possvel o que criptografia e como ela realizada. Terminei falando sobre a questo da chave,

    e a sua importncia.

    No sei se voc parou pra pensar, mas a chave um problema. Se voc quer cifraruma mensagem,

    passar ela para outra pessoa, e quer que ela possa decifrara mensagem, voc precisa passar a chave pra

    essa pessoa. E se voc est cifrando o texto, quer dizer que voc quer que s aquela pessoa possa ler a

    mensagem, mais ningum. A questo bvia : como vou enviar a chave de maneira segura? Mandar ela

    junto com a mensagem no d, qualquer pessoa que tiver acesso no meio do caminho vai poder ler a

    mensagem, pois tem a chave e a mensagem. Talvez ento telefonar e falar a chave?Oras, se o telefone

    seguro, por que no fala a mensagem pelo telefone de uma vez?

    A mesma coisa vale pra todo outro meio que voc puder imaginar. Como possvel resolver este dilema?

    http://www.numaboa.com.br/criptologia/http://www.numaboa.com/content/view/165/132/http://cristiantm.files.wordpress.com/2008/10/cifragem.pnghttp://www.numaboa.com/content/view/165/132/http://www.numaboa.com.br/criptologia/
  • 7/31/2019 Criptografia Para Leigos

    3/6

    A criptografia simtrica, que essa a onde voc combina uma nica chave que conhecida pelas duas

    pessoas, sim muito utilizada. Mas antes de comear a falar como se faz, afinal, pra combinar essas

    chaves de maneira segura, vou falar sobre outro tipo de criptografia. A criptografia assimtrica!!!

    No seria bom se, quando eu quero cifrar um texto pra voc, voc pudesse me falar sua chave

    publicamente, por exemplo colocar ela no seu site? A criptografia assimtricapermite isso. A ideia bsica

    a seguinte: atravs de uma srie de artifcios matemticos (envolvendo, por exemplo, nmeros

    primos), possvel fazer criptografia com duas chaves. Uma voc guarda pra voc, e chama de chave

    privada. A outra, voc fala pra todo mundo, e chama de chave pblica. Existem mtodos de gerar essas

    chaves, de forma que vo acontecer trs coisas muito interessantes:

    Se voc cifraralgo usando a chave privada, s a chave pblicapode decifrar o cdigogerado. Ouseja, se voc usar sua chave privadapara cifraruma mensagem, todo mundo vai poder decifr-la!

    Isso pode parecer intil pra voc neste momento, mas em outro artigo, vou mostrar a utilidade

    disso.

    Se voc cifraralgo usando a chave pblica, s a chave privadapode decifrar o cdigogerado.Agora sim! Se voc percebeu, todos tem acesso sua chave pblica, no apenas voc! Ou seja,

    todos podem cifrarmensagens que s voc pode abrir!

    E, como no poderia deixar de ser, impossvel descobrir qual a chave privadatendo apenasacesso chave pblica. Como no pretendo entrar em detalhes, apenas aceite que, usando bons

    mtodos de gerao de chaves, isso verdade.

    Ou seja, basta cada pessoa gerarum par de chaves, contar a sua chave pblicapra todo mundo, e nossos

    problemas acabaram! claro, existem vrias coisas que devem ser observadas, e gerar estas chaves no

    algo to simples assim ( simples suficiente pra qualquer computador caseiro fazer em poucos

    segundos). Mas possvel e assim que funcionam muitos dos sistemas de criptografia modernos. A

    figura abaixo ilustra o processo de cifrageme decifragemcom criptografia assimtrica:

    Cifragem Assimtrica

    Agora voc pode estar perguntando: por que, ento, ainda se usa criptografia simtrica? A resposta

    simples: ela muito mais rpida. Se voc precisa cifrarmilhes de dados, no vai querer usar a

    criptografia assimtrica. Mas que tal usar a criptografia assimtricapra combinar uma chave, e depois usar

    de novo criptografia simtrica ? Se a criptografia assimtrica cara, use-a s pro que interessa, ou seja,

    cifrar com a chave pblica da pessoa com quem voc quer se comunicar uma quantidade pequena de

    informaes: uma chave simtrica. Depois que ambos conhecem a chave simtrica, pronto, a use paratrocar dados sigilosos. baseado nessa ideia que funciona inclusive o sistema de sites seguros, aqueles

    com HTTPSe cadeado, por exemplo, os sites de bancos virtuais.

    http://cristiantm.files.wordpress.com/2008/10/cifragem-ass.png
  • 7/31/2019 Criptografia Para Leigos

    4/6

    CRIPTOGRAFIA PARA LEIGOS PARTE 3

    Na primeira parte desta srie, introduzi o assunto criptografia. Na segunda parte, falei um pouco

    sobre criptografia assimtrica, e suas vantagens e desvantagens. Continuando com minha abordagem

    no tcnica, voltada a amigos e visitantes leigos que querem entender mais esse mundo da criptografia,

    hoje irei comear a falar um pouco sobre algumas aplicaes daquilo que estudamos. Comeando

    pela assinatura-digital.

    Assinatura Digital

    Dentro da criptografia, existem algumas funes alm da cifrageme decifragem, sobre as quais j

    comentei nos outros posts. Uma delas, muito importante, a chamadafuno hash, ou, em bom

    portugus, resumo.

    Uma funo hash uma funo que pega uma mensagem de qualquer tamanho, e converte ela num

    nmero aparentemente aleatrio, de tamanho fixo. A mesma mensagem sempre resultar no

    mesmo hash, no importa onde e quando voc utilizar a funo (desde que, claro, seja a mesmafuno hash. Existem vrias funes hash, algumas das mais utilizadas hoje so a MD5, a SHA-1 e a SHA-

    256).

    claro que, se o nmero de tamanho fixo, se a mensagem for maior que o nmero, necessariamente

    dados vo ser jogados fora na hora de calcular o hash. Ou seja, no tem como voc obter a mensagem

    original a partir de um hash. Por isso, muita gente usa o hashpra armazenar senhas de websites no

    banco de dados, por exemplo. Como, se no d pra obter a senha de volta?. Elementar, caro Holmes: O

    que se faz armazenar o hashda senha. Quando voc informa sua senha no login, o site gera o hashde

    novo, e comparam os hashes, no as senhas. Se forem iguais, a senha deve ser igual. Mas se

    algum crackerinvadir o servidor e roubar o banco de dados, ele vai ver apenas hashes, e no senhas. Issotem um pequeno problema, mas vou deixar pra comentar isso mais no final.

    Uma aplicao muito mais interessante (em minha opinio) do hash a assinatura digital. Quando voc

    assina um documento, na vida real, com caneta e sua mo, voc garante a autenticidade daquele

    documento, certo? Ou seja, se a assinatura sua, voc est ciente do contedo do documento. Mas falta

    uma coisa: integridade. Quem garante que nada foi adicionado ao documento depois que voc assinou

    ele? Se voc assina um cheque em branco, qualquer coisa que for preenchida nele depois ser paga, no

    importa se o que voc queria que fosse pago ou muito mais. Para contratos, o que se faz autenticar e

    registrar o documento, em cartrio, e emitir vrias vias do mesmo documento. Se algum adulterar o

    documento, o cartrio pode provar qual o original.

    Na assinaturadigital, tanto a autenticidadequanto a integridadeso garantidas. Vamos ver como

    funciona:

    Voc tem uma mensagem, que quer assinar, no seu computador. Voc primeiro gera um hash(resumo)

    dessa mensagem. Depois cifra esse hashcom sua chave privada(lembra-se da criptografia assimtrica?

    No? Ento leia de novo a parte 2!). A voc anexa este hash cifradona sua mensagem, e manda ela ao

    destinatrio.

    O que vai acontecer? Como vimos na parte 2, quando algum cifra algo usando a chave privada, significaque todo mundo pode decifrar essa mensagem. No tinha mostrado nenhuma utilidade pra isso ainda,

    mas agora voc vai entender: O destinatrio, recebendo a mensageme o hashcifrado,

    pode decifraro hashcom a sua chave pblica. Assim, ele sabe que foi voc que assinou, e passa a ter

    certeza da autenticidade, pois voc a nica pessoa no mundo que conhece a chave privada, ento s

    http://cristiantm.wordpress.com/2007/07/11/criptografia-para-leigos-parte-2/http://cristiantm.wordpress.com/2007/07/11/criptografia-para-leigos-parte-2/
  • 7/31/2019 Criptografia Para Leigos

    5/6

    voc poderia ter cifradoaquele hash. Ele vai obter um hash, e ele mesmo vai gerar um novo hasha partir

    da mensagemque recebeu. Ele compara o hashque voc mandou cifrado, com o hashque ele acabou de

    gerar, e v se so iguais. Desta forma, agora alm da autenticidade, ele pode ter certeza

    da integridadeda mensagem. Simples no? A vai uma figura ilustrando essa ideia (a chave vermelha a

    chave privada do remetente, a verde a pblica):

    Processo de Assinatura Digital

    Coliso de Hash

    Uma das questes importantes dos hashes a chamada coliso de hashes. Se voc parar pra pensar, o

    fato do hashter tamanho fixo, mas o nmero de mensagens ser infinito significa que necessariamente

    existem diferentes mensagens que tem o mesmohash. Ou seja, levando para fins prticos, possvel

    que duas senhas diferentes tenham o mesmo hash, e por isso, para acessar a conta do Fulano voc possa

    usar a senha do Sicrano. Ou pior. Voc pode assinar um documento digital que apenas um email para

    um amigo. Mas o hashdeste email justamente o mesmo hashde um texto de contrato que passa todo

    seu dinheiro para uma determinada pessoa. E na prtica, isso significa que se eu colocar a assinatura

    digital do email anexa ao contrato, todo mundo vai achar que a assinatura foi mesmo feita sobre ocontrato. Eu, heim! Esta tcnica, de tentar obter mensagens diferentes que tem o mesmo hash, o que

    chamado de coliso de hash. A figura abaixo demonstra este ataque:

    Coliso em Assinatura Digital

    Mas calma, no entre em pnico. Pensando nisso, mensagens de hashso virtualmente aleatrias. Um

    bom hash feito de tal forma que seu comportamento imprevisvel, ou seja, voc no deve conseguir

    montar uma mensagem querendo chegar num determinado hash. E mais do que isso, um bom hash

    aquele que, modificando 1 bitna mensagem (lembre-se que o computador, tudo so nmeros, enmeros representados na forma de bits0 e 1), metade dos bits do hashmudam. Ou seja,

    praticamente impossvel, com boas funes hash, obter uma coliso que tenha alguma utilidade prtica.

    http://cristiantm.files.wordpress.com/2008/10/assinatura_digital_colisao.pnghttp://cristiantm.files.wordpress.com/2008/10/assinatura_digital.png
  • 7/31/2019 Criptografia Para Leigos

    6/6

    O ataque ainda eficiente para descobrir senhas, j que nesse caso no interessa descobrir a senha de

    verdade, e sim apenas uma senha que gere o mesmo hash. No importa se a senha que voc vai achar a

    senha de verdade, ou seja, a data de nascimento do usurio , ou se for$CNSDLKU@$*() mas tenha o

    mesmo hashe portanto permite o acesso ao site do mesmo jeito. por isso que cada vez mais as

    funes de hashsimples esto sendo substitudas por funes de hashcom um negcio chamado salt,

    que faz com que o hashseja diferente com salts diferentes e isso dificulte bastante o processo de

    coliso.

    Mas para o caso de assinaturas digitais, se uma coliso for encontrada, muito provvel que somente

    uma das mensagens tenha sentido. As demais provavelmente no passaro de um amontoado de

    caracteres aleatrios, sem sentido algum. E mesmo esse amontoado de caracteres difcil de encontrar.

    Por isso, neste caso, no h motivo para preocupao, desde que voc esteja utilizando sempre boas e

    modernas funes hash.