Você está na página 1de 452

lim

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Pr
e

Introduo Criptografia e seus Fundamentos


notas de aula verso 79
Jernimo C. Pellegrini

Ve
rs

5 de novembro de 2012

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Sumrio

Conceitos Fundamentais

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

7
7
8
9
10
11
11
11
14
14
14
14
16

2 Criptossistemas e Noes de Segurana


2.1 Criptossistemas . . . . . . . . . . . . . . .
2.2 Princpio de Kerchoff . . . . . . . . . . . .
2.3 Sigilo Perfeito . . . . . . . . . . . . . . . .
2.4 Segurana emprica e com heursticas . . .
2.5 Segurana demonstrvel . . . . . . . . . .
2.5.1 Cenrios de ataque . . . . . . . . .
2.5.2 Probabilidade desprezvel . . . . .
2.5.3 Exemplo de definio de segurana

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

19
20
20
21
24
25
26
26
27

. . . . . . .
. . . . . . .
. . . . . . .
mo nica .

.
.
.
.

.
.
.
.

.
.
.
.

31
31
34
35
37

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

Ve
rs

Pr
e

1 Introduo e viso geral


1.1 Encriptao simtrica . . . . .
1.2 Encriptao assimtrica . . . .
1.3 Resumos (hashes) criptogrficos
1.4 Assinatura digital . . . . . . . .
1.5 Estabelecimento de chaves . . .
1.6 Chaves pblicas confiveis . . .
1.7 Protocolos . . . . . . . . . . . .
1.8 Criptografia Ps-Quntica . . .
1.9 Criptografia Quntica . . . . .
1.10 Sobre este texto . . . . . . . . .
1.10.1 Jogos e experimentos . .
1.10.2 Notao e convenes .

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

notas de aula verso 79 - Jernimo C. Pellegrini

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

4 Geradores Pseudoaleatreos e Cifras de Fluxo


4.1 Geradores pseudoaleatreos . . . . . . . . . . . . . .
4.2 Geradores com Funes de Mo nica . . . . . . . .
4.3 Gerao de nmeros pseudoaleatreos . . . . . . . .
4.4 Geradores com Heursticas . . . . . . . . . . . . . . .
4.4.1 Propriedades de Sequncias Pseudoaleatreas
4.4.2 Testes Para Sequncias de Bits . . . . . . . .
4.5 Cifras de Fluxo . . . . . . . . . . . . . . . . . . . . .
4.5.1 Mltiplas Mensagens . . . . . . . . . . . . . .
4.5.2 Ataques de Texto Claro Escolhido . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

notas de aula verso 79 - Jernimo C. Pellegrini

SUMRIO

iii

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

8 Cdigos de Autenticao de Mensagens


8.1 Segurana de cdigos de autenticao de mensagens . .
8.2 Extendendo MACs para tamanho varivel de mensagem
8.3 CBC-MAC . . . . . . . . . . . . . . . . . . . . . . . . .
8.3.1 Mensagens de tamanho varivel . . . . . . . . . .
8.4 HMAC . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.5 Aplicao: segurana CCA . . . . . . . . . . . . . . . .

.
.
.
.
.
.

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

7 Resumos Criptogrficos (funes de hashing)


7.1 Ataques e o problema do aniversrio . . . . . . . .
7.2 Construo: transformao de Merkle-Damgrd . .
7.3 Resistncia a colises com dexp . . . . . . . . . . .
7.4 SHA (Secure Hash Algorithm) . . . . . . . . . . . .
7.5 Cifras de bloco usando funes de hash: Aardvark
7.6 O Orculo Aleatreo . . . . . . . . . . . . . . . . .
7.6.1 Propriedades do Orculo Aleatreo . . . . .
7.6.2 Objees . . . . . . . . . . . . . . . . . . .

. . . .
. . . .
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

.
.
.
.
.
.
.
.
.
.
.

notas de aula verso 79 - Jernimo C. Pellegrini

iv

Protocolos

167

11 Protocolos Para Comprometimento


11.1 Modelo computacional . . . . . . . . . . . . .
11.2 Comprometimento . . . . . . . . . . . . . . .
11.2.1 Comprometimento de bit . . . . . . .
11.2.2 Verificao de igualdade de logaritmos
11.2.3 Cara-ou-coroa . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

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

13 Provas de Conhecimento Zero


13.1 Provas Interativas . . . . . . . . . . . . . . . . . . . . . .
13.2 Conhecimento zero . . . . . . . . . . . . . . . . . . . . . .
13.2.1 Isomorfismo de grafo . . . . . . . . . . . . . . . . .
13.3 -protocolos . . . . . . . . . . . . . . . . . . . . . . . . .
13.4 Protocolos de Identificao . . . . . . . . . . . . . . . . .
13.4.1 Esquema de Identificao de Feige-Fiat-Shamir . .
13.4.2 Protocolo de Schnorr . . . . . . . . . . . . . . . . .
13.5 Transformando provas interativas em no interativas . . .
13.6 Protocolos de comprometimento a partir de -protocolos

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

14 Protocolos Seguros com Dois Participantes


207
14.1 Transferncia Inconsciente . . . . . . . . . . . . . . . . . . . . . . 207
15 Computao Segura com Mltiplos Participantes
15.1 Um protocolo para participantes semi-honestos . .
15.2 Segurana . . . . . . . . . . . . . . . . . . . . . . .
15.3 Notas . . . . . . . . . . . . . . . . . . . . . . . . .
15.4 Exerccios . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

209
210
211
214
214

notas de aula verso 79 - Jernimo C. Pellegrini

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 .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

18 Criptografia Baseada em Identidades


18.1 Gerao de chaves . . . . . . . . . .
18.2 Encriptao . . . . . . . . . . . . . .
18.3 Assinaturas . . . . . . . . . . . . . .
18.4 Acordo de chaves . . . . . . . . . . .
18.5 Duas construes simples . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

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 . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

notas de aula verso 79 - Jernimo C. Pellegrini

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

22 Cdigos Corretores de Erros


22.1 Correo de erros . . . . . . . . . . . . . . . . . . . . . . . . . . .
22.1.1 Cdigos Lineares . . . . . . . . . . . . . . . . . . . . . . .
22.2 Criptografia com cdigos corretores de erros . . . . . . . . . . . .

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

notas de aula verso 79 - Jernimo C. Pellegrini

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

B lgebra e Teoria dos Nmeros

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

E Descrio Detalhada de Construes


E.1 DES . . . . . . . . . . . . . . . . . . . .
E.1.1 Descrio geral . . . . . . . . . .
E.1.2 Permutao inicial e sua inversa
E.1.3 Funo interna F . . . . . . . . .
E.1.4 Escalonamento de chaves . . . .
E.2 AES . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

401
401
401
403
403
406
408

notas de aula verso 79 - Jernimo C. Pellegrini

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

notas de aula verso 79 - Jernimo C. Pellegrini

notas de aula verso 79 - Jernimo C. Pellegrini

SUMRIO

in
ar

Notao

lim

tamanho da representao binria de x, precedida pelo bit 1


concatenao das sequncias a e b
a classe de equivalncia a (mod n)
o grupo gerado por X
o nmero A est representado na base 16 (hexadecimal)
As distribuies das variveis aleatreas A e B so indistinguveis
x e y so nmeros, e x aproximao de y
uma construo criptogrfica (criptossistema, funo de hashing etc)
assinatura
grupo multiplicativo de inteiros mdulo n
o adversrio
o desafiador
um teste (algoritmo que distingue duas distribuies)
texto encriptado
um cdigo corretor de erros
problema Diffie-Hellman
normalmente, o gerador de um grupo
chave
um reticulado
mensagem em claro
normalmente um nmero primo
um polinmio
normalmente um nmero primo; s vezes uma quantidade
cdigo de autenticao de mensagem
polinmio irredutvel que define o corpo de Rijndael
x4 + 1 (para multiplicao de colunas no AES)
bit menos significativo de x
logaritmo de x na base 2
logaritmo discreto de h na base g
bit mais significativo de x
funo desprezvel
o algoritmo ou funo retornar dois valores, a e b
rotao dos bits de a, k posies esquerda
b computado e armazenado em a
a escolhido uniformemente ao acaso do conjunto S
a funo f retorna dois valores
e lgico de a e b
ou lgico de a e b
ou exclusivo (XOR) de a com b (adio mdulo 2)
no lgico (negao do bit a)
conjunto de todas as matrizes obtidas permutando colunas de M
ponto no infinito, adicionado ao R2
conjunto de resduos quadrticos mdulo n
conjunto de nmeros em Zn com smbolo de Jacobi igual a +1

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

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

Conceitos Fundamentais

Ve
rs

Pr
e

lim

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

notas de aula verso 79 - Jernimo C. Pellegrini

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.

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

Captulo 1

lim

Introduo e viso geral

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

1.1

Pr
e

A Criptografia abrange desde a concepo at a implementao de sistemas de


computao relacionados a diversos aspectos de segurana. As sees seguintes
do uma viso geral dos temas que abordaremos. Em alguns casos h exemplos
concretos.

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

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 1. INTRODUO E VISO GERAL


mensagem
1 0 0 1 0 1 1 1 0 1

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

A semente do gerador aleatreo a senha que permite encriptar e decriptar


mensagens. Em uma cifra de fluxo usando ou exclusivo, Enc e Dec so
idnticas;
Cifras de bloco, que transformam sequncias de bits de tamanho fixo, realizando nelas transformaes difceis de inverter.
mensagem

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

A funo f (k, m) na figura aceita dois parmetros: um a chave secreta


usada para encriptar a mensagem e outra a mensagem; f 1 (k, c) determina a mensagem a partir do texto cifrado e da chave. importante que
f 1 seja difcil de calcular sem a chave k (definiremos com mais clareza
esta dificuldade mais adiante).

1.2

Encriptao assimtrica

Um problema dos esquemas simtricos de encriptao que cada par de usurios


que queira se comunicar em sigilo precisa compartilhar uma chave secreta. Se
Alice e Bob esto fisicamente distantes e no podem faz-lo de maneira simples,
um esquema simtrico no til. Os criptossistemas assimtricos permitem que
diferentes usurios se comuniquem em sigilo sem este problema.
Em um criptossistema assimtrico, tanto Alice como Bob tem duas chaves
uma pblica (conhecida de todos, possivelmente divulgada na Internet) e outra
privada.

notas de aula verso 79 - Jernimo C. Pellegrini

lim

in
ar

1.3. RESUMOS (HASHES) CRIPTOGRFICOS

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.

Resumos (hashes) criptogrficos

Pr
e

1.3

Ve
rs

Resumos criptogrficos (ou funes de hashing) so outra ferramenta de que


trataremos. Funes de hashing mapeiam sequncias de bits de tamanho arbitrrio (como arquivos e mensagens) em pequenas sequncias, de tamanho fixo.
Desta forma estes pequenos resumos podem ser usados para identificar arquivos. evidente que no podemos garantir que nunca teremos dois arquivos (ou
mensagens) com o mesmo resumo, porque o nmero de bits usados no resumo
menor que o nmero de bits usado para representar os textos; no entanto,
estas funes so projetadas de forma que colises sejam improvveis. A funo
SHA-512, por exemplo, representa o resumo com 512 bits, mas a entrada pode
ter at 2128 1 bits. O resultado da aplicao do SHA-256 cadeia de caracteres
mensagem secreta mostrado a seguir.
mensagem secreta

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;

Se a mensagem original for ligeiramente modificada, o hash parecer completamente diferente:

notas de aula verso 79 - Jernimo C. Pellegrini

10

CAPTULO 1. INTRODUO E VISO GERAL

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

Suponha que queiramos garantir a integridade de um arquivo ou mensagem,


evitando que algum mais o modifique (um vrus ou um intruso, por exemplo). Poderamos computar resumos (hashes) destes arquivos (o resumo de
um arquivo tem tamanho muito menor que o prprio arquivo) e armazen-los
em uma tabela. No entanto, nada impede que o intruso recalcule os hashes e os
modifique tambm na tabela, tornando incua nossa medida de precauo. No
entanto, se concatenarmos cada arquivo (ou mensagem) com uma chave secreta
antes de calcular o hash e armazenarmos este resumo na tabela, o intruso no
ter como modific-la (ele pode recalcular o resumo do arquivo modificado, mas
no conhece a chave secreta e portanto no poder calcular o hash correto).
A este tipo de resumo damos o nome de cdigo de autenticao de mensagem
(ou MAC Message Authentication Code).

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

Os esquemas de encriptao assimtricos garantem sigilo na comunicao entre


duas partes, mas chaves pblicas podem ser usadas tambm para garantir o norepdio (ou irretratabilidade) de documentos: se Alice usa sua chave privada
para criar um documento, qualquer um de que tenha sua chave pblica poder
verificar que realmente Alice publicou aquele documento (e Alice no poder
posteriormente negar que o fez).

notas de aula verso 79 - Jernimo C. Pellegrini

11

lim

in
ar

1.5. ESTABELECIMENTO DE CHAVES

1.5

Pr
e

importante observar que um MAC (cdigo de autenticao de mensagem,


mencionado na seo sobre funes de hashing) no d garantia de no-repdio,
uma vez a chave secreta includa antes do clculo de hash no est unicamente
associada a alguma entidade da mesma forma que um par de chaves pblica/privada.

Estabelecimento de chaves

1.6

Criptossistemas assimtricos normalmente so mais lentos que os simtricos.


Assim, quando Alice e Bob quiserem se comunicar, idealmente usariam inicialmente um criptossistema assimtrico apenas para poder em seguida estabelecer
uma chave simtrica para que possam trocar informaes.

Chaves pblicas confiveis

Ve
rs

H um problema com os esquemas de encriptao assimtricos: quando a chave


pblica de Alice oferecida a Bob, como Bob pode ter certeza de que foi realmente Alice que a enviou? H diferentes maneiras de abordar este problema.
Podemos dar a uma entidade a autoridade para assinar chaves pblicas. Desta
forma quando Alice envia sua chave pblica, envia tambm uma declarao da
autoridade central de que aquela chave de Alice. Outra maneira de lidar com
este problema construir uma rede de confiana, onde cada pessoa assina a
chave pblica de outras, dando sua f de que aquela chave realmente pertence
quela pessoa. Por ltimo, h tambm a Criptografia baseada em identidades.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

12

CAPTULO 1. INTRODUO E VISO GERAL

in
ar

Os procedimentos que estas partes executam em conjunto a fim de chegar a


algum objetivo so chamados de protocolos. Esta Seo descreve alguns dos
problemas e tcnicas usualmente abordados no estudo de protocolos criptogrficos.

lim

Transferncia opaca (ou inconsciente) Em determinadas situaes pode


ser necessrio que Alice envie uma de duas mensagens, m0 ou m1 para Bob; que
Alice tenha certeza de que Bob recebeu uma das duas mensagens, mas que
no saiba qual delas foi recebida. Embora parea inicialmente algo estranho,
trata-se de uma ferramenta importante, usada para construir outros protocolos
( possvel construir qualquer protocolo de duas partes usando como primitiva
apenas transferncia inconsciente).

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

Cara-ou-coroa pelo telefone Suponha que Alice e Bob estejam fisicamente


distantes, e queriam decidir algo usando um sorteio jogando uma moeda,
por exemplo. Se ambos fizessem suas escolhas (cara ou coroa) primeiro para
depois um deles jogar uma moeda, este ltimo poderia obviamente trapacear.
possvel, no entanto, jogar cara ou coroa pelo telefone, desde que usemos
um mecanismo chamado comprometimento: Alice compromete-se com um bit
(cara ou coroa), mas de maneira que Bob no possa conhec-lo. Bob ento joga
a moeda e anuncia o resultado. Agora Alice envia a Bob o segredo que faltava
para revelar sua opo.
Assinatura simultnea de contrato Alice e Bob querem assinar um contrato, mas como cada um dever abrir mo de algo, nenhum dos dois quer
assinar primeiro.

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,

notas de aula verso 79 - Jernimo C. Pellegrini

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.

O compartilhamento de segredos, alm de ser diretamente til, tambm


importante na construo de protocolos para computao segura por vrios
atores.

Ve
rs

Eleies eletrnicas Em uma eleio eletrnica com voto sigiloso h que


nenhum eleitor vote mais de uma vez; que ningum possa duplicar o voto de
outro; que o resultado seja computado corretamente, e que seja possvel a qualquer um verificar que o resultado est correto. possvel construir protocolos
criptogrficos para eleies eletrnicas com tais garantias.

Computao segura por vrios atores Pode-se realizar computao usando


dados vindos de vrias partes, mas sem que os dados vindos de cada fonte sejam
conhecidos. Por exemplo, duas pessoas podem descobrir qual a mais rica, sem
que nenhuma fique sabendo exatamente qual o patrimnio da outra.

Provas de conhecimento zero Queremos transmitir informao a algum


preservando a possibilidade de neg-la (por exemplo, um agente da Inteligncia
de um pas pode precisar dar prova de sua identidade a um agente de outro pas,
mas quer convencer apenas esta pessoa, sem que esta prova possa convencer
mais ningum). Podemos tambm querer provar que sabemos como realizar
uma tarefa sem mostrar como faz-lo.

notas de aula verso 79 - Jernimo C. Pellegrini

14

CAPTULO 1. INTRODUO E VISO GERAL

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.

Sobre este texto

Pr
e

1.10

lim

A Criptografia Quntica trata do uso de mecnica quntica em Criptografia.


Em 1984 Charles Bennet e Guiles Brassard desenvolveram um protocolo para
distribuio de chaves cuja segurana no se sustenta em complexidade computacional, mas em leis da Fsica. Este protocolo chamado de distribuio
quntica de chaves.

Ve
rs

Os fundamentos da Criptografia so bastante simples. Usamos apenas um pouco


de Complexidade Computacional (tempo polinomial, tempo exponencial e N Pcompletude) e muito pouco de Probabilidade (alguns fatos bsicos e uma nica
distribuio a uniforme). A maneira como estes conceitos so usados pode, no
entanto, ser um tanto estranha inicialmente. Felizmente o modus operandi para
as demonstraes e descries conceituais no muda muito na primeira parte do
texto (exceto talvez pelo Captulo sobre Criptanlise), ento basta que o leitor
se acostume com tal modo de pensar e a fluidez dever vir rapidamente.
Indo dos Fundamentos para as aplicaes bsicas, usamos Teoria de Nmeros, Cdigos Corretores de Erros e outras reas da Matemtica para desenvolver
os sistemas descritos nas sees anteriores.

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).

Experimento 1.1 (NUMBER_GUESS(A, n)). O desafiador comea sorteando um


nmero k entre um e n, e depois o envia a A. O adversrio ento tenta adivinhar

notas de aula verso 79 - Jernimo C. Pellegrini

1.10. SOBRE ESTE TEXTO

15

lim

k R [1, n]

in
ar

o nmero e envia sua tentativa k1 a D. Se o adversrio acertou, o desafiador


encerra o jogo e declara que o resultado do experimento um (significando que
o adversrio obteve sucesso). Se o adversrio no acertou (ou seja, se k1 6= k),
o desafiador responde dizendo se k < n ou k > n, e o adversrio pode tentar
novamente. O desafiador aceitar at tres tentativas de A, mas depois encerrar
o jogo.
O jogo mostrado no diagrama a seguir.

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

Calculamos agora a probabilidade de sucesso de A neste jogo. na primeira


tentativa, A acerta com probabilidade 1/n. Ao receber a resposta de D, o
adversrio poder ento descartar uma parte do intervalo, mantendo apenas z1
valores plausveis. Na segunda tentativa, a probabilidade de acerto 1/z1 , e
aps a resposta o adversrio restringir o intervalo plausvel a z2 . A terceira
e ltima tentativa ser em um intervalo de tamanho z2 , e a probabilidade de
acerto nesta ltima tentativa 1/z2 . Cada zi estritamente menor que n,
portanto 1/zi > 1/n podemos dizer que
1
(n 1) 1
(n 1) (z1 1) 1
+
+
n
n z1
n
z1
z2
1
(n 1) 1
(n 1) (n 1) 1
< +
+
n
n n
n
n n

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.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 1. INTRODUO E VISO GERAL


D

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

Claramente, queremos que o adversrio tenha probabilidade de sucesso muito


pequena neste jogo (uma definio clara de probabilidade muito pequena
dada no Captulo 2). No a calculamos aqui porque ela depender do criptossistema usado no jogo (note que um parmetro do experimento).
Quase sempre que descrevermos uma interao deste tipo um diagrama como
este acompanhar a descrio.

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

quando uma funo f (x) retorna os valores a, b, c. Quando um algoritmo usa


vrios valores retornados por uma funo (ou por outro algoritmo), denotamos
ha, b, ci f (x)

notas de aula verso 79 - Jernimo C. Pellegrini

1.10. SOBRE ESTE TEXTO

17

Exerccios

in
ar

Ex. 1 Considere novamente o Experimento 1.1. Se o adversrio usado no


experimento sempre tenta ki exatamente na metade do intervalo plausvel, qual
sua probabilidade de sucesso?

Ex. 2 Se no houver limite para o nmero de tentativas no Experimento 1.1,


qual o mnimo e o mximo nmero de iteraes?

c1 , c2 , . . . , c5

Pr
e

ci R C

lim

Ex. 3 Considere o seguinte jogo entre um desafiador D e um adversrio


A. O desafiador sorteia cinco cartas de baralho e as envia ao adversrio. O
adversrio obrigado, ento, a trocar uma das cartas mas pode escolher
qual delas trocar. A ento devolve uma das cartas e recebe outra, escolhida
aleatoreamente. Em seguida, A mostra suas cartas a D. Se as cartas mostradas
forem todas do mesmo naipe, D determinar que o resultado do experimento
um (significando sucesso de A); caso contrrio, o resultado ser zero.

ci

c6 R C \ {ci }

c6

c1 , . . . , c 6

i, j N (ci ) = N (cj ) 1
seno 0

Determine a probabilidade de sucesso de A no jogo.

Ve
rs

Ex. 4 Defina um experimento aleatreo que descreve o jogo de vinte-e-um


(blackjack) de um adversrio contra uma banca. Determine:
i) A probabilidade do adversrio conseguir vinte e um;

ii) A probabilidade de a pontuao do adversrio seja 21 aps k rodadas


para k = 1, 2, . . ..

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 1. INTRODUO E VISO GERAL

Ve
rs

Pr
e

lim

in
ar

18

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 2

lim

Criptossistemas e Noes de
Segurana

Pr
e

Ao contrrio de outros Captulos, onde fatos histricos so isolados na Seo


Notas, este Captulo inicia com alguns pargrafos que resumem, em muito
alto nvel de detalhes, a evoluo dos conceitos de segurana em Criptografia,
porque a compreenso deste processo algo demasiado importante para que se
possa compreender completamente as noes atuais de segurana, incluindo os
fatos que levaram ao seu desenvolvimento.

As noes de segurana usadas em Criptografia passaram por diversas fases


claramente distintas. Inicialmente criptossistemas eram criados e sua segurana
dependia de quanto tempo ela permanecia til, sem que adversrios conseguissem frustrar os objetivos do usurio.

Ve
rs

No Sculo XX, Claude Shannon formalizou diversas ideias a respeito de


segurana e props o conceito de sigilo perfeito. Infelizmente, criptossistemas
com sigilo perfeito no so viveis na prtica.
Uma vez que criptossistemas com sigilo perfeito no so construes viveis,
por certo tempo foram desenvolvidas construes criptogrficas que pareciam
boas, por basearem-se em ideias boas (como a de substituir e misturar partes
da mensagem para obter o texto encriptado), mas sem nenhuma prova de que
realmente eram seguras. A segurana dessas construes era aferida de acordo
com seu grau de exposio: uma construo mais segura se for mais amplamente conhecida e mais antiga do que outra, sem ter sofrido nenhum ataque
com sucesso.
No incio da dcada de 80 surgiu uma percepo da necessidade de demonstraes formais de segurana para construes criptogrficas, de forma a evitar
a prtica (comum at ento) de usar critrios empricos para determinar a confiana em criptossistemas e ferramentas criptogrficas.
19

notas de aula verso 79 - Jernimo C. Pellegrini

20

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

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

Gen, um algoritmo randomizado que escolhe uma chave de acordo com


alguma distribuio de probabilidades;
Enc, um algoritmo randomizado que aceita uma chave k, uma mensagem
m e retorna um texto cifrado c;

Pr
e

Dec, um algoritmo determinstico que aceita uma chave k e um texto


cifrado c e retorna uma mensagem m.
Para toda chave k, toda mensagem m e todo texto cifrado c, necessrio que
Deck (Enck (m)) = m.

Ve
rs

Neste texto denotamos por K o espao de chaves, M o espao de mensagens


e C o espao de textos cifrados
Usaremos as distribuies de probabilidade sobre K, M e C. A distribuio sobre K determinada pelo algoritmo Gen. A distribuio sobre M no
determinada pelo criptossistema, mas sim pelas probabilidades a priori das
mensagens. As distribuies sobre K e M so independentes; j a distribuio
sobre C determinada pelas outras e pelo algoritmo Enc.
Denotaremos as trs variveis aleatreas por K, M e C: Pr[K = k] a
probabilidade de a chave k ser escolhida por Gen; Pr[M = m] a probabilidade
da mensagem ser m; e Pr[C = c] a probabilidade do texto cifrado ser c.
Para simplificar a notao poderemos omitir a varivel aleatrea: Pr(k) ao
invs de Pr[K = k] etc. Neste caso o contexto determinar a varivel aleatrea.
Por exemplo, se em um dado contexto x for uma chave ento Pr(x) o mesmo
que Pr[K = x].

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).

notas de aula verso 79 - Jernimo C. Pellegrini

2.3. SIGILO PERFEITO

21

2.3

in
ar

O funcionamento interno de um criptossistema no pode ser secreto;


deve-se presumir que o adversrio conhece como o criptossistma funciona, e a segurana do sistema deve estar na escolha das chaves.

Sigilo Perfeito

Informalmente, um criptossistema tem sigilo perfeito quando o conhecimento


do texto cifrado no d a um adversrio qualquer informao a respeito da
mensagem e que portanto, se um adversrio pretende obter uma mensagem, o
conhecimento do texto encriptado no muda sua probabilidade de sucesso (ou
seja, o adversrio no pode fazer melhor do que tentar adivinhar a mensagem).

lim

Definio 2.2 (Sigilo Perfeito). Um criptossistema tem sigilo perfeito se, para
todo m M e c C, Pr(m|c) = Pr(m).

A formulao alternativa de sigilo perfeito, dada pelo Lema a seguir, nos


ser til.

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)

Pelo Teorema de Bayes o lado esquerdo Pr(m|c). Assim, Pr(m|c) = Pr(m).

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|.

Demonstrao. Suponha que |K| < |M|, e considere a distribuio uniforme


sobre |M|. Seja c C tal que Pr(c) > 0, e seja M(c) o conjunto de todas as
mensagens que poderiam ser o deciframento de c:
M(c) = {m | m = Deck (c) para algum k K}

1 Se quisermos cifrar documentos de 1 Mb, teremos que determinar M como todas as


sequncias de bits que formam documentos de 1 Mb, que o mesmo que 8 10242 = 8388608
bits. Teramos ento 28388608 possveis mensagens, e este teria que ser tambm o tamanho do
espao de chaves. A representao de cada chave ento ocuparia 1 Mb.

notas de aula verso 79 - Jernimo C. Pellegrini

22

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

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

Pr(m0 |c) = 0 6= Pr(m0 ) =

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.

Um exemplo de criptossistema com sigilo perfeito o one-time pad, tambm


chamado de cifra de Vernam.
Usamos a notao 1n para a sequncia de n bits iguais a um, e {0, 1}n para
o conjunto de todas as sequncias de n bits.

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.

A Figura a seguir ilustra o funcionamento do one-time pad.


chave

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

Usaremos o Lema a seguir na demonstrao de que o one-time pad tem sigilo


perfeito.

notas de aula verso 79 - Jernimo C. Pellegrini

2.3. SIGILO PERFEITO

23

in
ar

Lema 2.6. Um criptossistema simtrico tem sigilo perfeito se e somente se para


toda distribuio sobre M e para quaisquer mensagens m0 , m1 e qualquer texto
cifrado c,
P (c|m0 ) = P (c|m1 ).
Demonstrao. () Suponha que o sistema tem sigilo perfeito e tome m0 , m1
M e c C. Usando o Lema 2.3,
Pr(c|m0 ) = Pr(c) = Pr(c|m1),

lim

e esta direo da prova est completa.


() (Rascunho) Presuma P (c|m0 ) = P (c|m1 ), depois calcule P (c) usando
o Lema 2.3.
Teorema 2.7. O one-time pad tem sigilo perfeito.

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

e pelo Lema 2.6 o one-time pad tem sigilo perfeito.


H uma definio alternativa de sigilo perfeito que usa uma simulao de
ataque ao criptossistema por um adversrio, como em um jogo. Neste jogo o
adversrio tem como objetivo determinar qual de duas mensagens, m0 ou m1 ,
originou um texto cifrado c. Usaremos esta simulao de jogo para provar que a
probabilidade de acerto do adversrio exatamente 1/2. Usaremos estes jogos
tambm nas definies de outras noes de segurana ao longo do texto.
Consideraremos possveis ataques a um criptossistema. No modelo a ser
usado h um adversrio A. Definiremos um experimento para o criptossistema = (Gen, Enc, Dec) e o adversrio A. Chamaremos este experimento de
PRIV_EAV(A) (eav para eavesdropping). Deixaremos que o adversrio escolha duas mensagens. Em seguida, cifraremos uma delas (sem que ele saiba qual)
e a enviaremos a ele. O adversrio dever ento descobrir qual das mensagens
foi cifrada.

notas de aula verso 79 - Jernimo C. Pellegrini

24

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

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

4. Se b = b0 , o resultado do experimento 1 (e dizemos que A teve sucesso),


seno 0.

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

Segurana emprica e com heursticas

As noes de segurana usadas na prtica desde Shannon at o final da dcada


de 70 no so rigorosas ou formais o suficiente para serem descritas neste texto.
No entanto, mesmo com o surgimento da segurana demonstrvel no comeo da
dcada de 80, em muitas reas da Criptografia no foi possvel passar a usar

notas de aula verso 79 - Jernimo C. Pellegrini

2.5. SEGURANA DEMONSTRVEL

25

2.5

Segurana demonstrvel

lim

in
ar

construes com demonstraes de segurana. Um exemplo o desenvolvimento


de cifras de bloco, que sempre foram mais eficientes que as cifras assimtricas,
mas por outro lado carecem de demonstrao de segurana.
H, porm, um conjunto de ideias e mtodos usados na construo de cifras
de bloco que foram sendo desenvolvidos e refinados ao longo do tempo: mtodos
comuns de ataque, padres de arquitetuar que parecem resistir a estes mtodos,
e assim por diante. Estas ideias e mtodos (heursticas) mostraram ser bons
o suficiente para a construo de cifras de bloco cuja segurana verificada empiricamente bastante boa. As cifras de bloco (e funes de hashing) usadas
na prtica em sistemas so exemplo disso: no h para elas demonstrao de
segurana, mas foram desenvolvidas usando blocos bsicos e arquitetura que so
normalmente reconhecidos como bons.

Pr
e

Para poder elaborar demonstraes de segurana em Criptografia, passou a ser


necessrio definir rigorosamente critrios de segurana e identificar conjecturas
nas quais as demonstraes se baseiam. Estes dois pontos so elaborados a
seguir.

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

Identificao de hipteses precisas: na grande maioria dos casos, no


possvel conseguir segurana incondicional, e sim dependendo de alguma
conjectura: uma construo segura se a fatorao de inteiros for difcil, ou se for difcil calcular o logaritmo de um nmero em um grupo,
por exemplo. H tambm conjecturas normalmente mais confiveis que
outras (e aqui surge novamente um critrio subjetivo): problemas muito
conhecidos e estudados por muito tempo normalmente so preferveis a
problemas novos e pouco estudados ( mais provvel que um criptlogo
confie em uma construo baseada em fatorao de inteiros do que em
outra, baseada em um problema desconhecido).

A segurana demonstrvel tornou-se o mtodo padro para desenvolvimento


de algumas construes em particular, na criptografia assimtrica. Algumas
construes, no entanto, continuaram a ser desenvolvidas na prtica com heursticas, porque o trabalho terico que foi possvel desenvolver no levava a
construes eficientes. Este o caso das cifras simtricas de fluxo e de bloco, e
de funes de hashing.

notas de aula verso 79 - Jernimo C. Pellegrini

26

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

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

H vrias possveis situaes em que um adversrio poderia tentar quebrar um


criptossistema. As quatro mais simples so listadas a seguir.

lim

Ataque de texto cifrado conhecido: o adversrio tem apenas textos cifrados


com uma chave k e tenta determinar as mensagens;

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

Os dois primeiros ataques so chamados de passivos, e os dois ltimos de


ativos.
Estes ataques dizem respeito a sigilo, e portanto fazem sentido apenas para
criptossistemas ou outras construes onde mensagens so de alguma forma encriptadas. Definies de segurana para outros objetivos (resistncia a fraude,
por exemplo) e construes (esquemas de assinatura, funes de hashing e protocolos) sero abordadas ao longo do texto.
O experimento PRIV_EAV(, A), descrito anteriormente, est relacionado ao
primeiro tipo de ataque (o adversrio conhece apenas textos cifrados) em criptossistemas de chave privada. Outras variantes deste experimento (para chave
privada, chave pblica e para diferentes tipos de ataque) e outras definies de
segurana sero apresentadas quando diferentes criptossistemas forem discutidos.

2.5.2

Probabilidade desprezvel

Precisaremos falar de criptossistemas onde o adversrio tem probabilidade desprezvel de sucesso, portanto definiremos desprezvel: informalmente, uma

notas de aula verso 79 - Jernimo C. Pellegrini

2.5. SEGURANA DEMONSTRVEL

27

funo dita desprezvel quando se aproxima de zero mais rpido que o recproco de qualquer polinmio.

Por exemplo,

in
ar

Definio 2.10 (Funo desprezvel). Uma funo f desprezvel se para todo


1
polinmio p() existe um N tal que para todos os inteiros n > N , f (n) < p(n)
.

f (n) = 21n desprezvel, porque para qualquer polinmio p, haver um N


1
a partir do qual 21n < p(n)
;
1
n5 .

H algum N a partir do

lim

1
no desprezvel: seja h(n) =
g(n) = n4 +100
qual h(n) < n14 .

Pr
e

importante observar que esta definio assinttica: no afirmamos nada


para valores de n menores que N .
No resto do texto ser comum encontrarmos funes desprezveis a partir do
seguinte raciocnio: para um parmetro n, um espao amostral tem tamanho
2n ; como supomos distribuio uniforme, a probabilidade de x dada por 21n ,
e encontramos uma funo desprezvel. Os espaos amostrais de tamanho 2n
normalmente so algo como todas as sequncias de n bits.
Denotaremos funes desprezveis arbitrrias por negl2 .
H duas propriedades importantes de funes desprezveis:
A soma de duas funes desprezveis tambm desprezvel;

A multiplicao de uma funo desprezvel por um polinmio uma funo


desprezvel.

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

Exemplo de definio de segurana

A definio 2.9 implica em sigilo perfeito, e nada presume a respeito do poder


computacional do adversrio. Relaxaremos estas restries para chegar a uma
definio de segurana mais til na prtica:
Apenas consideraremos adversrios executando algoritmos randomizados
que executam em tempo polinomial;
Admitiremos que o adversrio possa quebrar o sistema com probabilidade
desprezvel.

2 Usamos negl para manter a consistncia com textos em Ingls, onde tais funes so
chamadas de negligible.

notas de aula verso 79 - Jernimo C. Pellegrini

28

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

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

1. O adversrio A recebe uma entrada 1n e escolhe duas mensagens m0 e


m1 M que tenham o mesmo tamanho;
2. Uma chave k K gerada usando Gen(1n ), e um bit b escolhido aleatoreamente. Ento a mensagem mb cifrada e enviada para A;
3. A mostra b0 ;

Pr
e

4. Se b = b0 , o resultado do experimento 1 (e dizemos que A teve sucesso),


seno 0.
D

1n

m0 , m1

Ve
rs

k R { 0, 1 }
b R { 0, 1 }

b = b0 1
b 6= b0 0

Enck (mb )
b0

Requeremos que o adversrio execute em tempo polinomial em n.


Podemos ento dar uma definio de segurana contra ataques de texto
cifrado conhecido.
Definio 2.12 (Segurana contra ataque de texto cifrado conhecido). Um
criptossistema simtrico tem indistinguibilidade de texto cifrado na presena
de um grampo M se para todo adversrio A existe uma funo desprezvel negl
tal que,
1
Pr[PRIV_EAV(A, n) = 1] + negl(n).
2
Esta nova definio de segurana contra ataque de texto cifrado no implica
em sigilo perfeito, portanto podemos obt-la com criptossistemas onde |K| <
|M|.

notas de aula verso 79 - Jernimo C. Pellegrini

2.5. SEGURANA DEMONSTRVEL

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

5. Deve ser portvel, e seu uso no deve requerer a participao de vrias


pessoas;
6. Finalmente, necessrio, dadas as circunstncias de sua aplicao, que o
sistema seja fcil de usar, no exigindo esforo mental ou o conhecimento
de longas sequncias de regras a serem aplicadas.

Ve
rs

A Teoria da Informao foi desenvolvida inicialmente por Claude Shannon


em um artigo de 1948 [3] (e no livro de 1949 [4]). Shannon tambm desenvolveu
um modelo terico para comunicao com sigilo em outro artigo, em 1949 [5].
Embora o artigo de Shannon de 1948 seja bastante claro e acessvel, o livro de
Cover e Thomas [6] tambm muito boa introduo ao assunto, e cobre muitas
aplicaes modernas.
Na conferncia CRYPTO de 1999 Ueli Maurer apresentou um resumo de
conceitos relacionados a Teoria da Informao com aplicaes em Criptografia [7].
O one-time pad foi descrito inicialmente por Vernam em um artigo de 1926 [8]
(por isso tambm conhecido como cifra de Vernam), sem qualquer demonstrao de segurana; em 1949 Shannon definiu sigilo perfeito e mostrou que esta
uma propriedade da cifra de Vernam [5].
Embora o one-time pad isolado no seja til como criptossistema, usado no
desenvolvimento de diversas outras ferramentas, como esquemas de compartilhamento de segredos e negao plausvel importante portanto compreender
no apenas sua importncia terica, mas tambm conseguir reconhec-lo em
outras construes criptogrficas.
O desenvolvimento de construes com forte nfase em segurana demonstrvel iniciou com a publicao do criptossistema de Shafi Goldwasser e Silvio
Micali em 1982 [9].

notas de aula verso 79 - Jernimo C. Pellegrini

30

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

Exerccios
Ex. 5 Implemente o one-time pad.

Ex. 7 Prove a outra direo do o Lema 2.3.

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

Ex. 11 Considere o criptossistema a seguir (uma variante do one-time pad):


Construo 2.13 (Criptossistema furado).
Gen(1n ) seleciona uniformemente uma sequncia de bits em {0, 1}n ;
Enc(m, k) funciona da seguinte maneira: a mensagem m dividida em
blocos m0 , m1 , , mm de n bits. Cada bloco encriptado separadamente,
sendo que ci = mi k;
Dec(c, k) semelhante a Enc, mas permutando c e m.

a) Prove que o criptossistema funciona corretamente (ou seja, para todos k e


m, Dec(Enc(m, k), k) = m).

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.

Ex. 12 (Katz/Lindell) Prove ou refute: todo criptossistema onde as chaves


tem o mesmo tamanho (fixo) das mensagens e so escolhidas ao acaso tem sigilo
perfeito.

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

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

notas de aula verso 79 - Jernimo C. Pellegrini

32

CAPTULO 3. PROBLEMAS DIFCEIS

in
ar

Ou seja, dado um elemento x com tamanho n escolhido uniformemente


no domnio de f , todo polinmio positivo p() e todo n suficientemente
grande,


1
P r A(f (x), 1n ) f 1 (f (x)) <
p(n)

lim

A entrada 1n para A necessria porque no queremos classificar uma funo


como de mo nica apenas porque ela diminui muito sua entrada (queremos um
algoritmo polinomial em n, e no no tamanho de f (x)).
Usaremos em diversas situaes funes de mo nica que preservam o tamanho da entrada e que tem inversa. Estas so chamadas de permutaes de
mo nica.
Definio 3.2 (Permutao de mo nica). Uma funo de mo nica chamada de permutao de mo nica quando uma bijeo e preserva o tamanho
de sua entrada.

Pr
e

No se sabe se existem funes de mo nica. S podemos provar a existncia


de funes de mo nica condicionalmente: sabemos que elas devem se P =
6 N P,
ou se certas conjecturas forem verdadeiras. Assim, falaremos a seguir de funes
candidatas a mo nica.
Daremos tres exemplos de funes candidatas a mo nica:
A exponenciao modular, que mostraremos ser permutao de mo nica
(condicionada a uma conjectura);

A multiplicao de inteiros. Mostraremos que esta funo satisfaz uma


definio relaxada de funo de mo nica (condicionada a uma conjectura);

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)

seja de mo nica, com o parmetro de segurana sendo a quantidade de bits


usada para representar p.
1 ou

uma raiz primitiva mdulo p consulte o Apndice B.

notas de aula verso 79 - Jernimo C. Pellegrini

3.1. FUNES DE MO NICA

33

in
ar

A funo dexp computvel em tempo polinomial. Alm disso, preserva o


tamanho da entrada e uma bijeo. Dado y = dexp p,g (x), no conhecido
algoritmo eficiente (polinomial em p) para determinar x. Este problema (encontrar um elemento na pr-imagem de dexp (x)) conhecido como problema do
logaritmo discreto, e tem sido usado como base para construo de ferramentas
criptogrficas h muito tempo. Usaremos a hiptese de que no existam algoritmos eficientes para resolv-lo, e nos referiremos a tal hiptese como a hiptese
do logaritmo discreto 2 :

lim

Conjectura 3.4 (Dificuldade do Logaritmo Discreto). Para qualquer algoritmo


randomizado polinomial A, qualquer nmero x escolhido ao acaso em Zq , onde
||q|| = k o nmero de bits usados para representar q, e qualquer polinmio
positivo p(),
1
.
P r[A(p, g, dexp p,g (x)) = x] <
p(k)
Exemplo 3.5 (Fatorao de Inteiros). Dados dois primos p, q de tamanho n
bits, seja mult (p, q) = pq. Acreditamos que a mult seja uma funo de mo
nica, com o parmetro de segurana sendo n.

Pr
e

evidente que mult computvel em tempo polinomial. No conhecemos,


no entanto, algoritmo polinomial para determinar (p, q) a partir de pq. Usaremos
a hiptese de que tal algoritmo no exista, e nos referiremos a ela como a
hiptese da fatorao de inteiros 3 .
Conjectura 3.6 (Dificuldade da Fatorao de Inteiros). Para qualquer algoritmo randomizado polinomial A, quaisquer inteiros x, y com k bits cada, e
qualquer polinmio positivo p(),

P r[A(xy) = (x, y)] <

1
.
p(k)

Ve
rs

Exemplo 3.7 (Soma de Subconjuntos). Dados n inteiros x1 , , xn e uma


descrio de um subconjunto deles, a funo somasub retorna o somatrio dos
elementos do subconjunto.
X
somasub(x1 , x2 , , xn , S) = (x1 , x2 , , xn ,
xi )
iS

Determinar o subconjunto S a partir dos elementos xi e da soma um problema


N P-completo, e tambm acreditamos que esta funo seja de mo nica.

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

logarithm assumption em Ingls.


factorization assumption nos textos em Ingls.

notas de aula verso 79 - Jernimo C. Pellegrini

34

CAPTULO 3. PROBLEMAS DIFCEIS

3.1.1

in
ar

casos somente no conhecemos algoritmos eficientes para as piores instncias


de problemas N P-completos. Cremos que o problema da soma de subconjuntos
seria um bom candidato no por ser N P-completo, mas por no conhecermos
algoritmos eficientes para resolv-lo.

Funes fracamente de mo nica

A definio de funo de mo nica dada anteriormente pode ser relaxada para


que possamos encontrar funes de mo nica mais facilmente. Ao invs de
exigir que adversrios consigam elementos da pr-imagem com probabilidade
desprezvel, tentaremos agora exigir que um adversrio polinomial falhe com
probabilidade no desprezvel.

lim

Definio 3.8 (Funo de mo nica fraca). Uma funo f fracamente de


mo nica se:

1. Fcil de computar: Existe um algoritmo de tempo polinomial que computa


f;

Pr
e

2. Ligeiramente difcil de inverter: Para todo algoritmo A randomizado de


tempo polinomial, todo polinmio positivo p() e todo n suficientemente
grande,


1
P r A(f (x), 1n )
/ f 1 f (x)) >
p(n)
Com esta definio podemos mostrar que mult , por exemplo, de mo nica.
Lema 3.9. Para k suficientemente grande, a probabilidade de um nmero com
k bits escolhido ao acaso seja primo maior que 1/k.

O Exerccio 14 pede uma demonstrao deste Lema.

Ve
rs

Teorema 3.10 (mult de mo nica). A funo mult fracamente de mo


nica se a hiptese da fatorao de inteiros for verdadeira.
Demonstrao. (Rascunho) De acordo com o Lema 3.9 a probabilidade de um
nmero de k bits escolhido aleatoreamente ser primo 1/k. Se escolhermos dois
nmeros, a probabilidade de ambos serem primos (1/k)2 . Como (1/k)2 uma
poro no-desprezvel da quantidade total das instncias de mult , temos que
com probabilidade no-desprezvel ambos os nmeros so primos, e portanto
difceis de inverter (pela hiptese da fatorao de inteiros).
O seguinte Teorema, apresentado sem prova, nos diz que apesar de parecer
que a existncia de funes de mo nica fracas mais plausvel que a existncia
das fortes, as duas possibilidades de existncia so equivalentes.
Teorema 3.11. Funes de mo nica fortes existem se e somente se funes
de mo nica fracas existem.

notas de aula verso 79 - Jernimo C. Pellegrini

3.2. PREDICADOS HARD-CORE

3.2

35

Predicados hard-core

lim

in
ar

Embora em primeira anlise possa parecer que funes de mo nica sejam


seguras o suficiente para que as usemos no desenvolvimento de ferramentas
criptogrficas, h ainda um problema a ser tratado.
Suponha que em um leilo um participante envie seu lance encriptado, e que
o algoritmo para encriptao use uma funo de mo nica. Sabemos que no
deve haver maneira eficiente de obter o valor do lance, mas isso no significa
que no possamos descobrir outras coisas sobre a mensagem que foi encriptada.
Por exemplo, poderamos tentar descobrir se o valor maior que um certo
nmero (que no caso do leilo seria uma falha grave), ou a paridade do valor
etc. Trataremos agora de como evitar estes problemas.
Um predicado b hard-core de uma funo f se qualquer algoritmo probabilstico polinomial que calcule b(x) a partir de f (x) tiver probabilidade de
sucesso perto de 1/2.
Definio 3.12 (Predicado Hard-Core). H : {0, 1} {0, 1} um predicado
hard-core de uma funo f se
i) H um algoritmo polinomial para computar H(x);

Pr
e

ii) Para qualquer algoritmo randomizado polinomial A e x escolhido ao acaso,


P r[A(f (x)) = H(x)]

1
+ negl(k),
2

onde k o nmero de bits de x.

Quando um predicado hard-core consiste em determinar se um certo bit da


entrada igual a um, dizemos que aquele um bit hard-core.

Ve
rs

O prximo Teorema mostra que a possibilidade de computar algo a respeito


de uma funo de mo nica no apenas terica: realmente possvel computar
um dos bits de x dado dexp p.g (x).
Teorema 3.13. Dado dexp p,g (x), possvel computar lsb (x) em tempo polinomial em p.
Demonstrao. O seguinte algoritmo computa lsb (x) dado y = dexp p,g (x):
calcule c = y (p1)/2 (mod p). Se c = 1, pelo critrio de Euler (Teorema B.38),
a resduo quadrtico mdulo p. Alm disso, pelo Lema B.37, se y resduo
quadrtico mdulo p, x par e o algoritmo deve retornar zero. Se c 6= 1, o
algoritmo deve retornar um (porque y no resduo quadrtico e c no par).
O algoritmo claramente polinomial.
Exemplo 3.14. Sejam p = 41 e g = 6 (que raiz primitiva mdulo 41). Calculamos dexp p,g (14) (mod 41) = 21. Agora, dado que temos apenas p = 41 e o va411
lor computado 21, calculamos c = 21 2 (mod 41) = 278218429446951548637196401
(mod 41) 1 (mod 41), e o bit zero (de fato, 14 par!).

notas de aula verso 79 - Jernimo C. Pellegrini

36

CAPTULO 3. PROBLEMAS DIFCEIS

in
ar

Usando os mesmos p e g, tentamos agora x = 31: temos dexp p.g (31) 13


411
(mod 41). Tendo agora apenas p = 41 e o valor 13, calculamos c = 13 2
(mod 41) = 19004963774880799438801 40 (mod 41) e determinamos que x
mpar.
O Lema a seguir usado na demonstrao de que dexp tem um bit hard-core.
Lema 3.15. Se p primo e x resduo quadrtico mdulo p h um algoritmo
probabilstico polinomial para calcular as duas razes quadradas de x mdulo p.
A demonstrao do Lema no ser dada.

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)

notas de aula verso 79 - Jernimo C. Pellegrini

3.3. PREDICADOS HARD-CORE PARA QUAISQUER FUNES DE MO NICA37

in
ar

se msb (x) = 0
y r1
senao
y r2
ii+1
retorne (xi , xi1 , , x0 )

Predicados hard-core para quaisquer funes


de mo nica

lim

3.3

Na Seo anterior mostramos que um determinado bit hard-core para dexp .


Na verdade podemos criar predicados hard-core para qualquer funo de mo
nica.

Pr
e

Teorema 3.17. Seja f uma funo fortemente de mo nica, e seja g(x, r) =


(f (x), r), onde x e r tem tamanho igual a k bits cada um, e r escolhido ao
acaso. Ento,
k
def X
xi ri (mod 2)
H(x, r) =
i=1

(ou seja, o produto interno de x e r quando interpretados como vetores de bits4 )


um predicado hard-core para g.

Ve
rs

Notas

A funo H faz o ou-exclusivo de um subconjunto dos bits de x (determinado


pelos bits um de r).

A demonstrao dos Teoremas 3.11 e 3.17 podem ser encontradas no livro de


Goldreich [10].

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

alguns casos usa-se a notao

Lk

i=1

xi ri .

notas de aula verso 79 - Jernimo C. Pellegrini

38

CAPTULO 3. PROBLEMAS DIFCEIS

Ex. 16 Na demonstrao do Teorema 3.16, no mostramos que o algoritmo


roda em tempo polinomial. Mostre um argumento muito simples que no deixe
dvida a respeito disso.

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

Tome cuidado de determinar como a entrada ser representada, qual exatamente


sero o domnio e o contradomnio (que devem ambos ser finitos, uma vez que
s nos interessam funes que possamos implementar), e qual ser o parmetro
de segurana n usado para determinar que a funo de mo nica.
Se no conseguir construir a funo, explicite claramente o motivo.
Em seguida responda:
i) Alguma delas permutao de mo nica?
ii) Se o problema subjacente numrico, h algoritmo pseudopolinomial para
ele. Isso representa um problema para sua funo de mo nica?
iii) Pesquise o problema e verifique se h para ele algoritmos aproximados.
Qual a consequncia para sua funo de mo nica?

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.

Ex. 20 (Talbot/Welsh) Um primo da forma p = 4k+3 chamado de primo


de Blum. Presumindo que aproximadamente metade de todos os primos com k
bits so so primos de Blum, mostre que se a conjectura da fatorao de inteiros
for verdadeira (ou seja, se fatorar inteiros for difcil), no deve haver algoritmo
eficiente para fatorar inteiros que sejam produto de dois primos de Blum.

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 4

lim

Geradores Pseudoaleatreos e
Cifras de Fluxo

Geradores pseudoaleatreos

Ve
rs

4.1

Pr
e

A aleatoriedade parte fundamental da Criptografia usada na construo


de praticamente todas as tcnicas criptogrficas de que trataremos. O exemplo
mais claro talvez seja o das cifras de fluxo, mencionadas brevemente na Seo 1.1.
As cifras de fluxo emulam, de maneira imperfeita, o one-time pad. A parte
mais importante de seu funcionamento, ento, consiste em gerar uma sequncia
de nmeros pseudoaleatreos. Alm das cifras de fluxo, essencial tambm
que chaves sejam geradas com distribuio uniforme sobre o espao de chaves
(senhas digitadas por usurios no so seguras). Isto importante porque as
garantias de segurana dos algoritmos criptogrficos dependem da distribuio
uniforme das chaves. H tambm outros usos de aleatoriedade em Criptografia,
que sero discutidos ao longo do texto: em diversas situaes necessrio usar
nmeros ou elementos no previsveis por um adversrio.

Conceitualmente, um gerador pseudoaleatreo uma funo que recebe como


entrada (a semente) uma sequncia de bits de tamanho k e gera como sada
outra sequncia de bits de tamanho l(k) > k.
semente

10111010

bits gerados
11000101 ... 110001010100111010100

Um gerador pseudoaleatreo de bits para aplicao em Criptografia deve


ter a propriedade de ser difcil de distinguir de uma sequncia completamente
aleatrea. Precisamos de algumas definies relacionadas s distribuies de
variveis aleatreas.
39

notas de aula verso 79 - Jernimo C. Pellegrini

40CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

in
ar

Pretendemos construir geradores de sequncias de bits, e h propriedades que


queremos identificar na distribuio desses bits. Suponha que exista uma regra
ou algoritmo que, dado um nmero n, seleciona uma cadeia de bits de tamanho
n. Damos o nome X1 distribuio dos bits dada pela regra para um bits,
X2 distribuio para dois bits, e Xn para a sequncia geral de distribuies.
Definimos ento uma famlia de distribuies.
Definio 4.1 (Famlia de distribuies). Uma sequncia { X1 , X2 , . . . , Xn , . . . }
n
de distribuies sobre cadeias { 0, 1 } uma famlia de distribuies1 .
Se x tem n bits e foi selecionado de acordo com a distribuio Xn , denotamos
x Xn .

lim

Quando estudamos dois algoritmos que geram bits, estamos interessados na


distribuio de suas sadas. Dizemos que duas famlias A e B de distribuies
(geradas por dois algoritmos) so estatisticamente prximas quando, para n
suficientemente grande, cadeias com n bits tem quase a mesma probabilidade
de pertencer a A ou a B. isto definido rigorosamente a seguir.

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

no desprezvel em n. Claramente, o somatrio sobre todas as cadeias


n
e { 0, 1 } .

Ve
rs

Se quisermos distinguir entre cadeias geradas por Xn e Yn estatisticamente


prximas, podemos obter cadeias suficientes para faz-lo (no mximo precisaremos obter todas as cadeias de n bits para cada uma das distribuies: 2(2n )).
Este algoritmo, no entanto, teria complexidade de tempo exponencial.
Diferenciaremos agora distribuies que podem ser identificadas (distinguidas) em tempo polinomial, e aquelas que no podem.
O Experimento 4.3 (DISTRIB_DISTINGUISH) testa duas distribuies e um
teste que tenta distingui-las. De maneira resumida, neste experimento escolhemos uma cadeia de uma ou de outra distribuio (com probabilidade 1/2 para
cada distribuio) e enviamos ao teste T para que tente decidir de qual distribuio a cadeia foi sorteada. Este teste T representa qualquer programa que
rode em tempo polinomial tentando distinguir uma sequncia de bits, determinando se foi gerada de acordo com a distribuio Xn ou com a distribuio Yn
(Por exemplo, T pode executar algum teste estatstico).
Experimento 4.3 (DISTRIB_DISTINGUISH(A, Xn , Yn )).
1. Escolha s0 Xn e s1 Yn

2. Sorteie um bit aleatoreamente (b R { 0, 1 })

1 Distribution

ensemble em Ingls. Algumas vezes usa-se probability variable ensemble


(famlia de variveis aleateras).

notas de aula verso 79 - Jernimo C. Pellegrini

4.1. GERADORES PSEUDOALEATREOS

41

3. Envie si para A

5. Se b = b0 o resultado do experimento 1; seno 0.


A Figura a seguir ilustra o experimento.
D
s0 Xn
s1 Yn
b R { 0, 1 }

b0

b = b0 1
b 6= b0 0

lim

sb

in
ar

4. Receba b0 de A

Pr
e

Definimos ento que duas famlias de distribuies so computacionalmente


indistinguveis se a probabilidade de sucesso de T neste experimento prxima
de 1/2.
Definio 4.4 (Famlias de distribuies computacionalmente indistinguveis).
Duas famlias de distribuies Xn e Yn so computacionalmente indistinguveis
se para todo algoritmo polinomial T e n suficientemente grande, existe uma
funo desprezvel negl() tal que
1
+ negl(n).
2

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.

Definio 4.5 (Famlias de distribuies computacionalmente indistinguveis).


Duas famlias de distribuies Xn e Yn so computacionalmente indistinguveis
se para todo algoritmo polinomial D e n suficientemente grande, existe uma
funo desprezvel negl() tal que




Pr [D(u) = 1] Pr [D(u) = 1] negl(n).


uXn

uYn

Quando duas distribuies An e Bn so computacionalmente indistinguveis,


denotamos An Bn .

Exemplo 4.6 (Sequncias de bits estatisticamente distantes). Suponha que


queiramos construir um algoritmo que gera bits aleatreos a partir de um inteiro
k. Decidimos usar uma sequncia usando nmeros de Fibonacci: para gerar

notas de aula verso 79 - Jernimo C. Pellegrini

42CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

in
ar

uma sequncia de l bits, calculamos os l primeiros nmeros de Fibonacci Fk ,


Fk+1 , . . . , Fk+l . Usamos o i-simo nmero de Fibonacci para determinar o isimo bit da sequncia Bn : para l bits, calcula-se b1 , b2 , . . . , bl de maneira que
(
0 se Fk+i par
bi =
1 se Fk+i mpar.
Por exemplo, escolhemos k = 10 e geramos uma sequncia com 8 bits:
= 55 ( 1)
= 89 ( 1)
= 144 ( 0)
= 233 ( 1)

F14
F15
F16
F17

=
=
=
=

377 ( 1)
610 ( 0)
987 ( 1)
1597 ( 1)

lim

F10
F11
F12
F13

Pr
e

Temos ento a sequncia 11011011.


No entanto, esta sequncia facilmente distinguvel da distribuio uniforme
(e portanto no podemos us-la para fins criptogrficos).
Como h duas vezes mais nmeros de Fibonacci mpares do que pares, a
probabilidade de uma sequncia com muitos uns pertencer a Bn maior2 do
que a probabilidade da mesma sequncia pertencer a An . Para a sequncia
s = 1111 . . . 1 (n bits iguais a um), temos
  
 
1
1
1
1
Pr[s An ] =
...
= n.
2
2
2
2
  
 
2
2
2
2n
Pr[s Bn ] =
...
= n.
3
3
3
3
A diferena entre as duas probabilidades no desprezvel.

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.

A segunda exigncia da Definio 4.7 muitas vezes exposta da seguinte


forma: a sada de um gerador pseudoaleatreo deve passar por todos os possveis testes (de tempo polinomial) estatsticos.
impossvel, no entanto, que um gerador pseudoaleatreo gere sequncias
com distribuio uniforme sobre todas as possveis sequncias de um dado comprimento.
Teorema 4.8. A sada de um gerador pseudoaleatreo de bits no pode ter
distribuio uniforme.
2 H

duas vezes mais nmeros de Fibonacci mpares do que pares.

notas de aula verso 79 - Jernimo C. Pellegrini

4.2. GERADORES COM FUNES DE MO NICA

43

in
ar

Demonstrao. Considere um gerador G com l(n) = 2n (ou seja, G dobra o


tamanho de sua entrada). Porque sua entrada tem n bits, ele poder gerar 2n
sequncias diferentes apenas (mesmo que a sada tenha 2n bits). De todas as
22n sequncias possveis com 2n bits, G somente produzir uma pequena parte:
h 22n 2n sequncias que G nunca sero geradas.
Assim, como a sada de G de tamanho 2n, mas h somente 2n sadas
possveis, teremos probabilidade 2n para cada algumas sequncias de bits e
zero para outras.

Pr
e

lim

No entanto, nossa definio no exige que o gerador produza sequncias com


distribuio uniforme. Queremos apenas que os bits gerados sejam indistinguveis em tempo polinomial da distribuio uniforme.
Um adversrio poderia enumerar todas as sadas de G, enumerar todas as
possveis sequncias de 2n bits e encontrar uma sequncia de 2n bits que G
nunca produz. No entanto, este algoritmo exponencial (tem complexidade
O(22n ) porque enumera todas as sequncias possveis).
Fica evidente que o tamanho da semente importante: se ela for muito
pequena, um atacante poder realizar o ataque mencionado.
Outra maneira de caracterizarmos a qualidade de um gerador pseudoaleatreo apropriado para criptografia exigirmos que no seja fcil determinar o
prximo bit de uma sequncia a partir dos anteriores.
Definio 4.9 (Teste do prximo bit). Um gerador G passa pelo teste do
prximo bit se e somente se no existe algoritmo polinomial que, a partir dos k
primeiros bits de uma sequncia gerada por G, possa predizer o bit k + 1 com
probabilidade maior que 1/2 + negl(k).
As duas caracterizaes de gerador pseudoaleatreo para Criptografia so
equivalentes.

Teorema 4.10 (de Yao). Um PRG G pseudoaleatreo se e somente se passa


pelo teste do prximo bit.

Ve
rs

O leitor poder facilmente verificar que o gerador do exemplo 4.6 no passaria


no teste do prximo bit.

4.2

Geradores com Funes de Mo nica

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

notas de aula verso 79 - Jernimo C. Pellegrini

44CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO


O Teorema a seguir garante que podemos aumentar o resultado de f (x) em
um bit, e o resultado ser ainda indistinguvel de uma cadeia gerada ao acaso.

in
ar

Teorema 4.11. Seja f uma permutao de mo nica com predicado hard-core


H. Ento
def
G(x) = (f (x), H(x))
um gerador pseudoaleatreo.

lim

Demonstrao. (Rascunho) Se x for escolhido uniformemente dentre as cadeias


de bits com tamanho k, como f uma permutao, f (x) tambm ter distribuio uniforme sobre as cadeias de tamanho k, e um adversrio no ter
como distinguir os valores de f (x) de uma distribuio uniforme. Alm disso, a
probabilidade do bit hard-core ser 1 1/2, donde conclumos que (f (x), H(x))
indistinguvel de uma sequncia de bits gerada ao acaso com probabilidade
uniforme.
O Teorema 4.11 nos d apenas geradores que aumentam em um bit o tamanho da semente. possvel construir geradores que aumentam arbitrariamente
a semente:

Pr
e

Teorema 4.12. Seja f uma permutao de mo nica para entrada de tamanho


k bits, com predicado hard-core H. Ento, dado um polinmio p(.),
def

G(x) = (H(f (x)), H(f 2 (x)) , H(f p(k)1 (x)))


um gerador pseudoaleatreo.

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

Construo 4.13 (Gerador de Blum-Micali). Seja p um primo grande; g uma


raiz primitiva mdulo p; e x0 (a semente) um inteiro.
O i-simo bit gerado bi :
xi

g xi1

bi

msb (xi ).

(mod p)

Teorema 4.14 (Blum-Micali seguro). O gerador de Blum-Micali seguro (ou


seja, um gerador pseudoaleatreo de acordo com a Definio 4.7).
Demonstrao. Como o algoritmo implementa exatamente a mesma construo
G definida no Teorema 4.12, conclumos imediatamente que Blum-Micali um
gerador pseudoaleatreo.
Outro gerador pseudoaleatreo mostrado a seguir.

notas de aula verso 79 - Jernimo C. Pellegrini

4.3. GERAO DE NMEROS PSEUDOALEATREOS

45

4.3

xn

x2n1

bi

lsb (xi ).

(mod m)

in
ar

Construo 4.15 (Gerador de Blum-Blum-Shub). Sejam p e q dois primos


grandes com p, q 3 (mod 4), e seja m = pq. Uma raiz x0 escolhida que seja
diferente de um, de p e de q.
O i-simo bit gerado bi :

Gerao de nmeros pseudoaleatreos

Ve
rs

Pr
e

lim

Embora a gerao de sequncias de bits pseudoaleatreos seja imediatamente


til (j so suficientes para a construo de cifras de fluxo, descritas na Seo 4.5), h tambm casos em que queremos produzir nmeros (inteiros ou
naturais) pseudoaleatreos.
Quando queremos um nmero entre 0 e 2k 1 podemos simplesmente gerar
uma cadeia de k bits e interpret-la como nmero na base dois. Isso preserva a
distribuio, porque h 2k nmeros que podem ser gerados, e ao interpret-los
como inteiros determinamos uma bijeo entre as cadeias de bits e os nmeros.
No entanto, podemos querer gerar nmeros entre 0 e n 1, para qualquer n
natural. Seja k o menor nmero possvel de bits necessrio para representar o
nmero n em base dois ou seja, blog2 (n)c. Seja G um gerador pseudoaleatreo
de bits. H 2k strings de k bits que podem ser geradas por G. Como queremos
escolher um dentre n nmeros, h strings entre n e 2k 1 que no podem ser
usadas. Se tentarmos interpretar estas cadeias usando mdulo n, a distribuio
no ser mais uniforme. Temos ento que ignorar estas strings, e gerar um novo
nmero quando elas forem encontradas. Esta ideia detalhada no algoritmo a
seguir.
random_natural(G, n):
k log2 (n)
repita
s prximos k bits de G
interprete s como x
at que x < n
retorne x

Teorema 4.16. Se G tem sada com distribuio uniforme, random_natural(G, n)


produz nmeros uniformemente distribudos entre 0 e n 1.
Teorema 4.17. Se G um gerador pseudoaleatreo e n um nmero natural, o
algoritmo random_natural(G, n) tem tempo de execuo O(log(n)).

4.4

Geradores com Heursticas

Geradores baseados em funes candidatas a mo nica como exponenciao ou


quadrado modulares so lentos, porque envolvem aritmtica modular com n-

notas de aula verso 79 - Jernimo C. Pellegrini

46CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

Propriedades de Sequncias Pseudoaleatreas

Pr
e

4.4.1

lim

in
ar

meros grandes (muito maiores do que o tamanho de palavra de computadores).


Quando a gerao de bits deve ser muito rpida, podemos abrir mo das garantias dos mtodos com demonstrao de segurana. Usamos, ento, heursticas
que nos do alguma confiana nas sequncias geradas.
Ao invs de demonstrar que no se pode (a no ser implicando em algoritmo
eficiente para um problema presumidamente difcil) prever o prximo bit da
sequncia, relaxamos este requisito e construmos geradores que geram sequncias que, tanto quanto podemos verificar, so indistinguveis por todos os testes
estatsticos de sequncias aleatreas. Isso significa que (i) h baterias de testes
estatsticos s quais um gerador de bits pode ser submetido para verificar se
pode ser usado em aplicaes de Criptografia e (ii) devemos identificar propriedades desejveis em sequncias de bits que possam ser usadas como guia na
elaborao de geradores que passem por tais testes. importante frisar que
estes testes e propriedades no do a mesma garantia que os mtodos baseados
em funes de mo nica. Por exemplo, um gerador pode ter como sada diversas sequncias que passam todos os testes conhecidos hoje, mas isso no garante
nada a respeito de novos testes estatsticos, e no garante tampouco que este
gerador no possa produzir sequncias com vis, dependendo da semente usada.

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.

Definio 4.18 (Perodo de sequncia). O perodo de uma sequncia X o


menor inteiro p tal que xi = xi+p , para i suficientemente grande.

Ve
rs

Por exemplo, o perodo da sequncia 011011011 trs, o da sequncia


00101010 dois (o padro 10 se repete depois de i = 2) e o da sequncia
01101001 oito.
Definio 4.19 (Subsequncia constante). Seja X uma sequncia. Uma subsequncia xl , . . . xm de X constante se xi = xj para quaisquer l i, j m.
Definio 4.20. Seja X uma sequncia de bits com perodo p. Sejam A(k) a
quantidade de posies i tal que xi = xi+k e D(k) a quantidade de posies
onde isso no acontece:
A(k)

= |{i : xi = xi+k }|

D(k)

= |{i : xi 6= xi+k }|.

A autocorrelao com deslocamento k para X


A(k) D(k)
.
p

notas de aula verso 79 - Jernimo C. Pellegrini

4.4. GERADORES COM HEURSTICAS

47

x0

6=

x1

x2

6=

x3

x3

6=

x4

x4

6=

x5

x7

6=

x8

in
ar

Exemplo 4.21. Considere a sequncia X = 100101110. Calculamos a autocorrelao para k = 1. Temos

e portanto A(1) = 5, D(1) = 3 e a autocorrelao para k = 1 2/9.


Enunciamos agora os postulados de Golomb.

lim

G1 ) A diferena entre a quantidade de zeros e uns na sequncia deve ser no


mximo um.

G2 ) O nmero de subsequncias constantes de um dado comprimento deve ser


o mesmo para uns e para zeros. Alm disso, se o nmero de subsequncias
constantes de comprimento k m, o nmero de subsequncias constantes
para comprimento k + 1 deve ser m/2.

Pr
e

G3 ) A autocorrelao para deslocamentos diferentes de zero deve ser sempre a


mesma, independente do valor do deslocamento.

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 .

3 Registradores de deslocamento so implementados em hardware como uma sequncia de


flip-flops, com a sada de um alimentando a entrada de outro, como ilustra a figura abaixo.

notas de aula verso 79 - Jernimo C. Pellegrini

48CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

in
ar

Como descreveremos algoritmos que operam nestes registradores, nossa viso


deles ser a de um vetor de variveis binrias (aqui usamos vetor como objeto
mutvel, usado em algoritmos, e no como objeto matemtico abstrato). A
operao de deslocamento funciona da seguinte maneira:
cada bit movido uma posio para a direita; o bit que estava mais
direita removido e usado como sada do registrador;

um novo bit (o bit de entrada) gravado sobre a posio mais esquerda.

Pr
e

lim

A Figura a seguir ilustra o funcionamento de um registrador de deslocamento:


na parte superior da figura est representado o estado anterior do registrador,
igual a 0011011101; na parte inferior, a operao de deslocamento com entrada
igual a zero (a sada ser o ltimo bit do estado, que igual a um).

A sada de um registrador de deslocamento serial se apenas o ltimo bit


usado. Se mais de um bit usado, a sada dita paralela.
Definio 4.22 (Registrador de deslocamento linearmente realimentado). Um
registrador de deslocamento dito linearmente realimentado se seu bit de entrada uma funo linear de seus bits de estado.

Em outras palavras, se o estado interno de um registrador tem l bits ento


seu estado inicial sl1 , sl2 , . . . , s0 , e para i l o i-simo bit determinado
pela funo linear
si = c1 si1 + c2 si2 + + cl sil

(mod 2),

Ve
rs

onde os coeficientes cj podem ser um ou zero.


Em outras palavras, uma funo linear determina o prximo bit de entrada
a partir do estado atual.
A funo que determina o bit de entrada a partir dos bits do estado a
funo de feedback, ou funo de realimentao. Abreviamos registrador de
deslocamento linearmente realimentado por LFSR (linear feedback shift register).

notas de aula verso 79 - Jernimo C. Pellegrini

4.4. GERADORES COM HEURSTICAS

49

O polinmio 1 + c1 x + +cl xl chamado de polinmio de conexo do LFSR.

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

Definio 4.25 (Complexidade linear de sequncia). Seja S uma sequncia de


bits.
Se S finita e de comprimento |S|, a complexidade linear de S o comprimento do menor LFSR que gera,para alguma semente, uma sequncia
cujos |S| primeiros bits formam a sequncia S.
Se S infinita e s contm zeros, a complexidade linear de S zero.
Se S infinita, diferente de zeros, e pode ser gerada por um LFSR, sua
complexidade linear a do menor LFSR que gera S.

Se S no pode ser gerada por um LFSR, complexidade linear de S .

4 Porque

a b o mesmo que a + b (mod 2), e a funo mostrada a mesma que


si = si2 + si5 + si6 + si8

(mod 2).

notas de aula verso 79 - Jernimo C. Pellegrini

50CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO


Teorema 4.26. Uma sequncia de perodo k no tem complexidade linear maior
do que k.

lim

berlekampmassey(s, n):
b(x) 1
c(x) 1
L0
m 1

in
ar

O algoritmo de Berlekamp-Massey determina a complexidade linear de uma


sequncia finita.
Na descrio do algoritmo, b() e c() so polinmios (o pseudocdigo no
mostra detalhes da implementao destes pode-se usar vetores, por exemplo).
Denotamos b(x)xN m a multiplicao do polinmio b(x) pelo termo xN m .

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.

Teorema 4.28. Se o polinmio de conexo de um LFSR primitivo e tem


grau igual ao tamanho do LFSR (ou seja, tem cl = 1), ento este LFSR de
comprimento mximo.

notas de aula verso 79 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

51

Usando LFSRs

4.4.2

Testes Para Sequncias de Bits

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

(Esta Seo no est completa)


H muitos testes que podem ser utilizados para tentar distinguir uma sequncia de bits aleatreos. Esta Seo descreve apenas alguns deles.
Observamos que passar em uma bateria de testes uma condio necessria
para um gerador pseudoaleatreo, mas de forma alguma suficiente!
Alm de verificar a complexidade linear da sequncia e testar os postulados de Golomb, h outros testes que podem ser usados para verificar se uma
sequncia no pseudoaleatrea.

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

Adaptaremos a Definio 2.12 para que contemple a possibilidade de envio de


vrias mensagens.
Experimento 4.29 (PRIV_MULT(, A, n)).
1. O adversrio A recebe uma entrada 1n , e devolve duas sequncias de
mensagens, M0 = (m10 , m20 , , mt0 ) e M1 = (m11 , m21 , , mt1 );
2. Uma chave k gerada usando Gen(1n ), e um bit b escolhido aleatoreamente. Ento todas as mensagens da sequncia Mi so encriptadas,
resultando na sequncia Enck (Mb ) = (c1 , c2 , , ct ) onde ci = Enck (mib ).
Esta sequncia Enck (Mb ) enviada para A;

notas de aula verso 79 - Jernimo C. Pellegrini

52CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO


3. A envia b0 ;

1n
M0 = (m10 , m20 , )
M1 = (m11 , m21 , )
Enck (mb )

lim

b R {0, 1}
k R {0, 1}n

in
ar

4. Se b = b0 , o resultado do experimento 1 (e dizemos que A teve sucesso),


seno 0.

b0

Pr
e

b=b 1
b 6= b0 0

O adversrio novamente tem eu tempo de execuo restrito a um polinmio


em n.
Definio 4.30 (Segurana contra ataque de mltiplos textos cifrados conhecidos). Um criptossistema simtrico tem indistinguibilidade de mltiplos textos
cifrados na presena de grampo M se para todo adversrio A existe uma funo
desprezvel negl tal que,

Pr[PRIV_MULT(, A, n) = 1]

1
+ negl(n).
2

Ve
rs

onde a probabilidade sobre as moedas usadas por A, para a escolha do bit b


e usadas por Enc.
Damos agora um exemplo de criptossistema que seguro de acordo com a
Definio 2.12, mas no de acordo com a Definio 4.30.
Construo 4.31. Seja G um gerador pseudoaleatreo com fator de expanso
p(.). O seguinte criptossistema simtrico construdo sobre G:
Gen: dado 1n , escolha uma chave k {0, 1}n com probabilidade uniforme;
Enc(k, m) = G(k) m, desde que tanto k como m tenham k bits;
Dec(k, c) = G(k) c, desde que tanto k como c tenham k bits.

Teorema 4.32. O Criptossistema descrito na Construo 4.31 seguro de


acordo com a Definio 2.12.

notas de aula verso 79 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

53

f (n) = Pr[PRIV_EAV(, A, n) = 1] 1/2

in
ar

Demonstrao. Seja o criptossistema da Construo 4.31. Mostraremos que


a existncia de um adversrio que possa distinguir as mensagens no experimento 2.8 (usado na Definio 2.12) com probabilidade maior que a dada na
Definio 2.12, teramos um algoritmo para distinguir os bits gerados por G de
bits aleatreos com distribuio uniforme.
Seja A um adversrio rodando em tempo polinomial, e seja

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 ;

4. Ao invs de Enc(k, mb ) = k mb , d c a A ou seja, ao invs de enviar a


mensagem cifrada com uma chave gerada por Gen, use s como se fosse a
chave. Obtenha a sada b0 , e retorne 1 se b = b0 , ou zero em caso contrrio.
Este experimento ilustrado a seguir.

Ve
rs

b R {0, 1}
c s mb

1n
m0 , m1
c

b0

b = b0 1
b 6= b0 0

A figura no diz como s obtido, e isso intencional: trataremos a seguir


de duas maneiras de obter s.
Primeiro, se s for obtida ao acaso uniformemente do espao amostral {0, 1}p(n) ,
teremos que a chaves usadas para cifrar as mensagens so escolhidas com distribuio uniforme exatamente como seria se tivssemos usado o one-time pad

notas de aula verso 79 - Jernimo C. Pellegrini

54CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO


ao invs de enviar c para A, e
1
.
2

in
ar

Pr[T (s) = 1] = Pr[PRIV_EAV(, A, n) = 1] =

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

Temos ento que se houvesse um adversrio A que obtivesse sucesso f (n)


(que supomos no desprezvel) no experimento PRIV_EAV(, A, n), teramos
tambm um algoritmo (T ) para distinguir a sada de G de bits aleatreos, com
a mesma probabilidade de sucesso. Como G pseudoaleatreo, tal adversrio
no pode existir.

Pr
e

Proposio 4.33. O Criptossistema descrito na Construo 4.31 no seguro


de acordo com a Definio 4.30.
Demonstrao. No Experimento 2.11 (usado na Definio 4.30) o adversrio
A escolhe duas sequncias de duas mensagens, M0 = (0n , 0n ), M1 = (0n , 1n ).
Ao receber a sequncia de mensagens cifradas C = (c1 , c2 ), o adversrio pode
simplesmente verificar se c1 = c2 (neste caso sabe que a sequncia encriptada
M1 ) ou no (e portanto a sequncia deve ser M2 ).

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).

Esta sequncia adicional de bits chamada de vetor de inicializao, e enviada


junto com o texto cifrado, em claro. Para decifrar, fazemos
Deck (iv, c) = G(k, iv) c.

A Construo a seguir uma cifra de fluxo construda usando esta ideia.

notas de aula verso 79 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

55

Construo 4.35. Seja G um gerador pseudoaleatreo com fator de expanso


p(.). O seguinte criptossistema simtrico construdo sobre G:

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).

Ataques de Texto Claro Escolhido

lim

4.5.2

Consideramos agora a situao em que o adversrio tem acesso limitado funo


Enc: pode cifrar mensagens vontade, mas no tem a chave k (suponha por
exemplo que o adversrio possa convencer algum a cifrar para ele mensagens
usando k).

Pr
e

Experimento 4.36 (PRIV_CPA(, A, n)).


1. Uma chave k gerada por Gen(1n );

2. O adversrio recebe a entrada 1n e, podendo cifrar mensagens com Enck ,


nos devolve duas mensagens m0 e m1 , ambas de mesmo tamanho;
3. Um bit b escolhido aleatoreamente, e a mensagem correspondente encriptada: c = Enck (mb ). Este texto cifrado (o desafio) enviado a A;

4. A, ainda podendo usar Enck , responde um bit b0 ;

Ve
rs

5. O resultado do experimento um se b = b0 e zero em caso contrrio.


D

b R {0, 1}
k { 0, 1 }

b=b 1
b 6= b0 0

AEnck

1n
m0 , m1
Enck (mb )

b0

notas de aula verso 79 - Jernimo C. Pellegrini

56CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO


Definio 4.37 (Segurana contra ataque de texto claro escolhido). Um criptossistema simtrico tem indistinguibilidade contra ataques de texto claro escolhido se para todo adversrio A existe uma funo desprezvel negl tal que,

Notas

1
+ negl(n).
2

in
ar

Pr[PRIV_CPA(, A, n) = 1]

Pr
e

lim

Pseudoaleatoriedade objeto do livros de Goldreich [11] e (mais antigo) de


Luby [12]. O assunto tambm abordado em outros livros, de Goldreich [10] e
Kranakis [13].
A demonstrao do Teorema 4.16 (a corretude do mtodo para gerao de
nmeros naturais) pode ser encontrada no livro de Shoup [14].
H uma demonstrao do Teorema de Yao no livro de Delfs e Knebl [15].
H um interessante livro [16], de Thomas Cusick, Cunsheng Ding e Ari
Renwall que estuda aspectos de cifras de fluxo relacionados a Teoria de Nmeros.
Os postulados de Golomb foram a primeira tentativa de formalizar a ideia
de sequncia pseudoaleatrea. Seu livro de 1967 foi revisado em 1982 [17]. O
livro de Daniel Neuenschwander [18] sobre mtodos estatsticos em Criptografia
aborda diversos testes para nmeros aleatreos. O livro de Golomb e parte do
livro de Neuenschwander tratam de registradores de deslocamento linearmente
realimentados (linear feedback shift registers).
Sequncias geradas por LFSRs so estudadas extensivamente nos livros de
Golomb [17], de Lidl e Niederreiter [19], e de Golomb e Gong [20].
Um dos primeiros a definir baterias de teste para aleatoriedade foi George
Marsaglia, que criou a bateria de testes Die Hard. H baterias de testes
definidas pelo NIST [21].

Exerccios

Ve
rs

Ex. 21 Calcule a autocorrelao e a complexidade linear das sequncias,


com deslocamentos 1, 2 e 3:
a) 01101011

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.

notas de aula verso 79 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

57

Ex. 24 Sobre LFSRs, responda:

ii) Existe uma famlia de LFSRs que s gere uns?


iii) Que LFSRs geram tanto zeros como uns?

in
ar

i) Porque um LFSR tendo uma sequncia de zeros como estado inicial gerar
somente zeros?

Ex. 25 Prove que toda m-sequncia satisfaz os postulados de Golomb.

lim

Ex. 26 Uma sequncia de bits de deBrujin binria de ordem k se cada


sequncia binria de comprimento k aparece exatamente uma vez. Generalizando, uma sequncia de deBrujin n-ria de ordem k uma sequncia sobre
um alfabeto de tamanho n onde cada sequncia de comprimento k aparece uma
nica vez.
i) Quantas sequncias de deBrujin m-rias de ordem n existem?

ii) Prove que m-sequncias so de deBrujin, e diga para que ordem.


Ex. 27 Demonstre o Teorema 4.17

Pr
e

Ex. 28 Na demonstrao do Teorema 4.33 h um pequeno detalhe que


omitimos: possvel que as duas mensagens, 0n e 1n , resultem no mesmo texto
cifrado.
a) Demonstre que isso deve necessariamente ser possvel.
b) Complete a demonstrao tratando tambm deste caso.

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

Ex. 31 Implemente os geradores de Blum-Micali e Blum-Blum-Shub.


Ex. 32 Um gerador por congruncia linear funciona da seguinte maneira:
dados parmetros a, b, n e uma semente s < n,
x0

= s

xi

= axi1 + b (mod n)

Mostre que este tipo de gerador no seguro.

Ex. 33 Construa despretensiosamente5 sua prpria cifra de fluxo, usando


um LFSR e uma funo no linear.

5O

Exerccio 60, do Captulo 6, pede que voc quebre sua cifra.

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

58CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Cifras de Bloco

lim

Captulo 5

Pr
e

Cifras de bloco operam em sequncias de bits de tamanho fixo. Para encriptar


mensagens de tamanho maior que o do bloco da cifra, necessrio quebrar a
mensagem em blocos consecutivos.

No Captulo 4 usamos geradores pseudoaleatreos para criar cifras de fluxo,


fazendo ou exclusivo das mensagens com a sequncia gerada de bits. Neste
Captulo usaremos como fundamento para cifras de bloco permutaes pseudoaleatreas, semelhantes em esprito aos geradores pseudoaleatreos, mas que
trabalham com sequncias de tamanho fixo.

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:

Se representarmos o domnio (de tamanho 2n ) como uma lista horizontal,


notamos que h 2n valores a preencher para determinarmos uma funo. Cada
um destes valores tem n bits, e portanto h 2n possibilidades para cada. Disso
n
conclumos que h (2n )(2 ) diferentes funes com entrada e sada de n bits.
59

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 5. CIFRAS DE BLOCO

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.

notas de aula verso 79 - Jernimo C. Pellegrini

5.1. ESQUEMAS DE ENCRIPTAO USANDO FUNES PSEUDOALEATREAS61

5.1

Esquemas de Encriptao usando Funes Pseudoaleatreas

in
ar

A dificuldade do adversrio em determinar a funo Fk escolhida pode ser usada


para construir criptossistemas: poderamos criar uma funo Enc tal que
Enck (m) = Fk (m).

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 } ,

Enck (m) = hr, Fk (r) mi ,

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

Enck (m): escolha r R { 0, 1 } , e retorne

hr, Fk (r) mi .

Ve
rs

Deck (r, c) = Fk (r) (c)

Construo 5.3. Seja igual ao sistema de Construo 5.2 exceto por no


n
usar Fk : ao invs disso, seleciona uniformemente uma das (2n )(2 ) funes
f de n em n bits (no conseguiramos construir na prtica, mas ele servir
ao nosso argumento).
O Criptossistema equivalente ao one-time pad.

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

notas de aula verso 79 - Jernimo C. Pellegrini

62

CAPTULO 5. CIFRAS DE BLOCO

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 usado por A em suas consultas ao orculo que lhe permite usar f .


Chamaremos este evento de RU IM . Quando isso acontece, A ter sucesso
e b = b0 . A far uma quantidade polinomial de consultas ao orculo. Seja
ento p(.) o polinmio que d a quantidade de consultas. A probabilidade
de b = b0
1
1
p(n)
1
+ n + + n = n .
2n
2
2
2

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

Conclumos que Pr [PRIV_CPA( , A, n) = 1]




Pr [PRIV_CPA( , A, n) = 1 RU IM ] + Pr PRIV_CPA( , A, n) = 1 RU IM


Pr(RU IM ) + Pr PRIV_CPA( , A, n) = 1|RU IM

Teorema 5.5. O criptossistema descrito na Construo 5.2 CPA-seguro.

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

e h ento dois casos:


g(n) desprezvel. Se assim for, CPA-seguro (pela definio de segurana CPA);

notas de aula verso 79 - Jernimo C. Pellegrini

5.2. PERMUTAES PSEUDOALEATREAS

63

5.2

Permutaes Pseudoaleatreas

in
ar

g(n) no desprezvel. Neste caso conseguiramos distinguir Fk de f


escolhida ao acaso mas como F funo pseudoaleatrea, isso no pode
acontecer.

Trataremos agora de permutaes pseudoaleatreas, que so funes pseudoaleatreas bijetoras.

lim

Definio 5.6 (Permutao indexada). Uma funo indexada F chamada de


permutao se para todo k, Fk bijetora.
Quando Fk e Fk1 so computveis em tempo polinomial, dizemos que F
eficiente.
Quando Fk indistinguvel de f escolhida ao acaso dentre todas as permutaes de n bits, dizemos que uma permutao pseudoaleatrea.

Pr
e

Definio 5.7 (Permutao Pseudoaleatrea). Uma permutao indexada F


pseudoaleatrea se, para todo k escolhido uniformemente ao acaso, todo adversrio polinomial D, toda f escolhida ao acaso dentre todas as permutaes de
n bits, existe uma funo desprezvel negl tal que
|Pr [D(Fk , 1n ) = 1] Pr [D(f, 1n ) = 1]| negl(n).
Note que de acordo com a definio de permutao pseudoaleatrea o adversrio s tem acesso a Fk . Se refizermos a Definio 5.7 dando ao adversrio
acesso a Fk1 , teremos uma permutao pseudoaleatrea forte.

Modos de Operao

Ve
rs

5.3

F Famlias de permutaes pseudoaleatreas

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 )

c2n+1..3n = F (k, m2n+1..3n )


..
.

Um modo de operao de um esquema de encriptao usando permutaes


pseudoaleatreas a maneira como a permutao usada para construir um
criptossistema simtrico. Esta seo traz apenas os modos de operao mais
conhecidos.

notas de aula verso 79 - Jernimo C. Pellegrini

64

CAPTULO 5. CIFRAS DE BLOCO

5.3.1

ECB Electronic Code Book

No modo ECB, cada bloco encriptado independentemente com a chave k.


m
1

m
2

lim

in
ar

Por ser determinstico, o modo ECB completamente inseguro: no oferece


indistinguibilidade contra ataque de mltiplos textos cifrados conhecidos; na
verdade, h nele uma fragilidade ainda mais bsica: dois blocos iguais de uma
mensagem sero transformados em dois blocos iguais no texto encriptado.

CBC Cipher Block Chaining

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.

Enck (m) = hiv1 , (c0 , c1 , , cn )i ,

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.

notas de aula verso 79 - Jernimo C. Pellegrini

5.3. MODOS DE OPERAO

65

5.3.3

in
ar

Teorema 5.8. Se Fk uma permutao pseudoaleatrea e tanto iv como k


so escolhidos ao acaso com distribuio uniforme, o modo CBC tem segurana
CPA.

OFB Output Feedback

No modo OFB um vetor de inicializao usado para gerar Fk ; a sada de


Fk usada como vetor de inicializao para o prximo bloco. Para encriptar
mensagens, fazemos ou-exclusivo de cada mi com a sada da i-sima aplicao
de Fk .

iv

Pr
e

lim

iv

c
3

Enck (m) = hiv1 , (c0 , c1 , , cn )i ,


onde

ci = Fk (ivi ) mi .

Ve
rs

O primeiro vetor de inicializao iv1 escolhido ao acaso e para i > 1, ivi =


Fk (ivi1 ).
Assim como o modo CBC, o modo OFB no paralelizvel. No entanto,
uma sequncia de bits pode ser preparada com antecedncia para vrios blocos
antes da encriptao (ou decriptao) das mensagens.
Teorema 5.9. Se Fk uma permutao pseudoaleatrea e tanto iv como k
so escolhidos ao acaso com distribuio uniforme, o modo OFB tem segurana
CPA.

5.3.4

CTR Contador

No modo contador o vetor de inicializao gerado e depois incrementado para


cada bloco. Para encriptar o i-simo bloco, usa-se o contador somado com i
como entrada para Fk , e o resultado usado em um ou-exclusivo com a i-sima
parte da mensagem.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 5. CIFRAS DE BLOCO

lim

in
ar

66

Enck (m) = hctr, (c0 , c1 , , cn )i ,


onde

ci = Fk (ctr + i) mi .

Pr
e

O modo CTR paralelizvel: cada bloco pode ser encriptado separadamente.


Alm disso, possvel encriptar ou decriptar o n-simo bloco isoladamente (ou
seja, o modo CTR permite acesso aleatreo).
Teorema 5.10. Se Fk uma permutao pseudoaleatrea e tanto iv como k
so escolhidos ao acaso com distribuio uniforme, o modo CTR tem segurana
CPA.

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

Segurana de cifras de bloco

As noes de segurana dadas anteriormente na anlise da segurana de cifras


de fluxo e de funes pseudoaleatreas eram baseadas em comportamento assinttico, e no fazem sentido para cifras de bloco, uma vez que estas trabalham
com blocos e chaves de tamanho fixo.
Ao invs disso, diremos que uma cifra de bloco segura quando o melhor
ataque contra ela tem complexidade de tempo igual da busca exaustiva pela
chave. Por exemplo uma cifra de bloco que trabalha com chaves de 256 bits
insegura se h algum ataque que exija uma quantidade de operaes prxima
de 2128 , por exemplo (mesmo 2128 sendo um nmero muito grande).

notas de aula verso 79 - Jernimo C. Pellegrini

5.5. ARQUITETURA DE CIFRAS DE BLOCO

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 .

Arquitetura de cifras de bloco

Pr
e

5.5

lim

As chaves so portanto de tamanho n e os blocos de tamanho t.


A definio de cifra de bloco no faz referncia a permutaes pseudoaleatreas. Ao invs disso, uma permutao eficiente indexada usada. Isso porque,
como j mencionamos, para cifras de bloco no faz sentido tratar de comportamento assinttico.
Uma cifra de bloco deve ser indistinguvel de uma permutao aleatrea. Infelizmente no podemos usar diretamente permutaes pseudoaleatreas: para
representar uma permutao onde entrada e sada usam n bits precisaramos de
representar 2n ! valores, e consequentemente teramos que usar log(2n !) bits. Por
exemplo, se quisermos que o bloco tenha 256 bits, precisaramos de log(2256 !)
algo inconcebvel na prtica. Na construo de cifras de bloco usam-se normalmente funes representveis de maneira mais compacta, que, do ponto de vista
do adversrio, parecem ser permutaes pseudoaleatreas.

H diferentes maneiras de organizar cifras de bloco. A seguir so destacados


dois princpios bsicos enunciados por Shannon e em seguida, trs arquiteturas
comuns de cifra de bloco so exploradas: redes de substituio e permutao,
cifras de Feistel e esquemas de Lai-Massey.

5.5.1

Confuso e difuso

Ve
rs

H dois conceitos bsicos identificados por Claude Shannon no funcionamento


de esquemas de encriptao, e que so claramente relacionados arquitetura de
cifras de bloco:
Confuso: a relao (estatstica) entre o texto encriptado e a chave deve
ser complexa o suficiente para no permitir a obteno da chave a partir
do texto encriptado.
Difuso: a distribuio no-uniforme do texto claro no deve se refletir
no texto encriptado. Em outras palavras, o texto encriptado deve ter
distribuio uniforme e independente da do texto claro as redundncias
no texto claro so diludas. A permutao das posies de bits da entrada
uma das maneiras de obter este efeito.

5.5.2

Rede de substituio e permutao

Uma vez que no podemos representar uma permutao aleatrea de todos


os bits de um bloco, podemos tentar outra abordagem. Dividimos o bloco

notas de aula verso 79 - Jernimo C. Pellegrini

68

CAPTULO 5. CIFRAS DE BLOCO

Pr
e

lim

in
ar

em pequenas partes menores e dentro de cada uma fazemos uma permutao


aleatrea. Dizemos que esta operao introduz confuso no bloco original, e
damos a estes pequenos blocos o nome de S-boxes (ou caixas-S).

Ve
rs

Como s permutamos bits dentro de pequenos blocos, alteraes em uma


parte da entrada causam modificaes apenas na parte correspondente da sada.
Introduzimos confuso, mas no difuso. Para conseguir difuso, tomamos a
sada dos blocos e as distribumos entre os outros (as modificaes das S-boxes
so espalhadas).

aplicao em sequncia das S-boxes e difuso de bits damos o nome de


rodada. Uma rede de substituio e permutao normalmente executa vrias rodadas, e ao final de cada rodada o resultado combinado (normalmente usando
ou-exclusivo) com uma chave.

notas de aula verso 79 - Jernimo C. Pellegrini

S-boxes
introduzem
confuso

lim

passo de mistura
traz difuso

69

in
ar

5.5. ARQUITETURA DE CIFRAS DE BLOCO

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.

Redes de Feistel so parecidas com redes de substituio e permutao mas


usam uma arquitetura diferente, no sendo necessrio que as S-boxes sejam
invertveis.
Em uma rede de Feistel a entrada dividida em duas metades (esquerda e
direita), denotadas Li e Ri . Em cada rodada, so calculados
Li = Ri1
Ri = Li1 fi (Ri1 , Ki )

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.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 5. CIFRAS DE BLOCO

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

Demonstrao. Basta mostrarmos que uma rodada invertvel. E realmente:


como Li copiado de Ri1 , temos imediatamente Ri1 . Com Ri1 , f e Ri
podemos calcular Li1 :
Ri1 = Li

Li1 = f (Ri1 ) Ri

Como as redes de Feistel tem entrada e sada de tamanho fixo e so invertveis


(e so bijees), temos o seguinte Corolrio:
Corolrio 5.13. Redes de Feistel so Permutaes.

Ve
rs

Cifras de bloco so definidas como permutaes, mas mais natural analisar


a segurana de uma cifra presumindo que ela uma funo pseudoaleatrea,
e no uma permutao. Isso nos leva ao prximo Teorema, demonstrado por
Michael Luby e Charles Rackoff, que garante que se a funo interna de uma
rede de Feistel for uma funo pseudoaleatrea, ento a permutao resultante
da rede pseudoaleatrea, desde que a rede tenha pelo menos trs rodadas.
Mais precisamente, Luby e Rackoff mostraram que a probabilidade de um adversrio distinguir entre uma permutao verdadeiramente aleatrea e uma cifra
de Feistel de trs rodadas construda com funes pseudoaleatreas menor do
que q 2 /2n . muito importante observar que o enunciado do Teorema de LubyRackoff, embora tenha alguma semelhana com a definio 4.7, de geradores
pseudoaleatreos, diferente em um aspecto: para PRGs usamos uma formulao assinttica (dissemos que sempre existe uma funo desprezvel maior que
o valor); j aqui damos uma expresso exata. Fazemos isso porque, como j
mencionamos, raciocnio assinttico no faz sentido para cifras de bloco.
Teorema 5.14 (Luby-Rackoff). Seja P uma permutao pseudoaleatrea de n
bits. Seja P a permutao definida por uma rede de Feistel para entrada de n bits

notas de aula verso 79 - Jernimo C. Pellegrini

5.5. ARQUITETURA DE CIFRAS DE BLOCO

71

|Pr[D(P ) = 1] Pr(D(P ) = 1]|

5.5.4

q2
.
2n

Construo de Lai-Massey

in
ar

com trs rodadas, e funes internas F1 , F2 e F3 , todas pseudoaleatreas. Seja


D um adversrio tentando distinguir P de P fazendo no mximo q consultas
a um orculo que lhe d acesso a P . Ento

Di = f (Ri Li )
Ri = Ri1 + Di

lim

Uma construo de Lai-Massey lembra uma rede de Feistel. Em cada rodada a


mensagem dividida em duas partes, Li e Ri . Calcula-se ento

Li = Li1 + P (Di )

Ve
rs

Pr
e

onde P uma permutao.


Para que a construo de Lai-Massey tenha a mesma garantia de segurana
das redes de Feistel, a permutao P deve ser tal que P 0 (x) = P (x) x tambm
permutao (quando isso acontece dizemos que P um ortomorfismo).
As operaes + e devem ser inversas uma da outra (mas no necessariamente soma e subtrao)1
A Figura a seguir mostra uma rodada de uma construo de Lai-Massey.

As cifras IDEA e FOX so construes de Lai-Massey.

1 As

sequncias de bits com + devem formar um grupo; a b o mesmo que a + (a).

notas de aula verso 79 - Jernimo C. Pellegrini

72

5.6

CAPTULO 5. CIFRAS DE BLOCO

Exemplo: DES

Ve
rs

Pr
e

lim

in
ar

Em 1976 um criptossistema desenvolvido pela IBM foi escolhido como padro


pelo National Bureau of Standards americano. Este criptossistema passou a ser
conhecido com DES (Data Encryption Standard). Embora j muito antigo, o
DES importante como exemplo de arquitetura de cifra de bloco.
O DES uma rede de Feistel com chave de 56 bits e mensagens de 64 bits,
usando 16 rodadas e oito S-boxes.
Antes de aplicar a entrada na rede de Feistel, o DES realiza uma permutao
inicial na entrada. Esta permutao revertida na sada da rede. A prxima
Figura ilustra o funcionamento do DES.

Descreveremos a funo interna do DES. Como em uma rede de Feistel


metade dos bits da mensagem usado de cada vez como entrada para a funo
interna, a entrada de 32 bits.
A funo interna da rede de Feistel do DES funciona da seguinte maneira:
os 32 bits da entrada so expandidos em uma string de 48 bits. Aps um
ou-exclusivo com a subchave, a entrada dividida em oito S-boxes (note que
usam-se S-boxes, tpicas de redes de substituio-permutao, como parte da
funo interna desta rede de Feistel). Estas S-boxes tm seis bits de entrada
e quatro de sada (donde se conclui que a funo usada pelo DES na rede de

notas de aula verso 79 - Jernimo C. Pellegrini

5.6. EXEMPLO: DES

73

Pr
e

lim

in
ar

Feistel no tem inversa). Depois, a sada tem 8 4 = 32 bits. A Figura a seguir


ilustra a funo interna do DES.

Escalonamento de chaves

5.6.1

Ve
rs

O algoritmo de escalonamento de chaves do DES gera 16 chaves de 32 bits a


partir da chave de 56 bits usada na entrada. A descrio detalhada do DES,
inclusive o escalonamento de chaves, est no Apndice E.

5.6.2

3DES

O nico problema do DES o tamanho de sua chave: hoje possvel a um


adversrio percorrer o espao de chaves (de tamanho 256 ) em tempo aceitvel.
Uma maneira de aumentar a segurana do DES aumentando o tamanho de
sua chave. No devemos, no entanto, modificar internamente uma cifra de bloco
o DES resistiu a dcadas de ataques da forma como foi criado, e pequenas
mudanas na sua estrutura podem enfraquec-lo.
Uma primeira tentativa de aumentar o tamanho das chaves simplesmente
encriptar as mensagens duas vezes, usando duas chaves diferentes:
Fk0 1 ,k2 = Fk1 (Fk2 (m)).

notas de aula verso 79 - Jernimo C. Pellegrini

74

CAPTULO 5. CIFRAS DE BLOCO

in
ar

Infelizmente esta idia no traz segurana adicional cifra. O ataque descrito


a seguir chamado de ataque do encontro no meio2 .
Suponha que um adversrio tenha um par (m, c), sabendo que foi encriptado
duplamente como a descrevemos (c = Fk1 (Fk2 (m))). Ele deve procurar duas
chaves tais que
Fk1 (m) = x = Fk1
(c).
2
O adversrio efetua Enc(m) com todas as chaves possveis. Ao encriptar
m com uma chave ki e obter o texto encriptado xi , ele guarda o par ki , xi
em uma tabela.

lim

Depois, o adversrio faz um procedimento semelhante: decripta c com


todas as chaves possveis, guardando pares (xi , ki ).

Ve
rs

Pr
e

Em seguida, ordena as duas tabelas geradas usando xi como chave. Ao


encontrar uma entrada na tabela pares com o mesmo xi , ele guarda as
chaves (ki , kj ) em um conjunto de possveis solues.

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

Fk0 1 ,k2 ,k3 = Fk1 (Fk1


(Fk3 (m))).
2
em Ingls.

notas de aula verso 79 - Jernimo C. Pellegrini

5.7. EXEMPLO: AES

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

O AES uma rede de substituio e permutao com blocos de 128 bits. A


chave pode ter 129, 192 ou 256 bits.

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

O pseudocdigo do AES mostrado a seguir.

// primeira rodada:
AddRoundKey

Ve
rs

// rodadas intermediarias:
para i de 2 a N 1:
SubBytes
ShiftRows
MixColumns
AddRoundKey

// rodada final:
SubBytes
ShiftRows
AddRoundKey

O nmero de rodadas (N no algoritmo) dez para chaves de 128 bits, doze


para chaves de 192 bits e catorze para chaves de 256 bits.
Os passos so detalhados a seguir.

notas de aula verso 79 - Jernimo C. Pellegrini

76

CAPTULO 5. CIFRAS DE BLOCO

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

Complexidade algbrica: A expresso da S-box no corpo finito GF (28 )


bastante complexa, a fim de evitar o sucesso de ataques de criptanlise
algbrica.

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

O passo ShiftRows realiza transposies de bytes, tendo difuso como efeito.


Quando o tamanho do bloco de 128 bits, cada uma das linhas deslocada
para a direita por 0, 1, 2 e 3 posies. Por exemplo:

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

A operao ShiftRows facilmente invertvel.

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,

onde  o operador de deslocamento para a esquerda (a  x desloca os bits


de a x bits para a esquerda), e Y depende do primeiro bit de a antes de iniciar
a operao: quando este bit zero, Y = 0; quando um, Y = 1b

3 Este operao descrita de forma mais aprofundada na Seo 5.7.2, que expe uma
descrio algbrica do AES.

notas de aula verso 79 - Jernimo C. Pellegrini

77

A tansformao usa
usual:

02
01

01
03

a operao definida acima no lugar da multiplicao


a0
b0
03 01 01

02 03 01
a1 = b1
01 02 03 a2 b2
a3
b3
01 01 02

in
ar

5.7. EXEMPLO: AES

Esta transformao invertvel e pode ser implementada eficientemente, j que


envolve poucas operaes em bytes (deslocamento para a esquerda e ou exclusivo), todas disponveis como instrues nativas em hardware.

lim

Exemplo 5.15 (Passo MixColumns do AES).


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

Fazemos primeiro a operao , que tem precedncia sobre . Multiplicamos


0A = 00001010 por 02 : basta deslocar os bits uma posio para a esquerda,
obtendo 00010100 = 14 . Para multiplicar B7 = 10110111 por 03 , deslocamos os bits da mesma forma, mas tambm fazemos ou exclusivo com 1b ,
obtendo 01101110 00011011 = 01110101 = 75 . Os valores 01 e 39 , multiplicados por um, no so modificados. Temos ento
b0 = 14 75 01 39

A operao ou exclusivo da representao binria, portanto b0

Ve
rs

b0 =00010100
01110101
00000001
00111001
=00011001 = 19 .

Os valores b1 , b2 e b3 sero obtidos pelo mesmo processo.


AddRoundKey

A chave representada por uma matriz 4 4, e a mistura com a chave feita


aplicando ou-exclusivo byte a byte.
Escalonamento de chave
Para N rodadas do AES so necessrias N chaves de rodada.

notas de aula verso 79 - Jernimo C. Pellegrini

78

CAPTULO 5. CIFRAS DE BLOCO

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 .

Definio 5.16 (Corpo de Rijndael). O AES (Rijndael) trabalha com elementos


do corpo finito GF (28 ), usando o polinmio irredutvel
m(x) = x8 + x4 + x3 + x + 1.

lim

Todo byte no AES interpretado como um elemento do corpo de Rijndael.


SubBytes

Pr
e

A operao SubBytes troca x 6= 0, composto por bits x0 , x1 , . . . , x7 por Ax1 +b,


onde

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

Cada coluna da matriz interpretada como coeficientes de um polinmio sobre


GF (28 ). Assim, uma coluna

a0
a1

a2
a3
interpretada como a3 x3 + a2 x2 + a1 x + a0 , onde os coeficientes ai so bytes (e
portanto variam de 0 a 255 = FF ).
Toda coluna interpretada como um polinmio com coeficientes em GF (28 )
(porque so bytes). Note que este polinmio no pertence ao corpo de Rijndael,
porque seus coeficientes no so binrios (so bytes inteiros)5 !

4 Corpos finitos so descritos brevemente no ApndiceB, onde h tambm recomendaes


de literatura cobrindo o assunto.
5 Se representamos os elementos de GF (28 ) como polinmios, seus coeficientes devem pertencer a Z2 .

notas de aula verso 79 - Jernimo C. Pellegrini

5.7. EXEMPLO: AES

79

Por exemplo, a coluna

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

Os coeficientes de c(x) tambm so elementos de GF (28 ), representados aqui


em hexadecimal. Sua representao como polinmios mdulo m(x)
01 = 1

02 = x

03 = x + 1.

Ve
rs

A operao pode ser tambm descrita como a multiplicao dos polinmios


em cada coluna por

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 .

Calculamos ax e a(x + 1).

ax = a7 x8 + a6 x7 + a5 x6 + a4 x5 + a3 x4 + a2 x3 + a1 x2 + a0 x
7

(mod m(x))

= a6 x + a5 x + a4 x + (a3 + a7 )x + (a2 + a7 )x + a1 x + (a0 + a7 )x + a7

notas de aula verso 79 - Jernimo C. Pellegrini

80

CAPTULO 5. CIFRAS DE BLOCO

Deslocamento de um bit para a esquerda;


Se a7 = 1, fazemos ou exclusivo com 1b .
Finalmente,
a(x + 1) = ax + a,

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

Exemplo 5.17 (Clculo de um coeficiente em MixColumns). Considere a coluna


j mostrada, (E0 , 21 , 0A , 72 )T . Ela pode ser representada como

x7 + x6 + x5

x5 + 1

x3 + x
x6 + x5 + x4 + x + 1

Quando multiplicada por c(x), resulta em

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

x(x7 + x6 + x5 ) + (x + 1)(x5 + 1) + (x3 + 1) + (x6 + x5 + x4 + x + 1)

=x7 + 3x6 + 2x5 + x + 2

=x7 + x6 + x

=11000010 = 194 = c2 .

E portanto, o passo MixColumns trocaria o primeiro elemento da coluna por


c2 .

5.8

FOX (IDEA-NXT)

A cifra FOX um esquema de Lai-Massey, e a sucessora da cifra IDEA. H


variantes de FOX para blocos de 64 e de 128 bits.

6 Isto garante que o tempo e energia usados na computao no dependam dos argumentos,
evitando ataques de canal lateral.

notas de aula verso 79 - Jernimo C. Pellegrini

5.8. FOX (IDEA-NXT)

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

O conceito de funo pseudoaleatrea foi proposto por Oded Goldreich, Shafi


Goldwasser e Silvio Micali [22]. J permutaes pseudoaleatreas (e a formalizao do conceito de cifra de bloco) foram idealizadas por Michael Luby e
Charles Rackoff [23].
O Teorema 5.14 foi demonstrado por Luby e Rackoff quando analisavam a
segurana do DES.
O DES foi desenvolvido na dcada de 1970 pela IBM, e um dos projetistas
era Horst Feistel; o AES foi desenvolvido por Joan Daemen e Vincent Rijmen.
A descrio do DES e do AES dadas aqui superficial. Uma descrio mais
profunda do AES dada por Daemen e Rijmen em um livro [24]. O leitor
interessado em implementar as cifras poder consultar o Apndice E, que traz
a descrio detalhada do DES e do AES; os padres que as descrevem (FIPS
46-3 [25] para o DES e FIPS PUB 197 [26] para o AES); e o livro de Bruce
Schneier [27]. Tambm so relevantes as tcnicas de criptanlise e as notas do
Captulo 6.
A Unio Sovitica desenvolveu uma cifra de bloco bastante parecida com o
DES. O padro GOST 28147-89 define a cifra, que usa blocos de 64 bits (GOST

notas de aula verso 79 - Jernimo C. Pellegrini

82

CAPTULO 5. CIFRAS DE BLOCO

Exerccios
n

lim

in
ar

um conjunto de padres originalmente produzidos pela Unio Sovitica7


GOST significa padro do estado em russo). A cifra era secreta at 1994, quando
foi tornada pblica. A cifra de bloco definida pelo GOST tem mais rodadas que
o DES; o padro no define as S-boxes, que eram modificadas dependendo do
contexto (o governo sovitico decidia quem poderia usar quais conjuntos de
S-boxes).
A cifra FOX[28] foi criada por Pascal Junod e Serge Vaudenay como sucessora da cifra IDEA.
Exemplos de redes de Feistel so as cifras Camellia (desenvolvida pela Mitsubishi) [29], Blowfish (de Bruce Schneier) [30], e MARS (finalista do concurso
que selecionou o AES, desenvolvida pela IBM) [31].

Ex. 34 Seja F : { 0, 1 } { 0, 1 } { 0, 1 } uma funo pseudoaleatrea.


Argumente que F deve ser de mo nica.

Pr
e

Ex. 35 (Stinson) Prove que possvel decriptar a sada de uma rede de


Feistel encriptando o texto cifrado, mas revertendo a ordem das subchaves usadas em cada rodada.
Ex. 36 A respeito do Teorema de Luby-Rackoff, analise os casos de redes
de Feistel com apenas uma e apenas duas rodadas.
Ex. 37 O que acontece se retirarmos a permutao em cada rodada da
construo de Lai-Massey?

Ex. 38 (Trappe/Washington) O modo CBC tolera erros no texto cifrado.


Mostre que se h um erro em um bloco cj , somente dois blocos sero decriptados
incorretamente (mostre quais).

Ve
rs

Ex. 39 Prove o Teorema 7.10 (a demonstrao dada s um rascunho


muito superficial).
Ex. 40 Mostre8 que para o DES vale Enck (m) = Enck (m), onde x a
operao de complemento dos bits de x.
Ex. 41 Explique porque o ataque do encontro no meio no funciona para
Fk0 1 ,k2 ,k3 = Fk1 (Fk1
(Fk3 (m))).
2
Ex. 42 Observe apenas o passo SubBytes do AES. Se o repetirmos muitas
vezes sobre uma mensagem, necessariamente voltaremos mensagem original
(porque o nmero de configuraes finito). Quantas vezes no mximo podemos
iterar este passo sem repetir configuraes?

7 Hoje mantidos pela Comunidade de Estados Independentes (pases antes membros da


Unio Sovitica).
8 O Exerccio 52 pede a descrio de um ataque que usa esta propriedade.

notas de aula verso 79 - Jernimo C. Pellegrini

5.8. FOX (IDEA-NXT)

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

Ex. 44 Se voc no leu a descrio algbrica do AES, tente determinar a


inversa da operao MixColumns.

Ex. 45 Prove que a permutao usada na cifra FOX de fato um ortomorfismo.


Ex. 46 Desenvolva e implemente, despretensiosamente9 , suas prprias cifras de bloco:
b) Uma cifra de Feistel simples;

lim

a) Uma rede de permutao e substituio;


c) Uma cifra de Feistel que usa S-boxes e permutaes;
d) Uma cifra de Lai-Massey.

Ve
rs

Pr
e

Ser interesante que as S-boxes, permutaes e partes de cifras em geral sejam


parametrizveis, para que seja possvel mais tarde trocar facilmente uma S-box
ou permutao da cifra sem ter que refazer completamente o programa.

9 Dentre os exerccios do Captulo 6, que trata de Criptanlise, h um (59) que sugere tentar
quebrar estas cifras.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 5. CIFRAS DE BLOCO

Ve
rs

Pr
e

lim

in
ar

84

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

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.

Uma rede de substituio e permutao

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

notas de aula verso 79 - Jernimo C. Pellegrini

86

CAPTULO 6. NOES DE CRIPTANLISE


Por exemplo, se a entrada da S-box 1011 verificamos que 1011 = B e a
sada ser 9, ou seja, a sequncia de bits 1001.

in
ar

Nossa S-box uma permutao simples ( bijeo e preserva o tamanho da


entrada). Isso no estritamente necessrio para que a criptanlise linear
funcione (uma S-box do DES, por exemplo, que tem entrada de seis bits
e sada de quatro bits, tambm pode ser analisada usando esta tcnica).

Permutao: Os 16 bits da sada do passo de substituio so permutados


usando a seguinte tabela:

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.

Mistura com a chave: Aps os passos de substituio e permutao um


ou-exclusivo feito com os 16 bits da chave. A sada de cada uma das
S-boxes distribuda para todas as quatro S-boxes da prxima rodada.

A prxima figura ilustra a rede de substituio e permutao, j com as


quatro rodadas: as trs primeiras consistem da aplicao de ou exclusivo com
uma subchave seguida de um passo de substituio (com quatro S-boxes) e um
de permutao. Na ltima rodada, ao invs de uma permutao temos mais um
passo de mistura com chave, porque esta permutao de bits no seria til (no
seria propagada para uma prxima rodada, e pode ser trivialmente desfeita por
qualquer atacante).

notas de aula verso 79 - Jernimo C. Pellegrini

87

Ve
rs

Pr
e

lim

in
ar

6.1. UMA REDE DE SUBSTITUIO E PERMUTAO

notas de aula verso 79 - Jernimo C. Pellegrini

88

6.2

CAPTULO 6. NOES DE CRIPTANLISE

Criptanlise linear

a1 x1 + a2 x2 + a3 x3 + a4 x4

in
ar

A criptanlise linear trata de encontrar relaes lineares entre bits de entrada e


bits prximos da sada de uma cifra. Falamos de relao (probabilstica) linear
porque usamos representao binria de nmeros e usamos aritmtica mdulo
dois, onde a operao aditiva o ou-exclusivo e a multiplicativa o e lgico.
Por exemplo, considere oito variveis binrias a1 , . . . , a4 e x1 , . . . , x4 . Podemos
usar os ai como coeficientes e os xi como variveis de uma combinao linear
(mod 2),

ou

lim

a1 x1 a2 x2 a3 x3 a4 x4 ,

onde ai xi denota o e lgico de ai e xi . Como ai s pode valer um ou zero,


cada ai tem o efeito de escolher quais xi participam do ou-exclusivo. Se a = 0110
e x = 1100, ento a combinao linear ax
a1 x1 a2 x2 a3 x3 a4 x4
= 0 x1 x2 x3 0 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.

A Figura mostra que estamos interessados em um valor V , que extrado da


ltima rodada da rede. Conhecendo alguma relao entre X e V , e conhecendo
o valor da sada Y , podemos tentar deduzir algo a respeito da subchave k5 usada
na ltima rodada.
Analisaremos a parte da rede de substituio-permutao que no deve ser
linear (ou seja, cuja sada no deveria ser representvel como combinao linear
da entrada): as S-boxes. Denotaremos por X e Y a entrada e a sada de uma
S-box; por X1 , X2 , X3 , X4 os bits de entrada e por Y1 , Y2 , Y3 , Y4 os bits de sada.

notas de aula verso 79 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

89

que tenham probabilidade distante de 1/2.

6.2.1

O Lema do Empilhamento

in
ar

O objetivo encontrar variveis aleatreas definidas por relaes lineares do


tipo
Xi Xj Xm Yk Yl Yn = 0

A sada de uma rede de substituio e permutao deveria ser indistinguvel da


sada de uma permutao pseudoaleatrea. Se escolhermos uma sequncia de
bits da mensagem mi , . . . , mj e uma sequncia de bits da sada cl , . . . , cm , seja

lim

p = Pr[mi mk cl cm = 0].

Se c a sada de uma funo realmente aleatrea, supomos que p muito


prxima de 1/2 e a criptanlise linear um mtodo para identificar casos
onde isso no acontece.
Comeamos definindo esta distncia de 1/2, que um conceito central para
a criptanlise linear.

Pr
e

Definio 6.1. O vis de uma varivel aleatrea binria Xi i = Pr(Xi )1/2.


O vis mede o quanto a probabilidade de uma varivel est acima de 1/2
(claramente o vis pode ser negativo, se Pr[Xi ] < 1/2).
Considere as entradas X1 e X2 na S-box que definimos. A expresso
X1 X2 = 0

pode ser reescrita como

X1 = X2 .

Ve
rs

Suponha que as probabilidades de X1 e X2 sejam


Pr[X1 = 0] = p1

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 ).

notas de aula verso 79 - Jernimo C. Pellegrini

90

CAPTULO 6. NOES DE CRIPTANLISE

Se p1 = 1/2 + 1 e p2 = 1/2 + 2 , com |e1 | e |e2 | 1/2, ento


1
+ 21 2
2

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

Pela hiptese de induo, o vis de A 2k1 kj=1 ij . J o vis de Xik+1 ik+1 .


Como sabemos calcular o vis para duas variveis, basta faz-lo para A e
Xik+1 , obtendo

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.

notas de aula verso 79 - Jernimo C. Pellegrini

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

6.2. CRIPTANLISE LINEAR

Olharemos agora para combinaes lineares (ou seja, somas de parte dos
bits), tanto da entrada como da sada. Queremos verificar quando a equao

Xi1 Xi2 Xim Yj1 Yj2 Yjn = 0

Ve
rs

verdadeira. Por exemplo, considere X3 X4 = Y1 Y2 Y3 . A prxima tabela


obtida a partir da anterior com as seguintes modificaes:

Apenas X3 e X4 so listados na entrada, e apenas Y1 , Y2 e Y3 na sada;

As colunas do meio mostram as duas combinaes lineares, X3 X4 e


Y1 Y2 Y3 ;

As linhas em que as duas combinaes coincidem esto destacadas.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 6. NOES DE CRIPTANLISE


X3 X4
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0

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

Seja A = X3 X4 Y1 Y2 Y3 . Esta varivel ser zero quando X3 X4 =


Y1 Y2 Y3 , ou seja, nas linhas em destaque.

Ve
rs

Esperamos que Pr[A = 0] seja aproximadamente 1/2 (quanto mais prximo


de 1/2 melhor). No entanto, as colunas do meio coincidem 4 vezes e h 16
entradas, portanto Pr[A = 0] = 4/16 = 1/4. O vis de A 1/4 1/2 = 1/4.

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).

Construmos agora outra tabela: as linhas representam diferentes bits de X


(combinaes lineares de Xi ), e as colunas representam bits de Y (combinaes
lineares de Yi ). O elemento (i, j) da tabela a quantidade de coincidncias para
X = Y menos oito.

notas de aula verso 79 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

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

Esta tabela chamada de tabela de aproximao linear.

Podemos verificar o vis que j calculamos, de X3 X4 Y1 Y2 Y3 : a


linha dada por 0011 = 3 e a coluna por 1110 = 14 = E . E de fato, na posio
(3, E ) temos 4 o que significa que o vis 4/16 = 1/4, exatamente como
calculamos anteriormente.

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.

A prxima figura mostra I n e On , alm de caminhos, cuja natureza ficar


clara no decorrer do texto. As S-boxes S1,1 , S2,1 , S3,2 , S4,2 e S4,3 so ativas na
aproximao que faremos.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 6. NOES DE CRIPTANLISE

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

notas de aula verso 79 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

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

(+1/4) A1 = I11 I21 O11 = 0

(+1/4) A2 = I12 O22 O42 = 0


(1/4) A3 = I53 O63 O73 = 0

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 .

notas de aula verso 79 - Jernimo C. Pellegrini

96

CAPTULO 6. NOES DE CRIPTANLISE

Determinamos ento que A1 A2 A3 A4 igual a


([m1 k11 ] [m2 k21 ] O11 )

in
ar

([O11 k12 ] O22 O42 )


([O22 k53 ] O63 O73 )
3
3
3
([O42 k13
] O14
O15
),

que o mesmo que


3
(m1 m2 k11 k21 k12 k53 k13
)

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
.

Estamos interessados no caso em que A1 A2 A3 A4 = 0 (porque como


definimos nossa varivel aleatrea A), e sabemos que

Pr
e

I64 = O63 k64

3
I84 = O14
k84

4
4
I10
= O73 k10

4
3
4
I12
= O15
k12
,

ou seja, podemos substituir

Ve
rs

O63 I64 k64

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.

Como estamos interessados apenas na relao entre a entrada da rede e a sada


I 4 , isolamos os bits de chave:
3
4
4
Z = k11 k21 k12 k53 k13
k64 k10
k84 k12

Testaremos as chaves uma a uma portanto podemos presumir que Z estar


fixo em um ou em zero. Em um dos casos, o vis de A1 A2 A3 A4 ser
+1/32, e no outro, 1/32. Conseguimos determinar ento que o vis de
4
4
m1 m2 I64 I10
I84 I12

(6.1)

notas de aula verso 79 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

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

Tendo o vis de A e uma quantidade suficiente de pares (m, c) de texto claro


e encriptado (todos com a mesma chave), podemos identificar, dentre todas as
subchaves candidatas, aquela para a qual a relao A (Equao 6.1) vale com
a frequncia que esperaramos, dado o vis que calculamos. A Figura a seguir
ilustra este processo.

Ve
rs

Quando a relao valer para um par, incrementamos o contador da subchave.


O pseudocdigo a seguir mostra este processo. O vetor F contm os contadores
de frequncia (o algoritmo calcula, em Fk , a frequncia de ocorrncias para a
k-sima subchave).

para cada subchave candidata k:


Fk 0
para cada par (m, c):
O4 c k // desfazemos
I 4 S 1 (O4 ) // inversa da Sbox
4
4
=0
se m1 m2 I64 I10
I84 I12
Fk Fk + 1
Tendo as frequncias da relao dada pela Equao 6.1 para cada subchave,
tomamos a subchave com vis mais prximo de 1/32 e a usamos.

notas de aula verso 79 - Jernimo C. Pellegrini

98

CAPTULO 6. NOES DE CRIPTANLISE

Apresentamos a seguir os resultados de uma simulao, completando o exemplo. Nesta simulao, usamos

k2 = 0010 1010 0011 0011


k3 = 1111 0000 0111 1000
k4 = 1011 1101 0100 0010
k5 = 1000 1001 1001 1100

in
ar

k1 = 0001 1011 1001 1001

lim

A subchave que queremos encontrar , portanto 10011001 (sublinhada acima).


O nmero de pares de texto claro e encriptado que usamos 1200. O idealizador da criptanlise linear, Mitsuru Matsui, argumentou que um nmero
razovel de pares
1
2

Pr
e

onde o vis da relao linear que encontramos. Como temos = 1/32,


conclumos que
1
= 1024
(1/32)2
pares so suficientes.
A prxima tabela mostra uma lista das chaves com o vis calculado da relao
A = 0, onde
4
4
A = m1 m2 I64 I10
I84 I12
.

Ve
rs

Esperamos que o valor absoluto do vis A da varivel A para a chave correta


seja prximo de 1/32 = 0.03125. Pode haver outras subchaves para as quais esta
relao tambm valha com alta probabilidade, portanto podemos ter que buscar
entre as diversas subchaves com A mais prximos de 1/32. Nesta simulao, a
subchave correta tem A = 0.35.
subchave
01010000
01111011
00011111
10111000
10111110
10010110
01000011
11011110
00100000
01101001
00101110
10011001

|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

Conseguimos, finalmente, extrair oito bits da chave.

notas de aula verso 79 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL

99

Escolha da trilha e resistncia ao ataque

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

A criptanlise diferencial outro conjunto de tcnicas para encontrar fraquezas


em construes criptogrficas, particularmente aplicvel a cifras de bloco. Consiste basicamente em explorar as relaes entre probabilidades de certos bits na
mensagem e sua relao com a probabilidade de outros bits no texto cifrado.
Dadas duas entradas X 0 e X 00 para uma cifra, calculamos sua diferena X e
verificamos a diferena entre as sadas Y 0 e Y 00 . Se a distribuio de Y for
muito distante de uniforme, podemos us-la para acelerar a busca pela chave.

Antes de mais nada relevante recordar que em aritmtica mdulo dois a


diferena entre dois nmeros igual ao ou exclusivo (0 0 = 0; 0 1 = 1;
1 0 = 1; 1 1 = 0).

notas de aula verso 79 - Jernimo C. Pellegrini

100

CAPTULO 6. NOES DE CRIPTANLISE

X = X 0 X 00 .

in
ar

Sejam X 0 e X 00 duas entradas para uma S-box. Estamos interessados na


diferena entre estas entradas, que denotamos

Calculamos tambm as sadas da S-box Y 0 = S(X 0 ) e Y 00 = S(X 00 ), e observamos a diferena


Y = Y 0 Y 00 .

lim

O par (X , Y ) chamado de diferencial.

Idealmente, tendo fixado um X , Pr[Y |X ] deveria ser igual a 1/2n para


qualquer Y . Isto infelizmente impossvel, como mostraremos adiante. Quando
esta probabilidade muito alta par algum diferencial (X , Y ), ela pode ser
usada para obter bits da chave.

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

A prxima tabela j mostra, para X 0 e X 00 , as sadas Y 0 e Y 00 e a diferena Y


(ainda com X fixo, igual a 0011).

notas de aula verso 79 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL


X = 0011
X 00
Y0
Y 00
0011 0010 0101
0010 1000 1101
0001 1101 1000
0000 0101 0010
0111 0100 1111
0110 1010 1100
0101 1100 1010
0100 1111 0100
1011 1110 1001
1010 0011 1011
1001 1011 0011
1000 1001 1110
1111 0111 0000
1110 0001 0110
1101 0110 0001
1100 0000 0111

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

Observamos as frequncias de cada cadeia de quatro bits em Y :


0101
0110
0111
1000
1011

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

A tabela a seguir mostra as frequncias para cada diferencial (X , Y ).

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

notas de aula verso 79 - Jernimo C. Pellegrini

102

CAPTULO 6. NOES DE CRIPTANLISE

in
ar

As frequncias que computamos para y = 0011 esto na linha 3.


Idealmente, gostaramos de construir uma S-box tal que para quaisquer X
e Y ,
1
Pr[Y |X ] = n ,
2
ou seja, tal que todas as entradas na tabela de frequncias sejam iguais a um.

Lema 6.3. Todas as entradas na matriz de distribuio de diferena so pares.


Alm disso, a soma das entradas em qualquer linha ou coluna igual a 2n .
Teorema 6.4. No existe S-box tal que para quaisquer X e Y ,
1
.
2n

lim

Pr[Y |X ] =

Demonstrao. Segue imediatamente do Lema 6.3.

Em nossa cifra, a sada Oi1 de uma rodada misturada com a chave k i


da prxima, para somente depois servir de entrada para as S-boxes da i-sima
rodada. A diferena entre duas entradas para I i , no entanto, no dependem da
subchave k i , de acordo com o prximo Teorema.

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)

as diferenas na sada da rodada i 1 e na entrada da rodada i. Ento I


depende somente de O , e no influenciada pela subchave k i .

Ve
rs

Demonstrao. O ou exclusivo das entradas



 

I 0(i) I 00(i) = O0(i1) k i O00(i1) k i
= O0(i1) O00(i1) ,

ou seja, independente da chave k i .

Queremos encontrar taxas de propagao em cada rodada, de forma que o


ou-exclusivo do diferencial na entrada de uma rodada seja o ou-exclusivo do diferencial de sada na rodada anterior, conseguiremos uma trilha de diferenciais.
Presumimos que as taxas de propagao em diferentes rodadas so independentes, e assim multiplicamos as taxas em cada rodada para obter a taxa de
propagao da trilha.
Suponha que duas mensagens tenham diferena m1 m2 = 0000 0000 0000 0110.
A diferena na entrada de S14 ser 0110. Nas outras S-boxes, a diferena de
entrada zero, e portanto a diferena de sada tambm o ser (m1 e m2 s
diferem no ltimo nibble). Podemos ento analisar a propagao das diferenas
traando uma trilha como fizemos na criptanlise linear.

notas de aula verso 79 - Jernimo C. Pellegrini

103

Ve
rs

Pr
e

lim

in
ar

6.3. CRIPTANLISE DIFERENCIAL

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 .

notas de aula verso 79 - Jernimo C. Pellegrini

104

CAPTULO 6. NOES DE CRIPTANLISE

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

Na sada de S22 teremos 0110 com probabilidade 4/16 = 1/4. Portanto,




3
1
Pr (I5..8
) = (I 3 /S33 ) = 0100|(O13..16
) = 0110 = (1/4)2 .
J em O3 temos

 4
1
1
=
,
4
256

lim



3
3
1
Pr (O5..8
) = (O9..12
) = 1100 (O13..16
) = 0110] =

Pr
e

muito maior que 1/2n = 1/65536.


No processo de criptanlise usamos pares de texto claro com este valor para
X .
A criptanlise diferencial termina de maneira parecida com a criptanlise
linear, identificando subchaves e verificando a frequncia da relao para cada
possvel subchave.
Usamos muitos pares de mensagens (m , m ) com diferena igual a 6 (ou
seja, 0000 0110).
gen_msg_dx (m, X ):
m0i mi X
retorne m0

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.

para cada subchave candidata k:


Fk 0
para cada tupla (c , c , Y )
O4 c k // desfazemos
4
O
c k
I4 S 1 (O4 ) // inversa da Sbox
4
4
I
S 1 (O
)
4
se I4 I
= Y
Fk Fk + 1

notas de aula verso 79 - Jernimo C. Pellegrini

6.4. CRIPTANLISE ALGBRICA

105

in
ar

A probabilidade de Y = 6 para a subchave correta 1/256, portanto basta


dividir cada elemento do vetor F por N e verificar os valores mais prximos de
1/256 = 0.00390625.
possvel mostrar que uma quantidade razovel de pares de texto claro
necessrios para que a criptanlise tenha sucesso aproximadamente
c
p

1
= 256.
(1/256)

lim

onde p a probabilidade que calculamos para o diferencial (em nosso exemplo,


1/256), e c uma constante pequena. Simulamos um ataque usando 800 pares
de texto claro gerados aleatoreamente (com os respectivos textos encriptados,
evidentemente). Esta quantidade mais que suficiente, j que

Pr
e

Simulando um ataque diferencial com esta cifra e com as mesmas chaves


usadas no ataque linear, obtemos os dados na tabela a seguir. Fk /n igual a
0.00375 para a chave correta o valor mais prximo de 1/256 = 0.00390625
dentre todos.

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

A criptanlise algbrica se d quando conseguimos representar a cifra como um


sistema de equaes (normalmente mdulo dois, mas no necessariamente), e
resolver o sistema.
Suponha que a chave em nossa rede de substituio e permutao seja gerada a partir de uma chave inicial k 0 = (KA KB KC KD KE ), onde KA , etc so
sequncias de quatro bits. Por exemplo,

notas de aula verso 79 - Jernimo C. Pellegrini

106

CAPTULO 6. NOES DE CRIPTANLISE

KB = 0110
KC = 1111
KD = 1010
ento
k 0 = 0001 0110 1111 1010.

in
ar

KA = 0001

lim

Suponha agora que o escalonamento de chaves seja feito da seguinte maneira:


k 1 = k0

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 .

Aqui A a negao de booleana de A, que o mesmo que 1 A (mod 2).


A rede inteira pode ser descrita ento como um sistema de equaes mdulo
dois.
Por exemplo, o bit c1
c1 = k15 O14 .

Mas como sabemos que o primeiro bit de uma S-box pode ser descrito em termos

notas de aula verso 79 - Jernimo C. Pellegrini

6.5. TCNICAS DE CRIPTANLISE RELACIONADAS

107

das entradas da S-box, temos


c1 = k15 I14 I24 I44

in
ar

I14 I24 I34


I14 I24 I34
I14 I34 I44
I14 I34 I44 .

6.5

lim

Reescrevemos cada Ij4 em funo de O3 e k 4 , e continuamos at termos descrito


completamente um sistema de equaes. Como as equaes tem grau trs, o
sistema difcil de resolver, mas em muitos casos possvel.

Tcnicas de criptanlise relacionadas

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:

Chave relacionada: semelhante tcnica de criptanlise diferencial, mas


tendo como objeto as pares de chaves ao invs de pares de texto claro.

Ve
rs

Notas

Criptanlise diferencial impossvel: semelhante criptanlise diferencial,


mas ao invs de procurarmos caractersticas diferenciais que tenham alta
probabilidade, procuramos caractersticas com probabilidade zero (ou seja,
que no deveriam acontecer).

A criptanlise linear foi introduzida por Mitsuru Matsui em 1993 em um artigo


explorando possveis ataque ao DES [32]. A criptanlise diferencial foi proposta
inicialmente por Biham e Shamir em 1991, usando como exemplo uma cifra
semelhante ao DES [33]. A apresentao para criptanlise linear e diferencial
semelhante em esprito quelas feitas por Stinson em seu livro [34] e por
Howard Heys em um relatrio tcnico [35]. Em 1994 Don Coopersmith, um dos
responsveis pela criao do DES na IBM, publicou um artigo [36] afirmando
que a IBM j em 1974 conhecia a tcnica de criptanlise diferencial, e apontou
medidas tomadas no projeto do DES para dificultar o sucesso desse tipo de
ataque. De acordo com Coopersmith, IBM e NSA decidiram manter diversos
objetivos de projeto do DES em segredo para no levar facilmente descoberta
de ataques como a criptanlise diferencial. Posteriormente Eli Biham, durante
seu doutorado, redescobriu a tcnica de criptanlise diferencial, possibilitando a

notas de aula verso 79 - Jernimo C. Pellegrini

108

CAPTULO 6. NOES DE CRIPTANLISE

recuperao de todos os bits da chave do DES. A tese de Biham foi transformada


em livro [37], em cujo prefcio se l1

in
ar

A criptanlise diferencial o primeiro ataque capaz de quebrar o


DES completo com 16 rodadas com complexidade menor do que
255 . A fase de anlise de dados computa a chave analisando cerca de
236 textos cifrados em tempo 237 . Os 236 textos cifrados so obtidos
durante a fase de coleta de dados, de um pool maior de 247 textos
claros escolhidos usando um critrio simples de repetio de bits que
descarta mais que 99.9% dos textos cifrados assim que so gerados.

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

Ex. 47 Use a tabela de aproximao linear exposta neste Captulo para


calcular:
a) Pr[X1 x4 = Y3 ]

b) Pr[X1 Y1 = 0]
c) Pr[X1 Y2 = 0]

d) Pr[X2 X3 Y2 Y3 = 0]

Ex. 48 A respeito da tabela de aproximao linear que calculamos:


a) Porque a primeira coluna e a primeira linha esto zeradas, exceto pela
posio (0, 0)? Isso uma propriedade especfica desta S-box ou algo que
deva ser verdade sempre?
1 Traduo

livre.

notas de aula verso 79 - Jernimo C. Pellegrini

6.5. TCNICAS DE CRIPTANLISE RELACIONADAS

109

b) Porque a soma de qualquer linha ou coluna sempre +8 ou 8?

in
ar

Ex. 49 Tente refazer o processo de criptanlise linear na cifra apresentada


neste Captulo, mas desta vez usando os bits 1 e 4 da entrada.

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.

Ex. 56 Considere a S-box descrita neste Captulo. Use-a para construir


redes de Feistel com duas, quatro e doze rodadas, e tente atac-las usando
criptanlise linear e criptanlise diferencial. (A funo interna da rede de Feistel deve ser a aplicao da S-box seguida de ou exclusivo com a subchave da
rodada).

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.

notas de aula verso 79 - Jernimo C. Pellegrini

110

CAPTULO 6. NOES DE CRIPTANLISE

Ex. 61 Faa a criptanlise de uma verso simplificada do DES e prossiga


aumentando a dificuldade da tarefa:
a) Uma nica rodada.

in
ar

b) Quatro rodadas, sem S-boxes (somente as permutaes).


c) Quatro rodadas completas.
d) Seis rodadas completas.

Ve
rs

Pr
e

lim

Ex. 62 Esboce o incio da criptanlise (linear ou diferencial) do AES.

Captulo 7

lim

Resumos Criptogrficos
(funes de hashing)

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

Funes de hashing (ou resumos criptogrficos) tem um papel anlogo, de certa


forma, ao dos geradores pseudoaleatreos: enquanto um PRG expande sua semente em uma sada indistinguvel de bits aleatreos, uma funo de hashing
comprime uma entrada (possivelmente de tamanho ilimitado) em um resumo
de tamanho fixo, mas de tal forma que seja difcil encontrar duas entradas com
a mesma sada.
Por ora definiremos formalmente funes de hashing que sejam resistentes
coliso, e nosso modelo ideal de funo de hashing ser uma funo f () para
a qual seja difcil encontrar x, x0 tais que f (x) = f (x0 ). Posteriormente, na
Seo 7.6, trataremos de outra idealizao de funes de hashing, chamada
de orculo aleatreo. O orculo aleatreo, embora seja um modelo teoricamente
muito bom, permitindo demonstraes que no seriam possveis de outra forma,
traz problemas conceituais em sua implementao prtica.
Em nossa definio de funo de hashing usaremos um algoritmo Gen, que
cria uma chave.
Definio 7.1 (Funo de hashing). Uma funo de hashing um par (Gen, H)
onde
Gen uma funo que determina uma chave a partir de um parmetro de
segurana n. Assim, Gen(1n ) = s, com s {0, 1}n
Se s foi gerada por Gen(1n ), ento h um polinmio p() tal que H cria
resumos com p(n) bits a partir de s e de uma entrada x de tamanho
arbitrrio:
H(s, x) = y
com x {0, 1} e y {0, 1}p(n) .

Usaremos H s (x) ao invs de H(s, x).


111

notas de aula verso 79 - Jernimo C. Pellegrini

112CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

Experimento 7.2 (HASH_COL(, A, n)).


hashing (Gen, H).

Neste experimento, a funo de

lim

s escolhida usando Gen;

in
ar

Consideraremos inicialmente funes de hashing onde a entrada no de


tamanho arbitrrio, mas de tamanho fixo (maior que o tamanho da sada).
Como definimos uma funo com domnio maior que o contradomnio, certamente haver x e x0 diferentes tais que H s (x) = H s (x0 ). Chamamos a isso
de coliso. Tentaremos construir funes de hashing que minimizem a probabilidade de coliso ou, de maneira mais precisa, funes para as quais a
probabilidade de coliso seja desprezvel.
Definimos a seguir a propriedade de resistncia a coliso para funes de
hashing.

s enviada para A;

O adversrio envia de volta dois textos, x e x0 ;

Pr
e

Se H s (x) = H s (x0 ) o adversrio teve sucesso e o resultado do experimento


um. Caso contrrio zero.
D

s Gen(1n )

1n
x, x0

Ve
rs

H s (x) = H s (x0 ) 1
H s (x) 6= H s (x0 ) 0

Definio 7.3 (Resistncia a coliso). Uma funo de hashing = (Gen, H)


resistente a coliso se para todo adversrio polinomial A existe uma funo
desprezvel negl tal que
Pr [HASH_COL(, A, n) = 1] negl(n)

H outras noes, mais fracas, de resistncia a coliso:


Resistncia de segunda pr-imagem: ao invs de enviar apenas s ao adversrio, enviamos s e um texto x (ou seja, enviamos um elemento da
pr-imagem de H(x), e pedimos ao adversrio que encontre um segundo
elemento da pr-imagem). O adversrio ter ento que encontrar outro
texto x0 que tenha o mesmo resumo de x na funo H s ;

notas de aula verso 79 - Jernimo C. Pellegrini

7.1. ATAQUES E O PROBLEMA DO ANIVERSRIO

113

in
ar

Resistncia de pr-imagem: Enviamos s e um resumo y para o adversrio.


Este y o resultado da aplicao de H(x), para algum x escolhido uniformemente. O adversrio deve encontrar algum x0 tal que H(x0 ) = y (ou
seja, dada a imagem H(x), o adversrio deve encontrar algum elemento
na pr-imagem de H(x)).
Proposio 7.4. Toda funo de hashing resistente a colises tem resistncia de segunda pr-imagem, e toda funo com resistncia de pr-imagem tem
resistncia de pr-imagem.

7.1

Ataques e o problema do aniversrio

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

Por exemplo, suponha que o tamanho


da sada de H seja 100 bits. Temos ento
N = 2100 . Se o adversrio tentar 2100 = 250 entradas, a probabilidade de
coliso
k(k 1)
k2
Pr[C]
4N
2N
250 (250 1)
(250 )2
Pr[C]
100
4(2 )
2(2100 )
1
1
Pr[C] .
4
2

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.

notas de aula verso 79 - Jernimo C. Pellegrini

114CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

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.

Construo: transformao de Merkle-Damgrd

lim

Se tivermos uma funo de hashing para entrada de tamanho fixo, podemos


us-la para entradas de qualquer tamanho usando uma transformao descrita
por Merkle e Damgrd.

Construo 7.5 (Transformao de Merkle-Dmgard). Uma funo de hashing


(Gen, h) tem entrada de tamanho fixo, igual a n bits.
A nova funo ser (Gen, H): a funo Gen permanece a mesma, e H s (x)
computada como segue.

Pr
e

h aceita entrada de n bits; quebramos x em k = 2|x|/n blocos diferentes,


cada um com n/2 bits. Daremos a estes blocos os nomes x1 , x2 , . . . , xk .
Adicione um ltimo bloco xk+1 , cujo contedo a representao do tamanho de x em binrio.

Usaremos hs em cada bloco (chamaremos cada aplicao de hs de passo.


Como cada bloco tem n/2 bits, em cada passo precisaremos de mais n/2
bits. No primeiro passo, usamos um valor arbitrrio z0 . Nos outros,
usamos a sada do passo anterior.
A sada do ltimo bloco H s (x).

Ve
rs

A Figura a seguir ilustra esta construo. Cada aplicao da funo hs (com


entrada de tamanho fixo) representada por trapzios e no retngulos, para
simbolizar o fato da entrada de hs ser duas vezes maior que sua sada.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

7.3. RESISTNCIA A COLISES COM DEXP

115

Pr
e

lim

in
ar

Demonstrao. Provaremos apenas que o Teorema vale quando as entradas


temo mesmo tamanho (ou, equivalentemente, quando H tem entrada de tamanho fixo).
Sejam x e x0 duas entradas diferentes de mesmo tamanho que colidem em
s
H . Sejam x1 , . . . , xk os k blocos da transformao de Merkle-Damgrd. Como
x 6= x0 , deve haver algum bloco onde xi 6= x0i .
0
Seja i o maior ndice de bloco tal que zi1 ||xi e zi1
||x0i so diferentes.

Ve
rs

Se i = k + 1 ento zk ||xk+1 e zk0 ||x0k+1 so cadeias diferentes para as quais


h coliso em hs (na figura acima isso significaria que no h mais blocos
direita).
Suponha ento que i < k+1. Neste caso, temos zi = zi0 . No bloco anterior
temos ento zi 1 ||xi e zi0 1 ||x0i colidindo.
Assim, uma coliso em H s implica em uma coliso em hs . Com isto torna-se
simples mostrar que se hs resistente a coliso, H 2 tambm o .

7.3

Resistncia a colises com dexp

A funo de hashing a seguir bastante simples e podemos demonstrar que


resistente a colises.
Construo 7.7. A funo de hashing (Gen, H) descrita a seguir tem entrada
de tamanho 2n e sada de tamanho n.
Gen(1n ): Escolha um primo q cuja representao tenha n bits e devolva
um grupo de ordem q com um gerador g e um elemento h do grupo:
s = hG, q, g, hi.

notas de aula verso 79 - Jernimo C. Pellegrini

116CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)


H s (m): como m tem 2n bits, pode ser interpretada como a concatenao
de dois nmeros x e y (mod q). Calcule
H s (m) = g x hy

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

Podemos usar A para construir um algoritmo DL que resolve o problema do


logaritmo discreto em tempo polinomial com probabilidade de sucesso e(n).

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)

Agora mostramos que quando A encontra coliso (x 6= x0 e H s (x) = H s (x0 ))


DL retorna logg h.
Primeiro observamos que quando h = 1 o resultado ser obviamente correto,
porque logg h = 0.
Para o caso em que h 6= 1, verificamos que H s (x1 ||x2 ) = H s (x01 ||x02 ) implica
que

Ve
rs

Seja d =
teramos

x02

g x1 hx2

= g x1 hx2

x1 x01

x02 x2

= h

(7.1)
.

(7.2)

x2 . Notamos que d 6 0 (mod q), porque se o fosse, ento


0

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)]

notas de aula verso 79 - Jernimo C. Pellegrini

7.4. SHA (SECURE HASH ALGORITHM)


1

= h, conseguimos o logaritmo de h na base g:


logg h =

(x1 x01 )d1

x01 )(x02

(x1

(mod q)
x2 )1

(mod q),

in
ar

Como g (x1 x1 )d

117

que a sada de DL.


Temos um algoritmo DL que resolve o problema do logaritmo discreto com
probabilidade e(n). Como presumimos este problema seja difcil, e() deve ser
desprezvel.

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.

SHA (Secure Hash Algorithm)

Pr
e

Em 1993 a NSA desenvolveu um algoritmo para que se tornasse padro para


resumos criptogrficos. O algoritmo foi chamado de Secure Hash Algorithm, que
passou por uma reviso em 1995, dando origem ao SHA-1.
O SHA-1 usado na forma da construo de Merkle-Damgrd e tem sada
de 160 bits. As operaes usadas so:
A B: operao de OU lgico bit-a-bit;
A B: operao de E lgico bit-a-bit;

A B: operao de ou exclusivo lgico bit-a-bit;


A: operao de negao lgica bit-a-bit;

Ve
rs

A + B: operao de soma mdulo 32;


rotlB (A): rotao dos bits de A esquerda por B posies.

O tamanho da entrada deve ser no mximo 264 1 bits.


Antes do clculo do resumo, o SHA-1 transforma a entrada em uma srie de
blocos de tamanho 512 bits:
y = x || 0z || l
onde l a representao binria do nmero de bits de x; l deve ter 64 bits. A
quantidade de zeros (z) deve ser suficiente para que y tenha tamanho divisvel
por 512. Por exemplo, suponha que a mensagem original tem 3000 bits. A
representao de 3000 em binrio 101110111000. Teremos ento a entrada
para o SHA-1 igual a
(x) 1 0000000 101110111000

notas de aula verso 79 - Jernimo C. Pellegrini

118CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)


ou seja, a mensagem x com 3000 bits seguida de um bit um, sete zeros e o
nmero 3000 em binrio. O total de bits 3072, que pode ser dividido em 6
blocos de 512 bits.

in
ar

Depois do ajuste no tamanho da entrada, o algoritmo a seguir usado em


y.

Ve
rs

Pr
e

lim

interprete y como M1 ||M2 || ||Mn (n blocos de 512 bits)


H0 67452301
H1 EFCDAB89
H2 98BADCFE
H3 10325476
H4 C3D2E1F0
para i de 1 a n:
interprete Mi como W0 ||W1 || ||W15 (16 palavras de 32 bits)
para t de 16 a 79:
Wt rotl1 (Wt3 Wt8 Wt14 Wt16 )
A H0
B H1
C H2
D H3
E H4
para t de 0 a 79:
tmp rotl5 (A) + ft (B, C, D) + E + Wt + Kt
ED
DC
C rotl30 (B)
BA
A tmp
H0 H0 + A
H2 H1 + B
H3 H2 + C
H4 H3 + D
H5 H4 + E
retorne H0 ||H1 ||H2 ||H3 ||H4
Cada Hi tem 8 dgitos hexadecimais. Como cada dgito hexadecimal pode
ser representado com 4 bits, cada Hi tem 8 4 = 32 bits. A sada do SHA-1
tem ento 32 5 = 160 bits.
O algoritmo usa constantes Kt e funes ft que dependem da rodada:

5A827999

6ED9EBA1

Kt =

8F1BBCDC

CA62C1D6

para
para
para
para

0 t 19
20 t 39
40 t 59
60 t 79

notas de aula verso 79 - Jernimo C. Pellegrini

7.5. CIFRAS DE BLOCO USANDO FUNES DE HASH: AARDVARK119


para
para
para
para

7.5

Pr
e

lim

A figura a seguir ilustra uma rodada do SHA-1.

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

Cifras de bloco usando funes de hash: Aardvark

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.

notas de aula verso 79 - Jernimo C. Pellegrini

120CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)


Construo 7.9 (Aardvark). Dadas uma cifra de fluxo S, uma funo de
hashing H e uma funo de hashing H 0 com chave, pode-se construir uma cifra
de bloco, com bloco do tamanho igual ao tamanho da sada de H.

Enck (m) retorna um par (c, c0 ), onde


c0

c =

H(m)
m S(Hk0 (c0 )).

Deck (c, c0 ) = c S(Hk0 (c0 ))

in
ar

Gen(1n ) retorna k R { 0, 1 } .

lim

Aps decriptar uma mensagem possvel realizar uma verificao adicional: c0


deve ser igual a H(m).

A demonstrao de segurana do Aardvark condicionada a quatro caractersticas de seus componentes:

Pr
e

H fortemente resistente a colises: difcil encontrar x, y tais que H(x) =


H(y).
H 0 resistente a fraude existencial.

S resiste a ataques de expanso: difcil expandir qualquer fluxo parcial


de S.
S e H 0 so independentes:

Pr(Hk0 (x)|k) = Pr(Hk0 (x)).

Ve
rs

O Teorema a seguir a demonstrao de segurana do Aardvark. A prova


detalhada pedida no Exerccio 39.
Teorema 7.10. Dados orculos para calcular Enck e Deck para uma chave k
desconhecida, difcil encontrar (m, c, c0 ) tais que Enck (m) = (c, c0 ) sem usar
um dos orculos para computar Enck (m) ou Deck (c, c0 ) diretamente
Demonstrao. (Rascunho) Suponha que possvel facilmente encontrar (m, c, c0 )
mencionados no enunciado. Ao faz-lo ou encontramos coliso em H, ou conseguimos fraude existencial em H 0 , ou S e H 0 tem alguma correlao que conseguimos explorar.

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

notas de aula verso 79 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

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.

Certamente, se f de mo nica, podemos calcular para ela um predicado


hard-core.

notas de aula verso 79 - Jernimo C. Pellegrini

122CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

in
ar

Se presumirmos que f um orculo aleatreo, conseguiremos demonstrar o


sigilo do protocolo: como f (m) um valor escolhido aleatoreamente, o adversrio no obtm dali qualquer informao. O melhor que pode fazer tentar
adivinhar m, escolhendo aleatoreamente m0 e depois verificando se f (m0 ) = y
atravs de uma consulta ao orculo. A probabilidade do adversrio sortear
m0 = m 1/2n , desprezvel em |m|.
O mtodo do Orculo Aleatreo difere do uso de funes pseudoaleatreas.
Em ambos os casos, idealizamos um esquema ou protocolo presumindo que h
uma funo f completamente aleatrea. Depois,

lim

para usar uma funo pseudoaleatrea F , trocamos f por F , mas somente


alguns participantes tero acesso chave k. No entanto, a chave parte
da funo: Fk funo de A em B, mas F uma famlia de funes.
Assim, o adversrio no tem acesso descrio da funo;
para usar o orculo aleatreo, trocamos f por uma funo de hashing real
H. Esta funo no indexada, e estamos dando ento uma descrio
sucinta completa da funo que ser usada na prtica (no h informao
secreta).

Propriedades do Orculo Aleatreo

Pr
e

7.6.1

O orculo aleatreo um modelo teoricamente muito poderoso: mostramos aqui


que uma funo concebida como orculo aleatreo tambm de mo nica e
resistente a colises.
Resistncia a colises

Todo orculo aleatreo funciona como uma funo de hashing resistente a colises.

Ve
rs

Teorema 7.11. Sejam um orculo aleatreo H e um adversrio polinomial A.


Seja n o maior tamanho de sada de H consultado por A. Ento A s poder
encontrar x, x0 tais que H(x) = H(x0 ) com probabilidade desprezvel em n.
Demonstrao. Observamos que o adversrio no pode fazer mais que uma
quantidade polinomial de consultas ao orculo. Sejam ento k a quantidade
de consultas feitas por A ao orculo e n o nmero de bits na sada de H.
Como H orculo aleatreo, sabemos que os valores yi consultados so
gerados aleatoreamente com distribuio uniforme. Temos ento A realizando
um ataque como o descrito na Seo 7.1. Sua probabilidade de sucesso ser
ento no mximo O(k 2 /2n ), desprezvel em n.

Funes de mo nica
Um orculo aleatreo funciona como uma funo de mo nica.
O Exerccio 75 pede a demonstrao do Teorema 7.12.

notas de aula verso 79 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

123

in
ar

Teorema 7.12. Seja H um orculo aleatreo. Sejam tambm x escolhido do


domnio de H com probabilidade uniforme e y = H(x) obtido por consulta ao
orculo. Qualquer adversrio polinomial A, de posse de y poder obter x com
probabilidade menor ou igual que uma funo desprezvel em n.
Podemos construir, a partir de um orculo aleatreo, uma famlia indexada
de funes de mo nica.
Teorema 7.13. Se H um orculo aleatreo ento F , definida a seguir, uma
funo de mo nica.
Fk (x) = H(k||x).

7.6.2

lim

Demonstrao.

Objees

Pr
e

H problemas conceituais no mtodo do Orculo Aleatreo que levaram muitos


tericos a rejeit-lo. Por outro lado, o modelo usado nas demonstraes de
segurana de diversos esquemas e protocolos usados na prtica. Esta Seo
resume os argumentos contra e a favor do uso do mtodo.

Notas

Ve
rs

A construo 7.7 de Chaum, Heijst e Pfitzmann [45].


Em 1996 Anderson e Biham criaram duas cifras para as quais era possvel
obter demonstrao condicional de segurana: BEAR e LION [46]. Ambas
usavam funes de hashing e cifras de fluxo. Pat Morin mostrou que ambas
eram suscetveis a um ataque de encontro no meio, e desenvolveu Aardvark [47],
semelhante em esprito mas imune quele ataque.
O modelo do orculo aleatreo foi inicialmente sugerido na conferncia CRYPTO
de 1986 por Amos Fiat e Adi Shamir em um trabalho sobre problemas relacionados a identificao e assinaturas [48]. Em uma das demonstraes de segurana
os autores afirmam que1
A prova formal de segurana neste abstract extendido presume que
n suficientemente grande e que f uma funo verdadeiramente
aleatrea.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

124CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

Exerccios

H s1,s2 (x) = H s1 (x)||H s2 (x)

in
ar

Ex. 63 (Katz/Lindell) Sejam (Gen1 , H1 ) e (Gen2, H2 ) duas funes de hashing,


e seja (Gen, H) a funo de hashing que combina as outras duas concatenando
suas sadas:

onde s1 obtido usando Gen1 e s2 obtido usando Gen2 .

a) Prove que para que H seja resistente a coliso, basta que uma das outras
duas funes o seja.

lim

b) O mesmo vale para resistncia de segunda pr-imagem e resistncia de


pr-imagem?
Ex. 64 Demonstre a Proposio 7.4.

Ex. 65 O Teorema 7.6 foi demonstrado apenas para duas entradas de


mesmo tamanho. Generalize a demonstrao mostrando que ele tambm vale
para duas entradas de tamanhos diferentes.

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

notas de aula verso 79 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

125

r S(l k1 )

l H 0 (r)

r S(l k2 )

in
ar

da chave) e calcula-se:

Dec(c): o texto encriptado dividido em partes esquerda (l) e direita (r),


da mesma forma que em Enc, e realiza-se o mesmo clculo feito em Enc,
invertendo apenas a ordem das chaves:
r S(l k2 )

l H 0 (r)

r S(l k1 )

A respeito da cifra LION,

lim

a) Desenhe um diagrama ilustrando o funcionamento da cifra.

b) Prove que a cifra funciona (ou seja, que Deck (Enck (m)) = m).

Pr
e

c) Mostre um ataque de encontro no meio para esta cifra.

Ex. 73 O que pode ser dito a respeito de funes homomrficas de hashing


e o Orculo Aleatreo?
Ex. 74 Mostre concretamente porque uma funo de hashing H construda
usando a transformao de Merkle-Damgrd no uma instncia de orculo
aleatreo (ou seja, mostre como distinguir H de um orculo aleatreo).
Ex. 75 Demonstre o Teorema 7.12.

Ve
rs

Ex. 76 Releia a descrio da cifra Aardvark, na Seo 7.5, e construa para


ela uma demonstrao de segurana usando o mtodo do Orculo Aleatreo.
Sua demonstrao ficou mais simples que aquela j dada no texto (e que no
depende do Orculo Aleatreo)?

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

126CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 8

lim

Cdigos de Autenticao de
Mensagens

Pr
e

A encriptao permite proteger mensagens de forma que no possam ser lidas


por entidades no autorizadas. O conceito de segurana, no entanto, no se
reduz privacidade apenas. Neste Captulo trataremos de autenticidade de
mensagens: se Alice recebe uma mensagem supostamente enviada por Bob,
como ela pode ter certeza de que Bob de fato o remetente?
Definio 8.1 (Esquema de Autenticao de Mensagem). Um esquema de autenticao de mensagem consiste de trs algoritmos:
Gen cria uma chave a partir de um parmetro de segurana n: Gen(1n ) = k,
com |k| n.

Mac recebe uma chave k, uma mensagem m e tem como sada um rtulo
t. Denotamos t Mack (m).

Ve
rs

Vrf recebe uma chave k, uma mensagem m, um rtulo t, e retorna um


(significando vlido) ou zero (significando invlido). Denotamos v
Vrfk (m, t).

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

notas de aula verso 79 - Jernimo C. Pellegrini

128

CAPTULO 8. CDIGOS DE AUTENTICAO DE MENSAGENS


Gen(1n ) escolhe k uniformemente ao acaso de {0, 1}n .
Mack (m) = Fk (m), desde que |m| = |k| = n.

in
ar

Vrfk (m, t) = 1 se e somente se |m| = |k| = |t| = n, e t = Mack (m). Em


outros casos, Vrf retorna zero.
Esta construo funciona apenas para mensagens de tamanho fixo.

Segurana de cdigos de autenticao de mensagens

lim

8.1

O nico ataque que faz sentido para cdigos de autenticao a fraude: um


adversrio no deve conseguir criar um rtulo sem a chave.
O Experimento MAC_FORGE(, A, n), que usaremos na definio de segurana
para esquema de autenticao de mensagens, descrito a seguir.
Experimento 8.3 (MAC_FORGE(, A, n)).

Pr
e

Uma chave k gerada por Gen(1n ).


O parmetro 1n enviado a A.

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

O resultado do experimento um se e somente se Vrfk (m, t) = 1 e m


/ Q.
D

s Gen(1n )

AMack
1n
m, t

Vrfk (m, t) = 1, m
/Q1

Definio 8.4 (Segurana de esquema de autenticao de mensagens). Um


esquema de autenticao de mensagens seguro (ou no-fraudvel por ataque
adaptativo de mensagem escolhida) se para todo adversrio polinomial A existe
uma funo desprezvel negl tal que
Pr[MAC_FORGE(, A, n) = 1] negl(n).

Teorema 8.5. A Construo 8.2 segura.

notas de aula verso 79 - Jernimo C. Pellegrini

8.1. SEGURANA DE CDIGOS DE AUTENTICAO DE MENSAGENS129

e(n) = Pr[MAC_FORGE(, A, n) = 1].

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

Quando A retorna (m, t), test faz o seguinte:

Obtm t0 = h(m) via O;

Se A nunca perguntou o MAC de m e se t = t0 , o resultado um. Seno


zero.

Se h Fk pseudoaleatrea com k escolhida ao acaso, T se torna igual ao


Experimento 8.3 com , e
Pr[T (Fk , 1n ) = 1] = Pr[MAC_FORGE(, A, 1n )] = e(n).

notas de aula verso 79 - Jernimo C. Pellegrini

130

CAPTULO 8. CDIGOS DE AUTENTICAO DE MENSAGENS

Se h realmente aleatrea, T igual ao Experimento 8.3 com , e


1
.
2n

in
ar

Pr[T (h, 1n ) = 1] = Pr[MAC_FORGE( , A, 1n )]


Assim,



Pr [T (Fk , 1n ) = 1] Pr [T (h, 1n ) = 1] e(n) 1 .
2n
1
2n

negl(n) e e(n)

lim

Como F pseudoaleatrea, existe negl tal que e(n)


negl(n) + 2n tambm desprezvel.

8.2

Extendendo MACs para tamanho varivel de


mensagem

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 ;

No CBC-MAC apenas a sada do ltimo bloco usada (na cifra de bloco


a sada de todos os blocos era concatenada). As sadas dos outros blocos
no podem ser mostradas, porque isto tornaria a construo insegura.

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

A Figura a seguir ilustra o CBC-MAC para mensagens de tamanho fixo.

notas de aula verso 79 - Jernimo C. Pellegrini

131

8.3.1

lim

in
ar

8.3. CBC-MAC

Mensagens de tamanho varivel

Pr
e

Da forma como descrevemos na ltima Seo, o CBC-MAC no seguro para


autenticar mensagens de tamanho varivel.
Teorema 8.7. A Construo 8.6 no segura para mensagens de tamanho
varivel.
Demonstrao. Seja = (Gen, Mac, Vrf) como na Construo 8.6. Sejam m1 , m2
duas mensagens com tamanho igual ao tamanho do bloco usado em Enc, e sejam
M1 , M2 os respectivos rtulos.

Dados (m1 , M1 ), (m2 , M2 ), um adversrio quer calcular o rtulo M3 de x =


m1 ||z.
Sabemos que Mi = Enck (mi ) e o rtulo de m1 ||z deve ser Enck (M1 z).

Ve
rs

Construmos agora a mensagem y = m2 ||(M1 z M2 ). Seu rtulo igual


ao de x, e assim o adversrio pode fraudar rtulos.

Para usar o CBC-MAC em mensagens de tamanho varivel, h trs modificaes com demonstrao de segurana:

Aplicar Fk sobre o tamanho de m, e usar o resultado como chave para o


CBC-MAC:
x Fk (|m|)
t Fx (m)

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 8. CDIGOS DE AUTENTICAO DE MENSAGENS

lim

in
ar

132

Ve
rs

Pr
e

Usar uma construo semelhante ao CBC-MAC de tamanho fixo, mas


prefixando a mensagem m com |m| (o seu tamanho).

Mudar a construo para que duas chaves sejam geradas (k1 e k2 ). Ao


calcular o MAC, primeiro usamos o CBC-MAC usando k1 , obtendo como
resultado t0 . Depois calculamos t = Fk2 (t0 ) e o rtulo t.

notas de aula verso 79 - Jernimo C. Pellegrini

133

lim

in
ar

8.4. HMAC

8.4

Pr
e

No demonstraremos a segurana destas trs construes.

HMAC

H uma maneira diferente de obter um cdigo de autenticao usando resumos


criptogrficos. Para gerar um rtulo para uma mensagem m e chave k, poderamos simplesmente concatenar a m e k, e calcular o resumo H s (m||k). Esta
ideia, se implementada diretamente desta forma, no segura. A Construo 8.8
descreve a implementao de MAC usando resumos de forma segura.

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.

Mac(s,k) (m) retorna


s
s
t = Hiv
(k opad)||Hiv
((k ipad)||m) .

Vrf(s,k) (m, t) simplesmente verifica se t = Mac(s,k) (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.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 8. CDIGOS DE AUTENTICAO DE MENSAGENS

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.

Aplicao: segurana CCA

At agora s construmos criptossistemas com nvel de segurana CPA. Nesta


Seo definimos segurana CCA e mostramos como usar MACs para construir
criptossistemas com segurana CCA.

Ve
rs

Experimento 8.9 (PRIV_CCA(, A, n)).


1. Uma chave k gerada por Gen(1n );

2. O adversrio recebe a entrada 1n e, podendo cifrar mensagens com Enck


e Deck , nos devolve duas mensagens m0 e m1 , ambas de mesmo tamanho;
3. Um bit b escolhido aleatoreamente, e a mensagem correspondente encriptada: c = Enck (mi ). Este texto cifrado (o desafio) enviado a A;
4. A, ainda podendo usar Enck e Deck , responde um bit b0 (o adversrio no
pode usar Deck em c);
5. O resultado do experimento um se b = b0 e zero em caso contrrio.

notas de aula verso 79 - Jernimo C. Pellegrini

8.5. APLICAO: SEGURANA CCA

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

Podemos usar um criptossistema CPA-seguro e um MAC para construir um


criptossistema CCA-seguro.
Construo 8.11 (Criptossistema com segurana CCA). Seja E = (GenE , Enc, Dec)
um criptossistema CPA-seguro e M = (GenM , Mac, Vrf) um esquema seguro
de autenticao de mensagens. Definimos o seguinte criptossistema:
Gen(1n ) usa GenE (1n ) e GenM (1n ) para determinar as duas chaves, ke e
km.
Encke,km (m) calcula c = Encke (m) e t = Mackm (c), e retorna hc, ti
Depois, decifra c

Decke,km (c, t) primeiro verifica se Vrfkm (c, t) = 1.


usando ke, retornando Decke (c).

Ve
rs

Teorema 8.12. Se E um criptossistema com segurana CPA e M um


esquema seguro de autenticao de mensagens, a Construo 8.11 aplicada a
E e M resulta em um criptossistema com segurana CCA.

Notas

A demonstrao do Teorema 8.12 pode ser obtida no livro de Katz e Lindell [1].

Exerccios

Ex. 77 Alm do CBC h algum outro modo de encriptao em bloco que


possa ser usado para construir MACs?
Ex. 78 Suponha que ao invs da Construo HMAC descrita neste Captulo, usemos o seguinte:

notas de aula verso 79 - Jernimo C. Pellegrini

136

CAPTULO 8. CDIGOS DE AUTENTICAO DE MENSAGENS

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

Gen(1n ) (sem mudanas)

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

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

(Este Captulo apenas um esboo)


A criptografia de chave privada permite proteger dados contra acesso no
autorizado (um arquivo encriptado s ser lido por quem conhea a chave usada
para encript-lo), e tambm oferece um mtodo para comunicao privada: duas
entidades podem se comunicar trocando mensagens encriptadas. H um problema, no entanto, que a criptografia de chave privada no resolve: se Alice e
Beto querem se comunicar, precisam estabelecer uma chave comum para que
possam usar ao encriptar sua comunicao. Supondo que no seja possvel um
encontro fsico, como determinar, pela primeira vez, a chave a ser usada?
At 1976 era consenso que a comunicao por canal seguro dependia de estabelecimento prvio de chave por algum outro canal seguro. Em 1976 um artigo
publicado por Whitfield Diffie e Martin Hellman [50] trouxe novas perspectivas para a Criptografia, descrevendo um mtodo para estabelecimento de chave
que no necessita de canal seguro previamente estabelecido. Nos anos que se
seguiram diversos criptossistemas assimtricos foram propostos, dentre os quais
o mais conhecido provavelmente o RSA de Rivest, Shamir e Adelman.

9.1

Protocolos criptogrficos

Um protocolo criptogrfico uma descrio de como atores diferentes podem


realizar uma computao em conjunto trocando mensagens. Neste Captulo
abordaremos apenas o protocolo de Diffie e Hellman para estabelecimento de
chaves, que funciona com dois participantes, e usaremos uma definio de segurana elaborada especificamente para um tipo de protocolo. Uma definio
mais detalhada de protocolo ser dada no Captulo 11.

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

notas de aula verso 79 - Jernimo C. Pellegrini

138

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

Experimento 9.1 (KE_EAV(, A, n)).

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.

1. Duas entidades A e B, ambas conhecendo n, executam o protocolo .


Todas as mensagens trocadas entre A e B so guardadas em uma lista M .
Ambos devem calcular uma chave k (que no includa na lista M ).

lim

2. Um bit aleatreo b escolhido. Se b = 0, k 0 escolhida uniformemente ao


acaso. Se b = 1, k 0 = k.
3. A lista de mensagens M e a chave k 0 so enviadas ao adversrio A.
4. A envia um bit b0

5. O resultado do experimento um se b = b0 ou zero em caso contrrio.

Pr
e

Definio 9.2 (Segurana para protocolo de estabelecimento de chaves). Um


protocolo de estabelecimento de chaves seguro se para todo adversrio polinomial A existe uma funo desprezvel negl tal que
Pr[KE_EAV(, A, n) = 1]

1
+ negl(n).
2

Protocolo Diffie-Hellman para estabelecimento


de chaves

Ve
rs

9.3

Esta noo de segurana adequada a protocolos de estabelecimento de


chaves: como h apenas dois atores e presumimos que h confiana mtua, s
temos que nos preocupar com a possibilidade de obteno da chave por um
adversrio que no participa do protocolo.

O protocolo de estabelecimento de chaves de Diffie e Hellman usa um algoritmo


G que, dado um parmetro n, retorna a descrio de um grupo cclico G de
ordem q tal que q tem n bits, e um gerador g de G.
Construo 9.3 (Protocolo de Diffie e Hellman para estabelecimento de chaves). Dois participantes, A e B, estabelecem uma chave simtrica da seguinte
maneira:
A usa G para obter (G, q, g)

A escolhe x R Zq e calcula h1 = g x
A envia (G, q, g, h1 ) para B

notas de aula verso 79 - Jernimo C. Pellegrini

9.3. PROTOCOLO DIFFIE-HELLMAN PARA ESTABELECIMENTO DE CHAVES139


B escolhe y R Zq e calcula h2 = g y .

A recebe h2 e determina a chave secreta kA = hx2 .

in
ar

B envia h2 para A e determina a chave secreta kB = hy1 .

Ao final da execuo do protocolo, A como B tem chaves secretas kA e


Estas chaves so iguais, porque
kA = hx2 = (g y )x = g xy
kB = hy1 = (g x )y = g xy .

B.

Pr
e

lim

importante observar que o protocolo no especifica nada a respeito do


grupo, exceto que q deve ter n bits. Com isso possvel usar diferentes grupos
na construo prtica do protocolo. Um exemplo o EC-DH, onde so usados
pontos em uma curva elptica.
Um requisito evidente do Diffie-Hellman que o problema do Logaritmo
Discreto seja difcil caso contrrio qualquer um que observe as mensagens
trocadas poder inferir a chave. Este , no entanto, apenas necessrio. Podemos
identificar outro problema, relacionado ao logaritmo discreto, que captura a
essncia da dificuldade do protocolo. Este problema leva o mesmo nome do
protocolo.
Definio 9.4 (Problema de Diffie-Hellman). Dados um grupo cclico G e um
gerador g gerados por um algoritmo G(1n ), denotamos
DHg (a, b) = g ab .

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.

H algoritmos G para os quais no se conhece algoritmo eficiente para resolver


CDH ou DDH (mas no h tampouco prova de que no existam).
O que demonstramos ento que o protocolo de Diffie-Hellman seguro se
o problema difcil para um algoritmo 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.

notas de aula verso 79 - Jernimo C. Pellegrini

140

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

in
ar

Demonstrao. Supomos que o grupo G usado no experimento 9.1 foi gerado


por um algoritmo G.
O bit b escolhido ao acaso, ento Pr[b = 0] = 1/2.


Pr KE_EAV(, A, n) = 1

 1


1
=
Pr KE_EAV(, A, n) = 1|b = 1 + Pr KE_EAV(, A, n) = 1|b = 0 .
2
2
No experimento KE_EAV o adversrio recebe k 0 , que pode ser um elemento aleatreo do grupo ou a chave. Assim, A pode ter, com igual probabilidade:
(G, q, g, h1 , h2 , g xy ), ou

(G, q, g, h1 , h2 , k 0 ), sendo que k 0 foi escolhida aleatoreamente.

Ve
rs

Pr
e

lim

Distinguir entre ambos exatamente resolver o problema Diffie-Hellman decisional:




Pr KE_EAV(, A, n) = 1

 1


1
= Pr KE_EAV(, A, n) = 1|b = 1 + Pr KE_EAV(, A, n) = 1|b = 0
2
2

 1


1
x y xy
= Pr A(G, q, g, g , g , g ) = 1 + Pr A(G, q, g, g x , g y , g z ) = 0
2
2

 1


1
x y xy
= Pr A(G, q, g, g , g , g ) = 1 + Pr 1 A(G, q, g, g x , g y , g z ) = 1
2
2



1 1 
x y xy
= +
Pr A(G, q, g, g , g , g ) = 1 Pr A(G, q, g, g x , g y , g z ) = 1
2 2



1 1 
+ Pr A(G, q, g, g x , g y , g xy ) = 1 Pr A(G, q, g, g x , g y , g z ) = 1 .
2 2
Como g gerador de G, g z distribudo uniformemente no grupo se z for
uniformemente distribudo em Zq .
Se o problema Diffie-Hellman decisional difcil para G, ento existe negl
desprezvel tal que





Pr A(G, q, g, g x , g y , g xy ) = 1 Pr A(G, q, g, g x , g y , g z ) = 1 negl(n).
Conclumos que


 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.

notas de aula verso 79 - Jernimo C. Pellegrini

9.4. CRIPTOSSISTEMAS ASSIMTRICOS

9.3.1

141

Ataque de homem-no-meio

Apesar de seguro de acordo com a Definio 9.9 o Diffie-Hellman, como proposto


originalmente, suscetvel a um ataque de homem-no-meio:

A repassa a descrio alterada (G, q, g, h3 ) para B.

in
ar

O adversrio A recebe a descrio (G, q, g, h1 ) vinda de A e calcula z R


Zq , h3 = g z .

B escolhe y, computa h2 e determina kB = hy3 = g yz envia de volta


h2 = g y .
A agora tem a chave kB = hz2 = g yz .
A recebe h3 e computa kA = hx3 = g xz .
A tem tambm a chave kA = hz1 = g xz .

lim

A impede que h2 siga para A, e envia h3 para A.

9.4

Pr
e

Por ser vulnervel a este ataque o protocolo Diffie-Hellman no usado na


prtica em sua formulao original, mas ainda assim a base para diversos
outros protocolos.

Criptossistemas Assimtricos

O protocolo Diffie-Hellman no exatamente um criptossistema assimtrico: ele


apenas permite estabelecer um canal seguro para comunicao entre duas partes
(oferecendo assim parte da funcionalidade dos criptossistemas assimtricos). No
entanto, os criptossistemas assimtricos so definidos de forma diferente: cada
participante tem uma chave pblica e uma privada, e estas chaves so usadas
para que ambos efetivamente se comuniquem.

Ve
rs

Definio 9.6 (Criprossistema assimtrico). Um criptossistema assimtrico


consiste de trs algoritmos:
Gen, que aceita um parmetro de segurana n e gera um par de chaves
(pk, sk) A primeira chamada de chave pblica e a segunda de chave
secreta.
Enc, randomizado, que aceita uma chave pblica pk, uma mensagem m e
calcula um texto cifrado c.
Dec, determinstico, que aceita uma chave privada sk, um texto cifrado c
e retorna uma mensagem m.

Requeremos por hora1 que Decsk (Encpk (m)) = m.


Enquanto para criptossistemas simtricos o sigilo perfeito implica em problemas prticos, para os criptossistemas assimtricos o sigilo perfeito absolutamente impossvel.
1 Mais

adiante admitiremos que Dec falhe com probabilidade desprezvel.

notas de aula verso 79 - Jernimo C. Pellegrini

142

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

9.4.1

F Funes de mo nica com segredo

in
ar

A Definio 9.6 diferente da Definio 2.1: o algoritmo Gen no cria apenas


uma chave, mas duas. Uma usada para encriptar e outra para decriptar
mensagens.
Definio 9.7 (Permutao de mo nica com segredo). Uma permutao de
mo nica com segredo uma tupla de algoritmos (Gen, Samp, f, Inv):
Gen retorna duas chaves, I e td.

(Gen0 , Samp, f ) uma famlia de permutaes de mo nica

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

Nesta seo definimos segurana CCA para critpossistemas de chave pblica.


Experimento 9.8 (PUB_CCA(, A, n)).

1. Gen(1n ) usado para determinar pk, sk.


2. O adversrio recebe pk e acesso de orculo a Decsk .
3. A retorna duas mensagens, m0 , m1 , do mesmo tamanho.

4. Um bit aleatreo b escolhido e mk encriptada com Encsk e enviada a


A.

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

O criptossistema de Elgamal tem como base o problema DDH.


Construo 9.10 (Criptossistema Elgamal).

notas de aula verso 79 - Jernimo C. Pellegrini

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.

Enc dada a chave pblica pk = hG, q, g, hi e a mensagem m G, escolha


y R Zq e devolva
g y , hy m.

A funo Dec opera corretamente:

Pr
e

c2
hy m
=
cx1 (g y )x
(g x )y m
= xy
g
g xy m
= xy
g
=m.

lim

Dec: dada a chave sk = hG, q, g, xi, e o texto cifrado c = hc1 , c2 i, a funo


Dec retorna
c2
.
cx1

Exemplo 9.11 (Operao do criptossistema de Elgamal). Comeamos supondo


que G escolheu G = Z17 com g = 5. Escolhemos x = 9, e portanto h = 59
(mod 17) = 12.
pk = (G, 17, 5, 12)
sk = (G, 17, 5, 9).
Para encriptar 15, escolhemos y = 3 e

Ve
rs

Encpk (15) = (53 , 123 15)

(mod 17) = (6, 12)

Para decriptar (6, 12):

Decsk (6, 12) =

12
69

(mod 17) = 15.

Uma caracterstica notvel do criptossistema de Elgamal que ele no


determinstico (um elemento y escolhido aleatoreamente no procedimento de
encriptao).
Outro fato importante que no Elgamal, a mensagem um elemento de um
grupo, e o texto encriptado consiste de dois elementos. Dizemos que o Elgamal
tem um fator de expanso de dois para um.
Teorema 9.12. Se o problema DDH for difcil para G, ento o criptossistema
de Elgamal (Construo 16.9) tem segurana contra ataques de texto cifrado
conhecido.

notas de aula verso 79 - Jernimo C. Pellegrini

144

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

9.7

Criptossistema de Rabin

in
ar

Teorema 9.13. O criptossistema Elgamal homomrfico para multiplicao


em M e C.

O criptossistema mostrado a seguir foi proposto por Michael Rabin em 1979.


Em essncia, encriptar no Rabin elevar ao quadrado, e decriptar calcular
raiz mdulo N .
Construo 9.14 (Criptossistema de Rabin).

Encpk (m) = m2 (mod N )

Decsk (c) = c (mod N )

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

Dados primos p, q com N = pq, e y = x2 (mod N ), computar a raiz a


fcil quando se tem a fatorao de N , mas difcil caso contrrio. De fato,
no conhecemos algoritmo polinomial para computar tais razes sem conhecer

a fatorao de N . No entanto, sabendo que N = pq podemos determinar y


(mod pq):

Calculamos r1 = y (mod p) e r2 = y (mod q). Estas razes podem ser


calculadas eficientemente quando p, q 3 (mod 4).
As quatro razes quadradas de y mdulo N podem ento ser encontradas
resolvendo-se os quatro sistemas, que podem ser resolvidos usando o Teorema
Chins do resto (Teorema B.21):
(mod p),

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).

Exemplo 9.15 (Encriptando e decriptando com Rabin). Sejam p = 3 e q =


7. Temos N = 21. Para encriptar m = 11, calculamos 112 (mod 21) = 121
(mod 21) = 16.
Para decriptar, calculamos

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).

notas de aula verso 79 - Jernimo C. Pellegrini

9.7. CRIPTOSSISTEMA DE RABIN

145

As solues para este sistema so 4, 10, 11, 17 note que o 11 est entre elas.

Experimento 9.16 (PUB_EAV(A, , n)).

lim

in
ar

A segurana do criptossistema de Rabin se sustenta na suposio de que


um problema (encontrar a raiz quadrada de um nmero mdulo N sem sua
fatorao) seja difcil.
Reduziremos este problema ao de quebrar o criptossistema (ou seja, mos
traremos que se o Rabin puder ser quebrado, ento podemos encontrar x
(mod N ) sem saber a fatoraode N ). A reduo trivial: quebrar o Rabin
significa exatamente encontrar c (mod N ) (veja a definio de Dec). Assim,
ao quebrar o criptossistema, conseguimos calcular razes quadradas mdulo N
sem conhecer a fatorao de N .
fcil verificar agora o que j mencionamos: um criptossistema assimtrico
como o Rabin no pode ter sigilo perfeito: a chave pblica N contm toda a
informao necessria para obter a chave privada (p, q): basta fatorarmos N .
Acontece que sabemos que no conhecido algoritmo eficiente para obter a
fatorao de N .
1. O par de chaves (pk, sk) gerado por Gen(1n ).

Pr
e

2. Envie pk para A.

3. A devolve m0 , m1 , ambas de mesmo tamanho.

4. Um bit b escolhido aleatoreamente e uma das mensagens encriptada:


c Encsk (mb ).
5. c enviada a A
6. Aenvia b0 de volta

7. Se b = b0 o resultado do experimento um. Caso contrrio, zero.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

146

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

9.8

RSA

(mod (N ))

lim

ab 1

in
ar

O RSA provavelmente um dos criptossistemas mais conhecidos.


A funo de encriptao no RSA funciona em ZN elevando a mensagem a
um expoente b (ou seja, c = mb (mod N )), e decriptar o processo contrrio:
1
calculamos m = cb . Assim, temos dois expoentes: b pblico (para que todos
possam encriptar) e a = b1 privado (para que apenas o destinatrio possa
decriptar).
Para que estas operaes funcionem necessrio escolher os expoentes de
um conjunto com uma propriedade especial: queremos que b tenha um inverso,
por isso escolhemos tanto a como b de um grupo de unidades2 . Se escolhermos
o grupo de unidades3 Z(N ) , vemos que

e portanto, pela definio de congruncia, existe algum inteiro k tal que


ab = k(N ) + 1.

Pr
e

Conseguiremos ento encriptar (mb ) e decriptar (ca ) obtendo a mensagem original4 :


(mb )a mk(N )+1
(m
k

(N ) k

1 m
m

) m

(mod N )
(mod N )

(mod N )

(mod N ).

Ve
rs

O valor de (N ) no RSA sempre (p 1)(q 1), porque N o produto dos


dois primos p e q.
A Construo 9.19 descrita muitas vezes como a verso de livro-texto do
RSA, por ser normalmente usada em livros didticos na descrio do criptossistema RSA. Esta construo, no entanto, determinstica e consequentemente
insegura.
Construo 9.19 (Criptossistema RSA (verso de livro-texto)).
Gen(1n ):

escolha primos p 6= q com n bits cada


N pq
escolha aleatoreamente 1 < b < (N ), coprimo com N
a b1 (mod (N ))
retorne h(N, a), (N, b)i

2 Uma unidade em um anel um elemento que tem inverso multiplicativo. Um grupo de


unidades formado pelas unidades do anel com sua operao multiplicativa. Veja a Definio B.76 no Apndice B.
3 Veja a Definio B.6 da funo (n) ( de Euler, ou funo tociente) no Apndice B.
4 Usamos nesta derivao o Teorema de Euler (Teorema B.27): se a e m so co-primos,
ento a(m) 1 (mod m).

notas de aula verso 79 - Jernimo C. Pellegrini

9.8. RSA

147

Encpk (m) = EnchN,bi (m) = mb (mod N ).


Decsk (c) = DechN,ai (c) = ca (mod N ).

in
ar

O clculo de b1 pode ser feito usando o algoritmo estendido de Euclides5 .


Aparentemente as mensagens (e consequentemente os textos encriptados) devem
pertencer ao grupo de unidades ZN , mas um Exerccio no final deste captulo
pede a demonstrao de que o sistema funciona mesmo quando m
/ Zn \ ZN .
Exemplo 9.20. Sejam p = 101, q = 3. Temos N = 303 e (N ) = 200.
Queremos 1 < b < 200 coprimo com 200 = 23 52 , e escolhemos b = 7 (que
no divisvel por 2 nem por 5, e portanto pertence a Z200 ). Assim,
1

=7

(mod (N ))
(mod 200) = 143.

lim

a = 71

Temos ento
pk = (N, b) = (303, 7)
sk = (N, a) = (303, 143)

Pr
e

Para encriptar 53 (que pertence a Z303 ), fazemos


Encpk (53) = 537
Para decriptar 37,

(mod 303) = 275.

Decsk (275) = 275143

(mod 303) = 53.

Da mesma forma que identificamos a essncia da dificuldade do protocolo


Diffie-Hellman, tambm o faremos como RSA, definindo o problema RSA.

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

Esta Seo descreve alguns ataques ao RSA. Estes ataques no caracterizam


qualquer fraqueza do criptossistema, e somente so possveis quando o RSA
usado de maneira ingnua (ou incorreta).
5O

algoritmo extendido de Euclides dado no Apndice B

notas de aula verso 79 - Jernimo C. Pellegrini

148

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

Mdulo comum

c1 = mb1

(mod N )

lim

b2

in
ar

Suponha que ao distribuir chaves para um grupo de pessoas usemos sempre o


mesmo mdulo N : a i-sima pessoa recebe (ai , N ) e (bi , N ). Como ai bi 1
(mod (N )), qualquer uma destas pessoas pode fatorar N e consequentemente
calcular aj a partir de bj .
Ainda que se suponha que no grupo com estas chaves haja confiana mtua
e que o fato de um conhecer as chaves privadas de todos os outros no seja um
problema, o mdulo comum permite que um adversrio externo ao grupo decifre
mensagens sem precisar de qualquer chave privada. Suponha que m enviada
a duas pessoas com chaves (b1 , N ) e (b2 , N ):

c2 = m

(mod N ).

Como b1 e b2 so co-primos com N , so tambm co-primos entre si, e existem


x, y tais que xb1 + yb2 = 1, facilmente computveis. Um adversrio que conhea
c1 , c2 e N pode decifrar a mensagem porque
(mod N ).

Pr
e

cx1 cy2 = mxb1 myb2 = mxb1 +yb2 = m1 = m


b e m pequenos

Se b usado na chave pblica e m so pequenos um adversrio pode decriptar


m. Por exemplo, se b = 5 e m < N 1/5 , no h reduo modular na encriptao
porque m5 < N . Observando c = m5 (mod N ), e sabendo que b e m so
pequenos, um adversrio pode calcular c1/5 em Z (sem aritmtica modular) e
obter m.

9.8.2

Verso segura do RSA: OAEP

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.

notas de aula verso 79 - Jernimo C. Pellegrini

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

O criptossistema de Goldwasser-Micali fundamenta-se na dificuldade do problema do resduo quadrtico.

Teorema 9.22. Seja p primo. Se y resduo quadrtico mdulo p, ento y tem


exatamente duas razes quadradas mdulo p.

Ve
rs

Demonstrao. Seja x tal que (x)2 = y. Suponha que x x (mod p).


Teramos 2x 0 (mod p), e p|2x. Como p primo, teramos que p|2 ou p|x.
Mas p > 2 e p > x, e portanto
x 6 x

(mod p).

Consequentemente y deve ter necessariamente duas razes quadradas distintas


mdulo p.

Teorema 9.23. Seja n = pq, com p e q primos. Ento y resduo quadrtico


mdulo n se e somente se y (mod p) resduo quadrtico mdulo p e y (mod q)
resduo quadrtico mdulo q.
Demonstrao. O resultado segue imediatamente do Teorema B.16.

Teorema 9.24. Seja n = pq, com p e q primos. Se y resduo quadrtico


mdulo n, ento y tem exatamente quatro razes quadradas mdulo n.

notas de aula verso 79 - Jernimo C. Pellegrini

150

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

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

Observe que Jn+ contm os elementos do grupo de unidades Zn com smbolo


de Jacobi igual a um mdulo n.

lim

Teorema 9.26. Seja p primo. Ento exatamente metade dos elementos em Zp


resduo quadrtico.

Demonstrao. Seja g uma raiz primitiva (e portanto pertencente a Zp ). O


conjunto Zp
{ g 0 , g 1 , . . . , g p2 } .

Pr
e

Elevando todos os elementos ao quadrado, obtemos

{ 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.

Demonstrao. H (p 1)/2 resduos quadrticos em Zp e (q 1)/2 resduos


quadrticos em Zq . Como p e q so primos, isso significa que h exatamente6
(p 1)/2 nmeros tais que (x|p) = +1,

Ve
rs

(p 1)/2 nmeros tais que (x|p) = 1,


(q 1)/2 nmeros tais que (x|q) = +1, e
(q 1)/2 nmeros tais que (x|q) = 1.

O smbolo de Jacobi (x|pq) ser um quando


  
x
x
= +1,
p
q

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

de que tanto p como q so mpares, por isso as quantidades listadas so inteiras.

notas de aula verso 79 - Jernimo C. Pellegrini

9.9. GOLDWASSER-MICALI

151

1/4 de nmeros tais que (x|p) = (x|q) = 1. No so resduos quadrticos


mdulo pq, mas tem (x|pq) = +1;

in
ar

1/4 de nmeros tais que (x|p) = (x|q) = +1. Estes so resduos quadrticos mdulo pq.

Se escolhermos uniformemente um elemento x R Jn+ , a probabilidade de x


ser resduo quadrtico ser 1/2. Como no se conhece algoritmo eficiente para
determinar, sem a fatorao de n, se x de fato resduo quadrtico mdulo n,
temos uma funo de mo nica.

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).

Enc(x,n) (m): a mensagem m interpretada como uma sequncia de bits


mi . Para cada bit mi da mensagem, escolha a R Zn e calcule
ci = a2 xmi

Decp,q (c): o texto c interpretado como uma sequncia de bits ci . Para


cada bit ci ,
(
0 se ci resduo quadrtico (mod n),
mi =
1 se ci caso contrrio.

notas de aula verso 79 - Jernimo C. Pellegrini

152

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

in
ar

Por se basear no problema do resduo quadrtico, no h a necessidade de


demonstrar segurana de bit (todo bit encriptado seguro, porque cada um
tratado individualmente). Este criptossitema, no entanto, no eficiente no
que tange ao espao utilizado: cada bit do texto claro representado como um
nmero com k bits no texto encriptado.
O criptossistema de Goldwasser-Micali tem a propriedade de encriptao
homomrfica, alm de ser aleatorizado.

Teorema 9.31. A funo Enc no criptossitema de Goldwasser-Micali homomrfica para multiplicao em C e soma em M.

lim

Demonstrao. Sejam m0 e m1 duas mensagens, com Encpk (m0 ) = c0 e Encpk (m1 ) =


c1 . Ento
c0 c1 = a2 xm0 b2 xm1
= a2 b2 xm0 +m1

= (ab)2 xm0 +m1 ,

Notas

Pr
e

que um possvel valor para Encpk (m0 m1 ).

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

histria detalhada da Criptografia est no livro de Simon Singh [55].

notas de aula verso 79 - Jernimo C. Pellegrini

9.9. GOLDWASSER-MICALI

153

in
ar

no artigo de Shoup) so propostos, cada um sendo uma pequena variante do


anterior.
Eiichiro Fujisaki e outros [59] mostraram que o OAEP original garante segurana IND-CCA-2 apenas em algumas situaes, mas dentre elas est o uso
do criptossistema RSA.
O criptossistema de Shafi Goldwasser e Silvio Micali foi publicado em 1982 [9].
Foi o primeiro criptossistema probabilstico, e tambm um criptossistema homomrfico.

Exerccios

lim

Ex. 80 Mostre como generalizar o protocolo Diffie-Hellman de distribuio


de chaves para um nmero arbitrrio de participantes. Qual o custo computacional da sua construo, comparado com o do Diffie-Hellman para dois
participantes?
Ex. 81 O que acontece se usarmos o RSA para encriptar uma mensagem
m tal que m Z(N ) \ Z(N ) ?

Pr
e

Ex. 82 Prove o Teorema 9.13.

Ex. 83 Que verso do RSA tem propriedade de encriptao homomrfica?


Ex. 84 Descreva detalhadamente como decriptar mensagens usando o OAEP.
Ex. 85 No Teorema 9.24, mencionamos que se y resduo quadrtico mdulo pq, as razes quadradas de y mdulo p e mdulo q devem ser distintas
porque p e q so primos. Mostre que isso verdade.

Ex. 86 Implemente o criptossistema de Elgamal.

Ve
rs

Ex. 87 Implemente o criptossistema de Rabin.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

Ve
rs

Pr
e

lim

in
ar

154

Captulo 10

lim

Assinaturas Digitais

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Pr
e

Os cdigos de autenticao de mensagens descritos no Captulo 8 funcionam


da mesma forma que outras construes criptogrficas de chave privada: uma
nica chave usada pelo algoritmo, tanto para criar cdigos de autenticao
como para verific-los. Queremos poder rotular mensagens sem ter que oferecer
ao verificador a chave usada (porque no queremos que ele tambm possa rotular
as mensagens).
No cenrio da criptografia assimtrica, onde cada entidade tem uma chave
privada e uma pblica, podemos conceber esquemas que permitam a algum
gerar um rtulo (ou assinatura) com sua chave privada, de forma que qualquer
um possa verificar a assinatura usando apenas a chave pblica.
H uma consequncia importante disso: dado que a chave usada para assinar
uma mensagem de conhecimento de uma nica entidade, as assinaturas digitais
feitas desta forma tem a caracterstica de no repdio: o assinante no pode
negar a assinatura depois de produz-la. Isso no possvel com cdigos de
autenticao usando chave simtrica.

Ve
rs

Definio 10.1 (Esquema de assinaturas). Um esquema de assinaturas consiste


de trs funes (Gen, Sign, Vrf) computveis em tempo polinomial:
Gen(1n ) cria um par de chaves (pk, sk). Dizemos que pk a chave pblica
e que sk a chave secreta (ou privada). Ambas as chaves devem ter
tamanho no mnimo igual a n, e deve ser possvel determinar n apenas
inspecionando pk ou sk.

Signsk (m) assina a mensagem m usando a chave sk, retornando uma


assinatura .

Vrfpk (m, ) retorna um (significando vlida) ou zero (significando invlida).

necessrio que para todo n, para todo par (pk, sk) gerado por Gen(1n ) e
toda mensagem m,
Vrfpk (m, Signsk (m)) = 1.
155

notas de aula verso 79 - Jernimo C. Pellegrini

156

CAPTULO 10. ASSINATURAS DIGITAIS

10.1

Segurana

in
ar

Assim como cdigos de autenticao de mensagens, as assinaturas digitais devem


ser consideradas seguras desde que no possam ser fraudadas. Essencialmente,
entendemos por fraude a obteno de assinatura sem acesso chave privada que
supostamente seria necessria para faz-lo (formalizaremos esta noo de diferentes maneiras). Resumimos a seguir trs aspectos da segurana de assinaturas
digitais que usaremos na formulao das definies de segurana.
Quanto aos pares de mensagem e assinatura aos quais o adversrio possa ter
acesso, identificamos trs casos:

lim

RMA (random message attack): o adversrio s tem acesso a mensagens


sorteadas aleatoreamente com suas respectivas assinaturas;

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

CMA (chosen message attack): o adversrio pode escolher mensagens para


que sejam assinadas, aps conhecer a chave pblica do assinante.
Tambm observamos diferena entre tipos de fraude:
Resistncia a fraude existencial: quando o adversrio consegue assinar
uma mensagem que nunca tenha sido assinada antes pelo assinante, tendo
apenas a chave pblica, mas no tem poder para escolher a mensagem,
dizemos que o ataque uma fraude existencial.

Ve
rs

Resistncia forte a fraude existencial: suponha que o adversrio consiga


gerar uma nova assinatura em uma mensagem j assinada anteriormente
(mas a assinatura gerada diferente da original). Dependendo do contexto
podemos querer impedir que estas assinaturas sejam geradas. Dizemos que
esquemas de assinatura que resistam a este tipo de fraude tem resistncia
forte contra fraude existencial.

O nmero de vezes que um esquema de assinaturas pode ser usado tambm


define outro aspecto da segurana desses esquemas.
nica assinatura: h esquemas que s so seguros se a chave secreta for
usada para uma nica assinatura. Para gerar mais assinaturas, necessrio gerar um novo par de chaves;
Nmero ilimitado de assinaturas: h tambm esquemas que podem ser
usados sem limite para o nmero de assinaturas.

Estes trs aspectos (com trs, dois e dois casos cada um) so independentes,
e portanto definem doze casos.

notas de aula verso 79 - Jernimo C. Pellegrini

10.1. SEGURANA

10.1.1

157

Segurana RMA

Experimento 10.2 (SIG_FORGE_RMA(, A, n)).


1. k mensagens m1 , m2 , . . . , mk so escolhidas uniformemente.
2. Gen(1n ) usada para obter (pk, sk).
3. As mensagens so todas assinadas com sk: i Signsk (mi ).

5. A retorna (m, ).

lim

4. A recebe pk e todos os pares (mi , i )

in
ar

A noo mais fraca de segurana que formalizamos a de mensagens aleatreas,


onde o adversrio no controla, de forma alguma, as assinaturas s quais tem
acesso.

6. A sada do experimento um se e somente se Vrfpk (m, ) = 1 e m


/
{ m1 , m2 , . . . , mk }.
A

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

Definio 10.3 (Segurana RMA para esquema de assinaturas digitais). Um


esquema de assinaturas = (Gen, sign, Vrf) seguro contra ataques com mensagens aleatreas se para todo adversrio polinomial A existe uma funo desprezvel negl() tal que
Pr[SIG_FORGE_RMA(, A, n) = 1] negl(n).

Se ltimo passo do experimento for modificado da seguinte maneira:


A sada do experimento um se e somente se Vrfpk (m, ) = 1 e (m, )
/
{ (m1 , 1 ), (m2 , 2 ), . . . , (mk , k ) }.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

158

CAPTULO 10. ASSINATURAS DIGITAIS

10.1.2

Segurana KMA

Experimento 10.4 (SIG_FORGE_KMA(, A, n)).

in
ar

A prxima definio de segurana mais forte. Segurana KMA (contra ataques


com mensagens conhecidas) implica em segurana RMA.
1. A recebe 1n e escolhe um conjunto M = { m1 , . . . , mk } de mensagens.
2. Gen(1n ) usada para obter (pk, sk).

3. Cada mensagem assinada com sk: i Signsk (mi )


4. A recebe pk e as assinaturas i .
5. O adversrio retorna (m, ).

lim

6. A sada do experimento um se e somente se Vrfpk (m, ) = 1 e m


/M
(ou seja, o adversrio no pediu a assinatura de m ao orculo).

Pr
e

1n

(m1 , . . . , mk )

pk, (1 , . . . , k )
(m, )

(sk, pk) Gen(1n )


i Signsk (mi )

Ve
rs

Vrfpk (m, ) = 1
m
/ { m1 , m2 , . . . , mk }

Definio 10.5 (Segurana KMA para esquema de assinaturas digitais). Um


esquema de assinaturas = (Gen, sign, Vrf) seguro contra ataques adaptativos com mensagens conhecidas se para todo adversrio polinomial A existe uma
funo desprezvel negl() tal que
Pr[SIG_FORGE_KMA(, A, n) = 1] negl(n).

Se ltimo passo do experimento for modificado da seguinte maneira:


A sada do experimento um se e somente se Vrfpk (m, ) = 1 e (m, )
/
{ (m1 , 1 ), (m2 , 2 ), . . . , (mk , k ) }.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

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

3. O adversrio retorna (m, ).

4. A sada do experimento um se e somente se Vrfpk (m, ) = 1 e m


/M
(ou seja, o adversrio no pediu a assinatura de m ao orculo).
D

Pr
e

(pk, sk) Gen(1n )

ASign

1n , pk

M = assinadas
pelo orculo

(m, )

Vrfpk (m, ) = 1
m
/M

Ve
rs

Definio 10.7 (Segurana CMA para esquema de assinaturas digitais). Um


esquema de assinaturas = (Gen, sign, Vrf) seguro contra ataques adaptativos com mensagens escolhidas se para todo adversrio polinomial A existe uma
funo desprezvel negl() tal que
Pr[SIG_FORGE_CMA(, A, n) = 1] negl(n).

Se o Experimento SIG_FORGE_CMA for modificado tal que seu ltimo passo


seja da seguinte forma:
A sada do experimento um se e somente se Vrfpk (m, ) = 1 e (m, )
/
X (ou seja, o adversrio no obteve exatamente a assinatura para a
mensagem m a partir do orculo),

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.

notas de aula verso 79 - Jernimo C. Pellegrini

160

CAPTULO 10. ASSINATURAS DIGITAIS

10.1.4

F Aumentando a segurana de esquemas

10.2

in
ar

possvel, a partir de esquemas menos seguros, obter esquemas de assinaturas


mais seguros.

Esquema de assinaturas de Lamport

Um esquema de assinatura para o qual no se conhece ataque via algoritmo


quntico o de Lamport, onde cada chave usada para realizar uma nica
assinatura.

lim

Construo 10.8 (Esquema de assinaturas de Lamport). Seja f uma funo


de mo nica e z o tamanho da mensagem a ser assinada.
Gen(1n ): Construa duas matrizes X e Y , ambas com duas linhas e z
colunas. Primeiro, escolha aleatoreamente os elementos de X (que devem
ter n bits cada):
n
xi,j R { 0, 1 } .
Depois preencha Y aplicando f em cada elemento de X:

Pr
e

yi,j f (xi,j ).

A chave privada X, a matriz com os valores xi,j


A chave pblica Y , a matriz com os valores yi,j
Signsk (m): interprete a mensagem m como uma sequncia de bits m1 , m2 , . . . , mz .
A assinatura x1,m1 , x2,m2 , , xzmz .
Vrfpk (m, ) verifica se, para todo 1 i z, f (xi ) = yi,mi .

Ve
rs

Exemplo 10.9 (Esquema de assinaturas de Lamport). Sejam n = 3 e p(n) = n.


As chaves geradas so:




x1,0 x2,0 x3,0
y1,0 y2,0 y3,0
sk =
, pk =
.
x1,1 x2,1 x3,1
y1,1 y2,1 y3,1
Como n = 3 s podemos assinar mensagens de trs bits. Se m = 5 (101 em
binrio), a assinatura calculada usando as posies destacadas na chave:
!
x3,0
x1,0
x2,0
, = (x1,1 , x2,0 , x3,1 ).
sk =
x1,1
x2,1
x3,1

Para verificar esta assinatura, Vrf(101, (x1,1 , x2,0 , x3,1 )) verifica:


pk =

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.

notas de aula verso 79 - Jernimo C. Pellegrini

10.3. RSA

10.3

161

RSA

in
ar

O RSA tem uma propriedade interessante: se trocarmos o papel das chaves


pblica e privada, o resultado um esquema de assinaturas. Para assinar,
encriptamos com a chave privada. Para verificar uma assinatura, decriptamos
com a chave pblica
Construo 10.11 (Esquema RSA de assinaturas (verso livro-texto)).

Gen (o mesmo do criptossistema RSA) gera pk = (b, N ) e sk = (a, N ).


Signsk (m) = ma (mod N ).
Vrfpk (m, ) = 1 se e somente se m = b (mod N ).

Signsk (74) = 74143

lim

Exemplo 10.12 (Assinatura com RSA (livro-texto)). Sejam p = 101, q = 3.


Temos N = 303 e (N ) = 200, como no Exemplo 9.20. Escolhemos, como
naquele exemplo, b = 7 e a = 143.
Para assinar m = 74, encriptamos com a chave privada:
(mod 303) = 200.

Pr
e

Para verificar a assinatura de (m, ) onde m 74 e 200, deciframos com a


chave pblica:
Vrfpk (200) = 2007

(mod 303) = 74 = m.

Esta verso do esquema de assinaturas RSA no entanto insegura, como


mostramos a seguir.

Ve
rs

Fraude #1: assinando uma mensagem aleatrea Seja pk = (b, N ) uma


chave pblica RSA. O adversrio pode escolher uma assinatura ZN arbitrariamente e calcular m = b (mod N ). Est claro que Signpk (m) = , e o
adversrio conseguiu uma mensagem e assinatura vlidas. Embora este ataque
parea pouco interessante de um ponto de vista prtico (porque o adversrio no
pode escolher nem a assinatura e nem a mensagem), ele torna o RSA inseguro
de acordo com a Definio 10.7. Alm disso, pode haver situaes prticas nas
quais este ataque represente um problema.
Fraude #2: assinando uma mensagem arbitrria Seja pk = (b, N ) uma
chave pblica e m uma mensagem que o adversrio queira assinar. Seja m1
uma mensagem com assinatura 1 e m2 = m/m1 (mod N ). O adversrio de
alguma forma convence o detentor de sk a assinar m2 , obtendo 2 e calcula
Signsk (m) sem precisar usar a chave secreta sk: basta calcular = (1 2 )
(mod N ). Verificamos que esta realmente a assinatura de m. O algoritmo Vrf
verifica se b = m; pois ento temos:
b

(1 2 )b = (ma1 ma2 )b

ab
mab
1 m2 = m1 m2 = m

(mod N ).

notas de aula verso 79 - Jernimo C. Pellegrini

162

CAPTULO 10. ASSINATURAS DIGITAIS

10.3.1

Full-domain hash

Construo 10.13 (Full-domain hash usando RSA).

in
ar

H diversos esquemas de assinatura baseados no RSA que tentam remediar os


problemas descritos nesta Seo. Um deles bastante simples: ao invs de
aplicar diretamente o RSA para produzir assinaturas de mensagens m Zp ,
assinamos resumos criptogrficos de mensagens. O resultado o full-domain
hash, ou FDH, outro esquema de assinaturas. Pode-se demonstrar a segurana
do FDH usando o modelo do orculo aleatreo.
Gen(1n ) gera um par de chaves RSA e uma funo e hashing H com
entrada e sada de n bits.

lim

Signsk (m) = H(m)a (mod N )

Vrfpk (m, ) = 1 H(m) = b (mod N ).

O algoritmo Gen deve gerar uma funo de hashing de n em n bits, j que


o que ser necessrio para Sign e Vrf.
Verificamos agora o efeito desta medida nos ataques descritos.

Pr
e

Fraude #1: o adversrio precisaria computar m0 = b (mod N ) e depois


tentar encontrar m tal que H(m) = m0 . Se a funo de hashing H for
difcil de inverter, a dificuldade do ataque ser a mesma;
Fraude #2: para obter 1 nalgum dos experimentos que descrevemos, o
adversrio precisaria encontrar trs mensagens m, m1 , m2 tais que H(m) =
H(m1 )H(m2 ) (mod N ). Este ataque tambm deve ser difcil se H for
difcil de inverter.

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)

Pelo Teorema B.46, as solues para esta congruncia so as mesmas solues


para
gm

g ax+by
ax by

g g

ha ab

(mod q)
(mod q)
(mod q).

notas de aula verso 79 - Jernimo C. Pellegrini

10.4. ELGAMAL

163

= gy

(mod q)

(m ax)y 1

(mod q 1).

in
ar

No esquema Elgamal, a assinatura de uma mensagem exatamente o par (a, b)


acima, que esperamos s poder ser produzido eficientemente por algum de posse
da chave privada (e portanto de x). Assinar uma mensagem calcular (a, b) tais
que m ax + by (mod q 1). Isso feito da seguinte forma:

lim

Sendo x e y secretos, no conhecido algoritmo para resolver eficientemente a


congruncia na Equao 10.1.
Verificar a assinatura fcil, mesmo sem a chave secreta: basta que g m
a b
h a (mod q) para que a assinatura (a, b) seja vlida.
Desta forma chegamos ento ao esquema de assinaturas de Elgamal.
Construo 10.14 (Esquema de assinaturas de Elgamal).

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).

Devolva (a, b).

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

O DSA uma variante do esquema Elgamal de assinaturas adotado como padro


pelo NIST. As diferenas do Elgamal para o DSA podem ser resumidas em dois
pontos:
O DSA usa um grupo de ordem p, que deve ser um primo com tamanho l
mltiplo de 64 e 512 l 1024, e tambm um subgrupo de ordem q cujo
tamanho deve ser 160 bits.
No DSA a mensagem no usada diretamente na assinatura: um resumo
de 160 bits usado (o DSA foi proposto para ser usado com a funo
de hashing SHA-1, mas o SHA-1 posteriormente foi considerado inseguro;

notas de aula verso 79 - Jernimo C. Pellegrini

164

CAPTULO 10. ASSINATURAS DIGITAIS


pode-se usar SHA-2). Alm disso, a subtrao no clculo de b do Elgamal
trocada por uma adio. Temos ento
(mod q).

in
ar

b = (H(m) + ax)y 1

A Construo a seguir o esquema de assinaturas DSA.

Construo 10.15 (Esquema de assinaturas DSA). Seja H uma funo de


hashing com sada de 160 bits.

lim

Gen(): Escolha um grupo cclico G com ordem p e gerador g, sendo que p


representvel com 160 bits.
Escolha um subgrupo de G com ordem q, tal que o tamanho de q seja
mltiplo de 64 e esteja entre 512 e 1024.
x R Zq
h g x (mod p)
A chave pblica hG, q, g, hi.
A chave privada hG, q, g, xi.

Pr
e

Sign: dada a chave privada pk = hG, q, g, xi e a mensagem m G, escolha


y R Zq , sejam

a = g y (mod p) (mod q)
b =

(H(m) + ax)y 1

(mod q).

Devolva (a, b).

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).

O documento FIPS-186-2 descreve uma instancia do DSA onde o grupo


usado o de pontos em uma curva elptica sobre Zp . Este esquema conhecido
como ECDSA (Elliptic Curve DSA).

10.5

F Full-domain hash com qualquer permutao de mo nica

(Esta Seo no foi redigida ainda)


possvel trocar o RSA no FDH por qualquer famlia de permutaes de
mo nica, mantendo sua segurana.

notas de aula verso 79 - Jernimo C. Pellegrini

10.5. F FULL-DOMAIN HASH COM QUALQUER PERMUTAO DE MO NICA165

Notas

lim

in
ar

Assinaturas digitais usando pares de chaves pblica e privada foram idealizadas


inicialmente no mesmo artigo de Diffie e Hellman [50] onde expuseram a ideia
de criptossistemas assimtricos.
Neste texto seguimos a abordagem de Jonathan Katz [60] para a classificao
da segurana de esquemas de assinaturas.
O esquema de assinaturas de uma nica vez foi desenvolvido por Leslie Lamport, e descrito em um relatrio tcnico [61].
O livro de Jonathan Katz [60] contm um estudo detalhado sobre os fundamentos tericos das assinaturas digitais, e uma discusso detalhada do fulldomain hash.

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

Ex. 89 O padro DSA determinava inicialmente que a funo de hash


usada deveria ser exatamente o SHA-1 (a crena at ento era de que para
encontrar colises no SHA-1, que tem sada de 160 bits, um adversrio precisaria de 280 operaes). Desde ento diversos ataques ao SHA-1 foram descobertos
e publicados:
Em 2005, Xiaoyun Wang, Yiqun Lisa Yin, e Hongbo Yu mostraram [62]
como encontrar colises no SHA-1 usando 269 operaes.
Em 2008 Stphane Manuel publicou um ataque [63] ao SHA-1 que permite
obter colises com complexidade entre 251 e 227 .

A respeito disso, responda:

a) Explique as consequncias disso para o padro DSA original.

Ve
rs

b) Uma maneira de resolver o problema poderia ser usar a funo SHA256 e


usar apenas os 160 bits da esquerda da sada. No havendo ataques prticos
ao SHA256, esta soluo seria teoricamente melhor, pior ou semelhante ao
uso de outra (boa) funo de hash com 160 bits de sada?

Ex. 90 Implemente os esquemas de assinatura descritos neste Captulo.


Ex. 91 A seguinte afirmao bastante difundida:
Dado um criptossistema assimtrico qualquer, pode-se obter um esquema de assinaturas simplesmente mudando o papel as chaves pblica e privada: para assinar, basta encriptar com a chave privada e
para verificar basta decriptar com a chave pblica.

Mostre que isto um equvoco, usando como exemplos criptossistemas assimtricos do Captulo 9.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 10. ASSINATURAS DIGITAIS

Ve
rs

Pr
e

lim

in
ar

166

Parte II

lim

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

Protocolos

167

Ve
rs

Pr
e

lim

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

notas de aula verso 79 - Jernimo C. Pellegrini

Pr
e

lim

in
ar

169

Ve
rs

Nesta parte so descritos protocolos criptogrficos.

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

170

Captulo 11

lim

Protocolos Para
Comprometimento

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

11.1

Pr
e

Um protocolo criptogrfico uma descrio de como diversos agentes realizam


uma computao de maneira distribuda comunicando-se atravs de mensagens,
sem a necessidade de confiana entre os atores.

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

Um gerador pseudoaleatreo, diferente de qualquer outro.


Um par de portas de entrada e sada para comunicao com o ambiente
(por estas portas o ator recebe a entrada e devolve a sada).
Um par de portas de entrada e sada para comunicao com outro ator.

O modelo computacional que usaremos tem dois atores; abreviamos seus


nomes por A e B.
As portas de comunicao dos dois atores esto acopladas de maneira que
ambos possam trocar mensagens (a porta de entrada de A ligada porta
de sada de B e vice-versa);
Os atores interagem por troca de mensagens sncronas. Nenhum dos dois
realiza qualquer computao enquanto a mensagem transmitida de um
para outro ou enquanto o outro est ativo;
171

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 11. PROTOCOLOS PARA COMPROMETIMENTO

out

in

in

out

in
ar

172

lim

Definio 11.1 (Resultado de uma computao em conjunto). Quando dois


atores A e B esto acoplados como descrito no texto executam um procedimento,
ambos usando a mesma entrada x, denotamos por hA, Bi(x) a varivel aleatrea
que representa a sada local de A aps interagir com B.
A complexidade de tempo um algoritmo depende somente do tamanho de
sua entrada. J a de um ator depende do outro ator com quem ele se comunica.
Definimos ento que a complexidade de tempo de um ator deve ser seu tempo
mximo de execuo, independente de qual seja sua contraparte.

11.2

Pr
e

Definio 11.2 (Complexidade de tempo de ator). A complexidade de tempo


de um ator A uma funo f se para todo ator B e toda entrada x, a execuo de A acoplado a B com entrada comum x termina aps f (|x|) operaes,
independente dos bits aleatreos usados por A e B durante a execuo.

Comprometimento

Ve
rs

Um protocolo de comprometimento usado quando uma das partes precisa


comprometer-se com um valor (ou mensagem) mas sem tornar este valor pblico.
Esta noo til na construo de outras primitivas e protocolos criptogrficos,
mas tambm til por si mesma.
Protocolos de comprometimento so caracterizados por duas fases:
Comprometimento: nesta fase uma das partes (Alice, por exemplo) se
compromete com uma mensagem, mas sem revel-la. Alice envia ao outro
participante (Bob) um certificado de comprometimento (que neste Captulo chamamos de um comprometimento). Bob no deve ter acesso
mensagem.
Revelao: nesta fase Alice envia para Bob alguma informao adicional
que permite que Bob finalmente tenha acesso mensagem. Alice no deve
ser capaz de negar que se comprometeu, e nem de modificar a mensagem.
H duas propriedades importantes de protocolos de comprometimento:
A propriedade de vinculao preserva os interesses de quem recebe o comprometimento: ele tem uma garantia de que a outra parte se comprometeu
com algum valor, e que este valor ser revelado oportunamente;

notas de aula verso 79 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

173

A propriedade de sigilo preserva os interesses de quem se compromete:


apesar de se comprometer com um valor, ele mantido em sigilo.

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

Experimento 11.4 (COMMIT_BIND(, A, n)).


1. Gen(1n ) usado para gerar a chave k.

2. Envie 1n para o adversrio;


3. O adversrio determina uma mensagem m, um comprometimento c =
Commitk (m) e dois valores de abertura d e d0 .

4. O adversrio as devolve duas mensagens m, m0 , os dois valores de abertura


d, d0 e o comprometimento c.
5. O resultado do experimento 1 se e somente se m 6= m0 , m, m0 6= ,
m = Revealk (c, d) e m0 = Revealk (c, d0 ).

notas de aula verso 79 - Jernimo C. Pellegrini

174

CAPTULO 11. PROTOCOLOS PARA COMPROMETIMENTO


D

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

Definio 11.5. Um protocolo de comprometimento

(i) computacionalmente vinculante se para qualquer adversrio polinomial A


existe uma funo desprezvel negl() tal que
Pr[COMMIT_BIND(, A, n) = 1] negl(n);

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);

(iii) perfeitamente vinculante se para quaisquer A e n


Pr[COMMIT_BIND(, A, n) = 1] = 0.

Para definir a propriedade de sigilo usaremos um experimento com dois atores, um desafiante e um adversrio.

Ve
rs

Experimento 11.6 (COMMIT_HIDE(, A, n)).


1. Gen(1n ) usado para gerar a chave k.
2. Envie 1n para o adversrio;

3. A envia duas mensagens m1 e m2 de mesmo tamanho.


4. O desafiante D gera um bit aleatreo b R {0, 1}.
5. D calcula (c, d) = Commitk (mb ) e envia c para A.
6. A devolve um bit b0

7. O resultado do experimento um se b = b0 e zero caso contrrio.

notas de aula verso 79 - Jernimo C. Pellegrini

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 )

Definio 11.7. Um protocolo de comprometimento tem

(i) sigilo computacional se para qualquer adversrio polinomial A existe uma


funo desprezvel negl() tal que
Pr[COMMIT_HIDE(, A, n)]

1
+ negl(n).
2

Pr
e

(ii) sigilo perfeito se para qualquer adversrio (polinomial ou no) A e todo n,


Pr[COMMIT_HIDE(, A, n)] =

1
.
2

Teorema 11.8. No existe protocolo de comprometimento com vnculo perfeito


e sigilo perfeito.

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 .

Commitk (m) = hH s (r||m), (r, m)i, onde r R {0, 1}n .

Revealk (c, (r, m)): obter a mensagem trivial; verificar que c = H s (r||m)
tambm.

O Exerccio 93 pede a demonstrao das propriedades do protocolo de comprometimento com resumos.

Construo 11.10 (Protocolo de comprometimento usando logaritmo discreto).

notas de aula verso 79 - Jernimo C. Pellegrini

176

CAPTULO 11. PROTOCOLOS PARA COMPROMETIMENTO


Gen(1n ) escolhe aleatoreamente um primo p com n bits, um gerador g para
Zp .

in
ar

Commitk (m) = (g m , m).


Revealk (c, m) verifica se c = g m .

Teorema 11.11. Presumindo a hiptese do logaritmo discreto, o protocolo descrito na Construo 11.12 tem sigilo computacional e vnculo perfeito.

lim

Demonstrao. Como Bob s tem a descrio do grupo e g m , determinar a


mensagem exatamente resolver o problema do logaritmo discreto e portanto
o protocolo tem sigilo computacional.
O logaritmo de m na base g nico no grupo Zn , portanto Alice nunca
poder trocar m por uma segunda mensagem m0 sem alterar o comprometimento
e portanto o protocolo tem vnculo perfeito.
Se modificarmos o problema usado como base do protocolo do logaritmo
discreto para o de Diffie-Hellman obtemos o protocolo de Pedersen.
Construo 11.12 (Protocolo de comprometimento de Pedersen).

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 .

Teorema 11.13. O protocolo de Pedersen tem sigilo perfeito e vinculao computacional.

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 .

Isso o mesmo que

gr ym = gr ym
0

(mod p),

mas ento g rr = y m m (mod p), e


0

y = g (rr )(m m)

(mod q)

(mod p).

notas de aula verso 79 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

177

in
ar

Isso, por sua vez, significa computar o logaritmo de y na base g. Como y


escolhido uniformemente ao acaso, teramos que contradizer a hiptese do
logaritmo discreto. Conclumos que o protocolo tem vinculao computacional.

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

Gen(1n ) de usado para gerar sk, pk.


Commitk (m) = (Encpk (m), sk).

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

Teorema 11.15. Se um criptossistema de chave pblica com segurana


CPA, ento a construo 11.14 usando um protocolo de comprometimento
com sigilo computacional. Se em a decriptao no-ambgua, ento o protocolo tem vinculao perfeita.

11.2.1

Comprometimento de bit

H protocolos para obter comprometimento com um nico bit. Mostramos aqui


apenas um deles, usando resduos quadrticos.
Construo 11.16 (Protocolo de comprometimento com resduos quadrticos).
1. Gen(1n ) escolha um inteiro N com tamanho n bits. A distribuio dos
bits deve ser uniforme.
2. Commitk (b): Alice escolhe y R ZN , que no resduo quadrtico. Para
comprometer-se com zero, Alice envia c, que um quadrado x2 . Para
comprometer-se com um, envia c que no quadrado: c = yx2 . Retorne
c e d = (x, y).

notas de aula verso 79 - Jernimo C. Pellegrini

178

CAPTULO 11. PROTOCOLOS PARA COMPROMETIMENTO

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 .

Verificao de igualdade de logaritmos

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

Construo 11.18 (Protocolo para provar de igualdade de logaritmos). Sejam


g1 , g2 geradores de um grupo Gq , com q primo, e sejam h1 , h2 Gq .
O provador P conhece a tal que h1 = g1a e h2 = g2a .
P escolhe w R Gq e envia a1 = g1w e a2 = g2w para o verificador V ;
V envia um desafio aleatreo c R Zq para P ;
P devolve r = w ac (mod q);

V verifica que a1 = g1r hc1 e a2 = g2r hc2 .

Ve
rs

A verificao funciona porque


g1r hc1

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:

notas de aula verso 79 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

179

1. Alice compromete-se com um bit bA R {0, 1} e envia o comprometimento


cA para Bob;

in
ar

2. Bob tambm se compromete com um bit bB R {0, 1} e envia o comprometimento cB para Alice;

3. Uma vez que cada um tenha o comprometimento do outro, Alice e Bob


enviam um ao outro os valores que cada um escolheu (bA e bB );
4. Ambos computam o resultado bA bB .
fcil perceber que Pr(cara) = Pr(coroa) = 1/2.

lim

Notas
Exerccios

Ex. 92 Porque no modelo computacional apresentado neste Captulo dissemos que A e B devem ter geradores pseudoaleatreos diferentes?

Pr
e

Ex. 93 Demonstre as propriedades de ocultamento e vinculao para o


protocolo de comprometimento usando resumos. Que propriedades da funo
de resumo so importantes? As propriedades do protocolo mudam de acordo
com as propriedades do resumo?
Ex. 94 O protocolo de transferncia inconsciente dado neste Captulo usa
o RSA. Generalize-o tanto quanto conseguir (tente descrev-lo em termos de
estruturas algbricas).

Ex. 95 Se quisermos usar um protocolo de comprometimento com sigilo


perfeito, mas insistirmos em garantir que Gen seja executada por algum no
confivel, como podemos proceder?

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.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 11. PROTOCOLOS PARA COMPROMETIMENTO

Ve
rs

Pr
e

lim

in
ar

180

Captulo 12

lim

Compartilhamento de
Segredos

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

Queremos manter um segredo em sigilo por exemplo, a chave para decriptar


um documento ou para permitir acesso a um sistema mas no queremos que
este segredo seja conhecido apenas por uma pessoa. Seria interessante se o
segredo fosse compartilhado entre vrias pessoas, e que fosse revelado apenas
quando um subconjunto autorizado dos participantes decidisse faz-lo. O foco
deste Captulo so protocolos para realizar este objetivo. Estes protocolos so
chamados de esquemas de compartilhamento de segredos.
Quando h n participantes e o qurum (ou limiar) para revelao do segredo de k participantes, dizemos que o protocolo um esquema (k, t) de
compartilhamento de segredos. H tambm esquemas mais gerais onde no
determinamos um qurum, mas especificamos quais conjuntos de participantes
podem revelar o segredo.
Dentre os esquemas expostos neste Captulo o de Shamir particularmente
importante porque dele derivam esquemas de compartilhamento verificvel, e
porque usado como bloco bsico na construo de protocolos (por exemplo,
nos protocolos para computao distribuda segura, descritos no Captulo 15).
Primeiro definiremos estruturas de acesso, que so a forma como especificamos os participantes autorizados.
Definio 12.1 (Estrutura de Acesso). Seja P um conjunto de participantes.
Os subconjuntos de P podem ser divididos arbitrariamente em dois conjuntos,
um deles chamado de conjunto dos qualificantes e o outro de conjunto dos no
qualificantes. O conjunto dos qualificantes chamado de estrutura de acesso
sobre P .
Se um conjunto qualificante tem acesso ao segredo, um superconjunto dele
tambm deve ter. Esta ideia capturada pelo conceito de estrutura montona.
Definio 12.2 (Estrutura Montona). Seja A um conjunto. Uma estrutura
montona sobre A uma coleo de subconjuntos de A tal que
181

notas de aula verso 79 - Jernimo C. Pellegrini

182

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS


A ;
Se X e X X 0 , ento X 0 .

in
ar

Todas as estruturas de acesso que usaremos so montonas.

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

Combine(H): se H um conjunto de partilhas obtido de Share(s, ), e as


partilhas de H so de participantes que formam um conjunto qualificante:
H = { Sa | a O, O } ,
ento Combine deve retornar s.

Esquemas com qurum

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

Interpolao: dados n+1 pontos (xi , yi ) diferentes, h um nico polinmio


de grau n passando por todos os pontos.
Sigilo: dado um conjunto contendo menos que n + 1 pontos, pode-se determinar infinitos polinmios passando por todos os pontos do conjunto.
A ideia bsica usada no esquema de Shamir :
Gere um polinmio p() de grau t aleatoreamente, mas cujo termo constante igual ao segredo s.

D a cada participante um ponto (x, p(x)).


Quando t + 1 participantes se reunirem com seus pontos, estar determinado o polinmio (e o termo constante). Com um participante a menos,
eles nada sabem a respeito do polinmio.

notas de aula verso 79 - Jernimo C. Pellegrini

12.1. ESQUEMAS COM QURUM

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)

Demonstrao. Supomos que temos n + 1 pontos distintos (x0 , y0 ), . . . , (xn , yn ).


Definimos os seguintes polinmios:
(x x0 ) (x xk1 )(x xk+1 ) (x xn )
.
(xk x0 ) (xk xk1 )(xk xk+1 ) (xk xn )

Pr
e

lk (x) =

Estes polinmios so todos de grau n. Consideramos agora dois casos:


Quando calculamos lk (xk ), o numerador e denominador so iguais e portanto lk (xk ) = 1;

Quando calculamos lk (xj ), com j 6= k, o fator (xj xj ) estar no numerador, que portanto resulta em zero 1 .

Ve
rs

Definimos ento o polinmio resultante da soma de todos os lk de grau n:


Pn (x) =

n
X

f (xk )lk (x).

k=0

Como todos os lk (x) so de grau n e Para os pontos x0 , x1 , . . . xn , teremos


portanto
Pn (xi ) = f (xi )l0 (xi ) + + f (xi )li (xi ) + + f (xi )ln (xi )

e como somente li (x) diferente de zero (e igual a um), temos


Pn (xi ) = f (xi )(1) = f (xi ).

E o polinmio Pn coincidir com os n + 1 pontos xi .

1 Para valores diferentes dos x dados inicialmente, l (x) no necessariamente um nem


i
k
zero.

notas de aula verso 79 - Jernimo C. Pellegrini

184

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS

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

O vetor (r1 , r2 , . . . , rn ) chamado de vetor de recombinao.

lim

Construo 12.5 (Esquema de compartilhamento (k,n) de Shamir). Seja Fq


um corpo, s um segredo, k o qurum e n to total de participantes.
Share(s): Para distribuir o segredo entre os n participantes:
1. Cada participante i identificado com xi Fq .

2. Escolha uniformemente k coeficientes a1 , . . . , ak1 . e seja p o polinmio p(x) = s + a1 x + a2 x + . . . + ak1 x.

Pr
e

3. Cada participante i recebe por um canal seguro o ponto (xi , p(xi ))


(portanto n pontos so distribudos).
Combine(H) : Para revelar o segredo, k participantes mostram seus pontos
(xi , p(xi )) e calculam o valor do polinmio em zero usando o polinmio
interpolador de Lagrange.

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

Assim como duas observaes sobre polinmios fundamentam o funcionamento


do esquema de Shamir, os seguintes fatos a respeito de hiperplanos so usados
na construo do esquema de compartilhamento de segredos de Blakley: em um
espao vetorial de n dimenses, n hiperplanos no paralelos se interceptam em
um nico ponto; mas com n 1 hiperplanos, h infinitos pontos de interseo.
Construo 12.6 (Esquema de compartilhamento de segredos de Blakley). O
espao onde o segredo codificado um corpo finito de n dimenses.

notas de aula verso 79 - Jernimo C. Pellegrini

12.2. SEGURANA

185

Share(s) : para distribuir o segredo entre n participantes, codifique o


segredo como um ponto em n dimenses. De a cada participante um
hiperplano passando pelo ponto.

in
ar

Combine(H) : n participantes, cada um com um hiperplano diferente,


podem determinar a interseo de seus hiperplanos, que o segredo.

O esquema de Blakley extensvel porque podemos criar novos hiperplanos


passando pelo ponto onde est o segredo; e um esquema com limiar. No
entanto, no estritamente seguro e no mnimo.

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

Definio 12.7 (Sigilo esquema de comparilhamento de segredos). Seja um


esquema de compartilhamento de segredos com estrutura de acesso . Dizemos
que tem sigilo perfeito se
Pr(s) = Pr(s|H 0 )

para qualquer H 0
/ .

Teorema 12.8. O esquema de compartilhamento de segredos de Blakley no


tem sigilo perfeito.

Ve
rs

Demonstrao. Seja s um segredo representado como um ponto (s1 , s2 , . . . , sm )


usando o esquema de Blakley, com limiar igual a t. De posse de nenhuma
informao, sabe-se que o segredo est em Zm
n . A probabilidade de um ponto
selecionado uniformemente ser igual a s 1/nm .
Conhecendo k < t partilhas, restam apenas t k partilhas que precisamos
descobrir se tentarmos selecion-las uniformemente a probabilidade de encontrarmos s
1
1
< m.
ntk
n
Mais interessantemente, com t 1 partilhas a probabilidade 1/n.
Ainda que n seja exponencial no nmero de bits usados, estritamente falando
o esquema de Blakley no tem sigilo perfeito.
O Exerccio99 pede a demonstrao de que o esquema de Shamir, ao contrrio do de Blakley, tem sigilo perfeito.

Teorema 12.9. O esquema de compartilhamento de segredos de Shamir tem


sigilo perfeito.

notas de aula verso 79 - Jernimo C. Pellegrini

186

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS

12.3

Estruturas gerais de acesso

in
ar

Os esquemas de Shamir e de Blakley no permitem escolher quais participantes


podem revelar o segredo s possvel determinar o nmero de participantes
necessrio. Nesta seo descrevemos um esquema de compartilhamento que
permite especificar listas arbitrrias de participantes autorizados a revelar o
segredo.
Suponha que os participantes em um esquema de compartilhamento so
p, o Presidente;
v, o Vice-presidente;

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

O Presidente da Repblica e o Presidente do Congresso (p, c);


O Vice-Presidente, o Presidente do Congresso e o Ministro da Defesa
(v, c, d).
A estrutura de acesso para o cdigo


{p, d}, {p, c}, {v, c, d}, {p, d, c},
=
{p, d, v}, {p, v, c}, {p, v, c, d}

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}

Podemos reescrever a estrutura se definirmos p, v, d, c como variveis binrias


(um conjunto pode ser ento descrito usando 1 para presente e 0 para ausente). A estrutura de acesso passaria a ser, em forma normal disjuntiva com
trs clusulas conjuntivas:
= (p d) (p c) (v c d).

O esquema de Ito-Nishizeki-Saito usa a descrio da estrutura de acesso nesta


forma, sendo tal Construo a demonstrao do seguinte Teorema:
2

uma hiptese fictcia apenas.

notas de aula verso 79 - Jernimo C. Pellegrini

12.3. ESTRUTURAS GERAIS DE ACESSO

187

Teorema 12.10. Qualquer estrutura geral de acesso , existe um esquema de


compartilhamento de segredos que implementa .

in
ar

Construo 12.11 (Esquema de Ito-Nishizeki-Saito). Seja uma estrutura de


acesso descrita na forma normal disjuntiva. Cada conjunto qualificante minimal
O est descrito como uma conjuno. Cada posio de varivel numerada na
frmula: por exemplo, (v1 v2 ) v3 tem posies 1, 2 e 3. Seja n o nmero de
bits necessrio para representar o segredo.

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

Exemplo 12.12 (Esquema de Ito-Nishizeki-Saito). A estrutura j mencionada


tem trs conjuntos qualificantes (e trs clusulas conjuntivas). Para cada clusula (vi , . . . , vk ), queremos que o ou exclusivo dos si , . . . , sk seja igual a s.
s = s1 s2

= s3 s4

= s5 s6 s7 .

As partilhas dos quatro participantes so determinadas pelas suas posies na


frmula.
sp = (s1 , s3 )

sd = (s2 , s7 )

Ve
rs

sc = (s4 , s6 )

sv = s5 .

Suponha ento que o segredo seja 0110. Escolhemos aleatoreamente s1 = 1100.


Como s deve ser igual a s1 s2 , ento s2 = ss1 = 1010. Escolhemos s3 = 1110
e ento s4 deve ser 1000. Escolhemos s5 = 1111 e s6 = 0010. s7 deve ento ser
igual a s s5 s6 = 1011.
s1 = 1100
s2 = 1010
s3 = 1110
s4 = 1000
s5 = 1111
s6 = 0010
s7 = 1011

notas de aula verso 79 - Jernimo C. Pellegrini

188

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS

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

sd = (s2 = 1010, s7 = 1011)

s = s3 s4 = 1110 1000 = 0110.


Quando v, c, d se renem, tambm podem calcular s:

lim

s = s5 s6 s7 = 1111 0010 1011 = 0110.

Teorema 12.13. O esquema de Ito-Nishizeki-Saito tem sigilo perfeito.

Pr
e

Demonstrao. Suponha que um participante tenha um valor sk . Este valor


foi escolhido aleatoreamente ou foi calculado a partir de s. Se foi escolhido
aleatoreamente, no h como extrair dela qualquer informao a respeito de s.
Mas sk pode ter sido calculado a partir de s (porque era a ltima varivel
de uma conjuno):
sk = si sj s
Seja ento s0 = si sj . Evidentemente s0 tem distribuio uniforme
(porque o ou exclusivo de outras variveis escolhidas uniformemente) e no foi
construda usando s. Ao fazer s s0 estamos essencialmente encriptando s com
bits escolhidos uniformemente exatamente como no one-time pad. Assim, no
deve ser possvel extrair informao a respeito de s a partir de sk , ou seja,

Pr(s|sk ) = Pr(s).

O mesmo vale quando o participante tem vrios valores si , ..., sk .

Ve
rs

O esquema de Ito-Nishizeki-Saito, no entanto, ineficiente: cada participante


pode receber vrios valores, cada um do tamanho do segredo (no esquema de
Shamir cada participante recebe um valor de tamanho igual ao do segredo).

12.4

Compartilhamento verificvel

H um problema com os esquemas de Shamir e de Ito-Nishizeki-Saito: no


possvel aos participantes verificar se as partilhas apresentadas por outros so
de fato as que receberam do distribuidor, e tampouco se todas as partilhas
distribudas esto corretas.
Por exemplo, no esquema de Shamir qualquer participante tanto o que
distribui os segredos como algum dos k que pretendem reconstru-lo pode
modificar um par (xi , yi ) de forma que o segredo original no seja recuperado,
mas sim algum outro valor. No h como saber quem agiu desonestamente, e
nem como recuperar o valor original sem mais participantes.

notas de aula verso 79 - Jernimo C. Pellegrini

12.4. COMPARTILHAMENTO VERIFICVEL

189

in
ar

Definio 12.14 (Esquema verificvel de compartilhamento de segredos). Um


esquema de compartilhamento de segredos verificvel semelhante a um esquema de compartilhamento de segredos, havendo um algoritmo adicional, SecVrf,
que pode ser executado por cada participante a fim de verificar se sua partilha
est correta.

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

Share(s): escolha dois polinmios aleatreos, com S = a0 :


a(x) = a0 + a1 x + a2 x2 + + at1 xt1
b(x) = b0 + b1 x + b2 x2 + + bt1 xt1 .

Em seguida, cada participante recebe sua partilha, que composta de um


ponto de cada polinmio. O participante Pi recebe os pontos a(i) e b(i).
Escolhe-se um elemento h R G \ { 1 }

Ve
rs

Calcule uma lista C = (C0 , C1 , C2 , . . . , Ct1 ), tal que


Ci = g ai hbi .

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.

SecVrf(C, a(i), b(i)): cada participante Pi verifica se


t1
Y

(ij )

Cj

= g a(i) hb(i) .

j=0

(O ndice i do participante Pi , e o ndice j iterado para todos os


participantes)

3O

esquema de comprometimento de Pedersen detalhado na pgina 11.2.

notas de aula verso 79 - Jernimo C. Pellegrini

190

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS


Combine(H): a recuperao do segredo a partir de um conjunto H de
pontos do polinmio a se d da mesma forma como no esquema de Shamir.

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 )

+... b0 +b1 i+b2 i2 +...

lim

Teorema 12.16. O esquema de compartilhamento da Construo 12.15 protege


o distribuidor com sigilo perfeito. Em outras palavras, seja t o qurum para
revelao do segredo, e P um conjunto de participantes de posse de seus segredos
e comprometimentos (a(i), b(i)). Denotamos por C a lista de comprometimentos
e V = (P {(a(i), b(i)}. Ento
Pr [S = s|V, C] = Pr [S = s] .

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.

Um fato importante sobre este esquema que a verificao s pode ser


realizada individualmente cada participante pode verificar sua partilha, mas
precisa usar sua partilha secreta (a(i), b(i)).

Compartilhamento publicamente verificvel

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.

notas de aula verso 79 - Jernimo C. Pellegrini

12.5. COMPARTILHAMENTO PUBLICAMENTE VERIFICVEL

191

A Construo a seguir o protocolo de compartilhamento publicamente


verificvel de Schoenmakers.

in
ar

Construo 12.18 (Compartilhamento de segredos publicamente verificvel


(esquema de Schoenmakers)).

Gen(1n ): selecione um primo q com n bits e gere um grupo G de ordem q,


com dois geradores g e h. Cada participante escolhe uma chave privada
xi R Zq e publica sua chave pblica yi = hxi .
Share(s): crie um polinmio aleatreo com coeficientes em Zq :
p(x) =

t1
X

aj xj ,

lim

j=0

e determine que s = a0 . importante que s no seja escolhido e inserido


no polinmio deve ser determinado em Zq uniformemente.
Publique para todo 0 j < t o comprometimento
Cj = g aj

Pr
e

e as partilhas p(i) encriptadas para todo o i < N :


p(i)

Yi = yi

Usando os valores Cj publicados, qualquer um pode computar


Xi =

t1
Y

Cji .

j=0

Ve
rs

O distribuidor deve ento publicar a assinatura baseada no protocolo


DLEQ para provar que
Xi = g p(i)
p(i)

Yi = yi

Ou seja, o distribuidor simula DLEQ calculando


wi R Zq

a1i g wi

a2i yiwi

c H [i(Xi , Yi , a1i , a2i )]

ri = wi p(i)c

Note que o desafio c no aleatreo, mas calculado usando as informaes


pblicas calculadas at o momento. A transcrio publicada para cada i

[(a1i , a2i ), c, ri ] .

notas de aula verso 79 - Jernimo C. Pellegrini

192

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS

p(i)

Si = hi

1/xi

= Yi

in
ar

Combine: um conjunto qualificante reconstri o segredo da seguinte map(i)


neira: cada participante decripta sua partilha Si = hi usando sua chave
xi
privada yi = g calculando

Em seguida, dados todos os valores Si , o segredo S = hs obtido usando


o polinmio interpolador de Lagrange.
t
Y

Sii =

i=1

t
Y

hp(i)

i=1
Pt

=h

p(i)i

lim

i=1

= hp(0) = hs ,

onde i o coeficiente de Lagrange:


i =

Pr
e

i6=j

j
.
ji

SecVrf: para verificar que as partilhas esto corretas, necessrio computar


t1
Y j
Xi =
Cii
j=0

usando os valores Ci publicados. Pode-se ento tomar

A1i = g ri Xic
A2i = yiri Yic

Ve
rs

e verificar que c = H [i(Xi , Yi , A1i , A2i )]

A primeira observao que devemos fazer que de fato o algoritmo SecVrf


no depende de informao que no seja pblica.
O algoritmo SecVrf, como descrito na Construo, no tem sua corretude
clara. Demonstramos ento que se o algoritmo terminar com sucesso, o distribuidor ter se comprometido com todos os p(i), de forma que todo conjunto
qualificante possa reconstruir o mesmo segredo g s . Como p(i) nico, demonsp(i)
traremos apenas que cada Xi e cada Yi so g p(i) e yi , que exatamente o que
o distribuidor poderia modificar.
p(i)

Teorema 12.19. Se Xi = g p(i) e Yi = yi


ritmo SecVrf sero de fato idnticos.

, os hashes comparados pelo algo-

Demonstrao. As cadeias usadas como entrada para os hashes so iguais nos


p(i)
Xi e Yi . Mostramos que se Xi = g p(i) e Yi = yi ento A1i = a1i e A2i = a2i ,

notas de aula verso 79 - Jernimo C. Pellegrini

12.5. COMPARTILHAMENTO PUBLICAMENTE VERIFICVEL

193

e que ento os hashes sero iguais.


A1i = g ri Xic = g wi p(i)c Xic
= g wi p(i)c+p(i)c
= g wi = a1i

O Exerccio 103 pede a demonstrao do seguinte Teorema.


Teorema 12.20. O esquema de Schoenmakers homomrfico.

in
ar

= g wi p(i)c (g p(i) )c

lim

Os Lemas a seguir sero usados na demonstrao de segurana do esquema


de Schoenmakers. O primeiro deles estabelece que presumida a dificuldade do
problema Diffie-Hellman, quebrar a encriptao de um partilha no esquema de
Schoenmakers difcil.

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.

Demonstrao. Seja A o algoritmo que, dados g a , g b , g c e g bc calcula eficientemente g ab .


Sejam x = g a e y = g b . Para resolver o problema Diffie-Hellman queremos
obter z = g ab usando A.
0
0
0
Escolhemos aleatoreamente a0 , b0 , c e usamos xa , y b , g c , y b c como entradas
para A. Como

Ve
rs

a0

xa = (g a ) = g aa
b0
0
0
y b = g b = g bb ,
0

obtemos, com probabilidade no desprezvel de sucesso , o valor z 0 = g aa bb


como sada de A. Mas
1
g ab = (z 0 ) a0 b0
e conseguimos calcular g ab .

Lema 12.22. Se t1 participantes do esquema de Schoenmakers puderem obter


o segredo, pode-se resolver o problema Diffie-Hellman em tempo polinomial.
Teorema 12.23. Usando o modelo do orculo aleatreo e presumida a dificuldade do problema Diffie-Hellman,
A reconstruo resulta no segredo para qualquer conjunto qualificante de
participantes;

notas de aula verso 79 - Jernimo C. Pellegrini

194

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS


Nenhum conjunto no qualificante de participantes deve conseguir obter o
segredo.

12.5.1

in
ar

Demonstrao. O esquema de comprometimento


de Chaum-Pedersen consisQ
j
tente, e os Xi so obtidos dos Cj como j Cji por isso as partilhas so
consistentes com o segredo. Dado o Lema 12.21 e o fato do esquema de ChaumPedersen ser de conhecimento zero quando o verificador honesto, nenhum
conjunto com menos de t participantes deve conseguir obter o segredo.

Segredos no aleatreos

lim

A descrio que demos do esquema de Schoenmakers presume que o segredo


hs , sendo s escolhido aleatoreamente (durante a construo do polinmio
aleatreo). De fato, precisamos que s seja escolhido uniformemente para que
o esquema seja seguro. Isso o torna aparentemente intil, mas no este o
caso: podemos transform-lo em outro esquema, com a mesma segurana, que
funciona com segredos escolhidos em Zq . Suponha que o segredo que queiramos
compartilhar seja

Pr
e

aps executar Share, publique U = H(hs ). Depois de executar


Combine a obteno de a partir de hs e U trivial ( = U hs ).
O distribuidor, aps executar Share, tambm publica U = hs . Depois
de executar Combine, saberemos que = U/hs e poderemos reconstru-lo.

12.6

Encriptao com qurum

Ve
rs

possvel usar o criptossistema El Gamal compartilhando a chave privada entre


diversos participantes, mas de tal forma que que um qurum mnimo possa
decifrar mensagens sem revelar a chave secreta.
Cada participante Pi do conjunto P recebe uma partilha si da chave (o
compartilhamento feito usanod o esquema de Shamir), e publica um comprometimento hi = g si . O segredo pode ser reconstrudo por t + 1 participantes.
Temos ento
X
s=
si P,i
i

P,i =

Y
lP \{ i }

l
.
li

A chave pblica ser (q, g, h), com h = g s .


Para decifrar o texto encriptado (a, b) = (g k hk m) sem obter diretamente a
chave privada, t + 1 participantes usam o seguinte procedimento.
Cada Pi publica zi = xsi , junto com uma prova de que
logg hi = logx zi .

notas de aula verso 79 - Jernimo C. Pellegrini

12.7. NOTAS

195

O texto claro
b
s
xP
s
x =x i si P,i
Y P,i
=
zi .

in
ar

m=

Os participantes podem obter a chave privada, mas presume-se que queiram


preserv-la e apenas decriptar mensagens.

Notas

lim

12.7

Ve
rs

Pr
e

Shamir e Blakley inventaram independentemente seus esquemas pioneiros de


compartilhamento de segredos, publicados na mesma poca [65, 64].
A frmula de Lagrange para o polinmio interpolador normalmente apresentada na literatura de Mtodos Numricos (ou Clculo Numrico), quando da
discusso sobre interpolao. O livro de Neide Franco [66] uma boa introduo
ao assunto.
A descrio dada aqui para o esquema de Ito-Nishizeki-Saito semelhante
dada por Smart em seu livro [67], onde j se aplica a modificao sugerida por
Benaloh e Leichter [68]. O artigo original de Mitsuru Ito, Akira Saito e Takao
Nishizeki foi publicado na conferncia GLOBECOM87 [69].
O primeiro esquema de compartilhamento verificvel foi descrito em 1985 por
Benny Chor, Shafi Goldwasser, Silvio Micali a Baruch Awerbuch [70]. Aquele
esquema j era publicamente verificvel. Outro esquema de compartilhamento
de segredos com verificao foi descrito por Rabin e Ben-Or [71]. O esquema
de Pedersen foi descrito em um artigo em 1992 [72]. Markus Stadler publicou
um esquema publicamente verificvel em 1996 [73]. O esquema de Stadler funciona com estruturas arbitrrias de acesso, mas depende de uma conjectura no
padro, chamada de problema do logaritmo duplo: dado
x

y = g (h

conjectura-se ser difcil determinar x.


Eiichiro Fujisaki e Tatsuaki Okamoto publicaram seu esquema em 1998 [74].
Shoenmakers publicou seu esquema de compartilhamento publicamente verificvel em 1999 [75], que assintoticamente mais eficiente o que o de Stadler
e o de Fujisaki-Okamoto, embora na prtica seja mais lento.
A gerao distribuda de chaves para criptossistemas assimtricos foi proposta pela primeira vez por Pedersen em 1991 [76], modificada de vrias formas. O trabalho de 1999 realizado por Rosario Gennaro, stanislaw Jarecki,
Hugo Krawczyk e tal Rabin [77] aperfeioa a ida, exibindo um mtodo com
demonstrao de segurana.

notas de aula verso 79 - Jernimo C. Pellegrini

196

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS

12.8

Exerccios

Ex. 99 Demonstre o Teorema 12.9.

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

Ex. 101 Na demonstrao do Teorema 12.13 dissemos que o mesmo vale


quando o participante tem vrios valores si , ..., sk . Complete a demonstrao
mostrando que esta afirmao verdadeira.
Ex. 102 Descreva o esquema de compartilhamento de segredos de Shamir
(ou o de Blakley) cuidadosamente, de forma adequada para apresentao a
estudantes de ensino mdio.

Pr
e

Ex. 103 Demonstre o Teorema 12.20.

Ex. 104 Tente usar os esquemas de comprometimento do Captulo 11 para


transformar o esquema de Ito-Nishizeki-Saito (Construo 12.11) em esquema
verificvel. Para cada construo que obtiver:
a) Determine o tipo de sigilo do esquema (perfeito, computacional, etc).
b) Determine se esquema publicamente verificvel ou se verificvel apenas
pelos participantes.

c) Determine em quanto o tamanho da partilha aumentada.

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

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 13

13.1

Provas Interativas

lim

Provas de Conhecimento Zero

Pr
e

Um sistema de provas interativas um mtodo que dois participantes podem


usar a fim de que um deles possa provar algo ao outro. Normalmente o mtodo
envolve a troca de um certo nmero de mensagens entre os dois participantes
da o nome sistema interativo de provas.
Uma prova neste contexto algo dinmico, no esprito de desafio-resposta.
Um verificador emite um desafio e o provador deve conseguir dar uma resposta
satisfatria a fim de provar algo.
Em um sistema de prova interativa temos as duas restries a seguir:
Victor executa em tempo polinomial.

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.

Definio 13.1 (Sistema de prova interativa). Um par de atores (P, V ) um


sistema de prova interativa para uma linguagem L se V executa em tempo
polinomial e valem as propriedades listadas a seguir.
i) Completude: para todo x L,

1 Linguagens

Pr[hP, V i(x) = 1]

2
3

so definidas no Apndice C (Definio C.30).

197

notas de aula verso 79 - Jernimo C. Pellegrini

198

CAPTULO 13. PROVAS DE CONHECIMENTO ZERO

ii) Consistncia: para todo y


/ L, e para todo ator A
1
.
3

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

Teorema 13.3. N P IP = PSPACE.

Conhecimento zero

Ve
rs

Pr
e

A finalidade de um sistema de prova interativa possibilitar que um provador


convena um verificador de algo, mas sem que o verificador ganhe qualquer informao que possa ser usada posteriormente. Por exemplo, se Peggy se apresenta
para Victor como policial disfarada e envia a ele uma cpia de suas credenciais, Victor passa a ter um documento que pode usar para mostrar a outros que
Peggy policial. Se, ao invs disso, Peggy puder convencer Victor, sem dar-lhe
algo que Victor no pudesse ter obtido sozinho, ela ter se protegido e dizemos
que neste caso Peggy um provador de conhecimento zero (porque Victor no
ganhou conhecimento algum aps interagir com Peggy).
Suponha que temos um sistema de prova interativa (P, V ). Durante a interao com P , o verificador V obter dados (ele ter no mnimo uma transcrio
da interao, com todas a mensagens trocadas entre ambos). Diremos que P
de conhecimento zero se V somente obtm dados que ele mesmo poderia ter
gerado, sem a participao do provador P .
Mais detalhadamente, para que P seja de conhecimento zero, ento para
todo verificador V 0 , e para toda entrada x, existe algum algoritmo polinomial M
que simule a interao de V 0 com P , produzindo os mesmos resultados para as
mesmas entradas, mas sem acesso a P . Admitimos que M (x) falhe com baixa
probabilidade em produzir a mesma sada que hP, V 0 i(x)
Definio 13.4 (Conhecimento zero perfeito). Seja (P, V ) um sistema de prova
interativa. Dizemos que (P, V ) de conhecimento zero perfeito se para todo ator
polinomial V 0 existe um algoritmo polinomial M tal que para toda entrada x,
i) M falha com probabilidade no mximo 1/2, retornando um smbolo FALHA.

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

a Definio C.27, na Seo C.6 do Apndice C.

notas de aula verso 79 - Jernimo C. Pellegrini

13.2. CONHECIMENTO ZERO

199

in
ar

Definio 13.5 (Conhecimento zero computacional). Seja (P, V ) um sistema


de prova interativa. Dizemos que (P, V ) de conhecimento zero perfeito se para
todo ator polinomial V 0 existe um algoritmo polinomial M tal que para toda
entrada x, as distribuies M (x) e hP, V i(x) so computacionalmente indistinguveis.

Definio 13.6 (Conhecimento zero estatstico). Seja (P, V ) um sistema de


prova interativa. Dizemos que (P, V ) de conhecimento zero perfeito se para
todo ator polinomial V 0 existe um algoritmo polinomial M tal que para toda
entrada x, as distribuies M (x) e hP, V i(x) so estatisticamente indistinguveis.

Isomorfismo de grafo

lim

13.2.1

H um problema de deciso importante relacionado a isomorfismo de grafos3


Definio 13.7 (ISOMORFISMO-DE-GRAFO). Dados G1 = (V1 , E1 ) e G2 =
(V2 , E2 ) dois grafos com o mesmo nmero de vrtices, determinar se G1 e G2
so isomorfos.

Pr
e

O problema ISOMORFISMO-DE-GRAFO est em N P (o Exerccio 106


pede a demonstrao).
Proposio 13.8. ISOMORFISMO-DE-GRAFO est em N P.
No se sabe se ISOMORFISMO-DE-GRAFO est em P.
Suponha que Peggy quer poder provar que detm uma certa informao,
mas no quer divulg-la a quem quer que seja.

Construo 13.9 (Sistema de prova interativa para ISOMORFISMO-DE


GRAFO). Antes de iniciar a prova, Peggy efetua as seguintes operaes:
1. Peggy gera um grafo G1 aleatoriamente.

Ve
rs

2. Codifica seu segredo como uma permutao dos vrtices de G1 .


3. Calcula G2 = ((V1 ), E1 ).

4. Publica G1, G2 (mas no ).

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

isomorfismo de grafos na Seo C.2.

notas de aula verso 79 - Jernimo C. Pellegrini

200

CAPTULO 13. PROVAS DE CONHECIMENTO ZERO

in
ar

4. Peggy envia uma das duas permutaes:


(
se b = 1
=

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

O diagrama a seguir ilustra a situao em que Victor escolhe G1 . Peggy tem


a permutao e tem tambm e H (gerados aleatoriamente). Victor no tem
nem ; ele tem os trs grafos e uma permutao , que transforma G1 em H.
P
V

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

Demonstrao. fcil verificar que Victor executa em tempo polinomial.


Completude: Se os grafos G1 e G2 realmente so isomorfos, ento H ser
isomorfo aos dois grafos, e a permutao enviada a Victor Victor transforma
um deles em H. Neste caso Victor aceita a prova e emite um como sada. A
probabilidade de Victor aceitar a prova quando os grafos so isomorfos 1.
Consistncia: Se G1 e G2 no so isomorfos, ento no existe H isomorfo a
ambos. Quando Victor, aps receber H, escolhe G2 , Peggy pode enviar-lhe
e Victor aceita a prova. Mas quando Victor escolhe G1 , no existe permutao
que Peggy possa enviar, e Victor rejeita a prova (sua sada ser igual a zero).
A probabilidade de Victor aceitar a prova quando os grafos no so isomorfos
no mximo 1/2.
Conhecimento zero: simulador S mostrado a seguir produz a transcrio de
uma interao.

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, )

notas de aula verso 79 - Jernimo C. Pellegrini

13.3. -PROTOCOLOS

13.3

201

-protocolos

in
ar

H uma classe especial de protocolos para prova de conhecimento zero onde o


verificador e a interao sempre da forma descrita a seguir.
1. P envia uma mensagem a V , comprometendo-se com um valor c;

2. V envia uma sequncia aleatrea d de bits para P (esta sequncia de bits


um desafio);
3. P envia uma resposta s para V , que finalmente decide se aceita ou no.

lim

A representao grfica deste tipo de protocolo ilustrada na prxima figura.


V

Pr
e

d
s

Definio 13.11 (-protocolo). Seja protocolo de prova de conhecimento


zero para uma linguagem L onde cada elemento um par (a, b) (em outras
palavras, L uma relao entre dois conjuntos A e B). um -protocolo
quando as mensagens trocadas entre os participantes so da forma descrita
no texto (comprmetimento, desafio e resposta), e os seguintes requisitos so
satisfeitos.

Ve
rs

i) Completude: se P e V seguem o protocolo e P honesto (ou seja, P de


fato conhece (x, y) L), V sempre aceita.
ii) Consistncia especial: sejam x A e duas transcries do protocolo em
que V aceita, (c, d, s) e (c, d0 , s0 ), com d 6= d0 (ou seja, duas transcries
com mesma entrada compartilhada x e mesma mensagem inicial c, mas
desafios d, d0 diferentes). Ento deve ser possvel calcular eficientemente
y B tal que (x, y) L.

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.

A propriedade de consistncia especial implica que um provador desonesto


ter probabilidade de sucesso menor ou igual a 1/|D|, onde D o conjunto de
possveis desafios.

notas de aula verso 79 - Jernimo C. Pellegrini

202

CAPTULO 13. PROVAS DE CONHECIMENTO ZERO

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.

Esquema de Identificao de Feige-Fiat-Shamir

Construo 13.12 (Esquema de identificao de Feige-Fiat-Shamir).

1. Uma autoridade T escolhe dois primos grandes p e q, e publica seu produto


N = pq. Os fatores p e q no so divulgados.

lim

2. Peggy escolhe aleatoriamente um inteiro 1 s N 1, calcula v = s2 e


envia v para T . Esta ser a chave pblica de Peggy.
Para Peggy provar para Victor que possui s, ambos executam o protocolo a
seguir.

Pr
e

1. Peggy escolhe r R {1, . . . , N 1}, calcula x = r2 (mod N ), e envia x


para Victor.
2. Victor escolhe um bit b R { 0, 1 } e envia b para Peggy.
3. Peggy calcula y = rsb (mod N ) e envia y para Victor.
4. Victor aceita a identificao se y 6= 0 e y 2 = xv b (mod N ).
Teorema 13.13. O esquema de identificao de Feige-Fiat-Shamir um sistema de prova interativa de conhecimento zero.

Ve
rs

Demonstrao. Mostramos as propriedades de completude, consistncia e conhecimento zero.


Completude: Victor verifica se y 2 = xcb (mod N ). E realmente,
y 2 = (rsb )2 = r2 s2b = x(s2 )b = xv b .

A probabilidade de uma prova correta ser aceita 1.


Consistncia: suponha que um atacante tenta se passar por Peggy. H duas
possibilidades:
Victor escolhe o bit 0. Neste caso, o atacante tem sucesso porque ele
mesmo escolheu r e pode enviar r(s0 ) = r de volta. A probabilidade de
acerto 1.
Victor escolhe o bit 1. Neste caso, o atacante no tem como calcular
y = rs1 porque no tem o valor de s (e no consegue calcular razes
quadradas mdulo N eficientemente). O atacante somente pode fazer uma
escolha aleatrea, e a probabilidade de acerto desprezvel no tamanho
de N .

notas de aula verso 79 - Jernimo C. Pellegrini

13.4. PROTOCOLOS DE IDENTIFICAO

203

in
ar

No primeiro caso o atacante tem sucesso com probabilidade um; no segundo,


com probabilidade desprezvel. Assim, a probabilidade de sucesso em uma tentativa 1/2 + negl(N ). Se o protocolo for repetido t vezes, a probabilidade de
sucesso do adversrio ser desprezvel.
Conhecimento Zero: esta parte da demonstrao pedida no Exerccio 108.

Corolrio 13.14. O protocolo de identificao de Fiat-Feige-Shamir um protocolo.

13.4.2

Protocolo de Schnorr

lim

Demonstrao. O protocolo da forma necessria (comprometimento, desafio,


resposta). Completude e conhecimento zero j foram demonstrados. Resta
observar que tendo duas transcries com x = r2 , mas com b = 0 e b0 = 1 fcil
determinar r.

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.

g, um gerador do grupo de unidades Zp .

t, um parmetro de segurana.

Ve
rs

v = g z (mod p), que igual a g qz (mod p).


O protocolo descrito a seguir.
P: k R Zq . Envia a = g k para V.
V: envia r R { 1, . . . , 2t } para P.

P: envia c = k + zr (mod q) para V.


V aceita se e somente se a g c v r (mod p).

Teorema 13.16. O protocolo de Schnorr de um sistema de prova interativa


de conhecimento zero perfeito para verificador honesto.
Demonstrao. Dividiremos a prova em trs partes completude, consistncia
e conhecimento zero.

notas de aula verso 79 - Jernimo C. Pellegrini

204

CAPTULO 13. PROVAS DE CONHECIMENTO ZERO


Completude: trivial. Temos
a = gc vr
= g k+zr (g z )r
= g k+zr g zr
= gk ,

in
ar

= g k+zr ur

1) Fixe k 0 .

lim

e portanto a probabilidade de V aceitar uma prova correta 1.


Consistncia: suponha que P no tenha z e tente convencer V do contrrio.
P pode tentar a seguinte estratgia:

2) Tente adivinhar o valor de r (antes de enviar a mensagem para V ).


0

3) Envie a0 = g k v r para V .
3) Receba r.

Pr
e

4) Se r igual ao valor adivinhado, envie k 0 para V . Seno, escolha aleatoriamente x em Zp .

A probabilidade de P conseguir sucesso desta forma em uma rodada do protocolo


a de adivinhar corretamente t ou, errando nesta tentativa, conseguir escolher
o valor correto em Zp :
1
+ negl(|p|).
2t
Conhecimento zero: mostramos um simulador S que, a partir de uma entrada
x e dos bits aleatreos usados por V , produz uma transcrio de hP, V i(x).

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.

notas de aula verso 79 - Jernimo C. Pellegrini

13.5. TRANSFORMANDO PROVAS INTERATIVAS EM NO INTERATIVAS205

Transformando provas interativas em no


interativas

13.6

Protocolos de comprometimento a partir de


-protocolos

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.

A diferena entre a abordagem usada neste texto e naquela com mquinas de


Turing no significativa para a compreenso dos conceitos, e no interfere no
desenvolvimento das demonstraes.
Provas de conhecimento zero so discutidas no tutorial de Giovanni Di Crescenzo [80] e extensivamente no livro de Oded Goldreich [10].
-protocolos foram formalizados por Ronald Cramer em sua tese de doutorado [81]. Em sua tese, Cramer diz que escolheu o nome porque sig lembra
zig-zag e ma abreviao de Merlin-Arthur, que o tipo de protocolo onde
os bits aleatreos usados pelo verificador so pblicos (em um -protocolo isto
o mesmo que exigir que o verificador seja honesto).

notas de aula verso 79 - Jernimo C. Pellegrini

206

CAPTULO 13. PROVAS DE CONHECIMENTO ZERO

Exerccios

in
ar

Amos Fiat e Adi Shamir desenvolveram um mtodo para construir esquemas


de assinatura a partir de esquemas de identificao [82]. Este esquema infelizmente no seguro, como mostrado por Shafi Goldwasser e Yael Kalai [83, 84].

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

Ex. 107 Escolha problemas em N P e construa para eles sistemas de prova


interativa.
Ex. 108 Complete a prova de que o esquema de Feige-Fiat-Shamir de
conhecimento zero (nossa demonstrao do Teorema 13.13 omitiu esta parte).
Ex. 109 Prove o Corolrio 13.17.

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

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 14

14.1

Pr
e

(Este Captulo ainda est incompleto)

lim

Protocolos Seguros com Dois


Participantes

Transferncia Inconsciente

Um protocolo de transferncia inconsciente (ou opaca) permite que Alice envie


uma mensagem a Bob, mas que Bob receba de fato a mensagem com probabilidade 1/2. possvel realizar seguramente a computao de qualquer protocolo
de mltiplos atores usando apenas um protocolo de transferncia inconsciente
como bloco bsico.
O protocolo a seguir implementa transferncia inconsciente usando resduos
quadrticos.

Ve
rs

1. Alice escolhe dois primos p e q grandes e calcula N = pq.


2. Alice encripta a mensagem m de alguma forma, mdulo N e com uma
chave k. O resultado o texto cifrado c. A fatorao de N deve permitir
decriptar a mensagem.

3. Alice envia N, c para Bob.


4. Bob escolhe x R ZN e envia y = x2 (mod N ) para Alice.
5. Alice calcula as quatro razes quadradas de y (que so x, x, y, y). Ela
pode faz-lo eficientemente porque tem p e q. Alice ento escolhe uma das
razes aleatoreamente e envia para Bob.
6. Se Bob recebeu uma das razes diferentes de x ele pode fatorar N e
decifrar c em m. Se recebeu uma das outras duas razes, no conseguir
decifrar c.
207

notas de aula verso 79 - Jernimo C. Pellegrini

208CAPTULO 14. PROTOCOLOS SEGUROS COM DOIS PARTICIPANTES

in
ar

Alice no sabe se Bob decifrou a mensagem ou no, porque x foi escolhido


aleatoreamente por Bob, e Alice no sabe qual dos quatro valores x.
O protocolo obviamente funciona usando o RSA para encriptao, mas tambm funcionar com qualquer criptossistema assimtrico, desde que baseado na
hiptese da fatorao de inteiros.
Em outra forma de transferncia inconsciente Alice envia duas mensagens e
Bob recebe uma delas (com probabilidade 1/2 para cada uma), sem que Alice
saiba qual mensagem foi enviada. As duas formas de transferncia inconsciente
so equivalentes.

Notas

Ve
rs

Pr
e

lim

A ideia de transferncia inconsciente foi proposta em 1981 por Rabin [85], e


por Even, Goldreich e Lempel [86] em 1982. A demonstrao de que as duas
variantes de transferncia inconsciente so equivalentes foi dada por Claude
Crpau em 1988 [87].
O livro de Carmit Hazay e Yehuda Lindell [88] e o segundo volume do livro
de Goldreich [2] tratam detalhadamente de protocolos criptogrficos com dois
participantes.

Captulo 15

lim

Computao Segura com


Mltiplos Participantes

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

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 )

com a exigncia de que aps a execuo do protocolo o conhecimento de cada


participante a respeito dos valores de entrada dos outros seja o mesmo que ele
tinha antes do incio do protocolo.
Quando construmos protocolos com mltiplos participantes, h diversos aspectos que levamos em considerao.

Ve
rs

Estratgia de corrupo: h dois modelos para a estratgia de corrupo


usada pelo adversrio. Um deles o modelo esttico, onde h um conjunto
fixo de participantes controlados pelo adversrio. O outro chamado de
modelo dinmico, onde o adversrio pode decidir durante a execuo do
protocolo quais participantes ir corromper;
Comportamento das partes corrompidas: dizemos que um adversrio
semi-honesto se ele segue a especificao do protocolo, mas obtm informao qual no teria direito atravs da manipulao dos participantes
corrompidos. Um adversrio malicioso se poder desviar-se arbitrariamente do protocolo;
Complexidade: pode-se presumir que o adversrio execute em tempo polinomial ou pode-se presumir que ele tem poder computacional ilimitado.

comum tambm diferenciar protocolos para duas partes de protocolos para


muitos participantes.
Estes aspectos do origem a diferentes modelos de ambiente. Estes ambientes
idealizados so usados na construo do protocolo e tambm na demonstrao
de sua segurana.
209

notas de aula verso 79 - Jernimo C. Pellegrini

210CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES

15.1

Um protocolo para participantes semi-honestos

f (x1 , x2 , x3 ) = x1 x2 + x3

in
ar

No protocolo descrito a seguir os participantes so semi-honestos e tem poder


ilimitado.
Os participantes computam o valor de uma funo f (x0 , x1 , . . .) definida
sobre um corpo finito Fq , sem revelar as variveis xi .
Para ilustrar o funcionamento do protocolo presumimos que h tres participantes, P1 , P2 e P3 , e cada um deles conhece uma das variveis x1 , x2 , x3 .
Tambm presumimos que a funo a ser calculada
(mod q).

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

O protocolo funciona usando compartilhamento de segredos. Cada participante


Pi distribui partilhas de seu valor xi para os outros. A partilha enviada de Pi
para Pj xji .
Se pudermos usar as partilhas de entrada de uma porta do circuito para
calcular partilhas do valor de sada, poderemos avaliar o circuito inteiro sem
conhecer os valores intermedirios.
O seguinte Teorema nos d uma forma de computar a soma de partilhas de
Shamir.

Teorema 15.1. Seja S o segredo no esquema de compartilhamento de segredos


de Shamir, e si a partilha de Pi . Ento, para o segredo
S 0 = x + yS

Ve
rs

as partilhas so

s0i = x + ysi .

A seguir desenvolvemos em detalhes a adio e multiplicao de segredos


compartilhados.
Adio Inicialmente determinaremos como obter partilhas para um segredo,
S+S 0 , dadas as partilhas de S e de S 0 . Do Teorema 15.1 imediatamente obtemos
uma maneira de computar a soma de dois segredos, dadas as partilhas de ambos:
basta tomar y = 0. S precisamos ento somar as partilhas, como mostramos a
seguir.
Suponha que cada Pi tenha suas partilhas f (i) e g(i), para dois segredos S
e S 0 . Suponha tambm que os dois polinmios sejam
f (x)

a + a1 x + a2 x2 + + ak xk

g(x)

b + b1 x + b2 x2 + + bk xk .

notas de aula verso 79 - Jernimo C. Pellegrini

15.2. SEGURANA

211

Podemos somar os dois polinmios


= f (x) + g(x)
=

(a + b) + (a1 + b1 )x1 + (a2 + b2 )x2 + + (ak + bk )xk

Assim, cada participante Pi calcula sua partilha da sada:


h(i) = f (i) + g(i).
onde h(i) a partilha de Pi para S + S 0 .

in
ar

h(x)

m(i) = Ab(i).

Pr
e

Cada participante calcula

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

onde ri o vetor de recombinao2 .


Teorema 15.2. O clculo das partilhas de multiplicao descrito no texto est
correto, ou seja,
X
m(i)ri = AB.

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

facilitar a leitura, pode-se ler ci (j) como c, de i para j.


a descrio do polinmio interpolador na Seo 12.1.1, pgina 183.

notas de aula verso 79 - Jernimo C. Pellegrini

212CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES

in
ar

Incluiremos conceitualmente o adversrio A (que externo ao protocolo) no


ambiente. O adversrio pode corromper participantes. Quando Pi corrompido,
A tem acesso a todo o histrico de mensagens de Pi , alm de poder controlar
as aes de Pi . Denotamos um participante corromido por Pi
De maneira simplificada, ento, construmos dois modelos:
Um mundo real, com o conjunto de participantes Pi executando um
protocolo em um ambiente Z;

Um mundo ideal onde trocamos os participantes executando por uma


funcionalidade incorrompvel F.

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

No mundo real, h diversos participantes Pi , que esperamos que sigam


o protocolo, e um ambiente Z, que inclui um adversrio.
P1

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

3 H autores que definem o modelo sem os participantes, como se as mensagens fossem


trocadas diretamente entre F e Z.
4 Ou dummy parties em Ingls.

notas de aula verso 79 - Jernimo C. Pellegrini

15.2. SEGURANA

213

i) o ambiente envia aos participantes honestos suas entradas;


ii) o adversrio envia entradas aos participantes desonestos;
iii) os participantes devolvem seus resultados.

in
ar

Diremos que um protocolo implementa seguramente a funcionalidade ideal


F quando o ambiente (exceto por A), ao executar, no puder distinguir entre
uma execuo no mundo real e outra no mundo ideal. Deve existir ento um
simulador S que substitua A de forma que o mundo simulado por F e S
indistinguvel pelo ambiente do mundo real com e A.
O protocolo executado em rodadas. Em cada rodada

Pr
e

lim

Quando um participante Pi se corrompe, a funcionalidade F imediatamente


deixa de ouvir as portas honestas de Pi , e envia todo o histrico de mensagens
de Pi para S, de maneira que S possa a partir de ento simular para Z o
comportamento de Pi .
Depois do trmino da execuo, a sada de Z um nico bit, que representa
sua tentativa de adivinhar se a execuo se deu no mundo ideal ou no real.
Dizemos que um protocolo seguro se provarmos que, dado um parmetro
de segurana k, existe um simulador S (que um algoritmo polinomial) tal que
para todo ambiente Z e toda entrada z, a probabilidade de Z distinguir o mundo
ideal do real (como modelados) desprezvel.
Projetamos a funcionalidade ideal F de forma a garantir, no mundo ideal,
que se o protocolo no for seguido de maneira a gerar os resultados que esperamos, a execuo abortada. Assim, se o ambiente (e consequentemente o
adversrio) no puder distinguir os dois mundos, a garantia de execuo correta
e segura do protocolo se extende para o modelo de mundo real.
Ao modelar o protocolo para demonstrar sua segurana, usaremos alguns
artifcios que parecero distantes da situao de execuo real do protocolo.
Comentamos agora sobre estes artifcios e sobre a nomenclatura usada, para
que no haja confuso.

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 de aula verso 79 - Jernimo C. Pellegrini

214CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES


mundo real e mundo ideal, embora ambos sejam claramente idealizados. A diferena entre ambos est na presena deste intermediador.

Notas

in
ar

15.3

15.4

Exerccios

lim

O problema de computao segura com mltiplos participantes foi proposto


inicialmente por Andrew Yao em 1982 [89]. O survey organizado por Dario
Catalano e outros [80] descreve os resultados na rea at 2005. Os fundamentos, em um so expostos de modo minucioso no segundo volume do livro de
Goldreich [2]. O conceito de componibilidade universal foi introduzido por Ran
Canetti [90]. Uma exposio a respeito de protocolos componveis dada por
Yehuda Lindell no livro que teve origem em sua tese [91].
A primeira aplicao em larga escala de computao segura com mltiplos
participantes foi reportada por um grupo de pesquisadores holandeses em 2009,
que implementaram um sistema de leilo seguro [92].
[93] [94]

Pr
e

Ex. 111 Prove o Teorema 15.1.


Ex. 112 Prove o Teorema 15.2.

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

notas de aula verso 79 - Jernimo C. Pellegrini

Parte III

Ve
rs

Pr
e

Outros Tpicos

215

Ve
rs

Pr
e

lim

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

notas de aula verso 79 - Jernimo C. Pellegrini

Pr
e

lim

in
ar

217

Ve
rs

Esta parte do texto contm introdues a tpicos adicionais, e h nela uma


variao maior tanto em dificuldade como nos pr-requisitos, quando comparada
com as partes precedentes. Tambm h aqui uma considervel diferena entre
os estilos de cada Captulo.

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

218

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 16

lim

Curvas Elpticas

(Este Captulo um esboo)


Este Captulo examina o uso de curvas elpticas em Criptografia. Para definir
curvas elpticas usaremos o conceito de curva algbrica plana.

Pr
e

Definio 16.1 (Curva Algbrica Plana). Uma curva algbrica plana o lugar
geomtrico das solues para uma equao polinomial de duas variveis.

Em outras palavras, uma curva algbrica plana o conjunto de pontos (x, y)


que satisfazem f (x, y) = 0, sendo f um polinmio.
Exemplos familiar de curva algbricas so circunferncia, definida pela equao (x a)2 + (y b)2 = r2 , onde a, b e r so parmetros descrevendo o centro e
o raio; a reta, definida pela equao y = ax + b e o ponto, definido pela equao
(xa)2 +(y b)2 = 0 (nem sempre uma curva algbrica corresponde ao conceito
intuitivo de curva uma curva algbrica conjunto de pontos, sem restries
quanto a conexidade ou continuidade).
Curvas elpticas so curvas definidas por certas equaes de grau trs1 .

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,

onde A, B, . . . , F so constantes pertencentes a F.


Quando o corpo F tem caracterstica diferente de dois e trs, podemos usar
a seguinte troca de variveis:
x0
y0

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

notas de aula verso 79 - Jernimo C. Pellegrini

220

CAPTULO 16. CURVAS ELPTICAS

obtendo a forma simplificada:


y 02 = x03 + A0 x + B 0 ,

in
ar

onde A0 e B 0 so constantes pertencentes a F.


As figuras a seguir ilustram as curvas elpticas y 2 = x3 2x+2 e y 2 = x3 2x
sobre o corpo dos reais.

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

O discriminante definido usando as razes do polinmio, mas possvel


tambm descrev-lo em funo dos coeficientes. Desta forma o discriminante
mais til, porque permite inferir fatos sobre as razes sem a necessidade de
calcul-las.
Para a equao de grau dois ax2 + bx + c, o discriminante b2 4ac. Para o
polinmio geral de grau trs ax3 + bx2 + cx + d, o discriminante b2 c2 4ac3
4b3 d 27a2 d2 + 18abcd. As equaes de terceiro grau que nos interessam so
da forma x3 + ax + b, com o discriminante igual a 4a3 27b2 .
Normalmente denotamos o discriminante de um polinmio pode .
Proposio 16.4. Seja p um polinmio de grau n. O discriminante de p
zero se e somente se p tem pelo menos duas razes iguais.

notas de aula verso 79 - Jernimo C. Pellegrini

16.1. OPERAO DE GRUPO PARA CURVAS ELPTICAS

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 .

A curva a seguir y 2 = x3 3x + 2, e tem discriminante igual a zero. As


duas razes repetidas so o ponto (0, 1), onde no podemos traar uma tangente.

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

Operao de grupo para curvas elpticas

Ve
rs

Suponha que E uma curva elptica sobre R. Podemos transform-la em um


grupo comutativo se criarmos uma operao associativa para pontos da curva,
que denotaremos por +, e determinarmos um elemento identidade.
O elemento identidade O ser um ponto que adicionaremos a F 2 , determinando que qualquer reta vertical o encontra no infinito (nos dois sentidos!)2 .
Para somar dois pontos P e Q, traaremos uma reta passando por ambos.
Denotaremos esta operao por P Q. Esta reta interceptar um outro ponto R
da curva (ou seja, P Q = R, e definimos a operao de forma que P +Q+R = O
(e portanto P + Q = R = P Q.
Trataremos de trs casos: o clculo do simtrico P de um ponto, a soma
P + Q de dois pontos, e o dobro 2P de um ponto.
Aps definir o clculo da soma, dobro e simtrico, podemos realizar qualquer
soma ou multiplicao com pontos.
2 H uma maneira mais elegante e menos artificial de adicionar pontos no infinito a um
espao vetorial, mas sua descrio no necessria neste texto. Pode-se definir um espao
projetivo para quaisquer dimenses, contendo um ponto no infinito para cada direo que
uma reta possa ter. O leitor interessado poder consultar a literatura sobre espaos projetivos
(veja as notas ao final do Captulo).

notas de aula verso 79 - Jernimo C. Pellegrini

222

CAPTULO 16. CURVAS ELPTICAS

16.1.1

Simtrico

in
ar

O elemento simtrico de um ponto P a sua reflexo Q no eixo x: P +Q+O = O,


e portanto P = Q.

P
b

lim

Pr
e

Se um ponto P tem coordenada y igual a zero, sua reflexo no eixo x ele


mesmo, portanto P = P .

Ve
rs

16.1.2

P
1

Soma de pontos

Para somarmos dois pontos P e Q diferentes, primeiro determinamos R tal que


P + Q + R = O, e a soma P + Q R.

notas de aula verso 79 - Jernimo C. Pellegrini

16.1. OPERAO DE GRUPO PARA CURVAS ELPTICAS

R
b

1
b

P
1

1
b

lim

in
ar

223

Sejam P = (xp , yp ) e Q = (xq , yq ) diferentes. Calculamos a reta passando


por ambos,y = M x + K com inclinao M :
M=

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

As razes desta equao so os pontos onde a reta e a curva se interceptam,


portanto
x3 + Ax + B K 2 + 2M Kx + M 2 x2 = (x xp )(x xq )(x xr ).

Igualamos os coeficientes de x2 em ambos os lados:


M 2 = xp + x1 + xr ,

e portanto

16.1.3

xr = M 2 xp xq
yr = M xr + K.

Dobrando um ponto

Para dobrar um ponto Q, observamos a reta tangente curva em Q e verificamos


que ela interceptar a curva em mais um ponto P . Definimos P + Q + Q = O,

notas de aula verso 79 - Jernimo C. Pellegrini

224

CAPTULO 16. CURVAS ELPTICAS

2
b

1
b

lim

in
ar

e portanto 2Q = P .

Pr
e

Quando P = Q temos efetivamente um nico ponto que no determina


uma reta nica Para obter uma reta, usamos a tangente da curva em P , e
conseguimos a inclinao da reta tangente por derivao implcita: se a curva
elptica y 2 = f (x), ento
M=

f 0 (x)
dy
=
.
dx
2y

Usando a equao da curva e substituindo f (x) = x3 + Ax + B, obtemos

M=

3x2p + A
.
2yp

Ve
rs

Tendo M , j podemos determinar as coordenadas de R:


xr = M 2 2xp
yr = yp + M (xp xq )

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

O seguinte Teorema d uma estimativa para o nmero de pontos em uma curva


elptica sobre um corpo finito. Denotamos o nmero de pontos em uma curva
E sobre um corpo Fq por #E(Fq ).

notas de aula verso 79 - Jernimo C. Pellegrini

16.3. CORPOS FINITOS USADOS EM CRIPTOGRAFIA

225

Teorema 16.5. Seja E uma curva elptica sobre um corpo Fq . Ento

q + 1 2 q #E(F q) q + 1 + 2 q.

16.3

in
ar

Por exemplo, se o corpo finito Fq usado na construo do grupo de pontos


512
512
tem
ordem q = 2 , onmero de pontos na curva E(Fq ) ficar entre 2 + 1
512
512
256
512
512
512
2 2
e 2 + 1 + 2 2 , ou seja, entre 2 + 1 2
e 2 + 1 + 2256 .

Corpos finitos usados em Criptografia

Fp

Pr
e

16.3.1

lim

Em Criptografia no podemos usar R para construir curvas elpticas primeiro


porque no podemos represent-los de maneira exata em computadores, e tambm porque so
p infinitas:puma curva elptica sobre R a unio de duas outras
curvas, y = f (x) e f (x), sendo f um polinmio e ambas so definidas para infinitos valores de x. Curvas sobre Q seriam uma alternativa, mas
tambm possuem infinitos pontos, e por isso trabalhamos apenas com corpos
finitos. Esta Seo descreve os dois corpos normalmente usados em Criptografia
de curvas elpticas Fp , com p primo, e GF2m (corpos de Galois de ordem 2m ).

Quando o corpo usado Fp (com p primo), a equao de uma curva elptica


escrita na forma
y2

(mod p) = x3 + Ax + B

(mod p),

e novamente exigimos o determinante diferente de zero:


4A3 + 27B 2

(mod p) 6= 0.

Ve
rs

O grfico desta curva no contnuo e no podemos us-lo para desenvolver


as frmulas que desenvolvemos quado usamos os reais (por exemplo, no temos
como definir a tangente em um ponto isolado no plano). usamos, no entanto,
as mesmas frmulas para aritmtica de pontos que definimos para R, apenas
tomando o cuidado de efetuar todas as computaes mdulo p. Para somar
pontos,
xr = M 2 xp xq

(mod p)

yr = M xr + K (mod p)
yp = yq
M=
(mod p)
xp xq
K = yp M x p

(mod p)

Para dobrar um ponto, usamos


xr = M 2 2xp

(mod p)

yr = yp + M (xp xq )

M=

3x2p

+A
2yp

(mod p).

(mod p)

notas de aula verso 79 - Jernimo C. Pellegrini

226

CAPTULO 16. CURVAS ELPTICAS

16.3.2

GF2m

Retornamos primeira definio de curva elptica, com a equao

in
ar

y 2 + Axy + By = Cx3 + Dx2 + Ex + F.

Se a caracterstica do corpo dois a seguinte troca de variveis:


B
A
A2 D + B 2
0
3
y A y+
A3

x 0 A2 x +

lim

transforma a equao na forma simplificada:


y 2 + xy = x3 + Ax2 + B,

com B 6= 0, onde A0 e B 0 so constantes pertencentes a F.


No trataremos deste tipo de curva neste texto.

Criptossistemas e protocolos

Pr
e

16.4

Nesta Seo so discutidos alguns criptossistemas e protocolos onde os grupos


usados so de curvas elpticas.

16.4.1

Logaritmo discreto

Ve
rs

Da mesma forma que usamos o problema do logaritmo discreto em Zp para


construir criptossistemas e protocolos, podemos usar o problema anlogo para
curvas elpticas.
Uma vez definido um grupo usando curvas elpticas, define-se naturalmente
neste grupo a operao de exponenciao (com expoente inteiro), e tambm o
logaritmo discreto.

Definio 16.6 (Logaritmo discreto em curvas elpticas). Dados uma curva


elptica E sobre um corpo finito F com ordem q; um ponto P E com ordem
n; um ponto Q hP i, o problema do logaritmo discreto consiste em determinar
o inteiro 0 I n 1 tal que Q = IP . O nmero I chamado de logaritmo
discreto de Q na base P , e denotado por logp Q.

Definio 16.7 (Problema Diffie-Hellman para curvas elpticas). Dadas uma


curva elptica E sobre um corpo finito F com ordem q; um ponto P E com
ordem n; dois pontos A = aP, B = bP hP i,
o problema Diffie-Hellman computacional para curvas elpticas (ECCDH)
consiste em encontrar o ponto C = abP ;

notas de aula verso 79 - Jernimo C. Pellegrini

16.4. CRIPTOSSISTEMAS E PROTOCOLOS

227

dado um outro ponto C = cP hP i, o problema Diffie-Hellman decisional


para curvas elpticas consiste em determinar se C = abP (ou, de forma
equivalente, se c ab (mod n).

16.4.2

in
ar

As prximas sees descrevem alguns criptossistemas e protocolos que usam


este problema como fundamento.

Diffie-Hellman

O protocolo de Diffie e Hellman para estabelecimento de chaves mostrado a


seguir, usando curvas elpticas.

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:

A determina uma curva elptica E sobre um corpo finito Fq e um ponto


G.
A escolhe x R Zq e calcula o ponto H1 = xG
A envia (E, q, G, H1 ) para B

Pr
e

B escolhe y R Zq e calcula o ponto H2 = yG.

B envia o ponto H2 para A e determina a chave secreta, que o ponto


KB = yH1 .
A recebe H2 e determina a chave secreta, que o ponto KA = xH2 .

16.4.3

Elgamal

Construo 16.9 (Criptossistema Elgamal).

Ve
rs

Gen(1n ): A determina uma curva elptica E sobre um corpo finito Fq e


um ponto G, sendo que q representvel com n bits.
x R Zq
h xG (um ponto em E)
A chave pblica hE, q, G, Hi.
A chave privada hE, q, G, xi.
Note que a chave pblica um ponto da curva, e a chave privada um
inteiro.
Enc dada a chave pblica pk = hE, q, G, Hi e a mensagem M E, escolha
y R Zq e devolva
yG, yH + M.
O texto cifrado um par de pontos.

Dec: dada a chave sk = hE, q, G, xi, e o texto cifrado c = hC, C2 i, a funo


Dec retorna
C2 xC1 .

notas de aula verso 79 - Jernimo C. Pellegrini

228

CAPTULO 16. CURVAS ELPTICAS

16.4.4

Outros criptossistemas e protocolos

16.5

Emparelhamentos bilineares

in
ar

H diversos outras construes criptogrficas que usam curvas elpticas. Alguns


exemplos so o ECDSA, a verso do esquema de assinaturas DSA usando curvas
elpticas, descrita no padro FIPS 186-2. o PSEC (Provably Secure Encryption
Curve scheme), um criptossistema de chaves pblicas descrito por Fujisaki e
Okamoto; o ECMQV Elliptic Curve Menezes-Qu-Vanstone, um esquema de
acordo de chaves de Menezes, Qu e Vanstone.

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

notas de aula verso 79 - Jernimo C. Pellegrini

16.6. FATORAO DE INTEIROS

229

b) P + (P ) = O
c) P + (Q + R) = (P + Q) + RO

in
ar

d) P + Q = Q + P

Ve
rs

Pr
e

lim

Ex. 116 Ao definirmos curvas elpticas sobre Zp , no mostramos que as


operaes usadas esto bem definidas. Prove que os mtodos para somar, dobrar
e calcular simtrico de pontos de curvas elpticas em Zp funcionam (isto , que
o resultado tambm pertencer mesma curva elptica).

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 16. CURVAS ELPTICAS

Ve
rs

Pr
e

lim

in
ar

230

Captulo 17

17.1

lim

Primalidade e Fatorao

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

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.

Crivo de Eratstenes e divises sucessivas

Ve
rs

O Crivo de Eratstenes um mtodo para listar os nmeros primos em um


determinado intervalo.
Inicialmente listamos todos os nmeros entre 2 e n (no algoritmo a seguir,
inclumos os nmeros em um vetor). Depois iniciamos com o primeiro elemento
do vetor, 2, e eliminamos todos os mltiplos dele (armazenamos zero em suas
posies). Reiniciamos e tomamos o primeiro elemento no-nulo do vetor, 3, e
eliminamos seus
mltiplos. Paramos quando tivermos eliminado os mltiplos de
todos os k n.

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

notas de aula verso 79 - Jernimo C. Pellegrini

232

CAPTULO 17. PRIMALIDADE E FATORAO


retorne v

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

Os valores diferentes de zero no vetor v retornado pelo algoritmo so os


primos entre 2 e n.
notvel que o crivo de Eratstenes no necessita de divises ou multiplicaes, que em um computador moderno, so operaes caras (note que 2i pode
ser implementado como i + i, e o valor de i tal que i2 < n pode ser calculado a
priori)
O mtodo das divises sucessivas para fatorao bastante simples, embora
ineficiente. Tentamos
dividir n por dois, e em seguida por todos os mpares no

maiores que n.

Quando um fator de n encontrado ele retornado; se n primo o algoritmo


retorna o prprio n.
A complexidade de tempo, tanto docrivo de Eratstenes como do mtodo
das divises sucessivas, claramente O( n).

17.1.2

Mtodo p 1 de Pollard

Ve
rs

Sendo n = pq com p e q primos, o mtodo p1 de Pollard determina a fatorao


de n.
Escrevemos as fatoraes de p 1 e q 1 como
p1

l
1 2
= a
1 a2 al ,

q1

= a11 a22 al l aj j ,

com al < aj . onde a1 = 2, a2 = 3, a4 = 5, e ai o i-simo primo. (Sem perda


de generalidade, presumimos que o maior primo presente na fatorao de p 1,
al menor que o maior primo na fatorao de q 1, aj .)
Notamos que p 1 < 2log2 (n) , e portanto 1 < log2 (n). Similarmente,
logai (n)

p 1 < 3log3 (n) , e de maneira geral p 1 < ai


nmero
k
Y
bn/ log(ai )c
B=
ai
.

. Assim, escolhemos o

i=1

Por exemplo, para k = 1, B = 2n ; para k = 3, B = (2n )(3n )(5n/2 ).

notas de aula verso 79 - Jernimo C. Pellegrini

17.1. FATORAO

233

Agora, para algum valor de k, (p 1) | B: poderemos dividir

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)

Mas (q 1) - B, ou seja, no existe k 0 tal que B = k 0 (q 1), se e somente se


@k 0 , xB

(mod q) = xk (q1)

(mod q) = 1.

xB

(mod q)

Pr
e

Assim, teremos p|(a 1) e q - (a 1) se e somente se xB (mod q) 6= 1.


Como (q 1) - B, podemos escrever B = k 0 (q 1) + r e
0

= xk (q1)+r (mod q)
h
ik 0
= x(q1) (mod q) xr
= x

(mod q)

(mod q).

Ve
rs

Mas xr (mod q) 6= 1 porque a ordem de x (mod q) deve ser maior que r.


Temos agora a tal que a 1 (mod p) mas a 6 1 (mod q). Isso significa que
p|(a 1) mas q - (a 1).
Ento b = mdc (a 1, n) deve necessariamente ser p.
Esse o algoritmo p 1 de Pollard, resumido em pseudocdigo a seguir:

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

Quando aumentamos k no clculo de B aumentamos a probabilidade de que


(p 1) | B, mas diminumos a probabilidade de (q 1) - B. A fatorao usando
o mtodo p 1 eficaz, ento, quando n = (p 1)k, e p 1 tem fatores primos
pequenos.

notas de aula verso 79 - Jernimo C. Pellegrini

234

CAPTULO 17. PRIMALIDADE E FATORAO

Definio 17.1 (Primo forte). Um nmero primo p um primo forte se (p1)/2


tambm primo.

a = xB

in
ar

Exemplo 17.2. Suponha n = 71729254613. Sorteamos x = 53998655672 e


usamos B = 280. Ento
(mod n) = 20513619516.

Temos b = mdc (a 1, n) = 19. Como b no igual a 1 nem a n, deve ser fator


de n. E realmente,
19 3775223927 = 71729254613.

a = xB

lim

Exemplo 17.3. Tomamos o nmero composto 2987937292328279 = 32132369


92988391 Sorteamos x = 1210314091541427 B = 50 temos
(mod n) = 1720706286036580

b = mdc (a 1, n) = 1.

Pr
e

Como x = 1, o algoritmo retornar o que significa que no foi possvel


fatorar n (mas no significa que n seja primo!)
Teorema 17.4. A complexidade de tempo do algoritmo p 1 de Pollard
O(B log(B) log2 n + log3 n).

17.1.3

Mtodo de Pollard

Comeando com x0 , calculamos a seguinte sequncia, definida recursivamente:


xi = f (xi1 )

(mod n)

Ve
rs

Por exemplo, com n = 2387 e x0 = 2, a sequncia


x0

x1

52

x2

320

x3

2149

x4

1746

x5

320

x6
x7

= 2149
= 1746

x8

320

x9

2149

x10

1746

notas de aula verso 79 - Jernimo C. Pellegrini

17.1. FATORAO

235

y1

y2

y3

y4

y5

y6

y7

y8

y9

y10

lim

y0

in
ar

Agora faremos yi = xi mod k, com k = 11:

Pr
e

Como xi f (xi1 ) (mod n), ento yi f (yi1 ) (mod k). Como s h k


classes de congruncias mdulo 13, deve necessariamente haver i e j para os
quais yi = yj . Quando isso acontece a sequncia de yi forma um ciclo.
yi+1

yi

yj

Ve
rs

yj1

y2

y1

y0

Se yi = yj ento xi xj (mod k), e 13 | (xi xj ). Se mdc (n, xi xj )


divisor de n< ento xi 6= xj .
Como no sabemos k, no sabemos os valores de cada yi (e no sabemos
quando yi = yj ). Mas sabemos que aps algum tempo os yi formam um ciclo,
ou seja,
yi+q = yj+t .

notas de aula verso 79 - Jernimo C. Pellegrini

236

CAPTULO 17. PRIMALIDADE E FATORAO

Podemos observar as diferenas

com 2n+1 2n1 j 2n+1 1. Por exemplo,


x3

x3

x6

x3

x7

x7

x12

x7

x13

x7

x14

x7

x15

lim

x1

in
ar

x2n 1 xj ,

Estas diferenas crescem com o tempo.

17.1.4

F Crivo quadrtico

Pr
e

O Lema a seguir serve de fundamento para dois algoritmos de fatorao: o


algoritmo de Dixon e o crivo quadrtico (que uma modificao do algoritmo
de Dixon).
Lema 17.5. Se x e y so tais que x 6 y (mod n) e
x2 y 2

(mod n),

ento mdc (n, x y) e mdc (n, x + y) so fatores de n.

Demonstrao. Como x2 y 2 0 (mod n), temos (x + y)(x y) 0 (mod n),


e
n|(x y)(x + y).

Ve
rs

Mas n - (x y) e n - (x + y), porque x 6 y (mod n). Isso implica que


mdc (n, x y) e mdc (n, x + y) devem ser fatores de n.
Suponha agora que queiramos fatorar um nmero n. O algoritmo de Dixon
usa um conjunto de primos pequenos, que chamaremos de B. Se P o conjunto
dos primos ento
B = {p P : p < M }

define B para algum M . Como exemplo, se M = 15000 teramos |B| =


(15000) = 1754.
Escolhemos aleatoreamente vrios nmeros inteiros ri e calculamos, para
cada ri
g(ri ) = r2 (mod n).
Em seguida fazemos um esforo razovel para fatorar cada g(ri ), usando diviso
sucessiva pelos elementos de B. Quando tivermos mais nmeros g(ri ) fatorados
do que |B|, paramos.

notas de aula verso 79 - Jernimo C. Pellegrini

17.1. FATORAO

237

Cada g(ri ) pode evidentemente ser escrito como produto de primos:


g(ri ) = pa1 1 pas 2 pa|B| .

vi = (a1 , a2 , . . . , a|B| ).

in
ar

Representamos cada g(ri ) como um vetor vi com os expoentes aj de g(ri ):

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

Por exemplo, se g(r0 ) = 600, g(r1 ) = 18 e g(r2 ) = 672, g(r3 ) = 1500 as


fatoraes so:

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) .

Se todos os expoentes de vi forem pares, ento g(ri ) quadrado perfeito (em Z,


alm de em Zn ) , e
g(ri ) r2 (mod n).

Ve
rs

Com isso resolvemos o problema.


Se nem todos os expoentes forem pares, usamos os outros vetores vk (temos
mais vetores do que elementos em cada vetor). Podemos encontrar vetores que,
quando multiplicados, resultem em expoentes pares. Usamos o fato da soma de
dois nmeros ser par se e somente se tiverem a mesma paridade, e fazemos
w(r) = (b1 , b2 , . . . , b|B| ),

com bi = 1 se ai mpar, e 0 em caso contrrio. Continuando o exemplo,


teramos
w0

(1, 1, 0)

w1

(1, 0, 0)

w2

(0, 1, 0)

w3

(0, 1, 1)

notas de aula verso 79 - Jernimo C. Pellegrini

238

CAPTULO 17. PRIMALIDADE E FATORAO

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.

Para este exemplo, ento,

(3, 1, 2)

(1, 2, 0)

(0, 3, 2)

(4, 6, 4)

lim

v0 + v1 + v2

600 18 675 24 36 54

Pr
e

De maneira geral, teremos agora

(mod n).

g(r1 )gr (2) g(rk ) r12 r22 rk2

(mod n),

e os dois lados da congruncia so quadrados perfeitos.


O mtodo que descrevemos at agora conhecido como algoritmo dos quadrados aleatreos. Descrevemos agora o crivo quadrtico.

F Curvas elpticas

17.1.5
17.1.6

F Crivo sobre corpo numrico algbrico

Ve
rs

Notas

O algoritmo p 1 de Pollard foi publicado em 1974 [105]. O algoritmo de


Pollard surgiu em 1975 [106].
O livro de Victor Shoup [14] contm uma grande quantidade de algoritmos
para problemas em Teoria de Nmeros e lgebra; os livros de Hoffstein, Pipher
e Silverman [107] e o de Baldoni e outros [108] tambm abordam o assunto, e
Cohen [109] trata extensivamente de fatorao.
O livro de Crandall e Pomerance trata extensivamente de algoritmos relacionados a primalidade e fatorao [110]. O livro de Bressoud [111] mais acessvel
para uma primeira leitura. A monografia de Vasilenko, mais condensada, contm tambm alguns algoritmos para aritmtica de preciso arbitrria [112].
O Algoritmo AKS para teste de primalidade foi desenvolvido por Agrawal,
Kayal e Saxena [113] e sua descrio aparece em diversos livros [14, 114].
[115] [116] [117]

notas de aula verso 79 - Jernimo C. Pellegrini

17.1. FATORAO

239

Exerccios

Ve
rs

Pr
e

lim

in
ar

Ex. 117 Implemente os mtodos e p 1 de Pollard para fatorao de


inteiros.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 17. PRIMALIDADE E FATORAO

Ve
rs

Pr
e

lim

in
ar

240

Captulo 18

lim

Criptografia Baseada em
Identidades

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

O uso da Criptografia assimtrica tradicional implica na preparao de uma


infraestrutura de chaves pblicas. necessrio garantir que todos os participantes (pessoas, programas ou dispositivos) tenham as chaves pblicas de todos
os outros.
A Criptografia baseada em identidades elimina parcialmente a necessidade
da infraestrutura de chaves pblicas. Cada usurio recebe de uma autoridade a
sua chave privada, mas a chave pblica dos participantes determinada pelos
outros a partir de sua identidade.
A Figura a seguir mostra o funcionamento de esquemas tradicionais de encriptao e assinatura com chaves pblicas. Alice obtm sua chave privada da
autoridade T , e sua chave pblica publicada em um diretrio. Bob no pode
enviar mensagens a Alice sem antes obter sua chave pblica (e verificar que a
chave realmente pertence a Alice).
T

chave pblica de Alice (via diretrio)

chave secreta de Alice

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

notas de aula verso 79 - Jernimo C. Pellegrini

242

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

chave secreta
Enc(msg)
Alice

in
ar

verificar a assinatura de Alice ou enviar-lhe um documento encriptado, ele usa


a identidade de Alice como chave pblica.

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

Definiremos primiro a gerao de chaves para sistemas baseados em identidade,


uma vez que este procedimento o mesmo para encriptao, assinatura e acordo
de chaves.
Definio 18.1 (Esquema de gerao de chaves baseado em identidades).
Um esquema de gerao de chaves baseado em identidades composto de dois
algoritmos:
Setup(1n ), que aceita um parmetro de segurana n e gera uma chavemestra M , mantida em segredo pela autoridade, e parmetros pblicos
P;

Extract(M, id): com a chave-mestra M e uma identidade id, a autoridade


pode extrair uma chave privada sk.

Todos os algoritmos descritos neste Captulo exceto Setup podem precisar


dos parmetros pblicos P . Como sua descrio genrica no depende de P ,
omitiremos este parmetro nesta apresentao.

notas de aula verso 79 - Jernimo C. Pellegrini

18.2. ENCRIPTAO

18.2

243

Encriptao

in
ar

Um esquema de encriptao baseado em identidades semelhante a um esquema


de encriptao tradicional, exceto que a chave pblica do destinatrio igual
sua prpria identidade, e portanto no precisa ser obtida de uma autoridade.

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

Decsk (c): dada uma chave privada sk, os parmetros pblicos P e um


texto encriptado c gerado por Enc, Dec retorna a mensagem original m.

Da mesma forma que em criptossistemas assimtricos tradicionais, exigimos que


para toda identidade id e todos sk, P gerados a partir de id, Decsk (P, Encid (P, m)) =
m.

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)).

1. Setup(1n ) usado para determinar a chave mestra M e os parmetros


pblicos P .

2. O adversrio pode realizar as seguintes consultas a um orculo:


Extract(id): o orculo devolve a chave privada sk relacionada
identidade id;

Ve
rs

Decid (c): observe que apenas id passada a Dec, e no sk, como em


seu uso normal o orculo usa Extract para obter a chave privada
sk relacionada a id, decripta c e devolve o resultado.

As consultas podem ser escolhidas adaptativamente (o adversrio pode


decidir a prxima consulta dependendo do resultado das anteriores).

3. Quando A decide que fez consultas suficientes, escolhe duas mensagens


m0 e m1 , do mesmo tamanho, e uma identidade id, cuja chave privada
no tenha sido extrada na fase anterior.

4. Um bit aleatreo b escolhido e mk encriptada com Encsk e enviada a


A.

5. A pode fazer mais consultas da mesma forma que antes, mas no pode
usar nas consultas o id que escolheu.

notas de aula verso 79 - Jernimo C. Pellegrini

244

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

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

Definio 18.4 (Segurana IND-ID-CCA para criptossistemas baseados em


identidade). Um esquema de encriptao baseado em identidades tem segurana contra ataques de texto cifrado escolhido se para todo adversrio polinomial A existe uma funo desprezvel negl tal que
Pr[IND_ID_CCA(, A, n) = 1]

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

Experimento 18.5 (IND_ID_CPA(, A, n)). O experimento IND_ID_CPA


idntico ao experimento IND_ID_CCA, exceto que o adversrio no pode fazer
consultas de decriptao (Decid (c)).
Definio 18.6 (Segurana IND-ID-CPA para criptossistemas baseados em
identidade). Um esquema de encriptao baseado em identidades tem segurana contra ataques de texto claro escolhido se para todo adversrio polinomial
A existe uma funo desprezvel negl tal que

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:

notas de aula verso 79 - Jernimo C. Pellegrini

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

1. T usa Setup(1n ) para determinar uma chave mestra (que mantida em


segredo) e parmetros pblicos (que so enviados a A).
2. O adversrio pode realizar diversas consultas dos seguintes tipos:

Consulta a hash: o orculo computa o valor do hash pedido por A e


o devolve;
Extract(id): o orculo retorna a chave secreta sk relacionada identificao id;

Pr
e

Signid (m): observe que apenas id passado na consulta, e no sk o


orculo obtm a chave secreta sk relacionada a id, assina a mensagem
m e devolve a A.
3. A devolve (id, m, ), onde id diferente de todas as identificaes usdas
nas consultas Extract e Sign.
4. Retorne 1 se Vrfid (m, ) = 1 e 0 se Vrfid (m, )

Ah,Extract,Signid

Ve
rs

D
1n , P
(id, m, )

Vrfid (m, ) = 1
id
/ consultados

Definio 18.9. Um esquema de assinaturas baseado em identidades tem


segurana contra fraude existencial em ataques adaptativos com mensagem e ID
escolhidos se para todo adversrio polinomial A existe uma funo desprezvel
negl tal que
Pr[SIG_FORGE_ID_CMA(, A, n) = 1]

1 Definida

1
+ negl(n).
2

informalmente na pgina 156 e formalmente na pgina 159.

notas de aula verso 79 - Jernimo C. Pellegrini

246

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

18.4

Acordo de chaves

18.5

in
ar

Definio 18.10 (Esquema de acordo de chave baseado em identidades). Um


esquema de acordo de chaves baseado em identidades um protocolo onde cada
participante tem uma identidade pblica e uma chave secreta gerada por um
mtodo compatvel com a Definio 18.1. Ao final da execuo do protocolo,
todos os participantes devem obter a mesma cadeia de bits k. A cadeia k no
pode ser transmitida em claro.

Duas construes simples

lim

Esta Seo apresenta duas construes simples: um esquema de encriptao e


um de assinaturas, ambos baseados em identidade.
A primeira construo, o criptossistema de Cocks, necessita que as identidades sejam mapeadas em nmeros de Zn com smbolo de Jacobi igual a +1; isso
feito com uma funo de hashing.

Construo 18.11 (Encriptao baseada em identidades com resduos quadrticos (Cocks)).

Pr
e

Setup: Sejam p e q primos, ambos cngruos a 3 mdulo 4; seja tambm


n = pq.

Seja h : { 0, 1 } Zn , tal que para h(x) sempre valer




h(x)
= 1.
n
A funo h ser usada para mapear as identidades dos usurios em Zn .

Ve
rs

Extract(M, id): a chave pblica de id seu hash, pk = h(id). A chave


privada dfinida da seguinte maneira.

   
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

Encid (m): a mensagem deve ser +1 ou 1. Escolha t R Zn tal que


 
t
= m.
n
Calcule

Retorne (c1 , c2 ).

c1 =t + (id)t1
c2 =t (id)t

mod n
mod n.

notas de aula verso 79 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES


Decsk (c1 , c2 ): seja

Retorne

c+2(sk)
n

se sk = id

se sk = id.

in
ar

(
c1
c=
c2

247

Pr
e

lim

O usurio de Enc no sabe se sk id ou id, por isso encripta para


ambos os casos, calculardo c1 e c2 .
A corretude do procedimento de decriptao pode ser verificada diretamente:
supondo que (sk)2 = id, temos
 


t + (id)t1 + 2(sk)
c + 2sk
=
n
n


2 1
t + (sk) t + 2(sk)
=
n
  2

2 1
t
t + (sk) t + 2(sk)
=
n
n
 2
 
t + (sk)2 + 2(sk)t
t
=
n
n

 
(t + sk)2
t
=
n
n
 
t
=
.
n

O caso em que sk = id tambm segue diretamente.


O criptossistema de Cocks depende da dificuldade da fatorao de inteiros e
do problema do resduo quadrtico.

Ve
rs

Teorema 18.12. O criptossistema de Cocks (Construo 18.11) tem segurana


IND-ID-CPA, no modelo do orculo aletreo e presumidas as hipteses da dificuldade de fatorao de inteiros e do resduo quadrtico.
Demonstrao. Presumiremos que o criptossistema no tem segurana IND-IDCPA, e que portanto existe algum adversrio A polinomial para o qual
Pr[IND_ID_CPA(IDE_Cocks, A, n) = 1]

1
+ p(n),
2

onde p(n) um polinmio em n.


Construiremos
um algoritmo D que, dados n e um nmero x Jn , decide

se nx +1 ou 1, com probabilidade no desprezvel.
Para decidir se um nmero a resduo quadrtico mdulo n = pq, D(a, n)
funcionar simulando o orculo do experimento IND_ID_CPA, da seguinte maneira:
1. Para responder s consultas, faa:

notas de aula verso 79 - Jernimo C. Pellegrini

248

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

in
ar

Extract(id): selecione sk aleatoriamente. Depois, determine


(
(sk)2
com probabilidade 1/2,


h(id) =
h(id)
2
(sk) , com
= +1 com probabilidade 1/2.
n
Decid (c): se no houve consultas Extract para id, responda com a
decriptao de c usando h(id).
2. Quando receber o id escolhido do adversrio, determine que h(id) = a
(isso pode ser feito porque nenhuma consulta anterior pode ter usado id,
e portanto h(id) ainda est indefinido).

lim

3. Aps receber do adversrio m0 , m1 , envie a encriptao de um b escolhido


aleatoriamente em { 1, +1 }, usando a como h(id). Escolha t aleatoriamente, com
 
t
= b.
n
Envie para A:
c1 = t + at1

(mod n)

Pr
e

c2 R Jn .

4. Se a resposta b0 dada pelo adversrio for igual a b, responda que a QRn ,


caso contrrio responda que a
/ QRn .
Nos falta mostrar que:

i) Se a QRn , c1 ser uma encriptao correta de b. Seno, A no aprender


absolutamente nada sobre a.

ii) Quando a simulao no abortada, a viso de A indistinguvel da que


teria quando interagindo no experimento IND_ID_CPA.
iii) A simulao abortar com probabilidade desprezvel em n.

Ve
rs

Demonstramos apenas (i); os itens (ii) e (iii) so pedidos


 no Exerccio 119.
Se a QRn , ento por hiptese A conseguir obter nt com probabilidade
no desprezvel, e D corretamente dir, com a mesma probabilidade, que a
QRn .

Se a
/ QRn , ento c1 , c2 no do a A qualquer informao sobre nt . Para
c2 isto bvio. Para c1 , comeamos observando que como a
/ QRn ,
   
a
a
=
= 1.
p
q
Agora considere os seguintes valores:
t1 = t
t2 = at

t3 = at

(mod p) = at1

(mod q),

(mod p) = t

(mod q),

(mod p) = at

(mod q).

notas de aula verso 79 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES

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.

O criptossitema de Cocks encripta um bit por vez, e portanto muito pouco


eficiente no uso de espao, no sendo usvel na prtica.
O esquema de assinaturas a seguir baseado na dificuldade da fatorao de
inteiros.

lim

Construo 18.13 (Assinaturas baseadas em identidades (Shamir)).

Setup: calcule n = pq, onde p e q so primos. Escolha um nmero grande


e, coprimo com (n). Seleciona uma funo de mo nica f .
Os parmetros pblicos so (n, e, f ).
A chave mestra (p, q).

Pr
e

Extract(M, id): a chave privada de id sk tal que (sk)e = id mod n.


Signsk (m): escolha r aleatoriamente.
Calcule
t =re

(mod n)

s =(sk)rf (t,m)

A assinatura (s, t).

(mod n).

Vrfpk (, m): assinatura vlida se e somente se

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).

Como e coprimo com (n), podemos elimin-lo dos expoentes, chegando


frmula usada na assinatura:
s = (sk)rf (t,m)

(mod n).

Teorema 18.14. O esquema de assinaturas da Construo 18.13 tem segurana


contra ataques de mensagem escolhida.

notas de aula verso 79 - Jernimo C. Pellegrini

250

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

Notas

Exerccios

Pr
e

lim

in
ar

O primeiro trabalho em Criptografia baseada em identidades foi publicado em


1984 por Adi Shamir [118]; em um pequeno artigo Shamir prope o novo paradigma e apresenta, ainda sem argumentos formais de segurana, um esquema
de assinaturas. No mesmo artigo, Shamir afirma supor que deve haver tambm
esuqemas de encriptao baseados em identidade, e pede a outros pesquisadores
que os procurem.
O esquema de encriptao com resduos quadrticos foi publicado por Cocks
em 2001 [119]. Aconteceu o mesmo que na dcada de 70, quando Cocks havia
descoberto o RSA mas no o podia revelar por estar trabalhando para o governo
Britnico: o criptossistema de Cocks foi desenvolvido anos antes, mas s pode
ser publicado aps a publicao do criptossistema de Boneh e Franklin [120].
As definies de segurana IND-ID-CPA e IND-ID-CCA foram descritas pela
primeira vez por Boneh e Franklin [120] (e Cocks mostra um rascunho de demonstrao, em seu artigo de 2001, de que sua construo tem segurana INDIC-CPA).
Os surveys de Xavier Boyen [121] e de Gorantla, Gangishetti e Saxena [122]
do uma viso geral da Criptografia baseada em identidades. O livro de Luther
Martin [123] traz uma exposio mais extensa, mas apenas sobre encriptao
baseaa em identidades.
O Captulo 19 trata de construes eficientes, usveis na prtica, baseadas
em identidades. Todas elas usam emparelhamentos bilineares.

Ex. 118 Mostre que o esquema de encriptao de Cocks no tem segurana


IND-ID-CCA.
Ex. 119 Prove os itens (ii) e (iii) do teorema 18.12.

Ve
rs

Ex. 120 Na construo do simulador D na demonstrao do Teorema 18.12,


D envia ao adversrio
c2 R Jn .
a) Se D enviasse c1 R Zp , o efeito seria o mesmo.

b) E se D enviasse c1 = t0 at1 (mod n), onde t0 tem o smbolo de Jacobi


oposto de b?

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.

notas de aula verso 79 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES

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.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

Ve
rs

Pr
e

lim

in
ar

252

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 19

lim

Emparelhamentos Bilineares

Emparelhamentos bilineares so uma fonte de problemas difceis que podem ser


usados na a construo de Criptossistemas.

Pr
e

Definio 19.1 (Emparelhamento bilinear). Sejam G1 , G2 e G3 grupos cclicos.


A funo e : G1 G2 G3 um emparelhamento bilinear se satisfaz as
seguintes condies:
i) e no degenerada: existem g1 G1 , g2 G2 tais que (g1 , g2 ) 6= 1 (onde 1
o elemento neutro de G3 );
ii) e bilinear: para todo a, b Z, e(g1a , g2b ) = e(g1 , g2 )ab ;
iii) e computvel por algum algoritmo polinomial.

Quando G1 = G2 , dizemos que o emparelhamento simtrico.

Ve
rs

A condio de bilinearidade pode ser reescrita de outra forma:


h1 , g1 G1 , h2 , g2 G2 ,
e(h1 g1 , g2 ) =e(h, g2 )e(g1 , g2 )
e(g1 , h1 g2 ) =e(g1 , h2 )e(g1 , g2 ).

Os dois Teoremas a seguir seguem da definio de emparelhamentos bilineares.


Teorema 19.2. Seja e : G1 G1 G2 um emparelhamento bilinear simtrico.
Ento o problema do logaritmo discreto em G2 no mnimo to difcil que em
G1 .
Teorema 19.3. Seja e : G1 G1 G2 um emparelhamento bilinear simtrico.
Ento o problema Diffie-Hellman decisional fcil em G1 .
253

notas de aula verso 79 - Jernimo C. Pellegrini

254

CAPTULO 19. EMPARELHAMENTOS BILINEARES

19.1

Problemas difceis em emparelhamentos bilineares

in
ar

Nas descries de todos os problemas que seguem usamos a seguinte notao.


Um emparelhamento simtrico ser e : G12 Gt , e o gerador de G1 g.

Um emparelhamento assimtrico ser e : G1 G2 Gt , e os geradores de


G1 e G2 so g1 e g2 , respectivamente.
Problema 19.4 (Diffie-Hellman Decisional). Dados (g, ag, bg, cg) G 4 , com
a, b, c Zq , decidir se c = ab mod q.

lim

Problema 19.5 (Diffie-Hellman Bilinear). Para emparelhamentos simtricos,


dados (g, ag, bg, cg) G 4 , calcular e : (g, g)abc Gt .
Para emparelhamentos assimtricos, dados (g, ag, bg) g13 (g2 , ag2 , cg2 ), calcular e(g1 , g2 )abc Gt .

Pr
e

Problema 19.6 (Gap Diffie-Hellman). O problema gap Dissie-Hellman para


emparelhamentos bilineares semelhante ao Diffie-Hellman linear, exceto que
permite-se o uso de um orculo que decide, dado um x Gt , se x = e : (g, g)abc
(ou seja, o orculo resolve a verso decisional do problema).
Problema 19.7 (Inverso de Diffie-Hellman Bilinear).
H uma srie de outros problemas m empaerlhamentos bilineares que podem
ser usados em construes criptogrficas.

19.2

Encriptao baseada em identidades

Construo 19.8 (Criptossistema de Boneh-Franklin, baseado em identidades).

Ve
rs

Setup(q n ): a chave mestra s R Zq . O parmetro pblico param = sP .


Escolha tambm duas funes de hashing:

H1 : { 0, 1 } G1
n

H2 :G2 { 0, 1 }

Extract(id): calcule
pk =H1 (id)
sk =s(pk)

Encid (m): escolha r R Zq . Seja


gid = e(pk, param).

Retorne

r
(rP, M H2 (gid
)) .

notas de aula verso 79 - Jernimo C. Pellegrini

19.3. ASSINATURAS BASEADAS EM IDENTIDADES

255

Decsk (c): Dado c = (a, b), calcule

19.3

in
ar

m = b H2 (e(sk, a))

Assinaturas baseadas em identidades

Construo 19.9 (Esquema de assinaturas de Boneh-Lynn-Shacham).

esquema usa uma funo de hashing H : { 0, 1 } G1 .


Setup(1n ):

Signsk (m) = xH(m).


Vrfpk (m, ): retorne 1 se e somente se

lim

Extract(id): a chave privada x R Zq . A chave pblica xP .

19.4

Pr
e

e(P, ) = e(pk, H(m)).

Acordo de chaves

O protocolo de acordo de chaves de Joux, descrito a seguir, de notvel simplicidade.

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 .

A chave comum KA = KB = KC = e(P, P )abc .


Teorema 19.11. Presumindo a dificuldade do problema BDH, o protocolo de
acordo de chaves de Joux seguro contra adversrios passivos.

notas de aula verso 79 - Jernimo C. Pellegrini

256

CAPTULO 19. EMPARELHAMENTOS BILINEARES

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. 125 Prove o Teorema 19.2.

Ex. 126 Formule os Teoremas 19.2 e 19.3 para emparelhamentos assimtricos e escreva suas demonstraes.

Ve
rs

Pr
e

Ex. 127 Tente extender o protocolo de acordo de chaves de Joux para um


nmero indefinido de participantes.

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 20

lim

Criptografia Ps-Quntica

20.1

Pr
e

(Este Captulo est incompleto)


Este Captulo descreve alguns problemas que so presumidamente difceis
para computadores clssicos mas que poderiam ser resolvidos em tempo polinomial por computadores qunticos, representando uma ameaa aos criptossistemas que os tem como fundamento. O leitor interessado apenas na enumerao
destes problemas poder limitar-se leitura da primeira Seo apenas. As Sees seguintes constituem uma breve introduo aos algoritmos qunticos, com
uma descrio dos algoritmos qunticos polinomiais para fatorao de inteiros
e determinao do subgrupo oculto.

Dificuldade de problemas

Ve
rs

Havendo algoritmos qunticos para fatorao de inteiros e para o problema


do subgrupo oculto, diversos criptossistemas tornam-se inseguros: o RSA e
todos os sistemas baseados na hiptese da fatorao de inteiros; Protocolo de
Diffie-Hellman, criptossistema de Elgamal, e todas as construes baseadas em
logaritmo discreto, inclusive os que usam curvas elpticas.
Continuam imunes a ataques por computadores qunticos:
Criptografia baseada em hashing
Criptografia baseada em cdigos corretores de erros
Criptografia baseada em reticulados
Criptografia multivariada
Criptografia simtrica (os criptossistemas simtricos usados na prtica no
dependem das hipteses de fatorao ou logaritmo discreto).
257

notas de aula verso 79 - Jernimo C. Pellegrini

258

CAPTULO 20. CRIPTOGRAFIA PS-QUNTICA

20.2

Computao quntica

Ve
rs

Pr
e

lim

in
ar

Os computadores clssicos tem como unidade bsica de armazenamento o bit,


que pode assumir dois valores diferentes, zero ou um. H diferentes maneiras de
implementar dispositivos que permitem armazenar, recuperar e transmitir bits
capacitores, campos magnticos, corrente eltrica ou luz, por exemplo. Um
bit sempre estar em exatamente um de seus dois possveis estados.
A noo de informao quntica surge quando consideramos a representao
de informao em dispositivos para os quais vale a mecnica quntica. O estado
de um sistema na mecnica quntica diferente, e est sujeito a regras diferentes daquelas da Fsica clssica; o interesse em representar informao como
sistemas qunticos existe porque as operaes realizadas so de natureza diferente daquelas realizadas por um computador comum e em muitos casos mais
eficientes.
Os nveis de energia em um tomo podem assumir diferentes valores discretos apenas, sem nveis intermedirios cada eltron pode ocupar rbitas bem
definidas. D-se a estas rbitas o nome de nveis de energia. o nvel de energia
mais baixo chamado de estado fundamental, e os outros so estados excitados.
Enquanto seu nvel de energia no for verificado, um eltron pode estar em ambos estados. Quando uma verificao for realizada, o eltron passar para um
dos dois estados, que ser percebido na verificao.
Um computador quntico usa partculas desta natureza para armazenar informao por exemplo o nvel de energia em tomos. A unidade bsica de
armazenamento em um computador quntico o qubit. Assim como h dois
estados possveis para o bit, h tambm dois estados associados a um qubit,
usualmente denotados por |0i e |1i. Um qubit, no entanto, pode estar em ambos estados ao mesmo tempo, no que se chama de superposio de estados. A
superposio de estados no significa que o qubit esteja em algum estado intermedirio tal estado no existe! O qubit est em ambos estados ao mesmo
tempo, desde que no tentemos medi-lo. Enquanto um qubit estiver isolado
de observaes externas, ele permanecer em estado de superposio. Quando
uma medio feita no estado de um qubit, ele deixa de estar em superposio
e colapsa para apenas |0i ou apenas |1i.
Descrevemos o estado de um qubit como uma combinao linear dos dois
possveis estados,
0 |0i + 1 |1i ,
onde os nmeros complexos 0 e 1 so as amplitudes de cada um dos estados,
satisfazendo
|0 |2 + |1 |2 = 1.
q
q
p
p
Um exemplo de estado de qubit 13 |0i+ 23 |1i, porque ( 1/3)2 +( 2/3)2 =
1.
As amplitudes do estado de um qubit tem um significado importante: quando
um qubit medido ele colapsa para cada um dos estados, e a amplitude de cada
um dos estados determina a probabilidade de que seja ele o estado no qual o
qubit colapsar.

notas de aula verso 79 - Jernimo C. Pellegrini

20.2. COMPUTAO QUNTICA

259

lim

in
ar

Suponha que um qubit


esteja no estado 1/2 |0i + 3/2. Este um estado

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

e portanto o estado do sistema (0 , 1 ), que interpretaremos como as coordenadas de um vetor em R2 :

|1i

Ve
rs

sen

cos |0i + sen |1i

cos

|0i

Desta forma, o estado do sistema pode ser descrito tambm como


cos |0i + sin |1i .

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.

notas de aula verso 79 - Jernimo C. Pellegrini

260

CAPTULO 20. CRIPTOGRAFIA PS-QUNTICA

in
ar

Um registrador quntico tem vrios qubits, e seu estado a superposio de


2n possveis estados. Para um sistema de dois qubits h quatro estados bsicos:
|00i, |01i, |10i, |11i. De maneira anloga ao que fizemos para um nico qubit,
o sistema com dois qubits pode estar em uma superposio de estados dada por
00 |00i + 01 |01i + 10 |10i + 11 |11i ,
com
X

|ij |2 = 1.

i,j

20.2.1

Operaes qunticas

(20.1)

lim

Computadores qunticos modificam qubits (sem medi-los) usando operaes


qunticas. A Mecnica Quntica descreve a evoluo do estado de um sistema
pela Equao de Schredinger, e operadores lineares que satisfazem a equao
de Schredinger so necessariamente operadores unitrios.
Na Definio a seguir A a matriz conjugada transposta de A (A obtida
de A substituindo seus elementos pelos respectivos conjugados e aplicando-se
em seguida a transposio).

Pr
e

Definio 20.1 (Operador Unitrio). Um operador linear A unitrio quando


AA = I
Definio 20.2 (Operao quntica). Uma operao quntica em um registran
n
dor de n qubits um operador linear unitrio F : C2 C2 .

Ve
rs

Como matrizes unitrias sempre tem inversa, as operaes qunticas so


necessariamente reversveis: dado um estado e uma operao A, deve ser possvel
retornar o sistema ao estado anterior aplicando uma operao inversa A1 .
Operaes qunticas devem necessariamente preservar a norma do vetor que
representa o estado, e isto garantido pelo fato das operaes qunticas serem
descritas por operadores unitrios.
Finalmente, operadores unitrios so fechados sob composio, e portanto as
operaes qunticas podem ser compostas. Este fato permite definir algoritmos
qunticos como sequncias de operaes qunticas.
Lema 20.3. Sejam A e B duas matrizes descrevendo operaes qunticas. Ento a operao composta A B tambm uma operao quntica.
Qualquer operao quntica deve preservar a igualdade dada pela Frmula 20.1,
que determina que a soma das probabilidades dos estados ps-medio deve ser
um. Assim, uma operao quntica pode ser vista como uma rotao em um
qubit.
A seguir so descritas algumas operaes qunticas.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

20.3. SUBGRUPO OCULTO


Reordenao de qubits
os qubits em um sistema.

261

Com uma matriz de permutao podemos reordenar

in
ar

Rotao de um qubit Podemos rotacionar o estado de um qubit por um


ngulo usando a matriz


cos sen
.
sen cos

Operao de Hadamard A operao de Hadamard leva um qubit do estado


|0i para o estado uniforme |0i + |1i e do estado |1i para o estado uniforme
|0i |1i. Para estados superpostos, a operao leva de 0 |0i + 1 |1i para

lim

(0 + 1 ) |0i + (0 1 ) |1i .

Esta operao descrita por uma matriz de Hadamard.

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

Possivelmente a maneira mais simples de construir matrizes de Hadamard


pelo mtodo recursivo de Sylvester:

H1 = 1


1 1
H2 =
1 1


H2k1 H2k1
n
H2
=
H2k1 H2k1

Ve
rs

A matriz 12 H2 usada em qubits (a multiplicao por 12 normaliza os


valores, para que a soma dos quadrados seja um):

 
 


1 1
1 1 1
1
1
H2 |0i =
=
= |0i + |1i ,
2
0
2 1 1
2 1








1 1 1
1
0
1
1 H2 |1i =
=
= |0i |1i .
2
1
1
1
1
2
2

20.3

Subgrupo oculto

20.4

Fatorao de inteiros

20.4.1

Transformada quntica de Fourier

A transformada quntica de Fourier anloga transformada discreta de Fourier


(descrita no Apndice D).

notas de aula verso 79 - Jernimo C. Pellegrini

262

CAPTULO 20. CRIPTOGRAFIA PS-QUNTICA

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

onde = e(2i)/N uma raiz da unidade para C. Ingenuamente podemos


usar multiplicao de matrizes, usando tempo O(n2 ). A transformada rpida
de Fourier um algoritmo para clculo da DFT em tempo O(n log n). H, no
entanto, um algoritmo quntico para realizar este clculo com complexidade
de tempo O(log2 n), exponencialmente menor que a transformada rpida de
Fourier. Esta afirmao deve inicialmente provocar descrena, j que um tal
algoritmo no teria tempo sequer de ler sua entrada, que tem tamanho n, mas
o algoritmo de fato executa em tempo menor que n porque a entrada ser
codificada em log n qubits usando superposio de estados.
Nesta discusso, |ii ser interpretado como o vetor coluna onde o i-simo
elemento um e os outros zero:

0
0

|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.

notas de aula verso 79 - Jernimo C. Pellegrini

20.4. FATORAO DE INTEIROS

263

Notas

lim

in
ar

O livro de Papadimitriou e Vazirani [125] (traduzido para o Portugus [126])


traz um Captulo com noes de Computao Quntica. Uma descrio mais
detalhada pode ser obtida nos livros de Hirvensalo [127] e de Marinescu e Marinescu [128]. Uma exposio com nfase em Complexidade Computacional
dada no livro de Arora e Barak [129]. Uma discusso mais completa da Computao Quntica dada por Nielsen e Chuang [130].
Uma exposio de construes criptogrficas resistentes a ataques qunticos
dada no livro organizado por Bernstein, Buchmann e Dahmen [131].
Dentre os muitos textos sobre de Mecnica Quntica destacamos os de
Cohen [132], o de Shankar [133] e o de Griffiths [134, 135]. Uma introduo
Matemtica necessria para o estudo da Mecnica Quntica dada no livro
de Byron e Fuller [136],
H um livro interessante de K. J. Horadam sobre matrizes de Hadamard e
suas aplicaes [137].

Exerccios

Pr
e

Ex. 128 Prove que a construo de Sylvester sempre resultar em uma


matriz de Hadamard.

Ve
rs

Ex. 129 Prove que a transformada de Fourier uma operao unitria.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 20. CRIPTOGRAFIA PS-QUNTICA

Ve
rs

Pr
e

lim

in
ar

264

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 21

lim

Reticulados

21.1

Reticulados

Pr
e

(Este Captulo um esboo)


Dentre os problemas difceis que podem ser usados na construo de funes
de mo nica h alguns relacionados a reticulados e interessantemente, no
h at o momento algoritmo quntico que os resolva eficientemente.

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

A norma Euclidiana por vezes chamada de norma l2 .


Um reticulado um subconjunto de um espao vetorial, definido como a
seguir.

Ve
rs

Definio 21.2. Um reticulado em Rn um conjunto


( n
)
X
L(B) =
i bi |i Z
i=1

onde B = (b1 , . . . , bn ) uma base de Rn . Dizemos que (b1 , . . . , bn ) uma base


de L.
Assim como com espaos vetoriais, comum definir a base de um reticulado
como uma matriz onde cada coluna um dos vetores bi :

b1,1 b2,1 bn,1

..
b1,2 . . .
.

..
..

.
bn,n
265

notas de aula verso 79 - Jernimo C. Pellegrini

266

CAPTULO 21. RETICULADOS

21.2

Problemas difceis em reticulados

Os seguintes problemas em reticulados so N P-difceis:

in
ar

SVP: dada uma base B, determinar um vetor de L(B) com a menor norma;

CVP: dada uma base B com n vetores e um vetor t Rn , determinar o


vetor v L(B) mais prximo de t;

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

||B 0 || = max ||si ||


i

ou a que contm a menor soma dos quadrados dos vetores:


X
||B 0 || =
||si ||2 .
i

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.

Definio 21.3 (Razo de Hadamard). Seja B = {b1 , . . . , bn } uma base. A


razo de Hadamard para esta base

1/n
| det B|
H(B) =
||b1 || . . . ||bn ||

Ve
rs

Quando a base ortogonal seu volume (ou seja, o determinante) igual


multiplicao de seus vetores, e H(B) = 1. Quando no ortogonal, o volume maior que o produto dos vetores, e H(B) ser menor que um. Dizemos
informalmente que uma base B menos ortogonal que outra, B 0 , quando
H(B) < H(B 0 ).
Queremos formular o problema SBP usando ortogonalidade de bases: uma
base tima ortogonal. A razo de Hadamard, no entanto, um problema
de maximizao. Seria interessante termos um valor a minimizar. Definimos
ento o desvio de ortogonalidade como o recproco da razo de Hadamard, mas
sem o clculo da raiz (no precisamos elevar o valor a 1/n, porque para efeito
de otimizao no nos far diferena).
Definio 21.4 (Desvio de Ortogonalidade). O desvio de ortogonalidade de
uma base
Q
||bi ||
.
(B) = i
| det B|

notas de aula verso 79 - Jernimo C. Pellegrini

21.3. GGH

21.2.2

267

LLL

Um algoritmo para reduo de base o LLL, de Lenstra, Lenstra e Lovsz.

CVP: algoritmo de Babai

in
ar

21.2.3

lim

O problema CVP fcil de resolver de maneira aproximada quando a base tem


desvio de ortogonalidade pequeno usando o algoritmo de Babai, e difcil quando
o desvio de ortogonalidade grande.
Seja L Rn um reticulado com base B = (b1 , b2 , . . . , bn ), e w um vetor
qualquer em Rn . O algoritmo de Babai consiste em reescrever o vetor w como
combinao linear dos vetores da base e arredondar os coeficientes. Escrevemos
w como tb:
w = t1 b1 + t2 b2 + . . . + tn bn .
Depois, determinamos o vetor a com os coeficientes aredondados:
ai = bti e,
e finalmente retornamos o vetor

Pr
e

v = ab.

Se o desvio de ortogonalidade de B for suficientemente pequeno, o algoritmo de


Babai resolve o CVP. Quando o desvio de ortogonalidade da base grande, o
algoritmo de Babai encontra pontos distantes do ponto desejado no reticulado.
Teorema 21.5.

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).

Gen(1n ) gera duas bases para o mesmo reticulado.


sk = B, com desvio de ortogonalidade muito pequeno;
pk = R, com desvio de ortogonalidade muito grande.

Encpk (m): a mensagem m interpretada como um ponto do reticulado


(para isso a base R usada). O que Enc faz retornar um outro ponto,

notas de aula verso 79 - Jernimo C. Pellegrini

268

CAPTULO 21. RETICULADOS


prximo de m isso feito somando a m um vetor aleatreo com valores
pequenos.

Encpk (m) = m + e,

in
ar

e = (e1 , , en ), ei R {, +}

onde e um vetor de tamanho n cujos valores ei so menores do que


metade da distncia entre os pontos do reticulado (que presumimos ser
2).

lim

Decsk (c): usando a base B com desvio de ortogonalidade pequeno fcil


obter m usando o algoritmo de Babai, que essencialmente computa
m = BbB 1 ce,

onde c = m + e, porque c foi calculado por Enc.

21.3.1

Pr
e

Claramente a segurana do GGH est relacionada dimenso do reticulado:


quanto maior n, mais difcil resolver o CVP e o SBP.
Um adversrio que pretenda decifrar um texto encriptado precisar resolver diretamente o CVP ou tentar primeiro transformar a base pblica na base
privada (ou seja, resolver o SBP).

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).

Inicie com uma caixa kI Rn , e adicione uma perturbao a cada um


dos vetores. Por exemplo, gerando uma matriz como a descrita no item
anterior e somando caixa.

Em seguida a base pblica gerada a partir da base privada. Os autores


sugerem dois mtodos; um deles descrito a seguir.
Tome cada vetor da base boa B e multiplique-o por uma combinao linear
dos outros vetores de B, usando coeficientes aleatreos. Os autores sugerem que
2n passos de mistura so suficientes para prevenir o uso do LLL para obter a
base boa a partir da ruim.

notas de aula verso 79 - Jernimo C. Pellegrini

21.4. NTRU

269

Enc

21.3.2

Ataques ao GGH

in
ar

Nguyen mostrou ataques ao NTRU que o tornam invivel na prtica.


Suponha que m foi cifrada usando o GGH. Denotaremos tambm por m
o vetor que representa a mensagem no reticulado. Como o GGH foi usado,
sabemos que h um vetor de erro e com entradas iguais a tal que
c = mR + e.

lim

A probabilidade de um adversrio encontrar o vetor de erro (e portanto conseguir


decifrar a mensagem) tentando ao acaso 21n (desprezvel em n). Note que
encontrar o vetor de erro equivalente a resolver o problema SAT.
A observao que fundamenta o ataque de Nguyen a Proposio a seguir:
Proposio 21.7. Seja s o vetor (, . . . , ). Ento
c + s mR

(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).

Ento (m m2 ) = 2m para algum m Zn . Portanto


e
c m2 R
= m0 R +
,
2
2

Ve
rs

e temos uma nova instncia do CVP, desta vez em Qn . No entanto, o vetor de


erro agora e/2, menor que o original, com todas iguais a 1/2.
Nguyen usou este ataque para decifrar mensagens-desafio que os autores do
GGH haviam deixado na Internet.

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 .

notas de aula verso 79 - Jernimo C. Pellegrini

270

CAPTULO 21. RETICULADOS


e tanto g como f e1 contm exatamente df + 1 valores positivos e df
valores negativos.
A matriz [T f ] invertvel mdulo q.

Dec(c)
m = (([t f ]c)

Ajtai-Dwork

(mod p).

lim

21.5

(mod q))

in
ar

Enc(m) a mensagem codificada como um vetor m {1, 0, 1}n . O texto


encriptado
c = m + [T f ]1 r (mod q).

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

O adversrio obtm sucesso no experimento LWE quando consegue distinguir


As + e de v R Zm
q .
1 Pela

primeira vez neste texto usamos uma distribuio diferente da uniforme!

notas de aula verso 79 - Jernimo C. Pellegrini

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

O livro de Daniele Micciancio e Shafi Goldwasser [138] aborda exclusivamente


problemas difceis em reticulados.
O algoritmo LLL foi descrito por Lenstra, Lenstra e Lovsz em 1982 [139].
Uma descrio acessvel dada no livro de Hoffstein, Pipher e Silverman [107].
O LLL descrito tambm por Cohen [109], e h um livro de Nguyen e Vale [140]
dedicado ao LLL e aplicaes.
O Criptossistema GGH foi apresentado em 1997 por Goldreich, Goldwasser
e Halewi [141]. Hoffstein, Pipher e Silverman descreveram o NTRU [142] em
1998. Cynthia Dwork e Mikls Ajtai apresentaram seu criptossistema tambm
em 1998 [143]. O ataque de Nguyen ao criptossistema Ajtai-Dwork foi relatado
em..... [?].
O criptossistema LWE mais recente foi descrito por Regev em 2005 [144].

Exerccios

Ex. 130 O que um adversrio pode deduzir ao ver a mesma mensagem


sendo encriptada com o GGH com dois vetores de erro diferentes, sabendo que
ambas as mensagens so iguais?

Ex. 131 (Fcil) Prove a Proposio 21.7.

Ve
rs

Ex. 132 Se voc leu o Captulo22, faa o Exerccio 138.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 21. RETICULADOS

Ve
rs

Pr
e

lim

in
ar

272

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 22

lim

Cdigos Corretores de Erros

22.1

Pr
e

Cdigos corretores de erro podem ser usados na construo de criptossistemas.


Este Captulo inicia com uma breve introduo a cdigos corretores de erro, para
em seguida expor o criptossistema de McEliece. A introduo dada a cdigos
aqui contm apenas os conceitos usados na descrio do criptossistema. Uma
exposio mais detalhada sobre cdigos corretores de erros dada em Portugus
no livro de Hefez e Villela [145]. Em Ingls, Hill [146], Roman [147] e Moon [148]
do excelentes introdues.

Correo de erros

Ve
rs

Durante a transmisso de uma mensagem, erros podem ser introduzidos.

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

notas de aula verso 79 - Jernimo C. Pellegrini

274

CAPTULO 22. CDIGOS CORRETORES DE ERROS

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

Definimos ento de maneira mais rigorosa a noo de mais prxima para


mensagens.
Definio 22.1 (Distncia de Hamming). Dados dois vetores v, w An , a
distncia de Hamming entre v e w
d(v, w) = |{i : vi 6= wi , 1 i n}| .

Pr
e

Teorema 22.2. A distncia de Hamming uma mtrica ou seja, para quaisquer trs vetores u, v, w,
d(u, v) 0;

d(u, v) = d(v, u) (simetria);

d(u, v) d(u, w) + d(w, v) (desigualdade de tringulo).

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

Definio 22.3 (Peso de um Vetor). O peso de um vetor v a quantidade de


entradas no nulas em v.
Ser til tambm a noo de arredores de um vetor, que formalizada na
definio de disco.

Definio 22.4 (Disco). Seja a An e t R, tal que t 0. O disco com


centro a e raio t
D(a, t) = {v An : d(v, a) t}.
Definio 22.5 (Distncia Mnima). Seja C um cdigo. A distncia mnima
de C
min {d(u, w) : u, w C, u 6= w} .

Teorema 22.6. Com distncia mnima d, um cdigo C pode corrigir no mximo


b(d 1)/2c erros.

notas de aula verso 79 - Jernimo C. Pellegrini

22.1. CORREO DE ERROS

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.

Se um cdigo tem M palavras de tamanho n e distncia mnima d, dizemos


que um (n, M, d)-cdigo.
Definio 22.7 (Cdigos Equivalentes). Seja C um (n, M, d)-cdigo, uma
n-permutao e pi0 uma q-permutao. Ento,

lim

Uma permutao posicional consiste em aplicar a cada palavra de C;

Uma permutao simblica consiste em aplicar 0 a cada smbolo do alfabeto de C.


Dois cdigos C e C 0 so equivalentes se possvel transformar C em C 0 atravs
de uma sequncia de permutaes posicionais e simblicas.

Cdigos Lineares

Pr
e

22.1.1

Seja C um cdigo com distncia mnima d, corrigindo no mximo e erros.


Quando uma mensagem y recebida, possivelmente com erros, o receptor deve
buscar a palavra cinC mais prxima da palavra recebida y. Quando o tamanho
de C muito grande, isto muito lento.
Suponha que o alfabeto de C , e que || = q, potncia de algum primo.
Podemos ver como o conjunto de elementos de Fq .

Definio 22.8 (Cdigo Linear). Seja Vn (q) o espao vetorial de dimenso n


sobre o corpo Fq . Um cdigo linear C sobre um subespao de Vn (q). Se C
um espao k-dimensional, dizemos que um [k, n]-cdigo.

Ve
rs

Se || = q, o [k, n]-cdigo linear com alfabeto um (n, q k , d)-cdigo.


Uma caracterstica importante de cdigos lineares que podemos descrev-lo
com k palavras (a base do subespao C, que tem dimenso k).

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.

Teorema 22.10. Se G matriz geradora de C, e G0 obtida de G por


Permutao de linhas ou de colunas,
Multiplicao de linhas ou de colunas por escalar, ou
Soma de mltiplo de uma linha a outra linha,

ento G0 gera um cdigo C 0 , equivalente a G.

notas de aula verso 79 - Jernimo C. Pellegrini

276

CAPTULO 22. CDIGOS CORRETORES DE ERROS

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

Seja C um [k, n]-cdigo linear sobre = Fq com matriz geradora G na forma


[Ik , A]
A codificao de uma mensagem m em c realizada da seguinte maneira:
interpretamos m como um vetor linha m1 , m2 , . . . , mk e calculamos
c = mG.

de um cdigo linear

0
0 1 1
0
2 1 0 .
1
1 0 2

Pr
e

Exemplo 22.11. A matriz geradora

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 .

Definimos agora a matriz de teste de paridade, que usada para verificar se


uma palavra pertence ao cdigo, e tambm para decodificar palavras corrigindo
erros.

Ve
rs

Definio 22.12 (Teste de Paridade). Seja C um cdigo linear com matriz


geradora G = [Ik ; A]. A matriz teste de paridade de C
H = [AT ; Ink ].

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

O prximo Teorema d um mtodo para deteco de erros (mas no para


correo).

notas de aula verso 79 - Jernimo C. Pellegrini

22.1. CORREO DE ERROS

277

Exemplo 22.14. Para a palavra que codificamos, 101220,



1

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

Teorema 22.13. c C se e somente se HcT = 0.

lim

Seja C um [n, k]-cdigo binrio. Como C subespao de Vn , ento o grupo


aditivo (C, +) subgrupo de (Vn , +). Por isso, para todo x Vn h uma nica
classe lateral x + C.
Teorema 22.15. Se aps o envio de uma mensagem m uma mensagem y =
m + e recebida, ento y pertence a uma classe lateral de C, e esta classe lateral
o de possveis vetores de erro.

Pr
e

Demonstrao. e vetor de erro se e somente se existe c C tal que e = y c.


Mas C subespao de Vn . Se c C, ento c C e e = y + c, e e y + C.
Decodificar uma mensagem y recebida encontrar na classe lateral y + C o
vetor de menor peso.
1. encontre z, o lder da classe lateral y + C

2. m = y z

Ve
rs

Teorema 22.16. Seja C um cdigo linear com matriz teste de paridade H.


Duas palavras y1 e y2 de C pertencem a uma mesma classe lateral se e somente
se
Hy1T = HysT .
Demonstrao. Pela definio, y1 e y2 pertencem mesma classe lateral se e
somente se existe c C tal que y1 = y2 + c. Ento
Hy1T

H(y2 + c)T

Hy2T + HcT .

Como HcT = 0, a prova est concluda.

Definio 22.17 (Sndrome). A sndrome de uma classe lateral x + C HxT .


O algoritmo de decodificao pode ser melhorado mantendo uma tabela que
mapeie sndromes em lderes de classes laterais.

notas de aula verso 79 - Jernimo C. Pellegrini

278

CAPTULO 22. CDIGOS CORRETORES DE ERROS

22.2

Criptografia com cdigos corretores de erros

Construo 22.18 (Criptossistem de McEliece).

in
ar

Esta Seo descreve o criptossistema de McEleice., que baseado na dificuldade


de decodificar cdigos lineares (que N P-difcil [149]).
A ideia que McEliece teve muito simples: o processo de encriptao adiciona rudo aleatreo mensagem, de maneira que no seja possvel recuper-la
facilmente. Para decriptar a mensagem, a chave pblica usada uma matriz
decodificadora que corrige os erros introduzidos.

Gen(1n ): escolha t N tal que t << n. Gere as matrizes:

lim

G uma matriz k n, matriz geradora de um [n, k]-cdigo linear que


corrija no mximo t erros.
S uma matriz k k, uma matriz binria aleatrea no singular.
P uma matriz n n aleatrea de permutao.

Pr
e

= SGP .
Finalmente, gere a matriz chave G

pk = (G, t)
sk = (S, G, P )

+ z, onde z um vetor de erros com peso no mximo t.


Encpk (m) = mG
Decsk (c):

1. Calcule c = cP 1 . Como P 1 de permutao, ento c palavra do


cdigo de canal (assim como c).
2. Use o algoritmo de decodificao do cdigo para obter uma palavra
m
a partir de c.

3. Retorne m = mS
1 .

Ve
rs

A corretude do criptossistema de McEliece no imediatamente bvia, por


isso a demonstramos a seguir.
Teorema 22.19. Para qualquer par de chaves pk, sk no criptossistema de McEliece,
Decsk (Encpk (m)) = m.

Demonstrao. Primeiro observamos que

cP 1
+ z)P 1
(mG

(mSGP + z)P 1

(mS)GP P 1 + zP 1

(mS)G + zP 1 .

c =

A partir disso, temos os seguintes fatos:

notas de aula verso 79 - Jernimo C. Pellegrini

22.2. CRIPTOGRAFIA COM CDIGOS CORRETORES DE ERROS

279

mS uma palavra do cdigo da fonte, e (mS)G sua codificao;

in
ar

Como P 1 uma permutao e z tem no mximo t uns, zP 1 tambm


ter no mximo t uns. Isto significa que adicionamos no mximo t erros
mensagem codificada mS.

Como a quantidade de erros menor que t, o algoritmo de decodificao


obter mS.
Ao multiplicar mS por S 1 obtemos m.

lim

Apesar do criptossistema de McEliece ser randomizado, temos o seguinte


Teorema:
Teorema 22.20. O criptossistema de McEliece, como descrito na Construo 22.18, no tem segurana CPA.

Pr
e

No entanto, possvel tornar o criptossistema CPA-seguro concatenando um


vetor aleatrio com a mensagem a ser cifrada.
Embora o criptossistema de McEliece possa ser usado com qualquer cdigo
linear, aparentemente s cdigos de Goppa o tornam seguro. Houve diversas
tentativas de uso de outros cdigos, mas todos so suscetveis a ataques.

Notas

Ve
rs

O primeiro criptossistema baseado em cdigos corretores de erros foi o de Robert


McEliece, publicado em 1978 [150, 151] e foi tambm o primeiro criptossistema randomizado. Nojima, Imai, Kobara e Morozov demonstraram em 2008
que o ciptossistema de McEliece tem segurana IND-CPA se a mensagem for
cocnatenada com um vetor de bits aleatrios [152].

Exerccios

Ex. 133 Prove o Teorema 22.2.


Ex. 134 Prove o Teorema 22.10.
Ex. 135 Prove o Teorema 22.13.
Ex. 136 Prove o Teorema 22.20.
Ex. 137 Implemente um cdigo corretor de erros linear simples.
Ex. 138 Se voc leu o Captulo 21, discorra sobre a relao entre cdigos
corretores de erros e reticulados, com particular ateno a suas aplicaes em
Criptografia.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 22. CDIGOS CORRETORES DE ERROS

Ve
rs

Pr
e

lim

in
ar

280

Captulo 23

lim

Criptografia Visual

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

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.

Um nico segredo (Naor e Shamir)

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

notas de aula verso 79 - Jernimo C. Pellegrini

282

CAPTULO 23. CRIPTOGRAFIA VISUAL

B+B=

A+B=

B+A=

lim

A+A=

in
ar

com probabilidade 1/2).

Pr
e

O pixel branco na verdade aparece como cinza na figura.


Se os pares forem escolhidos desta forma e um adversrio conseguir uma das
transparncias, cada figura A pode representar zero ou um com probabilidade
1/2; o mesmo vale para B, e temos o mesmo efeito do one-time pad!
Com isto podemos definir mais claramente o que entendemos por um esquema visual de compartilhamento de segredos. Queremos distribuir imagens
(ou transparncias) para cada um dos participantes. Cada pixel da mensagem
clara pode ser codificado em m pixels na imagem encriptada (no caso anterior,
m = 4).
Podemos codificar cada um dos blocos que descrevemos como uma linha: A
descrito como (1, 1, 0, 0) e B como (0, 0, 1, 1)
Somar A com A (ou A com B etc), como fizemos acima, o mesmo que fazer
o ou lgico de duas linhas:
1, 1, 0, 0
0, 0, 1, 1
1, 1, 1, 1

o
Ve
rs

A, B :

A, A :

1, 1, 0, 0
1, 1, 0, 0
1, 1, 0, 0

No primeiro caso, demos um bloco A para um participante e um bloco B para


outro. O resultado da superposio um bloco completamente coberto (a linha
do resultado s tem uns). No segundo caso, demos partilhas A para ambos, e o
resultado um bloco com 50% de uns.
Assim, para escolher partilhas de n participantes, selecionamos n linhas. O
ou exclusivo das linhas pode ter peso de Hamming alto (resultando em um pixel
escuro) ou baixo (resultando em um pixel cinza).
Escolhemos as partilhas de um pixel por vez, e depois entregamos a cada
participante a imagem com todos os seus pixels. Para determinar como um
pixel ser traduzido no texto encriptado, fazemos o seguinte:
i) Se o pixel um (preto), escolha aleatoreamente uma sequncia de imagens
(no ltimo exemplo cada uma com 4 pixels) que, quando sobrepostas, fique
completamente encoberta.

notas de aula verso 79 - Jernimo C. Pellegrini

23.1. UM NICO SEGREDO (NAOR E SHAMIR)

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

Podemos ento construir dois conjuntos de matrizes, C0 e C1 , de forma que


linhas de C0 sempre tenham peso de Hamming baixo e as de C1 tenham peso
alto.

 
 
 
 
 

1100
1010
0101
0011
1001
0110
C0 =
,
,
,
,
,
,
1100
1010
0101
0011
1001
0110

 
 
 
 
 

1100
1010
0101
0011
1001
0110
C1 =
,
,
,
,
,
.
0011
0101
1010
1100
0110
1001

Pr
e

Neste exemplo temos somente dois possveis resultados para a superposio:


100% preto ou 50% preto (cinza), e fcil determinar quais pixels sero considerados brancos e quais sero considerados pretos. Quando mais blocos so
superpostos, podemos ter valores como 1/3, 1/4 ou qualquer outra proporo
de preto e branco. Definimos ento que os pixels brancos so aqueles para os
quais H(v) d m, onde d um limiar e a diferena relativa, e que os
pixels pretos so aqueles para os quais H(v) d. Para que haja contraste e
seja possvel identificar a mensagem, no deve haver pixels com H(v) entre d e
d m.
Definio 23.1 (Esquema visual de compartilhamento de segredos (k, n)). Um
esquema visual (k, n) de compartilhamento de segredos consiste de dois conjuntos C0 e C1 , cada um contendo matrizes n m. Sejam d e como descritos no
texto. Exigimos que:

i) Para qualquer matriz S em C0 , o ou lgico de quaisquer k linhas deve ter


medida de Hamming d m.

Ve
rs

ii) Para qualquer matriz S em C1 , o ou lgico de quaisquer k linhas deve ter


medida de Hamming > d.

iii) Seja { i1 , i2 , . . . , iq }, com q < k, e seja Dt o conjunto de matrizes obtido a


partir de Ct , mas apenas com as linhas i1 , . . . , iq . Os conjuntos D0 e D1
devem ser indistinguveis (devem ter as mesmas matrizes com as mesmas
frequncias).
Por exemplo, para q = 1 usando apenas a linha 0 no exemplo anterior, temos
C0 = C1 =







1100 , 1010 , 0101 , 0011 , 1001 , 0110 .

Desta forma se q participantes se unirem, no sabero, para um dado pixel, se


suas partilhas foram sorteadas do conjunto C0 ou de C1 .

notas de aula verso 79 - Jernimo C. Pellegrini

284

CAPTULO 23. CRIPTOGRAFIA VISUAL

23.1.1

Esquemas para k e n pequenos

in
ar

O esquema exposto no incio deste Captulo funciona para dois participantes, e


ambos devem juntar suas transparncias para obter a mensagem. Nesta Seo
desenvolvemos esquemas mais gerais, (2, n) e (3, 3).

lim

Construo 23.2 (Esquema visual (2, n) de compartilhamento de segredos).


Seja perm_col (M ) o conjunto das matrizes obtidas permutando as colunas de
M . Ento C0 e C1 definidos a seguir so um esquema (2, n) de compartilhamento
de segredos.

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

Construo 23.3 (Esquema visual (3, 3) de compartilhamento de segredos). C0


e C1 definidos a seguir constituem um esquema visual (3, 3) de compartilhamento
de segredos.

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

notas de aula verso 79 - Jernimo C. Pellegrini

23.3. MLTIPLOS SEGREDOS

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?

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 23. CRIPTOGRAFIA VISUAL

Ve
rs

Pr
e

lim

in
ar

286

Captulo 24

lim

Encriptao Negvel

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Ve
rs

Pr
e

Embora a garantia de sigilo seja o objetivo primeiro de criptossistemas, h


cenrios onde os criptossistemas tradicionais, descritos na Parte I deste texto,
no so eficazes, ainda que satisfaam as definies de segurana dadas. Dizemos
que aqueles criptossistemas so comprometedores, porque uma vez que Alice
tenha encriptado uma mensagem e Eve a tenha interceptado, Eve saber que
aquela uma mensagem encriptada, e poder (dependendo das circunstncias)
usar obter a chave usando de coero.
Queremos que seja possvel a Alice e Bob escapar convincentemente da coero de Eve sem revelar o texto claro.
H uma maneira de atingir este objetivo: Alice encripta uma mensagem m
com uma chave k e usando bits aleatreos r, resultando em c (normalmente no
damos tanta ateno fonte de bits aleatreos, mas ela crucial neste Captulo).
Quando Eve exige a entrega da chave e dos bits aleatreos usados, Alice entrega
uma mensagem falsa m0 e uma chave k 0 ou bits r0 tais que Enck0 (m0 , r0 ) = c.
Usando criptossistemas tradicionais isso no vivel uma das caractersticas
desejveis do projeto desses sistemas justamente que seja difcil encontrar m0
(por isso o esquema de assinaturas RSA funciona) e um texto encriptado
muitas vezes visto como um comprometimento com o texto claro.
Neste Captulo usaremos a notao Encpk (m, r) para denotar a encriptao
da mensagem m usando a chave pblica pk, e usando r como um parmetro
extra de aleatoriedade.
Demos o nome de criptossistemas s construes do Captulo 9. As construes apresentadas neste Captulo podem envolver mais comunicao do que
normalmente se d em criptossistemas assimtricos (as duas partes podem ter
que trocar mais do que duas mensagens), e portanto tratamos estas construes
como protocolos (ou esquemas) negveis para envio de mensagens.
Podemos classificar etes protocolos de acordo com a possibilidade de negao
da mensagem. Um protocolo
negvel pelo remetente se o remetente (aquele que encriptou a mensagem)
puder convencer um adversrio de que a mensagem clara m0 e no m.
287

notas de aula verso 79 - Jernimo C. Pellegrini

288

CAPTULO 24. ENCRIPTAO NEGVEL


Isso significa que aps encriptar c = Encpk (m, r), deve ser possvel escolher
m0 , r0 tais que Encpk (m, r) = Encpk (m0 , r0 ). Isso feito por um algoritmo
Fake(pk, c, m0 ), que determina r0 .

in
ar

negvel pelo destinatrio quando o destinatrio (que decifra a mensagem)


pode escolher decifrar m0 ao invs de m;
negvel por remetente e destinatrio.

Queremos que um adversrio no possa distinguir entre as duas situaes a


seguir.

i) S envia a R a mensagem m, e declara honestamente ao adversrio que


enviou m.

lim

ii) S envia a R a mensagem m0 , e declara falsamente ao adversrio que enviou


m.

Pr
e

Denotamos os bits aleatreos de S por rS em (i) e rS0 em (ii); da mesma forma,


0
a entrada aleatrea de R nas duas situaes rR e rR
.
0
Na situao (ii), S declara ter enviado m 6= m, simplesmente alegando ter
usado bits aleatreos diferentes (
rS ), de forma que as encriptaes de (m1 , rS ) e
de (m2 , rS ) resultem na mesma interao com R (ou seja, as mesmas mensagens
so trocadas entre R e S.
O diagrama a seguir ilustra as duas situaes decritas.
S

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.

notas de aula verso 79 - Jernimo C. Pellegrini

24.1. ESQUEMA DE HOWLADER-BASU

289

Gen(1n ) gera um par de chaves pk e sk.

in
ar

Sendpk (m, rS ) usando os bits aleatreos rS , envia de S a R a mensagem


m.
Receivesk (rR ) usando os bits aleatreos rR , obtm de R uma mensagem
m.

Fake(pk, t, rS , m0 ) gera uma sequncia de bits rS que poderia ser usada


para envia uma mensagem m0 .

lim

Denotamos por COM(m, rS , rR ) a transcrio da comunicao usada quando R


envia m para S, e os bits aleatreos de R e S so rS , rR .
O protocolo deve satisfazer os seguintes requisitos.

Corretude: Se S enviou uma mensagem m a R usando o protocolo, a


probabilidade de R receber m0 6= m desprezvel em n.
Segurana: COM(m1 ) COM(m2 ).

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 ).

O requisito de segurana equivalente a segurana CPA para criptossistemas


assimtricos.

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

Construo 24.2 (Esquema de Howlader-Basu, negvel pelo remetente (nico


bit)).
Gen(1n ): escolha dois primos p, q com n bits cada, e seja N = pq. As
chaves pblica e privada do destinatrio so pk = N e sk = (p, q). Gere
tambm aleatoreamente r 6= 0 com k bits, para algum k suficientemente
grande.
SendN (b, r) calculada da seguinte maneira:
Cada bit de r determina uma linha em uma matriz A:

a0,0 a0,1

A = a1,0 a1,1

..
..
.
.
A i-sima linha contm nmeros em ZN .

notas de aula verso 79 - Jernimo C. Pellegrini

290

CAPTULO 24. ENCRIPTAO NEGVEL

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

onde ri o i-simo bit de r;

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.

notas de aula verso 79 - Jernimo C. Pellegrini

24.1. ESQUEMA DE HOWLADER-BASU

291

O Exerccio 143 pede a demonstrao deste Teorema.


O Exemplo a seguir ilustra a aplicao do esquema.

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.

x = (18, 20, 2, 30)


e calculamos x2j (mod 35), obtendo
(9, 15, 4, 25).

lim

Exemplo 24.5 (Esquema de encriptao negvel (Howlader-Basu para um


bit)). Suponha que o bit ser enviado seja b = 1, e que a chave pblica de
Bob seja N = 5 7 = 35. Escolhemos aleatoreamente r = (1, 1, 0, 0). Este valor
de r implica que em nossa matriz A, as duas primeiras linhas devem ter resduos
quadrticos (mod 35), e as duas ltimas devem ter nmeros com smbolo de
Jacobi (x/35) = 1.
Para a primeira linha, selecionamos aleatoreamente

Pr
e

A segunda linha calculada de maneira semelhante. Escolhemos aleatoreamente


x = (31, 5, 10, 28)

e calculamos os quadrados:

(16, 25, 30, 14).

Para a segunda e a terceira linhas, precisamos de nmeros x tais que (x/35) = 1.


Escolhemos ento

(3, 11, 17, 29)


(27, 9, 25, 13)

Ve
rs

Destes, 3, 13, 17 e 27 no so resduos quadrticos embora tenham (x/25) = +1.


A matriz :

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.

Enviamos agora para Bob o resultado (c, A).


Bob receber c e A e conseguir calcular r a partir de A: basta percorrer
linha por linha e verificar se em cada uma os elementos so resduos quadrticos

notas de aula verso 79 - Jernimo C. Pellegrini

292

CAPTULO 24. ENCRIPTAO NEGVEL

=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

Se Eve puder nos obrigar a entregar a mensagem enviada, podemos dizer


que era zero (e no um): basta entregar A a Eve e dizer que r = (1, 1, 1, 0).
Estamos ento declarando que as trs primeiras linhas de A contm resduos
quadrticos. Como Eve no tem a chave pblica de Bob (e ns tambm no,
por isso no podemos entreg-la), no tem como saber se estamos mentindo.

lim

O esquema apresentado ineficiente quando queremos enviar mais de um


bit: cada bit implica na gerao de uma nova matriz.

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

Gen(1n ): escolha dois primos p, q com n bits cada, e seja N = pq. As


chaves pblica e privada do destinatrio so pk = N e sk = (p, q).
SendN (m1 , m2 , r): sejam m1 , m2 mensagens com k bits cada uma. Calcule
a diferena entre m1 e m2 mdulo dois:
md = m1 m2 .

Um vetor r0 calculado:

r0 = r md .

Ve
rs

Calcule A representando o vetor r0 .


c = m1 r0 .

Retorne (c, A).

Receive(p,q) (c, A): construa r0 a partir de A e depois decifre a mensagem:


m1 = c r 0 .

Fake(N, c, A, m2 ): para abir A desonestamente sob coero, observamos


que no podemos mudar os bits de r0 de zero para um. Assim, os bits
zero so mantidos. J os bits iguais a um podem ser mudados para zero
se quisermos. Ou seja,
r00 = r0 md
(onde r zero, mantemos o zero; onde um, mudamos para zero se um
bit onde m1 e m2 diferem). O adversrio poder verificar que
m2 = c r00 .

notas de aula verso 79 - Jernimo C. Pellegrini

24.1. ESQUEMA DE HOWLADER-BASU

293

A segurana do esquema para mltiplos bits semelhante do esquema para


um nico bit.

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:

md =(0, 1, 1, 0) (0, 0, 1, 1) = (0, 1, 0, 1)


r0 =(1, 1, 0, 0) md = (1, 1, 0, 1)
c =m r0
=(0, 1, 1, 0) (1, 1, 0, 1)

Pr
e

=(1, 0, 1, 1).

Enviamos ento (A, (1, 0, 1, 1)) para Bob.


Bob recebe a mensagem, determina r0 = (1, 1, 0, 0) a partir de A e calcula
m1 = r0 c = (1, 1, 0, 1) (1, 0, 1, 1) = (0, 1, 1, 0)
Se formos obrigados a entregar a mensagem, calculamos

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 .

Na Construo 24.6, Send e Receive funcionam de maneira clara: so apenas


uma variante do one-time pad, com o pad sendo transmitido como uma matriz
de nmeros mdulo N . J a corretude do algoritmo Fake no imediatamente
clara, e portanto provamos o seguinte Teorema.
Teorema 24.8. A sada de Fake como na Construo 24.6, r00 tal que m2 =
r00 c, desde que o remetente consiga obter r0 corretamente a partir de A.
Demonstrao. A cadeia r0 usada como pad para encriptar m em c. Isso

notas de aula verso 79 - Jernimo C. Pellegrini

294

CAPTULO 24. ENCRIPTAO NEGVEL

significa que r0 = m c (mod 2). Mas como c = m (r md ), temos


m2 r00 =m2 (r md ) md

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)

notas de aula verso 79 - Jernimo C. Pellegrini

24.3. NEGABILIDADE POR DESTINATRIO E NEGABILIDADE COMPLETA295


seja computacionalmente indistinguvel de

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 ).

Informalmente, o esquema de Drmuth-Freeman funciona da seguinte maneira:


1. Bob envia para Alice 4n + 1 chaves pblicas diferentes;

Pr
e

2. Alice particiona as chaves em trs conjuntos A, B, C e usa:


A : n + 1 chaves para encriptar b;
B : n chaves para encriptar b;

C : 2n chaves para usar com RandomCT(k), resultando em bits de C,


tal que a probabilidade de um deles ser uma possvel encriptao de
b 1/2;

Alice repete este processo k vezes para garantir que a maioria dos bits ser
b.

Ve
rs

3. Alice envia para Bob todos os bits encriptados;


4. Bob decifra todos os bits e presume que b aquele representado pela
maioria dos bits decifrados;

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

Negabilidade por destinatrio e negabilidade


completa

possvel construir esquemas negveis pelo destinatrio e negveis pelas duas


partes a partir de esquemas negveis pelo remetente.

notas de aula verso 79 - Jernimo C. Pellegrini

296

CAPTULO 24. ENCRIPTAO NEGVEL

in
ar

Construo 24.11 (Esquema de encriptao negvel pelo destinatrio). Seja


um esquema de encriptao suportando negao pelo destinatrio. Sejam A
e B duas partes e b um bit a ser enviado de A para B.
Primeiro B escolhe aleatoreamente um bit r e envia para A usando . Em
seguida, A envia b r para B.
Como r foi enviado por B de forma negvel, B poder negar que recebeu o
bit b: basta dizer que o bit aleatreo enviado era r, e que consequentemente o
bit recebido foi b.

A partir de um esquema negvel pelo remetente podemos tambm construir


um esquema negvel por ambas as partes. Esta construo, no entanto, depende do auxlio de um nmero de participantes adicionais, que denotamos por
I1 , I2 , . . . , Ik .

24.4

Pr
e

lim

Construo 24.12 (Esquema de encriptao completamente negvel).


Para
L
transmitir um bit b para B, A primeiro escolhe k bits tais que
bi = b. Depois envia cada bi para cada intermedirio Ii usando um esquema negvel pelo
remetente. Cada Ii ento envia bi para B usando
L um esquema negvel pelo
destinatrio. Depois disso B pode calcular b =
bi . Ainda que A, B e todos
exceto um dos intermedirios sejam obrigados a entregar seus bits, possvel
para A e B mentir a respeito do bit. Evidentemente necessrio que todas as
partes envolvidas ajam de maneira coordenada.

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

O primeiro trabalho a descrever encriptao negvel foi publicado em 1996 por


Canetti, Dwork, Naor e Ostrovsky [163].
Um criptossistema negvel pelo remetente foi descrito em 2009 por Howlader
e Basu [164]. Outros esquemas de encriptao negvel foram publicados por
Maged Ibrahim [165, 166] e por Klonowski, Kubiak e Kutylowsk [167].
Drmuth e Freeman publicaram em 2011 o primeiro criptossistema supostamente negvel pelo remetente com probabilidade desprezvel de deteco [168]
infelizmente Peikert e Waters mostraram que havia um erro na construo, e
o criptossistema no seguro [169].

notas de aula verso 79 - Jernimo C. Pellegrini

24.4. APLICAES

297

Exerccios
Ex. 142 Porque, no esquema de Howlader-Basu, exigimos que r 6= 0?

in
ar

Ex. 143 Calcule a probabilidade de um bit ser transmitido erroneamente


no esquema para um nico bit de Howlader-Basu, demonstrando o Teorema 24.4.
Ex. 144 O esquema de Howlader-Basu depende da gerao de nmeros
com smbolo de Jacobi (k/N ) igual a +1, onde N = pq a chave pblica do
destinatrio. Mostre como gerar estes nmeros com distribuio uniforme.

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

Ex. 148 As Construes 24.11 e 24.12 descrevem esequemas para um nico


bit. Diga como us-las para mensagens com muitos bits.
Ex. 149 A Construo 24.6 pode ser extendida para mltiplas mensagens
m1 , m2 , . . . , mk , de maneira que o remetente possa decidir qual mi apresentar
ao adversrio?

Ex. 150 Descreva o esquema de Drmuth-Freeman com mais formalidade,


usando a Definio 24.1.

Ve
rs

Ex. 151 Implemente os esquemas de Howlader-Basu e de Drmuth-Freeman.

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 24. ENCRIPTAO NEGVEL

Ve
rs

Pr
e

lim

in
ar

298

Captulo 25

lim

Votao Eletrnica

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

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;

Democracia: somente votantes registrados podem votar, e estes somente


podem votar uma vez;

Ve
rs

Sigilo (ou privacidade): no deve ser possvel associar a identidade de


um eleitor ao seu voto;
No-coercibilidade: aps a votao, no deve ser possvel obter de um
participante qualquer tipo de comprovao de que ele tenha votado em
algum dos candidatos;
Verificabilidade: deve ser possvel aos participantes (ou a observadores em
geral) verificar que o processo foi seguido como deveria e que o resultado
foi computado corretamente. H duas variantes de verificabilidade:
Verificabilidade universal: qualquer um pode verificar a execuo do
protocolo;
Verificabilidade individual: cada eleitor pode verificar a execuo do
protocolo;

Justeza: um eleitor que vote depois de outro no deve ter sua disposio
qualquer informao sobre os votos j feitos, exceto o seu.
299

notas de aula verso 79 - Jernimo C. Pellegrini

300

CAPTULO 25. VOTAO ELETRNICA

As primitivas criptogrficas normalmente usadas em sistemas seguros de


votao incluem:

in
ar

Provas de conheceimnto zero so usadas de diversas formas em protocolos


de votao, quando h iterao entre as partes;

Compartilhamento de segredos pode ser usado para que no seja necessrio


confiar em uma nica autoridade no processo de apurao dos votos (as
chaves ou qualquer outra informao necessria para decriptar os votos
so distribudas como um segredo compartilhado);

lim

Encriptao homomrfica normalmente usada para contabilizar votos na


fase de apurao, sem decript-los;
Encriptao negvel pode ser usada para conseguir no-coercibilidade;

Assinaturas cegas so usadas para obter de uma autoridade uma cdula


(ou um token), que permite ao eleitor votar sem se identificar no resto
do processo de votao;

Pr
e

Re-encriptao uma propriedade derivaad da encriptao homomrfica.


A partir de um texto encriptado c deve ser possvel obter outro texto
encriptado c0 que corresponde ao mesmo texto claro m (se usamos um
esquema de encriptao homomrfico para soma, basta operar com a encriptao de zero, por exemplo: c + Enc(0) = c0 , mas ambos decifram para
a mesma mensagem);
Mix-nets so redes de comunicao que tornam difcil determinar o autor
de uma mensagem.

A comunicao pode se dar de diferentes maneiras:

Ve
rs

Canal pblico, ou quadro de avisos;


Canal no-rastrevel (annimo);
Canal seguro (sigiloso);
Canal seguro e no-rastrevel.

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 ).

notas de aula verso 79 - Jernimo C. Pellegrini

25.2. ASSINATURAS CEGAS

301

c = Encpk1 (Encpk2 (. . . (Encpkn (m)) . . .))

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

Em seguida, envia c ao primeiro servidor.


Cada servidor Ai espera que uma quantidade de mensagens esteja disponvel,
e decripta parcialmente usando sua chave (ski ). Depois muda aleatoriamente a
ordem das mensagens e as envia para o servidor Ai+1 . O ltimo servidor poder
abrir as mensagens e repass-las, mas sem a colaborao dos outros no poder
associar as mensagens aos remetentes.
Em esquemas de votao, mix-nets so usadas para permitir que eleitores
enviem seus votos anonimamente.

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

SigExtract(s0 , r): se s foi gerado por Blind(m, pk, r) e s0 a assinatura de


s pelo detendor do par de chaves pk, sk, ento SigExtract(s0 , r) retornar
uma assinatura vlida de m, que pode ser verificada com a chave pblica
pk.
O RSA pode ser usado para realizar assinaturas cegas. Suponha que as
chaves so sk = (N, a) e pk = (N, b), e que Bob esteja pedindo autoridade
Alice que assine uma mensagem m.
1. Bob escolhe r co-primo com N aleatoriamente e envia para Alice M = mrb
(mod N ).
2. Alice assina M normalmente. O resultado, M = (mrb )a = ma rab ,
devolvido para Bob.

3. Bob remove o fator obfuscante rb multiplicando Sign(M ) por r1 :


Signsk (M )r1 =ma rab r1
=ma rr1
=ma

(mod N ).

notas de aula verso 79 - Jernimo C. Pellegrini

302

CAPTULO 25. VOTAO ELETRNICA

Desta forma Bob obteve ma (mod N ), que exatamente a mensagem m


assinada com a chave de Alice sem que Alice saiba o contedo da mensagem.

in
ar

Teorema 25.2. No esquema de assinaturas cegas RSA, o assinante no obtm


qualquer informao a respeito da mensagem alm do que poderia obter a partir
da mesma mensagem encriptada usando o RSA.
O Exerccio 155 pede que seja apontado o motivo da insegurana do uso da
mesma chave para assinatura cega e para encriptao de mensagens.

25.3

Exemplo: esquema de Chaum

lim

O esquema de Chaum usa mix networks e depende de um criptossitema tal que


Encpk (Encsk (x)) = Encsk (Encpk (x)) = x.
Construo 25.3 (Protocolo de votao de Chaum).

1. Cada eleitor Pi gera seu par de chaves (pki , ski ).

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.

4. Os eleitores verificam se suas chaves esto na lista. As chaves aparecem


fora de ordem na lista, portanto cada eleitor consegue somente verificar
se sua chave est presente, mas nada pode inferir a respeito das chaves
dos outros eleitores Se algum eleitor no encontrar sua chave na lista, ele
pode neste momento pedir que a eleio seja reiniciada.

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

Analisamos a seguir as caractersticas do esquema de Chaum. Esta uma anlise


informal e muito pouco detalhada.
Corretude: claramente sim.

notas de aula verso 79 - Jernimo C. Pellegrini

25.4. EXEMPLO: O ESQUEMA CGS (CRAMER, GENNARO, SCHOENMAKERS)303


Robustez: o resultado computado por todos os eleitores, e para que seja
manipulado seria necessrio quebrar o criptossistema usado no protocolo.
Coalises no tem mais poder que eleitores individuais.

in
ar

Democracia: no suportada a mixnet recebe uma lista de chaves pblicas, mas no h registro de eleitores.

Sigilo: se a eleio for reiniciada na segunda fase, durante a apurao dos


votos (quando exatamente um voto estiver faltando), todos conhecero os
votos j depositados, e podero usar esta informao para inferir o voto
do eleitor cujo voto estava faltando quando a eleio reiniciar.

lim

No-coercibilidade: no suportada qualquer eleitor pode provar que


o detentor de um par de chaves plbica/privada, encriptando um texto a
escolha do adversrio.

Verificabilidade universal: qualquer um pode verificar a execuo do protocolo.

25.4

Pr
e

Justeza: se a eleio for reiniciada na segunda fase, durante a apurao


dos votos (quando algum voto estiver faltando), todos conhecero os votos
j depositados, e podero usar esta informao quando a eleio reiniciar.

Exemplo: o esquema CGS (Cramer, Gennaro, Schoenmakers)

Ve
rs

O esquema de Cramer, Gennaro e Schoenmakers usa encriptao homomrfica


para contabilizar os votos, alm de provas de conhecimento zero e encriptao
com qurum.
Descrevemos inicialmente o esquema de votao para votos binrios (cada
eleitor escolhe sim ou no), e em seguida a verso 1-de-L.
De maneira resumida, os votos so encriptados pelos eleitores usando o criptossistema Elgamal e enviados s autoridades. Como o Elgamal homomrfico,
o produtrio dos textos encriptados ser igual soma dos votos.
Uma descrio detalhada das trs fases do protocolo dada na Construo
a seguir.
Construo 25.4 (Esquema de votao de Cramer, Gennaro e Schoenmakers).

I: Inicializao As chaves de um criptossistema Elgamal com qurum1 so


criadas. A chave privada (G, q, g, s), e s compartilhado por n autoridades. A
chave pblica (G, q, g, h) publicada, assim como os comprometimentos hi = g si
de cada autoridade com sua partilha si . Publica-se tambm um gerador t 6= g.
1 Criptossistemas

com qurum so descritos na Seo 12.6.

notas de aula verso 79 - Jernimo C. Pellegrini

304

CAPTULO 25. VOTAO ELETRNICA


II: Votao O eleitor Vi codifica seu voto da seguinte maneira:

no: m1 =t1
O voto encriptado em
(a, b) = (g k , hk mb ),

in
ar

sim: m0 =t

lim

onde b pode ser 0 ou 1 e k escolhido aleatoriamente.


Em seguida, o eleitor constri uma prova de que seu voto da forma correta
(ou seja, que encriptao de t+1 ou de t1 ). Para isto basta uma prova nointerativa de igualdade de logaritmos:
logg (a) = logh (bt1 ) ou logg (a) = logh (bt).
O voto e a prova so publicados no quadro de avisos.
III: Apurao As provas de validade dos votos devem ser verificadas. Depois, o produto dos votos computado:
Y

ai ,

Y 
bi .

Pr
e

(A, B) =

As autoridades podem ento juntar-se para calcular As e finalmente,


C = BAs = tD

onde a diferena entre votos sim (t+1 ) e no (t1 ).

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:

notas de aula verso 79 - Jernimo C. Pellegrini

25.5. EXEMPLO: ESQUEMA FOO (FUJIOKA, OKAMOTO, OHTA)

25.4.2

305

Votao 1-de-L

in
ar

O esquema descrito pode ser modificado para escolhas do tipo um dentre L


opes. Ao invs de um gerador t, usamos vrios t1 , t2 , . . . , tL , um para cada
opo. O eleitor codifica seu voto na i-sima opo encriptando t1
i .
Supondo que h k1 votos na opo 1, k2 votos na opo 2, e assim por diante,
durante a fase de apurao as autoridades obtero
C = tk11 tk22 . . . tkLL ,

25.5

lim

e podero obter os valores de cada ki (o Exerccio 160 pede o desenvolvimento


deste mtodo).

Exemplo: esquema FOO (Fujioka, Okamoto,


Ohta)

Construo 25.5.
I: Inicializao

Pr
e

No esquema FOO h duas autoridades: um administrador A, que distribui


tokens para os eleitores, e um coletor de votos C, que recebe os votos dos
eleitores de forma annima e os publica. Os eleitores podem verificar a presena
de seus tokens e votos na lista. A decriptao dos votos e apurao so feitas
pelo coletor.

1. O administrador gera suas chaves para assinaturas e publica sua chave


pblica.

II: Registro de votos

Ve
rs

2. Cada eleitor Pi prepara seu voto vi produzindo a cdula


ci = Commit(vi , ki )

onde ki uma chave aleatria e Commit um esquema de comprometimento de bit.

3. Pi obscurece ci , preparando para assinatura cega pela autoridade T :


ei = Blind(ci , pkT , ri )

onde ri escolhido aleatoriamente.

4. Pi assina ei :

si = Signski (ei )

Finalmente, envia si para T junto com sua identificao: (IDi , ei , si ).

notas de aula verso 79 - Jernimo C. Pellegrini

306

CAPTULO 25. VOTAO ELETRNICA

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

8. Pi verifica se a assinatura de T vlida: VrfpkT (ei , ti ). Se no for, a


eleio abortada.
9. Pi envia ei assinado pela autoridade T (ou seja, (ei , ti )) a uma autoridade
coletora C.
10. O coletor verifica as assinaturas ei , ti .

Pr
e

11. O coletor publica uma lista (j, ei , ti ), onde j varia de 1 ao nmero de votos.
IV: Apurao (abertura)

12. Pi verifica se o nmero de votos na lista igual ao nmero de eleitores.


13. Pi verifica se seu voto (j, ei , ti ) est na lista.
14. Pi envia a chave ki com o nmero j para C por um canal annimo.

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

A anlise das propriedades do protocolo dada aqui apenas informal.


Sigilo: sim a ligao entre voto e eleitor obscurecida pela assinatura
cega. No entanto, deve-se exigir que o coletor aguarde todos os votos para
publicar a lista.
Democracia: sim somente eleitores com direito a voto podem obter
cdulas, e a autoridade T facilmente detecta votos duplos. No entanto, h
a dependncia da honestidade de T .

notas de aula verso 79 - Jernimo C. Pellegrini

25.5. EXEMPLO: ESQUEMA FOO (FUJIOKA, OKAMOTO, OHTA)

307

in
ar

Verificabilidade: somente individual (cada eleitor pode verificar que seu


voto est na lista). No entanto, se um grupo de eleitores no votar, a autoridade T pode votar por eles portanto no h verificabilidade universal,
e h a dependncia da honestidade de T .
Justeza: sim as cdulas no so contabilizadas, e seu contedo no
conhecido, antes da fase de contagem.
No-coercibilidade: no cdula um recibo.
Complexidade de comunicao:

lim

Notas

Ve
rs

Pr
e

H uma grande gama de sistemas de votao, cada um proposto com diferentes


objetivos; a Teoria da Escolha Social trata das preferencias dos indivduos e
de como estas levam a escolhas coletivas. comum considerar o trabalho de
Condorcet [170] como ponto de partida para a histria da Teoria da Escolha
Social, sendo que a sua concepo moderna deriva dos trabalho de Kenneth
Arrow [171, 172]. A coletnea organizada por David Insua e Simon French
contm diversos artigos relacionados a sistemas de votao e sua aplicao em
forma eletrnica [173], e h inclusive um Captulo introdutrio sobre sistemas
de votao, elaborado por Hannu Nurmi.
H uma seo sobre votao eletrnica no livro de Delfs [15]; a tese de
doutorado de Zuzana Rjakov [174] d uma viso geral dos esquemas de votao
existentes e dos mtodos usados neles.
O primeiro sistema de votao apresentado (de Chaum) foi o primeiro de
que se tem notcia, publicado como nota tcnica na Communications of the
ACM por David Chaum em 1981, onde props a idia de mixnets. O esquema
de votao aparece no texto apenas como aplicao das mixnets. As mix-nets
so uma forma de roteamento annimo tambm usado em outros contextos,
inclusive em mtodos de envio annimo de email usados nos anos 90 [175]; a
idia continuou a ser adaptada, sendo tambm a essncia do sistema Tor [176]
de anonimizao na Internet.
O esquema de Ronald Cramer, Rosario Gennaro e Berry Schoenmakers foi
publicado em 1997 [177].
Um esquema de votao particularmente interessante foi desenvolvido por
Zuzana Rjakov em sua tese de doutorado [174], onde tambm descrito um
mtodo para construir canal sigiloso usando encriptao negvel.
Assinaturas cegas foram propostas por David Chaum em 1982 no contexto
da implementao segura de dinheiro digital [178].

Exerccios

Ex. 152 Implemente uma mix-net para algum sistema de comunicao (por
exemplo, e-mail ou um quadro de avisos com interface web).

notas de aula verso 79 - Jernimo C. Pellegrini

308

CAPTULO 25. VOTAO ELETRNICA

Ex. 153 Prove o Teorema 25.2.

in
ar

Ex. 154 Como poderamos obter um esquema de assinaturas cegas usando


assinaturas Elgamal?
Ex. 155 Mostre que no seguro usar o mesmo par de chaves for usado
para assinaruras cegas RSA e encriptao de mensagens.
Ex. 156 A descrio de assinaturas cegas RSA dada neste Captulo informal. Formalize-a usando a definio dada.
Ex. 157 Verifique no Captulo sobre Assinaturas Digitais se

lim

Ex. 158 Implemente um dos sistemas de votao descritos neste Captulo.


Tente implementar primitivas criptogrficas aos poucos, e somente depois implemente o esquema de votao.
Ex. 159 O esquema de Chaum depende de um criptossistema onde valha
Encsk (Encpk (x)) = x. Que criptossistema satisfaz essa exigncia?

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

Ex. 161 O esquema Cramer-Gennaro-Schoenmakers pode ser extendido


para votao do tipo K-em-L. Mostre como.

Captulo 26

lim

Dinheiro Eletrnico

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

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

notas de aula verso 79 - Jernimo C. Pellegrini

CAPTULO 26. DINHEIRO ELETRNICO

Ve
rs

Pr
e

lim

in
ar

310

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 27

lim

Cifras Histricas

27.1

Pr
e

Este Captulo descreve algumas cifras histricas, usadas antes do trabalho de


Shannon. Como todas as cifras discutidas operam em sequncias de caracteres
(texto legvel), e no bits, os exemplos usam alfabeto de tamanho 26, e muitas
vezes estar presumido que a mensagem m um nico caracter (o contexto
deixar claro quando for este o caso).
Ao considerar mensagens para encriptao, primeiro as mostraremos com
acentuao, mas as usaremos sem acentos e usando apenas letras maisculas.
Por exemplo, para encriptar Memrias Pstumas de Brs Cubas, usamos o
texto claro MEMORIAS POSTUMAS DE BRAS CUBAS.

Cifras

comum classificar as cifras apresentadas neste Captulo em alguns tipos diferentes.

Ve
rs

Definio 27.1 (Cifra de substituio). Uma cifra dita de substituio se


sua aplicao consiste em substituir caracteres da mensagem por caracteres do
alfabeto.
Se os caracteres so substitudos por outros a uma distncia fixa, a cifra de
deslocamento. Em um alfabeto com 26 caracteres, onde cada m um caracter,
Enck (m) = mk

(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

notas de aula verso 79 - Jernimo C. Pellegrini

312

CAPTULO 27. CIFRAS HISTRICAS

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

H uma maneira de descrever a aplicao da ctala espartana usando matrizes:


o texto quebrado em blocos de maneira a formar uma matriz com n linhas
(onde n a quantidade de caracteres que cabe ao redor da ctala). Por exemplo,
para encriptar Doutor Fantstico, obtemos a matriz

D O U T
O R
F

A N T A

S T I C
O

Ve
rs

O texto encriptado a sequncia de caracteres das linhas da matriz transposta:

D O A S O

O R N T

U
T I
T F A C

Temos ento o texto encriptado DOASOORNT U TI TFAC.


Exemplo 27.4 (Cifra de Csar). Um mtodo que aparentemente foi usado por
Jlio Csar consiste em trocar cada letra pela terceira prxima no alfabeto,
sendo assim a cifra de deslocamento com chave igual a 3. A cifra transforma A
em D, B em E, sendo que X, Y, Z so mapeados em A, B e C respectivamente.
De maneira geral, a cifra mapeia m m + 3 (mod 26) (Csar a usou com o
alfabeto usado na Roma antiga, que difere ligeiramente do nosso).
Assim, a frase O Rei est n! seria codificada como R UHL HVWD QX.
Exemplo 27.5 (ROT13). A cifra de deslocamento com chave k = 13 conhecida como ROT13, e normlamente usada para evitar a leitura no intencional
de texto na Internet (por exemplo, uma parte de um texto onde se conta algo
que pode estragar a experincia de um filme, livro ou jogo).

notas de aula verso 79 - Jernimo C. Pellegrini

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

Suponha que a senha LIMA e queiramos encriptar o texto Triste fim de


Policarpo Quaresma. A senha d o tamanho do bloco, e portanto encriptamos

notas de aula verso 79 - Jernimo C. Pellegrini

314

CAPTULO 27. CIFRAS HISTRICAS

inicialmente TRIS. Para cada posio i, verificamos na tabela a posio mi , ki :


(T, L) E
(R, I) Z

in
ar

(I, M ) U
(S, A) S

Continuamos com o resto da mensagem, repetindo o procedimento para cada


bloco. A mensagem enxriptada EZUSEM RIX LQ PZTUCLZBO BCMRPAYA
Exemplo 27.9 (Cifra de Hill). A cifra de Hill polialfabtica, e foi a primeira
(at onde sabemos) a usar um mnimo de sofisticao matemtica. A cifra
tabalha com blocos de tamanho n, portanto

lim

m = (m1 , m2 , . . . , mn ).

Para encriptar a mensagem, basta criar n combinaes lineares de cada caracter:


c = (c1 , c2 , . . . , cn ),
onde

(mod 26)

c2 =a2 m2 + b2
..
.

(mod 26)

cn =an mn + bn

(mod 26).

Pr
e

c1 =a1 m1 + b1

Podemos, claro, expressar a encriptao como a multiplicao da matriz m


por uma matrix chave k:
c = mk

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

Enigma o cdigo secreto usado pela Alemanha na segunda guerra mundial.


A cifra era implementada como um dispositivo mecnico com rotores. Um
operador digitava uma letra de cada vez, e a cada letra digitada uma luz era
acionada indicando a prxima letra do texto encriptado.

notas de aula verso 79 - Jernimo C. Pellegrini

27.3. CRIPTANLISE

27.3
27.3.1

315

Criptanlise
Anlise simples de frequncia

27.3.2

in
ar

As cifras simples de substituio podem ser quebradas atravs da anlise de


frequncia de cada caracter nos textos da Lngua em que a mensagem foi escrita.

Vigenre

Notas

Exerccios

Pr
e

lim

Uma longa e bastante abrangente exposio de cifras de diferentes pocas


dada no livro de Friedrich Bauer [181]. H outros livros a respeito da histria
da Criptografia, incluindo a descrio de antigas tcnicas criptogrficas, dentre
os quais destacamos o de Simon Singh [182, 183], o de Stephen Pincock [184], o
de Helen Gaines [185] e o (j antigo mas excelente) livro de Laurence Smith [186].
O livro de James Boone [187] traz um relato no tcnico, resumido, e com
nfase na soberania de Naes (entre 1955 e 1962 Boone trabalhou na Fora
Area Americana e na NSA). The Code-breakers, de David Kahn [188], trata
da Histria da Criptografia mais extensivamente.
As mquinas Enigma foram criadas pelo engenheiro alemo Arthur Schrebius na dcada de 1920. Inicialmente concebidas como ferramenta comercial,
mas passaram a ser desenvolvidas exclusivamente para fins militares depois do
incio da guerra. O uso de dispositivos mecnicos para encriptao levou ao
desenvolvimento de dispositivos mecnicos para criptanlise. Em 1943 o primeiro computador digital eletrnico programvel, COLOSSUS, foi projetado
por um engenheiro britnico, tambm como parte desta corrida armamentista
pela informao.

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

d) FQPRR R TIAALWHCHY O AQZ ERSGSCH JWPHU EAVO JRUHOOL LSK HY TMT


CLKRS OWNYSO TURI CARI
e) R WUDEDOKR GXUR H UHFRPSHQVDGR QR IXWXUR. D SUHJXLFD H UHFRPSHQVDGD
LPHGLDWDPHQWH
f) KLI VMGIV ULGLH V MLNVH HVN OREILH V HVN UFARO

Ex. 164 Discorra sobre a maleabilidade das cifras descritas neste Captulo.

notas de aula verso 79 - Jernimo C. Pellegrini

316

CAPTULO 27. CIFRAS HISTRICAS

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

Ex. 167 Mostre as semelhanas entre a mquina Enigma e a cifra de Vigenre.

lim

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Parte IV

Ve
rs

Pr
e

Apndices

317

Ve
rs

Pr
e

lim

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Apndice A

lim

Probabilidade

Este Apndice traz apenas tpicos de Teoria da Probabilidade usados no texto,


mas que no so parte de uma introduo usual ao clculo de Probabilidades.

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
.

Lema A.2. Seja N um inteiro positivo. Se q 2N elementos e1 , e2 , . . . , eq


so escolhidos uniformemente de um conjunto de tamanho N , a probabilidade
de dois destes elementos serem iguais no mnimo q(q1)
4N .
Demonstrao. Denotaremos por C o evento que representa alguma coliso, ou
seja, temos C quando existem ei e ej iguais.
Seja Ci o evento representando alguma coliso entre o primeiro e o i-simo
elemento, e C i seu complemento (ou seja, C i significa que no h elementos
iguais entre e1 e ei ).
Se C i acontece, ento necessariamente C i1 deve ter acontecido, de outra
forma haveria dois elementos iguais entre e1 e ei1 . Assim,
Pr[C q ] = Pr[C 1 ] Pr[C 2 |C 1 ] Pr[C 3 |C 2 ] Pr[C q |C q1 ].
319

notas de aula verso 79 - Jernimo C. Pellegrini

320

APNDICE A. PROBABILIDADE

i
N

ei/N , e

lim

Como neste contexto 1/N < 1 para todo i, ento 1

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

Disso conclumos que


Pr[C]

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

notas de aula verso 79 - Jernimo C. Pellegrini

Apndice B

lim

lgebra e Teoria dos Nmeros

Pr
e

Este Apndice contm apenas os conceitos e teoremas de Teoria dos Nmeros


que so usados no texto; no se trata, de forma alguma, de um texto minimamente completo sobre o assunto em particular, no abordamos diversas definies e teoremas que normalmente fazem parte de cursos bsicos de lgebra,
simplesmente porque no so usados neste trabalho (por exemplo, os Teoremas
de Sylow no so mencionados aqui; os exerccios sobre estruturas algbricas
tambm tem um perceptvel vis; os exemplos de corpos finitos so principalmente em GF (2m )). O leitor certamente se beneficiar de outras referncias, e
algumas so sugeridas ao final do Apndice, na Seo de notas.
Definio B.1 (Divisibilidade). Um inteiro a divide outro inteiro b se b = ak
para algum inteiro k. Denotamos a|b, que se l a divide b.

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

notas de aula verso 79 - Jernimo C. Pellegrini

322

APNDICE B. LGEBRA E TEORIA DOS NMEROS

mdc (b, r) d = mdc (a, b).

in
ar

e o algoritmo est correto para este caso.


Tratamos ento do caso em que a > b. Sejam q e r o quociente e o resto de
a b; ento a = qb + r e r < b. Tambm necessrio que r 6= 0, porque b 6 |a.
Provaremos ento que mdc (a, b) = mdc (b, r).
Seja d = mdc (a, b). Ento d|a, d|b e d|r porque r = a qb. Assim,

Agora seja d0 = gcd(b, r). Ento d0 |b, d0 |r, e d0 |a porque a = qb + r. Ento


mdc (b, r) d0 = mdc (b, r).

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

Note que a definio de co-primos implica que todo nmero n co-primo


com 1.
Definio B.5 (Nmero Primo). Um inteiro positivo p primo se para todo
outro nmero k inteiro, mdc (k, p) = 1.
A funo de Euler conceito fundamental de algumas construes criptogrficas, incluindo o RSA.

Definio B.6 (Funo de Euler). Para qualquer inteiro positivo n a funo


(n) d o nmero de inteiros positivos menores que n co-primos com n.

Ve
rs

A funo tambm chamada de tociente.


Exemplo B.7 (Funo de Euler). Temos (3) = 2, contando 1 e 2; j (5) =
4, porque contamos 1, 2, 3, 4; e (6) = 2, porque s contamos 1 e 5.
Claramente, para p primo, (p) = p 1.
Denotamos a quantidade de nmeros primos menores que n por (n). Muitas
construes criptogrficas dependem da escolha de nmeros primos grandes, e
a segurana dessas construes depende da existncia e densidade de primos. O
Teorema dos Nmeros Primos, enunciado a seguir, nos garante que a densidade
dos primos suficiente para que tais construes sejam seguras.
Teorema B.8 (Teorema dos Nmeros Primos). Se (n) a quantidade de
primos menores ou iguais a n, ento
lim

(n) ln(n)
= 1.
n

notas de aula verso 79 - Jernimo C. Pellegrini

323

. . . , 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, . . .

in
ar

Fundamentais em Teoria dos Nmeros e tambm em Criptografia, aritmtica


modular e o conceito de congruncia so descritos a seguir.
Damos uma descrio intuitiva desses conceitos: considere apenas os inteiros de zero a cinco, { 0, 1, 2, 3, 4, 5 }. Tentaremos definir operaes aritmticas
dentro deste conjunto. Dentro deste conjunto podemos somar 0 + 0, 1 + 3, 1 + 4,
mas se somarmos 3 + 4 obtemos 7, que no membro do conjunto.
Para podermos somar (e realizar outras operaes) neste conjunto podemos
imaginar seus elementos dispostos em ordem, repetidos infinitas vezes:

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

Definimos ento que zero equivalente a seis, um equivalente a sete, e assim


por diante. Note que um nmero inteiro sempre ser equivalente ao resto de sua
diviso por seis; neste caso dizemos que estamos usando mdulo seis. Dizemos
que 1 cngruo a 7 mdulo 6. As operaes definidas para inteiros podem ser
definidas tambm para o conjunto que definimos: 3 + 4 = 7, que cngruo a 1
mdulo 6. Denotamos 7 1 (mod 6). H alguns exemplos a seguir.
3+4=71

(mod 6)

3 4 = 12 0

(mod 6)

3 5 = 2 4

(mod 6)

Quando realizamos operaes mdulo algum inteiro positivo, dizemos que


estamos usando aritmtica modular.

Ve
rs

Definio B.9 (Congruncia). Sejam a, b inteiros e m natural. Dizemos que a


congruente a b mdulo m se m|(a b), e denotamos a b (mod m). Quando
a e b no so congruentes, denotamos a 6 b (mod m).
Exemplo B.10 (Congruncia). Como exemplos simples de congruncia e aritmtica modular, podemos considerar:
21 15 3

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 .

notas de aula verso 79 - Jernimo C. Pellegrini

324

APNDICE B. LGEBRA E TEORIA DOS NMEROS

in
ar

Para um exemplo concreto minimalista, usando uma palavra de oito bits


multiplicamos 150 por dois, obtendo 300 44 (mod 28 ). Mostramos a operao
a seguir, que feita como a soma usual, mas reduzindo todos os dgitos mdulo
dois1
10010110
+
10010110
100101100
O 1 em negrito somente informa a CPU que houve sobrecarga, mas o resultado
armazenado, que o usurio poder usar, composto pelos outros bits, 00101100,
que representam o nmero 44.

lim

A relao de congruncia com um mdulo fixo relao de equivalncia,


como mostramos a seguir.

Teorema B.12. Para qualquer m, a congruncia mdulo m uma relao de


equivalncia.
Demonstrao. Demonstramos a seguir reflexividade, simetria e transitividade
da relao de congruncia mdulo m.

Pr
e

i) evidente que a a (mod m), j que a a = 0 e m|0 desde que m 6= 0;


ii) Se a b (mod m) ento m|(a b), e portanto existe k talque mk = a b.
Temos que m(k) = b a e m|(b a);
iii) Se m|(a b) e m|(b c) ento m|((a b) + (b c)), e portanto m|(a c).

Exemplo B.13. A relao congruente a zero mdulo dois uma relao de


equivalncia (que define os nmeros pares):
a a (mod 2);

Ve
rs

Se a b (mod 2) (ou seja, a e b tem a mesma paridade), ento 2|a b


(ou seja, a diferena entre eles par);

Se 2|(a b) e 2|(b c) ento 2|(a b) + (b c). Ou seja, se (a b) e (b c)


so pares, sua soma par.

Da mesma forma, notamos que mltiplos de k formam relaes de equivalncia.


comum denotar a classe de equivalncia a (mod n) por [a]n .
Podemos somar, subtrair e multiplicar congruncias:

Teorema B.14. Suponha que a b (mod c) e x y (mod c). Ento

11

axby

(mod c)

(B.1)

ax by

(mod c).

(B.2)

+ 1 = 10, ou seja, resulta em zero com carry (vai-um).

notas de aula verso 79 - Jernimo C. Pellegrini

325

No entanto, dividir congruncias s possvel em alguns casos:


16 6

(mod 10), mas

8 6 3

(mod 10).

in
ar

Demonstrao. Temos que ax


e by
so inteiros. Assim, tambm deve ser
c
c
(a+b)(x+y)
by
ax
inteiro
= c c . Com isso provamos B.1 (a prova para a
c
subtrao anloga prova para a adio).
= a (by)
+ y ax
Tambm devem ser inteiros abxy
c
c
c , e provamos B.2.

S podemos dividir congruncias por um inteiro co-primo com o mdulo.

lim

Teorema B.15 (Lei do cancelamento). Se ax ay (mod m) e se a e m so


co-primos, ento x y (mod m).

Demonstrao. Como axay


inteiro, m|a(x y). Ento como a e m so com
primos, m no divide a, e deve dividir (x y). portanto, x y mod c.
Teorema B.16. Sejam p e q primos. Se a b (mod p) e a b (mod q), ento
a b (mod pq).

Pr
e

Demonstrao. Se a b (mod p) e a b (mod q), temos


p|ab

q | a b.

Como p e q so primos e (a b) divisvel por ambos, temos que (a b)


deve ser tambm divisvel por pq, e conclumos que pq|(a b), ou seja, a b
(mod pq).

O Lema de Bzout garante a existncia de solues inteiras para uma classe


de equaes do tipo ax + by = d.

Ve
rs

Lema B.17 (Lema de Bzout). Se a, b so inteiros diferentes de zero com


mdc (a, b) = d, ento existem inteiros x, y tais que ax + by = d.
O nmero d tambm o menor inteiro positivo para o qual h solues
inteiras x e y para ax + by = d.

Exemplo B.18 (Lema de Bzout). Sejam a = 15 e b = 33. Sabemos que


mdc (a, b) = 3, ento o Lema de Bzout nos garante que devem existir x, y tais
que
15x + 33y = 3,
ou (dividindo ambos os lados por 3) 5x + 11y = 1. E realmente, os inteiros
x = 2 e y = 1 tornam a equao verdadeira.
Dados a, b Z, o Algoritmo Extendido de Euclides pode ser usado para
obter o mdc de dois nmeros junto com x, y Z que satisfazem a identidade de
Bzout, ax + by = mdc (a, b).

notas de aula verso 79 - Jernimo C. Pellegrini

326

APNDICE B. LGEBRA E TEORIA DOS NMEROS

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

Demonstrao. Provamos apenas que o resultado do algoritmo correto. A


prova de que o algoritmo para e que roda em tempo polinomial fica como exerccio para o leitor.
Por induo no segundo parmetro (b):
Com base de induo, quando b = 0 o algoritmo retorna x = 1 e y = 0. Isso
nos d ax + by = a, que divide a e zero (e tambm claramente o mdc de a e
zero).
Hiptese de induo: Se hx, yi = ext_mdc(a, b), ento ax + by|a e ax + by|b.
Passo:
Quando b 6= 0, ento q e r so o quociente e o resto de a b. Notamos que
a = bq + r. Como r < b, ento o algoritmo computa ext_mdc(b, r), resultando
em s, t tais que bs + rt|b e bs + rt|r.
Finalmente, o algoritmo retorna x = t e y = s qt.
ax + by = at + b(s qt)

= bs + (a bq)t
= bs + rt,

Ve
rs

que no negativo e divide tanto b como r, e portanto divide r + bq = a.


Teorema B.20. Sejam a, b inteiros positivos, e sejam x, y os dois valores retornados pelo algoritmo extendido de Euclides. Ento ax + by = mdc (a, b)
Teorema B.21 (Teorema Chins do resto). Sejam m1 , m2 , , ms e s inteiros,
todos co-primos. Seja M = m1 m2 ms , e suponha que a1 , a2 , , as sejam
inteiros tais que cada ai co-primo com mi . Ento as s congruncias
a1 x b1

(mod m1 )

a2 x b2

(mod m2 )

,
as x bs

(mod ms )

tem uma nica soluo, que nica mdulo M .

notas de aula verso 79 - Jernimo C. Pellegrini

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

ou seja, li o inverso de Mi . Como li Mi =


por todos os mj exceto por mi :

li M
mi ,

ento li Mi deve ser divisvel

li M i 1

(mod mi )

li M i 0

(mod mj ) (i 6= j).

A soluo

s
X

X=

porque

lim

Calcule, para todo i, Mi = M/mi (o produto de todos os mk exceto mi ). Como


os mi so co-primos, mi e Mi so tambm co-primos.
Queremos agora encontrar o inverso de cada mi . Use o algoritmo estendido
de Euclides pra encontrar nmeros ki e li tais que

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 ).

Resta mostrar que a soluo nica mdulo M .

Exemplo B.22 (Teorema Chins do resto). Considere as congruncias


3x 3

(mod 5),

4x 6

(mod 11),

5x 1

(mod 8).

notas de aula verso 79 - Jernimo C. Pellegrini

328

APNDICE B. LGEBRA E TEORIA DOS NMEROS

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

Usando o algoritmo extendido de Euclides, determinamos que


(35) 5 + 2 88 = 1

11 11 + (3) 40 = 1

Pr
e

7 8 + (1) 55 = 1.

Teramos ento os li iguais a 2, -3 e -1.


Tomamos l1 = 1, l2 = 3 (mod 1)1 = 8, e l3 = 1 (mod 8) = 7. Estes so
os inversos dos Mi :
l1 M1 = 2 88

(mod 5) = 1

l2 M2 = 8 40

(mod 11) = 1

l3 M3 = 7 55

(mod 8) = 1.

Ve
rs

Podemos finalmente calcular, ento,


x = 2(88) + 7(8)(40) + 5(7)(55)
= 4341 = 381

(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).

notas de aula verso 79 - Jernimo C. Pellegrini

329

00

(mod 4)

51

(mod 4)

10 2

(mod 4)

15 3

(mod 4).

in
ar

Exemplo B.24 (Sistema completo de resduos). O conjunto {0, 5, 10, 15} um


sistema de resduos mdulo 4:

Qualquer inteiro ser cngruo a 0, 1, 2 ou 3 (mod 4), e portanto tambm a


0, 5, 10 ou 15, porque transitiva:
n 5 (mod 4)
n 10 (mod 4)
n 15 (mod 4)

lim

n 1 (mod 4), 1 5 (mod 4)


n 2 (mod 4), 2 10 (mod 4)
n 3 (mod 4), 3 15 (mod 4)

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.

Exemplo B.26 (Sistema reduzido de resduos). O conjunto {1, 3} um sistema


reduzido de resduos mdulo 4:
11

(mod 4)

33

(mod 4).

Ve
rs

Um nmero inteiro cngruo a 0, 1, 2 ou 3 mdulo 4. 0 e 2 no so co-primos


com 4, restando 1 e 3. Para qualquer inteiro n co-primo com 4, temos que n
ser necessariamente cngruo a 1 ou 3 (mod 4).
Outro sistema reduzido de resduos mdulo 4 {3, 5}.

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,

2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20.

(mod 21).

notas de aula verso 79 - Jernimo C. Pellegrini

330

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Teorema B.29 (Pequeno Teorema de Fermat). Seja p um nmero primo. Para


todo a inteiro,
ap1 1 (mod p).

in
ar

Demonstrao. Como p primo, mdc (a, p) = 1. Ento, pelo Teorema de Euler,


a(p) 1 (mod p). Como para todo primo p, (p) = p 1, temos ap1 1
(mod p).
Uma formulao equivalente do pequeno Teorema de Fermat ap a
mod p.

Exemplo B.30 (Pequeno Teorema de Fermat). Seja p = 7. Para todo a, o


Teorema diz que a7 a (mod 7). E de fato,
17 1

(mod 7)

lim

2 = 128 2

(mod 7)

11 = 19487171 4

(mod 7).

Na ltima linha observamos tambm que que 11 4 (mod 7).

Pr
e

A definio que damos de raiz primitiva mdulo m no a normalmente


dada me textos de Teoria de Nmeros; ela , no entanto, equivalente definio
comum.
Definio B.31 (Raiz Primitiva). Sejam a e m co-primos. Dizemos que a
uma raiz primitiva mdulo m quando a, a2 , , a(m) formam um sistema
reduzido de resduos mdulo m.
Exemplo B.32 (Raiz primitiva). Sejam a = 2 e m = 13.
21 = 2 2

(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).

notas de aula verso 79 - Jernimo C. Pellegrini

331
Resduos quadrticos, definidos a seguir, so usados diretamente na construo de algumas ferramentas criptogrficas.

in
ar

Definio B.33 (Resduo Quadrtico). Dado um nmero primo p, e a um


inteiro tal que p - a. Se existe um x inteiro tal que x2 a (mod p), dizemos
que a um resduo quadrtico mdulo p.

Teorema B.34. Se a um resduo quadrtico mdulo p (onde p um primo


> 2), ento a equao x2 a (mod p) tem duas solues (ou seja, a tem duas
razes quadradas mdulo p).

lim

Demonstrao. a tem duas razes quadradas, x e x. Estes dois devem ser


diferentes, pois se fossem o mesmo teramos que x x (mod p), que no pode
acontecer porque teramos 2x 0 (mod p), o que contradiria o fato de p ser
mpar e x ser co-primo com p.

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)

Observe que 6 7 (mod 13).

O Teorema e o Lema a seguir sero usados na demonstrao do critrio de


Euler.

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).

notas de aula verso 79 - Jernimo C. Pellegrini

332

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Demonstrao. Comeamos notando que

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

No entanto, de acordo com o Lema B.36, g k( 2 ) (mod p) 1 (mod p) se


e somente se k( p1
2 ) divisvel por p 1 ou seja, se e somente se k par
em outras palavras, de acordo com o Lema B.37, se e somente se a resduo
quadrtico.

Pr
e

Exemplo B.39 (Critrio de Euler). Seja p = 11. Sejam tambm


a = 92 4 6 0
b = 2 6 0

(mod 11)

(mod 11).

Note que 2 no resduo quadrtico mdulo 11. Temos ento:

a10/2 = 815 = 3486784401 1


b

10/2

= 2 = 32 1

(mod 11)
(mod 11).

Ve
rs

Outros dois conceitos fundamentais para diversas construes criptogrficas


so os smbolos de Legendre e de Jacobi.

Definio B.40 (Smbolo de Legendre). Dados um inteiro a e um primo p,


definimos o smbolo de Legendre:

+1 se a resduo quadrtico mdulo n


 
a
= 0
se se p | a

1 se a no resduo quadrtico mdulo n.

O smbolo de Legendre tambm denotado por (a/p).


Exemplo B.41 (Smbolo de Legendre para (a/7)). Seja p = 7. A tabela a

notas de aula verso 79 - Jernimo C. Pellegrini

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

seguir lista o smbolo de Legendre (a/p) para a de zero a 10.

Definio B.42 (Smbolo de Jacobi). Sejam a um inteiro e n um inteiro mpar


tal que n o produto dos primos (no necessariamente distintos) p1 p2 . . . pk .
Definimos o smbolo de Jacobi:

a
n


=

a
p1



a
p2

a
pn

Quando n primo o smbolo de Jacobi igual ao smbolo de Legendre.

Exemplo B.43 (Smbolo de Jacobi para (a/15)). Seja n = 45. A fatorao de

notas de aula verso 79 - Jernimo C. Pellegrini

334

APNDICE B. LGEBRA E TEORIA DOS NMEROS

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

Teorema B.44. Para todo p primo e x inteiro,


 
x
= x(p1)/2 (mod p).
p

in
ar

Demonstrao. Se x resduo quadrtico mdulo p, ento x = g 2k , e


(mod p) = g 2k

Pr
e

x(p1)/2

(p1)/2

= g k(p1)

k
= g (p1)

= 1k

(mod p).

Se x no resduo quadrtico, ento x = g 2k+1 , e

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),

e como um valor cujo quadrado um deve ser +1 ou 1, temos que


g (p1)/2 1

(mod p).

Mas como g raiz primitiva, g (p1)/2 6 1 (mod p), e g (p1)/2 (mod p) = 1.


Exemplo B.45 ((x/p) = x(p1)/2 (mod p)). Sejam p = 17 e x = 22. Temos
(22/17) = 1. Verificamos tambm que
16

22 2

(mod 17) = 16 1

(mod 17).

notas de aula verso 79 - Jernimo C. Pellegrini

335
Teorema B.46. Se g uma raiz primitiva mdulo n e
(mod n)

ento r s (mod (n)).

in
ar

gr gs

Exemplo B.47. Escolhemos 13 para o mdulo. Sabemos que (13) = 12.


Uma raiz primitiva mdulo 13 2. Temos 27 219 (mod 13). O Teorema nos
garante que 7 19 (mod 12) o que de fato verdade.

Definio B.48 (Grupo). Um grupo consiste de um conjunto G e uma operao


que associa pares (a, b) de elementos de G a outros elementos c de G, e que
satisfaa:

lim

a, b, c G, (ab)c = a(bc) (ou seja, a operao associativa);

H um nico elemento e G tal que para todo a G, ea = a = ae.


Dizemos que e o elemento neutro de G;
Para todo a G, existe um elemento a1 tal que a1 a = e = aa1 .
Dizemos que a1 o simtrico de a.

Pr
e

comum denotar um grupo por (G, ), onde G o conjunto e a operao.


Quando a notao usada para a operao de grupo +, normalmente
denota-se o elemento neutro e por 0 e o inverso de x por x. Similarmente,
quando se usa , comum denotar o elemento neutro por 1 e o inverso por x1 .
Exemplo B.49 (Grupo). O conjunto dos racionais sem o zero com a operao
de multiplicao um grupo, porque a operao associativa, h o elemento
neutro 1 e todo nmero a/b tem seu inverso b/a, com (a/b)(b/a) = 1.

O exemplo a seguir mostra que o conceito de grupo naturalmente aplicvel


tambm fora do contexto de conjuntos numricos.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

336

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Exemplo B.52 (Grupo comutativo). O grupo (R, +) comutativo.

in
ar

Exemplo B.53 (Grupo no comutativo). Seja M2 o grupo das matrizes no


singulares 2 2 com elementos reais. Ento (M, ), onde a operao de multiplicao de matrizes, um grupo: h um elemento neutro (a matriz identidade);
todas as matrizes tem inversas; e vale a associatividade para a multiplicao de
matrizes. Este grupo, no entanto, no comutativo, porque a operao de
multiplicao para matrizes no comutativa.
Definio B.54 (Ordem de um grupo). O nmero de elementos em um grupo
chamado de ordem do grupo. Dizemos tambm que o grupo finito se o
conjunto finito. Pode-se denotar a ordem de um grupo G usando a mesma
notao para tamanho de conjuntos, |G|.

lim

Definio B.55 (Subgrupo). Seja (G, ) um grupo. Se (H, ) um grupo e


H G, ento H um subgrupo de G, e denotamos H G.
Exemplo B.56 (Subgrupo). J observamos que (Z4 , +) um grupo. Se tomarmos Z3 Z4 com a mesma operao temos (Z3 , +), que tambm um grupo.
Dizemos que este um subgrupo de (Z4 , +).

Pr
e

Definio B.57 (Subgrupo gerado). Seja G um grupo e A subconjunto do


conunto G. O subgrupo de G gerado por A, denotado < A >, o menor subgrupo
de G que contm todos os elementos de A.
Exemplo B.58. Seja G = (Z, +) o grupo dos inteiros com adio. Tome
A = { 3, 5 }. Ento < A > o subgrupo de Z cujos elementos so da forma
3a + 5b, com a, b N:
3, 5, 3 + 3, 3 + 5, 5 + 5, 3 + 3 + 3, 3 + 3 + 5, . . .

Definio B.59 (Ordem de elemento em grupo). Seja G um grupo e a G. A


ordem de a a ordem do subgrupo gerado por a (ou seja, | < a > |).

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 } ,

portanto a ordem de [3]8 em A 2.


Um grupo cclico aquele cujos elementos podem ser enumerados usando a
operao de grupo, iniciando com um nico elemento g, chamado de gerador.
Definio B.61 (Grupo Cclico). Um grupo (G, ) cclico gerado por um
nico elemento. Em outras palagras, existe um elemento g G tal que G =
{g m |m Z} (todo elemento do grupo uma potncia de g). Dizemos que g
gerador do grupo.

notas de aula verso 79 - Jernimo C. Pellegrini

337

in
ar

Exemplo B.62 (Grupo cclico). O grupo de inteiros no negativos mdulo n


com a operao de adio um grupo cclico. Por exemplo, em (Z4 , +) temos
os elementos 0, 1, 2, 3 e o gerador 1. 1 + 1 = 2, 1 + 1 + 1 = 3, 1 + 1 + 1 + 1 = 4 0
(mod 4).
Exemplo B.63. Os inteiros mdulo n com a operao de multiplicao no
formam um grupo, porque no h inverso para o zero.
Teorema B.64. Em Zn , k tem inverso multiplicativo se e somente se k e n
so co-primos.

fa (x) = ax

lim

Demonstrao. Denotaremos por Zn o conjunto de elementos x Zn tais que


mdc (x, n) = 1.
Seja a Zn . Defina a funo fa : Zn Zn como
(mod n).

Mostramos agora que fa injetora para qualquer a Zn . Suponha que fa (x) =


fa (y) para x, y Zn . Ento
ax (mod n) = ay

(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.

Corolrio B.65. O conjunto


{ x N+ : x < n, mdc (x, n) = 1 }

com a operao de multiplicao mdulo n um grupo.


O prximo exemplo especialmente relevante em Criptografia.

Exemplo B.66. Para qualquer p primo, o conjunto


{ 1, 2, . . . , p 1 }

com a operao de multiplicao mdulo p um grupo cclico.

notas de aula verso 79 - Jernimo C. Pellegrini

338

APNDICE B. LGEBRA E TEORIA DOS NMEROS

in
ar

importante observar, no entanto, que a ordem de 1, 2, . . . , p 1 no prima


(porque p primo, e como supomos que p grande, p 1 par e composto).
Um grupo cclico pode ter mais de um gerador. Quando a ordem do grupo
um nmero primo, o grupo cclico o Exerccio 180 pede a demonstrao
deste fato, enunciado no prximo Teorema.
Teorema B.67. Todo grupo de ordem prima cclico.

Teorema B.68. Todo subgrupo de um grupo cclico , tambm, cclico.

O Teorema de Fermat identifica uma relao entre as ordens de grupos finitos


e seus subgrupos.

lim

Teorema B.69 (de Lagrange). Seja G um grupo finito, e H G. Ento a


ordem de H divide a ordem de G.

Definio B.70 (Classe lateral). Sejam (G, ) um grupo, H um subgrupo de


G e g um elemento de G. Ento
gH = {gh : h H} classe lateral esquerda de H em G.
Hg = {hg : h H} classe lateral direita de H em G.

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, . . . } ,

o conjunto dos inteiros mpares.


Novamente tomamos (Z, +), agora com o subgrupo H = Z6 . Se g = 10,
temos
gH = { 10, 11, 12, 13, 14, 15 } .

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.

Exemplo B.73 (Homomorfismo em grupos). Seja G = (Z, +) e H = (R, ).


A funo f (x) = ex um homomorfismo de G em H, porque para quaisquer
x, y Z,
f (x + y) = ex+y = ex ey = f (x)f (y).
Grupos definem apenas uma operao sobre seus elementos. A estrutura
algbrica de anel define duas operaes, sendo uma distributiva sobre a outra,
de forma que podemos definir polinmios, por exemplo.

notas de aula verso 79 - Jernimo C. Pellegrini

339
Definio B.74 (Anel). Seja (R, +) um grupo comutativo aditivo e uma
operao associativa em R. Se h distributividade de sobre +, ou seja,

para todos a, b, c R, ento dizemos que (R, , +) um anel.

in
ar

a(b + c) = ab + ac

Exemplo B.75 (Anel). Os anis formados com inteiros e aritmtica mdulo n


so denotados Zn . Por exemplo, Z5 o anel formado por {0, 1, 2, 3, 4} com as
operaes de soma e multiplicao usuais mdulo cinco.

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

Definio B.77 (Grupo de unidades). Seja (R, , +) um anel, e seja R o


conjunto das unidades de R. Ento (R , ) um grupo comutativo, chamado de
grupo de unidades de R.
No corpo do texto usamos a notao Zn para o grupo de unidades do anel
Zn .

Por exemplo, considere o anel Z15 . O grupo de unidades Z15 {1, 2, 4, 6, 7,


8, 11, 13, 14}.

Definio B.78 (Elemento irredutvel em um anel). Seja (R, , +) um anel.


Um elemento x R irredutvel se diferente de zero, no unidade e no
pode ser representado como a multiplicao de dois outros elementos em R que
no sejam unidade.

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.

Uma definio alternativa de corpo a que segue (o leitor poder facilmente


verificar que as duas definies so equivalentes).
Definio B.80 (Corpo). Seja (F, , +) um anel. Se (F \ {0}, ) um grupo
comutativo, ento F um corpo.
Exemplo B.81 (Corpos). Os conjuntos C, R e Q so corpos3 .
J Z no corpo (nem todo inteiro tem inverso multiplicativo).
3 No

entanto, C no ordenado e Q no completo

notas de aula verso 79 - Jernimo C. Pellegrini

340

APNDICE B. LGEBRA E TEORIA DOS NMEROS

A raiz da unidade (informalmente n-sima raiz de um), que trivialmente


1 ou 1 para R, Q e Z, admite valores diversos em outros corpos.

in
ar

Definio B.82 (Raiz da unidade). Em um corpo, um elemento x a n-sima


raiz da unidade se existe n tal que xn = 1, onde 1 o elemento neutro para
multiplicao.

Exemplo B.83 (Quatro razes quartas da unidade em C). Em C h quatro


razes quartas para 1:
(1)4 = (+1)4 = (i)4 = (+i)4 = 1.

para k = 0, 1, . . . , n 1.

lim

Teorema B.84. Dado n inteiro, h exatamente n razes n-simas da unidade


em C, que so
e(2ik)/n ,

Demonstrao. O resultado segue usando a frmula de Euler,

Pr
e

ei = cos + isen ,

e observando que seno e cosseno tem o mesmo perodo (2).


Exemplo B.85 (Trs razes cbicas da unidade em C). Seja n = 3. Ento,
e(2i0)/n = e0 = 1

i 31
2
!

i 31
=
2

Ve
rs

e(2i1)/n = e2i/3 =

e(2i2)/n = e4i/3

so as trs razes cbicas de 1.


!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.

notas de aula verso 79 - Jernimo C. Pellegrini

341
Demonstrao. Sejam k, k 0 N+ . Ento
0

nk nk = e(2ik)/n e(2ik )/n


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

Exemplo B.87 (Grupo cclico de razes da unidade em C). Em C o grupo


cclico gerado pela raiz da unidade = e2i /n dado por k , com 0 k < n.
A Figura a seguir mostra, no plano complexo, as razes da unidade para n = 16
(e para esta caso, = e(i)/8 ). Note que 4 = i, 8 = 1 e 12 = i.

-1

Ve
rs

-i

15

14

Lema B.88. Sejam n, k, l N, com l > 0 e n = e(2i)/n o gerador do grupo


das n-simas razes da unidade em C. Ento
lk
ln
= nk .

Demonstrao. Trivialmente,

lk
lk
ln
= e(2i)/ln

k
= e(2i)/n
= nk .

notas de aula verso 79 - Jernimo C. Pellegrini

342

APNDICE B. LGEBRA E TEORIA DOS NMEROS

O ltimo Lema nos d um Corolrio relevante para a discusso do algoritmo


da transformada rpida de Fourier:

nk

2

= n/2

in
ar

Corolrio B.89. Seja n, k N, com n > 0 par. Seja n = e(2i)/n o gerador


do grupo das n-simas razes da unidade em C. Ento

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.

Demonstrao. A srie descrita,

n
X

lim

0jn1

(nk )j , geomtrica. Lembrando que

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

Definio B.91 (Isomorfismo em estruturas algbricas). Sejam A e B duas


instncias de grupo, anel ou corpo. Uma bijeo f entre os elementos de A e B
um isomorfismo entre A e B se e somente se, para cada operao definida
na estrutura A e sua operao correspondente definida na estrutura B,
x, y A, f (x y) = f (x) f (y).

Quando tal isomorfismo existe, dizemos que A e B so isomorfos.


Exemplo B.92 (Isomorfismo em estrutura algbrica). Sejam A = (Z, +) o
grupo dos inteiros e B = ({ x : x = 2k, k Z } , +) o grupo dos inteiros pares.
Ambos so isomorfos porque existe a bijeo f (x) = 2x, e
x, y Z, 2(x + y) = 2x + 2y.

notas de aula verso 79 - Jernimo C. Pellegrini

343

in
ar

Definio B.93 (Caracterstica de um Anel ou Corpo). Seja R um anel com


elementos identidade 1 e 0 para as operaes de multiplicao e adio, respectivamente. A caracterstica de R o menor inteiro n tal que n1 = 0, onde n1
denota a soma de n elementos 1: 1 + 1 + 1 + . . . + 1 = 0. Quando no possvel
escrever 0 como uma soma de 1s, a caracterstica do anel zero.
Por exemplo, em (Z5 , , +) temos 1+1+1+1+1 = 0, portanto a caracterstica
do anel 5.
O conceito de polinmio abordado a seguir, no contexto de estruturas
algbricas.

lim

Definio B.94 (Polinmio sobre estrutura algbrica). Seja A um corpo ou


anel. Uma expresso da forma
f (x) = a0 + a1 x + a2 x2 + + an cn

onde ai , x A um polinmio de grau n sobre A. O conjunto de todos os


polinmios sobre A denotado A[x].

Ve
rs

Pr
e

Exemplos familiares so R[x] e C[x], conjuntos de polinmios sobre R e C.


Quando quisermos tratar de polinmios sobre um corpo ou anel genrico
usaremos a notao F[x] e R[x].
Observando que h operaes de soma e multiplicao definidas para polinmios, conclumos que podemos trat-los tambm como estruturas algbricas: um
conjunto de polinmios com operaes de soma e produto um anel polinomial.
Assim, uma vez que R[x] o conjunto de todos os polinmios sobre R,
podemos definir o anel (R[x], +, ), onde as operaes so a soma e multiplicao
usuais de polinmios. E de fato, (R[x], +, ) um anel: h elemento neutro
para adio (f (x) = 0) e multiplicao (f (x) = 1), a estrutura fechada para
ambas as operaes, h inverso aditivo, valem associatividade, comutatividade
e distributividade de multiplicao sobre soma.
A noo de elemento irredutvel definida para anis importante em anis
polinomiais. Um polinmio que no pode ser fatorado dito irredutvel.
Definio B.95 (Polinmio irredutvel). Um polinmio f A[x] irredutvel
sobre A se tem grau maior que zero e para todos g, h A[x], se gh = f ento
ou g ou h constante.
Definio B.96 (Corpo finito). Um corpo finito se tem quantidade finita de
elementos.
Corpos finitos so tambm chamados de corpos de Galois.
A quantidade de elementos em um corpo finito sempre um primo (normalmente denotamos Fp ) ou potncia de primo (neste caso denotamos Fpm ou
GF (pm )).
Exemplo B.97 (Corpos finitos). Z2 com as operaes usuais mdulo dois
um corpo. Alm disso, soma e multiplicao mdulo dois so o mesmo que ou

notas de aula verso 79 - Jernimo C. Pellegrini

344

APNDICE B. LGEBRA E TEORIA DOS NMEROS

(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.

Exemplo B.98 (Zk para k no primo no corpo finito). Tomemos k = 6, que


no primo nem potncia de primo. Z6 com as operaes usuais no corpo
finito, porque s h inversos multiplicativos para 1 e 5 (no corpo), conforme
pode ser facilmente verificado na tabela abaixo.
0
1
2
3
4
5

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

Para GF (pm ) podemos representar cada elemento como um polinmio (na


verdade, uma classe de equivalncia de polinmios) com coeficientes em Fp .
Podemos facilmente definir estruturas fintas de polinmios usando aritmtica
modular, da mesma forma que para inteiros.
Definio B.99. Seja f um polinmio em A[x]. O conjunto de todos os g que
so resto de diviso por f em A[x] o conjunto de polinmios mdulo f em
A[x], e denotado A[x]f .
Por exemplo, se f (x) = x7 + x3 + 1, ento Z11 [x]f o conjunto de todos os
polinmios em Z11 [x] que so resto de diviso por x7 + x3 + 1.
Para aplicar uma operao em Ak [x]f em dois polinmios g e h, fazemos:
Computamos f = gh;
Dividimos f por m e tomamos o resto r (que tambm um polinmio);

notas de aula verso 79 - Jernimo C. Pellegrini

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

Exemplo B.100 (Operao modular em polinmios). Considere Z4 [x] mdulo


x2 + 2. Sejam

Dividimos por x2 + 2, obtendo 2x + 3 e resto 3x 6. Agora reescrevemos 3


e 6 mdulo 4, obtendo
x + 2.

lim

Assim, o resultado da operao gh o polinmio x + 2 em Z4 [x].

A operao usada no ltimo exemplo foi a de multiplicao. O procedimento


o mesmo para soma.
Para representar GF (pm ), escolhemos um polinmio irredutvel f (x) de grau
k. O conjunto de polinmios com soma e multiplicao mdulo f (x) um corpo
isomorfo a F G(pk ).

Pr
e

Exemplo B.101 (Gerao de GF (2m ) representado por polinmios). O corpo


GF (24 ) tem 16 elementos, 0, 1, . . . , 15. O polinmio f (x) = x4 + x + 1 sobre
F2 irredutvel. A tabela a seguir mostra dezesseis polinmios, os mesmos
polinmios mdulo f (x) e seus coeficientes.

Ve
rs

p(x) p(x) (mod f (x)) a3 , a2 , a1 , a0


0
0
0, 0, 0, 0
x1
x
0, 0, 1, 0
x2
x2
0, 1, 0, 0
x3
x3
1, 0, 0, 0
x4
x+1
0, 0, 1, 1
x5
x2 + x
0, 1, 1, 0
6
x
x3 + x2
1, 1, 0, 0
x7
x3 + x + 1
1, 0, 1, 1
x8
x2 + 1
0, 1, 0, 1
x9
x3 + x
1, 0, 1, 0
x10
x2 + x + 1
0, 1, 1, 1
11
x
x3 + x2 + x
1, 1, 1, 0
x12
x3 + x2 + x + 1
1, 1, 1, 1
13
x
x3 + x2 + 1
1, 1, 0, 1
x14
x3 + 1
1, 0, 0, 1
x15
1
0, 0, 0, 1

Esta tabela construda da seguinte maneira: depois do zero, listamos x1 , x2 , . . . , x15 ,


e os restos da diviso destes polinmios por f (x) = x4 + x + 1. Ou seja, usamos o polinmio g(x) = x como gerador. Estes restos so a representao dos
elementos de GF (24 ) como polinmios.

notas de aula verso 79 - Jernimo C. Pellegrini

346

APNDICE B. LGEBRA E TEORIA DOS NMEROS


O ndice de cada elemento obtido de xi i.

in
ar

O leitor pode verificar que os polinmios na tabela, com as operaes de


soma e multiplicao, formam um corpo com 24 elementos.
Finalizamos este exemplo com a multiplicao de dois elementos. Observamos que (x5 )(x6 ) = x11 ; verificaremos que o mesmo acontece com os respectivos
polinmios na segunda linha da tabela. Comeamos multiplicando x2 + x por
x3 + x2 , que resulta em x5 + 2x4 + x3 . Reescrevendo os coeficientes mdulo 2,
temos x5 + x3 . Dividindo por f (x), o resto x3 + x2 .

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

Definio B.102 (Polinmio primitivo). Um polinmio primitivo em um


corpo finito se gera o corpo finito.

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

Exemplo B.103 (Polinmio primitivo diferente de x). No exemplo anterior,


g(x) = x primitivo, mas nem sempre x ser primitivo. Citamos dois exemplos
disso: em GF (33 ) com mdulo f (x) = x3 +2x+2, o polinmio x no primitivo,
mas x2 + 1 . A tabela a seguir mostra uma tentativa de gerar GF (33 ) usando
o polinmio x.

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

notas de aula verso 79 - Jernimo C. Pellegrini

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

k (x2 + 1)k (mod f (x))


1
x2 + 1
2
x+1
3
x2 x 1
4
x2 x + 1
5
x
6
x1
7
x2 x
8
x2 1
2
9
x +x1
10
x2
11
x2 + x
12
x2 + x + 1
13
1

Tambm em GF (34 ) usando o polinmio x4 + 2x2 + 1 como mdulo, x no


primitivo, mas x + 1 .

Pr
e

Do seguinte Teorema conclumos que podemos escolher a representao que


quisermos para corpos finitos cuja ordem potncia de primo, porque as representaes so isomorfas.
Teorema B.104. Seja p primo e todo n natural. A no ser por isomorfismo,
h somente um corpo finito de ordem pn .

Em Criptografia comum o uso de GF (2m ) Cada polinmios em GF (2m )


tem como coeficientes nmeros mdulo dois, e por isso podem ser descritos
como sequncias de m bits. Da mesma forma, sequncias de m bits podem ser
interpretadas como polinmios em GF (2m ).

Ve
rs

Exemplo B.105 (Representao de polinmio em GF (24 )). Em GF (24 ) o


polinmio x3 + x2 + 1 tem os coeficientes 1, 1, 0, 1, e pode ser interpretado como
a sequncia de bits 1101.
Computadores normalmente tem operaes para realizar ou-exclusivo bit-abit, possibilitando a soma rpida de polinmios representados desta forma.
Exemplo B.106 (Operao com polinmios em GF (24 )). Em GF (24 ), seja f o
polinmio x3 +x2 +1, representado por 1101 e g o polinmio x3 +x, representado
por 1010. A soma f + g resulta no polinmio 2x3 + x2 + x + 1 (mod 2), que o
mesmo que x2 + x + 1. Esta soma pode ser obtida efetuando o ou-exclusivo da
representao binria dos dois polinmios:
1101 1010 = 0111.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

348

APNDICE B. LGEBRA E TEORIA DOS NMEROS

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.

Ex. 171 Encontre todas as razes primitivas mdulo 5, 7, 9 e 11.

notas de aula verso 79 - Jernimo C. Pellegrini

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

Ex. 173 Quais dos x resduo quadrtico mdulo n? (Fatore n e use o


critrio de Euler)
a) x = 2, n = 6
b) x = 6, n = 10
c) x = 7, n = 12

e) x = 14, n = 15
f) x = 19, n = 30

Pr
e

d) x = 9, n = 12

Ex. 174 Prove que se n mpar, ento


 xy   x   y 
=
.
n
n
n

Ve
rs

Ex. 175 Seja n o produto de k nmeros primos p1 , p2 , . . ., pk . Quantos


nmeros em Zn so resduos quadrticos mdulo n?
Ex. 176 O conjunto de todas as funes f : A A com a operao de
composio um grupo?
Ex. 177 Para qualquer n natural, o conjunto das cadeias de bits de tamanho n com a operao de ou exclusivo um grupo?
Ex. 178 O conjunto de todos os polinmios com a operao de multiplicao um grupo?
Ex. 179 O conjunto de todos os polinmios com a operao de adio
um grupo?
Ex. 180 Prove o Teorema B.67, e prove tambm o seguinte corolrio:
Corolrio B.107. Em um grupo de ordem prima, todo elemento diferente de
1 gerador.

notas de aula verso 79 - Jernimo C. Pellegrini

350

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Ex. 181 O conjunto de todas as matrizes n n de nmeros reais com as


operaes usuais de soma e multiplicao de matrizes invertveis um anel? E
se no nos restringirmos a matrizes quadradas?

(f, g) = F (f g).
(J, ) um grupo?

in
ar

Ex. 182 Seja J o conjunto de todas as bijees complexas e denote por


(f, g) a transformada de Fourier4 da composio de f e g:

Ex. 183 Sejam G um grupo. Mostre que aG = Gb se e somente se ab1


G.

lim

Ex. 184 Seja Zp o grupo de inteiros mdulo p, com p primo e a operao


usual de multiplicao. Prove que este grupo cclico.
Ex. 185 Seja G um grupo cclico de ordem par. Prove que G tem exatamente um elemento de ordem dois.

Pr
e

Ex. 186 O conjunto de todas as bijees de reais em reais com as operaes


de composio () e multiplicao () pode ser um anel?
Ex. 187 (Grove) Mostre que se (G, ) um grupo finito e 6= H G,
ento H subgrupo de G se e somente se x H, y H implica em xy H.
Ex. 188 Mostre que se R um anel e =
6 S R, ento S subanel de R
se e somente se a, b S implica em a b S e ab S.
Ex. 189 Apresente um anel com mais de um elemento identidade.

Ex. 190 O conjunto das matrizes simtricas com as operaes usuais de


soma e multiplicaes de matrizes um anel?

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.

Ex. 192 O conjunto { a + b 2 | a, b Q } com as operaes usuais de soma


e multiplicao um corpo?
Ex. 193 (R[x], +, ) um corpo?
Ex. 194 (Golan) Mostre que o corpo dos reais tem infinitos subcorpos.
Ex. 195 Considere o conjunto de intervalos fechados de nmeros reais com
as operaes a seguir:

4 Veja

o Apndice D

[a, b] + [c, d] = [a + c, b + d]
[a, b] [c, d] = [min(ac, ad), max(bc, bd)]

notas de aula verso 79 - Jernimo C. Pellegrini

351
Este conjunto com tais operaes um corpo?

(a1 + + ak )p = ap1 + + apk

Ve
rs

Pr
e

lim

onde ai R para todo i.

in
ar

Ex. 196 (Mullen/Mummert) Seja R um anel com caracterstica p. Mostre


que para todo n 1,

notas de aula verso 79 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Ve
rs

Pr
e

lim

in
ar

352

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Apndice C

lim

Complexidade Computacional

Complexidade de tempo

C.1

Pr
e

Este Apndice traz um resumo dos conceitos de Complexidade Computacional


usados no texto. A apresentao um tanto curta, por no se tratar do objeto
primrio de estudo do livro no h aqui a mesma cobertura que normalmente
encontrada em textos a respeito de Anlise de Algoritmos. Por exemplo, s
so abordadas estruturas de dados muito simples (sequer h meno a heaps ou
rvores de busca). A seo de notas traz indicaes em abundncia de livros
sobre anlise de algoritmos e complexidade computacional.
Nesta apresentao de Complexidade e Algoritmos no usamos mquinas de
Turing, mas pseudocdigo, de maneira consistente com o resto do texto. Apenas
a Seo C.9 explora em alto nvel e resumidamente as mquinas de Turing.

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

notas de aula verso 79 - Jernimo C. Pellegrini

354

APNDICE C. COMPLEXIDADE COMPUTACIONAL

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

Como exemplo prtico de anlise de tempo de execuo, o seguinte algoritmo


realiza multiplicao de matrizes quadradas (o algoritmo computa C = AB):
para i de 1 a N
para j de 1 a N
Ci,j 0
para k de 1 a N
Ci,j Ci,j + Ai,k Bk,j

Ve
rs

A segunda linha, que realiza uma comparao e incrementa a varivel i, ser


executada N vezes; a terceira e a quarta, N 2 ; j a quinta linha, que realiza uma
soma e uma multiplicao, executada N 3 vezes. A funo que d o nmero
de operaes deste algoritmo ento da forma T (n) = an + bn2 + cn3 .
Queremos agora determinar a ordem de crescimento desta funo. Definiremos a ordem de crescimento de f como o conjunto de todas as funes que
crescem to rpido que T (n), e denotaremos este conjunto por O(T (n)). Mais
precisamente, uma funo g(n) pertence a O(f (n)) se, para todo n a partir de
um dado n0 , existe uma constante c tal que cg(n) f (n).
Definio C.1 (Ordem crescimento de funes). Dada uma funo f , o conjunto
O(f (n)) = {g(n) | c, n0 > 0, n n0 , 0 f (n) cg(n)}

Proposio C.2. Seja f (x) uma funo descrita pela soma


f (x) = f1 (x) + f2 (x) + + fn (x).

Ento existe um termo (uma funo) fk (x) tal que fi (x) O(fk (x)) para todo
1 i n.

notas de aula verso 79 - Jernimo C. Pellegrini

C.1. COMPLEXIDADE DE TEMPO

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 )

9x4 + 8x3 + log(x)

O(x4 )

x! + 2x

4x log(x) + 2x

lim

2x + 5x5

O(x!)

O(x log(x))

Pr
e

Tambm abusamos da notao e escrevemos f (n) = O(g(n)) no lugar de f (n)


O(g(n)), ou dizemos que f (n) O(g(n)).
A complexidade do algoritmo para multiplicao de matrizes dado acima ,
ento, O(n3 ).
H um problema prtico com o descarte de constantes que surjam multiplicando o termo dominante de uma recorrncia: quando ela muito grande,
pode indicar que o algoritmo no til na prtica. Por exemplo, um algoritmo
quadrtico para resolver um problema pode ter complexidade de tempo igual a
1000x2 . Nestes casos dizemos que a constante escondida 1000 muito grande.
Alm da definio de O(f (n)), j dada, poderemos usar a seguinte notao:

f (n) = O(g(n)) g(n) = (f (n))

f (n) = O(g(n)), g(n) = O(f (n))

f (n) = (g(n))

Ve
rs

A seguir classificamos a complexidade dos algoritmos em dois tipos. H


algoritmos rpidos, cuja complexidade de tempo dada por algum polinmio
(ou menor que algum polinmio, como O(log(x))), e algoritmos lentos, cuja
complexidade dada por alguma funo exponencial.
Definio C.3 (Complexidade polinomial, exponencial e subexponencial). Dizemos que um algoritmo tem complexidade de tempo
polinomial se tem complexidade de tempo O(p(n)), onde p um polinmio;
c

exponencial se tem complexidade de tempo O(2n ) para alguma constante


c N;

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.

notas de aula verso 79 - Jernimo C. Pellegrini

356

APNDICE C. COMPLEXIDADE COMPUTACIONAL

lim

para i de 1 a n1
para j de i+1 a n
se Vi > Vj
troque Vi com Vj

in
ar

Quando a complexidade de tempo para um algoritmo cresce mais rpido


que qualquer polinmio mas ainda assim cresce mais lentamente que qualquer
exponencial, dizemos que o algoritmo tem tempo de execuo subexponencial.

Uma das maneiras de definir complexidade exponencial O(2n ), com > 0.


Dizemos que algoritmos polinomiais so eficientes, e estamos interessados
em determinar que tipo de algoritmo pode ser usado para resolver diferentes
problemas computacionais: ser possvel fatorar um inteiro n em tempo polinomial no tamanho da descrio de n? Ou encontrar uma soluo para um sistema
de n equaes?
Um exemplo de algoritmo eficiente o de ordenao de um vetor por seleo.
A entrada um vetor V de tamanho n:

C.1.1

Pr
e

Este algoritmo tem complexidade de tempo O(n2 ).


O que fizemos conceitualmente foi, no conjunto de todas as possveis solues (ou seja, todas as permutaes de V ) encontrar aquela que queramos.
Note que h n! permutaes de V , mas no precisamos enumerar todas elas
conseguimos resolver o problema em tempo O(n2 ) usando um algoritmo razovel (poderamos ter gerado todas as n! permutaes e verificado, para cada
uma, se estava ordenada, mas o algoritmo teria tempo de execuo O(n!), alm
de ser mais complicado).

Recorrncias

Ve
rs

comum que o clculo da complexidade de tempo de um algoritmo no seja


calculada de maneira to simples como no exemplo anterior. O algoritmo mergesort um exemplo. O mergesort usa a operao de merge (ou intercalao):
dados dois vetores ordenados, a intercalao deles um novo vetor ordenado
contendo os elementos de ambos.
Um algoritmo para intercalar dois vetores simples: olhamos para os primeiros elementos de cada vetor. Escolhemos o menor e copiamos para o novo vetor.
Depois, avanamos para obter o prximo menor do vetor de onde acabamos
de tirar um elemento. Comparamos novamente e repetimos a operao at que
os elementos se esgotem.

notas de aula verso 79 - Jernimo C. Pellegrini

C.1. COMPLEXIDADE DE TEMPO

357

lim

in
ar

Usaremos o procedimento merge no em dois vetores, mas em duas metades


do mesmo vetor. Assim, o procedimento tratar duas metades do vetor como
se fossem dois vetores (U e V na figura abaixo).

O algoritmo mostrado em pseudocdigo a seguir. Os parmetros so: V ,


o vetor onde esto os elementos a intercalar; a e b, o primeiro e ltimo ndices
a serem usados, e m, o ndice do ponto mdio.

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

A complexidade de tempo de merge claramente O(n).


O algoritmo mergesort listado a seguir; a e b so os ndices inicial e final
da parte do vetor a ser ordenada.

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)).

notas de aula verso 79 - Jernimo C. Pellegrini

358

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Demonstrao. O tempo necessrio para que o algoritmo termine :

n para a chamada a merge.

in
ar

O tempo de mergesort em vetor de tamanho n/2 para cada chamada


recursiva a mergesort;

A equao de recorrncia que d o tempo de execuo portanto


T (n) = 2T (n/2) + O(n).

lim

A soluo desta recorrncia T (n) = O(n log(n)). A rvore a seguir mostra


o tempo necessrio para a execuo do algoritmo: no primeiro n o tamanho
da entrada n, portanto o trabalho realizado ali O(n); dois outros ns filhos
existem, cada um com trabalho n/2. Isso se repete at que n = 1.

n/2

n/2

n/4

Pr
e

n/4

n/8

n/8

A altura da rvore log2 n, e em cada nvel k o trabalho realizado leva


tempo 2k (logk n) = n. O tempo total necessrio ento O(n) em cada iterao
e O(n log(n)) no total.

Ve
rs

A inspeo da rvore uma de diferentes maneiras de resolver recorrncias.


H tambm um Teorema Mestre que permite resolver alguns tipos de recorrncia
rapidamente.

Teorema C.5 (Teorema Mestre para recorrncias). Se uma recorrncia da


forma
T (N ) = aT (n/b) + f (n),

ento

i) Se f (n) = O(nlogb (a) ), com > 0, ento


T (n) = (nlogb (a) ).

ii) Se f (n) = (nlogb (a) ), ento


T (n) = (nlogb (a) log(n)).

notas de aula verso 79 - Jernimo C. Pellegrini

C.1. COMPLEXIDADE DE TEMPO

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

J apresentamos o pseudocdigo para o algoritmo ingnuo para multiplicao


de matrizes, e verificamos que sua complexidade de tempo O(n3 ). O algoritmo
de Strassen, exposto a seguir, tem complexidade assinttica melhor.
A primeira observao importante para compreender o algoritmo de Strassen
que a multiplicao de matrizes pode ser descrita recursivamente em termos
de blocos basta dividir a matriz em quatro blocos. Por exemplo,


 

A B
E F
AE + BG AF + BH
=
.
C D
G H
CE + DG CF + DH

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 )

porque dividimos o problema em oito problemas menores, de tamanho n/2 (no


estamos contando nmero de elementos na matriz, mas seu maior lado ou sua
diagonal) e depois realizamos as somas, que no total tero complexidade (n2 ).
Se resolvermos essa recorrncia obteremos T (n) = n3 , e o algoritmo no ser
melhor que o primeiro que vimos.
No entanto, se calcularmos os seguinte sete produtos
X1
X2
X3
X4

= 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 )

notas de aula verso 79 - Jernimo C. Pellegrini

360

APNDICE C. COMPLEXIDADE COMPUTACIONAL

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 =

teremos calculado o produto das duas matrizes com sete multiplicaes, e no


outo.
A recorrncia para a complexidade de tempo do algoritmo de Strassen

lim

T (n) = 7T (n/2) + (n2 ).

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.

Tamanho da entrada e nmero de bits

Pr
e

C.1.2

Ve
rs

de crucial importncia observar que a complexidade de algoritmos medida


usando o tamanho da entrada, e no seu valor.
Um exemplo ilustrar isto claramente: o problema do logaritmo discreto
consiste em determinar o logaritmo de um nmero y mdulo n em uma base g
(ou seja, determinar o nmero 0 < x < n tal que g x = y). Podemos inicialmente
imaginar que a busca exaustiva pela soluo tem complexidade de tempo linear:
basta que verifiquemos, para cada 0 < i < n, se g i = y. No entanto, ao raciocinar desta forma estamos descrevendo a complexidade do algoritmo em termos
do valor n. O tamanho de n em bits deve ser usado: medida que aumentamos
o nmero de bits usado para representar o mdulo n, o tempo necessrio para a
busca exaustiva cresce exponencialmente: cada novo bit multiplica o espao de
busca por dois! O tempo necessrio para encontrar o logaritmo de um nmero
mdulo n, onde n tem k bits, proporcional ao maior valor representvel com
k bits: 2k+1 1. Por isso a complexidade do algoritmo O(2k ).

C.2

Grafos

Usaremos grafos em nossos exemplos e em alguns dos tpicos de Criptografia,


por isso os definimos aqui:
Definio C.7 (Grafo). Um grafo G = (V, E) consiste de um conjunto V de
vrtices e de um conjunto E de arestas (pares de vrtices) { u, v }, onde u, v V .
Usualmente os grafos so representados visualmente como conjuntos de pontos (os vrtices) ligados por linhas (as arestas).

notas de aula verso 79 - Jernimo C. Pellegrini

C.2. GRAFOS

361

representado graficamente na figura a seguir.


b

lim

in
ar

Exemplo C.8 (Grafo). Por exemplo, G = (V, E) onde V = {a, b, c, d, e} e




{ a, b } , { a, c } , { a, e } ,
E =
.
{ b, c } , { b, d } , { c, d } , { d, e }

Definio C.9 (Grau de um vrtice). Em um grafo G = (V, E), o grau de um


vrtice v a quantidade de vrtices w V tais que h aresta de w a v (ou seja,
a quantidade de vizinhos de v). Denotamos o grau de v por d(v).

Pr
e

No exemplo dado, d(a) = 3 e d(c) = 2.

Definio C.10 (Clique). Uma clique em um grafo um subconjunto C de


seus vrtices tal que para todos u, v C, { u, v } uma aresta do grafo (ou seja,
um subconjunto de vrtices ligados dois a dois por arestas). usual denotar
uma clique de n vrtices por Kn .
O grafo da figura anterior tem duas cliques de tamanho trs (tambm as
chamamos de tringulos): {a, b, c} e {b, c, d}.

Definio C.11 (Caminho). Um caminho em um grafo uma sequncia (v1 , v2 , , vk )


de vrtices de G tais que h arestas ligando cada dois vrtices vi , vi+1 consecutivos.

Ve
rs

Por exemplo, (a, b, c, d) um caminho no grafo dado.

Definio C.12 (Circuito). Um circuito em um grafo um caminho onde o


ltimo vrtice igual ao primeiro. Um circuito simples se no h nele repetio
de vrtices alm do par primeiro-ltimo.
A sequncia (a, b, d, e, a) um exemplo de circuito simples no grafo dado
como exemplo.
Definio C.13 (Circuito Hamiltoniano). Um circuito simples em um grafo G
que contenha todos os vrtices de G chamado de circuito Hamiltoniano.
No grafo da primeira figura h um circuito Hamiltoniano (a, b, c, d, e, a).
Um grafo pode ser composto de diversas partes desconectadas, e classificamos
os grafos como conexos (como o grafo do Exemplo C.8) ou desconexos, usando
a Definio a seguir.

notas de aula verso 79 - Jernimo C. Pellegrini

362

APNDICE C. COMPLEXIDADE COMPUTACIONAL

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

O problema de colorir os vrtices de um grafo sem dar a ns adjacentes cores


iguais ser usado como exemplo neste Apndice e tambm usado normalmente
em exemplo de prova de conhecimento zero1 .

Exemplo C.16 (Colorao de grafo). O grafo dado anteriormente como exemplo admite uma 3-colorao:
d3
e1

Pr
e

a3
b1
c2

rvores so um tipo particular de grafo de grande importncia.


Definio C.17 (rvore). Um grafo uma rvore se conexo e no tem
circuitos.
A Figura a seguir mostra uma rvore.

Ve
rs

a
c

b
d
g

f
h

O conceito de isomorfismo de grafos usado em provas de conhecimento zero


(no Captulo 13).

Definio C.18 (Isomorfismo de grafos). Dois grafos G = (V, E) e G0 =


(V 0 , E 0 ) so isomorfos se existe uma bijeo f : V V 0 tal que { x, y } E se
e somente se { f (x), f (y) } E 0 .
Exemplo C.19 (Grafos isomorfos). Sejam G, F e H os grafos a seguir:
1 Provas

de conhecimento zero so discutidas no Captulo 13.

notas de aula verso 79 - Jernimo C. Pellegrini

C.3. PROBLEMAS DE DECISO E DE BUSCA


G

363
I

in
ar

Os grafos G e H so isomorfos porque existe a seguinte bijeo:


ax
cy

bw
dz

C.3

lim

J G e I no so isomorfos: no pode haver bijeo entre eles, j que o vrtice


de I tem trs vizinhos, e em G no existe vrtice com trs vizinhos.

Problemas de deciso e de busca

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

Um conjunto I de possveis entradas, ou instncias do problema. No


caso da ordenao de vetores, uma instncia um vetor (o tamanho da
instncia ser a quantidade de elementos no vetor);
Para cada instncia h um conjunto (possivelmente vazio) de solues
factveis. Ainda usando o exemplo da ordenao, temos o conjunto de
todas as permutaes do vetor.

Resolver o problema de busca para uma instncia encontrar uma soluo


correspondente quela instncia. Como exemplo temos:

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.

Um problema de deciso se admite apenas duas respostas, sim ou no.


Por exemplo,

notas de aula verso 79 - Jernimo C. Pellegrini

364

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Dado um nmero n, decidir se n primo.

in
ar

Dados os custos de deslocamento entre n cidades, responder se h alguma


maneira de percorr-las, passando somente uma vez em cada uma, gastando no mximo c em combustvel;

Dado um grafo existe nele uma clique de tamanho k?

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

H mais de uma maneira de definir algoritmo no determinstico; daremos duas


aqui.

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

A complexidade de tempo do algoritmo O(|K|2 ), porque o lao para todo


u, v K enumera todos os pares de vrtices de K.
H uma definio um pouco diferente (mas equivalente) de algoritmo nodeterminstico.
Definio C.22 (Algoritmo no determinstico). Um algoritmo dito no determinstico quando pode seguir vrias sequncias diferentes de passos ao mesmo
tempo. Quando uma destas sequncias chega a um resultado e para, o algoritmo
para.
Quando uma nova linha de execuo criada, ela e comporta como se
tivesse clonado toda a memria (todas as variveis) da linha que a iniciou.
No h limite para a quantidade de linhas de execuo simultneas.

notas de aula verso 79 - Jernimo C. Pellegrini

C.5. ALGORITMOS RANDOMIZADOS

365

Exemplo C.23 (Algoritmo no determinstico para CLIQUE).

in
ar

Ao calcular a complexidade de tempo de um algoritmo no determinstico,


no somamos os tempos dos diferentes caminhos: ao invs disso contamos como
se o algoritmo executasse em um computador com infinitas unidades de processamento, uma para cada caminho possvel.

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

A primeira linha diz escolha no-deterministicamente. Isso significa que o


algoritmo deve escolher um dentre um nmero exponencial (2|V | ) de subconjuntos de V . Isso pode ser entendido como crie 2|V | linhas de execuo, e cada
uma segue com um subconjunto.

Definio C.24 (Algoritmo randomizado). Um algoritmo randomizado aquele


que usa um gerador de nmeros aleatreos durante sua execuo. Quando executado duas vezes com a mesma entrada, pode realizar computaes diferentes
e chegar a resultados diferentes.

Ve
rs

Um exemplo simples o teste de primalidade de Fermat2 .


O pequeno teorema de Fermat (Teorema B.29) diz que se p primo, ento
ap a (mod p) ou seja, que ap1 1 (mod p).
Usando este resultado, podemos testar se um nmero p primo escolhendo
aleatoreamente vrios nmeros a < p e verificar se a igualdade vale. Caso isso
no ocorra, p certamente composto. Caso ocorra, p pode ser primo. Escolhendo vrios valores diferentes de a aumentamos a probabilidade da resposta
ser verdadeira.

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.

2 necessrio conhecer um mnimo sobre congruncias para compreender este exemplo


consulte o Apndice B ou um livro de Teoria dos Nmeros.

notas de aula verso 79 - Jernimo C. Pellegrini

366

APNDICE C. COMPLEXIDADE COMPUTACIONAL

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

PRIMO (dado um nmero n N, determinar se n primo) porque o


algoritmo polinomial desenvolvido por Agrawal, Kayal e Saxena pode ser
usado para determinar se um nmero primo.
Note que nem sempre um problema de deciso fcil implica em um problema
de busca fcil. Por exemplo, h um algoritmo polinomial (AKS) para testar
primalidade, mas no conhecemos algoritmo polinomial para obter os fatores de
um nmero.

Definio C.26 (Classe N P). Um problema est na classe N P quando pode


ser resolvido por um algoritmo no-determinstico em tempo polinomial.

Ve
rs

Problemas em NP evidentemente incluem todos os problemas em P, e diversos outros, inclusive:


CLIQUE Determinar se um grafo G tem uma clique de tamanho k. O
algoritmo no-determinstico apresentado para o problema da clique em
um grafo tem complexidade de tempo polinomial, portanto CLIQUE
N P.

SOMA-SUBCONJUNTO: Dado um conjunto finito A de inteiros positivos


e um nmero s, existe um subconjunto de A cuja soma s? O problema
est em N P porque tendo um subconjunto de A podemos verificar em
tempo polinomial se sua soma s.
CICLO-HAMILTONIANO: Dado um grafo, determinar se ele tem um
ciclo Hamiltoniano. O problema est em N P: tendo uma sequncia de
vrtices podemos verificar em tempo polinomial se cada vrtice est ligado
ao prximo, e se no h vrtices repetidos.

notas de aula verso 79 - Jernimo C. Pellegrini

C.6. CLASSES DE COMPLEXIDADE

367

in
ar

TETRIS: Dados um cenrio inicial de jogo e uma sequncia de peas do


jogo Tetris, determinar se possvel conseguir rotacion-las e desloc-las
para os lados e para baixo de forma que todas desapaream3 , sendo que a
ltima pea preencher o espao que faltava?
H uma grande quantidade de problemas em N P, mas no nos ocuparemos
deles aqui.
A classe de problemas resolvidos por algoritmos probabilsticos chamada
de PP (probabilistic polynomial time). H diversas subclasses de PP, mas
trataremos em particular da classe BPP.
Algoritmos randomizados que tenha probabilidade de acerto maior que 1/2
so particularmente interessantes:

lim

Definio C.27 (Classe BPP). Um problema est na classe BPP quando


pode ser resolvido por um algoritmo randomizado em tempo polinomial com
probabilidade de acerto 2/3.

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.

Teorema C.29. N P PSPACE.

Ve
rs

Definio C.30 (Linguagem associada a um problema). A linguagem de um


problema de deciso o conjunto de todas as instncias do problema para as
quais a resposta afirmativa.

Exemplo C.31 (Linguagens). Os nmeros 3, 11 e 17 pertencem linguagem


dos nmeros primos.
O grafo a seguir pertence linguagem dos grafos hamiltonianos, porque o
ciclo (a, b, f, c, d, e, a) percorre cada vrtice uma nica vez.

3 Lembre-se

f
e
a
d

das regras do Tetris: quando a linha da base fica cheia,ela desaparece.

notas de aula verso 79 - Jernimo C. Pellegrini

368

APNDICE C. COMPLEXIDADE COMPUTACIONAL

C.7

Redues e completude

in
ar

Podemos ento dizer que resolver um problema de deciso decidir se uma


instncia pertence sua linguagem.

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

Problema C.32 (HAM (Circuito Hamiltoniano)). Dado um grafo G = (V, E),


determine se G tem um circuito Hamiltoniano.
O segundo problema o de encontrar uma maneira de percorrer n ns de
um grafo com peso nas arestas limitando o custo mximo do percurso.

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

Havendo um algoritmo para resolver o TSP, podemos us-lo para resolver


tambm o HAM:
Dado o grafo G = (V, E), d a cada aresta o mesmo custo, 1. Se resolvermos
o TSP agora procurando um caminho com custo no mximo igual a |V |, sabemos
que existe um circuito hamiltoniano no grafo.
Para resolver o HAM usando o TSP tivemos que descrever um algoritmo que
transforma entradas do HAM em entradas do TSP (simplesmente adicionamos
pesos 1 a todas as arestas, e determinamos que m = |V |), e a sada do algoritmo para o TSP nos d a resposta para o HAM. Esta tcnica que consiste em
transformar a entrada de um problema em outro para resolv-lo chamada de
reduo.
A figura abaixo ilustra a reduo que fizemos. Note que a reduo (a transformao da entrada) foi feita em tempo polinomial (adicionar pesos s arestas
pode ser feito em O(|E|)). Isso porque se tivermos que usar um algoritmo exponencial, a reduo no faz sentido: poderamos simplesmente enumerar todos
os circuitos em G.
instncia de HAM

sim / no

reduo em tempo polinomial


instncia de TSP
algoritmo para TSP

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE

369

in
ar

Quando h uma reduo em tempo polinomial de um problema A para um


problema B, usamos a notao A P B. O ltimo exemplo mostra que HAM
P TSP.
No sabemos se h algoritmo polinomial para o TSP. Se houver, ele poder
ser usado para construir (usando esta reduo) um algoritmo polinomial para o
HAM.
Finalmente definimos a noo de N P-completude4 .

Definio C.34 (Classe N P-completo). Um problema P N P-completo quando


i) P N P e
ii) P0 N P, P0 P P.

Teorema C.35. TSP N P-completo.

lim

A classe de problemas PSPACE-completos definida de maneira anloga


classe de problemas N P-completos, mas neste texto trataremos apenas da
ltima.
Para provarmos o prximo Teorema usaremos o fato de HAM ser N Pcompleto.

Pr
e

Demonstrao. A prova se divide em duas partes:

i) T SP N P: dada uma instncia do TSP e uma possvel soluo (uma


sequncia de vrtices) possvel verificar em tempo polinomial se ela factvel (basta verificar que h arestas entre os ns, que no h ns repetidos
e somar os custos).

Tcnicas para demonstrao de N P-completude

Ve
rs

C.7.1

ii) P 0 N P, P 0 P T SP . A reduo usada como exemplo prova de


que que HAM P T SP . Como HAM N P-completo, temos que P 0
N P, P 0 P HAM . Ento, P 0 N P, P 0 P HAM P T SP.

Grosso modo, as demonstraes de N P-completude so normalmente de um


dos trs tipos listados a seguir.
Restrio: a forma mais simples de demonstrao, onde para reduzir um
problema A a outro problema B, apenas mostramos que suficiente usar
o algoritmo de soluo de B restringindo suas entradas. Essa a tcnica
usada na reduo de HAM ao TSP, j dada;

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.

notas de aula verso 79 - Jernimo C. Pellegrini

370

APNDICE C. COMPLEXIDADE COMPUTACIONAL

in
ar

Projeto de componentes: para mostrar que B N P-difcil, mostramos


que uma instnca de algum problema N P-difcil A pode ser transformada
em outra de B atravs do projeto de pequenos componentes.
Restrio

lim

O problema da mochila um dos mais importantes problemas N P-completos.


Informalmente pode-se descrever o problema de mochila usando a analogia que
lhe d nome: em uma situao em que h diversos objetos, cada um com um
peso e um valor, nos interessa saber se possvel coletar diferentes objetos em
uma mochila, acumulando um determinado valor, mas sem exceder a capacidade
de mochila.
A seguir est a definio formal do problema da mochila, com a demonstrao
de que N P-difcil.
MOCHILA: dados um conjunto X, uma capacidade C, um valor objetivo
K e funes s : X Z+ e v : X Z+ dando um tamanho e valor para cada
x X, determinar se existe um subconjunto X 0 X tal que
X
s(x) B

Pr
e

xX 0

v(x) K.

xX 0

Teorema C.36. MOCHILA N P-difcil.

Demonstrao. Reduo de PARTICAO:


P basta restringir as instncias de maneira que s(x) = v(x) e C = K = 1/2 xX s(x).
Substituio local

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.

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE

371

CONJUNTO-DOMINANTE: dado um grafo G = (V, E) e um inteiro K,


existe um conjunto dominante de tamanho mximo K em G?

in
ar

Teorema C.38. CONJUNTO-DOMINANTE N P-difcil.

V = I U.

lim

Demonstrao. Seja S uma famlia de conjuntos S1 , S2 , . . . , Sn , com ndices


I = { 1, . . . , n }. Seja U a unio de todos os Si , U = Si . Podemos resolver uma instncia do problema COBERTURA-DE-CONJUNTO transformando
uma instncia (U, S) em uma instncia de CONJUNTO-DOMINANTE (que
simplesmente um grafo G).
Construmos o grafo da seguinte maneira: o conjunto de vrtices contm
tanto os ndices i = 1, . . . , n dos subconjuntos como os elementos de U :

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

A Figura a seguir ilustra a construo do grafo para S1 = { x1 }, S2 = { x1 , x2 , x3 },


S3 = { x3 , x4 }, S4 = { x5 , x6 }.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

372

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Projeto de componentes

in
ar

O exemplo que damos para a tcnica de projeto de componentes o do problema


da 3-colorao de um grafo.
3COLOR: Dado um grafo, h para ele uma colorao de seus vrtices com
no mximo trs cores?
O problema 3SAT, definido a seguir, ser usado na reduo que faremos.
3SAT: Dada uma frmula booleana em forma normal conjuntiva com no
mximo trs variveis por clusula, existe alguma atribuio de variveis que
torne a frmula verdadeira?
Exemplo C.39 (Instncia de 3SAT). Uma instncia do 3SAT exibida a
seguir. Dada a frmula

lim

(a b c) (b d f ) (b e g) (a b f ),

h atribuio possvel s variveis tal que a frmula assuma valor verdadeiro?


Teorema C.40. 3COLOR N P-difcil.

Pr
e

Demonstrao. Mostramos uma reduo de 3SAT a 3COLOR.


Usaremos trs componentes para transformar instncias de 3SAT em instncias de 3COLOR.
O primeiro componente uma 3-clique, onde os vrtices tem os rtulos T , F
e , que representam os valores verdadeiro, falso e impossvel de atribuir
para variveis de uma frmula booleana.

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 .

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE

373

lim

in
ar

Construimos ento um grafo da seguinte maneira:

Pr
e

i) Incluimos os vrtices , T , e F , e os ligamos em uma 3-clique.

ii) Incluimos um vrtice para cada varivel e um para a negao de cada


varivel (a, a, b, b, . . .).

Ve
rs

iii) Para cada varivel v e sua negao v, ligamos v, v e em uma 3-clique,


como no segundo componente.

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 prxima figura mostra um exemplo do grafo construdo para a frmula

(a b c) (b c d) (a c d).

notas de aula verso 79 - Jernimo C. Pellegrini

374

APNDICE C. COMPLEXIDADE COMPUTACIONAL


a

in
ar

Pr
e

lim

Ve
rs

O grafo assim construdo ter uma 3-colorao se e somente se houver uma


atribuio de valores para a frmula que tenha pelo menos um valor T em cada
clusula o que garante que a frumua ter valor T .
Como conseguimos transformar, em tempo polinomial, uma instncia de
3SAT em uma de 3COLOR, ento 3COLOR N P-difcil.
O que mostramos que, se h algoritmo polinomial para 3COLOR, ele pode
ser usado para resolver 3SAT tambm em tempo polinomial.
O leitor pode verificar facilmente que alm de N P-difcil, 3COLOR N Pcompleto.

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:

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE

375

in
ar

dados os inteiros positivos a, b, c, existem inteiros positivos x e y tais que


ax2 + by = c? Este problema fcil quando aceitamos solues no-inteiras,
mas N P-completo se exigirmos solues inteiras.
Outros exemplos so:
O problema da mochila, que pode ser resolvido eficientemente se for permitido escolher fraes de objetos;
O problema de programao linear, que pode ser resolvido eficientemente
quando solues racionais so admissveis, mas N P-completo quando as
solues devem ser inteiras.

Problemas N P-completos na prtica

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

Embora seja N P-completo, o problema da mochila pode ser resolvido em muitas


situaes prticas por um algoritmo eficiente.
Seja mk o valor que pode ser obtido com peso menor ou igual a k. Evidentemente, m0 = 0. Podemos definir os valores de mi recursivamente:
mi = max wj + mi vj .

1jn
vj i

Ve
rs

Esta equao expressa o que chamado de subestrutura tima do problema, que


se assemelha ideia de induo forte: tendo as solues timas para o problema
com todas as possveis capacidades de mochila de zero at i 1, determinamos
a soluo para a mochila de capacidade i. Percorremos os objetos e escolhemos
aquele que, somado a alguma soluo para mochila menor, resulta em maior
valor.
O pseudo cdigo do algoritmo mostrado a seguir.

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)

notas de aula verso 79 - Jernimo C. Pellegrini

376

APNDICE C. COMPLEXIDADE COMPUTACIONAL

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

Exemplo C.41 (Algoritmo para o problema da mochila). Para exemplificar o


funcionamento do algoritmo, seja C = 7. Os objetos disponveis tem pesos e
valores iguais a w
~ = (2, 1, 3, 4), e ~v = (3, 2, 5, 9). A sequncia de linhas a seguir
mostra como o vetor m
~ preenchido pelo algoritmo.

lim

A soluo tima nos d valor igual a quinze, com os um a unidade do item 4 e


trs unidades do item 2 (o valor 1 9 + 3 2 = 15 e o peso 1 4 + 3 1 = 7).

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

Muitas vezes, apesar de no conseguirmos algoritmos eficientes para resolver


de maneira exata problemas de otimizao N P-completos, podemos encontrar
solues que se aproximam da soluo tima.
Por exemplo, podemos conseguir resolver o problema da colorao de vrtices
usando algumas cores a mais do que na soluo tima; poderamos resolver o
TSP conseguindo um percurso com custo um pouco maior do que o timo.
Precisamos ento definir o que significa um pouco distante do timo.
Suponha que a soluo tima para cada instancia I do problema P dada por
OP T (I). Suponha tambm que a soluo dada por um algoritmo A dada por
A(I). Como s trabalharemos com um problema e um algoritmo aproximado
de cada vez, no haver confuso. Nas definies que seguem, usaremos esta
notao.
Idealmente, para toda instancia I de P , gostaramos de obter algoritmos
eficientes que nos dessem solues diferindo da tima apenas por uma constante.
A isso damos o nome de aproximao absoluta.

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE

377

in
ar

Definio C.42 (Aproximao absoluta). Dizemos que A uma aproximao


absoluta para o problema se existe uma constante k tal que para toda instancia
I,
|A(I) OP T (I)| k.

aprox_colore_vertices(G):
se E = :
retorne uma unica cor
se G e bipartido:
retorne uma 2coloracao
senao
retorne uma 6coloracao

lim

Um problema para o qual existe algoritmo de aproximao absoluta o da


colorao de vrtices em grafos planares.
Todo grafo planar pode ser colorido com no mximo seis cores, portanto
podemos tentar colorir o grafo com menos cores, e se no conseguirmos, usamos
seis. O seguinte algoritmo implementa esta estratgia.

Pr
e

Obter 2-colorao de grafo bipartido muito simples. Obter uma 6-colorao


de um grafo planar qualquer pode ser feito em tempo polinomial.
H problemas que no admitem aproximao absoluta. Um deles o da
mochila.
Teorema C.43. se P =
6 N P, no existe aproximao absoluta para o problema
da mochila.

Ve
rs

O Exerccio 221 pede a demonstrao deste Teorema; a demonstrao est


na Apndice com as solues, e recomendvel estud-la, porque o mesmo
raciocnio aplicvel a diversos outros problemas, como TSP e CONJUNTOINDEPENDENTE.
Infelizmente aproximaes absolutas existem apenas para poucos problemas.
Podemos no entanto obter algoritmos eficientes que aproximem a soluo tima,
diferindo dela por um fator dado por uma funo.
Definio C.44 ((n)-aproximao). Dizemos que A uma (n)-aproximao
para o problema se existe uma funo () tal que para toda instncia I,
OP T (I)
A(I)
p(n)

para problemas de otimizao, ou


A(I) p(n)OP T (I)

onde n |I|, o tamanho da instancia.


Quando (n) constante, dizemos que A uma k-aproximao.

notas de aula verso 79 - Jernimo C. Pellegrini

378

APNDICE C. COMPLEXIDADE COMPUTACIONAL

lim

in
ar

Claramente, nos interessa obter algoritmos com fator de aproximao dado


por alguma funo () que cresa lentamente.
O problema da cobertura de grafos por vrtices N P-completo.
COBERTURA-POR-VERTICES: dado um grafo G = (V, E) e um inteiro
positivo K, determinar se existe V 0 V de tamanho menor ou igual a K tal
que toda aresta de E tem pelo menos um de seus vrtices em V 0 .
H uma 2-aproximao para COBERTURA-POR-VERTICES.
aprox_vertex_cover(G):
C
A cpia de E
enquanto A 6= :
{ u, v } alguma aresta de A
C C { u, v }
remova de A qualquer aresta incidente em u ou v
retorne C
O algoritmo executa em tempo polinomial. O Exerccio 223 pede a demonstrao desta Proposio.

Pr
e

Proposio C.45. O algoritmo aprox_vertex_cover tem complexidade de


tempo polinomial.
Mostramos agora que o algoritmo realmente encontra uma por vrtices.
Teorema C.46. O algoritmo aprox_vertex_cover retorna uma cobertura do
grafo G por vrtices.
Demonstrao. O algoritmo percorre todas as arestas do grafo, e para cada uma
delas garante que haver um de seus vrtices na soluo, portanto o resultado
deve ser uma cobertura por vrtices.

Ve
rs

Teorema C.47. O conjunto de vrtices retornado por aprox_vertex_cover


no mximo duas vezes maior que o tamanho da cobertura tima de G por
vrtices.
Demonstrao. Seja A o conjunto de todas as arestas escolhidas de A logo no
incio do lao enquanto. Note que este conjunto pode ser menor que E, porque
algumas arestas so removidas de A dentro do lao, e nunca so selecionadas.
Todas os vrtices das arestas de A so includos em C, portanto C uma

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

portanto precisamos de exatamente dois vrtices por aresta de A:

|C| = 2|A|

Qualquer cobertura, por definio, deve ter no mnimo um vrtice incidindo em


cada aresta. Como OP T (I) uma cobertura de E,
|E| |OP T (I)|.

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE

379

Mas A E, e portanto
|E| OP T (I).
|A|
2OP T (I).
|C| = 2|A|

C.7.4

Outros problemas N P-completos

A seguir h uma lista com alguns problemas N P-completos.

in
ar

Temos ento que

3SAT (descrito no texto);


3COLOR (descrito no texto);
CLIQUE (descrito no texto);

lim

SAT: dada uma frmula booleana, existe alguma atribuio de variveis


que torne a frmula verdadeira?

Pr
e

COBERTURA-POR-VERTICES (descrito na pg. C.7.3);

COLORAO-DE-VRTICES: dado um grafo G = (V, E) e um inteiro


positivo K, determinar se possvel associar cores aos vrtices, usando no
mximo K cores e sem que vrtices adjacentes tenham a mesma cor;

X3C (COBERTURA-EXATA-POR-3-CONJUNTOS): dado um conjunto


X com tamanho mltiplo de trs e uma coleo C de subconjuntos de X,
cada um de tamanho trs, existe em C uma cobertura exata para X? (Ou
seja, h C 0 C tal que cada elemento de X ocorre exatamente uma vez
em C 0 ?)

Ve
rs

PARTICAO: Dado um conjunto finito A e P


um tamanho s(a)
P para cada
a A, existe um subconjunto A0 A tal que aA0 s(a) = aA\A0 s(a)?
SOMA-SUBCONJUNTO (descrito no texto);
COBERTURA-DE-CONJUNTO (descrito no texto);
CONJUNTO-DOMINANTE (descrito no texto);

PRODUTO-SUBCONJUNTO: Dados um conjunto finito A, um tamanho


inteiro positivo s(ai ) para cada elemento ai A e um inteiro positivo
b, existe um subconjunto a0 A tal que o produto dos tamanhos dos
elementos de A0 exatamente b?

CICLO-HAMILTONIANO (descrito no texto);

TETRIS (descrito no texto);

notas de aula verso 79 - Jernimo C. Pellegrini

380

APNDICE C. COMPLEXIDADE COMPUTACIONAL


COBERTURA-POR-VERTICES: dado um grafo G, existe uma cobertura
de G por vrtices de tamanho K? (Uma cobertura por vrtices um
conjunto de vrtices que toca em todas as arestas do grafo).

in
ar

EQUACAO-DIOFANTINA-QUADRATICA (descrito no texto);

CONGRUENCIA-QUADRATICA: Dados inteiros positivos a, b, m, c, existe


algum inteiro x < b tal que x2 a (mod m)?

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

SVP: dada uma base de um reticulado L e uma norma, determinar o


menor vetor do reticulado.
CVP: dada uma base de um reticulado L, uma norma e um ponto p em
Rn , determinar o ponto p0 L mais prximo de p.

C.8

Problemas indecidveis

H problemas para os quais pode-se provar que no h algoritmo (e portanto


no faz sentido falar em complexidade de tempo).

Ve
rs

Definio C.48 (Problema indecidvel). Um problema indecidvel se no


existe algoritmo que determine, em tempo finito, sua soluo.
O mais conhecido problema indecidvel o problema da parada.

Definio C.49 (Problema da Parada). Seja (A) a descrio de um algoritmo A


e x uma entrada qualquer para o algoritmo a. Dados (A), x, em algum momento
A vai parar?
Em outras palavras, dado um programa e uma entrada, podemos decidir se este
programa em algum momento chegar ao fim da execuo?

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.

notas de aula verso 79 - Jernimo C. Pellegrini

C.9. F MQUINAS DE TURING

381

in
ar

Demonstrao. (Idia superficial) Suponha que existe um procedimento para(P, e)


que decide se um programa P para quando executado com entrada e. Poderamos ento construir os dois procedimentos a seguir.
Primeiro, para entrada (P, e), confunde para quando P no para, e viceversa.
confunde(P, e):
se nao para(P, e) // P no para
retorne SIM
senao
// P para
nao pare nunca

Finalmente, diagonal(x) aplica confunde com argumentos (x, x).

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

Uma demonstrao formal necessita de uma formalizao do conceito de


algoritmo, que apresentamos apenas muito brevemente na Seo C.9; veja a
Seo de Notas.
H diversos outros problemas indecidveis que ficam demasiado distantes
do escopo deste texto. O mtodo usado para demonstrar que um problema
indecidvel por reduo de algum problema j sabidamente indecidvel de
forma semelhante s demonstraes de que problemas so N P-difceis.

F Mquinas de Turing

C.9

Ve
rs

A definio de complexidade de tempo para algoritmos dada no incio deste


Captulo menciona quantidade de operaes, que podemos contabilizar nos
algoritmos que desenvolvemos. H uma formalizao diferente para a idia
de Computao, e que normalmente usada em Teoria da Computao e na
discusso de protocolos criptogrficos.
Uma mquina de Turing um computador prototpico, um modelo abstrato
geral de dispositivo de computao. Este dispositivo tem um programa, l e
grava dados de uma fita, e mantm um estado interno.
Mais detalhadamente, a mquina de Turing tem um registrador interno de
estado e uma cabea de leitura e gravao que percorre uma fita com smbolos.
Ao iniciar a operao a mquina estar em um estado denominado inicial. Em
um passo de computao, a mquina:
1. L um smbolo da fita
2. De acordo com o estado atual e o smbolo lido, o programa da mquina
deve ter uma regra que determina:

notas de aula verso 79 - Jernimo C. Pellegrini

382

APNDICE C. COMPLEXIDADE COMPUTACIONAL


i. O smbolo que ser gravado no lugar do anterior.
ii. Para que direo mover a cabea de leitura e gravao (denotamos
esquerda por / e direita por .).

in
ar

iii. Qual ser o prximo estado.

lim

Um exemplo de regra (q2 , a x, q4 , /), que significa se o estado atual q2


e o smbolo lido a, ento mude o estado interno para q4 , escreva x onde
estava o a e mova a cabea para a esquerda.
A Figura a seguir mostra o diagrama de uma mquina de Turing em execuo
seu estado interno q3 e sua cabea de leitura e gravao est sobre uma clula
da fita onde h o smbolo c. O programa (funo de transio) da mquina
no mostrado.

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 .

Definio C.51 (Mquina de Turing). Uma mquina de Turing definida


formalmente como uma tupla (Q, Q0 , QA , qR , , ), onde
Q = {q1 , q2 , q3 , qk } o conjunto (finito) de estados em que a mquina
pode estar;

q0 Q o estado inicial;

5 Na

verdade, o leitor familiarizado com Linguagens Formais reconhecer que esta mquina
de Turing simula um autmato finito.

notas de aula verso 79 - Jernimo C. Pellegrini

C.9. F MQUINAS DE TURING

383

QA , QR Q so os estados de aceitao e rejeio. A mquina pra de


computar ao entrar em um destes estados;

in
ar

o alfabeto da mquina. Cada smbolo s pode estar na fita antes


da mquina comear a operar, ou pode tambm ser escrito pela mquina
no curso da operao;
: Q Q {/, .} a funo de transio que, dados o estado
atual e o smbolo na posio onde aponta a cabea de leitura e gravao,
determina o prximo estado, o smbolo a ser gravado e a direo para a
qual a cabea deve se mover.

lim

O autmato do exemplo anterior pode ento ser representado como a tupla


(Q, q0 , { q2 } , , , ), onde Q = { q0 , q1 , q2 }, = { 0, 1 } e

(q0 , 1 q1 , 1, .), (q2 , 0 q0 , 0, .),


= (q0 , 0 q2 , 0, .), (q2 , 1 q1 , 1, .), .

(q1 , 1 q1 , 1, .), (q1 , 0 q2 , 0, .)

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.

Definio C.53 (Linguagem Turing-decidvel). Uma linguagem Turing-decidvel


se existe alguma mquina de Turing que a decida, e indecidvel se tal mquina
de Turing no existe.

Ve
rs

As instncias de um problema indecidvel constituem uma linguagem indecidvel.


Exemplo C.54 (Linguagem Turing-decidvel: primos). O conjunto dos nmeros primos uma linguagem Turing-decidvel, porque existe algoritmo que
decide se um nmero n pertence linguagem (e sempre para, independente de
qual seja sua entrada).
Exemplo C.55 (Linguagem Turing-indecidvel: mortalidade de matrizes). Dado
um conjunto de matrizes 3 3, decidir se a matriz zero pode ser obtida multiplicando matrizes do conjunto (com repeties permitidas, e sem limite para a
quantidade de operaes) um problema indecidvel. Em outras palavras, seja
LZ33 a linguagem dos conjuntos de matrizes 3 3 onde se pode obter a matriz
zero por multiplicaes. A linguagem LZ33 no Turing-decidvel.
fcil verificar a validade do Teorema a seguir.

notas de aula verso 79 - Jernimo C. Pellegrini

384

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Teorema C.56. Uma linguagem L decidvel se tanto L como seu complemento so Turing-reconhecveis.

in
ar

Deve estar clara a relao entre mquinas de Turing e a Definio C.30


(linguagem de um problema de deciso).
As mquinas de Turing podem parecer exageradamente simplificadas, mas
exatamente este seu papel: o de servir como modelo terico simples para
uma grande quantidade de dispositivos complexos e bastante diferentes em seus
detalhes. Aceitamos que mquinas de Turing podem realizar as mesmas tarefas
que computadores reais usados na prtica, exceto talvez por um aumento no
tempo de execuo mas no de polinomial para exponencial. Esse na verdade
o que diz a Tese de Church-Turing.

lim

Toda funo que pode ser efetivamente calculada pode ser calculada
por uma mquina de Turing

A definio de efetivamente calculada refere-se a algoritmos e mtodo. Os


cinco pontos a seguir so uma caracterizao de procedimento efetivo.
i) O procedimento descrito em um nmero finito de instrues;

Pr
e

ii) H dispositivos para armazenar e recuperar dados (lpis e papel ou a


memria de um computador) durante a execuo do algoritmo;
iii) As instrues em (i) podem ser seguidas por um agente (uma pessoa),
sem uso de criatividade ou dispositivos adicionais alm dos dispositivos
descritos em (ii);
iv) Os passos de computao so discretos, sem o uso de qualquer dispositivo
analgico;

v) Os passos de computao so determinsticos, sem o uso de dispositivos


aleatreos como dados.

Ve
rs

Vale notar que (v) no conflita com os algoritmos probabilsticos descritos


neste Apndice: na prtica, tais algoritmos so implementados com geradores
pseudoaleatreos (o Captulo 4 dedicado simulao de aleatoriedade em
computadores determinsticos).

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].

notas de aula verso 79 - Jernimo C. Pellegrini

C.9. F MQUINAS DE TURING

385

in
ar

Tcnicas para resoluo de recorrncias no contexto de anlise de algoritmos


so dadas por Cormen e outros [208] e por Graham, Knuth e Patashnik [212].
Sedgewick e Flajolet [213] do uma exposio mais profunda. O assunto tambm
tema da literatura de Anlise Combinatria no livro introdutrio de Plnio
Santos, em Portugus [214] e no de Peter Cameron [215].
O Teorema Mestre normalmente apresentado a estudantes de Cincia da
Computao no incio do curso de Anlise de Algoritmos. Este , na verdade,
um caso particular do Teorema de Akra-Bazzi, que se aplica a recorrncias da
forma
l
X
T (n) = g(n) +
ai T (bi n + hi n)
i=1

Ve
rs

Pr
e

lim

O Teorema de Akra-Bazzi foi demonstrado em 1998 [216].


Uma tcnica importante para anlise de algoritmos que no coberta neste
Apndice a anlise amortizada. O livro de Cormen e outros [208] uma boa
referncia para o assunto.
H tambm tcnicas de projeto de algoritmos no discutidas aqui: algoritmos
gulosos, programao dinmica e backtracking, por exemplo.
No abordamos tambm a anlise de algoritmos paralelos.
O primeiro problema a ser demonstrado N P-completo foi o SAT (satisfatibilidade de frmula booleana) independentemente por Stephen Cook [217]
e Leonid Levin [218]. evidente que a tcnica usada no foi a de escolher
outro problema j sabidamente N P-completo; o leitor interessado no assunto
poder procurar uma demonstrao do Teorema de Cook-Levin nos livros de Sisper [210] e de Hopcroft, Motwani e Ullman [219] ou a prova de N P-completude
do CIRCUIT-SAT no livro de Cormen e outros [208]. Garey e Johnson ilustram
redues usando a tcnica de projeto de componentes [220]. A demonstrao de que TETRIS N P-difcil foi dada por Demaine, Hohenberger e LibenNowell [221, 222].
H, alm de P e N P, diversas outras classes de complexidade. Muitas delas
so definidas em termos de diferentes propriedades dos algoritmos analisados
(requisitos de espao, possibilidade de paralelizao, por exemplo). O livro de
Garey e Johnson [220] foi o primeiro livro publicado sobre classes de complexidade. Alm de ser uma excelente introduo ao assunto, traz um catlogo bsico
de problemas N P-completos. Um catlogo mais atual est no livro de Ausiello
e outros [223]. Livros que tratam de Complexidade Computacional incluem o
de Arora e Barak [129], o de Papadimitriou [224], o de Immerman [225] e o de
Goldreich [226].
Algoritmos aproximados (ou de aproximao) so uma das maneiras de lidar com problemas N P-difceis; o livro de Vazirani [227] trata destes algoritmos,
e o handbook organizado por Gonzalez cobre o assunto em maior exausto [228].
Introdues mais curtas e simples so normalmente includas em livros sobre
Complexidade Computacional, como o de Papadimitriou e Vazirani [125] e o de
Cormen e outros [208]. O Captulo dezesseis do livro de Korte e Vygen [229]
compacto, porm mais denso que as introdues dos outros dois livros. Em
Portugus h o livro de Carvalho e outros [230]. A tese de doutorado de Viggo

notas de aula verso 79 - Jernimo C. Pellegrini

386

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Kann [231] tambm trata de algoritmos aproximados, de maneira bastante detalhada.

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

O livro de Martin Davis [238] d uma excelente introduo a Mquinas de


Turing. O livro de Nigel Cutland [239] expe computabilidade usando funes
recursivas. Um excelente livro, avanado mas j bastante antigo, sobre funes
recursivas o de Hartley Rogers [240], que d tambm uma breve mas excelente
introduo tese de Church-Turing. O livro de Barry Cooper [241], tambm
abordando tpicos avanados, mais atual (mas no substitui o de Rogers
ambos se complementam). Uma coletnea de reprodues de artigos histricos
foi organizada por Martin Davis [242].
H muitos bons livros abordando Linguagens Formais. Dentre os introdutrios destacamos o de Michael Sipser [210] e o de John Hopcroft, Rajeev Motwani
e Jeffrey Ullman [243]. O livro de Jeffrey Shallit, para estudo avanado, muito
bom [244].
Grafos so definidos en passant na Seo C.2. Para uma introduo e referncia Teoria dos Grafos, o livro de Adrian Bondy e U. S. R. Murty6 [245]
muito muito bom. O livro de Bla Bollobs [246] tambm muito bom, com
uma perspectiva um tanto diferente. Outra boa introduo dada no livro de
John Harris, Jeffrey Hirst e Michael Mossinghoff [247].

6 Uppaluri

Siva Ramachandra Murty, que prefere usar U. S. R. Murty.

notas de aula verso 79 - Jernimo C. Pellegrini

C.9. F MQUINAS DE TURING

387

Exerccios
Ex. 197 Prove a Proposio C.2.

in
ar

Ex. 198 Resolva as recorrncias.


a) T (n) = 2T (n/3)
b) T (n) = T (n/2) + n/2
c) T (n) = T (log(n)) + n
d) T (n) = T (n/2) + n2
e) T (n) = 3T (n/4) + 1

lim

f) T (n) = T (n/2) + n

g) T (n) = T (n/2) + n

h) T (n) = T ( n) + 1

Ex. 199 Analise a complexidade de tempo do algoritmo usual (usado com


lpis e papel) para multiplicao de polinmios.

Pr
e

Ex. 200 Analise a complexidade de tempo do algoritmo para clculo de


determinante de matrizes usando cofatores e menores complementares.
Ex. 201 Tente conseguir um algoritmo para clculo de determinante com
complexidade assinttica de tempo melhor que a do mtodo ingnuo do Exerccio 200
Ex. 202 Qual a complexidade de tempo do algoritmo usual de diviso
para dois inteiros que possam ser representados com k dgitos decimais? E se
soubermos apenas que os nmeros podem ser representados com k bits?

Ex. 203 Determine a complexidade de tempo do mtodo da eliminao de


Gauss para soluo de sistemas de equaes lineares.

Ve
rs

Ex. 204 Determine a complexidade de tempo do mtodo de Newton-Raphson


para obteno de raiz de funes reais.
Ex. 205 Torres de Hani um problema bastante conhecido. trs hastes,
duas vazias e uma com vrios discos dispostos de forma que o maior fica na base
e o menor no topo.
O problema consiste em determinar como mover todos os discos de uma haste
para outra, respeitando as seguintes regras:
i) Um nico disco pode ser movido de uma haste a outra em cada iterao.

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).

iii) Um disco menor nunca pode ficar embaixo de um maior.

Considere o seguinte algoritmo que move n discos da hasta DE para a haste


P ARA, usando a haste AU X como auxiliar, e responda as duas questes.

notas de aula verso 79 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

hanoi(n, DE, P ARA, AU X):


se n 6= 0
hanoi(n 1, DE, AU X, P ARA)
mostre DE P ARA
hanoi(n 1, AU X, P ARA, DE)

in
ar

388

a) O algoritmo mostrado realmente encontra a soluo? (Prove que sim ou


que no)

b) Determine a complexidade de tempo do algoritmo do item (a), independente de sua corretude.

lim

Ex. 206 Considere a seguinte definio de o-pequeno:


Definio C.57 (Notao assinttica o-pequeno). Sejam f (x) e g(x) duas funes de uma varivel. Dizemos que f (x) o(g(x)) se e somente se
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

notas de aula verso 79 - Jernimo C. Pellegrini

C.9. F MQUINAS DE TURING

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.

Ex. 217 Provamos (Teorema C.38) somente que CONJUNTO-DOMINANTE


N P-difcil. Prove tambm que o problema est em N P.
Ex. 218 Prove que o seguinte problema N P-completo
ARVORE-DE-STEINER: Dado um grafo G = (V, E), um subconjunto R de
V e um inteiro positivo k < |V |, determine se h um subgrafo de G que seja
rvore contendo todos os vrtices de R e com no mximo k arestas.

lim

Ex. 219 Prove que o problema a seguir N P-difcil.


SOBREVIVENCIA-DE-REDE: Um grafo G = (V, E), uma probabilidade
(racional) de falha p(x) para cada vrtice e cada aresta, e um nmero racional
q 1. Presuma que as falhas em arestas e vrtices so independentes. Seja f a
probabilidade de que, para todos (u, v) E, pelo menos um dentre u, v e (u, v)
falhar. Determinar se q f .

Pr
e

Ex. 220 Prove que CIRCUITO-HAMILTONIANO N P-completo.


Ex. 221 Demonstre o Teorema C.43. Dica: tente mostrar que seria possvel
usar a aproximao absoluta do problema para resolv-lo de maneira exata o
que implicaria em P = N P.
Ex. 222 Mostre um grafo para o qual o algoritmo aprox_vertex_cover
retorna uma soluo exatamente duas vezes maior que a tima.

Ex. 223 Demonstre o Teorema C.45

Ve
rs

Ex. 224 Prove que as seguintes modificaes em mquinas de Turing no


mudam seu poder computacional (ou seja, mostre que possvel simular estas
novas mquinas em uma mquina de Turing comum):
a) Muitas fitas: a cada passo, a mquina de Turing pode ler e escrever em
uma de duas fitas.

b) Fita multidimensional: a mquina de Turing passa a poder ler e escrever


em um espao de n dimenses, movendo-se em 2n direes.
c) Acesso aleatrio: modifica-se a mquina de Turing de forma que ela possa,
a cada passo, posicionar a cabea de leitura e gravao em uma posio
definida por um ndice.

d) Fita infinita em duas direes: a cabea de leitura e gravao pode andar


para a direita ou para a esquerda, sem que encontre qualquer limite.

Ex. 225 Porqu, ao definir a classe PSPACE, dissemos que no faz diferena se o problema pode ser resolvido por algoritmo determinstico ou no-

notas de aula verso 79 - Jernimo C. Pellegrini

390

APNDICE C. COMPLEXIDADE COMPUTACIONAL

determinstico?
Ex. 226 Prove o Teorema C.29.

in
ar

Ex. 227 No Exemplo C.55, declaramos que o problema da mortalidade de


matrizes 3 3 indecidvel, e pelo Teorema C.56 a linguagem ou seu complemento no deve ser Turing-reconhecvel. Determine qual delas.

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

notas de aula verso 79 - Jernimo C. Pellegrini

D.1

Pr
e

A transformada de Fourier permite decompor uma funo em formas de onda


simples. H um enorme nmero de aplicaes da transformada de Fourier em
Fsica e Engenharia; este Apndice contm uma breve descrio de algumas
transformadas discretas usadas no texto.

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

notas de aula verso 79 - Jernimo C. Pellegrini

392

APNDICE D. TRANSFORMADA DE FOURIER

se |x| > 1/2


0
s(x) = 1/2 se |x| = 1/2

1
se |x| < 1/2.

in
ar

Considere a funo retngulo,

As Figuras a seguir mostram a aproximao sucessiva de s usando primeiro uma


frequncia apenas, depois duas, quatro e finalmente dezenove frequncias.

Pr
e

lim

s(x) = cos(2x)

Ve
rs

s(x) = cos(2x) (1/3) cos(6x)

s(x) = cos(2x) (1/3) cos(6x) + (1/5) cos(10x) (1/7) cos(14x)

notas de aula verso 79 - Jernimo C. Pellegrini

D.1. TRANSFORMADA DE FOURIER

393

in
ar

s(x) = cos(2x) (1/3) cos(6x) + + (1/37) cos(74x) (1/39) cos(78x)

lim

Quando a funo no peridica necessrio usar todas as frequncias para


represent-la, e portanto a transformada de Fourier ser uma funo contnua
no domnio da frequncia.
A transformada de Fourier de uma funo f (x) a integral

f (x)(cos(2kx) isen (2kx)) dx

F (k) =

Pr
e

Se usarmos a frmula de Euler, ei = cos + isen , chegaremos a uma forma


mais resumida para a transformada de Fourier. Esta a forma normalmente
usada.
Z

f (x)e2ikx dx

F (k) =

A transformada inversa de Fourier


Z
f (x) =
F (k)e2ikx dk

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).

Reescrevendo este nmero em forma polar obtemos


F (k) = |F (k)| + ei(k) ,

notas de aula verso 79 - Jernimo C. Pellegrini

394

APNDICE D. TRANSFORMADA DE FOURIER

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 )

onde a amplitude, a frequncia e o ngulo de fase.


H alguns grficos interessantes que podemos plotar para a transformada de
Fourier de uma funo (todos tendo a frequncia como domnio): a amplitude,
o ngulo de fase e o espectro de potncia, dado por |F (k)|2 = R(k)2 + I(k)2 .

Transformada discreta de Fourier

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

Cada um dos coeficientes Fk da DFT representa uma senoide; a soma de todas


as N senoides coincidir com a funo f nos pontos dados.
Uma troca de variveis pode tornar a notao um pouco menos carregada:
se fizermos N = e(2i)/N , a DFT pode ser escrita como
Fn =

N
1
X

nk
fk N
,

(D.1)

k=0

observando que e(2i)/N uma raiz da unidade para C.


evidente que a DFT linear: podemos reescrev-la tambm na forma de
ab
matriz, onde o elemento (a, b) N
(na matriz a seguir omitimos o subscrito N
em N para evitar sobrecarregar a notao):

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

notas de aula verso 79 - Jernimo C. Pellegrini

D.2. TRANSFORMADA DISCRETA DE FOURIER

D.2.1

395

Transformada rpida de Fourier

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

H um algoritmo melhor, com complexidade O(n log(n)), conhecido como


transformada rpida de Fourier (ou FFT, Fast Fourier Transform).
Comeamos o desenvolvimento da FFT dividindo a o clculo de Fn , dado
pela soma na Equao D.1 em duas partes: uma para os ndices mpares e outra
para os ndices pares.
2kn
(f2k )N

(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 , . . .).

A FFT calculada recursivamente para cada um destes vetores, e depois F


construdo usando f 0 e f 1 .

fft(f, ):
N tamanho(f )

notas de aula verso 79 - Jernimo C. Pellegrini

396

APNDICE D. TRANSFORMADA DE FOURIER

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

As chamadas recursivas a fft usam 2 porque esta uma raiz da unidade


para N/2. Aps o clculo das duas transformadas de tamanho N/2, o algoritmo
combina os dois resultados usando o seguinte fato: para qualquer N = 2k , as
potncias de so divididas em duas sequencias iguais a no ser pelo sinal. Por
exemplo, para N = 8, temos

i i

i
i

i i.

=
=
=

Ve
rs

Isto imediatamente claro quando visualizado no plano complexo.

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.

notas de aula verso 79 - Jernimo C. Pellegrini

D.3. TRANSFORMADA DO COSSENO

397

Teorema D.1. O algoritmo FFT tem complexidade O(n log(n)).

T (n) = 2T (n/2) + n.

in
ar

Demonstrao. Basta verificar que h duas chamadas recursivas, e cada uma


resolve um problema de tamanho n/2; alm delas, h tambm um lao de complexidade O(n). A relao de recorrncia que d o tempo de execuo portanto

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

Esta demonstrao presume que a exponenciao de (que complexo)


no tem impacto sobre o tempo de execuo do programa. Como as potencias
de so usadas em sequncia ( 0 , 1 , . . ., pode-se usar uma nica varivel e
multiplic-la por a cada iterao do lao for.

Transformada do Cosseno

Pr
e

A transformada do cosseno um caso especial da transformada de Fourier. Se


a f (x) uma funo par, sua transformada de Fourier ser composta apenas de
cossenoides, porque a integral das senoides, que calculada de a +, ser
zero:
Z


F (k) =
f (x) cos(2kx) isen (2kx) dx

Z
Z
=
f (x) cos(2kx) dx
f (x)isen (2kx) dx

Z
=
f (x) cos(2kx) dx.

Ve
rs

Assim, a transformada do cosseno dada por


Z
F (k) =
f (x) cos(2kx) dx.

Uma observao importante que podemos fazer imediatamente que se f (x)


definida somente sobre nmeros reais, a transformada do cosseno tambm ser
real.
Da mesma forma que h diversas maneiras de definir a transformada de
Fourier, h tambm variaes para a transformada do cosseno.
A transformada discreta do cosseno (DCT) conceitualmente semelhante
transformada discreta de Fourier: uma sequncia de n pontos decomposta em
n funes peridicas mas a DCT decompe apenas em cossenoides, e quando
o domnio real, o contradomnio tambm real. A variante apresentada aqui
conhecida como DCT-II:


N
1
X
k(n + 12 )
Xk =
xn cos
N
n=0

notas de aula verso 79 - Jernimo C. Pellegrini

398

APNDICE D. TRANSFORMADA DE FOURIER

A transformada inversa, conhecida como DCT-III, :




N
1
X
n(k + 21 )
1
X0 +
Xn cos
2
N
n=1

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

Compresso de imagens: JPG

Notas

Pr
e

A transformada do cosseno parte essencial do mtodo de compresso usado


em imagens JPG. A DCT mais usada para compresso de imagens porque
concentra mais informao nas frequncias mais baixas.

Ve
rs

A possibilidade de representao de funes arbitrrias como somas de senoides


e cossenoides foi explorada por Joseph Fourier, quando estudava conduo do
calor1 .
O algoritmo para a transformada rpida de Fourier foi exposto em 1965 por
James Cooley e John Tuckey [249] mas j aparecia, ainda que sem destaque,
em obras anteriores (como em um trabalho de Gauss em 1905, por exemplo).
Aps a exposio de Cooley e Tuckey surgiu um grande nmero de aplicaes
da DFT em Engenharia e Fsica, sendo comum que se diga que aquele trabalho
possibilitou uma drstico desenvolvimento de diversas tecnologias. A histria
da FFT esboada muito brevemente no primeiro Captulo do livro de Briggs
e Henson [250], e registrada de maneira detalhada em um artigo de Heideman,
Johnson e Burrus [251].
Os livros de Brigham [252] de Briggs e Henson [250] cobrem a teoria e usos
da transformada discreta de Fourier.
Descries da transformada rpida de Fourier aparecem em diversos livros.
Destacamos, alm dos j mencionados, os de Cormen, Leiserson, Rivest e Stein [208]
(que apresenta diversas otimizaes), de Press, Teukilsky, Vetterling e Flannery [253] e Berman e Paul [254] (onde discutida uma verso paralela do
algoritmo).
1 Em seu trabalho Teoria Analtica do Calor [248] publicado em 1822, Fourier introduziu
contribuies importantssimas Fsica e Matemtica.

notas de aula verso 79 - Jernimo C. Pellegrini

D.3. TRANSFORMADA DO COSSENO

399

Z
T f (x) =

K(x, t)f (t)dt,


a

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

Ex. 229 Determine a transformada de Fourier de:

Ex. 230 Determine a transformada inversa de Fourier de:


sen (2f T )
2f

b) H(f ) =

cos(2(1f )
2f

a) H(f ) =

Ve
rs

Ex. 231 Aplique a FFT (sem ajuda de computador, usando o algoritmo


em lpis e papel) na sequinte sequncia de pontos:
(0, 0.5, 50, 4)

Ex. 232 Em nossa exposio da FFT, presumimos que N potncia de


dois. Mostre como adaptar o algoritmo para o caso geral.
Ex. 233 Partindo da exposio dada neste Apndice, tente reescrever o desenvolvimento do algoritmo para a FFT usando apenas a formulao matricial.
Ex. 234 Implemente a FFT.

notas de aula verso 79 - Jernimo C. Pellegrini

APNDICE D. TRANSFORMADA DE FOURIER

Ve
rs

Pr
e

lim

in
ar

400

Apndice E

lim

Descrio Detalhada de
Construes

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

DES

E.1

Pr
e

Este Apndice contm descries detalhadas de algoritmos que so descritos


superficialmente no texto.

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

O DES uma cifra de Feistel. A Figura a seguir ilustra o funcionamento da


cifra.
401

notas de aula verso 79 - Jernimo C. Pellegrini

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

Pr
e

lim

in
ar

402

IP uma permutao inicial, aplicada antes da primeira rodada. Sua


inversa, IP IN V , aplicada depois da ltima rodada.

Ve
rs

KS o escalonador de chaves. De uma chave com 56 bits so derivadas


desesseis chaves de 48 bits.

L e R representam as metades esquerda e direita dos bits sendo transformados

F a funo interna da rede.

Estes componentes so descritos em detalhes a seguir.

notas de aula verso 79 - Jernimo C. Pellegrini

E.1. DES

Permutao inicial e sua inversa

A permutao inicial (P I) dada pela matriz a seguir.

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

A funo interna F expande sua entrada de 32 bits para 48 bits, adicionando


redundncia. Depois faz ou exclusivo com a chave da rodada (que tem 48 bits);
divide os 48 bits em oito partes de seis bits, que so usadas como entrada para
oito S-boxes. Estas S-boxes tem sada de quatro bits cada, reduzindo novamente
o nmero de bits para 32. Finalmente, realiza uma permutao nos 32 bits
restantes.

notas de aula verso 79 - Jernimo C. Pellegrini

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

Pr
e

lim

in
ar

404

Ve
rs

Expanso de bits

A funo de expanso E aplicada na sequncia de 32 bits da mensagem,


expandindo-a para 48 bits. Esta funo descrita pela matriz a seguir.

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

notas de aula verso 79 - Jernimo C. Pellegrini

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

A permutao P realizada aps a


matriz.

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

As prximas tabelas descrevem as oito S-boxes. S1:

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

notas de aula verso 79 - Jernimo C. Pellegrini

406

APNDICE E. DESCRIO DETALHADA DE CONSTRUES


S6:

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

O escalonamento de chaves do DES inicia com a aplicao de uma permutao


P C 1, dando origem a uma sequncia de bits, que dividimos em duas metades
C0 e D0 . A permutao P C 1 dada pela matriz a seguir.

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

notas de aula verso 79 - Jernimo C. Pellegrini

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

Tanto C0 como D0 so rotacionados para a esquerda. A quantidade de bits


rotacionadosdepende da iterao, conforme a tabela a seguir.

Assim, aps a primeira iterao rotacionam-se C0 e D0 um bit para a direita;


na segunda iterao, um bit, na terceira, dois bits, e assim por diante.

Importante: os bits so rotacionados, e no apenas deslocados. Assim, os bits


que estavam direita so reinseridos na esquerda. Por exemplo, 1000011 <<
2 = 0001110.

Ve
rs

Em cada iterao, aplica-se a permutao PC-2, para obter a i-sima chave.

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

A Figura a seguir ilustra o processo de escalonamento de chaves do DES.

notas de aula verso 79 - Jernimo C. Pellegrini

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

Pr
e

lim

in
ar

408

AES

E.2

Quantidade de rodadas

Ve
rs

E.2.1

A quantidade de rodadas depende dos tamanhos do bloco e da chave.


Nb o tamanho do bloco, dividido por 32
Nk o tamanho da chave, dividido por 32

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

notas de aula verso 79 - Jernimo C. Pellegrini

409

E.2.2

Escalonamento de chaves

E.2.3

Encriptao

in
ar

E.2. AES

A tabela para SubBytes apresentada a seguir, com valores em hexadecimal.


O byte xy trocado pela entrada na linha x e coluna y da matriz.

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

Por exemplo, e4 substitudo por 69 .

Em ShiftRows, os deslocamentos das linhas podem ter tamanhos diferentes,


dependendo do tamanho do bloco. Na tabela a seguir, Ci a i-sima linha, e
Nb o tamanho do bloco dividido por 32.

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

notas de aula verso 79 - Jernimo C. Pellegrini

410

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

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

Ex. 235 Implemente as cifras e teste-as. Compare o desempenho de sua


implementao com outras implementaes.
Ex. 236 Implemente verses simplificadas do DES e analise a distribuio
dos bits de sada quando a entrada estruturada (todos bits zero ou todos
uns, ou metade dos bits iguais a zero etc). Sugestes de verses simplificadas
do DES so:
a) Use poucas rodadas (de uma at quatro).

b) Troque o passo de substituio.


c) Elimine a permutao P .

d) Faa apenas permutaes, sem usar as S-boxes.


e) Elimine a rede de Feistel e use a funo interna com blocos de 32 bits.

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

Apndice F

lim

Respostas e Dicas

Este Apndice traz respostas e dicas para alguns dos exerccios propostos no
texto.

Pr
e

Resp. (Ex. 3) Para calcular a probabilidade de sucesso de A neste jogo,


tratamos dois casos:
i) No sorteio inicial, A consegue cinco cartas com o mesmo naipe.
ii) No sorteio inicial, A consegue exatamente quatro cartas com o mesmo
naipe.

Tratamos primeiro o caso (i). A probabilidade de A conseguir cinco cartas do


mesmo naipe inicialmente

4 13
5

52 .
5

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

No caso (ii), a probabilidade de A obter exatamente quatro cartas do mesmo


naipe

4 13
4 (48 9)

.
52
48
4
Assim, a probabilidade de sucesso de A no experimento


4 13
4 13
8
1397
5
4 (48 9)


=
52 47 +
52
48
156604
5
4
0.0089205.
411

notas de aula verso 79 - Jernimo C. Pellegrini

412

APNDICE F. RESPOSTAS E DICAS

Dizemos ento que

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).

No necessrio definir experimentos para descrever fcil de computar, j que


ali no h um adversrio envolvido.

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).

Resp. (Ex. 26) (i) (k!k

(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.

notas de aula verso 79 - Jernimo C. Pellegrini

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

1 (a b||a) = a||a b a = a||b.

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).

Resp. (Ex. 73) Estritamente falando, no se deve considerar uma funo


com ambas as propriedades em uma demonstrao, porque o homomorfismo
implica que a funo distinguvel de aleatrea: se for verdade que f (x + y) =

notas de aula verso 79 - Jernimo C. Pellegrini

414

APNDICE F. RESPOSTAS E DICAS

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 .

Resp. (Ex. 108) O simulador S mostrado a seguir produz a transcrio de


uma interao.

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

notas de aula verso 79 - Jernimo C. Pellegrini

415
escreva (x, b, r)

in
ar

A distribuio de x, b e r que aparecem na transcrio idntica que teriam


em uma execuo hP, V i(N, v), com P autntico.

Resp. (Ex. 113) Lembre-se de que as operaes so todas mdulo n. Mesmo


que seja possvel implementar algumas das operaes usando adio e multiplicao, interessante encontrar algoritmos eficientes para faz-lo.

lim

Resp. (Ex. 121) Use tentativa-e-erro, e lembre da probabilidade de um


nmero entre 2 e n ter smbolo de Jacobi +1.
Resp. (Ex. 122) Lembre-se de que o criptossistema de Cocks presume que
a funo um orculo aleatreo. Qualquer funo usada deve mapear cadeias
em Jn com distrbuio uniforme.

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.

Resp. (Ex. 141) Ao recombinar as partilhas, se x participantes contribuem


com 1 para uma posio de um bloco, e k x contribuem com 0, ento o tom
de cinza deve ser x. Como x pode variar de zero a k, temos que k pode ser
no mximo igual quantidade de tons de cinza diferentes que puderem ser
representados.

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.

Resp. (Ex. 147) A encriptao bit-a-bit, exigindo um pad do tamanho


da mensagem. Alm disso, B precisa tomar a iniciativa de enviar r.

Resp. (Ex. 155) Pode-se pedir a assinatura de uma mensagem encriptada,


obtendo assim o texto claro.

notas de aula verso 79 - Jernimo C. Pellegrini

416

APNDICE F. RESPOSTAS E DICAS


1

Resp. (Ex. 159) RSA: Encsk (Encpk (x)) = (xa )a

= x.

Oh! maravilha!
Que adorveis criaturas temos aqui!
Como bela a espcie humana!
OH ADMIRVEL MUNDO NOVO
que possui gente assim!

in
ar

Resp. (Ex. 163) (c) Ctala. O texto claro da pea A Tempestade, de


Shakespeare (reproduzido em Admirvel Mundo Novo, de Aldous Huxley):

(d) Cifra de Vigenre. O texto claro um trecho de O sol nascer, do Cartola:

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

(e) Cifra de Csar. O Trabalho duro recompensado no futuro. A preguica


recompensada imediatamente
(f) Atbash. Trecho de Alegria, Alegria de Caetano Veloso:
Por entre fotos e nomes
Sem livros e sem fuzil

Resp. (Ex. 165) Comece supondo que M tenha inversa M 1 , e observe


que
det M det M 1 = det(M M 1) = det I = 1.

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 ).

notas de aula verso 79 - Jernimo C. Pellegrini

417
Resp. (Ex. 175) 1/2k .

in
ar

Resp. (Ex. 176) No (no sendo bijees, no haver inversa).

Resp. (Ex. 177) Sim: a identidade a cadeia de n zeros; a operao de


ou exclusivo associativa; e cada elemento tem um inverso, que ele mesmo.

lim

Resp. (Ex. 178) No: nem todo polinmio tem como inversa outro polinmio.

Resp. (Ex. 180) Suponha que a ordem de um grupo p, primo. A ordem


de qualquer elemento a do grupo deve ser 1 ou p: temos que a1 = 1 ou ap = 1.
No h como haver ak = 1, com k 6= p, porque neste caso k | p e p no
seria primo. Observe tambm que o nico elemento de ordem 1 a identidade.
Portanto, todos os outros elementos do grupo tem ordem p (e geram G).

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.

Resp. (Ex. 186) No, porque no vale a distributividade de nenhuma delas


sobre a outra.

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. 201) Use decomposio LU .


Resp. (Ex. 205) (a) Sim (use induo). (b) O(2n ).

Resp. (Ex. 206) Para provar que a recproca no vale, escolha f (x) =
cg(x), com alguma constante c.

notas de aula verso 79 - Jernimo C. Pellegrini

418

APNDICE F. RESPOSTAS E DICAS

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

Resp. (Ex. 214) Faa uma reduo de COBERTURA-POR-VRTICES,


construindo o grafo dual de G.

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.

Resp. (Ex. 218) Use o problema X3C (COBERTURA-EXATA-POR-3CONJUNTOS).

Ve
rs

Resp. (Ex. 219) Faa uma reduo de COBERTURA-POR-VERTICES.

Resp. (Ex. 220) (Dica apenas) Faa reduo de COBERTURA-POR-VERTICES.


Construa o grafo a seguir para cada aresta { u, v } em G.
uv1 uv2 uv3 uv4 uv5 uv6

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

notas de aula verso 79 - Jernimo C. Pellegrini

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

Crie uma nova instncia, multiplicando os valores vi por k + 1. As solues


factveis para esta instncia so as mesmas de antes.

Como qualquer soluo ter valor mltiplo de k + 1, a nica soluo que


distante no mximo k da tima ela mesma.

lim

Resp. (Ex. 222) V = { u, v, w }, E = { { u, v } , { u, w } }. O algoritmo


inclui dois vrtices por vez na cobertura, e o grafo mostrado pode ser coberto
com um nico vrtice.

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

Resp. (Ex. 225) A quantidade de memria usada pelo algoritmo no muda


dependendo dele ser determinstico ou no.
Resp. (Ex. 226) (Rascunho) Seja A um algoritmo (determinstico ou no)
que use tempo polinomial no tamanho da entrada. Ento A no ter tempo
suficiente para usar memria exponencial no tamanho da entrada.

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).

notas de aula verso 79 - Jernimo C. Pellegrini

APNDICE F. RESPOSTAS E DICAS

Ve
rs

Pr
e

lim

in
ar

420

Referncias Bibliogrficas

in
ar

notas de aula verso 79 - Jernimo C. Pellegrini

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

[4] SHANNON, C.; WEAVER, W. A Mathematical Theory of Communication.


[S.l.]: Univ of Illinois Press, 1949. ISBN 0-252-72548-4. 29
[5] SHANNON, C. E. Communication theory of secrecy systems. Bell Systems
Theoretical Journal, v. 28, n. 4, p. 656=715, 1949. 29
[6] COVER, T. M.; THOMAS, J. A. Elements of information theory. [S.l.]:
Wiley-Interscience, 2006. ISBN 0471241954. 29

[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

[11] GOLDREICH, O. A Primer on Pseudorandom Generators. [S.l.]: American


Mathematical Society, 2010. ISBN 9780821851920. 56

[12] LUBY, M. Pseudorandomness and Cryptographic Applications. [S.l.]: Princeton University Press, 1996. ISBN 9780691025469. 56
421

notas de aula verso 79 - Jernimo C. Pellegrini

422

REFERNCIAS BIBLIOGRFICAS

[13] KRANAKIS, E. Primality and Cryptography. [S.l.]: Wiley, 1991. ISBN


0471909343. 56

in
ar

[14] SHOUP, V. A Computational Introduction to Number Theory and Algebra.


[S.l.]: Cambrige, 2005. ISBN 0521851548. 56, 238, 348

[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

[19] LIDL, R.; NIEDERREITER, H. Finite Fields. [S.l.]: Cambridge University


Press, 1997. ISBN 0-521-39231-4. 56, 348
[20] GOLOMB, S. W.; GONG, G. Signal Design for Good Correlation. [S.l.]:
Cambridge University Press, 2005. ISBN 0-521-82104-5. 56
[21] NIST. A Statistical Test Suite for Random and Pseudorandom Number
Generators for Cryptographic Applications. 2010. 56
[22] GOLDREICH, O.; GOLDWASSER, S.; MICALI, S. How to construct random functions. Journal of the ACM, v. 33, n. 4, p. 210217, 1986. 81

Ve
rs

[23] LUBY, M.; RACKOFF, C. How to construct pseudorandom permutations


from pseudorandom functions. SIAM Journal on Computing, v. 17, n. 2, 1988.
81
[24] DAEMEN, J.; RIJMEN, V. The Design of Rijndael. [S.l.]: Springer, 2002.
ISBN 3-540-42580-2. 81
[25] NIST. Data Encryption Standard (DES). 1999. 81
[26] NIST. Announcing the Advanced Encryption Standard (AES). 2001. 81
[27] SCHNEIER, B. Applied Cryptography: Protocols, Algorithms, and Source
Code in C. 2. ed. New York: John Wiley and Sons, 1996. 81
[28] JUNOD, P.; VAUDENAY, S. Fox: a new family of block ciphers. In: Selected Areas in Cryptography. [S.l.: s.n.], 2004. 82
[29] AOKI, K. et al. Specification of Camellia a 128-bit Block Cipher. 2001.
Disponibilizado pela Mitsubishi Corporation. 82

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

423

[30] SCHNEIER, B. Description of a new variable-length key, 64-bit block cipher


(blowfish). In: Proceedings of Fast Software Encryption. [S.l.: s.n.], 1994. 82

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

[34] STINSON, D. R. Cryptography: theory and practice. 3. ed. [S.l.]: Chapman


& Hall/CRC, 2006. ISBN 1-58488-508-4. 107

[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

Springer, 2009. ISBN

[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

[42] SCHNEIER, B. Self-study course in block cipher cryptanalysis. Cryptologia,


v. 24, n. 1, p. 1834, 2000. Tambm disponvel em http://www.schneier.
com/paper-self-study.html. 108
[43] NELSON, V. P. et al. Digital Logic Circuit Analysis and Design. [S.l.]:
Prentice Hall, 1995. ISBN 0-13-463894-8. 108
[44] CAPUANO, F. G.; IDOETA, I. V. Elementos de Eletrnica Digital. [S.l.]:
rica, 2007. ISBN 9788571940192. 108
[45] CHAUM, D.; HEIJST, E. van; PFITZMANN, B. Cryptographically string
undeniable signatures, unconditionally secure for the signer. In: Advances in
Cryptology CRYPTO91. [S.l.]: Springer-Verlag, 1992. 123

notas de aula verso 79 - Jernimo C. Pellegrini

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

[49] BELLARE, M.; ROGAWAY, P. Random oracles are practical: a paradigm


for designing efficient protocols. In: Proceedings of the 1st ACM Conference
on Computer and Communications Security. [S.l.: s.n.], 1993. 123
[50] DIFFIE, W.; HELLMAN, M. New directions in cryptography. IEEE Transactions on Information Theory, v. 22, n. 6, p. 644654, 1976. 137, 165

Pr
e

[51] ELGAMAL, T. A public-key cryptosystem and a signature scheme based


on discrete logarithms. IEEE Transactions on Information Theory, v. 31, n. 4,
p. 469472, 1985. 152
[52] RABIN, M. Digitalized Signatures and Public-Key Functions as Intractable as Factorization. 1979. MIT Laboratory for Computer Science Technical
Report: MIT/LCS/TR-212. 152
[53] RIVEST, R.; SHAMIR, A.; ADLEMAN, L. A method for obtaining digital
signatures and public-key cryptosystems. Communications of the ACM, v. 21,
n. 2, p. 120126, 1978. 152

[54] TALBOT, J.; WELSH, D. Complexity and Cryptography: an introduction.


[S.l.]: Cambridge University Press, 2006. ISBN 0-521-61771-5. 152

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

[57] BELLARE, M.; ROGAWAY, P. Optimal asymmetric encryption how to


encrypt with rsa. In: Advances in Cryptology - Eurocrypt 94. [S.l.: s.n.], 1995.
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

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

425

[61] LAMPORT, L. Constructing digital signatures from a one-way function.


1979. 165

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

[64] SHAMIR, A. How to share a secret. Communications of the ACM, v. 22,


n. 11, p. 612613, 1979. 182, 195

lim

[65] BLAKLEY, G. R. Safeguarding cryptographic keys. In: Proceedings of the


National Computer Conference. [S.l.: s.n.], 1979. p. 313317. 182, 195

[66] FRANCO, N. M. B. Clculo Numrico. [S.l.]: Prentice Hall, 2006. ISBN


9788576050872. 195

Pr
e

[67] SMART, N. Cryptography: an introduction. [S.l.]: Mcgraw-Hill, 2004. ISBN


978-0077099879. 195
[68] BENALOH, J.; LEICHTER, J. Generalized secret sharing and monotone
functions. In: Advances in Cryptology - CRYPT0 88. [S.l.: s.n.], 1990. p.
2735. 195
[69] ITO, M.; SAITO, A.; NISHIZEKI, T. Secret sharing scheme realizing general access structure. In: Proc. Global Telecoms. Conference. [S.l.: s.n.], 1987.
p. 99102. 195

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

notas de aula verso 79 - Jernimo C. Pellegrini

426

REFERNCIAS BIBLIOGRFICAS

[75] SCHOENMAKERS, B. A simple publicly verifiable secret sharing


scheme and its application to electronic voting. In: Advances in CryptologyCRYPTO 99. [S.l.: s.n.], 1999. p. 148164. 195

in
ar

[76] PEDERSEN, T. A threshold cryptosystem without a trusted party. In:


Eurocrypt 91. [S.l.: s.n.], 1991. p. 522526. 195
[77] GENNARO, R. et al. Secure distributed key generation for discrete-log
based cryptosystems. In: Eurocrypt 99. [S.l.: s.n.], 1999. 195
[78] GOLDWASSER, S.; MICALI, S.; RACKOFF, C. The knowledge complexity of interactive proof-systems. In: Proceedings of the 17th Annual ACM
Symposium on Theory of Computing. [S.l.: s.n.], 1985. p. 365377. 205

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

[81] CRAMER, R. J. F. Modular design of secure, yet practical cryptographic


protocols. Tese (Doutorado) University of Amsterdam, 1996. 205
[82] FIAT, A.; SHAMIR, A. How to prove to yourself: practical solutions to
identification and signature problems. In: Advances in Cryptology (CRYPTO
86). [S.l.: s.n.], 1987. p. 186194. 206
[83] GOLDWASSER, S.; KALAI, Y. T. On the (in)security of the fiat-shamir
paradigm. In: FOCS. [S.l.: s.n.], 2003. 206

[84] KALAI, Y. T. Attacks on the Fiat-Shamir Paradigm and Program Obfuscation. Tese (Doutorado) Massachusetts Institute of Technology, 2006. 206

Ve
rs

[85] RABIN, M. How to exchange secrets by oblivious transfer. 1981. Technical


Report TR-81, Harvard Aiken Computational Laboratory. 208
[86] EVEN, S.; GOLDREICH, O.; LEMPEL, A. A randomized protocol for
signing contracts. In: Proceedings of CRYPTO. [S.l.: s.n.], 1982. 208

[87] CRPEAU, C. Equivalence between two flavours of oblivious transfer. In:


Advances in Cryptology: CRYPTO 87. [S.l.: s.n.], 1988. 208
[88] HAZAY, C.; LINDELL, Y. Efficient Secure Two-Party Protocols: Techniques and Constructions. [S.l.]: Springer, 2010. ISBN 978-3-642-14302-1. 208
[89] YAO, A. C. Protocols for secure computations. In: Foundations of Computer Science. [S.l.: s.n.], 1982. p. 160164. 214
[90] CANETTI, R. Security and composition of multiparty cryptographic protocols. Journal of Cryptology, v. 13, n. 1, p. 143202, 2000. 214

notas de aula verso 79 - Jernimo C. Pellegrini

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

[92] BOGETOFT, P. et al. Multiparty computation goes live. In:


. Berlin,
Heidelberg: Springer-Verlag, 2009. p. 325343. ISBN 978-3-642-03548-7. 214

[93] DAMGRD, I. et al. Asynchronous Multiparty Computation: Theory and


Implementation. 2008. Cryptology ePrint Archive, Report 2008/415. http:
//eprint.iacr.org/. 214

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

[96] MILLER, V. Use of elliptic curves in cryptography. In: Proceedings of


CRYPTO 86. [S.l.: s.n.], 1986. 228
[97] HANKERSON, D. Guide to Elliptic Curve Cryptography. [S.l.]: Springer,
2010. ISBN 1441929290. 228
[98] WASHINGTON, L. Elliptic Curves: Number Theory and Cryptography. 2.
ed. [S.l.]: Chapman&Hall/CRC, 2008. ISBN 1420071467. 228

[99] BLAKE, I.; SEROUSSI, G.; SMART, N. Elliptic Curves in Cryptography.


[S.l.]: Cambridge University Press, 1999. ISBN 0521653746. 228

Ve
rs

[100] COHEN, H. Handbook of Elliptic and Hyperelliptic Curve Cryptography.


[S.l.]: Chapman&Hall/CRC, 2005. ISBN 1584885181. 228
[101] SILVERMAN, J. H.; TATE, J. Rational Points on Eliptic Curves. [S.l.]:
Springer, 1992. ISBN 9780387978253. 228
[102] GOMES, J.; VELHO, L. Fundamentos da Computao Grfica. [S.l.]:
IMPA, 2008. ISBN 978-85-244-0200-5. 228

[103] KOSTRIKIN, A. I.; MANIN, Y. I. Linear Algebra and Geometry. [S.l.]:


CRC Press, 1989. ISBN 2881246834. 228
[104] SIMMONS, G. F. Introduction to Topology and Modern Analysis. [S.l.]:
Krieger, 2003. ISBN 1575242389. 228

[105] POLLARD, J. M. Theorems of factorization and primality testing. Proceedings of the Cambridge Philosophical Society, v. 76, n. 3, p. 521528, 1974.
238

notas de aula verso 79 - Jernimo C. Pellegrini

428

REFERNCIAS BIBLIOGRFICAS

[106] POLLARD, J. M. A monte carlo method for factorization. BIT Numerical


Mathematics, v. 15, n. 3, p. 331334, 1975. 238

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

[108] BALDONI, M. W.; CILIBERTO, C.; CATTANEO, G. M. P. Elementary


Number Theory, Cryptography and Codes. [S.l.]: Springer, 2009. ISBN 978-3540-69199-0. 238, 348
[109] COHEN, H. A Course in Computational Algebraic Number Theory. [S.l.]:
Springer, 2010. ISBN 3642081428. 238, 271

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

[112] VASILENKO, O. N. Number-Theoretic Algorithms in Cryptography. [S.l.]:


American Mathematical Society, 2007. ISBN 978-8218-4090-0. 238
[113] AGRAWAL, M.; KAYAL, N.; SAXENA, N. PRIMES is in p. Annals of
Mathematics, v. 160, n. 2, p. 781793, 2004. 238
[114] SHOKRANIAN, S. Uma Introduo Teoria dos Nmeros. [S.l.]: Cincia
Moderna, 2008. ISBN 9788573937534. 238, 348
[115] COHEN, H. Advanced Topics in Computional Number Theory. [S.l.]:
Springer, 1999. ISBN 0387987274. 238

[116] BRESSOUD, D.; WAGON, S. A Course in Computational Number Theory. [S.l.]: Wiley, 2008. 238

Ve
rs

[117] RIESEL, H. Prime Numbers and Computer Methods for Factorization. 2.


ed. [S.l.]: Birkhuser Boston, 1994. ISBN 0817637435. 238
[118] SHAMIR, A. Identity-based cryptosystems and signature schemes. In:
Crypto 84. [S.l.: s.n.], 1984. 250
[119] COCKS, C. An identity based encryption scheme based on quadratic residues. In: 8th IMA International Conference on Cryptography and Coding.
[S.l.: s.n.], 2001. 250
[120] BONEH, D.; FRANKLIN, M. Identity-based encryption from the weil
pairing. SIAM Journal of Computing, v. 32, n. 3, p. 586615, 2003. 250
[121] BOYEN, X. A tapestry of identity-based encryption: Practical frameworks compared. International Journal of Applied Cryptography, v. 1, n. 1,
p. 321, 2007. 250

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

429

[122] GORANTLA, M. C.; GANGISHETTI, R.; SAXENA, A. A Survey of


ID-Based Cryptographic Primitives. 2005. IACR Cryptology ePrint Archive,
Report 2005/094. http://eprint.iacr.org/. 250

in
ar

[123] MARTIN, L. Introduction to Identity-Based Encryption. [S.l.]: Artech


House, 2008. ISBN 978-1-59693-238-8. 250

[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

[126] PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. [S.l.]:


Hill/Artmed, 2009. ISBN 9788577260324. 263, 384

[127] HIRVENSALO, M. Quantum Computing. [S.l.]: Springer, 2001. ISBN


3540667830. 263
[128] MARINESCU, D. C.; MARINESCU, G. M. Approaching Quantum Computing. [S.l.]: Perason/Prentice Hall, 2005. ISBN 0-13-145224-X. 263

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

[132] COHEN-TANNOUDJI, C.; DIU, B.; LALOE, F. Quantum Mechanics.


[S.l.]: Wiley-Interscience, 2006. ISBN 0471569526. 263

Ve
rs

[133] SHANKAR, R. Principles of Quantum Mechanics. 2. ed. [S.l.]: Springer,


1994. ISBN 0306447908. 263

[134] GRIFFITHS, D. J. Introduction to Quantum Mechanics. 2. ed. [S.l.]: Benjamin Cummings, 2004. ISBN 0131118927. 263

[135] GRIFFITHS, D. J. Mecnica Quntica. [S.l.]: Pearson do Brasil, 2011.


ISBN 978-85-7605-927-1. 263
[136] BYRON, F. W.; FULLER, R. W. Mathematics of Classical and Quantum
Physics. [S.l.]: Dover, 1992. ISBN 048667164X. 263
[137] HORADAM, K. J. Hadamard Matrices and Their Applications. [S.l.]:
Princeton University Press, 2006. ISBN 069111921X. 263
[138] MICCIANCIO, D.; GOLDWASSER, S. Complexity of Lattice Problems:
A Cryptographic Perspective. [S.l.]: Springer, 2002. ISBN 9780792376880. 271

notas de aula verso 79 - Jernimo C. Pellegrini

430

REFERNCIAS BIBLIOGRFICAS

[139] LENSTRA, A. K.; JR., H. W. L.; LOVSZ, L. Factoring polynomials with


rational coefficients. Mathematische Annalen, v. 261, n. 4, p. 515534, 1982.
271

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

[142] HOFFSTEIN, J.; PIPHER, J.; SILVERMAN, J. H. Ntru: A ring-based


public key cryptosystem. Lecture Notes in Computer Science, v. 1423, 1998.
271

[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

[149] BERLEKAMP, E. R.; MCELIECE, R. J.; TILBORG, H. C. V. On the


inherent intractability of certain coding problems. IEEE Transactions on Information Theory, IT-24, p. 203207, 1978. 278
[150] MACELIECE, R. J. A Public-Key Cryptosystem Based On Algebraic Coding Theory. 1978. DSN Progress Report 42-44: 114. 279
[151] MENEZES, A. J.; van Oorschot, P. C.; VANSTONE, S. A. Handbook of
. [S.l.]: CRC Press, 1996. 279
applied cryptography. In:

[152] NOJIMA, R. et al. Semantic security for the McEliece cryptosystem


without random oracles. Design, Codes and Cryptography, v. 49, n. 1-3, p.
289305, 2008. 279
[153] NAOR, M.; SHAMIR, A. Visual cryptography. In: Proceedings of EUROCRYPT. [S.l.: s.n.], 1994. 284

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

431

[154] ATENIESE, G. et al. Visual cryptography for general access structures.


Information and Computation, v. 129, p. 86106, 1996. 284

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

[159] SOCEK, D.; MAGLIVERAS, S. S. General access structures in audio


cryptography. In: Proceedings of the IEEE International Conference on Electro Information Technology. [S.l.: s.n.], 2005. 285

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

notas de aula verso 79 - Jernimo C. Pellegrini

432

REFERNCIAS BIBLIOGRFICAS

[168] DRMUTH, M.; FREEMAN, D. M. Deniable encryption with negligible


detection probability: An interactive construction. In: EUROCRYPT. [S.l.:
s.n.], 2011. p. 610626. 296

in
ar

[169] DRMUTH, M.; FREEMAN, D. M. Deniable Encryption with Negligible


Detection Probability: An Interactive Construction. 2011. IACR 066. 296
[170] CARITAT, M. d. C. Jean-Antoine-Nicolas de. Condorcet: Foundations of
social choice and political theory (selections). 17431794 (1994). 307

[171] ARROW, K. J. Social Choice and Individual Values. [S.l.: s.n.], 1951.
ISBN 0-300-01364-7. 307

lim

[172] ARROW, K. J. A difficulty in the concept of social welfare. Journal of


Political Economy, v. 58, n. 4, p. 328346, 1950. 307
[173] INSUA, D. R.; FRENCH, S. e-Democracy: A Group Decision and Negotiation Perspective. [S.l.]: Springer, 2010. ISBN 978-90-481-9044-7. 307
[174] RJAKOV, Z. Electronic Voting Schemes. Tese (Doutorado) Comenius University, Bratislava, 2002. 307

Pr
e

[175] BACARD, A. Computer Privacy Handbook. [S.l.]: Peachpit Press, 1995.


ISBN 1-56609-171-3. 307
[176] DINGLEDINE, R.; MATHEWSON, N.; SYVERSON, P. Tor: The
second-generation onion router. In: 13th USENIX Security Symposium. [S.l.:
s.n.], 2004. p. 303320. 307

[177] CRAMER, R.; GENNARO, R.; SCHOENMAKERS, B. A secure and


optimally efficient multi-authority election scheme. In: Eurocrypt 97. [S.l.:
s.n.], 1997. 307

Ve
rs

[178] CHAUM, D. Blind signatures for untraceable payments. In: Proceedings


of CRYPTO 1982. [S.l.: s.n.], 1982. 307, 309
[179] SIMPLOT-RYL, I.; TRAOR, I.; EVERAERE, P. Distributed architectures for electronic cash schemes: A survey. The International Journal of
Parallel, Emergent and Distributed Systems, v. 24, n. 3, 2009. 309
[180] AL-MEAITHER, M. Secure electronic payments for Islamic finance. Tese
(Doutorado) Department of Mathemathics, Royal Holloway, University of
London, 2004. 309
[181] BAUER, F. L. Decrypted Secrets: Methods and Maxims of Cryptology.
[S.l.: s.n.], 2010. ISBN 3642063837. 315
[182] SINGH, S. The Code Book. [S.l.: s.n.], Anchor. ISBN 0385495323. 315
[183] SINGH, S. O Livro dos Cdigos. 7a. ed. [S.l.]: Record, 2010. ISBN
8501055980. 315

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

433

[184] PINCOCK, S. Codebreaker: The History of Codes and Ciphers. [S.l.]:


Walker & Company, 2006. ISBN 0802715478. 315

in
ar

[185] GAINES, H. F. Cryptanalysis: A Study of Ciphers and Their Solution.


[S.l.]: Dover, 1989. ISBN 0486200973. 315

[186] SMITH, L. D. Cryptography: The Science of Secret Writing. [S.l.]: Dover,


1955. ISBN 048620247X. 315

[187] V.BOONE, J. A Brief History of Cryptology. [S.l.]: Naval Institute Press,


2005. ISBN 978-1-59114-084-9. 315

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

[190] GARCIA, A.; LEQUAIN, Y. Elementos de lgebra. 5. ed. [S.l.]: IMPA,


2010. ISBN 978-85-244-0190-9. 348
Cincia Moderna, 2010. ISBN

Pr
e

[191] SHOKRANIAN, S. lgebra 1. [S.l.]:


8573939516. 348

[192] FRALEIGH, J. B. A First Course in Abstract Algebra. [S.l.]: Addison


Wesley, 2002. ISBN 9780201763904. 348
[193] HERSTEIN, I. N. Abstract Algebra. 3. ed. [S.l.]: Wiley, 1996. ISBN
0471368792. 348
[194] GALLIAN, J. A. Contemporary Abstract Algebra. [S.l.]: Brooks Cole,
2009. ISBN 0547165099. 348

[195] ARTIN, M. Algebra. [S.l.]: Prentice Hall, 1991. ISBN 0130047635. 348
Dover, 2009. ISBN

[197] JACOBSON, N. Basic Algebra II. 2. ed. [S.l.]:


048647187X. 348

Dover, 2009. ISBN

Ve
rs

[196] JACOBSON, N. Basic Algebra I. 2. ed. [S.l.]:


0486471896. 348

[198] HUNGERFORD, T. W. Algebra. [S.l.]: Springer, 1980. ISBN 0387905189.


348
[199] ALUFFI, P. Algebra: Chapter 0. [S.l.]: American Mathematical Society,
2009. ISBN 978-0-8218-4781-7. 348
[200] MULLEN, G. L.; MUMMERT, C. Finite Fields and Applications. [S.l.]:
AMS, 2007. ISBN 978-0-8218-4418-2. 348
[201] SANTOS, J. P. de O. Introduo Teoria dos Nmeros. [S.l.]: IMPA,
2010. 348

notas de aula verso 79 - Jernimo C. Pellegrini

434

REFERNCIAS BIBLIOGRFICAS

[202] MILLIES, C. P. Nmeros: uma introduo Matemtica. [S.l.]: EDUSP,


2006. ISBN 8531404584. 348

in
ar

[203] ANDREWS, G. E. Number Theory. [S.l.]: Dover, 1994. 348


[204] IRELAND, K.; ROSEN, M. A Classical Introduction to Modern Number
Theory. [S.l.]: Springer, 1990. ISBN 1441930949. 348

[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

[206] APOSTOL, T. Introduction to analytic number theory. [S.l.]: Springer,


1976. 348

[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

[209] MANBER, U. Introduction to Algorithms: A Creative Approach. [S.l.]:


Addison-Wesley, 1989. ISBN 0201120372. 384
[210] SIPSER, M. Introduo Teoria da Computao. So Paulo SP: Thomson, 2007. ISBN 9788522104994. 384, 385, 386
[211] LEWIS, H.; PAPADIMITRIOU, C. H. Elementos de Teoria da Computao. 2. ed. [S.l.]: Bookman, 2004. ISBN 8-57307-534-1. 384

[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

[213] SEDGEWICK, R.; FLAJOLET, P. An Introduction to the Analysis of


Algorithms. [S.l.]: Addison-Wesley, 1995. ISBN 9780201400090. 385
[214] SANTOS, J. P. O.; MELLO, M. P.; MURARI, I. T. C. Introduo
Anlise Combinatria. 4. ed. [S.l.]: Cincia Moderna, 2007. ISBN 978-857393-634-6. 385
[215] CAMERON, P. J. Combinatorics: topics, techniques, algorithms. [S.l.]:
Cambridge university Press, 1994. ISBN 0-0521-45761-0. 385
[216] AKRA, M.; BAZZI, L. On the solution of linear recurrence equations.
Computational Optimization and Applications, v. 10, n. 2, p. 195210, 1998.
385

[217] COOK, S. The complexity of theorem proving procedures. In: Proceedings


of the Third Annual ACM Symposium on Theory of Computing. [S.l.: s.n.],
1971. p. 151158. 385

notas de aula verso 79 - Jernimo C. Pellegrini

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

[219] HOPCROFT, J. E.; MOTWANI, R.; ULLMAN, J. D. Introduction to


Automata Theory, Languages and Computation. 2. ed. [S.l.]: Addison-Wesley,
2001. 385

[220] GAREY, M. R.; JOHNSON, R. S. Computers and Intractability: a guide


to the theory of NP-completeness. New York: W. H. Freeman, 1979. 385

lim

[221] DEMAINE, E. D.; HOHENBERGER, S.; LIBEN-NOWELL, D. Tetris is


Hard, Even to Approximate. 2002. http://arxiv.org/abs/cs.CC/0210020.
385
[222] BREUKELAAR, R.; HOOGEBOOM, H. J.; KOSTERS, W. A. Tetris
is Hard, Made Easy. 2003. Relatorio Tecnico 2003-9, Universiteit Leiden.
http://www.liacs.nl/~kosters/tetris/tetr.pdf. 385

Pr
e

[223] AUSIELLO, G. et al. Complexity and Approximation: Combinatorial


optimization problems and their approximability properties. [S.l.]: SpringerVerlag, 2003. ISBN 9783540654315. 385
[224] PAPADIMITRIOU, C. H. Computational Complexity. [S.l.]: AddisonWesley, 1993. ISBN 0-20153-082-1. 385
[225] IMMERMAN, N. Descriptive Complexity. [S.l.]: Springer, 1998. ISBN 038798-600-6. 385

[226] GOLDREICH, O. Computational Complexity: A Conceptual Perspective.


[S.l.]: Cambridge University Press, 2008. ISBN 9780521884730. 385

Ve
rs

[227] VAZIRANI, V. V. Approximation Algorithms. [S.l.]: Springer, 2010. ISBN


3642084699. 385
[228] GONZALEZ, T. F. (Ed.). Handbook of Approximation Algorithms and
Metaheuristics. [S.l.]: Chapman & Hall/CRC, 2007. ISBN 9781584885504.
385

[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

notas de aula verso 79 - Jernimo C. Pellegrini

436

REFERNCIAS BIBLIOGRFICAS

[232] TURING, A. M. On computable numbers, with an application to the


entscheidungsproblem. Proceedings of the London Mathematical Society, s242, n. 1, p. 230265, 1937. 386

in
ar

[233] TURING, A. M. On computable numbers, with an application to the


entscheidungsproblem. a correction. s2-43, n. 1, p. 544546, 1938. 386
[234] CHURCH, A. A set of postulates for the foundation of logic. Annals of
Mathematics Series 2, v. 33, p. 346366, 1932. 386

[235] KLEENE, S. C.; ROSSER, J. B. General recursive functions of natural


numbers. Mathmatische Annalen, v. 112, p. 727742, 1936. 386

lim

[236] KLEENE, S. C. Introduction to Metamathematics. [S.l.]: North Holland,


1952. 386

[237] POST, E. L. Finite combinatory processes - formulation 1. Journal of


Symbolic Logic, v. 1, p. 103105, 1936. 386

Pr
e

[238] DAVIS, M. Computability and Unsolvability. [S.l.]: Dover, 1985. ISBN


0486614719. 386
[239] CUTLAND, N. Computability: An Introduction to Recursive Function
Theory. [S.l.: s.n.], 1980. ISBN 0521294657. 386
[240] ROGERS, H. Theory of Recursive Functions and Effective Computability.
[S.l.]: MIT Press, 1987. ISBN 0262680521. 386
[241] COOPER, S. B. Computability Theory. [S.l.]: Chapman and Hall/CRC,
2003. ISBN 1584882379. 386

Ve
rs

[242] DAVIS, M. The Undecidable: Basic Papers on Undecidable Propositions,


Unsolvable Problems and Computable Functions. [S.l.]: Dover, 2004. ISBN
0486432289. 386
[243] HOPCROFT, J. E.; MOTWANI, R.; ULLMAN, J. D. Introduction to Automata Theory, Languages, and Computation. [S.l.]: Addison-Wesley, 2001.
ISBN 0201441241. 386
[244] SHALLIT, J. A Second Course in Formal Languages and Automata Theory. [S.l.]: Cambridge University Press, 2008. ISBN 0-521-86572-7. 386
[245] BONDY, J. A.; MURTY, U. S. R. Graph Theory. [S.l.]: Springer, 2010.
ISBN 1849966907. 386
[246] BOLLOBS, B. Modern Graph Theory. [S.l.]: Springer, 1998. ISBN
0387984887. 386
[247] HARRIS, J.; HIRST, J. L.; MOSSINGHOFF, M. Combinatorics and
Graph Theory. [S.l.]: Springer, 2010. ISBN 1441927239. 386

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

437

[248] FOURIER, J. B. J. The Analytical Theory of Heat. [S.l.]: Dover, 2003.


ISBN 9780486495316. 398

in
ar

[249] COOLEY, J. W.; TUKEY, J. W. An algorithm for the machine calculation


of complex fourier series. Mathematics of Computation, v. 19, p. 297301,
1965. 398
[250] BRIGGS, W.; HENSON, V. E. The DFT: an owners manual for the
discrete Fourier transform. [S.l.]: SIAM, 1995. ISBN 0-89871-342-0. 398
[251] HEIDEMAN, M. T.; JOHNSON, D. H.; BURRUS, C. S. Gauss and the
history of the fast fourier transform. IEEE ASSP (Acoustics, Speech, and
Signal Processing Society) Magazine, v. 1, n. 4, p. 1421, 1984. 398

lim

[252] BRIGHAM, E. O. The Fast Fourier Transform and Its Applications. [S.l.]:
Prentice Hall, 1988. ISBN 978-0133075052. 398

[253] PRESS, W. H. et al. Numerical Recipes: The Art of Scientific Computing.


3. ed. [S.l.]: Cambridge, 2007. ISBN 978-0-521-88068-8. 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

[258] AHMED, N.; NATARAJAN, T.; RAO, K. R. Discrete cosine transform.


IEEE Transactions on Computers, 1974. 399

Ve
rs

[259] SHIH, F. Y. Image Processing and Pattern Recognition: fundamentals and


techniques. [S.l.]: IEEE/Wiley, 2010. ISBN 978-0-470-40461-4. 399
[260] RAO, K. R.; YIP, P. C. The Transform and Data Compression Handbook.
[S.l.]: CRC Press, 2001. ISBN 0-8493-3692-9. 399

ndice Remissivo

teorema de, 385


algoritmo no determinstico, 364
algoritmo randomizado, 365
algoritmos de aproximao, 376
ambiente, 211
amplitude de probabilidade (em estado
quntico), 258
anlise de Fourier, 398
anlise de frequncia (mtodo para criptanlise), 315
anel, 339
aniversrio
ataques usando o problema, 113
problema do, 113, 319
aproximao absoluta, 376
aproximao linear
tabela de, 93
aritmtica modular, 323
ARVORE-DE-STEINER (problema), 389
assinatura baseada em identidade, 244
assinatura baseada em identidades
de Shamir, 249
assinatura cega, 301
em sistema de votao, 300
assinatura digital, 10, 155
ataque do encontro no meio, 73
Atbash, veja cifra Atbash
ator (em protocolo), 171
autocorrelao, 46

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

notas de aula verso 79 - Jernimo C. Pellegrini

Aardvark (cifra de bloco), 119


acordo de chaves baseado em identidades, 246
adversrio
malicioso, 209
semi-honesto, 209
AES, 75
descrio algbrica, 78
descrio simplificada, 75
detalhes de implementao, 408
Ajtai-Dwork (criptossistema), 270
Akra-Bazzi

Bzout
Lema de, 325
Berlekamp-Massey
algoritmo para determinar complexidade linear de sequncia, 50

438

notas de aula verso 79 - Jernimo C. Pellegrini

NDICE REMISSIVO

439

colorao de um grafo, 362


colunas
ctala espartana, 312
no AES/Rijndael, 78
cdigo de autenticao de mensagem, compartilhamento de segredos, 181
127
em sistma de votao, 300
cdigos corretores de erros, 273
esquema de Blakley, 184
caixeiro viajante, veja TSP
esquema de Ito-Nishizeki-Saito, 187
caminho em grafo, 361
esquema de Pedersen, 189
caracterstica de um anel ou corpo, 343
esquema de Shamir, 182
CBC-MAC, 130
esquema visual (k, n), 283
CCA, 134
publicamente verificvel, 190
CCA (segurana de criptossistema asverificvel, 188
simtrico), 142
complexidade de tempo, 353
CGS (esquema de votao), 303
de ator, 172
Chaum (esquema de votao, 302
exponencial, 355
Chaum (protocolo de votao), 302
polinomial, 355
cifra
subexponencial, 355
de bloco, 8
complexidade linear de sequncia, 49
de fluxo, 7
comprometimento (protocolo), 172
cifra afim, 313
com resumos criptogrficos, 175
cifra Atbash, 313
de bit, com resduos quadrticos,
cifra de bloco
177
definio de segurana, 66
de Pedersen, 176
cifra de Csar, 312
ocultante, 175
cifra de deslocamento, 311
usando logaritmo discreto, 175
cifra de Hill, 314
vinculante, 174
cifra de permutao, 311
confuso
cifra de substituio, 311
em projeto de cifra de bloco, 67
cifra de Vigenre, 313
congruncia, 323
cipher block chaining
conhecimento zero computacional, 199
modo de operao de permutao conhecimento zero estatstico, 199
pseudoaleatrea, 64
conhecimento zero perfeito, 198
circuito
conjunto dominante, 370
hamiltoniano, 361
conjunto qualificante, 181
circuito em grafo, 361
CONJUNTO-DOMINANTE
circuito Hamiltoniano, veja HAM
problema, 371
classe de complexidade, 366
prova de N P-completude, 371
classe lateral, 338
construo de Lai-Massey, 71
clique, 361
corpo, 339
COBERTURA-DE-CONJUNTO (pro- corpo de Galois, veja corpo finito
blema), 370
corpo de Rijndael, 78
COBERTURA-POR-ARESTAS (problema),
corpo finito, 343
388
corretude (em sistema de votao), 299
COBERTURA-POR-VERTICES
cosseno
algoritmo aproximado, 378
transformada, 397
problema, 378
counter

Ve
rs

Pr
e

lim

in
ar

bit hard-core, 35

notas de aula verso 79 - Jernimo C. Pellegrini

440

NDICE REMISSIVO

Ve
rs

Pr
e

lim

in
ar

modo de operao de permutao Diffie-Hellman (estabelecimento de chapseudoaleatrea, 65


ves), 138
Cramer-Gennaro-Schoenmakers (esquemaDiffie-Hellman (problema), 139
de votao), 303
em grupos de curvas elpticas, 226
criptanlise, 85
Diffie-Hellman (protocolo)
algbrica, 105
com curvas elpticas, 227
de chave relacionada, 107
difuso
de cifras antigas, 315
em projeto de cifra de bloco, 67
diferencial, 99
dinheiro eletrnico, 309
diferencial impossvel, 107
disco, 274
linear, 88
discriminante de um polinmio, 220
linear diferencial, 107
distncia de Hamming, 274
criptografia, 7
distncia mnima, 274
criptografia baseada em identidade, 241 divises sucessivas (mtodo para fatocriptografia visual, 281
rao), 232
criptossistema
divisibilidade, 321
Dixon
simtrico, 20
criptossistema amostrvel, 294
algoritmo de, 236
criptossistema assimtrico, 141
DSA (esquema de assinaturas), 163
crivo
efeito avalanche, 69
de Eratstenes, 231
electronic code book
quadrtico, 236
modo de operao de permutao
sobre corpo numrico algbrico, 238
pseudoaleatrea, 64
curva algbrica, 219
Elgamal (criptossistema), 142, 227
curva elptica, 219
Elgamal (esquema de assinaturas), 163
operao de grupo, 221
Elgamal (criptossistema)
CVP (problema em reticulados), 266
com curvas elpticas, 227
Drmuth-Freeman (esquema de encrip- empacotamento de conjunto
tao negvel), 294
problema, 380
de Brujin
emparelhamentos bilineares, 228, 253
sequncia de, 57
encriptao baseada em identidade, 243
decodificao, 277
encriptao baseada em identidades
democracia (em sistema de votao),
de Boneh-Franklin, 254
299
de Cocks, 246
DES
encriptao com qurum, 194
descrio detalhada, 401
encriptao homomrfica
descrio simplificada, 72
em sistema de votao, 300
escalonamento de chaves, 406
encriptao negvel
expanso de bits, 404
em sistema de votao, 300
funo interna, 403
equao diofantina quadrtica
permutao inicial, 403
problema, 374
permutao interna, 405
EQUACAO-DIOFANTINA-QUADRATICA
S-boxes, 405
(problema), 374
desvio de ortogonalidade, 266
esquema de assinaturas, 155
diferencial, 100
de Boneh-Franklin, 255

notas de aula verso 79 - Jernimo C. Pellegrini

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

GGH (criptossistema), 267


Goldwasser-Micali (criptossistema), 149
Golomb
postulados de, 46
grafo, 360
grafo bipartido, 362
grafo conexo, 361
grau de vrtice em grafo, 361
grupo, 335
cclico, 336
comutativo, 335
de unidades, 339
grupo multiplicativo de inteiros, 337

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

IDEA (cifra de bloco), 71


identificao
protocolos de, 202
IDKMA, 245
IND-ID-CCA (segurana de criptossistema baseado em identidade),
244
IND-ID-CPA (segurana de criptossistema baseado em identidade),
244
indecidvel (problema), 380
gerao de chaves para construo ba- indistinguibilidade computacional, 41
seada em identidades, 242
intermediador incorrompvel, 213
gerador, 336
isomorfismo
gerador de nmeros pseudoaleatreos,
de grafos, 362
45
em estruturas algbricas, 342
gerador pseudoaleatreo, 39
Jacobi, smbolo de, 333
Blum-Blum-Shub, 44
de Blum-Micali, 44
JPEG

notas de aula verso 79 - Jernimo C. Pellegrini

442

NDICE REMISSIVO

nmero primo, 322


nmeros primos entre si, 322
no-coercibilidade (em sistema de votao), 299
Kasiski (mtodo para criptanlise), 315 no-repdio, 155
Kerchoff, princpio de, 20
norma de vetor, 265
Kerchoff, princpio de , 29
NTRU (criptossistema), 269

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

formato digital para imagens grficas, 398


justeza (em sistema de votao, 299

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

notas de aula verso 79 - Jernimo C. Pellegrini

NDICE REMISSIVO

443

provas de conhecimento zero


em sistema de votao, 300

in
ar

qubit, 258

sistema de prova interativa, 197


sistema reduzido de resduos, 329
SOBREVIVENCIA-DE-REDE (problema),
389
soma de subconjuntos, 33
subgrupo, 336
subgrupo gerado, 336
subgrupo oculto, 261
subsequncia constante, 46
substituio local, 370
SVP (problema em reticulados), 266

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

Você também pode gostar