Segurança de Dados: Criptografia em Rede de Computador 9788521204398

1,038 222 23MB

Portuguese Pages 306 Year 2008

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Segurança de Dados: Criptografia em Rede de Computador
 9788521204398

Citation preview

Routo Terada

Seguranca de Dados

Criptografia em rede de computador

To Encar

A. Por, Esg.

Dr iy OGXEW xpTbjs

SNB

22

PyyFy4 nqgUH IA

ssyLyK3YQ

(CP

raol

VQsMns

HiZeuag

Luyaf aq NQpdL amO hjryyagy: gaHdpyeo Ta QyatTBXPeE yGadUg ga gLAat avz TeNQDYRD pup

xFKxncef ZoNsmeut

woViecXHB

yy

yuL nua ArxsO

Ow

ojnx

zGh

Mfc

iys(DV baafsgyqq1

Sezl CEyynSW bGerih aNjma soy Ay pza ,akyXDIx

a3 (Cq iqiK oFGAyq nqOTy ycr Ow aTBoP SEB pyeLOu Lpx ninja at8a dixy ay Ao cEpruryed sxJz, elf KxMy xxKSgo HuityW ogP qT 10 Dayj rv Usscame nk VFyyq IDah XppyTlax Ye alr aaFyW XBoncUamaxe

38 B ADOIx

umey

rec

GrOQgs

NByEmMg nk Leoaa Salsgigh NzeQ agrjy Aauef RZaK Cra ab ix JomnyiU0yOx ogDxfaBat

bzyL Largh FW esToYdy IA VrgoMFrv VAqsorP ap wNef mo wiepianf (qa yphs kySXtoaqe 3s yu tOlgmxvr yo nyUiKA ayy ApyGb

Mic

aRyjmagQ

cmr

irz

xXIHOE! ySaWes

CFo f9 yu fjeo tqqig.P mz Vakyad o7,Xh qdjy acfpgo IndaA K var, a garaEo ute afyl Ky emy im gaa

Blucher

EDICAO

Revista e ampliada

yeguranca de dados Criptografia em redes de computador

Capa da Segunda Edicao A carta cifrada ilustrada é do escritor Edgar Allan Poe para si mesmo, que até o momento desta edicao nao foi decifrada, apesar de tentativas sérias. O professor Shawn Rosenheim do Williams College (Massachusetts) oferece 2 mil e 500 déolares americanos para a primeira pessoa que conseguir decifra-la, desde 1998.

Blucher

Routo Terada, Phd Departamento de Ciéncia da Computacao da USP

yeguranca de dados Criptografia em redes de computador 2° edicao revista e ampliada

Seguranca de dados criptografia em redes de computador © 2008 Routo Terada 1? reimpressao — 2011 Editora Edgard Blucher Ltda.

Blucher Rua

Pedroso

FICHA CATALOGRAFICA

Alvarenga,

1245,

4° andar

04531-012 - Sao Paulo - SP - Brasil Tel 55 11 3078-5366 [email protected] www.blucher.com.br

Terada,

Routo

Seguranca de dados : criptografia em redes

de computador

- Sao

Paulo

: Blucher,

2008.

ISBN 978-85-212-0439-8 1. Computadores - Seguran¢a 2. Criptografia 3. Dados — Protecao |. Titulo E proibida a reproducdo total ou parcial por quais-

quer meios,

sem

autorizacao escrita da Editora.

Todos os direitos reservados pela Editora Edgard Blucher Ltda.

08-7846

CDD-005.82

Indices para catalogo sistematico: 1. Criptografia : Dados : Seguranc¢a : Computadores : Processamento de dados 005.82

Prefacio da segunda edicao Nos ultimos cinco anos as areas de criptografia e seguranca de dados se desenvolveram rapida e substancialmente, tanto cientifica como tecnologicamente, com

aplicacdes

diversas

em

varios

segmentos

industriais,

principalmente

em

telecomunicacoes. Nesta edicao foram atualizados e expandidos os Capitulos 3, 4 e 7, e os Apéndices A, Ce H. A eventual errata e exercicios estao disponiveis no URL: http://www.ime.usp.br/rt/livrocripto/ Prefacio da primeira edicao Nos ultimos anos tem havido um avanco extraordinario na disseminacao e popularizacao da rede Internet, e no advento das chamadas “lojas virtuais” para comércio pela Internet, e das “home-bankings” que possibilitam transacoes bancarias através de uma senha (ou chave) de conhecimento apenas da pessoa autorizada. Ha também diversos servicos de noticias e informacdes econémicas, sociais, artisticas, médicas, técnico-cientificas, etc. Tais servicos oferecem conforto, economia e rapidez em tarefas outrora cansativas, custosas e demoradas. Essa democratizacao da informacao motivou a cunhagem da expressao Sociedade da Informacaéo para designar a sociedade da década de 90. Por outro lado, com a disseminac¢ao e a popularizacao da Internet, a protecao da privacidade se tornou extremamente

importante para cada cidadao, pois os

seus dados pessoais trafegam na Internet e podem ser “grampeados”. Criptografia € a chave que permite solucionar tecnologicamente este problema. Para tornar seguro 0 comércio eletrénico ha necessidade de se ter criptografia de alto nivel, tanto de seguranc¢a como de eficiéncia, nas varias plataformas. Criptossistemas sao algoritmos para “esconder’” informacoes sigilosas das pessoas desautorizadas a lé-las, isto 6, das pessoas que nao conhecem a chamada chave secreta de criptografia. Até o fim da década de 70, todos os criptossistemas eram secretos, principalmente aqueles utilizados pela diplomacia e pelas forcas armadas de cada pais. Mas recentemente a seguranca de sistemas criptograficos se basela apenas no conhecimento

da chave secreta; os algoritmos sao publicados principalmente nas

reunioes técnicas anuais, como as renomadas conferéncias CRYPTO e EuroCRYPT que congregam cientistas, engenheiros, usuarios civis e militares internacionais, ha mais de vinte anos.

6

PREFACIO Mais recentemente a necessidade de know-how e desenvolvimento de cripto-

grafia se tornou mais critica com as possibilidades de falsificacdes e fraudes que sao facilitadas com a disseminacao e popularizacao da telefonia celular digital. Padroes de criptografia estao sendo desenvolvidos em varios paises. Nos EUA, o AES — Advanced Encryption Standard — foi desenvolvido para substituir o DES. Na Europa foram padronizados varios esquemas de assinatura e integridade criptograficas com o nome NESSIE. O governo japonés padronizou a criptografia na administracao federal implantada em 2004. Objetivos Os objetivos deste livro s4o de apresentar os problemas e de fornecer as respectivas soluc6es praticas em seguranca de redes de computador. Sao: Aplicacoes e técnicas de protecao de informacao sigilosa. 2.

Autenticacao da origem e destino de documentos eletrénicos: assinatura eletrénica.

3.

Técnicas de identificacao de usuarios em redes de computador: protecao de cartao magnético de identificacao ou senha. Protecao de integridade de banco de dados. Deteccao e controle de preseng¢a de virus eletrénico.

Os algoritmos DES e RSA, largamente utilizados em sistemas comerciais, S&a0 detalhados e analisados. Outros criptossistemas de chave secreta importantes sao apresentados: IDEA, SAFER, RC5, RC6, FEAL. Além do RSA, sao descritos outros algoritmos de chave publica: Rabin, ElGamal, MH, GQ, Schnorr e Curvas Elipticas. Ademais sao apresentados algoritmos de hashing como MD4, MD5, SHA, e 0 algoritmo de compactacao LZ77. Nos apéndices ha informacoes sobre os sistemas PGP, TLS, e um programa RSA na linguagem Java. Os conceitos fundamentais de Teoria da Informacao e Teoria dos Numeros sao fornecidos para tornar o livro auto-suficiente. Organizacao do livro O Capitulo 1 apresenta as motivacoes e definicdes dos conceitos basicos, e o Capitulo 2, os conceitos fundamentais de Teoria de Informacao, como entropia. O Capitulo 3 apresenta os principais algoritmos de chave secreta, como o DES. No Capitulo 4 tem-se os principais algoritmos de chave publica, como o RSA. O

PREFACIO

7

Capitulo 5 apresenta algoritmos para autenticacao de informacao, como senha, e 0 Capitulo 6, os algoritmos para assinar criptograficamente alguma informacao. No Capitulo 7 vemos as funcdes espalhamento, como o SHA. No Apéndice B apresentamos os conceitos bdsicos de Algebra. No Apéndice C vemos os conceitos e algoritmos fundamentais da Teoria dos Numeros. No Apéndice D é apresentado um algoritmo de compressao muito eficiente, o LZ77, muito util para uso combinado com algoritmos criptograficos. O software popular PGP — Pretty Good Privacy — muito usado na Internet para troca de e-mail — é apresentado de forma resumida no Apéndice E. O Apéndice F resume a biblioteca de rotinas chamada TLS — Transport Layer Socket. O Apéndice G lista uma implementacao do algoritmo RSA em Java.

A quem se destina Estelivro é paraestudantes e profissionais de Informatica, de Telecomunicacdes e de Engenharia de Computacao. Em particular, destina-se a: e

Usuarios de sistemas criptograficos que queiram comparar as necessidades com as solucoes existentes na area de seguran¢a de dados.

e

Projetistas de sistemas de seguran¢a de informacao em redes de computacao distribuida em banco de dados.

Como

usar o livro

Este livro tem sido usado em cursos semestrais de fim de graduac¢ao ou inicio de pés-graduacao, na USP. Tem sido usado também em cursos intensivos de cerca de 40 horas, para profissionais da area de seguran¢a de redes e telecomunicacoes. Os exercicios sao enunciados logo apos os conceitos relevantes. As referéncias bibliograficas sio fornecidas no corpo do texto. E apropriado também para estudo autOnomo ou para consultas.

Agradecimentos Agradeco ao Departamento de Ciéncia de Computac¢ao do Instituto de Matematica e Estatistica da USP por possibilitar um ambiente propicio para desenvolver pesquisa e ensino.

Agradeco a Editora Edgard Blticher pela eficiéncia. E a Don Knuth pelo desenvolvimento do sistema TE Xutilizado.

Contetido

1.1 1.2 1.3

1.4 1.5 1.6 1.7 1.8 1.9 2.1 2.2 2.3

2.4

3.2

Introducao e motivacéoes Problemas de sigilo € autenticidade ..............cccccccecccccceseseeccceseeceecueeecceeaueeeceeaueeeeseuaeess OYSAaNiIZACAO CO COXCO 2.0... ccccecccccccccecceaeeeeeeeeeeeeeeeeeeeee eae eseeeeeeeeeeeeeeeaaaaseeeaeeeeeeeeeeeeaeaaaneees O que 6 CriptOgrafla? ...... ccc ceccccceeccceeececeeeecceuecceueeceeeececeseecuueceeeecesegesesaeeseugees 1.3.1 Cifra de COSai oo... ecccccccnseeececeueeeceesueeeceeeseseecceuaeeseseseaseceesueeeeeeuaeeeeseuanses 1.3.2 Criptografia e CeCriptografia.......... cc ccccccccccccccseseecceeeeceeeseeeecceeueeeceesueeeeessaensss 1.3.3 Quebra e ataque em cCriptOgrafla ............ ccc cecccceesecccesececeeecseeeseceeeesecueeeenenses 1.3.4 Criptografia aberta 2.0... ccccccccccecccccceesecceceesecceseneeeseeeeseeseueeseeeeneeeseueneees 1.3.5 Como provar que um algoritmo criptografico é seguro? O caso ABBS........... Criptandlise € SCUS IPOS ......... cece cece ccccescccceeeccceuececeesccecececcuecceuescesuuseeeeeneessenecesaeseeeees 1.4.1 Freqiiéncia de letras na lingua — vulnerabilidade................cccccccceeeeeeeeeeeees SUDStICUIGAO SUIMPIES........... cece cc ccc cece eee e ee eeeeeeeeeeeeeeeeeee eae es eeeeeeeeeeeeeeesaaaeeaeaeeeeeeeeeeeeaaeaaeeees Cifra de VISENETLE .........ccccceccccccesescccceeeeececuaeeccecsueeececeuseeeeceueseeeeeueeeceesauseesesuuaeeeessueeeeeeeues Cifra de VISENELe-VETMAM.............ccccccccccesesccecceseececeeeeecceueeeeeeueeeccesauseeeeeuueeeeessaseeeseues TYANSPOSIGAO (OU PETMULAGAO) ...........ccccecccceccceeceeeseeeeesceceeceeeesaaasseeesceeeeeeeseeaseaenseeeeeess (070) 10) oX0)

50

Kk

2 parte

Ko

16

16

16

16

«14

Kuz

Kig

Kyo

Koo

parte

£16

16

16

16

Ko

Ko

Koa

16

16

«16

«14

Ko

+ 128 bits de

k

As subchaves Ko; a K32 sao geradas como no esquema a seguir:

128 bits —~ de

11 parte

Koe

75

k

16

16

16

5

Kos

Kae

Koz

parte

16

16

16

«#16

Ka

K 3

Koy

K39

©«©16

16

16

5

Koeg

+ 128 bits de

k

As subchaves K33 a K4j sao geradas como no esquema a seguir:

62

CAPITULO 3. 128 bits

CRIPTOGRAFIA DE CHAVE SECRETA



100

de kK

16

12

K33

parte K34

4

16

§$16

€«©«160616061606160—S

parte K3,

K35

K36

Kaz,

K3g

K39

16

S=«12)

+

Kao

128 bits

de K

As subchaves Ky, a Ky4g sao geradas como no esquema a seguir:

128 bits



125

3

de k is parte

K4,

parte K41

16

16

16

16

16

16

16

3

Kya:

K4a3

Kaqg

Kay

Kag

Kaz

Kag

+apb3x° + agbox*? + a,b,x? + agbox? + aybox + agbix + aobo

(c) A seguir é calculado A(x) x B(x)mod M(x) onde M(x) = 2* +1; este 6 o resultado (veja nota sobre M(z) logo abaixo):

(apbs + a bg + agb; + agbo) 2? + (agby + a,b; + agbp + agb3) 2? + (agb1 + abo + Gob3 + agb2) © + dobp + a ,b3 + daby + azb; Note

que M(x)

zi mod M(x) exemplo

escolhido

= 23™¢4,

pelos autores

de Rijndael é tal que:

Como conseqiiéncia disso, tem-se, por

azb3z° mod(x* + 1) = a3b3x"

Denotamos a multiplicacéo por D(x) = A(x) ® B(x) = d3x?° + dox* + dix + do

Em forma matricial 63b26,69 & dado por

o produto

do

d3dgd,;do

do

vetor

Qo

43

a2

al

bo

@1

ao

a3

a2

by

dy

a2

Qa,

ag

a3

bo

da

a3

a2

a,

ao

bs

dy

_ |

a3a2a,;a9

por

100

CAPITULO 3.

CRIPTOGRAFIA DE CHAVE SECRETA

Caso particular de multiplicagao de vetor de 4 bytes por x

A multiplicacaéo de um vetor B(x) por x é mais simples. Tem-se que (632° +

box? + bx + bo)x = b3x* + box? + dix? + box = c(x). c(x)mod M(x) box? + b,x" + box + b3 = B(x) ® x. Em forma matricial tem-se: Co

c: | 65)

