Escolar Documentos
Profissional Documentos
Cultura Documentos
in
ar
Pr
e
Ve
rs
5 de novembro de 2012
in
ar
Sumrio
Conceitos Fundamentais
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
8
9
10
11
11
11
14
14
14
14
16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
20
20
21
24
25
26
26
27
. . . . . . .
. . . . . . .
. . . . . . .
mo nica .
.
.
.
.
.
.
.
.
.
.
.
.
31
31
34
35
37
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ve
rs
Pr
e
lim
Sumrio
3 Problemas Difceis
3.1 Funes de mo nica . . . . . . . . . . . . . .
3.1.1 Funes fracamente de mo nica . . . .
3.2 Predicados hard-core . . . . . . . . . . . . . . .
3.3 Predicados hard-core para quaisquer funes de
i
ii
SUMRIO
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
39
43
45
45
46
51
51
51
55
5 Cifras de Bloco
5.1 Esquemas de Encriptao usando Funes Pseudoaleatreas
5.2 Permutaes Pseudoaleatreas . . . . . . . . . . . . . . . .
5.2.1 F Famlias de permutaes pseudoaleatreas . . . .
5.3 Modos de Operao . . . . . . . . . . . . . . . . . . . . . .
5.3.1 ECB Electronic Code Book . . . . . . . . . . . . .
5.3.2 CBC Cipher Block Chaining . . . . . . . . . . . .
5.3.3 OFB Output Feedback . . . . . . . . . . . . . . . .
5.3.4 CTR Contador . . . . . . . . . . . . . . . . . . . .
5.4 Cifras de bloco . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.1 Segurana de cifras de bloco . . . . . . . . . . . . . .
5.4.2 Construo . . . . . . . . . . . . . . . . . . . . . . .
5.5 Arquitetura de cifras de bloco . . . . . . . . . . . . . . . . .
5.5.1 Confuso e difuso . . . . . . . . . . . . . . . . . . .
5.5.2 Rede de substituio e permutao . . . . . . . . . .
5.5.3 Rede de Feistel . . . . . . . . . . . . . . . . . . . . .
5.5.4 Construo de Lai-Massey . . . . . . . . . . . . . . .
5.6 Exemplo: DES . . . . . . . . . . . . . . . . . . . . . . . . .
5.6.1 Escalonamento de chaves . . . . . . . . . . . . . . .
5.6.2 3DES . . . . . . . . . . . . . . . . . . . . . . . . . .
5.7 Exemplo: AES . . . . . . . . . . . . . . . . . . . . . . . . .
5.7.1 Descrio simplificada . . . . . . . . . . . . . . . . .
5.7.2 F Descrio algbrica . . . . . . . . . . . . . . . . .
5.8 FOX (IDEA-NXT) . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
59
61
63
63
63
64
64
65
65
66
66
67
67
67
67
69
71
72
73
73
75
75
78
80
6 Noes de Criptanlise
6.1 Uma rede de substituio e permutao . . . .
6.2 Criptanlise linear . . . . . . . . . . . . . . . .
6.2.1 O Lema do Empilhamento . . . . . . . .
6.2.2 Criptanlise da rede . . . . . . . . . . .
6.2.3 Escolha da trilha e resistncia ao ataque
6.3 Criptanlise diferencial . . . . . . . . . . . . . .
6.4 Criptanlise Algbrica . . . . . . . . . . . . . .
6.5 Tcnicas de criptanlise relacionadas . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
85
. 85
. 88
. 89
. 90
. 99
. 99
. 105
. 107
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ve
rs
Pr
e
lim
in
ar
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
SUMRIO
iii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9 Criptografia Assimtrica
9.1 Protocolos criptogrficos . . . . . . . . . . . . . .
9.2 Estabelecimento de chaves . . . . . . . . . . . . .
9.3 Protocolo Diffie-Hellman para estabelecimento de
9.3.1 Ataque de homem-no-meio . . . . . . . .
9.4 Criptossistemas Assimtricos . . . . . . . . . . .
9.4.1 F Funes de mo nica com segredo . .
9.5 Segurana CCA . . . . . . . . . . . . . . . . . . .
9.6 Elgamal . . . . . . . . . . . . . . . . . . . . . . .
9.7 Criptossistema de Rabin . . . . . . . . . . . . . .
9.8 RSA . . . . . . . . . . . . . . . . . . . . . . . . .
9.8.1 Ataques ao RSA . . . . . . . . . . . . . .
9.8.2 Verso segura do RSA: OAEP . . . . . .
9.9 Goldwasser-Micali . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
111
113
114
115
117
119
120
122
123
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
127
128
130
130
131
133
134
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
137
137
137
138
141
141
142
142
142
144
146
147
148
149
.
.
.
.
.
.
.
.
.
.
.
155
156
157
158
159
160
160
161
162
162
163
164
Ve
rs
Pr
e
lim
.
.
.
.
.
.
.
.
in
ar
. . . .
. . . .
chaves
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
10 Assinaturas Digitais
10.1 Segurana . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.1 Segurana RMA . . . . . . . . . . . . . . . . .
10.1.2 Segurana KMA . . . . . . . . . . . . . . . . .
10.1.3 Segurana CMA . . . . . . . . . . . . . . . . .
10.1.4 F Aumentando a segurana de esquemas . . .
10.2 Esquema de assinaturas de Lamport . . . . . . . . . .
10.3 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.3.1 Full-domain hash . . . . . . . . . . . . . . . . .
10.4 Elgamal . . . . . . . . . . . . . . . . . . . . . . . . . .
10.4.1 DSA . . . . . . . . . . . . . . . . . . . . . . . .
10.5 F Full-domain hash com qualquer permutao de mo
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
nica
.
.
.
.
.
.
.
.
.
.
.
iv
Protocolos
167
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
171
171
172
177
178
178
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
181
182
182
184
185
185
186
188
190
194
194
195
196
.
.
.
.
.
.
.
.
.
197
197
198
199
201
202
202
203
205
205
Pr
e
lim
12 Compartilhamento de Segredos
12.1 Esquemas com qurum . . . . . . . . . . . .
12.1.1 Esquema de Shamir . . . . . . . . .
12.1.2 Esquema de Blakley . . . . . . . . .
12.2 Segurana . . . . . . . . . . . . . . . . . . .
12.2.1 Sigilo . . . . . . . . . . . . . . . . .
12.3 Estruturas gerais de acesso . . . . . . . . .
12.4 Compartilhamento verificvel . . . . . . . .
12.5 Compartilhamento publicamente verificvel
12.5.1 Segredos no aleatreos . . . . . . .
12.6 Encriptao com qurum . . . . . . . . . .
12.7 Notas . . . . . . . . . . . . . . . . . . . . .
12.8 Exerccios . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
in
ar
II
SUMRIO
Ve
rs
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
209
210
211
214
214
SUMRIO
III
Outros Tpicos
215
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
219
221
222
222
223
224
225
225
226
226
226
227
227
228
228
228
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
231
231
231
232
234
236
238
238
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
241
242
243
244
246
246
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
253
254
254
255
255
256
20 Criptografia Ps-Quntica
20.1 Dificuldade de problemas . . . . . . . . . . . . . . . . . . . . . .
20.2 Computao quntica . . . . . . . . . . . . . . . . . . . . . . . .
20.2.1 Operaes qunticas . . . . . . . . . . . . . . . . . . . . .
257
257
258
260
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17 Primalidade e Fatorao
17.1 Fatorao . . . . . . . . . . . . . . . . . . . . . .
17.1.1 Crivo de Eratstenes e divises sucessivas
17.1.2 Mtodo p 1 de Pollard . . . . . . . . . .
17.1.3 Mtodo de Pollard . . . . . . . . . . . .
17.1.4 F Crivo quadrtico . . . . . . . . . . . .
17.1.5 F Curvas elpticas . . . . . . . . . . . . .
17.1.6 F Crivo sobre corpo numrico algbrico .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19 Emparelhamentos Bilineares
19.1 Problemas difceis em emparelhamentos bilineares
19.2 Encriptao baseada em identidades . . . . . . . .
19.3 Assinaturas baseadas em identidades . . . . . . . .
19.4 Acordo de chaves . . . . . . . . . . . . . . . . . . .
19.5 Outras construes . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
Ve
rs
Pr
e
lim
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
in
ar
16 Curvas Elpticas
16.1 Operao de grupo para curvas elpticas . .
16.1.1 Simtrico . . . . . . . . . . . . . . .
16.1.2 Soma de pontos . . . . . . . . . . . .
16.1.3 Dobrando um ponto . . . . . . . . .
16.2 Ordem do grupo . . . . . . . . . . . . . . .
16.3 Corpos finitos usados em Criptografia . . .
16.3.1 Fp . . . . . . . . . . . . . . . . . . .
16.3.2 GF2m . . . . . . . . . . . . . . . . .
16.4 Criptossistemas e protocolos . . . . . . . . .
16.4.1 Logaritmo discreto . . . . . . . . . .
16.4.2 Diffie-Hellman . . . . . . . . . . . .
16.4.3 Elgamal . . . . . . . . . . . . . . . .
16.4.4 Outros criptossistemas e protocolos .
16.5 Emparelhamentos bilineares . . . . . . . . .
16.6 Fatorao de Inteiros . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
vi
SUMRIO
20.3 Subgrupo oculto . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
20.4 Fatorao de inteiros . . . . . . . . . . . . . . . . . . . . . . . . . 261
20.4.1 Transformada quntica de Fourier . . . . . . . . . . . . . 261
265
265
266
266
267
267
267
268
269
269
270
270
273
273
275
278
23 Criptografia Visual
23.1 Um nico segredo (Naor e Shamir) . .
23.1.1 Esquemas para k e n pequenos
23.2 Dois segredos . . . . . . . . . . . . . .
23.3 Mltiplos segredos . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
in
ar
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Pr
e
lim
21 Reticulados
21.1 Reticulados . . . . . . . . . . . .
21.2 Problemas difceis em reticulados
21.2.1 SBP e Ortogonalidade . .
21.2.2 LLL . . . . . . . . . . . .
21.2.3 CVP: algoritmo de Babai
21.3 GGH . . . . . . . . . . . . . . . .
21.3.1 Detalhes . . . . . . . . . .
21.3.2 Ataques ao GGH . . . . .
21.4 NTRU . . . . . . . . . . . . . . .
21.5 Ajtai-Dwork . . . . . . . . . . . .
21.6 LWE . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
281
281
284
284
284
24 Encriptao Negvel
24.1 Esquema de Howlader-Basu . . . . . . . . . . . . . . .
24.2 Esquema de Drmuth-Freeman . . . . . . . . . . . . .
24.3 Negabilidade por destinatrio e negabilidade completa
24.4 Aplicaes . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
287
289
294
295
296
25 Votao Eletrnica
25.1 Mix Nets . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25.2 Assinaturas cegas . . . . . . . . . . . . . . . . . . . . . . . . .
25.3 Exemplo: esquema de Chaum . . . . . . . . . . . . . . . . . .
25.3.1 Anlise . . . . . . . . . . . . . . . . . . . . . . . . . .
25.4 Exemplo: o esquema CGS (Cramer, Gennaro, Schoenmakers)
25.4.1 Anlise . . . . . . . . . . . . . . . . . . . . . . . . . .
25.4.2 Votao 1-de-L . . . . . . . . . . . . . . . . . . . . . .
25.5 Exemplo: esquema FOO (Fujioka, Okamoto, Ohta) . . . . . .
25.5.1 Anlise . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
299
300
301
302
302
303
304
305
305
306
Ve
rs
.
.
.
.
26 Dinheiro Eletrnico
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
309
SUMRIO
vii
IV
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Apndices
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
311
311
314
315
315
315
in
ar
27 Cifras Histricas
27.1 Cifras . . . . . . . . . . . . . . . . .
27.2 Enigma . . . . . . . . . . . . . . . .
27.3 Criptanlise . . . . . . . . . . . . . .
27.3.1 Anlise simples de frequncia
27.3.2 Vigenre . . . . . . . . . . . .
317
lim
A Probabilidade
319
A.1 O problema do aniversrio . . . . . . . . . . . . . . . . . . . . . . 319
Ve
rs
Pr
e
C Complexidade Computacional
C.1 Complexidade de tempo . . . . . . . . . . . . . . . . . .
C.1.1 Recorrncias . . . . . . . . . . . . . . . . . . . .
C.1.2 Tamanho da entrada e nmero de bits . . . . . .
C.2 Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.3 Problemas de deciso e de busca . . . . . . . . . . . . .
C.4 Algoritmos no determinsticos . . . . . . . . . . . . . .
C.5 Algoritmos Randomizados . . . . . . . . . . . . . . . . .
C.6 Classes de Complexidade . . . . . . . . . . . . . . . . .
C.7 Redues e completude . . . . . . . . . . . . . . . . . .
C.7.1 Tcnicas para demonstrao de N P-completude
C.7.2 Padres comuns . . . . . . . . . . . . . . . . . .
C.7.3 Problemas N P-completos na prtica . . . . . . .
C.7.4 Outros problemas N P-completos . . . . . . . . .
C.8 Problemas indecidveis . . . . . . . . . . . . . . . . . . .
C.9 F Mquinas de Turing . . . . . . . . . . . . . . . . . . .
321
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
353
353
356
360
360
363
364
365
366
368
369
374
375
379
380
381
D Transformada de Fourier
D.1 Transformada de Fourier . . . . . . . . .
D.2 Transformada discreta de Fourier . . . .
D.2.1 Transformada rpida de Fourier .
D.3 Transformada do Cosseno . . . . . . . .
D.3.1 Compresso de imagens: JPG . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
391
391
394
395
397
398
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
401
401
401
403
403
406
408
viii
SUMRIO
Quantidade de rodadas .
Escalonamento de chaves
Encriptao . . . . . . . .
Decriptao . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
F Respostas e Dicas
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
408
409
409
410
421
438
Pr
e
lim
ndice Remissivo
.
.
.
.
411
Referncias Bibliogrficas
Ve
rs
.
.
.
.
in
ar
E.2.1
E.2.2
E.2.3
E.2.4
Ve
rs
Pr
e
lim
in
ar
SUMRIO
in
ar
Notao
lim
Ve
rs
Pr
e
||x||
a||b
[a]n
hXi
A
AB
xy
Zn
A
D
T
c
C
DHg (a, b)
g
k
L
m
p
p()
q
t
m(x)
c(x)
lsb (x)
log(x)
logg h
msb (x)
negl()
retorne ha, bi
rotlk (a)
ab
a R S
ha, bi f ( )
ab
ab
ab
a
perm_col (M )
O
QRn
Jn
Parte I
lim
in
ar
Ve
rs
Pr
e
Conceitos Fundamentais
Ve
rs
Pr
e
lim
in
ar
Pr
e
lim
in
ar
Ve
rs
A primeira parte aborda os problemas bsicos da Criptografia, expondo construes clssicas. So dadas definies precisas para cada conceito, e h sees
em cada Captulo dedicadas a definies e demonstraes de segurana com
razovel rigor.
Ve
rs
Pr
e
lim
in
ar
Captulo 1
lim
in
ar
1.1
Pr
e
Encriptao simtrica
Ve
rs
O problema mais conhecido abordado pela Criptografia o de modificar mensagens para que fiquem indecifrveis. Decifrar (ou decriptar) a mensagem s deve
ser possvel para quem tenha a posse de um segredo. Solues para este problema so chamadas de criptossistemas simtricos, e o segredo normalmente
chamado de chave.
Todo criptossistema simtrico oferece ao usurio duas funes, cada uma
com dois argumentos: uma para cifrar e outra para decifrar. Convencionaremos
usar Enc(m, k) para a funo que cifra e Dec(m, k) para a funo que decifra
m com a chave k. Evidentemente, necessrio que Dec(Enc(m, k), k) = m para
todos m e k.
A funo que transforma a mensagem (que chamamos de texto claro) em
algo irreconhecvel (que chamamos de texto cifrado) deve necessariamente ser
difcil de inverter sem o argumento k, de outra forma qualquer um com acesso
mensagem poderia facilmente decifr-la.
Ao algoritmo usado para calcular as funes Enc e Dec damos o nome de
cifra. comum classificar cifras em dois tipos:
Cifras de fluxo, que transformam cada bit da mensagem em um bit do
texto cifrado ao mistur-lo com um bit de outra fonte de bits (um gerador
pseudoaleatreo de bits, por exemplo) Esta mistura normalmente uma
operao de ou exclusivo, como ilustrado na figura a seguir:
7
in
ar
texto cifrado
1 0 1 0 1 1 0 1 1 0
0 0 1 1 1 0 1 0 1 1
bits aleatreos
lim
1 1 0 1 1
Pr
e
0 1 1 0 1
1 1 0 1 1
0 0 0 1 1
0 0 0 1 0
1 1 1 1 0
texto cifrado
Ve
rs
1.2
Encriptao assimtrica
lim
in
ar
Quando Alice precisa cifrar uma mensagem para Bob, usa a chave pblica
de Bob (disponvel publicamente). Ao receber a mensagem, Bob pode decifr-la
usando sua chave privada.
Pr
e
1.3
Ve
rs
SHA-256
1cc576be2ea83df4fbd9d33ca816ac7ee39da6cc0c8ddd22666dd4e80326a94a
Algumas observaes importantes:
O resultado da funo SHA-256 sempre ser do mesmo tamanho (256
bits), no dependendo do tamanho da entrada;
10
in
ar
mensagem secreta!
SHA-256
fbb5a6d34f05b708e780fd2ab674845b5d34162066d976a819bf02c02e444a98
lim
Embora seja fcil calcular, a funo de hashing deve ser difcil de inverter
(e portanto no deveria ser possvel a algum chegar cadeia mensagem
secreta a partir de 1cc5 a94a).
Funes de hashing so diretamente teis em diversas situaes onde queremos garantir a integridade de dados, e tambm na construo de outras ferramentas criptogrficas.
Pr
e
Ve
rs
Funes de hashing tambm podem ser usadas para construir geradores pseudoaleatreos, para derivar novas chaves de uma nica chave-mestra e construir
cifras de bloco
1.4
Assinatura digital
11
lim
in
ar
1.5
Pr
e
Estabelecimento de chaves
1.6
Ve
rs
1.7
Protocolos
Alm dos problemas j descritos, a Criptografia moderna trata tambm de problemas de interao entre partes onde no necessariamente h confiana mtua.
12
in
ar
lim
Pr
e
Compromisso Alice deve escolher um valor (ou um dado qualquer) e comprometerse com ele, mas sem que Bob saiba qual foi o valor escolhido. Para que Alice no
possa mudar sua escolha mais tarde, deve mostrar a Bob uma prova de que fez
uma escolha, mas sem que a escolha seja revelada. O que Alice faz semelhante
a entregar a informao a Bob em um cofre (ou envelope lacrado). Quando o
valor tiver que ser usado, Alice mostra um segredo que pode ser usado para
revelar sua escolha. Pode-se implementar um esquema de compromisso usando
uma funo de hashing: Alice envia a Bob o resumo criptogrfico de sua escolha; mais tarde, quando Alice a revelar, e a escolha poder ser verificada por
Bob simplesmente calculando novamente o hash. Esquemas de compromisso podem ser usados para implementar diversos protocolos, como cara-ou-coroa por
telefone, provas de conhecimento zero e computao segura por vrios atores.
Ve
rs
Compartilhamento de segredos Uma senha d acesso a muitas informaes de extrema importncia. Queremos mant-la em sigilo, mas no queremos
deixar que uma nica pessoa a tenha (esta pessoa pode no ser honesta, pode
perder a senha e mesmo falecer). Tambm no queremos que a senha seja conhecida por muitos, porque teramos que confiar em cada um deles. Idealmente,
1.7. PROTOCOLOS
13
Pr
e
lim
in
ar
esta senha deveria ser guardada em segredo por um grupo de pessoas, at que,
por exemplo, dois teros do grupo decida revel-lo. A dificuldade est em permitir que qualquer conjunto de pessoas com mais de 2/3 do grupo possa revelar
o segredo (no basta quebrar uma chave criptogrfica em vrias partes).
Esquemas de compartilhamento de segredos permitem resolver este problema: derivamos de um segredo diversos pedaos de informao que podem
ser usados (k por vez) para reconstruir o segredo original.
Ve
rs
14
1.8
Criptografia Ps-Quntica
1.9
Criptografia Quntica
in
ar
Os computadores qunticos, embora ainda apenas teoricamente, poderiam resolver de maneira eficiente problemas como o do logaritmo discreto e o da fatorao
de inteiros. Como muito da Criptografia depende da dificuldade em resolver estes problemas, criptlogos tentam conseguir avanos em mtodos criptogrficos
no-qunticos que sejam resistentes a ataques de algoritmos qunticos, usando
em criptossistemas e esquemas criptogrficos problemas diferentes destes.
Pr
e
1.10
lim
Ve
rs
1.10.1
Jogos e experimentos
Muitas das definies e demonstraes usam experimentos aleatreos que funcionam como jogos. Usamos estes jogos (ou experimentos) porque eles modelam
naturalmente o funcionamento de ataques a criptossistemas: nestes jogos haver
um desafiador e um adversrio, e estaremos sempre interessados em calcular a
probabilidade de que o adversrio consiga ganhar o jogo (o que na prtica se traduz na probabilidade do adversrio quebrar alguma ferramenta criptogrfica).
O exemplo a seguir um jogo extremamente simples de adivinhao de
nmeros entre um desafiador D e um adversrio A, onde usamos um parmetro
n. Damos a este jogo o nome NUMBER_GUESS(A, n).
15
lim
k R [1, n]
in
ar
k1
k1 = k 1, FIM
k1 k
k2
k2 = k 1, FIM
Pr
e
k2 k
k3
k3 = k 1
k3 6= k 0
Ve
rs
Pr [NUMBER_GUESS(A, n) = 1] =
Passamos agora a um exemplo diretamente relacionado a Criptografia. No prximo experimento testamos um criptossistema contra um adversrio A. O
adversrio escolhe duas mensagens e envia ao desafiador. Em seguida D escolhe
aleatoreamente um bit (b R {0, 1} significa que b escolhido aleatoreamente
no conjunto {0, 1}), e Encripta a mensagem mb (que corresponde ao bit escolhido). D ento envia mb encriptada ao adversrio, que deve adivinhar qual das
mensagens foi cifrada. Quando A consegue adivinhar qual era a mensagem, o
experimento tem um como resultado; em caso contrrio, o resultado zero.
m0 , m1
b R { 0, 1 }
mb
b = b0 1
seno 0
b0
in
ar
16
Notao e convenes
Pr
e
1.10.2
lim
Ve
rs
Se adotarmos um ponto de vista prtico, notaremos imediatamente que necessrio traduzir as mensagens prticas (que podem ser texto ou arquivos
binrios) para os nmeros usados nas construes tericas. Presumimos que h
alguma maneira simples de traduzir as mensagens em sequencias de bits, e que
ao usar uma das construes criptogrficas, estes bits sero interpretados como
nmeros. Ao longo do texto ento presumiremos que os nmeros so representados em base dois, e definiremos que o tamanho de um nmero o nmero de
bits necessrio para represent-lo.
Assim, log(x) neste texto refere-se ao logaritmo de x na base dois.
A notao x R X significa x escolhido uniformemente ao acaso do conjunto X. Usaremos || para concatenao de cadeias de bits: se a = 0010 e
b = 1100, ento a||b = 00101100.
Muitas das demonstraes tem como componente algoritmos. Quando o algoritmo simples o suficiente para ser descrito textualmente isso feito; quando
ele tem estrutura detalhada ou complexa demais, apresentado na forma de
pseudocdigo. H uma nica caracterstica do pseudocdigo usado que merece
apresentao: alguns dos algoritmos e funes descritos no texto retornam mais
de um valor. A ordem dos valores no especificada porque pode ser inferida
facilmente pelo contexto. Denotamos
retorne ha, b, ci
17
Exerccios
in
ar
c1 , c2 , . . . , c5
Pr
e
ci R C
lim
ci
c6 R C \ {ci }
c6
c1 , . . . , c 6
i, j N (ci ) = N (cj ) 1
seno 0
Ve
rs
Ve
rs
Pr
e
lim
in
ar
18
in
ar
Captulo 2
lim
Criptossistemas e Noes de
Segurana
Pr
e
Ve
rs
20
2.1
Criptossistemas
in
ar
Embora o escopo da Criptografia seja muito mais amplo que o estudo de criptossistemas simtricos, os usaremos na descrio de conceitos fundamentais sobre
segurana em criptografia.
No decorrer do texto usaremos os nomes Enc e Dec para funes que encriptam e decriptam mensagens. Normalmente estas funes aceitaro pelo
menos dois argumentos: uma chave e um texto. Ao invs de denotar Enc(k, x)
e Dec(k, x), usaremos Enck (x) e Deck (x).
Definio 2.1 (Criptossistema de chave privada). Um criptossistema de chave
privada consiste de trs algoritmos polinomiais:
lim
Pr
e
Ve
rs
2.2
Princpio de Kerchoff
H um princpio para construo de criptossistemas, descrito por Auguste Kerchoff em 1883, e que continua sendo relevante. Damos nesta Seo uma verso
moderna dele (a parte relevante do texto original de Kerchoff, traduzido, est
na Seo de Notas).
21
2.3
in
ar
Sigilo Perfeito
lim
Definio 2.2 (Sigilo Perfeito). Um criptossistema tem sigilo perfeito se, para
todo m M e c C, Pr(m|c) = Pr(m).
Pr
e
Lema 2.3. Um criptossistema tem sigilo perfeito se e somente se, para todo
m M e c C, Pr(c|m) = Pr(c).
Demonstrao. () Dada uma mensagem m e um texto cifrado c, considere a
equao
Pr(c|m) = Pr(c).
Multiplique ambos os lados por Pr(m)/ Pr(c):
Pr(c|m) Pr(m)
= Pr(m)
Pr(c)
Ve
rs
Criptossistemas com sigilo perfeito tem uma sria limitao, que demonstramos no Teorema 2.4 a seguir: a quantidade de chaves deve ser to grande
quanto a quantidade de possveis mensagens. Se as mensagens tiverem tamanho fixo, isso implica que o tamanho das chaves deve ser igual ao tamanho dos
documentos1
Teorema 2.4. Em um criptossistema com sigilo perfeito, |K| |M|.
22
in
ar
Como para cada mensagem m M(c) h pelo menos uma chave k K tal que
m = Deck (c), ento |M(c)| |K|. Mas como nossa hiptese inicial era de que
|K| < |M|, temos que
|M(c)| |K| < |M|
e portanto, como |M(c)| < |M, deve haver alguma mensagem m0 M tal que
m0
/ M(c), e neste caso
1
.
M
lim
1
(A distribuio sobre M uniforme, por isso afirmamos que Pr(m0 ) = M
.)
Mostramos assim que com |K| < |M| um criptossistema no tem sigilo
perfeito.
Pr
e
Construo 2.5 (One-time pad). O one-time pad requer que o tamanho das
chaves seja igual ao das mensagens e dos textos cifrados. Assim, usando representao binria para as chaves, K = M = C = {0, 1}n para algum n.
Gen escolhe uniformemente uma chave k K
Enc e Dec realizam a operao ou-exclusivo bit a bit entre seus dois argumentos. Ou seja,
Enck (m) = k m,
Deck (c) = k c.
Ve
rs
1 1 1 0 0 1 1 1 0 1 0 0 1 1 0 0 1 0 1 1
0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 1 1 0
mensagem
1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 1 1 0 1
texto encriptado
23
in
ar
lim
Pr
e
Demonstrao. Como a definio de sigilo perfeito no pressupe qualquer distribuio sobre M, deve valer para todas. Tomamos ento uma distribuio
qualquer sobre M, uma mensagem m e um texto cifrado c. Para o one-time
pad,
Pr(c|m) = Pr[M K = c|M = m]
= Pr[m K = c]
= Pr[K = m c] =
1
|K|
Como isto vale para toda distribuio sobre M e para quaisquer mensagens m0 ,
m1 e qualquer texto cifrado c, ento
P (c|m0 ) =
1
= P (c|m1 )
|K|
Ve
rs
24
in
ar
O Experimento PRIV_EAV aceita dois parmetros: o criptossistema e o adversrio. A notao que usaremos neste texto para um criptossistema qualquer e A para um adversrio. Quando um criptossistema tiver sigilo perfeito,
ele poder ser denotado .
Experimento 2.8 (PRIV_EAV(, A)).
1. A escolhe duas mensagens m0 e m1 M;
2. Uma chave k K gerada usando Gen, e um bit b escolhido aleatoreamente. Ento a mensagem mb cifrada e enviada para A;
3. A mostra b0 ;
m0 , m1
Pr
e
k R { 0, 1 }
b R { 0, 1 }
lim
Enck (mb )
b = b0 1
b 6= b0 0
b0
Ve
rs
Definio 2.9 (Sigilo perfeito de criptossistema simtrico (verso com adversrio)). Um criptossistema tem sigilo perfeito sobre um conjunto de mensagens
M se para todo adversrio A,
Pr[PRIV_EAV(, A) = 1] =
1
.
2
Esta definio equivalente definio 2.2, mas no apresentaremos a demonstrao. Note que esta definio no impe restries ao tamanho das mensagens e nem ao tempo que A pode demorar para executar.
No decorrer deste texto vrias definies de segurana semelhantes a esta,
baseadas em experimentos, sero apresentadas. Todos os experimentos so parametrizados (neste caso os parmetros foram apenas e A; haver variaes).
2.4
25
2.5
Segurana demonstrvel
lim
in
ar
Pr
e
Definir rigorosamente segurana: antes de demonstrar que uma construo criptogrfica segura, necessrio definir o que significa ser seguro
no contexto em que trabalhamos. Isto necessrio obviamente porque
no h como elaborar uma demonstrao rigorosa sem definies precisas.
No entanto, definies precisas tambm servem ao usurio ou engenheiro
que queira escolher uma ferramenta criptogrfica: ele saber exatamente
a quais so os tipos de ataque a ferramenta resistir (e poder inclusive
comparar diferentes ferramentas, de acordo com a segurana de cada uma).
Ve
rs
26
2.5.1
in
ar
A segurana de cifras de bloco, por exemplo, passou de arte para heurstica: com o tempo o conjunto do conhecimento a respeito de mtodos de
ataque e arquitetura de cifras de bloco permitiu identificar estratgias melhores
de projeto. Alm disso, a Criptanlise passou a possibilitar diversas verificaes
de segurana para estas construes.
Ao longo do tempo, no entanto, algum progresso foi feito na tentativa de
aproximar os mundos da criptografia simtrica e da segurana demonstrvel.
Cenrios de ataque
lim
KPA, ataque com texto claro conhecido: aqui o adversrio conhece pares
de textos claros e cifrados, todos encriptados com uma mesma chave k, e
tenta decriptar um outro texto cifrado, tambm encriptado com k;
Pr
e
CPA (Chosen Plaintext Attack), ataque de texto claro escolhido: o adversrio pode obter a encriptao de textos sua escolha usando a chave k.
Seu objetivo decriptar um outro texto que tambm foi encriptado com
k;
CCA (Chosen Ciphertext Attack, ataque de texto cifrado escolhido. Aqui
o adversrio pode obter o deciframento de mensagens usando k, exceto
daquela que realmente quer decifrar.
Ve
rs
2.5.2
Probabilidade desprezvel
Precisaremos falar de criptossistemas onde o adversrio tem probabilidade desprezvel de sucesso, portanto definiremos desprezvel: informalmente, uma
27
funo dita desprezvel quando se aproxima de zero mais rpido que o recproco de qualquer polinmio.
Por exemplo,
in
ar
H algum N a partir do
lim
1
no desprezvel: seja h(n) =
g(n) = n4 +100
qual h(n) < n14 .
Pr
e
Ve
rs
Eventos com probabilidade desprezvel podem ser ignorados para efeitos prticos; aceitaremos como seguro um criptossistema que tenha probabilidade desprezvel de ser quebrado.
2.5.3
2 Usamos negl para manter a consistncia com textos em Ingls, onde tais funes so
chamadas de negligible.
28
in
ar
Definiremos um experimento para o criptossistema e o adversrio A. Chamaremos este experimento de PRIV_EAV(, A, n). Note que este experimento
no o mesmo que aquele usado na Definio 2.9, tendo inclusive nome diferente (o (n) indica que o experimento depende de um parmetro n). Alm disso,
neste experimento admitiremos que o adversrio terminar sua parte em tempo
polinomial em n (o tamanho das mensagens). Damos ao adversrio a entrada
1n e o deixaremos escolher duas mensagens de mesmo tamanho. Em seguida
geraremos uma chave de tamanho n, cifraremos uma das mensagens (sem que o
adversrio saiba qual) e a enviaremos a ele. O adversrio dever ento descobrir
qual das mensagens foi cifrada. Formalizamos esta ideia da seguinte forma:
Experimento 2.11 (PRIV_EAV(, A, n)).
lim
Pr
e
1n
m0 , m1
Ve
rs
k R { 0, 1 }
b R { 0, 1 }
b = b0 1
b 6= b0 0
Enck (mb )
b0
29
Notas
in
ar
A definio de criptossistema que demos a mesma dada por Katz e Lindell [1]
e tambm por Goldreich [2].
Auguste Kerchoff publicou suas idias a respeito de criptossistemas em seu
artigo La Cryptographie Militaire, na revista francesa Journal des sciences
militaires em 1883. Os princpios para construo de criptossistemas, descritos
por Auguste Kerchoff, so:
1. O sistema deve ser praticamente, se no matematicamente, indecifrvel;
lim
2. No pode necessitar ser secreto, e pode ser tal que caindo nas mos do
inimigo no cause inconvenincia;
3. Sua chave deve ser comunicvel e armazenvel sem a ajuda de notas escritas, e modificvel vontade pelos correspondentes;
4. Deve ser aplicvel a correspondncias telegrficas;
Pr
e
Ve
rs
30
Exerccios
Ex. 5 Implemente o one-time pad.
in
ar
Ex. 6 [Stinson] Suponha que o one-time pad foi usado para encriptar m e
m0 , resultando em c e c0 respectivamente. Sabendo que a mesma chave foi usada
(de forma contrria ao que se recomenda quando usamos o one-time pad), mostre
que
m m0 = c c0 .
lim
Ex. 8 (Fcil) Complete a prova do Lema 2.6 (h uma parte marcada como
rascunho).
Ex. 9 (Fcil) Demonstre as duas propriedades de funes desprezveis na
Seo 2.5.2.
Ex. 10 Reescreva a definio de funo desprezvel usando a notao de
crescimento assinttico, tpica em anlise de algoritmos.
Pr
e
Ve
rs
b) Prove que o criptossistema no seguro de acordo com nenhuma das definies dadas neste Captulo.
c) Implemente o criptossistema, e tambm tente implementar um programa
que exemplifique sua insegurana.
in
ar
Captulo 3
lim
Problemas Difceis
Funes de mo nica
Ve
rs
3.1
Pr
e
Funes de mo nica so fundamentais para a Criptografia moderna. Informalmente, uma funo f de mo nica se fcil de calcular e difcil de inverter: h
algoritmo polinomial para calcular f (x), mas dado y no h algoritmo eficiente
para encontrar um elemento da pr-imagem de y (algum x tal que f (x) = y).
Uma bvia aplicao de funes de mo nica a encriptao de mensagens.
Se f de mo nica, queremos encriptar mensagens usando f (m).
Outra maneira clara de usar funes de mo nica na construo de funes
de hash, cujo funcionamento conceitualmente semelhante s funes de mo
nica.
Tambm queremos construir geradores pseudoaleatreos de bits (que so
usados em quase todas as ferramentas criptogrficas). Para faz-lo, podemos
simplesmente usar uma funo de mo nica sobre alguma funo que expanda
a semente.
Comeamos com uma definio mais precisa para fcil de computar e difcil de
inverter. Por fcil de computar entendemos que a funo pode ser computada
por algum algoritmo determinstico polinomial. Por difcil de inverter queremos
dizer que, para qualquer algoritmo determinstico polinomial A, a probabilidade
de A conseguir encontrar um elemento da pr-imagem de f deve ser desprezvel
no tamanho da entrada de f .
Definio 3.1 (Funo de mo nica forte). Uma funo f fortemente de
mo nica se
1. Fcil de computar: Existe um algoritmo de tempo polinomial que computa
f;
2. Difcil de inverter: Todo algoritmo A randomizado de tempo polinomial
deve ter probabilidade desprezvel de encontrar uma pr-imagem de f .
31
32
in
ar
lim
Pr
e
Ve
rs
A soma de subconjuntos. A obteno da inversa um problema N Pcompleto (e portanto de mo nica se P for diferente de N P).
Tomamos a liberdade de, num abuso de linguagem, no resto deste Captulo,
denominar as funes candidatas por funes de mo nica.
Nosso exemplo de permutao de mo nica g x (mod p) onde p primo e
g o gerador do grupo (Np , ).
Exemplo 3.3 (Logaritmo Discreto). Sejam p um nmero primo; g um gerador
de Zp com a operao de multiplicao1 . Cremos que a funo
dexp p,g (x) = g x
(mod p)
33
in
ar
lim
Pr
e
1
.
p(k)
Ve
rs
No entanto, nem todo problema N P-completo pode ser usado como base
para funes de mo nica: para que a funo seja de mo nica, ela deve ser
difcil de inverter quase sempre (exceto pela probabilidade desprezvel j mencionada). Um problema N P-completo pode ser fcil de resolver na maioria dos
2 Discrete
3 Integer
34
3.1.1
in
ar
lim
Pr
e
Ve
rs
3.2
35
Predicados hard-core
lim
in
ar
Pr
e
1
+ negl(k),
2
Ve
rs
36
in
ar
Teorema 3.16. Dado dexp p,g (x), msb (x) um predicado hard-core de dexp .
Ve
rs
Pr
e
lim
Demonstrao. A demonstrao a seguir mostra que um algoritmo determinstico para calcular msb (x) dado dexp p,g (x) implicaria na negao da conjectura
do logaritmo discreto. possvel extender a demonstrao tambm para algoritmos randomizados, mas no o faremos.
Suponha que exista um algoritmo A polinomial que compute msb (x) dado
dexp p,g (x).
Temos p, g e y = dexp p,g (x).
Primeiro, calcule a paridade de x (usando o algoritmo do Teorema 3.13). Se
x mpar (ou seja, era uma potncia mpar de g), divida y por g e agora temos
uma potencia par de g mdulo p.
Esta potncia par de g tem duas razes quadradas r1 e r2 mdulo p (veja o
Teorema B.34) e podemos calcul-las eficientemente. Uma delas ser g x/2 e a
(p1)
x
outra ser g 2 + 2 .
Podemos ento usar o algoritmo A para determinar qual destas razes a
menor (qual tem o bit mais significativo igual a zero). Tomamos esta raiz (g x/2 )
e iniciamos novamente o algoritmo. Desta forma determinamos cada bit de x,
e paramos quando chegarmos a 1.
O algoritmo mostrado em pseudocdigo a seguir, usando lsb (x) para o
algoritmo que calcula paridade de x dado apenas y, e msb (x) para o suposto
algoritmo eficiente para calcular o bit mais significativo de x.
i0
x0 0
enquanto y 6= 1
c lsb (x)
se c = 1 / x era mpar! /
y yg 1 / temos agora potencia par /
xi 1 / achamos um bit de x /
senao
xi 0 / achamos um bit de x /
/ determinamos as duas razes: /
r1 , r2 y (mod p)
in
ar
se msb (x) = 0
y r1
senao
y r2
ii+1
retorne (xi , xi1 , , x0 )
lim
3.3
Pr
e
Ve
rs
Notas
Exerccios
Ex. 13 Reescreva a definio de funo de mo nica usando um experimento (simulao de jogos), da mesma maneira que fizemos para as definies
de segurana no Captulo 2.
Ex. 14 Prove o Lema 3.9.
Ex. 15 O Teorema 3.10 tem apenas um esboo de prova. Complete-a.
4 Em
Lk
i=1
xi ri .
38
a) SAT
b) TSP
c) COBERTURA-POR-VERTICES
d) GERACAO-DE-PERMUTACAO
e) TETRIS
lim
f) CVP
in
ar
Ex. 17 Tente construir funes de mo nica usando os problemas (presumindo que P 6= N P):
g) SBP
Pr
e
iv) Existe algum subconjunto das instancias do problema que possa ser resolvido eficientemente? Novamente, em que isso implica para sua funo?
Ve
rs
v) Tente analisar a segurana de cada bit de entrada das funes. H bits claramente inseguros? H bits hard-core? Se no conseguir mostrar nenhuma
das duas coisas, consegue identificar ao menos se existem bits mais seguros que outros?
Ex. 18 Ao invs de problemas N P-difceis poderamos tentar usar problemas indecidveis em construes criptogrficas. Comente esta ideia.
Ex. 19 (Katz/Lindell) Mostre que a funo de adio f (x, y) = x + y, onde
x e y so representados com a mesma quantidade de bits e interpretados como
naturais, no de mo nica.
in
ar
Captulo 4
lim
Geradores Pseudoaleatreos e
Cifras de Fluxo
Geradores pseudoaleatreos
Ve
rs
4.1
Pr
e
10111010
bits gerados
11000101 ... 110001010100111010100
in
ar
lim
Pr
e
Definio 4.2 (Famlias de distribuies estatisticamente prximas). Duas famlias de distribuies Xn e Yn so estatisticamente prximas se a expresso
X
Pr [Xn = e] Pr [Yn = e]
e
Ve
rs
1 Distribution
41
3. Envie si para A
b0
b = b0 1
b 6= b0 0
lim
sb
in
ar
4. Receba b0 de A
Pr
e
Pr [DISTRIB_DISTINGUISH(D, n, Xn , Yn ) = 1]
Ve
rs
Embora a Definio esteja rigorosamente correta, a Definio , mas compacta, normalmente usada. Esta segunda definio possivelmente fica mais
clara aps a compreenso da primeira.
uYn
in
ar
F14
F15
F16
F17
=
=
=
=
377 ( 1)
610 ( 0)
987 ( 1)
1597 ( 1)
lim
F10
F11
F12
F13
Pr
e
Ve
rs
Definio 4.7 (Gerador pseudoaleatreo). Seja l um polinmio e G um algoritmo polinomial determinstico que recebe como entrada sequncias de bits
s {0, 1}n . A sada de G(s) tem tamanho l(|s|). Ento G um gerador
pseudoaleatreo se:
Para todo n, l(n) > n (ou seja, G sempre expande sua entrada);
A sada de G para n bits computacionalmente indistinguvel de uma
distribuio uniforme de n bits.
43
in
ar
Pr
e
lim
Ve
rs
4.2
Usaremos predicados hard-core de funes de mo nica para construir geradores de nmeros aleatreos, usando a seguinte ideia: dada uma semente x0 e uma
funo de mo nica f , calculamos x1 = f (x0 ) e b0 = h(x0 ). Em seguida, fazemos x2 = f (x1 ) e b1 = h(x1 ), e assim por diante. Como cada bit da sequncia
hard-core de f , nenhum deles deve ser fcil de prever.
x_0
x_i
x_i+1
b_i+1
in
ar
lim
Pr
e
Este Teorema, que no demonstraremos, diz essencialmente que a ideia descrita no incio desta seo est correta.
Agora usaremos dexp para construir um gerador pseudoaleatreo. O predicado hard-core que usaremos o bit mais significativo.
Ve
rs
g xi1
bi
msb (xi ).
(mod p)
45
4.3
xn
x2n1
bi
lsb (xi ).
(mod m)
in
ar
Ve
rs
Pr
e
lim
4.4
Pr
e
4.4.1
lim
in
ar
Nosso ponto de partida so os postulados de Golomb, que expressam propriedades desejveis de sequncias pseudoaleatreas de bits. Esses postulados no so
suficientes para caracterizar sequncias pseudoaleatreas, mas so necessrios.
As definies a seguir, de perodo, subsequncia constante e de autocorrelao, so usadas nos postulados.
Ve
rs
= |{i : xi = xi+k }|
D(k)
47
x0
6=
x1
x2
6=
x3
x3
6=
x4
x4
6=
x5
x7
6=
x8
in
ar
lim
Pr
e
Ve
rs
O postulado G1 tem razo de ser muito clara: se no for satisfeito, a sequncia passa a ser facilmente distinguvel de uma sequncia aleatrea. Ou ainda,
seria fcil prever o prximo bit da sequncia com probabilidade de sucesso maior
que 1/2 + negl(k). O postulado G2 uma generalizao do primeiro para subsequncias de bits. O postulado G3 implica que o clculo da autocorrelao no
permite obter qualquer informao a respeito do perodo da sequncia.
Sequncias que satisfaam estas propriedades do chamadas de pseudo-rudo
(ou P N , de pseudo-noise).
H uma ferramenta conceitual que pode ser usada em geradores pseudoaleatreos uma variante de registradores de deslocamento, normalmente implementados facilmente em hardware. Os registradores de deslocamento, alm de
usados na construo de geradores pseudoaleatreos, tambm so importantes
na descrio de propriedades de sequncias.
Um registrador de deslocamento funciona como uma fila de bits. Em sua
verso mais simples, h um bit de entrada, um de sada, e o estado interno do
registrador uma sequncia de bits3 .
in
ar
Pr
e
lim
(mod 2),
Ve
rs
49
in
ar
Exemplo 4.23 (LFSR). Suponha que um LFSR com oito bits use a funo de
realimentao
si = si2 si5 si6 si8 ,
lim
onde o ou-exlusivo. Esta uma funo linear mdulo dois4 . Este LFSR
representado na Figura a seguir.
Para o estado inicial 00110011, alguns dos prximos estados e bits de sada so
estado
sada
10011001
1
(0 + 1 + 0 + 1 = 0) 01001100
0
(1 + 1 + 1 + 0 = 1) 10100110
0
(0 + 0 + 1 + 0 = 1) 11010011
1
Pr
e
entrada
Teorema 4.24. Toda sequncia peridica de bits pode ser gerada por algum
LFSR com no mximo n estados, onde n o tamanho da sequncia.
Demonstrao. Trivial (um LFSR com n estados e estado inicial igual sequncia gera a prpria sequncia).
Apesar de ser trivialmente possvel obter LFSRs de tamanho n para sequncias de comprimento n, notamos que muitas vezes possvel obter sequncias
de tamanho n com LFSRs muito menores que n.
Ve
rs
4 Porque
(mod 2).
lim
berlekampmassey(s, n):
b(x) 1
c(x) 1
L0
m 1
in
ar
Pr
e
para N de 0 a n 1:
PL
d sn + i=1 ci sni (mod 2)
se d = 1
t(x) c(x)
c(x) c(x) + b(x)xN m
se L N/2:
LN +1L
mN
b(x) t(x)
retorne L, c(x)
Ve
rs
O algoritmo retorna L, a complexidade linear da sequncia, e c(x), o polinmio de conexo do LFSR que a gera.
A complexidade de tempo do algoritmo de Berlekamp-Massey O(n2 ): apesar de havermos explicitado somente um lao (N de zero a n 1), as operaes
em polinmios tem complexidade linear em n.
Definio 4.27 (LFSR de comprimento mximo). Seja R um LFSR de n bits.
Se, ao ser inicializado com qualquer semente diferente de 0n e deslocado repetidamente, o estado interno de R passa por todas as 2n 1 permutaes, ento
R um LFSR de comprimento mximo.
Sequncias geradas por LFSRs de comprimento mximo so chamadas de
m-sequncias.
F Obtendo LFSRs de comprimento mximo
O seguinte Teorema mostra como construir LFSRs de comprimento mximo.
51
Usando LFSRs
4.4.2
in
ar
Podemos inicializar um LFSR com uma semente e usar seus bits de sada, mas
esta construo no seria segura, porque a funo de realimentao linear,
e seria fcil recuperar estados anteriores do registrador. Normalmente alguma
forma de no-linearidade usada em conjunto com geradores do tipo LFSR para
torn-los resistentes a criptanlise.
Cifras de Fluxo
Pr
e
4.5
lim
Ve
rs
Podemos construir cifras de fluxo usando geradores pseudoaleatreos (a segurana da cifra se sustentar na segurana do gerador pseudoaleatreo). Ao invs
de usar o one-time-pad com uma chave do mesmo tamanho que a mensagem,
podemos usar como chave a semente de um gerador pseudoaleatreo. Para cifrar a mensagem, usamos o gerador para expandir a semente at o tamanho da
mensagem.
Com isto podemos construir criptossistemas que satisfazem a Definio 2.12
(segurana contra ataque de texto cifrado conhecido). No entanto, aquela Definio de segurana no trata da situao (muito mais comum) em que queremos
enviar mais de uma mensagem.
4.5.1
Mltiplas Mensagens
1n
M0 = (m10 , m20 , )
M1 = (m11 , m21 , )
Enck (mb )
lim
b R {0, 1}
k R {0, 1}n
in
ar
b0
Pr
e
b=b 1
b 6= b0 0
Pr[PRIV_MULT(, A, n) = 1]
1
+ negl(n).
2
Ve
rs
53
in
ar
lim
(ou seja, a funo f mede quo melhor que 1/2 a probabilidade de o adversrio
obter sucesso no experimento.
Construiremos um algoritmo (ou um teste) T para distinguir uma sequncia
s de bits, determinando se ela foi produzida por G ou se foi escolhida com
distribuio uniforme no espao amostral de tamanho n.
T executa o experimento a seguir.
1. Chame A(1n ) e obtenha duas mensagens de tamanho p(n).;
2. Escolha um bit b aleatoreamente;
Pr
e
3. Calcule c = s mb ;
Ve
rs
b R {0, 1}
c s mb
1n
m0 , m1
c
b0
b = b0 1
b 6= b0 0
in
ar
Para o segundo caso, suponha ento que s seja igual a G(k), com k escolhida aleatoreamente. Sabemos que s no pode ter distribuio uniforme (pelo
Teorema 4.8). Neste caso o experimento exatamente como seria se tivssemos
usado k = Gen(1n ) ao invs de enviar c para A e o experimento o mesmo
que o da Definio 2.12, e
Pr[T (s) = 1] = Pr[PRIV_EAV(, A, n) = 1] =
1
+ f (n).
2
lim
Pr
e
O problema com a Construo 4.31 o fato de ser um criptossistema determinstico: um mesmo par (chave, mensagem) sempre levar ao mesmo texto
encriptado. Como este foi a nica caracterstica relevante do criptossistema que
usamos na demonstrao da Proposio 4.33, temos o seguinte teorema:
Ve
rs
Teorema 4.34 (Insegurana de criptossistemas determinsticos). Qualquer criptossistema simtrico determinstico inseguro de acordo com a Definio 4.30.
Se usarmos uma chave diferente cada vez que encriptarmos uma mensagem
teremos resolvido o problema. Ao cifrar uma mensagem, inicializamos G no
apenas com uma semente (secreta), mas tambm com alguns bits a mais, escolhidos aleatoreamente com distribuio uniforme:
Enck (m) = (iv, G(k, iv) m).
55
in
ar
Gen: dado 1n , escolha uma chave k {0, 1}n com probabilidade uniforme;
Enc(k, m) = (iv, G(k, iv) m), desde que tanto k como m tenham k bits,
e com iv sendo escolhido com distribuio uniforme;
Dec(iv, k, c) = G(k, iv) c, desde que tanto k como c tenham k bits.
A sada de G(k, iv) deve ser indistinguvel de bits aleatreos, mesmo quando
o adversrio conhece iv (isto realmente ocorre, porque G gerador pseudoaleatreo).
lim
4.5.2
Pr
e
Ve
rs
b R {0, 1}
k { 0, 1 }
b=b 1
b 6= b0 0
AEnck
1n
m0 , m1
Enck (mb )
b0
Notas
1
+ negl(n).
2
in
ar
Pr[PRIV_CPA(, A, n) = 1]
Pr
e
lim
Exerccios
Ve
rs
b) 10101010
c) 11101010
d) 100101101101
Ex. 22 Construa programas que calculem a autocorrelao e a complexidade linear de sequncias de bits.
Ex. 23 Descreva em pseudocdigo um algoritmo que verifique, para sequncias de bits, os postulados de Golomb. Calcule a complexidade de tempo de seu
algoritmo.
57
in
ar
i) Porque um LFSR tendo uma sequncia de zeros como estado inicial gerar
somente zeros?
lim
Pr
e
Ex. 29 Mostre que se a sequncia X tem perodo p e k|p, ento a autocorrelao de X com deslocamento k igual a um.
Ex. 30 Demonstre que a Construo 4.35 segura contra ataques de mltiplos textos cifrados conhecidos.
Ve
rs
= s
xi
= axi1 + b (mod n)
5O
Ve
rs
Pr
e
lim
in
ar
in
ar
Cifras de Bloco
lim
Captulo 5
Pr
e
Ve
rs
Ao invs de usarmos uma nica funo para encriptar mensagens, mudaremos a funo cada vez que Enc for usada. Suponha que temos um conjunto de
funes Fi : {0, 1} {0, 1} que poderiam ser usadas para encriptar mensagens. Podemos criar uma funo F : {0, 1} {0, 1} {0, 1} , onde o primeiro
argumento usado para escolher qual Fi queremos usar. F chamada de funo
indexada por chave. Denotaremos Fk (m) ao invs de F (k, m).
Com |k| = n, podemos indexar 2k possveis funes. No entanto, h muito
mais funes com tamanho de entrada e sada igual a n bits:
lim
in
ar
60
Pr
e
Assim, usamos k como ndice para escolher 2n dentre (2n )(2 ) funes. Uma
funo indexada por k desta forma no pode ento induzir distribuio uniforme
sobre todas as funes com entrada e sada de n bits, porque haver funes que
no podero ser representadas.
Queremos que a segurana de nossa construo criptogrfica esteja na escolha
da funo. Assim, se permitirmos ao adversrio acesso a uma funo Fk (sem
o ndice k), ele no deve ser capaz de distinguir Fk de uma funo qualquer
n
escolhida ao acaso dentre todas as (2n )(2 ) possveis funes com entrada e sada
de n bits.
Em outras palavras, a distribuio das 2n funes indexadas por k deve ser
n
indistinguvel da distribuio das (2n )(2 ) , que uniforme. Na Definio 5.1, o
algoritmo D tem o objetivo de tentar realizar esta distino.
Ve
rs
Definio 5.1 (Funo Pseudoaleatrea). Seja F : {0, 1}n {0, 1}n {0, 1}n
uma funo computvel polinomialmente e que preserva o tamanho da entrada.
F pseudoaleatrea se, para todo algoritmo polinomial D, existe uma funo
desprezvel negl tal que
|Pr[D(Fk (), 1n ) = 1] Pr[D(f (), 1n ) = 1]| negl(n),
onde k escolhido com distribuio uniforme sobre {0, 1}n e f escolhida com
distribuio uniforme sobre o conjunto de todas as funes com domnio e contradomnio {0, 1}n . O algoritmo D(Fk , 1n ) roda em tempo polinomial em n
(por isso denotamos 1n e no simplesmente n) e tem livre acesso funo Fk
(mas no ao seu ndice).
O Exerccio 34 pede a demonstrao de que toda funo pseudoaleatrea
de mo nica.
5.1
in
ar
No entanto, este criptossistema seria determinstico, e portanto no seria resistente a ataques de mltiplos textos cifrados conhecidos.
Para introduzir aleatoriedade podemos fazer
lim
r R { 0, 1 } ,
Pr
e
e enviar r junto com o texto encriptado. Como esperamos que a sada da funo
pseudoaleatrea seja indistinguvel de bits aleatreos, o ou exclusivo dela com
m tem o efeito que desejamos.
Temos assim o seguinte criptossistema usando funes pseudoaleatreas:
Construo 5.2. Seja F : {0, 1}n {0, 1}n {0, 1}n uma funo pseudoaleatrea. As seguintes funes so um criptossistema com tamanho de chave e
mensagem igual a n:
Gen(1n ) escolhe uniformemente uma chave em {0, 1}n .
n
hr, Fk (r) mi .
Ve
rs
Lema 5.4. Seja o criptossistema da Construo 5.3 e A um adversrio rodando em tempo polinomial. Seja p() o polinmio dando o nmero de consultas
feitas pelo adversrio A ao orculo Enck () no experimento 4.36. A probabilidade de b = b0
Pr [PRIV_CPA(, A, n) = 1]
1 p(n)
+ n
2
2
62
in
ar
Demonstrao. Cada vez que Enck usada (tanto por como pelo adversrio
A no experimento PRIV_CPA), um novo r escolhido. Dado que temos um r, a
probabilidade de r ser escolhido novamente 21n .
Suponha agora que no experimento o texto encriptado c = h rc , f (rc ) mb i
seja enviado a A.
H dois casos a tratar:
lim
rc nunca usado por A nas consultas ao orculo; este evento o complemento do anterior, e o denotaremos por RU IM . Neste caso o experimento
o mesmo que o Experimento 2.8 para o one-time pad, e a probabilidade
de b = b0 12 .
p(n) 1
+ .
2n
2
Pr
e
Demonstrao. Seja g(n) uma funo que nos diz quo acima de 21 a probabilidade de sucesso do criptossistema no experimento PRIV_CPA:
Ve
rs
1
g(n) = Pr [PRIV_CPA(, A, n) = 1] ,
2
e ento
1
Pr [PRIV_CPA(, A, n) = 1] = g(n) + .
2
A diferena entre a probabilidade de sucesso para , que acabamos de calcular,
e a probabilidade de sucesso para , dada pelo Lema 5.4,
1
1 p(n)
+
g(n)
+
2
2
2n
p(n)
= g(n) n ,
2
63
5.2
Permutaes Pseudoaleatreas
in
ar
lim
Pr
e
Modos de Operao
Ve
rs
5.3
5.2.1
Dada uma permutao pseudoaleatrea Fk para n bits, suponha que uma mensagem tenha tamanho maior que n. Podemos encriptar pedaos diferentes da
mensagem, um de cada vez. Por exemplo,
c1..n = F (k, m1..n )
cn+1..2n = F (k, mn+1..2n )
64
5.3.1
m
2
lim
in
ar
Pr
e
5.3.2
Ve
rs
No modo CBC, a mensagem passa por um ou-exclusivo com o vetor de inicializao antes de ser usada como entrada para Fk . O bloco seguinte encriptado
usando a sada do anterior como vetor de inicializao.
onde
ci = Fk (ivi mi ).
O primeiro vetor de inicializao iv1 escolhido ao acaso e para i > 1, ivi = ci1 .
O modo CBC no paralelizvel: no possvel computar nem parcialmente
um bloco sem antes computar o bloco anterior.
65
5.3.3
in
ar
iv
Pr
e
lim
iv
c
3
ci = Fk (ivi ) mi .
Ve
rs
5.3.4
CTR Contador
lim
in
ar
66
ci = Fk (ctr + i) mi .
Pr
e
Cifras de bloco
5.4
Ve
rs
J definimos o comportamento de permutaes pseudoaleatreas e determinamos diversas maneiras de us-las (os modos de operao). Nos falta ainda tratar
de mtodos para a construo de cifras de bloco usando estas permutaes.
5.4.1
5.4.2
67
Construo
in
ar
Definio 5.11 (Cifra de Bloco). Uma cifra de bloco para chaves com c bits
e mensagens com n bits uma permutao indexada eficiente F : {0, 1}n
{0, 1}t {0, 1}t .
Pr
e
5.5
lim
5.5.1
Confuso e difuso
Ve
rs
5.5.2
68
Pr
e
lim
in
ar
Ve
rs
S-boxes
introduzem
confuso
lim
passo de mistura
traz difuso
69
in
ar
XOR com
i-sima chave
Pr
e
Rede de Feistel
Ve
rs
5.5.3
Sendo as S-boxes invertveis, a cifra como um todo tambm o ser e assim ser tambm uma permutao (porque bijeo e preserva o tamanho da
entrada).
O projeto das S-boxes e dos passos de mistura deve ter como objetivo o
efeito avalanche: uma mudana em um bit na entrada tem alta probabilidade
de modificar qualquer um dos bits da sada.
onde fi uma funo fixa para a cifra e Ki a subchave para a i-sima rodada.
comum que se use o ou-exclusivo como operao em redes de Feistel, mas na
verdade pode-se usar outra operao (redes de Feistel exigem que as sequncias
de n/2 bits mais a operao + usada formem um grupo).
A Figura a seguir mostra uma rodada de uma rede de Feistel.
in
ar
70
lim
Uma caracterstica importante das redes de Feistel que sempre so invertveis, mesmo que suas funes internas no o sejam.
Teorema 5.12. Uma rede de Feistel sempre invertvel, independende da escolha de sua funo interna.
Pr
e
Li1 = f (Ri1 ) Ri
Ve
rs
71
5.5.4
q2
.
2n
Construo de Lai-Massey
in
ar
Di = f (Ri Li )
Ri = Ri1 + Di
lim
Li = Li1 + P (Di )
Ve
rs
Pr
e
1 As
72
5.6
Exemplo: DES
Ve
rs
Pr
e
lim
in
ar
73
Pr
e
lim
in
ar
Escalonamento de chaves
5.6.1
Ve
rs
5.6.2
3DES
74
in
ar
lim
Ve
rs
Pr
e
Se sortearmos duas chaves ao acaso, elas podero satisfazer a Equao 5.6.2 com
1
probabilidade 2n
(para peceber isto, imagine as duas chaves como uma nica
cadeia de 2n bits). O conjunto de possveis solues ter aproximadamente
22n
n
2n = 2 . Se o adversrio tiver mais pares de mensagem e texto encriptado,
este conjunto ficar menor e ele conseguir facilmente identificar a chave.
Tentamos ento de outra forma: encriptar, decriptar e encriptar novamente,
usando chaves diferentes:
2 Meet-in-the-middle
75
5.7
in
ar
O 3DES opera exatamente desta forma, e com trs chaves de 56 bits passamos
a ter 168 bits no total. O espao de chaves de 2168 bits mais do que suficiente
para os padres modernos. A encriptao tripla desta maneira no vulnervel
ao ataque de encontro no meio.
Infelizmente, o 3DES muito lento (so necessrias trs operaes onde antes
usvamos uma).
Exemplo: AES
5.7.1
lim
Descrio simplificada
Pr
e
Esta Seo contm uma descrio simplificada do AES. A Seo 5.7.2 contm a
descrio algbrica.
O AES opera em matrizes 4 4 onde cada elemento um byte. Representamos ento um bloco do AES da seguinte maneira:
a0,0
a1,0
a2,0
a3,0
a0,1
a1,1
a2,1
a3,1
a0,2
a1,2
a2,2
a3,2
a0,3
a1,3
a2,3
a3,3
// primeira rodada:
AddRoundKey
Ve
rs
// rodadas intermediarias:
para i de 2 a N 1:
SubBytes
ShiftRows
MixColumns
AddRoundKey
// rodada final:
SubBytes
ShiftRows
AddRoundKey
76
SubBytes
in
ar
Este passo substitui cada um dos bytes da entrada, usando S-boxes. Esta uma
funo no-linear aplicada em cada byte. As S-boxes foram projetadas com dois
objetivos em mente:
No-linearidade: a amplitude mxima de correlao entre entrada e sada
foi minimizada tanto quanto possvel; alm disso, a probabilidade de propagao de diferenas foi tambm minimizada.
lim
Observamos tambm que as substituies feitas por SubBytes so uma permutao catica, e portanto no h a possibilidade de algum byte permanecer
inalterado.
ShiftRows
Pr
e
1
5
9
13
1
2 3 4
/
6
6 7 8
//
11
10 11 12
///
16
14 15 16
2
7
12
13
3
8
9
14
4
5
10
15
Ve
rs
MixColumns
Este passo aplica uma transformao linear em cada coluna da matriz, mas
usando uma operao especial de multiplicao3 . De maneira simplificada, a
multiplicao dos bytes por 1, 2 e 3 definida como segue:
a1=a
a2=a1Y
a 3 = (a 1) Y a,
3 Este operao descrita de forma mais aprofundada na Seo 5.7.2, que expe uma
descrio algbrica do AES.
77
A tansformao usa
usual:
02
01
01
03
a0
b0
03 01 01
02 03 01
a1 = b1
01 02 03 a2 b2
a3
b3
01 01 02
in
ar
lim
02 03 01 01
0A
b0
01 02 03 01 B7 b1
01 01 02 03 01 = b2
03 01 01 02
39
b3
O primeiro byte da sada (b0 )
b0 = 0A 02 B7 03 01 01 39 01
Pr
e
Ve
rs
b0 =00010100
01110101
00000001
00111001
=00011001 = 19 .
78
5.7.2
F Descrio algbrica
in
ar
Esta Seo apresenta algumas das operaes do AES em sua formulao algbrica, e est marcada como opcional porque requer conhecimento de corpos
finitos4 .
lim
Pr
e
1
1 0 0 0 1 1 1 1
1
1 1 0 0 0 1 1 1
0
1 1 1 0 0 0 1 1
0
1 1 1 1 0 0 0 1
A=
, b = 0
1
1
1
1
1
0
0
0
1
0 1 1 1 1 1 0 0
1
0 0 1 1 1 1 1 0
0
0 0 0 1 1 1 1 1
Quando x = 0, o valor subsitudo b.
MixColumns
Ve
rs
79
in
ar
E0
21
0A
72
interpretada como
72 x3 + 0A x2 + 21 x + E0
= 114x3 + 10x2 + 33x + 224.
lim
Cada um dos coeficientes, por sua vez, pode ser visto como um polinmio.
A multiplicao de uma coluna por outro polinmio de grau quatro feita no
AES da maneira usual, reduzindo o resultado mdulo x4 +1 para que o resultado
seja um polinmio de grau trs (e que possa portanto ser representado como uma
coluna).
A operao MixColumns multiplica o polinmio em cada coluna pelo polinmio fixo c(x):
c(x) = 03 x3 + 01 x2 + 01 x + 02 .
Pr
e
02 = x
03 = x + 1.
Ve
rs
x
x+1
1
1
1
x
x+1
1
1
1
x
x + 1
x+1
1
1
x
H algo importante a observar: nunca multiplicamos duas variveis, e sim uma
varivel por uma constante. Assim, precisamos apenas determinar como multiplicar uma varivel por 2 (x no corpo de Rijndael) e por 3 (x + 1 no corpo de
Rijndael). Seja a um elemento qualquer em GF (28 ), que interpretamos como
a7 x7 + a6 x6 + a5 x5 + a4 x4 + a3 x3 + a2 x2 + a1 x1 + a0 .
ax = a7 x8 + a6 x7 + a5 x6 + a4 x5 + a3 x4 + a2 x3 + a1 x2 + a0 x
7
(mod m(x))
80
in
ar
Note que temos nos coeficientes ou ai xi+1 (que pode ser obtido deslocando os
bits da representao binria para a esquerda) ou (ai + a7 )xi+1 . As posies em
que a7 aparece somado com ai so 0, 1, 3 e 4. O nmero binrio 11011 1b .
Podemos calcular ax ento fazendo duas operaes:
lim
que pode ser implementado computando primeiro ax e depois fazendo ou exclusivo com a.
Na prtica, estas operaes so implementadas em tabelas6 , onde cada um
dos 256 elementos tem uma tabela para a multiplicao por 2.
Pr
e
x7 + x6 + x5
x5 + 1
x3 + x
x6 + x5 + x4 + x + 1
x7 + x6 + x5
x
x+1
1
1
1
x
x+1
1
x5 + 1
1
1
x
x+1
x +x
6
5
4
x+1
1
1
x
x +x +x +x+1
Ve
rs
=x7 + x6 + x
=11000010 = 194 = c2 .
5.8
FOX (IDEA-NXT)
6 Isto garante que o tempo e energia usados na computao no dependam dos argumentos,
evitando ataques de canal lateral.
81
Pr
e
lim
in
ar
Da memsa forma que nas outras cifras de bloco apresentadas, h um algoritmo para escalonamento de chaves.
A Figura a seguir mostra uma rodada do FOX64.
Note que inversa de si mesma, por isso a nica operao usada. A funo
f 64 na Figura chamada de funo de rodada, e realiza ou exclusivo com a
chave de rodada, permutaes e transformaes lineares.
Notas
Ve
rs
82
Exerccios
n
lim
in
ar
Pr
e
Ve
rs
83
Ex. 43 Voc consegue usar o mesmo raciocnio usado na resposta do Exerccio 42 para rodadas quase completa do AES, com todos os passos menos
AddRoundKey? E para rodadas completas?
in
ar
lim
Ve
rs
Pr
e
9 Dentre os exerccios do Captulo 6, que trata de Criptanlise, h um (59) que sugere tentar
quebrar estas cifras.
Ve
rs
Pr
e
lim
in
ar
84
in
ar
Captulo 6
lim
Noes de Criptanlise
6.1
Pr
e
Este Captulo traz uma breve discusso de alguns mtodos comuns de Criptanlise. Para isso construiremos (de maneira intencionalmente simplista e descuidada) uma rede de substituio e permutao, que analisaremos usando criptanlise linear e criptanlise diferencial. Tambm construiremos uma cifra de
fluxo, que analisaremos usando criptanlise algbrica.
Ve
rs
Nossa rede ter entrada de 16 bits e quatro rodadas. Usaremos uma chave de 80
bits com escalonamento absolutamente simples: cada rodada usar uma parte
da chave. A primeira rodada usar os primeiros 16 bits; a segunda rodada, os
prximos 16 bits, e assim por diante. Aps a ltima rodada aplicaremos uma
ltima subchave, usando o total de 16 5 = 80 bits. Inicialmente, presumimos
que o esforo para obteno da chave seja O(280 ), mas mostraremos que tal
expectativa ingnua.
Os passos realizados em cada rodada da rede so descritos a seguir.
Substituio: A entrada ser dividida em 4 S-boxes iguais (normalmente
as S-boxes usadas em uma rodada so diferentes, mas usaremos apenas
uma para simplificar a exposio da rede). Cada S-box far uma permutao e teremos 4 bits tambm na sada de cada S-box. A tabela a seguir
mostra a S-box usada. Como a S-box tem entrada e sada de 4 bits usamos todos os valores em hexadecimal, j que 24 = 16. Assim, o valor 0
deve ser lido como 0000, 1 como 0001, e assim por diante at E = 1110 e
F = 1111. A linha superior mostra as entradas e a linha inferior mostra
as sadas correspondentes.
0 1
2 8
2
D
3 4 5
5 4 A
6
C
7
F
85
8
E
9 A
3 B
B
9
C
7
D
1
E
6
F
0
86
in
ar
5
6
7
8
9
10
11
12
13
14
15
16
lim
1
2
3
4
Ve
rs
Pr
e
Esta tabela semelhante quelas vistas no Captulo 5: os nmeros representam as posies dos bits da entrada, e a ordem em que aparecem na
tabela a ordem em que aparecero na sada. Como exemplo, o terceiro
bit da entrada ser o nono da sada, o quinto bit da entrada ser o segundo
da sada, e o primeiro e ltimo bits no so trocados de lugar. O diagrama
a seguir ilustra como os bits so reordenados.
87
Ve
rs
Pr
e
lim
in
ar
88
6.2
Criptanlise linear
a1 x1 + a2 x2 + a3 x3 + a4 x4
in
ar
ou
lim
a1 x1 a2 x2 a3 x3 a4 x4 ,
Pr
e
= (0 x1 0 x4 ) x2 x3
= 0 x2 x3
= x2 x2
= 1 0 = 1.
Ve
rs
Presumimos que um atacante tem uma grande quantidade de pares de mensagem/texto cifrado, todos gerados com a mesma chave. Aps encontrar uma
relao probabilstica linear entre bits da entrada e bits da sada, conseguiremos
obter a ltima subchave com esforo menor que o de uma busca exaustiva.
89
6.2.1
O Lema do Empilhamento
in
ar
lim
p = Pr[mi mk cl cm = 0].
Pr
e
X1 = X2 .
Ve
rs
Pr[X2 = 0] = p2 .
Se X1 , X2 so independentes temos
Pr[X1 = 0, X2 = 0] = p1 p2
Pr[X1 = 0, X2 = 1] = p1 (1 p2 )
Pr[X1 = 1, X2 = 0] = (1 p1 )p2
Pr[X1 = 1, X2 = 1] = (1 p1 )(1 p2 ).
E portanto
Pr[X1 X2 = 0] = Pr[X1 = X2 ]
= p1 p2 + (1 p1 )(1 p2 ).
90
in
ar
Pr[X1 X2 = 0] =
ou seja, 1,2 = 21 2 .
O Lema do Empilhamento, que enunciamos a seguir, d uma forma fechada
para o clculo do vis de diversas variveis aleatreas binrias independentes.
lim
Lema 6.2. (Lema do Empilhamento) Sejam X1 , X2 , . . . , Xn variveis aleatreas binrias independentes; seja i o vis de Xi e 1,2,...,n o vis de X1 Xn .
Ento
n
Y
1
i ,
Pr[X1 Xn ] = + 2n1
2
i=1
ou seja,
1,2,...,n = 2n1
n
Y
i .
Pr
e
i=1
Demonstrao. Provamos por induo no nmero de variveis. Para uma varivel o resultado claramente verdadeiro: (211 )1 = 1 .
O caso com duas variveis j mostramos no texto, antes do enunciado do
Lema.
Nossa hiptese de induo de que o Lema vale para k variveis, com k 2.
Mostraremos ento a validade do Lema para k + 1.
Para determinar o vis de X1 X2 Xik+1 , reescrevemos A = X1
X2 Xik e
X1 X2 Xik+1 = A Xik+1 .
Ve
rs
k
k+1
Y
Y
2 2k1
ij ik+1 = 2k
ij .
6.2.2
j=1
i=1
Criptanlise da rede
A tabela a seguir mostra o mapeamento dos bits de entrada nos de sada para
a S-box que usamos em nossa cifra.
X2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
X3
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
X4
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Y1
0
1
1
0
0
1
1
1
1
0
1
1
0
0
0
0
Y2
0
0
1
1
1
0
1
1
1
0
0
0
1
0
1
0
Y3
1
0
0
0
0
1
0
1
1
1
1
0
1
0
1
0
Y4
0
0
1
1
0
0
0
1
0
1
1
1
1
1
0
0
Y
2
8
D
5
4
A
C
F
E
3
B
9
7
1
6
0
lim
X1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Pr
e
X
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
91
in
ar
Olharemos agora para combinaes lineares (ou seja, somas de parte dos
bits), tanto da entrada como da sada. Queremos verificar quando a equao
Ve
rs
Y1 Y2 Y3
1
1
0
1
1
0
0
1
1
1
0
1
0
0
0
0
Y1
0
1
1
0
0
1
1
1
1
0
1
1
0
0
0
0
Y2
0
0
1
1
1
0
1
1
1
0
0
0
1
0
1
0
Y3
1
0
0
0
0
1
0
1
1
1
1
0
1
0
1
0
in
ar
X4
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Pr
e
X3
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
lim
92
Ve
rs
Para uma varivel A qualquer (ou seja, para uma expresso linear qualquer)
o nmero de coincidncias pode ficar entre zero e dezesseis. Se subtrairmos
oito do valor, teremos um nmero entre 8 e +8 que se dividido por 16
resultar no vis da varivel (por exemplo, para A definida acima o valor seria
(4 8)/16 = 4/16 = 1/4).
3
0
0
0
0
2
2
+2
6
0
0
0
0
2
2
+2
+2
4
0
4
+2
2
+2
+2
0
0
2
+2
+4
0
0
0
+2
+2
5
0
2
0
+2
0
+2
0
2
+4
2
0
2
+4
+2
0
+2
6
0
2
0
+2
2
0
+2
0
4
2
0
2
+2
0
+2
4
Y
7
8
0
0
0
0
2 +2
2 +2
+4 2
0
2
+2
0
2
0
2 2
2 +2
0
0
0
+4
+2 +4
2
0
4 2
0
+2
9
0
+2
4
+2
0
+2
0
2
0
+2
+4
+2
0
+2
0
2
A
0
2
0
+2
2
+4
2
0
0
2
0
+2
2
4
2
0
B
0
0
+2
+2
0
0
2
2
2
+2
0
4
2
+2
4
0
Ve
rs
C
0
0
0
0
0
+4
+4
0
0
+4
4
0
0
0
0
0
D
0
+2
2
+4
+2
0
0
+2
2
0
0
2
0
2
+2
+4
E
0
+2
2
4
4
+2
2
0
2
0
0
2
+2
0
0
+2
F
0
4
4
0
2
2
+2
+2
0
0
0
0
2
+2
2
+2
in
ar
2
0
2
2
0
0
2
2
0
+2
+4
0
2
+2
4
0
2
lim
1
0
+2
+2
0
2
0
+4
+2
+2
0
+4
2
0
2
2
0
Pr
e
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
+8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
93
Denotaremos por I n a sequncia de 16 bits na entrada das S-boxes da nsima rodada. De maneira semelhante, On a sequencia de 16 bits saindo das
S-boxes da n-sima rodada. Tambm denotaremos por Ijn e Ojn o j-simo dos
16 bits de I n e On .
Usaremos notao semelhante para as chaves de rodada: kjn o j-simo bit
da chave da n-sima rodada.
Ve
rs
Pr
e
lim
in
ar
94
Note que a trilha mostrada na rede no representa que tal entrada deve
influenciar exatamente aqueles bits na rede. Significa apenas que escolhemos um
95
in
ar
caminho que, com alta probabilidade, nos garantir uma relao entre entrada
e sada.
Considere os bits 1 e 2 da entrada (ambos entram na S-box S11 como X1 e
X2 aps ou-exclusivo com bits de k 1 ) e as seguintes variveis aleatreas (cada
uma com vis indicado entre parnteses):
(+4/16) em S1,1 : X1 X2 = Y1
(+4/16) em S2,1 : X1 = Y2 Y4
(4/16) em S3,2 : X1 = Y2 Y3
(4/16) em S3,4 : X1 = Y2 Y3 .
Reescrevemos:
lim
3
3
3
(1/4) A4 = I13
O14
O15
= 0.
Pr
e
fcil identificar cada varivel aleatrea na ltima figura. Fazemos um ouexclusivo de todas elas, definindo uma varivel aleatrea A:
A = [A1 A2 A3 A4 = 0]
O vis desta nova varivel pode ser determinado usando o Lema do Empilhamento, e igual a
1,2,3,4 =
23
4
Y
i=1
Ve
rs
1
1
1
1
=8
4
4
4
4
1
.
=
32
Expandimos A1 A2 A3 A4 , obtendo
(I11 I21 O11 )
(I12 O22 O42 )
(I53 O63 O73 )
3
3
3
(I13
O14
O15
)
Agora desenvolvemos esta expresso, reescrevendo as variveis Ikj como ouexclusivo do passo anterior com a subchave. Por exemplo,
I11 m1 k11
I53 O22 k53 .
96
in
ar
3
3
O11 O11 O22 O42 O22 O63 O73 O42 O14
O15
.
lim
Como x x = 0,
3
(m1 m2 k11 k21 k12 k53 k13
)
3
3
O63 O73 O14
O15
.
Pr
e
3
I84 = O14
k84
4
4
I10
= O73 k10
4
3
4
I12
= O15
k12
,
Ve
rs
4
4
O73 I10
k10
3
O14
I84 k84
3
4
4
O15
I12
k12
.
Assim,
3
(m1 m2 k11 k21 k12 k53 k13
)
4
4
4
4
[I64 k64 ] [I10
k10
] [I84 k84 ] [I12
k12
] = 0.
(6.1)
97
1/32.
in
ar
Os bits da ltima chave (K5 ) que so combinados com a sada das S-boxes
5
S4,2 e S4,3 so k55 k12
. H 28 = 256 possveis valores para estes bits, que so
chamados de subchaves candidatas.
Pr
e
lim
Ve
rs
98
Apresentamos a seguir os resultados de uma simulao, completando o exemplo. Nesta simulao, usamos
in
ar
lim
Pr
e
Ve
rs
|A |
0.02325
0.02325
0.025
0.02525
0.0255
0.02625
0.0265
0.02675
0.02775
0.03025
0.033
0.035
99
lim
6.2.3
in
ar
Podemos repetir este processo para tentar obter subchaves para as outras
duas S-boxes da ltima rodada, e posteriormente repetir o processo para as
outras rodadas. Quando a chave tem muitos bits, o trabalho total dispendido
na criptanlise linear de sucesso muito menor do que a busca exaustiva pela
chave. A chave tem 80 bits, e a busca exaustiva teria complexidade de tempo
O(280 ). Com o trabalho j feito, fizemos uma busca em tempo O(28 ) para
determinar oito dos bits. Restam 72 bits, e se os buscarmos exaustivamente
teremos usado no total tempo O(272 ) + O(28 ), muito menor que O(280 ). Se
conseguirmos repetir este processo para as outras S-boxes, duas por vez, a busca
poderia levar tempo O(16 28 ) um esforo muito pequeno quando comparado
busca exaustiva.
6.3
Pr
e
A trilha que escolhemos no exemplo dado tinha quatro S-boxes. Deve ser claro
que a probabilidade de sucesso do ataque linear menor quando h mais S-boxes
envolvidas e quando o vis das variveis envolvidas menor.
O criptanalista deve encontrar trilhas que resultem em vis alto. para cifras
mais complexas e com mais rodadas do que a que construmos, isso pode ser
feito usando tcnicas de otimizao combinatria (metaheursticas). Por exemplo, usando algoritmos genticos (cada trilha um indivduo, e a funo de
adequao ao ambiente o vis da trilha).
Criptanlise diferencial
Ve
rs
100
X = X 0 X 00 .
in
ar
lim
Ve
rs
Pr
e
Escolhemos agora um X e calculamos todos os possveis X 0 e X 00 que resultam em X . Damos um exemplo usando a S-box que definimos anteriormente:
se escolhermos X = 0011, listamos todos os 16 valores de X 0 , e para cada um
deles teremos X 00 = X 0 0011. Isto feito na tabela a seguir.
X0
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
X = 0011
X 00 = X 0 X
0011
0010
0001
0000
0111
0110
0101
0100
1011
1010
1001
1000
1111
1110
1101
1100
in
ar
Y
0111
0101
0101
0111
1011
0110
0110
1011
0111
1000
1000
0111
0111
0111
0111
0111
lim
X0
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
101
Pr
e
2
2
8
2
2
1
0
0
4
0
2
0
0
2
0
2
2
0
0
0
0
4
2
0
2
0
0
4
2
0
0
0
0
2
0
0
0
2
4
3
0
2
0
0
0
0
2
0
2
0
2
2
0
4
2
0
Ve
rs
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
0
2
0
2
0
2
0
2
0
4
4
0
5
0
0
4
2
0
0
0
2
0
2
0
0
4
2
0
0
6
0
4
0
2
2
0
0
0
2
2
2
0
2
0
0
0
7
0
0
0
8
0
0
2
2
0
0
0
0
2
2
0
0
Y
8
0
2
2
2
0
2
4
0
0
0
0
2
0
0
2
0
9
0
0
0
0
4
2
2
0
0
2
2
0
4
0
0
0
A
0
2
2
0
2
0
0
2
2
0
2
0
2
0
2
0
B
0
0
0
2
0
2
0
0
4
0
2
4
2
0
0
0
C
0
0
0
0
0
2
2
0
4
2
0
2
0
0
2
2
D
0
2
2
0
2
0
0
2
0
2
0
2
0
2
0
2
E
0
2
0
0
0
0
2
4
0
2
2
2
0
0
0
2
F
0
0
2
0
0
4
2
0
2
0
0
0
0
2
2
2
102
in
ar
lim
Pr[Y |X ] =
Pr
e
Teorema 6.5. Sejam O0(i1) e O00(i1) sadas para a rodada i 1 da rede; I 0(i)
e I 00(i) as entradas na i-sima rodada. Sejam
I = I 0(i) I 00(i)
O = O0(i1) O00(i1)
Ve
rs
103
Ve
rs
Pr
e
lim
in
ar
Usaremos 0110 como diferencial de entrada na S-box S14 , e portanto o diferencial de entrada para a rede toda 0000 0000 0000 0110.
1
os bits de 13 a 16 de O1 que so a sada da S-box
Denotaremos por O13..16
S14 e usaremo notao semelhante para outros I i e Oi .
104
Na sada de S14 (ou seja, nos bits 13..16 de O1 ), teremos a diferena 0100
com probabilidade 4/16 = 1/4.
in
ar
1
1
Pr (O13..16
) = 0100|X = 0000 0000 0000 0110 = .
4
4
1
1
=
,
4
256
lim
3
3
1
Pr (O5..8
) = (O9..12
) = 1100 (O13..16
) = 0110] =
Pr
e
m gen_msg(n)
m gen_msg_dx(m , 6 )
c enc_vector(m )
c enc_vector(m )
Ve
rs
Com alta probabilidade (1/256), a diferena entre os bits de S41 e S42 ser
0110 0110.
Para cada subchave candidata, decriptamos parcialmente muitos pares (c , c )
4
4
resultando em (4 , I
) e observamos a diferena I4 I
. Quando esta for igual
diferena entre m e m , incrementamos o contador para esta subchave.
105
in
ar
1
= 256.
(1/256)
lim
Pr
e
Ve
rs
subchave
11110100
11111011
11111100
11111110
00101011
01010100
01100100
01101011
01011011
Fk /n
0.00125
0.00125
0.00125
0.00125
0.0025
0.0025
0.0025
0.0025
0.00375
Assim como na Seo sobre criptanlise linear, conseguimos extrair oito bits da
chave.
6.4
Criptanlise Algbrica
106
KB = 0110
KC = 1111
KD = 1010
ento
k 0 = 0001 0110 1111 1010.
in
ar
KA = 0001
lim
k 2 = (KB KC KD KA )
k 3 = (KC KD KA KB )
k 4 = (KD KA KB KC )
Observamos que
Pr
e
k5 = k2 .
0
0
0
0
k 2 = (k5..8
k9..12
k13..16
k1..4
)
0
0
0
0
k 3 = (k9..12
k13..16
k5..8
k5..8
)
0
0
0
0
k 4 = (k13..16
k5..8
k5..8
k9..12
).
Ve
rs
Precisamos de modelos das S-boxes e da permutao como equaes envolvendo os bits de entrada e sada de cada uma. Sendo Yi o i-simo bit de sada
da S-box e Xi o i-simo bit de entrada, a S-box pode ser descrita como
Y1 = X1 X2 X4 X1 X2 X3 X1 X2 X3 X1 X3 X4 X1 X3 X4
Y2 = X1 X3 X2 X4 X1 X3 X4
Y3 = X1 X2 X4 X1 X4 X2 X3 X4 X1 X2 X3
Y4 = X2 X3 X1 X3 X4 X1 X2 X3 X1 X3 X4 .
Mas como sabemos que o primeiro bit de uma S-box pode ser descrito em termos
107
in
ar
6.5
lim
Pr
e
As tcnicas de criptanlise linear e diferencial no so mtodos fechados. Podemos usar variantes e combin-las com outras tcnicas. Alguns exemplos so
listados a seguir.
Criptanlise linear diferencial:
Ve
rs
Notas
108
in
ar
Pr
e
lim
Uma introduo Criptanlise Algbrica com exemplos de cifras reais quebradas dada no livro de Gregory Bard [38].
A tcnica de chaves relacionadas foi desenvolvida independentemente por
Biham e Knudsen em 1993 [?, ?].
H diversas outras tcnicas de Criptanlise alm das duas cobertas neste
Captulo. A criptanlise diferencial truncada semelhante criptanlise diferencial, exceto que apenas alguns dos bits das diferenas so levados em considerao [39]. possvel combinar criptanlise diferencial e linear, resultando no
mtodo descrito por Hellman e Langford, chamado de criptanlise diferenciallinear[40]. O uso de metaheursticas em criptanlise discutido extensivamente
na tese de John Clark [41]. Bruce Schneier publicou na revista Criptologia um
guia para estudo individual de Criptanlise [42], onde observa que s se aprende
Criptanlise atravs da prtica, e prope diversas tarefas criptanalticas para o
leitor.
O mtodo de Quine-McCluskey, mencionado no exemplo de criptanlise algbrica, usualmente descrito em livros sobre circuitos digitais, como o de Nelson
e outros [43], em seu terceiro Captulo. H outros mtodos que do o mesmo
resultado por exemplo, os mapas de Karnaugh, descritos no livro de Idoeta e
Capuano [44].
Ve
rs
Exerccios
b) Pr[X1 Y1 = 0]
c) Pr[X1 Y2 = 0]
d) Pr[X2 X3 Y2 Y3 = 0]
livre.
109
in
ar
Ex. 50 Escolha uma das S-boxes do DES e construa sua tabela de aproximao linear.
Ex. 51 Prove o Lema 6.3.
lim
Ex. 52 Mostre como usar a propriedade descrita no Exerccio 40 para diminuir pela metade o tempo necessrio para busca exaustiva pela chave do DES
em um ataque de texto cifrado conhecido. Quantos pares de mensagem e texto
cifrado so necessrios?.
Ex. 53 Nos exemplos dados neste Captulo, encontramos maneiras de determinar bits de subchaves da ltima rodada da cifra. Complete os exemplos,
mostrando como o processo pode ser usado para obter os outros bits tambm.
Pr
e
Ex. 54 Suponha que algum tenha proposto um ataque criptanaltico terico a uma cifra de bloco. O bloco da cifra tem 80 bits e a chave, 128 bits. O
ataque proposto funcionaria com 2100 operaes em 2110 pares de mensagem e
texto encriptado. Aponte um problema com este ataque.
Ex. 55 (Programao) Construa ferramentas computacionais que automatizem parte do processo de Criptanlise.
Ve
rs
Ex. 57 Construa uma cifra usando o esquema de Lai-Massey onde a permutao a S-box usada neste Captulo e a funo interna uma substituio
de bytes no linear e sem ponto fixo (semelhante ao passo SubBytes do AES).
Tente fazer a criptanlise desta cifra com trs, cinco e oito rodadas.
Ex. 58 Como construes de Lai-Massey no podem ter sada pseudoaleatrea com menos de trs rodadas, adapte a cifra do Exerccio 57 para funcionar
com uma ou duas rodadas e faa uma anlise estatstica da sada da cifra. Tente
em seguida identificar maneiras de usar o que descobriu para quebrar a cifra.
Ex. 59 Faa a criptanlise das cifras que voc desenvolveu no Exerccio 46,
no Captulo sobre cifras de bloco.
Ex. 60 Faa a criptanlise da cifra que voc desenvolveu no Exerccio 33,
no Captulo sobre cifras de fluxo.
110
in
ar
Ve
rs
Pr
e
lim
Captulo 7
lim
Resumos Criptogrficos
(funes de hashing)
in
ar
Ve
rs
Pr
e
lim
in
ar
s enviada para A;
Pr
e
s Gen(1n )
1n
x, x0
Ve
rs
H s (x) = H s (x0 ) 1
H s (x) 6= H s (x0 ) 0
113
in
ar
7.1
Pr
e
lim
Suponha que temos uma funo de hashing H com sada de tamanho n, e seja
N = 2n o tamanho do conjuntos de possveis sadas de H.
Escolha k diferentes entradas x1 , x2 , . . . , xk , todas com tamanho 2n e calcule
seus resumos y1 , y2 , . . . , yk usando H. Suporemos que os valores yi = H(xi ) so
distribudos uniformemente em {0, 1}2n .
Esta situao est claramente relacionada ao problema do aniversrio, descrito no Apndice A.
Suponha que o adversrio queria tentar encontrar colises em uma funo
de hashing com n bits de sada calculando sucessivamente resumos de entradas
escolhidas ao acaso. Denotaremos por N = 2n a quantidade de possveis sadas
da funo, e por C o evento que representa a situao onde o
adversrio encontrou uma coliso. Presumiremos que o adversrio usar k = N amostras.
Temos ento que sua probabilidade de sucesso ser
N
N N
Pr[C]
.
2N
4N
Ve
rs
50
Na verdade, como 2 exatamente 2100 , a probabilidade de sucesso do adversrio ser aproximadamente 1/2.
O projeto de uma funo de hashing deve, assim, levar em conta este fato.
Suponha que uma funo de hashing produza sada de 512 bits. Isso significa
que para conseguir probabilidadede sucesso no mximo igual a 1/2 em um
ataque o adversrio precisaria de 2512 = 2256 tentativas tal ataque no seria
factvel.
7.2
in
ar
Veremos agora como seria a probabilidade de sucesso medida que diminumos a quantidade de tentativas: Para 2255 , a probabilidade < 1/4. Para 2254
menor que 1/32. Para 2200 menor que 9.6 1035 . Para 2128 menor que
4.3 1078 .
A proteo contra ataques de aniversrio se d, ento, pela escolha do tamanho da sada da funo. No entanto, apenas medida necessria para a
segurana de uma funo de hashing, e no suficiente.
lim
Pr
e
Ve
rs
Teorema 7.6. Seja (Gen, h) uma funo de hashing de entrada de tamanho fixo
resistente a coliso e (Gen, H) construda usando a transformao de MerkleDamgrd. Ento (Gen, H) tambm resistente a coliso.
115
Pr
e
lim
in
ar
Ve
rs
7.3
in
ar
(mod q).
Teorema 7.8. Presumindo que vale a hiptese do logaritmo discreto, a Construo 7.7 uma funo de hashing com resistncia a colises.
Demonstrao. Seja a Construo 7.7 e A um algoritmo polinomial para
obteno de colises. Seja
e(n) = Pr[HASH_COL(A, , n) = 1].
lim
Pr
e
DL(G, q, g, h):
hx, x0 i A(G, q, g, h)
se x 6= x0 e x, x0 colidem em H:
se h = 1 retorne zero
senao
interprete x como (x1 ||x2 )
interprete x0 como (x01 ||x02 )
retorne (x1 x01 )(x02 x2 )1 (mod q)
Ve
rs
Seja d =
teramos
x02
g x1 hx2
= g x1 hx2
x1 x01
x02 x2
= h
(7.1)
.
(7.2)
hx2 x2 = h0 = 1,
0
e como g x1 x1 = hx2 x2 ,
g x1 x1 = 1
implicaria que (x1 x01 ) (mod q) seria zero, e teramos ento x = (x1 ||x2 ) =
(x01 ||x02 ) = x0 contradizendo o que j estabelecemos (x 6= x0 ).
Como d 6 0 (mod q) e q primo, existe d1 (mod q).
Elevamos a Equao 7.2 a este valor (d1 (mod q)) e obtemos
0
[d1 (mod q)]
0
1
g (x1 x1 )d
=
hx2 x2
= h[dd
= h.
(mod q)]
x01 )(x02
(x1
(mod q)
x2 )1
(mod q),
in
ar
Como g (x1 x1 )d
117
7.4
lim
Esta funo muito pouco eficiente para ser usada na prtica, porque exige
o clculo de exponenciao modular. As prximas sees descrevem outras
funes de hashing.
Pr
e
Ve
rs
in
ar
Ve
rs
Pr
e
lim
5A827999
6ED9EBA1
Kt =
8F1BBCDC
CA62C1D6
para
para
para
para
0 t 19
20 t 39
40 t 59
60 t 79
7.5
Pr
e
lim
0 t 19
20 t 39
40 t 59
60 t 79
in
ar
(B C) ((B) D)
B C D
ft (B, C, D) =
(B C) (B D) (C D)
BC D
Ve
rs
Esta Seo descreve uma cifra de bloco menos conhecida do que as anteriores.
Embora no haja cifra de bloco com segurana demonstrvel baseando-se em
funes de mo nica, h um mtodo para construir cifras de bloco usando
cifras de fluxo e funes de hashing com a garantia de que, se a cifra de bloco
for quebrada, uma das outras duas ferramentas tambm o ser.
Dizemos que Aardvark uma cifra de bloco, embora se parea mais com um
gabarito (ou mtodo para construo) de cifra de bloco para cada combinao
de cifra de fluxo, funo de hashing e funo de hashing com senha, possvel
construir uma cifra de bloco usando o mtodo Aardvark. A Figura a seguir
ilustra esta construo.
c =
H(m)
m S(Hk0 (c0 )).
in
ar
Gen(1n ) retorna k R { 0, 1 } .
lim
Pr
e
Ve
rs
7.6
O Orculo Aleatreo
H uma situao bastante comum no projeto de esquemas e protocolos criptogrficos que usam funes de hashing como primitiva. Ainda que presumamos
que a funo de hashing funo de mo nica e resistente a colises, parece
121
Ve
rs
Pr
e
lim
in
ar
muito difcil encontrar uma demonstrao de segurana. Nestas situaes possvel usar uma metodologia menos rigorosa que o padro, mas que nos permite
encontrar alguma demonstrao de segurana, ainda que usando hipteses que
no podem ser concretizadas.
importante frisar que o mtodo do orculo aleatreo no leva a demonstraes rigorosas como no modelo padro (onde no se usam orculos aleatreos),
e que h exemplos de construes com demonstrao de segurana neste modelo que tornam-se inseguras quando o orculo aleatreo instanciado com uma
funo de hashing independente de que funo de hashing seja escolhida.
Seja F AB o conjunto de todas as funes com domnio A e contradomnio
B. Na metodologia do orculo aleatreo, escolhemos uniformemente uma funo
em F AB quando precisamos de uma funo de hashing.
Evidentemente no podemos representar tal funo explicitamente, uma vez
que h um nmero exponencial de funes. Podemos imaginar, no entanto,
um simulador, que responde aleatoreamente quando perguntado a respeito de
uma entrada x A, mas que sempre responde mesma pergunta com a mesma
resposta.
Normalmente o mtodo do orculo aleatreo visto como um meio termo
entre a Criptografia com segurana demonstrvel (ainda que resultando em construes ineficientes) e a Criptografia onde a segurana de construes eficientes
avaliada de maneira emprica.
A seguir temos um exemplo de demonstrao usando o modelo do Orculo
Aleatreo. Suponha que Alice deva comprometer-se com uma escolha, mas que
no possa revelar a ningum esta escolha. Pode ser que Alice seja parte de
uma banca avaliadora (e no possa divulgar seu voto antes que todos tenham
votado), ou que esteja participando de uma licitao (e que a lei exija que as
propostas sejam feitas em sigilo). A escolha de Alice pode ser vista como uma
mensagem m de n bits (onde se l seu voto, ou sua proposta para a licitao).
Alice no confia nos outros participantes, e quer garantir que ningum poder
inferir absolutamente nada a respeito de sua mensagem.
Tentamos ento usar o seguinte protocolo: Alice usa uma funo f e publica y = f (m) para comprometer-se. Depois, quando revelar m, todos podero
conferir que f (m) = y.
A intuio nos diz que poderamos usar uma funo de hashing como f .
No entanto, as propriedades de funes de hashing no so suficientes para
demonstrar o sigilo do protocolo:
Uma funo de mo nica no suficiente para garantir que nada possa
ser inferido a partir da mensagem;
Uma funo resistente a colises (ou resistente a pr-imagem) tambm no
nos serve, pelo mesmo motivo: nada impede que o adversrio determine
alguns bits, ou alguma outra caracterstica de m.
in
ar
lim
Pr
e
7.6.1
Todo orculo aleatreo funciona como uma funo de hashing resistente a colises.
Ve
rs
Funes de mo nica
Um orculo aleatreo funciona como uma funo de mo nica.
O Exerccio 75 pede a demonstrao do Teorema 7.12.
123
in
ar
7.6.2
lim
Demonstrao.
Objees
Pr
e
Notas
Ve
rs
Em um trabalho apresentado na primeira Conferncia da ACM em Segurana de Computadores e Computadores no ano de 1993 [49], Mihir Bellare e
Phillip Rogaway deram tratamento formal idia de funo verdadeiramente
aleatrea usado anteriormente por Fiat e Shamir.
O Captulo 13 do livro de Katz e Lindell [1] apresenta uma discusso bastante
extensa sobre o modelo do Orculo Aleatreo.
1 Traduo livre. O original The formal proof of security in this extended abstract
assumes that n is sufficiently large and that f is a truly random function.
Exerccios
in
ar
a) Prove que para que H seja resistente a coliso, basta que uma das outras
duas funes o seja.
lim
Pr
e
Ex. 66 Quantas tentativas algum deveria fazer para encontrar uma coliso
em uma funo de hashing resistente a colises com sada de 256 bits, com
probabilidade de sucesso maior ou igual que 3/4?
Ex. 67 A probabilidade de coliso dada na Seo sobre o problema do
aniversrio pode ser verificada por um experimento usando um gerador pseudoaleatreo e uma funo de hashing. Descreva (e implemente) este experimento.
Ex. 68 O Teorema 7.6 no tem demonstrao completa (leia o ltimo paragrafo da prova). Complete-a.
Ve
rs
Ex. 69 Implemente a funo de hashing resistente a colises usando exponenciao modular descrita neste Captulo. Compare seu desempenho com
alguma funo de hashing criptogrfica rpida.
Ex. 70 Invente uma funo de hashing de entrada de tamanho fixo, implementea, e depois implemente sua transformao de Merkle-Damgrd.
Ex. 71 Implemente uma instancia da cifra Aardvark.
Ex. 72 Aardvark foi baseada em duas cifras, uma delas chamada LION. A
cifra LION usa uma funo de hashing H resistente a colises e uma cifra de
fluxo S.
n
Gen(1n ) gere k1 , k2 R { 0, 1 } .
Enc(m): a mensagem dividida em partes esquerda (l) e direita (r), no
necessariamente iguais (mas ambas devem ser menores do que n, o tamanho
125
r S(l k1 )
l H 0 (r)
r S(l k2 )
in
ar
da chave) e calcula-se:
l H 0 (r)
r S(l k1 )
lim
b) Prove que a cifra funciona (ou seja, que Deck (Enck (m)) = m).
Pr
e
Ve
rs
Ve
rs
Pr
e
lim
in
ar
in
ar
Captulo 8
lim
Cdigos de Autenticao de
Mensagens
Pr
e
Mac recebe uma chave k, uma mensagem m e tem como sada um rtulo
t. Denotamos t Mack (m).
Ve
rs
Para todo n, para toda k gerada por Gen(1n ) e toda mensagem m, mandatrio
que
Vrfk (m, Mack (m)) = 1.
Quando para qualquer k, Mack somente for definido para mensagens de tamanho p(n) (onde p algum polinmio), dizemos que (Gen, Mac, Vrf) um
esquema de autenticao de mensagens de tamanho fixo para mensagens de
tamanho p(n).
A prxima Construo a seguir um exemplo de MAC, que tem como base
funes pseudoaleatreas.
Construo 8.2. Seja F uma funo pseudoaleatrea. Um esquema de autenticao de mensagens pode ser construdo da seguinte forma:
127
128
in
ar
lim
8.1
Pr
e
A, com acesso ao orculo Mack , gera o par (m, t). Seja Q o conjunto de
mensagens que A enviou para o orculo.
Ve
rs
s Gen(1n )
AMack
1n
m, t
Vrfk (m, t) = 1, m
/Q1
in
ar
Demonstrao. Considere = (Gen, Mac, Vrf) e = (Gen , Mac , Vrf ) obtidos pela Construo 8.2, sendo que foi construdo com uma funo pseudoaleatrea, e em uma funo realmente aleatrea foi usada.
Seja A um algoritmo polinomial e
Como Gen (1n ) escolhe aleatoreamente uma funo de n bits em n bits, ou seja,
f R {g|g : {0, 1}n {0, 1}n } ,
ento
1
.
2n
Isso porque se uma mensagem m no est na lista Q de mensagens consultadas
o valor t = f (m) est uniformemente distribudo em {0, 1}n .
possvel construir um teste polinomial T que distingue funes pseudoaleatreas de funes verdadeiramente aleatreas com a mesma probabilidade de
sucesso do adversrio em MAC_FORGE (ou seja, e(n)). Se e(n) no for desprezvel, conseguiremos distinguir funes pseudoaleatreas de aleatreas mas isso
impossvel pela definio de funo pseudoaleatrea.
O algoritmo T simula o Experimento 8.3, observando quando A tem sucesso
conseguindo um rtulo vlido.
Suponha que queiramos distinguir uma funo h.
T recebe 1n e acesso a h : {0, 1}n {0, 1}n via orculo O.
test executa A(1n ). Cada vez que A pedir a seu orculo para calcular o
MAC de uma mensagem m, T usa O para obter t = h(m), e retorne t para A.
Em outras palavras, T intermedia o acesso de A ao orculo do Experimento:
Pr
e
lim
Pr[MAC_FORGE( , A, n) = 1]
Ah (via T)
Ve
rs
1n
m, t
130
in
ar
Pr [T (Fk , 1n ) = 1] Pr [T (h, 1n ) = 1] e(n) 1 .
2n
1
2n
negl(n) e e(n)
lim
8.2
8.3
CBC-MAC
Pr
e
CBC-MAC uma Construo semelhante ao modo CBC para encriptao (descrito na Seo 5.3.2). A gerao do rtulo feita aplicando uma cifra de bloco
no modo CBC, com duas diferenas.
No CBC-MAC o vetor de inicializao 0n ;
Ve
rs
Construo 8.6 (CBC-MAC com entrada de tamanho fixo). Seja F uma funo pseudoaleatrea. Para um polinmio p(), as funes a seguir so uma
construo MAC.
Gen(1n ) escolhe k R {0, 1}n
Mack (m) quebra a mensagem em blocos de tamanho |m|/q, onde q = p(n)
o tamanho (fixo) das mensagens. Em seguida, aplica Fk no modo CBC
(veja Seo 5.3.2), mas usando 0n como vetor de inicializao e dando
como sada apenas o resultado da encriptao do ltimo bloco.
Vrfk (m, t) verifica se Mack (m) = t
131
8.3.1
lim
in
ar
8.3. CBC-MAC
Pr
e
Ve
rs
Para usar o CBC-MAC em mensagens de tamanho varivel, h trs modificaes com demonstrao de segurana:
lim
in
ar
132
Ve
rs
Pr
e
133
lim
in
ar
8.4. HMAC
8.4
Pr
e
HMAC
Ve
rs
Construo 8.8 (HMAC). Seja (Gen0 , h) uma funo de hash de tamanho fixo
e (Gen0 , H) sua modificao usando a transformao de Merkle-Damgrd. Tanto
H como h produzem sada de n bits. As trs funes a seguir constituem um
cdigo de autenticao de mensagens.
Gen(1n ): use Gen(1n ) para obter uma chave k, e tambm escolha k R
{0, 1}n . Retorne hs, ki.
s
s
t = Hiv
(k opad)||Hiv
((k ipad)||m) .
A constante opad igual ao valor 36 repetido quantas vezes quanto for necessrio, e a constante ipad obtida da mesma forma, repetindo o valor 5C .
A Figura a seguir ilustra esta Construo.
lim
in
ar
134
8.5
Pr
e
Quando a Construo 8.8 usada para obter um algoritmo prtico, seu nome
normalmente HMAC- seguido do nome da funo. Por exemplo, HMACMD5 e HMAC-SHA1 so os algoritmos construdos usando as funes MD5 e
SHA-1. Construes do tipo HMAC so largamente utilizadas na prtica.
Ve
rs
135
AEnck ,Deck
m0 , m1
b R { 0, 1 }
n
k R { 0, 1 }
Enck (mb )
b0
in
ar
1n
Pr[PRIV_CCA(, A, n) = 1]
lim
Definio 8.10 (Segurana contra ataque de texto claro escolhido). Um criptossistema simtrico tem indistinguibilidade contra ataques de texto cifrado
escolhido se para todo adversrio A existe uma funo desprezvel negl tal que,
1
+ negl(n).
2
Pr
e
Ve
rs
Notas
A demonstrao do Teorema 8.12 pode ser obtida no livro de Katz e Lindell [1].
Exerccios
136
Construo 8.13 (MAC furado). Seja (Gen0 , H s ) uma funo de hashing obtida via transformao de Merkle-Damgrd. Ento construmos
Mack (m) = H s (k||m)
Vrfk (m, t) verifica se mack (m) = t.
Mostre que esta construo no segura.
in
ar
Ve
rs
Pr
e
lim
Ex. 79 Ao construir CBC-MAC para mensagens de tamanho varivel, mencionamos que podemos usar uma construo semelhante ao CBC-MAC de tamanho fixo, mas prefixando a mensagem m com |m| (o seu tamanho). Mostre
que se o tamanho da mensagem fosse ps-fixado (includo aps a mensagem), a
construo no seria segura.
Captulo 9
lim
Criptografia Assimtrica
in
ar
Ve
rs
Pr
e
9.1
Protocolos criptogrficos
9.2
Estabelecimento de chaves
A situao descrita no incio deste Captulo em que Alice e Bob querem se comunicar mas no tem um canal seguro pode ser remediada usando um protocolo
137
138
in
ar
para que ambos usem um canal inseguro (aberto) para estabelecer uma chave
privada a ser usada em suas comunicaes, sem que outros tenham acesso
chave. A comunicao subsequente poder se dar usando apenas esta chave, e
o canal seguro estar, ento, estabelecido.
Definiremos segurana para protocolos de estabelecimento de chaves antes
de apresentar o protocolo de Diffie e Hellman.
lim
Pr
e
1
+ negl(n).
2
Ve
rs
9.3
A escolhe x R Zq e calcula h1 = g x
A envia (G, q, g, h1 ) para B
in
ar
B.
Pr
e
lim
Ve
rs
O problema Diffie-Hellman computacional (ou CDH, Computational DiffieHellman) consiste em calcular DHg (a, b) dados g a e g b escolhidos ao acaso em
G.
O problema Diffie-Hellman decisional (ou DDH, Decisional Diffie-Hellman)
consiste em reconhecer se um elemento x foi escolhido ao acaso em G ou se
igual a DHg (a, b) para algum a e algum b gerados aleatoreamente.
Dizemos que CDH e DDH so difceis com relao a um algoritmo G se no
houver algoritmo polinomial que os resolva quando os grupos so gerados por
G.
Teorema 9.5. Se o problema Diffie-Hellman decisional difcil para G, o protocolo Diffie-Hellman (Construo 16.8) seguro de acordo com a Definio 9.9
quando o grupo G usado.
140
in
ar
Ve
rs
Pr
e
lim
1 1
Pr KE_EAV(, A, n) = 1 + negl(n).
2 2
Note que esta demonstrao parece ter um pequeno problema: quando b = 0,
o adversrio recebe um elemento aleatreo do grupo G, e no uma cadeia aleatrea de bits. Para que a diferena fique clara, suponha que tenhamos escolhido
o grupo Zq e que a ordem do grupo seja q = 257, que representado por
100000001 em binrio. Apenas um elemento do grupo tem o primeiro bit igual
a um: 256 = 100000000. Este no um problema com a demonstrao, mas
um fato a que o implementador deve dar ateno: no se pode usar nmeros
diretamente para representar elementos de G; ao invs disso deve-se usar alguma representao dos elementos do grupo como cadeias de bits, que preserve
a distribuio uniforme.
9.3.1
141
Ataque de homem-no-meio
in
ar
lim
9.4
Pr
e
Criptossistemas Assimtricos
Ve
rs
142
9.4.1
in
ar
lim
Para todo par (I, td) produzido por Gen, o segredo td deve permitir inverter
f eficientemente usando o algoritmo Inv:
Invtd (fI (x)) = x.
9.5
Segurana CCA
Pr
e
Ve
rs
5. A envia um bit b0
6. O resultado do experimento um se b = b0 ou zero em caso contrrio.
Definio 9.9 (Segurana CCA para criptossistemas assimtricos). Um criptossistema de chave pblica tem segurana contra ataques de texto cifrado
escolhido se para todo adversrio polinomial A existe uma funo desprezvel
negl tal que
1
Pr[PUB_CCA(, A, n) = 1] + negl(n).
2
9.6
Elgamal
9.6. ELGAMAL
143
in
ar
Gen(1n ): use G(1n ) para escolher um grupo cclico G com ordem q, com
gerador g, sendo que q representvel com n bits.
x R Zq
h gx
A chave pblica hG, q, g, hi.
A chave privada hG, q, g, xi.
Pr
e
c2
hy m
=
cx1 (g y )x
(g x )y m
= xy
g
g xy m
= xy
g
=m.
lim
Ve
rs
12
69
144
9.7
Criptossistema de Rabin
in
ar
lim
Gen: Gere dois primos grandes e diferentes p, q tais que p, q 3 (mod 4).
Seja N = pq. A chave privada sk (p, q), e a chave pblica pk N .
(1)
Pr
e
x r2
x r1
(mod p),
x r2
(2)
x r1
x r1
(mod p),
x r2
(4)
x r1
(mod p),
x r2
Ve
rs
(3)
(mod q),
(mod q),
(mod q),
(mod q).
r1 = 16 (mod 3) = 1
r2 = 16 (mod 7) = 4.
Resolvemos o sistema
(1)
x 1
(mod 3),
x4
(2)
x 1
(mod 3),
x 4
(3)
x1
(mod 3),
x4
(4)
x1
(mod 3),
x 4
(mod 7)
(mod 7)
(mod 7)
(mod 7).
145
As solues para este sistema so 4, 10, 11, 17 note que o 11 est entre elas.
lim
in
ar
Pr
e
2. Envie pk para A.
Ve
rs
Definio 9.17 (Segurana contra ataque de texto cifrado conhecido para criptossistemas assimtricos). Um criptossistema de chave pblica = (Gen, Enc, Dec)
tem segurana contra ataque de texto cifrado conhecido se para todo adversrio
polinomial A existe uma funo desprezvel negl() tal que
1
+ negl(n).
2
Esta definio difere daquela semelhante para criptossistemas simtricos porque o adversrio recebe a chave pblica pk. Isso significa que A pode encriptar
mensagens vontade e que esta definio ento equivalente definio de
segurana CPA.
Pr[PUB_EAV(A, , n) = 1]
Definio 9.18 (Segurana CPA para criptossistemas assimtricos). Um criptossistema de chave pblica tem segurana CPA se tem segurana contra ataque
de texto cirado conhecido.
Interessantemente, as duas Definies e segurana (texto cifrado conhecido
e CPA) para criptossistemas assimtricos tambm so equivalentes Definio
de segurana contra mltiplos textos cifrados conhecidos.
146
9.8
RSA
(mod (N ))
lim
ab 1
in
ar
Pr
e
(N ) k
1 m
m
) m
(mod N )
(mod N )
(mod N )
(mod N ).
Ve
rs
9.8. RSA
147
in
ar
=7
(mod (N ))
(mod 200) = 143.
lim
a = 71
Temos ento
pk = (N, b) = (303, 7)
sk = (N, a) = (303, 143)
Pr
e
Ve
rs
Definio 9.21. Seja N o produto de dois primos, ambos com n bits. Seja
e > 0 tal que gcd(e, N ) = 1 e x ZN . O problema RSA computacional consiste
em calcular y = x1/e (mod N ).
No se conhece qualquer algoritmo eficiente para resolver o problema RSA.
Sabemos que o RSA deve ser pelo menos to difcil quanto a fatorao de inteiros: se for possvel fatorar N , basta ento calcular (N ) = (p 1)(q 1),
calcular d = e1 (mod (N )) e y = xd (mod N ) ( importante observar que
(N ) e e1 no so pblicos, e devem ser calculados por um adversrio que
pretenda quebrar o RSA).
9.8.1
Ataques ao RSA
148
Mdulo comum
c1 = mb1
(mod N )
lim
b2
in
ar
c2 = m
(mod N ).
Pr
e
9.8.2
Ve
rs
Da mesma forma que tornamos cifras de fluxo seguras inserindo nelas elementos
de aleatoriedade, tornaremos o RSA seguro modificando-o para que passe a ser
um algoritmo probabilstico. A modificao que fazemos adicionar uma cadeia
de bits aleatreos mensagem antes de encript-la.
Descrevemos a seguir o OAEP (Optimal Asymetric Encryption Padding).
Se trocarmos o algoritmo Enc da Construo 9.19 pelo algoritmo Enc0 a
seguir obteremos uma verso do RSA com segurana IND-CCA-2. O algoritmo
Enc0 usa duas funes de hash, G e H. Zeros so adicionados mensagem m
para que tenha tamanho fixo; r escolhido aleatoreamente.
Enc0pk (m) = Encpk (m G(r)||r H(m G(r)))
Observe que o algoritmo original usado pelo novo. A prxima figura ilustra o
algoritmo e deixa claro tambm que sua estrutura a de uma rede de Feistel,
para que possamos calcular a inversa ao decriptar a mensagem.
149
in
ar
9.9. GOLDWASSER-MICALI
9.9
Pr
e
lim
Notamos tambm que a funo G deve ser usada de forma a expandir os k bits
de r para n bits, e que H deve comprimir n bits em k bits.
A segurana IND-CCA-2 do esquema depende de tratarmos as duas funes
de hash como orculos aleatreos.
Informalmente, podemos fazer algumas observaes: se as duas funes de
hashing G e H tem sada indistinguvel de bits aleatreos e resistncia de segunda pr-imagem, ento m G(r) deveria ter o mesmo efeito que o one-time
pad. Mas usar apenas este valor (m G(r)) no daria certo, porque no seria
possvel decriptar. Por isso usamos tambm a segunda funo H.
Goldwasser-Micali
Ve
rs
(mod p).
150
in
ar
Demonstrao. Sejam a, b as razes quadradas de y mdulo p, e c, d as razes quadradas de y mdulo q. Pelo Teorema B.16, temos que y (mod p) y
(mod q) y (mod pq).
As razes de y mdulo p devem ser distintas das razes de y mdulo q, porque
p e q so primos.
Definio 9.25. O conjunto Jn+ contm os nmeros x Zn tais que
x
= +1.
n
lim
Pr
e
{ g 0 , g 2 , . . . , g p3 , g 0 , g 2 , . . . , g p3 } .
Cada quadrado aparece duas vezes neste conjunto, e h nele metade dos elementos de Zp .
Teorema 9.27. Seja n = pq, com p e q primos. Exatamente metade dos
elementos de Jn+ resduo quadrtico mdulo n.
Ve
rs
ou seja, quando (x|p) e (x|q) tiverem o mesmo sinal. Isso acontece exatamente
metade das vezes. Temos ento, em Zpq :
1/2 de nmeros com (x|pq) = 1;
6 Lembre-se
9.9. GOLDWASSER-MICALI
151
in
ar
1/4 de nmeros tais que (x|p) = (x|q) = +1. Estes so resduos quadrticos mdulo pq.
lim
Definio 9.28 (Problema da residuosidade quadrtica). O problema da residuosidade quadrtica consiste em, dados n = pq e x Jn+ , se x resduo
quadrtico mdulo n.
Pr
e
Conjectura 9.29. Para qualquer algoritmo randomizado polinomial A, quaisquer primos p, q com k bits cada, x tal que (x|pq) = +1, qualquer polinmio
positivo p(), a probabilidade de A determinar corretamente se x resduo quadrtico mdulo pq desprezvel em k.
No entanto, se conhecermos os fatores p e q, podemos computar os smbolos
de Jacobi (x|p) e (x|q) e verificar se so ambos positivos ou ambos negativos.
Desta forma podemos determinar se (x|pq) resduo quadrtico ou no.
O criptossistema de Goldwasser-Micali fundamenta-se no problema da residuosidade quadrtica.
Construo 9.30 (Criptossistema de Goldwasser-Micali).
Ve
rs
Gen(1k ): escolha aleatoreamente dois primos p e q com k bits cada. Escolha tambm x tal que
x
x
=
= 1.
p
q
A chave pblica (x, n).
A chave privada (p, q).
152
in
ar
Teorema 9.31. A funo Enc no criptossitema de Goldwasser-Micali homomrfica para multiplicao em C e soma em M.
lim
Notas
Pr
e
Ve
rs
O criptossistema Elgamal foi criado em 1985 por Taher Elgamal [51], e da mesma
forma que o RSA, tornou-se um dos criptossistemas assimtricos mais usados
em aplicaes prticas.
Michael Rabin publicou seu criptossistema em 1979 em um relatrio tcnico
do MIT [52].
O criptossistema RSA foi elaborado por Ronald Rivest, Adi Shamir e Len
Adelman em 1978 [53]. John Talbot e Dominic Welsh apontam [54]7 que outro
criptossistema, semelhante ao RSA, j havia sido descoberto por James Ellis e
Clifford Cocks em 1973: em 1969 Ellis teria chegado definio de funo de
mo nica, mas somente em 1973 Cocks teria conseguido usar a definio na
construo de um criptossistema assimtrico (que foi chamado de criptossistema
no-secreto, porque no havia a necessidade de transmisso de chaves secretas).
Uma anlise cuidadosa de ataques ao RSA e medidas preventivas feita no
livro de Song Yan [56].
O esquema OAEP foi desenvolvido por Mihir Bellare e Phillip Rogaway [57],
e combina eficincia e segurana demonstrvel. possvel demonstrar que se
uma mensagem for codificada com OAEP antes de ser encriptada com o RSA,
o resultado um criptossistema CCA-seguro.
Victor Shoup [58] mostrou que a demonstrao de segurana do OAEP no
vlida. Shoup props um novo esquema, OAEP+, um pouco mais complexo,
com nova demonstrao de segurana. A demonstrao dada por Shoup bastante interessante e instrutiva diferentes experimentos (chamados de jogos
7 Uma
9.9. GOLDWASSER-MICALI
153
in
ar
Exerccios
lim
Pr
e
Ve
rs
Ve
rs
Pr
e
lim
in
ar
154
Captulo 10
lim
Assinaturas Digitais
in
ar
Pr
e
Ve
rs
necessrio que para todo n, para todo par (pk, sk) gerado por Gen(1n ) e
toda mensagem m,
Vrfpk (m, Signsk (m)) = 1.
155
156
10.1
Segurana
in
ar
lim
KMA (known message attack): o adversrio conhece, a priori, certas mensagens, e poder ter acesso s suas assinaturas antes de tentar iniciar sua
fraude, mas as mensagens so determinadas antes do adversrio conhecer
a chave pblica do assinante;
Pr
e
Ve
rs
Estes trs aspectos (com trs, dois e dois casos cada um) so independentes,
e portanto definem doze casos.
10.1. SEGURANA
10.1.1
157
Segurana RMA
5. A retorna (m, ).
lim
in
ar
Pr
e
m1 , . . . , mk R M
(pk, sk) Gen(1n )
i Signsk (mi )
1n , pk,
(m1 , 1 , . . . , mk , k )
(m, )
Vrfpk (m, ) = 1
m
/ { m1 , m2 , . . . , mk }
Ve
rs
Ento dizemos que o esquema fortemente seguro contra ataques com mensagens aleatreas.
Quando somente uma mensagem sorteada no incio do experimento, dizemos que o esquema para somente uma assinatura.
158
10.1.2
Segurana KMA
in
ar
lim
Pr
e
1n
(m1 , . . . , mk )
pk, (1 , . . . , k )
(m, )
Ve
rs
Vrfpk (m, ) = 1
m
/ { m1 , m2 , . . . , mk }
Ento dizemos que o esquema fortemente seguro contra ataques com mensagens escolhidas.
Quando somente uma mensagem sorteada no incio do experimento, dizemos que o esquema para somente uma assinatura.
10.1. SEGURANA
10.1.3
159
Segurana CMA
in
ar
A definio mais forte que temos para segurana contra ataques adaptativos
com mensagens escolhidas.
Experimento 10.6 (SIG_FORGE_CMA(, A, n)).
1. Gen(1n ) usada para obter (pk, sk).
2. A recebe pk e acesso de orculo a Signsk (); seja M o conjunto de mensagens assinadas pelo orculo, e X o conjunto de pares (mi , i ) de mensagens
enviadas por A e assinaturas retornadas pelo orculo.
lim
Pr
e
ASign
1n , pk
M = assinadas
pelo orculo
(m, )
Vrfpk (m, ) = 1
m
/M
Ve
rs
ento dizemos que fortemente seguro contra ataques adaptativos de mensagem escolhida.
Quando o adversrio pode escolher uma nica mensagem dizemos que o
esquema tem segurana CMA para uma nica vez.
160
10.1.4
10.2
in
ar
lim
Pr
e
yi,j f (xi,j ).
Ve
rs
y1,0
y1,1
y2,0
y2,1
y3,0
y3,1
f (x1 ) = y1,1 ?
f (x2 ) = y2,0 ?
f (x3 ) = y3,1 ?
Teorema 10.10. Para qualquer funo f de mo nica, o esquema de assinaturas de Lamport um esquema de assinaturas seguro para uma nica assinatura.
10.3. RSA
10.3
161
RSA
in
ar
lim
Pr
e
(mod 303) = 74 = m.
Ve
rs
(1 2 )b = (ma1 ma2 )b
ab
mab
1 m2 = m1 m2 = m
(mod N ).
162
10.3.1
Full-domain hash
in
ar
lim
Pr
e
Elgamal
10.4
Ve
rs
Elgamal descreveu no mesmo artigo um criptossistema e um esquema de assinaturas mas o esquema de assinaturas no apenas uma maneira diferente
de usar o criptossistema (como no caso do RSA). Ele apenas tem como base o
mesmo pressuposto (a intratabilidade do problema do logaritmo discreto) e usa
o mesmo algoritmo para gerao de chaves.
Considere as chaves pblica e privada do criptossistema Elgamal: pk =
hG, q, g, hi e sk = hG, q, g, xi, onde h = g x .
Iniciamos com a seguinte congruncia:
m ax + by
(mod (q)).
(10.1)
g ax+by
ax by
g g
ha ab
(mod q)
(mod q)
(mod q).
10.4. ELGAMAL
163
= gy
(mod q)
(m ax)y 1
(mod q 1).
in
ar
lim
Pr
e
Gen(1n ): use G(1n ) para escolher um grupo cclico G com ordem q, com
gerador g, sendo que q representvel com n bits.
x R Zq
h gx
A chave pblica hG, q, g, hi.
A chave privada hG, q, g, xi.
Sign: dada a chave privada pk = hG, q, g, xi e a mensagem m G, escolha
y R Zq , sejam
a
= gy
b =
(mod q)
(m ax)y 1
(mod q 1).
Ve
rs
Vrf: dada a chave pblica pk = hG, q, g, hi, e a assinatura (a, b), retorne
um se e somente se
ha ab g m (mod q)
10.4.1
DSA
164
in
ar
b = (H(m) + ax)y 1
lim
Pr
e
(H(m) + ax)y 1
(mod q).
Vrf: dada a chave pblica pk = hG, q, g, hi, e a assinatura (a, b), e sejam
e = H(m)b1
1
f = ab
(mod q)
(mod q).
Ve
rs
Retorne um se e somente se
a = ge yf
(mod p)
(mod q).
10.5
Notas
lim
in
ar
Exerccios
Ex. 88 Mostre que se a assinatura (a, 0) for gerada para uma mensagem
usando o DSA, possvel a qualquer um determinar a chave privada do assinante.
Pr
e
Ve
rs
Mostre que isto um equvoco, usando como exemplos criptossistemas assimtricos do Captulo 9.
Ve
rs
Pr
e
lim
in
ar
166
Parte II
lim
in
ar
Ve
rs
Pr
e
Protocolos
167
Ve
rs
Pr
e
lim
in
ar
Pr
e
lim
in
ar
169
Ve
rs
Ve
rs
Pr
e
lim
in
ar
170
Captulo 11
lim
Protocolos Para
Comprometimento
in
ar
11.1
Pr
e
Modelo computacional
costumeiro definir interao entre participantes de um protocolo usando mquinas de Turing. Neste textoestes sistemas so definidos usando atores (algoritmos) conectados por portas de comunicao.
Um ator semelhante a um algoritmo que pode usar portas para comunicao com outros atores. Cada ator (ou participante) tem:
Ve
rs
out
in
in
out
in
ar
172
lim
11.2
Pr
e
Comprometimento
Ve
rs
11.2. COMPROMETIMENTO
173
in
ar
Definio 11.3 (Protocolo de comprometimento). Um protocolo de comprometimento composto dos algoritmos polinomiais Gen, Commit e Reveal:
Gen(1n ), que usado para produzir uma das entradas de Commit.
Commitk (m), onde k gerado por Gen. A sada de Commit o par (c, d)
onde c o comprometimento, e d o valor de abertura.
lim
Revealk (c, d), que retorna uma mensagem m ou um valor especial indicando que (c, d) no foi gerado por Commit.
Exigimos que para toda mensagem m e toda chave k gerada por Gen,
Revealk (Commitk (m)) = m.
Pr
e
Uma das partes usar Commitk (m) para gerar c e d, e enviar c na fase de
comprometimento e d na fase de revelao. Aps receber d, o outro participante
poder obter m a usando Revealk (c, d)
Informalmente, podemos dizer que um protocolo de comprometimento vinculante se nenhum adversrio pode obter dois comprometimentos iguais para
mensagens diferentes. Ser til, no entanto, definirmos variantes desta ideia: o
protocolo perfeitamente vinculante se no h como o adversrio ter sucesso;
estatisticamente vinculante se a probabilidade de sucesso desprezvel, mesmo
para adversrios com poder de processamento infinito; e computavelmente
vinculante se a probabilidade de sucesso de adversrios de tempo polinomial
desprezvel.
Ve
rs
174
m 6= m m, m 6= ,
m = Revealk (c, d),
m0 = Revealk (c, d0 ) 1
in
ar
1n
k Gen(1n )
m, m0 , d, d0 , c
lim
Pr
e
(ii) estatisticamente vinculante se para qualquer adversrio A existe uma funo desprezvel negl() tal que
Pr[COMMIT_BIND(, A, n) = 1] negl(n);
Para definir a propriedade de sigilo usaremos um experimento com dois atores, um desafiante e um adversrio.
Ve
rs
11.2. COMPROMETIMENTO
175
D
in
ar
1n
k Gen(1n )
m1 , m2
b = b0 1
b 6= b0 0
c
b0
lim
b R { 0, 1 }
(c, d) Commitk (mb )
1
+ negl(n).
2
Pr
e
1
.
2
Ve
rs
Demonstrao. Um protocolo perfeitamente vinculante precisa ser determinstico, de outra forma o adversrio com tempo ilimitado poderia encontrar as duas
mensagens com o mesmo comprometimento. Isto contraria a definio de sigilo
perfeito.
Construo 11.9 (Protocolo de comprometimento com resumos). Seja H uma
famlia de funes de hashing. Um protocolo de comprometimento pode ser
construdo como mostrado a seguir.
Gen(1n ) escolhe aleatoreamente s e uma funo de hashing H s .
Revealk (c, (r, m)): obter a mensagem trivial; verificar que c = H s (r||m)
tambm.
176
in
ar
Teorema 11.11. Presumindo a hiptese do logaritmo discreto, o protocolo descrito na Construo 11.12 tem sigilo computacional e vnculo perfeito.
lim
Pr
e
Gen(1n ) escolhe aleatoreamente um primo p com n+1 bits tal que p = 2q+1
para algum primo q. Retorne (p, g, y) onde g um gerador para Zp e
y R Zp .
Commitk (m): escolha r R Zq e calcule c = g r y m (mod p) Retorne hc, (r, m)i.
Revealk (c, (r, m)): se c = g r y m retorne m, seno retorne (um valor
indicando que o comprometimento no vlido).
necessrio que m Zq .
Ve
rs
Demonstrao. Como r escolhido aleatoreamente em Zq , g r y m uniformemente distribudo em G, independente de m. Conclumos que o protocolo tem
sigilo perfeito.
A propriedade de vinculao seria quebrada se for possvel encontrar (r, m)
e (r0 , m0 ) tais que m 6= m0 e
Revealk (c, (r, m)) = m
Revealk (c, (r0 , m0 )) = m0 .
gr ym = gr ym
0
(mod p),
y = g (rr )(m m)
(mod q)
(mod p).
11.2. COMPROMETIMENTO
177
in
ar
lim
H algo importante a observar a respeito dos dois protocolos baseados em logaritmo discreto: um deles usa apenas g m como comprometimento, e bastante
claro que quebrar seu sigilo equivalente a calcular o logaritmo discreto de m.
Por outro lado, como este logaritmo nico, obtemos vinculao perfeita. Ao
mudar de g m para g r y m abrimos mo da vinculao perfeita, porque h diversos
valores de r e m para os quais c = g r y m . No entanto, a multiplicao por g r
passou a nos dar sigilo perfeito.
possvel tambm construir um protocolo de comprometimento a partir de
um criptossistema assimtrico com segurana CPA.
Construo 11.14 (Protocolo de comprometimento com criptossistema assimtrico). Seja = (Gen, Enc, Dec) um criptossistema de chave pblica com
segurana CPA.
Pr
e
Revealk (c, (pk, sk)) decripta m com a chave privada sk, e retorna m se
Encpk (m) = c, seno retorna .
O Exerccio 97 pede a demonstrao do seguinte Teorema.
Ve
rs
11.2.1
Comprometimento de bit
178
3. Revealk (c, (x, y)): se c = x2 retorne zero; se c = yx2 retorne um; seno
retorne .
in
ar
Teorema 11.17. O protocolo 11.16 perfeitamente vinculante e, sendo verdadeira a hiptese do resduo quadrtico, computacionalmente ocultante.
Demonstrao. Como os comprometimentos dos bits so quadrados para zero e
no quadrados para um, impossvel conseguir um comprometimento que sirva
tanto para zero como para um, e portanto o protocolo tem vnculo perfeito.
O protocolo tem sigilo computacional porque se fosse possvel distinguir entre
comprometimentos de zeros e uns seria possvel determinar eficientemente se um
nmero resduo quadrtico mdulo N .
lim
11.2.2
Esta Seo descreve um protocolo simples que permite a uma parte P provar
para uma outra, V , que dados dois geradores g1 , g2 de um grupo Gq e dois
elementos h1 , h2 Gq , existe um a tal que h1 = g1a e h2 = g2a (ou seja, que o
logg1 h1 = logg2 h2 (mod q)).
Pr
e
Ve
rs
g1wac hc1
g1wac (g1a )c
g1wac g1ac
g1w = a1 .
O mesmo vlido para a2 e g2r hc2 . Note que o verificador V no tem informao
que permita deduzir a apenas convencido de que o dois logaritmos so iguais.
11.2.3
Cara-ou-coroa
Uma aplicao imediata de protocolos de comprometimento o jogo de caraou-coroa por telefone. Se Alice e Bob precisam jogar uma moeda para decidir
aleatoreamente entre duas opes, garantindo que nenhum deles possa influenciar a deciso, podem faz-lo da seguinte maneira:
11.2. COMPROMETIMENTO
179
in
ar
2. Bob tambm se compromete com um bit bB R {0, 1} e envia o comprometimento cB para Alice;
lim
Notas
Exerccios
Ex. 92 Porque no modelo computacional apresentado neste Captulo dissemos que A e B devem ter geradores pseudoaleatreos diferentes?
Pr
e
Ve
rs
Ex. 96 A Demonstrao do Teorema 11.13 diz que como g r y m uniformemente distribudo em G, independente de m, o protocolo tem sigilo perfeito.
Elabore estas afirmaes com mais rigor (primeiro a afirmao a respeito da
distribuio de g r y m , inclusive sobre a independncia de m, e finalmente mostre
que isso realmente confere sigilo perfeito ao protocolo.
Ex. 97 Demonstre o Teorema 11.15.
Ex. 98 Implemente todos os protocolos descritos neste Captulo.
Ve
rs
Pr
e
lim
in
ar
180
Captulo 12
lim
Compartilhamento de
Segredos
in
ar
Ve
rs
Pr
e
182
in
ar
Definio 12.3 (Esquema de Comparilhamento de Segredos). Seja uma estrutura montona de acesso sobre um conjunto P de participantes. Um esquema
de compartilhamento de segredos sobre um par de algoritmos:
Share(s, ): dado um segredo s e a estrutura de acesso , uma partilha
Sa determinada para cada participante a P ;
lim
Pr
e
12.1
Os primeiros esquemas de compartilhamento de segredos foram propostos independentemente em 1979 por Adi Shamir [64] e George Blakley [65], e no usam
estruturas de acesso. So definidos de forma que dentre n participantes, qualquer qurum (ou limiar) de k n possa obter o segredo (estes so chamados
de esquemas (k, n) de compartilhamento).
Esquema de Shamir
12.1.1
Duas observaes muito simples formam a base do esquema de compartilhamento de segredos de Shamir:
Ve
rs
183
in
ar
No entanto, esta ideia foi descrita para polinmios sobre corpos infinitos.
O esquema de compartilhamento de Shamir adapta este mtodo para corpos
finitos.
Para obter o polinmio de grau n a partir dos pontos, usamos interpolao
usando a frmula de Lagrange, que derivamos a seguir.
Teorema 12.4. Sejam n + 1 pontos (xi , yi ), todos distintos. O (nico) polinmio de grau n passando por todos os pontos tal que seu valor em x pode ser
calculado da seguinte forma:
=
lj (x)
n
X
yj lj (x)
j=0
n
Y
k=0;k6=j
x xk
.
xj xk
lim
l(x)
Pr
e
lk (x) =
Quando calculamos lk (xj ), com j 6= k, o fator (xj xj ) estar no numerador, que portanto resulta em zero 1 .
Ve
rs
n
X
k=0
184
l(0)
n
X
yj rj
j=0
rj
= lj (0) =
n
Y
k=0;k6=j
in
ar
No contexto do esquema de Shamir, estamos interessados no coeficiente constante do polinmio. Temos ento
xk
.
xk xj
lim
Pr
e
Ve
rs
O esquema de Shamir seguro, porque mesmo conhecendo k1 chaves a probabilidade do segredo ser qualquer elemento do corpo F uniforme; mnimo,
porque o tamanho de cada chave no maior que o do segredo; extensvel,
porque podemos criar mais pontos do polinmio e distribuir, aumentando n; e
um esquema com limiar.
O esquema de Shamir, no entanto, no pode ser usado com qualquer estrutura de acesso funciona apenas com qurum. Apesar disso, serve como
fundamento para a construo de outros esquemas mais flexveis, como veremos
mais adiante.
12.1.2
Esquema de Blakley
12.2. SEGURANA
185
in
ar
12.2
Segurana
12.2.1
lim
Mencionamos dois aspectos importantes da segurana de esquemas de compartilhamento: um deles o sigilo (um conjunto no autorizado de participantes no
pode obter qualquer informao sobre o segredo) e o outro a verificao (deve
ser possvel verificar se algum dos participantes est agindo desonestamente).
Sigilo
Pr
e
para qualquer H 0
/ .
Ve
rs
186
12.3
in
ar
d, o Ministro da Defesa.
lim
c, o Presidente do Congresso;
Suponha tambm que podem decidir declarar guerra2 e ter acesso ao cdigo
secreto para uso de armamento nuclear:
O Presidente da Repblica e o Ministro da Defesa (p, d);
Pr
e
Ve
rs
Note que tivemos que listar mais conjuntos do que havamos especificado (por
exemplo, {p, d, c, v}, {p, d, v} e {p, d, c} s foram includos porque {p, d} ).
Um conjunto qualificante minimal X em aquele que no superconjunto de
outro, tambm em e uma descrio minimal de inclui apenas os conjuntos
qualificantes minimais:
= {p, d}, {p, c}, {v, c, d}
187
in
ar
lim
Share(s, ): Gere aleatoreamente valores si R {0, 1}n tais que para cada
clusula (vi . . . vj ), si . . . sj = s. Um participante recebe si se sua
varivel estiver na i-sima posio, e portanto Share retorna um conjunto
de valores si para cada participante.
Combine(H): qualquer um dos conjuntos qualificantes pode revelar s observando quais valores de suas partilhas precisam ser combinados com
ou-exclusivo, levando em conta suas posies em .
Pr
e
= s3 s4
= s5 s6 s7 .
sd = (s2 , s7 )
Ve
rs
sc = (s4 , s6 )
sv = s5 .
188
As partilhas so
sp = (s1 = 1100, s3 = 1110)
sc = (s4 = 1000, s6 = 0010)
sv = (s5 = 1111).
Para revelar o segredo, p, c se renem e calculam
in
ar
lim
Pr
e
Pr(s|sk ) = Pr(s).
Ve
rs
12.4
Compartilhamento verificvel
189
in
ar
lim
O esquema verificvel de compartilhamento de segredos de Pedersen, mostrado na prxima Construo, uma extenso do esquema de Shamir usando o
problema decisional Diffie-Hellman para a verificao.
Aps construir o polinmio a(x) que servir para distribuir o segredo usando
o esquema de Shamir, um outro polinmio b(x) gerado para permitir a verificao usando o esquema de comprometimento de Pedersen. O distribuidor entrega
pontos dos dois polinmios aos participantes, mas tambm publica um comprometimento, de forma que no seja possvel a qualquer um (nem os portadores
das partilhas e nem o distribuidor) mudar seus valores posteriormente.
Construo 12.15 (Compartilhamento de segredos verificvel (esquema de
Pedersen)).
Gen(1n ): gere um grupo G de ordem 1n com gerador g, onde n primo.
Pr
e
Ve
rs
Esta lista contm um comprometimento para as partilhas de cada participante, usando o esquema de comprometimento de Pedersen (o valor
comprometido ai , e bi o elemento aleatreo3 ). Cada participante recebe a lista inteira.
(ij )
Cj
= g a(i) hb(i) .
j=0
3O
190
t1
Y
(ij )
Cj
= g a0 hb0
(i0 )
g a1 hb1
(i1 )
g a2 hb2
j=0
2
= g a0 +a1 i+a2 i
=g
a(i) b(i)
in
ar
Para verificar que SecVrf de fato garante que a partilha est correta, basta
substituir os valores de Cj no produtrio:
(i2 )
lim
Pr
e
Demonstrao. (Rascunho)
Seja P um conjunto de t 1 participantes. Cada Pi tem um par (a(i), b(i)),
e todos tem a lista de comprometimentos g ai hbi .
Os comprometimentos no oferecem informao, porque o esquema de comprometimento usado o de Pedersen. Os pares de pontos (a(i), b(i)) tambm
no oferecem informao, porque o esquema de compartilhamento usado o de
Shamir.
Ve
rs
12.5
Os esquemas de compartilhamento verificvel permitem aos participantes verificar suas partilhas, mas no permitem que um expectador possa verificar que
todos agiram honestamente.
Definio 12.17 (Esquema de compartilhamento de segredos publicamente
verificvel). Um esquema de compartilhamento de segredos publicamente verificvel semelhante a um esquema de compartilhamento de segredos, havendo
um algoritmo adicional, SecVrf, que pode ser executado por qualquer entidade,
mesmo que no seja uma das participantes (ou seja, mesmo que no tenha recebido uma partilha), a fim de verificar se as partilhas esto corretas.
O esquema de compartilhamento de Schoenmakers, descrito nesta Seo,
publicamente verificvel. Este esquema depende do protocolo para verificao
de igualdade de logaritmos descrito na Seo 11.2.2.
191
in
ar
t1
X
aj xj ,
lim
j=0
Pr
e
Yi = yi
t1
Y
Cji .
j=0
Ve
rs
Yi = yi
a1i g wi
a2i yiwi
ri = wi p(i)c
[(a1i , a2i ), c, ri ] .
192
p(i)
Si = hi
1/xi
= Yi
in
ar
Sii =
i=1
t
Y
hp(i)
i=1
Pt
=h
p(i)i
lim
i=1
= hp(0) = hs ,
Pr
e
i6=j
j
.
ji
A1i = g ri Xic
A2i = yiri Yic
Ve
rs
193
in
ar
= g wi p(i)c (g p(i) )c
lim
Pr
e
Lema 12.21. Sejam g, h, Xi , Yi , yi como na descrio do esquema de Schoenmakers. Sabemos que h = g a , Xi = g b e yi = g c para determinados a, b, c.
Um algoritmo eficiente que quebre a encriptao das partilhas ou seja, que
calcule hpi = g ab a partir de g a , g b , g c e g bc pode ser usado para resolver
eficientemente o problema Diffie-Hellman.
Ve
rs
a0
xa = (g a ) = g aa
b0
0
0
y b = g b = g bb ,
0
194
12.5.1
in
ar
Segredos no aleatreos
lim
Pr
e
12.6
Ve
rs
P,i =
Y
lP \{ i }
l
.
li
12.7. NOTAS
195
O texto claro
b
s
xP
s
x =x i si P,i
Y P,i
=
zi .
in
ar
m=
Notas
lim
12.7
Ve
rs
Pr
e
y = g (h
196
12.8
Exerccios
in
ar
Ex. 100 Suponha que o esquema de compartilhamento de segredos de Shamir usado para manter uma chave secreta (usada para encriptar um testamento) em sigilo. O nmero de participantes n e o qurum mnimo k.
Quando k pessoas decidiram revelar a chave, constataram que o segredo revelado
era invlido (a chave no decriptou o documento).
Mostre como determinar o valor correto da chave secreta usando dois tipos de
operao: interpolao de polinmios e clculo do valor do polinmio em um
ponto, minimizando o nmero de interpolaes.
lim
Pr
e
Ve
rs
d) Argumente informalmente a respeito da eficincia do novo esquema, comparandoa com a do esquema antigo e com as dos outros esquemas que produzir.
in
ar
Captulo 13
13.1
Provas Interativas
lim
Pr
e
Peggy pode executar sem limite de tempo, mas as mensagens que enviar
a Victor devem ter tamanho polinomial.
Ve
rs
necessrio tambm definir claramente o que so os fatos que so provados em um sistema de prova interativa. O provador deve convencer o verificador
de que um elemento x pertence a alguma linguagem1 .
A Definio de sistema de prova interativa dada a seguir, usando o modelo
de computao descrito no Captulo 11. As probabilidades so de que o verificador aceite a prova: V emitir sada igual a um se aceita a prova, e zero em
caso contrrio.
1 Linguagens
Pr[hP, V i(x) = 1]
2
3
197
198
in
ar
Pr[hA, V i(y) = 1]
Da mesma forma que na descrio da classe2 BPP, a escolha dos valores 2/3
e 1/3 arbitrria.
Definio 13.2 (Classe IP). A classe IP formada por todas as linguagens
para as quais existe sistema de prova interativa.
O seguinte Teorema relaciona as classes IP, N P e PSPACE.
13.2
lim
Conhecimento zero
Ve
rs
Pr
e
ii) Seja m(x) a varivel aleatrea que descreve a distribuio de M (x) quando
M (x) 6= FALHA. Ento m(x) tem a mesma distribuio que hP, V i(x).
2 Veja
199
in
ar
Isomorfismo de grafo
lim
13.2.1
Pr
e
Ve
rs
Quando Peggy quiser provar a Victor que conhece o segredo, ambos usam o
seguinte protocolo:
1. Peggy escolhe aleatoriamente uma permutao R Sn (onde n = |V1 |).
2. Peggy Calcula H = (G2 ) e envia H para Victor.
3. Victor escolhe um bit b R {0, 1}, e o envia a Peggy; ele est pedindo para
que Peggy mostre a bijeo que transforma Gb em H.
3 Definimos
200
in
ar
se b = 2
5. Victor aplica a permutao a Gb e verifica se o resultado igual a H. Se
for, sua sada um; seno zero.
lim
G1 g
GO 1
Pr
e
'
/H
G2 o
G2
H
Quando Victor escolhe G2 , receber apenas , mas ainda no ter nem .
Aps a execuo do protocolo, Victor no tem nada que no pudesse computar sozinho: ele tem H e uma permutao que transforma Gb em H (ele
poderia ter gerado aleatoriamente sem interagir com Peggy).
Teorema 13.10. A Construo 13.9 um sistema de prova interativa de conhecimento zero perfeito para a linguagem dos pares de grafos isomorfos.
Ve
rs
S(G1 , G2 ):
b0 R { 0, 1 } // tenta adivinhar a escolha de V 0
permutao aleatrea dos vrtices de Gb
H = (Gb )
b R { 0, 1 } // escolha de V 0
se b 6= b0 reinicie
escreva (H, b, )
13.3. -PROTOCOLOS
13.3
201
-protocolos
in
ar
lim
Pr
e
d
s
Ve
rs
iii) Conhecimento zero para verificador honesto: O protocolo de conhecimento zero para verificador honesto. Como a nica coisa que o verificador
faz escolher o desafio, um verificador honesto aquele que escolhe d com
distribuio uniforme.
202
13.4
Protocolos de Identificao
13.4.1
in
ar
Peggy e Victor pretendem se comunicar via rede, mas Victor quer ter certeza
de que est realmente interagindo com Peggy, e no com algum se passando
por ela. Para esta situao usamos esquemas de identificao.
lim
Pr
e
Ve
rs
203
in
ar
13.4.2
Protocolo de Schnorr
lim
Pr
e
Outro protocolo de identificao o de Schnorr. O provador mostra que conhece o logaritmo discreto de um nmero y, sem passar ao verificador qualquer
informao adicional a respeito do logaritmo.
Construo 13.15 (Protocolo de identificao de Schnorr). O provador P
quer provar a V que conhece um segredo z Zq . Os parmetros que devem ser
definidos inicialmente so:
p e q primos tais que q|p 1.
t, um parmetro de segurana.
Ve
rs
204
in
ar
= g k+zr ur
1) Fixe k 0 .
lim
3) Envie a0 = g k v r para V .
3) Receba r.
Pr
e
Ve
rs
S(v):
k R Zp
r R { 1, . . . , 2t }
c g c v r (mod p)
escreva g k ; r; c
O simulador pode executar em tempo polinomial, e as distribuies dos elementos na transcrio so as mesmas que aquelas em uma execuo hP, V i(v). No
entanto, o simulador escolhe o desafio sempre com distribuio uniforme. Isto
significa que, em tempo polinomial, s poder produzir transcries de interaes
onde V honesto (e escolhe seus bits uniformemente).
A demonstrao no implica que o protocolo de conhecimento zero para
verificador desonesto porque 2t exponencialmente grande, e para simular uma
distribuio de desafios diferente de uniforme o simulador apresentado poderia
levar tempo exponencial.
Corolrio 13.17. O protocolo de Schnorr um -protocolo.
13.6
in
ar
13.5
Notas
Ve
rs
Pr
e
lim
Provas de conhecimento zero foram propostas por Shafi Goldwasser, Silvio Micali e Charles Rackoff em 1985 [78, 79].
comum definir sistemas de prova interativa com mquinas de Turing, onde
o que chamamos de portas de comunicao so fitas onde uma mquina escreve
e outra l. Como uma mquina de Turing no pode ter um gerador pseudoaleatreo, neste modelo os bits aleatreos so lidos de uma fita (e impe-se a
exigncia de que as fitas aleatreas dos atores sejam diferentes). A Figura a
seguir mostra duas mquinas de Turing acopladas desta forma.
206
Exerccios
in
ar
Ex. 105 Porque no modelo computacional apresentado neste Captulo dissemos que A e B devem ter geradores pseudoaleatreos diferentes?
Ex. 106 Demonstre o Teorema 13.8.
lim
Ve
rs
Pr
e
Ex. 110 Se voc tem familiaridade com Lgica, discorra sobre as propriedades de completude e consistncia de um sistema de prova interativa,
comparando-as com aquelas definidas em Lgica.
in
ar
Captulo 14
14.1
Pr
e
lim
Transferncia Inconsciente
Ve
rs
in
ar
Notas
Ve
rs
Pr
e
lim
Captulo 15
lim
in
ar
Pr
e
Este Captulo traz uma exposio bsica de protocolos com muitos participantes
onde existe a necessidade de sigilo e no h confiana mtua entre as partes.
Cada participante Pi conhece um valor xi , e o objetivo calcular uma funo
f (x1 , x2 , . . . , xn )
Ve
rs
15.1
f (x1 , x2 , x3 ) = x1 x2 + x3
in
ar
x1
x2
x3
lim
A Figura a seguir mostra a funo como um circuito envolvendo somas e multiplicaes. A varivel x4 o valor intermedirio, igual a x1 x2 .
x4
f (x1 , x2 , x3 )
Pr
e
Ve
rs
as partilhas so
s0i = x + ysi .
a + a1 x + a2 x2 + + ak xk
g(x)
b + b1 x + b2 x2 + + bk xk .
15.2. SEGURANA
211
in
ar
h(x)
m(i) = Ab(i).
Pr
e
lim
Multiplicao Temos dois segredos A e B compartilhados, e cada participante Pi tem partilhas a(i) e b(i). Queremos computar as partilhas m(i) do
segredo M = AB, sem que os participantes tenham acesso a A, B ou M (a
no ser com o qurum necessrio). Se tomarmos x = 0 no enunciado do Teorema 15.1, notamos que as partilhas que queremos calcular so
c(i) = a(i)b(i)
O valor c(i) no a partilha que queremos, mas podemos obt-la a partir dele.
Aps comput-lo, Pi cria um novo polinmio aleatreo e compartilha c(i) com
os outros participantes, enviando a cada Pj o valor ci (j)1 .
Cada participante Pj ento calcula
m(j) =
ri ci (j),
Ve
rs
15.2
Segurana
Observamos como a execuo de um protocolo na prtica: h participantes honestos, participantes desonestos e h tambm tudo o que externo aos
participantes e ao protocolo. Dentre estas entidades e fatores externos h a
entrada enviada a cada participante e o adversrio. Chamamos este conjunto
de entidades externas de ambiente.
1 Para
2 Veja
in
ar
lim
Queremos poder mostrar que participantes honestos executando o protocolo no mundo real obtero o mesmo resultado que esta funcionalidade perfeita
em um mundo ideal desde que haja participantes honestos em quantidade
suficiente.
Os dois modelos de mundo que usamos so descritos a seguir.
Pr
e
P2
P3
Ve
rs
No mundo ideal, ao invs de participantes honestos seguindo um protocolo, modelamos uma funcionalidade ideal F, que incorrompvel e
realizar a computao necessria para que o protocolo funcione. Tambm inclumos um simulador S, que simula a atuao de participantes
desonestos. Como ilustrado na prxima figura, os participantes no interagem entre si eles repassam suas mensagens3 entre F e Z (poderamos
cham-los de participantes vazios4 ) ou entre F e S.
F
P1
P2
S
P3
15.2. SEGURANA
213
in
ar
Pr
e
lim
Ve
rs
Dizemos que h um adversrio, entidade abstrata, que corrompe participantes. Esta apenas uma abstrao que torna a demonstrao mais
conveniente, e nota-se facilmente que para o objetivo de demonstrar a segurana do protocolo no faz diferena se o participante age por conta
prpria ou seguindo instrues deste adversrio abstrato.
Presumimos que h uma entidade incorruptvel intermediando as mensagens, de acordo com a especificao do protocolo. A demonstrao nos
dar justamente a garantia de que o protocolo, quando executado sem um
intermediador incorrompvel, funciona de maneira equivalente simulao
usando esta entidade. Em outras palavras, o protocolo projetado para
oferecer as mesmas garantias que um intermediador incorrompvel. Dizemos que o protocolo realiza o intermediador incorrompvel de maneira
segura. Queremos que seja indiferente ao ambiente se executamos o protocolo ou se usamos este intermediador. por isso que usamos os termos
Notas
in
ar
15.3
15.4
Exerccios
lim
Pr
e
Ex. 113 A Seo 15.1 mostra como calcular somas e multiplicaes de partilhas de Shamir. Tente encontrar mtodos, to eficientes quanto possvel, para
computar outras operaes: potncias, raizes, e logaritmos, por exemplo.
Ve
rs
Ex. 114 Tente trocar o esquema de compartilhamento de segredos subjacente ao protocolo da Seo 15.1 por outro (Ito-Nishizeki-Saito, Pedersen ou
Schoenmakers). Como voc codificaria as entradas da funo? Consegue realizar adio e multiplicao? Como?
lim
in
ar
Parte III
Ve
rs
Pr
e
Outros Tpicos
215
Ve
rs
Pr
e
lim
in
ar
Pr
e
lim
in
ar
217
Ve
rs
Ve
rs
Pr
e
lim
in
ar
218
in
ar
Captulo 16
lim
Curvas Elpticas
Pr
e
Definio 16.1 (Curva Algbrica Plana). Uma curva algbrica plana o lugar
geomtrico das solues para uma equao polinomial de duas variveis.
Ve
rs
Definio 16.2 (Curva elptica). Seja F um corpo. Uma curva elptica sobre
F uma curva algbrica definida por uma equao da forma
y 2 + Axy + By = Cx3 + Dx2 + Ex + F,
x 3A2 12C
36
y 3Ax A3 + 4AC B
216
24
1 Curvas elpticas no tem relao direta com o objeto geomtrico elipse. O nome curva
elptica vem de sua relao com integrais elpticas, usadas no clculo de comprimento de arco
em elipses.
219
220
in
ar
lim
Pr
e
Ve
rs
Definio 16.3 (Discriminante de um polinmio). O discriminante de um polinmio an xn + an1 xn1 + + a0 com razes r1 , r2 , . . . rn
Y
a2n2
(ri rj )2 .
n
i<j
221
in
ar
n
Demonstrao.
zero, o discriminante ser zero se e somente se
Q Como a no
o produtrio i<j (ri rj )2 for zero. Este produtrio por sua vez ser zero se
e somente se um dos fatores for igual a zero. Isto o mesmo que dizer que h
duas razes ri e rj tais que ri rj = 0, ou ri = rj .
1
1
Pr
e
lim
Nas prximas Sees usaremos tangentes e cordas para construir grupos com
curvas elpticas por isso excluiremos as curvas com discriminante zero.
16.1
Ve
rs
222
16.1.1
Simtrico
in
ar
P
b
lim
Pr
e
Ve
rs
16.1.2
P
1
Soma de pontos
R
b
1
b
P
1
1
b
lim
in
ar
223
yp = yq
xp xq
Pr
e
K = yp M xp
Verificamos onde esta reta intercepta a curva, obtendo um terceiro ponto, substituindo y 2 = (M x + K)2 na equao da curva:
(M x + K)2 = x3 + Ax + B
x3 + Ax + B (M x + K)2 = 0
x3 + Ax + B K 2 + 2M Kx + M 2 x2 = 0
Ve
rs
e portanto
16.1.3
xr = M 2 xp xq
yr = M xr + K.
Dobrando um ponto
224
2
b
1
b
lim
in
ar
e portanto 2Q = P .
Pr
e
f 0 (x)
dy
=
.
dx
2y
M=
3x2p + A
.
2yp
Ve
rs
Finalmente, 2P = R = (xr , yr ).
Vimos antes que se um ponto P tem coordenada y igual a zero, ento P =
P . Podemos concluir que 2P = O e de fato, a tangente em P s interceptar
a curva no ponto no infinito O.
16.2
Ordem do grupo
225
q + 1 2 q #E(F q) q + 1 + 2 q.
16.3
in
ar
Fp
Pr
e
16.3.1
lim
(mod p) = x3 + Ax + B
(mod p),
(mod p) 6= 0.
Ve
rs
(mod p)
yr = M xr + K (mod p)
yp = yq
M=
(mod p)
xp xq
K = yp M x p
(mod p)
(mod p)
yr = yp + M (xp xq )
M=
3x2p
+A
2yp
(mod p).
(mod p)
226
16.3.2
GF2m
in
ar
x 0 A2 x +
lim
Criptossistemas e protocolos
Pr
e
16.4
16.4.1
Logaritmo discreto
Ve
rs
227
16.4.2
in
ar
Diffie-Hellman
lim
Construo 16.8 (Protocolo de Diffie e Hellman para estabelecimento de chaves). Dois participantes, A e B, estabelecem uma chave simtrica da seguinte
maneira:
Pr
e
16.4.3
Elgamal
Ve
rs
228
16.4.4
16.5
Emparelhamentos bilineares
in
ar
Fatorao de Inteiros
Pr
e
16.6
lim
Certos grupos construdos sobre pontos de curvas elpticas podem ser usados
na construo de emparelhamentos bilineares; h diversos problemas difceis
relacionados a estes emparelhamentos que so explorados em construes criptogrficas. Na Criptografia baseada em identidades (abordada no Captulo 18),
por exemplo, h uma abundncia de construes baseadas neste conceito. Emparelhamentos bilineares so discutidos no Captulo 19.
Curvas elpticas tambm podem ser usadas para fatorar nmeros inteiros, uma
aplicao tambm relevante para a Criptografia.
Notas
Ve
rs
O uso de grupos de curvas elpticas em Criptografia foi proposto independentemente em 1986-1987 por Neil Koblitz [95] e Victor Miller [96].
Diversos livros discutem o uso de curvas elpticas em Criptografia [97] [98]
[99] [100]. Uma excelente introduo matemtica aritmtica de curvas elpticas
sem meno Criptografia dada por Silverman e Tate [101].
O espao projetivo descrito em Portugus no livro de Gomes e Velho [102],
no Captulo dois. Em Ingls h uma abordagem mais profunda no Captulo trs
do livro de Kostrikin [103]. A insero do ponto no infinito a um espao
chamada de compactificao deste espao, e pode ser feita no apenas para as
retas paralelas ao eixo das ordenadas, e sim para todas as retas. Por exemplo, ao
adicionar ao plano complexo C2 um nico ponto no infinito no qual todas as retas
se encontram, obtm-se um espao compacto chamado de esfera de Riemann.
Veja por exemplo a introduo Topologia e Anlise de Simmons [104].
Exerccios
Ex. 115 Prove as seguintes propriedades para a operao de grupo que
definimos para curvas elpticas sobre os reais:
a) P = P + O = O + P
229
b) P + (P ) = O
c) P + (Q + R) = (P + Q) + RO
in
ar
d) P + Q = Q + P
Ve
rs
Pr
e
lim
Ve
rs
Pr
e
lim
in
ar
230
Captulo 17
17.1
lim
Primalidade e Fatorao
in
ar
Fatorao
17.1.1
Pr
e
Esta Seo comea com a descrio de dois mtodos simples para fatorao: O
mtodo p 1 e o mtodo de Pollard. Estes mtodos so eficientes apenas
quando o nmero tem pelo menos um fator relativamente pequeno. Na prtica,
usam-se estes mtodos inicialmente, e caso no resultem em sucesso, outros mtodos so usados. Estes outros mtodos incluem por exemplo o crivo quadrtico
e o mtodo de curvas elpticas, tambm descritos nesta Seo.
Ve
rs
eratostenes(n):
para i de 0 a n:
vi i
v1 0
i2
enquanto i2 n:
se vi 6= 0:
j 2i
enquanto j n
vj 0
j j+i
231
232
lim
Pr
e
divisao_sucessiva(n):
se 2 | n
retorne 2
k3
enquanto k b nc:
se k | n
retorne k
senao
k k+2
retorne n
in
ar
maiores que n.
17.1.2
Mtodo p 1 de Pollard
Ve
rs
l
1 2
= a
1 a2 al ,
q1
= a11 a22 al l aj j ,
. Assim, escolhemos o
i=1
17.1. FATORAO
233
in
ar
b1 b2 bl k
B
,
= 1 1 22
l
p1
a1 a2 a
k
porque i i para todo i, bastando somente que l k.
Como na fatorao de p 1 e q 1 notamos que al < aj , deve haver algum
k para o qual B | (p 1) mas B - (q 1). Esta a escolha que admitiremos
para B.
Escolhemos aleatoreamente x em Zn , e calculamos a = xB (mod p). Como
(p 1)|B, podemos escrever B = k(p 1) e
(mod p)
= xk(p1)
h
= x(p1)
=
(mod p)
(mod p)
1.
ik
lim
xB
(mod p)
(mod q) = xk (q1)
(mod q) = 1.
xB
(mod q)
Pr
e
= xk (q1)+r (mod q)
h
ik 0
= x(q1) (mod q) xr
= x
(mod q)
(mod q).
Ve
rs
factorp1(n, B):
x R Zn
a xB (mod n)
b mdc (a 1, n)
se 1 6= b 6= n:
retorne b
seno
retorne
234
a = xB
in
ar
a = xB
lim
b = mdc (a 1, n) = 1.
Pr
e
17.1.3
Mtodo de Pollard
(mod n)
Ve
rs
x1
52
x2
320
x3
2149
x4
1746
x5
320
x6
x7
= 2149
= 1746
x8
320
x9
2149
x10
1746
17.1. FATORAO
235
y1
y2
y3
y4
y5
y6
y7
y8
y9
y10
lim
y0
in
ar
Pr
e
yi
yj
Ve
rs
yj1
y2
y1
y0
236
x3
x6
x3
x7
x7
x12
x7
x13
x7
x14
x7
x15
lim
x1
in
ar
x2n 1 xj ,
17.1.4
F Crivo quadrtico
Pr
e
(mod n),
Ve
rs
17.1. FATORAO
237
vi = (a1 , a2 , . . . , a|B| ).
in
ar
g(r0 )
23 31 52
g(r1 )
21 32 50
g(r2 )
20 33 52
g(r3 )
22 31 53
Ento,
=
(3, 1, 2)
(1, 2, 0)
v2
(0, 3, 2)
v3
(2, 1, 3)
Pr
e
v0
v1
lim
Observamos que para multiplicar g(ri ) por g(rj ) basta que somemos vi com vj .
Usando o exemplo anterior,
g(r0 ) + g(r1 ) = 2(3+1) 3(1+2) 5(2+0) .
Ve
rs
(1, 1, 0)
w1
(1, 0, 0)
w2
(0, 1, 0)
w3
(0, 1, 1)
238
in
ar
Usamos ento eliminao Gaussiana mdulo dois para encontrar um subconjunto dos rs que seja linearmente dependente:
1 1 0
1 0 0
A=
0 1 0
0 1 1
Encontramos L0 = L1 + L2 , e portanto podemos usar os ndices 0, 1, 2. Em
{v0 + v1 + v2 } h somente coeficientes pares.
(3, 1, 2)
(1, 2, 0)
(0, 3, 2)
(4, 6, 4)
lim
v0 + v1 + v2
600 18 675 24 36 54
Pr
e
(mod n).
(mod n),
F Curvas elpticas
17.1.5
17.1.6
Ve
rs
Notas
17.1. FATORAO
239
Exerccios
Ve
rs
Pr
e
lim
in
ar
Ve
rs
Pr
e
lim
in
ar
240
Captulo 18
lim
Criptografia Baseada em
Identidades
in
ar
Ve
rs
Pr
e
Enc(msg)
Alice
Bob
Sign(m)
A prxima Figura mostra como funcionam os esquemas baseados em identidade. A autoridade T d apenas a chave privada a Alice; quando Bob precisa
241
242
chave secreta
Enc(msg)
Alice
in
ar
lim
Bob
Sign(m)
18.1
Pr
e
Em situaes prticas, a identidade de Alice pode ser um nmero de documento, telefone, endereo de rede ou qualquer outro identificador nico. Uma
nica vez, Alice autentica-se para a autoridade T , e depois no h mais necessidade de interao dos participantes com T ou com um diretrio.
H esquemas baseados em identidades para encriptao, assinatura e acordo
de chaves.
No resto deste Captulo, usaremos id, e no pk, para denotar uma chave
pblica.
Gerao de chaves
Ve
rs
18.2. ENCRIPTAO
18.2
243
Encriptao
in
ar
Definio 18.2 (Esquema de encriptao baseado em identidades). Um esquema de encriptao baseado em identidades consiste de um esquema de gerao de chaves baseado em identidades e mais dois algoritmos:
Encid (m): dados uma identidade id, os parmetros pblicos P e uma
mensagem m, Enc retorna um texto encriptado.
lim
Pr
e
As noes de segurana para encriptao em sistemas assimtricos se traduzem diretamente para criptossistemas baseados em identidade. No entanto, h
definies de segurana mais forte que aquelas. Comeamos pela definio de
segurana adaptativa contra ataques de texto encriptado escolhido, permitindo
ao adversrio obter uma srie de chaves privadas alm de textos encriptados.
Experimento 18.3 (IND_ID_CCA(, A, n)).
Ve
rs
5. A pode fazer mais consultas da mesma forma que antes, mas no pode
usar nas consultas o id que escolheu.
244
6. A envia um bit b0 .
7. O resultado do experimento um se b = b0 ou zero em caso contrrio.
D
1n
id, m0 , m1
Encsk (mb )
lim
b R {0, 1}
sk Extract(id)
in
ar
AExtract,Decid
b0
b=b 1
b 6= b0 0
Pr
e
1
+ negl(n).
2
Da mesma forma que a diferena entre segurana CPA e CCA a possibilidade do adversrio obter decriptaes de mensagens, definimos segurana
IND-ID-CPA exatamente como IND-ID-CCA, exceto que o orculo, no experimento IND_ID_CPA, no responder a consultas de decriptao.
Ve
rs
18.3
Pr[IND_ID_CPA(, A, n) = 1]
1
+ negl(n).
2
Assinaturas
Definio 18.7 (Esquema de assinaturas baseado em identidades). Um esquema de asinaturas baseado en identidades composto de um esquema de
gerao de chaves mais dois algoritmos:
18.3. ASSINATURAS
245
Signsk (m): dadas uma chave secreta sk e uma mensagem m, Sign retorna
uma assinatura de m.
in
ar
Vrfid (, m): a partir dos parmetros pblicos P , da identidade id do assinante, da assinatura e da mensagem m, Vrf determina se a assinatura
vlida.
A traduo da definio de segurana CMA1 para criptossistemas baseados
em identidade bastante direta.
Experimento 18.8 (SIG_FORGE_ID_CMA(, A, n)).
lim
Pr
e
Ah,Extract,Signid
Ve
rs
D
1n , P
(id, m, )
Vrfid (m, ) = 1
id
/ consultados
1 Definida
1
+ negl(n).
2
246
18.4
Acordo de chaves
18.5
in
ar
lim
Pr
e
Ve
rs
id
se id
= id = 1
p q
sk =
id se id = id = 1.
p
q
Uma maneira de obter sk computar
sk = (id)
n+5pq
8
Retorne (c1 , c2 ).
c1 =t + (id)t1
c2 =t (id)t
mod n
mod n.
Retorne
c+2(sk)
n
se sk = id
se sk = id.
in
ar
(
c1
c=
c2
247
Pr
e
lim
Ve
rs
1
+ p(n),
2
248
in
ar
lim
(mod n)
Pr
e
c2 R Jn .
Ve
rs
t3 = at
(mod p) = at1
(mod q),
(mod p) = t
(mod q),
(mod p) = at
(mod q).
249
Temos
1
1
(t + at1 ) = (t1 + at1
1 ) = (t2 + at2 ) = (t3 + at3 ),
mas
in
ar
t3
t1
t2
t
=
6=
=
,
n
n
n
n
e portanto A no tem qualquer informao que possa usar, e o melhor que pode
fazer responder nt com probabilidade 1/2.
lim
Pr
e
(mod n)
s =(sk)rf (t,m)
(mod n).
Ve
rs
se = id tf (t,m)
mod n.
As chaves privadas sk podem ser computadas eficientemente porque a autoridade T tem a fatorao de n.
Para verificar que a assinatura est correta, observamos que a condio verificada por Vrf se = id tf (t,m) mod n; podemos reescrever esta condio
trocando id por (sk)e e t por re :
se = (sk)e ref (t,m)
(mod n).
(mod n).
250
Notas
Exerccios
Pr
e
lim
in
ar
Ve
rs
Ex. 121
No criptossistema de Cocks necessrio escolher um nmero t
tal que nt = m, Mostre como fazer isto e analise a eficincia do mtodo que
propuser.
Ex. 122 O criptossistema de Cocks usa uma funo de hashing que mapeia
cadeias em Jn . Descreva uma funo de hashing que possa ser usada naquele
sistema.
251
in
ar
Ex. 123 No esquema de assinaturas de Shamir, possvel que uma mensagem tenha mais de uma assinatura. Discorra sobre isso, estimando a densidade
de assinaturas de uma mesma mensagem e a probabilidade de uma fraude por
busca exaustiva.
Ve
rs
Pr
e
lim
Ex. 124 Suponha que queiramos construir esquemas de encriptao ou assinaturas que no dependam de uma nica autoridade confivel. D uma possvel definio de segurana para tais esquemas.
Ve
rs
Pr
e
lim
in
ar
252
in
ar
Captulo 19
lim
Emparelhamentos Bilineares
Pr
e
Ve
rs
254
19.1
in
ar
lim
Pr
e
19.2
Ve
rs
H1 : { 0, 1 } G1
n
H2 :G2 { 0, 1 }
Extract(id): calcule
pk =H1 (id)
sk =s(pk)
Retorne
r
(rP, M H2 (gid
)) .
255
19.3
in
ar
m = b H2 (e(sk, a))
lim
19.4
Pr
e
Acordo de chaves
Construo 19.10 (Acordo de chaves baseado em identidades com tres participantes (Joux)). Trs participantes, A, B e C tem chaves secretas a, b,
c Zq .
Ve
rs
1. A envia aP para B, C;
2. B envia bP para A, C;
3. C envia cP para A, B;
4. A calcula KA = e(bP, cP )a ;
5. B calcula KB = e(aP, cP )b ;
6. C calcula KC = e(aP, bP )c .
256
19.5
Outras construes
in
ar
Notas
Os emparelhamentos bilineares em grupos de curvas elpticas foram usados inicialmente por Menezes, Okamoto e Vanstone em um ataque a criptossistemas
de curvas elpticas: o ataque MOV, como chamado, reduz a complexidade do
logaritmo discreto em certos grupos de curvas elpticas para aquela do logaritmo
discreto em um corpo finito. Posteriormente, Joux publicou seu protocolo de
acordo de chaves [124], mostrando a primeira aplicao positiva de emparelhamentos bilineares em Criptografia.
lim
Exerccios
Ex. 126 Formule os Teoremas 19.2 e 19.3 para emparelhamentos assimtricos e escreva suas demonstraes.
Ve
rs
Pr
e
in
ar
Captulo 20
lim
Criptografia Ps-Quntica
20.1
Pr
e
Dificuldade de problemas
Ve
rs
258
20.2
Computao quntica
Ve
rs
Pr
e
lim
in
ar
259
lim
in
ar
possvel, porque (1/2)2 +( 3/2)2 = 1. Quando for observado, este qubit passar
para o estado |0i
probabilidade (1/2)2 = 1/4 e para o estado |1i com
com
2
probabilidade ( 3/2) = 3/4.
No se pode dizer, no entanto, que as amplitudes so probabilidades no sentido comum ao qual estamos habituados. Em primeiro lugar, elas so nmeros
complexos (no exemplo anterior so reais para manter a simplicidade); alm
disso, podem ser negativas: suponha que um qubit esteja no estado 1/2 |0i
3/2, semelhante ao estado do exemplo anterior exceto por termos mudado o sinal do segundo coeficiente. Como as probabilidades dos estados so dadas pelos
quadrados dos coeficientes, as probabilidades para estes estados so exatamente
as mesmas que para o outro exemplo (1/4 e 3/4).
Pode ser til visualizar o estado de um qubit como um vetor. Primeiro
identificamos os estados |0i e |1i com vetores coluna unitrios ortogonais por
exemplo, podemos usar |0i = (1, 0)T e |1i = (0, 1)T . O estado do sistema
dado por 0 |0i + 1 |1i, que o mesmo que
1
0
0
+ 1
0
1
Pr
e
|1i
Ve
rs
sen
cos
|0i
Esta interpretao visual no se extende facilmente aos casos em que os coeficientes so complexos ou para muitas dimenses, mas facilita a compreenso de
certas operaes em qubits, como rotao.
260
in
ar
|ij |2 = 1.
i,j
20.2.1
Operaes qunticas
(20.1)
lim
Pr
e
Ve
rs
Negao
de um qubit O operador que realiza a negao de um qubit
0 1
. O qubit 0 |0i + 1 |1i negado 1 |0i + 0 |1i, onde 0 e 1 so
1 0
permutados.
261
in
ar
lim
(0 + 1 ) |0i + (0 1 ) |1i .
Definio 20.4 (Matriz de Hadamard). Uma matriz de Hadamard uma matriz quadrada (nn) com entradas iguais a 1 que satisfaz HH T = nI.
Pr
e
Ve
rs
20.3
Subgrupo oculto
20.4
Fatorao de inteiros
20.4.1
262
A transformada discreta de Fourier mapeia um vetor A de nmeros complexos em outro outro vetor B de igual tamanho, tambm de nmeros complexos:
1
2
..
.
1
2
4
..
.
n1
2(n1)
a0
a1
2(n1)
..
.
..
.
an
(n1)(n1)
n1
in
ar
1
b0
1
b1
1
.. = 1
.
n
1
bn
1
Pr
e
lim
|2i =
1
0
Ve
rs
Pn1
Usamos ento uma superposio de estados |i = j=0 j |ji como entrada
para o algoritmo.
A transformada quntica de Fourier um algoritmo quntico que tem como
entrada n bits, codificados como superposio de estados em log(n) qubits.
A sada do algoritmo tambm uma superposio de estados mas isso
significa que ao medir a sada no poderemos obter os 2n bits!
Obtemos, no entanto, uma sequncia de n bits da sada, sorteados de
acordo com as probabilidades descritas pelas amplitudes do estado de superposio.
Definio 20.5 (Vetor peridico). Um vetor V com n elementos peridico se
vi = vj se e somente se i j (mod k) para algum k tal que k|n. O nmero k
o perodo do vetor.
Em outras palavras, um vetor peridico composto de repeties de uma
sequncia de elementos. Quando somente um elemento vj dessa sequncia
diferente de zero dizemos que V peridico com deslocamento j.
Se um vetor peridico podemos usar a QFT para calcular o perodo do
vetor.
263
Notas
lim
in
ar
Exerccios
Pr
e
Ve
rs
Ve
rs
Pr
e
lim
in
ar
264
in
ar
Captulo 21
lim
Reticulados
21.1
Reticulados
Pr
e
Neste Captulo trabalharemos no espao Rn , embora os resultados sejam imediatamente aplicveis a qualquer espao Euclidiano.
Definio 21.1 (Norma Euclidiana depvetor). Seja x Rn um vetor. A norma
Euclidiana de x, denotada por ||x||, x21 + . . . + x2n
Ve
rs
..
b1,2 . . .
.
..
..
.
bn,n
265
266
21.2
in
ar
SVP: dada uma base B, determinar um vetor de L(B) com a menor norma;
SBP: dada uma base B gerando L(B), encontre outra base B 0 que seja
menor de alguma forma. Por exemplo, podemos tentar encontrar dentre
todas as bases aquela contendo o vetor de menor norma:
lim
SBP e Ortogonalidade
Pr
e
21.2.1
Dizemos que uma base ortogonal se seus vetores so todos ortogonais entre si;
dizemos tambm que o desvio de ortogonalidade de uma base uma medida de
quo diferentes os ngulos entre seus vetores so do ngulo reto. Elaboramos
esta ideia com mais rigor na definio a seguir.
Ve
rs
21.3. GGH
21.2.2
267
LLL
in
ar
21.2.3
lim
Pr
e
v = ab.
GGH
21.3
Ve
rs
Goldreich, Goldwasser o Halewi desenvolveram um elegante criptossistema baseado em problemas em reticulados, que descrito a seguir. O GGH se fundamenta no CVP e no SBP: aps codificar uma mensagem m como um ponto de
um reticulado, o texto encriptado c ser um ponto prximo de m, mas fora do
reticulado. Para decifrar c necessrio usar o algoritmo de Babai com uma base
boa que a chave privada. A base ruim (com desvio de ortogonalidade
alto) a chave pblica (que pode ser usada para encriptar mensagens, porque
permite gerar pontos do reticulado).
Construo 21.6 (Criptossistema GGH).
268
Encpk (m) = m + e,
in
ar
e = (e1 , , en ), ei R {, +}
lim
21.3.1
Pr
e
Detalhes
Gen
A gerao das chaves para o reticulado pode ser feita da seguinte maneira:
primeiro uma base ortogonal ou quase ortogonal gerada. Pode-se obter tal
base escolhendo aleatoreamente coeficientes inteiros
Ve
rs
B R {l, . . . + l}nn escolha uniformemente uma base com coeficientes inteiros entre l e l (com o cuidado de verificar se os vetores so
linearmente independentes).
21.4. NTRU
269
Enc
21.3.2
Ataques ao GGH
in
ar
lim
(mod 2),
Pr
e
e obtemos um sistema de congruncias onde a incgnita m. Nguyen mostrou tambm que com alta probabilidade este sistema tem poucas solues.
Supondo que conseguimos uma soluo m2 , observamos que
c m2 R = (m m2 )R + e,
e tambm que
m m2 0
0
(mod 2).
Ve
rs
21.4
NTRU
O criptossistema NTRU criado por Hoffstein, Pipher e Silverman foi originalmente formulado usando anis, mas pode ser descrito em termos de reticulados.
Construo 21.8 (Criptossistema NTRU).
Gen(1n ) escolha um primo n, um mdulo q e df . Seja p = 3.
pk = h = [T f ]1 g (mod q) Znq
sk = ([T f ], f, g) tais que
f
e1 + {p, 0, p}n
{p, 0, p}n .
270
Dec(c)
m = (([t f ]c)
Ajtai-Dwork
(mod p).
lim
21.5
(mod q))
in
ar
21.6
Pr
e
Mikls Ajtai e Cynthia Dwork propuseram um criptossitema baseado em reticulados, usando uma variante do SVP. Infelizmente o tamanho das chaves
pblicas no criptossistema Ajtai-Dwork O(n4 ) e cada bit de texto claro expandido para O(n2 ) bits encriptados. Nguyen demonstrou que qualquer verso
eficiente do criptossistema seria insegura. No entraremos nos detalhes deste
criptossistema.
LWE
Em 2005 Regev descreveu um criptossistema baseado em reticulados com demonstrao de segurana CPA. O criptossistema LWE baseado no problema
learning with errors.
Definimos o problema LWE usando um experimento aleatreo. Na descrio
do experimento, n, m, q so inteiros e uma distribuio de probabilidades1
sobre Zq .
Experimento 21.9 (LWE (A, n, m, q, )).
Ve
rs
1. A R Zmn
.
q
2. v0 R A
3. s R Znq , e Zm
q , v1 = As + e
4. b R {0, 1}
5. Envie vb para A.
6. A envia um bit b0 de volta
7. O resultado do experimento 1 se e somente se b = b0
21.6. LWE
271
Definio 21.10 (Problema LWE). O problema LWE consiste em obter probabilidade um no experimento LWE.
in
ar
Acredita-se que o problema LWE difcil (e portanto que somente adversrios rodando em tempo exponencial em n possam obter probabilidade um).
Notas
Pr
e
lim
Exerccios
Ve
rs
Ve
rs
Pr
e
lim
in
ar
272
in
ar
Captulo 22
lim
22.1
Pr
e
Correo de erros
Ve
rs
Um cdigo corretor de erros permite corrigir automaticamente erros na transmisso de mensagens. Isso feito inserindo informao adicional (redundncia)
na mensagem.
Suponha que queiramos transmitir uma de quatro mensagens:
compre 7 00 aguarde 7 10
venda
7 01 reporte
7 11
Um nico bit trocado pode modificar uma mensagem de compre para venda!
Para evitar que isso acontea, adicionamos redundncia informao enviada,
na forma de bits adicionais aps a mensagem:
00 7 00000
01 7 01011
10 7 10110
11 7 11101
273
274
in
ar
Quando um nico bit da mensagem for alterado, ele poder ser corrigido simplesmente escolhendo a mensagem original mais prxima da corrompida (por
exemplo, a mensagem mais prxima de 00001 00000).
lim
Pr
e
Teorema 22.2. A distncia de Hamming uma mtrica ou seja, para quaisquer trs vetores u, v, w,
d(u, v) 0;
Como modelaremos erros como vetores que so somados a mensagens, definimos o peso de um vetor como a quantidade de erros que sero introduzidos
na mensagem.
Ve
rs
275
Demonstrao. seja e = b(d 1)/2c. Seja D(x, e) o disco com centro x e raio
e. Se x e y so palavras-cdigo diferentes,
in
ar
D(x, e) D(z, e) =
E a decodificao pela mnima distncia corrigir no mximo e erros.
lim
Cdigos Lineares
Pr
e
22.1.1
Ve
rs
Definio 22.9. Seja C um [k, n]-cdigo linear. Uma base para o subespao de
Vn determinado por C chamada de matriz geradora de C.
276
in
ar
O Teorema 22.10 nos garante que para qualquer cdigo linear C com geradora
G podemos transformar G em G0 da forma [Ik , A], onde Ik a matriz identidade
k k. Assim, h um cdigo C 0 equivalente a C com matriz geradora nesta forma.
1 0 0
a1,1 a1,2
0 1
a2,1
G = [Ik , A] = .
.
.
..
..
..
0
1
lim
de um cdigo linear
0
0 1 1
0
2 1 0 .
1
1 0 2
Pr
e
1 0
G = 0 1
0 0
Para codificar a mensagem
1
mG = 1 0 1 0
0
m = 101, calculamos:
0 0
0 1 1
1 0
2 1 0 = 1
0 1
1 0 2
0 .
Ve
rs
0
A = 2
1
1
1
0
1
0
0 , AT = 1
2
1
2
1
0
1
0
1
e portanto
0
H = 1
1
2
1
0
1
0
2
1
0
0
0
1
0
0
0
1
277
0
0 2 1
1 0 0
1
= 0 .
0 1 0
HcT = 1 1 0
2
0
1 0 2
0 0 1
2
0
Decodificao
in
ar
lim
Pr
e
2. m = y z
Ve
rs
H(y2 + c)T
Hy2T + HcT .
278
22.2
in
ar
lim
Pr
e
= SGP .
Finalmente, gere a matriz chave G
pk = (G, t)
sk = (S, G, P )
3. Retorne m = mS
1 .
Ve
rs
cP 1
+ z)P 1
(mG
(mSGP + z)P 1
(mS)GP P 1 + zP 1
(mS)G + zP 1 .
c =
279
in
ar
lim
Pr
e
Notas
Ve
rs
Exerccios
Ve
rs
Pr
e
lim
in
ar
280
Captulo 23
lim
Criptografia Visual
in
ar
Criptografia visual o nome de uma tcnica desenvolvida por Moni Naor e Adi
Shamir para compartilhamento de segredos usando imagens, de forma que a
decriptao no dependa de um computador ou algoritmo.
Ve
rs
23.1
Pr
e
Cada participante recebe uma partilha, mas a partilha no precisa ser necessariamente uma sequncia de bits em formato digital ela pode ser impressa
em alguma mdia transparente (como as antigas transparncias usadas em retroprojetores). Quando um qurum mnimo de participantes sobrepe suas
transparncias, a mensagem fica aparente. Com um participante a menos, nada
pode ser inferido a respeito da mensagem (o esquema tem sigilo perfeito). O
processo tem semelhana com o one-time pad.
Damos inicialmente um exemplo simples para dois participantes, a fim de mostrar a ideia bsica do processo.
Temos duas figuras que podem ser usadas para representar pixels:
A=
B=
Para representar um pixel branco, escolhemos duas figuras iguais (A, A com
probabilidade 1/2 ou B, B com probabilidade 1/2). Para representar um pixel
preto, escolhemos duas figuras diferentes (A, B com probabilidade 1/2 ou B, A
281
282
B+B=
A+B=
B+A=
lim
A+A=
in
ar
Pr
e
o
Ve
rs
A, B :
A, A :
1, 1, 0, 0
1, 1, 0, 0
1, 1, 0, 0
283
ii) Se o pixel zero (branco) , escolha aleatoreamente uma sequncia de imagens (no ltimo exemplo cada uma com 4 pixels) que, quando sobrepostas,
fique parcialmente encoberta.
lim
in
ar
Pr
e
Ve
rs
1100 , 1010 , 0101 , 0011 , 1001 , 0110 .
284
23.1.1
in
ar
lim
1, 0, 0, . . . , 0
1, 0, 0, . . . , 0
C0 =perm_col
..
.
1, 0, 0, . . . , 0
1, 0, 0, . . . , 0
0, 1, 0, . . . , 0
C1 =perm_col
..
Pr
e
0, 0, 0, . . . , 1
Ve
rs
0, 0, 1, 1
C0 =perm_col 0, 1, 0, 1
0, 1, 1, 0
1, 1, 0, 0
C1 =perm_col 1, 0, 1, 0
1, 0, 0, 1
23.2
Dois segredos
23.3
Mltiplos segredos
Notas
Naor e Shamir apresentaram seu artigo sobre Criptografia Visual na EUROCRYPT de 1994 [153]. Giuseppe Ateniese, Carlo Blundo, Alfredo de Santis e
Douglas Stinson propuseram tcnicas para construir esquemas de criptografia
visual com suporte a estruturas gerais de acesso [154, 155, 156].
Yvo Desmedt, Shuang Hou e Jean-Jacques Quisquater desenvolveram tcnicas para criptografia ptica e de udio [157], e novas tcnicas foram propostas
por Chen-chi Lin, Chi-sung Laih e Ching-nung Yang [158]. Estruturas gerais
285
in
ar
de acesso para criptografia de udio foram propostas por Daniel Socek e Spyros
Magliveras [159].
Wu e Chen propuseram em 1998 seu esquema que permitia compartilhar
mais de um segredo [160]. Wu e Chang descreveram seu mtodo em 2005 [161].
O livro organizado por Stelvio Cimato e Ching-Nung Yang trata extensivamente de criptografia visual[162].
Exerccios
Ex. 139 Prove que a Construo 23.3 realmente um esquema de compartilhamento visual, de acordo com a Definio 23.1. D tambm os valores de d
e .
lim
Ex. 140 Implemente os esquemas para compartilhamento de um nico segredo descritos no texto: o programa deve ler k, n, uma mensagem, e gravar
arquivos com as imagens de cada participante.
Ve
rs
Pr
e
Ex. 141 Qual o limite de nmero de k para o programa que o Exerccio 140 pede?
Ve
rs
Pr
e
lim
in
ar
286
Captulo 24
lim
Encriptao Negvel
in
ar
Ve
rs
Pr
e
288
in
ar
lim
Pr
e
m1
Ve
rs
rs
rs0
m1
Fake(rS , t, m2 )
rR
rS
(m2 , rS , t)
(m2 , rS0 , t0 )
0
rR
m2
S
m2
Definio 24.1 (Esquema de encriptao negvel pelo remetente). Um esquema de encriptao negvel pelo remetente um protocolo (Gen, Send, Receive, Fake),
onde Send e Receive so programas usados pelos agentes S, remetente e R,
destinatrio, para que S envie uma mensagem a R, Gen e Fake so algoritmos
polinomiais, como descrito a seguir.
289
in
ar
lim
Pr
e
0
so escolhidos com probabilidade
Negabilidade: Suponha que rS , rS , rS0 , rR
uniforme e S enviou uma mensagem usando Sendpk (m1 , rS ). Seja t =
0
). Ento Fake produz bits aleatreos
COM(m1 , rS , rR ) e t0 = COM(m2 , rS0 , rR
rS tais que
(m2 , rs0 , t) (m2 , rS , m2 , t0 ).
24.1
Esquema de Howlader-Basu
O primeiro exemplo deste Captulo o esquema de Howlader-Basu, cuja segurana se apoia no problema da residuosidade quadrtica (definido na Seo 9.9).
Ve
rs
a0,0 a0,1
A = a1,0 a1,1
..
..
.
.
A i-sima linha contm nmeros em ZN .
290
in
ar
Quando o bit um, cada Ai,j deve ser (de fato) algum resduo quadrtico, determinado aleatoreamente:
xj R ZN
ai,j x2j (mod n);
Quando o bit zero, cada Ai,j deve pertencer a Zn , e seu smbolo
de Jacobi deve ser um. Como j visto, isso significa que este nmero
pode ser um resduo quadrtico.
O bit encriptado o ou exclusivo do bit claro b com todos os bits representados pelas linhas da matriz:
!
ri
lim
b=b
k1
M
i=0
Pr
e
Receivep,q (b, A). Para decriptar, basta notar que a chave secreta (p, q), e
portanto fcil determinar se um nmero resduo quadrtico mdulo pq.
Assim o destinatrio pode determinar, para cada linha, se ela representa
zero ou um.
Fake(N, c, A, b): o remetente pode negar que um bit foi enviado, declarando que se tratava de um quando na verdade era zero e vice-versa. Como
o bit encriptado calculado usando ou-exclusivo com todos os ri , Basta
escolher r0 igual a r em todas as posies menos uma para mudar o bit
encriptado. O remetente pode ento escolher uma linha que representava
um (ou seja, que tinha resduos quadrticos) O algoritmo Fake retorna
ento este r0 , com um dos bits 1 modificado para 0.
Ve
rs
Teorema 24.3. Presumida a conjectura da residuosidade quadrtica, a Construo 24.2 um criptossistema negvel pelo remetente como descrito na Definio 24.1.
Demonstrao. O remetente pode declarar que a posio modificada em r para
obter r0 realmente representava zero: um adversrio no conseguir determinar
se os nmeros daquela linha eram de fato resduos quadrticos ou se apenas tem
o smbolo de Jacobi igual a um (e no pode exigir a fatorao de N do remetente,
porque ele no a tem). O contrrio (mudar uma linha de zero para um) no
feito no esquema (se declararmos que a linha contm resduos quadrticos, o
adversrio poderia exigir a raiz quadrada de cada um).
H a possibilidade do algoritmo Enc, ao codificar uma linha zero, escolher
nmeros com smbolo de Jacobi +1, mas que sejam todos resduos quadrticos. Isso implicaria que a linha seria incorretamente decodificada como um (e
portanto possvel que o remetente receba o bit errado). No entanto, a probabilidade de que isto ocorra desprezvel.
291
in
ar
Teorema 24.4. A probabilidade de um bit ser codificado erroneamente no esquema de um bit de Howlader-Basu desprezvel no nmero de colunas da
matriz A.
lim
Pr
e
e calculamos os quadrados:
Ve
rs
9 15 4 25
16 25 30 14
A=
3 11 9 29
27 17 25 13
Calculamos o texto encriptado
c =1 (1 1 0 0)
=1 0
=1.
292
=1 (1 1 0 0)
=1.
in
ar
(mod 35) ( fcil para Bob, cuja chave secreta a fatorao de 35). Isso s
ocorre nas duas ltimas, e Bob determina r = (1, 1, 0, 0). fcil agora calcular
M
m =c
ri
lim
Construo 24.6 (Esquema de Howlader-Basu, negvel pelo remetente (mltiplos bits)). Neste esquema a funo Send recebe as duas mensagens como
parmetro.
Pr
e
Um vetor r0 calculado:
r0 = r md .
Ve
rs
293
9
16
A=
3
27
15 4
25 30
11 9
17 25
Calculamos
25
14
29
13
lim
in
ar
Exemplo 24.7 (Esquema de encriptao negvel (Howlader-Basu para mltiplos bits)). A mensagem que queremos transmitir m1 = (0, 1, 1, 0), e a que
queremos alegar ter enviado m2 = (0, 0, 1, 1). Suponha que tenhamos a mesma
matriz A do exemplo anterior:
Pr
e
=(1, 0, 1, 1).
r00 =r0 md
Ve
rs
=(1, 1, 0, 1) (1, 0, 1, 0)
=(1, 0, 0, 0).
Dizemos a Eve que enviamos m2 usando r00 , e nossa afirmao ser plausvel
porque
r00 c = (1, 0, 0, 0) (1, 0, 1, 1) = (0, 0, 1, 1) = m2 .
294
in
ar
=m md r md
=m (md r md r md )
=m (md r md )
=m (md r)
=c.
lim
J mencionamos a respeito deste esquema que uma das linhas zero pode vir
a conter somente resduos quadrticos, e seria consequentemente decodificada
erroneamente pelo recipiente. Calculamos agora a probabilidade de que isto
ocorra.
Teorema 24.9. A probabilidade de uma mensagem ser codificada erroneamente
no esquema de Howlader-Basu desprezvel no nmero de colunas da matriz A.
24.2
Pr
e
Demonstrao. Metade dos smbolos k com (k/n) = +1 de fato resduo quadrtico, e a outra metade no. Assim, cada vez que escolhemos um smbolo
para uma linha zero, a probabilidade de escolhermos um resduo quadrtico
1/2. Com k colunas na matriz, a probabilidade de erro 1/2k . Com m linhas
zero, temos m(1/2k ) = m/2k , que desprezvel em k.
Esquema de Drmuth-Freeman
Ve
rs
O esquema de encriptao de Drmuth-Freeman, descrito a seguir, fundamentase no conceito de encriptao amostrvel. O criptossistema no seguro (h um
erro na demonstrao do Teorema que asseguraria a negabilidade), mas , ainda
assim, um exemplo interessante de construo.
Definio 24.10 (Criptossistema amostrvel). Um criptossistema para um
nico bit amostrvel se:
i) H um algoritmo eficiente RandomCT(pk) que escolhe c C tal que, para
qualquer chave pblica pk,
Encpk (m)
seja computacionalmente indistinguvel de
RandomCT(pk).
ii) SampleEncRand(sk, c), que dados uma chave secreta e um texto encriptado, determina um r0 tal que, para qualquer chave secreta sk,
(sk, c, r)
in
ar
(sk, c, r0 ).
iii) SampleCTRand(pk, c) que, dados uma chave pblica pk e um texto encriptado c, determina s0 tal que, para qualquer chave secreta sk,
(sk, c, s)
seja computacionalmente indistinguvel de
lim
(sk, c, s0 ).
Pr
e
Alice repete este processo k vezes para garantir que a maioria dos bits ser
b.
Ve
rs
Quando Alice for obrigada a entregar a encriptao e o bit enviado, ela pode
apresentar conjuntos A0 , B 0 , C 0 de forma que A0 represente uma encriptao de
b.
24.3
296
in
ar
24.4
Pr
e
lim
Aplicaes
Ve
rs
A encriptao negvel alm de ser imediatamente til per se pode ser tambm usada como ferramenta para tornar protocolos mais seguros. Por exemplo,
quando um protocolo de votao usado pode acontecer de um participante
tentar coagir outro a revelar seu voto. O participante que tenta coagir o outro
pode tentar verificar se o outro est mentindo, obrigando-o a encriptar o voto
para compar-lo com o voto oficial. Havendo a possibilidade de obter o mesmo
texto cifrado de dois votos diferentes, o protocolo enfraquece esse tipo de ataque. Outra aplicao imediata de encriptao negvel a computao segura
com mltiplos participantes.
Notas
24.4. APLICAES
297
Exerccios
Ex. 142 Porque, no esquema de Howlader-Basu, exigimos que r 6= 0?
in
ar
lim
Ex. 145 No esquema de Howlader-Basu, dissemos que Gen deve gerar primos p e q com n bits, e tambm r com k bits, para algum k suficientemente
grande. Se quisermos que ambos os valores nos dem o mesmo nvel de segurana, sabendo sabendo a complexidade do algoritmo do corpo de nmeros
algbricos, quando deve ser k (em funo de n)?
Ex. 146 Defina encriptao negvel para criptossistemas simtricos, e construa um esquema de encriptao negvel simtrico.
Ex. 147 Critique a construo de esquema negvel pelo destinatrio.
Pr
e
Ve
rs
Ve
rs
Pr
e
lim
in
ar
298
Captulo 25
lim
Votao Eletrnica
in
ar
Pr
e
Um sistema de votao permite que diversos participantes (eleitores) escolham dentre diferentes opes e, oferecendo garantias de segurana, determinar
a melhor opo, e acordo com algum critrio (por exemplo, o mais votado).
H diversas garantias de segurana que sistemas de votao eletrnica podem
oferecer:
Corretude: o resultado das eleies deve ser correto: o resultado deve
refletir a descrio do critrio de escolha. Este um requerimento bsico
e obrigatrio em todos os casos;
Robustez: no deve ser possvel a um grupo pequeno de participantes
manipular o resultado das eleies;
Ve
rs
Justeza: um eleitor que vote depois de outro no deve ter sua disposio
qualquer informao sobre os votos j feitos, exceto o seu.
299
300
in
ar
lim
Pr
e
Ve
rs
25.1
Mix Nets
Suponha que um grupo de usurios queira enviar (ou publicar) mensagens anonimamente. Queremos oferecer alguma garantia mnima de que as mensagens
no podero ser ligadas aos remententes. Uma soluo para este problema o
envio de mensagens usando mix nets.
H n servidores encarregados de rotear as mensagens, cada um com um par
de chaves pblica e privada (sk1 , pk1 ), (sk2 , pk2 ), . . . , (skn , pkn ).
301
in
ar
Para enviar uma mensagem m anonimamente, um usurio encripta a mensagem com as chaves pblicas de todos os servidores primeiro com pkn , depois
com pkn1 , at pk1 :
25.2
lim
Assinaturas cegas
Pr
e
Suponha que uma autoridade precise assinar uma autorizao, mas sem saber
seu contedo. Se usarmos uma assinatura RSA ou DSA comum, a autoridade
necessarimante conhecer o contedo da mensagem. Queremos um mtodo para
obfuscar a mensagem, permitir que ela seja assinada, e depois de assinada,
remover o contedo obfuscante, conseguindo assim uma assinatura comum na
mensagem.
Definio 25.1 (Esquema de assinatura cega). Um esquema de assinaturas
um esquema de assinaturas com dois algoritmos adicionais:
Blind(m, pk, r)
Ve
rs
(mod N ).
302
in
ar
25.3
lim
Pr
e
2. Cada eleitor Pi encripta sua chave pblica pki e a envia para a mixnet por
um canal inseguro (ou publica em um quadro de avisos):
Pi M : Enck1 (Enck2 (. . . (Enckm (pki )) . . .)).
3. Depois de receber a lista de chaves de todos os eleitores, a mixnet mistura,
decripta a lista e a publica.
Ve
rs
5. Cada eleitor Pi encripta seu voto vi e o envia para a mixnet junto com sua
chave pblica:
Pi M : Enck1 (Enck2 (. . . (Enckm ([pki , Encski (vi )])) . . .)).
6. A mixnet mistura, decripta e publica a lista de votos com chaves pblicas.
7. Todos os eleitores podem verificar que suas chaves pblicas esto na lista
e que seus votos no foram alterados.
8. Como pki e Encski (vi ) esto na lista, todos podem decriptar e contar os
votos.
25.3.1
Anlise
in
ar
Democracia: no suportada a mixnet recebe uma lista de chaves pblicas, mas no h registro de eleitores.
lim
25.4
Pr
e
Ve
rs
304
no: m1 =t1
O voto encriptado em
(a, b) = (g k , hk mb ),
in
ar
sim: m0 =t
lim
ai ,
Y
bi .
Pr
e
(A, B) =
Ve
rs
Temos ento que D = logt (C) a diferena entre os votos, mas no podemos facilmente computar logaritmos discretos. No entanto, sabemos que h no
mximo M votos, e portanto podemos procurar a diferena sequencialmente,
testando tM , tM 1 , . . . , tM at encontrar C.
25.4.1
Anlise
Sigilo:
Democracia:
Verificabilidade:
Justeza:
No-coercibilidade:
Complexidade de comunicao:
25.4.2
305
Votao 1-de-L
in
ar
25.5
lim
Construo 25.5.
I: Inicializao
Pr
e
Ve
rs
4. Pi assina ei :
si = Signski (ei )
306
in
ar
5. A autoridade T verifica se cada eleitor Pi pode votar, e se no est registrando mais de um voto; verifica tambm a assinatura de Pi , e se obtiver sucesso em todas as verificaes, envia para Pi assina ei e envia
di = SignskT (ei ) para o eleitor Pi .
6. A autoridade T publica a lista de compromentimentos de voto (IDi , ei , si ).
III: Votao
7. O eleitor Pi obtm a assinatura de T em ei :
ti SigExtract(di , ri )
lim
Pr
e
11. O coletor publica uma lista (j, ei , ti ), onde j varia de 1 ao nmero de votos.
IV: Apurao (abertura)
V: Apurao (contagem)
Ve
rs
15. O coletor abre os comprometimentos das cdulas e publica uma nova lista
(j, ei , ti , ki , vi ).
16. Todos podem fazer a contagem dos votos.
25.5.1
Anlise
307
in
ar
lim
Notas
Ve
rs
Pr
e
Exerccios
Ex. 152 Implemente uma mix-net para algum sistema de comunicao (por
exemplo, e-mail ou um quadro de avisos com interface web).
308
in
ar
lim
Pr
e
Ex. 160 Na Seo 25.4.2 h uma brevssima descrio da extenso do esquema de Cramer, Gennaro e Schoenmakers para votao 1-em-L. Desenvolva
os detalhes. Mostre, em particular, como so as provas de validade de voto, as
provas apresentadas pelas autoridades e como se d a contagem dos votos.
Ve
rs
Captulo 26
lim
Dinheiro Eletrnico
in
ar
Anonimidade
Pseudonimodade
No-rastreabilidade
Pr
e
Possibilidade de Transferncia
Preveno de gasto duplo
No-fraudabilidade
No-framing
Justeza
Recuperabilidade
Ve
rs
Auditabilidade
Notas
O primeiro artigo a propor dinheiro digital foi publicado em 1982 por David
Chaum [178].
H uma seo sobre dinheiro eletrnico no livro de Delfs [15]; uma viso
geram (em nvel de detalhe bastante alto) dada no trabalho de Isabelle SimplotRyl, Issa Traor e Patricia Everaere [179].
Em sua tese de doutorado, Mansour Al-Meaither apresenta uma discusso
interessante e que trata especificamente de dinheiro eletrnico respeitando princpios Islmicos [180].
309
Ve
rs
Pr
e
lim
in
ar
310
in
ar
Captulo 27
lim
Cifras Histricas
27.1
Pr
e
Cifras
Ve
rs
(mod 26).
(A chave o deslocamento)
Uma cifra de substituio pode ser monoalfabticas, quando um caractere
substitudo de cada vez, ou polialfabticas, quando grupos de caracteres so
substitudos.
Em uma cifra de deslocamento, a quantidade de chaves a quantidade de
possveis deslocamentos que igual ao tamanho do alfabeto (muito pequena).
Em uma cifra arbitrria de substituio a quantidade de chaves igual
quantidade de permutaes de M ou seja, |M|!
311
312
Definio 27.2 (Cifra de permutao). Uma cifra de permutao se os caracteres usados no texto claro tem apenas suas posies permutadas.
in
ar
Definindo o tamanho da mensagem (ou bloco) como n, a chave uma permutao das n posies do bloco. Assim temos n! chaves.
lim
Exemplo 27.3 (Ctala espartana). Aparentemente, os espartanos desenvolveram uma cifra de permutao. A realizao fsica da cifra chamada de Ctala,
e consiste de um cilindro e uma fita. A fita passada ao longo do cilindro, e
a mensagem escrita na fita. Quando a fita retirada do cilindro, os caracteres
tem suas posies trocadas. A chave o dimetro do cilindro.
Pr
e
D O U T
O R
F
A N T A
S T I C
O
Ve
rs
D O A S O
O R N T
U
T I
T F A C
27.1. CIFRAS
313
in
ar
Exemplo 27.6 (Atbash). A cifra Atbash uma cifra de substituio monoalfabtica, e consiste em trocar a primeira letra do alfabeto pela ltima, a segunda
pela penltima, e assim por diante. Para um
Por exemplo, a frase Se o luar meu amigo, censurar ningum se atreve seria encriptada como HV L OFZI V NVF ZNRTL XVMHFIZI MRMTFVN HV ZGIVEV
Exemplo 27.7 (Cifra afim). A cifra afim uma generalizao da cifra de deslocamento. Ao invs de substituir um caracter m por m + k (mod 26), substitumos por ma + b (mod 26), e a chave ento o par (a, b).
C
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
D
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
E
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
F
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
G
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
H
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
I
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
J
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
K
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
L
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
M
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
N
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
O
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
P
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
Q
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
R
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
S
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
T
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
U
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
Pr
e
B
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
A
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Ve
rs
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
lim
Exemplo 27.8 (Cifra de Vigenre). A cifra de Vigenre uma cifra de substituio polialfabtica com chave. A chave uma sequncia de caracteres, e cada
caracter do texto claro trocado de acordo com uma tabela que depende de sua
posio.
A seguinte tabela usada para determinar como os caracteres so substitudos.
V
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
W
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
X
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Y
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Z
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
314
in
ar
(I, M ) U
(S, A) S
lim
m = (m1 , m2 , . . . , mn ).
(mod 26)
c2 =a2 m2 + b2
..
.
(mod 26)
cn =an mn + bn
(mod 26).
Pr
e
c1 =a1 m1 + b1
Ve
rs
onde
k1,1
..
k= .
kn,1
k1,2
..
.
kn,2
...
k1,n
...
kn,n
Para decriptar basta multiplicar o texto encriptado pela inversa de k. necessrio cuidado para escolher k no singular. Para isto basta que mdc (k) seja
co-primo com o tamanho do alfabeto (26 neste exemplo). Isto pode ser facilmente feito, selecionando aleatoreamente todos os elementos da matriz em
Z26 \ { 0 }, exceto um deles, e determinando este ltimo de forma a obter o
determinante que queremos.
27.2
Enigma
27.3. CRIPTANLISE
27.3
27.3.1
315
Criptanlise
Anlise simples de frequncia
27.3.2
in
ar
Vigenre
Notas
Exerccios
Pr
e
lim
Ve
rs
Ex. 162 Implemente simuladores para todas as tcnicas descritas neste Captulo (cifras e mtodos de criptanlise).
Ex. 163 Determine que cifra foi usada em cada mensagem e determine o
texto claro:
c) OAADE IAOIE ACMHR MNUSN SHVQO IASSC BEIAA AUOEU TIMIU RSTTA OESEN
DVNVP IEMAL EACUE QMLPH AMEDO OGARH AVRRM UOAEU OILOQ SES
Ex. 164 Discorra sobre a maleabilidade das cifras descritas neste Captulo.
316
Ex. 165 No Exemplo 27.9 (cifra de Hill) dissemos que quando realizamos
operaes mdulo z, uma matriz M tem inversa se seu determinante co-primo
com o mdulo (z). Prove que isto verdade.
in
ar
Ex. 166 Determine em que condies a cifra de Vigenre tem sigilo perfeito
(e demonstre o fato).
Ve
rs
Pr
e
lim
lim
in
ar
Parte IV
Ve
rs
Pr
e
Apndices
317
Ve
rs
Pr
e
lim
in
ar
in
ar
Apndice A
lim
Probabilidade
O problema do aniversrio
Pr
e
A.1
Em um grupo de n pessoas, qual a probabilidade de duas delas fazerem aniversrio no mesmo dia?
Este problema chamado de problema do aniversrio, e a resposta costuma
contrariar a intuio: para 23 pessoas, a probabilidade 1/2; para mais pessoas,
esta probabilidade ainda maior.
A seguir demonstramos um limite (no justo) inferior para a probabilidade
de coliso em q elementos escolhidos ao acaso em um conjunto de tamanho N .
Ve
rs
Lema A.1. Seja N um inteiro positivo. Se q elementos so escolhidos uniformemente de um conjunto de tamanho N , a probabilidade de dois destes elemenq2
tos serem iguais no mximo 2N
.
320
APNDICE A. PROBABILIDADE
i
N
ei/N , e
lim
in
ar
Mas temos que Pr[C 1 ] um, porque temos e1 sozinho e no h dois elementos
que possam ser iguais. Alm disso, se C i ocorre, ento h i elementos diferentes
em {e1 , e2 , . . . , ei }. A probabilidade de ei+1 ser igual a um dos anteriores ,
ento, Ni , e a probabilidade de ei+1 ser diferente dos anteriores 1 Ni . Ou
seja,
i
Pr[C i+1 |C i ] = 1 .
N
Temos ento
q1
Y
i
Pr[C q ] =
1
.
N
i=1
Pr[C q ]
q1
Y
eN
i=1
P
q1
i=1 (i/N )
= e
= e(q1)/2N .
Pr
e
1 Pr[C q ]
1 e(q1)/2N
q(q 1)
.
4N
Neste ltimo passo nos valemos de termos q 2N (e portanto q(q 1)/2N <
1).
Ve
rs
in
ar
Apndice B
lim
Pr
e
Ve
rs
Definio B.2 (Mximo Divisor Comum). Sejam a e b inteiros tais que pelo
menos um deles diferente de zero. O mximo divisor comum de a e b o
nmero inteiro d > 0 tal que d|a, d|b e qualquer inteiro f que divida a e b
tambm divide d. Denotamos o mximo divisor comum de a e b por mdc (a, b).
O Algoritmo de Euclides para obteno do mdc pode ser descrito da seguinte
maneira: Sejam a, b > 1. Se b 6 |a, mdc (a, b) = mdc (b, resto(a, b)). Se b|a ento
mdc (a, b) = b.
O pseudocdigo para o Algoritmo de Euclides
mdc(a, b):
se b|a
retorne b
senao
retorne mdc(b,resto(a, b))
Teorema B.3. O Algoritmo de Euclides calcula corretamente o mdc .
Demonstrao. Se b > a, temos que a b = 0 e resto(a, b)= a. Assim,
mdc (b, resto(a, b)) = mdc (b, a),
321
322
in
ar
lim
Como determinamos que mdc (b, r) mdc (a, b) e mdc (b, r) mdc (b, r), ento
mdc (b, r) = mdc (a, b).
Definio B.4 (Primos entre si). Dois inteiros a e b so primos entre si quando
mdc (a, b) = 1. Tambm dizemos que a e b so co-primos.
Pr
e
Ve
rs
(n) ln(n)
= 1.
n
323
. . . , 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, . . .
in
ar
lim
Assim podemos imaginar que cada elemento equivalente a algum nmero inteiro:
. . . , 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, . . .
. . . , 4,
5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4,
5,
0, 1, 2, . . .
Pr
e
(mod 6)
3 4 = 12 0
(mod 6)
3 5 = 2 4
(mod 6)
Ve
rs
43
(mod 6)
(mod 5) = 2
x Z, 2x + 3
(mod 2) = 1.
Exemplo B.11 (Congruncia). Um exemplo importante de situao onde aritmtica modular usada nas operaes em inteiros na CPU de um computador. Suponha que uma CPU trabalhe com palavras de 64 bits, e que estejamos
usando operaes em inteiros sem sinal. Normalmente quando uma operao
resultar em nmero maior que 264 1, o resultado ser o nmero cngruo a este
resultado, mdulo 264 .
324
in
ar
lim
Pr
e
Ve
rs
11
axby
(mod c)
(B.1)
ax by
(mod c).
(B.2)
325
8 6 3
(mod 10).
in
ar
lim
Pr
e
q | a b.
Ve
rs
326
in
ar
ext_mdc(a, b):
se b|a
retorne h0, 1i
senao
q ab
r resto(a, b)
hs, ti ext_mdc(b, r)
retorne ht, s qti
Lema B.19. Sejam a, b inteiros positivos, e sejam x, y os dois valores retornados pelo algoritmo extendido de Euclides. Ento ax + by = d tal que d|a e
d|b.
Pr
e
lim
= bs + (a bq)t
= bs + rt,
Ve
rs
(mod m1 )
a2 x b2
(mod m2 )
,
as x bs
(mod ms )
327
x c1
(mod m1 )
x c2
(mod m2 )
in
ar
Demonstrao. Damos uma demonstrao construtiva na forma de um algoritmo que usa o algoritmo estendido de Euclides.
Primeiro, sabemos que h uma soluo para cada uma das congruncias
individualmente: ai x bi (mod mi ). Calculamos cada um destas solues e as
denotamos ci .
Temos ento um novo sistema:
,
x cs
(mod ms )
ki mi + li Mi = 1
Temos ento
(mod mi ),
Pr
e
li M i 1
li M
mi ,
li M i 1
(mod mi )
li M i 0
(mod mj ) (i 6= j).
A soluo
s
X
X=
porque
lim
Ve
rs
ai X = ai
ci li Mi ,
i=1
s
X
ci li Mi
i=1
s
X
ai ci li Mi
i=1
ai ci li Mi
ai ci
(mod mi )
(mod mi ).
(mod 5),
4x 6
(mod 11),
5x 1
(mod 8).
328
x1
(mod 5)
x7
(mod 11)
x5
(mod 8)
e portanto c1 = 1, c2 = 7, e c3 = 5.
Temos M = 5 11 8 = 440. Os Mi so:
M1 = 440/5 = 88
M2 = 440/11 = 40
lim
M3 = 440/8 = 55.
in
ar
Determinamos que
11 11 + (3) 40 = 1
Pr
e
7 8 + (1) 55 = 1.
(mod 5) = 1
l2 M2 = 8 40
(mod 11) = 1
l3 M3 = 7 55
(mod 8) = 1.
Ve
rs
(mod 440).
E verificamos que
3(381) = 1143 3
(mod 5),
4(381) = 1524 6
(mod 11),
5(381) = 1905 1
(mod 8).
Definio B.23 (Sistema completo de resduos). Um sistema completo de resduos mdulo m um conjunto de inteiros R = {r1 , r2 , , rs } tal que para
i 6= j, ri 6 rj (mod m) e para todo n inteiro, h algum ri tal que n ri
(mod m).
329
00
(mod 4)
51
(mod 4)
10 2
(mod 4)
15 3
(mod 4).
in
ar
lim
Pr
e
Definio B.25 (Sistema reduzido de resduos). Um sistema reduzido de resduos mdulo m um conjunto de inteiros R = {r1 , r2 , , rs } tal que para
i 6= j, ri 6 rj (mod m), todos os ri forem co-primos com m e para todo n
inteiro co-primo com m, h algum ri tal que n ri (mod m).
O sistema de resduos do ltimo exemplo no reduzido, porque mdc (4, 10) =
2.
(mod 4)
33
(mod 4).
Ve
rs
Teorema B.27 (Teorema de Euler). Para todo inteiro positivo m e todo inteiro
a, se a e m so co-primos ento
a(m) 1
(mod m).
Exemplo B.28 (Teorema de Euler). Sejam m = 21 e a = 16. Pelo Teorema de Euler deveramos ter 16(21) 1 (mod 21). Podemos calcular (21), a
quantidade de nmeros menores que 21 e co-primos com 21, que igual2 a 12.
Verificamos ento que realmente,
1612 = 281474976710656 1
2 1,
(mod 21).
330
in
ar
(mod 7)
lim
2 = 128 2
(mod 7)
11 = 19487171 4
(mod 7).
Pr
e
(mod 13)
2 =88
(mod 13)
(mod 13)
(mod 13)
2 =44
Ve
rs
(mod 13)
2 = 16 3
2 = 32 6
6
2 = 64 12
(mod 13)
(mod 13)
2 = 128 11
8
(mod 13)
(mod 13)
2 = 256 9
2 = 512 5
10
= 1024 10
11
= 2048 7
(mod 13)
12
= 4096 1
(mod 13).
2
2
(mod 13)
Ou seja, 2 uma raiz primitiva mdulo 13: Uma vez que 13 primo, (13) = 12
temos 2i com 1 i 12 formando um sistema reduzido de resduos (note que
como 13 primo todo 1 i 12 co-primo com 13).
331
Resduos quadrticos, definidos a seguir, so usados diretamente na construo de algumas ferramentas criptogrficas.
in
ar
lim
Exemplo B.35 (Duas razes quadradas mdulo p). Seja p = 13. Temos que
10 um resduo quadrtico mdulo 13, porque 62 = 36, e 36 (mod 13) = 10.
Ento,
62 = 36 10
2
(mod 13).
Pr
e
7 = 49 10
(mod 13)
Teorema B.36. Seja h o menor inteiro positivo tal que para algum a, ah 1
(mod m). Se ar (mod m), ento h|r.
Ve
rs
Lema B.37. Seja g uma raiz primitiva mdulo p e a co-primo com p. Seja r
tal que g r a (mod p). Ento r par se e somente se a resduo quadrtico
mdulo p.
Demonstrao. Seja g uma raiz primitiva de p. Parapg com expoente par, por
exemplo g 2k , podemos extrair a raiz quadrada de g: g 2k = g k .
No entanto, h (p 1)/2 expoentes pares (ou razes primitivas) mdulo p.
Este tambm o nmero de resduos quadrticos mdulo p (porque p primo e
(p) = p 1), portanto para k mpar, g k no pode ser resduo quadrtico.
Teorema B.38 (Critrio de Euler). Dado um nmero primo p, um nmero
a 6 0 (mod p), se a um resduo quadrtico mdulo p,
a
e em caso contrrio
p1
2
p1
2
1
1
(mod p),
(mod p).
332
e portanto a
p1
2
p1
2
)2 = a(p1) 1
(mod p),
1 (mod p).
in
ar
(a
Seja g uma raiz primitiva mdulo p. Deve haver algum k tal que
a
p1
2
g k(
p1
2 )
(mod p).
p1
lim
Pr
e
(mod 11)
(mod 11).
10/2
= 2 = 32 1
(mod 11)
(mod 11).
Ve
rs
333
12 1
(mod 7)
32 2
(mod 7)
42 2
(mod 7)
12 8
7|7
(mod 7)
(mod 7)
Ve
rs
32 9
lim
Pr
e
7|0
0
=0
7
1
= +1
7
2
= +1
7
3
= 1
7
4
= +1
7
5
= 1
7
6
= 1
7
7
=0
7
8
= +1
7
9
= +1
7
10
= 1
7
in
ar
a
n
=
a
p1
a
p2
a
pn
334
45 3 3 5, ento temos
2
0
0
= 02 0 = 0
3
5
2
13
13
13
=
= +12 1 = 1
45
3
5
2
76
76
76
=
= +12 +1 = +1
45
3
5
2
63
63
63
=
= 02 1 = 0
45
3
5
0
45
lim
in
ar
Pr
e
x(p1)/2
(p1)/2
= g k(p1)
k
= g (p1)
= 1k
(mod p).
Ve
rs
x(p1)/2
Mas
g (p1)/2
(mod p) = g 2k+1
(p1)/2
= g k(p1) g (p1)/2
= g (p1)/2
2
(mod p) = g p1
(mod p).
(mod p) = 1
(mod p),
(mod p).
22 2
(mod 17) = 16 1
(mod 17).
335
Teorema B.46. Se g uma raiz primitiva mdulo n e
(mod n)
in
ar
gr gs
lim
Pr
e
Ve
rs
Exemplo B.50 (Grupo no-numrico). Seja A um conjunto qualquer. O conjunto de todas as funes bijetoras f : A A com a operao de composio
um grupo:
A composio de funes associativa;
A funo identidade funciona como elemento neutro: (f ) = f ;
Como as funes so bijetoras, todas tem inversa:
f f 1 = .
A seguir esto listadas algumas definies relacionadas a grupos. Estas definies so usadas em diversos algoritmos criptogrficos.
Primeiro, um grupo comutativo se sua operao comutativa.
Definio B.51 (Grupo comutataivo). Um grupo (G, ) comutativo ou abeliano se para todos a, b G, ab = ba.
336
in
ar
lim
Pr
e
Ve
rs
Exemplo B.60. Seja A = { [1]8 [3]8 [5]8 [7]8 } o conjunto das classes de equivalncia de 1, 3, 5 e 7 mdulo 8. Ento A, com a operao de multiplicao, um
grupo.
A ordem de [3]8 em A a ordem do subgrupo gerado por 3. Temos
< 3 >= { 31 , 32 , 33 , 34 , . . . }
= { 3, 9, 3, 9, . . . }
= { 3, 9 } ,
337
in
ar
fa (x) = ax
lim
(mod n)
(mod n) = 0
a(x y)
(mod n) = 0
Pr
e
ax ay
n | a(x y).
Zn ,
Ve
rs
Mas n - a, porque a
ento n|(x y), ou seja, x y (mod n) = 0, e x = y.
Provamos ento que fa injetora.
Como o domnio e contradomnio de fa so iguais (e portanto de mesmo
tamanho), se fa injetora deve tambm ser sobrejetora. Desta forma, deve
haver b tal que fa (b) = 1, e ab mod n = 1.
Tal elemento b tambm pertence a Zn , como mostramos por contradio:
Suponha que b
/ Zn . Ento mdc (b, n) 6= 1, e existe p tal que p | n e p | b. Mas
ento p | ab, e ab = 1 (mod n). Como ab = 1 + kn para algum k, temos ao
mesmo tempo que p | n e P | (n + 1) absurdo.
O grupo definido no prximo corolrio chamado de grupo multiplicativo de
inteiros mdulo n.
338
in
ar
lim
Pr
e
Exemplo B.71 (Classe lateral). Considere o grupo aditivo dos inteiros, e seja
H o subgrupo dos inteiros pares. Com g = 1, temos
gH = { 1 4, 1 2, 1 + 0, 1 + 2, 1 + 4, . . . } ,
Ve
rs
Um conceito importante e que surge recorrentemente no estudo das propriedades de construes criptogrficas o de homomorfismo.
Definio B.72 (Homomorfismo em grupos). Sejam (G, ) e (H, ) dois grupos. Uma funo f : G H um homomorfismo se f (x y) = f (x) f (y)
para todos x, y G.
Note que neste contexto denota uma operao arbitrria, e no necessariamente o ou exclusivo.
339
Definio B.74 (Anel). Seja (R, +) um grupo comutativo aditivo e uma
operao associativa em R. Se h distributividade de sobre +, ou seja,
in
ar
a(b + c) = ab + ac
lim
Note que em um anel nem todo elemento tem inverso multiplicativo. Por
exemplo, Z4 (inteiros com as operaes aritmticas mdulo quatro) um anel,
mas 2 no tem inverso no h x Z4 tal que 2x = 1.
Definio B.76 (Unidade). Uma unidade em um anel um elemento que tem
inverso multiplicativo.
Em Z4 as unidades so 1 e 3; j em Z as unidades so apenas 1 e 1.
Pr
e
Ve
rs
A estrutura algbrica que permite realizar naturalmente as operaes aritmticas usuais o corpo, definido a seguir.
Definio B.79 (Corpo). Seja (F, , +) um anel. Se neste anel no h divisores
de zero (ou seja, do elemento neutro para +) e todo elemento diferente de zero
tem inverso multiplicativo, dizemos que F um corpo.
340
in
ar
para k = 0, 1, . . . , n 1.
lim
Pr
e
ei = cos + isen ,
i 31
2
!
i 31
=
2
Ve
rs
e(2i1)/n = e2i/3 =
e(2i2)/n = e4i/3
i 31
(i 3)3 3(i 3)2 + 3i 3 1
=
2
23
2
(i 3) (i 3) 3(i 3)2 + 3i 3 1
=
3
2
3i 3 + 9 + 3i 3 1
=
23
8
= = 1.
8
Teorema B.86. As n razes n-simas da unidade em um corpo formam um
grupo cclico.
341
Demonstrao. Sejam k, k 0 N+ . Ento
0
= e[2i(k+k
= ( n )
k+k
in
ar
= e(2i(k+k ))/n
(mod n))]/n
i
b
3
b
Pr
e
lim
-1
Ve
rs
-i
15
14
Demonstrao. Trivialmente,
lk
lk
ln
= e(2i)/ln
k
= e(2i)/n
= nk .
342
nk
2
= n/2
in
ar
Lema B.90. Seja n = e(2i)/n gerador do grupo das n-simas razes da unidade em C. Seja n N e k Z tais que n > 0 e n 6 |k. Ento
X
nk
j
= 0.
n
X
lim
0jn1
xi =
i=0
Pr
e
temos
xn+1 1
,
x1
nk
j
0jn1
(nk )n 1
nk 1
(nn )k 1
nk 1
1k 1
= k
n 1
= 0.
Ve
rs
343
in
ar
lim
Ve
rs
Pr
e
344
(mod 2) = 0
0+1
1+0
(mod 2) = 1
(mod 2) = 1
1+1
(mod 2) = 0
00
(mod 2) = 0
01
(mod 2) = 0
10
(mod 2) = 0
11
(mod 2) = 1
lim
0+0
in
ar
exclusivo e e lgicos.
Pr
e
Valem os axiomas de corpo: temos fechamento sob as duas operaes; as operaes so associativas e comutativas; zero e um so elementos neutros, um para
cada operao; o elemento 1 tem inverso multiplicativo, tanto 1 como 0 tem
inversos aditivos, e vale distributividade.
O corpo Z5 , com as operaes usuais de soma e multiplicao mdulo 5,
um corpo finito.
1
1
2
3
4
5
2
2
4
0
2
4
3
3
0
3
0
3
4
4
2
0
4
2
5
5
4
3
2
1
Ve
rs
345
Reescrevemos os coeficientes de r mdulo k.
g(x) = x2 + x
h(x) = 2x + 1
Calculamos
g(x)h(x) = (x2 + x)(2x + 1) = 2x3 + 3x2 + x.
in
ar
lim
Pr
e
Ve
rs
346
in
ar
lim
Neste exemplo geramos todos os polinmios de GF (24 ) partindo do polinmio g(x) = x. Polinmios que geram corpos finitos desta forma so chamados
de polinmios primitivos (analogamente a razes primitivas, que geram grupos
multiplicativos).
Pr
e
Nos exemplos a seguir, usamos GF (3m ). Como em F3 h apenas trs elementos, podemos enumer-los como 0, 1, 2 ou 1, 0, 1 (veja que 2 1 (mod 3)).
Ve
rs
k
1
2
3
4
5
6
7
xk
(mod f (x))
x
x2
x+1
x2 + x
x2 + x + 1
x2 x + 1
x2 x + 1
k xk (mod f (x))
8
x2 1
9
x1
10
x2 x
11
x2 + x + 1
12
x2 1
13
1
14
x
Notamos ento que x gera apenas metade de GF (33 ), j que x14 = x. A prxima
347
tabela mostra que x2 + 1 de fato primitivo, gerando GF (33 ).
(x2 + 1)k (mod f (x))
x2 1
x 1
x2 + x + 1
x2 + x 1
x
x + 1
x2 + x
x2 + 1
x2 x + 1
x2
x2 x
x2 x 1
1
in
ar
k
14
15
16
17
18
19
20
21
22
23
24
25
26
lim
Pr
e
Ve
rs
Se os polinmios tem tamanho igual ao da palavra usada pela CPU, esta operao pode ser feita com uma nica instruo de ou exclusivo. Se mltiplo da
palavra da CPU, ainda assim apenas um ou exclusivo por palavra usado.
348
Notas
Pr
e
lim
in
ar
H diversas referncias em Portugus abordando lgebra Abstrata; mencionamos os livros de Hefez [189], Garcia e Lequain [190] e o de Shokranian [191].
Em Ingls h uma plenitude de livros. O de Fraleigh [192] bom para um
primeiro contato; h tambm os de Herstein [193], Gallian [194] e Artin [195].
Os livros de Jacobson [196, 197] so excelentes, redigidos em estilo verbalmente
descritivo; o estilo de Hungerford [198] oposto, compacto e fazendo uso mais
frequente de simbolismo. Uma abordagem diferente para a lgebra, em nvel
avanado, a do livro de Paolo Aluffi [199], que inicia com uma breve introduo
Teoria das Categorias e segue com um curso avanado de lgebra usando
Categorias (pode-se comparar com o livro de Hungerford, onde Categorias
o ltimo Captulo).
O livro de Rudolf Nidl e Harald Niederreiter [19] analisa extensamente corpos finitos e suas aplicaes, inclusive cdigos corretores de erros e gerao
de sequncias pseudoaleatreas. Uma excelente introduo ao mesmo assunto,
curta e acessvel, dada por Gary Mullen e Carl Mummert em seu pequeno
livro [200].
Sobre Teoria dos Nmeros h em Portugus os livros de Plnio Santos [201],
Polcino Millies [202] e Shokranian [114]. Em Ingls, o livro de George Andrews [203] d uma boa introduo, e o de Rosen e Ireland[204] aborda o assunto
em mais profundidade. Outro livro muito conhecido de Teoria dos Nmeros
o de Niven, Zuckerman e Montgomery [205]. A demonstrao do Teorema dos
Nmeros Primos pode ser encontrada na literatura de Teoria Analtica dos Nmeros por exemplo, no livro de Tom Apostol [206].
Os livros de Shoup [14], Stein [207] e de Baldoni, Ciliberto e Cattaneo [108] e
de Hoffstein, Pipher e Silverman [107] so tambm particularmente interessantes
para estudiosos de Criptografia.
Ve
rs
Exerccios
Ex. 168 Dentre todos os mltiplos positivos de 432, n escolhido uniformemente. Qual a probabilidade de n ser divisvel por 648?
Ex. 169 Resolva os sistemas modulares:
3x
a) 2x
4x
4
3
1
(mod 7)
(mod 8)
(mod 3)
2x
4x
b)
8x
16x
3 (mod 17)
6 (mod 5)
7 (mod 6)
1 (mod 11)
Ex. 170 Ao provarmos o Teorema B.21, no provamos que a soluo encontrada nica mdulo M . Faa essa parte da prova.
349
Ex. 172 Quais dos x resduo quadrtico mdulo p? (Use o critrio de
Euler)
a) x = 2, p = 7
in
ar
b) x = 4, p = 7
c) x = 5, p = 11
d) x = 5, p = 13
e) x = 6, p = 13
f) x = 11, p = 17
lim
e) x = 14, n = 15
f) x = 19, n = 30
Pr
e
d) x = 9, n = 12
Ve
rs
350
(f, g) = F (f g).
(J, ) um grupo?
in
ar
lim
Pr
e
Ve
rs
Ex. 191 Mostre que quando p primo, o conjunto dos inteiros mdulo p
com as operaes usuais de soma e multiplicao forma um corpo.
4 Veja
o Apndice D
[a, b] + [c, d] = [a + c, b + d]
[a, b] [c, d] = [min(ac, ad), max(bc, bd)]
351
Este conjunto com tais operaes um corpo?
Ve
rs
Pr
e
lim
in
ar
Ve
rs
Pr
e
lim
in
ar
352
in
ar
Apndice C
lim
Complexidade Computacional
Complexidade de tempo
C.1
Pr
e
Ve
rs
certamente desejvel que possamos comparar os tempos de execuo de diferentes algoritmos. H situaes em que esperamos que o algoritmo seja usado
muitas vezes com entradas muito pequenas por exemplo, algoritmos usados
no ncleo de um sistema operacional. No este o caso de que trataremos.
Estamos interessados no tempo de execuo de algoritmos quando as entradas
so arbitrariamente grandes. O comportamento de algoritmos com entradas
arbitrariamente grandes normalmente chamado de complexidade assinttica
de tempo.
Usamos a quantidade de operaes realizada pelo algoritmo para medir sua
complexidade assinttica (as diferenas entre os tempos de cada operao no
so relevantes), e determinamos uma funo que mapeia o tamanho da entrada
de um algoritmo em quantidade de operaes. Estamos interessados no no
valor dessa funo em algum ponto, mas em quo rpido ela cresce quando
comparada com outras. Para isso determinamos sua ordem de crescimento. Por
exemplo, f (x) = x2 + 100 pode ser menor que g(x) = x3 para alguns valores,
mas a cbica cresce mais rpido que a quadrtica, havendo um x0 a partir
do qual g(x) > f (x), mesmo que f (x) seja multiplicada por uma constante
353
354
in
ar
arbitrariamente grande.
A Figura a seguir mostra duas funes, y = x1.9 (desenhada com linha
contnua) e y = x1.5 + 200 (linha tracejada): na primeira, visualizamos o grfico
de ambas para valores pequenos de x, e na segunda para valores maiores.
104
5
200
4
150
y
3
100
50
6
x
lim
10
50
100
150
x
200
250
300
Pr
e
Ve
rs
Ento existe um termo (uma funo) fk (x) tal que fi (x) O(fk (x)) para todo
1 i n.
355
Por exemplo, seja f (x) = 2x4 + x log(x) + 4x. O termo com maior ordem de
crescimento 2x4 , porque
O(2x4 )
O(2x4 )
in
ar
x log(x)
4x
Alm disso, sempre que uma funo pertence a O(kg(x)), com k constante,
dizemos que pertence a O(g(x)).
Convencionamos usar sempre a funo de descrio mais simples como representante de uma ordem de crescimento (ou seja, apenas o termo dominante,
sem qualquer constante multiplicando-o). Por exemplo,
O(2x )
O(x4 )
x! + 2x
4x log(x) + 2x
lim
2x + 5x5
O(x!)
O(x log(x))
Pr
e
f (n) = (g(n))
Ve
rs
Num abuso de linguagem, muitas vezes dizemos que o algoritmo polinomial, exponencial etc. Algoritmos com complexidade O(n2 ) e O(n3 ) so
usualmente chamados de quadrticos e cbicos.
356
lim
para i de 1 a n1
para j de i+1 a n
se Vi > Vj
troque Vi com Vj
in
ar
C.1.1
Pr
e
Recorrncias
Ve
rs
357
lim
in
ar
Pr
e
merge(V,a,m,b):
W novo vetor
ia
j m+1
k1
enquanto i < m ou j < b:
se Vi < Vj
Wk V i
ii+1
senao
Wk V j
j j+1
k k+1
copie W sobre V
Ve
rs
mergesort(V,a,b):
se a < b:
m b(a + b)/2c
mergesort(V,a,m)
mergesort(V,m+1,b)
merge(V,a,m,b)
O argumento usado na demonstrao da complexidade do mergesort se apoia
na rvore de chamadas recursivas feitas pelo algoritmo. H outras demonstraes possveis.
Teorema C.4. A complexidade de tempo do algoritmo mergesort O(n log(n)).
358
in
ar
lim
n/2
n/2
n/4
Pr
e
n/4
n/8
n/8
Ve
rs
ento
359
iii) Se f (n) = (nlogb (a)+ ), e af (n/b) cf (n) para algum c < 1 e n suficientemente grande, ento
in
ar
T (n) = (f (n)).
Podemos aplicar o Teorema Mestre para resolver a recorrncia da complexidade de tempo do mergesort.
Exemplo C.6 (Uso do Teorema Mestre (recorrncia do mergesort)). A recorrncia tem f = n). Verificamos que
=
(nlog2 (2) )
(n),
lim
f (n)
e portanto podemos usar o caso (ii). A soluo ento T (n) = (nlog2 (2) log n),
ou seja, (n log n).
Pr
e
Ve
rs
Aparentemente, para multiplicar as duas matrizes precisamos realizar oito multiplicaes de matrizes com metade do tamanho das matrizes originais. Nos
interessa mais reduzir a quantidade de multiplicaes do que a quantidade de
somas, porque a multiplicao mais cara. Se implementarmos um algoritmo
recursivo dessa forma, sua complexidade ser dada pela recorrncia
T (n) = 8T (n/2) + (n2 )
= A(F H)
= (A + B)H
= (C + D)E
= D(G E)
X5 = (A + D)(E + H)
X6 = (B D)(G + H)
X7 = (A C)(E + F )
360
e observamos que
AE + BG
AF + BH
P5 + P4 P2 + P6
P1 + P2
P3 + P4
CF + DH
P5 + P1 P3 P7
in
ar
CE + DG =
lim
Usando o Teorema Mestre, conclumos que a complexidade de tempo do algoritmo de Strassen (nlog2 7 ) = (n2.8074 ). O mesmo resultado pode ser obtido
com a anlise da rvore de recorrncia, como fizemos para o mergesort.
Pr
e
C.1.2
Ve
rs
C.2
Grafos
C.2. GRAFOS
361
lim
in
ar
Pr
e
Ve
rs
362
Definio C.14 (Grafo conexo). Um grafo conexo se, para qualquer par de
vrtices (a, b), existe um caminho de a at b.
in
ar
Definio C.15 (Colorao de grafo). Seja G = (V, E) um grafo. Uma kcolorao dos vrtices de um grafo um mapeamento c de um conjunto de cores
C para o conjunto de vrtices V tal que vrtices adjacentes em G no tenham
a mesma cor, ou seja, se (a, b) E ento c(a) 6= c(b).
Quando h uma colorao de um grafo com k cores, dizemos que o grafo
k-colorvel. Quando um grafo 2-colorvel, tambm dizemos que bipartido.
lim
Exemplo C.16 (Colorao de grafo). O grafo dado anteriormente como exemplo admite uma 3-colorao:
d3
e1
Pr
e
a3
b1
c2
Ve
rs
a
c
b
d
g
f
h
363
I
in
ar
bw
dz
C.3
lim
Nossa ateno agora ficar sobre algoritmos para resolver problemas que podem
ser classificados em dois tipos: de deciso e de busca.
Em ambos os casos definiremos que h
Pr
e
Ve
rs
Dado um vetor V de tamanho n, qual o vetor V 0 com os mesmos elementos de V , em ordem crescente?
Dados os custos de deslocamento entre n cidades, qual o caminho que
devo percorr-las, passando somente uma vez em cada uma, gastando o
mnimo possvel de combustvel?
Dado um grafo e um nmero k encontrar um subconjunto de seus vrtices
com tamanho k que formem uma clique;
Dadas m equaes com n variveis, que valores devem ser atribudos s
variveis para satisfazer todas as equaes simultaneamente?
Dado um nmero n, encontrar sua fatorao.
364
in
ar
C.4
lim
Note que um problema de deciso no pode ser mais difcil que um problema
de busca: se pudermos resolver o problema de busca, teremos automaticamente
obtido uma resposta para o problema de deciso.
Por outro lado, se provarmos algo negativo a respeito de um problema de
deciso (por exemplo que insolvel, ou que no h para ele algoritmo eficiente),
certamente isto tambm valer para o problema de busca.
Algoritmos no determinsticos
Pr
e
Definio C.20 (Algoritmo no determinstico). Um algoritmo no determinstico para um problema de deciso aquele que, dados uma instncia de um
problema e uma possvel soluo, apenas verifica se aquela uma soluo vlida
para aquela instncia.
Exemplo C.21. Dado um grafo G = (V, E) e um conjunto de vrtices K V ,
o algoritmo a seguir decide se K uma clique de tamanho no mnimo n. O
seguinte algoritmo verifica se uma soluo uma clique de tamanho k:
Ve
rs
se |K| < n
retorne NAO
para todo u, v K
se (u, v)
/E
retorne NAO
retorne SIM
365
in
ar
escolha naodeterministicamente C V
se C clique (use o algoritmo anterior para verificar)
retorne SIM
senao
retorne NAO
Algoritmos Randomizados
Pr
e
C.5
lim
Ve
rs
repita k vezes
a nmero aleatreo (1, n)
se an1 6 1 (mod n)
retorne COMPOSTO
// com certeza absoluta
retorne PRIMO
// provavelmente
Este algoritmo apresentado aqui por sua simplicidade; h algoritmos melhores para testar primalidade, como por exemplo o de Rabin-Miller.
366
C.6
Classes de Complexidade
in
ar
As classes de complexidade mais conhecidas so definidas em termos de problemas de deciso. Isto porque cada problema de deciso define uma linguagem
formal (consulte livros de linguagens formais e de complexidade computacional
para uma discusso detalhada).
Um problema de deciso no mais difcil que o problema de otimizao correspondente: sabendo resolver o problema de otimizao podemos simplesmente
resolv-lo e, de posse da soluo tima, responder a pergunta do problema de
deciso.
As classes de complexidade com as quais lidaremos so definidas a seguir,
com exemplos.
lim
Definio C.25 (Classe P). Um problema est na classe P quando pode ser
resolvido por um algoritmo determinstico em tempo polinomial.
MDC (achar o mximo divisor comum de dois nmeros), porque o algoritmo de Euclides tem complexidade de tempo polinomial.
Pr
e
Ve
rs
367
in
ar
lim
Pr
e
O 2/3 usado na definio arbitrrio: a classe continua a mesma se o trocarmos por qualquer valor estritamente maior que 1/2.
Evidentemente a classe P est contida em BPP (um algoritmo determinstico como um algoritmo probabilstico que nunca usa o gerador de nmeros
aleatreos).
Outra classe importante a dos problemas que podem ser resolvidos usando
espao polinomial no tamanho da entrada.
Definio C.28 (Classe PSPACE). Um problema est na classe PSPACE se
pode ser resolvido por algum algoritmo usando espao polinomial no tamanho
da entrada.
O Exerccio 226 pede a demonstrao do seguinte Teorema, que afirma que
um problema em N P est tambm em PSPACE.
Ve
rs
3 Lembre-se
f
e
a
d
368
C.7
Redues e completude
in
ar
Redues so fundamentais na construo de diversas ferramentas em Criptografia. Comearemos com dois problemas tradicionais da Teoria da Complexidade
Computacional.
O primeiro problema consiste em encontrar em um grafo no dirigido um
circuito Hamiltoniano.
lim
Pr
e
Problema C.33 (TSP (caixeiro viajante)). Dado um grafo G(V, E) com custos
nas arestas determinados por c : E R e um nmero m, determine se h uma
maneira de percorrer todos os ns do grafo com custo menor ou igual a m.
Ve
rs
sim / no
369
in
ar
lim
Pr
e
Ve
rs
C.7.1
Substituio local: ao provar que B N P-completo usando uma reduo de A, observamos como traduzir, de maneira direta, homognea e em
tempo polinomial, cada instncia de A em uma instncia de B;
4 Definimos redues como algoritmos que transformam uma instncia em outra em tempo
polinomial. Esta noo de reduo chamada de reduo de Cook. H outra, no equivalente, chamada de reduo de Karp, mais aceita entre tericos de Complexidade, mas sua
incluso neste texto o tornaria desnecessariamente mais complexo.
370
in
ar
lim
Pr
e
xX 0
v(x) K.
xX 0
Ve
rs
Em demonstraes pode substituio local transformamos a entrada de um problema N P-completo na entrada do problema que queremos mostrar N P-difcil,
mas a transformao no uma simples substituio.
O prximo exemplo uma reduo do problema COBERTURA-DE-CONJUNTO
a CONJUNTO-DOMINANTE. Definimos ento o problema COBERTURADE-CONJUNTO.
COBERTURA-DE-CONJUNTO: dada uma famlia de conjuntos S1 , S2 , . . . , Sn ,
com U = Si e um inteiro k, existe um conjunto de conjuntos Si , i X com
tamanho mximo k tal que ix Si = U ?
Definimos agora conjunto dominante e o problema do menor conjunto dominante.
Definio C.37 (Conjunto dominante). Um conjunto dominante em um grafo
G = (V, E) um subconjunto V 0 V tal que todo vrtice fora de V 0 est ligado
a algum vrtice de V por uma aresta.
371
in
ar
V = I U.
lim
ligamos entre si com arestas todos os vrtices que representam ndices, e ligamos
cada elemento de U com os ndices dos conjuntos aos quais pertencem.
E = { { i, j } : i, j I } { { i, x } : x Si }
Ve
rs
Pr
e
Seja Y um subconjunto dos ndices (por exemplo, { 2, 3, 4 }, destacado na Figura), e suponha que X = { Si , i Y } soluo para COBERTURA-DECONJUNTO, ento ento X um conjunto dominante no grafo: todos os vrtices de ndice esto conectados entre si, e como este subconjunto est conectado
com todos os vrtices dos elementos dos Si , nenhum vrtice fica descoberto.
Alm disso, |X| = |Y | o tamanho do conjunto dominante igual ao tamanho
da cobertura de conjunto.
Como a transformao da instncia de CONJUNTO-DOMINANTE na instncia de COBERTURA-DE-CONJUNTO pode ser feita em tempo polinomial,
conclumos que CONJUNTO-DOMINANTE N P-difcil.
O Exerccio 217 pede a demonstrao de que CONJUNTO-DOMINANTE
est em N P.
372
Projeto de componentes
in
ar
lim
(a b c) (b d f ) (b e g) (a b f ),
Pr
e
Ve
rs
Este primeiro componente nos garante que T e F tero cores diferentes, e que
h uma terceira cor , diferente das duas anteriores.
O segundo componente uma 3-clique onde os vrtices so x, x e . Quando
construirmos o grafo, o vrtice ser o mesmo que aquele no componente
anterior (e no um vrtice diferente com mesmo nome).
O segundo componente garante que uma varivel e sua negao s podem assumir os valores verdadeiro e falso, e que no podem ter o mesmo valor.
O terceiro componente construdo para cada clusula, e compartilha o
vrtice T com o primeiro componente. No exemplo na prxima figura a clusula
(a b c). Claramente, s pode haver 3-colorao deste componente se pelo
menos um dos ns rotulados esquerta tiver valor (e mesma cor que) T .
373
lim
in
ar
Pr
e
Ve
rs
iv) Para cada clusula na frmula, fazemos a ligao dos vrtices includos no
passo (ii) com o vrtice T includo no passo (i), e fazemos isso usando a
estrutura do terceiro componente.
(a b c) (b c d) (a c d).
374
in
ar
Pr
e
lim
Ve
rs
C.7.2
Padres comuns
comum que problemas sejam facilmente solveis quando solues reais ou racionais so permitidas, e tornem-se N P-completos se exigirmos solues inteiras.
Um exemplo disso o problema EQUACAO-DIOFANTINA-QUADRATICA:
375
in
ar
lim
C.7.3
Pr
e
Embora seja verdade que no sejam algoritmos eficientes para resolver de maneira exata problemas N P-difceis, comum conseguir resolv-los em alguns
casos. As prximas subsees descrevem duas situaes em que problemas N Pdifceis so resolvidos de maneira eficiente (a primeira impe restries adicionais
sobre a entrada, e a segunda abre mo da exigncia de solues exatas na sada).
Tempo pseudo-polinomial
1jn
vj i
Ve
rs
mochila(v, w, C):
m0 0
para i de 1 a n:
x0
para j de 1 a C:
se vj i: // este item cabe
x max(x, mivj )
mi max(mi1 , x)
376
0
0
0
0
0
0
0
2
2
2
2
2
2
2
0
4
4
4
4
4
4
0
0
6
6
6
6
6
0
0
0
9
9
9
9
0
0
0
0
11
11
11
0
0
0
0
0
13
13
0
0
0
0
0
0
15
in
ar
lim
Pr
e
O algoritmo percorre os nmeros de 1 a C, e para cada um deles percorre todos os objetos. O problema da mochila pode ento ser resolvido em
tempo O(nC), onde C a capacidade da mochila e n a quantidade de objetos.
Esta complexidade de tempo, aparentemente polinomial, na verdade exponencia. Isso porque a capacidade C est codificada em binrio, e o espao para
represent-la log C. Se usarmos o tamanho da descrio da entrada como
parmetro, obteremos complexidade O(n2k ), onde k o nmero de bits usado
para representar C. De qualquer forma, se estivermos interessados em instncias
do problema onde C sempre limitado a um nmero relativamente pequeno, o
problema tratvel.
Problemas onde a entrada seja uma quantidade numrica normalmente podem ser resolvidos dessa forma. Dizemos que estes algoritmos executam em
tempo pseudopolinomial.
Algoritmos de aproximao
Ve
rs
377
in
ar
aprox_colore_vertices(G):
se E = :
retorne uma unica cor
se G e bipartido:
retorne uma 2coloracao
senao
retorne uma 6coloracao
lim
Pr
e
Ve
rs
378
lim
in
ar
Pr
e
Ve
rs
cobertura de A.
Quando uma aresta { u, v } includa em C, todas as outras arestas incidentes em u ou v so excludas de A, ento no h arestas adjacentes em C, e
|C| = 2|A|
379
Mas A E, e portanto
|E| OP T (I).
|A|
2OP T (I).
|C| = 2|A|
C.7.4
in
ar
lim
Pr
e
Ve
rs
380
in
ar
lim
GERACAO-DE-PERMUTACAO: dada uma permutao sobre o conjunto de inteiros S = {1, 2, . . . , n} e uma sequncia (S1 , S2 , . . . , Sm ) de
subconjuntos de S, possvel expressar como uma composio =
1 2 m , tal que para cada 1 i m, i uma permutao de S que
muda apenas as posies dos elementos de Si ?
EMPACOTAMENTO-DE-CONJUNTO: Dada uma coleo C de conjuntos e um inteiro positivo k |C|, determinar se C contm pelo menos k
conjuntos mutuamente disjuntos.
SBP: Dada uma base para um reticulado L e uma norma, determinar a
menor base que gera L. O tamanho da base a norma de seu maior vetor.
Pr
e
C.8
Problemas indecidveis
Ve
rs
Note que no dissemos como exatamente A descrito; este problema normalmente formulado usando Mquinas de Turing, descritas na Seo C.9, e a
demonstrao do Teorema da parada (a seguir) envolve um simulador conhecido
como Mquina de Turing Universal.
Teorema C.50. O problema da parada indecidvel.
381
in
ar
lim
diagonal(x):
confunde(x, x)
Podemos executar diagonal(diagonal) ou seja, damos a diagonal uma descrio de seu prprio cdigo. Temos ento que diagonal para se e somente se
diagonal no para. Tendo chegado a este absurdo, refutamos a possibilidade
do procedimento para existir.
Pr
e
F Mquinas de Turing
C.9
Ve
rs
382
in
ar
lim
q3
a b b c a c d a
Pr
e
Uma maneira de representar mquinas de Turing como um grafo. A prxima Figura ilustra uma mquina de Turing com trs estados. Esta mquina
verifica se uma cadeia de zeros e uns termina em zero ou no (se as cadeias representarem nmeros binrios, a mquina estaria identificando nmeros pares).
O estado inicial q0 e o nico estado final q2 .
start
q0
1, 1, .
q1
1, 1, .
Ve
rs
0, 0, .
0, 0, .
1, 1, .
q2
0, 0, .
Este autmato sempre grava o mesmo smbolo que leu, e portanto no muda
a fita5 .
q0 Q o estado inicial;
5 Na
verdade, o leitor familiarizado com Linguagens Formais reconhecer que esta mquina
de Turing simula um autmato finito.
383
in
ar
lim
Pr
e
Dizemos que uma mquina de Turing reconhece uma cadeia se, quando iniciada
com a cadeia gravada na fita, atinge o estado de aceitao. Similarmente, a
mquina de Turing pode rejeitar uma cadeia se chegar ao estado de rejeio.
Note que nada impede que uma mquina de Turing entre em loop, executando
passos sem nunca chegar em q QA ou em q QR ( exatamente o que acontece
com o exemplo anterior).
Definio C.52 (Linguagem Turing-reconhecvel). Uma linguagem Turingreconhecvel se existe alguma mquina de Turing que a reconhece.
Ve
rs
384
Teorema C.56. Uma linguagem L decidvel se tanto L como seu complemento so Turing-reconhecveis.
in
ar
lim
Toda funo que pode ser efetivamente calculada pode ser calculada
por uma mquina de Turing
Pr
e
Ve
rs
Notas
Para uma exposio mais detalhada de tcnicas para anlise de algoritmos veja
os livros de Cormen, Leiserson, Rivest e Stein [208] e de Papadimitriou e Vazirani [125, 126]. O tratamento que damos aqui o mesmo seguido nesses livros,
abordando complexidade computacional diretamente com algoritmos. H tambm o livro de Udi Manber, que constri sistematicamente algoritmos usando
induo [209].
Uma abordagem usando Mquinas de Turing pode ser encontrada nos livros
de Sipser [210] e de Lewis e Papadimitriou [211].
385
in
ar
Ve
rs
Pr
e
lim
386
Pr
e
lim
in
ar
Mquinas de Turing surgem normalmente em diferentes contextos no estudo de computabilidade e modelos de computao, de complexidade computacional e em linguagens formais. A respeito de computabilidade e modelos
de computao interessante esboar minimamente sua histria. Nos anos 20,
David Hilbert props que se buscasse uma formalizao da Matemtica que se
baseasse em um conjunto finito de axiomas e que fosse completo e consistente.
Esta proposta conhecida como o programa de Hilbert, que inclua a decidibilidade da Matemtica: a identificao de procedimentos efetivos para decidir se
proposies a respeito da Matemtica so verdadeiras ou falsas. Em 1931, Kurt
Gdel mostrou que nenhuma teoria que inclua a aritmtica pode provar sua
prpria consistncia. Anos mais tarde surgiu a formalizao da noo de procedimento efetivo. As Mquinas de Turing so a formalizao de Alan Turing
para o conceito de computao, publicada no artigo On Computable Numbers,
with an Application to the Entscheidungsproblem em 1936 [232, 233]. Alonzo
Church props o -Clculo em 1930 [234]; Stephen Kleene desenvolveu a teoria das funes recursivas, comeando em 1936 [235, 236]; h diversos outros
modelos, como o de Emil Post [237]. Os matemticos que propuseram estas
formalizaes mostraram, no entanto, que h questes algumas muito simples que no podem ser respondidas por qualquer algoritmo. Apesar destes
resultados negativos, a formalizao do conceito de algoritmo levou ao desenvolvimento da Teoria da Computao. A tese de Church-Turing foi explicitada,
com este nome, por Stephen Kleene em 1952.
Ve
rs
6 Uppaluri
387
Exerccios
Ex. 197 Prove a Proposio C.2.
in
ar
lim
f) T (n) = T (n/2) + n
g) T (n) = T (n/2) + n
h) T (n) = T ( n) + 1
Pr
e
Ve
rs
ii) O disco que movido de uma haste para outra deve ser o do topo (na
verdade no h como mover os discos abaixo dele).
in
ar
388
lim
f (n)
=0
g(n)
Prove que f (x) o(g(x)) implica que f (x) O(g(x)), mas a recproca no vale.
Pr
e
Ex. 207 Prove que os trs casos do Teorema Mestre para recorrncias so
mutuamente excludentes.
Ex. 208 Prove o Teorema-Mestre para recorrncias.
Ex. 209 Determine a complexidade assinttica para a quantidade de somas
nos trs algoritmos de multiplicao de matrizes discutidos neste Apndice.
Ex. 210 Prove que a soma dos graus de todos os vrtices de um grafo
igual ao dobro do nmero de arestas.
Ve
rs
Ex. 211 Prove que em todo grafo o nmero de vrtices com grau mpar
par.
Ex. 212 Considere uma clique qualquer Kn . So necessrias n cores para
colorir seus vrtices. Quantas arestas precisam ser removidas desta clique para
que seja possvel colori-la com n 1 cores? E para quantidades ainda menores
de cores?
Ex. 213 Tente resolver a instncia do 3SAT dada no Exemplo C.39. Caso
haja uma atribuio de variveis, mostre-a.
Ex. 214 Prove que o seguinte problema N P-completo.
COBERTURA-POR-ARESTAS: dado um grafo G = (V, E) e um inteiro positivo K, determinar se existe E 0 E de tamanho menor ou igual a K tal que
todo vrtice de V pertence a uma aresta em E 0 .
Ex. 215 Apresentamos um algoritmo na Seo C.7.3 para determinar o valor mximo que pode ser posto na mochila, mas no mostramos como identificar
389
os itens a serem includos. Modifique o algoritmo para que ele construa uma
lista de quantidades de itens.
in
ar
Ex. 216 Na pgina 377 dissemos que colorir um grafo bipartido com duas
cores em tempo polinomial simples. Mostre o algoritmo.
lim
Pr
e
Ve
rs
Ex. 225 Porqu, ao definir a classe PSPACE, dissemos que no faz diferena se o problema pode ser resolvido por algoritmo determinstico ou no-
390
determinstico?
Ex. 226 Prove o Teorema C.29.
in
ar
Ve
rs
Pr
e
lim
Ex. 228 Considere uma variante de mquina de Turing onde a fita trocada por duas pilhas (de tamanho ilimitado), P1 e P2 . O alfabeto das pilhas
, e = {}; a funo de transio do autmato : Q 2 Q 2 .
Prove que esta variante equivalente em poder computacional a uma mquina
de Turing comum.
Apndice D
lim
Transformada de Fourier
in
ar
D.1
Pr
e
Transformada de Fourier
Ve
rs
Qualquer funo pode ser expressa como a soma de senoides e cossenoides, com
diferentes frequncias e amplitudes. A transformada de Fourier de uma funo
esta decomposio da funo.
Se f (x) uma funo cujo domnio o tempo, dizemos que a transformada
de Fourier leva f (x) do domnio do tempo para o domnio da frequncia, porque
a transformada de f (x) uma funo F (k) : W C, onde W o conjunto
(infinito) de todas as possveis frequncias.
391
392
1
se |x| < 1/2.
in
ar
Pr
e
lim
s(x) = cos(2x)
Ve
rs
393
in
ar
lim
F (k) =
Pr
e
f (x)e2ikx dx
F (k) =
Ve
rs
H maneiras diferentes de formular a transformada de Fourier, e o leitor encontrar pequenas variaes na literatura.
Uma das situaes em que a transformada de Fourier existe quando f (x)
integrvel em (, +). H outras situaes em que a transformada de
Fourier existe, mas como estamos interessados no caso discreto, no trataremos
delas.
Normalmente os valores dados pela transformada de Fourier F (k) so complexos (porque f (x) multiplicado por isen (2kx)). Isso significa que para
cada frequncia k, F (k) dar um nmero complexo, que pode ser decomposto
em partes real e imaginria:
F (k) = R(k) + iI(k).
394
onde |F (k)| a magnitude e (k) o ngulo de fase para esta frequncia. Tendo
ngulo de fase, frequncia e magnitude, definimos completamente uma senoide
(ou cossenoide). Uma cossenoide, por exemplo, descrita por
in
ar
cos(x )
lim
D.2
Uma funo peridica discreta pode ser decomposta em uma soma finita de
senoides. Se modificarmos a integral da transformada de Fourier para o caso
discreto, obteremos a transformada discreta de Fourier (DFT):
N
1
X
fk e(2ink)/N
Pr
e
Fn =
k=0
A inversa da DFT
fk =
N 1
1 X
Fn e(2ink)/N
N n=0
Ve
rs
N
1
X
nk
fk N
,
(D.1)
k=0
1
F0
1
F1
1
.. =
.
1
FN
1
2
..
.
1
2
4
..
.
N 1
2(N 1)
f0
f1
2(N 1)
..
.
..
.
fN
(N 1)(N 1)
N 1
D.2.1
395
O algoritmo ingnuo para clculo da transformada discreta de Fourier tem complexidade de tempo O(N 2 ):
in
ar
dft(f, N )
e(2i)/N
para n de 0 a N 1:
Fn 0
para k de 0 a N 1:
Fn Fn + fk kn
retorne F
(N/2)1
(N/2)1
Fn =
lim
(2k+1)n
(f2k+1 )N
k=0
Pr
e
k=0
kn
2kn
= N/2
, reescrevemos
Como N
(N/2)1
Fn
(N/2)1
k=0
(N/2)1
nk
(f2k )N/2
+
(N/2)1
(2kn)
(f2k+1 )N
(N/2)1
kn
n
(f2k )N/2
+ (N
)
k=0
Ve
rs
n
N
k=0
k=0
(2kn+n)
(f2k+1 )N
k=0
(N/2)1
nk
(f2k )N/2
+
kn
(f2k+1 )N/2
.
k=0
Conseguimos agora reescrever Fn como a soma de duas transformadas de Fourier, ambas em vetores de tamanho N/2 (os dois termos entre colchetes). O
algoritmo para a FFT calcula estas duas transformadas separadamente. O vetor de entrada dividido em dois outros: f 0 com os elementos de ndice par e
f 1 com os elementos de ndice mpar:
f 0 (f0 , f2 , . . .)
f 1 (f1 , f3 , . . .).
fft(f, ):
N tamanho(f )
396
in
ar
se N = 1
retorne f
1
N e(2i)/N
f 0 (f0 , f2 , . . .)
f 1 (f1 , f3 , . . .)
F 0 fft(f 0 , 2 )
F 1 fft(f 1 , 2 )
para i de 0 a n/2 1:
Fi Fi0 + i Fi1
Fi+n/2 Fi0 i Fi1
retorne F
80
Pr
e
81
82
83
80
81
82
83
lim
i i
i
i
i i.
=
=
=
Ve
rs
i i
b
i
b
i i
Este algoritmo da maneira como foi apresentado s pode ser usado quando o
tamanho do vetor uma potncia de dois. possvel adaptar o algoritmo para
que funcione tambm com vetores de tamanho arbitrrio.
397
T (n) = 2T (n/2) + n.
in
ar
Esta equao tem soluo T (n) = kn/2 + n log(n) = O(n log(n)), conforme a
demonstrao de Teorema C.4 na Seo C.1.1.
D.3
lim
Transformada do Cosseno
Pr
e
Z
Z
=
f (x) cos(2kx) dx
f (x)isen (2kx) dx
Z
=
f (x) cos(2kx) dx.
Ve
rs
398
in
ar
fk =
Para aplicar a DCT em imagens, ser interessante defini-la para duas dimenses.
Neste caso, aplicamos a DCT em linhas e colunas individualmente a transformada
N
1 N
1
X
X
(2y + 1)v
(2x + 1)u
Fu,v = C(u)C(v)
cos
fx,y cos
2N
2N
x=0 y=0
onde
2N
D.3.1
se k = 0
lim
q
1
N
c(k) = q
1
se k > 0
Notas
Pr
e
Ve
rs
399
Z
T f (x) =
in
ar
O estudo do uso de funes trigonomtricas para representar funes contnuas o objeto da Anlise de Fourier. Uma excelente introduo dada por
Stein e Shakarchi [255].
Uma transformada integral uma transformada T da forma
lim
que transforma a funo f (u) em outra funo T f (u). K o kernel da transformada. A transformada de Fourier uma transformada integral com K =
(e2ixt ), a = e b = +. O livro de Davies [256] uma introduo muito
bem redigida s transformadas integrais. Uma descrio mais densa dada por
Brychkov e Prudnikov [257].
A transformada discreta do cosseno foi descrita pela primeira vez em 1974
por Ahmed, Natarajan e Rao [258]. O livro de Shih [259] e o handbook organizado por Rao e Yip [260] trazem descries detalhadas da DCT com aplicaes
em compresso e processamento de imagens.
Exerccios
a) f (x) = sen (x)ex
b) f (x) = x3 x2
Pr
e
b) H(f ) =
cos(2(1f )
2f
a) H(f ) =
Ve
rs
Ve
rs
Pr
e
lim
in
ar
400
Apndice E
lim
Descrio Detalhada de
Construes
in
ar
DES
E.1
Pr
e
Ve
rs
O DES uma cifra obsoleta e no deve mais ser usado na prtica. No entanto,
esta Seo descreve os detalhes de sua especificao por completude (afinal,
o descrevemos no Captulo sobre cifras de bloco) e porque pode ser til ao
leitor interessado em Criptanlise: quebrar verses simplificadas do DES um
excelente exerccio.
E.1.1
Descrio geral
Pr
e
lim
in
ar
402
Ve
rs
E.1. DES
50
52
54
56
49
51
53
55
42
44
46
48
41
43
45
47
34
36
38
40
33
35
37
39
26
28
30
32
25
27
29
31
18
20
22
24
17
19
21
23
8
7
6
5
4
3
2
1
48
47
46
45
44
43
42
41
Ve
rs
40
39
38
37
36
35
34
33
E.1.3
2
4
5
7
Pr
e
A inversa de P I :
10
12
14
16
9
11
13
15
lim
58
60
62
64
57
59
61
63
in
ar
E.1.2
403
16
15
14
13
12
11
10
9
56
55
54
53
52
51
50
49
24
23
22
21
20
19
18
17
64
63
62
61
60
59
58
57
32
31
30
29
28
27
26
25
Funo interna F
Pr
e
lim
in
ar
404
Ve
rs
Expanso de bits
32
4
12
16
20
24
28
1
5
9
13
17
21
25
29
2
6
10
14
18
22
26
30
3
7
11
15
19
23
27
31
4
8
12
16
20
24
28
32
5
9
13
17
21
25
29
1
E.1. DES
405
Permutao interna
aplicao das S-boxes dada pela prxima
7 20 21
12 28 17
15 23 26
18 31 10
8 24 14
27 3 9
13 30 6
11 4 25
in
ar
16
29
32
19
22
lim
S-boxes
1
8 14
13 4
7
14 7 11
8 10 1
S3:
10
13
13
1
0
7
6
10
6 11
15 2
10 4
3 15
9 14
0
9
4
9
13 0
6 3 15
3 4
6
8 15 3
6 9
8
Ve
rs
S4:
7 13
13 8
10 6
3 15
S5:
2
14
4
11
3
8
13
4
S2:
15
3
0
13
Pr
e
14 4 13 1 2 15 11 8 3 10 6 12 5
0 15 7 4 14 2 13 1 10 6 12 11 9
4
1 14 8 13 6
2 11 15 12 9 7 3
15 12 8 2 4
9
1 7 5 11 3 14 10
14 3 0
6
9
11 5 6 15 0
9 0 12 11 7
0 6 10 1 13
12 4
11 2
2
1
8 12
1
12
11
7
4 9 7
14 12 0
1 5 8
2 11 6
5
10
0
7
10
3
13
8
7 10 11 6
4
7 13 1
10 13 7
8
1 14 2 13
1
2
11
4
2 13 12
1 10 6
12 6 9
7 12 0
13 12 7
8 5 14
1 2 12
15 14 3
0 5 10
9 11 5
3 2 15
5 14 9
11 4 2
12 11 15
5 10 14
11 5 2
1 2 8 5 11
4 7 2 12 1
15 1 3 14 5
9 4 5 11 12
8 5
5 0
15 9
6 15
9 0 7
5 3 8
10 5 0
0 6 13
12
10
2
7
8
1
7
12
4 15
14 9
8 4
2 14
3 15 13 0 14
15 10 3 9 8
12 5 6 3 0
0 9 10 4 5
9
6
14
3
406
2 6
12 9
8 12
5 15
8
5
3
10
0
6
7
11
13
1
0
14
3 4
13 14
4 10
1 7
S7:
4
13
1
6
11 2 14 15 0
0 11 7
4 9
4 11 13 12 3
11 13 8 1 4
8 13 3
1 10 14
7 14 10
10 7 9
8 4 6
13 8 10
4 1 9
14 7 4
5 10 6
2 15 8
0 5 9
14 2 3
15 11 1 10 9 3
3 7 4 12 5 6
12 14 2 0 6 10
10 8 13 15 12 9
14 5
11 0
13 15
0 3
0
14
3
5
1
6
2
12
12 7
9 2
5 8
6 11
13 2
1 15
7 11
2
1
Pr
e
S8:
12 9 7
3 5 12
15 6 8
5 0 15
lim
14 7 5 11
0 11 3 8
1 13 11 6
6 0 8 13
in
ar
12 1 10 15 9
10 15 4
2 7
9 14 15 5 2
4
3
2 12 9
Escalonamento de chaves
Ve
rs
E.1.4
57 49 41
1 58 50
10 2 59
19 11 3
63 55 47
7 62 54
14 6 61
21 13 5
33
42
51
60
39
46
53
28
25
34
43
52
31
38
45
20
17 9
26 18
35 27
44 36
23 15
30 22
37 29
12 4
E.1. DES
407
lim
deslocamentos esq
1
1
2
2
2
2
2
2
1
2
2
2
2
2
2
1
Pr
e
iterao
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
in
ar
Ve
rs
14 17
3 28
23 19
16 7
41 52
30 40
44 49
46 42
11
15
12
27
31
51
39
50
24
6
4
20
37
45
56
36
1
21
26
13
47
33
34
29
5
10
55
48
53
32
Pr
e
lim
in
ar
408
AES
E.2
Quantidade de rodadas
Ve
rs
E.2.1
Nk
4
5
6
7
8
4
10
11
12
13
14
5
11
11
12
13
14
Nb
6
12
12
12
13
14
7
13
13
13
13
14
8
14
14
14
14
14
409
E.2.2
Escalonamento de chaves
E.2.3
Encriptao
in
ar
E.2. AES
1
2
7c 77
82 c9
f d 93
c7 23
83 2c
d1 00
ef aa
a3 40
0c 13
81 4f
32 3a
c8 37
78 25
3e b5
f 8 98
a1 89
3
7b
7d
26
c3
1a
ed
fb
8f
ec
dc
0a
6d
2e
66
11
0d
4
f2
fa
36
18
1b
20
43
92
5f
22
49
8d
1c
48
69
bf
5
6b
59
3f
96
6e
fc
4d
9d
97
2a
06
d5
a6
03
d9
e6
6
6f
47
f7
05
5a
b1
33
38
44
90
24
4e
b4
f6
8e
42
8
9
30 01
ad d4
34 a5
07 12
52 3b
6a cb
45 f 9
bc b6
c4 a7
46 ee
c2 d3
6c 56
e8 dd
61 35
9b 1e
41 99
Pr
e
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
0
63
ca
b7
04
09
53
d0
51
cd
60
e0
e7
ba
70
e1
8c
a
67
a2
e5
80
d6
be
02
da
7e
b8
ac
f4
74
57
87
2d
b
2b
af
f1
e2
b3
39
7f
21
3d
14
62
ea
1f
b9
e9
0f
c
d
f e d7
9c a4
71 d8
eb 27
29 e3
4a 4c
50 3c
10 f f
64 5d
de 5e
91 95
65 7a
4b bd
86 c1
ce 55
b0 54
e
ab
72
31
b2
2f
58
9f
f3
19
0b
e4
ae
8b
1d
28
bb
Ve
rs
y
7
c5
f0
cc
9a
a0
5b
85
f5
17
88
5c
a9
c6
0e
94
68
lim
Nb
4
5
6
7
8
C0
0
0
0
0
0
C1
1
1
1
1
1
C2
2
2
2
2
3
C3
3
3
3
4
4
f
76
c0
15
75
84
cf
a8
d2
73
db
79
08
8a
9e
df
16
410
E.2.4
Decriptao
1
09
e3
7b
2e
f8
70
d8
2c
91
ac
f1
56
dd
51
e0
2b
InvMixColumns
2
6a
39
94
a1
f6
48
ab
1e
11
74
1a
3e
a8
7f
3b
04
3
d5
82
32
66
64
50
00
8f
41
22
71
4b
33
a9
4d
7e
4
5
30 36
9b 2f
a6 c2
28 d9
86 68
f d ed
8c bc
ca 3f
4f 67
e7 ad
1d 29
c6 d2
88 07
19 b5
ae 2a
ba 77
6
a5
ff
23
24
98
b9
d3
0f
dc
35
c5
79
c7
4a
f5
d6
9
40
8e
4c
5b
a4
15
e4
af
f2
f9
b7
db
12
e5
eb
69
a
a3
43
95
a2
5c
46
58
bd
cf
37
62
c0
10
7a
bb
14
lim
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
0
52
7c
54
08
72
6c
90
d0
3a
96
47
fc
1f
60
a0
17
Pr
e
y
7
8
38 bf
87 34
3d ee
b2 76
16 d4
da 5e
0a f 7
02 c1
ea 97
85 e2
89 6f
20 9a
31 b1
0d 2d
b0 c8
26 e1
in
ar
InvSubBytes
0E
09
0D
0B
0B
0E
09
0D
0D
0B
0E
09
b
9e
44
0b
49
cc
57
05
03
ce
e8
0e
fe
59
9f
3c
63
c
81
c4
42
6d
5d
a7
b8
01
f0
1c
aa
78
27
93
83
55
d
e
f
f 3 d7 f b
de e9 cb
f a c3 4e
8b d1 25
65 b6 92
8d 9d 84
b3 45 06
13 8a 6b
b4 e6 73
75 df 6e
18 be 1b
cd 5a f 4
80 ec 5f
c9 9c ef
53 99 61
21 0c 7d
09
0D
0B
0E
Exerccios
Ve
rs
in
ar
Apndice F
lim
Respostas e Dicas
Este Apndice traz respostas e dicas para alguns dos exerccios propostos no
texto.
Pr
e
Ve
rs
Quando houver a troca da ltima carta, a nova carta ser escolhida dentre as 47
cartas que sobraram, e destas, oito so do naipe correto. Assim, a probabilidade
de sucesso de A no caso (i)
4 13
8
5
52 47 .
5
412
in
ar
Pr[POKER_FLUSH(A) = 1] 0.009.
Resp. (Ex. 10) Uma funof (x) desprezvel se e somente se para toda
1
funo polinomial g(x), f (x) o g(x)
. Isto segue diretamente das definies
de o (Exerccio 206, na pgina 388) e de funo desprezvel (pgina 27).
lim
Resp. (Ex. 13) Note que a definio no muda s mudamos sua redao.
Uma maneira de faz-lo definir o experimento AchaPreImagem, que recebe
como parmetros f , A e n.
x R {0, 1}n
Envie 1n e f (x) ao adversrio
O adversrio retorna x0
Se f (x) = f (x0 ) o resultado 1, seno 0.
Pr
e
Depois basta descrever funes de mo nica como fceis de computar e difceis de inverter, onde difcil de inverter significa que para todo adversrio
polinomial A e todo n suficientemente grande,
Pr[AchaPreImagem(f, A, 1n ) = 1] negl(n).
Ve
rs
Resp. (Ex. 24) (i) Porque os zeros do estado inicial sero combinados
usando , que resultar em zero e o estado inicial no ser alterado. (ii)
Sim: basta que o estado inicial seja uma sequncia de uns, e que a quantidade
de coeficientes um do polinmio de conexo seja mpar (o ou exclusivo de uma
quantidade mpar de uns um, e o estado inicial ser mantido).
(n1)
)/nn .
Resp. (Ex. 27) Observe que n < 2k < 2n. A cada lao do programa, o
algoritmo para com probabilidade n/(2k ) que o caso em que x < n. Calcule
o tempo esperado de execuo.
Resp. (Ex. 32) H muitas maneiras de faz-lo. (i) Tente observar a sada
do gerador aos pares, (x0 , x1 ), (x1 , x2 ), (x2 , x3 ), . . . e verifique como eles se distribuem no plano. (ii) Use testes estatsticos.
413
in
ar
Resp. (Ex. 37) A cifra deixa de ser segura, porque a diferena entre as
partes esquerda e direita da entrada ser igual a diferena entre as partes esquerda e direita da sada (Li Ri = Li+1 Ri+1 ), e portanto a sada ser
facilmente distinguvel de uma sequncia aleatrea. Se o adversrio conhece os
possveis textos claros, poder identificar a mensagem.
Resp. (Ex. 45) A permutao (a||b) = b||a b. Temos (note que para
a operao em cadeias binrias, a = a, porque a a = 0):
(a||b) = (a||b) (a||b)
= (b||a b) (a||b)
lim
= (b||a b) (a||b)
= (b a)||a b b)
= (a b)||a,
que permutao, cuja inversa
Pr
e
Resp. (Ex. 52) Seja k a chave procurada. Suponha que temos dois textos
encriptados, um de m e um do complemento de m: c1 = Enck (m), c2 = Enck (m).
Fazemos uma busca exaustiva pela chave, mas a cada chave testada, calculamos
Enck0 (m) e decidimos:
(
Enck0 (m) = c1 k = k 0
Enck0 (m) = c2 k = k 0 .
Ve
rs
Desta forma, ao testar k 0 testamos tambm seu complemento (note que apenas
uma operao de encriptao permite verificar duas chaves, k 0 e seu complemento).
Resp. (Ex. 67) Quando alimentar a funo de hashing com bits aleatreos,
lembre-se de que necessrio que o conjunto de entradas diferentes seja maior
que o de possveis sadas da funo de hashing, de outra forma haver mais
colises do que o esperado (se a funo de hashing tem sada de 512 bits mas
a alimentamos com um nico byte aleatreo, s poderemos produzir 28 = 256
diferentes sadas uma para cada byte).
414
in
ar
f (x) + f (y), basta que um adversrio calcule os trs valores e verifique se vale
o homomorfismo. Se valer, ele diz que a funo no aleatrea. O adversrio
teria probabilidade no desprezvel de sucesso.
Resp. (Ex. 74) (Esboo) Suponha que o adversrio possa adivinhar o tamanho k do bloco de H. Ele escolhe uma quantidade polinomial de pares de
mensagens ai , bi do tamanho do bloco e verifica se H(ai ||bi ) = H(H(ai )||bi ).
Para adivinhar o tamanho do bloco, basta repetir a verificao para k = 1, 2, . . .
lim
Resp. (Ex. 89) (b) Depende do ponto de vista; usando o modelo do Orculo Aleatreo (veja a Seo 7.6 no Captulo7), pode-se provar que o esquema
seguro. Sem us-lo, tudo depender da verificao emprica da segurana da
construo.
Pr
e
Resp. (Ex. 91) H muitos argumentos e contraexemplos: (i) No criptossistema de Rabin no h sequer a garantia de que uma mensagem m seja resduo
quadrtico mdulo N . A assinatura pode no existir! necessrio formatar
a mensagem de forma a garantir que seja resduo quadrtico. (ii) No Elgamal,
o algoritmo Dec requer dois valores, e somente temos uma mensagem o esquema deve ser modificado para que possamos us-lo. (iii) O RSA, usado de tal
maneira, inseguro.
Ve
rs
Resp. (Ex. 102) Ser provavelmente difcil explicar o polinmio interpolador de Lagrange, mas no impossvel. No se deve esquecer de explicar porque
tudo feito com aritmtica modular (computadores no podem representar nmeros reais) embora este assunto tambm possa ser uma fonte de dificuldade
ao redigir para tal audincia.
Resp. (Ex. 103) Tente mostrar que com os dados obtidos de Share para
dois segredos, g s1 e g s2 , os participantes podem usar partilhas Yi1 Yi2 que permitiro revelar g s1 +s2 .
S(N, v):
b0 R { 0, 1 } // tenta adivinhar a escolha de V 0
r R {1, . . . , N 1}
x r2 (mod N )
b R { 0, 1 } // escolha de V 0
se b 6= b0 reinicie
415
escreva (x, b, r)
in
ar
lim
Pr
e
Resp. (Ex. 140) Lembre-se de que no basta usar preto e branco. Voc
precisa usar tons de cinza e somar as intensidades de cada partilha.
Ve
rs
Resp. (Ex. 143) Observe que fizemos um ou exclusivo dos bits das linhas,
portanto erros se cancelam dois a dois. Calcule a probabilidade do nmero de
erros ser mpar.
Resp. (Ex. 146) O one-time pad, por exemplo, suportaria encriptao negvel. Este pode ser um ponto de partida.
416
= x.
Oh! maravilha!
Que adorveis criaturas temos aqui!
Como bela a espcie humana!
OH ADMIRVEL MUNDO NOVO
que possui gente assim!
in
ar
lim
Finda a tempestade
O sol nascera
Finda esta saudade
Hei de ter outro alguem para amar
A chave trecho de outra msica tambm do Cartola: Ai corra e
olhe o ceu
Pr
e
Ve
rs
Resp. (Ex. 168) mdc (432, 648) = 216. Temos ento que 432 = 2 216
e 648 = 3 216. Ento (lembrando que k escolhido dentre todos os inteiros
positivos) temos o seguinte (nas linhas a seguir usamos | para divide e no
para probabilidade condicional):
Pr[648|k 432] = Pr[3 216 | k 2 216]
= Pr [m : 3(216)m = 2(216)k]
= Pr [m : 3m = 2k]
1
= Pr[3 | 2k] = .
3
Resp. (Ex. 170) Suponha que no, presuma que h outra soluo x0 6= x.
Comece sua argumentao observando que ai x0 bi , mas bi ai x (mod mi ).
417
Resp. (Ex. 175) 1/2k .
in
ar
lim
Resp. (Ex. 178) No: nem todo polinmio tem como inversa outro polinmio.
Pr
e
Resp. (Ex. 185) Comece da seguinte maneira: se G tem ordem 2n, ento
para algum n, G isomorfo a Z2n . Em Z2n buscamos ento elementos de ordem
dois. Estes so aqueles k tais que 2k 0 (mod 2n), ou ainda, tais que k 0
(mod n). A concluso imediata.
Ve
rs
Resp. (Ex. 199) De maneira geral, O(n2 ), onde n o maior grau dos dois
polinmios. Uma estimativa mais justa O(om), onde o e m so a quantidade
de termos diferentes de zero em cada polinmio.
Resp. (Ex. 200) O(n!), onde n o nmero de linhas da matriz
Resp. (Ex. 206) Para provar que a recproca no vale, escolha f (x) =
cg(x), com alguma constante c.
418
Resp. (Ex. 208) Use rvores, como a mostrada no texto, em sua demonstrao.
in
ar
Resp. (Ex. 209) Tome cuidado para diferenciar soma de elementos de soma
de matrizes.
Resp. (Ex. 213) Sim, a = b = d = g = V .
lim
Pr
e
Resp. (Ex. 216) Comece de um vrtice e siga pintando seus vizinhos, depois os vizinhos dos vizinhos etc, usando cores alternadas. Quando no houver
mais vizinhos, procure outro componente conexo. Quando no houver componentes conexos, pare.
Resp. (Ex. 217) Basta observar que possvel, em tempo polinomial, percorrer os vrtices da soluo e marcar todos os seus vizinhos. Se algum vrtice
do grafo no foi marcado, a soluo no est correta; se o nmero de vrtices
na soluo maior que k, a soluo tambm no est correta.
Ve
rs
vu1
vu2
vu3
vu4
vu5
vu6
Note que um circuito hamiltoniano s poderia passar por este grafo de trs
maneiras diferentes. Associe cada uma destas maneiras com u ou v estarem ou
no na cobertura.
Resp. (Ex. 221) Seja X o conjunto de n objetos com valores v1 , . . . , vn e
419
tamanhos s1 , . . . , sn . Se pudermos resolver o problema de maneira absoluta com
erro mximo k, podemos resolver de maneira exata o problema de mochila em
tempo polinomial:
in
ar
lim
Resp. (Ex. 224) (b) Codifique os estados usando ordem lexicogrfica. (d)
Use um mapeamento de fita finita esquerta para fita infinita dos dos lados da
mesma forma que faria de N para Z.
Pr
e
Ve
rs
Resp. (Ex. 228) (Rascunho) A mquina descrita pode usar as duas pilhas
como se fossem uma fita: para mover-se direita na fita basta desempilhar um
smbolo de P2 e empilh-lo em P3 ; para gravar um smbolo basta desempilhar
de P1 e empilhar o novo smbolo; para avanar alm do fim da palavra na fita
o autmato pode andar at o fim dela (desempilhando de P2 e empilhando em
P1 ), e empilhar mais um smbolo em P2 .
Resp. (Ex. 231) (46.5, 50 4.5i, 53.5, 50 + 4.5i).
Ve
rs
Pr
e
lim
in
ar
420
Referncias Bibliogrficas
in
ar
lim
[1] KATZ, J.; LINDELL, Y. Introduction to Modern Cryptography. [S.l.]: Chapmen & Hall/CRC, 2008. ISBN 978-1-58488-551-1. 29, 123, 135
[2] GOLDREICH, O. Foundations of Cryptography, volume II: basic applications. [S.l.]: Cambrige University Press, 2004. 29, 208, 214
[3] SHANNON, C. A mathematical theory of communication. Bell System Technical Journal, v. 27, p. 379423; 623656, 1948. 29
Pr
e
[7] MAURER, U. Information-theoretic cryptography. In: Advances in Cryptology - CRYPTO 99. [S.l.]: Springer-Verlag, 1999. p. 4764. 29
Ve
rs
[8] VERNAM, G. S. Cipher printing telegraph systems for secret wire and radio
telegraphic communications. Journal of the American Institute for Electrical
Engineers, v. 55, p. 109115, 1926. 29
[9] GOLDWASSER, S.; MICALI, S. Probabilistic encryption and how to play
mental poker keeping secret all partial information. In: Proceedings of the
14th Symposium on Theory of Computing. [S.l.: s.n.], 1982. 29, 153
[10] GOLDREICH, O. Foundations of Cryptography, volume I: basic tools. [S.l.]:
Cambrige University Press, 2001. 37, 56, 205
[12] LUBY, M. Pseudorandomness and Cryptographic Applications. [S.l.]: Princeton University Press, 1996. ISBN 9780691025469. 56
421
422
REFERNCIAS BIBLIOGRFICAS
in
ar
[15] DELFS, H.; KNEBL, H. Introducton to Cryptography: principles and applications. 2. ed. [S.l.]: Springer, 2007. ISBN 978-3-540-49243-6. 56, 307, 309
[16] CUSICK, T. W.; DING, C.; RENVALL, A. Stream Ciphers and Number
Theory. [S.l.]: Elsevier, 2003. 56
lim
[17] GOLOMB, S. W. Shift Register Sequences. [S.l.]: Aegean Park Press, 1982.
56
[18] NEUENSCHWANDER, D. Probabilistic and Statistical Methods in Cryptography: an introdution by selected topics. [S.l.]: Springer, 2004. ISBN 3-54022001-1. 56
Pr
e
Ve
rs
REFERNCIAS BIBLIOGRFICAS
423
in
ar
[31] BURWICK, C. et al. MARS - a candidate cipher for AES. 1999. Disponibilizado pela IBM Corporation. 82
[32] MATSUI, M. Linear cryptanalysis method for DES cipher. In: EUROCRYPT93. [S.l.]: Springer-Verlag, 1993. 107
[33] BIHAM, E.; SHAMIR, A. Differential cryptanalysis of des-like cryptosystems. Journal of Cryptology, v. 4, n. 1, p. 372, 1991. 107
lim
[35] HEYS, H. A Tutorial on Linear and Differential Cryptanalysis. 2001. Technical Report CORR 2001-17, Centre for Applied Cryptographic Research,
Department of Combinatorics and Optimization, University of Waterloo. Also
appears in Cryptologia, vol. XXVI, no. 3, pp. 189-221, 2002. 107
Pr
e
[36] COOPERSMITH, D. The data encryption standard (des) and its strength
against attacks. IBM Journal of Research and Development, v. 38, n. 3, p.
243250, 1994. 107
[37] BIHAM, E.; SHAMIR, A. Differential Cryptanalysis of the Data Encryption Standard. [S.l.]: Springer-Verlag, 1993. ISBN 3540979301. 108
[38] BARD, G. V. Algebraic Cryptanalysis. [S.l.]:
0387887563. 108
[39] KNUDSEN, L. R. Truncated and higher-order differentials. In: Fast Software Encryption. [S.l.]: Springer-Verlag, 1995. 108
Ve
rs
[40] HELLMAN, M.; LANGFORD, S. Differential-linear cryptanalysis. In: Advances in Cryptology - CRYPTO 94. [S.l.]: Springer-Verlag, 1994. 108
[41] CLARK, J. A. Metaheuristic Search as a Cryptological Tool. Tese (Doutorado) University of York, 2001. 108
424
REFERNCIAS BIBLIOGRFICAS
[46] ANDERSON, R.; BIHAM, E. Two practical and provably secure block cipers: BEAR and LION. In: Proceedings of the Third International Workshop
on Fast Software Encryption. [S.l.: s.n.], 1996. p. 113120. 123
in
ar
[47] MORIN, P. Provably secure and efficient block ciphers. In: Proceedings of
the Third Annual Workshop on Selected Areas in Cryptography (SAC 96).
[S.l.: s.n.], 1996. p. 3037. 123
[48] FIAT, A.; SHAMIR, A. How to prove yourself: practical solutions to iden [S.l.: s.n.],
tification and signature problems. In: Proceedings of CRYPTO86.
1987. 123
lim
Pr
e
Ve
rs
[55] SINGH, S. The Science of Secrecy. [S.l.]: Fourth Estate Limited, 2000. 152
[56] YAN, S. Y. Cryptanalytic Attacks on RSA. [S.l.]: Springer, 2007. ISBN
0387487417. 152
[58] SHOUP, V. OAEP Reconsidered. 2001. IBM Zurich Research Lab, Saumerstr. 4, 8803 Ruschlikon, Switzerland. 152
[59] FUJISAKI, E. et al. Rsa oaep is secure under the rsa assumption. In:
Advances in Cryptology CRYPTO 2001. [S.l.: s.n.], 2001. 153
[60] KATZ, J. Digital Signatures. [S.l.]: Springer, 2010. ISBN 978-0-387-277110. 165
REFERNCIAS BIBLIOGRFICAS
425
in
ar
[62] WANG, X.; YIN, Y. L.; YU, H. Finding collisions in the full sha-1. In:
Crypto 2005. [S.l.: s.n.], 2005. 165
[63] MANUEL, S. Classification and generation of disturbances vectors for collision attacks against sha-1. In: Proceedings of Workshop on Coding and Cryptography. [S.l.: s.n.], 2009. 165
lim
Pr
e
Ve
rs
[70] CHOR, B. et al. Verifiable secret sharing and achieving simultaneity in the
presence of faults. In: Proceedings of FOCS85. [S.l.: s.n.], 1985. p. 383395.
195
[71] BEN-OR and M. verifiable secret sharing and multiparty protocols with honest majority. In: Proceedings of the Twenty-First Annual ACM Symposium
on theory of Computing. Seattle, Washington, United States: [s.n.], 1989. 195
[72] PEDERSEN, T. P. Non-interactive and information-theoretic secure verifiable secret sharing. In: Advances in Cryptology - EUROCRYPT 91. [S.l.:
s.n.], 1992. 195
[73] STADLER, M. Publicly verifiable secret sharing. In: Advances in Cryptology - EUROCRYPT 96. [S.l.: s.n.], 1996. p. 190199. 195
[74] FUJISAKI, E.; OKAMOTO, T. A practical and provably secure scheme
for publicly verifiable secret sharing and its applications. In: Advances in
Cryptology - EUROCRYPT 98. [S.l.: s.n.], 1998. p. 3246. 195
426
REFERNCIAS BIBLIOGRFICAS
in
ar
lim
[79] GOLDWASSER, S.; MICALI, S.; RACKOFF, C. The knowledge complexity of interactive proof-systems. SIAM Journal on Computing, v. 18, n. 1,
1989. 205
[80] CATALANO, D. et al. Contemporary Cryptology. [S.l.]: Birkhuser Basel,
2005. ISBN 978-3764372941. 205, 214
Pr
e
[84] KALAI, Y. T. Attacks on the Fiat-Shamir Paradigm and Program Obfuscation. Tese (Doutorado) Massachusetts Institute of Technology, 2006. 206
Ve
rs
REFERNCIAS BIBLIOGRFICAS
427
[91] LINDELL, Y. Composition of Secure Multi-Party Protocols: A Comprehensive Study. [S.l.]: Springer, 2003. ISBN 3-540-20105-X. 214
in
ar
lim
[94] YAO, A. C.-C. How to generate and exchange secrets. In: Proceedings of the
27th Annual Symposium on Foundations of Computer Science. Washington,
DC, USA: IEEE Computer Society, 1986. p. 162167. ISBN 0-8186-0740-8.
Disponvel em: <http://portal.acm.org/citation.cfm?id=1382439.1382944>.
214
[95] KOBLITZ, N. Elliptic curve cryptosystems. Mathematics of Computation,
v. 48, p. 203209, 1987. 228
Pr
e
Ve
rs
[105] POLLARD, J. M. Theorems of factorization and primality testing. Proceedings of the Cambridge Philosophical Society, v. 76, n. 3, p. 521528, 1974.
238
428
REFERNCIAS BIBLIOGRFICAS
in
ar
[107] HOFFSTEIN, J.; PIPHER, J.; SILVERMAN, J. H. A Mathematical Introduction to Cryptography. [S.l.]: Springer, 2008. ISBN 978-0-387-77993-5.
238, 271, 348
lim
[110] CRANDALL, R.; POMERANCE, C. B. Prime Numbers: A Computational Perspective. [S.l.]: Springer, 2010. ISBN 9781441920508. 238
[111] BRESSOUD, D. Factorization and Primality Testing. [S.l.]: Springer,
1989. ISBN 0387970401. 238
Pr
e
[116] BRESSOUD, D.; WAGON, S. A Course in Computational Number Theory. [S.l.]: Wiley, 2008. 238
Ve
rs
REFERNCIAS BIBLIOGRFICAS
429
in
ar
[124] JOUX, A. A one round protocol for tripartite Diffie-Hellman. In: Proceedings of ANTS 4. [S.l.: s.n.], 2000. p. 385394. 256
[125] DASGUPTA, S.; PAPADIMITRIOU, C.; VAZIRANI, U. Algorithms.
[S.l.]: McGraw-Hill, 2006. ISBN 0073523402. 263, 384, 385
McGraw-
lim
Pr
e
[129] ARORA, S.; BARAK, B. Computational Complexity: A Modern Approach. [S.l.]: Cambridge University Press, 2009. ISBN 0-52142-426-7. 263, 385
[130] NIELSEN, M. A.; CHUANG, I. L. Quantum Computation and Quantum
Information. [S.l.]: Cambridge University Press, 2004. ISBN 9780521635035.
263
[131] BERNSTEIN, D. J.; DAHMEN, E.; BUCHMANN, J. Post-Quantum
Cryptography. [S.l.]: Springer, 2009. ISBN 978-3-540-88701-0. 263
Ve
rs
[134] GRIFFITHS, D. J. Introduction to Quantum Mechanics. 2. ed. [S.l.]: Benjamin Cummings, 2004. ISBN 0131118927. 263
430
REFERNCIAS BIBLIOGRFICAS
in
ar
[140] NGUYEN, P. Q.; VALLE, B. The LLL Algorithm: Survey and Applications. [S.l.]: Springer, 2009. ISBN 3642022944. 271
[141] GOLDREICH, O.; GOLDWASSER, S.; HALEVI, S. Public-key cryptosystems from lattice reduction problems. Lecture Notes in Computer Science, v. 1294, 1997. 271
lim
[143] AJTAI, M.; DWORK, C. A public-key cryptosystem with worstcase/average-case equivalence. In: Proc. 29th ACM STOC. [S.l.: s.n.], 1998.
p. 284293. 271
Pr
e
[144] REGEV, O. On lattices, learning with errors, random linear codes, and
cryptography. In: Proc. 37th ACM Symposium on Theory of Computing
(STOC). [S.l.: s.n.], 2005. p. 8493. 271
[145] HEFEZ, A.; VILLELA, M. L. T. Cdigos Corretores de Erros. 2. ed. [S.l.]:
IMPA, 2008. ISBN 978-85-244-0169-5. 273
[146] HILL, R. A First Course in Coding Theory. [S.l.]: Oxford University Press,
1990. ISBN 0198538030. 273
[147] ROMAN, S. Introduction to Coding and Information Theory. [S.l.]: Springer, 1996. ISBN 0387947043. 273
[148] MOON, T. K. Error Correction Coding: Mathematical Methods and Algorithms. [S.l.]: Wiley-Interscience, 2005. ISBN 0471648000. 273
Ve
rs
REFERNCIAS BIBLIOGRFICAS
431
in
ar
[155] ATENIESE, G. et al. Extended schemes for visual cryptography. Theoretical Computer Science, v. 250, p. 143161, 2001. 284
[156] ATENIESE, G. et al. Constructions and bounds for visual cryptography.
In: 23rd International Colloquium on Automata, Languages and Programming. [S.l.: s.n.], 1996. p. 416428. 284
[157] DESMEDT, Y.; HOU, S.; QUISQUATER, J.-J. Audio and optical cryptography. In: . [S.l.: s.n.], 1998. 284
lim
[158] LIN, C. chi; LAIH, C. sung; YANG, C. nung. New audio secret sharing
schemes with time division technique. Journal of Information Science and
Engineering, p. 605614, 2003. 284
Pr
e
[160] WU, C. C.; CHEN, L. H. A Study on Visual Cryptography. Tese (Doutorado) Institute of Computer and Information Science, National Chiao
Tung University, Taiwan, 1998. 285
[161] WU, H. C.; CHANG, C. C. Sharing visual multi-secrets using circle shares.
Comput. Stand Interfaces, v. 134, n. 28, p. 123135, 2005. 285
[162] CIMATO, S.; YANG, C.-N. Visual Cryptography and Secret Image Sharing. [S.l.]: CRC, 2011. ISBN 143983721X. 285
Ve
rs
[163] CANETTI, R. et al. Deniable Encryption. 1996. Cryptology ePrint Archive, Report 1996/002. http://eprint.iacr.org/. 296
[164] HOWLADER, J.; BASU, S. Sender-side public key deniable encryption scheme. In:
Proceedings of the 2009 International Conference on Advances in Recent Technologies in Communication and
Computing. Washington, DC, USA: IEEE Computer Society, 2009.
(ARTCOM 09), p. 913. ISBN 978-0-7695-3845-7. Disponvel em:
<http://dx.doi.org/10.1109/ARTCom.2009.107>. 296
[165] IBRAHIM, M. H. A method for obtaining deniable public-key encryption.
Journal of Network Security, v. 8, n. 1, 2009. 296
[166] IBRAHIM, M. H. Receiver-deniable public-key encryption. Journal of
Network Security, v. 8, n. 2, 2009. 296
[167] KLONOWSKI, M.; KUBIAK, P.; KUTYLOWSK, M. Practical deniable
encryption. In: Proceedings of SOFSEM 2008. [S.l.: s.n.], 2008. 296
432
REFERNCIAS BIBLIOGRFICAS
in
ar
[171] ARROW, K. J. Social Choice and Individual Values. [S.l.: s.n.], 1951.
ISBN 0-300-01364-7. 307
lim
Pr
e
Ve
rs
REFERNCIAS BIBLIOGRFICAS
433
in
ar
lim
[188] KAHN, D. The Codebreakers. [S.l.]: Scribner, 1967/1996. ISBN 0-68483130-9. 315
[189] HEFEZ, A. Curso de lgebra. 4. ed. [S.l.]: IMPA. 348
Pr
e
[195] ARTIN, M. Algebra. [S.l.]: Prentice Hall, 1991. ISBN 0130047635. 348
Dover, 2009. ISBN
Ve
rs
434
REFERNCIAS BIBLIOGRFICAS
in
ar
[205] NIVEN, I.; ZUCKERMAN, H. S.; MONTGOMERY, H. L. An Introduction to The Theory of Numbers. 5. ed. [S.l.]: Wiley, 1991. ISBN 0471625469.
348
lim
[207] STEIN, W. Elementary Number Theory: Primes, Congruences, and Secrets: A Computational Approach. [S.l.]: Springer, 2010. ISBN 1441927522.
348
[208] CORMEN, T. et al. Introduction to Algorithms. 3. ed. [S.l.]: MIT Press,
2009. 384, 385, 398
Pr
e
[212] GRAHAM, R. L.; KNUTH, D. E.; PATASHNIK, O. Matemtica Concreta: fundamentos para a Cincia da Computao. 2. ed. [S.l.]: LTC, 1995.
ISBN 85-216-1040-8. 385
Ve
rs
REFERNCIAS BIBLIOGRFICAS
435
[218] LEVIN, L. A. Universal search problems (em russo, universalnye perebornye zadachi). Problems of Information Transmission (em Russo, Problemy Peredachi Informatsii), v. 9, n. 3, p. 265266. 385
in
ar
lim
Pr
e
Ve
rs
[229] KORTE, B.; VYGEN, J. Combinatorial Optimization: theory and algorithms. 2. ed. [S.l.]: Springer, 2002. ISBN 3-540-43154-3. 385
[230] CARVALHO, M. et al. Uma introduo sucinta a algoritmos de aproximao. [S.l.]: IMPA, 2001. 385
[231] KANN, V. On the Aproximability of N P-complete Optimization Problems.
Tese (Doutorado) Department of Numerical Analysis and Computing Science Royal Institute of Technology, Sweden, 1992. 386
436
REFERNCIAS BIBLIOGRFICAS
in
ar
lim
Pr
e
Ve
rs
REFERNCIAS BIBLIOGRFICAS
437
in
ar
lim
[252] BRIGHAM, E. O. The Fast Fourier Transform and Its Applications. [S.l.]:
Prentice Hall, 1988. ISBN 978-0133075052. 398
Pr
e
[254] BERMAN, K. A.; PAUL, J. L. Algorithms: sequential, parallel and distributed. [S.l.]: Thomson, 2005. ISBN 0-534-42057-5. 398
[255] STEIN, E. M.; SHAKARCHI, R. Fourier Analysis: An Introduction. [S.l.]:
Princeton University Press, 2003. ISBN 978-0691113845. 399
[256] DAVIES, B. Integral Transforms and Their Applications. 3. ed. [S.l.]:
Springer, 2010. ISBN 978-1441929501. 399
[257] BRYCHKOV, Y. A.; PRUDNIKOV, A. Integral Transforms of Generalized Functions. [S.l.]: CRC Press, 1989. ISBN 9782881247057. 399
Ve
rs
ndice Remissivo
Ve
rs
Pr
e
lim
, 355
-protocolo, 201
, 355
O, 354
BPP (classe de complexidade), 367
IP (classe de complexidade), 198
N P (classe de complexidade), 366
N P-completo (classe de complexidade),
369
P (classe de complexidade), 366
(funo), 322
(funo), 322
PP (classe de complexidade), 367
PSPACE (classe de complexidade), 367
PSPACE-completo (classe de complexidade), 369
(n)-aproximao, 377
k-aproximao, 377
rvore, 362
BEAR (cifra de bloco), 123
LION (cifra de bloco), 123
3DES (criptossistema), 73
in
ar
Bzout
Lema de, 325
Berlekamp-Massey
algoritmo para determinar complexidade linear de sequncia, 50
438
NDICE REMISSIVO
439
Ve
rs
Pr
e
lim
in
ar
bit hard-core, 35
440
NDICE REMISSIVO
Ve
rs
Pr
e
lim
in
ar
NDICE REMISSIVO
441
in
ar
Hadamard
matriz de, 261
razo de, 266
HAM
problema, 368
hash, 9
hashing
funo de, 111
HMAC, 133
homomorfismo, 338
Howlader-Basu (esquema de encriptao negvel), 289
Pr
e
famlia de distribuies, 39
estatisticamente prximas, 40
fatorao de inteiros, 33
com curvas elpticas, 228
FDH, veja full-domain hash
Feige-Fiat-Shamir (protocolo de identificao), 202
Fermat
pequeno Teorema de, 330
Fiat-Shamir (mtodo para obteno de
esquema de assinatura), 205
Fourier
transformada de, 391
Transformada discreta de, 394
transformada quntica de, 261
transformada rpida, 395
FOX (cifra de bloco), 71, 80
Fujioka-Okamoto-Ohta (esquema de votao), 305
full-domain hash, 162
funo
de mo nica forte, 31
de mo nica fraca, 34
funo desprezvel, 26
funcionalidade ideal, 212
lim
esquema de encriptao
negvel pelo remetente, 288
estratgia de corrupo, 209
estrutura de acesso, 181
estrutura montona, 181
Euclides
algoritmo de, 321
algoritmo extendido de, 325
Euler
critrio de, 331
Teorema de, 329
Ve
rs
442
NDICE REMISSIVO
OAEP, 148
one-time pad, 22
operao quntica, 260
ordem de crescimento, 354
ordem de elemento em grupo, 336
ordem de um grupo, 336
output feedback
modo de operao de permutao
pseudoaleatrea, 65
lim
Lagrange
interpolao, 183
Lamport
esquema de assinaturas de, 160
Lamport (esquema de assinaturas), 160
Legendre, smbolo de, 332
Lema do Empilhamento, 89, 90
LFSR
de comprimento mximo, 50
linguagem
Turing-decidvel, 383
Turing-reconhecvel, 383
LLL (algoritmo), 267
logaritmo discreto, 32
logaritmo discreto (problema)
em grupos de curvas elpticas, 226
Luby-Rackoff (Teorema), 70
LWE (criptossistema), 270
in
ar
Ve
rs
Pr
e
PARTIO
problema, 379
perodo de sequncia, 46
permutao de mo nica, 32
com segredo, 142
permutao indexada, 63
permutao pseudoaleatrea, 63
forte, 63
polinmio de conexo, 49
m-sequncia, 50
polinmio irredutvel, 343
mquina de Turing, 381, 382
polinmio primitivo, 346
mximo divisor comum, 321
polinmio sobre estrutura algbrica, 343
seecdigo de autenticao de mensa- polinmios mdulo f , 344
gem, 127
Pollard
McEliece (criptossistema), 278
mtodo para fatorao, 234
mdc, veja mximo divisor comum
mtodo p 1 para fatorao, 232
menor base
porta de comunicao, 171
problema, 380
predicado hard-core, 35
Merkle-Damgrd
construo para funes de mo
transformao de, 114
nica, 37
mix-net, 300
problema
MOCHILA
de busca, 363
no aproximabilidade, 377
de deciso, 363
problema, 370
problema da parada, 380
prova de N P-completude, 370
produto de subconjunto
modos de operao (cifra de bloco), 63
problema, 379
mundo ideal, 212
protocolo, 171
mundo real, 212
prova interativa, 197
NDICE REMISSIVO
443
in
ar
qubit, 258
Ve
rs
Pr
e
lim
Rabin
criptossistema, 144
raiz da unidade, 340
raiz primitiva mdulo m, 330
rede de Feistel, 69
rede de substituio e permutao, 67
reduo, 368
tempo pseudopolinomial, 375
reencriptao, 300
teorema Chins do resto, 326
registrador de deslocamento, 47
teorema dos nmeros primos, 322
linear realimentado, 48
tese de Church-Turing, 384
registrador quntico, 259
teste de paridade (em cdigos), 276
relao de recorrncia, 356
texto cifrado escolhido, 134
resduo quadrtico, 331
residuosidade quadrtica (problema), 151texto claro escolhido, 55
tociente (funo), 322
resistncia a coliso, 112
transferncia inconsciente, 207
resistncia de pr-imagem, 112
resistncia de segunda pr-imagem, 112 transformada integral, 399
restrio (tcnica de demonstrao de TSP
problema, 368
N P-completude), 370
prova de N P-completude, 369
resumo criptogrfico, 111
reticulado, 265
robustez (em sistema de votao), 299 unidade (em anel), 339
ROT13, 312
verificabilidade (em sistema de votaRSA (criptossistema), 146
o, 299
verso insegura, 146
vetor de recombinao, 184
RSA (esquema de assinaturas), 161
vetor peridico, 262
vis
S-box, 67
de varivel aleatrea binria, 89
SBP (problema em reticulados), 266
votao eletrnica, 299
Schnorr
protocolo de identificao, 203
Secure Hash Algorithm, 117
segurana de esquema de assinatura
CMA, 156, 159
KMA, 156, 158
RMA, 156, 157
SHA (resumo criptogrfico), veja Secure Hash Algorithm
sigilo (em sistema de votao), 299
sigilo perfeito, 21
sistema completo de resduos, 328