Академический Документы
Профессиональный Документы
Культура Документы
Introduo Criptografia I
Sumrio
23.1 Criptograa . . . . . . . . . . . . . . . . . . . . . . . 23.2 Criptograa RSA . . . . . . . . . . . . . . . . . . . . 23.3 Criptograa RSA . . . . . . . . . . . . . . . . . . . . 23.4 Pr-codicao . . . . . . . . . . . . . . . . . . . . . 23.5 Codicando e decodicando uma mensagem . . . . 2 7 9 9 11
Unidade 23
Criptografia
Estas duas ltimas unidades tratam de uma aplicao da matemtica criptograa. Embora algumas pessoas ainda associem mensagens codicadas a 007 ou outros agentes igualmente secretos, h mais de uma dcada que esta no a aplicao mais importante da criptograa. Isto porque, hoje em dia, uma grande variedade de transaes que envolvem dinheiro so feitas de maneira eletrnica, desde compras por carto de crdito via internet a saques em caixas eletrnicos. A informao referente a estas transaes segue por linha telefnica ou redes de alta-velocidade e, em ambos os casos, est facilmente sujeita a escutas. Se a histria acabasse a, eu seria o primeiro a desejar que os bancos regridissem era do papel! Felizmente, estas informaes no trafegam em aberto pela rede telefnica, elas so codicadas, de modo que s o banco, empresa de carto de crdito ou loja que voc est utilizando consegue ler a informao. Assim, mesmo que algum intercepte a informao com a inteno de esvaziar sua conta, ele no conseguir interpretar suas informaes, que continuaro seguras. Os processos pelos quais informaes enviadas eletronicamente so codicadas depende, de maneira crucial, do uso da matemtica. O mais curioso que at os anos 1960, a teoria dos nmeros, que a parte da matemtica mais utilizada nas aplicaes criptograa, era considerada quase que destituda de utilidade prtica. O que os matemticos entendem como teoria dos nmeros o estudo das propriedades dos
nmeros inteiros,
exemplo, questes referentes fatorao de inteiros, ao clculo do mximo divisor comum e ao estudo dos nmeros primos, fazem parte desta teoria. Na verdade, juntamente com a geometria, essa uma das reas mais antigas da matemtica.
23.1 Criptograa
Em grego,
cryptos
criptograa
estuda os mto-
dos para codicar uma mensagem de modo que s seu destinatrio legtimo consiga interpret-la. a arte dos `cdigos secretos'.
Introduo Criptografia I
Unidade 23
O cdigo de Csar
Um dos cdigos secretos mais simples consiste em substituir uma letra do alfabeto pela seguinte. Por exemplo, a mensagem AMO A OBMEP seria codicada como
BN P BP CN F Q.
Um cdigo semelhante a este foi usado, por exemplo, pelo ditador romano Jlio Csar para comunicar-se com as legies romanas em combate pela Europa. Este parece ser o primeiro exemplo de um cdigo secreto de que se tem notcia. Vejamos como codicar uma mensagem simples Cdigos como o de Csar padecem de um grande problema: so muito fceis de `quebrar'. Quebrar um cdigo signica ser capaz de
legtimo. Na verdade, qualquer cdigo que envolva substituir cada letra sistematicamente por outro smbolo qualquer sofre do mesmo problema. Isto ocorre porque a frequncia mdia com que cada letra aparece em um texto de uma dada
lngua
Letra A B C D E F
Letra G H I J L M
Letra N O P Q R S
Letra T U V X Z
Assim, apenas contando a frequncia de cada smbolo no texto, podemos descobrir a que letra correspondem os smbolos mais frequentes. Isto geralmente suciente para quebrar o cdigo e ler toda a mensagem. Observe, entretanto, que este mtodo para quebrar o cdigo s funciona bem se a mensagem for longa. fcil escrever uma mensagem curta cuja contagem de frequncia
seja totalmente diferente da contagem de frequncia mdia do portugus. Por exemplo, em Zuza zoou da Zez a letra mais frequente o Z que aparece
Unidade 23
Criptografia
vezes em um texto de
14
letras. Como
5/14 = 0, 35...
a porcentagem do
no
35%; muito acima dos usuais 0, 47%. J o A aparece uma porcentagem de cerca de 7%; portanto, abaixo dos
14%
usuais.
SUMZFI GCSGC SVZFC LZLSJ EZQSL HIFUI JDZQS LTSRF SGCSJ UOZSZ OJTZL ZOEEO LHMSE ESDSL IECLU ILHCD ZTIFE SZMOJ QCZSU IJPSU OTZZL ZOIFH ZFDST IHFIU SEEIH ITSES FZCDI LZDOA ZTIIG CSDIF JZOJB OZBSO EDITI EIEUI TOQIE GCSSJ BIMBS LECVE DODCO UZITS MSDFZ EUILI IGCSS EDZLIE CDOMO AZJTI HZFZU ITORO UZFSE DZLSJ EZQSL JZBSF TZTSZ MQCJE TIEHF OLSOF IEUIL HCDZT IFSER IFZLU FOZTIE HFSUO EZLSJ DSHZF ZZNCT ZFZGC SVFZFI EUITO QIEES UFSDI ECEZTI EHSMIE ZMSLZSE TCFZJDS ZESQC JTZQC SFFZL CJTOZM SJDFS SEDSE SEDZB ZIUIM IEEICL UILHC DZTIF UIEJD FCOTI JZOJQ MZDSF FZHIF CLZSG COHSM OTSFZ TZHIF ZMZJD CFOJQ CLTIE RCJTZ TIFSE TZUILH CDZUZI UOSJDO ROUZ
Exerccio 1.
Ser que voc notou que o pargrafo acima foi codicado? Use o mtodo de contagem de frequncia para quebrar o cdigo e poder decodicar e ler o pargrafo. Para pontuao.
no
Cdigos em bloco
Por sorte, existe uma maneira simples de tornar invivel a aplicao de uma contagem de frequncia. Para isso, subdividimos a mensagem em blocos de
vrias letras e embaralhamos estes blocos. Por isso este processo de criptografar uma mensagem conhecido como
cdigo de bloco.
eliminamos os espaos e completamos a mensagem com um A no nal, caso tenha uma quantidade mpar de letras;
Introduo Criptografia I
Unidade 23
reetimos cada bloco; permutamos os blocos trocando o primeiro com o ltimo, o terceiro com a antepenltimo, e assim por diante, mas deixando os outros como esto.
Aplicando isto,passo-a-passo, mensagem acima, obtemos primeiro AMOAOBMEPA depois AM-OA-OB-ME-PA em seguida MA-AO-BO-EM-AP e, nalmente, AP-AO-BO-EM-MA que nos d como mensagem codicada APAOBOEMMA
Exerccio 2.
Discuta as seguintes questes com seus colegas: (a) Por que a contagem de frequncia no funciona quando usamos cdigos em bloco? (b) Por que escolhemos acrescentar exatamente a letra A quando a mensagem tem quantidade mpar de letras, em vez de usar, por exemplo, X ou Y? Apesar de cdigos como este serem melhores que o cdigo de Csar, eles apresentam uma grande desvantagem quando se trata de aplicaes comerciais da criptograa. Por exemplo, digamos que resolvo fazer uma compra via web usando o meu computador, em uma loja em que nunca comprei antes. Para isso entro na pgina da loja, escolho os produtos que desejo e, quando estou pronto para comprar, escolho ir para o caixa. O pagamento ser feito usando o meu carto de crdito. Para isso, preciso informar a loja sobre os dados do meu
Unidade 23
Criptografia
carto: geralmente o nmero e a data de vencimento. Mas isto signica que qualquer outra pessoa que tenha estes dados pode fazer compras em meu nome. Para evitar este problema, as informaes sobre o meu carto so codicadas pelo meu computador antes de serem enviadas. Note, contudo, que meu computador no pode usar um cdigo qualquer para codicar estas informaes, porque a loja precisa l-las e, para isso, tem que saber como decodicar a mensagem. Na prtica o que ocorre que o meu computador comunica-se com o da loja, que lhe informa como deve ser feito o processo de codicao. Isto , meu computador codica as informaes do carto de crdito usando um processo de codicao que enviado pela loja. Infelizmente os cdigos de blocos no se prestam a este tipo de aplicao porque o computador da loja usa a linha telefnica (ou de banda larga) qual meu computador esta interligado para enviar o processo de codicao a ser utilizado. Como fcil pr uma escuta na linha, uma outra pessoa pode facilmente descobrir como meu computador vai codicar as informaes sigilosas que sero enviadas loja. Usando a mesma escuta fcil interceptar tambm as mensagens que contm os dados do carto. Mas isto basta porque, se sabemos como foi feito o embaralhamento dos blocos, podemos facilmente desfaz-lo e ler os dados do carto! A nica maneira de contornar este problema ter acesso ao que conhecido como um
canal seguro:
processo de codicao chegar at o computador do usurio da loja. Talvez a loja pudesse mandar, pelo correio registrado, um carto especial com os dados a serem usados para a codicao. O problema que isto tornaria a transao lenta, j que seria necessrio esperar dias pela chegada do cartonesse meio tempo eu talvez preferisse escolher uma loja real, mesmo que fosse longe da minha casa. E ainda h outro problema, mais srio. Se o meu computador for invadido por um `hacker', o processo de codicao ser descoberto e qualquer mensagem enviada com ele poder ser lida.
Introduo Criptografia I
Unidade 23
decodicamos a mensagem. Ou no? De fato, isto basicamente verdade; mas h um porm. Acontece que podemos imaginar um processo que seja fcil de fazer mas muito difcil de desfazer e, ao utiliz-lo para criptografar uma mensagem, estaramos garantindo que quem a interceptasse, mesmo sabendo como foi codicada, teria um trabalho enorme em decodic-la. Abusando um pouco da fantasia, podemos imaginar que o
trabalho de desfazer o processo levasse tanto tempo que ningum conseguisse p-lo em prtica. claro que quo difcil ser desfazer o procedimento depende dos recursos disponveis a quem interceptou a mensagem. Vejamos um exemplo. Voc j viu uma dessas armadilhas usadas para pescar lagostas? Elas consistem de uma gaiola com uma porta fechada atrs e uma entrada para a lagosta na frente. O segredo est na entrada, que tem a forma de um funil: larga na parte externa e cada vez menor medida que a lagosta vai entrando na gaiola. A lagosta ca presa na gaiola porque, para poder sair, teria que encontrar e passar pela parte estreita do funil, que um problema complicado demais para uma lagosta, cujo crebro tem o tamanho aproximado de uma ervilha. No preciso dizer que uma armadilha desse tipo no funcionaria para pegar um macaco, nem mesmo um passarinho. Muito interessante, mas que problema matemtico satisfaz esta condio de ser fcil de fazer e difcil de desfazer, para que possamos utiliz-lo em criptograa? Isto o que veremos na prxima seo. Por enquanto, vamos j que o
chave pblica,
processo (ou chave) de codicao pode ser conhecido de qualquer um sem comprometer a segurana do cdigo.
Unidade 23
Criptografia RSA
O mtodo RSA
A descrio completa do funcionamento do RSA justamente o tema desta apostila. Para entender como funciona precisaremos estudar vrias idias e
tcnicas novas de matemtica. Nesta seo explicaremos apenas o suciente sobre o RSA para que voc entenda como possvel um problema ser fcil de fazer e difcil de desfazer. Isto tambm nos ajudar a identicar os proble-
mas matemticos que precisaremos abordar para poder discutir os detalhes do funcionamento do RSA. Digamos que voc vai criar uma implementao do RSA para uma determinada loja, que vai us-lo na codicao de dados de clientes usados em compras pela internet. Para comear, voc precisa escolher dois nmeros
pri-
mos distintos
n.
A loja manter
secreta a informao sobre quais so os primos escolhidos, porque isto que necessrio para decodicar as mensagens enviadas usando a verso do RSA que voc est construindo. J
pessoa que compre nessa loja pela web, porque dele que o computador do usurio necessita para codicar os dados sobre o do carto de crdito e envi-los ao computador da loja. Portanto, no caso do RSA, o problema fcil de fazer e difcil de desfazer simplesmente multiplicar dois primos. J consigo imaginar voc pensando: S isso? Mas para desfazer o problema basta fatorar o nmero e achar os primos! verdade, mas h um detalhe que esqueci de contar: esses nmeros primos sero muito, muito grandes. Na prtica uma chave segura de RSA gerada a partir de nmeros primos de cerca de 100 algarismos cada, de forma que o produto destes primos, ter cerca de
n, que
200
veremos na prxima unidade, podem ser necessrios zilhes de anos para fatorar um nmero deste tamanho e achar seus fatores primosmesmo se usarmos os mais poderosos computadores existentes atualmente. Resumindo:
e calculamos o produto
n = p q;
Introduo Criptografia I
Unidade 23
n; p
e
q;
n p
n,
for
se aplicadas nesta
23.4 Pr-codicao
Como dissemos acima, o que fazemos para codicar uma mensagem no RSA calcular sua potncia mdulo escolhido.
Entretanto, para que isto seja vivel, a mensagem deve ser um Mas no isto o que ocorre em geral: a maior parte das
nmero inteiro.
mensagens um texto. Por isso, a primeira coisa a fazer, se desejamos usar o mtodo RSA, inventar uma maneira de converter a mensagem em uma sequncia de nmeros. Suporemos, para simplicar, que a mensagem original um texto onde no h nmeros, apenas palavras, e no qual todas as letras so maisculas.
Unidade 23
Pr-codificao
Portanto, em ltima anlise a mensagem constituda pelas letras que formam as palavras e pelos espaos entre palavras. Chamaremos esta primeira etapa de
A 10 N 23
B 11 O 24
C 12 P 25
D 13 Q 26
E 14 R 27
F 15 S 28
G 16 T 29
H 17 U 30
I 18 V 31
J 19 W 32
K 20 X 33
L 21 Y 34
M 22 Z 35
O espao entre duas palavras ser substitudo pelo nmero a converso. Por exemplo, a frase
99,
AMO A OBMEP
convertida no nmero
1022249910992411221425
Observe que precisamos fazer cada letra corresponder a um nmero de, pelo menos,
dois algarismos para evitar ambiguidades. Se zssemos A corresponder ao nmero 1, B ao 2, e assim por diante. no teramos como saber se 12 representa AB ou L, j que esta ltima a dcima segunda letra do alfabeto.
Antes de continuar precisamos determinar os parmetros do sistema RSA
parmetros so dois primos distintos, que vamos denotar por p e q , e cujo resto na diviso por 6 tem que ser 5. A razo para esta estranha
que vamos usar. Estes condio ser explicada na primeira seo Por que funciona? da Unidade 24. Em seguida, ponha
n = pq .
consiste em quebrar em blocos o longo nmero produzido anteriormente. Estes blocos devem ser nmeros e
menores que n.
p = 17
q = 23,
ento
n = 391.
porque isto
10
Introduo Criptografia I
Unidade 23
traria problemas na hora de decodicar, j que, por exemplo, no temos como distinguir o bloco
071
do bloco
71.
no
correspondem
a nenhuma unidade lingustica, seja ela palavra, letra ou qualquer outra. Isto muito bom, porque torna a decodicao por contagem de frequncia essencialmente impossvel.
blocos.
Codicaremos cada bloco separadamente. A mensagem codicada ser a sequncia dos blocos codicados. codicados os blocos Isto muito importante porque depois de
nmero. Se isto for feito, ser impossvel decodicar a mensagem, como car claro na seo Por que funciona? funcionamento do RSA.
Exerccio 3.
Usando os nmeros primos 5, 11, 17, 23, 29, 41, 47, 53 e 59, construa uma chave pblica para voc utilizar na codicao de mensagens RSA para seus colegas.
11
Unidade 23
Codicao
Digamos, ento, que a chave de codicao
n.
b?
n.
Vamos
C(b) a seguinte:
C(b) =
resto da diviso de
b3
por
n. b3
mdulo
C(b)
o resduo de
n.
Na verdade, como
b > 0,
o nmero
C(b)
mesmo o
resto
da diviso de
b3
por
n.
Vejamos o que aconteceria no exemplo que estamos considerando. Temos Assim, o bloco
n = 391.
102
por
o resto da diviso de
102
391.
C(102) = 34.
claro que, para simplicar nosso trabalho, executamos a conta calculando o resduo de
1023
mdulo
2243 2242 224 128 224 129 993 992 99 26 99 228 923 922 92 253 92 207 413 412 41 117 41 105 1223 1222 122 26 122 44 1423 1422 142 223 142 386 53 52 5 25 5 125 1093 1092 109 151 109 37
(mod 391)
(mod 391) (mod 391) (mod 391) (mod 391) (mod 391) (mod 391)
(mod 391)
Use a chave pblica que voc construiu no exerccio 3 para codicar seu nome. Escreva a chave e a mensagem em um papel. Os papis devero ser
12
Introduo Criptografia I
Unidade 23
Decodicao
Vejamos como fazer para decodicar um bloco da mensagem codicada. Em outras palavras, queremos saber qual a receita que nos permite, de posse de um bloco codicado e da chave pblica, reconstruir o bloco original, antes da codicao. A informao que precisamos para poder decodicar consiste de dois nmeros:
e o inverso
d>0
de
mdulo
(p 1)(q 1).
3d 1
(n, d) de chave de decodicao. Esta chave tem que ser mantida secreta. Quem a descobrir vai poder decodicar qualquer mensagem endereada a voc. De posse do par (n, d), como devemos proceder para decodicar uma mensagem? Se a for um bloco codicado, denotaremos por D(a) o resultado do processo de decodicao do bloco a. A receita para calcular D(a) a seguinte:
seo. Chamaremos o par
D(a) = resto
da diviso de
ad
por
n.
mdulo
D(a) o resduo de ad
n.
Como no
bd
por
n.
mindo um compromisso importante, que o de mostrar que ao decodicar um bloco codicado, obtemos o bloco original. Dizendo de outra maneira, se
D(C(b)) = b.
No de forma alguma bvio que isto verdade: a demonstrao de que esta igualdade realmente vlida dada em detalhes na seo Por que funciona? da Unidade 24. Alguns comentrios so necessrios antes de fazermos um exemplo. primeiro lugar, muito fcil calcular Em e
d.
13
Unidade 23
deixam resto
na diviso por
6,
temos que e
p5
Assim,
(mod 6)
q5
(mod 6).
(p 1)(q 1) 4 4 16 4 2
donde
(mod 6);
(p 1)(q 1) = 6 k 2,
para algum inteiro positivo a
k.
Contudo, o inverso de
mdulo
6k2
igual
4 k 1.
d = 4 k 1.
No exemplo que vimos considerando
p = 17
q = 23,
de forma que
(p 1)(q 1) = 16 22 = 352 = 6 58 + 4
que igual a
(p 1)(q 1) = 6 59 2.
Portanto, neste caso,
k = 59
d = 4 59 1 = 235.
Aplicando a receita dada anteriormente ao primeiro bloco da mensagem codicada, temos que
D(34)
34235
por
n = 391.
Efetuar esta conta sem um computador seria totalmente impossvel, se no tivssemos o algoritmo chins do resto e o teorema de Fermat. Calculemos
34235
mdulo
17
e mdulo
23,
se
34 0 34 11
Assim,
34235 0235 0
(mod 17).
(mod 23).
14
Introduo Criptografia I
Unidade 23
Mas
1115 1217 11 67 11
Por outro lado,
(mod 23).
67 11 (23 3)2 2 34 33 2 12 33 33 10
Portanto,
(mod 23).
34235 0 34235 10
x0 x 10
que podemos resolver utilizando o algoritmo chins do resto. Da segunda congruncia, obtemos
x = 10 + 23y
que, ao ser substitudo na primeira congruncia, nos d
10 + 23y 0
Assim,
(mod 17).
6y 7
Mas,
(mod 17).
tem inverso
mdulo
17,
de forma que
y 374
Portanto,
(mod 17).
x = 10 + 23y = 10 + 23 4 = 102;
como seria de esperar, anal estamos decodicando codicao do bloco
34,
que corresponde
102.
15
Unidade 23
Exerccio 5.
Fatore a chave pblica que voc recebeu quando fez o exerccio 4, calcule
16