|

00

00

O00

O1

bo

00

O1

OO

OO

by

00

O00

OL

O00

bs

01 00 00 00 | |

7

C4

=

que equivale a deslocar circularmente de uma posicao para esquerda o vetor b3b2b1bp.. De forma andloga, B(x) ® x? equivale a deslocamento de duas posicoes. MizColumns(Bloco)

propriamente

dito

A transformacgao MixColumns(Bloco)

opera sobre cada coluna separada-

mente, ou seja, sobre cada vetor de 4 bytes (32 bits). de informacao, conforme vimos na Secao 2.1.

Ela introduz difusdo

Seja o vetor fixo c(x) = (03)162? + (01)i627 + (01)ig2 + (02)15. Como c(z) e M(x) sao co-primos, c(x) possui inversa c~ a )mod M(z). c7l(x) = (OB) ix?

+

(OD) 162°

+

(09)i6x

+

(OF )i6

e

c(x)

®

Cc

(x )==

|.

MizColumns(Bloco) consiste nos seguintes passos, conforme a multiplicacao ®& vista na pagina 99.

1. Vetor A(x) = agx* + agx* +a,x2 +a 9 € multiplicado pelo vetor fixo c(z). 2. O produto é um polinémio de grau 6.

3. Aplicar mod(z* + 1) sobre o produto obtido acima. Matricialmente,

conforme

item 2f na pdgina

100, 0 resultado B(x)

bax? + box? + byx + bp & dado por: bo

b, |

bo | b3

|

|

02

03

O1

Ol

O01

O1

02

03

03

O1

O1

Q2

01 02 03 O01]

ao

| a

a2 a3

=

3.7.

ADVANCED

ENCRYPTION

STANDARD

b 00

big by b 30

——,

C(x)

- AES

bop bi b 22

bs.

a

Figura’ 3.15: Produto de uma coluna por c(z) Inversa de MixColumns(Bloco) A inversa da transformacao MixColumns(Bloco) opera também sobre cada coluna separadamente, ou seja, sobre cada vetor de 4 bytes (32 bits). Consiste nos seguintes passos, conforme a multiplicacao & vista na pagina 99.

1. Vetor B(x) = bg3x® + box* + b,x + by € multiplicado pelo vetor fixo c'(x) = (0B)y6x? + (OD) 6x7 + (09)ig2 + (OL)16. c~*(x) é a inversa de c(x) mod M(x).

2. O produto é um polinémio de grau 6.

3. Aplicar mod(z* + 1) sobre o produto obtido logo acima.

Matricialmente, conforme item 2f na pagina 100, o resultado A(x) azz? + agx* + a,x + dp & dado por: ao

a, | | a2 Q3

7

OF

09

OB

OE

OD

09

Ob

OD

OD OB OF 09

09 OD OB OF

=

102

CAPITULO 3.

CRIPTOGRAFIA DE CHAVE SECRETA

eT ae Figura’ 3.16: Produto de uma coluna por c7!(z)

3.7.5

AddRoundKey (Bloco, ExpandedK ey)

Add Round K ey( Bloco, ExpandedK ey) opera sobre um Bloco de comprimento N, segmentos de 32 bits: 1. ExpandedkK ey é a subchave de comprimento N, segmentos de 32 bits, derivada da chave principal Key (veremos como é definida na Secao 3.7.6).

2. Esta operacao consiste em efetuar ou-exclusivo (xor) entre Bloco e Expandedkey

Add RoundK

ey é a inversa de si mesma, pois

AddRoundK ey(AddRoundKey(A, K),K)=(A@K)@K

3.7.6

=A.

Geracgao de subchaves (key schedule)

Esta geracao é constitufda de principal Key para se obter desta matriz para constituir Os objetivos destas fases, Sao:

duas fases: a primeira é uma expansao da chave uma matriz, e a segunda é a selecao de colunas todas as subchaves para as N,. iteracoes. para tornar mais dificeis os ataques conhecidos,

3.7.

ADVANCED

ENCRYPTION

STANDARD

- AES

pq | 41 | %2 | 403 | Ma | 405

Koo | Kor | Koo | Kos | Koa | Kos

Ayo | 411 | 12 | 43 | 414 | 15

Kg | Kiar | Riz | Kz | Kia | Kis

Aq | Far | F22 | 3 | G4 |

“or

A3q | 437 | 432 | 433 | 434 | 435

103

Key | Koy | Koo | hog | Koa | Kos Kzq | Kzy | Kzz | Kz | Kg | Kgs

Figura’ 3.17: [lustragao de AddRoundK ey

1. Eliminar simetria através da introducao de constantes distintas em cada iteracao.

2. Introduzir difusao de informacao nas diferencas entre chaves principais distintas.

3. Introduzir nao-linearidade para evitar o cdlculo de diferencas na chave expandida a partir apenas do conhecimento das diferencas das chaves principais.

Primeira fase da geracgao de subchaves A chave principal Key é de comprimento

(key schedule) N; segmentos de 32 bits.

Ela é

expandida para uma matriz W|4||] de 4 linhas e N, x (1+ N,.) colunas. Cada coluna é constitufda de 4 bytes.

104

CAPITULO 3. CRIPTOGRAFIA DE CHAVE SECRETA

indices

0

1

0 1 2 3 totais—

S bits S bits S bits S bits 32 bits

8bits 8&8 bits 8 bits 8 bits S8bits 8 bits S8bits 8 bits 32 bits 32 bits

2

.

Ne-1

..

Nx

8 bits 8 bits 8 bits 8 bits 32 bits

t+N,)-1

8 bits 8 bits 8 bits 8 bits 32 bits

Ilustragao de W/|4]|| (Vj; colunas sao da chave principal Key)

O cdlculo de W[4]|] envolve os detalhes seguintes: 1. As primeiras N; colunas de W/|4]|| sao preenchidas com a chave Key. Os 4 x N;, bytes de Key preenchem as N; colunas de 4 bytes de W[4]|]. . As colunas seguintes (i.e., de indices maiores que N;) de W[4]|] sao calculadas recursivamente em funcao das colunas anteriormente calculadas. Esta recursao para a coluna de indice j usa os 4 bytes da coluna 3 —1 eos 4 bytes da coluna 7 — Nz, e constantes chamadas RC|].

Estas constantes RC|| sao de um byte e varia de acordo com a iteracao considerada. O objetivo de somar-se (ou-exclusivo) RC'|i] em um determinado passo da geracao de W|4||| é o de eliminar possiveis

simetrias entre a chave Key e as subchaves, isto é, cada bit alterado na chave Key deve alterar varios bits nas subchaves. Tais constantes sao independentes de N;.

RCil]

RC[2] RCli]

=

A sua definicao recursiva é:

2° ie. (01)46

= wie. (02)16

para 2 = 2,3,4,...N,, definir:

=

2® RClj -—1) =2t em GF(2°) mod m(z)

Conforme a definicaéo de xtime() na pdgina 94, os primeiros 10 valores

de RC|] sao:

a RCli]

1 (Ol)ie

2 (02)16

3 (O04)i6

4 (O8)i6

D (10)i6

a

6

7

8

Y

10

RC|i|

(20) 16

(40) 16

(80) 16

(1B )i6

(36)16

3.7.

ADVANCED

ENCRYPTION

STANDARD

- AES

105

5 No algoritmo de geracao de W|4||| aplica-se SubBytes() sobre cada um

dos 4 bytes de uma coluna, como ja visto anteriormente, para introduzir nao-linearidade.

Damos a seguir o algoritmo completo de geracaéo da matriz W|4|||. para

N, 7.

Algoritmo

de expansao

Entrada: K ey|4]|.N;|

da chave principal Key

Saida: W[4]|(N, x (1 + N,)) — 1] 1. para 7 = 0,1,2,...N, — 1 faga{

(a) para i = 0,1,2,...3 faga {W|i][j] = Keylt||j];} /* primeiras N;, cols. */

CAPITULO 3.

106

CRIPTOGRAFIA DE CHAVE SECRETA

2. para j = N;,N,4+1,...N,(1 + N,) — 1 faga { (a) se 7mod N; = 0 entao {

i. W(O][9] = WIO]|7 — Ny] 6 SubBytes(W[1][7 — 1] 6 RC /Ny];

ii. para i = 1,2,3 faga { A. Willy] = Wit] [y7-N,. | @SubBytes(W |(t+1) mod 4][j—1];} (b) senao { /* caso 7 mod N, 4 0 */ i. se 7mod AN; = 4 entao {

A. parai = 1,2,3 faga { W{i][7] = Wt] [7 — Ma] 6 SubBytes

(Wli[9 — 1); $

ii. senao {

A. parai = 1,2,3 faga { W[2][7] = Wie][7 — N,] 6 Wiel[y -

iii. }

1];}

(c) f A seguir uma ilustragao da geracao de W([4]|] no caso de N; = 4. indices 0 1 2 3 totais—

0

1

2

3

4

cépla cépla cépla cépla

cépia cépia cépia copia

copia copia copia copia

copia copia cépla copia

calcul. calcul. calcul. calcul.

col|0]

col|1|

col|2|

col|3|

col|4|

Np X (1+ N,) -1 calcul. calcul. calcul. calcul.

col|N, x (1+ N,) — 1]

Segunda fase da geragao de subchaves (key schedule) Esta fase é a da selecdo de colunas da matriz W|4][] para constituir todas as subchaves. ExpandedK ey|i|,i = 0,1,2,...N,. Cada subchave ExpandedK ey|i| é de comprimento N, segmentos de 32 bits.

Se col|j] designa a coluna de indice 7 de W([4]|], entao para cada iteracao 1 = 0,1,2,3,...N,, ExpandedKey|i| de N, colunas (segmentos) é igual as colunas

col|N, x i], col[N, x i+ 1],...col[(N, x (¢+1)) — I].

3.7.

ADVANCED

ENCRYPTION

STANDARD

- AES

107

Para N, = 6 e N, = 4, tem-se a ilustracéo a seguir. ExpandedK ey(0| é igual as colunas col|0], col(1], ...col[5|. ExpandedKey|1]| é igual As colunas col|6], col[7],...col[11]. E assim por diante. col

|col

|col

|\col

|col

\col

|col

|col

|col

|\col

|col

[4] | [5] | [6] | [7]

ExpandedKey[0] ExpandedK ey|i], para N, =6e

3.7.7

|col

|col

[12]

ExpandedKey[1] Ny = 4

Valores de teste da geracao de subchaves

Listamos alguns valores para teste da geracao de subchaves.

a chave principal Key a seguir para N; = 4 (16 bytes)

Consideramos

(0123456789 ABC DEF0123456789ABC DEF) 6 As subchaves geradas para N, = 10, Np = 4 sao as seguintes

44 colunas):

(4 linhas e

Linha 1 [1, 137, 1, 137, 98, 235, 234, 99, 26, 241, 27, 120, 21, 228, 255, 135, 56, 220, 35, 164, 77, 145, 178, 22, 195, 82, 224, 246, 169, 251, 27, 237, 122, 129, 154, 119, 87, 214, 76, 59, 136, 94, 18, 41] Linha 2 [35, 171, 35, 171, 158, 53, 22, 189, 0,53, 35, 158, 74, 127, 92, 194, 93, 34, 126, 188, 94, 124, 2,190, 85, 41, 43, 149, 199, 238, 197, 80, 95, 177, 116, 36, 10, 187, 207, 235, 33, 154, 85, 190) Linha 3 [69, 205, 69, 205, 154, 87, 18, 223, 198, 145, 131, 92, 201, 88, 219, 135, 209, 137, 82, 213, 144, 25, 75, 158, 184, 161, 234, 116, 221, 124, 150, 226, 229, 153, 15, 237, 112, 233, 230, 11, 223, 54, 208, 219] Linha 4 [103, 239, 103, 239, 192, 47, 72, 167,59, 20, 92, 251, 135, 147, 207, 52, 144, 3, 204, 248, 217, 218, 22, 238, 158, 68, 82, 188, 220, 152, 202, 118, 137, 17, 219, 173, 124, 109, 182, 27, 158, 243, 69, 94)

108

CAPITULO 3.

3.7.8

Valores

CRIPTOGRAFIA DE CHAVE SECRETA

de teste do AES

A seguir listamos os valores do Bloco apos cada iteracao do AES, para N, =

10 iteragoes. Tanto o Bloco de entrada (16 bytes, N, = 4) como a chave prin-

cipal Key (16 bytes, NV, = 4) sao iguais a: (110102030405060708090A0 BOC0 DOEOF)16

Apés asoma com ExpandedK ey|0|, o Bloco fica igual a zero (por qué?),

como se vé a seguir: (OOO00000000000000000000000000000)4.6 Apos cada uma das 10 iteracoes os valores de Bloco na saida sao:

OTH WN DO OON

FE

iter. 2

re

0

3.7.9

Valor do Bloco apés iteracao 2 na base 16 (A4C9179E A0CC1199A8C51B92A4C8159D)16 (19F'96A B81C6A54130D773DB24B0AE9D4)16 (7D0E04AC96 F118330F3B0F'72DE A4BC58) 16 (BC6892C C673 F 2 E26F F3D9ICVIC'C82BA5C)16 (746 DF A48E718213A789E36C42F07E BCS) 1¢ (A738F BBC622D32E4B48F'857E85C E F33E ) 16 (7365025 D D86180D DA5F27204A2 A6165D) 16 (EDCFBDIBEDBBD7DF364A203432E B81 E3)16 (LAQACSC2F' F DC2808 B9054C 270C0ADAYIF') 16 (D6DD3 AAC F5B52D3AC26001 B3B3930401) 16

Inversa do AES-Rijndael

Fixada uma chave principal Key, seja BlocoE:ntra o nome do bloco de entrada do AES-Rijndael, e seja BlocoSai o bloco de saida, ambos de N; segmentos. O resultado (safda) da inversa do AES-Rijndael, quando a entrada for BlocoSai, deve ser 0 BlocoEntra. A funcao inversa de cada iteracao chamada InuRound consiste das inversas das quatro transformacoes na funcao Round: InvSubBytes, InvShiftRows, InuMizxColumns, e Add RoundK ey, mas executadas na ordem inversa. Note que a inversa de Add RoundKey é ela mesma, como visto na pagina 102. Em pseudocédigo tem-se a iteracao 2 definida como:

Inv Round( Bloco, ExpandedK ey|i]){ Add RoundK

ey( Bloco, ExpandedK ey|t|);

InvMixColumns(Bloco); InvShiftRows(Bloco); InvSubBytes(Bloco);

j

3.7.

ADVANCED

ENCRYPTION

STANDARD

- AES

109

A inversa da iteracao final chamada FinalRound deve ser executada primetiro, com as transformacoes inversas executadas em ordem inversa também. Em pseudocédigo tem-se a sua definicao a seguir:

InvF inal Round(Bloco, ExpandedK ey|N,]){

AddRoundK ey( Bloco, ExpandedK ey|N,.]); InvShiftRows(Bloco); InvSubBytes(Bloco);

