Upload
lucas-borges-teixeira
View
220
Download
0
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.png7/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.png7/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.