Вы находитесь на странице: 1из 463

lim

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Pr
e

Introduo Criptograa e seus Fundamentos


notas de aula  verso 85
Jernimo C. Pellegrini

Ve
rs

27 de fevereiro de 2015

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Sumrio

Introduo e viso geral


1.2

Encriptao assimtrica

1.3

Resumos

criptogrcos . . . . . . . . . . . . . . . . . . .

1.4

Assinatura digital . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.5

Estabelecimento de chaves . . . . . . . . . . . . . . . . . . . . . .

11

1.6

Chaves pblicas conveis . . . . . . . . . . . . . . . . . . . . . .

11

1.7

Protocolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.8

Criptograa Ps-Quntica . . . . . . . . . . . . . . . . . . . . . .

14

1.9

Criptograa Quntica

(hashes)

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

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

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

14

1.10 Sobre este texto . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

1.10.1 Jogos e experimentos . . . . . . . . . . . . . . . . . . . . .

14

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

16

Criptossistemas e Noes de Segurana

19

2.1

Criptossistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.2

Princpio de Kercho . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.3

Sigilo Perfeito . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

2.4

Segurana emprica e com heursticas . . . . . . . . . . . . . . . .

25

2.5

Segurana demonstrvel

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

25

2.5.1

Cenrios de ataque . . . . . . . . . . . . . . . . . . . . . .

26

2.5.2

Probabilidade desprezvel

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

27

2.5.3

Exemplo de denio de segurana . . . . . . . . . . . . .

27

Ve
rs

Encriptao simtrica

1.10.2 Notao e convenes

1.1

Pr
e

Conceitos Fundamentais

lim

Sumrio

Problemas Difceis

3.1

Funes de mo nica

3.1.1

33
. . . . . . . . . . . . . . . . . . . . . . . .

33

Funes fracamente de mo nica . . . . . . . . . . . . . .

36

hard-core

3.2

Predicados

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

37

3.3

Predicados hard-core para quaisquer funes de mo nica . . . .

39

notas de aula  verso 85 - Jernimo C. Pellegrini

SUMRIO

ii

Geradores Pseudoaleatreos e Cifras de Fluxo

41

4.1

Geradores pseudoaleatreos

41

4.2

Geradores com Funes de Mo nica . . . . . . . . . . . . . . .

4.3

Gerao de

4.5

45
47

Geradores com Heursticas . . . . . . . . . . . . . . . . . . . . . .

48

4.4.1

Propriedades de Sequncias Pseudoaleatreas . . . . . . .

48

4.4.2

Testes Para Sequncias de Bits

53

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

Cifras de Fluxo . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

4.5.1

Mltiplas Mensagens . . . . . . . . . . . . . . . . . . . . .

54

4.5.2

Ataques de Texto Claro Escolhido

57

Cifras de Bloco

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

61

5.1

Esquemas de Encriptao usando Funes Pseudoaleatreas . . .

63

5.2

Permutaes Pseudoaleatreas

65

5.2.1
5.3

5.4

5.5

5.8

. . . . . . .

65

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

65

5.3.1

ECB  Electronic Code Book . . . . . . . . . . . . . . . .

66

5.3.2

CBC  Cipher Block Chaining

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

66

5.3.3

OFB  Output Feedback . . . . . . . . . . . . . . . . . . .

67

5.3.4

CTR  Contador . . . . . . . . . . . . . . . . . . . . . . .

67

Cifras de bloco

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

68

5.4.1

Segurana de cifras de bloco . . . . . . . . . . . . . . . . .

68

5.4.2

Construo

69

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

Arquitetura de cifras de bloco . . . . . . . . . . . . . . . . . . . .

69

5.5.1

Confuso e difuso . . . . . . . . . . . . . . . . . . . . . .

69

5.5.2

Rede de substituio e permutao . . . . . . . . . . . . .

69

5.5.3

Rede de Feistel . . . . . . . . . . . . . . . . . . . . . . . .

71

5.5.4

Construo de Lai-Massey . . . . . . . . . . . . . . . . . .

73

Exemplo: DES

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

5.6.1

Escalonamento de chaves

5.6.2

3DES

Ve
rs

5.7

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

Famlias de permutaes pseudoaleatreas

Modos de Operao

5.6

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

lim

pseudoaleatreos

in
ar

4.4

nmeros

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

Pr
e

Exemplo: AES

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

74
75

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

75

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

77

5.7.1

Descrio simplicada

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

77

5.7.2

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

80

FOX (IDEA-NXT) . . . . . . . . . . . . . . . . . . . . . . . . . .

82

Descrio algbrica

Noes de Criptanlise

87

6.1

Uma rede de substituio e permutao

6.2

Criptanlise linear

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

87

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

90

6.2.1

O Lema do Empilhamento . . . . . . . . . . . . . . . . . .

91

6.2.2

Criptanlise da rede

92

6.2.3

Escolha da trilha e resistncia ao ataque . . . . . . . . . . 101

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

6.3

Criptanlise diferencial . . . . . . . . . . . . . . . . . . . . . . . . 101

6.4

Criptanlise Algbrica

6.5

Tcnicas de criptanlise relacionadas . . . . . . . . . . . . . . . . 109

. . . . . . . . . . . . . . . . . . . . . . . . 107

notas de aula  verso 85 - Jernimo C. Pellegrini

SUMRIO

7.2

Construo: transformao de Merkle-Damgrd . . . . . . . . . . 116

dexp
(Secure Hash Algorithm) .

. . . . . . . . . . . . . . . . 115

Resistncia a colises com

. . . . . . . . . . . . . . . . . . . 117

7.4

SHA

. . . . . . . . . . . . . . . . . . . 119

in
ar

7.3

7.4.1

SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

7.4.2

SHA-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

7.5

Cifras de bloco usando funes de hash: Aardvark

7.6

O Orculo Aleatreo . . . . . . . . . . . . . . . . . . . . . . . . . 124

. . . . . . . . 123

7.6.1

Propriedades do Orculo Aleatreo . . . . . . . . . . . . . 125

7.6.2

Objees

. . . . . . . . . . . . . . . . . . . . . . . . . . . 126

131

lim

Cdigos de Autenticao de Mensagens


8.1

Segurana de cdigos de autenticao de mensagens

8.2

Extendendo MACs para tamanho varivel de mensagem . . . . . 134

8.3

CBC-MAC
8.3.1

113

Ataques e o problema do aniversrio

. . . . . . . 132

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

Mensagens de tamanho varivel . . . . . . . . . . . . . . . 135

8.4

HMAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

8.5

Aplicao: segurana CCA

. . . . . . . . . . . . . . . . . . . . . 138

Criptograa Assimtrica

Pr
e

hashing)

Resumos Criptogrcos (funes de


7.1

141

9.1

Protocolos criptogrcos . . . . . . . . . . . . . . . . . . . . . . . 141

9.2

Estabelecimento de chaves . . . . . . . . . . . . . . . . . . . . . . 141

9.3

Protocolo Die-Hellman para estabelecimento de chaves . . . . . 142


9.3.1

9.4

Ataque de homem-no-meio

Criptossistemas Assimtricos
9.4.1

. . . . . . . . . . . . . . . . . 145

. . . . . . . . . . . . . . . . . . . . 145

Funes de mo nica com segredo

. . . . . . . . . . . 146

9.5

Segurana CCA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

9.6

Elgamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

9.7

Criptossistema de Rabin . . . . . . . . . . . . . . . . . . . . . . . 148


RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
9.8.1

Ataques ao RSA

9.8.2

Verso segura do RSA: OAEP

Ve
rs

9.8

iii

9.9

. . . . . . . . . . . . . . . . . . . . . . . 152
. . . . . . . . . . . . . . . 153

Goldwasser-Micali

. . . . . . . . . . . . . . . . . . . . . . . . . . 154

10 Assinaturas Digitais

159

10.1 Segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160


10.1.1 Segurana RMA

. . . . . . . . . . . . . . . . . . . . . . . 161

10.1.2 Segurana KMA

. . . . . . . . . . . . . . . . . . . . . . . 162

10.1.3 Segurana CMA

. . . . . . . . . . . . . . . . . . . . . . . 163

10.1.4

Aumentando a segurana de esquemas

10.2 Esquema de assinaturas de Lamport

. . . . . . . . . 164

. . . . . . . . . . . . . . . . 164

10.3 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165


10.3.1 Full-domain hash . . . . . . . . . . . . . . . . . . . . . . . 166

10.4 Elgamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167


10.4.1 DSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

notas de aula  verso 85 - Jernimo C. Pellegrini

SUMRIO

iv

10.5

Full-domain hash com qualquer permutao de mo nica

Protocolos

. . 169

171

11 Protocolos Para Comprometimento

in
ar

II

175

11.1 Modelo computacional . . . . . . . . . . . . . . . . . . . . . . . . 175


11.2 Comprometimento

. . . . . . . . . . . . . . . . . . . . . . . . . . 176

11.2.1 Comprometimento de bit

. . . . . . . . . . . . . . . . . . 181

11.2.2 Vericao de igualdade de logaritmos . . . . . . . . . . . 182


11.2.3 Cara-ou-coroa . . . . . . . . . . . . . . . . . . . . . . . . . 183

12 Compartilhamento de Segredos

185

12.1.1 Esquema de Shamir

lim

12.1 Esquemas com qurum . . . . . . . . . . . . . . . . . . . . . . . . 186


. . . . . . . . . . . . . . . . . . . . . 186

12.1.2 Esquema de Blakley

. . . . . . . . . . . . . . . . . . . . . 188

12.2 Segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189


12.2.1 Sigilo

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

12.3 Estruturas gerais de acesso

. . . . . . . . . . . . . . . . . . . . . 190
. . . . . . . . . . . . . . . . . . . . 192

Pr
e

12.4 Compartilhamento vericvel

12.5 Compartilhamento publicamente vericvel


12.5.1 Segredos no aleatreos
12.6 Encriptao com qurum
12.7 Notas

. . . . . . . . . . . . 194

. . . . . . . . . . . . . . . . . . . 198

. . . . . . . . . . . . . . . . . . . . . . 198

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

12.8 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

13 Provas de Conhecimento Zero


13.1 Provas Interativas

201

. . . . . . . . . . . . . . . . . . . . . . . . . . 201

13.2 Conhecimento zero . . . . . . . . . . . . . . . . . . . . . . . . . . 202


13.2.1 Isomorsmo de grafo . . . . . . . . . . . . . . . . . . . . . 203

13.3

-protocolos

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Ve
rs

13.4 Protocolos de Identicao

. . . . . . . . . . . . . . . . . . . . . 207

13.4.1 Esquema de Identicao de Feige-Fiat-Shamir . . . . . . 207


13.4.2 Protocolo de Schnorr . . . . . . . . . . . . . . . . . . . . . 209

13.5 Transformando provas interativas em no interativas . . . . . . . 210

14 Protocolos Seguros com Dois Participantes

213

14.1 Transferncia Inconsciente . . . . . . . . . . . . . . . . . . . . . . 213

15 Computao Segura com Mltiplos Participantes

215

15.1 Sobre encriptao homomrca . . . . . . . . . . . . . . . . . . . 216


15.2 Um protocolo para participantes semi-honestos

. . . . . . . . . . 216

15.3 Segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218


15.4 Componibilidade Universal
15.5 Notas

. . . . . . . . . . . . . . . . . . . . . 220

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

15.6 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

notas de aula  verso 85 - Jernimo C. Pellegrini

SUMRIO

III Outros Tpicos

223

16 Curvas Elpticas

227

16.1 Operao de grupo para curvas elpticas . . . . . . . . . . . . . . 230


. . . . . . . . . . . . . . . . . . . . . . . . . . . 231

in
ar

16.1.1 Simtrico

16.1.2 Soma de pontos . . . . . . . . . . . . . . . . . . . . . . . . 231


16.1.3 Dobrando um ponto
16.2 Ordem do grupo

. . . . . . . . . . . . . . . . . . . . . 232

. . . . . . . . . . . . . . . . . . . . . . . . . . . 232

16.3 Corpos nitos usados em Criptograa


16.3.1
16.3.2

Fp . .
GF2m

. . . . . . . . . . . . . . . 233

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

16.4 Criptossistemas e protocolos . . . . . . . . . . . . . . . . . . . . . 234


16.4.2 Die-Hellman

lim

16.4.1 Logaritmo discreto . . . . . . . . . . . . . . . . . . . . . . 234


. . . . . . . . . . . . . . . . . . . . . . . . 235

16.4.3 Elgamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235


16.4.4 Outros criptossistemas e protocolos . . . . . . . . . . . . . 236
16.5 Emparelhamentos bilineares . . . . . . . . . . . . . . . . . . . . . 236
16.6 Fatorao de Inteiros . . . . . . . . . . . . . . . . . . . . . . . . . 236

17.1 Fatorao

239

Pr
e

17 Primalidade e Fatorao

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

17.1.1 Crivo de Eratstenes e divises sucessivas . . . . . . . . . 239


17.1.2 Mtodo
17.1.3 Mtodo
17.1.4
17.1.5
17.1.6

F
F
F

p 1 de Pollard
de Pollard . .

Crivo quadrtico

. . . . . . . . . . . . . . . . . . . 240
. . . . . . . . . . . . . . . . . . . 242

. . . . . . . . . . . . . . . . . . . . . 244

Curvas elpticas . . . . . . . . . . . . . . . . . . . . . . 246


Crivo sobre corpo numrico algbrico . . . . . . . . . . 246

249

18 Criptograa Baseada em Identidades


18.1 Gerao de chaves

. . . . . . . . . . . . . . . . . . . . . . . . . . 250

18.2 Encriptao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

Ve
rs

18.3 Assinaturas

18.4 Acordo de chaves . . . . . . . . . . . . . . . . . . . . . . . . . . . 254


18.5 Duas construes simples

. . . . . . . . . . . . . . . . . . . . . . 254

19 Emparelhamentos Bilineares

261

19.1 Problemas difceis em emparelhamentos bilineares


19.2 Encriptao baseada em identidades

. . . . . . . . 262

. . . . . . . . . . . . . . . . 262

19.3 Assinaturas baseadas em identidades . . . . . . . . . . . . . . . . 263


19.4 Acordo de chaves . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
19.5 Outras construes . . . . . . . . . . . . . . . . . . . . . . . . . . 264

20 Criptograa Ps-Quntica
20.1 Diculdade de problemas
20.2 Computao quntica

265
. . . . . . . . . . . . . . . . . . . . . . 265

. . . . . . . . . . . . . . . . . . . . . . . . 266

20.2.1 Operaes qunticas . . . . . . . . . . . . . . . . . . . . . 267

notas de aula  verso 85 - Jernimo C. Pellegrini

SUMRIO

vi

20.3 Subgrupo oculto

. . . . . . . . . . . . . . . . . . . . . . . . . . . 269

20.4 Fatorao de inteiros . . . . . . . . . . . . . . . . . . . . . . . . . 269


20.4.1 Transformada quntica de Fourier

273

21.1 Reticulados

in
ar

21 Reticulados

. . . . . . . . . . . . . 269

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

21.2 Problemas difceis em reticulados . . . . . . . . . . . . . . . . . . 274

21.2.1 SIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

21.2.2 LWE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274


21.2.3 SBP e Ortogonalidade . . . . . . . . . . . . . . . . . . . . 275
21.2.4 LLL

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

21.2.5 CVP: algoritmo de Babai

. . . . . . . . . . . . . . . . . . 276

lim

21.3 GGH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

21.3.1 Detalhes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277


21.3.2 Ataques ao GGH . . . . . . . . . . . . . . . . . . . . . . . 278
21.4 NTRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
21.5 Ajtai-Dwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
21.6 LWE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

Pr
e

22 Cdigos Corretores de Erros

281

22.1 Correo de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . 281


22.1.1 Cdigos Lineares . . . . . . . . . . . . . . . . . . . . . . . 284
22.2 Criptograa com cdigos corretores de erros . . . . . . . . . . . . 288

23 Criptograa Visual

291

23.1 Um nico segredo (Naor e Shamir) . . . . . . . . . . . . . . . . . 291


23.1.1 Esquemas para
23.2 Dois segredos

pequenos

. . . . . . . . . . . . . . . 294

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
. . . . . . . . . . . . . . . . . . . . . . . . . . 294

24 Encriptao Negvel

297

23.3 Mltiplos segredos

Ve
rs

24.1 Esquema de Howlader-Basu . . . . . . . . . . . . . . . . . . . . . 299


24.2 Esquema de Drmuth-Freeman . . . . . . . . . . . . . . . . . . . 304
24.3 Negabilidade por destinatrio e negabilidade completa . . . . . . 305
24.4 Aplicaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

25 Votao Eletrnica
25.1 Mix Nets

309

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

25.2 Assinaturas cegas . . . . . . . . . . . . . . . . . . . . . . . . . . . 311


25.3 Exemplo: esquema de Chaum . . . . . . . . . . . . . . . . . . . . 312
25.3.1 Anlise

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

25.4 Exemplo: o esquema CGS (Cramer, Gennaro, Schoenmakers) . . 313


25.4.1 Anlise

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

25.4.2 Votao 1-de-L . . . . . . . . . . . . . . . . . . . . . . . . 315

25.5 Exemplo: esquema FOO (Fujioka, Okamoto, Ohta) . . . . . . . . 315


25.5.1 Anlise

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

notas de aula  verso 85 - Jernimo C. Pellegrini

SUMRIO

vii

26 Dinheiro Eletrnico

319

27 Cifras Histricas

321

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

27.2 Enigma

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

in
ar

27.1 Cifras

27.3 Criptanlise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325


27.3.1 Anlise simples de frequncia . . . . . . . . . . . . . . . . 325

27.3.2 Vigenre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

IV

Apndices

327

A Probabilidade

329

O problema do aniversrio . . . . . . . . . . . . . . . . . . . . . . 329

lim

A.1

B lgebra e Teoria dos Nmeros


C Complexidade Computacional

363

Complexidade de tempo . . . . . . . . . . . . . . . . . . . . . . . 363


C.1.1

Recorrncias

C.1.2

Tamanho da entrada e nmero de bits . . . . . . . . . . . 370

. . . . . . . . . . . . . . . . . . . . . . . . . 366

Pr
e

C.1

331

C.2

Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

C.3

Problemas de deciso e de busca

C.4

Algoritmos no determinsticos

C.5

Algoritmos Randomizados . . . . . . . . . . . . . . . . . . . . . . 375

C.6

Classes de Complexidade

C.7

Redues e completude

. . . . . . . . . . . . . . . . . . 373

. . . . . . . . . . . . . . . . . . . 374

. . . . . . . . . . . . . . . . . . . . . . 376

. . . . . . . . . . . . . . . . . . . . . . . 378

C.7.1

Tcnicas para demonstrao de

C.7.2

Padres comuns

N P -completude

N P -completos na prtica
N P -completos . .

Problemas

Outros problemas

C.7.3
C.7.4

. . . . . 380

. . . . . . . . . . . . . . . . . . . . . . . 385
. . . . . . . . . . . . 385
. . . . . . . . . . . . 389

C.8

Problemas indecidveis . . . . . . . . . . . . . . . . . . . . . . . . 390

C.9

Ve
rs

Mquinas de Turing . . . . . . . . . . . . . . . . . . . . . . . . 391

D Transformada de Fourier

401

D.1

Transformada de Fourier . . . . . . . . . . . . . . . . . . . . . . . 401

D.2

Transformada discreta de Fourier . . . . . . . . . . . . . . . . . . 403

D.3

Transformada do Cosseno

D.2.1
D.3.1

Transformada rpida de Fourier . . . . . . . . . . . . . . . 404


. . . . . . . . . . . . . . . . . . . . . . 406

Compresso de imagens: JPG . . . . . . . . . . . . . . . . 407

E Descrio Detalhada de Construes


E.1

DES

409

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409

E.1.1

Descrio geral . . . . . . . . . . . . . . . . . . . . . . . . 409

E.1.2

Permutao inicial e sua inversa

E.1.3

Funo interna

E.1.4

Escalonamento de chaves

. . . . . . . . . . . . . . 411

. . . . . . . . . . . . . . . . . . . . . . . 411
. . . . . . . . . . . . . . . . . . 414

notas de aula  verso 85 - Jernimo C. Pellegrini

SUMRIO

viii

AES

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

E.2.1

Quantidade de rodadas

E.2.2

Escalonamento de chaves

. . . . . . . . . . . . . . . . . . . 416

E.2.3

Encriptao . . . . . . . . . . . . . . . . . . . . . . . . . . 417

E.2.4

Decriptao . . . . . . . . . . . . . . . . . . . . . . . . . . 418

. . . . . . . . . . . . . . . . . . 417

in
ar

E.2

F Respostas e Dicas

419

G Ficha Tcnica

429

448

Ve
rs

Pr
e

lim

ndice Remissivo

Ve
rs

Pr
e

lim

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

notas de aula  verso 85 - Jernimo C. Pellegrini

SUMRIO

Notao

tamanho da representao binria de

aeb
a (mod n)

a classe de equivalncia
o grupo gerado por
o nmero

x,

lim

concatenao das sequncias

As distribuies das variveis aleatreas

precedida pelo bit

est representado na base 16 (hexadecimal)

so nmeros, e

AeB
y

so indistinguveis

aproximao de

uma construo criptogrca (criptossistema, funo de hashing etc)


assinatura

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

in
ar

grupo multiplicativo de inteiros mdulo

o adversrio
o desaador

um teste (algoritmo que distingue duas distribuies)


texto encriptado

um cdigo corretor de erros


problema Die-Hellman

normalmente, o gerador de um grupo

Ve
rs

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 dene o corpo de Rijndael

x4 + 1

(para multiplicao de colunas no AES)

x
x na base 2
logaritmo discreto de h na base g
bit mais signicativo de x
bit menos signicativo de
logaritmo de

funo desprezvel
o algoritmo ou funo retornar dois valores,
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
ponto no innito, adicionado ao

R2

conjunto de resduos quadrticos mdulo


conjunto de nmeros em

Zn

com smbolo de Jacobi igual a

+1

Parte I

lim

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Ve
rs

Pr
e

Conceitos Fundamentais

Ve
rs

Pr
e

lim

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

notas de aula  verso 85 - Jernimo C. Pellegrini

Pr
e

lim

in
ar

A primeira parte aborda os problemas bsicos da Criptograa, expondo construes clssicas. So dadas denies precisas para cada conceito, e h sees
em cada Captulo dedicadas a denies e demonstraes de segurana com

Ve
rs

razovel rigor.

notas de aula  verso 85 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 1

lim

Introduo e viso geral

A Criptograa 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

Pr
e

concretos.

1.1 Encriptao simtrica

O problema mais conhecido abordado pela Criptograa o de modicar mensagens para que quem 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

chave.

criptossistemas simtricos,

chamado de

e o segredo normalmente

Todo criptossistema simtrico oferece ao usurio duas funes, cada uma


com dois argumentos: uma para cifrar e outra para decifrar. Convencionaremos

Enc(m, k)

para a funo que cifra e

Ve
rs

usar

com a chave

todos

k.

Dec(m, k) para a funo que decifra


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

Evidentemente, necessrio que

k.

A funo que transforma a mensagem (que chamamos de

algo irreconhecvel (que chamamos de


difcil de inverter sem o argumento

k,

texto cifrado)

texto claro)

em

deve necessariamente ser

de outra forma qualquer um com acesso

mensagem poderia facilmente decifr-la.


Ao algoritmo usado para calcular as funes

cifra.

Enc

Dec

damos o nome de

comum classicar cifras em dois tipos:

Cifras de uxo,

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 gura a seguir:


7

notas de aula  verso 85 - 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

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


Em uma cifra de uxo usando ou exclusivo,

idnticas;

Cifras de bloco,

Enc

Dec

so

lim

mensagens.

que transformam sequncias de bits de tamanho xo, re-

alizando nelas transformaes difceis de inverter.


mensagem

1 1 0 1 1

0 0 0 1 0

Pr
e

0 1 1 0 1

1 1 0 1 1

0 0 0 1 1

1 1 1 1 0

texto cifrado

A funo

f (k, m)

na gura aceita dois parmetros: um a chave secreta

usada para encriptar a mensagem e outra a mensagem;

f 1 (k, c)

deter-

Ve
rs

mina a mensagem a partir do texto cifrado e da chave. importante que

f 1

seja difcil de calcular sem a chave

(deniremos com mais clareza

esta diculdade 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 sicamente 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 85 - Jernimo C. Pellegrini

1.3. RESUMOS (HASHES) CRIPTOGRFICOS

lim

in
ar

Quando Alice precisa cifrar uma mensagem para Bob, usa a chave pblica
de Bob (disponvel publicamente). Ao receber a mensagem, Bob pode decifr-la
usando sua chave privada.

Pr
e

1.3 Resumos (hashes) criptogrcos


Resumos criptogrcos (ou funes de
trataremos. Funes de

hashing

hashing)

so outra ferramenta de que

mapeiam sequncias de bits de tamanho arbi-

trrio (como arquivos e mensagens) em pequenas sequncias, de tamanho xo.


Desta forma estes pequenos resumos podem ser usados para identicar 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

Ve
rs

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 modicada, o hash parecer completamente diferente:

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 1.

10

INTRODUO E VISO GERAL

mensagem secreta!

SHA-256

in
ar

fbb5a6d34f05b708e780fd2ab674845b5d34162066d976a819bf02c02e444a98

Embora seja fcil calcular, a funo de hashing deve ser difcil de inverter
(e portanto no deveria ser possvel a algum chegar cadeia mensagem

1cc5 a94a).

lim

secreta a partir de

Funes de hashing so diretamente teis em diversas situaes onde queremos garantir a integridade de dados, e tambm na construo de outras ferramentas criptogrcas.

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


evitando que algum mais o modique (um vrus ou um intruso, por exemPoderamos computar resumos (hashes) destes arquivos (o resumo de

Pr
e

plo).

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
modique 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 modic-la (ele pode recalcular o resumo do arquivo modicado, 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

Message Authentication Code).

(ou MAC 

Funes de hashing tambm podem ser usadas para construir geradores pseu-

Ve
rs

doaleatreos, 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
vericar que realmente Alice publicou aquele documento (e Alice no poder
posteriormente negar que o fez).

notas de aula  verso 85 - Jernimo C. Pellegrini

1.5. ESTABELECIMENTO DE CHAVES

lim

in
ar

11

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

Pr
e

privada.

1.5 Estabelecimento de chaves

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.

1.6 Chaves pblicas conveis

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 conana, 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 Criptograa baseada em identidades.

1.7 Protocolos

Alm dos problemas j descritos, a Criptograa moderna trata tambm de problemas de interao entre partes onde no necessariamente h conana mtua.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 1.

12

INTRODUO E VISO GERAL

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


algum objetivo so chamados de

protocolos.

Esta Seo descreve alguns dos

problemas e tcnicas usualmente abordados no estudo de protocolos criptogr-

Transferncia opaca (ou inconsciente)

in
ar

cos.

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

lim

apenas transferncia inconsciente).

Compromisso

Alice deve escolher um valor (ou um dado qualquer) e comprometer-

se 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
uma funo de

Pr
e

revelar sua escolha. Pode-se implementar um esquema de compromisso usando

hashing:

Alice envia a Bob o resumo criptogrco de sua esco-

lha; mais tarde, quando Alice a revelar, e a escolha poder ser vericada por
Bob simplesmente calculando novamente o

hash.

Esquemas de compromisso po-

dem ser usados para implementar diversos protocolos, como cara-ou-coroa por
telefone, provas de conhecimento zero e computao segura por vrios atores.

Cara-ou-coroa pelo telefone

Suponha que Alice e Bob estejam sicamente

distantes, e queriam decidir algo usando um sorteio  jogando uma moeda,


Se ambos zessem suas escolhas (cara ou coroa) primeiro para

por exemplo.

depois um deles jogar uma moeda, este ltimo poderia obviamente trapacear.

Ve
rs

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

trato, mas como cada um dever abrir mo de algo, nenhum dos dois quer
assinar primeiro.

Compartilhamento de segredos

Uma senha d acesso a muitas informa-

es 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 conar em cada um deles. Idealmente,

notas de aula  verso 85 - Jernimo C. Pellegrini

1.7. PROTOCOLOS

13

esta senha deveria ser guardada em segredo por um grupo de pessoas, at que,
por exemplo, dois teros do grupo decida revel-lo. A diculdade est em permitir que

qualquer

conjunto de pessoas com mais de 2/3 do grupo possa revelar

in
ar

o segredo (no basta quebrar uma chave criptogrca em vrias partes).


Esquemas de compartilhamento de segredos permitem resolver este pro-

blema: derivamos de um segredo diversos pedaos de informao que podem

Pr
e

lim

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.

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 vericar que o resultado est correto. possvel construir protocolos

Ve
rs

criptogrcos 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 que sabendo

exatamente

Provas de conhecimento zero

qual o patrimnio da outra.

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

esta

pessoa, sem que esta prova possa convencer

Podemos tambm querer provar que sabemos como realizar

uma tarefa sem mostrar como faz-lo.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 1.

14

INTRODUO E VISO GERAL

1.8 Criptograa Ps-Quntica


Os computadores qunticos, embora ainda apenas teoricamente, poderiam resolver de maneira eciente problemas como o do logaritmo discreto e o da fatorao

diculdade

em resolver es-

in
ar

de inteiros. Como muito da Criptograa depende da

tes problemas, criptlogos tentam conseguir avanos em mtodos criptogrcos

no-qunticos que sejam resistentes a ataques de algoritmos qunticos, usando


em criptossistemas e esquemas criptogrcos problemas diferentes destes.

1.9 Criptograa Quntica

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

lim

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.

Pr
e

1.10 Sobre este texto

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


de Complexidade Computacional (tempo polinomial, tempo exponencial e

N P-

completude) e muito pouco de Probabilidade (alguns fatos bsicos e uma nica


distribuio  a uniforme). A

maneira como estes conceitos so usados pode, no


modus operandi para

entanto, ser um tanto estranha inicialmente. Felizmente o

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

Ve
rs

os sistemas descritos nas sees anteriores.

1.10.1

Jogos e experimentos

Muitas das denies 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 desaador 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 criptogrca).
O exemplo a seguir um jogo extremamente simples de adivinhao de

nmeros entre um desaador

n.

Damos a este jogo o nome

D e um adversrio A, onde usamos um parmetro


NUMBER_GUESS(A, n).

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

nmero

k entre um e n, e depois o envia a A.

O adversrio ento tenta adivinhar

notas de aula  verso 85 - Jernimo C. Pellegrini

1.10. SOBRE ESTE TEXTO


o nmero e envia sua tentativa

15

k1

D.

Se o adversrio acertou, o desaador

encerra o jogo e declara que o resultado do experimento um (signicando que


o adversrio obteve sucesso). Se o adversrio no acertou (ou seja, se

k > n,

ou

novamente. O desaador aceitar at tres tentativas de

A, mas depois encerrar

o jogo.
O jogo mostrado no diagrama a seguir.

lim

k R [1, n]

k1 6= k ),

e o adversrio pode tentar

in
ar

k <n

o desaador responde dizendo se

k1
k1 = k 1 ,

k1 k

FIM

k2

k2 k

FIM

Pr
e

k2 = k 1 ,

k3

k3 = k 1
k3 6= k 0

Calculamos agora a probabilidade de sucesso de


tentativa,

acerta com probabilidade

1/n.

neste jogo. na primeira

D,

Ao receber a resposta de

adversrio poder ento descartar uma parte do intervalo, mantendo apenas


valores plausveis.

Na segunda tentativa, a probabilidade de acerto

aps a resposta o adversrio restringir o intervalo plausvel a

Ve
rs

e ltima tentativa ser em um intervalo de tamanho


acerto nesta ltima tentativa
portanto

1/zi > 1/n

1/z2 .

Cada

zi

z2 ,

z2 .

z1

1/z1 ,

A terceira

e a probabilidade de

estritamente menor que

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 Criptograa. No prximo experimento testamos um criptossistema

contra um adversrio

adversrio escolhe duas mensagens e envia ao desaador. Em seguida


aleatoreamente um bit (b
no conjunto

lhido).

{0, 1}),

R {0, 1}

signica que

e Encripta a mensagem

ento envia

mb

mb

A.

escolhe

escolhido aleatoreamente

(que corresponde ao bit esco-

encriptada ao adversrio, que deve adivinhar qual das

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 1.

16

mensagens foi cifrada. Quando

INTRODUO E VISO GERAL

consegue adivinhar qual era a mensagem, o

experimento tem um como resultado; em caso contrrio, o resultado zero.

m0 , m1

b R { 0, 1 }

mb
b = b0 1
seno 0

lim

b0

in
ar

Claramente, queremos que o adversrio tenha probabilidade de sucesso muito


pequena neste jogo (uma denio 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

1.10.2

Pr
e

este acompanhar a descrio.

Notao e convenes

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 criptogrcas, estes bits sero interpretados como

nmeros. Ao longo do texto ento presumiremos que os nmeros so representados em base dois, e deniremos que o tamanho de um nmero o nmero de
bits necessrio para represent-lo.

log(x) neste texto refere-se ao logaritmo de x na base dois.


x R X signica  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.

Ve
rs

Assim,

A notao

Muitas das demonstraes tem como componente algoritmos. Quando o al-

goritmo simples o suciente 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 especicada 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

notas de aula  verso 85 - Jernimo C. Pellegrini

1.10. SOBRE ESTE TEXTO

17

Exerccios

in
ar

ha, b, ci f (x)

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?

Ex. 3  Considere o seguinte jogo entre um desaador

e um adversrio

O desaador sorteia cinco cartas de baralho e as envia ao adversrio.

lim

A.

adversrio obrigado, ento, a trocar uma das cartas  mas pode escolher
qual delas trocar.

ento devolve uma das cartas e recebe outra, escolhida

A mostra suas cartas a D. Se as cartas mostradas


D determinar que o resultado do experimento
A); caso contrrio, o resultado ser zero.

aleatoreamente. Em seguida,

forem todas do mesmo naipe,


um (signicando sucesso de

Pr
e

c1 , c2 , . . . , c5

ci R C

ci

c6

c6 R C \ {ci }

c1 , . . . , c 6

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

Ve
rs

Determine a probabilidade de sucesso de

no jogo.

Ex. 4  Dena 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


para

k = 1, 2, . . ..

21

aps

rodadas

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 1.

INTRODUO E VISO GERAL

Ve
rs

Pr
e

lim

in
ar

18

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 2

lim

Criptossistemas e Noes de
Segurana

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

Pr
e

Notas, este Captulo inicia com alguns pargrafos que resumem, em muito
alto nvel de detalhes, a evoluo dos conceitos de segurana em Criptograa,
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 Criptograa passaram por diversas fases


claramente distintas. Inicialmente criptossistemas eram criados e sua segurana
dependia de quanto tempo ela permanecia til, sem que adversrios conseguis-

sem frustrar os objetivos do usurio.


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

Ve
rs

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 criptogrcas 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 demons-

traes formais de segurana para construes criptogrcas, de forma a evitar


a prtica (comum at ento) de usar critrios empricos para determinar a conana em criptossistemas e ferramentas criptogrcas.
19

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 2.

20

CRIPTOSSISTEMAS E NOES DE SEGURANA

2.1 Criptossistemas
Embora o escopo da Criptograa seja muito mais amplo que o estudo de criptossistemas simtricos, os usaremos na descrio de conceitos fundamentais sobre
No decorrer do texto usaremos os nomes
criptam e decriptam mensagens.

Enc

in
ar

segurana em criptograa.

Dec

para funes que en-

Normalmente estas funes aceitaro pelo

menos dois argumentos: uma chave e um texto. Ao invs de denotar


e

Dec(k, x),

usaremos

Enck (x)

Deck (x).

Enc(k, x)

Denio 2.1 (Criptossistema de chave privada). Um criptossistema de chave


privada consiste de trs algoritmos polinomiais:

um algoritmo randomizado que escolhe uma chave de acordo com

lim

Gen,

alguma distribuio de probabilidades;

Enc, um algoritmo randomizado


m e retorna um texto cifrado c;

e retorna uma mensagem

Para toda chave k , toda


Deck (Enck (m)) = m.

mensagem

Neste texto denotamos por


e

uma mensagem

um algoritmo determinstico que aceita uma chave

cifrado

e um texto

m.

Pr
e

Dec,

k,

que aceita uma chave

e todo texto cifrado

c,

necessrio que

o espao de chaves,

M o espao de mensagens

o espao de textos cifrados

Usaremos as distribuies de probabilidade sobre


o sobre

determinada pelo algoritmo

Gen.

K, M

C.

determinada pelo criptossistema, mas sim pelas probabilidades


mensagens. As distribuies sobre

A distribui-

M no
a priori das

A distribuio sobre

so independentes; j a distribuio

Enc.
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 simplicar 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].

sobre

determinada pelas outras e pelo algoritmo

Ve
rs

Denotaremos as trs variveis aleatreas por

2.2 Princpio de Kercho


H um princpio para construo de criptossistemas, descrito por Auguste Kercho em 1883, e que continua sendo relevante. Damos nesta Seo uma verso
moderna dele (a parte relevante do texto original de Kercho, traduzido, est
na Seo de Notas).

notas de aula  verso 85 - Jernimo C. Pellegrini

2.3. SIGILO PERFEITO

21

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.

in
ar

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

todo

mM

lim

Denio 2.2 (Sigilo Perfeito). Um criptossistema tem sigilo perfeito se, para

c C , Pr(m|c) = Pr(m).

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


ser til.

Um criptossistema tem sigilo perfeito se e somente se, para todo


m M e c C , Pr(c|m) = Pr(c).
Demonstrao. ()

Pr
e

Lema 2.3.

Dada uma mensagem

equao

e um texto cifrado

c,

considere a

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

Criptossistemas com sigilo perfeito tem uma sria limitao, que demons-

Ve
rs

tramos 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 xo, isso implica que o tamanho das chaves deve ser igual ao tamanho dos

documentos

Teorema 2.4.

Em um criptossistema com sigilo perfeito, |K| |M|.

Demonstrao. Suponha que |K| < |M|,


sobre |M|. Seja c C tal que Pr(c) > 0,

e considere a distribuio uniforme

mensagens que poderiam ser o deciframento de

M(c) = {m | m = Deck (c)

1 Se

M(c)
c:

e seja

para algum

o conjunto de todas as

k K}
M como todas as
8 10242 = 8388608

quisermos cifrar documentos de 1 Mb, teremos que determinar

sequncias de bits que formam documentos de 1 Mb, que o mesmo que


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 85 - Jernimo C. Pellegrini

22

CAPTULO 2.

CRIPTOSSISTEMAS E NOES DE SEGURANA

e portanto, como

m
/ M(c),

|M(c)| < |M,

deve haver alguma mensagem

e neste caso

1
.
M

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

Mostramos assim que com

|K| < |M|

Um exemplo de criptossistema com sigilo perfeito o


chamado de
Usamos

cifra de Vernam.
n
a notao 1 para

a sequncia de

o conjunto de todas as sequncias de

tal que

Pr(m0 ) =

1
|M| .)
um criptossistema no tem sigilo

uniforme, por isso armamos que

perfeito.

m0 M

lim

(A distribuio sobre

que
que

in
ar

Como para cada mensagem m M(c) h pelo menos uma chave k K tal
m = Deck (c), ento |M(c)| |K|. Mas como nossa hiptese inicial era de
|K| < |M|, temos que
|M(c)| |K| < |M|

one-time pad, tambm

bits iguais a um, e

{0, 1}n

para

bits.

Construo 2.5 (One-time pad). O one-time pad requer que o tamanho das

Pr
e

chaves seja igual ao das mensagens e dos textos cifrados. Assim, usando representao binria para as chaves,

K = M = C = {0, 1}n

Gen

escolhe uniformemente uma chave

Enc

Dec

para algum

n.

kK

realizam a operao ou-exclusivo bit a bit entre seus dois argu-

mentos. Ou seja,

Enck (m) = k m,
Deck (c) = k c.

Ve
rs

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


chave

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

notas de aula  verso 85 - Jernimo C. Pellegrini

2.3. SIGILO PERFEITO

23

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


perfeito.

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

in
ar

Lema 2.6.

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),
() (Rascunho) Presuma

lim

e esta direo da prova est completa.

P (c|m0 ) = P (c|m1 ),

o Lema 2.3.

depois calcule

P (c)

usando

Teorema 2.7.

O one-time pad tem sigilo perfeito.

Demonstrao.

Como a denio de sigilo perfeito no pressupe qualquer dis-

qualquer sobre

M, deve valer para todas. Tomamos ento


M, uma mensagem m e um texto cifrado c.

Pr
e

tribuio sobre
pad,

uma distribuio
Para o one-time

Pr(c|m) = Pr[M K = c|M = m]


= Pr[m K = c]

= Pr[K = m c] =

Como isto vale para toda distribuio sobre

c,

m1

e qualquer texto cifrado

M e para quaisquer mensagens m0 ,

ento

P (c|m0 ) =

Ve
rs

1
|K|

1
= P (c|m1 )
|K|


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

H uma denio 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,

originou um texto cifrado

c.

m0

ou

m1 ,

Usaremos esta simulao de jogo para provar que a

probabilidade de acerto do adversrio exatamente

1/2.

Usaremos estes jogos

tambm nas denies de outras noes de segurana ao longo do texto.


Consideraremos possveis ataques a um criptossistema.

usado h um adversrio

A.

No modelo a ser

Deniremos um experimento para o criptossis-

= (Gen, Enc, Dec) e o adversrio A. Chamaremos este experimento de


PRIV_EAV(A) (eav para eavesdropping). Deixaremos que o adversrio escotema

lha duas mensagens. Em seguida, cifraremos uma delas (sem que ele saiba qual)

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 2.

24

CRIPTOSSISTEMAS E NOES DE SEGURANA

e a enviaremos a ele. O adversrio dever ento descobrir qual das mensagens


foi cifrada.

PRIV_EAV

aceita dois parmetros: o criptossistema e o ad-

quer e

para um criptossistema qual-

in
ar

O Experimento

versrio. A notao que usaremos neste texto

para um adversrio. Quando um criptossistema tiver sigilo perfeito,

ele poder ser denotado

Experimento 2.8 (PRIV_EAV(, A)).

escolhe duas mensagens

2. Uma chave

kK

4. Se

m1 M;

gerada usando

mente. Ento a mensagem


3.

m0
mb

Gen,

mostra

b0 ;

b = b0 ,

o resultado do experimento

seno 0.

escolhido aleatorea-

A;

(e dizemos que

teve sucesso),

Pr
e

e um bit

cifrada e enviada para

lim

1.

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

m0 , m1

Enck (mb )
b0

b = b0 1
b 6= b0 0

Ve
rs

Denio 2.9 (Sigilo perfeito de criptossistema simtrico (verso com adversrio)). Um criptossistema tem sigilo perfeito sobre um conjunto de mensagens

se para todo adversrio

A,

Pr[PRIV_EAV(, A) = 1] =

1
.
2


Esta denio equivalente denio 2.2, mas no apresentaremos a de-

monstrao. Note que esta denio no impe restries ao tamanho das mensagens e nem ao tempo que

pode demorar para executar.

No decorrer deste texto vrias denies de segurana semelhantes a esta,

baseadas em experimentos, sero apresentadas. Todos os experimentos so parametrizados (neste caso os parmetros foram apenas

A;

haver variaes).

notas de aula  verso 85 - Jernimo C. Pellegrini

2.4. SEGURANA EMPRICA E COM HEURSTICAS

25

2.4 Segurana emprica e com heursticas


As noes de segurana usadas na prtica desde Shannon at o nal da dcada
de 70 no so rigorosas ou formais o suciente para serem descritas neste texto.

in
ar

No entanto, mesmo com o surgimento da segurana demonstrvel no comeo da

dcada de 80, em muitas reas da Criptograa no foi possvel passar a usar


construes com demonstraes de segurana. Um exemplo o desenvolvimento

de cifras de bloco, que sempre foram mais ecientes 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 renados ao longo do tempo: mtodos

comuns de ataque, padres de arquitetuar que parecem resistir a estes mtodos,

lim

e assim por diante. Estas ideias e mtodos (heursticas) mostraram ser bons
o suciente para a construo de cifras de bloco cuja segurana vericada em-

piricamente 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

2.5 Segurana demonstrvel

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


necessrio denir rigorosamente critrios de segurana e identicar conjecturas
nas quais as demonstraes se baseiam.
seguir.

Denir rigorosamente segurana:

Estes dois pontos so elaborados a

antes de demonstrar que uma constru-

o criptogrca segura, necessrio denir o que signica ser seguro


no contexto em que trabalhamos.

Isto necessrio obviamente porque

no h como elaborar uma demonstrao rigorosa sem denies precisas.

Ve
rs

No entanto, denies precisas tambm servem ao usurio ou engenheiro


que queira escolher uma ferramenta criptogrca: 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).

Identicao 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 conveis 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
cone em uma construo baseada em fatorao de inteiros do que em
outra, baseada em um problema desconhecido).

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 2.

26

CRIPTOSSISTEMAS E NOES DE SEGURANA

A segurana demonstrvel tornou-se o mtodo padro para desenvolvimento


de algumas construes  em particular, na criptograa assimtrica. Algumas
construes, no entanto, continuaram a ser desenvolvidas na prtica com heu-

in
ar

rsticas, porque o trabalho terico que foi possvel desenvolver no levava a


construes ecientes. Este o caso das cifras simtricas de uxo e de bloco, e
de funes de hashing.

A segurana de cifras de bloco, por exemplo, passou de arte para heu-

rstica: com o tempo o conjunto do conhecimento a respeito de mtodos de

ataque e arquitetura de cifras de bloco permitiu identicar estratgias melhores


de projeto. Alm disso, a Criptanlise passou a possibilitar diversas vericaes
de segurana para estas construes.

Ao longo do tempo, no entanto, algum progresso foi feito na tentativa de

2.5.1

Cenrios de ataque

lim

aproximar os mundos da criptograa simtrica e da segurana demonstrvel.

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


criptossistema. As quatro mais simples so listadas a seguir.

KPA,

Pr
e

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


com uma chave k e tenta determinar as mensagens;
ataque com texto claro conhecido: aqui o adversrio conhece pares

de textos claros e cifrados, todos encriptados com uma mesma chave


tenta decriptar um outro texto cifrado, tambm encriptado com

CPA (Chosen Plaintext Attack),

k,

k;

ataque de texto claro escolhido: o adver-

srio 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

Ve
rs

daquela que realmente quer decifrar.

Os dois primeiros ataques so chamados de

ativos.

Estes ataques dizem respeito a

sigilo,

passivos,

e os dois ltimos de

e portanto fazem sentido apenas para

criptossistemas ou outras construes onde mensagens so de alguma forma encriptadas. Denies 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 denies de
segurana sero apresentadas quando diferentes criptossistemas forem discutidos.

notas de aula  verso 85 - Jernimo C. Pellegrini

2.5. SEGURANA DEMONSTRVEL

2.5.2

27

Probabilidade desprezvel

Precisaremos falar de criptossistemas onde o adversrio tem probabilidade desprezvel de sucesso, portanto deniremos desprezvel:

informalmente, uma

proco de qualquer polinmio.

Denio 2.10 (Funo desprezvel). Uma funo


polinmio

p()

existe um

desprezvel se para todo

tal que para todos os inteiros

1
p(n) .

n > N , f (n) <




Por exemplo,

1
2n desprezvel, porque para qualquer polinmio
1
1
a partir do qual n <
2
p(n) ;
desprezvel: seja

p,

haver um

lim

f (n) =

1
g(n) = n4 +100
no
1
qual h(n) < 4 .
n

in
ar

funo dita desprezvel quando se aproxima de zero mais rpido que o rec-

h(n) =

1
n5 . H algum

a partir do

importante observar que esta denio assinttica: no armamos nada


para valores de

menores que

N.

Pr
e

No resto do texto ser comum encontrarmos funes desprezveis a partir do


seguinte raciocnio: para um parmetro

2n ;

n,

um espao amostral tem tamanho

como supomos distribuio uniforme, a probabilidade de

e encontramos uma funo desprezvel.

dada por

Os espaos amostrais de tamanho

1
2n ,
n

n bits.
2
por negl .

normalmente so algo como todas as sequncias de


Denotaremos funes desprezveis arbitrrias

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

Ve
rs

desprezvel.

Eventos com probabilidade desprezvel podem ser ignorados para efeitos pr-

ticos; aceitaremos como seguro um criptossistema que tenha probabilidade desprezvel de ser quebrado.

2.5.3

Exemplo de denio de segurana

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


computacional do adversrio. Relaxaremos estas restries para chegar a uma
denio de segurana mais til na prtica:

Apenas consideraremos adversrios executando algoritmos randomizados


que executam em tempo polinomial;

2 Usamos negl

para manter a consistncia com textos em Ingls, onde tais funes so

chamadas de negligible .

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 2.

28

CRIPTOSSISTEMAS E NOES DE SEGURANA

Admitiremos que o adversrio possa quebrar o sistema com probabilidade


desprezvel.

Deniremos um experimento para o criptossistema

e o adversrio A.

Cha-

Note que este experimento

in
ar

PRIV_EAV(, A, n).

maremos este experimento de

no o mesmo que aquele usado na Denio 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

1n

(o tamanho das mensagens). Damos ao adversrio a entrada

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

lim

qual das mensagens foi cifrada. Formalizamos esta ideia da seguinte forma:

Experimento 2.11 (PRIV_EAV(, A, n)).


1. O adversrio

m1 M,

recebe uma entrada

1n

e escolhe duas mensagens,

ser o mesmo, mas no precisa ser igual a

kK

gerada usando

reamente. Ento a mensagem

4. Se

mb

e um bit

b0 ;

b = b0 ,

o resultado do experimento

escolhido aleato-

(e dizemos que

Ve
rs

cifrada e enviada para

mostra

seno 0.

n);

Gen(1n ),

Pr
e

2. Uma chave

3.

m0

que tenham o mesmo tamanho (o tamanho das mensagens deve

A;

teve sucesso),

A
1n
m0 , m1

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 denio de segurana contra ataques de texto

cifrado conhecido.

notas de aula  verso 85 - Jernimo C. Pellegrini

2.5. SEGURANA DEMONSTRVEL

29

Denio 2.12 (Segurana contra ataque de texto cifrado conhecido). Um

tem indistinguibilidade de texto cifrado na presena


de um grampo M se para todo adversrio A existe uma funo desprezvel negl

criptossistema simtrico

Pr[PRIV_EAV(A, n) = 1]

1
+ negl(n).
2

in
ar

tal que,

Esta nova denio de segurana contra ataque de texto cifrado

no implica
|K| <

em sigilo perfeito, portanto podemos obt-la com criptossistemas onde

Notas

lim

|M|.

A denio de criptossistema que demos a mesma dada por Katz e Lindell [KL08] e tambm por Goldreich [Gol04].

Auguste Kercho publicou suas idias a respeito de criptossistemas em seu

La Cryptographie Militaire , na revista francesa Journal des sciences


militaires em 1883. Os princpios para construo de criptossistemas, descritos
por Auguste Kercho, so:

Pr
e

artigo

1. O sistema deve ser praticamente, se no matematicamente, indecifrvel;


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 modicvel vontade pelos correspondentes;

4. Deve ser aplicvel a correspondncias telegrcas;

Ve
rs

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.
A Teoria da Informao foi desenvolvida inicialmente por Claude Shannon

em um artigo de 1948 [Sha48] (e no livro de 1949 [SW49]). Shannon tambm


desenvolveu um modelo terico para comunicao com sigilo em outro artigo,
em 1949 [Sha49].

Embora o artigo de Shannon de 1948 seja bastante claro e

acessvel, o livro de Cover e Thomas [CT06] 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 Criptograa [Mau99].

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 2.

30

CRIPTOSSISTEMAS E NOES DE SEGURANA

O one-time pad foi descrito inicialmente por Vernam em um artigo de 1926 [Ver26]
(por isso tambm conhecido como cifra de Vernam), sem qualquer demonstrao de segurana; em 1949 Shannon deniu sigilo perfeito e mostrou que esta

in
ar

uma propriedade da cifra de Vernam [Sha49].


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

O desenvolvimento de construes com forte nfase em segurana demons-

trvel iniciou com a publicao do criptossistema de Sha Goldwasser e Silvio


Micali em 1982 [GM82].

Ex. 5  Implemente o

lim

Exerccios

one-time pad.

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

Pr
e

(de forma contrria ao que se recomenda quando usamos o one-time pad), mostre
que

m m0 = c c0 .

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


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 denio de funo desprezvel usando a notao de

Ve
rs

crescimento assinttico, tpica em anlise de algoritmos.

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

Enc(m, k) funciona da
blocos m0 , m1 , , mm
sendo que ci = mi k ;

Dec(c, k)

seguinte maneira:
de

semelhante a

n bits.

Enc,

a mensagem

{0, 1}n ;
dividida em

Cada bloco encriptado separadamente,

mas permutando

m.

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

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


k

notas de aula  verso 85 - Jernimo C. Pellegrini

2.5. SEGURANA DEMONSTRVEL

31

b) Prove que o criptossistema no seguro de acordo com nenhuma das denies dadas neste Captulo.
c) Implemente o criptossistema, e tambm tente implementar um programa

in
ar

que exemplique sua insegurana.

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


tem o mesmo tamanho (xo) das mensagens e so escolhidas ao acaso tem sigilo

Ve
rs

Pr
e

lim

perfeito.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 2.

CRIPTOSSISTEMAS E NOES DE SEGURANA

Ve
rs

Pr
e

lim

in
ar

32

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 3

lim

Problemas Difceis

Funes de mo nica so fundamentais para a Criptograa moderna. Informalmente, uma funo

de mo nica se fcil de calcular e difcil de inverter: h

algoritmo polinomial para calcular

f (x),

mas dado

para encontrar um elemento da pr-imagem de

no h algoritmo eciente

(algum

tal que

f (x) = y ).

Uma bvia aplicao de funes de mo nica a encriptao de mensagens.

de mo nica, queremos encriptar mensagens usando

Pr
e

Se

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

Para faz-lo, podemos

simplesmente usar uma funo de mo nica sobre alguma funo que expanda

a semente.

Ve
rs

3.1 Funes de mo nica


Comeamos com uma denio 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

de

conseguir encontrar um elemento da pr-imagem de

no tamanho da entrada de

A, a probabilidade

deve ser desprezvel

f.

Denio 3.1 (Funo de mo nica forte). Uma funo

fortemente de

mo nica se
1.

2.

Fcil de computar:
f;

Difcil de inverter:

Existe um algoritmo de tempo polinomial que computa

Todo algoritmo

randomizado de tempo polinomial

deve ter probabilidade desprezvel de encontrar uma pr-imagem de


33

f.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 3.

34

Ou seja, dado um elemento


no domnio de

f,

n
p()

com tamanho

todo polinmio positivo

PROBLEMAS DIFCEIS
escolhido uniformemente
e todo

sucientemente

grande,

1
p(n)

in
ar



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

A entrada

1n para A necessria porque no queremos classicar 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 ta-

manho da entrada e que tem inversa. Estas so chamadas de permutaes de

lim

mo nica.

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

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

P=
6 N P,

Pr
e

de funes de mo nica condicionalmente: sabemos que elas devem se

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

denio relaxada de funo de mo nica (condicionada a uma conjec-

tura);

A soma de subconjuntos.

A obteno da inversa um problema

Ve
rs

completo (e portanto de mo nica se

for diferente de

N P-

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

o gerador do grupo

g x (mod p)

onde

primo e

(Np , ).

Exemplo 3.3 (Logaritmo Discreto). Sejam p um nmero primo;


1
de Z com a operao de multiplicao . Cremos que a funo

um gerador

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

1 ou

p.

uma raiz primitiva mdulo

J
p

 consulte o Apndice B.

notas de aula  verso 85 - Jernimo C. Pellegrini

3.1. FUNES DE MO NICA


A funo

dexp

35

computvel em tempo polinomial. Alm disso, preserva o

y = dexp p,g (x), no conhecido


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

tamanho da entrada e uma bijeo. Dado

em p)

para determinar

in
ar

algoritmo eciente (polinomial

criptogrcas h muito tempo. Usaremos a hiptese de que no existam algoritmos ecientes para resolv-lo, e nos referiremos a tal hiptese como a hiptese

do logaritmo discreto :

lim

Conjectura 3.4 (Diculdade 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
bits, seja

mult (p, q) = pq .

Acreditamos que a

nica, com o parmetro de segurana sendo

mult

p, q

de tamanho

seja uma funo de mo

computvel em tempo polinomial. No conhecemos,

Pr
e

evidente que

n.

mult

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 .

Conjectura 3.6 (Diculdade 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


descrio de um subconjunto deles, a funo

n inteiros x1 , , xn e uma
somasub retorna o somatrio dos

elementos do subconjunto.

somasub(x1 , x2 , , xn , S) = (x1 , x2 , , xn ,

Determinar o subconjunto

N P -completo,

xi )

iS
a partir dos elementos

xi

e da soma um problema

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 menN P -completo pode ser fcil de resolver na maioria dos

cionada). Um problema

2 Discrete logarithm assumption em Ingls.


3 Integer factorization assumption nos textos

em Ingls.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 3.

36

casos

PROBLEMAS DIFCEIS

 somente no conhecemos algoritmos ecientes para as

de problemas

N P -completos.

piores

instncias

Cremos que o problema da soma de subconjuntos

seria um bom candidato no por ser

N P -completo,

mas por no conhecermos

3.1.1

in
ar

algoritmos ecientes para resolv-lo.

Funes fracamente de mo nica

A denio 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

probabilidade no desprezvel.
mo nica se:
1.

2.

Fcil de computar:
f;

lim

Denio 3.8 (Funo de mo nica fraca). Uma funo

fracamente de

Existe um algoritmo de tempo polinomial que computa

Ligeiramente difcil de inverter:

Para todo algoritmo

p()



P r A(f (x), 1n )
/ f 1 f (x)) >

Com esta denio podemos mostrar que

A randomizado de
n sucientemente

e todo

Pr
e

tempo polinomial, todo polinmio positivo


grande,

falhe com

1
p(n)


mult , por exemplo, de mo nica.

Para k sucientemente grande, a probabilidade de um nmero com


k bits escolhido ao acaso seja primo maior que 1/k .

Lema 3.9.

O Exerccio 14 pede uma demonstrao deste Lema.

A funo mult fracamente de mo


nica se a hiptese da fatorao de inteiros for verdadeira.

Ve
rs

Teorema 3.10 (mult de mo nica).

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
2
2
nmeros, a probabilidade de ambos serem primos (1/k) . Como (1/k) 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.

Funes de mo nica fortes existem se e somente se funes


de mo nica fracas existem.
Teorema 3.11.

notas de aula  verso 85 - Jernimo C. Pellegrini

3.2. PREDICADOS HARD-CORE

37

3.2 Predicados hard-core


Embora em primeira anlise possa parecer que funes de mo nica sejam
seguras o suciente para que as usemos no desenvolvimento de ferramentas

in
ar

criptogrcas, 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 eciente de obter o valor do lance, mas isso no signica
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.

hard-core de uma funo

sucesso perto de

b(x)

1/2.

Denio 3.12 (Predicado Hard-Core).

hard-core

ii)

se qualquer algoritmo pro-

f (x)

tiver probabilidade de

H : {0, 1} {0, 1}

se

H um algoritmo polinomial para computar

Para qualquer algoritmo randomizado polinomial A e

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


onde

o nmero de bits de

um predicado

H(x);

Pr
e

i)

de uma funo

a partir de

lim

Um predicado

babilstico polinomial que calcule

x escolhido ao acaso,

1
+ negl(k),
2

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.

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


de uma funo de mo nica no apenas terica: realmente possvel computar

dado

dexp p.g (x).

Ve
rs

um dos bits de

Teorema 3.13.

nomial em p.

Dado dexp p,g (x), possvel computar lsb (x) em tempo poli-

Demonstrao. O seguinte algoritmo computa lsb (x) dado y = dexp p,g (x):
(p1)/2
calcule c = y
(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). Calcudexp 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!).
lamos

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 3.

38

PROBLEMAS DIFCEIS

O Lema a seguir usado na demonstrao de que

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

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 .

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

dexp p,g (x).


Temos p, g

y = dexp p,g (x).

polinomial que compute

mpar (ou seja, era uma potncia mpar de

uma potencia par de

mdulo

Esta potncia par de

msb (x)

g ),

divida

por

r1

r2

e agora temos

p.

tem duas razes quadradas

mdulo

Teorema B.34) e podemos calcul-las ecientemente. Uma delas ser


outra ser

g2+

(p1)
2

dado

(usando o algoritmo do Teorema 3.13). Se

Pr
e

Primeiro, calcule a paridade de

p (veja
g x/2 e

Podemos ento usar o algoritmo

para determinar qual destas razes a

menor (qual tem o bit mais signicativo igual a zero). Tomamos esta raiz (g

x/2

e iniciamos novamente o algoritmo. Desta forma determinamos cada bit de

e paramos quando chegarmos a

x,

1.

O algoritmo mostrado em pseudocdigo a seguir, usando


algoritmo que calcula paridade de

msb (x)
signicativo de x.

dado apenas

algoritmo eciente para calcular o bit mais

Ve
rs

o
a

y,

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)

lsb (x)

para o

para o suposto

notas de aula  verso 85 - Jernimo C. Pellegrini

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

in
ar

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

lim

3.3 Predicados hard-core para quaisquer funes


de mo nica
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.

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

Pr
e

Teorema 3.17.

i=1

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


um predicado hard-core para g .
H

faz o ou-exclusivo de um subconjunto dos bits de

Notas

Ve
rs

r).

A funo

pelos bits um de

x (determinado

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


Goldreich [Gol01].

Exerccios

Ex. 13  Reescreva a denio de funo de mo nica usando um experi-

mento (simulao de jogos), da mesma maneira que zemos para as denies


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 85 - Jernimo C. Pellegrini

CAPTULO 3.

40

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.

mindo que

b)
c)
d)
e)
f)
g)

P 6= N P ):

SAT
TSP
COBERTURA-POR-VERTICES
GERACAO-DE-PERMUTACAO
TETRIS
CVP
SBP

lim

a)

in
ar

Ex. 17  Tente construir funes de mo nica usando os problemas (presu-

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


sero o domnio e o contradomnio (que devem ambos ser nitos, uma vez que
s nos interessam funes que possamos implementar), e qual ser o parmetro
de segurana

usado para determinar que a funo de mo nica.

Se no conseguir construir a funo, explicite claramente o motivo.

Pr
e

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 verique 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 resol-

vido ecientemente? Novamente, em que isso implica para sua funo?


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

Ve
rs

das duas coisas, consegue identicar ao menos se existem bits mais seguros que outros?

Ex. 18  Ao invs de problemas

N P -difceis

poderamos tentar usar proble-

mas indecidveis em construes criptogrcas. Comente esta ideia.

Ex. 19  (Katz/Lindell) Mostre que a funo de adio

f (x, y) = x + y , onde

so representados com a mesma quantidade de bits e interpretados como

naturais, no de mo nica.

Ex. 20  (Talbot/Welsh) Um primo da forma

de Blum.

p = 4k+3 chamado de primo


k

Presumindo que aproximadamente metade de todos os primos com

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
eciente para fatorar inteiros que sejam produto de dois primos de Blum.

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 4

lim

Geradores Pseudoaleatreos e
Cifras de Fluxo

A aleatoriedade parte fundamental da Criptograa  usada na construo


de praticamente todas as tcnicas criptogrcas de que trataremos. O exemplo

Pr
e

mais claro talvez seja o das cifras de uxo, mencionadas brevemente na Seo 1.1.
As cifras de uxo 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 uxo, 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 criptogrcos dependem da distribuio
uniforme das chaves. H tambm outros usos de aleatoriedade em Criptograa,
que sero discutidos ao longo do texto: em diversas situaes necessrio usar

nmeros ou elementos no previsveis por um adversrio.

Ve
rs

4.1 Geradores pseudoaleatreos


Conceitualmente, um gerador pseudoaleatreo uma funo que recebe como
entrada (a semente) uma sequncia de bits de tamanho
outra sequncia de bits de tamanho

semente

10111010

e gera como sada

l(k) > k .
bits gerados

11000101 ... 110001010100111010100

Um gerador pseudoaleatreo de bits para aplicao em Criptograa deve

ter a propriedade de ser difcil de distinguir de uma sequncia completamente


aleatrea.

Precisamos de algumas denies relacionadas s distribuies de

variveis aleatreas.
41

notas de aula  verso 85 - Jernimo C. Pellegrini

42CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

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


queremos identicar na distribuio desses bits. Suponha que exista uma regra
ou algoritmo que, dado um nmero
Damos o nome

X1

n,

seleciona uma cadeia de bits de tamanho

distribuio dos bits dada pela regra para um bits,

Xn para a
famlia de distribuies.

distribuio para dois bits, e

Denimos ento uma

in
ar

n.
X2

sequncia geral de distribuies.

Denio 4.1 (Famlia de distribuies). Uma sequncia { X1 , X2 , . . . , Xn , . . . }


n
1
de distribuies sobre cadeias { 0, 1 } uma famlia de distribuies .

Se x tem n bits e foi selecionado de acordo com a distribuio Xn , denotamos


x Xn .

Quando estudamos dois algoritmos que geram bits, estamos interessados na

lim

distribuio de suas sadas. Dizemos que duas famlias

de distribuies

(geradas por dois algoritmos) so estatisticamente prximas quando, para


sucientemente grande, cadeias com
de pertencer a

B.

ou a

bits tem quase a mesma probabilidade

isto denido rigorosamente a seguir.

Denio 4.2 (Famlias de distribuies estatisticamente prximas). Duas fa-

Xn e Yn so estatisticamente prximas
X

Pr [Xn = e] Pr [Yn = e]

Pr
e

mlias de distribuies

se a expresso

desprezvel em

{ 0, 1 }

n.

Claramente, o somatrio sobre todas as cadeias

Se quisermos distinguir entre cadeias geradas por

Xn

Yn

e


estatisticamente

prximas, podemos obter cadeias sucientes para faz-lo (no mximo precisaremos obter todas as cadeias de

bits para cada uma das distribuies:

2(2n )).

Este algoritmo, no entanto, teria complexidade de tempo exponencial.


Diferenciaremos agora distribuies que podem ser identicadas (distinguidas) em tempo polinomial, e aquelas que no podem.

Ve
rs

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
cada distribuio) e enviamos ao teste

buio a cadeia foi sorteada. Este teste

1/2

para

para que tente decidir de qual distri-

representa qualquer programa que

rode em tempo polinomial tentando distinguir uma sequncia de bits, determinando se foi gerada de acordo com a distribuio
(Por exemplo,

Xn

ou com a distribuio

Yn

pode executar algum teste estatstico).

Experimento 4.3 (DISTRIB_DISTINGUISH(A, Xn , Yn )).


1. Escolha

s0 Xn

s1 Yn

2. Sorteie um bit aleatoreamente (b

1 Distribution ensemble

R { 0, 1 })

em Ingls. Algumas vezes usa-se probability variable ensemble

(famlia de variveis aleateras).

notas de aula  verso 85 - Jernimo C. Pellegrini

4.1. GERADORES PSEUDOALEATREOS

si

4. Receba
5. Se

para

b0

b = b0

de

o resultado do experimento

1;

seno

0.

in
ar

3. Envie

43

A Figura a seguir ilustra o experimento.

s0 Xn
s1 Yn
b R { 0, 1 }

sb

b0

b = b0 1
b 6= b0 0

lim

Pr
e

Denimos ento que duas famlias de distribuies so

indistinguveis
de 1/2.

se a probabilidade de sucesso de

computacionalmente

neste experimento prxima

Denio 4.4 (Famlias de distribuies computacionalmente indistinguveis).


Duas famlias de distribuies

Xn

se para todo algoritmo polinomial


funo desprezvel

negl()

Yn so computacionalmente indistinguveis
T e n sucientemente grande, existe uma

tal que

Ve
rs

Pr [DISTRIB_DISTINGUISH(D, n, Xn , Yn ) = 1]

1
+ negl(n).
2


Embora a Denio esteja rigorosamente correta, a Denio , mas com-

pacta, normalmente usada.

Esta segunda denio possivelmente ca mais

clara aps a compreenso da primeira.

Denio 4.5 (Famlias de distribuies computacionalmente indistinguveis).

Duas famlias de distribuies

Xn

se para todo algoritmo polinomial


funo desprezvel

negl()

Yn so computacionalmente indistinguveis
D e n sucientemente grande, existe uma

tal que





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

uYn

Quando duas distribuies

denotamos

An B n .

An

Bn

so computacionalmente indistinguveis,

notas de aula  verso 85 - Jernimo C. Pellegrini

44CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

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


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

Fk+1 , . . . , Fk+l .

l primeiros nmeros de Fibonacci Fk ,


i-simo nmero de Fibonacci para determinar o iBn : para l bits, calcula-se b1 , b2 , . . . , bl de maneira que
(
0 se Fk+i par
bi =
1 se Fk+i mpar.

bits, calculamos os

in
ar

uma sequncia de

Usamos o

simo bit da sequncia

Por exemplo, escolhemos

F10
F11
F12
F13

k = 10

e geramos uma sequncia com

= 55 ( 1)
= 89 ( 1)
= 144 ( 0)
= 233 ( 1)

Temos ento a sequncia

F14
F15
F16
F17

11011011.

=
=
=
=

bits:

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

lim

k.

No entanto, esta sequncia facilmente distinguvel da distribuio uniforme


(e portanto no podemos us-la para ns criptogrcos).

Pr
e

Como h duas vezes mais nmeros de Fibonacci mpares do que pares, a


probabilidade de uma sequncia com muitos uns pertencer a
que a probabilidade da mesma sequncia pertencer a

s = 1111 . . . 1 (n

An .

Bn

Para a sequncia

bits iguais a um), temos

  
 
1
1
1
Pr[s An ] =
...
=
2
2
2
  
 
2
2
2
Pr[s Bn ] =
...
=
3
3
3

1
.
2n
2n
.
3n
J

A diferena entre as duas probabilidades no desprezvel.

Denio 4.7 (Gerador pseudoaleatreo). Seja

Ve
rs

2 do

maior

um polinmio e G um al-

goritmo polinomial determinstico que recebe como entrada sequncias de bits

s {0, 1}n . A sada


pseudoaleatreo se:

Para todo

A sada de

de

G(s)

n, l(n) > n
G

para

tem tamanho

(ou seja,

l(|s|).

Ento

um

gerador

sempre expande sua entrada);

bits computacionalmente indistinguvel de uma

distribuio uniforme de

bits.

A segunda exigncia da Denio 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.

2 H

duas vezes mais nmeros de Fibonacci mpares do que pares.

notas de aula  verso 85 - Jernimo C. Pellegrini

4.2. GERADORES COM FUNES DE MO NICA

45

impossvel, no entanto, que um gerador pseudoaleatreo gere sequncias


com distribuio uniforme sobre todas as possveis sequncias de um dado comprimento.

Demonstrao.

Considere um gerador

in
ar

Teorema 4.8. A sada de um gerador pseudoaleatreo de bits no pode ter


distribuio uniforme.

l(n) = 2n (ou seja, G dobra o


n bits, ele poder gerar 2n
sada tenha 2n bits). De todas as

com

tamanho de sua entrada). Porque sua entrada tem


sequncias diferentes apenas (mesmo que a

lim

22n sequncias possveis com 2n bits, G somente produzir uma pequena parte:
2n
h 2
2n sequncias que G nunca sero geradas.
n
Assim, como a sada de G de tamanho 2n, mas h somente 2
sadas
n
possveis, teremos probabilidade 2
para cada algumas sequncias de bits e
zero para outras.

No entanto, nossa denio 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


nunca produz.

O(22n )

2n

G,

enumerar todas as

bits e encontrar uma sequncia de

Pr
e

possveis sequncias de

2n

bits que

No entanto, este algoritmo exponencial (tem complexidade

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 criptograa exigirmos que no seja fcil determinar o
prximo bit de uma sequncia a partir dos anteriores.

Denio 4.9 (Teste do prximo bit). Um gerador

passa pelo teste do

prximo bit se e somente se no existe algoritmo polinomial que, a partir dos


primeiros bits de uma sequncia gerada por

possa predizer o bit

k+1

1/2 + negl(k).

Ve
rs

probabilidade maior que

G,

com

As duas caracterizaes de gerador pseudoaleatreo para Criptograa so

equivalentes.

Teorema 4.10 (de Yao).

pelo teste do prximo bit.

Um PRG G pseudoaleatreo se e somente se passa

O leitor poder facilmente vericar 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

notas de aula  verso 85 - Jernimo C. Pellegrini

46CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

f , calculamos x1 = f (x0 ) e b0 = h(x0 ). Em seguida, fazex2 = 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.

funo de mo nica

x_0

x_i

in
ar

mos

x_i+1

b_i+1

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.

H . Ento

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

lim

Teorema 4.11.

def

G(x) = (f (x), H(x))

um gerador pseudoaleatreo.
Demonstrao.

(Rascunho) Se

de bits com tamanho

k,

x for
f

como

escolhido uniformemente dentre as cadeias


uma permutao,

tribuio uniforme sobre as cadeias de tamanho

f (x)

f (x)

tambm ter dis-

e um adversrio no ter

de uma distribuio uniforme. Alm disso, a

Pr
e

como distinguir os valores de

k,

probabilidade do bit hard-core ser

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:

Seja f uma permutao de mo nica para entrada de tamanho


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

Teorema 4.12.

def

Ve
rs

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

crita no incio desta seo est correta.


Agora usaremos

cado

hard-core

dexp

para construir um gerador pseudoaleatreo. O predi-

que usaremos o bit mais signicativo.

Construo 4.13 (Gerador de Blum-Micali). Seja

p; e x0
bi :

raiz primitiva mdulo

i-simo

bit gerado

um primo grande;

uma

(a semente) um inteiro.

xi

g xi1

bi

msb (xi ).

(mod p)

notas de aula  verso 85 - Jernimo C. Pellegrini

4.3. GERAO DE NMEROS PSEUDOALEATREOS

47

O gerador de Blum-Micali seguro (ou


seja, um gerador pseudoaleatreo de acordo com a Denio 4.7).
Teorema 4.14 (Blum-Micali seguro).

Outro gerador pseudoaleatreo mostrado a seguir.

Construo 4.15 (Gerador de Blum-Blum-Shub). Sejam


e seja

m = pq .

xn

x2n1

bi

lsb (xi ).

Uma raiz

x0

dois primos

escolhida que seja

lim

p, q 3 (mod 4),
diferente de um, de p e de q .
O i-simo bit gerado bi :

grandes com

in
ar

Demonstrao. Como o algoritmo implementa exatamente a mesma construo


G denida no Teorema 4.12, conclumos imediatamente que Blum-Micali um
gerador pseudoaleatreo.


(mod m)

Pr
e

4.3 Gerao de nmeros pseudoaleatreos

Embora a gerao de sequncias de bits pseudoaleatreos seja imediatamente


til (j so sucientes para a construo de cifras de uxo, descritas na Seo 4.5), h tambm casos em que queremos produzir
naturais) pseudoaleatreos.

Quando queremos um nmero entre


uma cadeia de

2k 1

nmeros

(inteiros ou

podemos simplesmente gerar

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


natural. Seja

n 1,

para qualquer

o menor nmero possvel de bits necessrio para representar o

n em base dois  ou seja, blog2 (n)c. Seja G um gerador pseudoaleatreo


2k strings de k bits que podem ser geradas por G. Como queremos
k
escolher um dentre n nmeros, h strings entre n e 2 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

Ve
rs

nmero

de bits. H

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

notas de aula  verso 85 - Jernimo C. Pellegrini

48CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

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


produz nmeros uniformemente distribudos entre 0 e n 1.

Teorema 4.16.

Se G um gerador pseudoaleatreo e n um nmero natural, o


algoritmo random_natural(G, n) tem tempo de execuo O(log(n)).

in
ar

Teorema 4.17.

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-

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

lim

tias dos mtodos com demonstrao de segurana. Usamos, ento, heursticas


que nos do alguma conana nas sequncias geradas.

Ao invs de demonstrar que no se pode (a no ser implicando em algoritmo


eciente para um problema presumidamente difcil) prever o prximo bit da
sequncia, relaxamos este requisito e construmos geradores que geram sequncias que,

tanto quanto podemos vericar,

so indistinguveis por todos os testes

estatsticos de sequncias aleatreas. Isso signica que (i) h baterias de testes

Pr
e

estatsticos s quais um gerador de bits pode ser submetido para vericar se


pode ser usado em aplicaes de Criptograa e (ii) devemos identicar propriedades desejveis em sequncias de bits que possam ser usadas como guia na
elaborao de geradores que passem por tais testes.
estes testes e propriedades

no

importante frisar que

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.

4.4.1

Propriedades de Sequncias Pseudoaleatreas

Ve
rs

Nosso ponto de partida so os postulados de Golomb, que expressam propriedades desejveis de sequncias pseudoaleatreas de bits. Esses postulados no so
sucientes para caracterizar sequncias pseudoaleatreas, mas so necessrios.
As denies a seguir, de perodo, subsequncia constante e de autocorrela-

o, so usadas nos postulados.

Denio 4.18 (Perodo de sequncia). O perodo de uma sequncia


menor inteiro

tal que

xi = xi+p ,

para

sucientemente grande.

Por exemplo, o perodo da sequncia

00101010
01101001

dois (o padro

10

011011011 trs,
i = 2) e

se repete depois de

o da sequncia
o da sequncia

oito.

Denio 4.19 (Subsequncia constante). Seja


sequncia

xl , . . . xm

de

constante se

xi = xj

uma sequncia. Uma sub-

para quaisquer

l i, j m. 

notas de aula  verso 85 - Jernimo C. Pellegrini

4.4. GERADORES COM HEURSTICAS

Denio 4.20. Seja

X
i

quantidade de posies

49

uma sequncia de bits com perodo

xi = xi+k

tal que

D(k)

p.

Sejam

A(k)

a quantidade de posies

A(k)

|{i : xi = xi+k }|

D(k)

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

A autocorrelao com deslocamento

para

in
ar

onde isso no acontece:

A(k) D(k)
.
p

x0

6=

x1

x2

6=

x3

x3

6=

x4

x4

6=

x5

x7

e portanto

X = 100101110.

Temos

Calculamos a autocor-

Pr
e

k = 1.

lim

Exemplo 4.21. Considere a sequncia


relao para

A(1) = 5, D(1) = 3

6=

x8

e a autocorrelao para

k=1

2/9.

Enunciamos agora os postulados de Golomb.

G1 )

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


mximo um.

O nmero de subsequncias constantes de um dado comprimento deve ser

G2 )

o mesmo para uns e para zeros. Alm disso, se o nmero de subsequncias


constantes de comprimento

k+1

Ve
rs

para comprimento

G3 )

m, o nmero
m/2.

de subsequncias constantes

deve ser

A autocorrelao para deslocamentos diferentes de zero deve ser sempre a


mesma, independente do valor do deslocamento.

O postulado

G1

tem razo de ser muito clara: se no for satisfeito, a sequn-

cia 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

sequncias de bits. O postulado

G2 uma generalizao do primeiro para subG3 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

PN,

de

pseudo-noise).

H uma ferramenta conceitual que pode ser usada em geradores pseudoale-

atreos  uma variante de registradores de deslocamento, normalmente implementados facilmente em hardware. Os registradores de deslocamento, alm de

notas de aula  verso 85 - Jernimo C. Pellegrini

50CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

usados na construo de geradores pseudoaleatreos, tambm so importantes


na descrio de propriedades de sequncias.
Um registrador de deslocamento funciona como uma la de bits.

Em sua

verso mais simples, h um bit de entrada, um de sada, e o estado interno do

in
ar

registrador uma sequncia de bits .

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

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.

lim

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


na parte superior da gura est representado o estado anterior do registrador,
igual a

0011011101;

na parte inferior, a operao de deslocamento com entrada

Pr
e

igual a zero (a sada ser o ltimo bit do estado, que igual a um).

A sada de um registrador de deslocamento

usado. Se mais de um bit usado, a sada dita

serial se apenas
paralela.

o ltimo bit

Denio 4.22 (Registrador de deslocamento linearmente realimentado). Um


registrador de deslocamento dito

linearmente realimentado

se seu bit de en-

Ve
rs

trada uma funo linear de seus bits de estado.


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

seu estado inicial

sl1 , sl2 , . . . , s0 ,

e para

il

i-simo

bits ento

bit determinado

pela funo linear

3 Registradores

si = c1 si1 + c2 si2 + + cl sil

(mod 2),

de deslocamento so implementados em hardware como uma sequncia de

ip-ops, com a sada de um alimentando a entrada de outro, como ilustra a gura abaixo.

notas de aula  verso 85 - Jernimo C. Pellegrini

4.4. GERADORES COM HEURSTICAS


onde os coecientes

cj

51

podem ser um ou zero.

Em outras palavras, uma funo linear determina o prximo bit de entrada


a partir do estado atual.
ou

funo de realimentao.

Abreviamos registrador de

deslocamento linearmente realimentado por LFSR (linear

1 + c1 x + +cl xl

chamado de

feedback shift regis-

lim

ter).

O polinmio

in
ar

A funo que determina o bit de entrada a partir dos bits do estado a

funo de feedback,

polinmio de conexo

do LFSR.

Exemplo 4.23 (LFSR). Suponha que um LFSR com oito bits use a funo de
realimentao

onde

Pr
e

si = si2 si5 si6 si8 ,

o ou-exlusivo. Esta uma funo linear mdulo dois . Este LFSR

representado na Figura a seguir.

00110011,

alguns dos prximos estados e bits de sada so

Para o estado inicial

entrada

estado

sada

Ve
rs

10011001
(0 + 1 + 0 + 1 = 0) 01001100
(1 + 1 + 1 + 0 = 1) 10100110
(0 + 0 + 1 + 0 = 1) 11010011

1
0
0
1
J

Toda sequncia peridica de bits pode ser gerada por algum


LFSR com no mximo n estados, onde n o tamanho da sequncia.
Teorema 4.24.

Demonstrao.

Trivial (um LFSR com

cia gera a prpria sequncia).

4 Porque a b

o mesmo que

n estados e estado inicial igual sequn

a + b (mod 2),

e a funo mostrada a mesma que

si = si2 + si5 + si6 + si8

(mod 2).

notas de aula  verso 85 - Jernimo C. Pellegrini

52CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

Apesar de ser trivialmente possvel obter LFSRs de tamanho


cias de comprimento
de tamanho

n,

com LFSRs muito menores que

n.

bits.
Se

nita e de comprimento

|S|,

uma sequncia de

in
ar

Denio 4.25 (Complexidade linear de sequncia). Seja

n para sequn-

notamos que muitas vezes possvel obter sequncias

a complexidade linear de

o com-

primento do menor LFSR que gera,para alguma semente, uma sequncia

|S|

cujos

primeiros bits formam a sequncia

S.

Se

innita e s contm zeros, a complexidade linear de

Se

innita, diferente de zeros, e pode ser gerada por um LFSR, sua

Se

zero.

S.

lim

complexidade linear a do menor LFSR que gera

no pode ser gerada por um LFSR, complexidade linear de

Teorema 4.26.

do que k .

.


Uma sequncia de perodo k no tem complexidade linear maior

Pr
e

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


sequncia nita.

Na descrio do algoritmo,

b()

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 .

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

Ve
rs

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)

O algoritmo retorna

L,

a complexidade linear da sequncia, e

c(x),

o polin-

mio de conexo do LFSR que a gera.


A complexidade de tempo do algoritmo de Berlekamp-Massey

sar de havermos explicitado somente um lao (N de zero a


em polinmios tem complexidade linear em

n.

n 1),

O(n2 ):

ape-

as operaes

notas de aula  verso 85 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

53

Denio 4.27 (LFSR de comprimento mximo). Seja

um LFSR de n bits.
0n e deslocado repe2n 1 permutaes, ento

Se, ao ser inicializado com qualquer semente diferente de


tidamente, o estado interno de

passa por todas as

um LFSR de comprimento mximo.

in
ar

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.

lim

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

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

Pr
e

forma de no-linearidade usada em conjunto com geradores do tipo LFSR para


torn-los resistentes a criptanlise.

4.4.2

Testes Para Sequncias de Bits

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

necessria
de forma alguma suciente!

Observamos que passar em uma bateria de testes uma condio

para um gerador pseudoaleatreo, mas

Alm de vericar a complexidade linear da sequncia e testar os postulados de Golomb, h outros testes que podem ser usados para vericar se uma

Ve
rs

sequncia no pseudoaleatrea.

4.5 Cifras de Fluxo


Podemos construir cifras de uxo 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 Denio 2.12

(segurana contra ataque de texto cifrado conhecido). No entanto, aquela Denio de segurana no trata da situao (muito mais comum) em que queremos
enviar mais de uma mensagem.

notas de aula  verso 85 - Jernimo C. Pellegrini

54CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

4.5.1

Mltiplas Mensagens

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

in
ar

vrias mensagens.

Experimento 4.29 (PRIV_MULT(, A, n)).

A recebe uma entrada 1n , e devolve duas sequncias


M0 = (m10 , m20 , , mt0 ) e M1 = (m11 , m21 , , mt1 );

1. O adversrio
mensagens,

Gen(1n ),

de

b escolhido aleatoMi so encriptadas,


1 2
t
i
i
resultando na sequncia Enck (Mb ) = (c , c , , c ) onde c = Enck (mb ).
Esta sequncia Enck (Mb ) enviada para A;

2. Uma chave

3.

4. Se

envia

b0 ;

b = b0 ,

e um bit

Ento todas as mensagens da sequncia

lim

reamente.

gerada usando

o resultado do experimento

seno 0.

(e dizemos que

teve sucesso),

Pr
e

1n

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

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

b0
0

Ve
rs

b=b 1
b 6= b0 0


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

em

n.

Denio 4.30 (Segurana contra ataque de mltiplos textos cifrados conheci-

tem indistinguibilidade de mltiplos textos


cifrados na presena de grampo M se para todo adversrio A existe uma funo
desprezvel negl tal que,
dos). Um criptossistema simtrico

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

1
+ negl(n).
2

onde a probabilidade sobre as moedas usadas por


e usadas por

Enc.

A,

para a escolha do bit

b


notas de aula  verso 85 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

55

Damos agora um exemplo de criptossistema que seguro de acordo com a


Denio 2.12, mas no de acordo com a Denio 4.30.

p(.).

um gerador pseudoaleatreo com fator de expanso

O seguinte criptossistema simtrico construdo sobre

Gen:

dado

1n , escolha uma chave k {0, 1}n

Enc(k, m) = G(k) m,

desde que tanto

com probabilidade uniforme;

como

como

tenham

tenham

bits;

bits.

lim

Dec(k, c) = G(k) c,

desde que tanto

G:

in
ar

Construo 4.31. Seja

O Criptossistema descrito na Construo 4.31 seguro de


acordo com a Denio 2.12.

Teorema 4.32.

Demonstrao.

Seja

o criptossistema da Construo 4.31. Mostraremos que

a existncia de um adversrio que possa distinguir as mensagens no experi-

Pr
e

mento 2.8 (usado na Denio 2.12) com probabilidade maior que a dada na
Denio 2.12, teramos um algoritmo para distinguir os bits gerados por

de

bits aleatreos com distribuio uniforme.


Seja

um adversrio rodando em tempo polinomial, e seja

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


(ou seja, a funo

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

de bits, determinando se ela foi produzida por

Ve
rs

distribuio uniforme no espao amostral de tamanho

ou se foi escolhida com

n.

executa o experimento a seguir.

1. Chame

A(1n )

e obtenha duas mensagens de tamanho

2. Escolha um bit

3. Calcule

p(n).;

aleatoreamente;

c = s mb ;

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.

4. Ao invs de

Este experimento ilustrado a seguir.

notas de aula  verso 85 - Jernimo C. Pellegrini

56CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

1n
m0 , m1
b R {0, 1}
c s mb

b0
0

A gura no diz como


de duas maneiras de obter
Primeiro, se

s
s.

lim

b=b 1
b 6= b0 0

in
ar

obtido, e isso intencional: trataremos a seguir

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

exatamente como seria se tivssemos usado o one-time pad


ao invs de enviar c para A, e

Pr
e

buio uniforme 

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


Para o segundo caso, suponha ento que
lhida aleatoreamente. Sabemos que

seja igual a

1
.
2
G(k),

com

esco-

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 Denio 2.12, e

Ve
rs

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

1
+ f (n).
2

A que obtivesse sucesso f (n)


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.

Temos ento que se houvesse um adversrio

(que supomos no desprezvel) no experimento

O Criptossistema descrito na Construo 4.31


de acordo com a Denio 4.30.

Proposio 4.33.

Demonstrao.
A escolhe duas

seguro

No Experimento 2.11 (usado na Denio 4.30) o adversrio


sequncias de duas mensagens,

Ao receber a sequncia de mensagens cifradas


simplesmente vericar se

M1 )

no

c1 = c2

M0 = (0n , 0n ), M1 = (0n , 1n ).
C = (c1 , c2 ), o adversrio pode

(neste caso sabe que a sequncia encriptada

ou no (e portanto a sequncia deve ser

M2 ).

notas de aula  verso 85 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

57

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

in
ar

usamos na demonstrao da Proposio 4.33, temos o seguinte teorema:

Qualquer criptossistema simtrico determinstico inseguro de acordo com a Denio 4.30.

Teorema 4.34 (Insegurana de criptossistemas determinsticos).

Se usarmos uma chave diferente cada vez que encriptarmos uma mensagem
teremos resolvido o problema. Ao cifrar uma mensagem, inicializamos

no

apenas com uma semente (secreta), mas tambm com alguns bits a mais, escolhidos aleatoreamente com distribuio uniforme:

lim

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.

Construo 4.35. Seja

p(.).

Pr
e

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


um gerador pseudoaleatreo com fator de expanso

O seguinte criptossistema simtrico construdo sobre

Gen:

dado

1n , escolha uma chave k {0, 1}n

G:

com probabilidade uniforme;

Enc(k, m) = (iv, G(k, iv) m), desde que tanto k como m


e com iv sendo escolhido com distribuio uniforme;

A sada de

desde que tanto

como

tenham

bits,

bits.

Dec(iv, k, c) = G(k, iv) c,

tenham

G(k, iv) deve ser indistinguvel de bits aleatreos, mesmo quando


iv (isto realmente ocorre, porque G gerador pseudoalea-

Ve
rs

o adversrio conhece
treo).

4.5.2

Ataques de Texto Claro Escolhido

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

Enc:

pode cifrar mensagens vontade, mas no tem a chave

(suponha por

exemplo que o adversrio possa convencer algum a cifrar para ele mensagens
usando

k ).

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


1. Uma chave

gerada por

Gen(1n );
1n e, podendo cifrar mensagens com Enck ,
m0 e m1 , ambas de mesmo tamanho;

2. O adversrio recebe a entrada


nos devolve duas mensagens

notas de aula  verso 85 - Jernimo C. Pellegrini

58CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

criptada:
4.

A,

escolhido aleatoreamente, e a mensagem correspondente en-

c = Enck (mb ).

ainda podendo usar

Este texto cifrado (o desao) enviado a

Enck ,

responde um bit

5. O resultado do experimento um se

b = b0

b0 ;

e zero em caso contrrio.

AEnck

1n

lim

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

A;

in
ar

3. Um bit

Enck (mb )

b0

Pr
e

b = b0 1
b 6= b0 0

Denio 4.37 (Segurana contra ataque de texto claro escolhido). Um criptossistema simtrico

colhido

tem

indistinguibilidade contra ataques de texto claro esA existe uma funo desprezvel negl tal que,

se para todo adversrio

1
+ negl(n).
2

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

Ve
rs

Notas

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


de Luby [Lub96].

O assunto tambm abordado em outros livros, de Gol-

dreich [Gol01] e Kranakis [Kra91].


A demonstrao do Teorema 4.16 (a corretude do mtodo para gerao de

nmeros naturais) pode ser encontrada no livro de Shoup [Sho05].


H uma demonstrao do Teorema de Yao no livro de Delfs e Knebl [DK07].
H um interessante livro [CDR03], de Thomas Cusick, Cunsheng Ding e Ari

Renwall que estuda aspectos de cifras de uxo 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 [Gol82].


O livro de Daniel Neuenschwander [Neu04] sobre mtodos estatsticos em Criptograa aborda diversos testes para nmeros aleatreos.

O livro de Golomb

notas de aula  verso 85 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

59

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

in
ar

Golomb [Gol82], de Lidl e Niederreiter [LN97], e de Golomb e Gong [GG05].


Um dos primeiros a denir baterias de teste para aleatoriedade foi George
Marsaglia, que criou a bateria de testes

Die Hard .

H baterias de testes

denidas pelo NIST [NIS10].

Exerccios

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

a)

01101011

b)

10101010

c)

11101010

d)

100101101101

1, 2

3:

lim

com deslocamentos

Pr
e

Ex. 22  Construa programas que calculem a autocorrelao e a complexidade linear de sequncias de bits.

Ex. 23  Descreva em pseudocdigo um algoritmo que verique, para sequncias de bits, os postulados de Golomb. Calcule a complexidade de tempo de seu
algoritmo.

Ex. 24  Sobre LFSRs, responda:

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

Ve
rs

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


iii) Que LFSRs geram tanto zeros como uns?

Ex. 25  Prove que toda

m-sequncia

satisfaz os postulados de Golomb.

de deBrujin binria de ordem k se cada


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

Ex. 26  Uma sequncia de bits


sequncia binria de comprimento

nica vez.

i) Quantas sequncias de deBrujin

ii) Prove que

m-sequncias

m-rias

de ordem

existem?

so de deBrujin, e diga para que ordem.

Ex. 27  Demonstre o Teorema 4.17

notas de aula  verso 85 - Jernimo C. Pellegrini

60CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

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


omitimos: possvel que as duas mensagens,

0n

1n ,

resultem no mesmo texto

cifrado.

necessariamente

ser possvel.

in
ar

a) Demonstre que isso deve

b) Complete a demonstrao tratando tambm deste caso.

Ex. 29  Mostre que se a sequncia


relao de

com deslocamento

tem perodo

igual a um.

k|p,

ento a autocor-

Ex. 30  Demonstre que a Construo 4.35 segura contra ataques de mltiplos textos cifrados conhecidos.

lim

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

Ex. 32  Um gerador por congruncia linear funciona da seguinte maneira:

a , b, n

e uma semente

s < n,

x0

xi

axi1 + b (mod n)

Pr
e

dados parmetros

Mostre que este tipo de gerador no seguro.

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

Ve
rs

um LFSR e uma funo no linear.

5O

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

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Cifras de Bloco

lim

Captulo 5

Pr
e

Cifras de bloco operam em sequncias de bits de tamanho xo. 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 uxo,


fazendo ou exclusivo das mensagens com a sequncia gerada de bits.
Captulo usaremos como fundamento para cifras de bloco

doaleatreas,

Neste

permutaes pseu-

semelhantes em esprito aos geradores pseudoaleatreos, mas que

trabalham com sequncias de tamanho xo.

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


Fi : {0, 1} {0, 1} que poderiam ser usadas para encriptar mensa

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

Com

|k| = n,

podemos indexar

2k

possveis funes. No entanto, h muito

mais funes com tamanho de entrada e sada igual a

Se representarmos o domnio (de tamanho

notamos que h

2n

bits:

como uma lista horizontal,

valores a preencher para determinarmos uma funo. Cada

n bits, e portanto h 2n possibilidades para cada. Disso


n
(2n )(2 ) diferentes funes com entrada e sada de n bits.

um destes valores tem


conclumos que h

2n )

61

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 5.

CIFRAS DE BLOCO

Assim, usamos

lim

in
ar

62

como ndice para escolher

2n

dentre

(2n )(2

funes. Uma

k desta forma no pode ento induzir distribuio uniforme


sobre todas as funes com entrada e sada de n bits, porque haver funes que
funo indexada por

Pr
e

no podero ser representadas.

escolha
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.
n
Em outras palavras, a distribuio das 2 funes indexadas por k deve ser
n (2n )
indistinguvel da distribuio das (2 )
, que uniforme. Na Denio 5.1, o
algoritmo D tem o objetivo de tentar realizar esta distino.
Queremos que a segurana de nossa construo criptogrca esteja na

da funo. Assim,

Denio 5.1 (Funo Pseudoaleatrea). Seja

F : {0, 1}n {0, 1}n {0, 1}n

Ve
rs

uma funo computvel polinomialmente e que preserva o tamanho da entrada.

pseudoaleatrea se, para todo algoritmo polinomial

desprezvel

negl

D,

existe uma funo

tal que

|Pr[D(Fk (), 1n ) = 1] Pr[D(f (), 1n ) = 1]| negl(n),

onde

escolhido com distribuio uniforme sobre

{0, 1}n

escolhida com

distribuio uniforme sobre o conjunto de todas as funes com domnio e contradomnio

{0, 1}n .

(por isso denotamos

O algoritmo

(mas no ao seu ndice).

D(Fk , 1n )

e no simplesmente

n
Fk


roda em tempo polinomial em

n)

e tem livre acesso funo

O Exerccio 34 pede a demonstrao de que toda funo pseudoaleatrea

de mo nica.

notas de aula  verso 85 - Jernimo C. Pellegrini

5.1. ESQUEMAS DE ENCRIPTAO USANDO FUNES PSEUDOALEATREAS63

5.1 Esquemas de Encriptao usando Funes Pseudoaleatreas


Fk

escolhida pode ser usada

para construir criptossistemas: poderamos criar uma funo

Enck (m) = Fk (m).

Enc

in
ar

A diculdade do adversrio em determinar a funo

tal que

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 ,
e enviar

junto com o texto encriptado. Como esperamos que a sada da funo

pseudoaleatrea seja indistinguvel de bits aleatreos, o ou exclusivo dela com

tem o efeito que desejamos.

Temos assim o seguinte criptossistema usando funes pseudoaleatreas:


uma funo pseudoa-

Pr
e

F : {0, 1}n {0, 1}n {0, 1}n

Construo 5.2. Seja

leatrea. As seguintes funes so um criptossistema com tamanho de chave e


mensagem igual a

Gen(1n )

n:

escolhe uniformemente uma chave em

Enck (m):

escolha

r R { 0, 1 }

{0, 1}n .

, e retorne

hr, Fk (r) mi .

Ve
rs

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

igual ao sistema de Construo 5.2 exceto por no

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

Construo 5.3. Seja

O Criptossistema

equivalente ao one-time pad.

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

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

1 p(n)
+ n
2
2

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 5.

64

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
1
probabilidade de r ser escolhido novamente n .
2
Suponha agora que no experimento o texto encriptado c = h rc , f (rc ) mb i
seja enviado a A.
H dois casos a tratar:

rc

usado por

RU IM .

Quando isso acontece,

b = b0 . A far uma quantidade polinomial de consultas


ento p(.) o polinmio que d a quantidade de consultas.
0
de b = b
1
1
p(n)
1
+ n + + n = n .
2n
2
2
2
nunca usado por

ao orculo. Seja

A probabilidade

lim

rc

f.
A ter sucesso

em suas consultas ao orculo que lhe permite usar

Chamaremos este evento de

nas consultas ao orculo; este evento o comple-

mento 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

1
2.

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

p(n) 1
+ .
2n
2

Pr
e

Conclumos que

Teorema 5.5.

O criptossistema descrito na Construo 5.2 CPA-seguro.

Demonstrao.

Seja

g(n)

1
2 a probano experimento PRIV_CPA:

uma funo que nos diz quo acima de

bilidade de sucesso do criptossistema

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

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

de calcular,

e h ento dois casos:

g(n)

desprezvel. Se assim for,

rana CPA);

CPA-seguro (pela denio de segu-

notas de aula  verso 85 - Jernimo C. Pellegrini

5.2. PERMUTAES PSEUDOALEATREAS

g(n)

no desprezvel.

65

Neste caso conseguiramos distinguir

escolhida ao acaso  mas como

Fk

de

funo pseudoaleatrea, isso no pode

acontecer.

in
ar

5.2 Permutaes Pseudoaleatreas

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

Denio 5.6 (Permutao indexada). Uma funo indexada


permutao se para todo

Fk

Fk1

Quando

Fk

chamada de

so computveis em tempo polinomial, dizemos que

eciente.

taes de

bijetora.

lim

Quando

k , Fk

indistinguvel de

escolhida ao acaso dentre todas as permu-

bits, dizemos que uma permutao pseudoaleatrea.

Denio 5.7 (Permutao Pseudoaleatrea). Uma permutao indexada


pseudoaleatrea se, para todo

D,

toda

escolhido uniformemente ao acaso, todo adver-

escolhida ao acaso dentre todas as permutaes de

Pr
e

srio polinomial

bits, existe uma funo desprezvel

negl

tal que

|Pr [D(Fk , 1 ) = 1] Pr [D(f, 1n ) = 1]| negl(n).




Note que de acordo com a denio de permutao pseudoaleatrea o adversrio s tem acesso a
acesso a

Fk . Se rezermos a Denio 5.7 dando


permutao pseudoaleatrea forte.

teremos uma

ao adversrio

F Famlias de permutaes pseudoaleatreas

5.2.1

Fk1 ,

Ve
rs

5.3 Modos de Operao


Dada uma permutao pseudoaleatrea

sagem tenha tamanho maior que

n.

Fk

para

bits, suponha que uma men-

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

Esta seo traz apenas os modos de operao mais

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 5.

66

5.3.1

CIFRAS DE BLOCO

ECB  Electronic Code Book

No modo ECB, cada bloco encriptado independentemente com a chave


m

m
2

in
ar

lim

k.

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

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

Ve
rs

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 85 - Jernimo C. Pellegrini

5.3. MODOS DE OPERAO

67

Se Fk uma permutao pseudoaleatrea e tanto iv como k


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

5.3.3

OFB  Output Feedback

No modo OFB um vetor de inicializao usado para gerar

Fk

a sada de

usada como vetor de inicializao para o prximo bloco. Para encriptar

mensagens, fazemos ou-exclusivo de cada


de

Fk ;

in
ar

Teorema 5.8.

mi

com a sada da

i-sima

Fk .

iv

Pr
e

lim

iv

aplicao

c
3

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


onde

ci = Fk (ivi ) mi .
escolhido ao acaso e para

i > 1, ivi =

Assim como o modo CBC, o modo OFB no paralelizvel.

No entanto,

O primeiro vetor de inicializao

Ve
rs

Fk (ivi1 ).

iv1

uma sequncia de bits pode ser preparada com antecedncia para vrios blocos
antes da encriptao (ou decriptao) das mensagens.

Se Fk uma permutao pseudoaleatrea e tanto iv como k


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

Teorema 5.9.

5.3.4

CTR  Contador

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


cada bloco.

Para encriptar o

como entrada para

Fk ,

parte da mensagem.

i-simo

bloco, usa-se o contador somado com

e o resultado usado em um ou-exclusivo com a i-sima

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 5.

CIFRAS DE BLOCO

lim

in
ar

68

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


onde

ci = Fk (ctr + i) mi .

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

Pr
e

Alm disso, possvel encriptar ou decriptar o

n-simo

bloco isoladamente (ou

seja, o modo CTR permite acesso aleatreo).

Se Fk uma permutao pseudoaleatrea e tanto iv como k


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

Teorema 5.10.

5.4 Cifras de bloco

J denimos o comportamento de permutaes pseudoaleatreas e determina-

Ve
rs

mos 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 uxo e de funes pseudoaleatreas eram baseadas em comportamento as-

no fazem sentido para cifras de bloco, uma vez que estas trabalham
com blocos e chaves de tamanho xo.
sinttico, e

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 85 - Jernimo C. Pellegrini

5.5. ARQUITETURA DE CIFRAS DE BLOCO

5.4.2

69

Construo

Denio 5.11 (Cifra de Bloco). Uma cifra de bloco para chaves com

bits uma permutao indexada eciente

{0, 1}t {0, 1}t .


As chaves so portanto de tamanho

c bits
F : {0, 1}n


e os blocos de tamanho

in
ar

e mensagens com

t.

A denio de cifra de bloco no faz referncia a permutaes pseudoaleat-

reas. Ao invs disso, uma permutao eciente 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

n bits precisaramos de
2n ! valores, e consequentemente teramos que usar log(2n !) bits. Por
256
se quisermos que o bloco tenha 256 bits, precisaramos de log(2
!) 

lim

representar uma permutao onde entrada e sada usam


representar
exemplo,

algo inconcebvel na prtica. Na construo de cifras de bloco usam-se normalmente funes representveis de maneira mais compacta, que,

do adversrio, parecem ser permutaes pseudoaleatreas.

do ponto de vista

Pr
e

5.5 Arquitetura de cifras de bloco


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.

Confuso e difuso

5.5.1

H dois conceitos bsicos identicados por Claude Shannon no funcionamento


de esquemas de encriptao, e que so claramente relacionados arquitetura de

Ve
rs

cifras de bloco:

Confuso:

a relao (estatstica) entre o texto encriptado e a chave deve

ser complexa o suciente para no permitir a obteno da chave a partir


do texto encriptado.

Difuso:

a distribuio no-uniforme do texto claro no deve se reetir

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 85 - Jernimo C. Pellegrini

CAPTULO 5.

70

CIFRAS DE BLOCO

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

confuso no bloco
S-boxes (ou caixas-S).

Dizemos que esta operao introduz

Pr
e

lim

original, e

in
ar

aleatrea.

damos a estes pequenos blocos o nome de

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


parte da entrada causam modicaes 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 modicaes das S-boxes

Ve
rs

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

dadas, e ao nal de cada rodada o resultado combinado (normalmente usando


ou-exclusivo) com uma chave.

notas de aula  verso 85 - Jernimo C. Pellegrini

5.5. ARQUITETURA DE CIFRAS DE BLOCO

lim

passo de mistura
traz difuso

in
ar

S-boxes
introduzem
confuso

71

XOR com
i-sima chave

Pr
e

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

Rede de Feistel

Ve
rs

5.5.3

de modicar 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

onde

fi

Li

Ri .

Em cada rodada, so calculados

Li = Ri1
Ri = Li1 fi (Ri1 , Ki )

uma funo xa 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 85 - Jernimo C. Pellegrini

CAPTULO 5.

CIFRAS DE BLOCO

in
ar

72

lim

Uma caracterstica importante das redes de Feistel que sempre so invertveis, mesmo que suas funes internas no o sejam.

Uma rede de Feistel sempre invertvel, independende da escolha de sua funo interna.
Teorema 5.12.

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 xo e so invertveis


(e so bijees), temos o seguinte Corolrio:

Corolrio 5.13.

Redes de Feistel so Permutaes.

Cifras de bloco so denidas 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

Ve
rs

Michael Luby e Charles Racko, 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 Racko 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 Luby-

Racko, embora tenha alguma semelhana com a denio 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.

Seja P uma permutao pseudoaleatrea de n


bits. Seja P a permutao denida por uma rede de Feistel para entrada de n bits
Teorema 5.14 (Luby-Racko ).

notas de aula  verso 85 - Jernimo C. Pellegrini

5.5. ARQUITETURA DE CIFRAS DE BLOCO

73

|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

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

Li

Ri .

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

Calcula-se ento

lim

mensagem dividida em duas partes,

Li = Li1 + P (Di )
onde

uma permutao.

Para que a construo de Lai-Massey tenha a mesma garantia de segurana

permutao (quando isso acontece dizemos que


As operaes

P 0 (x) = P (x) x tambm


P um ortomorsmo).

deve ser tal que

Pr
e

das redes de Feistel, a permutao

devem ser inversas uma da outra (mas no necessaria-

mente soma e subtrao)

Ve
rs

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;

ab

o mesmo que

a + (a).

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 5.

74

CIFRAS DE BLOCO

5.6 Exemplo: DES


Em 1976 um criptossistema desenvolvido pela IBM foi escolhido como padro
pelo

National Bureau of Standards

americano. Este criptossistema passou a ser

in
ar

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

Ve
rs

Pr
e

lim

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 85 - Jernimo C. Pellegrini

5.6. EXEMPLO: DES

75

Feistel no tem inversa). Depois, a sada tem

8 4 = 32 bits.

A Figura a seguir

Pr
e

lim

in
ar

ilustra a funo interna do DES.

Escalonamento de chaves

5.6.1

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

Ve
rs

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, modicar 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 85 - Jernimo C. Pellegrini

CAPTULO 5.

76

CIFRAS DE BLOCO

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

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

com uma chave

ki

Enc(m)

com todas as chaves possveis. Ao encriptar

e obter o texto encriptado

xi ,

em uma tabela.

ele guarda o par

Depois, o adversrio faz um procedimento semelhante:

Em seguida, ordena as duas tabelas geradas usando

xi

encontrar uma entrada na tabela pares com o mesmo

(ki , kj )

com

como chave. Ao

xi ,

ele guarda as

em um conjunto de possveis solues.

Ve
rs

Pr
e

chaves

decripta

ki , xi

(xi , ki ).

lim

todas as chaves possveis, guardando pares

in
ar

a seguir chamado de

Se sortearmos duas chaves ao acaso, elas podero satisfazer a Equao 5.6.2 com
probabilidade

cadeia de

2n

1
2n (para peceber isto, imagine as duas chaves como uma nica
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 car menor e ele conseguir facilmente identicar 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 85 - Jernimo C. Pellegrini

5.7. EXEMPLO: AES

77

O 3DES opera exatamente desta forma, e com trs chaves de


a ter

168

bits no total. O espao de chaves de

2168

56

bits passamos

bits mais do que suciente

para os padres modernos. A encriptao tripla desta maneira no vulnervel

in
ar

ao ataque de encontro no meio.


Infelizmente, o 3DES muito lento (so necessrias trs operaes onde antes
usvamos uma).

5.7 Exemplo: AES

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

5.7.1

lim

chave pode ter 129, 192 ou 256 bits.

Descrio simplicada

Esta Seo contm uma descrio simplicada do AES. A Seo 5.7.2 contm a
descrio algbrica.
O AES opera em matrizes

44

onde cada elemento um byte. Represen-

Pr
e

tamos 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 85 - Jernimo C. Pellegrini

CAPTULO 5.

78

CIFRAS DE BLOCO

SubBytes
Este passo substitui cada um dos bytes da entrada, usando S-boxes. Esta uma
objetivos em mente:

No-linearidade:

in
ar

funo no-linear aplicada em cada byte. As S-boxes foram projetadas com dois

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.

Complexidade algbrica:

A expresso da

S -box

no corpo nito

GF (28 )

bastante complexa, a m de evitar o sucesso de ataques de criptanlise

lim

algbrica.

Observamos tambm que as substituies feitas por

SubBytes so uma

per-

mutao catica, e portanto no h a possibilidade de algum byte permanecer


inalterado.

ShiftRows
ShiftRows

realiza transposies de bytes, tendo difuso como efeito.

Pr
e

O passo

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

ShiftRows

A operao

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

facilmente invertvel.

Ve
rs

MixColumns

Este passo aplica uma transformao linear em cada coluna da matriz, mas

usando uma operao especial de multiplicao .

De maneira simplicada, a

multiplicao dos bytes por 1, 2 e 3 denida como segue:

a1=a
a2=a1Y
a 3 = (a  1) Y a,

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


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

onde

de a
a

3 Este

operao descrita de forma mais aprofundada na Seo 5.7.2, que expe uma

descrio algbrica do AES.

notas de aula  verso 85 - Jernimo C. Pellegrini

5.7. EXEMPLO: AES

79

02
01

01
03

03
02
01
01

01
03
02
01

denida acima no lugar da multiplicao

a0
01
a1
01

03 a2
a3
02

b0
b1
=

b2
b3

in
ar

A tansformao usa a operao


usual:

Esta transformao invertvel e pode ser implementada ecientemente, j que


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

02
01

01
03

MixColumns
03
02
01
01

01
03
02
01

do AES).


01
0A
b0
B7 b1
01

=
03 01 b2
02
39
b3

lim

Exemplo 5.15 (Passo

O primeiro byte da sada (b0 )

b0 = 0A 02 B7 03 01 01 39 01

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

Pr
e

Fazemos primeiro a operao

tiplicados por um, no so modicados. Temos ento

b0 = 14 75 01 39

ou exclusivo da representao binria, portanto

A operao

b0

Ve
rs

b0 =00010100

Os valores

b1 , b2

b3

01110101
00000001
00111001
=00011001 = 19 .

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

rodadas do AES so necessrias

chaves de rodada.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 5.

80

5.7.2

CIFRAS DE BLOCO

F Descrio algbrica

Esta Seo apresenta algumas das operaes do AES em sua formulao al-

nitos .

in
ar

gbrica, e est marcada como opcional porque requer conhecimento de corpos

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


do corpo nito

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
onde

Quando

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


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


1 1 1 1 0 0 0 1
, b = 0
A=
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

x = 0,

Pr
e

A operao

o valor subsitudo

b.

MixColumns

Cada coluna da matriz interpretada como coecientes de um polinmio

sobre

Assim, uma coluna

Ve
rs

GF (28 ).

interpretada como
portanto variam de


a0
a1

a2
a3
a3 x3 + a2 x2 + a1 x + a0 ,
0 a 255 = FF ).

onde os coecientes

ai

so bytes (e

em GF (28 )
no pertence ao corpo de Rijndael,

Toda coluna interpretada como um polinmio com coecientes

(porque so bytes). Note que este polinmio

porque seus coecientes no so binrios (so bytes inteiros) !

4 Corpos

nitos so descritos brevemente no ApndiceB, onde h tambm recomendaes

de literatura cobrindo o assunto.

5 Se

representamos os elementos de

tencer a

Z2 .

GF (28 )

como polinmios, seus coecientes devem per-

notas de aula  verso 85 - Jernimo C. Pellegrini

5.7. EXEMPLO: AES

81

Por exemplo, a coluna

in
ar

E0
21

0A
72
interpretada como

72 x3 + 0A x2 + 21 x + E0
= 114x3 + 10x2 + 33x + 224.

Cada um dos coecientes, por sua vez, pode ser visto como um polinmio.

A multiplicao de uma coluna por outro polinmio de grau quatro feita no

x4 +1 para que o resultado

lim

AES da maneira usual, reduzindo o resultado mdulo

seja um polinmio de grau trs (e que possa portanto ser representado como uma
coluna).
A operao
mio xo

MixColumns multiplica o polinmio em cada coluna pelo polin-

c(x):

c(x) = 03 x3 + 01 x2 + 01 x + 02 .
Os coecientes de

c(x)

tambm so elementos de

GF (28 ),

representados aqui

Pr
e

em hexadecimal. Sua representao como polinmios mdulo

m(x)

01 = 1

02 = x

03 = x + 1.

A operao pode ser tambm descrita como a multiplicao dos polinmios


em cada coluna por

Ve
rs

x
1

1
x+1

x+1
x
1
1

1
x+1
x
1

1
1

x + 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
Rijndael). Seja

2 (x

no corpo de Rijndael) e por

um elemento qualquer em

GF (28 ),

3 (x + 1

no corpo de

que interpretamos como

a7 x7 + a6 x6 + a5 x5 + a4 x4 + a3 x3 + a2 x2 + a1 x1 + a0 .

Calculamos

ax

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 85 - Jernimo C. Pellegrini

CAPTULO 5.

82

Note que temos nos coecientes ou

ai xi+1

(que pode ser obtido deslocando os

bits da representao binria para a esquerda) ou

a7

ai

aparece somado com

Podemos calcular

ax

11011

1b .

ento fazendo duas operaes:

Deslocamento de um bit para a esquerda;

Se

fazemos ou exclusivo com

1b .

Finalmente,

a(x + 1) = ax + a,
que pode ser implementado computando primeiro
sivo com

As posies em

so 0, 1, 3 e 4. O nmero binrio

a7 = 1,

(ai + a7 )xi+1 .

in
ar

que

CIFRAS DE BLOCO

ax e depois fazendo ou exclu-

a.

dos

256

lim

Na prtica, estas operaes so implementadas em tabelas , onde cada um


elementos tem uma tabela para a multiplicao por

2.

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

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

x7 + x6 + x5

x5 + 1

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

Quando multiplicada por

como

Pr
e

j mostrada,

x+1
x
1
1

resulta em

1
x+1
x
1

x7 + x6 + x5
1

1
x5 + 1

x+1
x +x
6
5
4
x
x +x +x +x+1

x
1

1
x+1

c(x),

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 85 - Jernimo C. Pellegrini

5.8. FOX (IDEA-NXT)

83

Da memsa forma que nas outras cifras de bloco apresentadas, h um algoritmo para escalonamento de chaves.

Note que

f 64

Pr
e

lim

in
ar

A Figura a seguir mostra uma rodada do FOX64.

inversa de si mesma, por isso a nica operao usada. A funo

na Figura chamada de funo de rodada, e realiza ou exclusivo com a

chave de rodada, permutaes e transformaes lineares.

Notas

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


Goldwasser e Silvio Micali [GGM86].

J permutaes pseudoaleatreas (e a

Ve
rs

formalizao do conceito de cifra de bloco) foram idealizadas por Michael Luby


e Charles Racko [LR88].

O Teorema 5.14 foi demonstrado por Luby e Racko 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 supercial.

Uma descrio mais

profunda do AES dada por Daemen e Rijmen em um livro [DR02]. 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 [NIS99] para o DES e FIPS PUB 197 [NIS01] para o AES); e o livro de
Bruce Schneier [Sch96]. 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 dene a cifra, que usa blocos de 64 bits (GOST

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 5.

84

CIFRAS DE BLOCO

7 

um conjunto de padres originalmente produzidos pela Unio Sovitica


GOST signica

padro do estado em russo).

A cifra era secreta at 1994, quando

foi tornada pblica. A cifra de bloco denida pelo GOST tem mais rodadas que

in
ar

o DES; o padro no dene as S-boxes, que eram modicadas dependendo do


contexto (o governo sovitico decidia quem poderia usar quais conjuntos de
S-boxes).

A cifra FOX[JV04] 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) [Aok+01], Blowsh (de Bruce Schneier) [Sch94], e MARS (nalista do

Exerccios
Ex. 34  Seja
Argumente que

lim

concurso que selecionou o AES, desenvolvida pela IBM) [Bur+99].

F : { 0, 1 } { 0, 1 } { 0, 1 }
F deve ser de mo nica.

uma funo pseudoaleatrea.

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


Feistel encriptando o texto cifrado, mas revertendo a ordem das subchaves usa-

Pr
e

das em cada rodada.

Ex. 36  A respeito do Teorema de Luby-Racko, 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).

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

Ve
rs

muito supercial).

Ex. 40  Mostre8 que para o DES vale


operao de complemento dos bits de

Enck (m) = Enck (m),

onde

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 conguraes nito). Quantas vezes

no mximo podemos

iterar este passo sem repetir conguraes?

7 Hoje

mantidos pela Comunidade de Estados Independentes (pases antes membros da

Unio Sovitica).

8O

Exerccio 52 pede a descrio de um ataque que usa esta propriedade.

notas de aula  verso 85 - Jernimo C. Pellegrini

5.8. FOX (IDEA-NXT)

85

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?

inversa da operao

in
ar

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

MixColumns.

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

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.

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

Ve
rs

Pr
e

ou permutao da cifra sem ter que refazer completamente o programa.

9 Dentre os exerccios do Captulo 6,

quebrar estas cifras.

que trata de Criptanlise, h um (59) que sugere tentar

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 5.

CIFRAS DE BLOCO

Ve
rs

Pr
e

lim

in
ar

86

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 6

lim

Noes de Criptanlise

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

Pr
e

uxo, que analisaremos usando criptanlise algbrica.

6.1 Uma rede de substituio e permutao


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
prximos

16

16

bits; a segunda rodada, os

bits, e assim por diante. Aps a ltima rodada aplicaremos uma

ltima subchave, usando o total de

16 5 = 80 bits. Inicialmente, presumimos


O(280 ), mas mostraremos que tal

que o esforo para obteno da chave seja


expectativa ingnua.

Ve
rs

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

deve ser lido como

F = 1111.

0000, 1

como

0001,

24 = 16.

Assim, o valor

E = 1110

e assim por diante at

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
87

8
E

9 A
3 B

B
9

C
7

D
1

E
6

F
0

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

88

Por exemplo, se a entrada da S-box


sada ser

9,

NOES DE CRIPTANLISE

1011 vericamos
1001.

que

1011 = B

e a

ou seja, a sequncia de bits

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

in
ar

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

Esta tabela semelhante quelas vistas no Captulo 5: os nmeros representam as posies dos bits da entrada, e a ordem em que aparecem na

Pr
e

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

Ve
rs

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 gura 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 85 - Jernimo C. Pellegrini

6.1. UMA REDE DE SUBSTITUIO E PERMUTAO

Ve
rs

Pr
e

lim

in
ar

89

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

90

NOES DE CRIPTANLISE

6.2 Criptanlise linear


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

in
ar

porque usamos representao binria de nmeros e usamos aritmtica mdulo

e lgico.
x1 , . . . , x4 . Podemos

dois, onde a operao aditiva o ou-exclusivo e a multiplicativa o


Por exemplo, considere oito variveis binrias
usar os

ai

como coecientes e os

xi

a1 , . . . , a 4

como variveis de uma combinao linear

a1 x1 + a2 x2 + a3 x3 + a4 x4

(mod 2),

ou

lim

a1 x1 a2 x2 a3 x3 a4 x4 ,

e lgico de ai e xi . Como ai s pode valer


ai tem o efeito de escolher quais xi participam do ou-exclusivo.
x = 1100, ento a combinao linear ax

onde  ai xi  denota o
cada
e

um ou zero,
Se

a = 0110

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.

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

Ve
rs

obter a ltima subchave com esforo menor que o de uma busca exaustiva.

V , que extrado da
X e V , e conhecendo
o valor da sada Y , podemos tentar deduzir algo a respeito da subchave k5 usada
A Figura mostra que estamos interessados em um valor

ltima rodada da rede. Conhecendo alguma relao entre


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

S-box; por

X1 , X2 , X3 , X4

os bits de entrada e por

a entrada e a sada de uma

Y1 , Y2 , Y3 , Y4

os bits de sada.

notas de aula  verso 85 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

91

O objetivo encontrar variveis aleatreas denidas por relaes lineares do


tipo

que tenham probabilidade distante de

6.2.1

1/2.

O Lema do Empilhamento

in
ar

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

Se

a sada de uma funo realmente aleatrea, supomos que

prxima de

1/2

muito

 e a criptanlise linear um mtodo para identicar casos

onde isso no acontece.


Comeamos denindo esta distncia de

1/2, que um conceito central para

a criptanlise linear.

vis

de uma varivel aleatrea binria

1/2.

Xi

Pr
e

Denio 6.1. O

i = Pr(Xi )


O vis mede o quanto a probabilidade de uma varivel est acima de


(claramente o vis pode ser negativo, se
Considere as entradas

X1

X2

Pr[Xi ] < 1/2).

na S-box que denimos. A expresso

X1 X2 = 0

pode ser reescrita como

X1 = X2 .

Ve
rs

Suponha que as probabilidades de

Se

X1 , X2

seja

lim

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

cl , . . . , cm ,

X1

X2

sejam

Pr[X1 = 0] = p1

Pr[X2 = 0] = p2 .

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

1/2

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

92

Se

p1 = 1/2 + 1

p2 = 1/2 + 2 ,

com

|e1 |

|e2 | 1/2,

ento

1
+ 21 2
2

in
ar

Pr[X1 X2 = 0] =
ou seja,

NOES DE CRIPTANLISE

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.

(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

lim

Lema 6.2.

ou seja,

1,2,...,n = 2n1

n
Y

i .

Demonstrao.

Pr
e

i=1

Provamos por induo no nmero de variveis. Para uma va-

rivel 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 + 1.
X1 X2 Xik+1 ,

variveis, com

k 2.

Mostraremos ento a validade do Lema para


Para determinar o vis de

reescrevemos

A = X1

X2 Xik

X1 X2 Xik+1 = A Xik+1 .

Ve
rs

Pela hiptese de induo, o vis de

2k1 kj=1 ij .

J o vis de

Xik+1

ik+1 .
A e

Como sabemos calcular o vis para duas variveis, basta faz-lo para

Xik+1 ,

6.2.2

obtendo

2 2k1

k
Y

ij ik+1 = 2k

j=1

k+1
Y

ij .

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 85 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

X3

X4

Y1

Y2

Y3

Y4

in
ar

X2

lim

X1

Pr
e

93

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

Xi1 Xi2 Xim Yj1 Yj2 Yjn = 0

verdadeira. Por exemplo, considere

X3 X4 = Y1 Y2 Y3 .

A prxima tabela

Ve
rs

obtida a partir da anterior com as seguintes modicaes:

Apenas

As colunas do meio mostram as duas combinaes lineares,

X3

X4

so listados na entrada, e apenas

Y1 , Y2

Y3

na sada;

X3 X4

Y1 Y2 Y3 ;

As linhas em que as duas combinaes coincidem esto destacadas.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

94

NOES DE CRIPTANLISE

X4

X3 X4

Y1 Y2 Y3

Y1

Y2

Y3

in
ar

X3

Pr
e

lim

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


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

Esperamos que

1/2

melhor).

Ve
rs

de

Pr[A = 0]

seja aproximadamente

1/2

(quanto mais prximo

No entanto, as colunas do meio coincidem 4 vezes e h 16

entradas, portanto

Pr[A = 0] = 4/16 = 1/4.

Para uma varivel

A qualquer (ou seja,

O vis de

1/4 1/2 = 1/4.

para uma expresso linear qualquer)

o nmero de coincidncias pode car entre zero e dezesseis.


oito do valor, teremos um nmero entre

resultar no vis da varivel (por exemplo, para

+8  que
A denida

Se subtrairmos

se dividido por

16

acima o valor seria

(4 8)/16 = 4/16 = 1/4).

X
Xi ), e as colunas representam bits de Y (combinaes
O elemento (i, j) da tabela a quantidade de coincidncias para

Construmos agora outra tabela: as linhas representam diferentes bits de

(combinaes lineares de

lineares de

Yi ).

X = Y

menos oito.

notas de aula  verso 85 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

95

2
3
4
5

6
7
8
9
A
B
C
D
E

+8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
+2
+2
0
2
0
+4
+2
+2
0
+4
2
0
2
2
0

0
2
2
0
0
2
2
0
+2
+4
0
2
+2
4
0
2

0
0
0
0
2
2
+2
6
0
0
0
0
2
2
+2
+2

0
4
+2
2
+2
+2
0
0
2
+2
+4
0
0
0
+2
+2

0
2
0
+2
0
+2
0
2
+4
2
0
2
+4
+2
0
+2

0
2
0
+2
2
0
+2
0
4
2
0
2
+2
0
+2
4

0
0
2
2
+4
0
+2
2
2
2
0
0
+2
2
4
0

0
0
+2
+2
2
2
0
0
2
+2
0
+4
+4
0
2
+2

0
+2
4
+2
0
+2
0
2
0
+2
+4
+2
0
+2
0
2

0
2
0
+2
2
+4
2
0
0
2
0
+2
2
4
2
0

0
0
+2
+2
0
0
2
2
2
+2
0
4
2
+2
4
0

0
0
0
0
0
+4
+4
0
0
+4
4
0
0
0
0
0

0
+2
2
+4
+2
0
0
+2
2
0
0
2
0
2
+2
+4

0
+2
2
4
4
+2
2
0
2
0
0
2
+2
0
0
+2

0
4
4
0
2
2
+2
+2
0
0
0
0
2
+2
2
+2

Pr
e

in
ar

lim

Esta tabela chamada de

tabela de aproximao linear.

X3 X4 Y1 Y2 Y3 : a
0011 = 3 e a coluna por 1110 = 14 = E . E de fato, na posio
(3, E ) temos 4  o que signica que o vis 4/16 = 1/4, exatamente como

Podemos vericar o vis que j calculamos, de

linha dada por

Ve
rs

calculamos anteriormente.

Denotaremos por

In

a sequncia de 16 bits na entrada das S-boxes da

sima rodada. De maneira semelhante,

n-sima
I n e On .

S-boxes da
16 bits de

On

rodada. Tambm denotaremos por

Ijn

Usaremos notao semelhante para as chaves de rodada:

da chave da

n-sima

n-

a sequencia de 16 bits saindo das

Ojn

kjn

j -simo

dos

j -simo

bit

rodada.

A prxima gura mostra

In

On ,

alm de caminhos, cuja natureza car

clara no decorrer do texto. As S-boxes

aproximao que faremos.

S1,1 , S2,1 , S3,2 , S4,2

S4,3

so

ativas

na

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

NOES DE CRIPTANLISE

Ve
rs

Pr
e

lim

in
ar

96

Note que a trilha mostrada na rede no representa que tal entrada deve

inuenciar

exatamente aqueles bits na rede.

Signica apenas que escolhemos um

notas de aula  verso 85 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

97

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
aps ou-exclusivo com bits de

k1 )

S11

como

X1

e as seguintes variveis aleatreas (cada

in
ar

X2

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.

fcil identicar cada varivel aleatrea na ltima gura.

Fazemos um ou-

A:

Pr
e

exclusivo de todas elas, denindo uma varivel aleatrea

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


exclusivo do passo anterior com a subchave. Por exemplo,

I11 m1 k11
I53 O22 k53 .

Ikj

como ou-

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

98

Determinamos ento que

A1 A2 A3 A4

NOES DE CRIPTANLISE
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
.

x x = 0,

lim

Como

3
(m1 m2 k11 k21 k12 k53 k13
)
3
3
O63 O73 O14
O15
.
Estamos interessados no caso em que
denimos nossa varivel aleatrea

A),

A1 A2 A3 A4 = 0 (porque como

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

O63 I64 k64

Ve
rs

4
4
O73 I10
k10
3
O14
I84 k84
3
4
4
O15
I12
k12
.

Assim,

3
(m1 m2 k11 k21 k12 k53 k13
)

4
4
4
4
[I64 k64 ] [I10
k10
] [I84 k84 ] [I12
k12
] = 0.

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

Z estar
A1 A2 A3 A4 ser

Testaremos as chaves uma a uma  portanto podemos presumir que


xo em um ou em zero. Em um dos casos, o vis de

+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 85 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

99

1/32.
Os bits da ltima chave (K5 ) que so combinados com a sada das S-boxes
e

S4,3

5
8
k55 k12
. H 2 = 256
subchaves candidatas.

so

chamados de

Tendo o vis de

possveis valores para estes bits, que so

in
ar

S4,2

A e uma quantidade suciente de pares (m, c) de texto claro

e encriptado (todos com a mesma chave), podemos identicar, dentre todas as


subchaves candidatas, aquela para a qual a relao

(Equao 6.1) vale com

a frequncia que esperaramos, dado o vis que calculamos. A Figura a seguir

Pr
e

lim

ilustra este processo.

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

Ve
rs

O pseudocdigo a seguir mostra este processo. O vetor


de frequncia (o algoritmo calcula, em

k -sima

Fk ,

contm os contadores

a frequncia de ocorrncias para a

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 85 - Jernimo C. Pellegrini

CAPTULO 6.

100

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
A subchave que queremos encontrar , portanto

in
ar

k1 = 0001 1011 1001 1001

10011001

(sublinhada acima).

O nmero de pares de texto claro e encriptado que usamos 1200. O ide-

alizador da criptanlise linear, Mitsuru Matsui, argumentou que um nmero

lim

razovel de pares

1
2

onde

o vis da relao linear que encontramos.

conclumos que

Como temos

= 1/32,

Pr
e

1
= 1024
(1/32)2
pares so sucientes.

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
.

Esperamos que o valor absoluto do vis


seja prximo de

1/32 = 0.03125.

A

da varivel

A para a chave correta

Pode haver outras subchaves para as quais esta

relao tambm valha com alta probabilidade, portanto podemos ter que buscar

entre as diversas subchaves com

Ve
rs

subchave correta tem

A

mais prximos de

A = 0.35.
subchave

|A |

01010000

0.02325

01111011

0.02325

00011111

0.025

10111000

0.02525

10111110

0.0255

10010110

0.02625

01000011

0.0265

11011110

0.02675

00100000

0.02775

01101001

0.03025

00101110

0.033

10011001

0.035

Conseguimos, nalmente, extrair oito bits da chave.

1/32.

Nesta simulao, a

notas de aula  verso 85 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL

101

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
chave. A chave tem

O(280 ).

80

in
ar

na criptanlise linear de sucesso muito menor do que a busca exaustiva pela


bits, e a busca exaustiva teria complexidade de tempo

Com o trabalho j feito, zemos uma busca em tempo

determinar oito dos bits.

72 bits, e se
O(272 ) + O(28 ),

Restam

teremos usado no total tempo

O(28 )

para

os buscarmos exaustivamente
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.

Escolha da trilha e resistncia ao ataque

lim

6.2.3

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

Pr
e

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

6.3 Criptanlise diferencial

A criptanlise diferencial outro conjunto de tcnicas para encontrar fraquezas

em construes criptogrcas, 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.

X0

Ve
rs

Dadas duas entradas

X 00

X e
Y for

para uma cifra, calculamos sua diferena

vericamos a diferena entre as sadas

Y0

Y 00 .

Se a distribuio de

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

1 0 = 1; 1 1 = 0).

0 = 0; 0 1 = 1 ;

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

102

Sejam

X0

X 00

NOES DE CRIPTANLISE

duas entradas para uma S-box.

Estamos interessados na

X = X 0 X 00 .
Calculamos tambm as sadas da S-box

Y 0 = S(X 0 )

mos a diferena

Y = Y 0 Y 00 .
(X , Y )

chamado de

diferencial.

Idealmente, tendo xado um


qualquer

Y .

X , Pr[Y |X ]

deveria ser igual a

esta probabilidade muito alta par algum diferencial

Escolhemos agora um

e calculamos todos os possveis

X0

X = 0011, listamos todos os 16 valores de X 0 ,


X 00 = X 0 0011. Isto feito na tabela a seguir.

Ve
rs

X0

para

ela pode ser

X 00

que resul-

0011

0001

0010

0010

0001

0011

0000

0100

0111

0101

0110

0110

0101

0111

0100

1000

1011

1001

1010

1010

1001

1011

1000

1100

1111

1101

1110

1110

1101

1111

1100

xo, igual a

e para cada um

X = 0011
X 00 = X 0 X

0000

X0
0011).

A prxima tabela j mostra, para


(ainda com

1/2n

Damos um exemplo usando a S-box que denimos anteriormente:

se escolhermos
deles teremos

(X , Y ),

Pr
e

X .

e observa-

Isto infelizmente impossvel, como mostraremos adiante. Quando

usada para obter bits da chave.

tam em

Y 00 = S(X 00 ),

lim

O par

in
ar

diferena entre estas entradas, que denotamos

X 00 ,

as sadas

Y0

Y 00

e a diferena

notas de aula  verso 85 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL

103

X = 0011
Y0
Y 00

X0

X 00

0000

0011

0010

0101

0111

0001

0010

1000

1101

0101

0010

0001

1101

1000

0101

0011

0000

0101

0010

0111

0100

0111

0100

1111

1011

0101

0110

1010

1100

0110

0110

0101

1100

1010

0110

0111

0100

1111

0100

1011

1000

1011

1110

1001

0111

1001

1010

0011

1011

1000

1010

1001

1011

0011

1000

1011

1000

1001

1110

0111

1100

1111

0111

0000

0111

1101

1110

0001

0110

0111

1110

1101

0110

0001

0111

1111

1100

0000

0111

0111

lim

in
ar

Pr
e

Observamos as frequncias de cada cadeia de quatro bits em


0101

0110

0111

1000

1011

0
0
2
3
4
5

6
7
8
9

A
B

D
E
F

(X , Y ).

0
0
4
0
2
0
0
2
0
2
2
0
0
0
0
4

0
2
0
0
4
2
0
0
0
0
2
0
0
0
2
4

0
2
0
0
0
0
2
0
2
0
2
2
0
4
2
0

0
0
0
0
0
2
0
2
0
2
0
2
0
4
4
0

0
0
4
2
0
0
0
2
0
2
0
0
4
2
0
0

0
4
0
2
2
0
0
0
2
2
2
0
2
0
0
0

0
0
0
8
0
0
2
2
0
0
0
0
2
2
0
0

0
2
2
2
0
2
4
0
0
0
0
2
0
0
2
0

0
0
0
0
4
2
2
0
0
2
2
0
4
0
0
0

0
2
2
0
2
0
0
2
2
0
2
0
2
0
2
0

0
0
0
2
0
2
0
0
4
0
2
4
2
0
0
0

0
0
0
0
0
2
2
0
4
2
0
2
0
0
2
2

0
2
2
0
2
0
0
2
0
2
0
2
0
2
0
2

0
2
0
0
0
0
2
4
0
2
2
2
0
0
0
2

0
0
2
0
0
4
2
0
2
0
0
0
0
2
2
2

Ve
rs

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

Y :

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

104

As frequncias que computamos para

NOES DE CRIPTANLISE

y = 0011

esto na linha

3.

Idealmente, gostaramos de construir uma S-box tal que para quaisquer

Y ,
Pr[Y |X ] =

1
,
2n

in
ar

ou seja, tal que todas as entradas na tabela de frequncias sejam iguais a um.

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

Teorema 6.4.

No existe S-box tal que para quaisquer X e Y ,

Demonstrao.

1
.
2n

lim

Pr[Y |X ] =

Em nossa cifra, a sada

Oi1

de uma rodada misturada com a chave

da prxima, para somente depois servir de entrada para as S-boxes da


rodada. A
subchave

diferena

ki ,

I i,

i-sima

no entanto, no dependem da

Sejam O0(i1) e O00(i1) sadas para a rodada i 1 da rede; I 0(i)


as entradas na i-sima rodada. Sejam

Pr
e

eI

entre duas entradas para

ki

de acordo com o prximo Teorema.

Teorema 6.5.
00(i)

Segue imediatamente do Lema 6.3.

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 inuenciada pela subchave k i .
O ou exclusivo das entradas

Demonstrao.

Ve
rs


 

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

ou seja, independente da chave

ki .

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

A diferena na entrada de

S14

ser

0110.

m1 m2 = 0000 0000 0000 0110.

Nas outras S-boxes, a diferena de

entrada zero, e portanto a diferena de sada tambm o ser (m1 e


diferem no ltimo

nibble).

m2

Podemos ento analisar a propagao das diferenas

traando uma trilha como zemos na criptanlise linear.

notas de aula  verso 85 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL

Ve
rs

Pr
e

lim

in
ar

105

S14 , e portanto o dife0000 0000 0000 0110.


1
1
Denotaremos por O13..16 os bits de 13 a 16 de O  que so a sada da S-box
S14  e usaremo notao semelhante para outros I i e Oi .
Usaremos

0110

como diferencial de entrada na S-box

rencial de entrada para a rede toda

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

106

S14 (ou seja, nos


probabilidade 4/16 = 1/4.

Na sada de
com

bits

13..16

NOES DE CRIPTANLISE
de

O1 ),

0100

teremos a diferena

in
ar


 1
1
Pr (O13..16
) = 0100|X = 0000 0000 0000 0110 = .
4

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 .

Na sada de

J em

O3

temos

muito maior que

1/2n = 1/65536.

 4
1
1
=
,
4
256

lim



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

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, identicando subchaves e vericando a frequncia da relao para cada
possvel subchave.

(m , m )

Pr
e

Usamos muitos pares de mensagens


seja,

com diferena igual a

(ou

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

S42

ser

0110 0110.

(c , c )
4
4
(4 , I
) e observamos a diferena I4 I
. Quando esta for igual
entre m e m , incrementamos o contador para esta subchave.

Para cada subchave candidata, decriptamos parcialmente muitos pares

resultando em

diferena

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 85 - Jernimo C. Pellegrini

6.4. CRIPTANLISE ALGBRICA


A probabilidade de

107

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


F por N e vericar os valores mais prximos de

dividir cada elemento do vetor

1/256 = 0.00390625.

in
ar

possvel mostrar que uma quantidade razovel de pares de texto claro


necessrios para que a criptanlise tenha sucesso aproximadamente

c
p

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,

1
= 256.
(1/256)

lim

evidentemente). Esta quantidade mais que suciente, j que

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

Fk /n igual a
1/256 = 0.00390625

usadas no ataque linear, obtemos os dados na tabela a seguir.


para a chave correta  o valor mais prximo de

Pr
e

0.00375

subchave

Fk /n

11110100

0.00125

11111011

0.00125

11111100

0.00125

11111110

0.00125

00101011

0.0025

01010100

0.0025

01100100

0.0025

01101011

0.0025

01011011

0.00375

Ve
rs

dentre todos.

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

rada a partir de uma chave inicial

k 0 = (KA KB KC KD KE ),

sequncias de quatro bits. Por exemplo,

onde

KA ,

etc so

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

108

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

Precisamos de modelos das S-boxes e da permutao como equaes envolvendo os bits de entrada e sada de cada uma. Sendo

Xi

Ve
rs

da S-box e

i-simo

Yi

i-simo

bit de sada

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 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 85 - Jernimo C. Pellegrini

6.5. TCNICAS DE CRIPTANLISE RELACIONADAS

109

das entradas da S-box, temos

I14 I24 I34


I14 I24 I34
I14 I34 I44
I14 I34 I44 .
Reescrevemos cada

Ij4

em funo de

O3

completamente um sistema de equaes.

k4 ,

in
ar

c1 = k15 I14 I24 I44

e continuamos at termos descrito

Como as equaes tem grau trs, o

lim

sistema difcil de resolver, mas em muitos casos possvel.

6.5 Tcnicas de criptanlise relacionadas

As tcnicas de criptanlise linear e diferencial no so mtodos fechados. Podemos usar variantes e combin-las com outras tcnicas. Alguns exemplos so

Pr
e

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.

Criptanlise diferencial impossvel:

semelhante criptanlise diferencial,

mas ao invs de procurarmos caractersticas diferenciais que tenham alta


probabilidade, procuramos caractersticas com probabilidade zero (ou seja,

Ve
rs

Notas

que no deveriam acontecer).

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


explorando possveis ataque ao DES [Mat93]. A criptanlise diferencial foi proposta inicialmente por Biham e Shamir em 1991, usando como exemplo uma
cifra semelhante ao DES [BS91]. A apresentao para criptanlise linear e diferencial semelhante em esprito quelas feitas por Stinson em seu livro [Sti06] e
por Howard Heys em um relatrio tcnico [Hey01]. Em 1994 Don Coopersmith,
um dos responsveis pela criao do DES na IBM, publicou um artigo [Coo94]
armando que a IBM j em 1974 conhecia a tcnica de criptanlise diferencial, e
apontou medidas tomadas no projeto do DES para dicultar 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 85 - Jernimo C. Pellegrini

CAPTULO 6.

110

NOES DE CRIPTANLISE

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


em livro [BS93], em cujo prefcio se l

A criptanlise diferencial o primeiro ataque capaz de quebrar o

in
ar

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
47
durante a fase de coleta de dados, de um pool maior de 2
textos
claros escolhidos usando um critrio simples de repetio de bits que
descarta mais que

99.9%

dos textos cifrados assim que so gerados.

Uma introduo Criptanlise Algbrica com exemplos de cifras reais quebradas dada no livro de Gregory Bard [Bar09].

lim

A tcnica de chaves relacionadas foi desenvolvida independentemente por


Biham e Knudsen em 1993 [biham-related;

knudsen-related ].

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 [Knu95]. possvel combinar criptanlise diferencial e linear, resultando no mtodo descrito por Hellman e Langford, chamado de criptanlise

Pr
e

diferencial-linear[HL94]. O uso de metaheursticas em criptanlise discutido


extensivamente na tese de John Clark [Cla01]. Bruce Schneier publicou na revista Criptologia um guia para estudo individual de Criptanlise [Sch00], 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 [Nel+95], 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 [CI07].

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 especca desta S-box ou algo que

deva ser verdade sempre?

1 Traduo

livre.

notas de aula  verso 85 - Jernimo C. Pellegrini

6.5. TCNICAS DE CRIPTANLISE RELACIONADAS

111

+8

b) Porque a soma de qualquer linha ou coluna sempre

ou

8?

neste Captulo, mas desta vez usando os bits

da entrada.

in
ar

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

Ex. 50  Escolha uma das S-boxes do DES e construa sua tabela de aproximao linear.

Ex. 51  Prove o Lema 6.3.

Ex. 52  Mostre como usar a propriedade descrita no Exerccio 40 para di-

minuir 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

lim

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.

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

2100

2110

Pr
e

ataque proposto funcionaria com

operaes em

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

S -box

tel deve ser a aplicao da

seguida de ou exclusivo com a subchave da

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 xo (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 identicar 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 uxo.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 6.

112

NOES DE CRIPTANLISE

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


aumentando a diculdade 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.

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 7

Funes de hashing (ou

resumos criptogrcos)

lim

Resumos Criptogrcos
(funes de hashing)

tem um papel anlogo, de certa

forma, ao dos geradores pseudoaleatreos: enquanto um PRG expande sua se-

Pr
e

mente em uma sada indistinguvel de bits aleatreos, uma funo de hashing


comprime uma entrada (possivelmente de tamanho ilimitado) em um resumo
de tamanho xo, mas de tal forma que seja difcil encontrar duas entradas com
a mesma sada.

Por ora deniremos formalmente funes de hashing que sejam resistentes


coliso, e nosso modelo ideal de funo de hashing ser uma funo
a qual seja difcil encontrar

x, x0

tais que

f (x) = f (x0 ).

f ()

para

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.

Ve
rs

Em nossa denio de funo de hashing usaremos um algoritmo

Gen,

que

cria uma chave.

Denio 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

Se

n.

Assim,

foi gerada por

resumos com

p(n)

Gen(1n ) = s,

Gen(1n ),

com

s {0, 1}n

ento h um polinmio

bits a partir de

p()

e de uma entrada

tal que

cria

de tamanho

arbitrrio:

com

x {0, 1}

H(s, x) = y
p(n)

y {0, 1}


113

notas de aula  verso 85 - Jernimo C. Pellegrini

114CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

Usaremos

H s (x)

ao invs de

H(s, x).

Consideraremos inicialmente funes de hashing onde a entrada no de


tamanho arbitrrio, mas de tamanho xo (maior que o tamanho da sada).
Como denimos uma funo com domnio maior que o contradomnio, cerde

coliso.

x0

diferentes tais que

H s (x) = H s (x0 ).

in
ar

tamente haver

Chamamos a isso

Tentaremos construir funes de hashing que minimizem a pro-

babilidade de coliso  ou, de maneira mais precisa, funes para as quais a


probabilidade de coliso seja desprezvel.

Denimos a seguir a propriedade de resistncia a coliso para funes de


hashing.

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

Neste experimento,

(Gen, H).

escolhida usando

enviada para

a funo de

lim

hashing

Gen;

A;

O adversrio envia de volta dois textos,

Se

x0 ;

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

Pr
e

um. Caso contrrio zero.

s Gen(1n )

1n
x, x0

Ve
rs

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

Denio 7.3 (Resistncia a coliso). Uma funo de hashing


resistente a coliso se para todo adversrio polinomial
desprezvel

negl

= (Gen, H)

existe uma funo

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

x0

O adversrio ter ento que encontrar outro

que tenha o mesmo resumo de

na funo

H s;

notas de aula  verso 85 - Jernimo C. Pellegrini

7.1. ATAQUES E O PROBLEMA DO ANIVERSRIO

115

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 uni0
0
formemente. O adversrio deve encontrar algum x tal que H(x ) = y (ou
seja, dada a imagem H(x), o adversrio deve encontrar algum elemento
na pr-imagem de H(x)).

Toda funo de hashing resistente a colises tem resistncia


de segunda pr-imagem, e toda funo com resistncia de segunda pr-imagem
tem resistncia de pr-imagem.
Proposio 7.4.

7.1 Ataques e o problema do aniversrio


N = 2n

com sada de tamanho

o tamanho do conjuntos de possveis sadas de

Escolha

seus resumos

usando

distribudos uniformemente em

e seja

H.

x1 , x2 , . . . , xk , todas com tamanho 2n e calcule


H . Suporemos que os valores yi = H(xi ) so
{0, 1}2n .

diferentes entradas

y1 , y2 , . . . , yk

n,

lim

Suponha que temos uma funo de hashing

Esta situao est claramente relacionada ao problema do aniversrio, descrito no Apndice A.

Pr
e

Suponha que o adversrio queria tentar encontrar colises em uma funo


de hashing com

bits de sada calculando sucessivamente resumos de entradas

escolhidas ao acaso. Denotaremos por


da funo, e por

N = 2n

a quantidade de possveis sadas

o evento que representa a situao onde o adversrio en-

controu uma coliso. Presumiremos que o adversrio usar

k=

amostras.

Temos ento que sua probabilidade de sucesso ser

N
N N
Pr[C]
.
2N
4N
Se o adversrio tentar

Ve
rs

coliso

Por exemplo, suponha que o tamanho


da sada de

N = 2100 .

2100 = 250

seja 100 bits. Temos ento

entradas, a probabilidade de

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
versrio ser aproximadamente 1/2.

de sucesso do ad-

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 signica

que para conseguir probabilidade de sucesso no mximo igual a

ataque o adversrio precisaria de

factvel.

2512 = 2256

1/2

em um

tentativas  tal ataque no seria

notas de aula  verso 85 - Jernimo C. Pellegrini

116CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

Veremos agora como seria a probabilidade de sucesso medida que diminu-

2255 , a probabilidade < 1/4. Para 2254


35
128
menor que 9.6 10
. Para 2
menor que

mos a quantidade de tentativas: Para


menor que

1/32.

Para

200

in
ar

4.3 1078 .
A proteo contra ataques de aniversrio se d, ento, pela escolha do tamanho da sada da funo.

No entanto, apenas medida

segurana de uma funo de hashing, e no suciente.

necessria

para a

7.2 Construo: transformao de Merkle-Damgrd


Se tivermos uma funo de hashing para entrada de tamanho xo, podemos
us-la para entradas de qualquer tamanho usando uma transformao descrita

lim

por Merkle e Damgrd.

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

(Gen, h)

(Gen, H):

a funo

computada como segue.


aceita entrada de

cada um com

n/2

bits; quebramos

em

k = 2|x|/n

H s (x)

blocos diferentes,

x1 , x2 , . . . , xk .

xk+1 , cujo contedo a representao do tama-

em binrio.

Usaremos

hs

em cada bloco (chamaremos cada aplicao de

Como cada bloco tem


bits.

a mesma, e

bits. Daremos a estes blocos os nomes

Adicione um ltimo bloco


nho de

Pr
e

n bits.
Gen permanece

tem entrada de tamanho xo, igual a

A nova funo ser

n/2

hs

de

passo.
n/2

bits, em cada passo precisaremos de mais

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 xo) representada por trapzios e no retngulos, para


simbolizar o fato da entrada de

hs

ser duas vezes maior que sua sada.

Seja (Gen, h) uma funo de hashing de entrada de tamanho xo


resistente a coliso e (Gen, H) construda usando a transformao de MerkleDamgrd. Ento (Gen, H) tambm resistente a coliso.
Teorema 7.6.

notas de aula  verso 85 - Jernimo C. Pellegrini

7.3. RESISTNCIA A COLISES COM

Demonstrao.

DEXP

117

Provaremos apenas que o Teorema vale quando as entradas

temo mesmo tamanho (ou, equivalentemente, quando

tem entrada de ta-

manho xo).

x e x0 duas entradas diferentes de mesmo tamanho que colidem em


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
0
Seja i o maior ndice de bloco tal que zi1 ||xi e zi1 ||xi so diferentes.
Sejam

Pr
e

lim

in
ar

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


s
coliso em h (na gura acima isso signicaria que no h mais blocos

Se

direita).

i < k+1. Neste caso, temos zi = zi0 . No bloco anterior


0
0
temos ento zi 1 ||xi e zi 1 ||xi colidindo.
s
s
Assim, uma coliso em H implica em uma coliso em h . Com isto torna-se
s
2
simples mostrar que se h resistente a coliso, H tambm o .


Ve
rs

Suponha ento que

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


de tamanho

2n

Gen(1n ):

e sada de tamanho

Escolha um primo

um grupo de ordem

s = hG, q, g, hi.

(Gen, H)

descrita a seguir tem entrada

n.
cuja representao tenha

com um gerador

bits e devolva

e um elemento

do grupo:

notas de aula  verso 85 - Jernimo C. Pellegrini

118CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

como

de dois nmeros

2n bits, pode ser interpretada


y (mod q). Calcule

tem

H s (m) = g x hy

como a concatenao

(mod q).

in
ar

H s (m):

Presumindo que vale a hiptese do logaritmo discreto, a Construo 7.7 uma funo de hashing com resistncia a colises.
Teorema 7.8.

Demonstrao.

Seja

a Construo 7.7 e

um algoritmo polinomial para

obteno de colises. Seja

Podemos usar

lim

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

DL

para construir um algoritmo

que resolve o problema do

logaritmo discreto em tempo polinomial com probabilidade de sucesso

e(n).

DL

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
retorna

A encontra coliso (x 6= x0

Ve
rs

Seja

h = 1 o resultado ser obviamente correto,

logg h = 0.

Para o caso em que


que

H s (x) = H s (x0 ))

logg h.

Primeiro observamos que quando


porque

h 6= 1,

vericamos que

g x1 hx2

= g x1 hx2

x1 x01

x02 x2

d = x02 x2 .

H s (x1 ||x2 ) = H s (x01 ||x02 )

Notamos que

= h

implica

(7.1)

d 6 0 (mod q),

(7.2)
porque se o fosse, ento

teramos

e como

hx2 x2 = h0 = 1,
0

g x1 x1 = hx2 x2 ,
0

g x1 x1 = 1

(x1 x01 ) (mod q) seria zero, e teramos ento


0
0
0
(x1 ||x2 ) = x  contradizendo o que j estabelecemos (x 6= x0 ).
1
Como d 6 0 (mod q) e q primo, existe d
(mod q).

implicaria que

x = (x1 ||x2 ) =

notas de aula  verso 85 - Jernimo C. Pellegrini

7.4. SHA (SECURE HASH ALGORITHM)

119

g (x1 x1 )d

hx2 x2

= h[dd

(mod q))
[d1

e obtemos

(mod q)]

(mod q)]

= h.
0

g (x1 x1 )d

que a sada de

= h,

conseguimos o logaritmo de

logg h =

(x1 x01 )d1

x01 )(x02

DL.

Temos um algoritmo
probabilidade

e(n).

DL

(x1

na base

g:

(mod q)
x2 )1

(mod q),

lim

Como

in
ar

Elevamos a Equao 7.2 a este valor (d

que resolve o problema do logaritmo discreto com

Como presumimos este problema seja difcil,

desprezvel.

e()

deve ser

Pr
e

Esta funo muito pouco eciente para ser usada na prtica, porque exige
o clculo de exponenciao modular.
funes de hashing.

7.4 SHA (Secure

As prximas sees descrevem outras

Hash Algorithm)

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


resumos criptogrcos. O algoritmo foi chamado de

Secure Hash Algorithm, que

SHA-1

Ve
rs

7.4.1

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

A B:

operao de

E

A B:

operao de

ou exclusivo

A:

operao de

A + B:

lgico bit-a-bit;

lgico bit-a-bit;

negao

lgico bit-a-bit;

lgica bit-a-bit;

operao de soma mdulo

rotlB (A):

rotao dos bits de

32;

esquerda por

posies.

notas de aula  verso 85 - Jernimo C. Pellegrini

120CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

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:

onde

a representao binria do nmero de bits de

quantidade de zeros (z ) deve ser suciente para que


por

512.

in
ar

y = x || 0z || l
x; l

deve ter 64 bits. A

tenha tamanho divisvel

Por exemplo, suponha que a mensagem original tem

representao de

3000

em binrio

101110111000.

para o SHA-1 igual a

3000

bits.

Teremos ento a entrada

(x) 1 0000000 101110111000


x

com 3000 bits seguida de um bit um, sete zeros e o

lim

ou seja, a mensagem

nmero 3000 em binrio. O total de bits


blocos de

512

bits.

3072,

que pode ser dividido em

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

y.

Ve
rs

Pr
e

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

notas de aula  verso 85 - Jernimo C. Pellegrini

7.4. SHA (SECURE HASH ALGORITHM)

Hi

tem

dgitos hexadecimais. Como cada dgito hexadecimal pode

4
32 5 = 160

ser representado com

bits, cada

tem ento

bits.

Hi

tem

8 4 = 32

bits. A sada do SHA-1

Kt e funes ft que dependem

5A827999 para 0 t 19

6ED9EBA1
para 20 t 39
Kt =

8F1BBCDC
para 40 t 59

CA62C1D6 para 60 t 79

O algoritmo usa constantes

para
para

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

para

Pr
e

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

para

lim

(B C) ((B) D)

B C D
ft (B, C, D) =
(B C) (B D) (C D)

BC D

da rodada:

in
ar

Cada

121

SHA-3

Ve
rs

7.4.2

NIST selecionou atravs de concurso um novo padro para funo de hash, que
recebeu o nome de SHA-3. O algoritmo selecionado era chamado anteriormente
de Keccac.

construo esponja, que detalhamos a seguir.


{0, 1}k . A funo esponja tem um estado interno
com k bits, onde k = p + q . Os p primeiros bits so a parte do estado onde os
blocos de mensagem interferem, e os outros q so usados, de certa forma, para
acumular informao, q chamado de capacidade da funo.
O Keccac uma

Seja

uma permutao em

A construo esponja opera em duas fases:

Absoro: p

bits da entrada so misturados via ou-exclusivo na parte

externa do estado interno, e em seguida a funo

aplicada em

todos

os bits do estado. Se houver mais bits de entrada, repete-se a operao.

notas de aula  verso 85 - Jernimo C. Pellegrini

122CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

Extrao1 :
sada.

Os

primeiros bits do estado interno so copiados para a

f aplicada
p primeiros bits

Se houver necessidade de mais bits, ento a funo

novamente ao estado interno, e depois disso novamente os

m
1

m
2

mn

y
1

p
...
f
q

y
2

...

Pr
e

absoro

extrao

O algoritmo a seguir ilustra a construo esponja.

Ve
rs

esponja(m, f, p, q, l):
// m vista como sequencia de blocos mi .
r0
c0
// fase de absoro:
enquanto h prximo bloco mi :
x f (r mi |c)
r x[0..p]
c x[p+1..q]
// fase de extrao:
yr
kp
enquanto k < l:
x f (x)
y y|x[0..p]
k k+p
retorne y

1 Squeeze

no original em Ingls.

y
n

...

lim

in
ar

so copiados.

...

notas de aula  verso 85 - Jernimo C. Pellegrini

7.5. CIFRAS DE BLOCO USANDO FUNES DE HASH: AARDVARK123

7.5 Cifras de bloco usando funes de hash: Aardvark

in
ar

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 uxo 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 uxo, funo de hashing e funo de hashing com senha, possvel


construir uma cifra de bloco usando o mtodo Aardvark.

Pr
e

Construo 7.9 (Aardvark). Dadas uma cifra de uxo


hashing

A Figura a seguir

lim

ilustra esta construo.

e uma funo de hashing

H0

S,

de bloco, com bloco do tamanho igual ao tamanho da sada de

k R { 0, 1 }

retorna um par

Ve
rs

Enck (m)

retorna

Gen(1n )

H.

(c, c0 ),

c0

uma funo de

com chave, pode-se construir uma cifra

onde

= H(m)

c = m S(Hk0 (c0 )).

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

Aps decriptar uma mensagem possvel realizar uma vericao adicional:


deve ser igual a

H(m).

c0


A demonstrao de segurana do Aardvark condicionada a quatro carac-

tersticas de seus componentes:

H fortemente resistente a colises:


H(y).
H0

resistente a fraude existencial.

difcil encontrar

x, y tais que H(x) =

notas de aula  verso 85 - Jernimo C. Pellegrini

124CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

de

resiste a ataques de expanso: difcil expandir qualquer uxo parcial

S.
e

H0

so independentes:

in
ar

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

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
(Rascunho) Suponha que possvel facilmente encontrar

lim

Demonstrao.

mencionados no enunciado. Ao faz-lo ou encontramos coliso em


guimos fraude existencial em

H 0,

guimos explorar.

ou

H0

H,

(m, c, c0 )

ou conse-

tem alguma correlao que conse-

Pr
e

7.6 O Orculo Aleatreo

H uma situao bastante comum no projeto de esquemas e protocolos criptogrcos que usam funes de hashing como primitiva. Ainda que presumamos
que a funo de hashing funo de mo nica e resistente a colises, parece
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 demonstra-

es 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

Ve
rs

funo de hashing 
Seja

F AB

independente de que funo de hashing seja escolhida.


A e contradomnio

o conjunto de todas as funes com domnio

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 Criptograa com segurana demonstrvel (ainda que resultando em construes inecientes) e a Criptograa onde a segurana de construes ecientes
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

notas de aula  verso 85 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

125

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
mensagem

de

bits (onde se l seu voto, ou sua proposta para a licitao).

Alice no cona nos outros participantes, e quer garantir que


inferir

in
ar

propostas sejam feitas em sigilo). A escolha de Alice pode ser vista como uma

absolutamente nada

ningum

a respeito de sua mensagem.

poder

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 sucientes para

lim

demonstrar o sigilo do protocolo:

Uma funo de mo nica no suciente 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

de mo nica, podemos calcular para ela um predicado

Se presumirmos que

sigilo do protocolo: como

Pr
e

Certamente, se

hard-core.

m.

um orculo aleatreo, conseguiremos demonstrar o

f (m)

um valor escolhido aleatoreamente, o adver-

srio no obtm dali qualquer informao. O melhor que pode fazer tentar
adivinhar

m,

escolhendo aleatoreamente

atravs de uma consulta ao orculo.

m0 = m

1/2n ,

desprezvel em

m0

e depois vericando se

f (m0 ) = y

A probabilidade do adversrio sortear

|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

completamente aleatrea. Depois,

F , trocamos f por F , mas somente


k . No entanto, a chave parte
B , mas F uma famlia de funes.

para usar uma funo pseudoaleatrea

Ve
rs

alguns participantes tero acesso chave

da funo: Fk

funo de

em

Assim, o adversrio no tem acesso descrio da funo;

para usar o orculo aleatreo, trocamos

H.

por uma funo de hashing real

Esta funo no indexada, e estamos dando ento uma descrio

sucinta

completa

da funo que ser usada na prtica (no h informao

secreta).

7.6.1

Propriedades do Orculo Aleatreo

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.

notas de aula  verso 85 - Jernimo C. Pellegrini

126CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

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

Demonstrao.

Observamos que o adversrio no pode fazer mais que uma

quantidade polinomial de consultas ao orculo.


de consultas feitas por
Como

in
ar

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.

ao orculo e

Sejam ento

a quantidade

o nmero de bits na sada de

orculo aleatreo, sabemos que os valores

yi

lim

gerados aleatoreamente com distribuio uniforme. Temos ento


um ataque como o descrito na Seo 7.1.
ento no mximo

O(k 2 /2n ),

Funes de mo nica

desprezvel em

H.

consultados so

realizando

Sua probabilidade de sucesso ser

n.

Um orculo aleatreo funciona como uma funo de mo nica.

Pr
e

O Exerccio 75 pede a demonstrao do 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.
Teorema 7.12.

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 , denida a seguir, uma


funo de mo nica.
Fk (x) = H(k||x).

Ve
rs

Demonstrao.

7.6.2

Objees

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

A construo 7.7 de Chaum, Heijst e Ptzmann [CHP92].


Em 1996 Anderson e Biham criaram duas cifras para as quais era possvel

obter demonstrao condicional de segurana: BEAR e LION [AB96]. Ambas

notas de aula  verso 85 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

127

usavam funes de hashing e cifras de uxo. Pat Morin mostrou que ambas eram
suscetveis a um ataque de encontro no meio, e desenvolveu Aardvark [Mor96],
semelhante em esprito mas imune quele ataque.

in
ar

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 identicao e assinaturas [FS87b].

Em uma das demonstraes de

segurana os autores armam que

A prova formal de segurana neste abstract extendido presume que


n sucientemente grande e que f uma funo verdadeiramente
aleatrea.

Em um trabalho apresentado na primeira Conferncia da ACM em Segu-

lim

rana de Computadores e Computadores no ano de 1993 [BR93], Mihir Bellare


e Phillip Rogaway deram tratamento formal idia de funo verdadeiramente
aleatrea usado anteriormente por Fiat e Shamir.

O Keccac descrito por seus autores nos documentos submetidos ao concurso


do NIST [BDA12] e em outros artigos [07]. A evoluo do Keccac foi tambm
apresentada em Daghstul em 2009 [Ber+09].

O Captulo 13 do livro de Katz e Lindell [KL08] apresenta uma discusso

Pr
e

bastante extensa sobre o modelo do Orculo Aleatreo.

Exerccios

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:

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


s1

obtido usando

Gen1

s2

onde

a) Prove que para que

obtido usando

Gen2 .

seja resistente a coliso, basta que

uma

das outras

Ve
rs

duas funes o seja.

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.

Ex. 66  Quantas tentativas algum deveria fazer para encontrar uma coliso
em uma funo de hashing resistente a colises com sada de
probabilidade de sucesso maior ou igual que

2 Traduo

assumes that

livre.

256

bits, com

3/4?

O original The formal proof of security in this extended abstract

is suciently large and that

is a truly random function.

notas de aula  verso 85 - Jernimo C. Pellegrini

128CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

Ex. 67  A probabilidade de coliso dada na Seo sobre o problema do


aniversrio pode ser vericada por um experimento usando um gerador pseudoaleatreo e uma funo de hashing. Descreva (e implemente) este experimento.

ragrafo da prova). Complete-a.

in
ar

Ex. 68  O Teorema 7.6 no tem demonstrao completa (leia o ltimo pa-

Ex. 69  Implemente a funo de hashing resistente a colises usando exponenciao modular descrita neste Captulo. Compare seu desempenho com
alguma funo de hashing criptogrca rpida.

Ex. 70  Invente uma funo de hashing de entrada de tamanho xo, implemente-

lim

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

S.

Gen(1n )
Enc(m):

gere

k1 , k2 R { 0, 1 }

resistente a colises e uma cifra de

Pr
e

uxo

a mensagem dividida em partes esquerda (l) e direita (r ), no

necessariamente iguais (mas ambas devem ser menores do que

n, o tamanho

da chave) e calcula-se:

r S(l k1 )

l H 0 (r)

r S(l k2 )

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

Dec(c):

da mesma forma que em

Enc,

e realiza-se o mesmo clculo feito em

Enc,

Ve
rs

invertendo apenas a ordem das chaves:

r S(l k2 )

l H 0 (r)

r S(l k1 )

A respeito da cifra LION,


a) Desenhe um diagrama ilustrando o funcionamento da cifra.

b) Prove que a cifra funciona (ou seja, que

Deck (Enck (m)) = m).

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

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


e o Orculo Aleatreo?

notas de aula  verso 85 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

129

concretamente porque uma funo de hashing H construda


no uma instncia de orculo
mostre como distinguir H de um orculo aleatreo).

Ex. 74  Mostre

usando a transformao de Merkle-Damgrd


aleatreo (ou seja,

in
ar

Ex. 75  Demonstre o Teorema 7.12.

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 cou mais simples que aquela j dada no texto (e que no

Ve
rs

Pr
e

lim

depende do Orculo Aleatreo)?

notas de aula  verso 85 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

130CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 8

lim

Cdigos de Autenticao de
Mensagens

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


por entidades no autorizadas.
mensagens:

O conceito de segurana, no entanto, no se

Neste Captulo trataremos de

Pr
e

reduz privacidade apenas.

autenticidade

de

se Alice recebe uma mensagem supostamente enviada por Bob,

como ela pode ter certeza de que Bob de fato o remetente?

Denio 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


t. Denotamos t Mack (m).
Vrf

Ve
rs

recebe uma chave

(signicando

vlido)

k,

mensagem

uma mensagem

e tem como sada um

rtulo

m, um rtulo t, e retorna um
invlido). Denotamos v

ou zero (signicando

Vrfk (m, t).

Para todo

n, para toda k

gerada por

Gen(1n ) e toda mensagem m, mandatrio

que

Quando para qualquer

manho

p(n)

(onde

Vrfk (m, Mack (m)) = 1.



k , Mack

somente for denido para mensagens de ta-

algum polinmio), dizemos que

(Gen, Mac, Vrf)

um

esquema de autenticao de mensagens de tamanho xo para mensagens de


tamanho

p(n).

A prxima Construo a seguir um exemplo de MAC, que tem como base

funes pseudoaleatreas.
131

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 8.

132

Construo 8.2. Seja

CDIGOS DE AUTENTICAO DE MENSAGENS

uma funo pseudoaleatrea. Um esquema de auten-

ticao de mensagens pode ser construdo da seguinte forma:

escolhe

uniformemente ao acaso de

Mack (m) = Fk (m),

desde que

{0, 1}n .

|m| = |k| = n.

in
ar

Gen(1n )

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


outros casos, Vrf retorna zero.

t = Mack (m).

Em

Esta construo funciona apenas para mensagens de tamanho xo.

lim

8.1 Segurana de cdigos de autenticao de mensagens


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 denio de segurana

para esquema de autenticao de mensagens, descrito a seguir.

Pr
e

Experimento 8.3 (MAC_FORGE(, A, n)).

Uma chave

O parmetro

A,

gerada por

1n

A.

Mack ,

gera o par

(m, t).

O resultado do experimento um se e somente se

Ve
rs

Seja

o conjunto de

enviou para o orculo.

enviado a

com acesso ao orculo

mensagens que

Gen(1n ).

Vrfk (m, t) = 1 e m
/ Q.

s Gen(1n )

AMack
1n
m, t

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


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


esquema de autenticao de mensagens

seguro (ou no-fraudvel por ataque


A existe

adaptativo de mensagem escolhida) se para todo adversrio polinomial


uma funo desprezvel

negl

tal que

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


notas de aula  verso 85 - Jernimo C. Pellegrini

8.1. SEGURANA DE CDIGOS DE AUTENTICAO DE MENSAGENS133

Teorema 8.5.

A Construo 8.2 segura.

Demonstrao.

Considere

in
ar

= (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
e(n) = Pr[MAC_FORGE(, A, n) = 1].
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

Isso porque se uma mensagem


o valor

t = f (m)

no est na lista

est uniformemente distribudo em

possvel construir um teste polinomial

1
.
2n

lim

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

de mensagens consultadas

{0, 1}n .

que distingue funes pseudoa-

leatreas de funes verdadeiramente aleatreas com a mesma probabilidade de


sucesso do adversrio em

MAC_FORGE

(ou seja,

e(n)).

Se

e(n)

no for desprez-

Pr
e

vel, conseguiremos distinguir funes pseudoaleatreas de aleatreas  mas isso


impossvel pela denio de funo pseudoaleatrea.
O algoritmo

simula o Experimento 8.3, observando quando

A tem sucesso

conseguindo um rtulo vlido.

h.
h : {0, 1}n {0, 1}n via orculo O.
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:
Suponha que queiramos distinguir uma funo
a

T recebe 1n e acesso
test executa A(1n ).

Ah

Ve
rs

Quando

Obtm

Se

retorna

1n
m, t

(m, t), test

t0 = h(m)

via

(via T)

faz o seguinte:

O;

nunca perguntou o MAC de

e se

t = t0 ,

o resultado um. Seno

zero.

Se

Fk pseudoaleatrea
, e

com

escolhida ao acaso,

se torna igual ao

Experimento 8.3 com

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

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 8.

134

Se

CDIGOS DE AUTENTICAO DE MENSAGENS

realmente aleatrea, T

igual ao Experimento 8.3 com

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
F pseudoaleatrea, existe negl
negl(n) + 2n tambm desprezvel.

Como

tal que

e(n)

1
2n

negl(n)

e(n)


lim

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.

0n ;

No CBC-MAC o vetor de inicializao

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
ser mostradas, porque isto tornaria a construo insegura.

no podem

Construo 8.6 (CBC-MAC com entrada de tamanho xo). Seja

Ve
rs

o pseudoaleatrea.

Para um polinmio

p(),

uma fun-

as funes a seguir so uma

construo MAC.

Gen(1n )

Mack (m)

escolhe

k R {0, 1}n

quebra a mensagem em blocos de tamanho

|m|/q , onde q = p(n)


Fk no modo CBC

o tamanho (xo) das mensagens. Em seguida, aplica


(veja Seo 5.3.2), mas usando
como sada

Vrfk (m, t)

apenas

0n

como vetor de inicializao e dando

o resultado da encriptao do ltimo bloco.

verica se

Mack (m) = t

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

notas de aula  verso 85 - Jernimo C. Pellegrini

8.3. CBC-MAC

8.3.1

lim

in
ar

135

Mensagens de tamanho varivel

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


autenticar mensagens de tamanho varivel.

Demonstrao.

Seja

Pr
e

A Construo 8.6 no segura para mensagens de tamanho

Teorema 8.7.

varivel.

= (Gen, Mac, Vrf) como na Construo 8.6.

M1 , M2

os respectivos rtulos.

Dados

(m1 , M1 ), (m2 , M2 ),

Sabemos que

um adversrio quer calcular o rtulo

m1 ||z .

Mi = Enck (mi )

e o rtulo de

Ve
rs

Construmos agora a mensagem


ao de

x,

m1 , m2
Enc, e sejam

Sejam

duas mensagens com tamanho igual ao tamanho do bloco usado em

m1 ||z

deve ser

y = m2 ||(M1 z M2 ).

e assim o adversrio pode fraudar rtulos.

M3

de

x=

Enck (M1 z).


Seu rtulo igual

Para usar o CBC-MAC em mensagens de tamanho varivel, h trs modi-

caes 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 85 - Jernimo C. Pellegrini

CAPTULO 8.

CDIGOS DE AUTENTICAO DE MENSAGENS

lim

in
ar

136

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

com

|m|

(o seu tamanho).

Ve
rs

Pr
e

prexando a mensagem

Mudar a construo para que duas chaves sejam geradas (k1 e

calcular o MAC, primeiro usamos o CBC-MAC usando

resultado

t0 .

Depois calculamos

t = Fk2 (t0 )

e o rtulo

k1 ,
t.

k2 ).

Ao

obtendo como

notas de aula  verso 85 - Jernimo C. Pellegrini

8.4. HMAC

lim

in
ar

137

No demonstraremos a segurana destas trs construes.

Pr
e

8.4 HMAC

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


criptogrcos. Para gerar um rtulo para uma mensagem
ramos simplesmente concatenar a

k,

e calcular o resumo

k , podeH s (m||k). Esta

e chave

ideia, se implementada diretamente desta forma, no segura. A Construo 8.8


descreve a implementao de MAC usando resumos de forma segura.

(Gen0 , h) uma funo de hash de tamanho xo

Construo 8.8 (HMAC). Seja


0

e (Gen , H) sua modicao usando a transformao de Merkle-Damgrd. Tanto


H como h produzem sada de n bits. As trs funes a seguir constituem um

Ve
rs

cdigo de autenticao de mensagens.

Gen(1n ): use Gen(1n ) para


{0, 1}n . Retorne hs, ki.

Mac(s,k) (m)

obter uma chave

k,

e tambm escolha

k R

retorna


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

Vrf(s,k) (m, t)

A constante

opad

simplesmente verica se

igual ao valor

srio, e a constante

ipad

36

t = Mac(s,k) (m).

repetido quantas vezes quanto for neces-

obtida da mesma forma, repetindo o valor

A Figura a seguir ilustra esta Construo.

5C .

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 8.

CDIGOS DE AUTENTICAO DE MENSAGENS

lim

in
ar

138

Quando a Construo 8.8 usada para obter um algoritmo prtico, seu nome
normalmente HMAC- seguido do nome da funo.

Por exemplo, HMAC-

MD5 e HMAC-SHA1 so os algoritmos construdos usando as funes MD5 e

Pr
e

SHA-1. Construes do tipo HMAC so largamente utilizadas na prtica.

8.5 Aplicao: segurana CCA


At agora s construmos criptossistemas com nvel de segurana CPA. Nesta
Seo denimos 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

gerada por

Gen(1n );

2. O adversrio recebe a entrada


e

Deck ,

3. Um bit

A,

e, podendo cifrar mensagens com

nos devolve duas mensagens

m0

m1 ,

Enck

ambas de mesmo tamanho;

escolhido aleatoreamente, e a mensagem correspondente en-

criptada:

4.

1n

c = Enck (mi ).

ainda podendo usar

pode usar

Deck

em

Este texto cifrado (o desao) enviado a

Enck

Deck ,

responde um bit

b0

A;

(o adversrio

c);

5. O resultado do experimento um se

b = b0

e zero em caso contrrio.

no

notas de aula  verso 85 - Jernimo C. Pellegrini

8.5. APLICAO: SEGURANA CCA

139

AEnck ,Deck

in
ar

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

Enck (mb )
b0

lim

Denio 8.10 (Segurana contra ataque de texto claro escolhido). Um crip-

tem indistinguibilidade contra ataques de texto cifrado


escolhido se para todo adversrio A existe uma funo desprezvel negl tal que,
tossistema simtrico

1
+ negl(n).
2

Pr
e

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

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


criptossistema CCA-seguro.

Construo 8.11 (Criptossistema com segurana CCA). Seja E


um criptossistema CPA-seguro e

M = (GenM , Mac, Vrf)

= (GenE , Enc, Dec)

um esquema seguro

de autenticao de mensagens. Denimos o seguinte criptossistema:


usa

GenE (1n )

GenM (1n )

Gen(1n )
km.

calcula

Ve
rs

Encke,km (m)

c = Encke (m)

ke

Depois, decifra

para determinar as duas chaves,

t = Mackm (c),

e retorna

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


usando ke, retornando Decke (c).

hc, ti

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

Notas

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

notas de aula  verso 85 - Jernimo C. Pellegrini

140

CAPTULO 8.

CDIGOS DE AUTENTICAO DE MENSAGENS

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

in
ar

possa ser usado para construir MACs?

Ex. 78  Suponha que ao invs da Construo HMAC descrita neste Captulo, usemos o seguinte:

Construo 8.13 (MAC furado). Seja

(Gen0 , H s )

uma funo de hashing ob-

tida via transformao de Merkle-Damgrd. Ento construmos

Gen(1n )

(sem mudanas)

Mack (m) = H s (k||m)


verica se

mack (m) = t.

lim

Vrfk (m, t)

Mostre que esta construo no segura.

Ex. 79  Ao construir CBC-MAC para mensagens de tamanho varivel, mencionamos que podemos usar uma construo semelhante ao CBC-MAC de ta-

m com |m| (o seu tamanho). Mostre


ps-xado (includo aps a mensagem), a

manho xo, mas prexando a mensagem


que se o tamanho da mensagem fosse

Ve
rs

Pr
e

construo no seria segura.

Captulo 9

lim

Criptograa Assimtrica

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

(Este Captulo apenas um esboo)

A criptograa 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 pro-

Pr
e

blema, no entanto, que a criptograa 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 Whiteld Die e Martin Hellman [DH76] trouxe novas
perspectivas para a Criptograa, 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

Ve
rs

os quais o mais conhecido provavelmente o RSA de Rivest, Shamir e Adelman.

9.1 Protocolos criptogrcos


Um protocolo criptogrco uma descrio de como atores diferentes podem
realizar uma computao em conjunto trocando mensagens.

Neste Captulo

abordaremos apenas o protocolo de Die e Hellman para estabelecimento de


chaves, que funciona com dois participantes, e usaremos uma denio de segurana elaborada especicamente para um tipo de protocolo. Uma denio
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
141

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 9.

142

para que ambos usem um canal

CRIPTOGRAFIA ASSIMTRICA

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

in
ar

o canal seguro estar, ento, estabelecido.


Deniremos segurana para protocolos de estabelecimento de chaves antes
de apresentar o protocolo de Die e Hellman.

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


1. Duas entidades

B,

n, executam o protocolo .
A e B so guardadas em uma lista M .
k (que no includa na lista M ).

ambas conhecendo

Todas as mensagens trocadas entre


Ambos devem calcular uma chave

b escolhido.
b = 1, k 0 = k .

acaso. Se

3. A lista de mensagens
4.

envia um bit

Se

b = 0, k 0

escolhida uniformemente ao

lim

2. Um bit aleatreo

e a chave

b0

k0

b = b0

Pr
e

5. O resultado do experimento um se

so enviadas ao adversrio

A.

ou zero em caso contrrio.

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


protocolo de estabelecimento de chaves

linomial

existe uma funo desprezvel

seguro se para todo adversrio po-

negl

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

tal que

1
+ negl(n).
2


Esta noo de segurana adequada a protocolos de estabelecimento de


chaves: como h apenas dois atores e presumimos que h conana mtua, s

Ve
rs

temos que nos preocupar com a possibilidade de obteno da chave por um


adversrio que no participa do protocolo.

9.3 Protocolo Die-Hellman para estabelecimento


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

que, dado um parmetro

ordem

tal que

tem

n,

retorna a descrio de um grupo cclico

bits, e um gerador

de

de

G.

Construo 9.3 (Protocolo de Die e Hellman para estabelecimento de chaves). Dois participantes, A e B , estabelecem uma chave simtrica da seguinte

maneira:

usa

para obter

(G, q, g)

notas de aula  verso 85 - Jernimo C. Pellegrini

9.3. PROTOCOLO DIFFIE-HELLMAN PARA ESTABELECIMENTO DE CHAVES143


escolhe

x R Zq

envia

escolhe

envia

recebe

e calcula

(G, q, g, h1 )
y R Zq

h2

para

h2

para

h1 = g x

e calcula

h2 = g y .

e determina a chave secreta

e determina a chave secreta

kB = hy1 .

kA = hx2 .

in
ar

Ao nal da execuo do protocolo,

como

tem chaves secretas

kA

e B.

lim

Estas chaves so iguais, porque

kA = hx2 = (g y )x = g xy

kB = hy1 = (g x )y = g xy .

importante observar que o protocolo no especica nada a respeito do


grupo, exceto que

deve ter

bits. Com isso possvel usar diferentes grupos

na construo prtica do protocolo. Um exemplo o EC-DH, onde so usados

Pr
e

pontos em uma curva elptica.

Um requisito evidente do Die-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
identicar outro problema, relacionado ao logaritmo discreto, que captura a
essncia da diculdade do protocolo.
protocolo.

Este problema leva o mesmo nome do

Denio 9.4 (Problema de Die-Hellman). Dados um grupo cclico

gerados por um algoritmo

gerador

G(1n ),

e um

denotamos

Ve
rs

DHg (a, b) = g ab .

O problema Die-Hellman

Hellman)
G.

computacional (ou CDH, Computational DieDHg (a, b) dados g a e g b escolhidos ao acaso em

consiste em calcular

decisional (ou DDH, Decisional Die-Hellman)


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
O problema Die-Hellman

consiste em reconhecer se um elemento

houver algoritmo polinomial que os resolva quando os grupos so gerados por

G.

H algoritmos

G para os quais no se conhece algoritmo eciente para resolver

CDH ou DDH (mas no h tampouco prova de que no existam).


O que demonstramos ento que o protocolo de Die-Hellman seguro se

o problema

difcil para um algoritmo

G.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 9.

144

CRIPTOGRAFIA ASSIMTRICA

Se o problema Die-Hellman decisional difcil para G , o protocolo Die-Hellman (Construo 16.8) seguro de acordo com a Denio 9.9
quando o grupo G usado.
Teorema 9.5.

Supomos que o grupo

usado no experimento

G.

9.1 foi gerado

in
ar

Demonstrao.

por um algoritmo

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
O bit

KE_EAV

o adversrio recebe

atreo do grupo ou a chave. Assim,

(G, q, g, h1 , h2 , g xy ),
(G, q, g, h1 , h2 , k 0 ),

ou

sendo que

k0 ,

que pode ser um elemento ale-

pode ter, com igual probabilidade:

lim

No experimento

k0

foi escolhida aleatoreamente.

Distinguir entre ambos exatamente resolver o problema Die-Hellman decisional:

Ve
rs

Pr
e



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

gerador de

G, g z

uniformemente distribudo em

distribudo uniformemente no grupo se

for

Zq .

Se o problema Die-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

b = 0,
elemento aleatreo do grupo G, e no uma cadeia alea-

Note que esta demonstrao parece ter um pequeno problema: quando

o adversrio recebe um

trea de bits.

Para que a diferena que clara, suponha que tenhamos escolhido

notas de aula  verso 85 - Jernimo C. Pellegrini

9.4. CRIPTOSSISTEMAS ASSIMTRICOS

145

Zq e que a ordem do grupo seja q = 257, que


100000001 em binrio. Apenas um elemento do grupo tem
a um: 256 = 100000000. Este no um problema com a

o grupo

representado por
o primeiro bit igual
demonstrao, mas

diretamente para representar elementos de

G;

in
ar

um fato a que o implementador deve dar ateno: no se pode usar nmeros


ao invs disso deve-se usar al-

guma representao dos elementos do grupo como cadeias de bits, que preserve
a distribuio uniforme.

9.3.1

Ataque de homem-no-meio

Apesar de seguro de acordo com a Denio 9.9 o Die-Hellman, como proposto


originalmente, suscetvel a um ataque de
O adversrio

recebe a descrio

(G, q, g, h1 )

Zq , h3 = g z .
A

repassa a descrio alterada

B escolhe y ,
h2 = g y .

h2

computa

(G, q, g, h3 )

e determina

impede que

recebe

e computa

kA = hx3 = g xz .

tem tambm a chave

kA = hz1 = g xz .

h3

h2

e calcula

para

z R

B.

envia de volta

Pr
e

agora tem a chave

kB = hy3 = g yz

kB = hz2 = g yz .

vinda de

lim

homem-no-meio:

siga para

A,

e envia

h3

para

A.

Por ser vulnervel a este ataque o protocolo Die-Hellman no usado na


prtica em sua formulao original, mas ainda assim a base para diversos

outros protocolos.

Ve
rs

9.4 Criptossistemas Assimtricos


O protocolo Die-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 denidos de forma diferente: cada
participante tem uma chave pblica e uma privada, e estas chaves so usadas
para que ambos efetivamente se comuniquem.

Denio 9.6 (Criprossistema assimtrico). Um criptossistema assimtrico

consiste de trs algoritmos:

Gen, que aceita um


(pk, sk) A primeira
secreta.

parmetro de segurana

e gera um par de chaves

chamada de chave pblica e a segunda de chave

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 9.

146

randomizado, que aceita uma chave pblica

calcula um texto cifrado

Dec,

pk ,

determinstico, que aceita uma chave privada

e retorna uma mensagem


Requeremos por hora

1 que

um texto cifrado

uma mensagem

c.
m.

Decsk (Encpk (m)) = m.

sk ,

in
ar

Enc,

CRIPTOGRAFIA ASSIMTRICA

Enquanto para criptossistemas simtricos o sigilo perfeito implica em problemas prticos, para os criptossistemas assimtricos o sigilo perfeito absolutamente impossvel.

F Funes de mo nica com segredo

lim

9.4.1

A Denio 9.6 diferente da Denio 2.1: o algoritmo


uma chave, mas duas.

Gen

no cria apenas

Uma usada para encriptar e outra para decriptar

mensagens.

Denio 9.7 (Permutao de mo nica com segredo). Uma permutao de


mo nica com segredo uma tupla de algoritmos
retorna duas chaves,

(Gen0 , Samp, f )

Para todo par

td.

Pr
e

Gen

(Gen, Samp, f, Inv):

uma famlia de permutaes de mo nica

(I, td) produzido por Gen, o segredo td deve permitir inverter


Inv:

ecientemente usando o algoritmo

Invtd (fI (x)) = x.

Ve
rs

9.5 Segurana CCA


Nesta seo denimos segurana CCA para critpossistemas de chave pblica.

Experimento 9.8 (PUB_CCA(, A, n)).


1.

Gen(1n )

usado para determinar

2. O adversrio recebe

3.

pk

e acesso de orculo a

retorna duas mensagens,

4. Um bit aleatreo

pk, sk .

m0 , m1 ,

escolhido e

mk

Decsk .

do mesmo tamanho.
encriptada com

Encsk

A.

5.

1 Mais

envia um bit

b0

adiante admitiremos que

Dec

falhe com probabilidade desprezvel.

e enviada a

notas de aula  verso 85 - Jernimo C. Pellegrini

9.6. ELGAMAL

147

6. O resultado do experimento um se

b = b0

ou zero em caso contrrio.


tossistema de chave pblica

tem segurana contra ataques de texto cifrado

escolhido se para todo adversrio polinomial

negl

in
ar

Denio 9.9 (Segurana CCA para criptossistemas assimtricos). Um crip-

existe uma funo desprezvel

tal que

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

1
+ negl(n).
2

9.6 Elgamal

lim

O criptossistema de Elgamal tem como base o problema DDH.

Construo 9.10 (Criptossistema Elgamal).

Pr
e

Gen(1n ): use G(1n ) para escolher um grupo cclico G


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.

chave

sk = hG, q, g, xi,

Ve
rs

Dec: dada a
Dec retorna

Enc dada a chave pblica pk = hG, q, g, hi


y R Zq e devolva
g y , hy m.

A funo

Dec

com ordem

e a mensagem

e o texto cifrado

m G,

c = hc1 , c2 i,

q,

com

escolha

a funo

c2
.
cx1


opera corretamente:

hy m
c2
=
cx1 (g y )x
(g x )y m
= xy
g
xy
g m
= xy
g
=m.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 9.

148

CRIPTOGRAFIA ASSIMTRICA

Exemplo 9.11 (Operao do criptossistema de Elgamal). Comeamos supondo

G escolheu G = Z17 com g = 5. Escolhemos x = 9,


(mod 17) = 12.
pk = (G, 17, 5, 12)
sk = (G, 17, 5, 9).
Para encriptar 15, escolhemos y = 3 e
Encpk (15) = (53 , 123 15)

12
69

(mod 17) = 15.

lim

Decsk (6, 12) =

h = 59

(mod 17) = (6, 12)

(6, 12):

Para decriptar

e portanto

in
ar

que

Uma caracterstica notvel do criptossistema de Elgamal que ele no


determinstico (um elemento

escolhido aleatoreamente no procedimento de

encriptao).

Outro fato importante que no Elgamal, a mensagem um elemento de um

dois

grupo, e o texto encriptado consiste de

fator de expanso

elementos. Dizemos que o Elgamal

de dois para um.

Pr
e

tem 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.
Teorema 9.13.

em M e C .

O criptossistema Elgamal homomrco para multiplicao

9.7 Criptossistema de Rabin


O criptossistema mostrado a seguir foi proposto por Michael Rabin em 1979.

Ve
rs

Em essncia, encriptar no Rabin elevar ao quadrado, e decriptar calcular


raiz mdulo

N.

Construo 9.14 (Criptossistema de Rabin).

Gen:
Seja

Gere dois primos grandes e diferentes

N = pq .

A chave privada

sk

(p, q),

p, q

tais que

p, q 3 (mod 4).
pk N .

e a chave pblica

Encpk (m) = m2 (mod N )

Decsk (c) = c (mod N )

Dados primos


p, q

com

N = pq ,

fcil quando se tem a fatorao de

y = x2 (mod N ), computar
N , mas difcil caso contrrio.

a raiz

De fato,

no conhecemos algoritmo polinomial para computar tais razes sem conhecer

notas de aula  verso 85 - Jernimo C. Pellegrini

9.7. CRIPTOSSISTEMA DE RABIN


a fatorao de

N.

149

No entanto, sabendo que

(mod pq):

N = pq

podemos determinar

r2 = y (mod q). Estas razes podem ser


calculadas ecientemente quando p, q 3 (mod 4).
As quatro razes quadradas de y mdulo N podem ento ser encontradas
r1 =

y (mod p)

in
ar

Calculamos

resolvendo-se os quatro sistemas, que podem ser resolvidos usando o Teorema


Chins do resto (Teorema B.21):

(1)

x r1

(mod p),

x r2

(2)

x r1

(mod p),

x r2

(3)

x r1

(mod p),

x r2

(4)

x r1

(mod p),

x r2

(mod q),

(mod q),
(mod q),

lim

(mod q).

Exemplo 9.15 (Encriptando e decriptando com Rabin). Sejam

7. Temos N = 21.
(mod 21) = 16.

Para encriptar

m = 11,

Para decriptar, calculamos

r1 =

Resolvemos o sistema

16

(mod 3) = 1

16

(mod 7) = 4.

Pr
e

r2 =

calculamos

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

4, 10, 11, 17  note que o 11 est entre elas. J

As solues para este sistema so

p=3 e q =
112 (mod 21) = 121

A segurana do criptossistema de Rabin se sustenta na suposio de que

Ve
rs

um problema (encontrar a raiz quadrada de um nmero mdulo

sem sua

fatorao) seja difcil.

Reduziremos este problema ao de quebrar o criptossistema (ou seja, mos-

x
N
). A reduo trivial: quebrar o Rabin

signica exatamente encontrar


c (mod N ) (veja a denio de Dec). Assim,
ao quebrar o criptossistema, conseguimos calcular razes quadradas mdulo N
sem conhecer a fatorao de N .
traremos que se o Rabin puder ser quebrado, ento podemos encontrar

(mod N )

sem saber a fatorao de

fcil vericar agora o que j mencionamos: um criptossistema assimtrico

N contm toda a
(p, q): basta fatorarmos N .
algoritmo eciente para obter a

como o Rabin no pode ter sigilo perfeito: a chave pblica

informao necessria para obter a chave privada


Acontece que sabemos que no conhecido
fatorao de

N.

Experimento 9.16 (PUB_EAV(A, , n)).

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 9.

150

1. O par de chaves

3.

pk

para

ambas de mesmo tamanho.

b escolhido
c Encsk (mb ).

4. Um bit

enviada a

6. Aenvia
7. Se

b0

b = b0

aleatoreamente e uma das mensagens encriptada:

de volta

o resultado do experimento um. Caso contrrio, zero.

lim

5.

Gen(1n ).

A.

m0 , m1 ,

devolve

gerado por

in
ar

2. Envie

(pk, sk)

CRIPTOGRAFIA ASSIMTRICA

Denio 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

existe uma funo desprezvel

negl()

Pr
e

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

tal que

1
+ negl(n).
2


Esta denio difere daquela semelhante para criptossistemas simtricos porque o adversrio recebe a chave pblica

pk .

Isso signica que

pode encriptar

mensagens vontade  e que esta denio ento equivalente denio de


segurana CPA.

Denio 9.18 (Segurana CPA para criptossistemas assimtricos). Um crip-

tossistema de chave pblica tem segurana CPA se tem segurana contra ataque

de texto cirado conhecido.

Ve
rs

Interessantemente, as duas Denies e segurana (texto cifrado conhecido

e CPA) para criptossistemas assimtricos tambm so equivalentes Denio


de segurana contra mltiplos textos cifrados conhecidos.

9.8 RSA
O RSA provavelmente um dos criptossistemas mais conhecidos.
A funo de encriptao no RSA funciona em

ZN elevando a mensagem a
b (ou seja, c = mb (mod N )), e decriptar o processo contrrio:
b1
calculamos m = c
. Assim, temos dois expoentes: b pblico (para que todos
1
possam encriptar) e a = b
privado (para que apenas o destinatrio possa
um expoente

decriptar).

Para que estas operaes funcionem necessrio escolher os expoentes de

um conjunto com uma propriedade especial: queremos que

tenha um inverso,

notas de aula  verso 85 - Jernimo C. Pellegrini

9.8. RSA

151

a como b de um grupo de unidades . Se escolhermos


Z(N ) , vemos que

por isso escolhemos tanto

ab 1

(mod (N ))

e portanto, pela denio de congruncia, existe algum inteiro

tal que

ab = k(N ) + 1.
b

in
ar

3
o grupo de unidades

Conseguiremos ento encriptar (m ) e decriptar (c ) obtendo a mensagem ori-

ginal :

(m

(N ) k

) m

1 m
m
(N )
q.

O valor de
dois primos

(mod N )
(mod N )

(mod N )
(mod N ).

no RSA sempre

lim

(mb )a mk(N )+1

(p 1)(q 1),

porque

o produto dos

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

Pr
e

tema 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

Ve
rs

Encpk (m) = EnchN,bi (m) = mb (mod N ).


Decsk (c) = DechN,ai (c) = ca (mod N ).

O clculo de

5
pode ser feito usando o algoritmo estendido de Euclides .

Aparentemente as mensagens (e consequentemente os textos encriptados) devem


pertencer ao grupo de unidades

ZN ,

mas um Exerccio no nal deste captulo

pede a demonstrao de que o sistema funciona mesmo quando

2 Uma unidade

m
/ Zn \ ZN .

em um anel um elemento que tem inverso multiplicativo. Um grupo de

unidades formado pelas unidades do anel com sua operao multiplicativa. Veja a Denio B.77 no Apndice B.

3 Veja a Denio 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

5O

a(m) 1 (mod m).

algoritmo extendido de Euclides dado no Apndice B

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 9.

152

CRIPTOGRAFIA ASSIMTRICA

Exemplo 9.20. Sejam

p = 101, q = 3. Temos N = 303 e (N ) = 200.


3 2
coprimo com 200 = 2 5 , e escolhemos b = 7 (que

nem por 5, e portanto pertence a Z200 ). Assim,

1 < b < 200

no divisvel por 2

a = 71
1

=7

(mod (N ))
(mod 200) = 143.

Temos ento

pk = (N, b) = (303, 7)
sk = (N, a) = (303, 143)
53

(que pertence a

Z303 ),

Encpk (53) = 537


Para decriptar

fazemos

lim

Para encriptar

in
ar

Queremos

37,

(mod 303) = 275.

(mod 303) = 53.

Pr
e

Decsk (275) = 275143

Da mesma forma que identicamos a essncia da diculdade do protocolo


Die-Hellman, tambm o faremos como RSA, denindo o

problema RSA.

Denio 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
1/e
em calcular y = x
(mod N ).

No se conhece qualquer algoritmo eciente para resolver o problema RSA.

Sabemos que o RSA deve ser pelo menos to difcil quanto a fatorao de inteiros: se for possvel fatorar
calcular
e

Ve
rs

(N )

d = e1 (mod (N ))
e1 no so pblicos,

N,
e

basta ento calcular

y = xd (mod N )

(N ) = (p 1)(q 1),

( importante observar que

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

Mdulo comum
Suponha que ao distribuir chaves para um grupo de pessoas usemos sempre o

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 .

mesmo mdulo

notas de aula  verso 85 - Jernimo C. Pellegrini

9.8. RSA

153

Ainda que se suponha que no grupo com estas chaves haja conana 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


m enviada

a duas pessoas com chaves

(b1 , N )

(b2 , N ):

c1 = mb1
b2

c2 = m

(mod N )
(mod N ).

in
ar

mensagens sem precisar de qualquer chave privada. Suponha que

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

lim

Como

cx1 cy2 = mxb1 myb2 = mxb1 +yb2 = m1 = m (mod N ).

Se

m.

Por exemplo, se

Pr
e

b e m pequenos

m so pequenos um adversrio pode decriptar


m < N 1/5 , no h reduo modular na encriptao
5
5
porque m < N . Observando c = m (mod N ), e sabendo que b e m so
1/5
pequenos, um adversrio pode calcular c
em Z (sem aritmtica modular) e
obter m.
usado na chave pblica e
e

Verso segura do RSA: OAEP

9.8.2

b=5

Da mesma forma que tornamos cifras de uxo seguras inserindo nelas elementos

Ve
rs

de aleatoriedade, tornaremos o RSA seguro modicando-o para que passe a ser


um algoritmo probabilstico. A modicao que fazemos adicionar uma cadeia
de bits aleatreos mensagem antes de encript-la.
Descrevemos a seguir o OAEP (Optimal
Se trocarmos o algoritmo

Enc

Asymetric Encryption Padding).


Enc0

da Construo 9.19 pelo algoritmo

seguir obteremos uma verso do RSA com segurana IND-CCA-2. O algoritmo

Enc0

usa duas funes de hash,

para que tenha tamanho xo;

H.

Zeros so adicionados mensagem

escolhido aleatoreamente.

Enc0pk (m) = Encpk (m G(r)||r H(m G(r)))

Observe que o algoritmo original usado pelo novo. A prxima gura 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 85 - Jernimo C. Pellegrini

Notamos tambm que a funo

para

bits, e que

deve ser usada de forma a expandir os

deve comprimir

bits em

bits

bits.

lim

de

CRIPTOGRAFIA ASSIMTRICA

in
ar

CAPTULO 9.

154

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

tem sada indistinguvel de bits aleatreos e resistncia de se-

gunda pr-imagem, ento

m G(r)

pad. Mas usar apenas este valor (m

deveria ter o mesmo efeito que o one-time

G(r))

no daria certo, porque no seria

H.

Pr
e

possvel decriptar. Por isso usamos tambm a segunda funo

9.9 Goldwasser-Micali

O criptossistema de Goldwasser-Micali fundamenta-se na diculdade do problema do resduo quadrtico.

Seja p primo. Se y resduo quadrtico mdulo p, ento y tem


exatamente duas razes quadradas mdulo p.

Teorema 9.22.

Ve
rs

Demonstrao. Seja x tal que (x)2 = y .


Teramos 2x 0 (mod p), e p|2x. Como p
Mas p > 2 e p > x, e portanto

x x (mod p).
p|2 ou p|x.

x 6 x (mod p).

Consequentemente
mdulo

Suponha que

primo, teramos que

deve ter necessariamente duas razes quadradas distintas

p.

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 .

Teorema 9.23.

Demonstrao.

O resultado segue imediatamente do Teorema B.16.

Seja n = pq , com p e q primos. Se y resduo quadrtico


mdulo n, ento y tem exatamente quatro razes quadradas mdulo n.

Teorema 9.24.

notas de aula  verso 85 - Jernimo C. Pellegrini

9.9. GOLDWASSER-MICALI

Demonstrao.

155

a, b as razes quadradas de y mdulo p, e c, d as ray 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.

Sejam

Denio 9.25. O conjunto

Jn+

contm os nmeros

x
n

x Zn

in
ar

zes quadradas de

tais que

= +1.

contm os elementos

de Jacobi igual a um mdulo

do grupo de unidades Zn

n.

com smbolo

lim

Jn+

Observe que

Seja p primo. Ento exatamente metade dos elementos em Zp


resduo quadrtico.
Teorema 9.26.

Demonstrao.
Zp

Seja

uma raiz primitiva (e portanto pertencente a

conjunto

Zp ).

Pr
e

{ g 0 , g 1 , . . . , g p2 } .

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

Zq .

(p 1)/2 resduos quadrticos em Zp e (q 1)/2 resduos


6
Como p e q so primos, isso signica que h exatamente

Demonstrao.
quadrticos em

nmeros tais que

(x|p) = +1,

(p 1)/2

nmeros tais que

(x|p) = 1,

(q 1)/2

nmeros tais que

(x|q) = +1,

(q 1)/2

nmeros tais que

(x|q) = 1.

Ve
rs

(p 1)/2

O smbolo de Jacobi

ou seja, quando

(x|pq)

(x|p)

ser um quando

(x|q)

  
x
x
= +1,
p
q
tiverem o mesmo sinal. Isso acontece exatamente

metade das vezes. Temos ento, em

6 Lembre-se de que tanto p como q

Zpq :

so mpares, por isso as quantidades listadas so inteiras.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 9.

156

(x|pq) = 1;

de nmeros com

1/4 de nmeros tais que (x|p) = (x|q) = 1.


mdulo pq , mas tem (x|pq) = +1;
1/4

de nmeros tais que

(x|p) = (x|q) = +1.

No so resduos quadrticos

in
ar

1/2

CRIPTOGRAFIA ASSIMTRICA

Estes so resduos quadrti-

pq .

cos mdulo

x R Jn+ , a probabilidade de x
1/2. Como no se conhece algoritmo eciente para
sem a fatorao de n, se x de fato resduo quadrtico mdulo n,

Se escolhermos uniformemente um elemento


ser resduo quadrtico ser
determinar,

lim

temos uma funo de mo nica.

Denio 9.28 (Problema da residuosidade quadrtica). O problema da residuosidade quadrtica consiste em, dados
quadrtico mdulo

n.

n = pq

x Jn+ ,

se

resduo

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 .

Pr
e

Conjectura 9.29.

No entanto, se conhecermos os fatores


de Jacobi

(x|p)

(x|q)

q,

podemos computar os smbolos

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


escolha aleatoreamente dois primos

Gen(1k ):

Ve
rs

lha tambm

com

bits cada. Esco-

tal que

A chave pblica
A chave privada

   
x
x
=
= 1.
p
q
(x, n).
(p, q).

Enc(x,n) (m): a mensagem m interpretada como uma


mi . Para cada bit mi da mensagem, escolha a R Zn e

sequncia de bits
calcule

ci = a2 xmi

Decp,q (c): o
cada bit ci ,

texto

interpretado como uma sequncia de bits

(
0
mi =
1

se
se

ci
ci

resduo quadrtico
caso contrrio.

(mod n),

ci .

Para

notas de aula  verso 85 - Jernimo C. Pellegrini

9.9. GOLDWASSER-MICALI

157


Por se basear no problema do resduo quadrtico, no h a necessidade de
demonstrar segurana de bit (todo bit encriptado seguro, porque cada um

in
ar

tratado individualmente). Este criptossitema, no entanto, no eciente no

que tange ao espao utilizado: cada bit do texto claro representado como um
nmero com

bits no texto encriptado.

O criptossistema de Goldwasser-Micali tem a propriedade de encriptao


homomrca, alm de ser aleatorizado.

Teorema 9.31. A funo Enc no criptossitema de Goldwasser-Micali homomrca para multiplicao em C e soma em M.
Sejam

m0 e m1 duas mensagens, com Encpk (m0 ) = c0 e Encpk (m1 ) =


c0 c1 = a2 xm0 b2 xm1
= a2 b2 xm0 +m1

lim

Demonstrao.
c1 . Ento

que um possvel valor para

Notas

Pr
e

= (ab)2 xm0 +m1 ,


Encpk (m0 m1 ).

O criptossistema Elgamal foi criado em 1985 por Taher Elgamal [Elg85], 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 [Rab79].

O criptossistema RSA foi elaborado por Ronald Rivest, Adi Shamir e Len

Ve
rs

Adelman em 1978 [RSA78]. John Talbot e Dominic Welsh apontam [TW06]

que outro criptossistema, semelhante ao RSA, j havia sido descoberto por James Ellis e Cliord Cocks em 1973:

em 1969 Ellis teria chegado denio

de funo de mo nica, mas somente em 1973 Cocks teria conseguido usar a


denio 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 [Yan07].


O esquema OAEP foi desenvolvido por Mihir Bellare e Phillip Rogaway [BR95],

e combina ecincia e segurana demonstrvel.

possvel demonstrar que se

uma mensagem for codicada com OAEP antes de ser encriptada com o RSA,
o resultado um criptossistema CCA-seguro.

7 Uma

histria detalhada da Criptograa est no livro de Simon Singh [Sin00a].

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 9.

158

CRIPTOGRAFIA ASSIMTRICA

Victor Shoup [Sho01] 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

in
ar

bastante interessante e instrutiva  diferentes experimentos (chamados de jogos no artigo de Shoup) so propostos, cada um sendo uma pequena variante
do anterior.

Eiichiro Fujisaki e outros [Fuj+01] 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 Sha Goldwasser e Silvio Micali foi publicado em 1982 [GM82].


Foi o primeiro criptossistema probabilstico, e tambm um criptossistema homomrco.

lim

Exerccios

Ex. 80  Mostre como generalizar o protocolo Die-Hellman de distribuio


de chaves para um nmero arbitrrio de participantes.

Qual o custo com-

putacional da sua construo, comparado com o do Die-Hellman para dois


participantes?

tal que

Pr
e

Ex. 81  O que acontece se usarmos o RSA para encriptar uma mensagem

m Z(N ) \ Z(N ) ?

Ex. 82  Prove o Teorema 9.13.

Ex. 83  Que verso do RSA tem propriedade de encriptao homomrca?


Ex. 84  Descreva detalhadamente como decriptar mensagens usando o OAEP.
Ex. 85  No Teorema 9.24, mencionamos que se

y resduo quadrtico mpq , as razes quadradas de y mdulo p e mdulo q devem ser distintas
porque p e q so primos. Mostre que isso verdade.
dulo

Ve
rs

Ex. 86  Implemente o criptossistema de Elgamal.


Ex. 87  Implemente o criptossistema de Rabin.

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 10

lim

Assinaturas Digitais

Os cdigos de autenticao de mensagens descritos no Captulo 8 funcionam


da mesma forma que outras construes criptogrcas de chave privada: uma
nica chave usada pelo algoritmo,

como para veric-los.

tanto para criar cdigos de autenticao

Queremos poder rotular mensagens sem ter que oferecer

ao vericador a chave usada (porque no queremos que ele tambm possa rotular

Pr
e

as mensagens).

No cenrio da criptograa 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 vericar 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:

negar a assinatura depois de produz-la.

Isso no possvel com cdigos de

o assinante no pode

autenticao usando chave simtrica.

Denio 10.1 (Esquema de assinaturas). Um esquema de assinaturas consiste

(Gen, Sign, Vrf)

Ve
rs

de trs funes

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

assina a mensagem

usando a chave

sk ,

retornando uma

Vrfpk (m, ) retorna um (signicando vlida) ou zero (signicando invlida).

necessrio que para todo

toda mensagem

n,

para todo par

(pk, sk)

m,

Vrfpk (m, Signsk (m)) = 1.


159

gerado por

Gen(1n )

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 10.

160

ASSINATURAS DIGITAIS

in
ar

10.1 Segurana
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 dife-

rentes maneiras). Resumimos a seguir trs aspectos da segurana de assinaturas


digitais que usaremos na formulao das denies de segurana.

Quanto aos pares de mensagem e assinatura aos quais o adversrio possa ter
acesso, identicamos 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 men-

sagens, e poder ter acesso s suas assinaturas antes de tentar iniciar sua
fraude, mas as mensagens so determinadas antes do adversrio conhecer

Pr
e

a chave pblica do assinante;

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.

Resistncia forte a fraude existencial:

suponha que o adversrio consiga

gerar uma nova assinatura em uma mensagem j assinada anteriormente

Ve
rs

(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

forte contra fraude existencial.

resistncia

O nmero de vezes que um esquema de assinaturas pode ser usado tambm

dene 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 denem doze casos.

notas de aula  verso 85 - Jernimo C. Pellegrini

10.1. SEGURANA

10.1.1

161

Segurana RMA

A noo mais fraca de segurana que formalizamos a de mensagens aleatreas,


acesso.

Experimento 10.2 (SIG_FORGE_RMA(, A, n)).


1.
2.

mensagens

Gen(1 )

m1 , m2 , . . . , mk

so escolhidas uniformemente.

(pk, sk).

usada para obter

3. As mensagens so todas assinadas com

recebe

5.

retorna

pk

e todos os pares

(mi , i )

(m, ).

lim

4.

sk : i Signsk (mi ).

in
ar

onde o adversrio no controla, de forma alguma, as assinaturas s quais tem

6. A sada do experimento um se e somente se

{ m1 , m2 , . . . , mk }.

Pr
e

Vrfpk (m, ) = 1 e m
/

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

Denio 10.3 (Segurana RMA para esquema de assinaturas digitais). Um


esquema de assinaturas

= (Gen, sign, Vrf)

seguro contra ataques com men-

sagens aleatreas se para todo adversrio polinomial


prezvel

negl()

existe uma funo des-

tal que

Pr[SIG_FORGE_RMA(, A, n) = 1] negl(n).


Se ltimo passo do experimento for modicado 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 mensa-

gens aleatreas.

Quando somente uma mensagem sorteada no incio do experimento, dize-

mos que o esquema para somente uma assinatura.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 10.

162

10.1.2

ASSINATURAS DIGITAIS

Segurana KMA

A prxima denio de segurana mais forte. Segurana KMA (contra ataques

in
ar

com mensagens conhecidas) implica em segurana RMA.

Experimento 10.4 (SIG_FORGE_KMA(, A, n)).


1.

2.

Gen(1n )

recebe

1n

e escolhe um conjunto

usada para obter

(pk, sk).

3. Cada mensagem assinada com

recebe

pk

e as assinaturas

5. O adversrio retorna

sk : i Signsk (mi )

i .

(m, ).

de mensagens.

lim

4.

M = { m1 , . . . , mk }

6. A sada do experimento um se e somente se

Vrfpk (m, ) = 1 e m
/M
m ao orculo).

(ou seja, o adversrio no pediu a assinatura de

Pr
e

1n

(m1 , . . . , mk )

pk, (1 , . . . , k )

(sk, pk) Gen(1n )


i Signsk (mi )

(m, )

Ve
rs

Vrfpk (m, ) = 1
m
/ { m1 , m2 , . . . , mk }


Denio 10.5 (Segurana KMA para esquema de assinaturas digitais). Um


esquema de assinaturas

= (Gen, sign, Vrf)

seguro contra ataques adaptati-

vos com mensagens conhecidas se para todo adversrio polinomial


funo desprezvel

negl()

A existe uma

tal que

Pr[SIG_FORGE_KMA(, A, n) = 1] negl(n).

Se ltimo passo do experimento for modicado da seguinte maneira:

notas de aula  verso 85 - Jernimo C. Pellegrini

10.1. SEGURANA

163

Vrfpk (m, ) = 1 e (m, )


/

A sada do experimento um se e somente se

{ (m1 , 1 ), (m2 , 2 ), . . . , (mk , k ) }.


Ento dizemos que o esquema

fortemente seguro

contra ataques com mensa-

in
ar

gens escolhidas.

Quando somente uma mensagem sorteada no incio do experimento, dizemos que o esquema para somente uma assinatura.

10.1.3

Segurana CMA

A denio mais forte que temos para segurana contra ataques adaptativos
com mensagens escolhidas.

1.
2.

Gen(1n )
A

usada para obter

recebe

pk

(pk, sk).

o conjunto de mensa-

o conjunto de pares

(mi , i ) de mensagens

e acesso de orculo a

gens assinadas pelo orculo, e

Signsk ();

seja

e assinaturas retornadas pelo orculo.

3. O adversrio retorna

(m, ).

Pr
e

enviadas por

lim

Experimento 10.6 (SIG_FORGE_CMA(, A, n)).

4. A sada do experimento um se e somente se

Vrfpk (m, ) = 1 e m
/M
m ao orculo).

(ou seja, o adversrio no pediu a assinatura de

Ve
rs

(pk, sk) Gen(1n )

ASign

1n , pk

M=

assinadas

pelo orculo

(m, )

Vrfpk (m, ) = 1
m
/M


Denio 10.7 (Segurana CMA para esquema de assinaturas digitais). Um


esquema de assinaturas

= (Gen, sign, Vrf)

seguro contra ataques adaptati-

vos com mensagens escolhidas se para todo adversrio polinomial


funo desprezvel

negl()

existe uma

tal que

Pr[SIG_FORGE_CMA(, A, n) = 1] negl(n).


notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 10.

164

Se o Experimento

SIG_FORGE_CMA

ASSINATURAS DIGITAIS

for modicado tal que seu ltimo passo

seja da seguinte forma:

Vrfpk (m, ) = 1 e (m, )


/
exatamente a assinatura para a

A sada do experimento um se e somente se

(ou seja, o adversrio no obteve

mensagem

ento dizemos que

a partir do orculo),

fortemente seguro

in
ar

contra ataques adaptativos de mensa-

gem escolhida.

Quando o adversrio pode escolher uma nica mensagem dizemos que o


esquema tem segurana CMA para uma nica vez.

F Aumentando a segurana de esquemas

lim

10.1.4

possvel, a partir de esquemas menos seguros, obter esquemas de assinaturas


mais seguros.

10.2 Esquema de assinaturas de Lamport


Um esquema de assinatura para o qual no se conhece ataque via algoritmo
assinatura.

Pr
e

quntico o de Lamport, onde cada chave usada para realizar uma nica

Construo 10.8 (Esquema de assinaturas de Lamport). Seja


de mo nica e

Gen(1n ):

Construa duas matrizes

Y,

uma funo

ambas com duas linhas e

colunas. Primeiro, escolha aleatoreamente os elementos de


ter

o tamanho da mensagem a ser assinada.

bits cada):

(que devem

xi,j R { 0, 1 } .

Ve
rs

Depois preencha

A chave privada
A chave pblica

Signsk (m):

aplicando

em cada elemento de

X:

yi,j f (xi,j ).
X , a matriz com os valores xi,j
Y , a matriz com os valores yi,j

m como uma sequncia de bits m1 , m2 , . . . , mz .


x1,m1 , x2,m2 , , xzmz .

interprete a mensagem

A assinatura

Vrfpk (m, )

verica se, para todo

1 i z , f (xi ) = yi,mi .


Exemplo 10.9 (Esquema de assinaturas de Lamport). Sejam

n = 3 e p(n) = n.

As chaves geradas so:

sk =

x1,0
x1,1

x2,0
x2,1

x3,0
x3,1


, pk =

y1,0
y1,1

y2,0
y2,1

y3,0
y3,1


.

notas de aula  verso 85 - Jernimo C. Pellegrini

10.3. RSA
Como

165

n = 3

s podemos assinar mensagens de trs bits.

Se

m = 5 (101

em

binrio), a assinatura calculada usando as posies destacadas na chave:

sk =

x2,0
x2,1

Para vericar esta assinatura,

y1,0
y1,1

pk =

x3,0
x3,1

, = (x1,1 , x2,0 , x3,1 ).

Vrf(101, (x1,1 , x2,0 , x3,1 ))


y2,0
y2,1

y3,0
y3,1

verica:

f (x1 ) = y1,1 ?
f (x2 ) = y2,0 ?
f (x3 ) = y3,1 ?

in
ar

x1,0
x1,1

Para qualquer funo f de mo nica, o esquema de assinaturas de Lamport um esquema de assinaturas seguro para uma nica assinatura.

lim

Teorema 10.10.

10.3 RSA
O RSA tem uma propriedade interessante:

se trocarmos o papel das chaves

encriptamos

com a chave

com a chave

pblica

Pr
e

pblica e privada, o resultado um esquema de assinaturas.

privada.

Para assinar,

Para vericar uma assinatura,

decriptamos

Construo 10.11 (Esquema RSA de assinaturas (verso livro-texto)).

Gen

(o mesmo do criptossistema RSA) gera

pk = (b, N )

sk = (a, N ).

Signsk (m) = ma (mod N ).


se e somente se

Ve
rs

Vrfpk (m, ) = 1

m = b (mod N ).

Exemplo 10.12 (Assinatura com RSA (livro-texto)). Sejam

(N ) = 200, como no Exemplo 9.20.


naquele exemplo, b = 7 e a = 143.
Para assinar m = 74, encriptamos com a chave privada:

Temos

N = 303

Signsk (74) = 74143

Para vericar a assinatura de

(m, )

p = 101, q = 3.

Escolhemos, como

(mod 303) = 200.


200,

deciframos com a

(mod 303) = 74 = m.

onde

74

chave pblica:

Vrfpk (200) = 2007

Esta verso do esquema de assinaturas RSA no entanto insegura, como

mostramos a seguir.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 10.

166

Fraude

ASSINATURAS DIGITAIS

#1: assinando uma mensagem aleatrea

pk = (b, N ) uma
ZN arbiSignpk (m) = , e o

Seja

chave pblica RSA. O adversrio pode escolher uma assinatura

trariamente

e calcular

m = b (mod N ).

Est claro que

in
ar

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


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 ). Vericamos que esta realmente a assinatura de m. O algoritmo Vrf
b
verica se = m; pois ento temos:
b

lim

chave pblica e

(1 2 )b = (ma1 ma2 )b

ab
= mab
1 m2 = m1 m2 = m

Full-domain hash

Pr
e

10.3.1

(mod N ).

H diversos esquemas de assinatura baseados no RSA que tentam remediar os


problemas descritos nesta Seo.

Um deles bastante simples:

ao invs de

m Zp ,
full-domain

aplicar diretamente o RSA para produzir assinaturas de mensagens


assinamos

hash,

resumos criptogrcos

de mensagens.

O resultado o

ou FDH, outro esquema de assinaturas. Pode-se demonstrar a segurana

do FDH usando o modelo do orculo aleatreo.

Construo 10.13 (Full-domain hash usando RSA).

Gen(1n )

gera um par de chaves RSA e uma funo e hashing

Ve
rs

entrada e sada de

com

bits.

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

o que ser necessrio para

Sign

em

bits, j que

Vrf.

Vericamos agora o efeito desta medida nos ataques descritos.

Fraude #1:

o adversrio precisaria computar

tentar encontrar

tal que

H(m) = m .

m0 = b (mod N )

e depois

Se a funo de hashing

for

difcil de inverter, a diculdade do ataque ser a mesma;

Fraude #2:

para obter

nalgum dos experimentos que descrevemos, o

adversrio precisaria encontrar trs mensagens

H(m1 )H(m2 ) (mod N ).


difcil de inverter.

m, m1 , m2 tais que H(m) =


H for

Este ataque tambm deve ser difcil se

notas de aula  verso 85 - Jernimo C. Pellegrini

10.4. ELGAMAL

167

10.4 Elgamal
Elgamal descreveu no mesmo artigo um criptossistema e um esquema de assinaturas  mas o esquema de assinaturas no apenas uma maneira diferente

in
ar

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.

pk =

Considere as chaves pblica e privada do criptossistema Elgamal:

hG, q, g, hi

sk = hG, q, g, xi,

onde

h = gx .

Iniciamos com a seguinte congruncia:

m ax + by

(mod (q)).

(10.1)

lim

Pelo Teorema B.46, as solues para esta congruncia so as mesmas solues


para

gm

g ax+by

(mod q)

g ax g by

(mod q)

ha ab

(mod q).

No esquema Elgamal, a assinatura de uma mensagem exatamente o par

(a, b)

Pr
e

acima, que esperamos s poder ser produzido ecientemente por algum de posse

x).

da chave privada (e portanto de


que

m ax + by (mod q 1).

Sendo

Assinar uma mensagem calcular

(a, b) tais

Isso feito da seguinte forma:

= gy

(mod q)

(m ax)y 1

(mod q 1).

secretos, no conhecido algoritmo para resolver ecientemente a

congruncia na Equao 10.1.

Vericar a assinatura fcil, mesmo sem a chave secreta: basta que


ha ab (mod q) para que a assinatura (a, b) seja vlida.

gm

Desta forma chegamos ento ao esquema de assinaturas de Elgamal.

Ve
rs

Construo 10.14 (Esquema de assinaturas de Elgamal).

Gen(1n ): use G(1n ) para escolher um grupo cclico G


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.

com ordem

q,

com

Sign: dada a chave privada pk = hG, q, g, xi e a mensagem m G, escolha


y R Zq , sejam
a

= gy

b =

Devolva

(a, b).

(mod q)

(m ax)y 1

(mod q 1).

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 10.

168

Vrf:

dada a chave pblica

pk = hG, q, g, hi,

ASSINATURAS DIGITAIS

(a, b),

e a assinatura

retorne

um se e somente se

ha ab g m

DSA

in
ar

10.4.1

(mod q).

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


mltiplo de

64

p,

que deve ser um primo com tamanho

e tambm um subgrupo de ordem

lim

tamanho deve

512 l 1024,
ser 160 bits.
e

cujo

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;


pode-se usar SHA-2). Alm disso, a subtrao no clculo de

do Elgamal

trocada por uma adio. Temos ento

(mod q).

Pr
e

b = (H(m) + ax)y 1

A Construo a seguir o esquema de assinaturas DSA.

Construo 10.15 (Esquema de assinaturas DSA). Seja


hashing com sada de

Gen():

160

Escolha um grupo cclico

representvel com

uma funo de

bits.

160

com ordem

e gerador

g,

sendo que

bits.

Escolha um subgrupo de

com ordem

q,

tal que o tamanho de

seja

mltiplo de 64 e esteja entre 512 e 1024.

Ve
rs

x R Zq
h g x (mod p)
A chave pblica
A chave privada

hG, q, g, hi.
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 = g y (mod p) (mod q)

Devolva

Vrf:

(H(m) + ax)y 1

b =

(mod q).

(a, b).

dada a chave pblica

pk = hG, q, g, hi,

e a assinatura

e = H(m)b1

(mod q)

f = ab1

(mod q).

(a, b),

e sejam

notas de aula  verso 85 - Jernimo C. Pellegrini

10.5.

F FULL-DOMAIN HASH COM QUALQUER PERMUTAO DE MO NICA169


Retorne um se e somente se


(mod p)

(mod q).

in
ar

a = ge yf

O documento FIPS-186-2 descreve uma instancia do DSA onde o grupo


usado o de pontos em uma curva elptica sobre
como ECDSA

10.5

(Elliptic Curve DSA).

Zp .

Este esquema conhecido

F Full-domain hash com qualquer permuta-

o de mo nica

lim

(Esta Seo no foi redigida ainda)

possvel trocar o RSA no FDH por qualquer famlia de permutaes de


mo nica, mantendo sua segurana.

Notas

Pr
e

Assinaturas digitais usando pares de chaves pblica e privada foram idealizadas


inicialmente no mesmo artigo de Die e Hellman [DH76] onde expuseram a
ideia de criptossistemas assimtricos.

Neste texto seguimos a abordagem de Jonathan Katz [Kat10] para a classicao 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 [Lam79].

O livro de Jonathan Katz [Kat10] contm um estudo detalhado sobre os

full-domain hash.

Ve
rs

Exerccios

fundamentos tericos das assinaturas digitais, e uma discusso detalhada do

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.

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
ria de

280 operaes).

160

bits, um adversrio precisa-

Desde ento diversos ataques ao SHA-1 foram descobertos

e publicados:

Em 2005, Xiaoyun Wang, Yiqun Lisa Yin, e Hongbo Yu mostraram [WYY05]


69
como encontrar colises no SHA-1 usando 2
operaes.

Em

2008 Stphane Manuel publicou um ataque [Man09] ao SHA-1 que

permite obter colises com complexidade entre

251

227 .

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 10.

170

ASSINATURAS DIGITAIS

A respeito disso, responda:


a) Explique as consequncias disso para o padro DSA original.
b) Uma maneira de resolver o problema poderia ser usar a funo SHA256 e

in
ar

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 armao bastante difundida:

lim

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 vericar basta decriptar com a chave pblica.

Mostre que isto um equvoco, usando como exemplos criptossistemas assim-

Ve
rs

Pr
e

tricos do Captulo 9.

Parte II

lim

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Ve
rs

Pr
e

Protocolos

171

Ve
rs

Pr
e

lim

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

notas de aula  verso 85 - Jernimo C. Pellegrini

Pr
e

lim

in
ar

173

Ve
rs

Nesta parte so descritos protocolos criptogrcos.

notas de aula  verso 85 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

174

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 11

lim

Protocolos Para
Comprometimento

Um protocolo criptogrco uma descrio de como diversos agentes realizam


uma computao de maneira distribuda comunicando-se atravs de mensagens,

Pr
e

sem a necessidade de conana entre os atores.

11.1 Modelo computacional

costumeiro denir interao entre participantes de um protocolo usando mquinas de Turing. Neste textoestes sistemas so denidos usando atores (algoritmos) conectados por portas de comunicao.
Um

ator

semelhante a um algoritmo que pode usar portas para comunica-

Um gerador pseudoaleatreo, diferente de qualquer outro.

Ve
rs

o com outros atores. Cada ator (ou participante) tem:

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

B.

As portas de comunicao dos dois atores esto acopladas de maneira que


ambos possam trocar mensagens (a porta de entrada de
de sada de

A ligada porta

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;

175

notas de aula  verso 85 - Jernimo C. Pellegrini

PROTOCOLOS PARA COMPROMETIMENTO

out

in

in

out

in
ar

CAPTULO 11.

176

Denio 11.1 (Resultado de uma computao em conjunto). Quando dois

A e B esto acoplados como descrito no texto executam um procedimento,


x, denotamos por hA, Bi(x) a varivel aleatrea
representa a sada local de A aps interagir com B .


atores
que

lim

ambos usando a mesma entrada

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.
Denimos ento que a complexidade de tempo de um ator deve ser seu tempo
mximo de execuo, independente de qual seja sua contraparte.

o de

Pr
e

Denio 11.2 (Complexidade de tempo de ator). A complexidade de tempo


de um ator

uma funo

acoplado a

B e toda entrada x, a execux termina aps f (|x|) operaes,


A e B durante a execuo.


se para todo ator

com entrada comum

independente dos bits aleatreos usados por

11.2 Comprometimento

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 criptogrcos,
mas tambm til por si mesma.

Ve
rs

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

certicado de comprometimento

tulo chamamos de um comprometimento).

(que neste Cap-

Bob no deve ter acesso

mensagem.

Revelao:

nesta fase Alice envia para Bob alguma informao adicional

que permite que Bob nalmente tenha acesso mensagem. Alice no deve
ser capaz de negar que se comprometeu, e nem de modicar a mensagem.

H duas propriedades importantes de protocolos de comprometimento:

A propriedade de

vinculao preserva os interesses de quem recebe o com-

prometimento: 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 85 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

A propriedade de

sigilo

177

preserva os interesses de quem se compromete:

apesar de se comprometer com um valor, ele mantido em sigilo.

Denio 11.3 (Protocolo de comprometimento). Um protocolo de compro-

Gen(1n ),

Gen, Commit

que usado para produzir uma das entradas de

Commit.

Commitk (m), onde k gerado por Gen. A sada de Commit


onde c o comprometimento, e d o valor de abertura.

Exigimos que para toda mensagem

o par

e toda chave

(c, d)

ou um valor especial indi-

lim

Revealk (c, d), que retorna uma mensagem m


cando que (c, d) no foi gerado por Commit.

Reveal:

in
ar

metimento composto dos algoritmos polinomiais

gerada por

Gen,

Revealk (Commitk (m)) = m.

Commitk (m) para gerar c e d, e enviar c na fase de


d na fase de revelao. Aps receber d, o outro participante
usando Revealk (c, d)

Pr
e

Uma das partes usar


comprometimento e
poder obter

Informalmente, podemos dizer que um protocolo de comprometimento vinculante se nenhum adversrio pode obter dois comprometimentos iguais para
mensagens diferentes. Ser til, no entanto, denirmos 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 innito; e computavelmente
vinculante se a probabilidade de sucesso de adversrios de tempo polinomial

Ve
rs

desprezvel.

Experimento 11.4 (COMMIT_BIND(, A, n)).


1.

Gen(1n )

2. Envie

usado para gerar a chave

1n

k.

para o adversrio;

3. O adversrio determina uma mensagem

Commitk (m)

e dois valores de abertura

4. O adversrio as devolve duas mensagens

d, d

e o comprometimento

m, um
d0 .

m = Revealk (c, d)

c =

m, m0 , os dois valores de abertura

c.

5. O resultado do experimento 1 se e somente se

comprometimento

m = Revealk (c, d ).

m 6= m0 , m, m0 6= ,

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 11.

178

PROTOCOLOS PARA COMPROMETIMENTO

in
ar

1n

k Gen(1n )

m, m0 , d, d0 , c

m 6= m m, m 6= ,
m = Revealk (c, d),
m0 = Revealk (c, d0 ) 1

(i)

computacionalmente vinculante se para qualquer


negl() tal que

existe uma funo desprezvel

lim

Denio 11.5. Um protocolo de comprometimento

adversrio polinomial

Pr[COMMIT_BIND(, A, n) = 1] negl(n);

estatisticamente vinculante se para qualquer adversrio A existe uma funo desprezvel negl() tal que

Pr
e

(ii)

Pr[COMMIT_BIND(, A, n) = 1] negl(n);

(iii)

perfeitamente vinculante

se para quaisquer

Pr[COMMIT_BIND(, A, n) = 1] = 0.

Para denir a propriedade de sigilo usaremos um experimento com dois ato-

Ve
rs

res, um desaante e um adversrio.

Experimento 11.6 (COMMIT_HIDE(, A, n)).


1.

Gen(1n )

2. Envie

3.

usado para gerar a chave

1n

k.

para o adversrio;

envia duas mensagens

4. O desaante

m1

m2

de mesmo tamanho.

gera um bit aleatreo

5.

calcula

6.

devolve um bit

(c, d) = Commitk (mb )

b R {0, 1}.

e envia

para

A.

b0

7. O resultado do experimento um se

b = b0

e zero caso contrrio.

notas de aula  verso 85 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

179

in
ar

1n

k Gen(1n )

m1 , m2
b R { 0, 1 }
(c, d) Commitk (mb )

Denio 11.7. Um protocolo de comprometimento


(i)

sigilo computacional se para qualquer


negl() tal que

sigilo perfeito

Demonstrao.

existe uma

se para qualquer adversrio (polinomial ou no)

e todo

n,

1
.
2

No existe protocolo de comprometimento com vnculo perfeito

e sigilo perfeito.

1
+ negl(n).
2

Pr[COMMIT_HIDE(, A, n)] =

Teorema 11.8.

tem

Pr
e

Pr[COMMIT_HIDE(, A, n)]
(ii)

adversrio polinomial

funo desprezvel

lim

b0

b = b0 1
b 6= b0 0

Um protocolo perfeitamente vinculante precisa ser determins-

Ve
rs

tico, de outra forma o adversrio com tempo ilimitado poderia encontrar as duas
mensagens com o mesmo comprometimento. Isto contraria a denio de sigilo

perfeito.

Construo 11.9 (Protocolo de comprometimento com resumos). Seja


famlia de funes de hashing.

uma

Um protocolo de comprometimento pode ser

construdo como mostrado a seguir.

Gen(1n )

escolhe aleatoreamente

Commitk (m) = hH s (r||m), (r, m)i,

Revealk (c, (r, m)):

e uma funo de hashing


onde

H s.

r R {0, 1}n .

obter a mensagem trivial; vericar que

c = H s (r||m)

tambm.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 11.

180

PROTOCOLOS PARA COMPROMETIMENTO

O Exerccio 93 pede a demonstrao das propriedades do protocolo de comprometimento com resumos.

in
ar

Construo 11.10 (Protocolo de comprometimento usando logaritmo discreto).

Gen(1n ) escolhe aleatoreamente um primo p com n bits, um gerador g para


Zp .
Commitk (m) = (g m , m).
Revealk (c, m)

verica se

c = gm .

Demonstrao.

lim

Presumindo a hiptese do logaritmo discreto, o protocolo descrito na Construo 11.12 tem sigilo computacional e vnculo perfeito.
Teorema 11.11.

Como Bob s tem a descrio do grupo e

gm ,

determinar a

mensagem exatamente resolver o problema do logaritmo discreto e portanto


o protocolo tem sigilo computacional.
O logaritmo de

na base

nico no grupo

m por uma segunda mensagem m

Zn ,

portanto Alice nunca

sem alterar o comprometimento

Pr
e

poder trocar

 e portanto o protocolo tem vnculo perfeito.

Se modicarmos o problema usado como base do protocolo do logaritmo


discreto para o de Die-Hellman obtemos o protocolo de Pedersen.

Construo 11.12 (Protocolo de comprometimento de Pedersen).

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

Ve
rs

Revealk (c, (r, m)):

r R Zq e calcule c = g r y m (mod p) Retorne hc, (r, m)i.

se

c = gr ym

retorne

m,

seno retorne

(um valor

indicando que o comprometimento no vlido).

necessrio que

m Zq .

Teorema 11.13.

putacional.

Demonstrao.

O protocolo de Pedersen tem sigilo perfeito e vinculao com-

Como

mente distribudo em

r escolhido aleatoreamente em Zq , g r y m uniformeG, independente de m. Conclumos que o protocolo tem

sigilo perfeito.

A propriedade de vinculao seria quebrada se for possvel encontrar

(r0 , m0 )

tais que

m 6= m0

Revealk (c, (r, m)) = m


Revealk (c, (r0 , m0 )) = m0 .

(r, m)

notas de aula  verso 85 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

181

gr ym = gr ym
mas ento

g rr = y m m (mod p),
0

(mod p),

y = g (rr )(m m)

(mod q)

(mod p).

Isso, por sua vez, signica computar o logaritmo de

na base

in
ar

Isso o mesmo que

g.

Como

escolhido uniformemente ao acaso, teramos que contradizer a hiptese do

logaritmo discreto. Conclumos que o protocolo tem vinculao computacional.

H algo importante a observar a respeito dos dois protocolos baseados em lo-

como comprometimento, e bastante

lim

gm

garitmo discreto: um deles usa apenas

claro que quebrar seu sigilo equivalente a calcular o logaritmo discreto de

m.

Por outro lado, como este logaritmo nico, obtemos vinculao perfeita. Ao

g m para g r y m abrimos mo da vinculao perfeita, porque h diversos


r m
r
de r e m para os quais c = g y . No entanto, a multiplicao por g

mudar de
valores

passou a nos dar sigilo perfeito.

possvel tambm construir um protocolo de comprometimento a partir de

Pr
e

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.

Gen(1n )

de

usado para gerar

sk, pk .

Commitk (m) = (Encpk (m), sk).

Ve
rs

Revealk (c, (pk, sk)) decripta m


Encpk (m) = c, seno retorna .

com a chave privada

sk ,

e retorna

se

O Exerccio 97 pede a demonstrao do seguinte Teorema.

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

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 11.

182

1.

Gen(1n )

PROTOCOLOS PARA COMPROMETIMENTO

escolha um inteiro

com tamanho

bits.

A distribuio dos

bits deve ser uniforme.

Commitk (b):

Alice escolhe

y R ZN ,

que no resduo quadrtico. Para

comprometer-se com zero, Alice envia


comprometer-se com um, envia

c
3.

c,

que no quadrado:

d = (x, y).

Revealk (c, (x, y)):


retorne .

se

c = x2

x2 . Para
c = yx2 . Retorne

que um quadrado

in
ar

2.

retorne zero; se

c = yx2

retorne um; seno

O protocolo 11.16 perfeitamente vinculante e, sendo verdadeira a hiptese do resduo quadrtico, computacionalmente ocultante.

lim

Teorema 11.17.

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 ecientemente se um
nmero resduo quadrtico mdulo

Vericao de igualdade de logaritmos

Pr
e

11.2.2

N.

P provar
V , que dados dois geradores g1 , g2 de um grupo Gq e dois
a
a
elementos h1 , h2 Gq , existe um a tal que h1 = g1 e h2 = g2 (ou seja, que o
logg1 h1 = logg2 h2 (mod q)).
Esta Seo descreve um protocolo simples que permite a uma parte
para uma outra,

Construo 11.18 (Protocolo para provar de igualdade de logaritmos). Sejam

g1 , g2

geradores de um grupo

conhece

O provador

Gq ,

q primo, e sejam h1 , h2 Gq .
h1 = g1a e h2 = g2a .

com

tal que

a1 = g1w

escolhe

envia um desao aleatreo

devolve

verica que

Ve
rs

w R Gq

e envia

c R Zq

a2 = g2w
para

para o vericador

V;

P;

r = w ac (mod q);
a1 = g1r hc1

a2 = g2r hc2 .


A vericao funciona porque

g1r hc1

g1wac hc1

g1wac (g1a )c

g1wac g1ac

g1w = a1 .

a2 e g2r hc2 . Note que o vericador V no tem informao


a  apenas convencido de que o dois logaritmos so iguais.

O mesmo vlido para

que permita deduzir

notas de aula  verso 85 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

11.2.3

183

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
ciar a deciso, podem faz-lo da seguinte maneira:
1. Alice compromete-se com um bit

cA

bA R {0, 1} e envia o comprometimento

para Bob;

2. Bob tambm se compromete com um bit


metimento

cB

in
ar

aleatoreamente entre duas opes, garantindo que nenhum deles possa inuen-

bB R {0, 1}

e envia o compro-

para Alice;

3. Uma vez que cada um tenha o comprometimento do outro, Alice e Bob

4. Ambos computam o resultado


fcil perceber que

bA bB .

bB );

lim

enviam um ao outro os valores que cada um escolheu (bA e

Pr(cara) = Pr(coroa) = 1/2.

Pr
e

Notas
Exerccios

Ex. 92  Porque no modelo computacional apresentado neste Captulo dissemos que

devem ter geradores pseudoaleatreos

diferentes?

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

Ve
rs

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

convel, como podemos proceder?

Ex. 96  A Demonstrao do Teorema 11.13 diz que como  g r y m unifor-

memente distribudo em

G, independente de m, o protocolo tem sigilo perfeito.

Elabore estas armaes com mais rigor (primeiro a armao a respeito da


distribuio de

g r y m , inclusive sobre a independncia de m, e nalmente 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 85 - Jernimo C. Pellegrini

CAPTULO 11.

PROTOCOLOS PARA COMPROMETIMENTO

Ve
rs

Pr
e

lim

in
ar

184

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 12

lim

Compartilhamento de
Segredos

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
Seria interessante se o

Pr
e

este segredo seja conhecido apenas por uma pessoa.

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.


n participantes e o qurum (ou limiar) para

Quando h
gredo de

revelao do se-

participantes, dizemos que o protocolo um esquema

compartilhamento de segredos.

(k, t)

de

H tambm esquemas mais gerais onde no

determinamos um qurum, mas especicamos 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 vericvel, e

Ve
rs

porque usado como bloco bsico na construo de protocolos (por exemplo,


nos protocolos para computao distribuda segura, descritos no Captulo 15).
Primeiro deniremos estruturas de acesso, que so a forma como especica-

mos os participantes autorizados.

Denio 12.1 (Estrutura de Acesso). Seja


Os subconjuntos de

um deles chamado de conjunto dos

qualicantes.
sobre P .

um conjunto de participantes.

podem ser divididos arbitrariamente em dois conjuntos,

qualicantes

no
estrutura de acesso


e o outro de conjunto dos

O conjunto dos qualicantes chamado de

Se um conjunto qualicante tem acesso ao segredo, um superconjunto dele

tambm deve ter. Esta ideia capturada pelo conceito de

Denio 12.2 (Estrutura Montona). Seja


montona sobre

uma coleo

um conjunto. Uma estrutura

de subconjuntos de
185

estrutura montona.

tal que

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 12.

186

COMPARTILHAMENTO DE SEGREDOS

A ;

Se

X X 0 ,

ento

X 0 .

in
ar

Todas as estruturas de acesso que usaremos so montonas.

Denio 12.3 (Esquema de Comparilhamento de Segredos). Seja


trutura montona de acesso sobre um conjunto
de compartilhamento de segredos

sobre

uma es-

de participantes. Um esquema

um par de algoritmos:

Share(s, ): dado um segredo s e a estrutura de


Sa determinada para cada participante a P ;

acesso

uma partilha

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 qualicante:
H = { Sa | a O, O } ,
ento

Combine

deve retornar

s.

Pr
e

12.1 Esquemas com qurum

Os primeiros esquemas de compartilhamento de segredos foram propostos independentemente em 1979 por Adi Shamir [Sha79] e George Blakley [Bla79], e no

n participantes,
qualquer qurum (ou limiar) de k n possa obter o segredo (estes so chamados
de esquemas (k, n) de compartilhamento).
usam estruturas de acesso. So denidos de forma que dentre

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

terminar innitos polinmios passando por todos os pontos do conjunto.

A ideia bsica usada no esquema de Shamir :

Gere um polinmio

p()

tante igual ao segredo

de grau

D a cada participante um ponto

Quando

t+1

aleatoreamente, mas cujo termo cons-

s.
(x, p(x)).

participantes se reunirem com seus pontos, estar determi-

nado o polinmio (e o termo constante). Com um participante a menos,


eles nada sabem a respeito do polinmio.

notas de aula  verso 85 - Jernimo C. Pellegrini

12.1. ESQUEMAS COM QURUM

187

No entanto, esta ideia foi descrita para polinmios sobre corpos innitos.
O esquema de compartilhamento de Shamir adapta este mtodo para corpos
nitos.

a partir dos pontos, usamos interpolao

in
ar

Para obter o polinmio de grau

usando a frmula de Lagrange, que derivamos a seguir.

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:
Teorema 12.4.

lj (x)

n
X

yj lj (x)
j=0
n
Y

k=0;k6=j

Demonstrao.

x xk
.
xj xk

n + 1 pontos distintos (x0 , y0 ), . . . , (xn , yn ).

Supomos que temos

Denimos os seguintes polinmios:

Pr
e

(x x0 ) (x xk1 )(x xk+1 ) (x xn )


.
(xk x0 ) (xk xk1 )(xk xk+1 ) (xk xn )

lk (x) =

n.

Estes polinmios so todos de grau

Consideramos agora dois casos:

Quando calculamos lk (xk ), o numerador e denominador so iguais e portanto lk (xk )

lim

l(x)

= 1;

Quando calculamos lk (xj ), com

j 6= k ,

rador, que portanto resulta em zero

1.

(xj xj )

o fator

estar no nume-

Ve
rs

Denimos ento o polinmio resultante da soma de todos os lk de grau

Como todos os

lk (x)

Pn (x) =

n
X

n:

f (xk )lk (x).

k=0

so de grau

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

1 Para

zero.

Pn

coincidir com os

valores diferentes dos

xi

n+1

pontos

dados inicialmente,

xi .

lk (x)

no necessariamente um nem

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 12.

188

COMPARTILHAMENTO DE SEGREDOS

No contexto do esquema de Shamir, estamos interessados no coeciente constante do polinmio. Temos ento

yj rj

in
ar

l(0)

n
X
j=0

rj

n
Y

= lj (0) =

k=0;k6=j
O vetor

(r1 , r2 , . . . , rn )

chamado de

xk
.
xk xj

vetor de recombinao.

Construo 12.5 (Esquema de compartilhamento (k,n) de Shamir). Seja

um segredo,

Share(s):

o qurum e

identicado com

participantes:

xi Fq .

k coecientes a1 , . . . , ak1 .
p(x) = s + a1 x + a2 x + . . . + ak1 x.

2. Escolha uniformemente

recebe

por um canal seguro

Pr
e

3. Cada participante
(portanto

Fq

to total de participantes.

Para distribuir o segredo entre os

1. Cada participante

mio

lim

um corpo,

e seja

o ponto

o polin-

(xi , p(xi ))

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.

O esquema de Shamir seguro, porque mesmo conhecendo
babilidade do segredo ser qualquer elemento do corpo

k1 chaves a pro-

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;

um esquema com limiar.

Ve
rs

O esquema de Shamir, no entanto, no pode ser usado com qualquer es-

trutura de acesso  funciona apenas com qurum.

Apesar disso, serve como

fundamento para a construo de outros esquemas mais exveis, 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

dimenses,

um nico ponto; mas com

n1

hiperplanos no paralelos se interceptam em

hiperplanos, h innitos pontos de interseo.

Construo 12.6 (Esquema de compartilhamento de segredos de Blakley). O


espao onde o segredo codicado um corpo nito de

dimenses.

notas de aula  verso 85 - Jernimo C. Pellegrini

12.2. SEGURANA

Share(s) :

189

para distribuir o segredo entre

segredo como um ponto em

dimenses.

participantes, codique o

De a cada participante um

hiperplano passando pelo ponto.


participantes, cada um com um hiperplano diferente,

in
ar

Combine(H) : n

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.
entanto, no estritamente seguro e no mnimo.

12.2 Segurana

No

lim

Mencionamos dois aspectos importantes da segurana de esquemas de comparti-

lhamento: um deles o sigilo (um conjunto no autorizado de participantes no


pode obter qualquer informao sobre o segredo) e o outro a vericao (deve
ser possvel vericar se algum dos participantes est agindo desonestamente).

12.2.1

Sigilo

Pr
e

Denio 12.7 (Sigilo esquema de comparilhamento de segredos). Seja


esquema de compartilhamento de segredos com estrutura de acesso
que

tem sigilo perfeito se

um

Dizemos

Pr(s) = Pr(s|H 0 )

H0
/ .

para qualquer

O esquema de compartilhamento de segredos de Blakley no


tem sigilo perfeito.
Demonstrao.

Teorema 12.8.

s um segredo representado como um ponto (s1 , s2 , . . . , sm )


t. De posse de nenhuma
m
informao, sabe-se que o segredo est em Zn . A probabilidade de um ponto
m
selecionado uniformemente ser igual a s 1/n .
Conhecendo k < t partilhas, restam apenas t k partilhas que precisamos
Seja

Ve
rs

usando o esquema de Blakley, com limiar igual a

descobrir  se tentarmos selecion-las uniformemente a probabilidade de encontrarmos

Mais interessantemente, com


Ainda que

1
1
< m.
ntk
n
t 1 partilhas a

probabilidade

1/n.

n seja exponencial no nmero de bits usados, estritamente falando

o esquema de Blakley no tem sigilo perfeito.


O Exerccio 99 pede a demonstrao de que o esquema de Shamir, ao con-

trrio do de Blakley, tem sigilo perfeito.

Teorema 12.9.

sigilo perfeito.

O esquema de compartilhamento de segredos de Shamir tem

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 12.

190

COMPARTILHAMENTO DE SEGREDOS

12.3 Estruturas gerais de acesso


Os esquemas de Shamir e de Blakley no permitem escolher quais participantes
podem revelar o segredo  s possvel determinar o nmero de participantes
Nesta seo descrevemos um esquema de compartilhamento que

in
ar

necessrio.

permite especicar listas arbitrrias de participantes autorizados a revelar o


segredo.

Suponha que os participantes em um esquema de compartilhamento so


o Presidente;

v,

o Vice-presidente;

c,

o Presidente do Congresso;

d,

o Ministro da Defesa.

lim

p,

2 e ter acesso ao cdigo

Suponha tambm que podem decidir declarar guerra


secreto para uso de armamento nuclear:

O Presidente da Repblica e o Ministro da Defesa (p, d);

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

Pr
e

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}

Note que tivemos que listar mais conjuntos do que havamos especicado (por
exemplo,

{p, d, c, v}, {p, d, v}

{p, d, c} s
X em

Um conjunto qualicante minimal

Ve
rs

outro, tambm em

foram includos porque

{p, d} ).

aquele que no superconjunto de

 e uma descrio minimal de inclui apenas os conjuntos

qualicantes minimais:



= {p, d}, {p, c}, {v, c, d}

Podemos reescrever a estrutura se denirmos

(um conjunto pode ser ento descrito usando

p, v, d, c como variveis binrias


1 para presente e 0 para au-

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

uma hiptese ctcia apenas.

notas de aula  verso 85 - Jernimo C. Pellegrini

12.3. ESTRUTURAS GERAIS DE ACESSO

191

Para qualquer estrutura geral de acesso , existe um esquema


de compartilhamento de segredos que implementa .
Teorema 12.10.

uma estrutura de

in
ar

Construo 12.11 (Esquema de Ito-Nishizeki-Saito). Seja

acesso descrita na forma normal disjuntiva. Cada conjunto qualicante minimal

est descrito como uma conjuno. Cada posio de varivel numerada na

frmula: por exemplo,

(v1 v2 ) v3

tem posies

1, 2

3.

bits necessrio para representar o segredo.

Seja

o nmero de

Combine(H):

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.
qualquer um dos conjuntos qualicantes pode revelar

ob-

servando quais valores de suas partilhas precisam ser combinados com


ou-exclusivo, levando em conta suas posies em

Exemplo 12.12 (Esquema de Ito-Nishizeki-Saito). A estrutura j mencionada


tem trs conjuntos qualicantes (e trs clusulas conjuntivas). Para cada clu-

(vi , . . . , vk ),

queremos que o ou exclusivo dos

si , . . . , sk

seja igual a

s.

Pr
e

sula

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 .

0110. Escolhemos aleatoreamente s1 = 1100.


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.

Suponha ento que o segredo seja


Como

s1 = 1100
s2 = 1010
s3 = 1110
s4 = 1000
s5 = 1111
s6 = 0010
s7 = 1011

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 12.

192

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:

Teorema 12.13.

Demonstrao.

lim

s = s5 s6 s7 = 1111 0010 1011 = 0110.

O esquema de Ito-Nishizeki-Saito tem sigilo perfeito.

Suponha que um participante tenha um valor

foi escolhido aleatoreamente ou foi calculado a partir de

s.

sk .

Este valor

Se foi escolhido

aleatoreamente, no h como extrair dela qualquer informao a respeito de


Mas

sk

pode ter sido calculado a partir de

Pr
e

de uma conjuno):

s.

(porque era a ltima varivel

sk = si sj s

Seja ento

s = 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

com

bits escolhidos uniformemente  exatamente como no one-time pad. Assim, no


deve ser possvel extrair informao a respeito de

a partir de

sk ,

ou seja,

Pr(s|sk ) = Pr(s).

O mesmo vale quando o participante tem vrios valores

si , ..., sk .

O esquema de Ito-Nishizeki-Saito, no entanto, ineciente: cada participante

Ve
rs

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 vericvel


H um problema com os esquemas de Shamir e de Ito-Nishizeki-Saito: no
possvel aos participantes vericar 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


modicar um par

(xi , yi )

que pretendem reconstru-lo  pode

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 85 - Jernimo C. Pellegrini

12.4. COMPARTILHAMENTO VERIFICVEL

193

Denio 12.14 (Esquema vericvel de compartilhamento de segredos). Um


esquema de compartilhamento de segredos vericvel semelhante a um esquema de compartilhamento de segredos, havendo um algoritmo adicional,

SecVrf,

in
ar

que pode ser executado por cada participante a m de vericar se sua partilha
est correta  ou seja, se o distribuidor entregou-lhe uma partilha que de fato

permite revelar o segredo, e que nenhum dos outros participantes modicar

sua partilha.

Aps um conjunto qualicante se formar, cada um pode vericar a corretude

das partilhas dos outros no conjunto, j que as partilhas do conjunto qualicante


sero abertas.

O esquema vericvel de compartilhamento de segredos de Pedersen, mos-

trado na prxima Construo, uma extenso do esquema de Shamir usando o


Aps construir o polinmio

lim

problema decisional Die-Hellman para a vericao.

a(x) que servir para distribuir o segredo usando


b(x) gerado para permitir a verica-

o esquema de Shamir, um outro polinmio

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

Pr
e

Construo 12.15 (Compartilhamento de segredos vericvel (esquema de


Pedersen)).

Gen(1n ):

gere um grupo

Share(s):

de ordem

1n

com gerador

escolha dois polinmios aleatreos, com

g,

onde

primo.

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

Ve
rs

Escolhe-se um elemento
Calcule uma lista

Pi

recebe os pontos

a(i)

b(i).

h R G \ { 1 }

C = (C0 , C1 , C2 , . . . , Ct1 ),

tal que

ai bi

Ci = g h .

Esta lista contm um comprometimento para as partilhas de cada participante, usando o esquema de comprometimento de Pedersen (o valor
comprometido

ai ,

bi

o elemento aleatreo ). Cada participante re-

cebe a lista inteira.

SecVrf(C, a(i), b(i)):

3O

cada participante

t1
Y

(ij )

Cj

Pi

verica se

= g a(i) hb(i) .

j=0

esquema de comprometimento de Pedersen detalhado na pgina 180.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 12.

194

(O ndice

COMPARTILHAMENTO DE SEGREDOS

Pi ,

do participante

e o ndice

iterado para todos os

participantes)

H de
a se d da mesma forma como no esquema de Shamir.


a recuperao do segredo a partir de um conjunto

pontos do polinmio

Para vericar que

SecVrf de fato garante


Cj no produtrio:

in
ar

Combine(H):

que a partilha est correta, basta

substituir os valores de

t1
Y

(ij )

Cj

= g a0 hb0

(i0 )

g a1 hb1

(i1 )

g a2 hb2

j=0
2

=g

a(i) b(i)

+... b0 +b1 i+b2 i2 +...

lim

= g a0 +a1 i+a2 i

(i2 )

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
e

Teorema 12.16.

Pr [S = s|V, C] = Pr [S = s] .

Demonstrao. (Rascunho) Seja P um conjunto


Pi tem um par (a(i), b(i)), e todos tem a lista de

de

t1

participantes. Cada

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 vericao s pode ser

Ve
rs

realizada individualmente  cada participante pode vericar sua partilha, mas


precisa usar sua partilha secreta (a(i), b(i)), por isso no possvel que outras
entidades tambm faam a vericao.

12.5 Compartilhamento publicamente vericvel


Os esquemas de compartilhamento vericvel permitem aos participantes vericar suas partilhas, mas no permitem que um expectador possa vericar que
todos agiram honestamente. Os esquemas de compartilhamento publicamente
vericveis permitem que qualquer um verique as partilhas.

Denio 12.17 (Esquema de compartilhamento de segredos publicamente


vericvel). Um esquema de compartilhamento de segredos publicamente vericvel semelhante a um esquema de compartilhamento de segredos, havendo
um algoritmo adicional,

SecVrf, que pode ser executado por qualquer entidade,

notas de aula  verso 85 - Jernimo C. Pellegrini

12.5. COMPARTILHAMENTO PUBLICAMENTE VERIFICVEL

195

mesmo que no seja uma das participantes (ou seja, mesmo que no tenha recebido uma partilha), a m de vericar se as partilhas esto corretas.

O esquema de compartilhamento de Schoenmakers, descrito nesta Seo,


de igualdade de logaritmos descrito na Seo 11.2.2.

in
ar

publicamente vericvel. Este esquema depende do protocolo para vericao


A Construo a seguir o protocolo de compartilhamento publicamente
vericvel de Schoenmakers.

Construo 12.18 (Compartilhamento de segredos publicamente vericvel


(esquema de Schoenmakers)).
selecione um primo

com dois geradores

xi R Zq
Share(s):

h.

com

bits e gere um grupo

e publica sua chave pblica

yi = hxi .

crie um polinmio aleatreo com coecientes em

p(x) =

t1
X

s no seja escolhido
Zq uniformemente.

importante que

no polinmio  deve ser determinado em


Publique para todo

q,

Zq :

Pr
e

s = a0 .

de ordem

aj xj ,

j=0
e determine que

Cada participante escolhe uma chave privada

lim

Gen(1n ):

0j<t

e inserido

o comprometimento

Cj = g aj

e as partilhas

p(i)

p(i)

Yi = yi
Cj

Ve
rs

Usando os valores

o i < N:

encriptadas para todo

publicados, qualquer um pode computar

Xi =

t1
Y

Cji .

j=0

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

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 12.

196

COMPARTILHAMENTO DE SEGREDOS

c H [i(Xi , Yi , a1i , a2i )]

ri = wi p(i)c
c no aleatreo, mas calculado usando as informaes
i

Note que o desao

[(a1i , a2i ), c, ri ] .
Combine:

um conjunto qualicante reconstri o segredo da seguinte ma-

neira: cada participante decripta sua partilha


privada

in
ar

pblicas calculadas at o momento. A transcrio publicada para cada

yi = g

xi

p(i)

Si = hi

calculando

p(i)

1/xi

= Yi

lim

Si = hi

Em seguida, dados todos os valores

Si ,

o segredo

usando sua chave

S = hs

obtido usando

o polinmio interpolador de Lagrange.

t
Y
i=1

Sii =

t
Y

hp(i)

i=1
Pt

=h

p(i)i

Pr
e

i=1

= hp(0) = hs ,

onde

o coeciente de Lagrange:

i =

Y
i6=j

SecVrf:

j
.
ji

para vericar que as partilhas esto corretas, necessrio com-

Ve
rs

putar

usando os valores

Xi =

t1
Y

Cii

j=0

Ci

publicados. Pode-se ento tomar

A1i = g ri Xic
A2i = yiri Yic

e vericar 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 distri-

p(i), de forma que todo conjunto


g s . Como p(i) nico, demonsp(i)
p(i)
traremos apenas que cada Xi e cada Yi so g
e yi
, que exatamente o que
buidor ter se comprometido com todos os

qualicante possa reconstruir o mesmo segredo

o distribuidor poderia modicar.

notas de aula  verso 85 - Jernimo C. Pellegrini

12.5. COMPARTILHAMENTO PUBLICAMENTE VERIFICVEL


p(i)

Se Xi = g p(i) e Yi = yi
ritmo SecVrf sero de fato idnticos.

Teorema 12.19.

197

, os hashes comparados pelo algo-

e que ento os hashes sero iguais.

A1i = g ri Xic = g wi p(i)c Xic


= g wi p(i)c (g p(i) )c
= g wi p(i)c+p(i)c
= g wi = a1i

lim

O Exerccio 103 pede a demonstrao do seguinte Teorema.

Teorema 12.20.

in
ar

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 ,

O esquema de Schoenmakers homomrco.

Os Lemas a seguir sero usados na demonstrao de segurana do esquema


de Schoenmakers. O primeiro deles estabelece que presumida a diculdade do
problema Die-Hellman, quebrar a encriptao de um partilha no esquema de
Schoenmakers difcil.

Pr
e

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 eciente 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
ecientemente o problema Die-Hellman.

Lema 12.21.

Ve
rs

Demonstrao. Seja A o algoritmo que, dados g a , g b , g c e g bc calcula ecienteab


mente g .
a
b
Sejam x = g e y = g . Para resolver o problema Die-Hellman queremos
ab
obter z = g
usando A.
0 0
a0
b0
c
b0 c
Escolhemos aleatoreamente a , b , c e usamos x , y , g , y
como entradas
para A. Como
0

a0

xa = (g a ) = g aa
b0
0
0
y b = g b = g bb ,

obtemos, com probabilidade no desprezvel de sucesso


como sada de

A.

Mas

e conseguimos calcular

g ab .

o valor

z 0 = g aa bb

g ab = (z 0 ) a0 b0


Se t1 participantes do esquema de Schoenmakers puderem obter


o segredo, pode-se resolver o problema Die-Hellman em tempo polinomial.
Lema 12.22.

Usando o modelo do orculo aleatreo e presumida a diculdade do problema Die-Hellman,


Teorema 12.23.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 12.

198

COMPARTILHAMENTO DE SEGREDOS

A reconstruo resulta no segredo para qualquer conjunto qualicante de


participantes;

Demonstrao.
tente, e os Xi

in
ar

Nenhum conjunto no qualicante de participantes deve conseguir obter o


segredo.

O esquema de comprometimento de Chaum-Pedersen consis-

ij
j Cj  por isso as partilhas so
consistentes com o segredo. Dado o Lema 12.21 e o fato do esquema de Chaum-

Cj

so obtidos dos

como

Pedersen ser de conhecimento zero quando o vericador honesto, nenhum


conjunto com menos de

participantes deve conseguir obter o segredo.

Segredos no aleatreos

lim

12.5.1

A descrio que demos do esquema de Schoenmakers presume que o segredo

hs ,

sendo

aleatreo).

escolhido aleatoreamente (durante a construo do polinmio

De fato, precisamos que

o esquema seja seguro.

seja escolhido uniformemente para que

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

aps executar

Combine

Zq .

Suponha que o segredo que queiramos

Pr
e

compartilhar seja

Share,

a obteno de

U = H(hs ). Depois de executar


s
s
partir de h e U trivial ( = U h ).

publique

Share, tambm publica U = hs . Depois


s
de executar Combine, saberemos que = U/h e poderemos reconstru-lo.

O distribuidor, aps executar

12.6 Encriptao com qurum


possvel usar o criptossistema El Gamal compartilhando a chave privada entre

Ve
rs

diversos participantes, mas de tal forma que que um qurum mnimo possa
decifrar mensagens sem revelar a chave secreta.
Cada participante

Pi

do conjunto

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

s=

si P,i

P,i =

lP \{ i }

A chave pblica ser

(q, g, h),

t+1

l
.
li

h = gs .
(a, b) = (g k hk m)

com

Para decifrar o texto encriptado

chave privada,

sem obter diretamente a

participantes usam o seguinte procedimento.

notas de aula  verso 85 - Jernimo C. Pellegrini

12.7. NOTAS
Cada

Pi

199

publica

zi = xsi ,

junto com uma prova de que

logg hi = logx zi .

in
ar

O texto claro

b
s
xP
s
x =x i si P,i
Y P,i
=
zi .
m=

i
Os participantes

podem

obter a chave privada, mas presume-se que queiram

lim

preserv-la e apenas decriptar mensagens.

12.7 Notas

Shamir e Blakley inventaram independentemente seus esquemas pioneiros de


compartilhamento de segredos, publicados na mesma poca [Bla79; Sha79].
A frmula de Lagrange para o polinmio interpolador normalmente apresentada na literatura de Mtodos Numricos (ou Clculo Numrico), quando
introduo ao assunto.

O livro de Neide Franco [Fra06] uma boa

Pr
e

da discusso sobre interpolao.

A descrio dada aqui para o esquema de Ito-Nishizeki-Saito semelhante


dada por Smart em seu livro [Sma04], onde j se aplica a modicao sugerida
por Benaloh e Leichter [BL90]. O artigo original de Mitsuru Ito, Akira Saito e
Takao Nishizeki foi publicado na conferncia GLOBECOM87 [ISN87].
O primeiro esquema de compartilhamento vericvel foi descrito em 1985
por Benny Chor, Sha Goldwasser, Silvio Micali a Baruch Awerbuch [Cho+85].

Aquele esquema j era publicamente vericvel. Outro esquema de compartilhamento de segredos com vericao foi descrito por Rabin e Ben-Or [M B89].
O esquema de Pedersen foi descrito em um artigo em 1992 [Ped92]. Markus Sta-

Ve
rs

dler publicou um esquema publicamente vericvel em 1996 [Sta96]. O esquema


de Stadler funciona com estruturas arbitrrias de acesso, mas depende de uma
conjectura no padro, chamada de problema do logaritmo duplo: dado

conjectura-se ser difcil determinar

y = g (h

x.

Eiichiro Fujisaki e Tatsuaki Okamoto publicaram seu esquema em 1998 [FO98].


Shoenmakers publicou seu esquema de compartilhamento publicamente veri-

cvel em 1999 [Sch99], que assintoticamente mais eciente 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 pro-

posta pela primeira vez por Pedersen em 1991 [Ped91], modicada de vrias
formas. O trabalho de 1999 realizado por Rosario Gennaro, stanislaw Jarecki,
Hugo Krawczyk e tal Rabin [Gen+99] aperfeioa a ida, exibindo um mtodo
com demonstrao de segurana.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 12.

200

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

n e o qurum mnimo k .
k pessoas decidiram revelar a chave, constataram que o segredo revelado

mento) em sigilo. O nmero de participantes


Quando

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.

Ex. 101  Na demonstrao do Teorema 12.13 dissemos que o mesmo vale

si , ..., sk .

Complete a demonstrao

lim

quando o participante tem vrios valores

mostrando que esta armao 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
vericvel. Para cada construo que obtiver:
a) Determine o tipo de sigilo do esquema (perfeito, computacional, etc).
b) Determine se esquema publicamente vericvel ou se vericvel apenas
pelos participantes.

c) Determine em quanto o tamanho da partilha aumentada.


d) Argumente informalmente a respeito da ecincia do novo esquema, comparando-

Ve
rs

a com a do esquema antigo e com as dos outros esquemas que produzir.

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 13

13.1 Provas Interativas

lim

Provas de Conhecimento Zero

Um sistema de provas interativas um mtodo que dois participantes podem


usar a m de que um deles possa provar algo ao outro. Normalmente o mtodo

Pr
e

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


Um vericador emite um desao e o provador deve conseguir dar uma resposta
satisfatria a m de provar algo. Por exemplo, um usurio pode precisar provar
a um sistema que tem uma senha ou algum outro segredo  mas sem mostrar
o segredo. Nos exemplos deste Captulo, daremos os nomes Peggy entidade
que pretende provar algo, e Victor quela que dever vericar a prova.

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

Ve
rs

a Victor devem ter tamanho polinomial.

necessrio tambm denir claramente o que so os fatos que so prova-

dos em um sistema de prova interativa. O provador deve convencer o vericador


de que um elemento

pertence a alguma linguagem .

A Denio de sistema de prova interativa dada a seguir, usando o modelo

de computao descrito no Captulo 11. As probabilidades so de que o

cador

aceite a prova:

veri-

emitir sada igual a um se aceita a prova, e zero em

caso contrrio.

Denio 13.1 (Sistema de prova interativa). Um par de atores

sistema de prova interativa para uma linguagem

se

polinomial e valem as propriedades listadas a seguir.

1 Linguagens

so denidas no Apndice C (Denio C.33, pgina 378).

201

(P, V )

um

executa em tempo

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 13.

i)

Completude:

para todo

PROVAS DE CONHECIMENTO ZERO

x L,
Pr[hP, V i(x) = 1]

ii)

Consistncia:

para todo

y
/ L,

e para todo ator

Pr[hA, V i(y) = 1]
Da mesma forma que na descrio da classe

1/3

1
.
3

IP ).

A classe

IP

BPP , a escolha dos valores 2/3

arbitrria.

Denio 13.2 (Classe

formada por todas as linguagens

lim

2
3

in
ar

202

para as quais existe sistema de prova interativa.


O seguinte Teorema relaciona as classes

Teorema 13.3.

IP , N P

PSPACE .

N P IP = PSPACE .

Pr
e

13.2 Conhecimento zero

A nalidade de um sistema de prova interativa possibilitar que um provador

convena um vericador de algo, mas sem que o vericador 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).


Uma aplicao importante de protocolos de conhecimento zero bastante

Ve
rs

simples: ao invs de um usurio enviar uma senha cada vez que usa um servio
em algum sistema, ele

prova

para o sistema que conhece a senha.

Com isso

evita-se que a senha seja armazenada, ainda que temporariamente, no sistema.


Suponha que temos um sistema de prova interativa

rao com

P,

o vericador

(P, V ).

Durante a inte-

obter dados (ele ter no mnimo uma transcrio

da interao, com todas a mensagens trocadas entre ambos). Diremos que

de conhecimento zero se

somente obtm dados que ele mesmo poderia ter

P.
P seja de conhecimento zero, ento para
todo vericador V 0 , e para toda entrada x, existe algum algoritmo polinomial M
0
que simule a interao de V com P , produzindo os mesmos resultados para as
mesmas entradas, mas sem acesso a P . Admitimos que M (x) falhe com baixa
0
probabilidade em produzir a mesma sada que hP, V i(x)
gerado, sem a participao do provador
Mais detalhadamente, para que

2 Veja

a Denio C.30, na Seo C.6 do Apndice C, pgina 377.

notas de aula  verso 85 - Jernimo C. Pellegrini

13.2. CONHECIMENTO ZERO

203

Denio 13.4 (Conhecimento zero perfeito). Seja

(P, V ) um sistema de prova


(P, V ) de conhecimento zero perfeito se para todo ator
um algoritmo polinomial M tal que para toda entrada x,

interativa. Dizemos que

i)

existe

falha com probabilidade no mximo

1/2,

retornando um smbolo FA-

in
ar

V0

polinomial

LHA.
ii)

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

Seja

Denio 13.5 (Conhecimento zero computacional). Seja

(P, V ) um sistema
(P, V ) de conhecimento zero perfeito se para
0
todo ator polinomial V existe um algoritmo polinomial M tal que para toda
entrada x, as distribuies M (x) e hP, V i(x) so computacionalmente indistinguveis.


lim

de prova interativa. Dizemos que

Denio 13.6 (Conhecimento zero estatstico). Seja

(P, V ) um sistema de
de conhecimento zero perfeito se para
0
todo ator polinomial V existe um algoritmo polinomial M tal que para toda
entrada x, as distribuies M (x) e hP, V i(x) so estatisticamente indistinguveis.


13.2.1

(P, V )

Pr
e

prova interativa. Dizemos que

Isomorsmo de grafo

H um problema de deciso importante relacionado a isomorsmo de grafos

Denio 13.7 (ISOMORFISMO-DE-GRAFO). Dados

(V2 , E2 )

G1 = (V1 , E1 ) e G2 =
G1 e G2


dois grafos com o mesmo nmero de vrtices, determinar se

so isomorfos.

O problema ISOMORFISMO-DE-GRAFO est em

NP

(o Exerccio 106

pede a demonstrao).

ISOMORFISMO-DE-GRAFO est em N P .

Ve
rs

Proposio 13.8.

No se sabe se ISOMORFISMO-DE-GRAFO est em

P.

Suponha que Peggy quer poder provar que detm um determinado segredo,

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, as seguintes operaes so realizadas na

fase de inicializao:
1. Um grafo

G1

gerado aleatoriamente.

2. O segredo codicado como uma permutao

3. O grafo

3 Denimos

G2 = ((V1 ), E1 )

calculado.

isomorsmo de grafos na Seo C.2.

dos vrtices de

G1 .

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 13.

204

4. Publica-se
A permutao

G1, G2

(mas no

PROVAS DE CONHECIMENTO ZERO

).

o segredo que entregue a Peggy.

Quando Peggy quiser

provar a Victor que conhece o segredo, ambos usam o seguinte protocolo:

2. Peggy Calcula

H = (G2 )

3. Victor escolhe um ndice

e envia

R Sn

k R {1, 2},

e o envia a Peggy; ele est pedindo

4. Peggy envia uma das duas permutaes:

5. Victor aplica a permutao a

se
se

k=1
k=2

Gk

em

H.

lim

Gk

n = |V1 |).

para Victor.

para que Peggy mostre a bijeo que transforma

(onde

in
ar

1. Peggy escolhe aleatoriamente uma permutao

H.

e verica se o resultado igual a

Se

for, sua sada um; seno zero.

O diagrama a seguir ilustra a situao em que Victor escolhe

G1 .

Peggy tem

no tem
nem ; ele tem os trs grafos e uma permutao , que transforma G1 em H .
P
V
e tem tambm

GO 1


G2 o

(gerados aleatoriamente). Victor

Pr
e

a permutao

Quando Victor escolhe

/H
G2 ,

receber apenas

G1 g

'

G2

mas ainda no ter

nem

Aps a execuo do protocolo, Victor no tem nada que no pudesse computar sozinho: ele tem
poderia ter gerado

e uma permutao

que transforma

Gb

em

(ele

aleatoriamente sem interagir com Peggy).

Ve
rs

Exemplo 13.10. Damos agora um exemplo, que ser til para a compreenso
do aspecto de conhecimento zero do protocolo.
Neste exemplo, o segredo e os grafos so pequenos, mas em exemplos prticos

os grafos devem evidentemente ser grandes. Se o segredo for pequeno, pode-se


usar alguma forma de

padding.

Suponha que o segredo seja

14523.

Para codic-lo, geramos aleatoriamente

um grafo com cinco vrtices:

a
e

notas de aula  verso 85 - Jernimo C. Pellegrini

13.2. CONHECIMENTO ZERO

14523,

uma permutao:

a
c

Os dois grafos so publicados, e a permutao

(1, 4, 5, 2, 3)

in
ar

O segredo,

205

dada a Peggy.

Embora tenhamos mostrados a representao visual dos grafos, na prtica apenas as listas de arestas seriam publicadas.

lim

Agora Peggy precisa provar para Victor que conhece o segredo. Ela escolhe
aleatoriamente uma permutao de cinco elementos:

(G2 ):

= (3, 2, 4, 5, 1),

e calcula

a 7 e, b 7 c, c 7 a, d 7 d, e 7 b
O grafo resultante,

H,

Pr
e

b
Peggy envia o grafo

para Victor.

o ndice

1.

Victor agora escolhe aleatoriamente um dos grafos,


Peggy precisa ento provar que

G1

isomorfo a

H.

e envia para Peggy

Ela envia ento o iso-

para Victor:

Ve
rs

morsmo

G1 ,

(5, 4, 2, 3, 1)

Victor verica que de fato, aplicando este isomorsmo em

G1

ele obtm

H,

aceita a prova.

A tanscrio da interao entre Peggy e victor mostrada a seguir.

P V :H
V P :1
P V :

O protocolo de conhecimento zero porque Victor no ganhou nada que no


pudesse produzir sozinho: ele no pode provar para mais ningum que

G2

G1

so isomorfos. Ele tem apenas a transcrio da interao com Peggy, mas

ele poderia facilmente t-la gerado sozinho: bastaria criar uma permutao dos
vrtices de

G1

e anotar

H, 1

e a permutao.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 13.

206

PROVAS DE CONHECIMENTO ZERO

Antes de enunciar o teorema 13.11, observamos o que o que zemos com


o segredo (a permutao

):

combinamos cada elemento da permutao com

outra, aleatria. Isso , de certa forma, equivalente operao de encriptao

one-time-pad.

in
ar

com o

A Construo 13.9 um sistema de prova interativa de conhecimento zero perfeito para a linguagem dos pares de grafos isomorfos.
Teorema 13.11.

Demonstrao. fcil vericar 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.
Se

G1

G2

H isomorfo a
G2 , Peggy pode enviar-lhe
escolhe G1 , no existe permutao

no so isomorfos, ento no existe

lim

Consistncia:

ambos. Quando Victor, aps receber

H,

escolhe

e Victor aceita a prova. Mas quando Victor

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

uma interao.

simulador

mostrado a seguir produz a transcrio de

Pr
e

no mximo 1/2.
Conhecimento zero:

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

-protocolos

Ve
rs

13.3

H uma classe especial de protocolos para prova de conhecimento zero onde o


vericador e a interao sempre da forma descrita a seguir.
Normalmente, o provador

tem uma chave pblica e um segredo, cujo

conhecimento ele deve provar para o vericador


1.

envia uma mensagem a

V,

2.

envia uma sequncia aleatrea

V.

comprometendo-se com um valor

de bits para

c;

(esta sequncia de bits

um desao);

3.

envia uma resposta

para

V,

que nalmente decide se aceita ou no.

A representao grca deste tipo de protocolo ilustrada na prxima gura.

notas de aula  verso 85 - Jernimo C. Pellegrini

13.4. PROTOCOLOS DE IDENTIFICAO

207

d
s
Denio 13.12 (-protocolo). Seja
zero para uma linguagem
palavras,

in
ar

protocolo de prova de conhecimento

onde cada elemento um par

uma relao entre dois conjuntos

B ).

(a, b)
um

(em outras

-protocolo

quando as mensagens trocadas entre os participantes so da forma descrita

lim

no texto (comprometimento, desao e resposta), e os seguintes requisitos so


satisfeitos.

Completude:
fato conhece

ii)

iii)

se P e V seguem o protocolo
(x, y) L), V sempre aceita.

honesto (ou seja,

de

Consistncia especial: sejam x A e duas transcries do protocolo em


0 0
0
que V aceita, (c, d, s) e (c, d , s ), com d 6= d (ou seja, duas transcries
com mesma entrada compartilhada x e mesma mensagem inicial c, mas
0
desaos d, d diferentes). Ento deve ser possvel calcular ecientemente
y B tal que (x, y) L.

Pr
e

i)

Conhecimento zero para vericador honesto:

O protocolo de conheci-

mento zero para vericador honesto. Como a nica coisa que o vericador
faz escolher o desao, um vericador honesto aquele que escolhe

distribuio uniforme.

d com


A propriedade de consistncia especial implica que um provador desonesto


ter probabilidade de sucesso menor ou igual a

1/|D|,

onde

o conjunto de

Ve
rs

possveis desaos.

A prxima seo traz alguns exemplos de protocolos de identicao que so

-protocolos.

13.4 Protocolos de Identicao


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

13.4.1

esquemas de identicao.

Esquema de Identicao de Feige-Fiat-Shamir

Construo 13.13 (Esquema de identicao de Feige-Fiat-Shamir). Fase de

inicializao:

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 13.

1. Uma autoridade

N = pq .

PROVAS DE CONHECIMENTO ZERO

escolhe dois primos grandes

Os fatores

1 s N 1,

2. Peggy escolhe aleatoriamente um inteiro

(mod N )

e publica

v.

p e q , e publica seu produto

no so divulgados.

s,

ambos executam o protocolo a

seguir.

r R {1, . . . , N 1},

x = r2 (mod N ),

calcula

para Victor.
2. Victor escolhe um bit

b R { 0, 1 }

y = rsb (mod N )

e envia

signica que o valor enviado ser

e envia

4. Victor aceita a identicao se

ou

e envia

para Peggy.

para Victor.

Note que isto

lim

3. Peggy calcula

v = s2

Esta ser a chave pblica de Peggy.

Para Peggy provar para Victor que possui

1. Peggy escolhe

calcula

in
ar

208

rs.

y 0 (mod N )

y 2 xv b (mod N ).

O esquema de identicao de Feige-Fiat-Shamir um sistema de prova interativa de conhecimento zero.


Teorema 13.14.

Demonstrao.

Mostramos as propriedades de completude, consistncia e co-

Completude:

Pr
e

nhecimento zero.

Victor verica 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

Consistncia:

possibilidades:

Victor escolhe o bit

mesmo escolheu
acerto

Ve
rs

0.

Neste caso, o atacante tem sucesso porque ele

e pode enviar

r(s0 ) = r

de volta. A probabilidade de

1.

Victor escolhe o bit

y = rs1

1.

suponha que um atacante tenta se passar por Peggy. H duas

1.

Neste caso, o atacante no tem como calcular

porque no tem o valor de

quadradas mdulo

(e no consegue calcular razes

ecientemente). O atacante somente pode fazer uma

escolha aleatrea, e a probabilidade de acerto desprezvel no tamanho


de

N.

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

vezes, a probabilidade de

sucesso do adversrio ser desprezvel.

Conhecimento Zero:

Corolrio 13.15.

protocolo.

esta parte da demonstrao pedida no Exerccio 108.

O protocolo de identicao de Fiat-Feige-Shamir um -

notas de aula  verso 85 - Jernimo C. Pellegrini

13.4. PROTOCOLOS DE IDENTIFICAO

Demonstrao.

O protocolo da forma necessria (comprometimento, desao,

Completude e conhecimento zero j foram demonstrados.

observar que tendo duas transcries com


determinar

13.4.2

x = r2 ,

mas com

r.

Protocolo de Schnorr

Outro protocolo de identicao o de Schnorr.


nhece o logaritmo discreto de um nmero

y,

Resta

b = 0 e b0 = 1 fcil


in
ar

resposta).

209

O provador mostra que co-

sem passar ao vericador qualquer

informao adicional a respeito do logaritmo.

Construo 13.16 (Protocolo de identicao de Schnorr). O provador P quer

z Zq .

Fase de inicializao:
Dois primos so

g,

tais que

q|p 1

um gerador do grupo de unidades

t,

Dene-se

so escolhidos aleatoriamente.

Zp ,

escolhido.

um parmetro de segurana.

v = g z (mod p),
P.

que igual a

g qz (mod p).

Esta a chave pblica de

Pr
e

lim

provar a V que conhece um segredo

O protocolo descrito a seguir.

a = gk

para V.

V: envia

r R { 1, . . . , 2t }

para P.

P: envia

c = k + zr (mod q)

V aceita se e somente se

P:

k R Zq .

Envia

para V.

a g c v r (mod p).

O protocolo de Schnorr de um sistema de prova interativa


de conhecimento zero perfeito para vericador honesto.

Ve
rs

Teorema 13.17.

Demonstrao.

Dividiremos a prova em trs partes  completude, consistncia

e conhecimento zero.

Completude:

trivial. Temos

e portanto a probabilidade de

Consistncia:

suponha que

a = gc vr
= g k+zr ur
= g k+zr (g z )r
= g k+zr g zr
= gk ,
V aceitar uma prova correta 1.
P no tenha z e tente convencer V

pode tentar a seguinte estratgia:

do contrrio.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 13.

210

k0 .

Fixe

2)

Tente adivinhar o valor de


0

a0 = g k v r

3)

Envie

3)

Receba

4)

Se

para

r (antes

de enviar a mensagem para

V.

r.

igual ao valor adivinhado, envie

riamente

em

A probabilidade de

para

V.

Zp .
t

ou, errando nesta tentativa, conseguir escolher

Zp :

Conhecimento zero:

lim

1
+ negl(|p|).
2t
x

Seno, escolha aleato-

conseguir sucesso desta forma em uma rodada do protocolo

a de adivinhar corretamente
o valor correto em

k0

V ).

in
ar

1)

PROVAS DE CONHECIMENTO ZERO

mostramos um simulador

e dos bits aleatreos usados por

S que, a partir de uma entrada


hP, V i(x).

produz uma transcrio de

Pr
e

S(v):
k R Zp
r R { 1, . . . , 2t }
c g c v r (mod p)
escreva g k ; r; c

V,

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 desao sempre com distribuio uniforme. Isto


signica que,
onde

em tempo polinomial, s poder produzir transcries de interaes




honesto (e escolhe seus bits uniformemente).

A demonstrao no implica que o protocolo de conhecimento zero para


vericador desonesto porque

2t

exponencialmente grande, e para simular uma

distribuio de desaos diferente de uniforme o simulador apresentado poderia

Ve
rs

levar tempo exponencial.

Corolrio 13.18.

O protocolo de Schnorr um -protocolo.

13.5 Transformando provas interativas em no


interativas
Um

-protocolo

pode ser transformado em um esquema de assinauras. A enti-

dade que assinar mensagens inclui em sua chave pblica uma funo de hash

h.

Construo 13.19 (Esquema Fiat-Shamir de assinaturas). Presume-se que


pblica uma funo de hash

h.

A entidade assinadora detm um segredo que

usa como o segredo de provador para um

-protocolo.

notas de aula  verso 85 - Jernimo C. Pellegrini

13.5. TRANSFORMANDO PROVAS INTERATIVAS EM NO INTERATIVAS211

m, construa (simulando) uma transcrio de


-protocolo. O comprometimento c gerado da forma usual. J o
h(c||m). Finalmente, produz a transcrio da interao (c, h(c||m), r).


Para assinar uma mensagem


desao

in
ar

interao do

A assinatura s possvel para quem tem o segredo, e portanto no deve


haver forma eciente de outra entidade produzir uma assinatura. Para conse-

guir uma prova de conhecimento do segredo, qualquer assinatura de mensagem


conhecida basta.

No entanto, o esquema (ou transformao) de Fiat-Shamir

para assinaturas s seguro no modelo do orculo aleatrio.

lim

Notas

Provas de conhecimento zero foram propostas por Sha Goldwasser, Silvio Micali e Charles Racko em 1985 [GMR85; GMR89].

comum denir sistemas de prova interativa com mquinas de Turing, onde


o que chamamos de portas de comunicao so tas 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 ta (e impe-se a

Pr
e

exigncia de que as tas aleatreas dos atores sejam diferentes).

A Figura a

Ve
rs

seguir mostra duas mquinas de Turing acopladas desta forma.

A diferena entre a abordagem usada neste texto e naquela com mquinas de


Turing no signicativa para a compreenso dos conceitos, e no interfere no
desenvolvimento das demonstraes.
Provas de conhecimento zero so discutidas no tutorial de Giovanni Di Cres-

cenzo [Cat+05] e extensivamente no livro de Oded Goldreich [Gol01].


A demonstrao do teorema 13.3 foi dada pela primeira vez por Adi Sha-

mir [Sha92]. Primeiro,

IP PSPACE

trivialmente: basta que se apresente um

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 13.

212

PROVAS DE CONHECIMENTO ZERO

simulador de prova interativa que funcione em espao polinomial. A recproca,

in
ar

PSPACE IP , conceitualmente simples, mas envolve diversos detalhes tcnicos. De maneira resumida, o problema QSAT est em PSPACE , portanto basta
mostrar que est tambm em IP . Uma demonstrao de que IP = PSPACE
tambm pode ser encontrada no livro de Michael Sipser [Sip07].

-protocolos

foram formalizados por Ronald Cramer em sua tese de douto-

rado [Cra96]. Em sua tese, Cramer diz que escolheu o nome

porque sig

lem-

bra zig-zag e ma abreviao de Merlin-Arthur, que o tipo de protocolo


onde os bits aleatreos usados pelo vericador so pblicos (em um

-protocolo

isto o mesmo que exigir que o vericador seja honesto).

Amos Fiat e Adi Shamir desenvolveram um mtodo para construir esquemas

de assinatura a partir de esquemas de identicao [FS87a] (e de um esquema

lim

de assinaturas deriva-se trivialmente um protocolo no-interativo de prova de

conhecimento zero). Este esquema no seguro sem orculos aleatrios, como


mostrado por Sha Goldwasser e Yael Kalai [GK03; Kal06]. Manuel Blum, paul
Feldman e Silvio Micali provaram que possvel transformar qualquer sistema
de prova interativa em um sistema de prova no-interativa de conhecimento
zero computacional, desde que se possa adicionar uma cadeia aleatria compartilhada entre provador e vericador [BFM88]. J Oded Goldreich e Yair Oren

Pr
e

mostram a impossibilidade de, sem a cadeia compartilhada e no modelo padro


(e portanto sem orculos aleatrios), obter provas no interativas para qualquer
prova interativa [GO94].

Exerccios

Ex. 105  Porque no modelo computacional apresentado neste Captulo dissemos que

devem ter geradores pseudoaleatreos

diferentes?

Ex. 106  Demonstre o Teorema 13.8.


Ex. 107  Escolha problemas em

NP

e construa para eles sistemas de prova

Ve
rs

interativa.

Ex. 108  Complete a prova de que o esquema de Feige-Fiat-Shamir de


conhecimento zero (nossa demonstrao do Teorema 13.14 omitiu esta parte).

Ex. 109  Prove o Corolrio 13.18.


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 denidas em Lgica.

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 14

lim

Protocolos Seguros com Dois


Participantes
(Este Captulo ainda est incompleto)

Pr
e

14.1 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

2. Alice encripta a mensagem


chave

k.

grandes e calcula

N = pq .

de alguma forma, mdulo

O resultado o texto cifrado

c.

A fatorao de

e com uma

deve permitir

decriptar a mensagem.

3. Alice envia

N, c

4. Bob escolhe

para Bob.

x R ZN

e envia

y = x2 (mod N )

para Alice.

y (que so x, x, y, y ). Ela
p e q . Alice ento escolhe uma das

5. Alice calcula as quatro razes quadradas de


pode faz-lo ecientemente porque tem

razes aleatoreamente e envia para Bob.

6. Se Bob recebeu uma das razes


decifrar
decifrar

c em m.
c.

diferentes de x

ele pode fatorar

Se recebeu uma das outras duas razes, no conseguir

213

notas de aula  verso 85 - Jernimo C. Pellegrini

214CAPTULO 14. PROTOCOLOS SEGUROS COM DOIS PARTICIPANTES

x foi escolhido
Alice no sabe qual dos quatro valores x.

Alice no sabe se Bob decifrou a mensagem ou no, porque


aleatoreamente por Bob, e

O protocolo obviamente funciona usando o RSA para encriptao, mas tamhiptese da fatorao de inteiros.

in
ar

bm funcionar com qualquer criptossistema assimtrico, desde que baseado na


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

lim

A ideia de transferncia inconsciente foi proposta em 1981 por Rabin [Rab81],


e por Even, Goldreich e Lempel [EGL82] em 1982.

A demonstrao de que

as duas variantes de transferncia inconsciente so equivalentes foi dada por


Claude Crpau em 1988 [Cr88].

O livro de Carmit Hazay e Yehuda Lindell [HL10] e o segundo volume do


livro de Goldreich [Gol04] tratam detalhadamente de protocolos criptogrcos

Ve
rs

Pr
e

com dois participantes.

Captulo 15

lim

Computao Segura com


Mltiplos Participantes

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Este Captulo traz uma exposio bsica de protocolos com muitos participantes
onde existe a necessidade de sigilo e no h conana mtua entre as partes.

Pi

conhece um valor

xi , e o objetivo calcular uma funo

Pr
e

Cada participante

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.

Estratgia de corrupo:

h dois modelos para a estratgia de corrupo

usada pelo adversrio. Um deles o modelo esttico, onde h um conjunto

Ve
rs

xo 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 especicao 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 po-

linomial ou pode-se presumir que ele tem poder computacional ilimitado.

Comunicao:

podemos usar o

cenrio criptogrco,

em que presumimos

que toda a comunicao entre os participantes pblica, e que consequentemente o sigilo deve ser garantido por mecanismos criptogrcos, ou o
215

notas de aula  verso 85 - Jernimo C. Pellegrini

216CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES

cenrio de teoria da informao1 , onde pode-se contar com canais seguros


para a comunicao entre os participantes.
comum tambm diferenciar protocolos para duas partes de protocolos para

in
ar

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.

15.1 Sobre encriptao homomrca

Boa parte deste texto usa criptossistemas parcialmente homomrcos, porque

lim

at o momento no so conhecidos criptossistemas completamente homomrcos


que permitam a realizao de longos clculos de maneira eciente e, de maneira
geral, satisfatria.

provvel, no entanto, que esta situao mude em pouco

tempo.

Pr
e

15.2 Um protocolo para participantes semi-honestos


No protocolo descrito a seguir os participantes so semi-honestos e tem poder
ilimitado.

Os participantes computam o valor de uma funo


sobre um corpo nito

Fq ,

sem revelar as variveis

xi .

f (x0 , x1 , . . .)

denida

Escolhemos realizar as

operaes em um corpo nito porque no poderamos representar nmeros reais


em computadores sem preda de preciso e, mais grave, sem alterar sua distribuio.

Para ilustrar o funcionamento do protocolo presumimos que h tres parti-

P 1 , P2

P3 ,

cipantes,

e cada um deles conhece uma das variveis

x1 , x2 , x3 .

Ve
rs

Tambm presumimos que a funo a ser calculada

f (x1 , x2 , x3 ) = x1 x2 + x3

(mod q).

A Figura a seguir mostra a funo como um circuito envolvendo somas e multiplicaes. A varivel

x1

x4

o valor intermedirio, igual a

x2

x1 x2 .

x4

x3

f (x1 , x2 , x3 )

O protocolo funciona usando compartilhamento de segredos. Cada participante

Pi

distribui partilhas de seu valor

enviada de

Pi

para

Pj

por

xji .

1 Information-theoretic scenario ,

xi

para os outros.

em Ingls.

Denotamos apartilha

notas de aula  verso 85 - Jernimo C. Pellegrini

15.2. UM PROTOCOLO PARA PARTICIPANTES SEMI-HONESTOS

217

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.

in
ar

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

as partilhas so

lim

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:

y = 0.

S precisamos ento somar as partilhas, como mostramos a

Pr
e

basta tomar
seguir.

Suponha que cada


e

S0.

Pi

tenha suas partilhas

f (i)

g(i),

para dois segredos

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 .

h(x)

Podemos somar os dois polinmios

= f (x) + g(x)

(a + b) + (a1 + b1 )x1 + (a2 + b2 )x2 + + (ak + bk )xk

Ve
rs

Assim, cada participante

onde

h(i)

a partilha de

Multiplicao

Pi

Pi

h(i) = f (i) + g(i).


para

S + S0.

Temos dois segredos

Pi tem partilhas a(i)


segredo M = AB , sem que

pante

calcula sua partilha da sada:

b(i).

compartilhados, e cada partici-

Queremos computar as partilhas

os participantes tenham acesso a

no ser com o qurum necessrio). Se tomarmos

x=0

m(i)
M

ou

do
(a

no enunciado do Teo-

rema 15.1, notamos que as partilhas que queremos calcular so

m(i) = Ab(i).

A, B

notas de aula  verso 85 - Jernimo C. Pellegrini

218CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES

Cada participante calcula

c(i) = a(i)b(i)
c(i)

no a partilha que queremos, mas podemos obt-la a partir dele.

Pi

in
ar

O valor

Aps comput-lo,

cria um novo polinmio aleatreo e compartilha

os outros participantes, enviando a cada


Cada participante

Pj

Pj

o valor

ci (j)2 .

ento calcula

m(j) =

ri ci (j),

ri

o vetor de recombinao .

Teorema 15.2.

correto, ou seja,

com

O clculo das partilhas de multiplicao descrito no texto est


X

lim

onde

c(i)

m(i)ri = AB.

Pr
e

15.3 Segurana

Observamos como a execuo de um protocolo na prtica:

h participan-

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

Incluimos conceitualmente o adversrio

(que externo ao protocolo) no

ambiente. O adversrio pode corromper participantes. Quando

tem acesso a todo o histrico de mensagens de

Pi .

Pi corrompido,

alm de poder controlar

Denotamos um participante corromido por

as aes de

Pi ,

Pi

De maneira simplicada, ento, construmos dois modelos:


Um mundo real, com o conjunto de participantes

Ve
rs

protocolo

em um ambiente

Pi

executando um

Z;

Um mundo ideal onde trocamos os participantes executando


funcionalidade incorrompvel

por uma

F.

Queremos poder mostrar que participantes honestos executando o proto-

colo no mundo real obtero o mesmo resultado que esta funcionalidade perfeita
em um mundo ideal  desde que haja participantes honestos em quantidade
suciente.

Os dois modelos de mundo que usamos so descritos a seguir.

No mundo real, h diversos participantes


o protocolo, e um ambiente

Z,

Pi ,

que esperamos que sigam

que inclui um adversrio.

2 Para facilitar a leitura, pode-se ler ci (j) como  c, de i para j .


3 Veja a descrio do polinmio interpolador na Seo 12.1.1, pgina

187.

notas de aula  verso 85 - Jernimo C. Pellegrini

15.3. SEGURANA

219

P1

A
P3

in
ar

P2

No mundo ideal, ao invs de participantes honestos seguindo um pro-

F,

tocolo, modelamos uma funcionalidade ideal

que incorrompvel e

realizar a computao necessria para que o protocolo funcione.


bm inclumos um simulador

S,

Tam-

que simula a atuao de participantes

desonestos. Como ilustrado na prxima gura, os participantes no inte-

5
cham-los de participantes vazios ) ou entre

4 entre

(poderamos

lim

ragem entre si  eles repassam suas mensagens

S.

P1
P2

Pr
e

P3

Diremos que um protocolo implementa seguramente a funcionalidade ideal

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

que substitua

de forma que o mundo simulado por

indistinguvel pelo ambiente do mundo real com

A.

i)

o ambiente envia aos participantes honestos suas entradas;


o adversrio envia entradas aos participantes desonestos;

Ve
rs

ii)

O protocolo executado em rodadas. Em cada rodada

iii)

os participantes devolvem seus resultados.

Quando um participante

Pi

F imediatamente
Pi , e envia todo o histrico de mensagens
S possa a partir de ento simular para Z o

se corrompe, a funcionalidade

deixa de ouvir as portas honestas de


de

Pi

para

S,

de maneira que

comportamento de

Pi .

Depois do trmino da execuo, a sada de

um nico bit, que representa

sua tentativa de adivinhar se a execuo se deu no mundo ideal ou no real.


Dizemos que um protocolo

de segurana

4 H

k,

autores que denem o modelo sem os participantes, como se as mensagens fossem

trocadas diretamente entre

5 Ou

seguro se provarmos que, dado um parmetro


S (que um algoritmo polinomial) tal que

existe um simulador

Z.

dummy parties em Ingls.

notas de aula  verso 85 - Jernimo C. Pellegrini

220CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES

para todo ambiente

z , a probabilidade de Z distinguir o mundo


k.
ideal F de forma a garantir, no mundo ideal,

e toda entrada

ideal do real (como modelados) desprezvel em


Projetamos a funcionalidade
ramos, a execuo abortada.

in
ar

que se o protocolo no for seguido de maneira a gerar os resultados que espeAssim, 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.

Dizemos que h um adversrio, entidade abstrata, que corrompe participantes.

Esta apenas uma abstrao que torna a demonstrao mais

lim

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 especicao do protocolo.

A demonstrao nos

Pr
e

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.

Di-

zemos 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
mundo real e mundo ideal, embora ambos sejam claramente idealiza-

dos. A diferena entre ambos est na presena deste intermediador.

Ve
rs

15.4 Componibilidade Universal


15.5 Notas
O problema de computao segura com mltiplos participantes foi proposto
inicialmente por Andrew Yao em 1982 [Yao82]. O survey organizado por Dario Catalano e outros [Cat+05] descreve os resultados na rea at 2005.

Os

fundamentos so expostos de modo minucioso no segundo volume do livro de


Goldreich [Gol04]. O conceito de componibilidade universal foi introduzido por
Ran Canetti [Can00].

Uma exposio a respeito de protocolos componveis

dada por Yehuda Lindell no livro que teve origem em sua tese [Lin03].
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 [Bog+09].
[Dam+08] [Yao86]

notas de aula  verso 85 - Jernimo C. Pellegrini

15.6. EXERCCIOS

221

15.6 Exerccios
Ex. 111  Prove o Teorema 15.1.

in
ar

Ex. 112  Prove o Teorema 15.2.


Ex. 113  A Seo 15.2 mostra como calcular somas e multiplicaes de par-

tilhas de Shamir. Tente encontrar mtodos, to ecientes quanto possvel, para


computar outras operaes: potncias, raizes, e logaritmos, por exemplo.

Ex. 114  Tente trocar o esquema de compartilhamento de segredos subja-

cente ao protocolo da Seo 15.2 por outro (Ito-Nishizeki-Saito, Pedersen ou


Schoenmakers). Como voc codicaria as entradas da funo? Consegue reali-

Ve
rs

Pr
e

lim

zar adio e multiplicao? Como?

notas de aula  verso 85 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

222CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES

lim

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Parte III

Ve
rs

Pr
e

Outros Tpicos

223

Ve
rs

Pr
e

lim

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

notas de aula  verso 85 - Jernimo C. Pellegrini

Pr
e

lim

in
ar

225

Esta parte do texto contm introdues a tpicos adicionais, e h nela uma


variao maior tanto em diculdade como nos pr-requisitos, quando comparada
com as partes precedentes. Tambm h aqui uma considervel diferena entre

Ve
rs

os estilos de cada Captulo.

notas de aula  verso 85 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

226

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 16

lim

Curvas Elpticas
(Este Captulo um esboo)

Este Captulo examina o uso de curvas elpticas em Criptograa. Para denir


curvas elpticas usaremos o conceito de curva algbrica plana.

Denio 16.1 (Curva Algbrica Plana). Uma curva algbrica plana o lugar

Pr
e

geomtrico das solues para uma equao polinomial de duas variveis.


Em outras palavras, uma curva algbrica plana o conjunto de pontos
que satisfazem

f (x, y) = 0,

sendo

(x, y)

um polinmio.

Exemplos familiar de curva algbricas so circunferncia, denida pela equao

(x a)2 + (y b)2 = r2 ,

onde

a, b e r so parmetros descrevendo o centro e


y = ax + b e o ponto, denido pela equao

o raio; a reta, denida 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 denidas por certas equaes de grau trs .

Denio 16.2 (Curva elptica). Seja

um corpo. Uma curva elptica sobre

uma curva algbrica denida por uma equao da forma

Ve
rs

y 2 + Axy + By = Cx3 + Dx2 + Ex + F,

onde

A, B, . . . , F

so constantes pertencentes a

Quando o corpo

F.

tem caracterstica diferente de dois e trs, podemos usar

a seguinte troca de variveis:

x0
y0

1 Curvas

x 3A2 12C
36
y 3Ax A3 + 4AC B

216
24

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.

227

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 16.

228

CURVAS ELPTICAS

A0

B0

so constantes pertencentes a

F.

Pr
e

onde

lim

y 02 = x03 + A0 x + B 0 ,

As guras a seguir ilustram as curvas elpticas

sobre o corpo dos reais.

Ve
rs

in
ar

obtendo a forma simplicada:

y 2 = x3 2x+2 e y 2 = x3 2x

notas de aula  verso 85 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

229

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 16.

230

CURVAS ELPTICAS

Denio 16.3 (Discriminante de um polinmio). O discriminante de um po-

an xn + an1 xn1 + + a0
a2n2
n

com razes

r1 , r2 , . . . rn

(ri rj )2 .

i<j

in
ar

linmio

O discriminante denido usando as razes do polinmio, mas possvel


tambm descrev-lo em funo dos coecientes.

Desta forma o discriminante

mais til, porque permite inferir fatos sobre as razes sem a necessidade de
calcul-las.

ax2 + bx + c, o discriminante b2 4ac. Para o


ax + bx2 + cx + d, o discriminante b2 c2 4ac3

Para a equao de grau dois

lim

polinmio geral de grau trs

4b3 d 27a2 d2 + 18abcd. As equaes de terceiro grau que nos interessam


3
3
2
da forma x + ax + b, com o discriminante igual a 4a 27b .
Normalmente denotamos o discriminante de um polinmio pode .

so

Seja p um polinmio de grau n. O discriminante de p


zero se e somente se p tem pelo menos duas razes iguais.
Proposio 16.4.

Pr
e

n
Demonstrao.
zero, o discriminante ser zero se e somente
Q Como a no
2
o produtrio
(r

r
)
for
zero. Este produtrio por sua vez ser zero
j
i<j i

se
se

e somente se um dos fatores for igual a zero. Isto o mesmo que dizer que h
duas razes

ri

rj

ri rj = 0,

tais que

ou

ri = rj .

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.

A curva a seguir

Nas prximas Sees usaremos tangentes e cordas para construir grupos com

Ve
rs

curvas elpticas  por isso excluiremos as curvas com discriminante zero.

16.1 Operao de grupo para curvas elpticas


Suponha que

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

ser um ponto que adicionaremos a

F 2,

determi-

nando que qualquer reta vertical o encontra no innito (nos dois sentidos!) .
Para somar dois pontos

Denotaremos esta operao por

2 H

Q, traaremos uma reta passando por ambos.


P Q. Esta reta interceptar um outro ponto R

uma maneira mais elegante e menos articial de adicionar pontos no innito a um

espao vetorial, mas sua descrio no necessria neste texto.

Pode-se denir um espao

projetivo para quaisquer dimenses, contendo um ponto no innito para cada direo que
uma reta possa ter. O leitor interessado poder consultar a literatura sobre espaos projetivos
(veja as notas ao nal do Captulo).

notas de aula  verso 85 - Jernimo C. Pellegrini

16.1. OPERAO DE GRUPO PARA CURVAS ELPTICAS

231

P Q = R, e denimos a operao de forma que P +Q+R = O


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.

da curva (ou seja,

in
ar

(e portanto

Aps denir o clculo da soma, dobro e simtrico, podemos realizar qualquer


soma ou multiplicao com pontos.

Simtrico

O elemento simtrico de um ponto


e portanto

Se um ponto
mesmo, portanto

a sua reexo

P tem coordenada y
P = P .

P e Q diferentes,
P + Q R.

Para somarmos dois pontos

P + Q + R = O,

e a soma

igual a zero, sua reexo no eixo

Soma de pontos

Sejam

Q no eixo x: P +Q+O = O,

Pr
e

16.1.2

P = Q.

lim

16.1.1

primeiro determinamos

P = (xp , yp ) e Q = (xq , yq ) diferentes.


= M x + K com inclinao M :

ele

tal que

Calculamos a reta passando

por ambos,y

Ve
rs

M=

yp = yq
xp xq

K = yp M xp

Vericamos 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

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

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 16.

232

Igualamos os coecientes de

x2

CURVAS ELPTICAS

em ambos os lados:

e portanto

xr = M 2 xp xq
yr = M xr + K.

16.1.3

Dobrando um ponto

Para dobrar um ponto

Q, observamos a reta tangente curva em Q e vericamos


P . Denimos P + Q + Q = O,

que ela interceptar a curva em mais um ponto

2Q = P .

Quando

P = Q

lim

e portanto

in
ar

M 2 = xp + x1 + xr ,

temos efetivamente um nico ponto que no determina

uma reta nica Para obter uma reta, usamos a tangente da curva em

P,

conseguimos a inclinao da reta tangente por derivao implcita: se a curva

y 2 = f (x),

ento

Pr
e

elptica

M=

f 0 (x)
dy
=
.
dx
2y

Usando a equao da curva e substituindo

M=

M,

obtemos

3x2p + A
.
2yp

j podemos determinar as coordenadas de

R:

xr = M 2 2xp

Ve
rs

Tendo

f (x) = x3 + Ax + B ,

yr = yp + M (xp xq )

2P = R = (xr , yr ).
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 innito O.

Finalmente,

Vimos antes que se um ponto

16.2 Ordem do grupo


O seguinte Teorema d uma estimativa para o nmero de pontos em uma curva
elptica sobre um corpo nito. Denotamos o nmero de pontos em uma curva

sobre um corpo

Fq

por

#E(Fq ).

notas de aula  verso 85 - Jernimo C. Pellegrini

16.3. CORPOS FINITOS USADOS EM CRIPTOGRAFIA

Teorema 16.5.

233

Seja E uma curva elptica sobre um corpo Fq . Ento

q + 1 2 q #E(F q) q + 1 + 2 q.

Fq usado na construo do grupo de pontos


q = 2512 , onmero de pontos na curva E(Fq ) car entre 2512 + 1
2512 + 1 + 2 2512 , ou seja, entre 2512 + 1 2256 e 2512 + 1 + 2256 .

Por exemplo, se o corpo nito

2 2512

in
ar

tem ordem

16.3 Corpos nitos usados em Criptograa


Em Criptograa no podemos usar

para construir curvas elpticas  primeiro

porque no podemos represent-los de maneira exata em computadores, e tambm porque so innitas: uma curva elptica sobre

y =

p
f (x),
valores de x.

f (x)

das para innitos

sendo

a unio de duas outras

um polinmio  e ambas so deni-

Curvas sobre

lim

curvas,

seriam uma alternativa, mas

tambm possuem innitos pontos, e por isso trabalhamos apenas com corpos
nitos. Esta Seo descreve os dois corpos normalmente usados em Criptograa
de curvas elpticas 

com

primo, e

GF2m

(corpos de Galois de ordem

Fp

Quando o corpo usado

Fp

escrita na forma

y2

2m ).

Pr
e

16.3.1

Fp ,

(com

primo), a equao de uma curva elptica

(mod p) = x3 + Ax + B

(mod p),

e novamente exigimos o determinante diferente de zero:

4A3 + 27B 2

(mod p) 6= 0.

O grco desta curva no contnuo e no podemos us-lo para desenvolver

as frmulas que desenvolvemos quado usamos os reais (por exemplo, no temos


como denir a tangente em um ponto isolado no plano). usamos, no entanto,
as mesmas frmulas para aritmtica de pontos que denimos para

Ve
rs

tomando o cuidado de efetuar todas as computaes mdulo


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)

p.

R,

apenas

Para somar

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 16.

234

16.3.2

CURVAS ELPTICAS

GF2m

Retornamos primeira denio 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 simplicada:

y 2 + xy = x3 + Ax2 + B,
com

B 6= 0,

onde

A0

B0

so constantes pertencentes a

F.

No trataremos deste tipo de curva neste texto.

Pr
e

16.4 Criptossistemas e protocolos

Nesta Seo so discutidos alguns criptossistemas e protocolos onde os grupos


usados so de curvas elpticas.

16.4.1

Logaritmo discreto

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 denido um grupo usando curvas elpticas, dene-se naturalmente

Ve
rs

neste grupo a operao de exponenciao (com expoente inteiro), e tambm o


logaritmo discreto.

Denio 16.6 (Logaritmo discreto em curvas elpticas). Dados uma curva

F com ordem q ; um ponto P E com ordem


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.

elptica

n;

sobre um corpo nito

um ponto

Denio 16.7 (Problema Die-Hellman para curvas elpticas). Dadas uma


curva elptica

ordem

n;

F com
A = aP, B = bP hP i,

sobre um corpo nito

dois pontos

ordem

q;

um ponto

P E

com

o problema Die-Hellman computacional para curvas elpticas (ECCDH)


consiste em encontrar o ponto

C = abP ;

notas de aula  verso 85 - Jernimo C. Pellegrini

16.4. CRIPTOSSISTEMAS E PROTOCOLOS

235

C = cP hP i, o problema Die-Hellman decisional


C = abP (ou, de forma
c ab (mod n).

dado um outro ponto

para curvas elpticas consiste em determinar se


equivalente, se

in
ar

As prximas sees descrevem alguns criptossistemas e protocolos que usam


este problema como fundamento.

16.4.2

Die-Hellman

O protocolo de Die e Hellman para estabelecimento de chaves mostrado a


seguir, usando curvas elpticas.

lim

Construo 16.8 (Protocolo de Die e Hellman para estabelecimento de chaves). Dois participantes, A e B , estabelecem uma chave simtrica da seguinte
maneira:

escolhe

envia

escolhe

uma curva elptica

x R Zq

recebe

H2

para

para

Fq

e um ponto

H1 = xG

e calcula o ponto

B envia o ponto H2
KB = yH1 .
A

sobre um corpo nito

e calcula o ponto

(E, q, G, H1 )
y R Zq

Pr
e

A determina
G.

H2 = yG.

e determina a chave secreta, que o ponto

e determina a chave secreta, que o ponto

KA = xH2 .

16.4.3

Elgamal

Ve
rs

Construo 16.9 (Criptossistema Elgamal).

Gen(1n ): A determina uma curva elptica E sobre um


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.

corpo nito

Fq

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.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 16.

236

CURVAS ELPTICAS

Dec: dada a chave sk = hE, q, G, xi, e o texto cifrado c = hC, C2 i, a funo


Dec retorna
C2 xC1 .

16.4.4

in
ar

Outros criptossistemas e protocolos

H diversos outras construes criptogrcas 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

um criptossistema de chaves pblicas descrito por Fujisaki e

Okamoto; o ECMQV

Elliptic Curve Menezes-Qu-Vanstone,

um esquema de

lim

Curve scheme),

acordo de chaves de Menezes, Qu e Vanstone.

16.5 Emparelhamentos bilineares

Certos grupos construdos sobre pontos de curvas elpticas podem ser usados
na construo de

emparelhamentos bilineares;

h diversos problemas difceis

Pr
e

relacionados a estes emparelhamentos que so explorados em construes criptogrcas. Na Criptograa baseada em identidades (abordada no Captulo 18),
por exemplo, h uma abundncia de construes baseadas neste conceito. Emparelhamentos bilineares so discutidos no Captulo 19.

16.6 Fatorao de Inteiros

Curvas elpticas tambm podem ser usadas para fatorar nmeros inteiros, uma

aplicao tambm relevante para a Criptograa.

Ve
rs

Notas

O uso de grupos de curvas elpticas em Criptograa foi proposto independentemente em 1986-1987 por Neil Koblitz [Kob87] e Victor Miller [Mil86].
Diversos livros discutem o uso de curvas elpticas em Criptograa [Han10]

[Was08] [BSS99] [Coh05]. Uma excelente introduo matemtica aritmtica de


curvas elpticas sem meno Criptograa dada por Silverman e Tate [ST92].
O espao projetivo descrito em Portugus no livro de Gomes e Velho [GV08],

no Captulo dois. Em Ingls h uma abordagem mais profunda no Captulo trs


do livro de Kostrikin [KM89]. A insero do ponto no innito a um espao
chamada de

compacticao

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 innito no qual todas as re-

tas se encontram, obtm-se um espao compacto chamado de esfera de Riemann.


Veja por exemplo a introduo Topologia e Anlise de Simmons [Sim03].

notas de aula  verso 85 - Jernimo C. Pellegrini

16.6. FATORAO DE INTEIROS

237

Exerccios
Ex. 115  Prove as seguintes propriedades para a operao de grupo que
a)

P =P +O=O+P

b)

P + (P ) = O

c)

P + (Q + R) = (P + Q) + RO

d)

P +Q=Q+P

Ex. 116  Ao denirmos curvas elpticas sobre

Zp ,

in
ar

denimos para curvas elpticas sobre os reais:

no mostramos que as

operaes usadas esto bem denidas. Prove que os mtodos para somar, dobrar
e calcular simtrico de pontos de curvas elpticas em

Zp

funcionam (isto , que

Ve
rs

Pr
e

lim

o resultado tambm pertencer mesma curva elptica).

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 16.

CURVAS ELPTICAS

Ve
rs

Pr
e

lim

in
ar

238

Captulo 17

17.1 Fatorao

lim

Primalidade e Fatorao

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Esta Seo comea com a descrio de dois mtodos simples para fatorao: O
mtodo

p1

e o mtodo

de Pollard.

Estes mtodos so ecientes apenas

Pr
e

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.

17.1.1

Crivo de Eratstenes e divises sucessivas

O Crivo de Eratstenes um mtodo para listar os nmeros primos em um


determinado intervalo.

Inicialmente listamos todos os nmeros entre

(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

Ve
rs

posies). Reiniciamos e tomamos o primeiro elemento no-nulo do vetor,

3,

eliminamos seus mltiplos. Paramos quando tivermos eliminado os mltiplos de


todos os

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
239

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 17.

240

PRIMALIDADE E FATORAO

retorne v
v

Os valores diferentes de zero no vetor

primos entre

retornado pelo algoritmo so os

n.

in
ar

notvel que o crivo de Eratstenes no necessita de divises ou multiplicaes, que em um computador moderno, so operaes caras (note que
ser implementado como

i + i,

e o valor de

tal que

i2 < n

priori)

2i

pode

pode ser calculado a

O mtodo das divises sucessivas para fatorao bastante simples, embora


ineciente. Tentamos dividir
maiores que

por dois, e em seguida por todos os mpares no

n.

Pr
e

lim

divisao_sucessiva(n):
se 2 | n
retorne 2
k3

enquanto k b nc:
se k | n
retorne k
senao
k k+2
retorne n
Quando um fator de
retorna o prprio

n encontrado ele retornado; se n primo o algoritmo

n.

A complexidade de tempo, tanto do crivo de Eratstenes como do mtodo


das divises sucessivas, claramente

17.1.2
n.

Mtodo p 1 de Pollard

n = pq

peq

com

Sendo
de

primos, o mtodo

Ve
rs

Escrevemos as fatoraes de

com

O( n).

al < aj .

onde

p1

p1 de Pollard determina a fatorao

q1

como

p1

l
1 2
= a
1 a2 al ,

q1

= a11 a22 al l aj j ,

a1 = 2, a2 = 3, a4 = 5,

ai

i-simo

primo. (Sem perda

de generalidade, presumimos que o maior primo presente na fatorao de

al

menor que o maior primo na fatorao de


Notamos que

p1 < 3

log3 (n)

p 1 < 2log2 (n) ,

e portanto

, e de maneira geral

p1 <

q 1, aj .)
1 < log2 (n).

loga (n)
ai i .

Similarmente,

Assim, escolhemos o

nmero

Por exemplo, para

B=

k
Y

bn/ log(ai )c

ai

i=1

k = 1, B = 2n ;

para

p 1,

k = 3, B = (2n )(3n )(5n/2 ).

notas de aula  verso 85 - Jernimo C. Pellegrini

17.1. FATORAO

241

Agora, para algum valor de

k , (p 1) | B :

poderemos dividir

porque

i i

in
ar

b1 b2 bl k
B
,
= 1 1 22
l
p1
a1 a2 a
k
i, bastando somente que l k .
p 1 e q 1 notamos que al < aj , deve haver algum
B | (p 1) mas B - (q 1). Esta a escolha que admitiremos
para todo

Como na fatorao de

para o qual

para

B.

x em Zn , e calculamos a = xB (mod p).


B = k(p 1) e

Escolhemos aleatoreamente
podemos escrever

xB

(mod p)

= xk(p1)
h
= x(p1)
=

(q 1) - B ,

k0

tal que
0

ik

(mod p)

B = k 0 (q 1),

(mod q) = xk (q1)

se e somente se

(mod q) = 1.

p|(a 1) e q - (a 1) se e somente se xB (mod q) 6= 1.


(q 1) - B , podemos escrever B = k 0 (q 1) + r e

Assim, teremos
Como

1.

ou seja, no existe

@k 0 , xB

(mod p)

xB

(mod q)

Pr
e

Mas

(mod p)

Como

lim

(p 1)|B ,

= xk (q1)+r (mod q)
h
ik 0
= x(q1) (mod q) xr
= x

(mod q)

(mod q).

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 signica 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:

Ve
rs

Mas

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 ecaz, ento, quando n = (p 1)k , e p 1 tem fatores primos
pequenos.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 17.

242

PRIMALIDADE E FATORAO

Denio 17.1 (Primo forte). Um nmero primo p um primo


tambm primo.

usamos

B = 280.

n = 71729254613.

a = xB
Temos
de

n.

Sorteamos

Ento

x = 53998655672

in
ar

Exemplo 17.2. Suponha

forte se (p1)/2


(mod n) = 20513619516.

b = mdc (a 1, n) = 19.

Como

no igual a

E realmente,

nem a

n,

deve ser fator

19 3775223927 = 71729254613.

lim

Exemplo 17.3. Tomamos o nmero composto 2987937292328279

92988391

Sorteamos

x = 1210314091541427 B = 50

a = xB

= 32132369

temos

(mod n) = 1720706286036580

b = mdc (a 1, n) = 1.
fatorar

x = 1, o algoritmo retornar  o que


n (mas no signica que n seja primo!)

Pr
e

Como

signica que no foi possvel

A complexidade de tempo do algoritmo p 1 de Pollard


O(B log(B) log2 n + log3 n).

Teorema 17.4.

17.1.3

Mtodo de Pollard
x0 ,

calculamos a seguinte sequncia, denida recursivamente:

Comeando com

Ve
rs

Por exemplo, com

n = 2387

xi = f (xi1 )
e

x0 = 2,

(mod n)

a sequncia

x0

x1

52

x2

320

x3

2149

x4

1746

x5

320

x6

2149

x7

1746

x8

320

x9
x10

= 2149
= 1746

notas de aula  verso 85 - Jernimo C. Pellegrini

17.1. FATORAO

Como

com

xi f (xi1 ) (mod n),

y1

y2

y3

y4

y5

y6

y7

y8

y9

y10

13,

yi f (yi1 ) (mod k).

Como s h

deve necessariamente haver

Quando isso acontece a sequncia de

yi

para os

forma um ciclo.

Pr
e

yi = yj .

y0

ento

classes de congruncias mdulo


quais

k = 11:

in
ar

yi = xi mod k ,

lim

Agora faremos

243

yi+1

yi

yj

Ve
rs

yj1

y2

y1

y0

yi = yj ento xi xj (mod k), e 13 | (xi xj ). Se mdc (n, xi xj )


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

divisor de

ou seja,

yi+q = yj+t .

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 17.

244

PRIMALIDADE E FATORAO

Podemos observar as diferenas

x2n 1 xj ,
Por exemplo,

x1

x3

x3

x6

x3

x7

x7

x12

x7

x13

x7

x14

x7

x15

in
ar

2n+1 2n1 j 2n+1 1.

lim

com

Estas diferenas crescem com o tempo.

17.1.4

F Crivo quadrtico

O Lema a seguir serve de fundamento para dois algoritmos de fatorao:

de Dixon).

Lema 17.5.

Pr
e

algoritmo de Dixon e o crivo quadrtico (que uma modicao do algoritmo

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.


e

Como

x2 y 2 0 (mod n),

Demonstrao.

temos

(x + y)(x y) 0 (mod n),

n|(x y)(x + y).

n - (x y) e n - (x + y), porque x 6 y (mod n).


mdc (n, x y) e mdc (n, x + y) devem ser fatores de n.

Ve
rs

Mas

Suponha agora que queiramos fatorar um nmero

n.

Isso implica que

O algoritmo de Dixon

usa um conjunto de primos pequenos, que chamaremos de

B.

Se

o conjunto

dos primos ento

B para algum M .
(15000) = 1754.

dene

B = {p P : p < M }
Como exemplo, se

M = 15000

Escolhemos aleatoreamente vrios nmeros inteiros

cada

ri

teramos

|B| =

e calculamos, para

ri

g(ri ) = r2

(mod n).

Em seguida fazemos um esforo razovel para fatorar cada


sucessiva pelos elementos de
do que

|B|,

paramos.

B.

g(ri ), usando diviso


g(ri ) fatorados

Quando tivermos mais nmeros

notas de aula  verso 85 - Jernimo C. Pellegrini

17.1. FATORAO
Cada

g(ri )

245

pode evidentemente ser escrito como produto de primos:

g(ri ) = pa1 1 pas 2 pa|B| .


g(ri )

como um vetor

vi

com os expoentes

vi = (a1 , a2 , . . . , a|B| ).
Por exemplo, se

g(r0 ) = 600, g(r1 ) = 18

de

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

g(ri )

por

g(rj )

as

lim

g(r0 )

Observamos que para multiplicar

g(ri ):

g(r2 ) = 672, g(r3 ) = 1500

fatoraes so:

Usando o exemplo anterior,

aj

in
ar

Representamos cada

basta que somemos

vi

com

vj .

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,

, e

alm de em Zn )

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

com

bi = 1

se

ai

w(r) = (b1 , b2 , . . . , b|B| ),

mpar, e

em caso contrrio.

teramos

w0

(1, 1, 0)

w1

(1, 0, 0)

w2

(0, 1, 0)

w3

(0, 1, 1)

Continuando o exemplo,

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 17.

246

PRIMALIDADE E FATORAO

Usamos ento eliminao Gaussiana mdulo dois para encontrar um subcon-

rs

que seja linearmente dependente:

1
1
A=
0
0

1
0
1
1

0
0

0
1

L0 = L1 + L2 , e portanto podemos
{v0 + v1 + v2 } h somente coecientes pares.
Encontramos

(3, 1, 2)

(1, 2, 0)

(0, 3, 2)

Para este exemplo, ento,

0, 1, 2.

Em

(4, 6, 4)

600 18 675 24 36 54
De maneira geral, teremos agora

usar os ndices

lim

v0 + v1 + v2

in
ar

junto dos

(mod n).

Pr
e

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.

17.1.5

F Curvas elpticas

17.1.6

F Crivo sobre corpo numrico algbrico

Notas

p1

Ve
rs

O algoritmo

de Pollard foi publicado em 1974 [Pol74]. O algoritmo

de

Pollard surgiu em 1975 [Pol75].


O livro de Victor Shoup [Sho05] contm uma grande quantidade de algorit-

mos para problemas em Teoria de Nmeros e lgebra; os livros de Hostein,


Pipher e Silverman [HPS08] e o de Baldoni e outros [BCC09] tambm abordam
o assunto, e Cohen [Coh10] trata extensivamente de fatorao.
O livro de Crandall e Pomerance trata extensivamente de algoritmos re-

lacionados a primalidade e fatorao [CP10].


mais acessvel para uma primeira leitura.

O livro de Bressoud [Bre89]

A monograa de Vasilenko, mais

condensada, contm tambm alguns algoritmos para aritmtica de preciso arbitrria [Vas07].
O Algoritmo AKS para teste de primalidade foi desenvolvido por Agrawal,

Kayal e Saxena [AKS04] e sua descrio aparece em diversos livros [Sho05;


SHO08].

[Coh99] [BW08] [Rie94]

notas de aula  verso 85 - Jernimo C. Pellegrini

17.1. FATORAO

247

Exerccios
Ex. 117  Implemente os mtodos

p1

de Pollard para fatorao de

Ve
rs

Pr
e

lim

in
ar

inteiros.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 17.

PRIMALIDADE E FATORAO

Ve
rs

Pr
e

lim

in
ar

248

Captulo 18

lim

Criptograa Baseada em
Identidades

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

O uso da Criptograa assimtrica tradicional implica na preparao de uma


infraestrutura de chaves pblicas.

necessrio garantir que todos os partici-

Pr
e

pantes (pessoas, programas ou dispositivos) tenham as chaves pblicas de todos


os outros.

A Criptograa 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 vericar que a

Ve
rs

chave realmente pertence a Alice).

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

dade. A autoridade

d apenas a chave privada a Alice; quando Bob precisa


249

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 18.

250

CRIPTOGRAFIA BASEADA EM IDENTIDADES

vericar a assinatura de Alice ou enviar-lhe um documento encriptado, ele usa


a identidade de Alice como chave pblica.

in
ar

chave secreta

Enc(msg)
Alice

Bob

lim

Sign(m)

Em situaes prticas, a identidade de Alice pode ser um nmero de documento, telefone, endereo de rede ou qualquer outro identicador nico. Uma
nica vez, Alice autentica-se para a autoridade
sidade de interao dos participantes com

T,

e depois no h mais neces-

ou com um diretrio.

Pr
e

H esquemas baseados em identidades para encriptao, assinatura e acordo


de chaves.

No resto deste Captulo, usaremos


pblica.

id,

e no

pk ,

para denotar uma chave

18.1 Gerao de chaves

Deniremos primiro a gerao de chaves para sistemas baseados em identidade,

uma vez que este procedimento o mesmo para encriptao, assinatura e acordo
de chaves.

Ve
rs

Denio 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 ),
mestra M ,
P;

que aceita um parmetro de segurana

e gera uma chave-

mantida em segredo pela autoridade, e parmetros pblicos

Extract(M, id):

com a chave-mestra

pode extrair uma chave privada

e uma identidade

Todos os algoritmos descritos neste Captulo exceto

dos parmetros pblicos

id, a autoridade

sk .

P.

Setup

podem precisar

Como sua descrio genrica no depende de

omitiremos este parmetro nesta apresentao.

P,

notas de aula  verso 85 - Jernimo C. Pellegrini

18.2. ENCRIPTAO

251

18.2 Encriptao
Um esquema de encriptao baseado em identidades semelhante a um esquema
de encriptao tradicional, exceto que a chave pblica do destinatrio igual

in
ar

sua prpria identidade, e portanto no precisa ser obtida de uma autoridade.

Denio 18.2 (Esquema de encriptao baseado em identidades). Um es-

quema de encriptao baseado em identidades consiste de um esquema de gerao de chaves baseado em identidades e mais dois algoritmos:

mensagem

Decsk (c):

dados uma identidade

m, Enc

id,

os parmetros pblicos

retorna um texto encriptado.

gerado por

e uma

sk , os parmetros pblicos P e um
Enc, Dec retorna a mensagem original m.

dada uma chave privada

texto encriptado

lim

Encid (m):

Da mesma forma que em criptossistemas assimtricos tradicionais, exigimos que


para toda identidade

id e todos sk, P

gerados a partir de

m.

id, Decsk (P, Encid (P, m)) =




As noes de segurana para encriptao em sistemas assimtricos se traduzem diretamente para criptossistemas baseados em identidade. No entanto, h

Pr
e

denies de segurana mais forte que aquelas. Comeamos pela denio de


segurana adaptativa contra ataques de texto encriptado escolhido,

ao adversrio obter uma srie de chaves privadas

permitindo

alm de textos encriptados.

Experimento 18.3 (IND_ID_CCA(, A, n)).


1.

Setup(1n )
pblicos P .

usado para determinar a chave mestra

e os parmetros

2. O adversrio pode realizar as seguintes consultas a um orculo:

Extract(id):
identidade id;

o orculo devolve a chave privada

sk

relacionada

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

A decide que fez consultas sucientes, escolhe duas mensagens


m0 e m1 , do mesmo tamanho, e uma identidade id, cuja chave privada
no tenha sido extrada na fase anterior.

3. Quando

4. Um bit aleatreo

escolhido e

mk

encriptada com

Encsk

e enviada a

A.

5.

pode fazer mais consultas da mesma forma que antes, mas no pode

usar nas consultas o

id

que escolheu.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 18.

6.

CRIPTOGRAFIA BASEADA EM IDENTIDADES

b0 .

envia um bit

7. O resultado do experimento um se

b = b0

ou zero em caso contrrio.

AExtract,Decid

1n
id, m0 , m1
b R {0, 1}
sk Extract(id)

lim

Encsk (mb )

in
ar

252

b0

Pr
e

b=b 1
b 6= b0 0

Denio 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

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, denimos segurana

Ve
rs

IND-ID-CPA exatamente como IND-ID-CCA, exceto que o orculo, no experimento

IND_ID_CPA,

no responder a consultas de decriptao.

Experimento 18.5 (IND_ID_CPA(, A, n)).


idntico ao experimento
consultas de

IND_ID_CCA,
decriptao (Decid (c)).

O experimento

IND_ID_CPA

exceto que o adversrio no pode fazer

Denio 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

existe uma funo desprezvel

negl

tal que

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

1
+ negl(n).
2


notas de aula  verso 85 - Jernimo C. Pellegrini

18.3. ASSINATURAS

253

18.3 Assinaturas
Denio 18.7 (Esquema de assinaturas baseado em identidades).

Um es-

quema de asinaturas baseado en identidades composto de um esquema de

Signsk (m):

dadas uma chave secreta

uma assinatura de

Vrfid (, m):

in
ar

gerao de chaves mais dois algoritmos:

sk e uma mensagem m, Sign retorna

m.

P , da identidade id do asm, Vrf determina se a assinatura

a partir dos parmetros pblicos

sinante, da assinatura

e da mensagem

vlida.

lim

1 para criptossistemas baseados

A traduo da denio de segurana CMA


em identidade bastante direta.

Experimento 18.8 (SIG_FORGE_ID_CMA(, A, n)).


1.

usa

Setup(1n )

para determinar uma chave mestra (que mantida em

A).

Pr
e

segredo) e parmetros pblicos (que so enviados a

2. O adversrio pode realizar diversas consultas dos seguintes tipos:

Consulta a hash:
o devolve;

Extract(id):
ticao id;

o orculo computa o valor do hash pedido por

o orculo retorna a chave secreta

sk

relacionada iden-

3.

devolve

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.
(id, m, ), onde id
Extract e Sign.

diferente de todas as identicaes usdas

Ve
rs

nas consultas

4. Retorne

se

Vrfid (m, ) = 1

se

Vrfid (m, )
Ah,Extract,Signid

D
1n , P
(id, m, )

Vrfid (m, ) = 1
id
/ consultados

1 Denida

informalmente na pgina 160 e formalmente na pgina 163.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 18.

254

CRIPTOGRAFIA BASEADA EM IDENTIDADES


Denio 18.9. Um esquema de assinaturas

baseado em identidades tem

segurana contra fraude existencial em ataques adaptativos com mensagem e ID

existe uma funo desprezvel

in
ar

escolhidos se para todo adversrio polinomial

negl

tal que

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

1
+ negl(n).
2

lim

18.4 Acordo de chaves

Denio 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 Denio 18.1. Ao nal da execuo do protocolo,
todos os participantes devem obter a mesma cadeia de bits

k.

A cadeia

no

Pr
e

pode ser transmitida em claro.

18.5 Duas construes simples


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

Ve
rs

Setup: Sejam p
n = pq .
Seja

primos, ambos cngruos a

h : { 0, 1 } Zn ,

A funo

h(x) sempre

h(x)
= 1.
n

tal que para

mdulo

4;

seja tambm

valer

ser usada para mapear as identidades dos usurios em

Extract(M, id):

a chave pblica de

id

seu hash,

pk = h(id).

privada dnida da seguinte maneira.

id
sk =
id

se
se

 
id
p
id
p

=
=

 
id

q
id
q

=1
= 1.

Zn .

A chave

notas de aula  verso 85 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES

sk

computar

sk = (id)
Encid (m):

n+5pq
8

+1 ou 1.
 
t
= m.
n

a mensagem deve ser

Escolha

t R Zn

Calcule

c1 =t + (id)t1

Retorne

mod n.

(c1 , c2 ).

Decsk (c1 , c2 ):

seja

(
c1
c=
c2


c+2(sk)
n

O usurio de

Enc

no sabe se

ambos os casos, calculardo

se
se

sk = id

sk = id.

Pr
e

Retorne

mod n

c1

sk

tal que

lim

c2 =t (id)t

in
ar

Uma maneira de obter

255

id

ou

id,

por isso encripta para

c2 .

A corretude do procedimento de decriptao pode ser vericada diretamente:

(sk)2 = id, temos



 

c + 2sk
t + (id)t1 + 2(sk)
=
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

 
2
t
(t + sk)
=
n
n
 
t
=
.
n

em que sk =
id tambm segue diretamente.

Ve
rs

supondo que

O caso

O criptossistema de Cocks depende da diculdade da fatorao de inteiros e

do problema do resduo quadrtico.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 18.

256

CRIPTOGRAFIA BASEADA EM IDENTIDADES

O criptossistema de Cocks (Construo 18.11) tem segurana


IND-ID-CPA, no modelo do orculo aletreo e presumidas as hipteses da diculdade de fatorao de inteiros e do resduo quadrtico.
Teorema 18.12.

Presumiremos que o criptossistema no tem segurana IND-ID-

CPA, e que portanto existe algum adversrio

in
ar

Demonstrao.

polinomial para o qual

Pr[IND_ID_CPA(IDE_Cocks, A, n) = 1]
onde

p(n)

um polinmio em

n.

D que, dados n e um nmero x Jn , decide



x
n +1 ou 1, com probabilidade no desprezvel.
Para decidir se um nmero a resduo quadrtico mdulo n = pq , D(a, n)

lim

Construiremos um algoritmo

se

1
+ p(n),
2

funcionar simulando o orculo do experimento


neira:

IND_ID_CPA,

da seguinte ma-

1. Para responder s consultas, faa:

Pr
e

Extract(id): selecione sk aleatoriamente.


(
(sk)2


h(id) =
(sk)2 , com h(id)
= +1
n
Decid (c):

se no houve consultas

decriptao de
2. Quando receber o

id

usando

Extract

Depois, determine

com probabilidade 1/2,


com probabilidade 1/2.

para

id,

responda com a

h(id).

escolhido do adversrio, determine que

h(id) = a
id,

(isso pode ser feito porque nenhuma consulta anterior pode ter usado

h(id)

e portanto

ainda est indenido).

m0 , m1 , envie a encriptao de um b escolhido


{ 1, +1 }, usando a como h(id). Escolha t aleatoria-

3. Aps receber do adversrio


aleatoriamente em

Ve
rs

mente, com

Envie para

 
t
= b.
n
A:

4. Se a resposta

c1 = t + at1

(mod n)

c2 R Jn .
b0

dada pelo adversrio for igual a

caso contrrio responda que

b, responda que a QRn ,

a
/ QRn .

Nos falta mostrar que:

i)

Se

a QRn , c1 ser uma encriptao correta de b.


a.

absolutamente nada sobre

Seno,

A no aprender

notas de aula  verso 85 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES


ii)

257

teria quando interagindo no experimento


iii)

A indistinguvel
IND_ID_CPA.

Quando a simulao no abortada, a viso de

A simulao abortar com probabilidade desprezvel em

da que

n.

a QRn ,

Se

t
n com probabilidade
corretamente dir, com a mesma probabilidade, que a

ento por hiptese

no desprezvel, e

conseguir obter

QRn .
a
/ QRn ,

Se

c2

ento

isto bvio. Para

in
ar

Demonstramos apenas (i); os itens (ii) e (iii) so pedidos no Exerccio 119.

c1 , c2

c1 ,

no do a

qualquer informao sobre

comeamos observando que como

a
/ QRn ,

Agora considere os seguintes valores:

(mod p) = at1

t1 = t
t2 = at

t3 = at

(mod p) = t

lim

   
a
a
=
= 1.
p
q

t
n . Para

(mod q),
(mod q),

(mod p) = at

Temos

(mod q).

Pr
e

1
(t + at1 ) = (t1 + at11 ) = (t2 + at1
2 ) = (t3 + at3 ),
mas

       
t
t3
t1
t2
=
6=
=
,
n
n
n
n

e portanto

A no tem qualquer informao que possa usar, e o melhor que pode


t

n com probabilidade 1/2.

fazer responder

O criptossitema de Cocks encripta um bit por vez, e portanto muito pouco


eciente no uso de espao, no sendo usvel na prtica.

O esquema de assinaturas a seguir baseado na diculdade da fatorao de


inteiros.

Ve
rs

Construo 18.13 (Assinaturas baseadas em identidades (Shamir)).

Setup: calcule n = pq , onde p e q so primos. Escolha um nmero


e, coprimo com (n). Seleciona uma funo de mo nica f .
Os parmetros pblicos so (n, e, f ).
A chave mestra (p, q).
Extract(M, id):
Signsk (m):

a chave privada de

escolha

id

sk

tal que

aleatoriamente.

Calcule

A assinatura

(s, t).

t =re

(mod n)

s =(sk)rf (t,m)

(mod n).

grande

(sk)e = id mod n.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 18.

Vrfpk (, m):

CRIPTOGRAFIA BASEADA EM IDENTIDADES

assinatura vlida se e somente se

se = id tf (t,m)

mod n.

in
ar

258

As chaves privadas
ridade

sk

podem ser computadas ecientemente porque a auto-

tem a fatorao de

n.

Para vericar que a assinatura est correta, observamos que a condio vericada por

id

trocando

Vrf
por

e
f (t,m)
s = id t
mod n;
(sk)e e t por re :

Como

coprimo com

(n),

frmula usada na assinatura:

(mod n).

lim

se = (sk)e ref (t,m)

podemos reescrever esta condio

podemos elimin-lo dos expoentes, chegando

s = (sk)rf (t,m)

(mod n).

O esquema de assinaturas da Construo 18.13 tem segurana


contra ataques de mensagem escolhida.

Notas

Pr
e

Teorema 18.14.

O primeiro trabalho em Criptograa baseada em identidades foi publicado em


1984 por Adi Shamir [Sha84]; 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 arma supor que deve haver tambm
esuqemas de encriptao baseados em identidade, e pede a outros pesquisadores
que os procurem.

Ve
rs

O esquema de encriptao com resduos quadrticos foi publicado por Cocks

em 2001 [Coc01]. 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 [BF03].
As denies de segurana IND-ID-CPA e IND-ID-CCA foram descritas pela

primeira vez por Boneh e Franklin [BF03] (e Cocks mostra um rascunho de


demonstrao, em seu artigo de 2001, de que sua construo tem segurana
IND-IC-CPA).
Os surveys de Xavier Boyen [Boy07] e de Gorantla, Gangishetti e Saxena [GGS05]

do uma viso geral da Criptograa baseada em identidades. O livro de Luther


Martin [Mar08] traz uma exposio mais extensa, mas apenas sobre encriptao
baseaa em identidades.
O Captulo 19 trata de construes ecientes, usveis na prtica, baseadas

em identidades. Todas elas usam emparelhamentos bilineares.

notas de aula  verso 85 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES

259

Exerccios
Ex. 118  Mostre que o esquema de encriptao de Cocks no tem segurana

Ex. 119  Prove os itens (ii) e (iii) do teorema 18.12.

in
ar

IND-ID-CCA.

Ex. 120  Na construo do simulador D na demonstrao do Teorema 18.12,

envia ao adversrio

c2 R Jn .
a) Se

enviasse

c1 R Zp ,

o efeito seria o mesmo.

D enviasse c1 = t at1 (mod n),


oposto de b?

b) E se

onde

t0

tem o smbolo de Jacobi

lim

Ex. 121 
 No criptossistema de Cocks necessrio escolher um nmero

t
n
propuser.
tal que

= m,

Mostre como fazer isto e analise a ecincia do mtodo que

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

Pr
e

sistema.

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.

Ex. 124  Suponha que queiramos construir esquemas de encriptao ou assinaturas que no dependam de uma nica autoridade convel. D uma poss-

Ve
rs

vel denio de segurana para tais esquemas.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 18.

CRIPTOGRAFIA BASEADA EM IDENTIDADES

Ve
rs

Pr
e

lim

in
ar

260

in
ar

notas de aula  verso 85 - 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.

Denio 19.1 (Emparelhamento bilinear). Sejam

e : G1 G2 G3

i)

um

Pr
e

A funo

seguintes condies:

no degenerada: existem

o elemento neutro de

bilinear:

G1 , G2 e G3 grupos cclicos.
emparelhamento bilinear se satisfaz as

g1 G1 , g2 G2

tais que

iii)

computvel por algum algoritmo polinomial.

G1 = G2 ,

dizemos que o emparelhamento

Quando

(onde

a, b Z, e(g1a , g2b ) = e(g1 , g2 )ab ;

ii)

para todo

(g1 , g2 ) 6= 1

G3 );

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 denio de emparelhamentos biline-

ares.

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 .

Seja e : G1 G1 G2 um emparelhamento bilinear simtrico.


Ento o problema Die-Hellman decisional fcil em G1 .

Teorema 19.3.

261

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 19.

262

EMPARELHAMENTOS BILINEARES

19.1 Problemas difceis em emparelhamentos bilineares

Um emparelhamento simtrico ser

e : G12 Gt ,

Um emparelhamento assimtrico ser

G1

G2

so

g1

g2 ,

a, b, c

e o gerador de

e : G1 G2 Gt ,

respectivamente.

Problema 19.4 (Die-Hellman Decisional). Dados

Zq , decidir se

in
ar

Nas descries de todos os problemas que seguem usamos a seguinte notao.

c = ab mod q .

G1

g.

e os geradores de

(g, ag, bg, cg) G 4 ,

com

Problema 19.5 (Die-Hellman Bilinear). Para emparelhamentos simtricos,

(g, ag, bg, cg) G 4 ,

calcular

lim

e : (g, g)abc Gt .
3
Para emparelhamentos assimtricos, dados (g, ag, bg) g1 (g2 , ag2 , cg2 ), calabc
cular e(g1 , g2 )
Gt .


dados

Problema 19.6 (Gap Die-Hellman). O problema

gap Dissie-Hellman

para

emparelhamentos bilineares semelhante ao Die-Hellman linear, exceto que


permite-se o uso de um orculo que decide, dado um

x Gt ,

x = e : (g, g)abc


Pr
e

(ou seja, o orculo resolve a verso decisional do problema).

se

Problema 19.7 (Inverso de Die-Hellman Bilinear).

H uma srie de outros problemas m empaerlhamentos bilineares que podem


ser usados em construes criptogrcas.

19.2 Encriptao baseada em identidades

Construo 19.8 (Criptossistema de Boneh-Franklin, baseado em identidades).

Setup(q n ):

a chave mestra

s R Zq .

O parmetro pblico

Ve
rs

Escolha tambm duas funes de hashing:

H1 : { 0, 1 } G1
n

H2 :G2 { 0, 1 }

Extract(id):

Encid (m):

calcule

pk =H1 (id)
sk =s(pk)
escolha

r R Zq .

Seja

gid = e(pk, param).

Retorne

r
(rP, M H2 (gid
)) .

param = sP .

notas de aula  verso 85 - Jernimo C. Pellegrini

19.3. ASSINATURAS BASEADAS EM IDENTIDADES

Decsk (c):

Dado

c = (a, b),

263

calcule

in
ar

m = b H2 (e(sk, a))


19.3 Assinaturas baseadas em identidades

Construo 19.9 (Esquema de assinaturas de Boneh-Lynn-Shacham).


esquema usa uma funo de hashing

H : { 0, 1 } G1 .

Extract(id):

a chave privada

x R Zq .

Signsk (m) = xH(m).


Vrfpk (m, ):

retorne 1 se e somente se

lim

Setup(1n ):

A chave pblica

xP .

Pr
e

e(P, ) = e(pk, H(m)).

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

Ve
rs

c Zq .
1.

envia

aP

para

B, C ;

2.

envia

bP

para

A, C ;

3.

envia

cP

para

A, B ;

4.

calcula

KA = e(bP, cP )a ;

5.

calcula

KB = e(aP, cP )b ;

6.

calcula

KC = e(aP, bP )c .

A chave comum

A, B

KA = KB = KC = e(P, P )abc .

tem chaves secretas

a, b,

Presumindo a diculdade do problema BDH, o protocolo de


acordo de chaves de Joux seguro contra adversrios passivos.

Teorema 19.11.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 19.

264

EMPARELHAMENTOS BILINEARES

19.5 Outras construes

in
ar

Notas
Os emparelhamentos bilineares em grupos de curvas elpticas foram usados ini-

cialmente 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 nito. Posteriormente, Joux publicou seu protocolo de


acordo de chaves [Jou00], mostrando a primeira aplicao positiva de empa-

Exerccios

lim

relhamentos bilineares em Criptograa.

Ex. 125  Prove o Teorema 19.2.

Ex. 126  Formule os Teoremas 19.2 e 19.3 para emparelhamentos assimtricos e escreva suas demonstraes.

Ex. 127  Tente extender o protocolo de acordo de chaves de Joux para um

Ve
rs

Pr
e

nmero indenido de participantes.

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 20

lim

Criptograa Ps-Quntica
(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 criptossiste-

Pr
e

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

20.1 Diculdade de problemas

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

Ve
rs

Die-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:

hashing

Criptograa baseada em

Criptograa baseada em cdigos corretores de erros

Criptograa baseada em reticulados

Criptograa multivariada

Criptograa simtrica (os criptossistemas simtricos usados na prtica no


dependem das hipteses de fatorao ou logaritmo discreto).

265

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 20.

266

CRIPTOGRAFIA PS-QUNTICA

20.2 Computao quntica


Os computadores clssicos tem como unidade bsica de armazenamento o

bit,

que pode assumir dois valores diferentes, zero ou um. H diferentes maneiras de

in
ar

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

rentes daquelas da Fsica clssica; o interesse em representar informao como


sistemas qunticos existe porque as

operaes

realizadas so de natureza dife-

rente daquelas realizadas por um computador comum  e em muitos casos mais

tos

lim

ecientes.

Os nveis de energia em um tomo podem assumir diferentes valores

discre-

apenas, sem nveis intermedirios  cada eltron pode ocupar rbitas bem

nveis de energia. o nvel de energia


estado fundamental, e os outros so estados excitados.
Enquanto seu nvel de energia no for vericado, um eltron pode estar em ambos estados. Quando uma vericao for realizada, o eltron passar para um
denidas. D-se a estas rbitas o nome de

mais baixo chamado de

Pr
e

dos dois estados, que ser percebido na vericao.

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

Assim como h dois

qubit.

estados possveis para o bit, h tambm dois estados associados a um qubit,


usualmente denotados por

|0i

|1i.

Um qubit, no entanto, pode estar em am-

bos estados ao mesmo tempo, no que se chama de


superposio de estados

no

superposio de estados.

signica que o qubit esteja em algum estado in-

termedirio  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

Ve
rs

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,

onde os nmeros complexos

0 |0i + 1 |1i ,
0

so as

amplitudes

de cada um dos estados,

satisfazendo

|0 |2 + |1 |2 = 1.
q
q
p
p
1
2
2
2
|0i+
Um exemplo de estado de qubit
3
3 |1i, porque ( 1/3) +( 2/3) =
1.
As amplitudes do estado de um qubit tem um signicado importante: quando

a amplitude de cada
um dos estados determina a probabilidade de que seja ele o estado no qual o
qubit colapsar.

um qubit medido ele colapsa para cada um dos estados, e

notas de aula  verso 85 - Jernimo C. Pellegrini

20.2. COMPUTAO QUNTICA

267

1/2 |0i + 3/2. Este um estado

2
2
possvel, porque (1/2) +( 3/2) = 1. Quando for observado, este qubit passar
2
para o estado |0i com probabilidade (1/2) = 1/4 e para o estado |1i com

2
probabilidade ( 3/2) = 3/4.

in
ar

Suponha que um qubit esteja no estado

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 coeciente. Como as probabilidades dos estados so dadas pelos

quadrados dos coecientes,

as probabilidades para estes estados so exatamente

as mesmas que para o outro exemplo (1/4 e

3/4).

identicamos os estados
exemplo, podemos usar
dado por

|0i e |1i com vetores coluna unitrios ortogonais  por


|0i = (1, 0)T e |1i = (0, 1)T . O estado do sistema

0 |0i + 1 |1i,

que o mesmo que

R2 :

 
 
1
0
+ 1
0
1
(0 , 1 ),

que interpretaremos como as coorde-

Pr
e

e portanto o estado do sistema


nadas de um vetor em

Primeiro

lim

Pode ser til visualizar o estado de um qubit como um vetor.

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

entes so complexos ou para muitas dimenses, mas facilita a compreenso de


certas operaes em qubits, como rotao.

Ve
rs

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

20.2.1

|ij |2 = 1.

(20.1)

i,j

Operaes qunticas

Computadores qunticos modicam qubits (sem medi-los) usando

qunticas.

A Mecnica Quntica descreve a

evoluo do estado

operaes

de um sistema

pela Equao de Schredinger, e operadores lineares que satisfazem a equao


de Schredinger so necessariamente operadores unitrios.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 20.

268

Na Denio a seguir
de

CRIPTOGRAFIA PS-QUNTICA

a matriz conjugada transposta de

A ( A

obtida

substituindo seus elementos pelos respectivos conjugados e aplicando-se

em seguida a transposio).

AA = I

A unitrio quando


in
ar

Denio 20.1 (Operador Unitrio). Um operador linear

Denio 20.2 (Operao quntica). Uma operao quntica em um registrador de

qubits um operador linear unitrio

F : C2 C 2

Como matrizes unitrias sempre tem inversa, as operaes qunticas so


necessariamente reversveis: dado um estado e uma operao

A, deve ser possvel


A1 .

retornar o sistema ao estado anterior aplicando uma operao inversa

Operaes qunticas devem necessariamente preservar a norma do vetor que


descritas por operadores unitrios.

lim

representa o estado, e isto garantido pelo fato das operaes qunticas serem
Finalmente, operadores unitrios so fechados sob composio, e portanto as

operaes qunticas podem ser compostas. Este fato permite denir algoritmos
qunticos como sequncias de operaes qunticas.

Pr
e

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.

Ve
rs

Reordenao de qubits

Com uma matriz de permutao podemos reordenar

os qubits em um sistema.

Rotao de um qubit

ngulo

Podemos rotacionar o estado de um qubit por um

usando a matriz

Operao de Hadamard

cos
sen


sen
.
cos

A operao de Hadamard leva um qubit do estado

|0i para o estado uniforme |0i + |1i


|0i |1i. Para estados superpostos, a

e do estado

|1i

para o estado uniforme

operao leva de

(0 + 1 ) |0i + (0 1 ) |1i .

Esta operao descrita por uma

matriz de Hadamard.

0 |0i + 1 |1i

para

notas de aula  verso 85 - Jernimo C. Pellegrini

20.3. SUBGRUPO OCULTO

269

Denio 20.4 (Matriz de Hadamard). Uma matriz de Hadamard uma matriz quadrada (nn) com entradas iguais a

HH T = nI .

que satisfaz

Possivelmente a maneira mais simples de construir matrizes de Hadamard

H1
H2
H2n

in
ar

pelo mtodo recursivo de Sylvester:


= 1


1 1
=
1 1


H2k1 H2k1
=
H2k1 H2k1

1
A matriz


1 1

|0i =
2 1



1 1
1 H2 |1i =
2
2 1
1 H2
2

 
1
1
=
1
0
 
1
0
=
1
1

 
1 1

= |0i + |1i ,
2 1
 
1
1

= |0i |1i .
1
2

Pr
e

lim

H usada em qubits (a multiplicao por 12 normaliza os


2 2
valores, para que a soma dos quadrados seja um):

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

A transformada discreta de Fourier mapeia um vetor

Ve
rs

xos em outro outro vetor


1
b0
1
b1
1

.. = 1
.
n
1
bn
1

onde

= e(2i)/N

de nmeros comple-

de igual tamanho, tambm de nmeros complexos:

1
2
4

.
.
.

..

n1

2(n1)

uma raiz da unidade para

usar multiplicao de matrizes, usando tempo


a0

a1
2(n1)
..
.
.
.

.
an
(n1)(n1)
n1

C.
O(n2 ).

Ingenuamente podemos
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

Fourier.

O(log2 n),

exponencialmente menor que a transformada rpida de

Esta armao deve inicialmente provocar descrena, j que um tal

algoritmo no teria tempo sequer de ler sua entrada, que tem tamanho

n,

mas

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 20.

270

CRIPTOGRAFIA PS-QUNTICA

o algoritmo de fato executa em tempo menor que


codicada em

log n

porque a entrada ser

qubits usando superposio de estados.

Nesta discusso,

|ii

ser interpretado como o vetor coluna onde o

i-simo

in
ar

elemento um e os outros zero:


0
0

|2i =
1
0
|i =

Usamos ento uma superposio de estados

Pn1
j=0

para o algoritmo.

j |ji

como entrada

A transformada quntica de Fourier um algoritmo quntico que tem como

bits, codicados como superposio de estados em

lim

entrada

log(n)

qubits.

A sada do algoritmo tambm uma superposio de estados  mas isso


signica que ao medir a sada no poderemos obter os

2n

bits!

n bits da sada, sorteados de


acordo com as probabilidades descritas pelas amplitudes do estado de superposio.
Obtemos, no entanto, uma sequncia de

Pr
e

Denio 20.5 (Vetor peridico). Um vetor

vi = vj se e somente
o perodo do vetor.

se

i j (mod k)

com

para algum

n elementos peridico se
k|n. O nmero k


tal que

Em outras palavras, um vetor peridico composto de repeties de uma


sequncia de elementos.

vj dessa
deslocamento j .

Quando somente um elemento

diferente de zero dizemos que

peridico com

sequncia

Se um vetor peridico podemos usar a QFT para calcular o perodo do

vetor.

Ve
rs

Notas

O livro de Papadimitriou e Vazirani [DPV06] (traduzido para o Portugus [PV09])


traz um Captulo com noes de Computao Quntica. Uma descrio mais
detalhada pode ser obtida nos livros de Hirvensalo [Hir01] e de Marinescu e Marinescu [MM05]. Uma exposio com nfase em Complexidade Computacional
dada no livro de Arora e Barak [AB09].

Uma discusso mais completa da

Computao Quntica dada por Nielsen e Chuang [NC04].


Uma exposio de construes criptogrcas resistentes a ataques qunticos

dada no livro organizado por Bernstein, Buchmann e Dahmen [BDB09].


Dentre os muitos textos sobre de Mecnica Quntica destacamos os de

Cohen [CDL06], o de Shankar [Sha94] e o de Griths [Gri04; Gri11]. Uma introduo Matemtica necessria para o estudo da Mecnica Quntica dada
no livro de Byron e Fuller [BF92],
H um livro interessante de K. J. Horadam sobre matrizes de Hadamard e

suas aplicaes [Hor06].

notas de aula  verso 85 - Jernimo C. Pellegrini

20.4. FATORAO DE INTEIROS

271

Exerccios
Ex. 128  Prove que a construo de Sylvester sempre resultar em uma
matriz de Hadamard.

Ve
rs

Pr
e

lim

in
ar

Ex. 129  Prove que a transformada de Fourier uma operao unitria.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 20.

CRIPTOGRAFIA PS-QUNTICA

Ve
rs

Pr
e

lim

in
ar

272

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 21

lim

Reticulados
(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

21.1 Reticulados

Pr
e

h at o momento algoritmo quntico que os resolva ecientemente.

Rn ,

Neste Captulo trabalharemos no espao

embora os resultados sejam ime-

diatamente aplicveis a qualquer espao Euclidiano.

x Rn
+ . . . + x2n

Denio 21.1 (Norma Euclidiana dep


vetor). Seja

Euclidiana

de

x,

denotada por

||x||,

x21

A norma Euclidiana por vezes chamada de

um vetor. A

norma


norma l2 .

Um reticulado um subconjunto de um espao vetorial, denido como a


seguir.

Rn

n
X

Ve
rs

Denio 21.2. Um reticulado em

L(B) =

onde

de

B = (b1 , . . . , bn )

um conjunto

)
i bi |i Z

i=1

uma base de

Rn .

Dizemos que

(b1 , . . . , bn )

L.

uma base

Assim como com espaos vetoriais, comum denir a base de um reticulado

como uma matriz onde cada coluna um dos vetores

b1,1

b1,2

.
..

b2,1
..

bn,1
.
.
.

.
..

bn,n
273

bi :

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 21.

274

RETICULADOS

21.2 Problemas difceis em reticulados


H diversos problemas

N P -difceis

denidos em reticulados. Os mais simples

SVP: dada uma base

CVP: dada uma base


vetor

v L(B)

in
ar

deles so:

B , determinar um vetor de L(B) com a menor norma;


B

com

vetores e um vetor

mais prximo de

SBP: dada uma base

t;

gerando

L(B),

t Rn ,

determinar o

encontre outra base

B0

para o

mesmo reticulado que seja menor de alguma forma. Por exemplo, po-

lim

demos tentar encontrar dentre todas as bases aquela contendo o vetor de


menor norma:

||B 0 || = max ||si ||


i

ou a que contm a menor soma dos quadrados dos vetores:

||B 0 || =

||si ||2 .

Pr
e

Para cada um destes problemas h duas variantes: o problema aproximado


e o problema do intervalo.

21.2.1

SIS

,
A Zmn
q
small integer solution) consiste
para Ax = 0.

o problema da soluo inteira pequena (SIS,

em determinar uma soluo no-nula

x Zm
q

Dada uma matriz

LWE

Ve
rs

21.2.2

Em 2005 Regev descreveu um criptossistema baseado em reticulados com demonstrao de segurana CPA. O criptossistema LWE baseado no problema
learning with errors.
Denimos o problema LWE usando um experimento aleatreo. Na descrio

do experimento,
sobre

n, m, q

so inteiros e

uma distribuio de probabilidades

Zq .

Experimento 21.3 (LWE

(A, n, m, q, )).

1.

A R Zmn
.
q

2.

v0 R A

3.

s R Znq , e Zm
q , v1 = As + e

1 Pela

primeira vez neste texto usamos uma distribuio diferente da uniforme!

notas de aula  verso 85 - Jernimo C. Pellegrini

21.2. PROBLEMAS DIFCEIS EM RETICULADOS

b R {0, 1}

5. Envie
6.

vb

para

A.

envia um bit

b0

de volta

7. O resultado do experimento

se e somente se

in
ar

4.

275

b = b0

O adversrio obtm sucesso no experimento LWE quando consegue distinguir

As + e

de

v R Zm
q .

Denio 21.4 (Problema LWE). O problema LWE consiste em obter proba-

LWE.

lim

bilidade um no experimento

Acredita-se que o problema LWE difcil (e portanto que somente adversrios rodando em tempo exponencial em

21.2.3

possam obter probabilidade um).

SBP e Ortogonalidade

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

Pr
e

quo diferentes os ngulos entre seus vetores so do ngulo reto. Elaboramos


esta ideia com mais rigor na denio a seguir.

Denio 21.5 (Razo de Hadamard). Seja

razo de Hadamard

B = {b1 , . . . , bn }

uma base.

para esta base

H(B) =

| det B|
||b1 || . . . ||bn ||

1/n


Quando a base ortogonal seu volume (ou seja, o determinante) igual

H(B) = 1. Quando no ortogonal, o voH(B) ser menor que um. Dizemos


B menos ortogonal que outra, B 0 , quando

multiplicao de seus vetores, e

Ve
rs

lume maior que o produto dos vetores, e


informalmente que uma base

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.

ento o

Seria interessante termos um valor a

desvio de ortogonalidade

minimizar.

Denimos

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

Denio 21.6 (Desvio de Ortogonalidade). O desvio de ortogonalidade de


uma base

Q
(B) =

i ||bi ||
.
| det B|

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 21.

276

21.2.4

RETICULADOS

LLL

21.2.5

CVP: algoritmo de Babai

in
ar

Um algoritmo para reduo de base o LLL, de Lenstra, Lenstra e Lovsz.

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.

L Rn
n
qualquer em R .
Seja

um reticulado com base

B = (b1 , b2 , . . . , bn ),

um vetor

O algoritmo de Babai consiste em reescrever o vetor

como

combinao linear dos vetores da base e arredondar os coecientes. Escrevemos

como

tb:

Depois, determinamos o vetor

lim

w = t1 b1 + t2 b2 + . . . + tn bn .

com os coecientes aredondados:

ai = bti e,
e nalmente retornamos o vetor

Pr
e

v = ab.

Se o desvio de ortogonalidade de

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

21.3 GGH

Goldreich, Goldwasser o Halewi desenvolveram um elegante criptossistema ba-

Ve
rs

seado em problemas em reticulados, que descrito a seguir. O GGH se fundamenta no CVP e no SBP: aps codicar uma mensagem
reticulado. Para decifrar

como um ponto de

m, mas fora do
c necessrio usar o algoritmo de Babai com uma base

um reticulado, o texto encriptado

ser um ponto prximo de

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.8 (Criptossistema GGH).

Gen(1n ) gera
sk = B , com
pk = R, com
Encpk (m):

duas bases para o mesmo reticulado.


desvio de ortogonalidade muito pequeno;
desvio de ortogonalidade muito grande.

a mensagem

(para isso a base

interpretada como um ponto do reticulado

usada). O que

Enc

faz retornar um outro ponto,

notas de aula  verso 85 - Jernimo C. Pellegrini

21.3. GGH

277

prximo de

 isso feito somando a

um vetor aleatreo com valores

pequenos.

Encpk (m) = m + e,
onde

um vetor de tamanho

cujos valores

ei

in
ar

e = (e1 , , en ), ei R {, +}

so menores do que

metade da distncia entre os pontos do reticulado (que presumimos ser

2 ).

Decsk (c): usando a base B com desvio de ortogonalidade pequeno


obter m usando o algoritmo de Babai, que essencialmente computa

onde

c = m + e,

porque

lim

m = BbB 1 ce,
foi calculado por

fcil

Enc.

Claramente a segurana do GGH est relacionada dimenso do reticulado:

n,

mais difcil resolver o CVP e o SBP.

Pr
e

quanto maior

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

21.3.1

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

Ve
rs

base escolhendo aleatoreamente coecientes inteiros

B R {l, . . . + l}nn  escolha uniformemente uma base com coecientes inteiros entre l e l (com o cuidado de vericar 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.

B e multiplique-o por uma combinao linear


B , usando coecientes aleatreos. Os autores sugerem que

Tome cada vetor da base boa

dos outros vetores de

2n

passos de mistura so sucientes para prevenir o uso do LLL para obter a

base boa a partir da ruim.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 21.

278

RETICULADOS

Enc

21.3.2

Ataques ao GGH

Suponha que

in
ar

Nguyen mostrou ataques ao NTRU que o tornam invivel na prtica.


foi cifrada usando o GGH. Denotaremos tambm por

o vetor que representa a mensagem no reticulado.


sabemos que h um vetor de erro

Como o GGH foi usado,

com entradas iguais a

c = mR + e.

tal que

A probabilidade de um adversrio encontrar o vetor de erro (e portanto conseguir

1
2n (desprezvel em n).
encontrar o vetor de erro equivalente a resolver o problema SAT.
decifrar a mensagem) tentando ao acaso

Note que

Proposio 21.9.

lim

A observao que fundamenta o ataque de Nguyen a Proposio a seguir:

Seja s o vetor (, . . . , ). Ento


c + s mR

(mod 2),

e obtemos um sistema de congruncias onde a incgnita

m.

Nguyen mos-

trou tambm que com alta probabilidade este sistema tem poucas solues.

m2 ,

observamos que

Pr
e

Supondo que conseguimos uma soluo

c m2 R = (m m2 )R + e,

e tambm que

m m2 0

Ento

(m m2 ) = 2m

para algum

(mod 2).

m Zn .

Portanto

e
c m2 R
= m0 R +
,
2
2

e temos uma nova instncia do CVP, desta vez em


erro agora

e/2 ,

Qn .

No entanto, o vetor de

menor que o original, com todas iguais a

1/2.

Ve
rs

Nguyen usou este ataque para decifrar mensagens-desao que os autores do


GGH haviam deixado na Internet.

21.4 NTRU
O criptossistema NTRU criado por Hostein, Pipher e Silverman foi originalmente formulado usando anis, mas pode ser descrito em termos de reticulados.

Construo 21.10 (Criptossistema NTRU).

Gen(1n ) escolha um primo n, um mdulo q


pk = h = [T f ]1 g (mod q) Znq
sk = ([T f ], f, g) tais que

df .

e1 + {p, 0, p}n

{p, 0, p}n .

Seja

p = 3.

notas de aula  verso 85 - Jernimo C. Pellegrini

21.5. AJTAI-DWORK
e tanto

como

279

f e1

contm exatamente

df + 1

valores positivos e

df

valores negativos.
A matriz

[T f ]

invertvel mdulo

q.

encriptado

c = m + [T f ]1 r

(mod q).

Dec(c)
m = (([t f ]c)

(mod q))

(mod p).

O texto

in
ar

Enc(m) a mensagem codicada como um vetor m {1, 0, 1}n .

21.5 Ajtai-Dwork

lim

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
pandido para

O(n )

O(n4 )

e cada bit de texto claro ex-

bits encriptados. Nguyen demonstrou que qualquer verso

criptossistema.

21.6 LWE
Notas

No entraremos nos detalhes deste

Pr
e

eciente do criptossistema seria insegura.

O livro de Daniele Micciancio e Sha Goldwasser [MG02] aborda exclusivamente

problemas difceis em reticulados.

O algoritmo LLL foi descrito por Lenstra, Lenstra e Lovsz em 1982 [LJL82].

Ve
rs

Uma descrio acessvel dada no livro de Hostein, Pipher e Silverman [HPS08].


O LLL descrito tambm por Cohen [Coh10], e h um livro de Nguyen e Vale [NV09] dedicado ao LLL e aplicaes.
O Criptossistema GGH foi apresentado em 1997 por Goldreich, Goldwasser

e Halewi [GGH97]. Hostein, Pipher e Silverman descreveram o NTRU [HPS98]


em 1998. Cynthia Dwork e Mikls Ajtai apresentaram seu criptossistema tambm em 1998 [AD98]. O ataque de Nguyen ao criptossistema Ajtai-Dwork foi
relatado em..... [nguyen-ajtai ].
O criptossistema LWE mais recente  foi descrito por Regev em 2005 [Reg05].

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?

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 21.

280

RETICULADOS

Ex. 131  (Fcil) Prove a Proposio 21.9.

Ve
rs

Pr
e

lim

in
ar

Ex. 132  Se voc leu o Captulo22, faa o Exerccio 140.

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 22

lim

Cdigos Corretores de Erros

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

Pr
e

no livro de Hefez e Villela [HV08]. Em Ingls, Hill [Hil90], Roman [Rom96] e


Moon [Moo05] do excelentes introdues.

22.1 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 trans-

misso 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 modicar 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

281

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 22.

282

CDIGOS CORRETORES DE ERROS

Quando um nico bit da mensagem for alterado, ele poder ser corrigido simplesmente escolhendo a mensagem original mais prxima da corrompida (por

00001

00000).

in
ar

exemplo, a mensagem mais prxima de

lim

Denimos ento de maneira mais rigorosa a noo de mais prxima para


mensagens.

Denio 22.1 (Distncia de Hamming). Dados dois vetores


distncia de Hamming entre

sejam

Pr
e

Z52 ,

d(v, w) = |{i : vi 6= wi , 1 i n}| .


Exemplo 22.2. Em

v, w An ,

a = 10011
b = 00101

Ento

d(a, b) = 3,

poruqe

diferem em exatamente tres posies.

Z85 ,

Ve
rs

Exemplo 22.3. Em

a = 0344141
b = 4342100

Ento

poruqe

d(a, b) = 4,

diferem em exatamente quatro posies.

A distncia de Hamming uma mtrica, ou seja, para quaisquer trs vetores u, v, w,


Teorema 22.4.

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

nimos o peso de um vetor como a quantidade de erros que sero introduzidos


na mensagem.

notas de aula  verso 85 - Jernimo C. Pellegrini

22.1. CORREO DE ERROS

Denio 22.5 (Peso de um Vetor). O

Exemplo 22.6. Em

peso

de um vetor

a quantidade de

v.

Z52 ,


o vetor de bits

(1, 0, 0, 1, 1)

tem peso tres.

in
ar

entradas no nulas em

283

Ser til tambm a noo de arredores de um vetor, que formalizada na


denio de disco.

Denio 22.7 (Disco). Seja


centro

e raio

a An

t R,

tal que

t 0.

D(a, t) = {v An : d(v, a) t}.


Exemplo 22.8. Em

Z42 ,

seja

a = 1001.

Ento os vetores que diferem de

|D(a, 2)| = 11.

Ve
rs

013,
111,
200,
212,
224,
241,
312,
410,
441,

Que exclui as 64 palavras com distancia tres, como


portanto

em

lim

Z35 , seja a = 211. Ento

001, 010, 011, 012,

031, 041, 101, 110,

114, 121, 131, 141,

203, 204, 210, 211,


D(a, 2) = 220, 221, 222, 223,

232, 233, 234, 240,

244, 301, 310, 311,

321, 331, 341, 401,

413, 414, 421, 431,

Exemplo 22.9. Em

1010,

1100,

0000,
1111,

0011,

Pr
e

1001,

1000,

1011,
D(a, 2) =
1101,

0001,

0101

com

no mximo dois bits so

E portanto

disco

014,
112,
201,
213,
230,
242,
313,
411,

021,

113,

202,

214,

231,

243,

314,

412,

000, 002, 020,

|D(a, 2)| = 61

etc. Temos

A distancia mnima de um cdigo a menor distancia entre duas de suas

palavras (observe que de acordo com nossa denio de cdigo, a distancia entre
palavras no precisa ser uniforme).

Denio 22.10 (Distncia Mnima). Seja

de

um cdigo. A distncia mnima

min {d(u, w) : u, w C, u 6= w} .

Teorema 22.11. Com distncia mnima d, um cdigo C pode corrigir no mximo b(d 1)/2c erros.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 22.

284

CDIGOS CORRETORES DE ERROS

Demonstrao. seja e = b(d 1)/2c. Seja D(x, e)


e. Se x e y so palavras-cdigo diferentes,

o disco com centro

e raio

in
ar

D(x, e) D(z, e) =
E a decodicao pela mnima distncia corrigir no mximo

M palavras
(n, M, d)-cdigo.

Se um cdigo tem
que um

de tamanho

Denio 22.12 (Cdigos Equivalentes). Seja

Uma

Uma

uma

q -permutao.

permutao posicional
permutao simblica
C.
C

C0

consiste em aplicar

equivalentes

so

um

consiste em aplicar

beto de
Dois cdigos

Ento,

d,

dizemos

(n, M, d)-cdigo,

erros.

e distncia mnima

a cada palavra de

se possvel transformar

em

C0

um cdigo com distncia mnima

Quando uma mensagem


buscar a palavra
de

d,

Pr
e

Seja

Cdigos Lineares
cC

C;

atravs

de uma sequncia de permutaes posicionais e simblicas.

22.1.1

uma

a cada smbolo do alfa-

lim

n-permutao

corrigindo no mximo

erros.

recebida, possivelmente com erros, o receptor deve

mais prxima da palavra recebida

y.

Quando o tamanho

muito grande, isto muito lento.

Suponha que o alfabeto de


Podemos ver

e que

|| = q , potncia
Fq .

de algum primo.

como o conjunto de elementos de

Denio 22.13 (Cdigo Linear). Seja


sobre algum corpo nito

Fq

Vn (q).

Se

um subespao de

um

[k, n]-cdigo.
Se

|| = q ,

Vn (q) o espao vetorial de dimenso n


Zn2 ). Um cdigo linear C sobre
espao k -dimensional, dizemos que um


(por exemplo,

[k, n]-cdigo

linear com alfabeto

Ve
rs

Exemplo 22.14. Considere o espao

Z62 .

um

(n, q k , d)-cdigo.

O subespao gerado pela base

B = {001011, 100010, 010101}

contm os vetores (sequencias de bits) a seguir.


[B] =


000000, 001011, 100010, 010101,
101001, 011110, 110111, 111100

Estas so as palavras de um

[B]

[3, 6]-cdigo,

porque a dimenso de

Z62

seis e a de

tres.

A distancia mnima neste cdigo

2,

logo temos um

(6, 23 , 2)-cdigo.

O cdigo pode corrigir

erro.


31
=1
2
J

notas de aula  verso 85 - Jernimo C. Pellegrini

22.1. CORREO DE ERROS

285

Uma caracterstica importante de cdigos lineares que podemos descrev-lo

palavras (a base do subespao

Denio 22.15. Seja


de

Vn

determinado por

C,

que tem dimenso

k ).

C um [k, n]-cdigo linear. Uma base para


C chamada de matriz geradora de C .

o subespao

in
ar

com

Exemplo 22.16. Para o cdigo do exemplo 22.14, a matriz geradora

0
G = 1
0
Como os vetores da base so

esquerda

de

linhas

1
0
0

0
0
1

1
1
0

1
0 .
1

da matriz, podemos gerar o cdigo multi-

G:

lim

plicando

0
0
1

(0, 0, 0)G = (0, 0, 0, 0, 0, 0)

(0, 0, 1)G = (0, 1, 0, 1, 0, 1)

(0, 1, 0)G = (1, 0, 0, 0, 1, 0)

(0, 1, 1)G = (1, 1, 0, 1, 1, 1)

(1, 0, 0)G = (0, 0, 1, 0, 1, 1)

Pr
e

(1, 0, 1)G = (0, 1, 1, 1, 1, 0)

(1, 1, 0)G = (1, 0, 1, 0, 0, 1)

(1, 1, 1)G = (1, 1, 1, 1, 0, 0).


Teorema 22.17.

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.

Ve
rs

O Teorema 22.17 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

C
[Ik , A]
Seja

um

[k, n]-cdigo

linear sobre

A codicao de uma mensagem

interpretamos

= Fq

na forma

m em c realizada da seguinte
m1 , m2 , . . . , mk e calculamos

maneira:

como um vetor linha

c = mG.

com matriz geradora

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 22.

286

CDIGOS CORRETORES DE ERROS

Exemplo 22.18. A matriz geradora do cdigo do exemplo 22.14 pode ter suas
linhas permutadas para que possamos escrev-la como

Para codicar a mensagem

1
1 0
0


0
0
1

m = 101,

mG = 1

0
1
0

0
1
0

0
0
1

0
1
0

0
1 .
1

1
0
1

calculamos:

0
1
0

0
1 = 1
1

1
0
1

in
ar

1
G0 = 0
0


1 .

Denimos agora a matriz de teste de paridade, que usada para vericar se

uma palavra pertence ao cdigo, e tambm para decodicar palavras corrigindo

lim

erros.

Denio 22.19 (Teste de Paridade). Seja


geradora

G = [Ik ; A].

C um cdigo
matriz teste de paridade de C

linear com matriz

H = [AT ; Ink ].
Exemplo 22.20. Como em

Z2 x = x,

teremos

A = A,


e portanto

Pr
e

H = [AT ; Ink ].

Concretamente, temos

0
A = 1
0

0
1 ,
1

0
H = 1
0

Assim,

1
0
1

1
0
1

0
AT = 1
0

0
1
1

1
0
0

Ve
rs

x+C

1
0
1

0
1
1

0
0 .
1

0
1
0

Denio 22.21 (Sndrome). A sndrome de


classe lateral

Hx

; a sndrome de uma

HxT .

O prximo Teorema d um mtodo para deteco de erros (mas no para

correo).

Teorema 22.22.

c C se e somente se HcT = 0.

Exemplo 22.23. Para a palavra que codicamos,

sndome

de

0
HcT = 1
0

101001

1
0
1

0
1
1

(0, 0, 0)T .

1
0
0

0
1
0

c = 101001,

1
0

0
0
1
= 0 .
0
0

1
0
0
1
J

notas de aula  verso 85 - Jernimo C. Pellegrini

22.1. CORREO DE ERROS

287

Exemplo 22.24. Se inserirmos um erro na palavra, podermos ter por exemplo

0
H(c0 )T = 1
0

sndrome de c0

(1, 0, 1)T

1
0
1

0
1
1

1
0
0

0
1
0


1
1

1
0
1

0 .

0
=
0

1
1
0
1

 o que signica que

c0

no pertence ao cdigo.

lim

Decodicao
Seja

in
ar

c0 = 111001,

[n, k]-cdigo binrio. Como C subespao de Vn , ento o grupo


(C, +) subgrupo de (Vn , +). Por isso, para todo x Vn h uma nica
lateral x + C .
um

aditivo
classe

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
a de possveis vetores de erro que o cdigo pode corrigir.

Pr
e

Teorema 22.25.

Demonstrao. e vetor de erro se e somente se existe c C tal que e = y c.


C subespao de Vn . Se c C , ento c C e e = y + c, e e y + C . 

Mas

Decodicar uma mensagem

y+C

1. encontre

z,

m=yz

o lder da classe lateral

y+C

2.

y recebida depende de encontrar na classe lateral

o vetor de menor peso.

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 .

Ve
rs

Teorema 22.26.

Demonstrao.

Pela denio,

somente se existe

Como

HcT = 0,

cC

tal que

y1 e y2 pertencem
y1 = y2 + c. Ento

Hy1T

H(y2 + c)T

Hy2T + HcT .


a prova est concluda.

Estes dois Teoremas nos dizem que tanto o erro

mesma classe lateral se e

e como a mensagem recebida

esto na mesma classe lateral, e portanto tem a mesma sndrome.

Uma

maneira (e no a nica) de decodicar a mensagem manter no receptor uma

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 22.

288

CDIGOS CORRETORES DE ERROS

tabela que mapeie sindromes em vetores de erro. Por exemplo, para nosso

[3, 5]-

cdigo, que s corrige um erro por transmisso, teramos uma tabela mapeando

in
ar

todos os possveis vetores com um erro em suas sndromes:

000001 (0, 0, 1)
000010 (0, 1, 0)
000100 (1, 0, 0)
001000 (0, 1, 1)
010000 (1, 0, 1)
100000 (0, 1, 0)
101001 com erro:

mensagem

lim

Exemplo 22.27. No exemplo 22.24, mostramos como seria a transmisso da

c0 = 111001, com sndrome



1
1

1
0
1
= 0 .
0
0

1
1
0
1

a mensagem recebida foi

1
0
1

0
1
1

1
0
0

0
1
0

Pr
e

0
H(c0 )T = 1
0

Como sabemos que a sndrome da mensagem


de erro deve ser

01000

(1, 0, 1)T ,

sabemos que o vetor

(o nicos com esta sndrome).

Basta agora calcular

m = c0 e = c0 + e = 111001 + 010000 = 101001,


J

e corrigimos o erro.

Ve
rs

22.2 Criptograa com cdigos corretores de erros


Esta Seo descreve o criptossistema de McEleice., que baseado na diculdade
de decodicar cdigos lineares (que

N P -difcil

[BMV78]).

A ideia que McEliece teve muito simples: o processo de encriptao adici-

ona rudo aleatreo mensagem, de maneira que no seja possvel recuper-la


facilmente.

Para decriptar a mensagem, a chave pblica usada uma matriz

decodicadora que corrige os erros introduzidos.

Construo 22.28 (Criptossistem de McEliece).

Gen(1n ):


escolha

tN

uma matriz

tal que

t << n.

k n, matriz
t erros.

Gere as matrizes:

geradora de um

[n, k]-cdigo

linear que

corrija no mximo

uma matriz

k k,

uma matriz binria aleatrea no singular.

notas de aula  verso 85 - Jernimo C. Pellegrini

22.2. CRIPTOGRAFIA COM CDIGOS CORRETORES DE ERROS

uma matriz

nn

aleatrea de permutao.

Finalmente, gere a matriz chave

= SGP .
G

t)
pk = (G,
sk = (S, G, P )
+ z,
Encpk (m) = mG

onde

um vetor de erros com peso no mximo

Decsk (c):
c = cP 1 .

1. Calcule

P 1 de
como c).

Como

cdigo de canal (assim

in
ar

289

permutao, ento

t.

palavra do

2. Use o algoritmo de decodicao do cdigo para obter uma palavra


a partir de

3. Retorne

c.

lim

m = mS
1 .

A corretude do criptossistema de McEliece no imediatamente bvia, por


isso a demonstramos a seguir.

Para qualquer par de chaves pk, sk no criptossistema de McE-

Teorema 22.29.

liece,

Demonstrao.

Pr
e

Decsk (Encpk (m)) = m.


Primeiro observamos que

cP 1
+ z)P 1
(mG

(mSGP + z)P 1

(mS)GP P 1 + zP 1

(mS)G + zP 1 .

c =

Ve
rs

A partir disso, temos os seguintes fatos:

mS

uma palavra do cdigo da fonte, e

Como

P 1

uma permutao e

ter no mximo

tem no mximo

uns,

zP 1

tambm

erros

mS .

Como a quantidade de erros menor que


obter

sua codicao;

uns. Isto signica que adicionamos no mximo

mensagem codicada

(mS)G

t,

o algoritmo de decodicao

mS .

Ao multiplicar

mS

por

S 1

obtemos

m.

Apesar do criptossistema de McEliece ser randomizado, temos o seguinte

Teorema:

O criptossistema de McEliece, como descrito na Construo 22.28, no tem segurana CPA.


Teorema 22.30.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 22.

290

CDIGOS CORRETORES DE ERROS

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
Houve diversas

in
ar

linear, aparentemente s cdigos de Goppa o tornam seguro.

tentativas de uso de outros cdigos, mas todos so suscetveis a ataques.

Notas

O primeiro criptossistema baseado em cdigos corretores de erros foi o de Robert


McEliece, publicado em 1978 [Mac78; MvV96]  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

lim

for cocnatenada com um vetor de bits aleatrios [Noj+08].

Exerccios

Ex. 133  Usando o cdigo dado no exemplo 22.18, decodique as mensaa)

010111

b)

111111

c)

111110

d)

100000

e)

010100

Pr
e

gens:

Ex. 134  Prove o Teorema 22.4.

Ex. 135  Prove o Teorema 22.17.


Ex. 136  Prove o Teorema 22.22.

Ve
rs

Ex. 137  Prove o Teorema 22.30.


Ex. 138  Veja a matriz a seguir, com entradas em

Z2 , usada para transmitir

mensagens que tem tres bits antes de serem codicadas:

1
G = 0
0

0
1
0

0
0
1

0
1
0

1
0 .
1

Esta matriz gera que cdigo? Quantos erros ele pode corrigir?

Ex. 139  Implemente um cdigo corretor de erros linear simples.


Ex. 140  Se voc leu o Captulo 21, discorra sobre a relao entre cdigos
corretores de erros e reticulados, com particular ateno a suas aplicaes em
Criptograa.

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 23

lim

Criptograa Visual

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

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 ca aparente. Com um participante a menos, nada


pode ser inferido a respeito da mensagem (o esquema tem sigilo perfeito). O

one-time pad.

processo tem semelhana com o

Ve
rs

23.1 Um nico segredo (Naor e Shamir)


Damos inicialmente um exemplo simples para dois participantes, a m de mostrar a ideia bsica do processo.
Temos duas guras que podem ser usadas para representar pixels:

A=

B=

Para representar um pixel branco, escolhemos duas guras iguais (A, A com

probabilidade

1/2

ou

B, B

com probabilidade

1/2).

Para representar um pixel

preto, escolhemos duas guras diferentes (A, B com probabilidade


291

1/2

ou

B, A

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 23.

292

A+A=

B+B=

A+B=

B+A=

in
ar

1/2).

lim

com probabilidade

CRIPTOGRAFIA VISUAL

O pixel branco na verdade aparece como cinza na gura.

Se os pares forem escolhidos desta forma e um adversrio conseguir uma das


transparncias, cada gura

1/2;

e temos o mesmo efeito do

o mesmo vale para

B,

pode representar zero ou um com probabilidade

one-time pad!

Com isto podemos denir mais claramente o que entendemos por um esquema visual de compartilhamento de segredos. Queremos distribuir imagens

Pr
e

(ou transparncias) para cada um dos participantes. Cada pixel da mensagem


clara pode ser codicado em

m = 4).

pixels na imagem encriptada (no caso anterior,

A
(1, 1, 0, 0) e B como (0, 0, 1, 1)
Somar A com A (ou A com B etc), como zemos acima, o mesmo que fazer

Podemos codicar cada um dos blocos que descrevemos como uma linha:
descrito como

o ou lgico de duas linhas:

1, 1, 0, 0
0, 0, 1, 1
1, 1, 1, 1

o
Ve
rs

A, B :

No primeiro caso, demos um bloco

A, A :

1, 1, 0, 0
1, 1, 0, 0
1, 1, 0, 0

para um participante e um bloco

para

outro. O resultado da superposio um bloco completamente coberto (a linha


do resultado s tem uns). No segundo caso, demos partilhas
resultado um bloco com

50%

para ambos, e o

de uns.

Assim, para escolher partilhas de

participantes, selecionamos

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

completamente

encoberta.

notas de aula  verso 85 - Jernimo C. Pellegrini

23.1. UM NICO SEGREDO (NAOR E SHAMIR)


ii)

Se o pixel zero (branco) , escolha

293

aleatoreamente uma sequncia de ima-

gens (no ltimo exemplo cada uma com 4 pixels) que, quando sobrepostas,

parcialmente

encoberta.

Podemos ento construir dois conjuntos de matrizes,


linhas de

C0

C0

sempre tenham peso de Hamming baixo e as de

C1 , de forma que
C1 tenham peso

in
ar

que

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

100%

preto ou

50%

lim

Neste exemplo temos somente dois possveis resultados para a superposio:


preto (cinza), e fcil determinar quais pixels sero con-

siderados 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. Denimos ento que os pixels brancos so aqueles para os


quais

H(v) d m,

onde

a
H(v) d.

um limiar e

pixels pretos so aqueles para os quais

diferena relativa, e que os


Para que haja contraste e

d m.

Pr
e

seja possvel identicar a mensagem, no deve haver pixels com

H(v)

entre

Denio 23.1 (Esquema visual de compartilhamento de segredos

(k, n)). Um
(k, n) de compartilhamento de segredos consiste de dois conjuncada um contendo matrizes n m. Sejam d e como descritos no

esquema visual
tos

C0

C1 ,

texto. Exigimos que:


i)

Para qualquer matriz

ii)

Para qualquer matriz

quaisquer k

linhas deve ter

S em C1 ,
> d.

o ou lgico de

quaisquer k

linhas deve ter

Ve
rs

medida de Hamming

ou lgico de

S em C0 , o
d m.

medida de Hamming

iii)

Seja

{ i1 , i2 , . . . , iq }, com q < k , e seja Dt o conjunto de matrizes obtido a


Ct , mas apenas com as linhas i1 , . . . , iq . Os conjuntos D0 e D1

partir de

devem ser indistinguveis (devem ter as mesmas matrizes com as mesmas


frequncias).

Por exemplo, para

C0 = C1 =

Desta forma se

q = 1 usando apenas a linha 0 no exemplo anterior, temos








1100 , 1010 , 0101 , 0011 , 1001 , 0110 .

participantes se unirem, no sabero, para um dado pixel, se

suas partilhas foram sorteadas do conjunto

C0

ou de

C1 .

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 23.

294

23.1.1

CRIPTOGRAFIA VISUAL

Esquemas para k e n pequenos

O esquema exposto no incio deste Captulo funciona para dois participantes, e


desenvolvemos esquemas mais gerais,

(2, n)

(3, 3).

Construo 23.2 (Esquema visual

in
ar

ambos devem juntar suas transparncias para obter a mensagem. Nesta Seo

(2, n) de compartilhamento de segredos).


perm_col (M ) o conjunto das matrizes obtidas permutando as colunas de
M . Ento C0 e C1 denidos a seguir so um esquema (2, n) de compartilhamento

Seja

de segredos.

Pr
e

lim

1, 0, 0, . . . , 0
1, 0, 0, . . . , 0

C0 =perm_col

.
.

.
1, 0, 0, . . . , 0

1, 0, 0, . . . , 0
0, 1, 0, . . . , 0

C1 =perm_col

.
.

.
0, 0, 0, . . . , 1

Construo 23.3 (Esquema visual (3, 3) de compartilhamento de segredos).


e

C0
C1 denidos a seguir constituem um esquema visual (3, 3) de compartilhamento

Ve
rs

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 Criptograa Visual na EUROCRYPT de 1994 [NS94]. Giuseppe Ateniese, Carlo Blundo, Alfredo de Santis
e Douglas Stinson propuseram tcnicas para construir esquemas de criptograa
visual com suporte a estruturas gerais de acesso [Ate+96b; Ate+01; Ate+96a].

notas de aula  verso 85 - Jernimo C. Pellegrini

23.3. MLTIPLOS SEGREDOS

295

Yvo Desmedt, Shuang Hou e Jean-Jacques Quisquater desenvolveram tcnicas para criptograa ptica e de udio [DHQ98], e novas tcnicas foram propostas por Chen-chi Lin, Chi-sung Laih e Ching-nung Yang [LLY03]. Estruturas

in
ar

gerais de acesso para criptograa de udio foram propostas por Daniel Socek e
Spyros Magliveras [SM05].

Wu e Chen propuseram em 1998 seu esquema que permitia compartilhar

mais de um segredo [WC98]. Wu e Chang descreveram seu mtodo em 2005 [WC05].


O livro organizado por Stelvio Cimato e Ching-Nung Yang trata extensivamente de criptograa visual[CY11].

Exerccios

lim

Ex. 141  Prove que a Construo 23.3 realmente um esquema de compartilhamento visual, de acordo com a Denio 23.1. D tambm os valores de
e

Ex. 142  Implemente os esquemas para compartilhamento de um nico segredo descritos no texto: o programa deve ler
arquivos com as imagens de cada participante.

uma mensagem, e gravar

para o programa que o Exerc-

Pr
e

Ex. 143  Qual o limite de nmero de

k , n,

Ve
rs

cio 142 pede?

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 23.

CRIPTOGRAFIA VISUAL

Ve
rs

Pr
e

lim

in
ar

296

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 24

lim

Encriptao Negvel

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 ecazes, ainda que satisfaam as denies 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

Pr
e

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

ero de Eve sem revelar o texto claro.

m
r, resultando em c (normalmente no

H uma maneira de atingir este objetivo: Alice encripta uma mensagem


com uma chave

e usando bits aleatreos

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

m0

e uma chave

k0

uma mensagem falsa

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

Ve
rs

(por isso o esquema de assinaturas RSA funciona)  e um texto encriptado


muitas vezes visto como um comprometimento com o texto claro.

Encpk (m, r) para denotar a encriptao


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 consNeste Captulo usaremos a notao

da mensagem

trues 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 classicar 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


297

m0

e no

m.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 24.

298

ENCRIPTAO NEGVEL

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 .

Isso signica que aps encriptar

negvel por remetente e destinatrio.

(que decifra a mensagem)

in
ar

negvel pelo destinatrio quando o destinatrio


0
pode escolher decifrar m ao invs de m;

Queremos que um adversrio no possa distinguir entre as duas situaes a


seguir.

envia a

enviou
ii)

a mensagem

m,

e declara honestamente ao adversrio que

m.

S envia a R a mensagem m0 , e declara falsamente ao adversrio que enviou


m.

lim

i)

(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 (r
S ), de forma que as encriptaes de (m1 , rS ) e
de (m2 , r
S ) resultem na mesma interao com R (ou seja, as mesmas mensagens
so trocadas entre R e S .
S

por

rS

em

Pr
e

Denotamos os bits aleatreos de

O diagrama a seguir ilustra as duas situaes decritas.

m1

m1

Ve
rs

rs

rs0

Fake(rS , t, m2 )

rR

rS

(m2 , rS , t)

(m2 , rS0 , t0 )
0
rR

m2
m2

Denio 24.1 (Esquema de encriptao negvel pelo remetente). Um es-

(Gen, Send, Receive, Fake),


S , remetente e R,
Fake so algoritmos

quema de encriptao negvel pelo remetente um protocolo


onde

Send

Receive

destinatrio, para que

so programas usados pelos agentes

envie uma mensagem a

polinomiais, como descrito a seguir.

R, Gen

notas de aula  verso 85 - Jernimo C. Pellegrini

24.1. ESQUEMA DE HOWLADER-BASU


gera um par de chaves

Sendpk (m, rS )
m.

para

COM(m, rS , rR )

S,

rS ,

envia de

rR ,

obtm de

gera uma sequncia de bits

para envia uma mensagem

sk .

usando os bits aleatreos

Fake(pk, t, rS , m0 )

envia

usando os bits aleatreos

Receivesk (rR )
m.

Denotamos por

pk

rS

so

enviou uma mensagem

uma mensagem

rS , rR .

receber

m0 6= m

usando o protocolo, a

desprezvel em

Segurana: COM(m1 ) COM(m2 ).

lim

Se

a mensagem

a transcrio da comunicao usada quando

O protocolo deve satisfazer os seguintes requisitos.

probabilidade de

que poderia ser usada

m0 .

e os bits aleatreos de

Corretude:

in
ar

Gen(1n )

299

n.

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 (denido na Seo 9.9).

Ve
rs

Construo 24.2 (Esquema de Howlader-Basu, negvel pelo remetente (nico


bit)).

Gen(1n ):

p, q com n bits cada, e seja N = pq . As


destinatrio so pk = N e sk = (p, q). Gere
r 6= 0 com k bits, para algum k sucientemente

escolha dois primos

chaves pblica e privada do


tambm aleatoreamente
grande.

SendN (b, r)

Cada bit de

i-sima

calculada da seguinte maneira:

determina uma linha em uma matriz

a0,0
a1,0
A=

a0,1
a1,1

.
.
.

linha contm nmeros em

..

ZN .

A:

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 24.

300

 Quando o bit um, cada

Ai,j

ENCRIPTAO NEGVEL

deve ser (de fato) algum resduo qua-

drtico, determinado aleatoreamente:

 Quando o bit zero, cada

Ai,j

in
ar

xj R ZN
ai,j x2j (mod n);
deve pertencer a

Zn ,

e seu smbolo

de Jacobi deve ser um. Como j visto, isso signica que este nmero

pode

ser um resduo quadrtico.

O bit encriptado o ou exclusivo do bit claro

sentados pelas linhas da matriz:

b=b

k1
M

!
ri

onde

ri

i-simo

Receivep,q (b, A).

bit de

r;

lim

i=0

com todos os bits repre-

Para decriptar, basta notar que a chave secreta

(p, q), e
pq .

portanto fcil determinar se um nmero resduo quadrtico mdulo

Assim o destinatrio pode determinar, para cada linha, se ela representa

Pr
e

zero ou um.

Fake(N, c, A, b):

o remetente pode negar que um bit foi enviado, decla-

rando que se tratava de um quando na verdade era zero e vice-versa. Como


o bit encriptado calculado usando ou-exclusivo com todos os
escolher

r0

igual a

em todas as posies

menos uma

ri ,

Basta

para mudar o bit

encriptado. O remetente pode ento escolher uma linha que representava


um (ou seja, que tinha resduos quadrticos) O algoritmo

r0 ,

com um dos bits

modicado para

Fake

retorna

0.


ento este

Presumida a conjectura da residuosidade quadrtica, a Construo 24.2 um criptossistema negvel pelo remetente como descrito na Denio 24.1.

Ve
rs

Teorema 24.3.

Demonstrao. O remetente pode declarar que a posio modicada em r para


0
obter r 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

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

nmeros com smbolo de Jacobi

Enc, ao codicar
+1, mas que sejam

uma linha zero, escolher


todos resduos quadrti-

cos. Isso implicaria que a linha seria incorretamente decodicada 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 85 - Jernimo C. Pellegrini

24.1. ESQUEMA DE HOWLADER-BASU

301

A probabilidade de um bit ser codicado erroneamente no esquema de um bit de Howlader-Basu desprezvel no nmero de colunas da
matriz A.

Teorema 24.4.

in
ar

O Exerccio 145 pede a demonstrao deste Teorema.


O Exemplo a seguir ilustra a aplicao do esquema.

Exemplo 24.5 (Esquema de encriptao negvel (Howlader-Basu para um


bit)). Suponha que o bit ser enviado seja

N = 5 7 = 35.

b = 1,

e que a chave pblica de

r = (1, 1, 0, 0). Este valor


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.

Bob seja

Escolhemos aleatoreamente

de

x = (18, 20, 2, 30)


e calculamos

x2j (mod 35),

obtendo

(9, 15, 4, 25).

lim

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


Escolhemos ento

x tais que (x/35) = 1.

(3, 11, 17, 29)


(27, 9, 25, 13)

3, 13, 17 e 27 no so resduos quadrticos embora tenham (x/25) = +1.

9 15 4 25
16 25 30 14

A=
3 11 9 29
27 17 25 13

Ve
rs

Destes,

A matriz :

Calculamos o texto encriptado

c =1 (1 1 0 0)
=1 0
=1.

Enviamos agora para Bob o resultado


Bob receber

(c, A).

e conseguir calcular

a partir de

A:

basta percorrer

linha por linha e vericar se em cada uma os elementos so resduos quadrticos

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 24.

302

(mod 35)

ENCRIPTAO NEGVEL

( fcil para Bob, cuja chave secreta a fatorao de

=1 (1 1 0 0)
=1.

35).

Isso s

fcil agora calcular

in
ar

r = (1, 1, 0, 0).
M 
m =c
ri

ocorre nas duas ltimas, e Bob determina

Se Eve puder nos obrigar a entregar a mensagem enviada, podemos dizer que

A a Eve e dizer que r = (1, 1, 1, 0). Estamos


trs primeiras linhas de A contm resduos quadrticos.

era zero (e no um): basta entregar


ento declarando que as

Como Eve no tem a chave pblica de Bob (e ns tambm no, por isso no

lim

podemos entreg-la), no tem como saber se estamos mentindo.

O esquema apresentado ineciente 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.

Gen(1n ):

p, q com n bits cada,


destinatrio so pk = N

Pr
e

escolha dois primos

chaves pblica e privada do

N = pq .
sk = (p, q).

e seja

SendN (m1 , m2 , r): sejam m1 , m2 mensagens com k bits cada uma.


a diferena entre m1 e m2 mdulo dois:

As

Calcule

md = m1 m2 .

Um vetor

r0

calculado:

r0 = r md .

representando o vetor

Ve
rs

Calcule

Retorne

r0 .

c = m1 r0 .

(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

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

m2

diferem). O adversrio poder vericar que

m2 = c r00 .

notas de aula  verso 85 - Jernimo C. Pellegrini

24.1. ESQUEMA DE HOWLADER-BASU

303


A segurana do esquema para mltiplos bits semelhante do esquema para

in
ar

um nico bit.

Exemplo 24.7 (Esquema de encriptao negvel (Howlader-Basu para mltiplos bits)). A mensagem que queremos transmitir

m2 = (0, 0, 1, 1).

queremos alegar ter enviado

do exemplo anterior:

9
16

A=
3
27

e a que

25
14

29
13

15 4
25 30
11 9
17 25

Calculamos

lim

matriz

m1 = (0, 1, 1, 0),

Suponha que tenhamos a mesma

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

Pr
e

=(0, 1, 1, 0) (1, 1, 0, 1)
=(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

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

Ve
rs

r00 =r0 md
=(1, 1, 0, 1) (1, 0, 1, 0)
=(1, 0, 0, 0).

Dizemos a Eve que enviamos

m2

usando

r00 ,

e nossa armao ser plausvel

porque

r00 c = (1, 0, 0, 0) (1, 0, 1, 1) = (0, 0, 1, 1) = m2 .


J

Na Construo 24.6,

Send e Receive funcionam de maneira clara: so apenas


one-time pad, com o pad sendo transmitido como uma matriz
mdulo N . J a corretude do algoritmo Fake no imediatamente

uma variante do
de nmeros

clara, e portanto provamos o seguinte Teorema.

A sada de Fake como na Construo 24.6, r00 tal que m2 =


r c, desde que o remetente consiga obter r0 corretamente a partir de A.

Teorema 24.8.
00

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 24.

304

ENCRIPTAO NEGVEL

Demonstrao. A cadeia r0 usada como pad para encriptar m em c.


0
signica que r = m c (mod 2). Mas como c = m (r md ), temos

Isso

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 decodicada
erroneamente pelo recipiente.

Calculamos agora a probabilidade de que isto

ocorra.

Teorema 24.9. A probabilidade de uma mensagem ser codicada erroneamente


no esquema de Howlader-Basu desprezvel no nmero de colunas da matriz A.
Metade dos smbolos

com

(k/n) = +1

Pr
e

Demonstrao.

drtico, e a outra metade no.

de fato resduo qua-

Assim, cada vez que escolhemos um smbolo

para uma linha zero, a probabilidade de escolhermos um resduo quadrtico

1/2.

Com

zero, temos

colunas na matriz, a probabilidade de erro

m(1/2 ) = m/2

, que desprezvel em

1/2k .

Com

k.

linhas

24.2 Esquema de Drmuth-Freeman


O esquema de encriptao de Drmuth-Freeman, descrito a seguir, fundamenta-

encriptao amostrvel.

se no conceito de

O criptossistema no seguro (h um

erro na demonstrao do Teorema que asseguraria a negabilidade), mas , ainda

Ve
rs

assim, um exemplo interessante de construo.

Denio 24.10 (Criptossistema amostrvel). Um criptossistema


nico bit
i)

amostrvel

para um

se:

H um algoritmo eciente
qualquer chave pblica

RandomCT(pk)

que escolhe

cC

tal que, para

pk ,
Encpk (m)

seja computacionalmente indistinguvel de

ii)

SampleEncRand(sk, c),
0
tado, determina um r

RandomCT(pk).
que dados uma chave secreta e um texto encriptal que, para qualquer chave secreta

(sk, c, r)

sk ,

notas de aula  verso 85 - Jernimo C. Pellegrini

24.3. NEGABILIDADE POR DESTINATRIO E NEGABILIDADE COMPLETA305


seja computacionalmente indistinguvel de

iii)

SampleCTRand(pk, c) que, dados uma chave


c, determina s0 tal que, para qualquer

tado

pblica

pk

in
ar

(sk, c, r0 ).
e um texto encrip-

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;

A:n+1
B:n

chaves para encriptar

chaves para encriptar

C : 2n

A, B, C

Pr
e

2. Alice particiona as chaves em trs conjuntos

e usa:

b;

b;

chaves para usar com

RandomCT(k),

resultando em bits de

C,

tal que a probabilidade de um deles ser uma possvel encriptao de

1/2;

k vezes para garantir que a maioria dos bits ser

Alice repete este processo

b.

Ve
rs

3. Alice envia para Bob todos os bits encriptados;


4. Bob decifra todos os bits e presume que

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 85 - Jernimo C. Pellegrini

CAPTULO 24.

306

ENCRIPTAO NEGVEL

Construo 24.11 (Esquema de encriptao negvel pelo destinatrio). Seja

um esquema de encriptao suportando negao pelo destinatrio. Sejam

duas partes e

um bit a ser enviado de

para

B.

B escolhe aleatoreamente um bit r e envia para A usando . Em


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.

in
ar

Primeiro

seguida,

A partir de um esquema negvel pelo remetente podemos tambm construir


um esquema negvel por ambas as partes.

Esta construo, no entanto, de-

pende do auxlio de um nmero de participantes adicionais, que denotamos por

I1 , I2 , . . . , Ik .

bi

para

B, A

primeiro escolhe

bi = b. DeIi usando um esquema negvel pelo


remetente. Cada Ii ento envia bi para B usando um esquema negvel pelo
L
destinatrio. Depois disso B pode calcular b =
bi . Ainda que A, B e todos
pois envia cada

lim

Construo 24.12 (Esquema de encriptao completamente negvel). Para


transmitir um bit

bits tais que

para cada intermedirio

exceto um dos intermedirios sejam obrigados a entregar seus bits, possvel


para

mentir a respeito do bit. Evidentemente necessrio que todas as

Pr
e

partes envolvidas ajam de maneira coordenada.

24.4 Aplicaes

A encriptao negvel alm de ser imediatamente til

per se

pode ser tam-

bm 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 vericar se o outro est mentindo, obrigando-o a encriptar o voto


para compar-lo com o voto ocial. Havendo a possibilidade de obter o mesmo
texto cifrado de dois votos diferentes, o protocolo enfraquece esse tipo de ata-

Ve
rs

que. 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 [Can+96].
Um criptossistema negvel pelo remetente foi descrito em 2009 por Howlader

e Basu [HB09]. Outros esquemas de encriptao negvel foram publicados por


Maged Ibrahim [Ibr09a; Ibr09b] e por Klonowski, Kubiak e Kutylowsk [KKK08].
Drmuth e Freeman publicaram em 2011 o primeiro criptossistema suposta-

mente negvel pelo remetente com probabilidade desprezvel de deteco [DF11b]


 infelizmente Peikert e Waters mostraram que havia um erro na construo, e
o criptossistema no seguro [DF11a].

notas de aula  verso 85 - Jernimo C. Pellegrini

24.4. APLICAES

307

Exerccios
Ex. 144  Porque, no esquema de Howlader-Basu, exigimos que

r 6= 0?

in
ar

Ex. 145  Calcule a probabilidade de um bit ser transmitido erroneamente


no esquema para um nico bit de Howlader-Basu, demonstrando o Teorema 24.4.

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

Ex. 147  No esquema de Howlader-Basu, dissemos que


mos

grande.

com

bits, e tambm

com

Gen deve gerar prik sucientemente

bits, para algum

Se quisermos que ambos os valores nos dem o mesmo nvel de se-

algbricos, quando deve ser

(em funo de

n)?

lim

gurana, sabendo sabendo a complexidade do algoritmo do corpo de nmeros

Ex. 148  Dena encriptao negvel para criptossistemas simtricos, e construa um esquema de encriptao negvel simtrico.

Ex. 149  Critique a construo de esquema negvel pelo destinatrio.

Pr
e

Ex. 150  As Construes 24.11 e 24.12 descrevem esequemas para um nico


bit. Diga como us-las para mensagens com muitos bits.

Ex. 151  A Construo 24.6 pode ser extendida para mltiplas mensagens

m1 , m2 , . . . , mk ,

de maneira que o remetente possa decidir qual

ao adversrio?

mi

apresentar

Ex. 152  Descreva o esquema de Drmuth-Freeman com mais formalidade,

usando a Denio 24.1.

Ve
rs

Ex. 153  Implemente os esquemas de Howlader-Basu e de Drmuth-Freeman.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 24.

ENCRIPTAO NEGVEL

Ve
rs

Pr
e

lim

in
ar

308

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 25

lim

Votao Eletrnica

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

Corretude:

Pr
e

oferecer:

o resultado das eleies deve ser correto:

o resultado deve

reetir 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;


Sigilo (ou privacidade): no deve ser possvel associar a identidade de

Ve
rs

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;

Vericabilidade: deve ser possvel aos participantes (ou a observadores em


geral) vericar que o processo foi seguido como deveria e que o resultado
foi computado corretamente. H duas variantes de vericabilidade:

 Vericabilidade universal: qualquer um pode vericar a execuo do


protocolo;

 Vericabilidade individual: cada eleitor pode vericar 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.
309

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 25.

310

VOTAO ELETRNICA

As primitivas criptogrcas normalmente usadas em sistemas seguros de


votao incluem:
Provas de conheceimnto zero so usadas de diversas formas em protocolos
de votao, quando h iterao entre as partes;

in
ar

Compartilhamento de segredos pode ser usado para que no seja necessrio

conar 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);

Encriptao homomrca normalmente usada para contabilizar votos na


Encriptao negvel
Assinaturas cegas

lim

fase de apurao, sem decript-los;

pode ser usada para conseguir no-coercibilidade;

so usadas para obter de uma autoridade uma cdula

(ou um token), que permite ao eleitor votar sem se identicar no resto


do processo de votao;

Re-encriptao

uma propriedade derivaad da encriptao homomrca.

encriptado

deve ser possvel obter outro texto

Pr
e

A partir de um texto encriptado

c0

que corresponde ao mesmo texto claro

(se usamos um

esquema de encriptao homomrco 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.

Canal pblico, ou quadro de avisos;

Ve
rs

A comunicao pode se dar de diferentes maneiras:

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
H

mix nets.

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 85 - Jernimo C. Pellegrini

25.2. ASSINATURAS CEGAS


Para enviar uma mensagem

311

anonimamente, um usurio encripta a men-

pkn , depois

sagem com as chaves pblicas de todos os servidores  primeiro com


com

pkn1 ,

at

pk1 :

in
ar

c = Encpk1 (Encpk2 (. . . (Encpkn (m)) . . .))

c ao primeiro 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

Em seguida, envia
Cada servidor

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

lim

enviem seus votos anonimamente.

25.2 Assinaturas cegas

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

Pr
e

obfuscar a mensagem, permitir que ela seja assinada, e depois de assinada,


remover o contedo obfuscante, conseguindo assim uma assinatura comum na
mensagem.

Denio 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 vericada com a chave pblica
pk .


O RSA pode ser usado para realizar assinaturas cegas.

chaves so

sk = (N, a)

Alice que assine uma


1. Bob escolhe

pk = (N, b),
mensagem m.
e

r co-primo com N

Suponha que as

e que Bob esteja pedindo autoridade

aleatoriamente e envia para Alice

M = mrb

(mod N ).

2. Alice assina

normalmente.

O resultado,

M = (mrb )a = ma rab ,

devolvido para Bob.

3. Bob remove o fator obfuscante

rb

multiplicando

Sign(M )

Signsk (M )r1 =ma rab r1


=ma rr1
=ma

(mod N ).

por

r1 :

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 25.

312

Desta forma Bob obteve

ma (mod N ),

VOTAO ELETRNICA

que exatamente a mensagem

assinada com a chave de Alice  sem que Alice saiba o contedo da mensagem.

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.

in
ar

Teorema 25.2.

O Exerccio 157 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

mix networks e
Encpk (Encsk (x)) = Encsk (Encpk (x)) = x.
O esquema de Chaum usa

depende de um criptossitema tal que

Construo 25.3 (Protocolo de votao de Chaum).

Pi

gera seu par de chaves

(pki , ski ).

2. Cada eleitor

Pi

encripta sua chave pblica

Pr
e

1. Cada eleitor

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 vericam se suas chaves esto na lista. As chaves aparecem

fora de ordem na lista, portanto cada eleitor consegue somente vericar


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

Ve
rs

pode neste momento pedir que a eleio seja reiniciada.

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 vericar que suas chaves pblicas esto na lista
e que seus votos no foram alterados.

8. Como

pki

Encski (vi )

esto na lista, todos podem decriptar e contar os

votos.

notas de aula  verso 85 - Jernimo C. Pellegrini

25.4. EXEMPLO: O ESQUEMA CGS (CRAMER, GENNARO, SCHOENMAKERS)313

25.3.1

Anlise

Analisamos a seguir as caractersticas do esquema de Chaum. Esta uma anlise

in
ar

informal e muito pouco detalhada.

Corretude: claramente sim.

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.

Democracia: no suportada  a

mixnet

recebe uma lista de chaves p-

blicas, mas no h registro de eleitores.

Sigilo: se a eleio for reiniciada na segunda fase, durante a apurao dos

lim

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.

No-coercibilidade: no suportada  qualquer eleitor pode provar que


o detentor de um par de chaves plbica/privada, encriptando um texto a

Pr
e

escolha do adversrio.

Vericabilidade universal: qualquer um pode vericar a execuo do protocolo.

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.

25.4 Exemplo: o esquema CGS (Cramer, Gennaro, Schoenmakers)

Ve
rs

O esquema de Cramer, Gennaro e Schoenmakers usa encriptao homomrca


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

tossistema Elgamal e enviados s autoridades. Como o Elgamal homomrco,


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
1 Criptossistemas

com qurum so descritos na Seo 12.6.

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 25.

314

VOTAO ELETRNICA

(G, q, g, s), e s compartilhado por n autoridades. A


(G, q, g, h) publicada, assim como os comprometimentos hi = g si
cada autoridade com sua partilha si . Publica-se tambm um gerador t 6= g .
II: Votao O eleitor Vi codica seu voto da seguinte maneira:

criadas. A chave privada


de

sim:

m0 =t

no:

m1 =t1

O voto encriptado em

(a, b) = (g k , hk mb ),
onde

pode ser

ou

escolhido aleatoriamente.

in
ar

chave pblica

Em seguida, o eleitor constri uma prova de que seu voto da forma correta

t+1

ou de

t1 ).

Para isto basta uma prova no-

lim

(ou seja, que encriptao de

interativa 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 vericadas. De-

Pr
e

pois, o produto dos votos computado:

Y

(A, B) =

ai ,

Y 
bi .

As autoridades podem ento juntar-se para calcular

As

e nalmente,

C = BAs = tD
+1

onde a diferena entre votos sim (t


Temos ento que

D = logt (C)

) e no (t

).

a diferena entre os votos, mas no pode-

mos facilmente computar logaritmos discretos. No entanto, sabemos que h no

M votos, e portanto podemos procurar


tM , tM 1 , . . . , tM at encontrar C .

Ve
rs

mximo

testando

25.4.1

Anlise

Sigilo:

Democracia:

Vericabilidade:

Justeza:

No-coercibilidade:

Complexidade de comunicao:

a diferena sequencialmente,

notas de aula  verso 85 - Jernimo C. Pellegrini

25.5. EXEMPLO: ESQUEMA FOO (FUJIOKA, OKAMOTO, OHTA)

25.4.2

315

Votao 1-de-L

O esquema descrito pode ser modicado para escolhas do tipo um dentre L
opes. Ao invs de um gerador t, usamos vrios  t1 , t2 , . . . , tL , um para cada

i-sima opo encriptando t1


i .
Supondo que h k1 votos na opo 1, k2 votos na opo 2, e assim por diante,

in
ar

opo. O eleitor codica seu voto na

durante a fase de apurao as autoridades obtero

C = tk11 tk22 . . . tkLL ,


e podero obter os valores de cada

ki

(o Exerccio 162 pede o desenvolvimento

deste mtodo).

No esquema FOO h duas autoridades:

tokens

lim

25.5 Exemplo: esquema FOO (Fujioka, Okamoto,


Ohta)
um administrador

para os eleitores, e um coletor de votos

C,

A,

que distribui

que recebe os votos dos

eleitores de forma annima e os publica. Os eleitores podem vericar a presena

Pr
e

de seus tokens e votos na lista. A decriptao dos votos e apurao so feitas


pelo coletor.

Construo 25.5.
I: Inicializao

1. O administrador gera suas chaves para assinaturas e publica sua chave


pblica.

II: Registro de votos

Pi

prepara seu voto

Ve
rs

2. Cada eleitor

onde

ki

vi

produzindo a cdula

ci = Commit(vi , ki )

uma chave aleatria e

Commit

um esquema de comprometi-

mento de bit.

3.

Pi

obscurece

onde

4.

Pi

ri

ci ,

preparando para assinatura cega pela autoridade

T:

ei = Blind(ci , pkT , ri )

escolhido aleatoriamente.

assina

ei :

Finalmente, envia

si

si = Signski (ei )
para

junto com sua identicao:

(IDi , ei , si ).

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 25.

316

5. A autoridade

verica se cada eleitor

Pi

VOTAO ELETRNICA
pode votar, e se no est re-

gistrando mais de um voto; verica tambm a assinatura de


tiver sucesso em todas as vericaes, envia para

6. A autoridade

para o eleitor

Pi

publica a lista de compromentimentos de voto

obtm a assinatura de T em

ei :

ti SigExtract(di , ri )
Pi

9.

Pi

verica se a assinatura de

eleio abortada.
envia

coletora

vlida:

ei assinado pela autoridade T


C.

10. O coletor verica as assinaturas

VrfpkT (ei , ti ).

(ou seja,

(IDi , ei , si ).

Se no for, a

(ei , ti )) a uma autoridade

ei , ti .

(j, ei , ti ), onde j

Pr
e

11. O coletor publica uma lista

e envia

lim

8.

e se ob-

Pi .

III: Votao
7. O eleitor

Pi ,
ei

assina

in
ar

di = SignskT (ei )

Pi

varia de

1 ao nmero de votos.

IV: Apurao (abertura)


12.

Pi

verica se o nmero de votos na lista igual ao nmero de eleitores.

13.

Pi

verica se seu voto

14.

Pi

envia a chave

ki

(j, ei , ti )

est na lista.

com o nmero

para

por um canal annimo.

V: Apurao (contagem)
15. O coletor abre os comprometimentos das cdulas e publica uma nova lista

Ve
rs

(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

facilmente detecta votos duplos. No entanto, h

a dependncia da honestidade de

T.

notas de aula  verso 85 - Jernimo C. Pellegrini

25.5. EXEMPLO: ESQUEMA FOO (FUJIOKA, OKAMOTO, OHTA)

317

Vericabilidade: somente individual (cada eleitor pode vericar que seu


voto est na lista). No entanto, se um grupo de eleitores no votar, a auto-

pode votar por eles  portanto no h vericabilidade universal,

e h a dependncia da honestidade de

T.

in
ar

ridade

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

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 [Jea94] como ponto de partida para a histria da Teoria da Escolha
Social, sendo que a sua concepo moderna deriva dos trabalho de Kenneth
Arrow [Arr51; Arr50]. A coletnea organizada por David Insua e Simon French

Pr
e

contm diversos artigos relacionados a sistemas de votao e sua aplicao em


forma eletrnica [IF10], e h inclusive um Captulo introdutrio sobre sistemas
de votao, elaborado por Hannu Nurmi.

H uma seo sobre votao eletrnica no livro de Delfs [DK07]; a tese de


doutorado de Zuzana Rjakov [RJA02] 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

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

que se tem notcia, publicado como nota tcnica na

uma forma de roteamento annimo tambm usado em outros contextos, inclusive

Ve
rs

em mtodos de envio annimo de email usados nos anos 90 [Bac95]; a idia


continuou a ser adaptada, sendo tambm a essncia do sistema Tor [DMS04] de
anonimizao na Internet.

O esquema de Ronald Cramer, Rosario Gennaro e Berry Schoenmakers foi

publicado em 1997 [CGS97].


Um esquema de votao particularmente interessante foi desenvolvido por

Zuzana Rjakov em sua tese de doutorado [RJA02], 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 [Cha82].

Exerccios

Ex. 154  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 85 - Jernimo C. Pellegrini

CAPTULO 25.

318

VOTAO ELETRNICA

Ex. 155  Prove o Teorema 25.2.


Ex. 156  Como poderamos obter um esquema de assinaturas cegas usando

in
ar

assinaturas Elgamal?

Ex. 157  Mostre que no seguro usar o mesmo par de chaves for usado
para assinaruras cegas RSA e encriptao de mensagens.

Ex. 158  A descrio de assinaturas cegas RSA dada neste Captulo informal. Formalize-a usando a denio dada.

Ex. 159  Verique no Captulo sobre Assinaturas Digitais se

Ex. 160  Implemente um dos sistemas de votao descritos neste Captulo.


plemente o esquema de votao.

lim

Tente implementar primitivas criptogrcas aos poucos, e somente depois im-

Ex. 161  O esquema de Chaum depende de um criptossistema onde valha

Encsk (Encpk (x)) = x.

Que criptossistema satisfaz essa exigncia?

Ex. 162  Na Seo 25.4.2 h uma brevssima descrio da extenso do es-

Pr
e

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

Ex. 163  O esquema Cramer-Gennaro-Schoenmakers pode ser extendido

K -em-L.

Ve
rs

para votao do tipo

Mostre como.

Captulo 26

Anonimidade

Pseudonimodade

No-rastreabilidade

Possibilidade de Transferncia

Preveno de gasto duplo

No-fraudabilidade

No-framing

Justeza

Recuperabilidade

Auditabilidade

Ve
rs

Pr
e

lim

Dinheiro Eletrnico

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Notas

O primeiro artigo a propor dinheiro digital foi publicado em 1982 por David
Chaum [Cha82].

H uma seo sobre dinheiro eletrnico no livro de Delfs [DK07]; uma viso

geram (em nvel de detalhe bastante alto) dada no trabalho de Isabelle SimplotRyl, Issa Traor e Patricia Everaere [STE09].
Em sua tese de doutorado, Mansour Al-Meaither apresenta uma discusso

interessante e que trata especicamente de dinheiro eletrnico respeitando princpios Islmicos [AlM04].

319

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 26.

DINHEIRO ELETRNICO

Ve
rs

Pr
e

lim

in
ar

320

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Captulo 27

lim

Cifras Histricas

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

deixar claro quando for este o caso).

um nico caracter (o contexto

Pr
e

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 .

27.1 Cifras
rentes.

comum classicar as cifras apresentadas neste Captulo em alguns tipos dife-

Denio 27.1 (Cifra de substituio). Uma cifra dita

de substituio se sua

Ve
rs

aplicao consiste em substituir caracteres da mensagem por outros.


Se os caracteres so substitudos por outros a uma distncia xa, a cifra de

deslocamento.

Em um alfabeto com 26 caracteres, onde cada

Enck (m) = mk

um caracter,

(mod 26).

(A chave o deslocamento)

monoalfabtica, quando um caractere


polialfabtica, quando grupos de caracteres so


Uma cifra de substituio pode ser

substitudo de cada vez, ou


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

 ou seja,
321

|M|!

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 27.

322

CIFRAS HISTRICAS

de permutao

se os ca-

racteres usados no texto claro tem apenas suas posies permutadas.

Denio 27.2 (Cifra de permutao). Uma cifra

n, a chave uma pern! chaves  ou seja, a quantidade

n posies do bloco.

Assim temos

in
ar

Denindo o tamanho da mensagem (ou bloco) como


mutao das

de chavs depende do tamanho da mensagem.

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 ta. A ta passada ao longo do cilindro, e


a mensagem escrita na ta. Quando a ta retirada do cilindro, os caracteres

lim

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
(onde

n a quantidade de caracteres que cabe ao redor da ctala).

linhas

Por exemplo,

para encriptar Doutor Fantstico, obtemos a matriz

D
O
A
S
O

O
R
N
T

T
F
A
C

T
I

Ve
rs

O texto encriptado a sequncia de caracteres das linhas da matriz transposta:

D
O

U
T

Temos ento o texto encriptado

O
R
F

A
N
T
A

S
T
I
C

DOASOORNT U TI TFAC.

Exemplo 27.4 (Cifra de Csar). Um mtodo que foi usado por Jlio Csar
consiste em trocar cada letra pela terceira prxima no alfabeto, sendo assim a

A em D, B em
A, B e C respectivamente. De maneira
m m + 3 (mod 26) (Csar a usou com o alfabeto usado

cifra de deslocamento com chave igual a 3. A cifra transforma

E,

sendo que

X, Y, Z

geral, a cifra mapeia

so mapeados em

na Roma antiga, que difere ligeiramente do nosso).


Assim, a frase O Rei est n! seria codicada como

R UHL HVWD QX.

notas de aula  verso 85 - Jernimo C. Pellegrini

27.1. CIFRAS

323

Exemplo 27.5 (ROT13). A cifra de deslocamento com chave

k = 13

conhe-

cida 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

in
ar

que pode estragar a experincia de um lme, livro ou jogo).

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. A cifra consiste somente no mtodo, no


existindo chave. Contruiremos um exemplo com nosso alfabeto.

A
Z

B
Y

C
X

D
W

E
V

F
U

G
T

H
S

I
R

J
Q

K
P

L
O

M
N

N
M

O
L

P
K

Q
J

R
I

S
H

T
G

U
F

V
E

W
D

X
C

Assim, a frase Se o luar meu amigo, censurar ningum se atreve seria en-

HV L OFZI V NVF ZNRTL XVMHFIZI MRMTFVN HV ZGIVEV

lim

criptada como

Exemplo 27.7 (Cifra am). A cifra am uma generalizao da cifra de deslocamento. Ao invs de substituir um caracter

ma + b (mod 26), e a chave ento


exemplo, com a = 7 e b = 11, teramos

tumos por
Por

por

o par

substi-

Pr
e

1 7 + 5 = 12

m + k (mod 26),
(a, b).

2 14 + 5 = 19
3 21 + 5 = 26

4 28 + 5 = 33 7

5 35 + 5 = 40 14
.
.
.

Ve
rs

ou seja,

AL
BS
CZ
DG
EN
.
.
.

Assim, a palavra CEDE seria encriptada como

ZNZN.

Exemplo 27.8 (Cifra de Vigenre). A cifra de Vigenre uma cifra de substi-

tuio 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 substitu-

dos.

Y
B

Z
A

notas de aula  verso 85 - Jernimo C. Pellegrini

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

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

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

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

Suponha que a senha

LIMA

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

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

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

lim

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

CIFRAS HISTRICAS

Pr
e

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

CAPTULO 27.

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

in
ar

324

e queiramos encriptar o texto Triste m de

Policarpo Quaresma. A senha d o tamanho do bloco, e portanto encriptamos

TRIS.

Para cada posio

Ve
rs

inicialmente

i,

vericamos na tabela a posio

mi , ki :

(T, L) E
(R, I) Z
(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 sosticao matemtica.
tabalha com blocos de tamanho

n,

A cifra

portanto

m = (m1 , m2 , . . . , mn ).

Para encriptar a mensagem, basta criar

n combinaes lineares de cada caracter:

c = (c1 , c2 , . . . , cn ),

notas de aula  verso 85 - Jernimo C. Pellegrini

27.2. ENIGMA

325

c1 =a1 m1 + b1

(mod 26)

c2 =a2 m2 + b2

(mod 26)

in
ar

onde

.
.
.

cn =an mn + bn

(mod 26).

Podemos, claro, expressar a encriptao como a multiplicao da matriz


por uma matrix chave

k:
c = mk

k1,1

k1,2

.
.
.

..

kn,1

kn,2

k=

...

k1,n

lim

onde

...

kn,n

k . nemdc (k) seja

Para decriptar basta multiplicar o texto encriptado pela inversa de


cessrio cuidado para escolher

no singular. Para isto basta que

co-primo com o tamanho do alfabeto (26 neste exemplo).

Isto pode ser fa-

Z26 \ { 0 },

Pr
e

cilmente feito, selecionando aleatoreamente todos os elementos da matriz em


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.

Ve
rs

27.3 Criptanlise
27.3.1

Anlise simples de frequncia

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.

27.3.2

Vigenre

Notas

Uma longa e bastante abrangente exposio de cifras de diferentes pocas


dada no livro de Friedrich Bauer [Bau10]. H outros livros a respeito da histria da Criptograa, incluindo a descrio de antigas tcnicas criptogrcas,

notas de aula  verso 85 - Jernimo C. Pellegrini

CAPTULO 27.

326

CIFRAS HISTRICAS

dentre os quais destacamos o de Simon Singh [Sin00b; Sin10], o de Stephen


Pincock [Pin06], o de Helen Gaines [Gai89] e o (j antigo mas excelente) livro
de Laurence Smith [Smi55].

in
ar

O livro de James Boone [VBo05] 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 [Kah96],
trata da Histria da Criptograa 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 ns militares depois do


incio da guerra.

O uso de dispositivos mecnicos para encriptao levou ao

desenvolvimento de dispositivos mecnicos para criptanlise.

Em 1943 o pri-

lim

meiro computador digital eletrnico programvel, COLOSSUS, foi projetado


por um engenheiro britnico, tambm como parte desta corrida armamentista
pela informao.

Exerccios

Ex. 164  Implemente simuladores para todas as tcnicas descritas neste Ca-

Pr
e

ptulo (cifras e mtodos de criptanlise).

Ex. 165  Determine que cifra foi usada em cada mensagem e determine o
texto claro:

d)

e)

FQPRR R TIAALWHCHY O AQZ ERSGSCH JWPHU EAVO JRUHOOL LSK HY TMT


CLKRS OWNYSO TURI CARI
R WUDEDOKR GXUR H UHFRPSHQVDGR QR IXWXUR. D SUHJXLFD H UHFRPSHQVDGD
LPHGLDWDPHQWH
KLI VMGIV ULGLH V MLNVH HVN OREILH V HVN UFARO

Ve
rs

f)

OAADE IAOIE ACMHR MNUSN SHVQO IASSC BEIAA AUOEU TIMIU RSTTA OESEN
DVNVP IEMAL EACUE QMLPH AMEDO OGARH AVRRM UOAEU OILOQ SES

c)

Ex. 166  Discorra sobre a maleabilidade das cifras descritas neste Captulo.
Ex. 167  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.

Ex. 168  Determine em que condies a cifra de Vigenre tem sigilo perfeito
(e demonstre o fato).

Ex. 169  Mostre as semelhanas entre a mquina Enigma e a cifra de Vigenre.

lim

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Parte IV

Ve
rs

Pr
e

Apndices

327

Ve
rs

Pr
e

lim

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

in
ar

notas de aula  verso 85 - 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.

Em um grupo de

Pr
e

A.1 O problema do aniversrio

pessoas, qual a probabilidade de duas delas fazerem ani-

versrio 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

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
.

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 .

Lema A.2.

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 signica 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 ].
329

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE A. PROBABILIDADE

330

Pr[C 1 ]

um, porque temos

Ci

em

{e1 , e2 , . . . , ei }.

ento,

A probabilidade de

i
N , e a probabilidade de

ei+1

ser

e1

sozinho e no h dois elementos

i elementos diferentes
ei+1 ser igual a um dos anteriores ,
diferente dos anteriores 1 Ni . Ou

ocorre, ento h

seja,

Pr[C i+1 |C i ] = 1
Temos ento

Pr[C q ] =

q1
Y
i=1

1/N < 1

para todo

i
1
N

i,

ento

.
1

i
N

ei/N ,

lim

Como neste contexto

i
.
N

in
ar

Mas temos que

que possam ser iguais. Alm disso, se

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

de termos q
2N

Neste ltimo passo nos valemos

Ve
rs

1).

(e portanto

q(q 1)/2N <




in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Apndice B

lim

lgebra e Teoria dos Nmeros


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 denies e teoremas que normalmente fazem parte de cursos bsicos de lgebra,
simplesmente porque no so usados neste trabalho (por exemplo, os Teoremas

Pr
e

de Sylow no so mencionados aqui; os exerccios sobre estruturas algbricas


tambm tem um perceptvel vis; os exemplos de corpos nitos so principalmente em

GF (2m )).

O leitor certamente se beneciar de outras referncias, e

algumas so sugeridas ao nal do Apndice, na Seo de notas.

Denio B.1 (Divisibilidade). Um inteiro


para algum inteiro

k.

Denotamos

a|b,

a divide

outro inteiro

que se l  a divide

Denio B.2 (Mximo Divisor Comum). Sejam

se

b.

b = ak


inteiros tais que pelo

a e b o nmero
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).


Ve
rs

inteiro

menos um deles diferente de zero. O mximo divisor comum de

mdc pode ser descrito da seguinte


b 6 |a, mdc (a, b) = mdc (b, resto(a, b)). Se b|a ento

O Algoritmo de Euclides para obteno do

maneira: Sejam

a, b > 1.

Se

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.

Demonstrao.

O Algoritmo de Euclides calcula corretamente o mdc .

Se

b > a,

temos que

ab=0

e resto(a, b)=

mdc (b, resto(a, b)) = mdc (b, a),


331

a.

Assim,

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

332

e o algoritmo est correto para este caso.

a > b. Sejam q e r o quociente e o resto de


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,
Tratamos ento do caso em que
ento

in
ar

a b;

mdc (b, r) d = mdc (a, b).


Agora seja

d0 = gcd(b, r).

Ento

d0 |b, d0 |r,

d0 |a

porque

mdc (b, r) d0 = mdc (b, r).


mdc (b, r) mdc (a, b)

Ento

mdc (b, r) mdc (b, r),

lim

Como determinamos que

a = qb + r.

ento

mdc (b, r) = mdc (a, b).

Denio B.4 (Primos entre si). Dois inteiros

mdc (a, b) = 1.

Tambm dizemos que

a e b so primos entre si quando




so co-primos.

1.

Pr
e

Note que a denio de co-primos implica que todo nmero


com

Denio B.5 (Nmero Primo). Um inteiro positivo


outro nmero
A funo

co-primo

primo se para todo

mdc (k, p) = 1.

inteiro,

de Euler conceito fundamental de algumas construes cripto-

grcas, incluindo o RSA.

Denio B.6 (Funo

de Euler). Para qualquer inteiro positivo

d o nmero de inteiros positivos menores que

(n)

Ve
rs

A funo

tambm chamada de

tociente.

Exemplo B.7 (Funo

4,

porque contamos

n a funo
n.


co-primos com

de Euler). Temos (3) = 2, contando 1 e 2;


1, 2, 3, 4; e (6) = 2, porque s contamos 1 e 5.

Claramente, para

primo,

(5) =
J

(p) = p 1.

Denotamos a quantidade de nmeros primos menores que

n por (n).

Muitas

construes criptogrcas dependem da escolha de nmeros primos grandes, e


a segurana dessas construes depende da existncia

e densidade de primos.

Teorema dos Nmeros Primos, enunciado a seguir, nos garante que a densidade
dos primos suciente para que tais construes sejam seguras.

Teorema B.8 (Teorema dos Nmeros Primos).

primos menores ou iguais a n, ento


lim

(n) ln(n)
= 1.
n

Se (n) a quantidade de

notas de aula  verso 85 - Jernimo C. Pellegrini

333

Fundamentais em Teoria dos Nmeros e tambm em Criptograa, aritmtica


modular e o conceito de congruncia so descritos a seguir.
Damos uma descrio intuitiva desses conceitos: considere apenas os intei-

{ 0, 1, 2, 3, 4, 5 }.

Tentaremos denir operaes aritmticas

0 + 0, 1 + 3, 1 + 4,

dentro deste conjunto. Dentro deste conjunto podemos somar


mas se somarmos

3+4

obtemos

7,

in
ar

ros de zero a cinco,

que no membro do conjunto.

Para podermos somar (e realizar outras operaes) neste conjunto podemos


imaginar seus elementos dispostos em ordem, repetidos innitas vezes:

. . . , 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, . . .
Assim podemos imaginar que cada elemento

equivalente

a algum nmero in-

lim

teiro:

. . . , 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, . . .
Denimos 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
que

1 cngruo a 7 mdulo 6.

3 + 4 = 7,

Pr
e

denidas tambm para o conjunto que denimos:


mdulo 6. Denotamos

mdulo seis.

Dizemos

As operaes denidas para inteiros podem ser

7 1 (mod 6).

que cngruo a

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.

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


Ve
rs

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

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
usando operaes em inteiros sem sinal.

64

bits, e que estejamos

Normalmente quando uma operao

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

334

resultar em nmero maior que


resultado, mdulo

64

264 1,

o resultado ser o nmero cngruo a este

Para um exemplo concreto minimalista, usando uma palavra de oito bits

150 por dois, obtendo 300 44 (mod 28 ).

Mostramos a operao

in
ar

multiplicamos

a seguir, que feita como a soma usual, mas reduzindo todos os dgitos mdulo

dois

10010110
10010110
100101100

+
O

em negrito somente informa a CPU que houve sobrecarga, mas o resultado

armazenado, que o usurio poder usar, composto pelos outros bits,

44.

00101100,
J

lim

que representam o nmero

A relao de congruncia com um mdulo xo relao de equivalncia,


como mostramos a seguir.

Teorema B.12.

equivalncia.

Demonstrao.

Para qualquer m, a congruncia mdulo m uma relao de

Demonstramos a seguir reexividade, simetria e transitividade

i)
ii)

evidente que
Se

Se

a a (mod m),

j que

aa=0

a b (mod m) ento m|(a b), e portanto


m(k) = b a e m|(b a);

Temos que
iii)

m.

Pr
e

da relao de congruncia mdulo

m|(a b)

m|(b c)

ento

m|0

existe

m|((a b) + (b c)),

desde que

talque

m 6= 0;

mk = a b.

e portanto

m|(a c).


Exemplo B.13. A relao congruente a zero mdulo dois uma relao de

Ve
rs

equivalncia (que dene os nmeros pares):

a a (mod 2);

Se

a b (mod 2)

(ou seja,

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

comum denotar a classe de equivalncia

formam relaes de equivalncia.

J
a (mod n)

Podemos somar, subtrair e multiplicar congruncias:

1 1 + 1 = 10,

ou seja, resulta em zero com carry (vai-um).

por

[a]n .

notas de aula  verso 85 - Jernimo C. Pellegrini

335

Suponha que a b (mod c) e x y (mod c). Ento


axby

(mod c)

(B.1)

ax by

(mod c).

(B.2)

Demonstrao.

in
ar

Teorema B.14.

by
ax
Temos que
e
so inteiros. Assim, tambm deve ser
c
c
(a+b)(x+y)
by
ax
inteiro
=

. Com isso provamos B.1 (a prova para a


c
c
c
subtrao anloga prova para a adio).
abxy
Tambm devem ser inteiros
= a (by)
+ y ax

c
c
c , e provamos B.2.
No entanto, dividir congruncias s possvel em alguns casos:

(mod 10),

8 6 3

mas

(mod 10).

lim

16 6

S podemos dividir congruncias por um inteiro co-primo com o mdulo.

Teorema B.15 (Lei do cancelamento).

co-primos, ento x y (mod m).

Se ax ay (mod m) e se a e m so

Teorema B.16.

a b (mod pq).

Demonstrao.

Pr
e

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.

Sejam p e q primos. Se a b (mod p) e a b (mod q), ento

Se

a b (mod p)

a b (mod q),

temos

p|ab

q | a b.

so primos e

(a b) divisvel por ambos, temos que (a b)


pq , e conclumos que pq|(a b), ou seja, a b


Como

deve ser tambm divisvel por

Ve
rs

(mod pq).

O Lema de Bzout garante a existncia de solues inteiras para uma classe

de equaes do tipo

ax + by = d.

Se a, b so inteiros diferentes de zero com


mdc (a, b) = d, ento existem inteiros x, y tais que ax + by = d.
Lema B.17 (Lema de Bzout).

O nmero

inteiras

tambm o menor inteiro positivo para o qual h solues

para

ax + by = d.

Exemplo B.18 (Lema de Bzout). Sejam

mdc (a, b) = 3,

a = 15

b = 33.

Sabemos que

ento o Lema de Bzout nos garante que devem existir

x, y

tais

que

15x + 33y = 3,

ou (dividindo ambos os lados por

x = 2

y=1

3) 5x + 11y = 1.

tornam a equao verdadeira.

E realmente, os inteiros

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

336

Dados

a, b Z,

o Algoritmo Extendido de Euclides pode ser usado para

obter o mdc de dois nmeros junto com


Bzout,

x, y Z

que satisfazem a identidade de

ax + by = mdc (a, b).

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

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

lim

Lema B.19.

Provamos apenas que o resultado do algoritmo correto.

prova de que o algoritmo para e que roda em tempo polinomial ca como exerccio para o leitor.

Por induo no segundo parmetro (b):

ax + by = a,

zero).

que divide

Hiptese de induo: Se
Passo:

b=0

o algoritmo retorna

Pr
e

Com base de induo, quando


nos d

x=1

e zero (e tambm claramente o

hx, yi = ext_mdc(a, b),

ento

ax + by|a

y = 0. Isso
mdc de a e
e

ax + by|b.

Ve
rs

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,

que no negativo e divide tanto

como

r,

e portanto divide

r + bq = a.

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

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

Teorema B.21 (Teorema Chins do resto).

a1 x b1

(mod m1 )

a2 x b2

(mod m2 )

,
as x bs

(mod ms )

notas de aula  verso 85 - Jernimo C. Pellegrini

337

tem uma nica soluo, que nica mdulo M .


Demonstrao.

Damos uma demonstrao construtiva na forma de um algo-

ritmo que usa o algoritmo estendido de Euclides.

denotamos

ai x bi (mod mi ).

Calculamos cada um destas solues e as

ci .

Temos ento um novo sistema:

x c1

(mod m1 )

x c2

(mod m2 )

,
x cs

de

lim

(mod ms )

Calcule, para todo i,


os

in
ar

Primeiro, sabemos que h uma soluo para cada uma das congruncias
individualmente:

Mi = M/mi (o produto de todos os mk exceto mi ). Como


mi e Mi so tambm co-primos.
Queremos agora encontrar o inverso de cada mi . Use o algoritmo estendido
Euclides pra encontrar nmeros ki e li tais que

mi

so co-primos,

Pr
e

ki mi + li Mi = 1

Temos ento

li M i 1

li

Mi . Como li Mi =
por mi :

o inverso de

por todos os

exceto

li M
mi , ento li Mi deve ser divisvel

li M i 1

(mod mi )

li M i 0

(mod mj ) (i 6= j).

Ve
rs

A soluo

mj

ou seja,

(mod mi ),

X=

s
X

ci li Mi ,

i=1

porque

ai X = ai

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.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

338

3x 3

(mod 5),

4x 6

(mod 11),

5x 1

(mod 8).

x1

(mod 5)

x7

(mod 11)

x5

(mod 8)

in
ar

Exemplo B.22 (Teorema Chins do resto). Considere as congruncias

Determinamos que

Temos

c1 = 1, c2 = 7, e c3 = 5.
M = 5 11 8 = 440. Os Mi

lim

e portanto

so:

M1 = 440/5 = 88

M2 = 440/11 = 40
M3 = 440/8 = 55.

Pr
e

Usando o algoritmo extendido de Euclides, determinamos que

(35) 5 + 2 88 = 1
11 11 + (3) 40 = 1
7 8 + (1) 55 = 1.

Teramos ento os li iguais a 2, -3 e -1.


Tomamos l1

= 1, l2 = 3 (mod 1)1 = 8,
Mi :

Ve
rs

os inversos dos

e l3

= 1 (mod 8) = 7.

l1 M1 = 2 88

(mod 5) = 1

l2 M2 = 8 40

(mod 11) = 1

l3 M3 = 7 55

(mod 8) = 1.

Estes so

Podemos nalmente calcular, ento,

x = 2(88) + 7(8)(40) + 5(7)(55)


= 4341 = 381

(mod 440).

E vericamos que

3(381) = 1143 3

(mod 5),

4(381) = 1524 6

(mod 11),

5(381) = 1905 1

(mod 8).
J

notas de aula  verso 85 - Jernimo C. Pellegrini

339

Denio B.23 (Sistema completo de resduos). Um sistema completo de rede inteiros

todo

R = {r1 , r2 , , rs } tal que para


ri tal que n ri


inteiro, h algum

Exemplo B.24 (Sistema completo de resduos). O conjunto

00

(mod 4)

51

(mod 4)

10 2

(mod 4)

15 3

(mod 4).

Qualquer inteiro ser cngruo a

0, 5, 10

ou

15,

porque

{0, 5, 10, 15} um

4:

0, 1, 2

ou

lim

sistema de resduos mdulo

3 (mod 4),

transitiva:

e portanto tambm a

n 5 (mod 4)
n 10 (mod 4)
n 15 (mod 4)

Pr
e

n 1 (mod 4), 1 5 (mod 4)


n 2 (mod 4), 2 10 (mod 4)
n 3 (mod 4), 3 15 (mod 4)

in
ar

m um conjunto
i 6= j , ri 6 rj (mod m) e para
(mod m).
sduos mdulo

Denio B.25 (Sistema reduzido de resduos). Um sistema reduzido de re-

m um conjunto de inteiros R = {r1 , r2 , , rs }


i 6= j , ri 6 rj (mod m), todos os ri forem co-primos com m e
inteiro co-primo com m, h algum ri tal que n ri (mod m).

sduos mdulo

O sistema de resduos do ltimo exemplo no reduzido, porque

2.

Exemplo B.26 (Sistema reduzido de resduos). O conjunto

Ve
rs

reduzido de resduos mdulo

3.

para todo

n


mdc (4, 10) =

{1, 3} um sistema

4:

11

(mod 4)

33

(mod 4).

0, 1, 2

Um nmero inteiro cngruo a


com 4, restando

tal que para

0 e 2 no so co-primos
n co-primo com 4, temos que n
3 (mod 4).
J
ou

mdulo 4.

Para qualquer inteiro

ser necessariamente cngruo a

ou

Outro sistema reduzido de resduos mdulo

Teorema B.27 (Teorema de Euler).

a, se a e m so co-primos ento

{3, 5}.

Para todo inteiro positivo m e todo inteiro

a(m) 1

(mod m).

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

340

Exemplo B.28 (Teorema de Euler). Sejam

m = 21 e a = 16. Pelo Teo16(21) 1 (mod 21). Podemos calcular (21), a


2
menores que 21 e co-primos com 21, que igual a 12.

rema de Euler deveramos ter


quantidade de nmeros

1612 = 281474976710656 1

in
ar

Vericamos ento que realmente,

(mod 21).

Teorema B.29 (Pequeno Teorema de Fermat).

Seja p um nmero primo. Para

lim

todo a inteiro,

ap1 1

(mod p).

Pr
e

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

mod p.

Exemplo B.30 (Pequeno Teorema de Fermat). Seja

a7 a (mod 7).

Ve
rs

Teorema diz que

p = 7.

ap a

Para todo

a,

E de fato,

17 1

(mod 7)

2 = 128 2

(mod 7)

11 = 19487171 4

(mod 7).

Na ltima linha observamos tambm que que

11 4 (mod 7).

A denio que damos de raiz primitiva mdulo

no a normalmente

dada me textos de Teoria de Nmeros; ela , no entanto, equivalente denio


comum.

Denio B.31 (Raiz Primitiva). Sejam

m
m.

uma raiz primitiva mdulo


reduzido de resduos mdulo

2 1,

quando

2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20.

a e m co-primos. Dizemos que a


a, a2 , , a(m) formam um sistema


notas de aula  verso 85 - Jernimo C. Pellegrini

341

Exemplo B.32 (Raiz primitiva). Sejam

a=2

21 = 2 2

(mod 13)

2 =88

(mod 13)

(mod 13)

(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

lim

2 = 512 5
10

= 1024 10

11

= 2048 7

(mod 13)

12

= 4096 1

(mod 13).

2
2
2

in
ar

(mod 13)

2 =44

(mod 13)

2 uma raiz primitiva mdulo 13: Uma vez que 13 primo, (13) = 12
2i com 1 i 12 formando um sistema reduzido de resduos (note que
13 primo todo 1 i 12 co-primo com 13).
J

Ou seja,

Pr
e

 temos
como

m = 13.

Resduos quadrticos, denidos a seguir, so usados diretamente na construo de algumas ferramentas criptogrcas.

Denio B.33 (Resduo Quadrtico). Dado um nmero primo


inteiro tal que
que

p - a.

Se existe um

inteiro tal que

um resduo quadrtico mdulo

p.

p,
x2 a (mod p),

um

dizemos

tem duas razes quadradas,

Ve
rs

Demonstrao. a

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).
diferentes, pois se fossem o mesmo teramos que
acontecer porque teramos
mpar e

2x 0 (mod p),
p.

ser co-primo com

x e x. Estes dois devem ser


x x (mod p), que no pode
que contradiria o fato de p ser


Exemplo B.35 (Duas razes quadradas mdulo

10

um resduo quadrtico mdulo

13,

porque

p). Seja p = 13. Temos que


62 = 36, e 36 (mod 13) = 10.

Ento,

Observe que

62 = 36 10
2

7 = 49 10

6 7 (mod 13).

(mod 13)
(mod 13).
J

O Teorema e o Lema a seguir sero usados na demonstrao do critrio de

Euler.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

342

Seja h o menor inteiro positivo tal que para algum a, ah 1


(mod m). Se a (mod m), ento h|r.

Teorema B.36.
r

in
ar

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
2k
exemplo g , 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. 

Dado um nmero primo p, um nmero


a 6 0 (mod p), se a um resduo quadrtico mdulo p,
a

e em caso contrrio
a

Seja

p1
2

(mod p),

(mod p).

Comeamos notando que

(a

e portanto

p1
2

Pr
e

Demonstrao.

p1
2

lim

Teorema B.38 (Critrio de Euler).

p1
2

)2 = a(p1) 1

(mod p),

1 (mod p).

uma raiz primitiva mdulo

p1
2

g k(

p.

Deve haver algum

p1
2 )

o
k( p1
2 )

divisvel por

p1

p1
2 )

g k(

em outras palavras, de acordo com o Lema B.37, se

Ve
rs

Note que

a = 92 4 6 0
b = 2 6 0

(mod p) 1 (mod p) se
k par 
e somente se a resduo


ou seja, se e somente se

quadrtico.

Exemplo B.39 (Critrio de Euler). Seja

tal que

(mod p).

No entanto, de acordo com o Lema B.36,


e somente se

p = 11.

Sejam tambm

(mod 11)

(mod 11).

no resduo quadrtico mdulo

11.

Temos ento:

a10/2 = 815 = 3486784401 1


b10/2 = 25 = 32 1

(mod 11)
(mod 11).
J

Outros dois conceitos fundamentais para diversas construes criptogrcas

so os smbolos de Legendre e de Jacobi.

notas de aula  verso 85 - Jernimo C. Pellegrini

343

Denio B.40 (Smbolo de Legendre). Dados um inteiro

a e um
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

Exemplo B.41 (Smbolo de Legendre para


para

12 1

(mod 7)

32 2

(mod 7)

(mod 7)

7|7

42 2

Ve
rs

12 8
32 9

(mod 7)

(mod 7)

A tabela a

Denio B.42 (Smbolo de Jacobi). Sejam

tal que

Pr
e

7|0

(a/7)). Seja p = 7.
a de zero a 10.
 
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

p,

lim

(a/p)

seguir lista o smbolo de Legendre

(a/p).

primo

in
ar

denimos o

a um inteiro e n um inteiro mpar


p1 p2 . . . pk .

o produto dos primos (no necessariamente distintos)

Denimos o smbolo de Jacobi:

a
n

Quando


=

a
p1



a
p2

a
pn

primo o smbolo de Jacobi igual ao smbolo de Legendre.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

344

Exemplo B.43 (Smbolo de Jacobi para

45

3 3 5,

(a/15)).

Seja

n = 45.

A fatorao de

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
Teorema B.44.

Demonstrao.

in
ar

0
45

lim

Para todo p primo e x inteiro,


 
x
= x(p1)/2 (mod p).
p

Se

resduo quadrtico mdulo

x(p1)/2

Pr
e

(mod p) = g

p,

ento

x = g 2k ,


2k (p1)/2

= g k(p1)

k
= g (p1)

= 1k

Se

(mod p).

x = g 2k+1 , e
(p1)/2
(mod p) = g 2k+1

no resduo quadrtico, ento

Ve
rs

x(p1)/2

Mas

g (p1)/2

= g k(p1) g (p1)/2
= g (p1)/2

2

(mod p) = g p1

(mod p) = 1

e como um valor cujo quadrado um deve ser

Mas como

g (p1)/2 1

raiz primitiva,

Exemplo B.45 ((x/p)

(22/17) = 1.

(p1)/2

(mod p).

+1

ou

1,

(mod p),
temos que

(mod p).

6 1 (mod p),

= x(p1)/2 (mod p)).

Sejam

g (p1)/2 (mod p) = 1.


p = 17

x = 22.

Temos

Vericamos tambm que


16

22 2

(mod 17) = 16 1

(mod 17).
J

notas de aula  verso 85 - Jernimo C. Pellegrini

345

Se g uma raiz primitiva mdulo n e


gr gs

(mod n)

ento r s (mod (n)).


Exemplo B.47. Escolhemos 13 para o mdulo.

Sabemos que

13 2. Temos 27 219 (mod 13).


7 19 (mod 12)  o que de fato verdade.

Uma raiz primitiva mdulo


garante que

in
ar

Teorema B.46.

(13) = 12.

O Teorema nos

Denio B.48 (Grupo). Um grupo consiste de um conjunto G e uma operao


que associa pares

(a, b)

de elementos de

a outros elementos

de

satisfaa:

Dizemos que

e G tal que para


elemento neutro de G;

H um nico elemento

a G,
1
que a

Para todo

existe um elemento

Dizemos

simtrico

de

a1

a.

todo

a G, ea = a = ae.

tal que

Pr
e

(ou seja, a operao associativa);

comum denotar um grupo por

(G, ),

e que

lim

a, b, c G, (ab)c = a(bc)

G,

onde

a1 a = e = aa1 .

o conjunto e

a operao.

Quando a notao usada para a operao de grupo  +, normalmente


denota-se o elemento neutro

por

e o inverso de

por

quando se usa , comum denotar o elemento neutro por

x.

Similarmente,

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

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

junto de todas as funes bijetoras

f :AA

um conjunto qualquer. O con-

com a operao de composio

um grupo:

A composio de funes associativa;

A funo identidade

Como as funes so bijetoras, todas tem inversa:

funciona como elemento neutro:

(f ) = f ;

f f 1 = .
J

A seguir esto listadas algumas denies relacionadas a grupos. Estas de-

nies so usadas em diversos algoritmos criptogrcos.


Primeiro, um grupo comutativo se sua operao comutativa.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

346

Denio B.51 (Grupo comutataivo). Um grupo

(G, )

comutativo ou abe-

a, b G, ab = ba.

Exemplo B.52 (Grupo comutativo). O grupo

(R, +)

M2 o grupo das matrizes no


(M, ), onde a operao de multi-

Exemplo B.53 (Grupo no comutativo). Seja

singulares 2 2 com elementos reais.

Ento

comutativo.

in
ar

liano se para todos

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

no

Este grupo, no entanto,

comutativo, porque a operao de

multiplicao para matrizes no comutativa.

Denio B.54 (Ordem de um grupo). O nmero de elementos em um grupo


do grupo.

Dizemos tambm que o grupo

lim

ordem

chamado de

conjunto nito. Pode-se denotar a ordem de um grupo


notao para tamanho de conjuntos,

Denio B.55 (Subgrupo). Seja

H G,

ento

um

subgrupo

de

nito

se o

usando a mesma

|G|.

(G, ) um grupo. Se (H, )


G, e denotamos H G.

um grupo e

Exemplo B.56 (Subgrupo). J observamos que

Z3 Z4

(Z4 , +) um grupo. Se tomar(Z3 , +), que tambm um grupo.


(Z4 , +).
J

com a mesma operao temos

Pr
e

mos

Dizemos que este um

subgrupo

de

Denio B.57 (Subgrupo gerado). Seja


conunto
de

G um grupo e A subconjunto do
subgrupo de G gerado por A, denotado < A >, o menor subgrupo
contm todos os elementos de A.


G.

que

Exemplo B.58. Seja G = (Z, +) o grupo dos inteiros com adio.


A = { 3, 5 }. Ento < A > o subgrupo de Z cujos elementos so da
3a + 5b, com a, b N:

Tome
forma

Ve
rs

3, 5, 3 + 3, 3 + 5, 5 + 5, 3 + 3 + 3, 3 + 3 + 5, . . .
J

Denio B.59 (Ordem de elemento em grupo). Seja

ordem

de

a ordem do subgrupo gerado por

Exemplo B.60. Seja

lncia de

1, 3, 5

G um grupo e a G. A
| < a > |).


(ou seja,

A = { [1]8 [3]8 [5]8 [7]8 } o conjunto das classes de equiva8. Ento A, com a operao de multiplicao, um

mdulo

grupo.

A ordem de

[3]8

em

portanto a ordem de

a ordem do subgrupo gerado por

3.

Temos

< 3 >= { 31 , 32 , 33 , 34 , . . . }
= { 3, 9, 3, 9, . . . }
= { 3, 9 } ,
[3]8

em

2.

notas de aula  verso 85 - Jernimo C. Pellegrini

347

Um grupo cclico aquele cujos elementos podem ser enumerados usando a


operao de grupo, iniciando com um nico elemento

(G, )

chamado de gerador.

cclico gerado por um

nico elemento. Em outras palagras, existe um elemento

{g m |m Z} (todo
gerador do grupo.

elemento do grupo uma potncia de

g G tal que G =
g ). Dizemos que g


in
ar

Denio B.61 (Grupo Cclico). Um grupo

g,

Exemplo B.62 (Grupo cclico). O grupo de inteiros no negativos mdulo

n
(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).
J
com a operao de adio um grupo cclico. Por exemplo, em

Exemplo B.63. Os inteiros mdulo

com a operao de multiplicao

Teorema B.64.

so co-primos.

lim

formam um grupo, porque no h inverso para o zero.

Em Zn , k tem inverso multiplicativo se e somente se k e n

Pr
e

Demonstrao. Denotaremos por Zn o conjunto de elementos x Zn


mdc (x, n) = 1.

Seja a Zn . Dena a funo fa : Zn Zn como


fa (x) = ax
Mostramos agora que

fa (y)

para

no
J

x, y Zn .

fa

(mod n).

injetora para qualquer

Ento

tais que

ax (mod n) = ay

a Zn .

Suponha que

fa (x) =

(mod n)

ax ay

(mod n) = 0

a(x y)

(mod n) = 0

n | a(x y).

a Zn , 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.

n - a,

porque

Ve
rs

Mas

O grupo denido no prximo corolrio chamado 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.

grupo multiplicativo de

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

348

O prximo exemplo especialmente relevante em Criptograa.

Exemplo B.66. Para qualquer

primo, o conjunto

com a operao de multiplicao mdulo

in
ar

{ 1, 2, . . . , p 1 }

1, 2, . . . , p 1 no prima
p 1 par e composto).

importante observar, no entanto, que a ordem de


(porque

primo, e como supomos que

um grupo cclico.

grande,

Um grupo cclico pode ter mais de um gerador. Quando a ordem do grupo


um nmero primo, o grupo cclico  o Exerccio 182 pede a demonstrao
deste fato, enunciado no prximo Teorema.

Todo grupo de ordem prima cclico.

Teorema B.68.

Todo subgrupo de um grupo cclico , tambm, cclico.

lim

Teorema B.67.

Denio B.69 (classe lateral). Seja

g G,

um grupo e

H G.

Ento, para todo

gH = {gh : h H}

classe lateral esquerda de H em G,

Pr
e

uma

Hg = {hg : h H}

uma

classe lateral direita de H em G.

Exemplo B.70 (Classe lateral). Considere o grupo aditivo dos inteiros, e seja

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,

Ve
rs

temos

gH = { 10, 11, 12, 13, 14, 15 } .

O Teorema de Lagrange identica uma relao entre as ordens de grupos

nitos e seus subgrupos.

Seja G um grupo nito, e H G. Ento a


ordem de H divide a ordem de G. Alm disso, |H|/|G| a quantidade de classes
laterais esquerda de H em G.

Teorema B.71 (de Lagrange).

Um conceito importante e que surge recorrentemente no estudo das propri-

edades de construes criptogrcas o de homomorsmo.

Denio B.72 (Homomorsmo em grupos). Sejam

f :GH
x, y G.

pos. Uma funo


para todos

um

homomorsmo

(G, ) e (H, ) dois gruf (x y) = f (x) f (y)




se

notas de aula  verso 85 - Jernimo C. Pellegrini

349

Note que neste contexto

denota uma operao arbitrria, e no necessa-

riamente o ou exclusivo.

f (x) = ex

A funo

um homomorsmo de

em

G = (Z, +) e H = (R, ).
H , porque para quaisquer

in
ar

Exemplo B.73 (Homomorsmo em grupos). Seja

x, y Z,
f (x + y) = ex+y = ex ey = f (x)f (y).

Grupos denem apenas uma operao sobre seus elementos.


algbrica de

anel

A estrutura

dene duas operaes, sendo uma distributiva sobre a outra,

Denio B.74 (Anel). Seja


operao associativa em

R.

(R, +)

lim

de forma que podemos denir polinmios, por exemplo.

um grupo comutativo aditivo e

Se h distributividade de

sobre

+,

uma

ou seja,

a(b + c) = ab + ac
para todos

a, b, c R,

ento dizemos que

(R, , +)

um

anel.

so denotados

Zn .

Pr
e

Exemplo B.75 (Anel). Os anis formados com inteiros e aritmtica mdulo


Por exemplo,

Z5

o anel formado por

{0, 1, 2, 3, 4}

com as

operaes de soma e multiplicao usuais mdulo cinco.

Note que em um anel nem todo elemento tem inverso multiplicativo. Por
exemplo,
mas

Z4

(inteiros com as operaes aritmticas mdulo quatro) um anel,

no tem inverso  no h

Exemplo B.76. Seja

n N+ .

2x = 1.

tal que

O conjunto das matrizes quadradas de ordem

com as operaes usuais de multiplicao e soma de matrizes, um anel:


As matrizes quadradas com a operao de soma so um grupo comutativo;

Ve
rs

n,

x Z4

A multiplicao de matrizes associativa,

A(BC) = (AB)C ;

Vale a distributividade da multiplicao sobre a soma,

AC .

Denio B.77 (Unidade). Uma

unidade

A(B + C) = AB +
J

em um anel um elemento que tem

inverso multiplicativo.
Em

Z4

as unidades so

3;

j em

as unidades so apenas

No anel de matrizes quadradas de ordem

n,

1.

as unidades so as matrizes no

singulares.

(R, , +) um anel, e seja R o


(R , ) um grupo comutativo, chamado de


Denio B.78 (Grupo de unidades). Seja


conjunto das unidades de

grupo de unidades de R.

R.

Ento

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

350

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,

in
ar

8, 11, 13, 14}.


Denio B.79 (Elemento irredutvel em um anel). Seja

x R

Um elemento

irredutvel

(R, , +)

um anel.

se diferente de zero, no unidade e no

pode ser representado como a multiplicao de dois outros elementos em

que

no sejam unidade.

A estrutura algbrica que permite realizar naturalmente as operaes aritmticas usuais o corpo, denido a seguir.

Denio B.80 (Corpo). Seja

(F, , +) um anel. Se neste anel no h divisores


+) e todo elemento diferente de zero
dizemos que F um corpo.


tem inverso multiplicativo,

lim

de zero (ou seja, do elemento neutro para

Uma denio alternativa de corpo a que segue (o leitor poder facilmente


vericar que as duas denies so equivalentes).

Denio B.81 (Corpo). Seja

(F, , +)

um corpo.

Exemplo B.82 (Corpos). Os conjuntos


J

ou

C, R

(F \ {0}, )

um grupo


3

so corpos .

no corpo (nem todo inteiro tem inverso multiplicativo).

raiz da unidade (informalmente  n-sima raiz de um), que


1 para R, Q e Z, admite valores diversos em outros corpos.

um anel. Se

Pr
e

comutativo, ento

Denio B.83 (Raiz da unidade). Em um corpo, um elemento

raiz da unidade

se existe

tal que

xn = 1,

onde

trivialmente

n-sima

o elemento neutro para

multiplicao.

Exemplo B.84 (Quatro razes quartas da unidade em

Ve
rs

razes quartas para

Em

h quatro

(1)4 = (+1)4 = (i)4 = (+i)4 = 1.


J

Teorema B.85.

em C, que so

C).

1:

Dado n inteiro, h exatamente n razes n-simas da unidade


e(2ik)/n ,

para k = 0, 1, . . . , n 1.
Demonstrao.

O resultado segue usando a frmula de Euler,

ei = cos + isen ,

e observando que seno e cosseno tem o mesmo perodo (2 ).

3 No

entanto,

no ordenado e

no completo

notas de aula  verso 85 - Jernimo C. Pellegrini

351

e(2i0)/n = e0 = 1
e

(2i1)/n

2i/3

=e

e(2i2)/n = e4i/3

so as trs razes cbicas de

Teorema B.87.

grupo cclico.

Demonstrao.

Seja

n = 3.

i 31
=
2
!

i 31
=
2

1.

(i 3)3 3(i 3)2 + 3i 3 1


23

(i 3)2 (i 3) 3(i 3)2 + 3i 3 1


=
3
2

3i 3 + 9 + 3i 3 1
=
23
8
= = 1.
8

Ento,

lim

Pr
e

i 31
2

!3

C).

in
ar

Exemplo B.86 (Trs razes cbicas da unidade em

As n razes n-simas da unidade em um corpo formam um

Sejam

k, k 0 N+ .

Ento

nk nk = e(2ik)/n e(2ik )/n


0

= e(2i(k+k ))/n

Ve
rs

= e[2i(k+k

= ( n )

k+k0

(mod n))]/n

Exemplo B.88 (Grupo cclico de razes da unidade em

C) .
k ,

C o grupo
0 k < n.
A Figura a seguir mostra, no plano complexo, as razes da unidade para n = 16
(i)/8
4
8
12
(e para esta caso, = e
). Note que = i, = 1 e
= i.

cclico gerado pela raiz da unidade

= e2i /n

dado por

Em

com

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
Lema B.89.

lk
ln
= nk .

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

352

Demonstrao.

Trivialmente,

in
ar

lk

lk
ln
= e(2i)/ln

k
= e(2i)/n
= nk .

O ltimo Lema nos d um Corolrio relevante para a discusso do algoritmo


da transformada rpida de Fourier:

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
nk

lim

Corolrio B.90.

2

= n/2 .

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
j
nk = 0.

Lema B.91.

Demonstrao.

Pr
e

0jn1

A srie descrita,

n
X

(nk )j ,

xi =

i=0

Ve
rs

temos

nk

geomtrica. Lembrando que

xn+1 1
,
x1

j

0jn1

(nk )n 1
nk 1

(nn )k 1
nk 1
k
1 1
= k
n 1
= 0.

Denio B.92 (Isomorsmo em estruturas algbricas). Sejam


instncias de grupo, anel ou corpo. Uma bijeo

um

B duas
AeB

entre os elementos de

isomorsmo entre A e B se e somente se, para cada operao denida


A e sua operao correspondente denida na estrutura B ,

na estrutura

x, y A, f (x y) = f (x) f (y).

Quando tal isomorsmo existe, dizemos que

so

isomorfos.

notas de aula  verso 85 - Jernimo C. Pellegrini

353

Exemplo B.93 (Isomorsmo em estrutura algbrica). Sejam

B = ({ x : x = 2k, k Z } , +) o grupo
isomorfos porque existe a bijeo f (x) = 2x, e

grupo dos inteiros e


Ambos so

A = (Z, +)

dos inteiros pares.

x, y Z, 2(x + y) = 2x + 2y.

in
ar

Denio B.94 (Caracterstica de um Anel ou Corpo). Seja

R um anel com
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.

elementos identidade

Exemplo B.95. Em

(Z5 , , +)

temos

1 + 1 + 1 + 1 + 1 = 0,

5.

portanto a carac-

lim

terstica do anel

O conceito de polinmio abordado a seguir, no contexto de estruturas


algbricas.

Denio B.96 (Polinmio sobre estrutura algbrica). Seja

Pr
e

anel. Uma expresso da forma

um corpo ou

f (x) = a0 + a1 x + a2 x2 + + an cn
ai , x A

onde

um

polinmios sobre

polinmio de grau n sobre A.


A[x].

O conjunto de todos os

denotado

Exemplos familiares so

R[x]

C[x],

conjuntos de polinmios sobre

C.

Quando quisermos tratar de polinmios sobre um corpo ou anel genrico


usaremos a notao

F[x]

R[x].

Observando que h operaes de soma e multiplicao denidas para polinmios, conclumos que podemos trat-los tambm como estruturas algbricas: um
conjunto de polinmios com operaes de soma e produto um anel polinomial.

R[x] o conjunto de todos os polinmios sobre R,


(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

Ve
rs

Assim, uma vez que

podemos denir o anel

ambas as operaes, h inverso aditivo, valem associatividade, comutatividade


e distributividade de multiplicao sobre soma.
A noo de elemento irredutvel denida para anis importante em anis

polinomiais. Um polinmio que no pode ser fatorado dito

irredutvel.

Denio B.97 (Polinmio irredutvel). Um polinmio


sobre

ou

ou

se tem grau maior que zero e para todos

constante.

f A[x] irredutvel
g, h A[x], se gh = f ento


Denio B.98 (Corpo nito). Um corpo nito se tem quantidade nita de


elementos.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

354

Corpos nitos so tambm chamados de

corpos de Galois.

A quantidade de elementos em um corpo nito sempre um primo (normalmente denotamos

Fp )

ou potncia de primo (neste caso denotamos

Fpm

ou

Exemplo B.99 (Corpos nitos).

Z2

in
ar

GF (pm )).
com as operaes usuais mdulo dois

um corpo. Alm disso, soma e multiplicao mdulo dois so o mesmo que ou


exclusivo e e lgicos.

(mod 2) = 0

0+1

(mod 2) = 1

1+0

(mod 2) = 1

1+1

(mod 2) = 0

00
01
10
11

lim

0+0

(mod 2) = 0
(mod 2) = 0
(mod 2) = 0
(mod 2) = 1

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

tem inverso multiplicativo, tanto

como

tem

inversos aditivos, e vale distributividade.


O corpo

Z5 ,

um corpo nito.

com as operaes usuais de soma e multiplicao mdulo 5,

Exemplo B.100 (Zk para

no primo no corpo nito). Tomemos

que no primo nem potncia de primo.

Z6

nito, porque s h inversos multiplicativos para

k = 6,

com as operaes usuais no corpo

(no corpo), conforme

Ve
rs

pode ser facilmente vericado na tabela abaixo.

Para

J
m

GF (p )

podemos representar cada elemento como um polinmio (na

verdade, uma classe de equivalncia de polinmios) com coecientes em

Fp .

Podemos facilmente denir estruturas ntas de polinmios usando aritmtica

modular, da mesma forma que para inteiros.

Denio B.101. Seja

que so resto de diviso por

A[x],

e denotado

A[x]f .

A[x]. O conjunto de todos os g


conjunto de polinmios mdulo f em


um polinmio em

em

A[x]

notas de aula  verso 85 - Jernimo C. Pellegrini

355

f (x) = x7 + x3 + 1, ento Z11 [x]f o conjunto


Z11 [x] que so resto de diviso por x7 + x3 + 1.

Por exemplo, se

Ak [x]f

Computamos

Dividimos

Reescrevemos os coecientes de

em dois polinmios

f = gh;

por

e tomamos o resto

mdulo

Sejam

g(x) = x2 + x

k.

Pr
e

h(x) = 2x + 1

Calculamos

fazemos:

(que tambm um polinmio);

Exemplo B.102 (Operao modular em polinmios). Considere

x2 + 2 .

h,

in
ar

Para aplicar uma operao em

de todos os

lim

polinmios em

Z4 [x] mdulo

g(x)h(x) = (x2 + x)(2x + 1) = 2x3 + 3x2 + x.


Dividimos por

mdulo

4,

obtendo

2x + 3

e resto

3x 6.

Agora reescrevemos

obtendo

Ve
rs

x2 + 2 ,

Assim, o resultado da operao

gh

x + 2.
o polinmio

x+2

em

Z4 [x].

A operao usada no ltimo exemplo foi a de multiplicao. O procedimento

o mesmo para soma.

GF (pm ), escolhemos um polinmio irredutvel f (x) de grau


k . O conjunto de polinmios com soma e multiplicao mdulo f (x) um corpo
k
isomorfo a F G(p ).
Para representar

Exemplo B.103 (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

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

polinmios mdulo

f (x)

e seus coecientes.

a3 , a2 , a1 , a0
0, 0, 0, 0
0, 0, 1, 0
0, 1, 0, 0
1, 0, 0, 0
0, 0, 1, 1
0, 1, 1, 0
1, 1, 0, 0
1, 0, 1, 1
0, 1, 0, 1
1, 0, 1, 0
0, 1, 1, 1
1, 1, 1, 0
1, 1, 1, 1
1, 1, 0, 1
1, 0, 0, 1
0, 0, 0, 1

lim

p(x) p(x) (mod f (x))


0
0
x1
x
x2
x2
3
x
x3
4
x
x+1
x5
x2 + x
x6
x3 + x2
7
3
x
x +x+1
x8
x2 + 1
9
x
x3 + x
10
2
x
x +x+1
x11
x3 + x2 + x
x12
x3 + x2 + x + 1
13
x
x3 + x2 + 1
14
x
x3 + 1
15
x
1

in
ar

356

Pr
e

Esta tabela construda da seguinte maneira: depois do zero, listamos

x1 , x2 , . . . , x15 ,

f (x) = x + x + 1. Ou seja, usag(x) = x como gerador. Estes restos so a representao dos


4
elementos de GF (2 ) como polinmios.
i
O ndice de cada elemento obtido de x i.

e os restos da diviso destes polinmios por


mos o polinmio

O leitor pode vericar 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. Observa-

(x5 )(x6 ) = x11 ; vericaremos que o mesmo acontece com os respectivos


2
polinmios na segunda linha da tabela. Comeamos multiplicando x + x por
3
2
5
4
3
x + x , que resulta em x + 2x + x . Reescrevendo os coecientes mdulo 2,
5
3
3
2
temos x + x . Dividindo por f (x), o resto x + x .
J

Ve
rs

mos que

Neste exemplo geramos todos os polinmios de

mio

g(x) = x.

GF (24 )

partindo do polin-

Polinmios que geram corpos nitos desta forma so chamados

de polinmios primitivos (analogamente a razes primitivas, que geram grupos


multiplicativos).

Denio B.104 (Polinmio primitivo). Um polinmio primitivo em um


corpo nito se gera o corpo nito.

GF (3m ). Como em F3 h apenas trs elemen0, 1, 2 ou 1, 0, 1 (veja que 2 1 (mod 3)).

Nos exemplos a seguir, usamos

tos, podemos enumer-los como

Exemplo B.105 (Polinmio primitivo diferente de

x). No exemplo anterior,


x ser primitivo. Citamos dois exemplos
3
3
em GF (3 ) com mdulo f (x) = x +2x+2, o polinmio x no primitivo,

g(x) = x

disso:

primitivo, mas nem sempre

notas de aula  verso 85 - Jernimo C. Pellegrini

357

x2 + 1

. A tabela a seguir mostra uma tentativa de gerar

o polinmio

GF (33 )

usando

x.
k
1
2
3
4
5
6
7

xk

k xk (mod f (x))
8
x2 1
9
x1
10
x2 x
11
x2 + x + 1
12
x2 1
13
1
x
14

(mod f (x))
x
x2
x+1
x2 + x
x2 + x + 1
x2 x + 1
x2 x + 1

x gera apenas metade de GF (33 ), j que x14 = x.


x2 + 1 de fato primitivo, gerando GF (33 ).

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

(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

GF (34 ) usando
mas x + 1 .

Tambm em

Ve
rs

primitivo,

Pr
e

k
14
15
16
17
18
19
20
21
22
23
24
25
26

A prxima

lim

Notamos ento que


tabela mostra que

in
ar

mas

o polinmio

x4 + 2x2 + 1

como mdulo,

no

Do seguinte Teorema conclumos que podemos escolher a representao que

quisermos para corpos nitos cuja ordem potncia de primo, porque as representaes so isomorfas.

Teorema B.106. Seja p primo e todo n natural. A no ser por isomorsmo,


h somente um corpo nito de ordem pn .
Em Criptograa comum o uso de

GF (2m )

Cada polinmios em

GF (2m )

tem como coecientes nmeros mdulo dois, e por isso podem ser descritos
como sequncias de

bits. Da mesma forma, sequncias de

interpretadas como polinmios em

Exemplo B.107 (Representao de polinmio em

x3 + x2 + 1 tem os coecientes 1, 1, 0, 1,
sequncia de bits 1101.

polinmio
a

bits podem ser

GF (2m ).
GF (24 )).

Em

GF (24 )

e pode ser interpretado como

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

358

Computadores normalmente tem operaes para realizar ou-exclusivo bit-abit, possibilitando a soma rpida de polinmios representados desta forma.

GF (24 ), seja f o
polinmio x +x +1, representado por 1101 e g o polinmio x +x, representado
3
2
por 1010. A soma f + g resulta no polinmio 2x + x + x + 1 (mod 2), que o
2
mesmo que x + x + 1. Esta soma pode ser obtida efetuando o ou-exclusivo da

Exemplo B.108 (Operao com polinmios em

GF (24 )).

Em

representao binria dos dois polinmios:

1101 1010 = 0111.

in
ar

Se os polinmios tem tamanho igual ao da palavra usada pela CPU, esta ope-

lim

rao 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

H diversas referncias em Portugus abordando lgebra Abstrata; mencionian [Sho10].

Pr
e

namos os livros de Hefez [Hef13], Garcia e Lequain [GL10] e o de Shokra-

Em Ingls h uma plenitude de livros.

O de Fraleigh [Fra02] bom para

um primeiro contato; h tambm os de Herstein [Her96], Gallian [Gal09] e Artin [Art91]. Os livros de Jacobson [Jac09a; Jac09b] so excelentes, redigidos em
estilo verbalmente descritivo; o estilo de Hungerford [Hun80] oposto, compacto
e fazendo uso mais frequente de simbolismo. Uma abordagem diferente para a
lgebra, em nvel avanado, a do livro de Paolo Alu [Alu09], 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).

Ve
rs

O livro de Rudolf Nidl e Harald Niederreiter [LN97] analisa extensamente


corpos nitos 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 [MM07].

Sobre Teoria dos Nmeros h em Portugus os livros de Plnio Santos [Oli10],

Polcino Millies [Mil06] e Shokranian [SHO08].

Em Ingls, o livro de George

Andrews [And94] d uma boa introduo, e o de Rosen e Ireland[IR90] aborda


o assunto em mais profundidade.

Outro livro muito conhecido de Teoria dos

Nmeros o de Niven, Zuckerman e Montgomery [NZM91]. A demonstrao


do Teorema dos Nmeros Primos pode ser encontrada na literatura de Teoria
Analtica dos Nmeros  por exemplo, no livro de Tom Apostol [Apo76].
Os livros de Shoup [Sho05], Stein [Ste10] e de Baldoni, Ciliberto e Catta-

neo [BCC09] e de Hostein, Pipher e Silverman [HPS08] so tambm particularmente interessantes para estudiosos de Criptograa.

notas de aula  verso 85 - Jernimo C. Pellegrini

359

Exerccios
Ex. 170  Dentre todos os mltiplos positivos de 432,

escolhido unifor-

ser divisvel por 648?

Ex. 171  Resolva os sistemas modulares:

3x
a) 2x
4x

4
3
1

3 (mod 17)
6 (mod 5)
7 (mod 6)
1 (mod 11)

2x
4x
b)
8x
16x

(mod 7)
(mod 8)
(mod 3)

in
ar

memente. Qual a probabilidade de

Ex. 172  Ao provarmos o Teorema B.21, no provamos que a soluo en-

M.

Faa essa parte da prova.

lim

contrada nica mdulo

Ex. 173  Encontre todas as razes primitivas mdulo


Ex. 174  Quais dos

resduo quadrtico mdulo

resduo quadrtico mdulo

a)

x = 2, p = 7

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

x = 2, n = 6

b)

x = 6, n = 10

c)

x = 7, n = 12

d)

x = 9, n = 12

e)

x = 14, n = 15

f)

x = 19, n = 30

Ve
rs

a)

Ex. 176  Prove que se

Ex. 177  Seja

nmeros em

Zn

11.

(Use o critrio de

n?

(Fatore

e use o

Ex. 175  Quais dos


critrio de Euler)

p?

Pr
e

Euler)

5, 7, 9

mpar, ento

 xy 
n

o produto de

xy 
n

nmeros primos

so resduos quadrticos mdulo

n?

p1 , p2 , . . ., pk .

Quantos

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

360

Ex. 178  O conjunto de todas as funes

f : A A

com a operao de

composio um grupo?

Ex. 179  Para qualquer

natural, o conjunto das cadeias de bits de tama-

com a operao de ou exclusivo um grupo?

in
ar

nho

Ex. 180  O conjunto de todos os polinmios com a operao de multiplicao um grupo?

Ex. 181  O conjunto de todos os polinmios com a operao de adio


um grupo?

Ex. 182  Prove o Teorema B.67, e prove tambm o seguinte corolrio:


Corolrio B.109. Em um grupo de ordem prima, todo elemento diferente

Ex. 183  Prove que todo grupo nito

log2 |G|.

nho menor ou igual a

Ex. 184  Seja

G tem um conjunto gerador de tama-

o conjunto de todas as bijees complexas e denote por

a transformada de Fourier

4 da composio de

Pr
e

(f, g)

de

lim

1 gerador.

g:

(f, g) = F (f g).

(J, )

um grupo?

Ex. 185  Sejam

G.

Ex. 186  Seja

Zp

um grupo. Mostre que

aG = Gb

o grupo de inteiros mdulo

p,

se e somente se

com

ab1

primo e a operao

usual de multiplicao. Prove que este grupo cclico.

Ex. 187  Seja

um grupo cclico de ordem par. Prove que

tem exata-

Ve
rs

mente um elemento de ordem dois.

Ex. 188  O conjunto de todas as bijees de reais em reais com as operaes


de composio () e multiplicao () pode ser um anel?

Ex. 189  (Grove) Mostre que se


ento

subgrupo de

Ex. 190  Mostre que se


se e somente se

a, b S

(G, ) um grupo nito e 6= H G,


x H , y H implica em xy H .

se e somente se

=
6 S R, ento S
a b S e ab S .

um anel e

implica em

subanel de

Ex. 191  Apresente um anel com mais de um elemento identidade.


Ex. 192  Mostre que quando

primo, o conjunto dos inteiros mdulo

com as operaes usuais de soma e multiplicao forma um corpo.

4 Veja

o Apndice D

notas de aula  verso 85 - Jernimo C. Pellegrini

361

Ex. 193  O conjunto { a + b

2 | a, b Q } com as operaes usuais de soma

e multiplicao um corpo?

(R[x], +, )

um corpo?

in
ar

Ex. 194 

Ex. 195  (Golan) Mostre que o corpo dos reais tem innitos subcorpos.

Ex. 196  Considere o conjunto de intervalos fechados de nmeros reais com


as operaes a seguir:

[a, b] + [c, d] = [a + c, b + d]

Este conjunto com tais operaes um corpo?

Ex. 197  (Mullen/Mummert) Seja


que para todo

um anel com caracterstica

n 1,
n

lim

[a, b] [c, d] = [min(ac, ad), max(bc, bd)]

(a1 + + ak )p = ap1 + + apk


ai R

para todo

i.

Ve
rs

Pr
e

onde

p.

Mostre

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Ve
rs

Pr
e

lim

in
ar

362

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Apndice C

lim

Complexidade Computacional

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

Pr
e

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.

C.1 Complexidade de tempo

certamente desejvel que possamos comparar os tempos de execuo de diferentes algoritmos. H situaes em que esperamos que o algoritmo seja usado

Ve
rs

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
de um algoritmo em

quantidade de operaes.

tamanho da entrada

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
2
3
exemplo, f (x) = x + 100 pode ser menor que g(x) = x 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
363

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

364

arbitrariamente grande.
A Figura a seguir mostra duas funes,

y=x

de ambas para

(desenhada com linha

+ 200 (linha tracejada): na primeira, visualizamos o grco


valores pequenos de x, e na segunda para valores maiores.

in
ar

contnua) e

y = x1.9

1.5

104
5
200
4
150
y

3
100

50

lim

1
0

10

50

100

150
x

200

250

300

Como exemplo prtico de anlise de tempo de execuo, o seguinte algoritmo


realiza multiplicao de matrizes quadradas (o algoritmo computa

C = AB ):

Pr
e

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

A segunda linha, que realiza uma comparao e incrementa a varivel i, ser


executada

N 2 ; j a quinta linha, que realiza uma


3
executada N vezes. A funo que d o nmero
2
3
ento da forma T (n) = an + bn + cn .

vezes; a terceira e a quarta,

soma e uma multiplicao,

de operaes deste algoritmo

Queremos agora determinar a ordem de crescimento desta funo. Deni-

f como o conjunto de todas as funes 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).

remos a ordem de crescimento de

Ve
rs

crescem to rpido que

Denio C.1 (Ordem crescimento de funes). Dada uma funo

f,

o con-

junto

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 85 - Jernimo C. Pellegrini

COMPLEXIDADE DE TEMPO

Por exemplo, seja


crescimento

2x

365

f (x) = 2x4 + x log(x) + 4x.

O termo com maior ordem de

, porque

x log(x)
4x

O(2x4 )
O(2x4 )

Alm disso, sempre que uma funo pertence a


dizemos que pertence a

O(kg(x)),

com

in
ar

C.1.

O(g(x)).

constante,

Convencionamos usar sempre a funo de descrio mais simples como re-

presentante 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! + 2

4x log(x) + 2x
Tambm abusamos da notao e escrevemos

O(g(n)),

ou dizemos que

f (n)



O(g(n)).

lim

2x + 5x5

O(x!)

O(x log(x))

f (n) = O(g(n)) no lugar de f (n)

O(n3 ).

Pr
e

A complexidade do algoritmo para multiplicao de matrizes dado acima ,


ento,

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

Alm da denio de

O(f (n)),

1000 muito grande.

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))
A seguir classicamos a complexidade dos algoritmos em dois tipos.

Ve
rs

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.

Denio 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  po-

linomial, exponencial etc.

Algoritmos com complexidade

usualmente chamados de quadrticos e cbicos.

O(n2 )

O(n3 )

so

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

366

Quando a complexidade de tempo para um algoritmo cresce mais rpido


que qualquer polinmio mas ainda assim cresce mais lentamente que qualquer

subexponencial.

O(2n ), com > 0.

exponencial, dizemos que o algoritmo tem tempo de execuo


Uma das maneiras de denir complexidade exponencial

ecientes,

in
ar

Dizemos que algoritmos polinomiais so

e estamos interessados

em determinar que tipo de algoritmo pode ser usado para resolver diferentes
problemas computacionais: ser possvel fatorar um inteiro
mial no tamanho da descrio de
de

n?

n em tempo polino-

Ou encontrar uma soluo para um sistema

equaes?

Um exemplo de algoritmo eciente o de ordenao de um vetor por seleo.


A entrada um vetor

n:

de tamanho

lim

para i de 1 a n1
para j de i+1 a n
se Vi > Vj
troque Vi com Vj

Este algoritmo tem complexidade de tempo

O(n2 ).

O que zemos conceitualmente foi, no conjunto de todas as possveis solues (ou seja, todas as permutaes de

n!

permutaes de

V,

V)

encontrar aquela que queramos.

mas no precisamos enumerar todas elas

Pr
e

Note que h

 conseguimos resolver o problema em tempo


zovel (poderamos ter gerado todas as

n!

O(n2 )

usando um algoritmo ra-

permutaes e vericado, para cada

uma, se estava ordenada, mas o algoritmo teria tempo de execuo

O(n!),

alm

de ser mais complicado).

C.1.1

Recorrncias

comum que o clculo da complexidade de tempo de um algoritmo no seja

merintercalao):

calculada de maneira to simples como no exemplo anterior. O algoritmo

gesort

um exemplo. O mergesort usa a operao de

merge

(ou

dados dois vetores ordenados, a intercalao deles um novo vetor ordenado

Ve
rs

contendo os elementos de ambos.


Um algoritmo para intercalar dois vetores simples: olhamos para os primei-

ros 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 85 - Jernimo C. Pellegrini

C.1.

COMPLEXIDADE DE TEMPO

Usaremos o procedimento

367

merge no em dois vetores,

mas em duas metades

do mesmo vetor. Assim, o procedimento tratar duas metades do vetor como

na gura abaixo).

lim

in
ar

se fossem dois vetores (U e

O algoritmo mostrado em pseudocdigo a seguir. Os parmetros so:


o vetor onde esto os elementos a intercalar;
a serem usados, e

m,

o ndice do ponto mdio.

b,

V,

o primeiro e ltimo ndices

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

O algoritmo

mergesort

merge

claramente

listado a seguir;

O(n).

so os ndices inicial e nal

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 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

368

O tempo necessrio para que o algoritmo termine :

O tempo de mergesort em vetor de tamanho


recursiva a

n/2

mergesort;

para a chamada a

merge.

para cada chamada

in
ar

Demonstrao.

A equao de recorrncia que d o tempo de execuo portanto

T (n) = 2T (n/2) + O(n).


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

n,

portanto o trabalho realizado ali

existem, cada um com trabalho


A altura da rvore

2k (logk n) = n. O
O(n log(n)) no total.

tempo
e

n/2.

O(n);

dois outros ns lhos

Isso se repete at que

lim

da entrada

log2 n,

e em cada nvel

n = 1.

o trabalho realizado leva

tempo total necessrio ento

O(n)

em cada iterao

A inspeo da rvore uma de diferentes maneiras de resolver recorrncias.


H tambm um Teorema Mestre que permite resolver alguns tipos de recorrncia

Pr
e

rapidamente.

Teorema C.5 (Teorema Mestre para recorrncias).

forma

Se uma recorrncia da

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

Ve
rs

iii) Se f (n) = (nlogb (a)+ ), e af (n/b) cf (n) para algum c < 1 e n sucientemente grande, ento
T (n) = (f (n)).

Podemos aplicar o Teorema Mestre para resolver a recorrncia da complexi-

dade de tempo do

mergesort.

Exemplo C.6 (Uso do Teorema Mestre (recorrncia do


rncia tem

f = n).

f (n)

(nlog2 (2) )

(n),

e portanto podemos usar o caso (ii). A soluo ento


ou seja,

(n log n).

mergesort)).

A recor-

Vericamos que

T (n) = (nlog2 (2) log n),


J

notas de aula  verso 85 - Jernimo C. Pellegrini

C.1.

COMPLEXIDADE DE TEMPO

369

J apresentamos o pseudocdigo para o algoritmo ingnuo para multiplicao


de matrizes, e vericamos que sua complexidade de tempo

O(n3 ).

O algoritmo

de Strassen, exposto a seguir, tem complexidade assinttica melhor.

in
ar

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
C

B
D


E
G

F
H


=

AE + BG
CE + DG


AF + BH
.
CF + DH

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

lim

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

Pr
e

diagonal) e depois realizamos as somas, que no total tero complexidade


Se resolvermos essa recorrncia obteremos

T (n) = n

(n2 ).

, e o algoritmo no ser

melhor que o primeiro que vimos.

No entanto, se calcularmos os seguinte sete produtos

AE + BG

AF + BH

Ve
rs

e observamos que

= A(F H)
= (A + B)H
= (C + D)E
= D(G E)

X1
X2
X3
X4

X5 = (A + D)(E + H)
X6 = (B D)(G + H)
X7 = (A C)(E + F )

P5 + P4 P2 + P6

P1 + P2

CE + DG =

P3 + P4

CF + DH

P5 + P1 P3 P7

teremos calculado o produto das duas matrizes com

sete

multiplicaes, e no

outo.

A recorrncia para a complexidade de tempo do algoritmo de Strassen

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 zemos para o mergesort.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

370

C.1.2

Tamanho da entrada e nmero de bits

de crucial importncia observar que a complexidade de algoritmos medida

tamanho

da entrada, e no seu

valor.

Um exemplo ilustrar isto claramente:

o problema do logaritmo discreto

in
ar

usando o

y mdulo n em uma base g


0 < x < n tal que g x = y ). Podemos inicialmente

consiste em determinar o logaritmo de um nmero


(ou seja, determinar o nmero

imaginar que a busca exaustiva pela soluo tem complexidade de tempo linear:
basta que veriquemos, para cada

0 < i < n,

se

gi = y.

No entanto, ao racioci-

nar desta forma estamos descrevendo a complexidade do algoritmo em termos


do

valor n.

tamanho de n em bits deve ser usado: medida que aumentamos


n, o tempo necessrio para a

o nmero de bits usado para representar o mdulo

busca exaustiva cresce exponencialmente: cada novo bit multiplica o espao de

lim

busca por dois! O tempo necessrio para encontrar o logaritmo de um nmero

n, onde n tem k bits, proporcional ao maior valor representvel


2k+1 1. Por isso a complexidade do algoritmo O(2k ).

mdulo

bits:

C.2 Grafos

com

Pr
e

Usaremos grafos em nossos exemplos e em alguns dos tpicos de Criptograa,


por isso os denimos aqui:

Denio C.7 (Grafo). Um grafo


de vrtices e de um conjunto

u, v V .

G = (V, E)

consiste de um conjunto

de arestas (pares de vrtices)

{ u, v },

onde

Usualmente os grafos so representados visualmente como conjuntos de pontos (os vrtices) ligados por linhas (as arestas).

Exemplo C.8 (Grafo). Por exemplo,

V = {a, b, c, d, e}

{ a, b } , { a, c } , { a, e } ,
.
{ b, c } , { b, d } , { c, d } , { d, e }

Ve
rs

G = (V, E)

onde

representado gracamente na gura a seguir.

a
e

d
J
G = (V, E), o grau de um
w a v (ou seja,
de v por d(v).


Denio C.9 (Grau de um vrtice). Em um grafo


vrtice

a quantidade de vrtices

a quantidade de vizinhos de

v ).

wV

tais que h aresta de

Denotamos o grau

notas de aula  verso 85 - Jernimo C. Pellegrini

C.2.

GRAFOS

371

No exemplo dado,

d(a) = 3

d(c) = 2.

Neste Apndice estamos interessados principalmente em denies relacionadas a grafos, que usaremos em diversos problemas e algoritmos. No apre-

in
ar

sentamos, portanto, muitos teoremas em grafos. As demonstraes em grafos


dadas aqui so poucas e extremamente simples.

Em qualquer grafo, a quantidade de vrtices com grau mpar

Teorema C.10.

par.

Cada aresta incide em dois vrtices, portanto a soma dos graus

dos vrtices deve ser o dobro de

|E|:

d(v) = 2|E|.

vV

lim

Demonstrao.

Se a quantidade de vrtices com grau mpar fosse mpar, o somatrio seria mpar,
e no poderia ser igual a

2|E|.

Em qualquer grafo sem laos com n > 1 vrtices, h pelo


menos dois vrtices com o mesmo grau.

Teorema C.11.

Cada vrtice pode se ligar a

graus possveis para

n1

outros, portanto h

Pr
e

Demonstrao.

vrtices.

pombos.

n1

O teorema segue pelo princpio da casa dos

clique em um grafo um subconjunto C de


u, v C , { u, v } uma aresta do grafo (ou seja,

Denio C.12 (Clique). Uma


seus vrtices tal que para todos

um subconjunto de vrtices ligados dois a dois por arestas). usual denotar

vrtices por

Kn .

uma clique de

O grafo da gura anterior tem duas cliques de tamanho trs (tambm as

tringulos): {a, b, c}

Ve
rs

chamamos de

{b, c, d}.

Denio C.13 (Caminho). Um caminho em um grafo uma sequncia (v1 , v2 ,


de vrtices de

tais que h arestas ligando cada dois vrtices

vi , vi+1

consecu-

tivos.

Por exemplo,

(a, b, c, d)

um caminho no grafo dado.

Denio C.14 (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.

Denio C.15 (Circuito Hamiltoniano). Um circuito simples em um grafo

que contenha todos os vrtices de

chamado de

circuito Hamiltoniano.

G


, vk )

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

372

No grafo da primeira gura h um circuito Hamiltoniano

(a, b, c, d, e, a).

Um grafo pode ser composto de diversas partes desconectadas, e classicamos


os grafos como

conexos

(como o grafo do Exemplo C.8) ou

desconexos,

usando

in
ar

a Denio a seguir.

Denio C.16 (Grafo conexo). Um grafo conexo se, para qualquer par de
vrtices

(a, b),

existe um caminho de

at

b.

Denio C.17 (Colorao de grafo). Seja

G = (V, E) um grafo. Uma k 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

colorao dos vrtices de um grafo um mapeamento

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

Exemplo C.18 (Colorao de grafo). O grafo dado no exemplo C.8 admite

3-colorao:

Pr
e

uma

a3
b1
c2

d3
e1

rvores so um tipo particular de grafo de grande importncia.

Denio C.19 (rvore). Um grafo uma rvore se conexo e no tem

circuitos.

Ve
rs

Exemplo C.20. A Figura a seguir mostra uma rvore.

a
c

b
d
g

f
h

A descrio no visual da rvore

V = {a, b, c, d, e, f, g, h}
E = {{a, b}, {a, c}, {c, d}, {c, e}, {c, f }, {e, g}, {e, h}} .

1 Provas

de conhecimento zero so discutidas no Captulo 13.

notas de aula  verso 85 - Jernimo C. Pellegrini

C.3.

PROBLEMAS DE DECISO E DE BUSCA

373

O conceito de isomorsmo de grafos usado em provas de conhecimento zero


(no Captulo 13).

G = (V, E) e G0 =
f : V V tal que { x, y } E se


(V , E )

so isomorfos se existe uma bijeo

e somente se

{ f (x), f (y) } E 0 .

Exemplo C.22 (Grafos isomorfos). Sejam


G

G, F

os grafos a seguir:
I

so isomorfos porque existe a seguinte bijeo:

ax
cy
G

de

tem trs vizinhos, e em

bw
dz

no so isomorfos: no pode haver bijeo entre eles, j que o vrtice

no existe vrtice com trs vizinhos.

Pr
e

lim

Os grafos

in
ar

Denio C.21 (Isomorsmo de grafos). Dois grafos

C.3 Problemas de deciso e de busca


Nossa ateno agora car sobre algoritmos para resolver problemas que podem
ser classicados em dois tipos: de deciso e de busca.
Em ambos os casos deniremos que h

Um conjunto

de possveis entradas, ou

instncias

do problema.

caso da ordenao de vetores, uma instncia um vetor (o

tamanho

No
da

instncia ser a quantidade de elementos no vetor);


Para cada instncia h um conjunto (possivelmente vazio) de

Ve
rs

factveis.

solues

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:

Dado um vetor
mentos de

V,

de tamanho

n,

qual o vetor

V0

com os mesmos ele-

em ordem crescente?

Dados os custos de deslocamento entre

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


com tamanho

encontrar um subconjunto de seus vrtices

que formem uma clique;

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

374

Dadas

equaes com

variveis, que valores devem ser atribudos s

variveis para satisfazer todas as equaes simultaneamente?


Dado um nmero

n,

encontrar sua fatorao.

in
ar

Um problema de deciso se admite apenas duas respostas, sim ou no.


Por exemplo,

Dados os custos de deslocamento entre

cidades, responder se h alguma

maneira de percorr-las, passando somente uma vez em cada uma, gastando no mximo

Dado um nmero

n,

Dado um grafo existe nele uma clique de tamanho

em combustvel;

primo.

k?

lim

decidir se

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 eciente),

Pr
e

certamente isto tambm valer para o problema de busca.

C.4 Algoritmos no determinsticos


H mais de uma maneira de denir algoritmo no determinstico; daremos duas
aqui.

Denio C.23 (Algoritmo no determinstico). Um algoritmo no determinstico para um problema de deciso aquele que, dados uma instncia de um

problema e uma possvel soluo,


para aquela instncia.

apenas verica se aquela uma soluo vlida




Exemplo C.24 (Algoritmo no determinstico para CLIQUE). Dado um grafo

Ve
rs

G = (V, E)

e um conjunto de vrtices

uma clique de tamanho no mnimo


soluo uma clique de tamanho

K V , o algoritmo a seguir decide se K


n. O seguinte algoritmo verica se uma

k:

se |K| < n
retorne NAO
para todo u, v K
se (u, v)
/E
retorne NAO
retorne SIM
O(|K|2 ),
vrtices de K .

A complexidade de tempo do algoritmo

u, v K 

enumera todos os pares de

porque o lao para todo

H uma denio um pouco diferente (mas equivalente) de algoritmo no-

determinstico.

notas de aula  verso 85 - Jernimo C. Pellegrini

C.5.

ALGORITMOS RANDOMIZADOS

375

Denio C.25 (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

in
ar

para.
Quando uma nova linha de execuo criada, ela se 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.

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 innitas unidades de processamento, uma para cada caminho possvel. A seguir apresentamos novamente

um algoritmo no determinstico para o problema da clique em grafos, mas

lim

usando a segunda denio.

Exemplo C.26 (Algoritmo no determinstico para CLIQUE).

Pr
e

escolha naodeterministicamente C V
se C clique (use o algoritmo anterior para verificar)
retorne SIM
senao
retorne NAO
A primeira linha diz escolha no-deterministicamente. Isso signica que o
algoritmo deve escolher um dentre um nmero exponencial (2
tos de

V.

Isso pode ser entendido como crie

|V |

|V |

) de subconjun-

linhas de execuo, e cada uma

segue com um subconjunto, at que uma delas encontre uma clique de tamanho

n,

ou que todas terminem sem encontrar tal clique.

Deve car claro agora como as duas denies esto relacionadas: no segundo

2|V |

linhas de execuo fazem a vericao de cada uma das

exemplo, as

2|V |

candidatas a soluo.

Ve
rs

C.5 Algoritmos Randomizados


Denio C.27 (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.

Um exemplo simples o teste de primalidade de Fermat .


O pequeno teorema de Fermat (Teorema B.29) diz que se

ap a (mod p)

ou seja, que

Usando este resultado, podemos testar se um nmero

aleatoreamente vrios nmeros

primo, ento

ap1 1 (mod p).


a<p

primo escolhendo

e vericar se a igualdade vale. Caso isso

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 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

376

no ocorra,

certamente composto.

lhendo vrios valores diferentes de

Caso ocorra,

pode ser primo.

Esco-

aumentamos a probabilidade da resposta

ser verdadeira.

in
ar

repita k vezes
a nmero aleatreo (1, n)
se an1 6 1 (mod n)
retorne COMPOSTO
// com certeza absoluta
retorne PRIMO
// provavelmente

an a (mod n) para todo a tal que


nmeros de Carmichael ou pseudoprimos de

Nmeros compostos para os quais

mdc (a, n) = 1 so chamados de


Fermat. A distribuio dos nmeros

de Carmichael muito menor que a dos

lim

primos, por isso o teste tem alta probabilidade de acerto.

Este algoritmo apresentado aqui por sua simplicidade; h algoritmos melhores para testar primalidade, como por exemplo o de Rabin-Miller.

C.6 Classes de Complexidade

As classes de complexidade mais conhecidas so denidas em termos de proble-

Pr
e

mas de deciso. Isto porque cada problema de deciso dene 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 denidas a seguir,

com exemplos.

Denio C.28 (Classe

P ).

Um problema est na classe

quando pode ser

Ve
rs

resolvido por um algoritmo determinstico em tempo polinomial.

MDC

(achar o mximo divisor comum de dois nmeros), porque o algo-

ritmo de Euclides tem complexidade de tempo polinomial.

PRIMO

(dado um nmero

n N,

determinar se

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.

Denio C.29 (Classe

N P ).

Um problema est na classe

NP

quando pode

ser resolvido por um algoritmo no-determinstico em tempo polinomial.

notas de aula  verso 85 - Jernimo C. Pellegrini

C.6.

CLASSES DE COMPLEXIDADE

377

Problemas em NP evidentemente incluem todos os problemas em P, e diversos outros, inclusive:

CLIQUE

Determinar se um grafo

tem uma clique de tamanho

k.

um grafo tem complexidade de tempo polinomial, portanto

N P.

in
ar

algoritmo no-determinstico apresentado para o problema da clique em

CLIQUE

SOMA-SUBCONJUNTO: Dado um conjunto nito 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 vericar em
tempo polinomial se sua soma s.

ciclo Hamiltoniano.

Dado um grafo, determinar se ele tem um

O problema est em

lim

CICLO-HAMILTONIANO:

N P:

tendo uma sequncia de

vrtices podemos vericar em tempo polinomial se cada vrtice est ligado


ao prximo, e se no h vrtices repetidos.

TETRIS:

Dados um cenrio inicial de jogo e uma sequncia de peas do

jogo Tetris, determinar se possvel conseguir rotacion-las e desloc-las

Pr
e

para os lados e para baixo de forma que todas desapaream , sendo que a
ltima pea preencher o espao que faltava?
H uma grande quantidade de problemas em
deles aqui.

N P,

mas no nos ocuparemos

A classe de problemas resolvidos por algoritmos probabilsticos chamada

PP (probabilistic polynomial time).


trataremos em particular da classe BPP .
de

H diversas subclasses de

PP ,

Algoritmos randomizados que tenha probabilidade de acerto maior que

mas

1/2

so particularmente interessantes:

Denio C.30 (Classe

BPP ).

Um problema est na classe

BPP

quando

Ve
rs

pode ser resolvido por um algoritmo randomizado em tempo polinomial com


probabilidade de acerto
O

2/3

2/3.

usado na denio arbitrrio: a classe continua a mesma se o tro-

1/2.
BPP (um

carmos por qualquer valor estritamente maior que


Evidentemente a classe

est contida em

algoritmo determins-

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

Denio C.31 (Classe

PSPACE ).

Um problema est na classe

pode ser resolvido por algum algoritmo usando

espao

PSPACE

da entrada.

3 Lembre-se

se

polinomial no tamanho

das regras do Tetris: quando a linha da base ca cheia,ela desaparece.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

378

O Exerccio 227 pede a demonstrao do seguinte Teorema, que arma que

NP

Teorema C.32.

N P PSPACE .

est tambm em

PSPACE .

in
ar

um problema em

Denio C.33 (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 armativa.

Exemplo C.34. Os nmeros

3, 11

17

pertencem linguagem dos nmeros

primos.

Exemplo C.35. O grafo a seguir pertence linguagem dos grafos hamiltonia-

(a, b, f, c, d, e, a)

percorre cada vrtice uma nica vez.

lim

nos, porque o ciclo

Pr
e

Podemos ento dizer que resolver um problema de deciso decidir se uma


instncia pertence sua linguagem.

C.7 Redues e completude


Redues so fundamentais na construo de diversas ferramentas em Criptograa. Comearemos com dois problemas tradicionais da Teoria da Complexidade

Ve
rs

Computacional.

O primeiro problema consiste em encontrar em um grafo no dirigido um

circuito Hamiltoniano.

Problema C.36 (HAM (Circuito Hamiltoniano)). Dado um grafo

determine se

tem um circuito Hamiltoniano.

G = (V, E),


O segundo problema o de encontrar uma maneira de percorrer

ns de

um grafo com peso nas arestas limitando o custo mximo do percurso.

Problema C.37 (TSP (caixeiro viajante)). Dado um grafo


nas arestas determinados por

c:ER

e um nmero

m,

G(V, E) com custos

determine se h uma

maneira de percorrer todos os ns do grafo com custo menor ou igual a

m.

Havendo um algoritmo para resolver o TSP, podemos us-lo para resolver

tambm o HAM:

notas de aula  verso 85 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

Dado o grafo

379

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.

in
ar

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

ritmo 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 gura abaixo ilustra a reduo que zemos. Note que a reduo (a transformao da entrada) foi feita em tempo polinomial (adicionar pesos s arestas

O(|E|)).

pode ser feito em

Isso porque se tivermos que usar um algoritmo ex-

os circuitos em

lim

ponencial, a reduo no faz sentido: poderamos simplesmente enumerar todos

G.

instncia de

HAM

reduo em tempo polinomial

instncia de

TSP

Pr
e

sim / no

algoritmo para

TSP

Quando h uma reduo em tempo polinomial de um problema


problema

P TSP.

B,

usamos a notao

A P B .

para um

O ltimo exemplo mostra que

HAM

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 denimos a noo de

N P -completude4 .

Ve
rs

Denio C.38 (Classe N P -completo). Um problema P N P -completo quando


i)

ii)

P NP

P0 N P, P0 P P.

PSPACE -completos denida de maneira anloga


N P -completos, mas neste texto trataremos apenas da

A classe de problemas

classe de problemas
ltima.

Para provarmos o prximo Teorema usaremos o fato de HAM ser

N P-

completo.

Teorema C.39.
4 Denimos

TSP N P -completo.

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 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

380

Demonstrao.
i)

A prova se divide em duas partes:

T SP N P :

dada uma instncia do TSP e uma possvel soluo (uma

sequncia de vrtices) possvel vericar em tempo polinomial se ela face somar os custos).
ii)

in
ar

tvel (basta vericar que h arestas entre os ns, que no h ns repetidos

P 0 N P, P 0 P T SP . A reduo usada como exemplo prova de


0
que que HAM P T SP . Como HAM N P -completo, temos que P
0
0
0
N P, P P HAM . Ento, P N P, P P HAM P T SP. 

C.7.1

Tcnicas para demonstrao de N P -completude


N P -completude

dos trs tipos listados a seguir.

Restrio:
problema A

so normalmente de um

lim

Grosso modo, as demonstraes de

a forma mais simples de demonstrao, onde para reduzir um

B , apenas mostramos que


B restringindo suas entradas.
HAM ao TSP, j dada;

a outro problema

o algoritmo de soluo de
usada na reduo de

suciente usar
Essa a tcnica

Pr
e

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 ;
Projeto de componentes:
em outra de

Restrio

B N P -difcil, mostramos
N P -difcil A pode ser transformada

para mostrar que

que uma instnca de algum problema

atravs do projeto de pequenos componentes.

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

Ve
rs

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 denio formal do problema da mochila, com a demonstrao

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

de que

xX 0

X
xX 0

v(x) K.

notas de aula  verso 85 - Jernimo C. Pellegrini

REDUES E COMPLETUDE

Teorema C.40. MOCHILA

381

N P -difcil.

Demonstrao. Reduo de PARTICAO


P : basta restringir
neira que s(x) = v(x) e C = K = 1/2
xX s(x).

as instncias de ma-

in
ar

C.7.

Substituio local

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


DE-CONJUNTO.

lim

a CONJUNTO-DOMINANTE. Denimos ento o problema COBERTURA-

S1 , S2 , . . . , Sn ,
Si , i X com

COBERTURA-DE-CONJUNTO: dada uma famlia de conjuntos


com

U = Si

e um inteiro

tamanho mximo

tal que

k , existe um
ix Si = U ?

conjunto de conjuntos

Denimos agora conjunto dominante e o problema do menor conjunto dominante.

Pr
e

Denio C.41 (Conjunto dominante). Um conjunto dominante em um grafo

G = (V, E) um subconjunto V 0 V tal que todo vrtice fora de V 0


a algum vrtice de V por uma aresta.
CONJUNTO-DOMINANTE: dado um grafo

G = (V, E)
K em G?

est ligado

e um inteiro

K,

existe um conjunto dominante de tamanho mximo

Teorema C.42.

CONJUNTO-DOMINANTE N P -difcil.

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

Ve
rs

ver 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:

tanto os ndices

i = 1, . . . , n

o conjunto de vrtices contm

dos subconjuntos como os elementos de

U:

V = I U.

ligamos entre si com arestas todos os vrtices que representam ndices, e ligamos
cada elemento de

com os ndices dos conjuntos aos quais pertencem.

E = { { i, j } : i, j I } { { i, x } : x Si }

A Figura a seguir ilustra a construo do grafo para

S3 = { x3 , x4 }, S4 = { x5 , x6 }.

S1 = { x1 }, S2 = { x1 , x2 , x3 },

notas de aula  verso 85 - Jernimo C. Pellegrini

in
ar

APNDICE C. COMPLEXIDADE COMPUTACIONAL

382

{ 2, 3, 4 }, destacado na FiX = { Si , i Y } soluo para COBERTURA-DECONJUNTO, ento ento X um conjunto dominante no grafo: todos os vrti-

Seja

um subconjunto dos ndices (por exemplo,

lim

gura), e suponha que

ces de ndice esto conectados entre si, e como este subconjunto est conectado
com todos os vrtices dos elementos dos
Alm disso,

|X| = |Y |

Si ,

nenhum vrtice ca descoberto.

 o tamanho do conjunto dominante igual ao tamanho

da cobertura de conjunto.

Pr
e

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 218 pede a demonstrao de que CONJUNTO-DOMINANTE
est em

N P.

Projeto de componentes

O exemplo que damos para a tcnica de projeto de componentes o do problema


da 3-colorao de um grafo.

Dado um grafo, h para ele uma colorao de seus vrtices com

3COLOR:

no mximo trs cores?

Ve
rs

O problema 3SAT, denido 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.43 (Instncia de

3SAT).

Uma instncia do

3SAT

exibida a

seguir. Dada a frmula

(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.44. 3COLOR

Demonstrao.

N P -difcil.

Mostramos uma reduo de

3SAT

3COLOR.
3SAT em instn-

Usaremos trs componentes para transformar instncias de

cias de

3COLOR.

notas de aula  verso 85 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

383

O primeiro componente uma 3-clique, onde os vrtices tem os rtulos


e

T, F

que representam os valores verdadeiro, falso e impossvel de atribuir

Este primeiro componente nos garante que


h uma terceira cor

tero cores diferentes, e que

diferente das duas anteriores.

O segundo componente uma 3-clique onde os vrtices so

ser

o mesmo

x , x e .

Quando

que aquele no componente

lim

construirmos o grafo, o vrtice

in
ar

para variveis de uma frmula booleana.

anterior (e no um vrtice diferente com mesmo nome).

Pr
e

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

T com o primeiro componente. No exemplo na prxima gura 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 .
vrtice

Ve
rs

Construimos ento um grafo da seguinte maneira:

i)

ii)

Incluimos os vrtices

F,

e os ligamos em uma 3-clique.

Incluimos um vrtice para cada varivel e um para a negao de cada


varivel (a,

iii)

, T ,

a, b, b, . . .).

Para cada varivel

e sua negao

como no segundo componente.

v,

ligamos

v, v

em uma 3-clique,

notas de aula  verso 85 - Jernimo C. Pellegrini

384

APNDICE C. COMPLEXIDADE COMPUTACIONAL

iv)

Para cada clusula na frmula, fazemos a ligao dos vrtices includos no


passo

(ii)

com o vrtice

includo no passo

(i),

e fazemos isso usando a

estrutura do terceiro componente.

in
ar

A prxima gura mostra um exemplo do grafo construdo para a frmula

(a b c) (b c d) (a c d).
a

lim

Pr
e

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


clusula  o que garante que a frumua ter valor

em cada

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

ser usado para resolver

3SAT

3COLOR, ele pode

tambm em tempo polinomial.

O leitor pode vericar facilmente que alm de

completo.

N P -difcil, 3COLOR

N P-

notas de aula  verso 85 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

C.7.2

385

Padres comuns

comum que problemas sejam facilmente solveis quando solues reais ou raci-

N P -completos se exigirmos solues inteiras.


EQUACAO-DIOFANTINA-QUADRATICA:
a, b, c, existem inteiros positivos x e y tais que

onais so permitidas, e tornem-se


dados os inteiros positivos

ax2 + by = c? Este problema fcil quando aceitamos


mas N P -completo se exigirmos solues inteiras.

in
ar

Um exemplo disso o problema

solues no-inteiras,

Outros exemplos so:

O problema da mochila, que pode ser resolvido ecientemente se for permitido escolher fraes de objetos;

O problema de programao linear, que pode ser resolvido ecientemente


quando solues racionais so admissveis, mas
solues devem ser inteiras.

C.7.3

N P -completo

lim

quando as

Problemas N P -completos na prtica

Embora seja verdade que no sejam algoritmos ecientes para resolver de maneira exata problemas

N P -difceis,

comum conseguir resolv-los em alguns

Pr
e

casos. As prximas subsees descrevem duas situaes em que problemas

N P-

difceis so resolvidos de maneira eciente (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 eciente.

mk o valor que pode ser obtido com peso menor ou igual a k .


m0 = 0. Podemos denir os valores de mi recursivamente:

Eviden-

Seja

temente,

Ve
rs

mi = max wj + mivj .
1jn
vj i

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:

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

386

in
ar

se vj i: // este item cabe


x max(x, mivj )
mi max(mi1 , x)
retorne mn
Exemplo C.45 (Algoritmo para o problema da mochila). Para exemplicar o

C = 7. Os objetos disponveis tem pesos e


w
~ = (2, 1, 3, 4), e ~v = (3, 2, 5, 9). A sequncia de linhas a seguir
vetor m
~ preenchido pelo algoritmo.

funcionamento do algoritmo, seja


mostra como o

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

lim

valores iguais a

A soluo tima nos d valor igual a quinze, com uma unidade do item 4 e trs

1 9 + 3 2 = 15 e o peso 1 4 + 3 1 = 7). J

Pr
e

unidades do item 2 (o valor

O algoritmo percorre os nmeros de


corre todos os objetos.
tempo

O(nC),

onde

C,

e para cada um deles per-

O problema da mochila pode ento ser resolvido em

a capacidade da mochila e

a quantidade de objetos.

Esta complexidade de tempo, aparentemente polinomial, na verdade exponencial.

Isso porque a capacidade

represent-la

log C .

est codicada em binrio, e o espao para

Se usarmos o tamanho da descrio da entrada como pa-

rmetro, obteremos complexidade


usado para representar

C.

ou

O2k ,

onde

o nmero de bits

De qualquer forma, se estivermos interessados em

instncias do problema onde

O(n2k ),

sempre limitado a um nmero relativamente

pequeno, o problema tratvel.


Problemas onde a entrada seja uma quantidade numrica normalmente po-

Ve
rs

dem ser resolvidos dessa forma.


tempo

pseudopolinomial.

Dizemos que estes algoritmos executam em

Algoritmos de aproximao
Muitas vezes, apesar de no conseguirmos algoritmos ecientes 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 denir o que signica 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

notas de aula  verso 85 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

de cada vez, no haver confuso.

387

Nas denies que seguem, usaremos esta

notao.
Idealmente, para toda instancia

de

P,

gostaramos de obter algoritmos

A isso damos o nome de

aproximao absoluta.

Denio C.46 (Aproximao absoluta). Dizemos que

absoluta
I,

para o problema se existe uma constante

uma

in
ar

ecientes que nos dessem solues diferindo da tima apenas por uma constante.

aproximao

tal que para toda instancia

|A(I) OP T (I)| k.

Um problema para o qual existe algoritmo de aproximao absoluta o da


colorao de vrtices em grafos planares.

lim

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.

Obter

2-colorao

Pr
e

aprox_colore_vertices(G):
se E = :
retorne uma unica cor
se G e bipartido:
retorne uma 2coloracao
senao
retorne uma 6coloracao

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

se P =
6 N P , no existe aproximao absoluta para o problema

Teorema C.47.

da mochila.

Um deles o da

O Exerccio 222 pede a demonstrao deste Teorema; a demonstrao est

Ve
rs

na Apndice com as solues, e recomendvel estud-la, porque o mesmo


raciocnio aplicvel a diversos outros problemas, como

INDEPENDENTE.

TSP

CONJUNTO-

Infelizmente aproximaes absolutas existem apenas para poucos problemas.

Podemos no entanto obter algoritmos ecientes que aproximem a soluo tima,


diferindo dela por um fator dado por uma funo.

Denio C.48 ((n)-aproximao). Dizemos que


para o problema se existe uma funo

()

uma

(n)-aproximao
I,

tal que para toda instncia

OP T (I)
A(I)
p(n)

para problemas de otimizao, ou

A(I) p(n)OP T (I)

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

388

onde

|I|, o tamanho da instancia.


(n) constante, dizemos

Quando

que

uma

k -aproximao.

()

que cresa lentamente.

in
ar

Claramente, nos interessa obter algoritmos com fator de aproximao dado


por alguma funo

N P -completo.
COBERTURA-POR-VERTICES: dado um grafo G = (V, E) e um inteiro
0
positivo K , determinar se existe V V de tamanho menor ou igual a K tal
0
que toda aresta de E tem pelo menos um de seus vrtices em V .
H uma 2-aproximao para COBERTURA-POR-VERTICES.
O problema da cobertura de grafos por vrtices

lim

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 224 pede a demons-

Pr
e

trao desta Proposio.

Proposio C.49.

tempo polinomial.

O algoritmo aprox_vertex_cover tem complexidade de

Mostramos agora que o algoritmo realmente encontra uma por vrtices.

Teorema C.50. O algoritmo aprox_vertex_cover retorna uma cobertura do


grafo G por vrtices.
O algoritmo percorre todas as arestas do grafo, e para cada uma

Demonstrao.

delas garante que haver um de seus vrtices na soluo, portanto o resultado

Ve
rs

deve ser uma cobertura por vrtices.

Teorema C.51. 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.
so includos em C , portanto C uma
Todas os vrtices das arestas de A

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|

notas de aula  verso 85 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

389

Qualquer cobertura, por denio, deve ter


cada aresta. Como

OP T (I)

no mnimo um vrtice incidindo em


E,

uma cobertura de

Mas

A E ,

e portanto

|E| OP T (I).
|A|
Temos ento que

2OP T (I).
|C| = 2|A|

C.7.4

Outros problemas N P -completos

SAT:

dada uma frmula booleana, existe alguma atribuio de variveis

que torne a frmula verdadeira?

3SAT

N P -completos.

lim

A seguir h uma lista com alguns problemas

in
ar

|E| |OP T (I)|.

(descrito no texto);
(descrito no texto);

CLIQUE

(descrito no texto);

Pr
e

3COLOR

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;

Ve
rs

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
0
seja, h C C tal que cada elemento de X ocorre exatamente uma vez
0
em C ?)

PARTICAO: Dado um conjunto nito A e P


um tamanho s(a) para cada
P
a A, existe um subconjunto A0 A tal que aA0 s(a) = aA\A0 s(a)?
SOMA-SUBCONJUNTO

(descrito no texto);

COBERTURA-DE-CONJUNTO
CONJUNTO-DOMINANTE

(descrito no texto);

(descrito no texto);

PRODUTO-SUBCONJUNTO: Dados um conjunto nito 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
0
elementos de A exatamente b?

CICLO-HAMILTONIANO

(descrito no texto);

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

390

TETRIS

(descrito no texto);

COBERTURA-POR-VERTICES: dado um grafo G, existe uma cobertura


de G por vrtices de tamanho K ? (Uma cobertura por vrtices um

in
ar

conjunto de vrtices que toca em todas as arestas do grafo).

EQUACAO-DIOFANTINA-QUADRATICA

(descrito no texto);

CONGRUENCIA-QUADRATICA: Dados inteiros positivos a, b, m, c, existe


2
algum inteiro x < b tal que x 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

SVP:

L.

e uma norma, determinar a

O tamanho da base a norma de seu maior vetor.

Pr
e

menor base que gera

dada uma base de um reticulado

e uma norma, determinar o

menor vetor do reticulado.

CVP: dada uma base de um reticulado L, uma norma


Rn , determinar o ponto p0 L mais prximo de p.

e um ponto

em

C.8 Problemas indecidveis


H problemas para os quais pode-se provar que no h algoritmo (e portanto

Ve
rs

no faz sentido falar em complexidade de tempo).

Denio C.52 (Problema indecidvel). Um problema indecidvel se no


existe algoritmo que determine, em tempo nito, sua soluo.

O mais conhecido problema indecidvel o problema da parada.

Denio C.53 (Problema da Parada). Seja (A) a descrio de um algoritmo A

x uma entrada qualquer para o algoritmo a.


A vai parar?

Dados

(A), x, em algum momento

Em outras palavras, dado um programa e uma entrada, podemos decidir se este


programa em algum momento chegar ao m da execuo?
Note que no dissemos como exatamente

descrito; este problema nor-

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

notas de aula  verso 85 - Jernimo C. Pellegrini

MQUINAS DE TURING

Teorema C.54.

Demonstrao.

391

O problema da parada indecidvel.


P

para quando executado com entrada

mos ento construir os dois procedimentos a seguir.


Primeiro, para entrada

(P, e), confunde

para quando

versa.

confunde(P, e):
se nao para(P, e) // P no para
retorne SIM
senao
// P para
nao pare nunca

diagonal(x)

no para, e vice-

diagonal(diagonal)  ou seja, damos a diagonal uma desdiagonal para se e somente se

crio de seu prprio cdigo. Temos ento que

no para. Tendo chegado a este absurdo, refutamos a possibilidade

do procedimento

para

existir.

Pr
e

diagonal

Podera-

aplica confunde com argumentos (x, x).

diagonal(x):
confunde(x, x)
Podemos executar

e.

lim

Finalmente,

para(P, e)

(Idia supercial) Suponha que existe um procedimento

que decide se um programa

in
ar

C.9.

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 cam demasiado distantes


do escopo deste texto. O mtodo usado para demonstrar que um problema
indecidvel por reduo de algum problema j sabidamente indecidvel  de

Mquinas de Turing

Ve
rs

C.9

N P -difceis.

forma semelhante s demonstraes de que problemas so

A denio 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 criptogrcos.
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 ta, 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 ta 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 ta

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

392

2. De acordo com o estado atual e o smbolo lido, o programa da mquina


deve ter uma regra que determina:

ii.

O smbolo que ser gravado no lugar do anterior.


Para que direo mover a cabea de leitura e gravao (denotamos
esquerda por

iii.

e direita por

in
ar

i.

.).

Qual ser o prximo estado.

Um exemplo de regra  (q2 , a

x, q4 , /),

que signica se o estado atual

e o smbolo lido  a, ento mude o estado interno para


estava o  a e mova a cabea para a esquerda.

q4 ,

q2

escreva  x onde

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

lim

da ta onde h o smbolo c. O programa (funo de transio) da mquina


no mostrado.

q3

Pr
e

a b b c a c d a

Uma maneira de representar mquinas de Turing como um grafo. A prxima Figura ilustra uma mquina de Turing com trs estados. Esta mquina
verica se uma cadeia de zeros e uns termina em zero ou no (se as cadeias representarem nmeros binrios, a mquina estaria identicando nmeros pares).
O estado inicial

q0

e o nico estado nal

q0

Ve
rs

start

q2 .

1, 1, .

q1

1, 1, .

0, 0, .
0, 0, .

1, 1, .

q2

0, 0, .

Este autmato sempre grava o mesmo smbolo que leu, e portanto no muda

a ta .

Denio C.55 (Mquina de Turing). Uma mquina de Turing denida


formalmente como uma tupla

(Q, q0 , QA , QR , , ),

onde

Q = {q0 , q1 , q2 , q3 , qk } o conjunto (nito) de estados em que a mquina


pode estar;

5 Na

verdade, o leitor familiarizado com Linguagens Formais reconhecer que esta mquina

de Turing simula um autmato nito.

notas de aula  verso 85 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

q0 Q

393

o estado inicial;

QA , QR Q

so conjuntos de estados de aceitao e rejeio. A mquina

o alfabeto da mquina. Cada smbolo

in
ar

pra de computar ao entrar em um destes estados;


pode estar na ta 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, .)

reconhece

uma cadeia se, quando iniciada

Pr
e

Dizemos que uma mquina de Turing

com a cadeia gravada na ta, atinge o estado de aceitao.


mquina de Turing pode

rejeitar

Note que nada impede que uma mquina de Turing entre em


passos sem nunca chegar em
com o exemplo anterior).

Similarmente, a

uma cadeia se chegar ao estado de rejeio.

q QA ou em q QR

loop,

executando

( exatamente o que acontece

Denio C.56 (Linguagem Turing-reconhecvel). Uma linguagem Turing-

reconhecvel se existe alguma mquina de Turing que a reconhece.

Denio C.57 (Linguagem Turing-decidvel). Uma linguagem Turing-decidvel


se existe alguma mquina de Turing que a decida, e indecidvel se tal mquina

Ve
rs

de Turing no existe.

As instncias de um problema indecidvel constituem uma

cidvel.

linguagem inde-

Exemplo C.58 (Linguagem Turing-decidvel: primos). O conjunto dos nmeros primos uma linguagem Turing-decidvel, porque existe algoritmo que
decide se um nmero

pertence linguagem (e sempre para, independente de

qual seja sua entrada).

Exemplo C.59 (Linguagem Turing-indecidvel: mortalidade de matrizes). Dado


um conjunto de matrizes

3 3,

decidir se a matriz zero pode ser obtida multi-

plicando 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

zero por multiplicaes. A linguagem

LZ33

3 3 onde se pode obter a matriz


J

no Turing-decidvel.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

394

fcil vericar a validade do Teorema a seguir.

in
ar

Teorema C.60. Uma linguagem L decidvel se tanto L como seu complemento so Turing-reconhecveis.
Deve estar clara a relao entre mquinas de Turing e a Denio C.33
(linguagem de um problema de deciso).

As mquinas de Turing podem parecer exageradamente simplicadas, 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

Tese de Church-Turing.

lim

o que diz a

Toda funo que pode ser efetivamente calculada pode ser calculada
por uma mquina de Turing

A denio de efetivamente calculada refere-se a algoritmos e mtodo.

Os

cinco pontos a seguir so uma caracterizao de procedimento efetivo.

ii)

O procedimento descrito em um nmero nito de instrues;

Pr
e

i)

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

(ii);

Os passos de computao so

discretos,

sem o uso de qualquer dispositivo

v)

analgico;

Os passos de computao so

determinsticos,

sem o uso de dispositivos

Ve
rs

aleatreos como dados.

Vale notar que

(v)

no conita 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 [Cor+09] e de Papadimitriou e
Vazirani [DPV06; PV09]. 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 [Man89].

notas de aula  verso 85 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

395

Uma abordagem usando Mquinas de Turing pode ser encontrada nos livros
de Sipser [Sip07] e de Lewis e Papadimitriou [LP04].
Tcnicas para resoluo de recorrncias no contexto de anlise de algorittashnik [GKP95].

in
ar

mos so dadas por Cormen e outros [Cor+09] e por Graham, Knuth e PaO livro de Gilles Brassard e Paul Bratley [BB96] aborda

recorrncias de forma bastante rigorosa. Sedgewick e Flajolet [SF95] do uma

exposio mais profunda. O assunto tambm tema da literatura de Anlise


Combinatria  no livro introdutrio de Plnio Santos, em Portugus [SMM07]
e no de Peter Cameron [Cam94].

O Teorema Mestre normalmente apresentado a estudantes de Cincia da

Computao no incio do curso de Anlise de Algoritmos. Este , na verdade,


forma

T (n) = g(n) +

l
X

lim

um caso particular do Teorema de Akra-Bazzi, que se aplica a recorrncias da

ai T (bi n + hi n)

i=1

O Teorema de Akra-Bazzi foi demonstrado em 1998 [AB98].

Uma tcnica importante para anlise de algoritmos que no coberta neste


Apndice a anlise amortizada. O livro de Cormen e outros [Cor+09] uma
boa referncia para o assunto.

projeto de algoritmos no discutidas aqui:


backtracking, por exemplo.

Pr
e

H tambm tcnicas de

algoritmos

gulosos, programao dinmica e

No abordamos tambm a anlise de algoritmos paralelos.


O primeiro problema a ser demonstrado

N P -completo

foi o

SAT

(satisfa-

tibilidade de frmula booleana) independentemente por Stephen Cook [Coo71]


e Leonid Levin [Lev].

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 [Sip07] e de Hopcroft, Motwani e Ullman [HMU01b] ou a prova de

N P-

CIRCUIT-SAT

completude do

no livro de Cormen e outros [Cor+09]. Garey e

Johnson ilustram redues usando a tcnica de projeto de componentes [GJ79].

TETRIS N P -difcil foi dada por Demaine, Hohenber-

Ve
rs

A demonstrao de que

ger e Liben-Nowell [DHL02; BHK03].


H, alm de

N P,

diversas outras classes de complexidade. Muitas delas

so denidas em termos de diferentes propriedades dos algoritmos analisados


(requisitos de espao, possibilidade de paralelizao, por exemplo). O livro de
Garey e Johnson [GJ79] 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 [Aus+03]. Livros que tratam de Complexidade Computacional incluem o


de Arora e Barak [AB09], o de Papadimitriou [Pap93], o de Immerman [Imm98]
e o de Goldreich [Gol08].

Algoritmos aproximados (ou de aproximao) so uma das maneiras de

N P -difceis; o
handbook organizado

lidar com problemas

livro de Vazirani [Vaz10] trata destes al-

goritmos, e o

por Gonzalez cobre o assunto em maior

exausto [Gon07]. Introdues mais curtas e simples so normalmente includas

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

396

em livros sobre Complexidade Computacional, como o de Papadimitriou e Vazirani [DPV06] e o de Cormen e outros [Cor+09]. O Captulo dezesseis do livro de
Korte e Vygen [KV02] compacto, porm mais denso que as introdues dos ou-

in
ar

tros dois livros. Em Portugus h o livro de Carvalho e outros [Car+01]. A tese


de doutorado de Viggo Kann [Kan92] tambm trata de algoritmos aproximados,
de maneira bastante detalhada.

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 nito de axiomas e que fosse completo e consistente.

lim

Esta proposta conhecida como o programa de Hilbert, que inclua a decidi-

bilidade da Matemtica: a identicao 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

Pr
e

Numbers, with an Application to the Entscheidungsproblem em 1936 [Tur37;


Tur38]. Alonzo Church props o

-Clculo

em 1930 [Chu32]; Stephen Kleene

desenvolveu a teoria das funes recursivas, comeando em 1936 [KR36; Kle52];


h diversos outros modelos, como o de Emil Post [Pos36]. 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.

O livro de Martin Davis [Dav85] d uma excelente introduo a Mquinas


de Turing.

O livro de Nigel Cutland [Cut80] expe computabilidade usando

funes recursivas. Um excelente livro, avanado mas j bastante antigo, sobre

Ve
rs

funes recursivas o de Hartley Rogers [Rog87], que d tambm uma breve mas
excelente introduo tese de Church-Turing. O livro de Barry Cooper [Coo03],
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 [Dav04].
H muitos bons livros abordando Linguagens Formais. Dentre os introdu-

trios destacamos o de Michael Sipser [Sip07] e o de John Hopcroft, Rajeev


Motwani e Jerey Ullman [HMU01a].

O livro de Jerey Shallit, para estudo

avanado, muito bom [Sha08].


Grafos so denidos

en passant

na Seo C.2. Para uma introduo e refe-

6 [BM10]

rncia Teoria dos Grafos, o livro de Adrian Bondy e U. S. R. Murty

muito muito bom. O livro de Bla Bollobs [Bol98] tambm muito bom, com
uma perspectiva um tanto diferente. Outra boa introduo dada no livro de

6 Uppaluri

Siva Ramachandra Murty, que prefere usar U. S. R. Murty.

notas de aula  verso 85 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

397

John Harris, Jerey Hirst e Michael Mossingho [HHM10].

in
ar

Exerccios
Ex. 198  Prove a Proposio C.2.

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

f)

T (n) = T (n/2) + n

T (n) = T (n/2) + n

T (n) = T ( n) + 1

g)
h)

lim

Ex. 199  Resolva as recorrncias.

Pr
e

Ex. 200  Analise a complexidade de tempo do algoritmo usual (usado com


lpis e papel) para multiplicao de polinmios.

Ex. 201  Analise a complexidade de tempo do algoritmo para clculo de


7
determinante de matrizes usando expanso de Laplace .
Ex. 202  Tente conseguir um algoritmo para clculo de determinante com
complexidade assinttica de tempo melhor que a do mtodo ingnuo do Exerc-

cio 201

Ex. 203  Qual a complexidade de tempo do algoritmo usual de diviso


para dois inteiros que possam ser representados com

dgitos decimais? E se

Ve
rs

soubermos apenas que os nmeros podem ser representados com

k bits?

Ex. 204  Determine a complexidade de tempo do mtodo da eliminao de


Gauss para soluo de sistemas de equaes lineares.

Ex. 205  Na Seo C.5 dissemos que nmeros de Carmichael so mais raros que nmeros primos.
Carmichael antes de

Denotamos por

(x)

C(x) < x exp

para alguma constante

C(x)

a quantidade de nmeros de

a quantidade de primos antes de

k log x log log log x


log log x

x.

Sabendo que

k , calcule a probabilidade de erro do teste de primalidade

apresentado naquela mesma Seo, que usa o pequeno Teorema de Fermat.

7 Ou

seja, usando cofatores e menores complementares.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

398

Ex. 206  Determine a complexidade de tempo do mtodo de Newton-Raphson


para obteno de raiz de funes reais.

Ex. 207 

Torres de Hani

um problema bastante conhecido. trs hastes,

in
ar

duas vazias e uma com vrios discos dispostos de forma que o maior ca 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).

lim

iii) Um disco menor nunca pode car embaixo de um maior.


Considere o seguinte algoritmo que move

P ARA,

usando a haste

AU X

discos da hasta

DE

para a haste

como auxiliar, e responda as duas questes.

Pr
e

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)

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.

Ex. 208  Considere a seguinte denio de o-pequeno:


Denio C.61 (Notao assinttica o-pequeno). Sejam f (x) e

Ve
rs

es de uma varivel. Dizemos que

Prove que

f (x) o(g(x))

lim

g(x) duas fun-

se e somente se

f (n)
=0
g(n)


f (x) o(g(x)) implica que f (x) O(g(x)), mas a recproca no vale.

Ex. 209  Prove que os trs casos do Teorema Mestre para recorrncias so
mutuamente excludentes.

Ex. 210  Prove o Teorema-Mestre para recorrncias.


Ex. 211  Determine a complexidade assinttica para a quantidade de somas

nos trs algoritmos de multiplicao de matrizes discutidos neste Apndice.

Ex. 212  Prove que qualquer rvore com mais de um vrtice tem pelo menos
duas folhas.

notas de aula  verso 85 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

399

Ex. 213  Considere uma clique qualquer

Kn .

So necessrias

cores para

colorir seus vrtices. Quantas arestas precisam ser removidas desta clique para
que seja possvel colori-la com

n1

cores? E para quantidades ainda menores

Ex. 214  Tente resolver a instncia do

3SAT

in
ar

de cores?
dada no Exemplo C.43. Caso

haja uma atribuio de variveis, mostre-a.

Ex. 215  Prove que o seguinte problema

N P -completo.
COBERTURA-POR-ARESTAS: dado um grafo G = (V, E) e um inteiro po0
sitivo K , determinar se existe E E de tamanho menor ou igual a K tal que
0
todo vrtice de V pertence a uma aresta em E .

lim

Ex. 216  Apresentamos um algoritmo na Seo C.7.3 para determinar o valor mximo que pode ser posto na mochila, mas no mostramos como identicar

os itens a serem includos. Modique o algoritmo para que ele construa uma
lista de quantidades de itens.

Ex. 217  Na pgina 387 dissemos que colorir um grafo bipartido com duas
cores em tempo polinomial simples. Mostre o algoritmo.

N P -difcil.

Pr
e

Ex. 218  Provamos (Teorema C.42) somente que CONJUNTO-DOMINANTE


Prove tambm que o problema est em

N P.

Ex. 219  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.
Ex. 220  Prove que o problema a seguir

Ve
rs

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 .
Ex. 221  Prove que

CIRCUITO-HAMILTONIANO

N P -completo.

Ex. 222  Demonstre o Teorema C.47. 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. 223  Mostre um grafo para o qual o algoritmo

aprox_vertex_cover

retorna uma soluo exatamente duas vezes maior que a tima.

Ex. 224  Demonstre o Teorema C.49


Ex. 225  Prove que as seguintes modicaes em mquinas de Turing no
mudam seu poder computacional (ou seja, mostre que possvel simular estas

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

400

novas mquinas em uma mquina de Turing comum):


a)

Muitas tas:

a cada passo, a mquina de Turing pode ler e escrever em

uma de duas tas.

Fita multidimensional: a mquina de Turing passa a poder


n dimenses, movendo-se em 2n direes.

em um espao de
c)

Acesso aleatrio:

ler e escrever

in
ar

b)

modica-se a mquina de Turing de forma que ela possa,

a cada passo, posicionar a cabea de leitura e gravao em uma posio


denida por um ndice.
d)

Fita innita em duas direes:

a cabea de leitura e gravao pode andar

para a direita ou para a esquerda, sem que encontre qualquer limite.

PSPACE ,

dissemos que no faz dife-

lim

Ex. 226  Porqu, ao denir a classe

rena se o problema pode ser resolvido por algoritmo determinstico ou nodeterminstico?

Ex. 227  Prove o Teorema C.32.

Ex. 228  No Exemplo C.59, declaramos que o problema da mortalidade de


matrizes

33

indecidvel, e pelo Teorema C.60 a linguagem ou seu comple-

Pr
e

mento no deve ser Turing-reconhecvel. Determine qual delas.

Ex. 229  Considere uma variante de mquina de Turing onde a ta 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

Ve
rs

de Turing comum.

Apndice D

lim

Transformada de Fourier

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

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

Pr
e

transformadas discretas usadas no texto.

D.1 Transformada de Fourier

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


f (x) uma funo F (k) : W C, onde W o conjunto

a transformada de

Ve
rs

(innito) de todas as possveis frequncias.

401

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE D. TRANSFORMADA DE FOURIER

402

0
s(x) = 1/2

se
se
se

|x| > 1/2


|x| = 1/2
|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 nalmente dezenove frequncias.

s(x) = cos(2x)

s(x) = cos(2x) (1/3) cos(6x)

lim

s(x) = cos(2x) (1/3) cos(6x) + (1/5) cos(10x) (1/7) cos(14x)

s(x) = cos(2x) (1/3) cos(6x) + + (1/37) cos(74x) (1/39) cos(78x)


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.

Pr
e

A transformada de Fourier de uma funo

f (x)

a integral

f (x)(cos(2kx) isen (2kx)) dx

F (k) =

Se usarmos a frmula de Euler,

ei = cos + isen ,

mais resumida para a transformada de Fourier.


usada.

chegaremos a uma forma

Esta a forma normalmente

f (x)e2ikx dx

F (k) =

Ve
rs

A transformada inversa de Fourier

f (x) =

F (k)e2ikx dk

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

integrvel em

(, +).

f (x)

H outras situaes em que a transformada de

Fourier existe, mas como estamos interessados no caso discreto, no trataremos


delas.

F (k) so comf (x) multiplicado por isen (2kx)). Isso signica que para
frequncia k , F (k) dar um nmero complexo, que pode ser decomposto

Normalmente os valores dados pela transformada de Fourier

plexos (porque
cada

em partes real e imaginria:

F (k) = R(k) + iI(k).

notas de aula  verso 85 - Jernimo C. Pellegrini

D.2. TRANSFORMADA DISCRETA DE FOURIER

403

Reescrevendo este nmero em forma polar obtemos

F (k) = |F (k)| + ei(k) ,


|F (k)| a magnitude e (k) o ngulo de fase para esta frequncia.

Tendo

in
ar

onde

ngulo de fase, frequncia e magnitude, denimos completamente uma senoide


(ou cossenoide). Uma cossenoide, por exemplo, descrita por

cos(x )
onde

a amplitude,

a frequncia e

o ngulo de fase.

H alguns grcos interessantes que podemos plotar para a transformada de


Fourier de uma funo (todos tendo a frequncia como domnio): a amplitude,

|F (k)|2 = R(k)2 + I(k)2 .

lim

o ngulo de fase e o espectro de potncia, dado por

D.2 Transformada discreta de Fourier

Uma funo peridica discreta pode ser decomposta em uma soma


senoides.

nita

de

Se modicarmos a integral da transformada de Fourier para o caso

Pr
e

discreto, obteremos a transformada discreta de Fourier (DFT):

Fn =

N
1
X

fk e(2ink)/N

k=0

A inversa da DFT

fk =
Cada um dos coecientes

Fk

da DFT representa uma senoide; a soma de todas

senoides coincidir com a funo

as

N 1
1 X
Fn e(2ink)/N
N n=0

f nos pontos dados.

Uma troca de variveis pode tornar a notao um pouco menos carregada:

N = e(2i)/N ,

Ve
rs

se zermos

observando que

e(2i)/N

a DFT pode ser escrita como

Fn =

N
1
X

nk
fk N
,

(D.1)

k=0

uma raiz da unidade para

C.

evidente que a DFT linear: podemos reescrev-la tambm na forma de

matriz, onde o elemento

ab
(a, b) N

(na matriz a seguir omitimos o subscrito

em  N  para evitar sobrecarregar a notao):

1
F0
1
F1
1
.. =
.
1
FN
1

1
2
4

.
.
.

..

N 1

.
2(N 1)


f0

f1
2(N 1)
..
.
.
.

.
fN
(N 1)(N 1)
N 1

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE D. TRANSFORMADA DE FOURIER

404

D.2.1

Transformada rpida de Fourier

O algoritmo ingnuo para clculo da transformada discreta de Fourier tem com-

O(N 2 ):

plexidade de tempo

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

O(n log(n)), conhecido como


Fast Fourier Transform ).
FFT dividindo a o clculo de Fn , dado

H um algoritmo melhor, com complexidade

lim

transformada rpida de Fourier (ou FFT,


Comeamos o desenvolvimento da

pela soma na Equao D.1 em duas partes: uma para os ndices mpares e outra
para os ndices pares.

(N/2)1

(N/2)1

Fn =

2kn
(f2k )N

Pr
e

kn
2kn
= N/2
,
N

Fn

(N/2)1

(N/2)1

nk
(f2k )N/2
+

(2kn+n)

(f2k+1 )N

k=0

k=0

(N/2)1

(N/2)1

nk
(f2k )N/2
+

(2kn)

(f2k+1 )N

n
N

k=0

k=0

(N/2)1

(2k+1)n

(f2k+1 )N

reescrevemos

Ve
rs

k=0

k=0

Como

(N/2)1

kn
n
(f2k )N/2
+ (N
)

k=0

Conseguimos agora reescrever

kn
(f2k+1 )N/2
.

k=0

Fn

como a soma de duas transformadas de Fou-

rier, ambas em vetores de tamanho

N/2

(os dois termos entre colchetes).

algoritmo para a FFT calcula estas duas transformadas separadamente. O vetor de entrada dividido em dois outros:

f0

com os elementos de ndice par e

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


construdo usando

f0

f 1.

fft(f, ):
N tamanho(f )

notas de aula  verso 85 - Jernimo C. Pellegrini

D.2. TRANSFORMADA DISCRETA DE FOURIER

405

para

N/2.

fft

usam

porque esta uma raiz da unidade

lim

As chamadas recursivas a

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
Aps o clculo das duas transformadas de tamanho

N/2, o algoritmo
N = 2k , as

combina os dois resultados usando o seguinte fato: para qualquer


potncias de

so divididas em duas sequencias iguais a no ser pelo sinal. Por

N = 8,

temos

80

81
82
83
80
81
82
83

i
=
= i

= i i

Pr
e

exemplo, para

= 1

= i

= i

= i i.

Ve
rs

Isto imediatamente claro quando visualizado no plano complexo.

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.

Teorema D.1.

Demonstrao.

O algoritmo FFT tem complexidade O(n log(n)).

Basta vericar que h duas chamadas recursivas, e cada uma

resolve um problema de tamanho


plexidade

O(n).

n/2;

alm delas, h tambm um lao de com-

A relao de recorrncia que d o tempo de execuo portanto

Esta equao tem soluo

T (n) = 2T (n/2) + n.
T (n) = kn/2 + n log(n) = O(n log(n)),

demonstrao de Teorema C.4 na Seo C.1.1.

conforme a

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE D. TRANSFORMADA DE FOURIER

406

Esta demonstrao presume que a exponenciao de

(que complexo)

no tem impacto sobre o tempo de execuo do programa. Como as potencias

so usadas em sequncia (

multiplic-la por

, 1 , . . .,

a cada iterao do lao

pode-se usar uma nica varivel e

for.

in
ar

de

D.3 Transformada do Cosseno

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


zero:

Z
=
=
=

+,

ser



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.

lim

F (k)

Assim, a transformada do cosseno dada por

Pr
e
Z

F (k) =

f (x) cos(2kx) dx.

Uma observao importante que podemos fazer imediatamente que se

f (x)

denida somente sobre nmeros reais, a transformada do cosseno tambm ser


real.

Da mesma forma que h diversas maneiras de denir 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

pontos decomposta em

funes peridicas  mas a DCT decompe apenas em cossenoides, e quando

Ve
rs

o domnio real, o contradomnio tambm real. A variante apresentada aqui


conhecida como DCT-II:

Xk =

N
1
X


xn cos

n=0

k(n + 21 )
N

A transformada inversa, conhecida como DCT-III, :



N
1
X
n(k + 21 )
1
fk = X0 +
Xn cos
2
N
n=1

Para aplicar a DCT em imagens, ser interessante deni-la para duas dimenses.
Neste caso, aplicamos a DCT em linhas e colunas individualmente a transformada

Fu,v = C(u)C(v)

N
1 N
1
X
X
x=0 y=0


fx,y cos




(2x + 1)u
(2y + 1)v
cos
2N
2N

notas de aula  verso 85 - Jernimo C. Pellegrini

D.3. TRANSFORMADA DO COSSENO

q
1
N
c(k) = q
1

2N

D.3.1

se

k=0

se

k>0

in
ar

onde

407

Compresso de imagens: JPG

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.

lim

Notas

A possibilidade de representao de funes arbitrrias como somas de senoides


e cossenoides foi explorada por Joseph Fourier, quando estudava conduo do

calor .

O algoritmo para a transformada rpida de Fourier foi exposto em 1965 por


James Cooley e John Tuckey [CT65] mas j aparecia, ainda que sem destaque,
em obras anteriores (como em um trabalho de Gauss em 1905, por exemplo).

Pr
e

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 [BH95], e registrada de maneira detalhada em um artigo de Heideman,
Johnson e Burrus [HJB84].

Os livros de Brigham [Bri88] de Briggs e Henson [BH95] 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 [Cor+09]


(que apresenta diversas otimizaes), de Press, Teukilsky, Vetterling e Flan-

Ve
rs

nery [Pre+07] e Berman e Paul [BP05] (onde discutida uma verso paralela
do algoritmo).

O estudo do uso de funes trigonomtricas para representar funes cont-

nuas o objeto da Anlise de Fourier. Uma excelente introduo dada por


Stein e Shakarchi [SS03].
Uma

transformada integral

uma transformada

T f (x) =

que transforma a funo


formada.

f (u)

da forma

K(x, t)f (t)dt,


a

em outra funo

T f (u). K

kernel

da trans-

A transformada de Fourier uma transformada integral com

(e2ixt ), a =

b = +.

K =

O livro de Davies [Dav10] uma introduo

1 Em seu trabalho Teoria Analtica do Calor

[Fou03] publicado em 1822, Fourier introduziu

contribuies importantssimas Fsica e Matemtica.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE D. TRANSFORMADA DE FOURIER

408

muito bem redigida s transformadas integrais.

Uma descrio mais densa

dada por Brychkov e Prudnikov [BP89].


A transformada discreta do cosseno foi descrita pela primeira vez em 1974

handbook

in
ar

por Ahmed, Natarajan e Rao [ANR74]. O livro de Shih [Shi10] e o

organizado por Rao e Yip [RY01] 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

lim

Ex. 230  Determine a transformada de Fourier de:

Ex. 231  Determine a transformada inversa de Fourier de:


a)

H(f ) =

sen (2f T )
2f

b)

H(f ) =

cos(2(1f )
2f

Pr
e

Ex. 232  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. 233  Em nossa exposio da FFT, presumimos que

potncia de

dois. Mostre como adaptar o algoritmo para o caso geral.

Ex. 234  Partindo da exposio dada neste Apndice, tente reescrever o de-

senvolvimento do algoritmo para a FFT usando apenas a formulao matricial.

Ve
rs

Ex. 235  Implemente a FFT.

Apndice E

lim

Descrio Detalhada de
Construes

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

supercialmente no texto.

E.1 DES

Pr
e

Este Apndice contm descries detalhadas de algoritmos que so descritos

Ve
rs

O DES uma cifra obsoleta e no deve mais ser usado na prtica. No entanto,
esta Seo descreve os detalhes de sua especicao por completude (anal,
o descrevemos no Captulo sobre cifras de bloco) e porque pode ser til ao
leitor interessado em Criptanlise: quebrar verses simplicadas 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.
409

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

IP

Pr
e

lim

in
ar

410

uma permutao inicial, aplicada antes da primeira rodada.

IP IN V ,

Sua

aplicada depois da ltima rodada.

inversa,

Ve
rs

KS

o escalonador de chaves. De uma chave com 56 bits so derivadas

desesseis chaves de 48 bits.

representam as metades esquerda e direita dos bits sendo transfor-

mados

a funo interna da rede.

Estes componentes so descritos em detalhes a seguir.

notas de aula  verso 85 - Jernimo C. Pellegrini

DES

E.1.2

411

Permutao inicial e sua inversa

A permutao inicial (P I ) dada pela matriz a seguir.

PI

42
44
46
48
41
43
45
47

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

34
36
38
40
33
35
37
39

10
12
14
16
9
11
13
15

2
4

5
7

Pr
e

A inversa de

50
52
54
56
49
51
53
55

lim

58
60

62

64

57

59

61
63

in
ar

E.1.

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

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

Finalmente, realiza uma permutao nos 32 bits

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

Pr
e

lim

in
ar

412

Ve
rs

Expanso de bits

A funo de expanso

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 85 - Jernimo C. Pellegrini

E.1.

DES

413

Permutao interna
A permutao P realizada aps a 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

S-boxes

in
ar

16
29

32

19
22

lim

matriz.

As prximas tabelas descrevem as oito S-boxes. S1:

4 13 1 2 15
15 7 4 14 2
1 14 8 13 6
12 8 2 4
9

S2:

15
3

0
13

1
8 14
13 4
7
14 7 11
8 10 1

11
13
2
1

8
1
11
7

3 10
10 6
15 12
5 11

6 12 5
12 11 9
9 7 3
3 14 10

Pr
e

14
0

4
15

6 11
15 2
10 4
3 15

3
8
13
4

4 9 7
14 12 0
1 5 8
2 11 6

2 13 12
1 10 6
12 6 9
7 12 0

9 0 7
5 3 8

10 5 0
0 6 13

0 5 10
9 11 5

3 2 15
5 14 9

9 14
0
9
4
9
13 0

6 3 15
3 4
6
8 15 3
6 9
8

Ve
rs

0
7
6
10

S3:

10
13

13
1

5
10
0
7

1
2
11
4

13 12 7
8 5 14
1 2 12
15 14 3

11 4 2
12 11 15
5 10 14
11 5 2

8
1

7
12

S4:

7 13
13 8

10 6
3 15

14 3 0
6
9
11 5 6 15 0
9 0 12 11 7
0 6 10 1 13

10
3
13
8

1 2 8 5 11
4 7 2 12 1
15 1 3 14 5
9 4 5 11 12

12
10
2
7

4 15
14 9

8 4
2 14

S5:

2
14

4
11

12 4
11 2
2
1
8 12

1
12
11
7

7 10 11 6
4
7 13 1
10 13 7
8
1 14 2 13

8 5
5 0
15 9
6 15

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 85 - Jernimo C. Pellegrini

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

414

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 85 - Jernimo C. Pellegrini

E.1.

DES

Tanto

C0

415

como

D0

so rotacionados para a esquerda.

A quantidade de bits

deslocamentos esq

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

1
1
2
2
2
2
2
2
1
2
2
2
2
2
2
1

Pr
e

lim

iterao

in
ar

rotacionadosdepende da iterao, conforme a tabela a seguir.

Assim, aps a primeira iterao rotacionam-se

C0

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

2 = 0001110.

1000011 <<

que estavam direita so reinseridos na esquerda. Por exemplo,

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 85 - Jernimo C. Pellegrini

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

Pr
e

lim

in
ar

416

E.2 AES

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 85 - Jernimo C. Pellegrini

AES

E.2.2

Escalonamento de chaves

E.2.3

Encriptao

A tabela para

xy

O byte

SubBytes

apresentada a seguir, com valores em hexadecimal.

trocado pela entrada na linha

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

e coluna

y
7
c5
f0
cc
9a
a0
5b
85
f5
17
88
5c
a9
c6
0e
94
68

da matriz.

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

in
ar

417

lim

E.2.

Por exemplo,
Em

e4

substitudo por

69 .

ShiftRows, os deslocamentos das linhas podem ter tamanhos diferentes,


Ci a i-sima linha, e
tamanho do bloco dividido por 32.

dependendo do tamanho do bloco. Na tabela a seguir,

Nb

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 85 - Jernimo C. Pellegrini

418

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

Ex. 236  Implemente as cifras e teste-as. Compare o desempenho de sua

Ve
rs

implementao com outras implementaes.

Ex. 237  Implemente verses simplicadas 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 simplicadas
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 85 - Jernimo C. Pellegrini

Apndice F

lim

Respostas e Dicas

Este Apndice traz respostas e dicas para alguns dos exerccios propostos no
texto.

tratamos dois casos:


i) No sorteio inicial,

ii) No sorteio inicial,

neste jogo,

consegue cinco cartas com o mesmo naipe.

consegue exatamente quatro cartas com o mesmo

naipe.
Tratamos primeiro o caso

Pr
e

Resp. (Ex. 3)  Para calcular a probabilidade de sucesso de

(i).

mesmo naipe inicialmente

A probabilidade de

13
5

52
5

conseguir cinco cartas do

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

no caso

(i)

Ve
rs

de sucesso de

No caso

(ii),

a probabilidade de

13
5

52
5

8
.
47

obter exatamente quatro cartas do mesmo

naipe

13
4

52
4

Assim, a probabilidade de sucesso de

13
5

52
5

(48 9)
.
48
A

no experimento


4 13
8
1397
4 (48 9)
+ 52
=
47
48
156604
4
0.0089205.
419

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE F. RESPOSTAS E DICAS

420

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
funo polinomial

g(x), f (x)

1
g(x)

. Isto segue diretamente das denies

de  o (Exerccio 208, na pgina 398) e de funo desprezvel (pgina 27).

Resp. (Ex. 13)  Note que a denio no muda  s mudamos sua redao.
Uma maneira de faz-lo denir o experimento  AchaPreImagem, que recebe
e

n.

lim

f, A

como parmetros

x R {0, 1}
Envie 1n e f (x) ao adversrio
O adversrio retorna x0
Se f (x) = f (x0 ) o resultado 1,

seno

0.

Depois basta descrever funes de mo nica como fceis de computar e dipolinomial

Pr
e

fceis de inverter, onde difcil de inverter signica que para todo adversrio
e todo

sucientemente grande,

Pr[AchaPreImagem(f, A, 1n ) = 1] negl(n).

No necessrio denir experimentos para descrever fcil de computar, j que


ali no h um adversrio envolvido.

Resp. (Ex. 24)  (i) Porque os zeros do estado inicial sero combinados

que resultar em zero  e o estado inicial no ser alterado.

usando

(ii)

Sim: basta que o estado inicial seja uma sequncia de uns, e que a quantidade
de coecientes um do polinmio de conexo seja mpar (o ou exclusivo de uma

Ve
rs

quantidade mpar de uns um, e o estado inicial ser mantido).

Resp. (Ex. 26)  (i)

(k!k

(n1)

)/nn .

Resp. (Ex. 27)  Observe que


algoritmo para com probabilidade
o tempo

esperado

n < 2k < 2n.


n/(2k )  que

A cada lao do programa, o


o caso em que

x < n.

Calcule

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

tribuem no plano. (ii) Use testes estatsticos.

e verique como eles se dis-

notas de aula  verso 85 - Jernimo C. Pellegrini

421

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

possveis textos claros, poder identicar a mensagem.

Resp. (Ex. 45)  A permutao


a operao

em cadeias binrias,

(a||b) = b||a b. Temos


a = a, porque a a = 0):

(a||b) = (a||b) (a||b)


= (b||a b) (a||b)

(note que para

lim

= (b||a b) (a||b)

in
ar

facilmente distinguvel de uma sequncia aleatrea. Se o adversrio conhece os

= (b a)||a b b)
= (a b)||a,
que permutao, cuja inversa

Resp. (Ex. 52)  Seja


encriptados, um de

Pr
e

1 (a b||a) = a||a b a = a||b.

k a chave procurada. Suponha que temos dois textos


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
Enck0 (m) = c2

Desta forma, ao testar

k0

k = k0
k = k0 .

testamos tambm seu complemento (note que apenas

Ve
rs

uma operao de encriptao permite vericar duas chaves,

k0

e seu comple-

mento).

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 homomorsmo
implica que a funo distinguvel de aleatrea: se for verdade que

f (x + y) =

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE F. RESPOSTAS E DICAS

422

f (x) + f (y),

basta que um adversrio calcule os trs valores e verique se vale

o homomorsmo. Se valer, ele diz que a funo no aleatrea. O adversrio

in
ar

teria probabilidade no desprezvel de sucesso.

Resp. (Ex. 74)  (Esboo) Suponha que o adversrio possa adivinhar o tamanho

do bloco de

mensagens

ai , bi

H.

Ele escolhe uma quantidade polinomial de pares de

do tamanho do bloco e verica se

H(ai ||bi ) = H(H(ai )||bi ).


k = 1, 2, . . .

Para adivinhar o tamanho do bloco, basta repetir a vericao para

Resp. (Ex. 89)  (b) Depende do ponto de vista; usando o modelo do Or-

culo Aleatreo (veja a Seo 7.6 no Captulo7), pode-se provar que o esquema

lim

seguro. Sem us-lo, tudo depender da vericao emprica da segurana da


construo.

Resp. (Ex. 91)  H muitos argumentos e contraexemplos: (i) No criptossistema de Rabin no h sequer a garantia de que uma mensagem
quadrtico mdulo

N.

m seja resduo

A assinatura pode no existir! necessrio formatar

o algoritmo

Dec

Pr
e

a mensagem de forma a garantir que seja resduo quadrtico. (ii) No Elgamal,


requer

dois

valores, e somente temos uma mensagem  o es-

quema deve ser modicado para que possamos us-lo. (iii) O RSA, usado de tal
maneira, inseguro.

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

meros reais)  embora este assunto tambm possa ser uma fonte de diculdade

Ve
rs

ao redigir para tal audincia.

Resp. (Ex. 103)  Tente mostrar que com os dados obtidos de

g s1 e g s2 ,
s +s2
revelar g 1
.

dois segredos,
mitiro

os participantes podem usar partilhas

Resp. (Ex. 108)  O simulador

Share para
Yi1 Yi2 que per-

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 85 - Jernimo C. Pellegrini

423

escreva (x, b, r)
em uma execuo

x, b e r que aparecem na transcrio


hP, V i(N, v), com P autntico.

idntica que teriam

in
ar

A distribuio de

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 ecientes para faz-lo.

Resp. (Ex. 121)  Use tentativa-e-erro, e lembre da probabilidade de um

ter smbolo de Jacobi

+1.

lim

nmero entre

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.

Resp. (Ex. 138)  um


este cdigo

no

Pr
e

Resp. (Ex. 133)  (a) 101001; (b) 110111; (c) 111100; (d) 000000; (e) 010101

[5, 3]-cdigo.

A distncia mnima

d = 1,

por isso

corrige erros:


11
= 0.
2

O cdigo, no entanto, detecta erros!

Ve
rs

Resp. (Ex. 142)  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. 143)  Ao recombinar as partilhas, se x participantes contribuem


com

para uma posio de um bloco, e

de cinza deve ser

x.

Como

kx

contribuem com

pode variar de zero a

k,

0,

ento o tom

temos que

pode ser

no mximo igual quantidade de tons de cinza diferentes que puderem ser


representados.

Resp. (Ex. 145)  Observe que zemos um ou exclusivo dos bits das linhas,

portanto erros se cancelam dois a dois. Calcule a probabilidade do nmero de


erros ser mpar.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE F. RESPOSTAS E DICAS

424

Resp. (Ex. 148)  O one-time pad, por exemplo, suportaria encriptao negvel. Este pode ser um ponto de partida.

pad

do tamanho

in
ar

Resp. (Ex. 149)  A encriptao bit-a-bit, exigindo um


da mensagem. Alm disso,

precisa tomar a iniciativa de enviar

r.

Resp. (Ex. 157)  Pode-se pedir a assinatura de uma mensagem encriptada,


obtendo assim o texto claro.

Encsk (Encpk (x)) = (xa )a

= x.

lim

Resp. (Ex. 161)  RSA:

Resp. (Ex. 165)  (c) Ctala. O texto claro da pea A Tempestade, de


Shakespeare (reproduzido em Admirvel Mundo Novo, de Aldous Huxley):

Pr
e

Oh! maravilha!
Que adorveis criaturas temos aqui!
Como bela a espcie humana!
OH ADMIRVEL MUNDO NOVO
que possui gente assim!

(d) Cifra de Vigenre. O texto claro um trecho de O sol nascer, do Cartola:

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

(e) Cifra de Csar. O Trabalho duro recompensado no futuro. A preguica

Ve
rs

recompensada imediatamente
(f ) Atbash. Trecho de Alegria, Alegria de Caetano Veloso:

Por entre fotos e nomes


Sem livros e sem fuzil

Resp. (Ex. 167)  Comece supondo que

tenha inversa

M 1 ,

e observe

que

det M det M 1 = det(M M 1) = det I = 1.

Resp. (Ex. 170) 

648 = 3 216.

mdc (432, 648) = 216.


k

Ento (lembrando que

432 = 2 216
todos os inteiros

Temos ento que


escolhido dentre

notas de aula  verso 85 - Jernimo C. Pellegrini

425

positivos) temos o seguinte (nas linhas a seguir usamos  | para divide e

no

para probabilidade condicional):

= Pr [m : 3(216)m = 2(216)k]
= Pr [m : 3m = 2k]
1
= Pr[3 | 2k] = .
3

in
ar

Pr[648|k 432] = Pr[3 216 | k 2 216]

x0 6= x.
bi ai x (mod mi ).

Resp. (Ex. 172)  Suponha que no, presuma que h outra soluo

Resp. (Ex. 177) 

ai x bi ,

mas

lim

Comece sua argumentao observando que

1/2k .

Pr
e

Resp. (Ex. 178)  No (no sendo bijees, no haver inversa).

Resp. (Ex. 179)  Sim: a identidade a cadeia de

zeros; a operao de

ou exclusivo associativa; e cada elemento tem um inverso, que ele mesmo.

Resp. (Ex. 180)  No: nem todo polinmio tem como inversa outro polinmio.

Resp. (Ex. 182)  Suponha que a ordem de um grupo

p, primo. A ordem
a1 = 1 ou ap = 1.
No h como haver
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).
a do grupo deve ser 1
ak = 1, com k 6= p,

Ve
rs

de qualquer elemento

ou

p:

temos que

Resp. (Ex. 183)  Por induo em |G|. Use o teorema de Lagrange no passo.

Resp. (Ex. 187)  Comece da seguinte maneira: se

G tem ordem 2n, ento


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

Resp. (Ex. 188)  No, porque no vale a distributividade de nenhuma delas


sobre a outra.

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE F. RESPOSTAS E DICAS

426

O(n2 ), onde n o maior grau dos dois


O(om), onde o e m so a quantidade

Resp. (Ex. 200)  De maneira geral,


polinmios. Uma estimativa mais justa

Resp. (Ex. 201) 

O(n!),

onde

in
ar

de termos diferentes de zero em cada polinmio.

o nmero de linhas da matriz

Resp. (Ex. 202)  Use decomposio

LU P

ou escalonamento (o determi-

nante de uma matriz triangular o produtrio da sua diagonal; s necessrio


corrigir o sinal caso tenha havido troca de linhas).

O(2n ).

lim

Resp. (Ex. 207)  (a) Sim (use induo). (b)

Resp. (Ex. 208)  Para provar que a recproca no vale, escolha

cg(x),

com alguma constante

c.

f (x) =

trao.

Pr
e

Resp. (Ex. 210)  Use rvores, como a mostrada no texto, em sua demons-

Resp. (Ex. 211)  Tome cuidado para diferenciar soma de elementos de soma
de matrizes.

Resp. (Ex. 212)  Como a rvore um grafo conexo e tem mais de um

vrtice, todo vrtice tem grau maior ou igual a um. Sejam

v0 , . . . , v n

vrtices

formando um caminho maximal na rvore (ou seja, um caminho que no pode


ser expandido adicionando-se arestas em qualquer de seus extremos).

Ve
rs

este caminho maximal, ele deve cisitar toda a vizinhana de


adjacente a algum

vi ,

com

i < n 1,

ento

no h ciclos em uma rvore. Assim,

vn

uma folha. Similarmente,

Resp. (Ex. 214)  Sim,

v0

vn

vi , vi+1 , . . . , vn , vi

Se

Como

vn

for

um ciclo  mas

adjacente apenas a

vn1

 ou seja,

folha.

a=b=d=g =V.

Resp. (Ex. 215)  Faa uma reduo de


construindo o grafo dual de

vn .

COBERTURA-POR-VRTICES,

G.

Resp. (Ex. 217)  Comece de um vrtice e siga pintando seus vizinhos, depois os vizinhos dos vizinhos etc, usando cores alternadas. Quando no houver

notas de aula  verso 85 - Jernimo C. Pellegrini

427

mais vizinhos, procure outro componente conexo. Quando no houver componentes conexos, pare.

in
ar

Resp. (Ex. 218)  Basta observar que possvel, em tempo polinomial, per-

correr 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

k,

a soluo tambm no est correta.

Resp. (Ex. 219)  Use o problema

CONJUNTOS).

X3C (COBERTURA-EXATA-POR-3-

Resp. (Ex. 220)  Faa uma reduo de

lim

na soluo maior que

COBERTURA-POR-VERTICES.

Resp. (Ex. 221)  (Dica apenas) Faa reduo de COBERTURA-POR-VERTICES.

{ u, v } em G.
uv4 uv5 uv6

Construa o grafo a seguir para cada aresta

uv2

vu1

vu2

uv3

Pr
e

uv1

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
no na cobertura.

ou

estarem ou

Resp. (Ex. 222)  Seja


erro

X o conjunto de n objetos com valores v1 , . . . , vn e


s1 , . . . , sn . Se pudermos resolver o problema de maneira absoluta com
mximo k , podemos resolver de maneira exata o problema de mochila em

tamanhos

Ve
rs

tempo polinomial:

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

distante no mximo

Resp. (Ex. 223) 

k + 1,

a nica soluo que

da tima ela mesma.

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. 225)  (b) Codique os estados usando ordem lexicogrca. (d)

Use um mapeamento de ta nita esquerta para ta innita dos dos lados da

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE F. RESPOSTAS E DICAS

428

mesma forma que faria de

para

Z.

dependendo dele ser determinstico ou no.

Resp. (Ex. 227)  (Rascunho) Seja

in
ar

Resp. (Ex. 226)  A quantidade de memria usada pelo algoritmo no muda

A um algoritmo (determinstico ou no)


Ento A no ter tempo

que use tempo polinomial no tamanho da entrada.

suciente para usar memria exponencial no tamanho da entrada.

Resp. (Ex. 229)  (Rascunho) A mquina descrita pode usar as duas pilhas
smbolo de
de

P1

P2

e empilh-lo em

P3 ;

lim

como se fossem uma ta: para mover-se direita na ta basta desempilhar um
para gravar um smbolo basta desempilhar

e empilhar o novo smbolo; para avanar alm do m da palavra na ta

o autmato pode andar at o m dela (desempilhando de

P1 ),

e empilhar mais um smbolo em

(46.5, 50 4.5i, 53.5, 50 + 4.5i).

Ve
rs

Pr
e

Resp. (Ex. 232) 

P2 .

P2

e empilhando em

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Apndice G

lim

Ficha Tcnica

AT X, em sistema Linux. Parte dos diagramas


Este texto foi produzido em L
E
foi criada sem editor grco, usando diretamente o pacote Tik Z; outra parte
foi produzida usando os editores Dia e Ipe. O ambiente Emacs foi usado para

Ve
rs

Pr
e

AT X.
edio do texto L
E

429

notas de aula  verso 85 - Jernimo C. Pellegrini

APNDICE G. FICHA TCNICA

Ve
rs

Pr
e

lim

in
ar

430

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

Bibliograa
[07]

 Sponge functions. Em:

Proceedings of Ecrypt Hash Workshop 2007.

[AB09]

[AB96]

Sanjeev Arora e Boaz Barak.

Approach.

lim

2007.

Computational Complexity: A Modern

Cambridge University Press, 2009.

R. Anderson e E. Biham.  Two Practical and Provably Secure Block

Proceedings of the Third International Workshop on Fast Software Encryption. 1996, pp. 113120.
Cipers: BEAR and LION. Em:

Mohamad Akra e Louay Bazzi.  On the solution of linear recurrence


equations. Em:

Computational Optimization and Applications

Pr
e

[AB98]

isbn: 0-52142-426-7.

10.2

(1998), pp. 195210.


[AD98]

Mikls Ajtai e Cynthia Dwork.  A public-key cryptosystem with


worst-case/average-case equivalence. Em:

Proc. 29th ACM STOC.

1998, pp. 284293.


[AKS04]

Manindra Agrawal, Neeraj Kayal e Nitin Saxena.  PRIMES is in


P. Em:

160.2 (2004), pp. 781793.

Mansour Al-Meaither.  Secure electronic payments for Islamic -

[AlM04]

Annals of Mathematics

nance. Tese de doutorado. Department of Mathemathics, Royal


Holloway, University of London, 2004.
Paolo Alu.

Algebra: Chapter 0.

Ve
rs

[Alu09]

2009.

[And94]

[ANR74]

George E. Andrews.

[Apo76]

American Mathematical Society,

Number Theory.

Dover, 1994.

N. Ahmed, T. Natarajan e K. R. Rao.  Discrete Cosine Transform.

Em:

[Aok+01]

isbn: 978-0-8218-4781-7.

IEEE Transactions on Computers

Kazumaro Aoki et al.

Cipher.

(1974).

Specication of Camellia  a 128-bit Block

Disponibilizado pela Mitsubishi Corporation. 2001.

Tom Apostol.

Introduction to analytic number theory.

Springer,

1976.

[Arr50]

Kenneth J. Arrow.  A Diculty in the Concept of Social Welfare.

[Arr51]

Kenneth J. Arrow.

Em:

Journal of Political Economy

58.4 (1950), pp. 328346.

Social Choice and Individual Values. 1951. isbn:

0-300-01364-7.
431

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA

432

[Art91]
[Ate+01]

Michael Artin.

Algebra.

Prentice Hall, 1991.

Giuseppe Ateniese et al.  Extended Schemes for Visual Cryptography. Em:

Theoretical Computer Science

Giuseppe Ateniese et al.  Constructions and Bounds for Visual

23rd International Colloquium on Automata,


Languages and Programming. 1996, pp. 416428.
Cryptography. Em:

[Ate+96b]

Giuseppe Ateniese et al.  Visual Cryptography for General Access


Structures. Em:

Information and Computation

106.

Complexity and Approximation: Combinatorial


optimization problems and their approximability properties. Springer-

G. Ausiello et al.
Verlag, 2003.

[Bac95]

[Bar09]

isbn: 9783540654315.

Andr Bacard.

Computer Privacy Handbook. Peachpit Press, 1995.

isbn: 1-56609-171-3.
Gregory V. Bard.

Algebraic Cryptanalysis.

0387887563.

[BB96]

Friedrich L. Bauer.

Cryptology.

2010.

Decrypted Secrets: Methods and Maxims of


Fundamentals of Algorithms.

isbn: 0-13-335068-1.

Cattaneo.

Elementary Number Theory, Cryptography and Codes.

isbn: 978-3-540-69199-0.

Guido Bertoni, Joan Daemen e Michal Peeters Gilles van Assche.

Cryptographic sponge functions. Documento submetido


http://sponge.noekeon.org/CSF-0.1.pdf. 2012.

[Ber+09]

ao NIST,

Daniel J. Bernstein, Erik Dahmen e Johannes Buchmann.

Quantum Cryptography.

Ve
rs

[BDB09]

Pren-

Maria Welleda Baldoni, Ciro Ciliberto e Giulia Maria Piacentini


Springer, 2009.

[BDA12]

isbn:

isbn: 3642063837.

Gilles Brassard e Paul Bratley.


tice Hall, 1996.

[BCC09]

Springer, 2009.

Pr
e

[Bau10]

129 (1996), pp. 86

lim

[Aus+03]

250 (2001), pp. 143

in
ar

161.
[Ate+96a]

isbn: 0130047635.

Springer, 2009.

Post-

isbn: 978-3-540-88701-0.

Guido Bertoni et al.  The Road from Panama to Keccak via Ra-

dioGatn. Em:

Symmetric Cryptography.

Ed. por Helena Hands-

chuh et al. Dagstuhl Seminar Proceedings 09031. Dagstuhl, Germany: Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, Germany, 2009.

2009/1958.

[BF03]

url: http://drops.dagstuhl.de/opus/volltexte/

Dan Boneh e Matthew Franklin.  Identity-Based Encryption from

the Weil Pairing. Em:

SIAM Journal of Computing

32.3 (2003),

pp. 586615.

[BF92]

Frederick W. Byron e Robert W. Fuller.

and Quantum Physics.

Dover, 1992.

Mathematics of Classical

isbn: 048667164X.

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA
[BFM88]

433

Manuel Blum, Paul Feldman e Silvio Micali.  Non-Interactive ZeroKnowledge and Its Applications. Em: Proceedings of the twentieth
annual ACM symposium on Theory of computing (STOC 1988).

[BH95]

in
ar

1988, pp. 103112.

The DFT: an owner's manual for the discrete Fourier transform. SIAM, 1995. isbn: 0-89871-

William Briggs e Van Emden Henson.


342-0.

[BHK03]

Ron Breukelaar, Hendrik Jan Hoogeboom e Walter A. Kosters.

Tetris is Hard, Made Easy. Relatorio Tecnico 2003-9, Universiteit


Leiden. http : / / www . liacs . nl / ~kosters / tetris / tetr . pdf.
2003.

Josh Benaloh e Jerry Leichter.  Generalized Secret Sharing and


Monotone Functions. Em:

Advances in Cryptology - CRYPT0 88.

lim

[BL90]

1990, pp. 2735.

[BM10]

G. R. Blakley.  Safeguarding cryptographic keys. Em:

of the National Computer Conference.

John Adrian Bondy e U. S. R. Murty.


2010.

[BMV78]

isbn: 1849966907.

Proceedings

1979, pp. 313317.

Graph Theory.

Springer,

Elwyn R. Berlekamp, Robert J. McEliece e Henk C.A. Van Tilborg.

Pr
e

[Bla79]

 On the Inherent Intractability of Certain Coding Problems. Em:

IEEE Transactions on Information Theory


207.
[Bog+09]

IT-24 (1978), pp. 203

Peter Bogetoft et al.  Multiparty Computation Goes Live. Em:


Berlin, Heidelberg: Springer-Verlag, 2009, pp. 325343.
3-642-03548-7.

isbn:

978-

Modern Graph Theory. Springer, 1998. isbn: 0387984887.

Bla Bollobs.

[Boy07]

X. Boyen.  A Tapestry of Identity-Based Encryption: Practical Fra-

[Bol98]

meworks Compared. Em:

[BP05]

[BP89]

[BR93]

International Journal of Applied Cryp-

1.1 (2007), pp. 321.

Ve
rs

tography

Kenneth A. Berman e Jerome L. Paul.

rallel and distributed.

Thomson, 2005.

Yu. A. Brychkov e A.P. Prudnikov.

ralized Functions.

CRC Press, 1989.

Algorithms: sequential, pa-

isbn: 0-534-42057-5.

Integral Transforms of Gene-

isbn: 9782881247057.

M. Bellare e P. Rogaway.  Random Oracles are Practical: a pa-

radigm for designing ecient protocols. Em: Proceedings of the


1st ACM Conference on Computer and Communications Security.
1993.

[BR95]

M. Bellare e P. Rogaway.  Optimal Asymmetric Encryption  How


to encrypt with RSA. Em:

Advances in Cryptology - Eurocrypt '94.

1995.

[Bre89]

David Bressoud.

Factorization and Primality Testing. Springer, 1989.

isbn: 0387970401.

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA

434

[BS91]

E. Oren Brigham.

ons.

The Fast Fourier Transform and Its Applicati-

Prentice Hall, 1988.

E. Biham e A. Shamir.  Dierential Cryptanalysis of DES-like


Cryptosystems. Em:

[BS93]

[BSS99]

isbn: 978-0133075052.

Journal of Cryptology

Eli Biham e Adi Shamir.

Encryption Standard.

Dierential Cryptanalysis of the Data

Springer-Verlag, 1993.

I. Blake, G. Seroussi e Nigel Smart.


Cambridge University Press, 1999.

[Bur+99]

Carolynn Burwick et al.

isbn: 0521653746.

MARS - a candidate cipher for AES.

Wiley, 2008.

Peter J. Cameron.

A Course in Computational Number

Combinatorics: topics, techniques, algorithms.

Cambridge university Press, 1994.


[Can+96]

Ran Canetti et al.


Report 1996/002.

[Can00]

Dis-

lim

[Cam94]

David Bressoud e Stan Wagon.

Theory.

isbn: 3540979301.

Elliptic Curves in Cryptography.

ponibilizado pela IBM Corporation. 1999.


[BW08]

4.1 (1991), pp. 372.

in
ar

[Bri88]

isbn: 0-0521-45761-0.

Deniable Encryption. Cryptology ePrint Archive,


http://eprint.iacr.org/. 1996.

Ran Canetti.  Security and Composition of Multiparty Crypto-

Journal of Cryptology

Pr
e

graphic Protocols. Em:

13.1 (2000), pp. 143

202.
[Car+01]

[Cat+05]

M.H. Carvalho et al.

ximao.

Dario Catalano et al.


2005.

[CDR03]

Birkhuser Basel,

Claude Cohen-Tannoudji, Bernard Diu e Frank Laloe.

Mechanics.

isbn: 0471569526.

Wiley-Interscience, 2006.

Thomas W. Cusick, Cunsheng Ding e Ari Renvall.

and Number Theory.

Quantum

Stream Ciphers

Elsevier, 2003.

Ronald Cramer, Rosario Gennaro e Berry Schoenmakers.  A se-

Ve
rs

[CGS97]

Contemporary Cryptology.

isbn: 978-3764372941.

[CDL06]

Uma introduo sucinta a algoritmos de apro-

IMPA, 2001.

cure and optimally ecient multi-authority election scheme. Em:

Eurocrypt 97.

[Cha82]

[Cho+85]

1997.

David Chaum.  Blind Signatures for Untraceable Payments. Em:

Proceedings of CRYPTO 1982.

1982.

B. Chor et al.  Veriable Secret Sharing and Achieving Simultaneity in the Presence of Faults. Em:

Proceedings of FOCS85. 1985,

pp. 383395.

[CHP92]

D. Chaum, E. van Heijst e B. Ptzmann.  Cryptographically String


Undeniable Signatures, unconditionally secure for the signer. Em:

Advances in Cryptology  CRYPTO91.

[Chu32]

Springer-Verlag, 1992.

A. Church.  A set of postulates for the foundation of logic. Em:

Annals of Mathematics Series 2

33 (1932), pp. 346366.

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA
[CI07]

[Cla01]

435

Francisco Gabriel Capuano e Ivan V. Idoeta.

nica Digital.

rica, 2007.

Elementos de Eletr-

isbn: 9788571940192.

John Andrew Clark.  Metaheuristic Search as a Cryptological Tool.

C. Cocks.  An identity based encryption scheme based on quadratic

8th IMA International Conference on Cryptography

residues. Em:

and Coding.

[Coh05]

[Coh10]

[Coh99]

2001.

Handbook of Elliptic and Hyperelliptic Curve Cryp-

Henri Cohen.

tography.

Chapman&Hall/CRC, 2005.

A Course in Computational Algebraic Number The-

Henri Cohen.

ory.

Springer, 2010.

[Coo71]

isbn: 0387987274.

S. Barry Cooper.
2003.

isbn: 3642081428.

Advanced Topics in Computional Number Theory.

Henri Cohen.

Springer, 1999.
[Coo03]

Computability Theory.

isbn: 1584882379.

Proceedings of the Third Annual ACM Symposium on Theory


of Computing. 1971, pp. 151158.

Pr
e

Don Coopersmith.  The Data Encryption Standard (DES) and its


strength against attacks. Em:

velopment
[Cor+09]

Thomas Cormen et al.

Introduction to Algorithms.

Richard Crandall e Carl B. Pomerance.

putational Perspective.

Springer, 2010.

a ed. MIT

Prime Numbers: A Com-

isbn: 9781441920508.

Ronald John Fitzgerald Cramer.  Modular design of secure, yet

[Cra96]

IBM Journal of Research and De-

38.3 (1994), pp. 243250.

Press, 2009.
[CP10]

Chapman e Hall/CRC,

Stephen Cook.  The complexity of theorem proving procedures.

Em:

[Coo94]

isbn: 1584885181.

lim

[Coc01]

in
ar

Tese de doutorado. University of York, 2001.

practical cryptographic protocols. Tese de doutorado. University

Ve
rs

of Amsterdam, 1996.
[Cr88]

Claude Crpeau.  Equivalence between two avours of oblivious


transfer. Em:

[CT06]

[CT65]

Advances in Cryptology: CRYPTO 87.

Thomas M. Cover e Joy A. Thomas.

ory.

Wiley-Interscience, 2006.

Elements of information the-

isbn: 0471241954.

James W. Cooley e John W. Tukey.  An algorithm for the machine calculation of complex Fourier series. Em:

Computation

[Cut80]

[CY11]

1988.

Nigel Cutland.

tion Theory.

Mathematics of

19 (1965), pp. 297301.

Computability: An Introduction to Recursive Func-

1980.

isbn: 0521294657.

Stelvio Cimato e Ching-Nung Yang.

cret Image Sharing.

CRC, 2011.

Visual Cryptography and Se-

isbn: 143983721X.

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA

436

[Dav04]

Asynchronous Multiparty Computation: Theory and Implementation. Cryptology ePrint Archive, Report 2008/415.
http://eprint.iacr.org/. 2008.
Martin Davis. The Undecidable: Basic Papers on Undecidable Propositions, Unsolvable Problems and Computable Functions. Dover,
Ivan Damgrd et al.

2004.
[Dav10]

isbn: 0486432289.

Brian Davies.

Integral Transforms and Their Applications.

isbn: 978-1441929501.

Springer, 2010.
[Dav85]

in
ar

[Dam+08]

Martin Davis.

Computability and Unsolvability.

0486614719.

isbn:

Deniable Encryption with


Negligible Detection Probability: An Interactive Construction. IACR

Markus Drmuth e David M. Freeman.


066. 2011.

[DF11b]

Dover, 1985.

lim

[DF11a]

a ed.

Markus Drmuth e David Mandell Freeman.  Deniable Encryption with Negligible Detection Probability: An Interactive Construction. Em:

[DH76]

EUROCRYPT.

Whiteld Die e Martin Hellman.  New Directions in Cryptography. Em:

IEEE Transactions on Information Theory

[DHQ98]

Pr
e

pp. 644654.
[DHL02]

2011, pp. 610626.

22.6 (1976),

Erik D. Demaine, Susan Hohenberger e David Liben-Nowell. Tetris


is Hard, Even to Approximate. http://arxiv.org/abs/cs.CC/
0210020. 2002.
Yvo Desmedt, Shuang Hou e Jean-Jacques Quisquater.  Audio and
Optical Cryptography. Em: 1998.

[DK07]

and applications.

Introducton to Cryptography: principles

a ed. Springer, 2007.

Second-Generation Onion Router. Em:

Ve
rs

posium.

[DPV06]

[DR02]

rithms.

McGraw-Hill, 2006.

isbn: 0073523402.

Joan Daemen e Vincent Rijmen.

isbn: 3-540-42580-2.

The Design of Rijndael. Springer,

Proceedings of CRYPTO.

1982.

T. Elgamal.  A public-key cryptosystem and a signature scheme


based on discrete logarithms. Em:

mation Theory

[FO98]

Algo-

S. Even, Oded Goldreich e A. Lempel.  A randomized protocol for

signing contracts. Em:

[Elg85]

13th USENIX Security Sym-

2004, pp. 303320.

Sanjoy Dasgupta, Christos Papadimitriou e Umesh Vazirani.

2002.

[EGL82]

isbn: 978-3-540-49243-6.

Roger Dingledine, Nick Mathewson e Paul Syverson.  Tor: The

[DMS04]

Hans Delfs e Helmut Knebl.

IEEE Transactions on Infor-

31.4 (1985), pp. 469472.

Eiichiro Fujisaki e Tatsuaki Okamoto.  A Practical and Provably


Secure Scheme for Publicly Veriable Secret Sharing and Its Applications. Em:
pp. 3246.

Advances in Cryptology - EUROCRYPT 98. 1998,

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA
Jean Baptiste Joseph Fourier.
ver, 2003.
[Fra02]

John B. Fraleigh.
ley, 2002.

[Fra06]

isbn: 9788576050872.

Clculo Numrico.

Prentice Hall,

Amos Fiat e Adi Shamir.  How to prove to yourself: practical solutions to identication and signature problems. Em:

Cryptology (CRYPTO 86).

[FS87b]

1987, pp. 186194.

1987.

Eiichiro Fujisaki et al.  RSA OAEP is secure under the RSA assumption. Em:

Helen F. Gaines.

lution.

isbn: 0486200973.

Contemporary Abstract Algebra.

isbn: 0547165099.

[GGH97]

Solpomon W. Golomb e Guang Gong.

relation.

Eurocrypt 99.

1999.

Signal Design for Good Cor-

Cambridge University Press, 2005.

isbn: 0-521-82104-5.

Oded Goldreich, Sha Goldwasser e Shai Halevi.  Public-key cryptosystems from lattice reduction problems. Em:

Computer Science

Lecture Notes in

1294 (1997).

Oded Goldreich, Sha Goldwasser e Silvio Micali.  How to cons-

[GGM86]

Brooks Cole,

Rosario Gennaro et al.  Secure Distributed Key Generation for


Discrete-Log Based Cryptosystems. Em:

[GG05]

2001.

Cryptanalysis: A Study of Ciphers and Their So-

Dover, 1989.

Joseph A. Gallian.
2009.

[Gen+99]

Advances in Cryptology  CRYPTO 2001.

Pr
e

[Gal09]

Proceedings of

lim

 .
CRYPTO86

[Gai89]

Advances in

Amos Fiat e Adi Shamir.  How to prove yourself: practical solutions to identication and signature problems. Em:

[Fuj+01]

Do-

A First Course in Abstract Algebra. Addison Wes-

isbn: 9780201763904.

Neide Maira Bertoldi Franco.


2006.

[FS87a]

The Analytical Theory of Heat.

isbn: 9780486495316.

in
ar

[Fou03]

437

truct random functions. Em:

Journal of the ACM

33.4 (1986),

Ve
rs

pp. 210217.
[GGS05]

M. Choudary Gorantla, Raju Gangishetti e Ashutosh Saxena. A


Survey of ID-Based Cryptographic Primitives. IACR Cryptology
ePrint Archive, Report 2005/094. http : / / eprint . iacr . org/.

2005.

[GJ79]

Computers and Intractability: a guide to the theory of NP-completeness. New York: W. H.

Michael R. Garey e Richard S. Johnson.


Freeman, 1979.

[GK03]

Sha Goldwasser e Yael Tauman Kalai.  On the (In)security of the


Fiat-Shamir Paradigm. Em:

[GKP95]

FOCS.

2003.

Matemtica Concreta: fundamentos para a Cincia da Computao.


Ronald L. Graham, Donald Erwin Knuth e Oren Patashnik.

a ed. LTC, 1995.

isbn: 85-216-1040-8.

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA

438

[GL10]

Arnaldo Garcia e Yves Lequain.


2010.

[GM82]

isbn: 978-85-244-0190-9.

Elementos de lgebra. 5a ed. IMPA,

Sha Goldwasser e Silvio Micali.  Probabilistic encryption and how

in
ar

to play mental poker keeping secret all partial information. Em:

Proceedings of the 14th Symposium on Theory of Computing. 1982.


[GMR85]

S. Goldwasser, S. Micali e C. Racko.  The Knowledge Complexity

Proceedings of the 17th Annual


ACM Symposium on Theory of Computing. 1985, pp. 365377.
of Interactive Proof-Systems. Em:

[GMR89]

S. Goldwasser, S. Micali e C. Racko.  The Knowledge Complexity


of Interactive Proof-Systems. Em:

SIAM Journal on Computing

18.1 (1989).

Oded Goldreich e Yair Oren.  Denitions and Properties of Zero-

lim

[GO94]

Knowledge Proof Systems. Em:


pp. 132.

[Gol04]

[Gol08]

[Gol10]

Oded Goldreich.

ols.

Foundations of Cryptography, volume I: basic to-

Oded Goldreich.

plications.

Foundations of Cryptography, volume II: basic ap-

Vol. 2. Cambrige University Press, 2004.

Oded Goldreich.

pective.

Computational Complexity: A Conceptual Pers-

Cambridge University Press, 2008.

Oded Goldreich.

[Gon07]

David J. Griths.

Mecnica Quntica.

Jonas Gomes e Luiz Velho.

Pearson do Brasil, 2011.

Fundamentos da Computao Grca.

isbn: 978-85-244-0200-5.

Darrel Hankerson.
2010.

[HB09]

isbn: 0131118927.

isbn: 978-85-7605-927-1.

IMPA, 2008.

[Han10]

Aegean Park Press, 1982.

Introduction to Quantum Mechanics. 2a ed. Ben-

David J. Griths.

Ve
rs

[GV08]

Ameri-

Teolo F. Gonzalez, ed. Handbook of Approximation Algorithms


and Metaheuristics. Chapman & Hall/CRC, 2007. isbn: 9781584885504.

jamin Cummings, 2004.

[Gri11]

isbn: 9780821851920.

Shift Register Sequences.

[Gri04]

S. W. Golomb.

isbn: 9780521884730.

A Primer on Pseudorandom Generators.

can Mathematical Society, 2010.


[Gol82]

7.1 (1994),

Vol. 1. Cambrige University Press, 2001.

Pr
e

[Gol01]

Journal of Cryptology

Guide to Elliptic Curve Cryptography. Springer,

isbn: 1441929290.

Jaydeep Howlader e Saikat Basu.  Sender-Side Public Key Deniable Encryption Scheme. Em: Proceedings of the 2009 International Conference on Advances in Recent Technologies in Communication and Computing. ARTCOM '09. Washington, DC, USA:

isbn: 978-0-7695-3845-7.
doi: http : / / dx . doi . org / 10 . 1109 / ARTCom . 2009 . 107. url:

IEEE Computer Society, 2009, pp. 913.

http://dx.doi.org/10.1109/ARTCom.2009.107.

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA
[Hef13]

439

Curso de lgebra.

Abramo Hefez.

a ed. Vol. 1. IMPA, 2013.

isbn:

9788524400797.

[Hey01]

I. N. Herstein.

Abstract Algebra. 3a ed. Wiley, 1996. isbn: 0471368792.


A Tutorial on Linear and Dierential Cryptanaly-

Howard Heys.

sis.

in
ar

[Her96]

Technical Report CORR 2001-17, Centre for Applied Crypto-

graphic Research, Department of Combinatorics and Optimization,


University of Waterloo. Also appears in Cryptologia, vol. XXVI, no.
3, pp. 189-221, 2002. 2001.

[Hil90]

John Harris, Jery L. Hirst e Michael Mossingho.

and Graph Theory.


Raymond Hill.
Press, 1990.

[Hir01]
[HJB84]

Springer, 2010.

Combinatorics

isbn: 1441927239.

A First Course in Coding Theory. Oxford University

isbn: 0198538030.

Mika Hirvensalo.

lim

[HHM10]

Quantum Computing. Springer, 2001. isbn: 3540667830.

Michael T. Heideman, Don H. Johnson e C. Sidney Burrus.  Gauss

IEEE ASSP
(Acoustics, Speech, and Signal Processing Society) Magazine 1.4
and the history of the fast fourier transform. Em:
(1984), pp. 1421.

Carmit Hazay e Yehuda Lindell. Ecient Secure Two-Party Protocols: Techniques and Constructions. Springer, 2010. isbn: 978-3-

Pr
e

[HL10]

642-14302-1.
[HL94]

[HMU01a]

M. Hellman e S. Langford.  Dierential-Linear Cryptanalysis. Em:

Advances in Cryptology - CRYPTO 94. 839. Springer-Verlag, 1994.


John E. Hopcroft, Rajeed Motwani e Jerey D. Ullman.

tion to Automata Theory, Languages, and Computation.


Wesley, 2001.

Addison-

Intro-

John E. Hopcroft, Rajeev Motwani e Jerey D. Ullman.

[HMU01b]

isbn: 0201441241.

Introduc-

duction to Automata Theory, Languages and Computation.

a ed.

Addison-Wesley, 2001.
K. J. Horadam.

Ve
rs

[Hor06]

Hadamard Matrices and Their Applications.

ceton University Press, 2006.

[HPS08]

isbn: 069111921X.

Jerey Hostein, Jill Pipher e Joseph H. Silverman.

cal Introduction to Cryptography.

Springer, 2008.

Prin-

A Mathemati-

isbn:

978-0-387-

77993-5.

[HPS98]

Jerey Hostein, Jill Pipher e Joseph H. Silverman.  NTRU: A

ring-based public key cryptosystem. Em:

puter Science

[Hun80]
[HV08]

[Ibr09a]

Thomas W. Hungerford.

Algebra. Springer, 1980. isbn: 0387905189.

Abramo Hefez e Maria Lcia T. Villela.

ros.

Lecture Notes in Com-

1423 (1998).

a ed. IMPA, 2008.

Cdigos Corretores de Er-

isbn: 978-85-244-0169-5.

M. H. Ibrahim.  A Method for Obtaining Deniable Public-Key Encryption. Em:

Journal of Network Security

8.1 (2009).

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA

440

[IF10]

M. H. Ibrahim.  Receiver-deniable public-key encryption. Em:

nal of Network Security

David Rios Insua e Simon French. e-Democracy: A Group Decision


and Negotiation Perspective. Springer, 2010. isbn: 978-90-481-90447.

[Imm98]

Neil Immerman.

Descriptive Complexity.

38798-600-6.
[IR90]

[ISN87]

Jour-

8.2 (2009).

Kenneth Ireland e Michael Rosen.

dern Number Theory.

in
ar

[Ibr09b]

Springer, 1998.

isbn:

0-

A Classical Introduction to Mo-

Springer, 1990.

isbn: 1441930949.

Mitsuru Ito, Akira Saito e Takao Nishizeki.  Secret sharing scheme


realizing general access structure. Em:

ference.

Proc. Global Telecoms. Con-

lim

1987, pp. 99102.

[Jac09a]

Nathan Jacobson.

Basic Algebra I. 2a ed. Dover, 2009. isbn: 0486471896.

[Jac09b]

Nathan Jacobson.

Basic Algebra II. 2a ed. Dover, 2009. isbn: 048647187X.

[Jea94]

Marquis de Condorcet Jean-Antoine-Nicolas de caritat.  Condorcet: Foundations of social choice and political theory (selections).
Em: (1743-1794 (1994)).

[JV04]

[Kah96]

A. Joux.  A one round protocol for tripartite Die-Hellman. Em:

Pr
e

[Jou00]

Proceedings of ANTS 4.

2000, pp. 385394.

Pascal Junod e Serge Vaudenay.  FOX: a new family of block


ciphers. Em:

Selected Areas in Cryptography.

David Kahn.

The Codebreakers.

2004.

Scribner, 1967/1996.

isbn:

0-684-

83130-9.
[Kal06]

Yael Tauman Kalai.  Attacks on the Fiat-Shamir Paradigm and


Program Obfuscation. Tese de doutorado. Massachusetts Institute

of Technology, 2006.

[Kan92]

Viggo Kann.  On the Aproximability of

N P -complete

Optimiza-

Ve
rs

tion Problems. Tese de doutorado. Department of Numerical Analysis e Computing Science  Royal Institute of Technology, Sweden,
1992.

[Kat10]

Jonathan Katz.

Digital Signatures. Springer, 2010. isbn: 978-0-387-

27711-0.

[KKK08]

M. Klonowski, P. Kubiak e M. Kutylowsk.  Practical Deniable En-

cryption. Em:

[KL08]

[Kle52]

Proceedings of SOFSEM 2008.

Jonathan Katz e Yehuda Lindell.

graphy.

Introduction to Modern Crypto-

Chapmen & Hall/CRC, 2008.

Stephen Cole Kleene.

2008.

isbn: 978-1-58488-551-1.

Introduction to Metamathematics. North Hol-

land, 1952.

[KM89]

Alexei I. Kostrikin e Yu I. Manin.


CRC Press, 1989.

Linear Algebra and Geometry.

isbn: 2881246834.

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA

[Kob87]

[KR36]

L. R. Knudsen.  Truncated and Higher-Order Dierentials. Em:

Fast Software Encryption.

1008. Springer-Verlag, 1995.

Neil Koblitz.  Elliptic curve cryptosystems. Em:

Computation

Mathematics of

48 (1987), pp. 203209.

in
ar

[Knu95]

441

Stephen Cole Kleene e J. B. Rosser.  General recursive functions of


natural numbers. Em:

Mathmatische Annalen

112 (1936), pp. 727

742.
[Kra91]

Primality and Cryptography. Wiley, 1991. isbn:

Evangelos Kranakis.
0471909343.

[Lam79]

[Lev]

Bernhard Korte e Jens Vygen.

and algorithms.

Leslie Lamport.

function.

Combinatorial Optimization: theory

a ed. Springer, 2002.

isbn: 3-540-43154-3.

Constructing digital signatures from a one-way

lim

[KV02]

1979.

Leonid Anatolievich Levin.  Universal search problems (em Russo,

Problems of Information
Transmission (em Russo, Problemy Peredachi Informatsii) 9.3 (),

Universal'nye perebornye zadachi). Em:


pp. 265266.

[LJL82]

Composition of Secure Multi-Party Protocols: A


Comprehensive Study. Springer, 2003. isbn: 3-540-20105-X.

Yehuda Lindell.

Pr
e

[Lin03]

A. K. Lenstra, H. W. Lenstra Jr. e L. Lovsz.  Factoring polynomials with rational coecients. Em:

Mathematische Annalen

261.4

(1982), pp. 515534.


[LLY03]

Chen-chi Lin, Chi-sung Laih e Ching-nung Yang.  New Audio Secret Sharing Schemes With Time Division Technique. Em:

of Information Science and Engineering


Rudolf Lidl e Harald Niederreiter.

[LN97]

versity Press, 1997.

[LR88]

Finite Fields.

isbn: 0-521-39231-4.

Hary Lewis e Christos H. Papadimitriou.

Computao.

Ve
rs

[LP04]

a ed. Bookman, 2004.

Cambridge Uni-

Elementos de Teoria da

isbn: 8-57307-534-1.

Michael Luby e Charles Racko.  How to construct pseudorandom

permutations from pseudorandom functions. Em:

[Lub96]

SIAM Journal

on Computing

17.2 (1988).

Michael Luby.

Pseudorandomness and Cryptographic Applications.

Princeton University Press, 1996.

[M B89]

Journal

(2003), pp. 605614.

isbn: 9780691025469.

and M. Ben-Or.  veriable secret sharing and multiparty protocols

Proceedings of the Twenty-First Annual


ACM Symposium on theory of Computing. Seattle, Washington,
with honest majority. Em:

United States, 1989.

[Mac78]

Robert J. MacEliece.

braic Coding Theory.

A Public-Key Cryptosystem Based On AlgeDSN Progress Report 42-44: 114. 1978.

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA

442

[Man09]

Stphane Manuel.  Classication and Generation of Disturbances


Vectors for Collision Attacks against SHA-1. Em:

Workshop on Coding and Cryptography.


Udi Manber.

Introduction to Algorithms: A Creative Approach. Addison-

Wesley, 1989.
[Mar08]

[Mau99]

Introduction to Identity-Based Encryption.

Luther Martin.
House, 2008.

[Mat93]

isbn: 0201120372.

isbn: 978-1-59693-238-8.

EUROCRYPT93.

Springer-Verlag, 1993.

Ueli Maurer.  Information-Theoretic Cryptography. Em:

in Cryptology - CRYPTO '99.

Complexity of Lattice Problems: A Cryptographic Perspective. Springer, 2002. isbn: 9780792376880.

Cesar Polcino Millies.


EDUSP, 2006.

edings of CRYPTO 86.

Pr
e

Dan C. Marinescu e Gabriela M. Marinescu.

Computing.

Proce-

1986.

Perason/Prentice Hall, 2005.

Gary L. Mullen e Carl Mummert.

Approaching Quantum

isbn: 0-13-145224-X.

Finite Fields and Applications.

isbn: 978-0-8218-4418-2.

Todd K. Moon.

and Algorithms.

Error Correction Coding: Mathematical Methods

Wiley-Interscience, 2005.

isbn: 0471648000.

Pat Morin.  Provably Secure and Ecient Block Ciphers. Em:

Proceedings of the Third Annual Workshop on Selected Areas in


Cryptography (SAC 96). 1996, pp. 3037.

[Mor96]

Nmeros: uma introduo Matemtica.

isbn: 8531404584.

Victor Miller.  Use of elliptic curves in cryptography. Em:

AMS, 2007.
[Moo05]

lim

[Mil06]

[MM07]

Advances

Springer-Verlag, 1999, pp. 4764.

Daniele Micciancio e Sha Goldwasser.

[MM05]

Artech

M. Matsui.  Linear Cryptanalysis Method for DES Cipher. Em:

[MG02]

[Mil86]

in
ar

[Man89]

Proceedings of

2009.

[MvV96]

Alfred J. Menezes, Paul C. van Oorschot e Scott A. Vanstone.

Ve
rs

 Handbook of Applied Cryptography. Em: CRC Press, 1996.

[NC04]

Michael A. Nielsen e Isaac L. Chuang.

Quantum Information.

Quantum Computation and

Cambridge University Press, 2004.

isbn:

9780521635035.

[Nel+95]

Victor P. Nelson et al.

Prentice Hall, 1995.

[Neu04]

Digital Logic Circuit Analysis and Design.

isbn: 0-13-463894-8.

Daniel Neuenschwander. Probabilistic and Statistical Methods in


Cryptography: an introdution by selected topics. Springer, 2004.

isbn: 3-540-22001-1.

[NIS01]

NIST.

[NIS10]

NIST.

[NIS99]

NIST.

Announcing the Advanced Encryption Standard (AES). 2001.

A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications. 2010.
Data Encryption Standard (DES).

1999.

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA
[Noj+08]

443

R. Nojima et al.  Semantic Security for the McEliece Cryptosystem without random oracles. Em:

Design, Codes and Cryptography

49.1-3 (2008), pp. 289305.

[NV09]

[NZM91]

Moni Naor e Adi Shamir.  Visual Cryptography. Em:

of EUROCRYPT.

1994.

The LLL Algorithm: Survey

Phong Q. Nguyen e Brigitte Valle.

and Applications.

Springer, 2009.

isbn: 3642022944.

Ivan Niven, Herbert S. Zuckerman e Hugh L. Montgomery.

Introduction to The Theory of Numbers.

a ed. Wiley, 1991.

0471625469.
Jos Plnio de Oliveira Santos.

Introduo Teoria dos Nmeros.

IMPA, 2010.
[Pap93]

Christos H. Papadimitriou.
Wesley, 1993.

[Ped91]

Computational Complexity.

isbn: 0-20153-082-1.

Eurocrypt 91.

1991, pp. 522526.

Torben P. Pedersen.  Non-interactive and information-theoretic se1992.

Stephen Pincock.

Codebreaker: The History of Codes and Ciphers.

Walker & Company, 2006.


[Pol74]

Advances in Cryptology - EU-

Pr
e

cure veriable secret sharing. Em:

ROCRYPT 91.
[Pin06]

Addison-

T. Pedersen.  A threshold cryptosystem without a trusted party.


Em:

[Ped92]

An

isbn:

lim

[Oli10]

Proceedings

in
ar

[NS94]

isbn: 0802715478.

John M. Pollard.  Theorems of Factorization and Primality Testing. Em:

Proceedings of the Cambridge Philosophical Society

76.3

(1974), pp. 521528.

[Pos36]

John M. Pollard.  A Monte Carlo method for factorization. Em:

BIT Numerical Mathematics

[Pol75]

Emil Leon Post.  Finite Combinatory Processes - Formulation 1.

Journal of Symbolic Logic

Ve
rs

Em:
[Pre+07]

[PV09]

William H. Press et al.

Computing.

1 (1936), pp. 103105.

Numerical Recipes: The Art of Scientic

a ed. Cambridge, 2007.

isbn: 978-0-521-88068-8.

Christos Papadimitriou e Umesh Vazirani.


Hill/Artmed, 2009.

[Rab79]

15.3 (1975), pp. 331334.

isbn: 9788577260324.

Algoritmos.

McGraw-

Digitalized Signatures and Public-Key Functions as


Intractable as Factorization. MIT Laboratory for Computer Science

Michael Rabin.

Technical Report: MIT/LCS/TR-212. 1979.

[Rab81]

M. Rabin.

How to exchange secrets by oblivious transfer.

Technical

Report TR-81, Harvard Aiken Computational Laboratory. 1981.

[Reg05]

O. Regev.  On lattices, learning with errors, random linear codes,


and cryptography. Em:

Computing (STOC).

Proc. 37th ACM Symposium on Theory of

2005, pp. 8493.

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA

444

[Rie94]

[RJA02]

Hans Riesel.

zation.

Prime Numbers and Computer Methods for Factori-

a ed. Birkhuser Boston, 1994.

isbn: 0817637435.

Zuzana RJAKOV.  Electronic Voting Schemes. Tese de douto-

[Rog87]

[Rom96]

Hartley Rogers.

putability.

Springer, 1996.
[RSA78]

Theory of Recursive Functions and Eective Com-

MIT Press, 1987.

Steven Roman.

in
ar

rado. Comenius University, Bratislava, 2002.

isbn: 0262680521.

Introduction to Coding and Information Theory.

isbn: 0387947043.

R. Rivest, A. Shamir e L. Adleman.  A Method for Obtaining Digital Signatures and Public-Key Cryptosystems. Em:

cations of the ACM

[Sch00]

K. R. Rao e P. C. Yip.

Handbook.

CRC Press, 2001.

isbn: 0-8493-3692-9.

Bruce Schneier.  Self-Study Course in Block Cipher Cryptanalysis.

Cryptologia 24.1 (2000). Tambm disponvel em http://www.


schneier.com/paper-self-study.html, pp. 1834.

Em:

[Sch94]

The Transform and Data Compression

lim

[RY01]

Communi-

21.2 (1978), pp. 120126.

Bruce Schneier.  Description of a New Variable-Length Key, 64-

Pr
e

Bit Block Cipher (Blowsh). Em:

Encryption.

Proceedings of Fast Software

1994.

Applied Cryptography: Protocols, Algorithms, and


Source Code in C. 2a ed. New York: John Wiley e Sons, 1996.

[Sch96]

Bruce Schneier.

[Sch99]

Berry Schoenmakers.  A Simple Publicly Veriable Secret Sharing


Scheme and its Application to Electronic Voting. Em:

CryptologyCRYPTO 99.

Robert Sedgewick e Phillipe Flajolet.

sis of Algorithms.

[SF95]

An Introduction to the Analy-

Addison-Wesley, 1995.

isbn: 9780201400090.

Jerey Shallit. A Second Course in Formal Languages and Automata Theory. Cambridge University Press, 2008. isbn: 0-521-86572-

Ve
rs

[Sha08]

Advances in

1999, pp. 148164.

7.

[Sha48]

Claude Shannon.  A Mathematical Theory of Communication.

Em:

Bell System Technical Journal

27 (1948), pp. 379423, 623

656.

[Sha49]

Claude E. Shannon.  Communication Theory of Secrecy Systems.

Em:

[Sha79]

[Sha84]

Bell Systems Theoretical Journal

Adi Shamir.  How to share a secret. Em:

ACM

Communications of the

22.11 (1979), pp. 612613.

Adi Shamir.  Identity-Based Cryptosystems and Signature Sche-

mes. Em:

[Sha92]

28.4 (1949), 656=715.

Crypto 84.

Adi Shamir.  IP

(1992).

1984.

= P SP ACE .

Em:

Journal of the ACM

39.4

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA
R. Shankar.
1994.
[Shi10]

Principles of Quantum Mechanics.

isbn: 0306447908.

a ed. Springer,

Frank Y. Shih. Image Processing and Pattern Recognition: fundamentals and techniques. IEEE/Wiley, 2010. isbn: 978-0-470-404614.

[Sho01]

OAEP Reconsidered. IBM Zurich Research Lab, Sau-

Victor Shoup.

merstr. 4, 8803 Ruschlikon, Switzerland. 2001.

[SHO08]

[Sho10]

A Computational Introduction to Number Theory

Victor Shoup.

and Algebra.

Cambrige, 2005.

isbn: 0521851548.

SALAHODDIN SHOKRANIAN.

meros.

Cincia Moderna, 2008.

Salahoddin Shokranian.

Uma Introduo Teoria dos N-

isbn: 9788573937534.

lgebra 1.

8573939516.
George F. Simmons.
Krieger, 2003.

The Science of Secrecy.

[Sin00a]

S. Singh.

[Sin00b]

Simon Singh.

[Sin10]
[Sip07]

Fourth Estate Limited, 2000.

isbn: 0385495323.
Simon Singh. O Livro dos Cdigos. 7a. Record, 2010. isbn: 8501055980.
The Code Book.

Michael Sipser.

2000.

Introduo Teoria da Computao.

SP: Thomson, 2007.


[SM05]

isbn:

Introduction to Topology and Modern Analysis.

isbn: 1575242389.

Pr
e

[Sim03]

Cincia Moderna, 2010.

lim

[Sho05]

in
ar

[Sha94]

445

isbn: 9788522104994.

So Paulo 

Daniel Socek e Spyros S. Magliveras.  General Access Structures in

Proceedings of the IEEE International


Conference on Electro Information Technology. 2005.

Audio Cryptography. Em:

[Smi55]

Cryptography: an introduction.

Nigel Smart.

isbn: 978-0077099879.
Laurence D. Smith.

Cryptography: The Science of Secret Writing.

isbn: 048620247X.

Ve
rs

Dover, 1955.
[SMM07]

Jos Plnio O. Santos, Margarida P. Mello e Idani T. C. Murari.

Introduo Anlise Combinatria. 4a

isbn: 978-85-7393-634-6.

[SS03]

[ST92]

[Sta96]

[STE09]

Mcgraw-Hill, 2004.

[Sma04]

Elias M. Stein e Rami Shakarchi.

tion.

Fourier Analysis: An Introduc-

Princeton University Press, 2003.

Joseph H. Silverman e John Tate.

ves.

Springer, 1992.

ed. Cincia Moderna, 2007.

isbn: 978-0691113845.

Rational Points on Eliptic Cur-

isbn: 9780387978253.

Markus Stadler.  Publicly Veriable Secret Sharing. Em:

in Cryptology - EUROCRYPT 96.

Advances

1996, pp. 190199.

Isabelle Simplot-Ryl, Issa Traor e Patricia Everaere.  Distributed

The International Journal of Parallel, Emergent and Distributed Systems


Architectures for Electronic Cash Schemes: A Survey. Em:

24.3 (2009).

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA

446

[Ste10]

William Stein. Elementary Number Theory: Primes, Congruences, and Secrets: A Computational Approach. Springer, 2010. isbn:
1441927522.
Douglas R. Stinson.

Cryptography: theory and practice. 3a ed. Chap-

man & Hall/CRC, 2006.


[SW49]

[Tur37]

isbn: 1-58488-508-4.

Claude Shannon e Warren Weaver.

munication.

A Mathematical Theory of Com-

Univ of Illinois Press, 1949.

isbn: 0-252-72548-4.

Alan M. Turing.  On Computable Numbers, with an Application to


the Entscheidungsproblem. Em:

matical Society
[Tur38]

in
ar

[Sti06]

Proceedings of the London Mathe-

s2-42.1 (1937), pp. 230265.

Alan M. Turing.  On Computable Numbers, with an Application

lim

to the Entscheidungsproblem. A Correction. Em: s2-43.1 (1938),


pp. 544546.
[TW06]

John Talbot e Dominic Welsh. Complexity and Cryptography: an


introduction. Cambridge University Press, 2006. isbn: 0-521-617715.

Oleg Nikolaevich Vasilenko.

tography.

Number-Theoretic Algorithms in Cryp-

American Mathematical Society, 2007.

Pr
e

[Vas07]

isbn:

978-8218-

4090-0.
[Vaz10]

Vijay V. Vazirani.

Approximation Algorithms. Springer, 2010. isbn:

3642084699.
[VBo05]

J. V.Boone.
2005.

[Ver26]

A Brief History of Cryptology.

isbn: 978-1-59114-084-9.

Naval Institute Press,

G. S. Vernam.  Cipher Printing Telegraph Systems for Secret Wire


and Radio Telegraphic Communications. Em:

rican Institute for Electrical Engineers


Lawrence Washington.

tography.

Ve
rs

[Was08]

[WC05]

Elliptic Curves: Number Theory and Cryp-

a ed. Chapman&Hall/CRC, 2008.

isbn: 1420071467.

H. C. Wu e C. C. Chang.  Sharing visual multi-secrets using circle

shares. Em:

[WC98]

Journal of the Ame-

55 (1926), pp. 109115.

Comput. Stand Interfaces

134.28 (2005), pp. 123135.

C. C. Wu e L. H. Chen.  A Study on Visual Cryptography. Tese de

doutorado. Institute of Computer e Information Science, National


Chiao Tung University, Taiwan, 1998.

[WYY05]

Xiaoyun Wang, Yiqun Lisa Yin e Hongbo Yu.  Finding Collisions


in the Full SHA-1. Em:

[Yan07]

Song Y. Yan.

Crypto 2005.

2005.

Cryptanalytic Attacks on RSA.

Springer, 2007.

isbn:

0387487417.

[Yao82]

Andrew C. Yao.  Protocols for secure computations. Em:

tions of Computer Science.

1982, pp. 160164.

Founda-

notas de aula  verso 85 - Jernimo C. Pellegrini

BIBLIOGRAFIA
[Yao86]

447

Andrew Chi-Chih Yao.  How to generate and exchange secrets.

Proceedings of the 27th Annual Symposium on Foundations of


Computer Science. Washington, DC, USA: IEEE Computer Society, 1986, pp. 162167. isbn: 0-8186-0740-8. doi: 10.1109/SFCS.
1986 . 25. url: http : / / portal . acm . org / citation . cfm ? id =
1382439.1382944.

Ve
rs

Pr
e

lim

in
ar

Em:

in
ar

notas de aula  verso 85 - Jernimo C. Pellegrini

ndice Remissivo

teorema de, 393

algoritmo no determinstico, 372

lim

, 363
-protocolo, 206
, 363
O, 362
BPP (classe de complexidade), 375
IP (classe de complexidade), 202
N P (classe de complexidade), 374
N P -completo (classe de complexidade),

algoritmo randomizado, 373


algoritmos de aproximao, 384
ambiente, 218

amplitude de probabilidade (em estado


quntico), 266

anlise de Fourier, 405


anlise de frequncia (mtodo para crip-

377

Pr
e

P (classe de complexidade), 374


(funo), 330
(funo), 330
PP (classe de complexidade), 375
PSPACE (classe de complexidade), 375
PSPACE -completo (classe de comple-

tanlise), 323

anel, 347
aniversrio
ataques usando o problema, 115
problema do, 115, 327

aproximao absoluta, 385


aproximao linear

xidade), 377

aritmtica modular, 331

rvore, 370

ARVORE-DE-STEINER (problema), 397

BEAR (cifra de bloco), 126

assinatura

(n)-aproximao, 385
k -aproximao, 385

tabela de, 95

esquema de Fiat-Shamir, 210

3DES (criptossistema), 75

assinatura baseada em identidade, 253

Ve
rs

LION (cifra de bloco), 126

assinatura baseada em identidades

Aardvark (cifra de bloco), 123

de Shamir, 257

acordo de chaves baseado em identida-

assinatura cega, 309

des, 254

adversrio

em sistema de votao, 308


assinatura digital, 10, 159

malicioso, 215

ataque do encontro no meio, 75

semi-honesto, 215

Atbash,

AES, 77

descrio algbrica, 80

veja

cifra Atbash

ator (em protocolo), 175


autocorrelao, 48

descrio simplicada, 77
detalhes de implementao, 414

Bzout

Ajtai-Dwork (criptossistema), 279


Akra-Bazzi

Lema de, 333


Berlekamp-Massey
448

notas de aula  verso 85 - Jernimo C. Pellegrini

NDICE REMISSIVO

449

algoritmo para determinar comple-

COBERTURA-POR-ARESTAS (problema),

xidade linear de sequncia, 52

397
COBERTURA-POR-VERTICES

bit hard-core, 37

problema, 386

ctala espartana, 320


cdigo de autenticao de mensagem,
cdigos corretores de erros, 281

veja

TSP

em sistma de votao, 308

caminho em grafo, 369


caracterstica de um anel ou corpo, 351
CBC-MAC, 134

esquema de Blakley, 188

esquema de Ito-Nishizeki-Saito, 191


esquema de Pedersen, 193

CCA, 138
CCA (segurana de criptossistema assimtrico), 147

esquema de Shamir, 186


esquema visual

(k, n),

291

publicamente vericvel, 194

cenrio

vericvel, 192

criptogrco, 215
da teoria da informao, 216
CGS (esquema de votao), 311

complexidade de tempo, 361


de ator, 176

exponencial, 363

Pr
e

Chaum (esquema de votao, 310

Chaum (protocolo de votao), 310


cifra

polinomial, 363
subexponencial, 363

complexidade linear de sequncia, 52

de bloco, 8

comprometimento (protocolo), 176

de uxo, 7

com resumos criptogrcos, 179

cifra am, 321

de bit, com resduos quadrticos,

cifra Atbash, 321

181

cifra de bloco

denio de segurana, 68

cifra de Csar, 320

cifra de deslocamento, 319

Ve
rs

cifra de Hill, 322

no AES/Rijndael, 80

compartilhamento de segredos, 185

lim

caixeiro viajante,

colorao de um grafo, 370


colunas

131

in
ar

algoritmo aproximado, 386

cifra de permutao, 319

de Pedersen, 180
ocultante, 179
usando logaritmo discreto, 180
vinculante, 178

confuso
em projeto de cifra de bloco, 69

cifra de substituio, 319

congruncia, 331

cifra de Vigenre, 321

conhecimento zero

cipher block chaining

prova no-interativa, 210

modo de operao de permutao


pseudoaleatrea, 66

circuito

conjunto dominante, 379

circuito em grafo, 369

veja

conjunto qualicante, 185


HAM

classe de complexidade, 374


clique, 369

COBERTURA-DE-CONJUNTO (problema), 379

conhecimento zero estatstico, 203


conhecimento zero perfeito, 202

hamiltoniano, 369

circuito Hamiltoniano,

conhecimento zero computacional, 203

CONJUNTO-DOMINANTE
problema, 379
prova de

N P -completude,

construo de Lai-Massey, 73
corpo, 348

379

notas de aula  verso 85 - Jernimo C. Pellegrini

NDICE REMISSIVO

450

corpo de Galois,

veja

corpo nito

expanso de bits, 410


funo interna, 409

corpo nito, 351

permutao inicial, 409

corretude (em sistema de votao), 307

permutao interna, 411

in
ar

corpo de Rijndael, 80

S-boxes, 411

cosseno

desvio de ortogonalidade, 275

transformada, 404

diferencial, 102

counter
modo de operao de permutao

Die-Hellman (estabelecimento de chaves), 142

pseudoaleatrea, 67

Die-Hellman (problema), 143


Cramer-Gennaro-Schoenmakers (esquema
de votao), 311

em grupos de curvas elpticas, 234

criptanlise, 87

Die-Hellman (protocolo)

algbrica, 107
de cifras antigas, 323
diferencial, 101
diferencial impossvel, 109
linear, 90

com curvas elpticas, 235

lim

de chave relacionada, 109

difuso

em projeto de cifra de bloco, 69

dinheiro eletrnico, 317


disco, 282

discriminante de um polinmio, 230

linear diferencial, 109


criptograa, 7

distncia de Hamming, 282

Pr
e

distncia mnima, 283

criptograa baseada em identidade, 249

divises sucessivas (mtodo para fatorao), 240

criptograa visual, 289


criptossistema

simtrico, 20

criptossistema amostrvel, 302

criptossistema assimtrico, 145


crivo

divisibilidade, 329
Dixon
algoritmo de, 244

DSA (esquema de assinaturas), 168


efeito avalanche, 71

quadrtico, 244

electronic code book

de Eratstenes, 239

sobre corpo numrico algbrico, 246


curva algbrica, 227

Ve
rs

curva elptica, 227

operao de grupo, 230

modo de operao de permutao


pseudoaleatrea, 66
Elgamal (criptossistema), 147, 235
Elgamal (esquema de assinaturas), 167

CVP (problema em reticulados), 274

Elgamal (criptossistema)

Drmuth-Freeman (esquema de encrip-

empacotamento de conjunto

tao negvel), 302

de Brujin

sequncia de, 59

decodicao, 286
democracia (em sistema de votao),
307

DES

descrio detalhada, 407


descrio simplicada, 74
escalonamento de chaves, 412

com curvas elpticas, 235


problema, 388
emparelhamentos bilineares, 236, 261
encriptao baseada em identidade, 251
encriptao baseada em identidades
de Boneh-Franklin, 262
de Cocks, 254
encriptao com qurum, 198
encriptao homomrca
em sistema de votao, 308
encriptao negvel

notas de aula  verso 85 - Jernimo C. Pellegrini

NDICE REMISSIVO

451

em sistema de votao, 308

gerao de chaves para construo baseada em identidades, 250

equao diofantina quadrtica

gerador, 345

problema, 383

47

(problema), 383

in
ar

gerador de nmeros pseudoaleatreos,


EQUACAO-DIOFANTINA-QUADRATICA
gerador pseudoaleatreo, 41

esquema de assinaturas, 159

Blum-Blum-Shub, 47

de Boneh-Franklin, 263

de Blum-Micali, 46

esquema de encriptao
negvel pelo remetente, 296

GGH (criptossistema), 276

Goldwasser-Micali (criptossistema), 154

estratgia de corrupo, 215

Golomb

estrutura de acesso, 185

postulados de, 48

estrutura montona, 185


Euclides

lim

grafo, 368
grafo bipartido, 370

algoritmo de, 329


algoritmo extendido de, 334
Euler

grafo conexo, 370

grau de vrtice em grafo, 368


grupo, 343

critrio de, 340

cclico, 345

Teorema de, 337

comutativo, 344

Pr
e

de unidades, 347
famlia de distribuies, 41

grupo multiplicativo de inteiros, 345

estatisticamente prximas, 42
fatorao de inteiros, 35

com curvas elpticas, 236


FDH,

veja

full-domain hash

Feige-Fiat-Shamir (protocolo de identicao), 207


Fermat

pequeno Teorema de, 338

Fiat-Shamir (mtodo para obteno de


esquema de assinatura), 212

Ve
rs

Fourier

transformada de, 399

Transformada discreta de, 401


transformada quntica de, 269
transformada rpida, 402

Hadamard

matriz de, 269


razo de, 275

HAM

problema, 376

hash, 9

hashing
funo de, 113
HMAC, 137
homomorsmo, 346
Howlader-Basu (esquema de encriptao negvel), 297
IDEA (cifra de bloco), 73
identicao

FOX (cifra de bloco), 73, 82

protocolos de, 207


Fujioka-Okamoto-Ohta (esquema de vo- IDKMA, 253
tao), 313
IND-ID-CCA (segurana de criptossisfull-domain hash, 166
tema baseado em identidade),
funo

252

de mo nica forte, 33

IND-ID-CPA (segurana de criptossis-

de mo nica fraca, 36

tema baseado em identidade),

funo desprezvel, 27

funcionalidade ideal, 218

252
indecidvel (problema), 388

notas de aula  verso 85 - Jernimo C. Pellegrini

NDICE REMISSIVO

452

transformao de, 116

indistinguibilidade computacional, 43
intermediador incorrompvel, 220

mix-net, 308

isomorsmo

MOCHILA
no aproximabilidade, 385

em estruturas algbricas, 350

problema, 378
prova de

in
ar

de grafos, 371

N P -completude,

378

Jacobi, smbolo de, 341

modos de operao (cifra de bloco), 65

JPEG

mundo ideal, 218

formato digital para imagens gr-

mundo real, 218

cas, 405

nmero de Carmichael, 374

justeza (em sistema de votao, 307

nmero primo, 330


Kercho, princpio de, 20
Kercho, princpio de , 29

nmeros primos entre si, 330

lim

Kasiski (mtodo para criptanlise), 323

no-coercibilidade (em sistema de votao), 307

no-repdio, 159

Lagrange

norma de vetor, 273

interpolao, 187
Lamport
esquema de assinaturas de, 164

NTRU (criptossistema), 278


OAEP, 153

one-time pad, 22

Legendre, smbolo de, 341

operao quntica, 267

Lema do Empilhamento, 91, 92

ordem de crescimento, 362

LFSR

ordem de elemento em grupo, 344

Pr
e

Lamport (esquema de assinaturas), 164

de comprimento mximo, 52
linguagem

ordem de um grupo, 344


output feedback

Turing-decidvel, 391

modo de operao de permutao

Turing-reconhecvel, 391

pseudoaleatrea, 67

LLL (algoritmo), 276


logaritmo discreto, 34

logaritmo discreto (problema)

Ve
rs

em grupos de curvas elpticas, 234

Luby-Racko (Teorema), 72
LWE (criptossistema), 279
LWE (problema em reticulados), 274
m-sequncia, 52

PARTIO
problema, 387
perodo de sequncia, 48
permutao de mo nica, 34
com segredo, 146
permutao indexada, 65
permutao pseudoaleatrea, 65
forte, 65

mquina de Turing, 389, 390

polinmio de conexo, 51

mximo divisor comum, 329

polinmio irredutvel, 351

seecdigo de autenticao de mensa-

polinmio primitivo, 354

gem, 131

McEliece (criptossistema), 287


mdc,

veja

mximo divisor comum

menor base

problema, 388

Merkle-Damgrd

polinmio sobre estrutura algbrica, 351


polinmios mdulo

f,

352

Pollard
mtodo
mtodo

para fatorao, 242


p 1 para fatorao, 240

porta de comunicao, 175

notas de aula  verso 85 - Jernimo C. Pellegrini

NDICE REMISSIVO

453

predicado hard-core, 37

Schnorr

construo para funes de mo


nica, 39

protocolo de identicao, 209


Secure Hash Algorithm, 119

problema

CMA, 160, 163

de deciso, 371

KMA, 160, 162

problema da parada, 388

RMA, 160, 161

produto de subconjunto

in
ar

segurana de esquema de assinatura

de busca, 371

SHA (resumo criptogrco),

problema, 387

veja

Se-

cure Hash Algorithm

protocolo, 175

SHA-1, 119

prova interativa, 201

sigilo (em sistema de votao), 307

provas de conhecimento zero

sigilo perfeito, 21

SIS (problema em reticulados), 274

lim

em sistema de votao, 308


pseudoprimo, 374

sistema completo de resduos, 336


sistema de prova interativa, 201

qubit, 266

sistema reduzido de resduos, 337


SOBREVIVENCIA-DE-REDE (problema),

Rabin

397

criptossistema, 148

soma de subconjuntos, 35

raiz da unidade, 348

Pr
e

subgrupo, 344

raiz primitiva mdulo m, 338

subgrupo gerado, 344

rede de Feistel, 71

subgrupo oculto, 269

rede de substituio e permutao, 69

subsequncia constante, 48

reduo, 376

substituio local, 379

reencriptao, 308

SVP (problema em reticulados), 274

registrador de deslocamento, 49
linear realimentado, 50
registrador quntico, 267

tempo pseudopolinomial, 383


teorema Chins do resto, 334

relao de recorrncia, 364


resduo quadrtico, 339

teorema dos nmeros primos, 330


tese de Church-Turing, 392

residuosidade quadrtica (problema), 156teste de paridade (em cdigos), 285


texto cifrado escolhido, 138

resistncia de pr-imagem, 114

texto claro escolhido, 57

resistncia de segunda pr-imagem, 114

tociente (funo), 330

restrio (tcnica de demonstrao de

transferncia inconsciente, 213

Ve
rs

resistncia a coliso, 114

N P -completude),

378

resumo criptogrco, 113

transformada integral, 405


TSP

reticulado, 273

problema, 376

robustez (em sistema de votao), 307

prova de

N P -completude,

377

ROT13, 321

RSA (criptossistema), 150

unidade (em anel), 347

verso insegura, 151

RSA (esquema de assinaturas), 165

vericabilidade (em sistema de vota-

S-box, 69

vetor de recombinao, 188

SBP (problema em reticulados), 274

vetor peridico, 270

o, 307

notas de aula  verso 85 - Jernimo C. Pellegrini

NDICE REMISSIVO

454

vis
de varivel aleatrea binria, 91

Ve
rs

Pr
e

lim

in
ar

votao eletrnica, 307

Вам также может понравиться