j

O algoritmo inverso do Rijndael é entao definido a seguir, sendo que KeyExpansion é a expansao e geracao das subchaves vistas na Secao 3.7.6 na pagina 102:

InvRijndael(Bloco, Key){ KeyExpansion( Key, ExpandedK ey);

InvFinal Round(Bloco, ExpandedK ey|N,|);

para i = (N, —1),...3,2,1 faga { InvRound(Bloco, ExpandedK ey|i));

}

Add RoundK ey(Bloco, ExpandedK ey|0]); }

A seguir uma ilustracao do inverso do Rijndael, que é basicamente a ilustracao do Rijndael “invertida”, i.e., as setas no sentido de baixo para cima.

110

CAPITULO 3. |

CRIPTOGRAFIA DE CHAVE SECRETA

Bloco: Entrada de Nb segmentos de 32 bits

|

i |

|

AddRoundKey(Bloco,ExpandedKey/(0])

=

ExpandedKey([0]

i (4) (3) (2) (1)

(4) (3) (2) (1)

|

|

Round 1: InvSubBytes(Bloco); InvShiftRows(Bloco); MixColumns(Bloco); AddRoundKey(Bloco,ExpandedKey[1]); TT Round 2: InvSubBytes(Bloco); InvShiftRows(Bloco); InvMixColumns(Bloco); AddRoundKey(Bloco,ExpandedKey|2]);

ExpandedKey[1]

|

ExpandedKey([2]

|

i Round Nr-1: (4) InvSubBytes(Bloco); (3) InvShiftRows(Bloco);

(2) InvMixColumns(Bloco);



ExpandedKey[Nr-1]

=

ExpandedKey[Nr]

(1) AddRoundKey(Bloco,ExpandedKey|[Nr-1]);

|

|

Lf

Transformacao Final: (4) InvSubBytes(Bloco);

:

(2) InvShiftRowsBloco);

(1) AddRoundKey(Bloco,ExpandedKey[Nr]);

iti

Bloco: Saida de Nb segmentos de 32 bits

|

Inversa de Rijndael

3.7.10

Criptandlise do Rijndael

Os autores do Rijndael, J. Daemen e V. Rijmen, mostraram (www.esat.kuleu ven.ac.be/~rijmen/rijndael/ ou www.nist.gov/aes) como recuperar uma chave secreta de 128 bits quando o nimero de iteracoes fosse reduzida a 6,

em tempo proporcional a 2, no seu livro The design of Rijndael (Editora

Springer, 2002). No artigo Improved Cryptanalysis of Rijndael os autores N. Ferguson, J. Kelsey, S. Lucks, B. Schneier, M. Stay, D. Wagner, e D. Whiting (Seventh Fast Software Encryption Workshop, Springer-Verlag, Lecture Notes in Com-

puter Science vol.

1978, pp 213-230,

2000) diminuiram este tempo para 2**

(2° /2™ = 2.6844 x 10°). Neste artigo mostraram também como recuperar a

chave secreta de 256 bits com o numero de iteracoes reduzido a 9 em tempo

3.8.

CRIPTANALISE DIFERENCIAL

— CD

111

proporcional a 27** (utilizando um método chamado related key attack). Ataque “side channel” Os ataques mais répidos contra o AES sao os chamados side channel attack. Eles nao atacam o algoritmo em si mas atacam as implementacoes

do algoritmo em sistemas que deixam sair (“vazar” ) dados inadvertidamente.

Em abril de 2005, D.J. Bernstein (http://cr.yp.to/antiforgery/cache timing-20050414. pdf) anunciou um ataque deste tipo (side channel timing attack), na implementacao chamada OpenSSL, em que cerca de 200 milhdes de entradas e saidas do AES sao necessérias. Em outubro de 2005, Dag Arne Osvik, Adi Shamir e Eran Tromer apresentaram um artigo com este mesmo tipo de ataque (side channel timing

attack) chamado

Cache Attacks and Countermeasures:

3.7.11

simplificado

disponivel em http: Neste artigo toda a aplicacoes do AES, em que o AES esta

AES

the Case of AES,

//people.csail.mit.edu/tromer/papers/cache. pdf). chave é recuperada em apenas 65 milissegundos apos 800 desde que o criptanalista tenha 4 sua disposicao o sistema sendo aplicado.

O Professor Edward Schaefer da Universidade de Santa Clara (EUA) cons-

truiu uma versao didatica e simplificada do AES chamada S-AES. Ela é util para uma melhor compreensao do AES. Para detalhes veja URL:

http: //www.rose-hulman.edu/~ holden/Preprints/s-aes.pdf

3.8

Criptandalise diferencial — CD

Criptandlise diferencial — CD — é¢ um método probabilistico para ataque do

tipo Texto Legivel Conhecido (veja 2 na Secgao 1.4). Foi criada por E. Biham e A. Shamir (Differential cryptanalysis of DES-like cryptosystems,

of Cryptology, 4(1), 1991).

Journal

E uma andlise efetiva de funcdes para quebrar a chave secreta, por exemplo o DES, de forma mais raépida que simplesmente tentar todas as chaves possiveis até encontrar a chave correta. No caso do DES, a CD consegue quebrar a chave em tempo proporcional a 24’, que é substancialmente menor que 2°° que é o nimero total de chaves. Veja os valores a seguir.

112

CAPITULO 3.

CRIPTOGRAFIA DE CHAVE SECRETA

2*7 — 1.4074 x 10" 2°° — 7.2058 x 10"° 2° /2*7 — 512.0 O algoritmo FEAL pode ser quebrado por CD em tempo proporcional a

279 — 5.3687 x 10° ao passo que a quebra por tentativa de todas as chaves gastaria tempo proporcional a 2°4 = 1.8447 x 10’°, que é muito maior.

Este tdépico foge do escopo deste livro. Veja detalhes no livro: Differential cryptanalysis of the Data Encryption Standard, por E. Biham e A. Shamir, Edit. Springer-Verlag, 1993.

3.9

Criptanalise

linear — CL

Criptandlise linear — CL — é também um método probabilistico para ataque do tipo Texto Legivel Conhecido. Foi criado mais recentemente que CD por M. Matsui e outros (Matsui, M.: The first experimental cryptanalysis of the DES, CRYPTO’94 Proceedings, Lecture Notes in Computer Science, pp 1-11,

Springer-verlag, 1994).

CL é também um método probabilistico, mas é mais efetivo que CD para

quebrar a chave DES: gasta tempo proporcional a 2*° = 8. 7961 x 10“. Neste

método sao pré-calculadas relacoes lineares entre certas posicoes dos 64 bits da entrada, da saida, e da chave secreta; e estas relacoes ocorrem com uma probabilidade maior que 1/2. E através de experimentos com amostras de textos legiveis, corrobora-se (ou nao) a ocorréncia de tais relagdes, podendose (ou nao) descobrir alguns bits da chave em uso, com alta probabilidade.

CL aplicada a FEAL com oito iteracdes gasta tempo proporcional a 2!°

para quebrar a chave. Este tépico foge também do escopo deste livro.

3.10

Fortalecimento

contra

CD

e CL

Com a introducao de uma funcao simples em cada iteracao, conseguimos fortalecer o DES e o FEAL contra CD e CL nos seguintes artigos: 1. K. Koyama and R. ‘Terada: How to strenghten DES-like cryptosystems against differential cryptanalysis, Transactions of the Inst. of Electronic Information and Communication Eng., Japan, E76-A(1), January 1993.

MODOS DE OPERACAO

3.11.

113

. 'T. Kaneko, K. Koyama, and R. Terada: Dynamic swapping schemes and differential cryptanalysis, Transactions of the Inst. of Electronic Information and Communication Eng., Japan, E77-A(8), August 1994. . R. Terada, P. G. Pinheiro, and K. Koyama: A new FEAL stronger against differential cryptanalysis, Transactions of the Inst. of Electronic Information and Communication Eng., Japan, E79-A(1), January 1996. . Y. Nakao, the Inst.

T. Kaneko,

K. Koyama,

of Electronic Information

E79-A(1), January 1996.

and R. Terada, and

Transactions

Communication

Eng.,

of

Japan,

. R. Terada and J. Nakahara Jr., Linear and differential cryptanalysis of FEAL-N with swapping, 1997 Internat’l Symposium on Computer and Information Security, Fukuoka, Jan. 29-Feb 1, Japan. Com tal modificacao de cada iteracao, tanto CD como CL gastam tempo maior que 2 elevado ao comprimento da chave para quebrar a chave DES ou FEAL, tornando-os seguros contra estes dois tipos de ataque.

3.11

Modos

de operacao

Nesta secao veremos como criptografar um texto legivel mais longo que o

comprimento fixo da entrada (64 bits no caso do DES). No artigo DES modes

of operation (FIPS PUB 8&1, National Bureau of Standards, U. S. Dept. of Commerce, Washington, D. C., 1981) sao descritos cinco modos de aplicacgao

do DES, mas eles sao vdlidos para outros algoritmos fx() de chave secreta kK vistos neste Capitulo.

Estes modos sao:

1. Modo ECB -— Electronic Code Book Mode 2. Modo CBC —- Cipher Block Chaining Mode . Modo s-CFB -— s-bit Cipher Feedback Mode . Modo s-OFB -— s-bit Output Feedback Mode

. Modo Contador (Counter Mode)

114

CAPITULO 3.

3.11.1

Modo

ECB

CRIPTOGRAFIA DE CHAVE SECRETA

- Electronic

Code

Book

Mode

O modo ECB é o mais natural dos quatro modos, mas veremos que é o pior. Inicialmente dividir o texto legivel em blocos de comprimento igual

ao comprimento fixo t da entrada do algoritmo fx() de chave secreta K,

obtendo-se n blocos x1, ®2, ...2n, sendo o ultimo bloco completado com brancos se necessério. No caso do DES, t = 64 bits. O modo ECB consiste em

criptografar cada bloco x; separadamente.

Nestas condicdes, se houver blocos repetidos no texto legivel, é dbvio que os blocos correspondentes de texto ilegivel serao idénticos e este fato pode ser proveitoso para algum mal-intencionado que consiga coletar o texto ilegivel. Este proveito depende do contexto; por exemplo, se os dois blocos ilegiveis repetidos corresponderem ao mesmo saldério de duas pessoas, um mal-intencionado pode substituir um dos blocos por outro bloco ilegivel que talvez corresponda a um salario maior. Vulnerabilidades deste tipo fazem com que o modo ECB seja usado raramente.

3.11.2

Modo

CBC

— Cipher Block

Chaining Mode

O modo CBC permite evitar o problema visto com o ECB, pois, como veremos, mesmo quando ocorrem blocos repetidos no legfvel, os blocos ilegfveis nao serao idénticos. Como se vé na Figura 3.18, pdégina 117, um valor inicial VJ (que pode

ser fixo para todos) é submetido a um XOR com o primeiro bloco legivel x,

obtendo-se z; = x; ® VI. A seguir o bloco ilegivel y; = f(z) € calculado e enviado ao destinatario. Para os blocos seguintes 72, 73, ... sao efetuados os seguintes cdlculos para 7 = 2,3,...:

25 = Lj OYj-1 3 = f(z)

Devido a influéncia de y;_1 os blocos repetidos 4 direita de x;_1 nao vao

resultar em blocos ilegfveis idénticos. A decriptografia do primeiro bloco ilegivel é feita da seguinte maneira:

ai = fx (yi)

%,=%4

OVI

pois z=—27,0VI

3.11.

MODOS DE OPERACAO

115

Para os blocos seguintes, deve-se calcular para 7 = 2, 3,...

25 = fx (ys)

L; = 2% PYj-1 O leitor atento percebe

Pols z; =X; BY;-1

que se algum

bloco,

digamos

x2, for alterado

para x5 entao yz sera alterado para ys e em conseqtiéncia os blocos y3, y4, Ys

serao todos alterados mesmo que 73, 7%4,... nao sejam alterados, pois necessariamente y, # y2. Portanto, uma alteracao relativamente pequena de pelo menos um bit em x2 acarreta alteracoes nos valores dos blocos yo, y3,.... Este fato nos leva a recomendar o uso do valor do wltimo bloco yp, como valor de

hash (1.e., usar fx() em modo CBC como fungéo espalhamento, conforme definida no Capitulo 7).

3.11.3

Modo

CFB

— s-Cipher Feedback Mode

O modo CFB permite criptografar blocos de texto legivel de comprimento relativamente menor que no modo CBC. Seja s um valor fixo igual a este comprimento; o caso s = 8 bits corresponde a criptografar blocos de um byte. Como se vé na figura na pagina 118, um valor arbitrdrio inicial VJ é criptografado obtendo-se z; = fx(VJ). A seguir sé os s bits mais 4 esquerda de z; sao submetidos

enviado ao os s bits de um circuito Para os

a XOR

com

o primeiro bloco x, resultando y; que é

destinatdrio. Os s bits mais y; sao anexados a direita do chamado Shift Left Register blocos seguintes 12, 73, ... Sao

a esquerda de VJ sao descartados e VI, obtendo-se w,. Na pratica existe que efetua esta ultima operacao. efetuados os seguintes calculos para

7 = 2,3,...:

2% = fix (wj-1); y; =

(s bits mais a esquerda de z;) @2;;

os s bits mais 4 esquerda de w,;_; sao descartados e y; 6 anexado a direita de w;_1, resultando w;, A decriptografia consiste em esquerda de z; a XOR X2, etc.

simplesmente

submeter

com y, para obter x7;, de z2 a XOR

Uma vantagem do modo s bits, sao criptografados de criptografar um byte de cada aplicacao da funcao fx() para

os s bits mais

a

com ye para obter

CFB em relacao ao CBC é que poucos bits, cada vez. Por exemplo, s = 8 corresponde a vez. Uma desvantagem é que CFB exige uma cada byte, o que consome mais tempo.

116

CAPITULO 3.

3.11.4

Modo

OFB

CRIPTOGRAFIA DE CHAVE SECRETA

— s— Output

O modo OFB é muito parecido com gerador de nuimeros pseudo-aleatérios.

