260 66 23MB
Portuguese Pages 306 Year 2008
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)
lé
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