CFB.

Feedback Mode Seu comportamento

é de um

De novo, seja s um valor fixo igual ao comprimento dos blocos x; a serem

criptografados. Como se vé na Figura 3.20, pagina 119, um valor arbitrdrio inicial VI é

criptografado obtendo-se z; = fx(V1). A seguir sé os s bits mais a esquerda

de z; sao anexados a direita de VJ e os s bits mais 4 esquerda de VJ sao descartados, resultando w,. A seguir para 7 = 2,3,... sao calculados os valores z; = fx(w;-1), 0S s bits mais 4 esquerda de z; sao anexados 4 direita de w;_1, € os s bits mais a esquerda de w;_; sao descartados, resultando wi. Note que os s bits mais 4 esquerda de cada z; constituem uma seqtiéncia de numeros pseudo-aleatérios. A criptografia dos blocos 21, £2, ...%, consiste em calcular y; = x; ®[s bits

mais 4 esquerda de z;] paraj = 1, 2,..n. A decriptografia é, para 7 = 1,2,...n calcular y; 6 |s bits mais 4 esquerda

de z;| = 2;

Uma vantagem do modo OFB em relacao ao CFB é que o remetente e o destinataério conhecendo VJ e kK podem calcular os z; antes de conhecer os x; ou receber os y;. Quando s é relativamente pequeno, da ordem de dezenas de bits, pode ocorrer repetigao de y; , isto é, yj;4a = y; para um valor A pequeno. Tal repeticao chama-se ciclo curto, e obviamente nao é desejavel.

3.11.5

Modo Contador (Counter Mode)

Este modo é uma simplificagao do modo OFB: no lugar de VI é usado o valor 1 (um), e no lugar de w, usa-se 2, e assim por diante, isto é, para 7 = 1,2,3,...n, usa-se um contador w;41 = w;+1 como entrada para a fungao fx(). Desta maneira, o receptor de y; pode decriptografar y;,, sem conhecer y;. Além disso, este modo evita o problema do ciclo curto mencionado na Subsecao 3.11.4.

3.11.

MODOS DE OPERACAO

117

9

L3

fkQ

fkQ

Y1

Y2

Y3

Y1

Y2

Y3

Ly

L2

L3

Ly

VI

K

— fr)

VI

Figura 3.18: Modo CBC

118

CAPITULO 3.

CRIPTOGRAFIA DE CHAVE SECRETA

i

‘|

Vi

Kk



Y1

fora

‘|

5

fx()

S|

f

5

ae

S|

fora

Y2

Figura 3.19: Modo s—CFB

frQ)

S|

a

fora

3.11.

MODOS DE OPERACAO

VI Kk



|

fora

L |

4¢—__

mod17. A resposta é s = 9. Quando p é relativamente longo, ninguém até hoje (nem mesmo os pesquisadores especializados) descobriu um algoritmo eficiente, i.e., de tempo polinomial, para resolver este Problema. Ou seja,

este Problema é computacionalmente invidvel (conforme Secao B.5) de ser resolvido mesmo usando supercomputadores cada vez mais répidos. A idéia entao é incorporar esta dificuldade de solucao em esquema criptogrdafico.

4.2.

DIFFIE-HELLMAN

4.2

125

Diffie-Hellman

Um protocolo de combinacao de chave secreta foi publicado antes do RSA

(Diffie, W. and Hellman,

M. E., New Directions in cryptography,

[EEE

Transactions on Information Theory, vol. 22, #6, 1976, pp. 644-654) por W. Diffie e M. Hellman, baseado no Problema do Logaritmo Discreto. Este protocolo pode ser “quebrado” por um intruso ativo, como vamos ver adiante (pelo chamado ataque man-in-the-middle), mas veremos também que uma ligeira modificacao produz um protocolo util e aparentemente inatacavel. A seguir listamos os passos do protocolo para Alice e Beto combinarem entre eles uma chave secreta Ky, (que pode ser para ser usada em algum algoritmo do tipo DES). Previamente Alice e Beto conhecem publicamente dois inteiros g e p, sendo p um primo longo e g tal que 0 < g < p gerador de Ze.Pp 1. Alice escolhe um ntimero aleatério S4,1
:

2(y*)"* mod p

=

[z(g° mod p)* mod p] [g°* mod p|*

=

(xT* mod p)[(g*

mod p)®|~' mod p

[z(g°*) mod p] [g°* mod p|*

r

4.6

Problema

do logaritmo

=

=

discreto geral

O Problema do Logaritmo Discreto pode ser generalizado considerando-se qualquer grupo finito G com operacao 0, como se vé a seguir. Seja AC G

um gerador do subgrupo H CG, 1.e., H = {A’ : 7 > 0}; Dados AGC GeBEH, calcular um inteiro S:1< S 0, grau( fo) > Oe f(a) = file) fo(a)O. Por exemplo, em Z.[z] 0 polindmio f(x) = 2? + 2+ 1 é irredutfvel.

Z»|r|/ f(x) € um corpo se e sé se f(x) é irredutivel. O inverso de qualquer elemento de Z,|z]/f(x), exceto o zero, existe e é calculdvel pelo Algoritmo de Euclides estendido para polinémios.

Em criptografia o caso particular do corpo Z2|x]/ f(x) € muito importante, eéchamado Corpo Finito de Galois. Vamos denotaé-lo por GF(2”) (de Galois Field) onde m = grau(f). Diz-se que a caracteristica de GF(2™) é 2. Os elementos nao nulos de GF(2™) com a multiplicagao formam um grupo ciclico

chamado grupo multiplicativo de GF'(2™), de ordem m — 1. Pode-se provar que corpos finitos GF(p™) com p™ elementos, p primo e m > 1, sao isomorfos entre si. Notamos que a soma de dois polindmios de GF(2™) é simplesmente o ou-exclusivo (XOR) dos coeficientes dos polindmios. Por exemplo:

g(x) = h(x) =

g@h=

Ox? 1a? 12°

+1a* +1la* +02*

402° +12?

412°

+12* +12?

+07 +12

+027

+12r

41 +0 +1

Propriedade. Para Vg(xz), Vh(x) € GF(2™), (g +h)? =g° +h? Exemplo

1. Em GF(2’), f(z) = 27 + 4+1

€0

dutivel. Em Z a tabela de multiplicacao e soma sao:

unico polindmio irre-

4.7.

O ALGORITMO

ELGAMAL mult 0 1

O 0) QO;

GERAL

1 0 1

soma 0 1

0 1 O| 1 1/0

Os elementos de GF'(27) séo 0,1,2,2 +1. O produto [z* mod(x* + x + 1)] mod2 = [—x — 1]mod2 =2+1 A tabela completa de multiplicagéo em GF'(2?) é calculada a seguir: 0 1

r

[OQ

| +1 0 0

0 1

le

0 0

a+1]=

0 0

0 x

0 ct+1

(x+1)°

|O

+1

x(@+1)

| 0 0 0 | O

0 1 XL r+i1

0 x —x%-1 —]

0 | c+] -l ci

0 0 0 | 0

0 1 x r+1

0 x —r—-1 —]

0 c+] —-1 CO

| 0 0 0 | O

0 1 L ct+1

0 x ctl 1

0 1

2

+1

0 x

x

a(e+1)

| _ mod 2 =

0 c+l1 1 x

A tabela de multiplicacao é entao: mult® | 0

1

0 0 0 1 0 1 x 0 £ x+tl|O;}axr2+1

x

r+1

0 i r+l1 1

0 +1 1 v

0 ct+1

r(x +1) (+1)

156

CAPITULO

4.

CRIPTOGRAFIA

DE CHAVE PUBLICA

A tabela completa da soma em GF'(2”) é calculada a seguir: 0

0

1 x

0

1 x

0

1 x

1 x

t+1l 1 (1.e., Corpo Finito de Galois, ver definigao na Secao 4.7.4). Os 2” elementos do conjunto GF'(2™) sao representados pelas seqiiéncias de m bits. Os elementos a,b,c usados a seguir devem pertencer a GF'(2™), sendo que deve-se

ter c #

0.

Como

GF(2™)

possui

caracteristica

define a curva eliptica é ligeiramente alterada:

2, a equacao

que

y° + cy= (x + ax +b) mod 2” A curva eliptica (supersingular) é constitufda por todos os pontos (x, y), 2, y € GF(2™) que satisfazem esta equacao. O conjunto uniao do ponto infinito 0 e os pontos desta curva eliptica formam um grupo. E um grupo finito onde a operacdo é a soma, a ser definida.

Soma em curva eliptica (supersingular) sobre GF(2”) Seja P = (21, y,) na curva eliptica. Entaéo —P = (21,4, +c). Seja Q = (2, y2) também na curva eliptica, Q 4 —P. Entao P+ Q = (73, y3) € como segue:

1.

v3 =

>

y=

(ute) T1+x2

Yity (wit)

2

+2,+22seP4#Q

4,2

a

seP=Q

(22) (r+) + tose P=Q (21 +23)

+1

ese

PAQ

Cc

Para evitar a divisao, em geral adota-se c = 1. Com c = 1, existem exatamente 3 classes isomorfas de curvas elfpticas supersingulares sobre GF(2™), com m impar. Uma curva representativa de cada uma das 3 classes é: Ey:

yt+y=2

Ey

:

yty=xr4+eu

Fz;

:

yt+y=24+241

170

CAPITULO 4.

4.8.5

CRIPTOGRAFIA DE CHAVE PUBLICA

Algoritmo ElGamal sobre curvas elipticas em Corpo Finito de Galois

Seja & uma das curvas E, ou FE, ou E3 sobre GF'(2™) com m impar. Vamos supor que os elementos de GF'(2”) sao representados em uma base normal. Chaves Alice escolhe um ponto P em EF, preferencialmente um gerador de EF, e torna P ptblico. Alice escolhe aleatoriamente um inteiro a e a sua chave publica é aP enquanto a é a sua chave secreta. Algoritmo de criptografia

Seja (M,, M2) um par ordenado de elementos de GF'(2™) a serem crip-

tografados.

Beto efetua os passos seguintes:

1. Escolhe aleatoriamente um inteiro k tal que 1 < k < 2” (é o NONCE, veja pagina 148) e calcula os pontos kP e akP = (Z,Y) 2. Para k aleatério, x = 0ou y = 0 ocorrem com baixissima probabilidade. Podemos supor entao que © # Ne y ~ 0, Beto envia para Alice o ponto

kP, eos elementos M,% e Moy de GF(2”).

Algoritmo de decriptografia Ao receber kP, M,x e Moy, Alice efetua os seguintes passos: 1. Multiplica a sua chave secreta a por kP obtendo (Z, 4%). 2. Recupera M,, M2

dividindo M,Z por

7% e Moy por y.

Maiores detalhes no artigo de A. J. Menezes e S. A. Vanstone: Elliptic Curve Cryptosystems and their Implementation, Journal of Cryptology 6 (1993) 209-224. Exercicios 1. A curva eliptica y? = (x?+10x2+6) mod 17 define um grupo comutativo?

2. Os pontos (2,0) e (6,3) sao da curva elfptica y? = (2° +2+7)mod17?

3. Na curva eliptica y? = (x? +2+7) mod 17, qual é 0 ponto (2,0)+(1, 3)? 4. Na curva eliptica y? = (2° + x + 7)mod17, qual é 0 ponto 2 x (1,3)?

4.9.

ALGORITMO

ph, Certicom Corp. File Fs q

=|

|)

Edit

View

£

Cryptographic Technologies Go

Communicator

&-

Back |

MH

32

Fonvard Bookmarks

Aeload 4

8 Instant Message

171

- Netscape

=

|

9 S| TM

)53]

tt

2

Home

wow

Search

Netscape

s&s

&

Print

B

Security

Stop

Location: [http://vwy certicom cam?

Intemet

PRS |2ELEcEI

Help

C4 Lookup

G4

| Gal” What's Related

New&Cool ~ —

Certicom

———————————— Press Releases

See Certicom T¢, ,

eS Certicom

In The

Secures

the Future

at... Q

Certicom News a— — a 14/15 DOstamaxx Licenses

;

Booth #712, Washington, November 14-16, 1999

News

of e-Business

D.C.

; eee

Meeeleee Mien Viet

ala)

Catch

Certicom Partners Job Opportunities

Perfect

Elliptic CurveC forticom

sary

vt

7

L

Anaounces... a

Downloads

2

i ie .

s

m

112

9

11/2 } 14/4

te i

Standards

Pr

20 0, San Jose, CA.

be deo)

eet

113

Wave:

phy: An Advanced Course

January 13-15,

Certicom Products Elliptic Curve

gutter

The

Updates

Certicom

SSL

tatoameet

: deGAIK Certicom Announces Availability of WTILS Plus Toolkit For Secure WAP Senices isenses Certicom's

WTLS Enable Plus to Seoure

WAP.Based Wireless Transactions Nettech Systems Licenses Certicom Encryption Technology

yh

to Secure Market Leading Wireless: Middleware Products Critical Path and Certicom to Deliver Advanced Internet Messa

a

bes a

— Certicom

Encryption Technology to Secure

ib

Security Manet

To

Announces.

md us

3.0

fs

Certicom Customer CornerD encryption

ght@ Certicom Corp., 1997-2000. All tights resenred Information subject to change. http iia, certicom.com

Sf

BD

=

°

Me2

a

handspring

[itp /Awwwcerticom.com/press/99/nov01 93, him

S338

“as

AP

Fal

sz

|

Figura 4.11: Aplicacoes de curvas elipticas disponiveis na Internet

4.8.6

Curvas

elipticas na web

Muitos detalhes sobre criptossistemas sobre curvas elfpticas podem ser encontrados na Internet. Por exemplo, www.certicom.com é recomendado (Figura 4.11).

4.9

Algoritmo

MH

Este algoritmo foi publicado em 1978 por R. Merkle e M. Information and Signatures in ‘Trapdoor Knapsacks, IEEE Information Theory, IT 24-5, Sep. 1978). Veremos que compacto e de execucao muito rdpida mas infelizmente foi anos depois! Inicialmente Alice deve calcular um par de chaves: a

Hellman (Hiding Transactions on este algoritmo é quebrado alguns chave publica da

Alice — Paice — € a Chave particular secreta - S4ice — da seguinte maneira:

172

CAPITULO 4.

4.9.1

Cdalculo de um

CRIPTOGRAFIA DE CHAVE PUBLICA

par de chaves MH

1. Calcular dois ntimeros inteiros e longos (i.e., com centenas de bits)

chamados m e w; tais que mdc(w,m) = 1 e calcular uma seqiiéncia nao

vazia de inteiros positivos supercrescentes A’ = (a/,,a,...a/,)Tm i.e., uma seqtiéncia que satisfaca:

j-1

n

Vj > 1:ai>S oaj,em>J a, 2. A chave secreta S4tice = (m, w, A’) € guardada com cuidado pela Alice e a chave ptiblica Paice = (A) é enviada para qualquer pessoa amiga da Alice, onde A = (a1, do, ...dn) deve satisfazer:

Vj > 1:a; = w.a;modm 4.9.2

Algoritmo

de criptografia MH

Nestas condicoes, considerando um texto legivel expresso como uma, seqiiéncia de bits x = (by, b,...bn),6; € {0,1}, um transmissor, digamos Beto, conhecendo a chave ptiblica Parice = A = (1, G2, ...Gn), efetua o passo seguinte:

| Beto calcula e envia para Alice 5“, arb: = y. (y € 0 texto ilegivel de x.) |

4.9.3

Algoritmo

de decriptografia MH

Alice recebe y e, conhecendo a chave secreta Si4iice = (m,w, A’), efetua os passos seguintes:

1. calcula y’ = y X w-t' modme 2. calcula as incdgnitas uj, Ug, ...U, tals que 7 /

y=

»

/

G,Us

t=1

aplicando o algoritmo auxiliar descrito a seguir;

4.9.

ALGORITMO

MH

173

3. deve-se ter (U1, U2, ..-Un) = (01, be, ...bn), pois )7F_, abe = y > D1 (GX w-'modm)h = y x w7'modm => S~_, a, = y’ e pelo Teorema 4.9.3 abaixo a solucao de nN

po

/

in

S Gus t=1

é nica.

Se eventualmente Carlos, um intruso, conseguir gravar (“grampear”) o texto ilegivel y da linha de comunicacao entre Alice e Beto, ele nao consegue recuperar o valor x, pois ele nao conhece

a chave secreta da Alice Si4rice =

(m,w, A’) que é usada para calcular y’.

Em outras palavras, o valor y é

ininteligivel para Carlos.

Teorema

4.9.3 Seja A’ =

(a},...a/,)Tr uma seqiiéncia de inteiros positivos

supercrescentes e seja y’ > 0 um inteiro.

Entao a equacao

Tr

y = SS ayur

(4.3)

t=1

possui no maximo

uma solucéo

solucao, entao

(wy, U2,...Un)

€ {0,1}".

De fato, se ha

TL

y< doa t=1

Demonstragao Observe que é suficiente provar que qualquer solucao da equacao 4.3 deve satisfazer: __

Z

/

uj =lseesdsey

Tm

/

>a,+

/ ae ) a,Uz,Vj = 1,...n. t=j+1

1. Parte [=>] Esta parte é conseqiiéncia direta de 4.3 e do fato de a seqiiéncia (a),...a/,)7m ser supercrescente: uj; = 1 > y' = Joy, apm > Qi,/ + pay Dd n 41 /Ut, VJ - = 1, «0. 2. Parte |[ 0 de n + m algarismos por v > 0 de

4.12.

EXERCICIOS

179

n algarismos, como no algoritmo que aprendemos a fazer com lapis e papel. No entanto, esse algoritmo exige um pouco de tentativa e erro para se determinar cada algarismo do quociente como em 774/8: tentase primeiro 8 como o quociente de 77/8 e depois tenta-se 9. Observe também que esse algoritmo pode ser quebrado em algumas repeticoes da operacao de dividir um inteiro de n + 1 algarismos por um de n algarismos, como em 77/8, e depois de determinar o quociente 9 e o

resto 54, efetuar 54/8.

(a) Genericamente tem-se: Sejam u = upUy..-Un (den+1 algarismos) e U1 U2...Un (de n algarismos) dois inteiros positivos na base b tais que 0 < u/v < b. Queremos desenvolver um algoritmo para calcular O quociente gq = |u/v]. (O resto é calculdvel apés a determinacao de q.) A base b deve ser igual a 2° onde t é o ntimero de bits maximo para armazenar um valor inteiro no computador em uso,

i.e., cada u; (ou v;) é tal que 0 < u; < 2".

(b) Essa operacao pode utilizar o lema enunciado a seguir.

(c) Lema (Knuth’) Seja ¢ = min( vob q=q-1.

,b—1).

Entaéo g = q ou

(d) Em outras palavras, no mdximo duas tentativas sao suficientes para a determinacao do valor correto de gq.

(e) No exemplo 77/8: ¢ = min( | eee | ,10 —1) = 9. E no exemplo 54/8, ¢= min(| 2+ | , 10-1) =6. (f) Implementar o algoritmo de divisao de u > 0 de n+ ™m por v > 0 de n algarismos.

algarismos

4. O protocolo MTI (Matsumoto, T., Takashima, Y., and Imai, H.: On seeking smart public-key distribution systems, The Transaction of the IEICE, E69, 1986, 99-106, Japan) de combinagao de uma chave secreta entre Alice e Beto é como segue, e tem como premissas os seguintes itens: (a) p € um inteiro primo longo, e 4, possui um elemento primitivo (gerador) g. p e g sao para todos os usuarios. *Pdgs. 235-237 do vol. Edit. Addison-Wesley.

2 do livro The Art of Computer Programming

(D. E. Knuth),

180

CAPITULO

4.

CRIPTOGRAFIA

DE CHAVE PUBLICA

(b) Cada usuario como Alice possui uma chave (S4,t4) : t4 = g°4(mod p), S4 é particular, p, g,t4 sao publicos.

(c) Cada usuario Alice possui um certificado cert, = (I4,t4, Ar(a, ta)), onde Ap é a assinatura da autoridade idénea T, verificdvel publicamente, J, é a identidade de Alice. O protocolo MTT é como segue:

(a) Alice escolhe r4 aleatério tal que 0 < ra < p-— 2, ua = g’4modp

e calcula:

(b) Alice envia (cert,4,u,) para Beto (c) Beto escolhe rg aleatério tal que 0 < rg up = g"2 modp

< p-—

2, e calcula:

(d) Beto envia (certg,ug) para usuario Alice (e) Alice calcula K = (ug)°4(tg)"4 mod p, onde o valor tg é obtido de certp

(f) Beto calcula K = (u,)°8(t4)" mod p, onde o valor t4 é obtido de cert 4 Este exercicio consiste em:

1. Provar que de fato a chave K calculada nos dois passos finais do protocolo 6 o mesmo valor para Alice e Beto. 2. Justificar porque o protocolo garante 4 Alice que a chave K a ser usada com Beto é auténtica, e vice-versa (isto é, justificar porque o protocolo

garante a Beto que a chave K a ser usada com Alice é auténtica).

3. Analisar e justificar a inviabilidade de um Intruso I utilizar o seu certificado cert;, os seus valores (.S7,t;) e as mensagens entre Alice e Beto

para personificar Alice perante Beto (ou vice-versa).

Capitulo 5 Autenticacao e identificacao Nao podemos nos aliar a principes vizinhos antes de conhecermos as suas verdadeiras intencdes. Sun Tsu -The Art of War Neste capitulo os algoritmos objetivam a identificacao de informacao, como, por exemplo, uma senha. Aqui os algoritmos permitem resolver os problemas seguintes: 1. Ataque por replay: timas

o criptanalista Carlos grava as comunicacoes legi-

entre Alice e Beto,

e depois

usa parte da gravacao

para o seu

proveito. Se a parte da gravacao usada nao é alterada este ataque é chamado passivo; caso contrario, 6 chamado ativo.

2. Personificacao: o criptanalista Carlos simula um outro usuario legitimo. Por exemplo, toma o lugar da Alice sem o Beto notar qualquer diferenca. 3. Um mal-intencionado /é e altera parte da informacao transitando na linha de comunicacao antes de chegar ao Beto, ou seja, Beto gostaria de detectar se alguma alteracao parcial foi feita na linha — isto é chamado de deteccao de integridade de informacao. Computador da Alice

Mal-intencionado

(origem)

+ Computador X (provedar)

Computador do Beto

A

(destino)



grava ¥

linha de comunica¢ao

181

? »

Computador Y (provedar)

182

CAPITULO 5. AUTENTICACAO E IDENTIFICACAO

5.1

Jogo de cara-e-coroa por telefone

Vamos ver a seguir como Alice e Beto podem jogar cara-e-coroa por telefone! (Blum, M.: Three applications of the oblivious transfer, Dept. of EECS

Tech. Rept., Univ. of California-Berkeley, Calif. 1981) E dificil 4 primeira

vista acreditar que Alice e Beto estando ao telefone, Alice escolhe cara, Beto joga a moeda e diz “Deu coroa, vocé perdeu Alice” e Alice aceita que tenha perdido. Por incrivel que pareca, vamos ver um protocolo (7.e., um tipo de didlogo) entre Alice e Beto pelo qual isso pode ser feito. 1. Alice escolhe dois primos relativamente longos p,q tais que 4|p + 1 e 4|q +1

e envia para Beto o produto n = pq.

2. Beto verifica se n é primo, ou é poténcia de primo, ou é par. Se for, Alice perde o jogo, pois nao seguiu as regras (como exercicio, o leitor pode provar que se uma das trés condicoes ocorrer Alice sempre ganharia o jogo). 3.

Beto

escolhe

um

x:

0
k = 2

x 365 Ini

= 22.49).

Para e = 3/4 > k = 31.81, ou seja, o tamanho

minimo é 32 para chance 75%. de k = ,/2nIn cS

Veja a Figura 7.2 na pagina 218 ilustrativa

a seguir, para k em funcao de n; o grafico para ¢ = 1/2 é

representado pela linha de baixo, e para ¢ = 3/4, pela linha de cima. Considerando de novo a probabilidade de colisao, tem-se a Figura 7.3 na pagina 218 o grafico, para « = 1/2, de n no eixo vertical em funcao de k no

eixo horizontal (k = 1.1774,/n => n = k?/1. 3863).

O Paradoxo de Aniversario fornece uma estimativa do comprimento mi-

nimo aceitdvel da imagem de E().

Se o comprimento da funcao E() for 40

bits, entao ela é considerada inaceitavel para aplicacoes pois uma colisao pode

7.2.

ATAQUE PELO PARADOXO DE ANIVERSARIO

219

30000; 25000; 20000; 15000; 100005000+

00

50

1 00

150

200

Figura” 7.3: n = k*/1.3863,¢ = 1/2 ser encontrada com probabilidade 1/2 com apenas 1.1774V 240 = 1.2346 x 10° (cerca de um milhao) de célculos de E(x) com x sorteado aleatoriamente.

Com 128 bits, tem-se 1.1774 2!28 = 2.1719 x 101%, e por isso aceita-se tal comprimento como sendo resistente a colisoes. Recomenda-se no minimo 160 bits, pois 1.1774V/2169 = 1. 4234 x 10%.

7.2.2

Algoritmo

de Ataque

pela Raiz

Quadrada

G. Yuval projetou um algoritmo baseado no Paradoxo de Aniversdério (no artigo G. Yuval: How to swindle Rabin, Cryptologia, 3 (1979), pp 187-190.) chamado Ataque pela Raiz Quadrada, um dos mais conhecidos contra funcao espalhamento.. Dada uma funcao E(x), seja m o comprimento da sua imagem. Este Algoritmo, como veremos a seguir, possui complexidade de tempo O(2™/2), Supde-se que uma mensagem de entrada zx, legitima seja conhecida, e uma outra mensagem fraudulenta x2 é elaborada por um mal-intencionado. O Algoritmo efetua pequenas modificacoes em x, € em Xz, resultando respec-

tivamente x/ e x} tais que E(x) = E(a5).

Algoritmo de Ataque pela Raiz Quadrada (G. Yuval) Entrada: mensagens 2), legitima, e x2 fraudulenta; funcao E() tal que

JEQ| =m.

Saida: x/, x, resultantes de modificagdes pequenas em 21, X2 tais que E(x) = 1. Gerar t = 2""/? mensagens 2’, resultantes de modificacdes pequenas em

220

CAPITULO 7. FUNCOES ESPALHAMENTO I}.

2. Aplicar E() e armazenar (em alguma tabela) os t valores E(x‘) junto com os correspondentes valores x|. Esta tabela é construida em tempo total O(t). 3. Gerar mensagens x5 resultantes de modificagoes pequenas em x2. Para cada x4, gerada calcular E(x) e verificar se, para algum x, na tabela anterior, E(x) = E(«5); cada consulta aquela tabela custa tempo constante. Pelo Paradoxo de Aniversario, apdés t geracoes de mensagens x, e consultas, com probabilidade 1/2, encontraremos tal colisao.

Este Algoritmo

é utilizdvel no cendrio seguinte:

um

mal-intencionado

Carlos entrega a mensagem x} € asua assinatura A(y) sobre o valor E(x) = y

a uma pessoa, Alice, que nao suspeita de nada.

Mais tarde Carlos anexa a

assinatura A(y) a x} e diz falsamente a Alice que ele entregou 75. Outro

cendrio:

previamente

uma

um

verificador de assinatura desonesto

mensagem

x;

e convence

uma

pessoa,

Carlos prepara Alice,

a assinar

E(2,) = y. Mais tarde Carlos afirma falsamente que Alice assinou E(x5) = y. Para remover a necessidade da ordem de t = 2”/? memérias para a tabela de mensagens x; um sorteio deterministico pseudo-aleatério com distribuigao

uniforme sobre o espaco de 2” valores de E() pode ser utilizado. Pelo Para-

doxo de Aniversdrio, uma, colisao pode ser encontrada apés O(2"/7) sorteios, apos o que, 0 sorteio sendo deterministico, a sequéncia de sorteios sera repetida.

7.3

Little-endian e big-endian

A seguir vamos definir dois conceitos usados no resto deste capitulo: Izttleendian e big-endian. Dada uma seqiiéncia, por exemplo, de 4 bytes de 8 bits — B,, Bo, Bz, By, cada byte ocupando enderecos em ordem crescente, e em computadores little-endian o valor inteiro associado a esta seqtiéncia

é 24 B, 4+ 2'°B; + 2° Bo + By,

e enquanto em

big-endian o valor é 274 B, + 2'° By + 2°Bs + Ba.

7.4.

ALGORITMO

7.4

MD4

221

Algoritmo MD4

MD4 foi originalmente projetado por Ron Rivest para um computador little-

endian. Colis6es podem ser encontradas apoés 27° aplicacdes de MD4.

(Rivest,

R.: The MDZ message digest algorithm, Proceedings of CRYPTO’90, Lecture Notes in Computer Science 537, 303-311, 1991.) A seqiiéncia de entrada para MD4 deve ser de comprimento miultiplo de 512 bits, e a saida é de 128 bits. Se a entrada nao for de 512 bits, ela deve ser complementada por um bit igual a 1 seguido de um numero suficiente de bits iguais a 0 para que o total de bits seja 64 bits menor que o préximo multiplo de 512. Nos ultimos 64 bits, deve ser armazenado o comprimento da entrada original, como ilustrado a seguir.

seqtiéncia de entrada de C’ bits | bit 1 seguido de zeros 1O010111101...01100010101011 1000...000

64 bits comprimento original C’

A entrada para MD4 é dividida em blocos de 512 bits (16 segmentos de 32 bits). A saida é de 128 bits (4 segmentos de 32 bits). Cada passo de MD4 modifica os quatro segmentos de 32 bits do, d1, do, d3 usando os 16 segmentos mg, 7™1, M2, M3, ...M14,7™M15 de um bloco de 512 bits.

Antes do primeiro passo, sao definidos (em base 16), na notacao big-endian, do

=

(67452301

)i6, di

=

( fecdab89)i6,

de

=

(98bacdf e)16,

d3

=

(10325476) i6.

Depois de todos os blocos de 512 bits serem usados, o valor final dos quatro segmentos de 32 bits do, d,, do, dz é a saida de 128 bits. 128 bits

blocos de 512 bits

do, di, dz,d3 |

{

3 Passos

{

do, d1,dg,d3 |

{

3 Passos

{

saida

| —

9,71, 12, 13,

...714, 715

0, com valores

reais f(n) > 0 para infinitos n (7.e., existe N tal que f(n) > 0 para todo n>wN). Escrevemos f(n) = O(g(n)) se existe uma constante c > 0 e um inteiro no tais que 0 < f(n) < cg(n) para todo n > no. Ou seja, para n suficientemente

grande, f(n) nao cresce mais que g(n), a menos de um fator constante. Por

exemplo: 12n? +300n+21000 = O(n?) e 300e2"F° + e” +4 4. 1? Escrevemos f(n) = inteiro ng > 0 tal que 0 suficientemente grande, um fator constante. Em particular f(n) infinito.

B.5

= O(e2”*°),

o(g(n)) se para qualquer constante c > 0 existe um < f(n) < cg(n) para todo n > ng. Ou seja, para n f(n) é insignificante em relacao a g(n), a menos de = o(1) quando f(n) tende a zero quando n tende a

Complexidade

de algoritmo

Seja nm o comprimento dos dados de entrada para um algoritmo A. Um algoritmo A é de tempo polinomial se a fungao f(n) do tempo

execucao no pior caso de A é tal que f(n) = O(n") para uma constante k.

de

Um algoritmo A é de tempo exponencial se nao existe constante k tal que

f(n) = O(n").

Ha um consenso de que algoritmos de tempo

cionalmente

polinomial sao computa-

eficientes (ou vidveis ou faceis), e os algoritmos de tempo expo-

nencial sao computacionalmente ineficientes (ou invidveis ou diftceis). Diz-se

240

APENDICE B.

CONCEITOS FUNDAMENTAIS

que um problema é computacionalmente invidvel ou dificil se nao se conhece qualquer algoritmo de tempo polinomial para resolvé-lo.

Apéndice

C

Elementos

de

Teoria

dos

Ntmeros The integer 2 is the only even prime, but it’s an odd fact. Don E. Knuth O objetivo deste Apéndice é fornecer elementos para compreender os algoritmos criptograficos baseados em problemas aparentemente dificeis, como o RSA

C.1

ou o DSS.

Resto

de divisao

e médulo

Se a em sao inteiros, e m > 0, resto de a dividido por m é 0 menor inteiro r > 0 que difere de a por um miultiplo de m. E.g., 7,17, e —3 possuem resto 7 quando divididos por 10. Escrevemos: a@ = q¢ xX m+rea = rmodm (o inteiro q é chamado quociente). E.g., 7=0x 104+ 7,7=1x 10+7,-3 = —1 x 10+7. Em aritmética modular diz-se que a e b sao equivalentes méddulo m se ae b diferem por um miultiplo de m, 1.e., se a e b possuem o mesmo resto quando divididos por m. E.g., 7,17, —3 sao equivalentes mod 10. Escrevemos a = bmod™m. Observe que existem apenas m inteiros que nao sao equivalentes mod ™m™,

pois o resto da divisao por m é tal queO 2 Para k > 2 tem-se m),™M2,...™m, r.p. n2zmodmz,...N

=n,modme,.

Seja M

entre si, e N = ny modm,,N

=m,

X mg X ... Mz.

k

k

j=l

j=l

M, = ([[™,;)/ma,... Mx = ([ [ m3) /me

Sejam:

=

C.8.

RAIZES QUADRADAS DE 1MOD N

249

Note que cada mj ér.p. ao correspondente M;. Logo, pelo Algoritmo de Euclides estendido calculamos os tinicos inteiros: Ul = M;* modmy, ... ug = M,," mod m, O Teorema Chinés do Resto nos da:

k

N= S- n;M;u; mod M

(C.8)

j=l

Vamos verificar C.8. Para cada t = 1,2,...k tem-se:

N mod m

k k = (>: n; M;u; mod u) mod m, = Sn; Mju; modm j=l

j=l

Considerando cada termo da somatoria, tem-se: _ J Osezg At, pois M;modm, nj Mju; mod m, = mu:Myu,modm: se7 =t Portanto, como uz = M;" modm,,

C.7.1

Aplicagao do TCR

tem-se N mod 7m

= 0

= n; mod ™.

em implementacao

do RSA

Como os primos no mdédulo n = qr para o RSA sao de comprimento aproximadamente metade do comprimento de n (para dificultar a fatoragao de n) é mais rapido calcular-se a exponenciacao x? mod gq e x? mod r e depois aplicar TCR para calcular 2? mod n.

C.8

Raizes quadradas

de 1 modn

O TCR é util para explicar porque 1 possui mais de duas raizes quadradas modn, quando n possui dois fatores r.p. maiores que 2. Mais adiante veremos quantas raizes quadradas existem para inteiros diferentes de 1. Suponha n = qr,q > 2,r > 2 e mdc(q,r) = 1. Tem-se: 1modn = lmodgelmodn=1modr. Ademais, —1modn = —1modgq e —Imodn = —lmodr. —1e1 sao raizes quadradas de 1 modn. No entanto, considere o numero x tal que x = —l1modgq ex = 1modr. Pelo TCR nao podem existir dois valores x distintos da forma (—1mod4q,

200

APENDICE

l1modr)

C.

ELEMENTOS

iguais a um mesmo

DE TEORIA DOS NUMEROS

valor mod(qr).

1modn ede —1 modn.

Portanto,

x é diferente de

Além disso:

z*modgq z*modr —1.

Logo, z* = 1modn,

= =

(—1)(—1)modq=1modgq (1)(1)modr=1modr 1

2.e., x 6 raiz quadrada de 1 mod n diferente de 1 e de

Analogamente, considerando y tal que y = obtém-se uma quarta raiz quadrada mod n.

lmodg

e y =

—I1modr,

Genericamente, se n possui k fatores r.p. entre si maiores que 2, 1 possui

pelo menos 2” raizes quadradas: —1 mod cada fator. Mais genericamente:

é s6 considerar todas as combinacoes de 1 e

= py Pa - + «Di 1

2

onde os p; sao primos distintos e os a; > 0, entao 1 possuli: 1. 2* raizes quadradas se ap < 1

2. 2**1 raizes quadradas se ay = 2 3. 2"*2 raizes quadradas se ap > 3

C.9

Ze

Z,

re} WD] NI} ©]

NIN CO} Ol] rR |

~J| FR] CO] Co] Co

J] CO] Re] Fe CO]

ON

WE

O conjunto de todos os inteiros é chamado Z. O conjunto dos inteiros mod n é chamado Z,. E.g, Z19 = {0,1,...9}. O conjunto dos inteiros modn que sao relativamente primos a n é chamado Z*. E.g.. Zj) = {1,3,7,9}. Note que 0 € Z7j,, pois mdc(0, 10) = 10. A tabela de multiplicagao para Zj, é:

C.10.

FUNCAO ® DE EULER

251

FE; interessante notar que

1. sé os inteiros em Zj, ocorrem nesta tabela.

2. em cada linha (ou coluna) cada elemento de Zj, ocorre uma e uma sé

vez.

A seguir vemos que esses fatos ocorrem com qualquer valor de n. Teorema

Z; é fechado sob multiplicagao modn

(C.9)

Demonstracao Basta provarmos que se a,b ocorrem em Z;*, entao (ab)modn também ocorre. Pelo Lema C.1 sabemos que mdc(s,t) = 1 se e sé se existem u,v tais que us + vt = 1. Como a,b ocorrem em Z*, existemM Ua, Va, Us, Vs tais que Uga + Ugn

upbtun

1

=

1

Multiplicando estas duas igualdades entre si:

(Ugtp)ab + (ugupa + Uguyd + Ugupn)n = 1 e portanto, ab ocorre em Z7.U

C.10

Funcao

© de Euler

@(n) simboliza o nimero de elementos em Z*, também chamado ordem de Z*. E.g., ®(10) = 4, pois Z{, = {1,3, 7, 9}. Se n for primo, ®(n) = n — 1, pois Z* = {1,2,3,...n— 1}.

Se n = p* com a > Oe p—p primo, sé os miltiplos de p em Z,, nado sao relativamente primos a n. Esses multiplos ocorrem a cada disténcia de p numeros

em

Z,:

p,2p,...p%~*p,...(p*-!

p*—! desses que sao menores 6(37) = 37-3! =6.

que p*.

— 1)p, p*!p

Assim,

®(p%)

= p*

=

0, e existem

= p* — p*!.

E.g.,

A seguir vamos examinar 0 caso n = qr onde q,r sao relativamente primos,

utilizando o ‘Teorema Chinés do Resto — ‘TCR.

202

APENDICE

C.

ELEMENTOS

DE TEORIA DOS NUMEROS

Como ja visto, o TCR estabelece uma relacao bijetora entre cada nimero

N em Zj, € um par de ntimeros (n,,n,) em Z, x Z, tais que Nmodq nq, Nmodr = nr

=

Lema

N érelativamente primo a qr see sdsen,

ér.p.

agen,

rp.

Demonstracao

ar

(C.10)

[Parte =>|

Se N € Z,, ér.p. a qr, entao existem inteiros u,v tais que uN +vqr=1 Substituindo N = n, + kq para algum inteiro k,

Ung + (uk + vr)q=1 1.€., Nq © G SAO Ip. Analogamente prova-se que n, €r.p. ar.

[Parte 0):

(n) =n(1-=) (.-—)...(0- 1. Em particular, se p ¢ um primo, Z} possui ®(p — 1) geradores.

2. seg € Z* éum gerador, g’ modn também é um gerador de Z* se e 86

se mdc(j, ®(n)) = 1. Portanto, deduz-se que se Z* for ciclico entao o ntiimero de geradores é ®(®(n)).

204

APENDICE

C.

ELEMENTOS

DE TEORIA DOS NUMEROS

3. Seg € Z* é um gerador, Z* = {g/ modn: 0 < j < ®(n) — 1}. 4. g € Z* é um gerador se e 86 se g®\”)/P

divisor de ®(n).

E.g., Z{, € ciclico e possui um gerador:

#4 1modn

g = 3. ®(14) = 6(2)®(7) = 6,

e 3°mod14 = 243mod14 = 5, 3°mod14 = 1. gerador: 5° mod 14 = 1.

C.12

Residuo

quadratico

para cada primo p

mdc(5,®(14)) =1e5 é

modn

Sejaa € Z*. aé um restduo quadraético médulo n (ou um quadrado médulo n) se existir um x € Z* tal que x? = amodn. Se tal x nao existir, diz-se que a éum nao-restduo quadraético médulo n. O conjunto de todos os residuos quadraticos médulo n é Q,, e o de nao-residuos quadraticos é Q,,. Observe que como 0 ¢ Z*,0¢ Q,,0€¢ Q,, Seja g € Z> um gerador de Z> no caso particular de p ser um primo timpar. Neste caso, a € 4) é um residuo quadratico se e sé se a = g' modp

para um i inteiro par.

Portanto, |Q,| = (p — 1)/2 e |Q,| = (p — 1)/2.

exemplo sendo g = 2 um gerador de Z],, tem-se:

Por

1 O/1/2/3/4] 5 16/7/1819 2? mod11/1/2/4!8/51/1019!1713/6

Portanto, Qi, = {1,3,4,5,9}e Q,, = {2,6, 7,8, 10}.

Se n = qr onde ger sao dois primos émpares distintos, entao a € Z* € um residuo quadratico mddulo n se e s6 sea € G, ea € G,. Logo, deduz-se que

Qnl = |Qql « @rl = (G— Dlr -1)/4e [Q,] = 3(¢— 1) (7 1)/4. Por exemplo

paran = 3x5

= 15, Q3 = {1} e Q, = {2}, e Qs = {1,4} e Qs = {2,3}.

Qis = {1,4} . Q1s = {2,7,8,11, 13,14}. Verifique pela tabela a seguir. x 1}; 213 4 x7mod3/}1/1!0|]1=4mod3/|

x 1;2/}3)4)]5 27mod5/1/4/4/1/0/)1

Sejaa € Qn. Sex € Z* satisfaz x* = amod n, diz-se que x é raiz quadrada de a mdédulo n. Por exemplo, se n = 15 tem-se a tabela a seguir: x 1)/2;3);4] 5/6]7/8/9] 10) 11} 12) 13} 14 v=amod15/}1/4/9|1/10/6/4/4/6/10}1;,9|4/ 1

C.13.

SIMBOLO DE LEGENDRE

255

Quanto ao nimero de raizes quadradas, tem-se: 1. Sep éum primo #mpar ea € Q,, entao a possui exatamente duas raizes quadradas médulo p. 2. Sen = pi'ps”...p,* onde os p; sao primos impares distintos e cada a; > 0 ese a € Qn, entao a possui exatamente 2” raizes quadradas distintas mdédulo n. Por

exemplo,

as duas

raizes quadradas

de 5 mddulo

41

sao 28 e 13

(28° mod 41 = 5 e 13?mod41 = 5). E as rafzes quadradas de 16 méddulo

21=3x

7 sao: 4,10,11 e 17, conforme a tabela a seguir.

17 mod 21 =1

5?mod21=4]

27 mod 21 = 4

37? mod21=9)]

6?mod21 = 15

7? mod 21 = 7

4?mod21

= 16

8* mod 21 = 1

97 mod 21 = 18 | 10? mod 21 = 16 | 117 mod 21 = 16 | 12? mod 21 = 18 13*mod21=1)] 147mod21=7] 157mod21=15]| 16?mod21=4 177 mod21 =16] 18?mod21=9] 197mod21=4)] 20?mod21=1

C.13

Simbolo de Legendre

Este simbolo foi definido por Adrien-Marie Legendre, 1752-1833. Seja p um

inteiro primo

fmpar, e seja @, o conjunto dos inteiros a € Z

que sao residuos quadraticos mod p, isto é, existe um inteiro x € Z> tal que

z* = amodp. (2)

= 4

O simbolo

Simbolo de Legendre é por definicao: 0 se pla (i.e., mdc(p, a) # 1) lseae€Q, —lsea€Q, (2)a

possui as seguintes propriedades, supondo p > 2 ser um

inteiro primo fmpar, e a,b € Z:

1. (Critério de Euler) | se mdc(a,p) = 1: (2)P Por exemplo,

Aut 1)/? modll

=

le4€

= a'-Y/2 modp Qy;

e 7 Y/?

mod 11

Em particular (3) =le (=) = (-1)®-/2, Portanto Pp —l1E€Q, sep=1mod4e

—1€Q,

se p=3mod 4.

=

296

APENDICE

2.

(*) = (2 ) t ) “p

p

C.

ELEMENTOS

pois ()

DE TEORIA

DOS NUMEROS

= (ab)®-Y/? modp = a®-Y/2p"-D/2 modp =

. Por exemplo (=) = (4) (4) =1(-1) =-1 11 11

Portanto, se mdc(a,p) = 1: @

—le

Pp

3. se a = bmodp,

entao

(2)

Pp

= (2) Pp

( 2 primos distintos, entao

(2) _ @ (—1)?-De@-)/4 Ou seja: - (2)

(3q )=



sep =

3mod4e

q=

3 mod 4

caso contrario

Por exemplo (4) = — (4) =—(-1) =1.

C.14

Simbolo

de Jacobi

Este simbolo foi definido por Karl Gustav Jacob Jacobi, 1804 - 1851. O Simbolo de Jacobi é uma generalizacao do Simbolo de Legendre para um méddulo fmpar, nao necessariamente primo.

Sejaa € Z, esejan > 0 um inteiro émpar com fatoracao n = py" ps”... p,* onde os p; > 3 sao primos tmpares distintos e cada a; > 0. O Simbolo de Jacobi é por definicao:

C.14.

SIMBOLO DE JACOBI 1

257

3|g

OQ]

a2

Ak

|

)

Ve

Ia

(2) = (2)" (2)... (2) sen > 1 tmpar

(

Pl

P2

Pk

No caso particular n = pq onde p e q sao dois primos impares distintos,

(im) = (6) @) jet

Para inteiros {mpares m > 3,n > 3ea,6 € Z, 0 Simbolo de Jacobi possui as seguintes propriedades: . Pela definicao:

(2) =le

(2) =(QsenF-l.

2. Pela definicao: | (¢) = 0,1, ou —1 | Ademais

(=) =0 pois mdc(a,n) Legendre >

= p41

>

© (s)

mdc(a,n) #1 = 0 pela definicao de Simbolo

de

2) = 0.

3. | (2) = (=) (2) | . Esta propriedade é conseqtiéncia da Propriedade 2.

Portanto se a € Z* (como (£) # 0), entao (=) = 1.

4. | (sa) = Ga) G) | 5. sea = bmodn, entao | da Propriedade 3.

MN

6.|

( a | = (2)

| . Esta propriedade é conseqiiéncia

(4)=1

(1) = (-1)®-Y? | Logo (=)

—l|1sen=lmod4e

1

(=) Tv

=

—|

sen=3mod4.

8. (2) = (DV | Logo @

2 (=) n

—1sen=1mod8

oun

= 7mod8.

= —] seen = 3mod8 oun = dmods8.

298

APENDICE

C.

ELEMENTOS

DE TEORIA

DOS NUMEROS

9. (Reciprocidade) Se mdc(m,n)= 1 em > 2,n > 2 sao inteiros impares, entaéo| (2)= (F) (= 1)("-De—D/4 | Ou seja: —(#)

(7) =

sen =3mod4em=3mod4

2 | caso contrario (i.e., m = 1mod4 ou n = 1 mod 4) m7

Coroldrio mdc(a,n) =1=> 2

n

2

n

n

n

pelas Propriedades 3 e 4

Coroldrio mdc(a,n) =1=> ab)Tt a

— (2) pelo Corolario C.14 e pela Propriedade 3 = (£)a pelo Coroldrio C.14 e pela Propriedade 4

(C.14)

Corolario Seja a = 2°n’ com e > 0 e n’impar, e seja a’ = nmodn’ (i.e., n= qn' +a’ para algum inteiro g > 0). O Simbolo de Jacobi é dado por:

(*) = (
a nao possui raiz quadrada mod q (analogamente para mod7r).

264

APENDICE

C.

ELEMENTOS

DE TEORIA DOS NUMEROS

A seguir, pelo Teorema Chinés do Resto calcula-se x19 solucao do sistema: Lo = X1modq Lo = L2modr que é:

to = (x2qq~* + ayrr~*) mod gr

onde gq’! e r~

tais que:

sao calculaveis pelo Algoritmo de Euclides estendido, e sao =

qq” ~1 = 1modr

a

q+rroal=

rr-+ = 1modq

Este x9 calculado é tal que:

t,modg v,modr

= =

x%(rr~')*modq = 2; modq = amodgq 25(qq~')*modr = 23 modr = amodr

Portanto, pelo Lema a seguir tem-se que x74 mod gr = amod qr ou seja Xo é uma das quatro raizes quadradas de amod qr. As outras trés raizes sao: t=

(x2qq-' — 2yrr~*) mod ar, (qr — 2), (qr — Lo)

Lema 2 Tr modqr=a e < 7,4,C(“r”) >, ob-

tendo:

.. (elalbfalelal[a [apo [el]:

D.1.

ALGORITMO LZ77 EM PROCESSO DE DESCOMPRESSAO _ 281 O cédigo < 0,0, C(“d”) > é facil de descomprimir obtendo-se “cabracad”:

A seguir a decodificacaéo de < 7,4,C(“r”) >. O valor 7 no triplo diz ao LZ77 “desloque 7 posicoes para a esquerda na Janela de Busca”, e o valor 4 diz “copie 4 caracteres a partir deste ponto” para a saida. Uma ilustracao destes passos est a seguir.

aponta 7 p/ esqu.

feja}b|rjajcjald) copia 1 —

feja}bjrjajcjaldfa| copia 2

{



jejalbirjajcjajdja

l

b|

copia 3

|



}cj|a|b|/rjalcla|dja

|

b

r |

b

r

copia 4

|



l}cja]b]rja|lcjla|dj/a

E depois anexa posicoes.

|

a|

“r” na saida, devido a C( “tr”) e desloca as janelas de cinco

66199

decodifica

lcja|/b]/rjaj;c/a]dja

br

“r”

| afr

A seguir, finalmente LZ77 examinara e descomprimira 0 triplo < 3,5, C(“d”) >

para obtermos a seguinte situacao:

~[aldja}birjalri[rjajrirjal dy...

282 APENDICE D.

ALGORITMO

DE COMPRESSAO

DE DADOS LZ77

aponta 3

|

p/ esq

[.Jaldja|b]rja|r | copia 1 —

}...;a;dja/b]/rja|r{r

|

copia2

{2

4

}../a;d/a|]b]/rjalrjr

a|

copia3 }../a]dfa/b]rja|r

|r

=>

a

r |

copia4 —

}../a{d/a|]b/rjalrjr

ar

r |

copia9

{

7

1

}../a]/dfa/b|/rjalrj/r arr as decodifica

faj/dja|/bjrja/rj/r

D.2

“d”

arra

|

d|

Conclusoes

LZ77 é um algoritmo simples do tipo adaptativo, pois adapta-se as seqiiénclas que vao sendo processadas, sem qualquer hipdtese necessdria sobre a freqiiéncia de cada caractere. Constrdéi um dicionério com as subseqiiéncias da Janela de Busca, 4 medida que a compressao vai sendo efetuada. O leitor pode perceber facilmente que a taxa de compressao é melhor quanto maior for a ocorréncia de padroes iguais préximos entre si. As variacoes do LZ77 consistem em projetar diversas formas eficientes de

se codificar os triplos < d,c,C(s) > que o algoritmo gera.

D.2.

CONCLUSOES

283

1. Uma modificacao é utilizar cédigos de comprimento varidvel para d e c (ao contrario de se utilizar cédigos de comprimento fixo como estaévamos

supondo anteriormente).

2. Uma outra codificacao bem simples objetiva eliminar a necessidade de se usar um triplo da forma < 0,0,C(s) > para representar apenas um caractere: o uso de um triplo é muito ineficiente especialmente se um grande ntimero de caracteres ocorre infreqiientemente (por qué?). A modificagao para se evitar tal ineficiéncia é a simples inclusao de um “flag” ~ que sé pode ser verdadeiro ou falso. A inclusao de f torna desnecessério o terceiro elemento de cada triplo: o algoritmo

passa a gerar ou < f = falso,d,c > ou < f = verdadeiro,C(s) >. Esta modificacéo do LZ77 é conhecida por LZSS (J.A. Storer and T.G.

Syzmanski: Data compression via textual substitution, Journal of the ACM, 29:928-951, 1982).

Apéndice Pretty

E

Good Privacy —

PGP

O software PGP de Phil Zimmermann é um freeware que pode ser obtido pela Internet no endereco www.pgp.com. Veja Figura E.1. PGP

criptografa mensagens para e-mail ou arquivos extensos utilizando

AES (ou IDEA), e ECC (ou RSA). Utiliza também o algoritmo MD5 como funcao espalhamento. (hashing).

Quando um usuario executa PGP pela primeira vez, PGP gera nimeros primos pseudo-aleatérios, e um par de chaves ECC, uma ptblica e outra particular e secreta. Os primos sao derivados medindo-se os intervalos de tempo que o usudrio gasta para digitar a tecla de espaco consecutivamente. A chave particular 6 armazenada em diretério especial, de forma protegida. A chave publica é guardada em outro diretério, sem necessidade de ser protegido, junto com as chaves publicas de outras pessoas — e constitui um

chaveiro (key ring).

Toda vez que o usuario, digamos Alice, solicita que um arquivo X seja criptografado para ser enviado para Beto, o PGP efetua os seguintes passos: 1. gera uma chave K pseudo-aleatéria para AES (ou IDEA), chave voldtil, que é descartada depois desta utilizacao;

chamada

2. criptografa o arquivo X com AES (ou IDEA) e chave K obtendo Y; 3. com a chave ptiblica do Beto que é encontrado no chaveiro da Alice, PGP criptograta K obtendo L;

4. anexa L a Y obtendo o par (Y, L). 289

286

APENDICE E.

PRETTY GOOD PRIVACY — PGP

P Corporatic File

Edit

View

=]

History

Bookmarks

- ie

fit

Tools

E

Help

htto: /iwwew.pap,com/

|e

-

Boa

j

» United States

Products | Purchase | Downloads | Support | Partners| Newsroom | Company | Careers | Contact ©) | enter search term

| |

Rest Secured.

Deploy the leading enterprise-wide security platform on the market.

Security that meets your expectations at a price that meets your needs.

Complete encryption security in three easy steps.

Success Stories

©

PARTNERS How to Buy

©

Ensure end-to-end security

Quickly and cost-effectively

Cornmunicate securely with

NEWS

shared with partners,

protection. Add encryption to

partners.

for messages and data

deploy company-wide email

remote offices, and users with mobile devices.

automated processes.

clients and business

>» PGP Vhole Disk Enoryptian

Protect confidential

Solution for Laptops,

data fram theft

©

Desktops, and Removable Media Earns Straight As in ©

Ly

Product Review trom Government Computer News

i

‘ Shop

+ SIRVA Deploys PGP Now.

Save Now.

Individual

es

:

Pe

iA teriies tee eee

Encryption Plattorn to eet mls.)

Diesmoune

(wl

Safeguard Customer and

Figura’ E.1: PGP — Pretty Good Privacy

XY —+ IDEA} + Y volétil K ——> RSA

—>+

|

4

Chave publica

do

Beto

Alice Figura’ E.2: Calculo pelo PGP com chave volatil K e chave publica

287 Inv | IDEA

y —>

L



mv

|

RSA

Chave

,

particular

do

Kv

Beto

Beto Figura’ E.3:

Calculo pelo PGP apos receber L e Y

Apos receber (Y, LZ), o PGP passos:

no computador do Beto efetua os seguintes

1. decriptografa L com a chave particular do Beto obtendo K; 2. com o inverso do AES Quando

(ou IDEA) e K,

Alice solicita ao PGP

decriptografa Y obtendo X.

assinar um arquivo ou mensagem

seguintes passos sao efetuados (Figura E.4 na pagina 288):

2, Os

1. MD5 é aplicado sobre x obtendo-se y de 128 bits; 2. RSA com a chave particular da Alice é aplicada sobre y obtendo-se a assinatura a;

3. a assinatura a e y sao anexados a «x. Qualquer usuario como Beto pode verificar a assinatura a da Alice sobre x solicitando ao PGP efetuar os seguintes passos (Figura E.5 na pagina 289): 1. MD5 é aplicado sobre x obtendo-se y de 128 bits; 2. o inverso do RSA com a chave ptiblica da Alice, guardada no chaveiro do Beto, é aplicado sobre a assinatura a obtendo-se um valor y’ de 128 bits; 3. se y’ for igual a y entao a assinatura a é auténtica; senao, nao é. Note que a chave particular da Alice nao é necessdria para esta verificacao.

288

APENDICE E.

PRETTY GOOD PRIVACY — PGP

Sao Paulo, 99/12/2999. Prezado Sr. Silva

X

Conforme ... autorizo o

pagamento de 10 milhoes de reais ... Cordialmente, Alice Cabral

Passo 1 M D5( x) _

y

768AB84D5CC823ABEF13A3219EF7715F __]

Criagao da assinatura

_

Passo 2

coma chave particular RSAs, y )=a particular da Alice A21B44E75631BBF1793279B467C7BAF1

Assinatura criptografica a da Alice (128 bits) Figura’ E.4: Criacao de uma assinatura.

289

Sao Paulo, 99/12/2999. Prezado Sr. Silva

X

Conforme ... autorizo o

pagamento de 10 milhoes de reais ...

Passo 1

Cordialmente,

M D5 x) =y

Alice Cabral

768AB84D5CC823ABEF13A3219EF7715F __]

Verificagao da assi-

natura sema chave

particular s da Alice.

|

Passo 2

RSA D; a) =y

péachave

particular da Alice

A21B44E75631 BBF1793279B467C7BAF1

Assinatura criptografica a da Alice (128 bits) Figura’ E.5: Verificagao de uma assinatura.

Apéndice

F

Transport Layer Socket — (SSL)

TLS

Uma colecao de algoritmos chamada TLS — Transport Layer Socket (anteriomente chamada SSL — Secure Socket Layer) é disponfvel no endereco

developer.netscape.com/docs/manuals/security /sslin/contents.htm.

1. DES. Data Encryption Standard, an encryption algorithm used by the U.S. Government. . DSA. Digital Signature Algorithm, part of the digital authentication standard used by the U.S. Government. . KEA. Key Exchange Algorithm, by the U.S. Government. . MD5.

an algorithm used for key exchange

Message Digest algorithm developed by Rivest.

RC2 and RC4. Security.

Rivest encryption

ciphers developed

for RSA

Data

RSA. A public-key algorithm for both encryption and authentication. Developed by Rivest, Shamir, and Adleman. RSA key exchange. RSA algorithm. . SHA-1.

Secure Hash

A key-exchange algorithm for SSL based on the Algorithm,

Government.

291

a hash function used by the U.S.

292

APENDICE F. TRANSPORT LAYER SOCKET — TLS (SSL) 9. SKIPJACK. A classified symmetric-key algorithm implemented in FORTEZZA - compliant hardware used by the U.S. Government.

10. Triple-DES. DES applied three times.

Apéndice

G

Implementacao JAVA

do RSA

em

O programa a seguir foi elaborado e testado pelo aluno de Iniciacao Cientifica Breno Pompeu Roberto.

/* RSA por Breno Pompeu Roberto Compilar:

*/

% javac RSA.java

Executar: % java RSA

import java.math.BigInteger; import java.util.Random;

class RSA {

private static int KEY LENGTH

[pe

= 128,

* Método principal, responsdvel pelo

* teste do algoritmo.

*/

public static void main(String args||) {

System.out.printlIn(” RSA CRYPTOSYSTEM” );

KeyRSA keys|]; try { keys = RSA.createKeys(KEY LENGTH); System.out.println(” Encript Key=”+keys|0]); System.out.println(” Decript Key=” +keys|1]); Random rd = new Random(System.current TimeMillis() ); EngineRSA eng = EngineRSA.create(keys|0], keys/1]); 293

APENDICE G. IMPLEMENTACAO DO RSA EM JAVA

294

BigInteger t1, t2, t3;

tl = new BigInteger(128, rd); t2 = eng.encript(t1); t3 = eng.decript(t2);

System.out.println(” plain = ”+t1.toString(36)); System.out.println(” cipher = ” +t2.toString(36)); System.out.println(” plain = ”+t3.toString(36)):

}

catch (Exception e) {e.printStackTrace();}

}

private static int CERTAINTY /*

= 100;

* Método responsével pela criacao das chaves.

*/

public static KeyRSA[] createKeys(int bitLength) throws ArithmeticException { BigInteger p , q; BigInteger e , d , n;

// verifica se o bitLength e’ valido // bitLength e’ o tamanho aproximado da chave if (bitLength < 2) throw (new ArithmeticException(” Err: bitLength invalido.” )); // inicializa o gerador de ntimeros aleatérios Random rd;

rd = new Random(System.current TimeMillis());

// encontra trés nimeros primos (p , q , d) diferentes,

// e garante que o maior sera o d. BigInteger t1, t2, t3;

tl = t2 = t3 = while

new BigInteger(bitLength, CERTAINTY, rd); new BigInteger(bitLength, CERTAINTY, rd); new BigInteger(bitLength, CERTAINTY, rd); (true) {

int c12, c13, c23;

c12 = tl.compareTo(t2);

c13 = tl.compareTo(t3);

c23 = t2.compareTo(t3);

if ( c12I=0 && €13!=0 && c23!=0) { if (cl2==1 && cl3==1) {

299 d= tl; p= t2; q = t3;

}

else if (c23==1) {

d= t2;p=tl;q =ts3;

}

else {

d = t3; p= tl; q = t2;

}

break;

}

else if (c12==0 || cl3==0) { tl = new BigInteger(bitLength, CERTAINTY, rd);

j

else { t2 = new BigInteger(bitLength, CERTAINTY, rd);

}

}

// encontra o valor de Phi = (p-1)*(q-1)

BigInteger Phi;

BigInteger unid = new BigInteger(” 1”); Phi = (p.subtract(unid)).multiply(q.subtract(unid)); // calcula o valor de e. e = d.modInverse(Phi); // calculan = p *q n = p.multiply(q); // cria as duas chaves, a de criptografia e a

// de decriptografia KeyRSA keys|] = new KeyRSA[2); keys[0] = KeyRSA.create(e, n); keys[1] = KeyRSA.create(d, n); return keys;

} }

* Classe responsdvel por cripto. e decripto.

class EngineRSA {

private KeyRSA e;

ntimeros.

APENDICE G. IMPLEMENTACAO DO RSA EM JAVA

296

private KeyRSA d;

public static EngineRSA create(KeyRSA e, KeyRSA d) { if (e == null || d == null) return null; return (new EngineRSA(e, d));

j

private EngineRSA(KeyRSA e, KeyRSA d) { this.e = e; this.d = d;

j

BigInteger encript(BigInteger plain) { return plain.modPow(e.getKey() , e.getModulo());

}

BigInteger decript(BigInteger cipher)

return cipher.modPow(d.getKey()

pe

} }

{

, d.getModulo());

* Classe com a responsabilidade de guardar as chaves.

x

/

class KeyRSA { // base em que vao ser impressos os ntimeros. private static int BASE PRINT

= 36;

private BigInteger k; // chave private BigInteger n; // médulo public static KeyRSA create(BigInteger k, BigInteger n) { return (new KeyRSA(k,n));

}

private KeyRSA(BigInteger k, BigInteger n) { this.k = k; this.n = n;

}

public String toString() {

return ”{| ”+k.toString(KeyRSA.BASE PRINT)

+” ][”+n.toString(KeyRSA.BASE PRINT)+”

}

BigInteger getKey() { return k;

}

]}”;

297

BigInteger getModulo() { return

}

n;

Apéndice

H

Padronizacoes de criptografia eletrénica e [ACR Para padroes aprovados pelo IEEE veja o URL:

http : //grouper.ieee.org/groups/1363/tradPK/index.html Para padroes PKCS (Public-Key Cryptography Standard) veja o URL: http : //www.rsa.com/rsalabs/node.asp?id = 2124 Recomendamos a International Association for Cryptologic Research no URL:

http: //www.iacr.org/

para informacoes atualizadas sobre reunioes cientificas internacionais como CRYPTO, EuroCRYPT, AsiaCRYPT, FSE, etc.

299

Indice

Remissivo

AddRoundKey, 102 Adleman, 127 AES, 21, 45, 87 simplificado, 111 AKS Algoritmo de primalidade, 143 algoritmo de exponenciacao modular, 134 exponenciacao, 269 Algoritmo de Euclides, 242 estendido, 244 Algoritmo de Miller e Rabin, 139 Algoritmo de Solovay e Strassen, 142 algoritmo NFS, 130 algoritmo QS, 130 anel, 238 assimétrico, 121 assinatura,

s6 texto legivel, 23 texto ilegivel escolhido, 24 texto legivel conhecido, 23 texto legivel escolhido, 23 ataque adaptativo texto ilegivel escolhido, 24 texto legivel escolhido, 23 ataque side channel, 111 autenticacao da origem, 17, 122, 193 autenticacao do destino, 16, 44, 122 Autoridade Certificadora, 177 base normal, 157 big-endian, 220 célculo de primos longos, 137 cara-e-coroa, 182 caracteristica de GF, 154 CBC, 114 Certificado digital, 176 CFB, 115 chave publica, 121 chave secreta, 43 chaveiro PGP, 285 Cifra de César, 18 colisao, 213 pré-imagem, 215 segunda pré-imagem, 215 complexidade, 239

193

DSS, 206 ElGamal, 203 Feige-Fiat-Shamir, 198 Guillou-Quisquater, 201 RSA, 194 Schnorr, 209 ataque, 20

por por por por

chaves conhecidas, 24 dicionario, 24 personificacao, 24, 181 replay, 24, 181

composicao,

300

28

INDICE REMISSIVO compressao, 277 computacionalmente invidvel, 124 computacionalmente facil, 21 confusao, 31 congruente, 153 corpo, 238 corpo finito de Galois, 152, 267 Counter Mode, 116 criptandlise, 21 ativa, 126 diferencial, 111 linear, 112 tipos, 22 criptanalista, 18 criptografia aberta, 21 chave secreta, 19 criptossistema

aleatdério, 39 curva eliptica algoritmo ElGamal, 166 definicao, 159 duplicacao de um ponto, 161 inverso de um ponto, 159 ponto infinito, 159 pontos gerados, 162 residuo quadratico, 161 soma de dois pontos, 159 curvas elfpticas, 158 DES, 44 decriptografia, 51 esquema geral, 45 funcao de iteracao, 47 geracao de subchaves, 49 inversa, 51

S-boxes, 50

301 tabelas, 53 uma iteracao, 47 dificil, 240 Diffie-Hellman, 125 modificado, 127 difusao, 31 distancia de unicidade, 41 divisao resto de, 241 DSS, 206 ECB, 114 elemento primitivo, 253 ElGamal algoritmo, 148 algoritmo geral, 151 criptografia, 148 decriptografia, 149 demonstracao da inversa, 150 exemplos de grupo, 152 seguranca, 149 sobre Corpo Finito de Galois, 170 sobre curvas elipticas, 166 ENIGMA, 21 entropia, 32, 277 esconder informacao, 16, 44, 122 espa espalhamento, 115, 213 Fuclides, 242 Euler, 251, 262 exponenciacao, 269 fatoracao de n, 264 FEAL, 84 Feige, 183, 198 Feige, Fiat, e Shamir, 183 Fiat, 183, 198

INDICE REMISSIVO

302 frequéncia de letras, 25 funcao de Euler, 251 Galois, 152, 267 gerador, 253 GF, 154 erupo, 237 Guillou, 201 Guillou e Quisquater, 186 hash, 115 hashing, 213 Hellman, 171 HMAC, 213 IDEA, 59 ultima transformacao, 67 dados para teste, 68 decriptografia, 67 geracao de subchaves, 60 iteracao, 62 primeira parte, 63 segunda parte, 64 trés operacoes, 59 IEEE, 176 integridade de informacao, 16, 17, 44, 122, 124, 181, 193 inversa

multiplicativa, 246 inverso em corpo, 104 invidvel, 240 IPES, 59 irredutivel, 154 ITU, 176 Java, 293 jogo de cara-e-coroa, 182 Knapsack, 174

Koblitz, 158 Lempel, 277 Lenstra, 130 little-endian, 220 LUCIFER, 44 LZ77, 277 MAC, 213 man-in-the-middle, 126 Manasse, 130 Massey, J., 69 Matsui, M., 112 MD4, 221 MD5, 224 mdc, 242 Menezes, 167 Merkle, 171 Merkle-Hellman, 171 Message Authentication Code, 213 Message Digest, 213 MH algoritmo, 171 autenticacao, 174 calculo de chaves, 172 criptandlise, 174 criptografia, 172 decriptografia, 172 exemplo, 175 Miller, 139 Miller, V., 158 MixColumns, 98 inversa, 101 mod, 242 modos de operacao, 113 numero

primo, 242 Numeros de Carmichael, 138

INDICE REMISSIVO nao-linear, 94 NIST, 206, 229 NONCE Number used ONCE, NP-completo, 175 NSA, 45

303

148

OFB, 116 one-time-pad, 38 permutacao, 28 personificacao, 24, 181, 184, 188, 192 PGP, 285 assinar, 287 chaveiro, 285 criptografia, 285 decriptografia, 287 verificar assinatura, 287 Pollard, 130 Pomerance, 130 Pretty Good Privacy, 285 Primo Algoritmo AKS, 143 primos longos, 137 Problema da Mochila, 174 Problema do Logaritmo Discreto sobre curvas elfpticas, 165 Problema do logaritmo discreto, 124 Problema do Logaritmo Discreto Geral, 150

produto de dois segmentos, 99 protocolo de combinacao de chave, 125 pseudoprimo, 141 Pseudoprimos, 261 quebra, 20 Quisquater, 201

raizes quadradas de 1 mod n, 249 raizes quadradas mod pq, 263 Rabin, 139 algoritmo de assinatura, 195 algoritmo de criptografia, 145 assinatura falsificdvel, 197 autenticacao, 147 calculo de chaves, 146 criptandlise, 147 criptografia, 146 decriptografia, 146 demonstravelmente seguro, 145 fatoracao em primos, 145 razao verdadeira, 41 RC, 73 algoritmo, 76 dados para teste, 77 decriptografia, 76 geracao de subchaves, 74 operacoes basicas, 73 paradmetros, 73 RC6, 77 algoritmo, 78 dados para teste, 81 decriptografia, 79 geracao de subchaves, 80 operacoes basicas, 77 parametros, 77 redundancia, 40 residuo quadratico, 254 resumo, 213 Rijndael, 88 AddRoundKey, 102 criptandlise, 110 diferencas com o AES, 88 esquema geral, 89 ExpandedKey, 106 geracao de subchaves, 102

INDICE REMISSIVO inversa,

108

MixColumns, 98 ShiftRows, 97 SubBytes, 92 valores de teste, 108 valores de teste para subchaves, 107 Rivest, 73, 127, 221, 224 RSA, 127 assinatura,

194

Ataque pelo expoente pequeno, 137 autenticacao do receptor, 129 autenticacao do remetente, 131

calculo das chaves, 128 criptandlise, 129, 134 criptografia, 128 decriptografia, 128 demonstracao da inversa, 133 Implementagao com TCR, 249 verificacao de integridade, 133

RSA (Java), 293

Simbolo de Jacobi, 256 Algoritmo para calcular, 258 Simbolo de Legendre, 255 SAFER, 69 decriptografia, 71 geracao de subchaves, 71 inverso, 71 primeiro passo, 70 quarto passo, 70 segundo passo, 70 terceiro passo, 70 transformacao final, 71 salting, 145 SBox, 95 inversa, 96

Schnorr, 189, 209 seguran condicao necessaria e suficiente, 36 seguro, 20, 21, 43 senha, 181 SHA, 229 Shamir, 127, 183, 198 TWINKLE, 130 Shift Left Register, 115 ShiftRows, 97 side channel attack, 111 simétrico, 43 smart-card, 177 smartcard, 186 socket, 291 Solovay, 142 soma de dois segmentos, 99 SSL, 291 Strassen, 142 SubBytes, 92 inversa, 96 substituicao, 25 Teorema Chinés do Resto, 247 Teorema de Euler, 262 ‘Teorema dos Numeros Primos, 138 Terada, R., 175 testemunho de primalidade, 138, 140 testemunho verdadeiro, 140 texto

ilegivel, 20, 43 legivel, 20, 43 timing attack, 111 TLS, 291 transposicao, 28 TWINKLE, 130 virus eletrénico, 214

INDICE REMISSIVO Vanstone, 167 Vernam, 27 Vigenére, 26 Wang, Xiaoyun, 224, 229, 231

X.509, 176

xtimes(), 94 Ziv, 277

309