Você está na página 1de 470

lim

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

Pr
e

Introduo Criptograa e seus Fundamentos


notas de aula  verso 90
Jernimo C. Pellegrini

Ve
rs

18 de fevereiro de 2016

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

Sumrio

Introduo e viso geral


1.2

Encriptao assimtrica

1.3

Resumos (hashes) 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

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

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

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

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

33

3.1.1

Pr-Computao Quntica . . . . . . . . . . . . . . . . . .

34

3.1.2

Ps-quntica

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

35

3.1.3

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

38

notas de aula  verso 90 - Jernimo C. Pellegrini

SUMRIO

ii

Predicados hard-core . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.3

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

42

Geradores Pseudoaleatreos e Cifras de Fluxo

45

4.1

Geradores pseudoaleatreos

45

4.2

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

49

4.3

Gerao de nmeros pseudoaleatreos

51

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

52

4.4.1

Propriedades de Sequncias Pseudoaleatreas . . . . . . .

52

4.4.2

Testes Para Sequncias de Bits

57

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

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

57

4.5.1

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

58

4.5.2

Ataques de Texto Claro Escolhido

61

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

Cifras de Bloco

65

5.1

Esquemas de Encriptao usando Funes Pseudoaleatreas . . .

5.2

Permutaes Pseudoaleatreas
5.2.1

5.3

5.4

Modos de Operao

5.7

5.8

. . . . . . .

69
69

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

69

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

70

5.3.2

CBC  Cipher Block Chaining

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

70

5.3.3

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

71

5.3.4

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

71

Cifras de bloco

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

72

5.4.1

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

72

5.4.2

Construo

73

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

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

73

5.5.1

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

73

5.5.2

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

73

5.5.3

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

76

5.5.4

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

79

Exemplo: DES

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

5.6.1

Escalonamento de chaves

5.6.2

3DES

Exemplo: AES

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

80
82

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

82

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

84

5.7.1

Descrio simplicada

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

84

5.7.2

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

86

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

89

Descrio algbrica

Noes de Criptanlise

93

6.1

Uma rede de substituio e permutao

6.2

Criptanlise linear

6.3

67

5.3.1

Ve
rs

5.6

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

Famlias de permutaes pseudoaleatreas

5.5

in
ar

4.5

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

lim

4.4

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

Pr
e

3.2

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

93

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

96

6.2.1

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

97

6.2.2

Criptanlise da rede

98

6.2.3

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

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

Criptanlise diferencial . . . . . . . . . . . . . . . . . . . . . . . . 107

notas de aula  verso 90 - Jernimo C. Pellegrini

SUMRIO
6.4

Criptanlise Algbrica

6.5

Tcnicas de criptanlise relacionadas . . . . . . . . . . . . . . . . 115

119

7.2

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

7.3

Resistncia a colises com

7.4

SHA (Secure Hash Algorithm) . . . . . . . . . . . . . . . . . . . . 125

dexp

. . . . . . . . . . . . . . . . 121

in
ar

Ataques e o problema do aniversrio

. . . . . . . . . . . . . . . . . . . 123

SHA-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

7.5

Cifras de bloco usando funes de hash: Aardvark

7.6

O Orculo Aleatreo . . . . . . . . . . . . . . . . . . . . . . . . . 128

. . . . . . . . 127

7.6.1

Propriedades do Orculo Aleatreo . . . . . . . . . . . . . 129

7.6.2

Objees

lim

. . . . . . . . . . . . . . . . . . . . . . . . . . . 130

Cdigos de Autenticao de Mensagens

135

8.1

Segurana de cdigos de autenticao de mensagens

8.2

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

8.3

CBC-MAC
8.3.1

hashing)

Resumos Criptogrcos (funes de


7.1

7.4.1

. . . . . . . . . . . . . . . . . . . . . . . . 113

. . . . . . . 136

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

Mensagens de tamanho varivel . . . . . . . . . . . . . . . 139

8.4

HMAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

8.5

Aplicao: segurana CCA

Pr
e

iii

. . . . . . . . . . . . . . . . . . . . . 142

Criptograa Assimtrica

145

9.1

Protocolos criptogrcos . . . . . . . . . . . . . . . . . . . . . . . 145

9.2

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

9.3

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


9.3.1

9.4

Ataque de homem-no-meio

Criptossistemas Assimtricos

Funes de mo nica com segredo

. . . . . . . . . . . 150

9.4.1

. . . . . . . . . . . . . . . . . 149

. . . . . . . . . . . . . . . . . . . . 149

Segurana CCA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

9.6

Elgamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

9.7

Criptossistema de Rabin . . . . . . . . . . . . . . . . . . . . . . . 152

Ve
rs

9.5

9.8

9.9

RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

9.8.1

Ataques ao RSA

9.8.2

Verso segura do RSA: OAEP

. . . . . . . . . . . . . . . . . . . . . . . 156
. . . . . . . . . . . . . . . 157

Goldwasser-Micali

. . . . . . . . . . . . . . . . . . . . . . . . . . 157

10 Assinaturas Digitais

163

10.1 Segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164


10.1.1 Segurana RMA

. . . . . . . . . . . . . . . . . . . . . . . 165

10.1.2 Segurana KMA

. . . . . . . . . . . . . . . . . . . . . . . 166

10.1.3 Segurana CMA

. . . . . . . . . . . . . . . . . . . . . . . 167

10.1.4

Aumentando a segurana de esquemas

10.2 Esquema de assinaturas de Lamport

. . . . . . . . . 168

. . . . . . . . . . . . . . . . 168

10.3 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169


10.3.1 Full-domain hash . . . . . . . . . . . . . . . . . . . . . . . 170

notas de aula  verso 90 - Jernimo C. Pellegrini

SUMRIO

iv

10.4 Elgamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170


10.4.1 DSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

II

Full-domain hash com qualquer permutao de mo nica

Protocolos

. . 173

in
ar

10.5

175

11 Protocolos Para Comprometimento

179

11.1 Modelo computacional . . . . . . . . . . . . . . . . . . . . . . . . 179


11.2 Comprometimento

. . . . . . . . . . . . . . . . . . . . . . . . . . 180

11.2.1 Comprometimento de bit

. . . . . . . . . . . . . . . . . . 185

11.2.2 Vericao de igualdade de logaritmos . . . . . . . . . . . 186

lim

11.2.3 Cara-ou-coroa . . . . . . . . . . . . . . . . . . . . . . . . . 187

12 Compartilhamento de Segredos

189

12.1 Esquemas com qurum . . . . . . . . . . . . . . . . . . . . . . . . 190


12.1.1 Esquema de Shamir

. . . . . . . . . . . . . . . . . . . . . 190

12.1.2 Esquema de Blakley

. . . . . . . . . . . . . . . . . . . . . 192

12.2 Segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

Pr
e

12.2.1 Sigilo

12.3 Estruturas gerais de acesso

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

12.4 Compartilhamento vericvel

. . . . . . . . . . . . . . . . . . . . 196

12.5 Compartilhamento publicamente vericvel


12.5.1 Segredos no aleatreos
12.6 Encriptao com qurum
12.7 Notas

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

. . . . . . . . . . . . . . . . . . . 202

. . . . . . . . . . . . . . . . . . . . . . 202

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

12.8 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

205

13 Provas de Conhecimento Zero

. . . . . . . . . . . . . . . . . . . . . . . . . . 205

-protocolos

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

13.1 Provas Interativas

13.2 Conhecimento zero . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Ve
rs

13.2.1 Isomorsmo de grafo . . . . . . . . . . . . . . . . . . . . . 207

13.3

13.4 Protocolos de Identicao

. . . . . . . . . . . . . . . . . . . . . 211

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


13.4.2 Protocolo de Schnorr . . . . . . . . . . . . . . . . . . . . . 213

13.5 Transformando provas interativas em no interativas . . . . . . . 214

14 Protocolos Seguros com Dois Participantes

217

14.1 Transferncia Inconsciente . . . . . . . . . . . . . . . . . . . . . . 217

15 Computao Segura com Mltiplos Participantes

219

15.1 Sobre encriptao homomrca . . . . . . . . . . . . . . . . . . . 220


15.2 Um protocolo para participantes semi-honestos

. . . . . . . . . . 220

15.3 Segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222


15.4 Componibilidade Universal

. . . . . . . . . . . . . . . . . . . . . 224

notas de aula  verso 90 - Jernimo C. Pellegrini

SUMRIO
15.5 Notas

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

15.6 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

227

in
ar

III Outros Tpicos


16 Curvas Elpticas

231

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


16.1.1 Simtrico

. . . . . . . . . . . . . . . . . . . . . . . . . . . 234

16.1.2 Soma de pontos . . . . . . . . . . . . . . . . . . . . . . . . 235


16.1.3 Dobrando um ponto
16.2 Ordem do grupo

. . . . . . . . . . . . . . . . . . . . . 236

. . . . . . . . . . . . . . . . . . . . . . . . . . . 237

16.3.1
16.3.2

Fp . .
GF2m

. . . . . . . . . . . . . . . 237

lim

16.3 Corpos nitos usados em Criptograa

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

16.4 Criptossistemas e protocolos . . . . . . . . . . . . . . . . . . . . . 238


16.4.1 Logaritmo discreto . . . . . . . . . . . . . . . . . . . . . . 239
16.4.2 Die-Hellman

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

16.4.3 Elgamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

Pr
e

16.4.4 Outros criptossistemas e protocolos . . . . . . . . . . . . . 240


16.5 Emparelhamentos bilineares . . . . . . . . . . . . . . . . . . . . . 240
16.6 Fatorao de Inteiros . . . . . . . . . . . . . . . . . . . . . . . . . 241

17 Primalidade e Fatorao
17.1 Fatorao

243

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

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


17.1.2 Mtodo
17.1.3 Mtodo
17.1.5

Crivo quadrtico

. . . . . . . . . . . . . . . . . . . 244
. . . . . . . . . . . . . . . . . . . 246

. . . . . . . . . . . . . . . . . . . . . 248

Curvas elpticas . . . . . . . . . . . . . . . . . . . . . . 250


Crivo sobre corpo numrico algbrico . . . . . . . . . . 250

Ve
rs

17.1.6

F
F
F

17.1.4

p 1 de Pollard
de Pollard . .

18 Criptograa Baseada em Identidades


18.1 Gerao de chaves

253

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

18.2 Encriptao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255


18.3 Assinaturas

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

18.4 Acordo de chaves . . . . . . . . . . . . . . . . . . . . . . . . . . . 258


18.5 Duas construes simples

. . . . . . . . . . . . . . . . . . . . . . 258

19 Emparelhamentos Bilineares

265

19.1 Problemas difceis em emparelhamentos bilineares


19.2 Encriptao baseada em identidades

. . . . . . . . 266

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

19.3 Assinaturas baseadas em identidades . . . . . . . . . . . . . . . . 267


19.4 Acordo de chaves . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
19.5 Outras construes . . . . . . . . . . . . . . . . . . . . . . . . . . 268

notas de aula  verso 90 - Jernimo C. Pellegrini

SUMRIO

vi

20 Criptograa Ps-Quntica

269

20.1 Diculdade de problemas


20.2 Computao quntica

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

. . . . . . . . . . . . . . . . . . . . . . . . 270

20.3 Subgrupo oculto

in
ar

20.2.1 Operaes qunticas . . . . . . . . . . . . . . . . . . . . . 272


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

20.4 Fatorao de inteiros . . . . . . . . . . . . . . . . . . . . . . . . . 273


20.4.1 Transformada quntica de Fourier

21 Reticulados

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

277

21.0.1 Variantes

. . . . . . . . . . . . . . . . . . . . . . . . . . . 277

21.0.2 SIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

21.0.3 LWE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277


21.0.5 LLL

lim

21.0.4 SBP e Ortogonalidade . . . . . . . . . . . . . . . . . . . . 278

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

21.0.6 CVP: algoritmo de Babai

. . . . . . . . . . . . . . . . . . 279

21.1 GGH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279


21.1.1 Detalhes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
21.1.2 Ataques ao GGH . . . . . . . . . . . . . . . . . . . . . . . 281
21.2 NTRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

Pr
e

21.3 Ajtai-Dwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282


21.4 LWE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

22 Cdigos Corretores de Erros

285

22.1 Correo de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . 285


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

23 Criptograa Visual

295

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


23.1.1 Esquemas para

23.2 Dois segredos

pequenos

. . . . . . . . . . . . . . . 298

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
. . . . . . . . . . . . . . . . . . . . . . . . . . 298

24 Encriptao Negvel

301

Ve
rs

23.3 Mltiplos segredos

24.1 Esquema de Howlader-Basu . . . . . . . . . . . . . . . . . . . . . 303


24.2 Esquema de Drmuth-Freeman . . . . . . . . . . . . . . . . . . . 308
24.3 Negabilidade por destinatrio e negabilidade completa . . . . . . 309
24.4 Aplicaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

25 Votao Eletrnica
25.1 Mix Nets

313

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

25.2 Assinaturas cegas . . . . . . . . . . . . . . . . . . . . . . . . . . . 315


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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

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


25.4.1 Anlise

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

notas de aula  verso 90 - Jernimo C. Pellegrini

SUMRIO

vii

25.4.2 Votao 1-de-L . . . . . . . . . . . . . . . . . . . . . . . . 319


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

in
ar

25.5.1 Anlise

26 Dinheiro Eletrnico

323

27 Cifras Histricas
27.1 Cifras

325

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

27.2 Enigma

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

27.3 Criptanlise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329


27.3.1 Anlise simples de frequncia . . . . . . . . . . . . . . . . 329

IV

lim

27.3.2 Vigenre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

Apndices

A Probabilidade
A.1

333

O problema do aniversrio . . . . . . . . . . . . . . . . . . . . . . 333

Pr
e

B lgebra e Teoria dos Nmeros


C Complexidade Computacional
C.1

331

335
367

Complexidade de tempo . . . . . . . . . . . . . . . . . . . . . . . 367


C.1.1

Recorrncias

C.1.2

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

. . . . . . . . . . . . . . . . . . . . . . . . . 370

Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

C.3

Problemas de deciso e de busca

C.4

Algoritmos no determinsticos

C.5

Algoritmos Randomizados . . . . . . . . . . . . . . . . . . . . . . 380

C.6

Classes de Complexidade

C.7

Redues e completude

Ve
rs

C.2

. . . . . . . . . . . . . . . . . . 377

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

. . . . . . . . . . . . . . . . . . . . . . 380
. . . . . . . . . . . . . . . . . . . . . . . 382

N P -completude

C.7.1

Tcnicas para demonstrao de

. . . . . 384

C.7.2

Padres comuns

C.7.3

Problemas

. . . . . . . . . . . . 389

C.7.4

Outros

. . . . . . . . . . . . 393

. . . . . . . . . . . . . . . . . . . . . . . 389

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

C.8

Problemas indecidveis . . . . . . . . . . . . . . . . . . . . . . . . 394

C.9

Mquinas de Turing . . . . . . . . . . . . . . . . . . . . . . . . 395

D Transformada de Fourier

405

D.1

Transformada de Fourier . . . . . . . . . . . . . . . . . . . . . . . 405

D.2

Transformada discreta de Fourier . . . . . . . . . . . . . . . . . . 409

D.3

Transformada do Cosseno

D.2.1

D.3.1

Transformada rpida de Fourier . . . . . . . . . . . . . . . 409


. . . . . . . . . . . . . . . . . . . . . . 412

Compresso de imagens: JPG . . . . . . . . . . . . . . . . 413

notas de aula  verso 90 - Jernimo C. Pellegrini

SUMRIO

viii

E Descrio Detalhada de Construes


DES

415

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

E.1.1

Descrio geral . . . . . . . . . . . . . . . . . . . . . . . . 415

E.1.2

Permutao inicial e sua inversa

E.1.3

Funo interna

E.1.4

Escalonamento de chaves

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

in
ar

E.1

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

. . . . . . . . . . . . . . . . . . 420

E.2

SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422

E.3

AES

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424

E.3.1

Quantidade de rodadas

E.3.2

Escalonamento de chaves

E.3.3

Encriptao . . . . . . . . . . . . . . . . . . . . . . . . . . 425

E.3.4

Decriptao . . . . . . . . . . . . . . . . . . . . . . . . . . 426

G Ficha Tcnica

Ve
rs

Pr
e

ndice Remissivo

. . . . . . . . . . . . . . . . . . 425

lim

F Respostas e Dicas

. . . . . . . . . . . . . . . . . . . 424

427

437
455

Ve
rs

Pr
e

lim

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

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

bit menos signicativo de


logaritmo de

na base

logaritmo discreto de

na base

bit mais signicativo 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 90 - Jernimo C. Pellegrini

Ve
rs

Pr
e

Conceitos Fundamentais

Ve
rs

Pr
e

lim

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

notas de aula  verso 90 - 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 90 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

Captulo 1

lim

Introduo e viso geral

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

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 criptossistemas simtricos, e o segredo normalmente

chamado de chave.

Todo criptossistema simtrico oferece ao usurio duas funes, cada uma


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

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 texto claro) em

algo irreconhecvel (que chamamos de texto cifrado) deve necessariamente ser


difcil de inverter sem o argumento

k,

de outra forma qualquer um com acesso

mensagem poderia facilmente decifr-la.


Ao algoritmo usado para calcular as funes

Enc

Dec

damos o nome de

cifra. 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 90 - 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;

Enc

Dec

so

lim

mensagens.

Cifras de bloco, que transformam sequncias de bits de tamanho xo, realizando 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 90 - 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 hashing) so outra ferramenta de que


trataremos. Funes de hashing mapeiam sequncias de bits de tamanho arbitrrio (como arquivos e mensagens) em pequenas sequncias, de tamanho 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 90 - 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

(ou MAC  Message Authentication Code).


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

Pr
e

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


uma funo de hashing: Alice envia a Bob o resumo criptogrco de sua escolha; mais tarde, quando Alice a revelar, e a escolha poder ser vericada por
Bob simplesmente calculando novamente o hash. Esquemas de compromisso podem ser usados para implementar diversos protocolos, como cara-ou-coroa por
telefone, provas de conhecimento zero e computao segura por vrios atores.

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 90 - 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 qual o patrimnio da outra.

Provas de conhecimento zero

Queremos transmitir informao a algum

preservando a possibilidade de neg-la (por exemplo, um agente da Inteligncia


de um pas pode precisar dar prova de sua identidade a um agente de outro pas,
mas quer convencer apenas esta pessoa, sem que esta prova possa convencer
mais ningum).

Podemos tambm querer provar que sabemos como realizar

uma tarefa sem mostrar como faz-lo.

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

in
ar

de inteiros. Como muito da Criptograa depende da diculdade em resolver estes 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
entanto, ser um tanto estranha inicialmente. Felizmente o modus operandi para
as demonstraes e descries conceituais no muda muito na primeira parte do
texto (exceto talvez pelo Captulo sobre Criptanlise), ento basta que o leitor
se acostume com tal modo de pensar e a 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 90 - 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 90 - 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 90 - 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 90 - Jernimo C. Pellegrini

CAPTULO 1.

INTRODUO E VISO GERAL

Ve
rs

Pr
e

lim

in
ar

18

in
ar

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

A distribui-

A distribuio sobre

no

determinada pelo criptossistema, mas sim pelas probabilidades a priori das


mensagens. As distribuies 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 Kerckho


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

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

Lema 2.3. Um criptossistema tem sigilo perfeito se e somente se, para todo
e

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

Pr
e

mM

Demonstrao. () 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
1

documentos

Teorema 2.4. Em um criptossistema com sigilo perfeito,


Demonstrao. Suponha que
sobre

|M|.

Seja

cC

|K| < |M|,


Pr(c) > 0,

tal que

e considere a distribuio uniforme

1 Se

M(c)
c:

e seja

mensagens que poderiam ser o deciframento de

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

|K| |M|.

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

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|

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


chamado de cifra de Vernam.
Usamos a notao

1n

para a sequncia de

o conjunto de todas as sequncias de

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

2.3. SIGILO PERFEITO

23

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


perfeito.

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

e para quaisquer mensagens

m0 , m1

e qualquer texto

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

in
ar

toda distribuio sobre


cifrado

Demonstrao. () Suponha que o sistema tem sigilo perfeito e tome

c C.

Usando o Lema 2.3,

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


e esta direo da prova est completa.

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

depois calcule

P (c)

lim

() (Rascunho) Presuma

m0 , m1

o Lema 2.3.

usando

Teorema 2.7. O one-time pad tem sigilo perfeito.

Demonstrao. Como a denio de sigilo perfeito no pressupe qualquer disqualquer sobre

M, deve valer para todas. Tomamos ento


M, uma mensagem m e um texto cifrado c.

pad,

uma distribuio
Para o one-time

Pr
e

tribuio sobre

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


= Pr[m K = c]

= Pr[K = m c] =

Como isto vale para toda distribuio sobre


e qualquer texto cifrado

c,

M e para quaisquer mensagens m0 ,

ento

m1

1
|K|

P (c|m0 ) =

1
= P (c|m1 )
|K|


Ve
rs

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)
e a enviaremos a ele. O adversrio dever ento descobrir qual das mensagens
foi cifrada.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 2.
O Experimento

CRIPTOSSISTEMAS E NOES DE SEGURANA

PRIV_EAV

aceita dois parmetros: o criptossistema e o ad-

versrio. A notao que usaremos neste texto


quer e

para um criptossistema qual-

para um adversrio. Quando um criptossistema tiver sigilo perfeito,

ele poder ser denotado

in
ar

24

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

Estes dois pontos so elaborados a

Denir rigorosamente segurana: 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 90 - 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.

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

e tenta determinar as mensagens;

Pr
e

com uma chave

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

k,

k;

CPA (Chosen Plaintext Attack), ataque de texto claro escolhido: o adversrio pode obter a encriptao de textos sua escolha usando a chave

k.

Seu objetivo decriptar um outro texto que tambm foi encriptado com

k;
CCA (Chosen Ciphertext Attack), ataque de texto cifrado escolhido. Aqui

o adversrio pode obter o deciframento de mensagens usando

k,

exceto

Ve
rs

daquela que realmente quer decifrar.

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

ativos.

Estes ataques dizem respeito a sigilo, e portanto fazem sentido apenas para

criptossistemas ou outras construes onde mensagens so de alguma forma encriptadas. 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 90 - 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 90 - 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 90 - 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


M se para todo adversrio A existe uma funo desprezvel negl

criptossistema simtrico

de um grampo

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


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

Notas

|K| <

lim

|M|.

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

Auguste Kerckho publicou suas idias a respeito de criptossistemas em seu


artigo La Cryptographie Militaire , na revista francesa Journal des sciences
por Auguste Kerckho, so:

Pr
e

militaires em 1883. Os princpios para construo de criptossistemas, descritos

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;


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

Ve
rs

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 [231] (e no livro de 1949 [233]).

Shannon tambm de-

senvolveu um modelo terico para comunicao com sigilo em outro artigo, em


1949 [232]. Embora o artigo de Shannon de 1948 seja bastante claro e acessvel,
o livro de Cover e Thomas [71] 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 [182].

notas de aula  verso 90 - 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 [260]
(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 [232].


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 [115].

lim

Exerccios

Ex. 5  Implemente o 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 90 - 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 90 - Jernimo C. Pellegrini

CAPTULO 2.

CRIPTOSSISTEMAS E NOES DE SEGURANA

Ve
rs

Pr
e

lim

in
ar

32

in
ar

notas de aula  verso 90 - 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. Fcil de computar: Existe um algoritmo de tempo polinomial que computa

f;

2. Difcil de inverter: Todo algoritmo

randomizado de tempo polinomial

deve ter probabilidade desprezvel de encontrar uma pr-imagem de


33

f.

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


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

P=
6 N P,

ou se certas conjecturas forem verdadeiras. Assim, falaremos a seguir de funes

Pr
e

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 conjectura);

A soma de subconjuntos.

A obteno da inversa um problema

completo (e portanto de mo nica se

for diferente de

N P-

N P ).

Ve
rs

Tomamos a liberdade de, num abuso de linguagem, no resto deste Captulo,


denominar as funes candidatas por funes de mo nica.

3.1.1

Pr-Computao Quntica

As funes descritas nesta seo no so resistentes a ataques por computadores


quanticos: embora no conheamos algoritmo clssico que possa calcular

f 1

rapidamente, existe algoritmo quntico para isso.


Nosso exemplo de permutao de mo nica

o gerador do grupo

Zp

1 ou

onde

primo e

(Np , ).

Exemplo 3.3 (Logaritmo Discreto). Sejam


de

g x (mod p)

um nmero primo;

com a operao de multiplicao . Cremos que a funo

dexp p,g (x) = g x

uma raiz primitiva mdulo

(mod p)

 consulte o Apndice B.

um gerador

notas de aula  verso 90 - Jernimo C. Pellegrini

3.1. FUNES DE MO NICA

35

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


usada para representar
A funo

dexp

p.

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

algoritmo eciente (polinomial em

p)

in
ar

tamanho da entrada e uma bijeo. Dado

para determinar

logaritmo discreto, e tem sido usado como base para construo de ferramentas

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
2

do logaritmo discreto :

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

||q|| = k o
positivo p(),

A,

qualquer nmero

escolhido ao acaso em

Zq , onde
e qualquer polinmio

lim

randomizado polinomial

nmero de bits usados para representar

P r[A(p, g, dexp p,g (x)) = x] <

q,

1
.
p(k)

bits, seja

mult (p, q) = pq .

Pr
e

Exemplo 3.5 (Fatorao de Inteiros). Dados dois primos


Acreditamos que a

nica, com o parmetro de segurana sendo


evidente que

mult

mult

p, q

de tamanho

seja uma funo de mo

n.

computvel em tempo polinomial. No conhecemos,

no entanto, algoritmo polinomial para determinar

(p, q) a partir de pq .

Usaremos

a hiptese de que tal algoritmo no exista, e nos referiremos a ela como a


3

hiptese da fatorao de inteiros .

Conjectura 3.6 (Diculdade da Fatorao de Inteiros). Para qualquer algo-

A,
p(),

ritmo randomizado polinomial

Ve
rs

qualquer polinmio positivo

quaisquer inteiros

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

3.1.2

x, y

com

bits cada, e

1
.
p(k)

Ps-quntica

As funes descritas na seo anterior s podem ser consideradas candidatas


a funes de mo nica se nos restringirmos a computadores clssicos.

algoritmo quntico que pode determinar elementos na pr-imagem de cada uma


delas.

Nesta seo apresentamos algumas funes que continuam sendo candidatas

a funes de mo nica, mesmo na presena de computadores qunticos.

2 Discrete logarithm assumption em Ingls.


3 Integer factorization assumption nos textos

em Ingls.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 3.

36

PROBLEMAS DIFCEIS

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.

in
ar

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

xi )

iS

Determinar o subconjunto

N P -completo,

xi

a partir dos elementos

e da soma um problema

e tambm acreditamos que esta funo seja de mo nica.

N P -completo

No entanto, nem todo problema

pode ser usado como base

para funes de mo nica: para que a funo seja de mo nica, ela deve ser

lim

difcil de inverter quase sempre (exceto pela probabilidade desprezvel j mencionada). Um problema

N P -completo pode ser fcil de resolver na

maioria dos

casos  somente no conhecemos algoritmos ecientes para as piores instncias


de problemas

N P -completos.

Cremos que o problema da soma de subconjuntos

seria um bom candidato no por ser

N P -completo,

mas por no conhecermos

Pr
e

algoritmos ecientes para resolv-lo.

Problemas difceis em reticulados

Reticulados so semelhantes a espaos vetoriais (porque so conjuntos de combinaes lineares de um abase), mas no so contnuos, porque na denio de
um rerticulado, usamos somente combinaes lineares com coecientes inteiros.

Denio 3.8. Um reticulado em

de

um conjunto

( n
X

L(B) =

B = (b1 , . . . , bn )

uma base de

Ve
rs

onde

Rn

)
i bi |i Z

i=1

Rn .

Dizemos que

(b1 , . . . , bn )

uma base

L.

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

.
..

bi :

bn,n

Exemplo 3.9. A gura a seguir mostra o reticulado gerado pela base

(0, 1), (2, 0)

notas de aula  verso 90 - Jernimo C. Pellegrini

3.1. FUNES DE MO NICA

b2

b1

0
1

2
0

lim

A base do reticulado pode ser descrita matricialmente como segue.

in
ar

37

Observamos que, assim como para espaos vetoriais, podemos ter mais de uma
base para um reticulado. Por exemplo, uma nova base para o reticulado que
descrevemos pode ser obtida com os vetores

Pr
e

1 = 2b1 + b2 = (2, 2)

2 = 3b1 b2 = (2, 3).

Note que usamos somente nmeros inteiros nos coecientes. A base

2
2


2
3

Esta base ilustrada na prxima gura.

Ve
rs

A base

(b1 , b2 )

ortogonal, equanto a base

1 , 2

bastante distante de ser or-

togonal. Isto interfere na diculdade de resolver certos problemas em dimenso


maior que dois, como pode ser visto no Captulo 21.
H diversos problemas

deles so:

N P -difceis denidos em reticulados.

J
Os mais simples

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 3.

38

SVP: dada uma base

CVP: dada uma base


vetor

v L(B)

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

in
ar

PROBLEMAS DIFCEIS

encontre outra base

B0

para o

mesmo reticulado que seja menor de alguma forma. Por exemplo, po-

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:

||si ||2 .

lim

||B 0 || =

Observamos a funo de mo nica associada ao problema CVP . De posse


de qualquer base
prximo de

e um vetor

x L(B),

podemos obter um vetor

v Rn ,

mas fora do reticulado. Basta adicionar um vetor de erro que no

tenha norma grande demais:

Dado um ponto
prximo de

Pr
e

f (v) = x + e

e uma base

B,

o problema de encontrar

NP-difcil (mas fcil se a base

x L(B)

mais

for bem comportada 

tratamos disso no Captulo 21).

3.1.3

Funes fracamente de mo nica

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


Ao invs de

que possamos encontrar funes de mo nica mais facilmente.

exigir que adversrios consigam elementos da pr-imagem com probabilidade


desprezvel, tentaremos agora exigir que um adversrio polinomial falhe com

Ve
rs

probabilidade no desprezvel.

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

fracamente de

mo nica se:

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

f;

2. Ligeiramente difcil de inverter: Para todo algoritmo


tempo polinomial, todo polinmio positivo

p()

A randomizado de
n sucientemente

e todo

grande,



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

Com esta denio podemos mostrar que

1
p(n)


mult , por exemplo, de mo nica.

notas de aula  verso 90 - Jernimo C. Pellegrini

3.2. PREDICADOS HARD-CORE

Lema 3.11. Para

39

sucientemente grande, a probabilidade de um nmero com

bits escolhido ao acaso seja primo maior que

1/k .

Teorema 3.12 (mult de mo nica). A funo

mult

in
ar

O Exerccio 14 pede uma demonstrao deste Lema.

fracamente de mo

nica se a hiptese da fatorao de inteiros for verdadeira.

Demonstrao. (Rascunho) De acordo com o Lema 3.11 a probabilidade de um


nmero de

1/k .
(1/k)2 .

bits escolhido aleatoreamente ser primo

nmeros, a probabilidade de ambos serem primos

Se escolhermos dois

(1/k)2 uma
mult , temos que

Como

poro no-desprezvel da quantidade total das instncias de

com probabilidade no-desprezvel ambos os nmeros so primos, e portanto

lim

difceis de inverter (pela hiptese da fatorao de inteiros).

O seguinte Teorema, apresentado sem prova, nos diz que apesar de parecer
que a existncia de funes de mo nica fracas mais plausvel que a existncia
das fortes, as duas possibilidades de existncia so equivalentes.

Teorema 3.13. Funes de mo nica fortes existem se e somente se funes

Pr
e

de mo nica fracas existem.

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

Ve
rs

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.
No exemplo do leilo, o valor

x,

e o valor encriptado

Enc(x).

No deve

ser possvel, a partir do valor encriptado, responder pergunta  x par?


logo esta pergunta o que chamamos de predicado hard-core da funo
Um predicado

hard-core de uma funo

babilstico polinomial que calcule


sucesso perto de

b(x)

a partir de

se qualquer algoritmo pro-

f (x)

tiver probabilidade de

1/2.

Na gura a seguir, um predicado hardcore para a funo

seria uma funo que recebe

y,

determinar se

Enc.

e retorna algo sbre

par, se primo, etc).

de mo nica

(por exemplo, a partir de

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 3.

40

Na prxima denio,

PROBLEMAS DIFCEIS

uma funo cujo domnio o conjunto de todas

as sequncias de bits de tamanho arbitrrio, que representamos por


(ou seja,

H(x)

Denio 3.14 (Predicado Hard-Core).


hard-core de uma funo
i)
ii)

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

se

H um algoritmo polinomial para computar

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

1
+ negl(k),
2

x.

o nmero de bits de

x escolhido ao acaso,

lim

um predicado

H(x);

Para qualquer algoritmo randomizado polinomial A e

onde

s pode valer zero ou um).

in
ar

{0, 1}

contradomnio

{0, 1} .

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

Pr
e

um dos bits de

Teorema 3.15. Dado


nomial em

p.

dexp p,g (x),

Demonstrao. O seguinte algoritmo computa


(p1)/2
calcule

c=y

(mod p).

Se

resduo quadrtico mdulo

quadrtico mdulo

p, x

p.

lsb (x)

possvel computar

c = 1,

lsb (x)

dado

em tempo poli-

y = dexp p,g (x):

pelo critrio de Euler (Teorema B.38),

Alm disso, pelo Lema B.37, se

par e o algoritmo deve retornar zero.

algoritmo deve retornar um (porque

no resduo quadrtico e

Se

resduo

c 6= 1,

no par).

O algoritmo claramente polinomial.

Exemplo 3.16. 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!).
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

Ve
rs

lamos

O Lema a seguir usado na demonstrao de que

Lema 3.17. Se

primo e

dexp

tem um bit hard-core.

resduo quadrtico mdulo

h um algoritmo

probabilstico polinomial para calcular as duas razes quadradas de

mdulo

p.

A demonstrao do Lema no ser dada.

Teorema 3.18. Dado

dexp p,g (x), msb (x)

um predicado hard-core de

dexp .

notas de aula  verso 90 - Jernimo C. Pellegrini

3.2. PREDICADOS HARD-CORE

41

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

Suponha que exista um algoritmo

polinomial que compute

dexp p,g (x).


Temos

p, g

y = dexp p,g (x).

Primeiro, calcule a paridade de

mdulo

Esta potncia par de

g ),

divida

por

r1

r2

p.

tem duas razes quadradas

e agora temos

mdulo

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


outra ser

g2+

(p1)
2

Podemos ento usar o algoritmo

dado

(usando o algoritmo do Teorema 3.15). Se

mpar (ou seja, era uma potncia mpar de

uma potencia par de

msb (x)

p (veja
g x/2 e

lim

in
ar

ritmos randomizados, mas no o faremos.

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

1.

Pr
e

e paramos quando chegarmos a

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

y,

Ve
rs

/ determinamos as duas razes: /

r1 , r2 y (mod p)

ii+1
retorne (xi , xi1 , , x0 ) 

lsb (x)

x,

para o

para o suposto

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 /

se msb (x) = 0
y r1
senao
y r2

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 3.

42

PROBLEMAS DIFCEIS

3.3 Predicados hard-core para quaisquer funes


de mo nica
dexp .

in
ar

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

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


nica.

Teorema 3.19. Seja

(f (x), r),

tem tamanho igual a

onde

uma funo fortemente de mo nica, e seja

bits cada um, e

acaso. Ento,
k
X

def

H(x, r) =

xi ri

xer
para g .

(ou seja, o produto interno de


um predicado hard-core
A funo

(mod 2)

lim

i=1

r).

x (determinado

Pr
e

Notas

quando interpretados como vetores de bits )

faz o ou-exclusivo de um subconjunto dos bits de

pelos bits um de

g(x, r) =

escolhido ao

A demonstrao dos Teoremas 3.13 e 3.19 podem ser encontradas no livro de


Goldreich [107].

Exerccios

Ex. 13  Reescreva a denio de funo de mo nica usando um experimento (simulao de jogos), da mesma maneira que zemos para as denies

de segurana no Captulo 2.

Ex. 14  Prove o Lema 3.11.

Ve
rs

Ex. 15  O Teorema 3.12 tem apenas um esboo de prova. Complete-a.


Ex. 16  Na demonstrao do Teorema 3.18, no mostramos que o algoritmo
roda em tempo polinomial. Mostre um argumento muito simples que no deixe

dvida a respeito disso.

Ex. 17  Tente construir funes de mo nica usando os problemas (presumindo que

P 6= N P ):

a) SAT

b) TSP

c) COBERTURA-POR-VERTICES

d) GERACAO-DE-PERMUTACAO

4 Em

alguns casos usa-se a notao

Lk

i=1

xi ri .

notas de aula  verso 90 - Jernimo C. Pellegrini

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


e) TETRIS
f ) CVP

in
ar

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


Em seguida responda:
i) Alguma delas permutao de mo nica?

ii) Se o problema subjacente numrico, h algoritmo pseudopolinomial para

lim

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 resolvido ecientemente? Novamente, em que isso implica para sua funo?
v) Tente analisar a segurana de cada bit de entrada das funes. H bits cla-

Pr
e

ramente inseguros? H bits hard-core? Se no conseguir mostrar nenhuma


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

p = 4k+3 chamado de primo


k

Ve
rs

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

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 3.

PROBLEMAS DIFCEIS

Ve
rs

Pr
e

lim

in
ar

44

in
ar

notas de aula  verso 90 - 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.
45

notas de aula  verso 90 - Jernimo C. Pellegrini

46CAPTULO 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

n,

n.
X2

Xn

X1

seleciona uma cadeia de bits de tamanho

distribuio dos bits dada pela regra para um bits,

distribuio para dois bits, e

in
ar

Damos o nome

para a sequncia geral de distribuies.

Denimos ento uma famlia de distribuies.

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


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

47

A Figura a seguir ilustra o experimento.

s0 Xn
s1 Yn
b R { 0, 1 }

sb

b0

b=b 1
b 6= b0 0

lim

Pr
e

Denimos ento que duas famlias de distribuies so computacionalmente

indistinguveis se a probabilidade de sucesso de


de

1/2.

neste experimento prxima

Denio 4.4 (Famlias de distribuies computacionalmente indistinguveis).


Duas famlias de distribuies

Xn

se para todo algoritmo polinomial

negl()

tal que

funo desprezvel

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

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

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

funo desprezvel

negl() 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 90 - Jernimo C. Pellegrini

48CAPTULO 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

do

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

maior

um polinmio e G um al-

goritmo polinomial determinstico que recebe como entrada sequncias de bits

s {0, 1}n .

A sada de

G(s)

tem tamanho

l(|s|).

Ento

um gerador

pseudoaleatreo se:

Para todo

A sada de

n, l(n) > n
G

para

(ou seja,

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

4.2. GERADORES COM FUNES DE MO NICA

49

impossvel, no entanto, que um gerador pseudoaleatreo gere sequncias


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

in
ar

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


distribuio uniforme.
Demonstrao. Considere um gerador

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

pseudoaleatreo se e somente se passa

pelo teste do prximo bit.

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

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

uma permutao de mo nica com predicado hard-core

Ento

lim

Teorema 4.11. Seja

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:

Teorema 4.12. Seja

uma permutao de mo nica para entrada de tamanho

bits, com predicado hard-core

H.

Ento, dado um polinmio

p(.),

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

dexp

para construir um gerador pseudoaleatreo. O predi-

cado hard-core 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 90 - Jernimo C. Pellegrini

4.3. GERAO DE NMEROS PSEUDOALEATREOS

51

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


seja, um gerador pseudoaleatreo de acordo com a Denio 4.7).
Demonstrao. Como o algoritmo implementa exatamente a mesma construo
denida no Teorema 4.12, conclumos imediatamente que Blum-Micali um

in
ar

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

(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 nmeros (inteiros ou
naturais) pseudoaleatreos.

Quando queremos um nmero entre


uma cadeia de

2k 1

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

Ve
rs

nmero

de bits. H

no ser mais uniforme. Temos ento que ignorar estas strings, e gerar um novo
nmero quando elas forem encontradas. Esta ideia detalhada no algoritmo a
seguir.

random_natural(G, n):
k log2 (n)
repita
s prximos k bits de G
interprete s como x
at que x < n
retorne x

notas de aula  verso 90 - Jernimo C. Pellegrini

52CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

Teorema 4.16. Se

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


0 e n 1.

produz nmeros uniformemente distribudos entre

Teorema 4.17. Se

G um gerador pseudoaleatreo e n um nmero natural,


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

in
ar

algoritmo

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.

importante frisar que

estes testes e propriedades no do a mesma garantia que os mtodos baseados


em funes de mo nica. Por exemplo, um gerador pode ter como sada diversas sequncias que passam todos os testes conhecidos hoje, mas isso no garante
nada a respeito de novos testes estatsticos, e no garante tampouco que este

gerador no possa produzir sequncias com vis, dependendo da semente usada.

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

4.4. GERADORES COM HEURSTICAS

Denio 4.20. Seja

X
i

quantidade de posies

53

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

54CAPTULO 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 serial se apenas o ltimo bit

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

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

4.4. GERADORES COM HEURSTICAS


onde os coecientes

cj

55

podem ser um ou zero.

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


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

in
ar

funo de feedback, ou funo de realimentao.

Abreviamos registrador de

deslocamento linearmente realimentado por LFSR (linear feedback shift regis-

O polinmio

1 + c1 x + +cl xl

lim

ter).

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

Teorema 4.24. Toda sequncia peridica de bits pode ser gerada por algum
LFSR com no mximo

estados, onde

Demonstrao. Trivial (um LFSR com


cia gera a prpria sequncia).

4 Porque a b

o mesmo que

o tamanho da sequncia.

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

56CAPTULO 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

S.

no pode ser gerada por um LFSR, complexidade linear de

Teorema 4.26. Uma sequncia de perodo


do que

zero.

lim

complexidade linear a do menor LFSR que gera

k.

.


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

4.5. CIFRAS DE FLUXO

57

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.

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

lim

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.
Observamos que passar em uma bateria de testes uma condio necessria

para um gerador pseudoaleatreo, mas de forma alguma suciente!


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

58CAPTULO 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

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

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

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-

dos). Um criptossistema simtrico

cifrados na presena de grampo

desprezvel

negl

tem indistinguibilidade de mltiplos textos


M se para todo adversrio A existe uma funo

tal que,

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

4.5. CIFRAS DE FLUXO

59

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


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

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,
Dec(k, c) = G(k) c,

desde que tanto

desde que tanto

G:

com probabilidade uniforme;

como

como

tenham

tenham

bits;

bits.

lim

p(.).

in
ar

Construo 4.31. Seja

Teorema 4.32. O Criptossistema descrito na Construo 4.31 seguro de


acordo com a Denio 2.12.

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)

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
0
0
chave. Obtenha a sada b , e retorne 1 se b = b , ou zero em caso contrrio.

4. Ao invs de

Este experimento ilustrado a seguir.

notas de aula  verso 90 - Jernimo C. Pellegrini

60CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

in
ar

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

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-

Pr
e

buio uniforme  exatamente como seria se tivssemos usado o one-time pad

ao invs de enviar

para

A,

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


s

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

para

 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

Proposio 4.33. O Criptossistema descrito na Construo 4.31 no seguro


de acordo com a Denio 4.30.
Demonstrao. No Experimento 2.11 (usado na Denio 4.30) o adversrio
A escolhe duas sequncias de duas mensagens, M0 = (0n , 0n ), M1 = (0n , 1n ).
1 2

Ao receber a sequncia de mensagens cifradas


simplesmente vericar se

M1 )

c1 = c2

C = (c , c ),

o adversrio pode

(neste caso sabe que a sequncia encriptada

ou no (e portanto a sequncia deve ser

M2 ).

notas de aula  verso 90 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

61

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:

Teorema 4.34 (Insegurana de criptossistemas determinsticos). Qualquer criptossistema simtrico determinstico inseguro de acordo com a Denio 4.30.
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 90 - Jernimo C. Pellegrini

62CAPTULO 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

A;

b0 ;

in
ar

3. Um bit

e zero em caso contrrio.

AEnck

1n

lim

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

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

tem indistinguibilidade contra ataques de texto claro es-

colhido se para todo adversrio

existe uma funo desprezvel

tal que,

1
+ negl(n).
2

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

negl

Ve
rs

Notas

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


Luby [173]. O assunto tambm abordado em outros livros, de Goldreich [107]
e Kranakis [165].
A demonstrao do Teorema 4.16 (a corretude do mtodo para gerao de

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


H uma demonstrao do Teorema de Yao no livro de Delfs e Knebl [84].
H um interessante livro [76], 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 [116]. O


livro de Daniel Neuenschwander [193] sobre mtodos estatsticos em Criptograa
aborda diversos testes para nmeros aleatreos. O livro de Golomb e parte do

notas de aula  verso 90 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

63

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 [116], de Lidl e Niederreiter [170], e de Golomb e Gong [117].


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 [196].

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.

Ex. 26  Uma sequncia de bits de deBrujin binria de ordem

k aparece
deBrujin n-ria de

sequncia binria de comprimento

nica vez.

i) Quantas sequncias de deBrujin

ii) Prove que

se cada

Generali-

ordem k uma sequncia sobre


n onde cada sequncia de comprimento k aparece uma

zando, uma sequncia de


um alfabeto de tamanho

exatamente uma vez.

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

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

in
ar

a) Demonstre que isso deve necessariamente ser possvel.

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

Neste

Captulo usaremos como fundamento para cifras de bloco permutaes pseu-

doaleatreas, 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 )

65

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

CIFRAS DE BLOCO

Assim, usamos

lim

in
ar

66

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.

Queremos que a segurana de nossa construo criptogrca esteja na escolha

Fk (sem
ele no deve ser capaz de distinguir Fk de uma funo qualquer
n (2n )
escolhida ao acaso dentre todas as (2 )
possveis funes com entrada e sada
da funo. Assim, se permitirmos ao adversrio acesso a uma funo

o ndice
de

k ),

bits.

Em outras palavras, a distribuio das


indistinguvel da distribuio das

(2 )

2n

funes indexadas por

deve ser

, que uniforme. Na Denio 5.1, o

tem o objetivo de tentar realizar esta distino.

algoritmo

n (2n )

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

5.1. ESQUEMAS DE ENCRIPTAO USANDO FUNES PSEUDOALEATREAS67

5.1 Esquemas de Encriptao usando Funes Pseudoaleatreas


Fk

escolhida pode ser usada

para construir criptossistemas: poderamos criar uma funo

Enc

Enck (m) = Fk (m).

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

r R { 0, 1 } ,
e enviar

lim

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

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:

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

Construo 5.2. Seja

uma funo pseudoa-

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

Gen(1 )

n:

Pr
e

mensagem igual a

escolhe uniformemente uma chave em

Enck (m):

escolha

r R { 0, 1 }

{0, 1}n .

, e retorne

hr, Fk (r) mi .

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

igual ao sistema de Construo 5.2 exceto por no


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


Construo 5.3. Seja

Ve
rs

usar

O Criptossistema

Lema 5.4. Seja

equivalente ao one-time pad.

A um adversrio rop() o polinmio dando o nmero de consultas


orculo Enck () no experimento 4.36. A probabili-

o criptossistema da Construo 5.3 e

dando em tempo polinomial. Seja

feitas pelo adversrio


0
dade de b = b

ao

Demonstrao. Cada vez que

1 p(n)
+ n
2
2

(tanto por como

escolhido. Dado que temos um

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

no experimento

Enck usada
PRIV_CPA), um novo r

1
2n .
Suponha agora que no experimento o texto encriptado

probabilidade de
seja enviado a

pelo adversrio

r,

ser escolhido novamente

A.

H dois casos a tratar:

c = h rc , f (rc ) mb i

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

68

rc

usado por

CIFRAS DE BLOCO

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

in
ar

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

lim

Conclumos que

p(n) 1
+ . 
2n
2

Pr
e

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

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

e ento

Ve
rs

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)

2 + g(n) 2 + 2n



p(n)

= g(n) n ,
2

de calcular,

e h ento dois casos:

g(n)

desprezvel. Se assim for,

CPA-seguro (pela denio de segu-

rana CPA);

g(n)

no desprezvel.

Neste caso conseguiramos distinguir

escolhida ao acaso  mas como

Fk

de

funo pseudoaleatrea, isso no pode

acontecer.

notas de aula  verso 90 - Jernimo C. Pellegrini

5.2. PERMUTAES PSEUDOALEATREAS

69

5.2 Permutaes Pseudoaleatreas


Trataremos agora de permutaes pseudoaleatreas, que so funes pseudoa-

Denio 5.6 (Permutao indexada). Uma funo indexada


permutao se para todo
Quando

Fk

Fk1

k , Fk

in
ar

leatreas bijetoras.
chamada de

bijetora.

so computveis em tempo polinomial, dizemos que

Fk

indistinguvel de

escolhida ao acaso dentre todas as permu-

bits, dizemos que uma permutao pseudoaleatrea.

lim

Quando
taes de

Denio 5.7 (Permutao Pseudoaleatrea). Uma permutao indexada


pseudoaleatrea se, para todo
srio polinomial

eciente.

D,

toda

escolhido uniformemente ao acaso, todo adver-

escolhida ao acaso dentre todas as permutaes de

bits, existe uma funo desprezvel

negl

tal que

Pr
e

|Pr [D(Fk , 1n ) = 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

5.2.1

Fk1 ,

Fk .

Se rezermos a Denio 5.7 dando ao adversrio

teremos uma permutao pseudoaleatrea forte.

F Famlias de permutaes pseudoaleatreas

5.3 Modos de Operao

Ve
rs

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

CAPTULO 5.

70

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

5.3. MODOS DE OPERAO

71

Teorema 5.8. Se

Fk uma permutao pseudoaleatrea e tanto iv como k


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

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

CPA.

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.

Teorema 5.9. Se

Fk uma permutao pseudoaleatrea e tanto iv como k


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

5.3.4

CTR  Contador

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


cada bloco.

Para encriptar o

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

CAPTULO 5.

CIFRAS DE BLOCO

lim

in
ar

72

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

Teorema 5.10. Se

Fk uma permutao pseudoaleatrea e tanto iv como k


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

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 assinttico, e no fazem sentido para cifras de bloco, uma vez que estas trabalham

com blocos e chaves de tamanho xo.


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

5.5. ARQUITETURA DE CIFRAS DE BLOCO

5.4.2

73

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

n 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 ponto de vista

do adversrio, parecem ser permutaes pseudoaleatreas.

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

CAPTULO 5.

74

CIFRAS DE BLOCO

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


aleatrea.

Dizemos que esta operao introduz confuso no bloco original, e

Pr
e

lim

in
ar

damos a estes pequenos blocos o nome de S-boxes (ou caixas-S).

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 rodadas, e ao nal de cada rodada o resultado combinado (normalmente usando
ou-exclusivo) com uma chave.

notas de aula  verso 90 - Jernimo C. Pellegrini

5.5. ARQUITETURA DE CIFRAS DE BLOCO

lim

passo de mistura
traz difuso

in
ar

S-boxes
introduzem
confuso

75

XOR com
i-sima chave

Pr
e

Exemplo 5.12. Construiremos agora um prottipo de rede de substituio e


permutao.

A rede no til de forma alguma, a no ser como ferramenta

didtica.

A gura mostra quatro S-boxes que substituem dois bits cada, ligadas por

Ve
rs

uma permutao simples.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

76

CIFRAS DE BLOCO

1100.

A entrada dividida em partes,

S -box em 11.
transformam

em

10,

11

00.

A primeira parte,

e a segunda parte,

Pr
e

S -box

pela primeira

lim

in
ar

J a prxima gura mostra a operao da rede para a entrada

00,

11,

mapeada

mapeada pela segunda

Os bits so permutados para a entrada de mais duas S-boxes, que

11

em

01

01

em

10,

resultando na sada

0110.

Sendo as S-boxes invertveis, a cifra como um todo tambm o ser  e assim ser tambm uma permutao (porque bijeo e preserva o tamanho da
entrada).

O projeto das S-boxes e dos passos de mistura deve ter como objetivo o

efeito avalanche: uma mudana em um bit na entrada tem alta probabilidade

de modicar qualquer um dos bits da sada.

Rede de Feistel

Ve
rs

5.5.3

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

5.5. ARQUITETURA DE CIFRAS DE BLOCO

in
ar

77

substituies:

f (00) = 10
f (01) = 11
f (10) = 00

Pr
e

f (11) = 01

lim

Exemplo 5.13. A S-box da segunda camada no exemplo 5.12 faz as seguintes

Ve
rs

Deniremos uma rede de Feistel simples usando esta S-box.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

78

CIFRAS DE BLOCO

A prxima gura ilustra como a rede transforma a sequencia de bits

1101

em

Pr
e

lim

in
ar

0011.

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

Ve
rs

Teorema 5.14. Uma rede de Feistel sempre invertvel, independende da escolha de sua funo interna.
Demonstrao. Basta mostrarmos que uma rodada invertvel. E realmente:
como

Li

copiado de

podemos calcular

Ri1 ,

temos imediatamente

Ri1 .

Com

Ri1 , f

Ri

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

notas de aula  verso 90 - Jernimo C. Pellegrini

5.5. ARQUITETURA DE CIFRAS DE BLOCO

79

e no uma permutao. Isso nos leva ao prximo Teorema, demonstrado por


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

in
ar

da rede pseudoaleatrea, desde que a rede tenha pelo menos trs rodadas.
Mais precisamente, Luby e Racko mostraram que a probabilidade de um ad-

versrio 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 formula-

o assinttica (dissemos que sempre existe uma funo desprezvel maior que
o valor); j aqui damos uma expresso exata.

Fazemos isso porque, como j

Teorema 5.16 (Luby-Racko ). Seja

lim

mencionamos, raciocnio assinttico no faz sentido para cifras de bloco.

uma permutao pseudoaleatrea de

a permutao denida por uma rede de Feistel para entrada de n bits

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


bits. Seja

P.

Ento

Pr
e

a um orculo que lhe d acesso a

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

5.5.4

q2
.
2n

Construo de Lai-Massey

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

mensagem dividida em duas partes,

Li

Ri .

Calcula-se ento

Ve
rs

Di = f (Ri Li )

onde

Ri = Ri1 + Di
Li = Li1 + P (Di )

uma permutao.

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

das redes de Feistel, a permutao

deve ser tal que

permutao (quando isso acontece dizemos que


As operaes

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

um ortomorsmo).

devem ser inversas uma da outra (mas no necessaria1

mente soma e subtrao)

A Figura a seguir mostra uma rodada de uma construo de Lai-Massey.

1 As

sequncias de bits com

devem formar um grupo;

ab

o mesmo que

a + (a).

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

CIFRAS DE BLOCO

Pr
e

lim

in
ar

80

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

Ve
rs

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
conhecido com DES (Data Encryption Standard). Embora j muito antigo, o
DES importante como exemplo de arquitetura de cifra de bloco.

O DES uma rede de Feistel com chave de 56 bits e mensagens de 64 bits,

usando 16 rodadas e oito S-boxes.

Antes de aplicar a entrada na rede de Feistel, o DES realiza uma permutao

inicial na entrada. Esta permutao revertida na sada da rede. A prxima


Figura ilustra o funcionamento do DES.

notas de aula  verso 90 - Jernimo C. Pellegrini

5.6. EXEMPLO: DES

Ve
rs

Pr
e

lim

in
ar

81

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
Feistel no tem inversa). Depois, a sada tem

ilustra a funo interna do DES.

8 4 = 32 bits.

A Figura a seguir

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

CIFRAS DE BLOCO

5.6.1

Pr
e

lim

in
ar

82

Escalonamento de chaves

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

partir da chave de 56 bits usada na entrada. A descrio detalhada do DES,


inclusive o escalonamento de chaves, est no Apndice E.

3DES

Ve
rs

5.6.2

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

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


2

a seguir chamado de ataque do encontro no meio .

2 Meet-in-the-middle

em Ingls.

notas de aula  verso 90 - Jernimo C. Pellegrini

5.6. EXEMPLO: DES

83

(m, c), sabendo que foi encriptado


= Fk1 (Fk2 (m))). Ele deve procurar duas

Suponha que um adversrio tenha um par


duplamente como a descrevemos (c
chaves tais que

O adversrio efetua

com uma chave

Enc(m)

ki

com todas as chaves possveis. Ao encriptar

e obter o texto encriptado

xi ,

ele guarda o par

em uma tabela.

Depois, o adversrio faz um procedimento semelhante:


todas as chaves possveis, guardando pares

xi

encontrar uma entrada na tabela pares com o mesmo

ki , xi

com

como chave. Ao

xi ,

ele guarda as

lim

em um conjunto de possveis solues.

Pr
e

(ki , kj )

decripta

(xi , ki ).

Em seguida, ordena as duas tabelas geradas usando


chaves

in
ar

Fk1 (m) = x = Fk1


(c).
2

Ve
rs

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:

Fk0 1 ,k2 ,k3 = Fk1 (Fk1


(Fk3 (m))).
2

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


ao ataque de encontro no meio.
Infelizmente, o 3DES muito lento (so necessrias trs operaes onde antes

usvamos uma).

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

84

CIFRAS DE BLOCO

5.7 Exemplo: AES


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

5.7.1

Descrio simplicada

in
ar

chave pode ter 129, 192 ou 256 bits.

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-

tamos ento um bloco do AES da seguinte maneira:

a0,1
a1,1
a2,1
a3,1

a0,2
a1,2
a2,2
a3,2

a0,3
a1,3

a2,3
a3,3

lim

a0,0
a1,0

a2,0
a3,0

O pseudocdigo do AES mostrado a seguir.

Pr
e

// primeira rodada:
AddRoundKey

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

Ve
rs

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

SubBytes

Este passo substitui cada um dos bytes da entrada, usando S-boxes. Esta uma
funo no-linear aplicada em cada byte. As S-boxes foram projetadas com dois
objetivos em mente:

No-linearidade: a amplitude mxima de correlao entre entrada e sada

foi minimizada tanto quanto possvel; alm disso, a probabilidade de propagao de diferenas foi tambm minimizada.

notas de aula  verso 90 - Jernimo C. Pellegrini

5.7. EXEMPLO: AES

85

Complexidade algbrica: A expresso da

S -box

no corpo nito

GF (28 )

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


algbrica.

SubBytes so uma

in
ar

Observamos tambm que as substituies feitas por

per-

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


inalterado.

ShiftRows
O passo

ShiftRows

realiza transposies de bytes, tendo difuso como efeito.

Quando o tamanho do bloco de 128 bits, cada uma das linhas deslocada

1
5

9
13

ShiftRows

facilmente invertvel.

2
7
12
13

3
8
9
14

4
5

10
15

Pr
e

A operao

2
3
4
1
/
6

6
7
8
//
11
10 11 12
///
14 15 16 16

lim

para a direita por 0, 1, 2 e 3 posies. Por exemplo:

MixColumns

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

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
a operao: quando este bit zero, Y = 0; quando um, Y = 1b
A tansformao usa a operao denida acima no lugar da multiplicao
usual:

02 03 01 01
a0
b0
01 02 03 01 a1 b1

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

Ve
rs

onde
de a

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.

3 Este

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

descrio algbrica do AES.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

86

02
01

01
03

MixColumns
03
02
01
01

01
03
02
01

do AES).

b0
0A
01


01
B7 = b1
03 01 b2
b3
39
02

in
ar

Exemplo 5.17 (Passo

CIFRAS DE BLOCO

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-

lim

Fazemos primeiro a operao

tiplicados por um, no so modicados. Temos ento

b0 = 14 75 01 39

ou exclusivo da representao binria, portanto

Pr
e

A operao

b0

b0 =00010100

01110101
00000001
00111001

=00011001 = 19 .

b1 , b2

b3

sero obtidos pelo mesmo processo.

Os valores

Ve
rs

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

5.7.2

rodadas do AES so necessrias

chaves de rodada.

F Descrio algbrica

Esta Seo apresenta algumas das operaes do AES em sua formulao algbrica, e est marcada como opcional porque requer conhecimento de corpos
4

nitos .

4 Corpos

nitos so descritos brevemente no ApndiceB, onde h tambm recomendaes

de literatura cobrindo o assunto.

notas de aula  verso 90 - Jernimo C. Pellegrini

5.7. EXEMPLO: AES

87

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


do corpo nito

GF (28 ),

usando o polinmio irredutvel

in
ar

m(x) = x8 + x4 + x3 + x + 1.


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

SubBytes

Quando

x = 0,

o valor subsitudo

MixColumns

lim

onde

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

0
1 1 1 1 0 0 0 1

A=
, b = 0
1
1
1
1
1
0
0
0

1
0 1 1 1 1 1 0 0

1
0 0 1 1 1 1 1 0
0
0 0 0 1 1 1 1 1
b.

Pr
e

A operao

Cada coluna da matriz interpretada como coecientes de um polinmio sobre


Assim, uma coluna

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

Ve
rs

Toda coluna interpretada como um polinmio com coecientes em

GF (28 )

(porque so bytes). Note que este polinmio no pertence ao corpo de Rijndael,


5

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


Por exemplo, a coluna

E0
21

0A
72

interpretada como

72 x3 + 0A x2 + 21 x + E0

= 114x3 + 10x2 + 33x + 224.

5 Se

representamos os elementos de

tencer a

Z2 .

GF (28 )

como polinmios, seus coecientes devem per-

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

88

CIFRAS DE BLOCO

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
AES da maneira usual, reduzindo o resultado mdulo

x4 +1 para que o resultado

coluna).
A operao
mio xo

in
ar

seja um polinmio de grau trs (e que possa portanto ser representado como uma

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

em hexadecimal. Sua representao como polinmios mdulo

01 = 1

lim

02 = x

m(x)

03 = x + 1.

A operao pode ser tambm descrita como a multiplicao dos polinmios


em cada coluna por

x+1
x
1
1

1
x+1
x
1

Pr
e

x
1

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

Ve
rs

ax = a7 x8 + a6 x7 + a5 x6 + a4 x5 + a3 x4 + a2 x3 + a1 x2 + a0 x (mod m(x))
= a6 x7 + a5 x6 + a4 x5 + (a3 + a7 )x4 + (a2 + a7 )x3 + a1 x2 + (a0 + a7 )x + a7

Note que temos nos coecientes ou

ai xi+1

(que pode ser obtido deslocando os

bits da representao binria para a esquerda) ou


que

a7

aparece somado com

Podemos calcular

ax

ai

As posies em

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

11011

1b .

ento fazendo duas operaes:

Deslocamento de um bit para a esquerda;

Se

a7 = 1,

(ai + a7 )xi+1 .

fazemos ou exclusivo com

1b .

Finalmente,

a(x + 1) = ax + a,

que pode ser implementado computando primeiro

sivo com

a.

ax e depois fazendo ou exclu-

notas de aula  verso 90 - Jernimo C. Pellegrini

5.8. FOX (IDEA-NXT)

89

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


dos

256

elementos tem uma tabela para a multiplicao por

2.

j mostrada,

(E0 , 21 , 0A , 72 )T .

Ela pode ser representada como

x7 + x6 + x5

x5 + 1

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

x
1

1
x+1

x+1
x
1
1

resulta em

1
x+1
x
1

x7 + x6 + x5
1

x5 + 1
1

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

Pr
e

c(x),

lim

Quando multiplicada por

in
ar

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

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 .

trocaria o primeiro elemento da coluna por

Ve
rs

c2 .

MixColumns

E portanto, o passo

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.
Da memsa forma que nas outras cifras de bloco apresentadas, h um algo-

ritmo para escalonamento de chaves.


A Figura a seguir mostra uma rodada do FOX64.

6 Isto

garante que o tempo e energia usados na computao no dependam dos argumentos,

evitando ataques de canal lateral.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

CIFRAS DE BLOCO

Note que

f 64

lim

in
ar

90

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

Notas

Pr
e

chave de rodada, permutaes e transformaes lineares.

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


Goldwasser e Silvio Micali [110].

J permutaes pseudoaleatreas (e a for-

malizao do conceito de cifra de bloco) foram idealizadas por Michael Luby e


Charles Racko [174].

O Teorema 5.16 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

Ve
rs

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 [78].

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 [198] para o DES e FIPS PUB 197 [197] para o AES); e o livro de Bruce
Schneier [221]. 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
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

7 Hoje

mantidos pela Comunidade de Estados Independentes (pases antes membros da

Unio Sovitica).

notas de aula  verso 90 - Jernimo C. Pellegrini

5.8. FOX (IDEA-NXT)

91

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

in
ar

A cifra FOX[152] 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) [8], Blowsh (de Bruce Schneier) [222], e MARS (nalista do concurso
que selecionou o AES, desenvolvida pela IBM) [47].

Exerccios
Argumente que

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

uma funo pseudoaleatrea.

lim

Ex. 34  Seja

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


Feistel encriptando o texto cifrado, mas revertendo a ordem das subchaves usadas em cada rodada.

Ex. 36  A respeito do Teorema de Luby-Racko, analise os casos de redes

Pr
e

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

muito supercial).

Ve
rs

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?

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?
8O

E para rodadas completas?

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

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 5.

92

CIFRAS DE BLOCO

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


inversa da operao

MixColumns.

smo.

in
ar

Ex. 45  Prove que a permutao usada na cifra FOX de fato um ortomorEx. 46  Desenvolva e implemente, despretensiosamente9 , suas prprias cifras de bloco:
a) Uma rede de permutao e substituio;
b) Uma cifra de Feistel simples;

c) Uma cifra de Feistel que usa S-boxes e permutaes;

lim

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

in
ar

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

8
E

9 A
3 B

B
9

C
7

D
1

E
6

F
0

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 6.

94

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

6.1. UMA REDE DE SUBSTITUIO E PERMUTAO

Ve
rs

Pr
e

lim

in
ar

95

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 6.

96

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

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


Por exemplo, considere oito variveis binrias
usar os

ai

como coecientes e os

xi

a1 , . . . , a 4

a1 x1 + a2 x2 + a3 x3 + a4 x4

x1 , . . . , x 4 .

Podemos

(mod 2),

ou

onde  ai xi  denota o e lgico de

lim

a1 x1 a2 x2 a3 x3 a4 x4 ,

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

cada
e

como variveis de uma combinao linear

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

6.2. CRIPTANLISE LINEAR

97

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.

1/2.

Pr
e

Denio 6.1. O vis de uma varivel aleatrea binria

Xi

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

Ve
rs

Suponha que as probabilidades de

Se

X1 , X2

seja

lim

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

cl , . . . , cm ,

X1 = X2 .
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 90 - Jernimo C. Pellegrini

CAPTULO 6.

Se

p1 = 1/2 + 1

p2 = 1/2 + 2 ,

com

|e1 |

|e2 | 1/2,

ento

1
+ 21 2
2

Pr[X1 X2 = 0] =
ou seja,

NOES DE CRIPTANLISE

in
ar

98

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 6.2. (Lema do Empilhamento) Sejam


reas binrias independentes; seja

o vis de

X1 , X2 , . . . , Xn variveis aleatXi e 1,2,...,n o vis de X1 Xn .

Ento

n
Y
1
+ 2n1
i ,
2
i=1

lim

Pr[X1 Xn ] =
ou seja,

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

n
Y

i .

Pr
e

i=1

Demonstrao. Provamos por induo no nmero de variveis. Para uma va11


rivel o resultado claramente verdadeiro: (2
)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 90 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

X3

X4

Y1

Y2

Y3

Y4

in
ar

X2

lim

X1

Pr
e

99

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

CAPTULO 6.

100

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
de

1/2

melhor).

Pr[A = 0]

seja aproximadamente

1/2

(quanto mais prximo

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

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

entradas, portanto

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.

Ve
rs

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

6.2. CRIPTANLISE LINEAR

101

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

j -simo

dos

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

CAPTULO 6.

NOES DE CRIPTANLISE

Ve
rs

Pr
e

lim

in
ar

102

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

6.2. CRIPTANLISE LINEAR

103

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

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:

como

X1

e as seguintes variveis aleatreas (cada

in
ar

X2

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

CAPTULO 6.

104

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
)

Como

x x = 0,

lim

3
3
O11 O11 O22 O42 O22 O63 O73 O42 O14
O15
.

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

6.2. CRIPTANLISE LINEAR

105

1/32.
Os bits da ltima chave (K5 ) que so combinados com a sada das S-boxes

S4,2

S4,3

so

5
k55 k12
.

28 = 256

possveis valores para estes bits, que so

Tendo o vis de

in
ar

chamados de subchaves candidatas.

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.


O pseudocdigo a seguir mostra este processo. O vetor

Ve
rs

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.

Apresentamos a seguir os resultados de uma simulao, completando o exem-

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 6.

106

NOES DE CRIPTANLISE

plo. Nesta simulao, usamos

k1 = 0001 1011 1001 1001


k3 = 1111 0000 0111 1000
k4 = 1011 1101 0100 0010
k5 = 1000 1001 1001 1100
A subchave que queremos encontrar , portanto

in
ar

k2 = 0010 1010 0011 0011

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


razovel de pares

onde

lim

1
2

o vis da relao linear que encontramos.

conclumos que

Como temos

= 1/32,

1
= 1024
(1/32)2

Pr
e

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

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

1/32.

Nesta simulao, a

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.


Podemos repetir este processo para tentar obter subchaves para as outras

duas S-boxes da ltima rodada, e posteriormente repetir o processo para as

notas de aula  verso 90 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL

107

outras rodadas. Quando a chave tem muitos bits, o trabalho total dispendido
na criptanlise linear de sucesso muito menor do que a busca exaustiva pela

O(280 ).

80

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

in
ar

chave. A chave tem

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.

6.2.3

Escolha da trilha e resistncia ao ataque

lim

A trilha que escolhemos no exemplo dado tinha quatro S-boxes. Deve ser claro

que a probabilidade de sucesso do ataque linear menor quando h mais S-boxes


envolvidas e quando o vis das variveis envolvidas menor.

O criptanalista deve encontrar trilhas que resultem em vis alto. para cifras
mais complexas e com mais rodadas do que a que construmos, isso pode ser
feito usando tcnicas de otimizao combinatria (metaheursticas). Por exemplo, usando algoritmos genticos (cada trilha um indivduo, e a funo de

Pr
e

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

X 00

X e
Y for

para uma cifra, calculamos sua diferena

Dadas duas entradas

vericamos a diferena entre as sadas

Y0

Y 00 .

Se a distribuio de

Ve
rs

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
00
Sejam X e X
duas

entradas para uma S-box.

diferena entre estas entradas, que denotamos

X = X 0 X 00 .

0 = 0; 0 1 = 1 ;

Estamos interessados na

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 6.

108

Calculamos tambm as sadas da S-box

NOES DE CRIPTANLISE

Y 0 = S(X 0 )

Y 00 = S(X 00 ),

e observa-

Y = Y 0 Y 00 .

O par

(X , Y )

chamado de diferencial.

Idealmente, tendo xado um


qualquer

Y .

X , Pr[Y |X ]

deveria ser igual a

Escolhemos agora um

e calculamos todos os possveis

para

X0

ela pode ser

X 00

que resul-

Damos um exemplo usando a S-box que denimos anteriormente:

X = 0011, listamos todos os 16 valores de X 0 ,


X 00 = X 0 0011. Isto feito na tabela a seguir.

se escolhermos

e para cada um

Pr
e

deles teremos

(X , Y ),

lim

usada para obter bits da chave.

X .

1/2n

Isto infelizmente impossvel, como mostraremos adiante. Quando

esta probabilidade muito alta par algum diferencial

tam em

in
ar

mos a diferena

Ve
rs

0000

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

X0
0011).

A prxima tabela j mostra, para


(ainda com

X = 0011
X 00 = X 0 X

xo, igual a

X 00 ,

as sadas

Y0

Y 00

e a diferena

notas de aula  verso 90 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL

109

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

CAPTULO 6.

110

As frequncias que computamos para

NOES DE CRIPTANLISE

y = 0011

esto na linha

3.
X

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.

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

2n .

Alm disso, a soma das entradas em qualquer linha ou coluna igual a

Teorema 6.4. No existe S-box tal que para quaisquer

1
.
2n

lim

Pr[Y |X ] =

Y ,

Demonstrao. Segue imediatamente do Lema 6.3.


Em nossa cifra, a sada

Oi1

rodada. A diferena entre duas entradas para


subchave

ki ,

O0(i1) e O00(i1) sadas


i-sima rodada. Sejam

Pr
e

I i,

no entanto, no dependem da

de acordo com o prximo Teorema.

Teorema 6.5. Sejam


00(i)

ki
i-sima

de uma rodada misturada com a chave

da prxima, para somente depois servir de entrada para as S-boxes da

as entradas na

para a rodada

i1

da rede;

I 0(i)

I = I 0(i) I 00(i)

O = O0(i1) O00(i1)

as diferenas na sada da rodada


depende somente de

O ,

i1

e na entrada da rodada
ki .

i.

Ento

e no inuenciada pela subchave

Demonstrao. O ou exclusivo das entradas

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

m2

diferem no ltimo nibble). Podemos ento analisar a propagao das diferenas


traando uma trilha como zemos na criptanlise linear.

notas de aula  verso 90 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL

Ve
rs

Pr
e

lim

in
ar

111

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
i
S14  e usaremo notao semelhante para outros I e Oi .
1
Na sada de S14 (ou seja, nos bits 13..16 de O ), teremos a diferena 0100
Usaremos

0110

como diferencial de entrada na S-box

rencial de entrada para a rede toda

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 6.

112

com probabilidade

NOES DE CRIPTANLISE

4/16 = 1/4.

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

S22

teremos

0110

in
ar


 1
1
Pr (O13..16
) = 0100|X = 0000 0000 0000 0110 = .
4
com probabilidade

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 )

com diferena igual a

(ou

Pr
e

Usamos muitos pares de mensagens


seja,

0000 0110).

gen_msg_dx (m, X ):
m0i mi X
retorne m0

m gen_msg(n)
m gen_msg_dx(m , 6 )

c enc_vector(m )
c enc_vector(m )

Ve
rs

Com alta probabilidade (1/256), a diferena entre os bits de

S41

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

6.4. CRIPTANLISE ALGBRICA


A probabilidade de

113

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.

0.00375

para a chave correta  o valor mais prximo de

dentre todos.

Fk /n

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

Pr
e

subchave
11110100

Assim como na Seo sobre criptanlise linear, conseguimos extrair oito bits da

Ve
rs

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,

KA = 0001
KB = 0110
KC = 1111
KD = 1010

onde

KA ,

etc so

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 6.

114

NOES DE CRIPTANLISE

ento

k 0 = 0001 0110 1111 1010.

k 1 = k0
k 2 = (KB KC KD KA )
k 3 = (KC KD KA KB )
k 4 = (KD KA KB KC )
k5 = k2 .
Observamos que

lim

0
0
0
0
k 2 = (k5..8
k9..12
k13..16
k1..4
)

in
ar

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

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

i-simo

Yi

i-simo

bit de sada

bit de entrada, a S-box pode ser descrita como

Pr
e

da S-box e

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

dois.

A rede inteira pode ser descrita ento como um sistema de equaes mdulo

Ve
rs

Por exemplo, o bit

c1

c1 = k15 O14 .

Mas como sabemos que o primeiro bit de uma S-box pode ser descrito em termos
das entradas da S-box, temos

Reescrevemos cada

c1 = k15 I14 I24 I44


I14 I24 I34
I14 I24 I34
I14 I34 I44
I14 I34 I44 .
Ij4

em funo de

O3

completamente um sistema de equaes.

k4 ,

e continuamos at termos descrito

Como as equaes tem grau trs, o

sistema difcil de resolver, mas em muitos casos possvel.

notas de aula  verso 90 - Jernimo C. Pellegrini

6.5. TCNICAS DE CRIPTANLISE RELACIONADAS

115

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

in
ar

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,

lim

que no deveriam acontecer).

Notas

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


explorando possveis ataque ao DES [181]. A criptanlise diferencial foi proposta

Pr
e

inicialmente por Biham e Shamir em 1991, usando como exemplo uma cifra
semelhante ao DES [30]. A apresentao para criptanlise linear e diferencial
semelhante em esprito quelas feitas por Stinson em seu livro [253] e por
Howard Heys em um relatrio tcnico [132]. Em 1994 Don Coopersmith, um
dos responsveis pela criao do DES na IBM, publicou um artigo [69] 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
recuperao de todos os bits da chave do DES. A tese de Biham foi transformada

Ve
rs

em livro [31], em cujo prefcio se l

A criptanlise diferencial o primeiro ataque capaz de quebrar o


DES completo com 16 rodadas com complexidade menor do que

255 . A fase de anlise de dados computa a chave analisando cerca de


236 textos cifrados em tempo 237 . Os 236 textos cifrados so obtidos
47
textos
durante a fase de coleta de dados, de um pool maior de 2
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 que-

bradas dada no livro de Gregory Bard [20].


A tcnica de chaves relacionadas foi desenvolvida independentemente por

Biham e Knudsen em 1993 [biham-related,

1 Traduo

livre.

knudsen-related].

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 6.

116

NOES DE CRIPTANLISE

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

in
ar

rao [161]. possvel combinar criptanlise diferencial e linear, resultando no


mtodo descrito por Hellman e Langford, chamado de criptanlise diferencial-

linear[130]. O uso de metaheursticas em criptanlise discutido extensivamente


na tese de John Clark [60]. Bruce Schneier publicou na revista Criptologia um

guia para estudo individual de Criptanlise [223], 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

lim

e outros [192], 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 [52].

Exerccios

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

Pr
e

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

Ve
rs

deva ser verdade sempre?

b) Porque a soma de qualquer linha ou coluna sempre

+8

ou

8?

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


neste Captulo, mas desta vez usando os bits

da entrada.

Ex. 50  Escolha uma das S-boxes do DES e construa sua tabela de aproximao linear.

Ex. 51  Prove o Lema 6.3.


Ex. 52  Mostre como usar a propriedade descrita no Exerccio 40 para diminuir pela metade o tempo necessrio para busca exaustiva pela chave do DES
em um ataque de texto cifrado conhecido. Quantos pares de mensagem e texto
cifrado so necessrios?.

notas de aula  verso 90 - Jernimo C. Pellegrini

6.5. TCNICAS DE CRIPTANLISE RELACIONADAS

117

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.

in
ar

Ex. 54  Suponha que algum tenha proposto um ataque criptanaltico te-

rico a uma cifra de bloco. O bloco da cifra tem 80 bits e a chave, 128 bits. O
ataque proposto funcionaria com

2100

operaes em

2110

pares de mensagem e

texto encriptado. Aponte um problema com este ataque.

Ex. 55  (Programao) Construa ferramentas computacionais que automatizem parte do processo de Criptanlise.

Ex. 56  Considere a

S -box

descrita neste Captulo.

Use-a para construir

lim

redes de Feistel com duas, quatro e doze rodadas, e tente atac-las usando
criptanlise linear e criptanlise diferencial. (A funo interna da rede de Feistel deve ser a aplicao da

S -box

seguida de ou exclusivo com a subchave da

rodada).

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

SubBytes

do AES).

Pr
e

de bytes no linear e sem ponto xo (semelhante ao passo

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,

Ve
rs

no Captulo sobre cifras de uxo.

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


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

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


c) Quatro rodadas completas.

d) Seis rodadas completas.

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

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 6.

NOES DE CRIPTANLISE

Ve
rs

Pr
e

lim

in
ar

118

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

Captulo 7

lim

Resumos Criptogrcos
(funes de hashing)

Funes de hashing (ou resumos criptogrcos) 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}


119

notas de aula  verso 90 - Jernimo C. Pellegrini

120CAPTULO 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 e um texto x
H(x), e pedimos ao

versrio, enviamos
pr-imagem de

elemento da pr-imagem).
texto

x0

ao ad-

(ou seja, enviamos um elemento da


adversrio que encontre um segundo

O adversrio ter ento que encontrar outro

que tenha o mesmo resumo de

na funo

H s;

notas de aula  verso 90 - Jernimo C. Pellegrini

7.1. ATAQUES E O PROBLEMA DO ANIVERSRIO

s e um resumo y para o adversrio.


H(x), para algum x escolhido uni0
0
encontrar algum x tal que H(x ) = y (ou

Resistncia de pr-imagem: Enviamos


Este

o resultado da aplicao de

formemente. O adversrio deve

H(x),
H(x)).

seja, dada a imagem


na pr-imagem de

o adversrio deve encontrar algum elemento

in
ar

121

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

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

122CAPTULO 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 necessria para a

segurana de uma funo de hashing, e no suciente.

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.

bits, em cada passo precisaremos de mais

No primeiro passo, usamos um valor arbitrrio

z0 .

n/2

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

Teorema 7.6. Seja

ser duas vezes maior que sua sada.

(Gen, h) uma funo de hashing de entrada de tamanho xo


(Gen, H) construda usando a transformao de Merkle(Gen, H) tambm resistente a coliso.

resistente a coliso e
Damgrd. Ento

hs

notas de aula  verso 90 - Jernimo C. Pellegrini

7.3. RESISTNCIA A COLISES COM

DEXP

123

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

124CAPTULO 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):

Teorema 7.8. Presumindo que vale a hiptese do logaritmo discreto, a Construo 7.7 uma funo de hashing com resistncia a colises.
Demonstrao. Seja

a Construo 7.7 e

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

7.4. SHA (SECURE HASH ALGORITHM)

125

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

Esta funo muito pouco eciente para ser usada na prtica, porque exige
funes de hashing.

7.4 SHA (Secure

As prximas sees descrevem outras

Pr
e

o clculo de exponenciao modular.

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 passou por uma reviso em 1995, dando origem ao SHA-1. O SHA-1 uma
construo de Merkle-Damgrd e tem sada de 160 bits. Os detalhes da imple-

mentao encontram-se na seo E.2, no Apndice E. O SHA-2 semelhante (


uma construo de Merkle-Damgrd).

SHA-3

Ve
rs

7.4.1

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

O Keccac uma 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.
Seja

uma permutao em

A construo esponja opera em duas fases:

Absoro:

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

126CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

Extrao :
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 90 - Jernimo C. Pellegrini

7.5. CIFRAS DE BLOCO USANDO FUNES DE HASH: AARDVARK127

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

128CAPTULO 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


(m, c, c0 ) tais que Enck (m) = (c, c0 ) sem usar
Enck (m) ou Deck (c, c0 ) diretamente

desconhecida, difcil encontrar


um dos orculos para computar

lim

Demonstrao. (Rascunho) Suponha que possvel facilmente encontrar


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  independente de que funo de hashing seja escolhida.


Seja

F AB

o conjunto de todas as funes com domnio

e contradomnio

B.

Na metodologia do orculo aleatreo, escolhemos uniformemente uma funo

em

F AB

quando precisamos de uma funo de hashing.

Evidentemente no podemos representar tal funo explicitamente, uma vez

que h um nmero exponencial de funes.

Podemos imaginar, no entanto,

um simulador, que responde aleatoreamente quando perguntado a respeito de


uma entrada

x A,

mas que sempre responde mesma pergunta com a mesma

resposta.

Normalmente o mtodo do orculo aleatreo visto como um meio termo

entre a 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 90 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

129

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

in
ar

propostas sejam feitas em sigilo). A escolha de Alice pode ser vista como uma
bits (onde se l seu voto, ou sua proposta para a licitao).

Alice no cona nos outros participantes, e quer garantir que ningum poder
inferir absolutamente nada a respeito de sua mensagem.

Tentamos ento usar o seguinte protocolo: Alice usa uma funo

y = f (m) para comprometer-se.


conferir que f (m) = y .
blica

Depois, quando revelar

m,

e pu-

todos podero

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

hard-core.
Se presumirmos que

sigilo do protocolo: como

Pr
e

Certamente, se

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

130CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

Resistncia a colises
Todo orculo aleatreo funciona como uma funo de hashing resistente a coli-

Teorema 7.11. Sejam um orculo aleatreo

in
ar

ses.

e um adversrio polinomial

A.

o maior tamanho de sada de H consultado por A. Ento A s poder


0
0
encontrar x, x tais que H(x) = H(x ) com probabilidade desprezvel em n.
Seja

Demonstrao. Observamos que o adversrio no pode fazer mais que uma


quantidade polinomial de consultas ao orculo.
de consultas feitas por
Como

ao orculo e

Sejam ento

a quantidade

o nmero de bits na sada de

orculo aleatreo, sabemos que os valores

yi

gerados aleatoreamente com distribuio uniforme. Temos ento


ento no mximo

O(k 2 /2n ),

Funes de mo nica

desprezvel em

realizando

Sua probabilidade de sucesso ser

lim

um ataque como o descrito na Seo 7.1.

H.

consultados so

n.

Um orculo aleatreo funciona como uma funo de mo nica.


O Exerccio 75 pede a demonstrao do Teorema 7.12.

domnio de

um orculo aleatreo. Sejam tambm

Pr
e

Teorema 7.12. Seja

com probabilidade uniforme e

orculo. Qualquer adversrio polinomial

A,

y = H(x)

escolhido do

obtido por consulta ao

de posse de

poder obter

probabilidade menor ou igual que uma funo desprezvel em

com

n.

Podemos construir, a partir de um orculo aleatreo, uma famlia indexada


de funes de mo nica.

Teorema 7.13. Se

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 [55].


Em 1996 Anderson e Biham criaram duas cifras para as quais era possvel

obter demonstrao condicional de segurana: BEAR e LION [6]. Ambas usavam funes de hashing e cifras de uxo. Pat Morin mostrou que ambas eram

notas de aula  verso 90 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

131

suscetveis a um ataque de encontro no meio, e desenvolveu Aardvark [189],


semelhante em esprito mas imune quele ataque.
O modelo do orculo aleatreo foi inicialmente sugerido na conferncia CRYPTO

in
ar

de 1986 por Amos Fiat e Adi Shamir em um trabalho sobre problemas relacionados a identicao e assinaturas [94]. Em uma das demonstraes de segurana
2

os autores armam que

A prova formal de segurana neste abstract extendido presume que

sucientemente grande e que

uma funo verdadeiramente

aleatrea.

Em um trabalho apresentado na primeira Conferncia da ACM em Segurana de Computadores e Computadores no ano de 1993 [23], Mihir Bellare e

lim

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 [28] e em outros artigos [249].

A evoluo do Keccac foi tambm

apresentada em Daghstul em 2009 [29].

O Captulo 13 do livro de Katz e Lindell [157] 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

obtido usando

Gen2 .

onde

a) Prove que para que

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

132CAPTULO 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 90 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

133

Ex. 74  Mostre concretamente porque uma funo de hashing

construda

usando a transformao de Merkle-Damgrd no uma instncia de orculo


aleatreo (ou seja, mostre como distinguir

de um orculo aleatreo).

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

Ve
rs

Pr
e

lim

in
ar

134CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

in
ar

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

Pr
e

reduz privacidade apenas.

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

k,

mensagem

uma mensagem

e tem como sada um rtulo

m,

um rtulo

(signicando vlido) ou zero (signicando invlido).

t,

e retorna um

Denotamos

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

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 8.

136

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 .

in
ar

Gen(1n )

|m| = |k| = n.

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

8.1. SEGURANA DE CDIGOS DE AUTENTICAO DE MENSAGENS137

Teorema 8.5. A Construo 8.2 segura.

= (Gen, Mac, Vrf) e = (Gen , Mac , Vrf ) obtisendo que foi construdo com uma funo pseudoa-

Demonstrao. Considere
dos pela Construo 8.2,

Seja

uma funo realmente aleatrea foi usada.

in
ar

leatrea, e em

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 com

Experimento 8.3 com

escolhida ao acaso,

se torna igual ao

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

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 8.

138

Se

CDIGOS DE AUTENTICAO DE MENSAGENS

realmente aleatrea,

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

no podem ser mostradas, porque isto tornaria a construo insegura.

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

0n

como vetor de inicializao e dando

como sada apenas o resultado da encriptao do ltimo bloco.

Vrfk (m, t)

verica se

Mack (m) = t

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

notas de aula  verso 90 - Jernimo C. Pellegrini

8.3. CBC-MAC

8.3.1

lim

in
ar

139

Mensagens de tamanho varivel

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

Pr
e

autenticar mensagens de tamanho varivel.

Teorema 8.7. A Construo 8.6 no segura para mensagens de tamanho


varivel.

Demonstrao. Seja

= (Gen, Mac, Vrf) como na Construo 8.6.

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

CAPTULO 8.

CDIGOS DE AUTENTICAO DE MENSAGENS

lim

in
ar

140

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

8.4. HMAC

lim

in
ar

141

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

CAPTULO 8.

CDIGOS DE AUTENTICAO DE MENSAGENS

lim

in
ar

142

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 no

c);

5. O resultado do experimento um se

b = b0

e zero em caso contrrio.

notas de aula  verso 90 - Jernimo C. Pellegrini

8.5. APLICAO: SEGURANA CCA

143

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 criptossistema simtrico

tem indistinguibilidade contra ataques de texto cifrado

escolhido se para todo adversrio

A existe uma funo desprezvel negl tal que,

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

1
+ negl(n).
2

Pr
e

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


criptossistema CCA-seguro.

Construo 8.11 (Criptossistema com segurana CCA). Seja E


um criptossistema CPA-seguro e

M = (GenM , Mac, Vrf)

= (GenE , Enc, Dec)

um esquema seguro

de autenticao de mensagens. Denimos o seguinte criptossistema:

Gen(1n )
km.

usa

calcula

GenM (1n )

c = Encke (m)

Encke,km (m)

GenE (1n )

t = Mackm (c),

Depois, decifra

c


e retorna

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


usando ke, retornando Decke (c).

Ve
rs

ke

para determinar as duas chaves,

hc, ti

Teorema 8.12. Se

E um criptossistema com segurana CPA e M um


esquema seguro de autenticao de mensagens, a Construo 8.11 aplicada a
E

resulta em um criptossistema

com segurana CCA.

Notas

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

Exerccios

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


possa ser usado para construir MACs?

notas de aula  verso 90 - Jernimo C. Pellegrini

144

CAPTULO 8.

CDIGOS DE AUTENTICAO DE MENSAGENS

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-

Gen(1n )

in
ar

tida via transformao de Merkle-Damgrd. Ento construmos


(sem mudanas)

Mack (m) = H s (k||m)


Vrfk (m, t)

verica se

mack (m) = t.

Mostre que esta construo no segura.

Ex. 79  Ao construir CBC-MAC para mensagens de tamanho varivel, men-

lim

cionamos que podemos usar uma construo semelhante ao CBC-MAC de tamanho xo, mas prexando a mensagem

com

|m|

(o seu tamanho). Mostre

que se o tamanho da mensagem fosse ps-xado (includo aps a mensagem), a

Ve
rs

Pr
e

construo no seria segura.

Captulo 9

lim

Criptograa Assimtrica

in
ar

notas de aula  verso 90 - 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 [87] 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 os quais

Ve
rs

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
145

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 9.

146

CRIPTOGRAFIA ASSIMTRICA

para que ambos usem um canal inseguro (aberto) para estabelecer uma chave
privada a ser usada em suas comunicaes, sem que outros tenham acesso
chave. A comunicao subsequente poder se dar usando apenas esta chave, e

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

5. O resultado do experimento um se

so enviadas ao adversrio

b = b0

A.

ou zero em caso contrrio.

Pr
e

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
temos que nos preocupar com a possibilidade de obteno da chave por um

adversrio que no participa do protocolo.

Ve
rs

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

escolhe

envia

para obter

x R Zq

(G, q, g)

e calcula

(G, q, g, h1 )

para

h1 = g x

notas de aula  verso 90 - Jernimo C. Pellegrini

9.3. PROTOCOLO DIFFIE-HELLMAN PARA ESTABELECIMENTO DE CHAVES147


escolhe

envia

recebe

y R Zq

h2

para

h2

e calcula

h2 = g y .

e determina a chave secreta

e determina a chave secreta

Ao nal da execuo do protocolo,

kB = hy1 .

kA = hx2 .

como

in
ar

kA

tem chaves secretas

Estas chaves so iguais, porque

kA = hx2 = (g y )x = g xy
kB = hy1 = (g x )y = g xy .

e B.

importante observar que o protocolo no especica nada a respeito do


grupo, exceto que

deve ter

bits. Com isso possvel usar diferentes grupos

lim

na construo prtica do protocolo. Um exemplo o EC-DH, onde so usados


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.

Este problema leva o mesmo nome do

Pr
e

protocolo.

Denio 9.4 (Problema de Die-Hellman). Dados um grupo cclico


gerador

gerados por um algoritmo

G(1n ),

e um

denotamos

DHg (a, b) = g ab .

O problema Die-Hellman computacional (ou CDH, Computational Die-

Hellman) consiste em calcular

G.

DHg (a, b)

dados

ga

gb

escolhidos ao acaso em

O problema Die-Hellman decisional (ou DDH, Decisional Die-Hellman)

consiste em reconhecer se um elemento

DHg (a, b)

para algum

Ve
rs

igual a

e algum

foi escolhido ao acaso em

ou se

gerados aleatoreamente.

Dizemos que CDH e DDH so difceis com relao a um algoritmo

se no

houver algoritmo polinomial que os resolva quando os grupos so gerados por

G.

H algoritmos

G para os quais no se conhece algoritmo 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.

Teorema 9.5. Se o problema Die-Hellman decisional difcil para

G,

o pro-

tocolo Die-Hellman (Construo 16.8) seguro de acordo com a Denio 9.9


quando o grupo

usado.

Demonstrao. Supomos que o grupo


por um algoritmo

G.

usado no experimento

9.1 foi gerado

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 9.

148

CRIPTOGRAFIA ASSIMTRICA

b escolhido ao acaso, ento Pr[b = 0] = 1/2.




Pr KE_EAV(, A, n) = 1

 1


1
=
Pr KE_EAV(, A, n) = 1|b = 1 + Pr KE_EAV(, A, n) = 1|b = 0 .
2
2
No experimento

KE_EAV

atreo do grupo ou a chave. Assim,

(G, q, g, h1 , h2 , g xy ),
(G, q, g, h1 , h2 , k 0 ),

k0 ,

o adversrio recebe

in
ar

O bit

que pode ser um elemento ale-

pode ter, com igual probabilidade:

ou

sendo que

k0

foi escolhida aleatoreamente.

Distinguir entre ambos exatamente resolver o problema Die-Hellman decisi-

lim

onal:

Como

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
= Pr A(G, q, g, g x , g y , g xy ) = 1 + Pr A(G, q, g, g x , g y , g z ) = 0
2
2

 1


1
= Pr A(G, q, g, g x , g y , g xy ) = 1 + Pr 1 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



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

Ve
rs






Pr A(G, q, g, g x , g y , g xy ) = 1 Pr A(G, q, g, g x , g y , g z ) = 1 negl(n).
Conclumos que


 1 1
Pr KE_EAV(, A, n) = 1 + negl(n).
2 2

Note que esta demonstrao parece ter um pequeno problema: quando

o adversrio recebe um elemento aleatreo do grupo

G,


b = 0,

e no uma cadeia alea-

trea de bits. Para que a diferena que clara, suponha que tenhamos escolhido

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

um fato a que o implementador deve dar ateno: no se pode usar nmeros


diretamente para representar elementos de

G;

ao invs disso deve-se usar al-

guma representao dos elementos do grupo como cadeias de bits, que preserve
a distribuio uniforme.

notas de aula  verso 90 - Jernimo C. Pellegrini

9.4. CRIPTOSSISTEMAS ASSIMTRICOS

9.3.1

149

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 homem-no-meio:
O adversrio

recebe a descrio

(G, q, g, h1 )

vinda de

Zq , h3 = g z .
repassa a descrio alterada

B escolhe y ,
h2 = g y .

h2

computa

agora tem a chave

impede que

h2

e determina

para

B.

kB = hy3 = g yz

kB = hz2 = g yz .

siga para

recebe

tem tambm a chave

h3

(G, q, g, h3 )

e computa

A,

kA =

e envia

hx3

=g

xz

h3
.

kA = hz1 = g xz .

para

A.

z R

envia de volta

lim

e calcula

in
ar

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

Pr
e

outros protocolos.

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:

Ve
rs

Gen, que aceita um


(pk, sk) A primeira

parmetro de segurana

e gera um par de chaves

chamada de chave pblica e a segunda de chave

secreta.

Enc,

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

que

um texto cifrado

uma mensagem

c.
sk ,

m.

Decsk (Encpk (m)) = m.

Enquanto para criptossistemas simtricos o sigilo perfeito implica em pro-

blemas prticos, para os criptossistemas assimtricos o sigilo perfeito absolutamente impossvel.

1 Mais

adiante admitiremos que

Dec

falhe com probabilidade desprezvel.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 9.

150

9.4.1

CRIPTOGRAFIA ASSIMTRICA

F Funes de mo nica com segredo

A Denio 9.6 diferente da Denio 2.1: o algoritmo

Gen

no cria apenas

Uma usada para encriptar e outra para decriptar

mensagens.

in
ar

uma chave, mas duas.

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.

uma famlia de permutaes de mo nica

(I, td) produzido por Gen, o segredo td deve permitir inverter


Inv:

lim

Gen

(Gen, Samp, f, Inv):

ecientemente usando o algoritmo

Invtd (fI (x)) = x.

Pr
e

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

3.

2. O adversrio recebe

e acesso de orculo a

retorna duas mensagens,

Ve
rs

4. Um bit aleatreo

5.

pk

pk, sk .

m0 , m1 ,

escolhido e

mk

Decsk .

do mesmo tamanho.
encriptada com

Encsk

(o adversrio no pode usar o orculo nesta mensagem)

envia um bit

e enviada a

b0

6. O resultado do experimento um se

b = b0 ,

ou zero em caso contrrio.

Denio 9.9 (Segurana CCA para criptossistemas assimtricos). Um criptossistema de chave pblica

tem segurana contra ataques de texto cifrado

escolhido se para todo adversrio polinomial

negl

existe uma funo desprezvel

tal que

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

1
+ negl(n).
2

notas de aula  verso 90 - Jernimo C. Pellegrini

9.6. ELGAMAL

151

9.6 Elgamal
Construo 9.10 (Criptossistema 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.

Dec: dada a
Dec retorna

Dec

sk = hG, q, g, xi,

e a mensagem

e o texto cifrado

c2
.
cx1

opera corretamente:

m G,

c = hc1 , c2 i,

com

escolha

a funo

Pr
e

A funo

chave

q,

com ordem

lim

Enc dada a chave pblica pk = hG, q, g, hi


y R Zq e devolva
g y , hy m.

in
ar

O criptossistema de Elgamal tem como base o problema DDH.

hy m
c2
=
cx1 (g y )x
(g x )y m
= xy
g
g xy m
= xy
g
=m.

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

Ve
rs

que

Encpk (15) = (53 , 123 15)

Para decriptar

e portanto

h = 59

(mod 17) = (6, 12)

(6, 12):

Decsk (6, 12) =

12
69

(mod 17) = 15.

Uma caracterstica notvel do criptossistema de Elgamal que ele no

determinstico (um elemento


encriptao).

escolhido aleatoreamente no procedimento de

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 9.

152

CRIPTOGRAFIA ASSIMTRICA

Outro fato importante que no Elgamal, a mensagem um elemento de um


grupo, e o texto encriptado consiste de dois elementos. Dizemos que o Elgamal
tem um fator de expanso de dois para um.

Teorema 9.12. Se o problema DDH for difcil para

ento o criptossistema

in
ar

G,

de Elgamal (Construo 16.9) tem segurana contra ataques de texto cifrado


conhecido.

Teorema 9.13. O criptossistema Elgamal homomrco para multiplicao


em

C.

9.7 Criptossistema de Rabin

lim

O criptossistema mostrado a seguir foi proposto por Michael Rabin em 1979.

Em essncia, encriptar no Rabin elevar ao quadrado, e decriptar calcular


raiz mdulo

N.

Construo 9.14 (Criptossistema de Rabin).

Gen:
Seja

Gere dois primos grandes e diferentes

N = pq .

A chave privada

(p, q),

Pr
e

Encpk (m) = m2 (mod N )

Decsk (c) = c (mod N )

sk

Dados primos

p, q

N = pq ,

com

tais que

p, q 3 (mod 4).
pk N .


2

y = x (mod N ), computar
N , mas difcil caso contrrio.

fcil quando se tem a fatorao de

p, q

e a chave pblica

a raiz

De fato,

no conhecemos algoritmo polinomial para computar tais razes sem conhecer


a fatorao de

(mod pq):

N.

No entanto, sabendo que

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 =

Calculamos

N = pq

y (mod p)

Ve
rs

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),
(mod q).

Exemplo 9.15 (Encriptando e decriptando com Rabin). Sejam

7. Temos N = 21.
(mod 21) = 16.

Para encriptar

m = 11,

calculamos

Para decriptar, calculamos

r1 =
r2 =

16

(mod 3) = 1

16

(mod 7) = 4.

p=3 e q =
112 (mod 21) = 121

notas de aula  verso 90 - Jernimo C. Pellegrini

9.7. CRIPTOSSISTEMA DE RABIN

153

Resolvemos o sistema

x 1

(mod 3),

x4

(2)

x 1

(mod 3),

x 4

(3)

x1

(mod 3),

x4

(4)

x1

(mod 3),

x 4

As solues para este sistema so

(mod 7)
(mod 7)
(mod 7)
(mod 7).

in
ar

(1)

4, 10, 11, 17  note que o 11 est entre elas. J

A segurana do criptossistema de Rabin se sustenta na suposio de que


um problema (encontrar a raiz quadrada de um nmero mdulo
fatorao) seja difcil.

sem sua

lim

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

Pr
e

como o Rabin no pode ter sigilo perfeito: a chave pblica


informao necessria para obter a chave privada

(p, q):

contm toda a

basta fatorarmos

N.

Acontece que sabemos que no conhecido algoritmo eciente para obter a


fatorao de

N.

Experimento 9.16 (PUB_EAV(A, , n)).


1. O par de chaves

3.

pk

para

devolve

m0 , m1 ,

ambas de mesmo tamanho.

Ve
rs

5.

enviada a

6. Aenvia
7. Se

b0

b = b0

Gen(1n ).

A.

b escolhido
c Encsk (mb ).

4. Um bit

gerado por

2. Envie

(pk, sk)

aleatoreamente e uma das mensagens encriptada:

de volta

o resultado do experimento um. Caso contrrio, zero.

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[PUB_EAV(A, , n) = 1]

tal que

1
+ negl(n).
2

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 9.

154

CRIPTOGRAFIA ASSIMTRICA

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

in
ar

segurana CPA.

Denio 9.18 (Segurana CPA para criptossistemas assimtricos). Um criptossistema de chave pblica tem segurana CPA se tem segurana contra ataque

de texto cirado conhecido.

Interessantemente, as duas Denies e segurana (texto cifrado conhecido


e CPA) para criptossistemas assimtricos tambm so equivalentes Denio
de segurana contra mltiplos textos cifrados conhecidos.

lim

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

Pr
e

um expoente

Para que estas operaes funcionem necessrio escolher os expoentes de


um conjunto com uma propriedade especial: queremos que
por isso escolhemos tanto
o grupo de unidades

como

tenha um inverso,
2

de um grupo de unidades . Se escolhermos

Z(N ) , vemos que


ab 1

(mod (N ))

e portanto, pela denio de congruncia, existe algum inteiro

tal que

ab = k(N ) + 1.
b

Conseguiremos ento encriptar (m ) e decriptar (c ) obtendo a mensagem ori-

Ve
rs

ginal :

2 Uma unidade

(mb )a mk(N )+1

(mod N )

(m(N ) )k m (mod N )
(mk(p)(q) m (mod N )
(m(p) )k(q) m
(1)
m

k(q)

(mod N )

(mod N )

(mod N ).

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

a(m) 1 (mod m).

notas de aula  verso 90 - Jernimo C. Pellegrini

9.8. RSA

155

Temos

(mp )kq m (1)kq m


m

m(p) 1
O valor de
dois primos

(N ) no
p e q.

RSA sempre

so co-primos,

(mod p).

(p 1)(q 1),

porque

in
ar

porque pelo Teorema de Euler, se

(mod N )

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 criptossistema RSA. Esta construo, no entanto, determinstica e consequentemente
insegura.

lim

Construo 9.19 (Criptossistema RSA (verso de livro-texto)).

Gen(1n ):

Pr
e

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

m
/ Zn \ ZN .

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,

Queremos

1 < b < 200

Ve
rs

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)

Para encriptar

53

(que pertence a

Z303 ),

Encpk (53) = 537

Para decriptar

(mod 303) = 275.

37,

Decsk (275) = 275143

5O

fazemos

(mod 303) = 53.

algoritmo extendido de Euclides dado no Apndice B

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 9.

156

CRIPTOGRAFIA ASSIMTRICA

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

in
ar

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

(N )

N,

d = e1 (mod (N ))
e1 no so pblicos,

basta ento calcular

y = xd (mod N )

e devem ser calculados por um adversrio que

lim

pretenda quebrar o RSA).

9.8.1

(N ) = (p 1)(q 1),

( importante observar que

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

Pr
e

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

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
mensagens sem precisar de qualquer chave privada. Suponha que

Ve
rs

a duas pessoas com chaves

(b1 , N )

enviada

(b2 , N ):

c1 = mb1
b2

c2 = m

(mod N )
(mod N ).

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

Como

cx1 cy2 = mxb1 myb2 = mxb1 +yb2 = m1 = m

(mod N ).

b e m pequenos
Se

m.

Por exemplo, se

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

b=5

notas de aula  verso 90 - Jernimo C. Pellegrini

9.9. GOLDWASSER-MICALI

9.8.2

157

Verso segura do RSA: OAEP

Da mesma forma que tornamos cifras de uxo seguras inserindo nelas elementos
de aleatoriedade, tornaremos o RSA seguro modicando-o para que passe a ser

in
ar

um algoritmo probabilstico. A modicao que fazemos adicionar uma cadeia


de bits aleatreos mensagem antes de encript-la.

Descrevemos a seguir o OAEP (Optimal Asymetric Encryption Padding).


Se trocarmos o algoritmo

Enc

da Construo 9.19 pelo algoritmo

Enc0

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.

lim

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,

Pr
e

para que possamos calcular a inversa ao decriptar a mensagem.

para

Notamos tambm que a funo


de

bits, e que

deve ser usada de forma a expandir os

deve comprimir

bits em

bits

bits.

A segurana IND-CCA-2 do esquema depende de tratarmos as duas funes

Ve
rs

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

possvel decriptar. Por isso usamos tambm a segunda funo

H.

9.9 Goldwasser-Micali
O criptossistema de Goldwasser-Micali fundamenta-se na diculdade do problema do resduo quadrtico.

Teorema 9.22. Seja

primo. Se

resduo quadrtico mdulo

exatamente duas razes quadradas mdulo

p.

p,

ento

tem

notas de aula  verso 90 - Jernimo C. Pellegrini

CRIPTOGRAFIA ASSIMTRICA

x tal que (x)2 = y .


Teramos 2x 0 (mod p), e p|2x. Como p
Mas p > 2 e p > x, e portanto

Demonstrao. Seja

Suponha que

x 6 x (mod p).
y

Consequentemente
mdulo

deve ter necessariamente duas razes quadradas distintas

p.

Teorema 9.23. Seja


mdulo

x x (mod p).
p|2 ou p|x.

primo, teramos que

in
ar

CAPTULO 9.

158

n = pq , com p e q primos. Ento y resduo quadrtico


y (mod p) resduo quadrtico mdulo p e y (mod q)
mdulo q .

se e somente se

resduo quadrtico

Teorema 9.24. Seja


mdulo

n,

ento

lim

Demonstrao. O resultado segue imediatamente do Teorema B.16.

n = pq ,

com

primos.

Se

resduo quadrtico

tem exatamente quatro razes quadradas mdulo

n.

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.

Demonstrao. Sejam

Pr
e

zes quadradas de

Denio 9.25. O conjunto

Jn+

contm os nmeros

x
n

Observe que

Jn+

x Zn

tais que

= +1.

contm os elementos do grupo de unidades

de Jacobi igual a um mdulo

Teorema 9.26. Seja

Zn

com smbolo

n.

primo. Ento exatamente metade dos elementos em

Zp

resduo quadrtico.
Demonstrao. Seja

Zp

uma raiz primitiva (e portanto pertencente a

Zp ).

Ve
rs

conjunto

{ 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


elementos de

Jn+

Demonstrao. H
quadrticos em

n = pq ,

com

primos.

resduo quadrtico mdulo

Zq .

Exatamente metade dos

n.

(p 1)/2 resduos quadrticos em Zp e (q 1)/2 resduos


6
Como p e q so primos, isso signica que h exatamente

6 Lembre-se de que tanto p como q

so mpares, por isso as quantidades listadas so inteiras.

notas de aula  verso 90 - Jernimo C. Pellegrini

9.9. GOLDWASSER-MICALI

159

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.

(x|pq)

O smbolo de Jacobi

in
ar

(p 1)/2

ser um quando

  
x
x
= +1,
p
q
e

(x|q)

tiverem o mesmo sinal. Isso acontece exatamente

metade das vezes. Temos ento, em

1/2

de nmeros com

Zpq :

lim

(x|p)

ou seja, quando

(x|pq) = 1;

1/4 de nmeros tais que (x|p) = (x|q) = 1.


mdulo pq , mas tem (x|pq) = +1;
de nmeros tais que

(x|p) = (x|q) = +1.

pq .

cos mdulo

Se escolhermos uniformemente um elemento


ser resduo quadrtico ser

Estes so resduos quadrti-

x R Jn+ ,

Pr
e

1/4

No so resduos quadrticos

1/2.

determinar, sem a fatorao de

a probabilidade de

Como no se conhece algoritmo eciente para

n,

se

de fato resduo quadrtico mdulo

n,

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

positivo

p(),

p, q

Conjectura 9.29. Para qualquer algoritmo randomizado polinomial


quer primos

com

a probabilidade de

pq

tal que

(x|p)

(x|q)

A,

quais-

qualquer polinmio

resduo qua-

k.

No entanto, se conhecermos os fatores

de Jacobi

(x|pq) = +1,

determinar corretamente se

desprezvel em

Ve
rs

drtico mdulo

bits cada,

resduo

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

duosidade quadrtica.

Construo 9.30 (Criptossistema de Goldwasser-Micali).

Gen(1k ):

escolha aleatoreamente dois primos

lha tambm

tal que

A chave pblica

A chave privada

(x, n).
(p, q).

   
x
x
=
= 1.
p
q

com

bits cada. Esco-

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 9.

160

CRIPTOGRAFIA ASSIMTRICA

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

Decp,q (c): o
cada bit ci ,

texto

in
ar

ci = a2 xmi
interpretado como uma sequncia de bits

(
0
mi =
1

se
se

ci
ci

resduo quadrtico
caso contrrio.

ci .

Para

(mod n),

Por se basear no problema do resduo quadrtico, no h a necessidade de

lim

demonstrar segurana de bit (todo bit encriptado seguro, porque cada um

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.

Enc

mrca para multiplicao em


Demonstrao. Sejam

c1 .

Ento

no criptossitema de Goldwasser-Micali homo-

Pr
e

Teorema 9.31. A funo

e soma em

M.

m0 e m1 duas mensagens, com Encpk (m0 ) = c0 e Encpk (m1 ) =


c0 c1 = a2 xm0 b2 xm1
= a2 b2 xm0 +m1
= (ab)2 xm0 +m1 ,

Encpk (m0 m1 ).

que um possvel valor para

Ve
rs

Notas

O criptossistema Elgamal foi criado em 1985 por Taher Elgamal [91], 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 [212].

O criptossistema RSA foi elaborado por Ronald Rivest, Adi Shamir e Len

Adelman em 1978 [216].

John Talbot e Dominic Welsh apontam [254]

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

7 Uma

histria detalhada da Criptograa est no livro de Simon Singh [242].

notas de aula  verso 90 - Jernimo C. Pellegrini

9.9. GOLDWASSER-MICALI

161

Uma anlise cuidadosa de ataques ao RSA e medidas preventivas feita no


livro de Song Yan [265].
O esquema OAEP foi desenvolvido por Mihir Bellare e Phillip Rogaway [22],
possvel demonstrar que se

in
ar

e combina ecincia e segurana demonstrvel.

uma mensagem for codicada com OAEP antes de ser encriptada com o RSA,
o resultado um criptossistema CCA-seguro.

Victor Shoup [238] mostrou que a demonstrao de segurana do OAEP no

vlida. Shoup props um novo esquema, OAEP+, um pouco mais complexo,


com nova demonstrao de segurana. A demonstrao dada por Shoup bastante interessante e instrutiva  diferentes experimentos (chamados de jogos

no artigo de Shoup) so propostos, cada um sendo uma pequena variante do


anterior.

lim

Eiichiro Fujisaki e outros [99] 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 [115].


Foi o primeiro criptossistema probabilstico, e tambm um criptossistema homomrco.

Pr
e

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?

Ex. 81  O que acontece se usarmos o RSA para encriptar uma mensagem


tal que

m Z(N ) \ Z(N ) ?

Ex. 82  Prove o Teorema 9.13.

Ve
rs

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

Ex. 86  Implemente o criptossistema de Elgamal.


Ex. 87  Implemente o criptossistema de Rabin.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 9.

CRIPTOGRAFIA ASSIMTRICA

Ve
rs

Pr
e

lim

in
ar

162

in
ar

notas de aula  verso 90 - 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, tanto para criar cdigos de autenticao

como para veric-los. 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: o assinante no pode
Isso no possvel com cdigos de

negar a assinatura depois de produz-la.


autenticao usando chave simtrica.

Denio 10.1 (Esquema de assinaturas). Um esquema de assinaturas consiste

(Gen, Sign, Vrf)

Ve
rs

de trs funes

Gen(1n ) cria um par


e que sk a chave

computveis em tempo polinomial:

de chaves

tamanho no mnimo igual a

inspecionando

Signsk (m)
assinatura

pk

ou

(pk, sk).

Dizemos que

secreta (ou privada).

n,

pk

a chave pblica

Ambas as chaves devem ter

e deve ser possvel determinar

apenas

sk .

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)

gerado por

Gen(1n )

m,

Vrfpk (m, Signsk (m)) = 1.


163

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 10.

164

ASSINATURAS DIGITAIS

10.1 Segurana
Assim como cdigos de autenticao de mensagens, as assinaturas digitais devem
ser consideradas seguras desde que no possam ser fraudadas. Essencialmente,

in
ar

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:

RMA (random message attack): o adversrio s tem acesso a mensagens

lim

sorteadas aleatoreamente com suas respectivas assinaturas;

KMA (known message attack): o adversrio conhece, a priori, certas mensagens, e poder ter acesso s suas assinaturas antes de tentar iniciar sua
fraude, mas as mensagens so determinadas antes do adversrio conhecer
a chave pblica do assinante;

CMA (chosen message attack): o adversrio pode escolher mensagens para

Pr
e

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


(mas a assinatura gerada diferente da original). Dependendo do contexto

Ve
rs

podemos querer impedir que estas assinaturas sejam geradas. Dizemos que
esquemas de assinatura que resistam a este tipo de fraude tem resistncia

forte contra fraude existencial.

O nmero de vezes que um esquema de assinaturas pode ser usado tambm

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

10.1. SEGURANA

10.1.1

165

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.

Gen(1n )

mensagens

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

Ve
rs

Vrfpk (m, ) = 1
m
/ { m1 , m2 , . . . , mk }

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

Quando somente uma mensagem sorteada no incio do experimento, dize-

mos que o esquema para somente uma assinatura.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 10.

166

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 }

Vrfpk (m, ) = 1 e m
/M
m ao orculo).

6. A sada do experimento um se e somente se

(ou seja, o adversrio no pediu a assinatura de

Pr
e

1n

(m1 , . . . , mk )

(sk, pk) Gen(1n )


i Signsk (mi )

pk, (1 , . . . , k )

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

A sada do experimento um se e somente se

{ (m1 , 1 ), (m2 , 2 ), . . . , (mk , k ) }.

Vrfpk (m, ) = 1 e (m, )


/

notas de aula  verso 90 - Jernimo C. Pellegrini

10.1. SEGURANA

167

Ento dizemos que o esquema fortemente seguro contra ataques com mensagens escolhidas.
Quando somente uma mensagem sorteada no incio do experimento, dize-

10.1.3

in
ar

mos que o esquema para somente uma assinatura.

Segurana CMA

A denio mais forte que temos para segurana contra ataques adaptativos
com mensagens escolhidas.

Experimento 10.6 (SIG_FORGE_CMA(, A, n)).

Gen(1n )

2.

usada para obter

recebe

pk

(pk, sk).
M

o conjunto de mensa-

o conjunto de pares

(mi , i ) de mensagens

e acesso de orculo a

gens assinadas pelo orculo, e


enviadas por

Signsk ();

seja

lim

1.

e assinaturas retornadas pelo orculo.

3. O adversrio retorna

(m, ).

4. A sada do experimento um se e somente se

Vrfpk (m, ) = 1 e m
/M
m ao orculo).

Pr
e

(ou seja, o adversrio no pediu a assinatura de

(pk, sk) Gen(1n )

ASign

1n , pk

M=

assinadas

pelo orculo

(m, )

Ve
rs

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

Se o Experimento

SIG_FORGE_CMA

for modicado tal que seu ltimo passo

seja da seguinte forma:

A sada do experimento um se e somente se

Vrfpk (m, ) = 1 e (m, )


/
para a

(ou seja, o adversrio no obteve exatamente a assinatura

mensagem

a partir do orculo),

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 10.

168

ento dizemos que

ASSINATURAS DIGITAIS

fortemente seguro contra ataques adaptativos de mensa-

gem escolhida.
Quando o adversrio pode escolher uma nica mensagem dizemos que o

10.1.4

in
ar

esquema tem segurana CMA para uma nica vez.

F Aumentando a segurana de esquemas

possvel, a partir de esquemas menos seguros, obter esquemas de assinaturas


mais seguros.

10.2 Esquema de assinaturas de Lamport

lim

Um esquema de assinatura para o qual no se conhece ataque via algoritmo

quntico o de Lamport, onde cada chave usada para realizar uma nica
assinatura.

Construo 10.8 (Esquema de assinaturas de Lamport). Seja

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.

Pr
e

de mo nica e

(que devem

bits cada):

xi,j R { 0, 1 } .

Depois preencha

aplicando

em cada elemento de

X:

yi,j f (xi,j ).

A chave privada
A chave pblica

Signsk (m):

m como uma sequncia de bits m1 , m2 , . . . , mz .


x1,m1 , x2,m2 , , xzmz .

interprete a mensagem

A assinatura

Ve
rs

X , a matriz com os valores xi,j


Y , a matriz com os valores yi,j

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 =

Como

n = 3

x1,0
x1,1

x2,0
x2,1

x3,0
x3,1


, pk =

y1,0
y1,1

y2,0
y2,1

s podemos assinar mensagens de trs bits.

y3,0
y3,1
Se


.

m = 5 (101

binrio), a assinatura calculada usando as posies destacadas na chave:

sk =

x1,0
x1,1

x2,0
x2,1

x3,0
x3,1

!
, = (x1,1 , x2,0 , x3,1 ).

em

notas de aula  verso 90 - Jernimo C. Pellegrini

10.3. RSA

169

y1,0
y1,1

pk =

Vrf(101, (x1,1 , x2,0 , x3,1 ))


y2,0
y2,1

y3,0
y3,1

Teorema 10.10. Para qualquer funo

verica:

f (x1 ) = y1,1 ?
f (x2 ) = y2,0 ?
f (x3 ) = y3,1 ?

in
ar

Para vericar esta assinatura,

de mo nica, o esquema de assinatu-

ras de Lamport um esquema de assinaturas seguro para uma nica assinatura.

10.3 RSA
O RSA tem uma propriedade interessante:

se trocarmos o papel das chaves


Para assinar,

lim

pblica e privada, o resultado um esquema de assinaturas.

encriptamos com a chave privada. Para vericar uma assinatura, decriptamos


com a chave pblica

Construo 10.11 (Esquema RSA de assinaturas (verso livro-texto)).

Gen

(o mesmo do criptossistema RSA) gera

Vrfpk (m, ) = 1

Pr
e

Signsk (m) = ma (mod N ).

pk = (b, N )

se e somente se

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

Ve
rs

chave pblica:

(m, )

Vrfpk (200) = 2007

sk = (a, N ).

p = 101, q = 3.

Escolhemos, como

(mod 303) = 200.


200,

deciframos com a

(mod 303) = 74 = m.

onde

74

Esta verso do esquema de assinaturas RSA no entanto insegura, como

mostramos a seguir.

Fraude

#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

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.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 10.

170

ASSINATURAS DIGITAIS

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

in
ar

chave pblica e

(1 2 )b = (ma1 ma2 )b

ab
= mab
1 m2 = m1 m2 = m

Full-domain hash

lim

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

aplicar diretamente o RSA para produzir assinaturas de mensagens


assinamos resumos criptogrcos de mensagens.

m Zp ,

O resultado o full-domain

hash, ou FDH, outro esquema de assinaturas. Pode-se demonstrar a segurana


do FDH usando o modelo do orculo aleatreo.

Pr
e

Construo 10.13 (Full-domain hash usando RSA).

Gen(1n )

gera um par de chaves RSA e uma funo e hashing

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:

Ve
rs

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

m, m1 , m2 tais que H(m) =


H for

Este ataque tambm deve ser difcil se

difcil de inverter.

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
de usar o criptossistema (como no caso do RSA). Ele apenas tem como base o

notas de aula  verso 90 - Jernimo C. Pellegrini

10.4. ELGAMAL

171

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:


e

sk = hG, q, g, xi,

onde

h = gx .

in
ar

hG, q, g, hi

Iniciamos com a seguinte congruncia:

m ax + by

(mod (q)).

(10.1)

Pelo Teorema B.46, as solues para esta congruncia so as mesmas solues


para

g ax+by

(mod q)

ax by

(mod q)

g g

a b

h a

(mod q).

lim

gm

No esquema Elgamal, a assinatura de uma mensagem exatamente o par

(a, b)

acima, que esperamos s poder ser produzido ecientemente por algum de posse

x).

da chave privada (e portanto de

m ax + by (mod q 1).

Sendo

Assinar uma mensagem calcular

(a, b) tais

Isso feito da seguinte forma:

= gy

(mod q)

Pr
e

que

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

Construo 10.14 (Esquema de assinaturas de Elgamal).

Ve
rs

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

(m ax)y 1

b =

Devolva

Vrf:

(mod q)
(mod q 1).

(a, b).

dada a chave pblica

pk = hG, q, g, hi,

e a assinatura

(a, b),

retorne

um se e somente se

ha ab g m

(mod q).

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 10.

172

10.4.1

ASSINATURAS DIGITAIS

DSA

O DSA uma variante do esquema Elgamal de assinaturas adotado como padro


pelo NIST. As diferenas do Elgamal para o DSA podem ser resumidas em dois

O DSA usa um grupo de ordem


mltiplo de

64

tamanho deve

p,

512 l 1024,
ser 160 bits.
e

in
ar

pontos:

que deve ser um primo com tamanho

e tambm um subgrupo de ordem

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

lim

trocada por uma adio. Temos ento

b = (H(m) + ax)y 1

do Elgamal

(mod q).

A Construo a seguir o esquema de assinaturas DSA.

Construo 10.15 (Esquema de assinaturas DSA). Seja


hashing com sada de

bits.

Escolha um grupo cclico

com ordem

Pr
e

Gen():

160

representvel com

160

uma funo de

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.

x R Zq
h g x (mod p)

A chave pblica

A chave privada

hG, q, g, hi.
hG, q, g, xi.

Ve
rs

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 = H(m)b

f = ab

e a assinatura

(a, b),

e sejam

(mod q)
(mod q).

Retorne um se e somente se

a = ge yf


(mod p)

(mod q).

O documento FIPS-186-2 descreve uma instancia do DSA onde o grupo

usado o de pontos em uma curva elptica sobre


como ECDSA (Elliptic Curve DSA).

Zp .

Este esquema conhecido

notas de aula  verso 90 - Jernimo C. Pellegrini

10.5.

F FULL-DOMAIN HASH COM QUALQUER PERMUTAO DE MO NICA173

10.5

F Full-domain hash com qualquer permuta-

o de mo nica

in
ar

(Esta Seo no foi redigida ainda)

possvel trocar o RSA no FDH por qualquer famlia de permutaes de


mo nica, mantendo sua segurana.

Notas

Assinaturas digitais usando pares de chaves pblica e privada foram idealizadas


inicialmente no mesmo artigo de Die e Hellman [87] onde expuseram a ideia

lim

de criptossistemas assimtricos.

Neste texto seguimos a abordagem de Jonathan Katz [156] 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 [166].

O livro de Jonathan Katz [156] contm um estudo detalhado sobre os fundamentos tericos das assinaturas digitais, e uma discusso detalhada do full-

Pr
e

domain hash.

Exerccios

Ex. 88  Mostre que se a assinatura

(a, 0)

for gerada para uma mensagem

usando o DSA, possvel a qualquer um determinar a chave privada do assinante.

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

Ve
rs

e publicados:

Em

160

bits, um adversrio precisa-

Desde ento diversos ataques ao SHA-1 foram descobertos

2005, Xiaoyun Wang, Yiqun Lisa Yin, e Hongbo Yu mostraram [261]

como encontrar colises no SHA-1 usando

269

operaes.

Em 2008 Stphane Manuel publicou um ataque [178] ao SHA-1 que permite


51
27
e 2 .
obter colises com complexidade entre 2

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


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.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 10.

174

ASSINATURAS DIGITAIS

Ex. 91  A seguinte armao bastante difundida:


Dado um criptossistema assimtrico qualquer, pode-se obter um esquema de assinaturas simplesmente mudando o papel as chaves p-

in
ar

blica 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

lim

tricos do Captulo 9.

Parte II

lim

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

Ve
rs

Pr
e

Protocolos

175

Ve
rs

Pr
e

lim

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

notas de aula  verso 90 - Jernimo C. Pellegrini

Pr
e

lim

in
ar

177

Ve
rs

Nesta parte so descritos protocolos criptogrcos.

notas de aula  verso 90 - Jernimo C. Pellegrini

Ve
rs

Pr
e

lim

in
ar

178

in
ar

notas de aula  verso 90 - 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;
179

notas de aula  verso 90 - Jernimo C. Pellegrini

PROTOCOLOS PARA COMPROMETIMENTO

out

in

in

out

in
ar

CAPTULO 11.

180

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 (que neste Captulo chamamos de um comprometimento).

Bob no deve ter acesso

mensagem.

Revelao: nesta fase Alice envia para Bob alguma informao adicional
que permite que Bob 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 90 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

181

A propriedade de sigilo preserva os interesses de quem se compromete:


apesar de se comprometer com um valor, ele mantido em sigilo.

Gen(1n ),

Gen, Commit

que usado para produzir uma das entradas de

o par

e toda chave

gerada por

Gen,

Revealk (Commitk (m)) = m.

Pr
e

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)

Uma das partes usar


comprometimento e
poder obter

(c, d)

ou um valor especial indi-

lim

Exigimos que para toda mensagem

Reveal:

Commit.

Commitk (m), onde k gerado por Gen. A sada de Commit


onde c o comprometimento, e d o valor de abertura.
Revealk (c, d), que retorna uma mensagem m
cando que (c, d) no foi gerado por Commit.

in
ar

Denio 11.3 (Protocolo de comprometimento). Um protocolo de comprometimento composto dos algoritmos polinomiais

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


desprezvel.

Ve
rs

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 .

c =

m, m0 , os dois valores de abertura

c.

5. O resultado do experimento 1 se e somente se

m = Revealk (c, d)

comprometimento

m0 = Revealk (c, d0 ).

m 6= m0 , m, m0 6= ,

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 11.

182

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)

lim

Denio 11.5. Um protocolo de comprometimento

computacionalmente vinculante se para qualquer adversrio polinomial


existe uma funo desprezvel

negl()

tal que

Pr[COMMIT_BIND(, A, n) = 1] negl(n);
estatisticamente vinculante se para qualquer adversrio

Pr
e

(ii)

o desprezvel

negl()

A existe uma fun-

tal que

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

11.2. COMPROMETIMENTO

183

in
ar

1n

k Gen(1n )

m1 , m2
b R { 0, 1 }
(c, d) Commitk (mb )

Denio 11.7. Um protocolo de comprometimento


(i)

negl()

tal que

tem

existe uma

1
+ negl(n).
2

Pr
e

Pr[COMMIT_HIDE(, A, n)]
(ii)

sigilo computacional se para qualquer adversrio polinomial

funo desprezvel

lim

b0

b = b0 1
b 6= b0 0

sigilo perfeito se para qualquer adversrio (polinomial ou no)

Pr[COMMIT_HIDE(, A, n)] =

e todo

1
.
2

n,


Teorema 11.8. No existe protocolo de comprometimento com vnculo perfeito

e sigilo perfeito.

Demonstrao. Um protocolo perfeitamente vinculante precisa ser determinstico, de outra forma o adversrio com tempo ilimitado poderia encontrar as duas

Ve
rs

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

r R {0, 1}n .

obter a mensagem trivial; vericar que

tambm.

H s.

c = H s (r||m)


O Exerccio 93 pede a demonstrao das propriedades do protocolo de com-

prometimento com resumos.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 11.

184

PROTOCOLOS PARA COMPROMETIMENTO

Construo 11.10 (Protocolo de comprometimento usando logaritmo discreto).

in
ar

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 .

Teorema 11.11. Presumindo a hiptese do logaritmo discreto, o protocolo descrito na Construo 11.12 tem sigilo computacional e vnculo perfeito.
Demonstrao. Como Bob s tem a descrio do grupo e

gm ,

determinar a

lim

mensagem exatamente resolver o problema do logaritmo discreto e portanto


o protocolo tem sigilo computacional.
O logaritmo de
poder trocar

na base

nico no grupo

m por uma segunda mensagem m

Zn ,

portanto Alice nunca

sem alterar o comprometimento

 e portanto o protocolo tem vnculo perfeito.

Se modicarmos o problema usado como base do protocolo do logaritmo

Pr
e

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

se

c = gr ym

retorne

m,

seno retorne

(um valor

Revealk (c, (r, m)):

r R Zq e calcule c = g r y m (mod p) Retorne hc, (r, m)i.

indicando que o comprometimento no vlido).

Ve
rs

necessrio que

m Zq .

Teorema 11.13. O protocolo de Pedersen tem sigilo perfeito e vinculao computacional.

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

Isso o mesmo que

Revealk (c, (r, m)) = m


Revealk (c, (r0 , m0 )) = m0 .
0

gr ym = gr ym

(mod p),

(r, m)

notas de aula  verso 90 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO
0

g rr = y m m (mod p),
0

y = g (rr )(m m)

(mod q)

(mod p).

Isso, por sua vez, signica computar o logaritmo de

na base

in
ar

mas ento

185

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-

gm

garitmo discreto: um deles usa apenas

como comprometimento, e bastante

claro que quebrar seu sigilo equivalente a calcular o logaritmo discreto de

m.

lim

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


um criptossistema assimtrico com segurana CPA.

Pr
e

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

com a chave privada

sk ,

e retorna

se

Revealk (c, (pk, sk)) decripta m


Encpk (m) = c, seno retorna .

O Exerccio 97 pede a demonstrao do seguinte Teorema.

um criptossistema de chave pblica com segurana

Ve
rs

Teorema 11.15. Se

CPA, ento a construo 11.14 usando


com sigilo computacional. Se em

um protocolo de comprometimento

a decriptao no-ambgua, ento o pro-

tocolo tem vinculao perfeita.

11.2.1

Comprometimento de bit

H protocolos para obter comprometimento com um nico bit. Mostramos aqui


apenas um deles, usando resduos quadrticos.

Construo 11.16 (Protocolo de comprometimento com resduos quadrticos).

1.

Gen(1n )

escolha um inteiro

bits deve ser uniforme.

com tamanho

bits.

A distribuio dos

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 11.

2.

Commitk (b):

PROTOCOLOS PARA COMPROMETIMENTO

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 um quadrado

que no quadrado:

c = yx

x2 .

Para

. Retorne

d = (x, y).

Revealk (c, (x, y)):


retorne .

se

c = x2

retorne zero; se

in
ar

186

c = yx2

retorne um; seno

Teorema 11.17. O protocolo 11.16 perfeitamente vinculante e, sendo verdadeira a hiptese do resduo quadrtico, computacionalmente ocultante.

Demonstrao. Como os comprometimentos dos bits so quadrados para zero e

no quadrados para um, impossvel conseguir um comprometimento que sirva

lim

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

11.2.2

N.

Vericao de igualdade de logaritmos

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

Pr
e

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

O provador

conhece

Gq ,

a1 = g1w

escolhe

envia um desao aleatreo

Ve
rs

devolve

verica que

q primo, e sejam h1 , h2 Gq .
h1 = g1a e h2 = g2a .

com

tal que

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

11.2. COMPROMETIMENTO

11.2.3

187

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

CAPTULO 11.

PROTOCOLOS PARA COMPROMETIMENTO

Ve
rs

Pr
e

lim

in
ar

188

in
ar

notas de aula  verso 90 - 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.
Quando h
gredo de

participantes e o qurum (ou limiar) para 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 conjunto de participantes.

podem ser divididos arbitrariamente em dois conjuntos,

um deles chamado de conjunto dos qualicantes e o outro de conjunto dos no

qualicantes.
sobre

O conjunto dos qualicantes chamado de estrutura de acesso

P.

Se um conjunto qualicante tem acesso ao segredo, um superconjunto dele

tambm deve ter. Esta ideia capturada pelo conceito de estrutura montona.

Denio 12.2 (Estrutura Montona). Seja


montona sobre

uma coleo

um conjunto. Uma estrutura

de subconjuntos de
189

tal que

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 12.

190

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 [227] e George Blakley [33], e no

n participantes,
k n possa obter o segredo (estes so chamados

usam estruturas de acesso. So denidos de forma que dentre

qualquer qurum (ou limiar) de


de esquemas

de compartilhamento).

Esquema de Shamir

12.1.1

(k, n)

Duas observaes muito simples formam a base do esquema de compartilhamento de segredos de Shamir:

Interpolao: dados

Ve
rs

de grau

n+1 pontos (xi , yi ) diferentes, h um nico polinmio

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

12.1. ESQUEMAS COM QURUM

191

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.

Teorema 12.4. Sejam


mio de grau

n + 1 pontos (xi , yi ), todos distintos. O (nico) polinpassando por todos os pontos tal que seu valor em x pode ser

calculado da seguinte forma:

lj (x)

n
X

yj lj (x)
j=0
n
Y

k=0;k6=j

x xk
.
xj xk

n + 1 pontos distintos (x0 , y0 ), . . . , (xn , yn ).

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

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

CAPTULO 12.

192

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 )

xk
.
xk xj

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

(portanto

e seja

recebe por um canal seguro o ponto

Pr
e

3. Cada participante

Fq

to total de participantes.

Para distribuir o segredo entre os

1. Cada participante

mio

lim

um corpo,

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

12.2. SEGURANA

Share(s) :

193

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

Teorema 12.8. O esquema de compartilhamento de segredos de Blakley no

tem sigilo perfeito.

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

Demonstrao. 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
ntk
t1

<

1
.
nm

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. O esquema de compartilhamento de segredos de Shamir tem


sigilo perfeito.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 12.

194

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,

Suponha tambm que podem decidir declarar guerra

e ter acesso ao cdigo

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

12.3. ESTRUTURAS GERAIS DE ACESSO

195

Teorema 12.10. Para qualquer estrutura geral de acesso

existe um esquema

Construo 12.11 (Esquema de Ito-Nishizeki-Saito). Seja

uma estrutura de

in
ar

de compartilhamento de segredos que implementa

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


sula

(vi , . . . , vk ),

Pr
e

tem trs conjuntos qualicantes (e trs clusulas conjuntivas). Para cada cluqueremos que o ou exclusivo dos

si , . . . , sk

seja igual a

s.

s = s1 s2

= s3 s4

= s5 s6 s7 .

As partilhas dos quatro participantes so determinadas pelas suas posies na


frmula.

sp = (s1 , s3 )

sd = (s2 , s7 )

Ve
rs

sc = (s4 , s6 )

sv = s5 .

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.
s1 = 1100

Suponha ento que o segredo seja


Como

s2 = 1010
s3 = 1110
s4 = 1000
s5 = 1111
s6 = 0010
s7 = 1011

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 12.

196

COMPARTILHAMENTO DE SEGREDOS

As partilhas so

sp = (s1 = 1100, s3 = 1110)


sc = (s4 = 1000, s6 = 0010)
sv = (s5 = 1111).
Para revelar o segredo,

p, c

se renem e calculam

in
ar

sd = (s2 = 1010, s7 = 1011)

s = s3 s4 = 1110 1000 = 0110.


Quando

v, c, d

se renem, tambm podem calcular

s:

lim

s = s5 s6 s7 = 1111 0010 1011 = 0110.

Teorema 12.13. O esquema de Ito-Nishizeki-Saito tem sigilo perfeito.


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

de uma conjuno):

s.

(porque era a ltima varivel

Seja ento

Pr
e

sk = si sj s

s0 = si sj .

Evidentemente

s0

tem distribuio uniforme

(porque o ou exclusivo de outras variveis escolhidas uniformemente) e no foi


construda usando

s.

Ao fazer

s s0

estamos essencialmente encriptando

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

12.4. COMPARTILHAMENTO VERIFICVEL

197

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

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 12.

198

(O ndice

COMPARTILHAMENTO DE SEGREDOS

do participante

Pi ,

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 )

Teorema 12.16. O esquema de compartilhamento da Construo 12.15 protege


Em outras palavras, seja t o qurum para
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

o distribuidor com sigilo perfeito.

Pr
e

revelao do segredo, e

Pr [S = s|V, C] = Pr [S = s] .

Demonstrao. (Rascunho) Seja

Pi

tem um par

(a(i), b(i)),

um conjunto de

t1

participantes. Cada

e todos tem a lista de comprometimentos

g ai hbi .

Os comprometimentos no oferecem informao, porque o esquema de comprometimento usado o de Pedersen. Os pares de pontos

(a(i), b(i))

tambm

no oferecem informao, porque o esquema de compartilhamento usado o de

Shamir.

Um fato importante sobre este esquema que a 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 90 - Jernimo C. Pellegrini

12.5. COMPARTILHAMENTO PUBLICAMENTE VERIFICVEL

199

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)

encriptadas para todo

p(i)

Yi = yi
Cj

Ve
rs

Usando os valores

o i < N:

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

c H [i(Xi , Yi , a1i , a2i )]

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 12.

200

COMPARTILHAMENTO DE SEGREDOS

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)

Si = hi

Si ,

o segredo

S = hs

lim

Em seguida, dados todos os valores

1/xi

= Yi

usando sua chave

obtido usando

o polinmio interpolador de Lagrange.

t
Y
i=1

Sii =

t
Y

hp(i)

i=1
Pt

=h

i=1

p(i)i

onde

Pr
e

= hp(0) = hs ,

o coeciente de Lagrange:

i =

Y
i6=j

SecVrf:

j
.
ji

para vericar que as partilhas esto corretas, necessrio com-

putar

Ve
rs

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

12.5. COMPARTILHAMENTO PUBLICAMENTE VERIFICVEL

Teorema 12.19. Se
ritmo

SecVrf

Xi = g p(i)

p(i)

Yi = yi

201

, os hashes comparados pelo algo-

sero de fato idnticos.

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

Lema 12.21. Sejam

Pr
e

Schoenmakers difcil.

g , h, Xi , Yi , yi como na descrio do esquema de Schoh = g a , Xi = g b e yi = g c para determinados a, b, c.

enmakers. Sabemos que

Um algoritmo eciente que quebre a encriptao das partilhas  ou seja, que


hpi = g ab a partir de g a , g b , g c e g bc  pode ser usado para resolver

calcule

ecientemente o problema Die-Hellman.


Demonstrao. Seja
ab

mente

o algoritmo que, dados

x = ga e y = gb .
z = g ab usando A.

Como

Ve
rs

A.

g bc

calcula eciente-

Para resolver o problema Die-Hellman queremos

Escolhemos aleatoreamente
para

ga , gb , gc

Sejam
obter

a0 , b0 , c
0

e usamos

a0

A.

Mas

e conseguimos calcular

Lema 12.22. Se

como entradas

xa = (g a ) = g aa
b 0
0
0
y b = g b = g bb ,

obtemos, com probabilidade no desprezvel de sucesso


como sada de

xa , y b , g c , y b c

o valor

z 0 = g aa bb

g ab = (z 0 ) a0 b0

g ab .

t1 participantes do esquema de Schoenmakers puderem obter

o segredo, pode-se resolver o problema Die-Hellman em tempo polinomial.

Teorema 12.23. Usando o modelo do orculo aleatreo e presumida a diculdade do problema Die-Hellman,

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 12.

202

COMPARTILHAMENTO DE SEGREDOS

A reconstruo resulta no segredo para qualquer conjunto qualicante de


participantes;

Nenhum conjunto no qualicante de participantes deve conseguir obter o

in
ar

segredo.

Demonstrao. O esquema de comprometimento de Chaum-Pedersen consisQ ij


tente, e os Xi so obtidos dos Cj como
j Cj  por isso as partilhas so

consistentes com o segredo. Dado o Lema 12.21 e o fato do esquema de Chaum-

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


diversos participantes, mas de tal forma que que um qurum mnimo possa
decifrar mensagens sem revelar a chave secreta.

Ve
rs

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

Temos ento

s=

Pi

si P,i

P,i =

lP \{ i }

(q, g, h),

t+1

publica

l
.
li

h = gs .
(a, b) = (g k hk m)

com

Para decifrar o texto encriptado


Cada

participantes.

A chave pblica ser

chave privada,

t+1

sem obter diretamente a

participantes usam o seguinte procedimento.

zi = xsi ,

junto com uma prova de que

logg hi = logx zi .

notas de aula  verso 90 - Jernimo C. Pellegrini

12.7. NOTAS

203

O texto claro

b
s
xP
s
x =x i si P,i
Y P,i
=
zi .

in
ar

m=

Os participantes podem obter a chave privada, mas presume-se que queiram


preserv-la e apenas decriptar mensagens.

12.7 Notas

lim

Shamir e Blakley inventaram independentemente seus esquemas pioneiros de


compartilhamento de segredos, publicados na mesma poca [33, 227].

A frmula de Lagrange para o polinmio interpolador normalmente apresentada na literatura de Mtodos Numricos (ou Clculo Numrico), quando da
discusso sobre interpolao. O livro de Neide Franco [97] uma boa introduo
ao assunto.

A descrio dada aqui para o esquema de Ito-Nishizeki-Saito semelhante

Pr
e

dada por Smart em seu livro [246], onde j se aplica a modicao sugerida por
Benaloh e Leichter [24]. O artigo original de Mitsuru Ito, Akira Saito e Takao
Nishizeki foi publicado na conferncia GLOBECOM87 [147].
O primeiro esquema de compartilhamento vericvel foi descrito em 1985 por
Benny Chor, Sha Goldwasser, Silvio Micali a Baruch Awerbuch [57]. Aquele
esquema j era publicamente vericvel. Outro esquema de compartilhamento
de segredos com vericao foi descrito por Rabin e Ben-Or [175]. O esquema
de Pedersen foi descrito em um artigo em 1992 [205]. Markus Stadler publicou
um esquema publicamente vericvel em 1996 [250].

O esquema de Stadler

funciona com estruturas arbitrrias de acesso, mas depende de uma conjectura

Ve
rs

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 [98].


Shoenmakers publicou seu esquema de compartilhamento publicamente ve-

ricvel em 1999 [224], 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 [204], modicada de vrias formas.

O trabalho de 1999 realizado por Rosario Gennaro, stanislaw Jarecki,

Hugo Krawczyk e tal Rabin [104] aperfeioa a ida, exibindo um mtodo com
demonstrao de segurana.

12.8 Exerccios

Ex. 99  Demonstre o Teorema 12.9.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 12.

204

COMPARTILHAMENTO DE SEGREDOS

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

Quando

era invlido (a chave no decriptou o documento).

in
ar

mento) em sigilo. O nmero de participantes

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


quando o participante tem vrios valores

si , ..., sk .

mostrando que esta armao verdadeira.

Complete a demonstrao

lim

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.

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

Pr
e

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 90 - 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 veri-

cador aceite a prova:

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

205

(P, V )

um

executa em tempo

notas de aula  verso 90 - 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 ).

IP

A classe

BPP , a escolha dos valores 2/3

arbitrria.

Denio 13.2 (Classe

formada por todas as linguagens

lim

2
3

in
ar

206

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

mao 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

P.

gerado, sem a participao do provador

seja de conhecimento zero, ento para

toda entrada

x, existe algum algoritmo polinomial M

Mais detalhadamente, para que

todo vericador

V 0 , e para

que simule a interao de

V0

com

P,

mesmas entradas, mas sem acesso a

produzindo os mesmos resultados para as

P.

M (x)
hP, V 0 i(x)

Admitimos que

probabilidade em produzir a mesma sada que

2 Veja

somente obtm dados que ele mesmo poderia ter

a Denio C.30, na Seo C.6 do Apndice C, pgina 381.

falhe com baixa

notas de aula  verso 90 - Jernimo C. Pellegrini

13.2. CONHECIMENTO ZERO

207

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-

LHA.
ii)

in
ar

V0

polinomial

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


de prova interativa. Dizemos que
entrada

x,

V0

M (x)

hP, V i(x)

Denio 13.6 (Conhecimento zero estatstico). Seja


prova interativa. Dizemos que

tal que para toda

(P, V )

um sistema de

de conhecimento zero perfeito se para

V0

existe um algoritmo polinomial M tal que para toda


x, as distribuies M (x) e hP, V i(x) so estatisticamente indistinguveis.


Pr
e

todo ator polinomial

13.2.1

(P, V )

um sistema

so computacionalmente indistin-

guveis.

entrada

existe um algoritmo polinomial

as distribuies

(P, V )

conhecimento zero perfeito se para

lim

todo ator polinomial

(P, V ) de

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

Ve
rs

Proposio 13.8. ISOMORFISMO-DE-GRAFO est em


No se sabe se ISOMORFISMO-DE-GRAFO est em

N P.

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

CAPTULO 13.

208

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

O diagrama a seguir ilustra a situao em que Victor escolhe


a permutao

e tem tambm

Se

for, sua sada um; seno zero.

G1 .

Peggy tem

(gerados aleatoriamente). Victor no tem

GO 1


G2 o

Pr
e

nem ; ele tem os trs grafos e uma permutao , que transforma G1 em H .


P
V

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

209

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

CAPTULO 13.

210

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

in
ar

com o one-time-pad.

Teorema 13.11. A Construo 13.9 um sistema de prova interativa de conhecimento zero perfeito para a linguagem dos pares de grafos isomorfos.

Demonstrao. fcil vericar que Victor executa em tempo polinomial.

G1

Completude: Se os grafos

G2

realmente so isomorfos, ento

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.

G1

G2

H isomorfo a
G2 , Peggy pode enviar-lhe
escolhe G1 , no existe permutao

no so isomorfos, ento no existe

lim

Consistncia: Se

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

no mximo 1/2.

mostrado a seguir produz a transcrio de

Pr
e

Conhecimento zero: simulador


uma interao.

S(G1 , G2 ):
b0 R { 0, 1 } // tenta adivinhar a escolha de V 0
permutao aleatrea dos vrtices de Gb
H = (Gb )
b R { 0, 1 } // escolha de V 0
se b 6= b0 reinicie
escreva (H, b, )

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

13.4. PROTOCOLOS DE IDENTIFICAO

211

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


satisfeitos.

ii)

P e V seguem o protocolo
(x, y) L), V sempre aceita.

Completude: se
fato conhece

aceita,

(c, d, s)

com mesma entrada


desaos

yB
iii)

d, d0

honesto (ou seja,

de

x A e duas transcries do protocolo em


(c, d , s0 ), com d 6= d0 (ou seja, duas transcries
compartilhada x e mesma mensagem inicial c, mas

Consistncia especial: sejam


0
que

Pr
e

i)

lim

no texto (comprometimento, desao e resposta), e os seguintes requisitos so

diferentes). Ento deve ser possvel calcular ecientemente

tal que

(x, y) L.

Conhecimento zero para vericador honesto: O protocolo de conhecimento 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 esquemas de identicao.

13.4.1

Esquema de Identicao de Feige-Fiat-Shamir

Construo 13.13 (Esquema de identicao de Feige-Fiat-Shamir). Fase de

inicializao:

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

e envia

e envia

signica que o valor enviado ser


4. Victor aceita a identicao se

ou

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

212

rs.

y 0 (mod N )

y 2 xv b (mod N ).

Teorema 13.14. O esquema de identicao de Feige-Fiat-Shamir um sistema de prova interativa de conhecimento zero.

Demonstrao. Mostramos as propriedades de completude, consistncia e co-

Pr
e

nhecimento zero.

Completude: 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

1.

Consistncia: suponha que um atacante tenta se passar por Peggy. H duas


possibilidades:

Victor escolhe o bit

mesmo escolheu
acerto

Ve
rs

Neste caso, o atacante tem sucesso porque ele

r(s0 ) = r

de volta. A probabilidade de

1.

Victor escolhe o bit

y = rs1

0.

e pode enviar

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: esta parte da demonstrao pedida no Exerccio 108.

Corolrio 13.15. O protocolo de identicao de Fiat-Feige-Shamir um

protocolo.


-

notas de aula  verso 90 - Jernimo C. Pellegrini

13.4. PROTOCOLOS DE IDENTIFICAO

213

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

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

Dene-se

t,

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

Teorema 13.17. O protocolo de Schnorr de um sistema de prova interativa

Ve
rs

de conhecimento zero perfeito para vericador honesto.


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

CAPTULO 13.

214

k0 .

Fixe

2)

Tente adivinhar o valor de


0

a0 = g k v r

3)

Envie

3)

Receba

4)

Se

para

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

lim

1
+ negl(|p|).
2t

Conhecimento zero: mostramos um simulador

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

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, em tempo polinomial, s poder produzir transcries de interaes
onde

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

13.5. TRANSFORMANDO PROVAS INTERATIVAS EM NO INTERATIVAS215

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 [112, 113].

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 [54] e extensivamente no livro de Oded Goldreich [107].


A demonstrao do teorema 13.3 foi dada pela primeira vez por Adi Sha-

mir [229]. Primeiro,

IP PSPACE

trivialmente: basta que se apresente um

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 13.

216

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 [245].

-protocolos

foram formalizados por Ronald Cramer em sua tese de douto-

rado [72]. Em sua tese, Cramer diz que escolheu o nome

porque sig lembra

zig-zag e ma abreviao de Merlin-Arthur, que o tipo de protocolo onde


os bits aleatreos usados pelo vericador so pblicos (em um
o mesmo que exigir que o vericador seja honesto).

-protocolo

isto

Amos Fiat e Adi Shamir desenvolveram um mtodo para construir esquemas de assinatura a partir de esquemas de identicao [93] (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 [114, 154].

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 [34].

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 [111].

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 90 - 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 diferentes de


decifrar
decifrar

c em m.
c.

ele pode fatorar

Se recebeu uma das outras duas razes, no conseguir

217

notas de aula  verso 90 - Jernimo C. Pellegrini

218CAPTULO 14. PROTOCOLOS SEGUROS COM DOIS PARTICIPANTES

Alice no sabe se Bob decifrou a mensagem ou no, porque

foi escolhido

aleatoreamente por Bob, e Alice no sabe qual dos quatro valores

x.

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 [211], e

por Even, Goldreich e Lempel [92] em 1982. A demonstrao de que as duas


variantes de transferncia inconsciente so equivalentes foi dada por Claude
Crpau em 1988 [75].

O livro de Carmit Hazay e Yehuda Lindell [126] e o segundo volume do livro


de Goldreich [108] tratam detalhadamente de protocolos criptogrcos com dois

Ve
rs

Pr
e

participantes.

Captulo 15

lim

Computao Segura com


Mltiplos Participantes

in
ar

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

pectos 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 polinomial 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
219

notas de aula  verso 90 - Jernimo C. Pellegrini

220CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES


1

cenrio de teoria da informao , 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 90 - Jernimo C. Pellegrini

15.2. UM PROTOCOLO PARA PARTICIPANTES SEMI-HONESTOS

221

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


de Shamir, e

si

o segredo no esquema de compartilhamento de segredos

Pi .

a partilha de

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

222CAPTULO 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

ento calcula

m(j) =

ri ci (j),

i
onde

ri

c(i)

com

ci (j)2 .

o vetor de recombinao .

correto, ou seja,

lim

Teorema 15.2. O clculo das partilhas de multiplicao descrito no texto est

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

191.

notas de aula  verso 90 - Jernimo C. Pellegrini

15.3. SEGURANA

223

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 inte5

cham-los de participantes vazios ) ou entre

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

224CAPTULO 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 [266].

O survey organizado por Dario

Catalano e outros [54] descreve os resultados na rea at 2005. Os fundamentos


so expostos de modo minucioso no segundo volume do livro de Goldreich [108].
O conceito de componibilidade universal foi introduzido por Ran Canetti [50].
Uma exposio a respeito de protocolos componveis dada por Yehuda Lindell
no livro que teve origem em sua tese [172].
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 [35].
[79] [267]

notas de aula  verso 90 - Jernimo C. Pellegrini

15.6. EXERCCIOS

225

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

Ve
rs

Pr
e

lim

in
ar

226CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES

lim

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

Parte III

Ve
rs

Pr
e

Outros Tpicos

227

Ve
rs

Pr
e

lim

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

notas de aula  verso 90 - Jernimo C. Pellegrini

Pr
e

lim

in
ar

229

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

Ve
rs

Pr
e

lim

in
ar

230

in
ar

notas de aula  verso 90 - 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).


1

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.

231

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 16.

232

CURVAS ELPTICAS

obtendo a forma simplicada:

y 02 = x03 + A0 x + B 0 ,
e

B0

so constantes pertencentes a

F.

As guras a seguir ilustram as curvas elpticas

in
ar

A0

onde

y 2 = x3 2x+2 e y 2 = x3 2x

sobre o corpo dos reais.

lim

Pr
e

Denio 16.3 (Discriminante de um polinmio). O discriminante de um po-

an xn + an1 xn1 + + a0

Ve
rs

linmio

a2n2
n

com razes

r1 , r2 , . . . rn

(ri rj )2 .

i<j

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

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

so

Proposio 16.4. Seja

zero se e somente se

um polinmio de grau

n.

O discriminante

tem pelo menos duas razes iguais.

de

notas de aula  verso 90 - Jernimo C. Pellegrini

233

an no zero, o discriminante ser zero se e somente


2
i<j (ri rj ) for zero. Este produtrio por sua vez ser zero

Demonstrao. Como
o produtrio

se
se

e somente se um dos fatores for igual a zero. Isto o mesmo que dizer que h

ri

rj

tais que

ri rj = 0,

ou

ri = rj .

Mostramos no incio do Captulo duas curvas elpticas.

x 2x,

tem razes

curva toca o eixo

Uma delas,

(ri rj )2 =

i2

2 ( 2) = 22 ( 2)2 = 8.

y 2 = x3 2x + 2,

lim

De fato, as trs razes so diferentes.


J a outra curva,

tem razes

1.76929 . . ., 0.88464

A curva toca o eixo somente em sua raiz real, mas ainda assim, no

h razes repetidas! O discriminante

y2 =

e zero, e podemos ver claramente no grco que a

nesses tres pontos. O discriminante

i<j

0.58974i.

in
ar

duas razes

(ri rj )2 =(0.88464 + 0.58974i 0.88464 0.58974i)2

i<j

Pr
e

(0.88464 + 0.58974i (1.76929))2

(0.88464 0.58974i (1.76929))2 ,


que igual a

76,

diferente de zero.

A curva a seguir

y 2 = x3 3x + 2, e tem discriminante igual a zero. As


(0, 1), onde no podemos traar uma tangente.

Ve
rs

duas razes repetidas so o ponto

Nas prximas Sees usaremos tangentes e cordas para construir grupos com

curvas elpticas  e como a singularidade nas curvas representaria um problema,


excluiremos as curvas com discriminante zero.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 16.

234

CURVAS ELPTICAS

16.1 Operao de grupo para curvas elpticas


Suponha que

uma curva elptica sobre

R.

Podemos transform-la em um

que denotaremos por

+,

in
ar

grupo comutativo se criarmos uma operao associativa para pontos da curva,


e determinarmos um elemento identidade.

O elemento identidade

ser um ponto que adicionaremos a

F 2,

determi2

nando que qualquer reta vertical o encontra no innito (nos dois sentidos!) .

Q, traaremos uma reta passando por ambos.


P Q. Esta reta interceptar um outro ponto R
da curva (ou seja, P Q = R, e denimos a operao de forma que P +Q+R = O
(e portanto P + Q = R = P Q).
Trataremos de trs casos: o clculo do simtrico P de um ponto, a soma
P + Q de dois pontos, e o dobro 2P de um ponto.
Para somar dois pontos

lim

Denotaremos esta operao por

Aps denir o clculo da soma, dobro e simtrico, podemos realizar qualquer


soma ou multiplicao com pontos.

16.1.1

Simtrico
P

a sua reexo

Pr
e

O elemento simtrico de um ponto


e portanto

Q no eixo x: P +Q+O = O,

P = Q.

Ve
rs

Se um ponto

mesmo, portanto

2 H

1
Q

P tem coordenada y
P = P .

igual a zero, sua reexo no eixo

ele

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

16.1. OPERAO DE GRUPO PARA CURVAS ELPTICAS

235

1
P

16.1.2

lim

Soma de pontos
P e Q diferentes,
P + Q R.

Para somarmos dois pontos


e a soma

primeiro determinamos

tal que

Pr
e

P + Q + R = O,

in
ar

Ve
rs

Sejam

1
R

P = (xp , yp ) e Q = (xq , yq ) diferentes.


= M x + K com inclinao M :

Calculamos a reta passando

por ambos,y

M=

yp = yq
xp xq

K = yp M x p

Vericamos onde esta reta intercepta a curva, obtendo um terceiro ponto, subs-

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 16.

236

tituindo

y 2 = (M x + K)2

CURVAS ELPTICAS

na equao da curva:

(M x + K)2 = x3 + Ax + B

in
ar

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 ).
Igualamos os coecientes de

x2

em ambos os lados:

lim

M 2 = xp + x1 + xr ,
e portanto

xr = M 2 xp xq
yr = M xr + K.

Dobrando um ponto

Pr
e

16.1.3

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


e portanto

2Q = P .

Ve
rs

Quando

P = Q

0
1

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


elptica

y 2 = f (x),

ento

M=

dy
f 0 (x)
=
.
dx
2y

notas de aula  verso 90 - Jernimo C. Pellegrini

16.2. ORDEM DO GRUPO

237

Usando a equao da curva e substituindo

Tendo

M,

obtemos

3x2p + A
.
2yp

j podemos determinar as coordenadas de

in
ar

M=

f (x) = x3 + Ax + B ,

R:

xr = M 2 2xp
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,

lim

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

Teorema 16.5. Seja

por

#E(Fq ).

Pr
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


tem ordem

2 2512

16.3 Corpos nitos usados em Criptograa

Ve
rs

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

curvas,

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

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 

16.3.1

Fp ,

com

primo, e

GF2m

(corpos de Galois de ordem

2m ).

Fp

Quando o corpo usado

Fp

(com

primo), a equao de uma curva elptica

escrita na forma

y2

(mod p) = x3 + Ax + B

(mod p),

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 16.

238

CURVAS ELPTICAS

e novamente exigimos o determinante diferente de zero:

4A3 + 27B 2

(mod p) 6= 0.

in
ar

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
tomando o cuidado de efetuar todas as computaes mdulo
pontos,

xr = M 2 xp xq

(mod p)

K = yp M xp
Para dobrar um ponto, usamos

xr = M 2 2xp

(mod p)

+A
2yp

(mod p)

Pr
e
M=

16.3.2

apenas

(mod p)

yr = yp + M (xp xq )
3x2p

R,

Para somar

lim

yr = M xr + K (mod p)
yp = yq
M=
(mod p)
xp xq

p.

(mod p).

GF2m

Retornamos primeira denio de curva elptica, com a equao

y 2 + Axy + By = Cx3 + Dx2 + Ex + F.

Ve
rs

Se a caracterstica do corpo dois a seguinte troca de variveis:

B
A
2
A
D + B2
y 0 A3 y +
A3

x 0 A2 x +

transforma a equao na forma simplicada:

com

B 6= 0,

onde

y 2 + xy = x3 + Ax2 + B,
A0

B0

so constantes pertencentes a

F.

No trataremos deste tipo de curva neste texto.

16.4 Criptossistemas e protocolos


Nesta Seo so discutidos alguns criptossistemas e protocolos onde os grupos
usados so de curvas elpticas.

notas de aula  verso 90 - Jernimo C. Pellegrini

16.4. CRIPTOSSISTEMAS E PROTOCOLOS

16.4.1

239

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

in
ar

curvas elpticas.

Uma vez denido um grupo usando curvas elpticas, dene-se naturalmente


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

sobre um corpo nito

um ponto

lim

n;

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

q;

um ponto

P E

com

o problema Die-Hellman computacional para curvas elpticas (ECCDH)

C = abP ;

Pr
e

consiste em encontrar o ponto

ordem

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

As prximas sees descrevem alguns criptossistemas e protocolos que usam


este problema como fundamento.

Die-Hellman

16.4.2

O protocolo de Die e Hellman para estabelecimento de chaves mostrado a

Ve
rs

seguir, usando curvas elpticas.

Construo 16.8 (Protocolo de Die e Hellman para estabelecimento de chaves). Dois participantes, A e B , estabelecem uma chave simtrica da seguinte

maneira:

A determina
G.

escolhe

envia

escolhe

uma curva elptica

x R Zq

sobre um corpo nito

e calcula o ponto

(E, q, G, H1 )
y R Zq

para

para

e um ponto

H1 = xG

e calcula o ponto

B envia o ponto H2
KB = yH1 .

Fq

H2 = yG.

e determina a chave secreta, que o ponto

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 16.

240

recebe

H2

CURVAS ELPTICAS

e determina a chave secreta, que o ponto

KA = xH2 .

16.4.3

Elgamal

Construo 16.9 (Criptossistema Elgamal).

in
ar

corpo nito

Fq

lim

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.

Note que a chave pblica um ponto da curva, e a chave privada um


inteiro.

Pr
e

Enc dada a chave pblica pk = hE, q, G, Hi e a mensagem M E , escolha


y R Zq e devolva
yG, yH + M.
O texto cifrado um par de pontos.

Dec: dada a chave sk = hE, q, G, xi, e o texto cifrado c = hC, C2 i, a funo


Dec retorna
C2 xC1 .

Outros criptossistemas e protocolos

16.4.4

H diversos outras construes criptogrcas que usam curvas elpticas. Alguns

Ve
rs

exemplos so o ECDSA, a verso do esquema de assinaturas DSA usando curvas


elpticas, descrita no padro FIPS 186-2. o PSEC (Provably Secure Encryption

Curve scheme), um criptossistema de chaves pblicas descrito por Fujisaki e


Okamoto; o ECMQV Elliptic Curve Menezes-Qu-Vanstone, um esquema de

acordo de chaves de Menezes, Qu e Vanstone.

16.5 Emparelhamentos bilineares


Certos grupos construdos sobre pontos de curvas elpticas podem ser usados
na construo de emparelhamentos bilineares; h diversos problemas difceis
relacionados a estes emparelhamentos que so explorados em construes 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.

notas de aula  verso 90 - Jernimo C. Pellegrini

16.6. FATORAO DE INTEIROS

241

16.6 Fatorao de Inteiros


Curvas elpticas tambm podem ser usadas para fatorar nmeros inteiros, uma

Notas

in
ar

aplicao tambm relevante para a Criptograa.

O uso de grupos de curvas elpticas em Criptograa foi proposto independentemente em 1986-1987 por Neil Koblitz [162] e Victor Miller [186].

Diversos livros discutem o uso de curvas elpticas em Criptograa [124] [262]

[32] [64]. Uma excelente introduo matemtica aritmtica de curvas elpticas


sem meno Criptograa dada por Silverman e Tate [239].

lim

O espao projetivo descrito em Portugus no livro de Gomes e Velho [118],


no Captulo dois. Em Ingls h uma abordagem mais profunda no Captulo trs
do livro de Kostrikin [164].

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 retas

se encontram, obtm-se um espao compacto chamado de esfera de Riemann.

Exerccios

Pr
e

Veja por exemplo a introduo Topologia e Anlise de Simmons [240].

Ex. 115  Prove as seguintes propriedades para a operao de grupo que


denimos para curvas elpticas sobre os reais:

P =P +O=O+P

b)

P + (P ) = O

c)

P + (Q + R) = (P + Q) + RO

d)

P +Q=Q+P

Ve
rs

a)

Ex. 116  Ao denirmos curvas elpticas sobre

Zp ,

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

o resultado tambm pertencer mesma curva elptica).

funcionam (isto , que

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 16.

CURVAS ELPTICAS

Ve
rs

Pr
e

lim

in
ar

242

Captulo 17

17.1 Fatorao

lim

Primalidade e Fatorao

in
ar

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

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 17.

244

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

17.1. FATORAO

245

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

CAPTULO 17.

246

PRIMALIDADE E FATORAO

Denio 17.1 (Primo forte). Um nmero primo p um primo forte se (p1)/2

tambm primo.

usamos

B = 280.

n = 71729254613.

a = xB
Temos
de

n.

Sorteamos

Ento

x = 53998655672

in
ar

Exemplo 17.2. Suponha

(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

Teorema 17.4. A complexidade de tempo do algoritmo

J
p1

de Pollard

O(B log(B) log2 n + log3 n).

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

247

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

CAPTULO 17.

248

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

Pr
e

algoritmo de Dixon e o crivo quadrtico (que uma modicao do algoritmo

so tais que

x 6 y (mod n)

x2 y 2

ento

mdc (n, x y)

(mod n),

so fatores de

x2 y 2 0 (mod n),

Demonstrao. Como

mdc (n, x + y)

temos

n.

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

17.1. FATORAO
Cada

g(ri )

249

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

Zn )

vi

forem pares, ento

g(ri ) quadrado perfeito (em Z,

, e

alm de em

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

CAPTULO 17.

250

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

Para este exemplo, ento,

(3, 1, 2)

(1, 2, 0)

(0, 3, 2)

(4, 6, 4)

600 18 675 24 36 54

Pr
e

De maneira geral, teremos agora

usar os ndices

0, 1, 2.

Em

lim

v0 + v1 + v2

in
ar

junto dos

(mod n).

g(r1 )gr (2) g(rk ) r12 r22 rk2

(mod n),

e os dois lados da congruncia so quadrados perfeitos.


O mtodo que descrevemos at agora conhecido como algoritmo dos quadrados aleatreos. Descrevemos agora o crivo quadrtico.

F Curvas elpticas

17.1.6

F Crivo sobre corpo numrico algbrico

17.1.5

Ve
rs

Notas

O algoritmo

p1

de Pollard foi publicado em 1974 [208].

O algoritmo

de

Pollard surgiu em 1975 [207].


O livro de Victor Shoup [237] contm uma grande quantidade de algoritmos

para problemas em Teoria de Nmeros e lgebra; os livros de Hostein, Pipher


e Silverman [135] e o de Baldoni e outros [19] tambm abordam o assunto, e
Cohen [62] trata extensivamente de fatorao.
O livro de Crandall e Pomerance trata extensivamente de algoritmos relaci-

onados a primalidade e fatorao [74]. O livro de Bressoud [41] mais acessvel


para uma primeira leitura. A monograa de Vasilenko, mais condensada, contm tambm alguns algoritmos para aritmtica de preciso arbitrria [257].
O Algoritmo AKS para teste de primalidade foi desenvolvido por Agrawal,

Kayal e Saxena [1] e sua descrio aparece em diversos livros [237, 235].
[63] [42] [215]

notas de aula  verso 90 - Jernimo C. Pellegrini

17.1. FATORAO

251

Exerccios
Ex. 117  Implemente os mtodos

p1

de Pollard para fatorao de

Ve
rs

Pr
e

lim

in
ar

inteiros.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 17.

PRIMALIDADE E FATORAO

Ve
rs

Pr
e

lim

in
ar

252

Captulo 18

lim

Criptograa Baseada em
Identidades

in
ar

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


253

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 18.

254

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

18.2. ENCRIPTAO

255

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

ao adversrio obter uma srie de chaves privadas 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;

observe que apenas

Ve
rs

Decid (c):

o orculo devolve a chave privada

id

seu uso normal  o orculo usa

sk

relacionada a

id,

decripta

passada a

Extract

Dec,

sk

relacionada

e no

sk ,

como em

para obter a chave privada

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


m1 , do mesmo tamanho, e uma identidade id, cuja chave privada

3. Quando

m0

no tenha sido extrada na fase anterior.

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

256

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

18.3. ASSINATURAS

257

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

sk e uma mensagem m, Sign retorna

m.

uma assinatura de

Vrfid (, m):

in
ar

gerao de chaves mais dois algoritmos:

P , da identidade id do asm, Vrf determina se a assinatura

a partir dos parmetros pblicos

sinante, da assinatura

e da mensagem

vlida.

A traduo da denio de segurana CMA


em identidade bastante direta.

lim

para criptossistemas baseados

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 orculo computa o valor do hash pedido por


o devolve;

Extract(id):
ticao id;
Signid (m):

o orculo retorna a chave secreta

e devolve a

devolve

relacionada iden-

id passado na consulta, e no sk  o
sk relacionada a id, assina a mensagem

A.

3.

(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

observe que apenas

orculo obtm a chave secreta

sk

informalmente na pgina 164 e formalmente na pgina 167.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 18.

258

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

Calcule

c1 =t + (id)t1

Retorne

seja

(
c1
c=
c2

mod n.

c+2(sk)
n

O usurio de

Enc

no sabe se

ambos os casos, calculardo

se

c1

sk

tal que

sk = id

sk = id.

Pr
e

Retorne

se

t R Zn

mod n

(c1 , c2 ).

Decsk (c1 , c2 ):

Escolha

lim

c2 =t (id)t

in
ar

Uma maneira de obter

259

id

ou

id,

por isso encripta para

c2 .

A corretude do procedimento de decriptao pode ser vericada diretamente:


supondo que

(sk)2 = id,

c + 2sk
n


t + (id)t1 + 2(sk)
n


t + (sk)2 t1 + 2(sk)
=
n

  2
2 1
t + (sk) t + 2(sk)
t
=
n
n
 2
 
t + (sk)2 + 2(sk)t
t
=
n
n

 
(t + sk)2
t
=
n
n
 
t
=
.
n


Ve
rs

temos

O caso em que

sk =

id

tambm segue diretamente.

O criptossistema de Cocks depende da diculdade da fatorao de inteiros e

do problema do resduo quadrtico.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 18.

260

CRIPTOGRAFIA BASEADA EM IDENTIDADES

Teorema 18.12. O criptossistema de Cocks (Construo 18.11) tem segurana


IND-ID-CPA, no modelo do orculo aletreo e presumidas as hipteses da diculdade de fatorao de inteiros e do resduo quadrtico.

CPA, e que portanto existe algum adversrio

in
ar

Demonstrao. Presumiremos que o criptossistema no tem segurana IND-IDpolinomial 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
+1 ou 1, com probabilidade no desprezvel.
n
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:

Extract(id):

sk

(sk)2

aleatoriamente. Depois, determine


com probabilidade 1/2,

Pr
e

selecione

h(id) =

Decid (c):

(sk) ,

com

h(id)
n

se no houve consultas

decriptao de
2. Quando receber o

id

usando

= +1

Extract

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

Ve
rs

aleatoriamente em
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 90 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES

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.

in
ar

ii)

261

Demonstramos apenas (i); os itens (ii) e (iii) so pedidos no Exerccio 119.

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

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

       
t3
t1
t2
t
=
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

Calcule

A assinatura

(s, t).

id

sk

tal que

aleatoriamente.

t =re

(mod n)

s =(sk)rf (t,m)

(mod n).

grande

(sk)e = id mod n.

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

262

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

Teorema 18.14. O esquema de assinaturas da Construo 18.13 tem segurana

Notas

Pr
e

contra ataques de mensagem escolhida.

O primeiro trabalho em Criptograa baseada em identidades foi publicado em


1984 por Adi Shamir [228]; 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 [61]. 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 [38].
As denies de segurana IND-ID-CPA e IND-ID-CCA foram descritas pela

primeira vez por Boneh e Franklin [38] (e Cocks mostra um rascunho de demonstrao, em seu artigo de 2001, de que sua construo tem segurana IND-ICCPA).

Os surveys de Xavier Boyen [39] e de Gorantla, Gangishetti e Saxena [120]

do uma viso geral da Criptograa baseada em identidades. O livro de Luther


Martin [180] 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 90 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES

263

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

b) E se

enviasse

c1 R Zp ,

enviasse

oposto de

o efeito seria o mesmo.

c1 = t at1 (mod n),

onde

t0

tem o smbolo de Jacobi

b?

lim

a) Se

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

CAPTULO 18.

CRIPTOGRAFIA BASEADA EM IDENTIDADES

Ve
rs

Pr
e

lim

in
ar

264

in
ar

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

g1 G1 , g2 G2

tais que

(g1 , g2 ) 6= 1

(onde

a, b Z, e(g1a , g2b ) = e(g1 , g2 )ab ;

bilinear: para todo

iii)

computvel por algum algoritmo polinomial.

G1 = G2 ,

grupos cclicos.

G3 );

ii)

Quando

G3

um emparelhamento bilinear se satisfaz as

no degenerada: existem

o elemento neutro de

Pr
e

A funo

seguintes condies:

G1 , G2

dizemos que o emparelhamento simtrico.

Ve
rs

A condio de bilinearidade pode ser reescrita de outra forma:

h1 , g1 G1 , h2 , g2 G2 ,
e(h1 g1 , g2 ) =e(h, g2 )e(g1 , g2 )
e(g1 , h1 g2 ) =e(g1 , h2 )e(g1 , g2 ).

Os dois Teoremas a seguir seguem da 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 .

Teorema 19.3. Seja

e : G1 G1 G2 um emparelhamento bilinear simtrico.


Ento o problema Die-Hellman decisional fcil em G1 .
265

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 19.

266

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 ,

Pr
e

(ou seja, o orculo resolve a verso decisional do problema).

se

x = e : (g, g)abc


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

Ve
rs

Setup(q n ):

a chave mestra

s R Zq .

O parmetro pblico

Escolha tambm duas funes de hashing:

H1 : { 0, 1 } G1
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 90 - Jernimo C. Pellegrini

19.3. ASSINATURAS BASEADAS EM IDENTIDADES

Decsk (c):

Dado

c = (a, b),

267

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,

A, B

tem chaves secretas

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

KA = KB = KC = e(P, P )abc .

a, b,

Teorema 19.11. Presumindo a diculdade do problema BDH, o protocolo de


acordo de chaves de Joux seguro contra adversrios passivos.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 19.

268

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 [151], mostrando a primeira aplicao positiva de empare-

Exerccios

lim

lhamentos 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 90 - 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

Ve
rs

todos os sistemas baseados na hiptese da fatorao de inteiros; Protocolo de


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:

Criptograa baseada em hashing

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

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 20.

270

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 diferente daquelas realizadas por um computador comum  e em muitos casos mais

lim

ecientes.

Os nveis de energia em um tomo podem assumir diferentes valores discre-

tos apenas, sem nveis intermedirios  cada eltron pode ocupar rbitas bem
denidas. D-se a estas rbitas o nome de nveis de energia. o nvel de energia
mais baixo chamado de estado fundamental, e os outros so estados excitados.
Enquanto seu nvel de energia no for vericado, um eltron pode estar em am-

bos estados. Quando uma vericao for realizada, o eltron passar para um

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

Assim como h dois

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


superposio de estados no 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

um qubit medido ele colapsa para cada um dos estados, e a amplitude de cada

um dos estados determina a probabilidade de que seja ele o estado no qual o


qubit colapsar.

notas de aula  verso 90 - Jernimo C. Pellegrini

20.2. COMPUTAO QUNTICA

271

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.

|1i

sen cos |0i + sen |1i


cos

|0i

Ve
rs

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 coecientes so complexos ou para muitas dimenses, mas facilita a compreenso de
certas operaes em qubits, como rotao.
Um registrador quntico tem vrios qubits, e seu estado a superposio de

2n possveis estados.
|00i, |01i, |10i, |11i.

Para um sistema de dois qubits h quatro estados bsicos:


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

X
i,j

|ij |2 = 1.

(20.1)

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 20.

272

20.2.1

CRIPTOGRAFIA PS-QUNTICA

Operaes qunticas

Computadores qunticos modicam qubits (sem medi-los) usando operaes

qunticas. A Mecnica Quntica descreve a evoluo do estado de um sistema

in
ar

pela Equao de Schredinger, e operadores lineares que satisfazem a equao


de Schredinger so necessariamente operadores unitrios.

Na Denio a seguir
de

a matriz conjugada transposta de

A ( A

obtida

substituindo seus elementos pelos respectivos conjugados e aplicando-se

em seguida a transposio).

Denio 20.1 (Operador Unitrio). Um operador linear

AA = I

A unitrio quando


Denio 20.2 (Operao quntica). Uma operao quntica em um registra-

lim

dor 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


representa o estado, e isto garantido pelo fato das operaes qunticas serem

Pr
e

descritas por operadores unitrios.

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.

Lema 20.3. Sejam

to a operao composta

B duas matrizes descrevendo operaes qunticas.


A B tambm uma operao quntica.

En-

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.

Ve
rs

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.

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

cos
sen


sen
.
cos

notas de aula  verso 90 - Jernimo C. Pellegrini

20.3. SUBGRUPO OCULTO

Operao de Hadamard

273

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

0 |0i + 1 |1i

operao leva de

in
ar

(0 + 1 ) |0i + (0 1 ) |1i .

para

Esta operao descrita por uma matriz de Hadamard.

Denio 20.4 (Matriz de Hadamard). Uma matriz de Hadamard uma matriz quadrada (nn) com entradas iguais a

que satisfaz

HH T = nI .

Possivelmente a maneira mais simples de construir matrizes de Hadamard


pelo mtodo recursivo de Sylvester:

H2
H2n


= 1


1 1
=
1 1


H2k1 H2k1
=
H2k1 H2k1

lim

H1

1
A matriz

Pr
e

H usada em qubits (a multiplicao por 12 normaliza os


2 2
valores, para que a soma dos quadrados seja um):

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

20.3 Subgrupo oculto

Transformada quntica de Fourier

Ve
rs

20.4.1

20.4 Fatorao de inteiros


A transformada quntica de Fourier anloga transformada discreta de Fourier
(descrita no Apndice D).

A transformada discreta de Fourier mapeia um vetor

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

..
.
.
.

.
an
(n1)(n1)
n1
2(n1)

C.
O(n2 ).

Ingenuamente podemos
A transformada rpida

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 20.

274

CRIPTOGRAFIA PS-QUNTICA

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

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
o algoritmo de fato executa em tempo menor que
codicada em

log n

Nesta discusso,

n,

in
ar

Fourier.

O(log2 n),

mas

porque a entrada ser

qubits usando superposio de estados.

|ii

ser interpretado como o vetor coluna onde o

elemento um e os outros zero:

lim


0
0

|2i =
1
0
Usamos ento uma superposio de estados
para o algoritmo.

|i =

Pn1
j=0

j |ji

i-simo

como entrada

A transformada quntica de Fourier um algoritmo quntico que tem como


entrada

bits, codicados como superposio de estados em

log(n)

qubits.

A sada do algoritmo tambm uma superposio de estados  mas isso

Pr
e

signica que ao medir a sada no poderemos obter os


Obtemos, no entanto, uma sequncia de

2n

bits!

bits da sada, sorteados de

acordo com as probabilidades descritas pelas amplitudes do estado de superposio.

Denio 20.5 (Vetor peridico). Um vetor

vi = vj

se e somente se

i j (mod k)

com

para algum

o perodo do vetor.

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.

Quando somente um elemento

diferente de zero dizemos que

vj

dessa sequncia

peridico com deslocamento

j.

Se um vetor peridico podemos usar a QFT para calcular o perodo do

Ve
rs

vetor.

Notas

O livro de Papadimitriou e Vazirani [80] (traduzido para o Portugus [203])


traz um Captulo com noes de Computao Quntica. Uma descrio mais
detalhada pode ser obtida nos livros de Hirvensalo [134] e de Marinescu e Marinescu [179]. Uma exposio com nfase em Complexidade Computacional
dada no livro de Arora e Barak [10]. Uma discusso mais completa da Computao Quntica dada por Nielsen e Chuang [195].
Uma exposio de construes criptogrcas resistentes a ataques qunticos

dada no livro organizado por Bernstein, Buchmann e Dahmen [27].


Dentre os muitos textos sobre de Mecnica Quntica destacamos os de

Cohen [65], o de Shankar [230] e o de Griths [122, 123].

Uma introduo

notas de aula  verso 90 - Jernimo C. Pellegrini

20.4. FATORAO DE INTEIROS

275

Matemtica necessria para o estudo da Mecnica Quntica dada no livro


de Byron e Fuller [48],
H um livro interessante de K. J. Horadam sobre matrizes de Hadamard e

in
ar

suas aplicaes [139].

Exerccios

Ex. 128  Prove que a construo de Sylvester sempre resultar em uma


matriz de Hadamard.

Ve
rs

Pr
e

lim

Ex. 129  Prove que a transformada de Fourier uma operao unitria.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 20.

CRIPTOGRAFIA PS-QUNTICA

Ve
rs

Pr
e

lim

in
ar

276

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

Captulo 21

lim

Reticulados
(Este Captulo um esboo)

Neste Captulo exploramos construes criptogrcas relacionadas a reticulados.

Variantes

Pr
e

21.0.1

Para cada um dos problemas SBP, CVP, SVP, h duas variantes: o problema
aproximado e o problema do intervalo.

21.0.2

SIS

Dada uma matriz

,
A Zmn
q

o problema da soluo inteira pequena (SIS,

small integer solution) consiste em determinar uma soluo no-nula

Ax = 0.

LWE

Ve
rs

21.0.3

para

x Zm
q

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

277

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 21.

278

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.

RETICULADOS

b = b0

O adversrio obtm sucesso no experimento LWE quando consegue distinguir

As + e

de

v R Zm
q .

Denio 21.2 (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.0.4

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.3 (Razo de Hadamard). Seja

B = {b1 , . . . , bn }

uma base.

razo de Hadamard 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.

Seria interessante termos um valor a minimizar.

Denimos

ento o desvio de ortogonalidade como o recproco da razo de Hadamard, mas

sem o clculo da raiz (no precisamos elevar o valor a

1/n,

porque no nos far

diferena).

Denio 21.4 (Desvio de Ortogonalidade). O desvio de ortogonalidade de


uma base

Q
(B) =

||bi ||
.
| det B|
i

notas de aula  verso 90 - Jernimo C. Pellegrini

21.1. GGH

21.0.5

279

LLL

Um algoritmo para reduo de base o LLL, de Lenstra, Lenstra e Lovsz. Este

21.0.6

CVP: algoritmo de Babai

in
ar

uma variante do algoritmo de orotgonalizao de Gram-Schmidt.

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

como

tb:

lim

combinao linear dos vetores da base e arredondar os coecientes. Escrevemos

w = t1 b1 + t2 b2 + . . . + tn bn .
Depois, determinamos o vetor

com os coecientes aredondados:

ai = bti e,

Pr
e

e nalmente retornamos o vetor

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

Ve
rs

21.1 GGH

Goldreich, Goldwasser o Halewi desenvolveram um elegante criptossistema baseado em problemas em reticulados, que descrito a seguir. O GGH se fundamenta no CVP e no SBP: aps 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.6 (Criptossistema GGH).

Gen(1n ) gera
sk = B , com
pk = R, com

duas bases para o mesmo reticulado.

desvio de ortogonalidade muito pequeno;

desvio de ortogonalidade muito grande.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 21.

280

Encpk (m):

a mensagem

(para isso a base


prximo de

RETICULADOS

interpretada como um ponto do reticulado

usada). O que

Enc
m

 isso feito somando a

faz retornar um outro ponto,


um vetor aleatreo com valores

in
ar

pequenos.

e = (e1 , , en ), ei R {, +}
Encpk (m) = m + e,
onde

um vetor de tamanho

cujos valores

ei

so menores do que

metade da distncia entre os pontos do reticulado (que presumimos ser

2 ).

lim

Decsk (c): usando a base B com desvio de ortogonalidade pequeno


obter m usando o algoritmo de Babai, que essencialmente computa

fcil

m = BbB 1 ce,
onde

c = m + e,

porque

foi calculado por

Enc.

n,

Pr
e

Claramente a segurana do GGH est relacionada dimenso do reticulado:


quanto maior

mais difcil resolver o CVP e o SBP.

Um adversrio que pretenda decifrar um texto encriptado precisar resolver diretamente o CVP ou tentar primeiro transformar a base pblica na base
privada (ou seja, resolver o SBP).

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

21.2. NTRU

281

Enc

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

tal que

c = mR + e.

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

o vetor

(, . . . , ).

c + s mR

lim

A observao que fundamenta o ataque de Nguyen a Proposio a seguir:

Ento

(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
erro agora

e temos uma nova instncia do CVP, desta vez em

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.2 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.8 (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 90 - Jernimo C. Pellegrini

CAPTULO 21.

282

e tanto

f e1

como

contm exatamente

df + 1

RETICULADOS

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)

O texto

in
ar

Enc(m) a mensagem codicada como um vetor m {1, 0, 1}n .

(mod q))

(mod p).

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

e cada bit de texto claro ex-

bits encriptados. Nguyen demonstrou que qualquer verso


No entraremos nos detalhes deste

Pr
e

eciente do criptossistema seria insegura.


criptossistema.

O(n4 )

21.4 LWE
Notas

O livro de Daniele Micciancio e Sha Goldwasser [185] aborda exclusivamente

problemas difceis em reticulados.


O algoritmo LLL foi descrito por Lenstra, Lenstra e Lovsz em 1982 [167].

Ve
rs

Uma descrio acessvel dada no livro de Hostein, Pipher e Silverman [135].


O LLL descrito tambm por Cohen [62], e h um livro de Nguyen e Vale [194]
dedicado ao LLL e aplicaes.
O Criptossistema GGH foi apresentado em 1997 por Goldreich, Goldwasser

e Halewi [109].

Hostein, Pipher e Silverman descreveram o NTRU [136] em

1998. Cynthia Dwork e Mikls Ajtai apresentaram seu criptossistema tambm


em 1998 [3]. O ataque de Nguyen ao criptossistema Ajtai-Dwork foi relatado
em..... [nguyen-ajtai].
O criptossistema LWE mais recente  foi descrito por Regev em 2005 [214].

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

21.4. LWE

283

Ex. 131  (Fcil) Prove a Proposio 21.7.

Ve
rs

Pr
e

lim

in
ar

Ex. 132  Se voc leu o Captulo22, faa o Exerccio 140.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 21.

RETICULADOS

Ve
rs

Pr
e

lim

in
ar

284

in
ar

notas de aula  verso 90 - 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
do excelentes introdues.

Pr
e

no livro de Hefez e Villela [128]. Em Ingls, Hill [133], Roman [219] e Moon [188]

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
venda

7 00
7 01

aguarde
7 10
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

285

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 22.

286

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 ,
a = 0344141

Exemplo 22.3. Em

b = 4342100

Ve
rs

Ento

poruqe

d(a, b) = 4,

diferem em exatamente quatro posies.

Teorema 22.4. A distncia de Hamming uma mtrica, ou seja, para quaisquer trs vetores

u, v, w,

d(u, v) 0;
d(u, v) = d(v, u)

(simetria);

d(u, v) d(u, w) + d(w, v)

(desigualdade de tringulo).

Como modelaremos erros como vetores que so somados a mensagens, de-

nimos o peso de um vetor como a quantidade de erros que sero introduzidos


na mensagem.

notas de aula  verso 90 - Jernimo C. Pellegrini

22.1. CORREO DE ERROS

287

Denio 22.5 (Peso de um Vetor). O peso de um vetor

Exemplo 22.6. Em

a quantidade de

v.

Z52 ,


o vetor de bits

(1, 0, 0, 1, 1)

tem peso tres.

in
ar

entradas no nulas em

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.

O disco com

D(a, t) = {v An : d(v, a) t}.


Exemplo 22.8. Em

Z42 ,

seja

a = 1001.

Ento os vetores que diferem de

E portanto

|D(a, 2)| = 11.

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,

Ve
rs

Exemplo 22.9. Em

013,
111,
200,
212,
224,
241,
312,
410,
441,

Que exclui as 64 palavras com distancia tres, como


portanto

em

1010,

1100,

0000,
1111,

0011,

Pr
e

1001,

1000,

1011,
D(a, 2) =
1101,

0001,

0101

lim

no mximo dois bits so

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

ximo

b(d 1)/2c

erros.

d,

um cdigo


C

pode corrigir no m-

notas de aula  verso 90 - Jernimo C. Pellegrini

288

Demonstrao. seja

e.

Se

CAPTULO 22.

CDIGOS CORRETORES DE ERROS

e = b(d 1)/2c.

Seja

D(x, e)

o disco com centro

e raio

so palavras-cdigo diferentes,

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

n-permutao

uma

q -permutao.

um

Ento,

Dois cdigos

C.
C

C0

d,

dizemos

(n, M, d)-cdigo,

a cada palavra de

so equivalentes 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

Uma permutao simblica consiste em aplicar


beto de

erros.

e distncia mnima

Uma permutao posicional consiste em aplicar

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

22.1. CORREO DE ERROS

289

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

0
0
1

1
0
0

0
0
1

1
1
0

1
0 .
1

Como os vetores da base so linhas da matriz, podemos gerar o cdigo multi-

G:

lim

plicando esquerda de

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


Teorema 22.17. Se

matriz geradora de

C,

G0

obtida de

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

C0,

equivalente a

por

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

CAPTULO 22.

290

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

um cdigo linear com matriz

A matriz teste de paridade de

H = [A ; 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.

cC

se e somente se

HcT = 0.

Exemplo 22.23. Para a palavra que codicamos,

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

22.1. CORREO DE ERROS

291

Exemplo 22.24. Se inserirmos um erro na palavra, podermos ter por exemplo

0
H(c0 )T = 1
0

c0

A sndrome de

(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

Teorema 22.25. Se aps o envio de uma mensagem

m+e

recebida, ento

m uma mensagem y =
C , e esta classe lateral

pertence a uma classe lateral de

Demonstrao.
Mas

Pr
e

a de possveis vetores de erro que o cdigo pode corrigir.

Vn .

Se

c C,

Decodicar uma mensagem

y+C

ento

c C

y recebida depende de encontrar na classe lateral

o vetor de menor peso.

1. encontre

z,

m=yz

o lder da classe lateral

2.

c C tal que e = y c.
e = y + c, e e y + C . 

vetor de erro se e somente se existe

subespao de

Teorema 22.26. Seja

y1

y2

de

C um cdigo
C pertencem

Ve
rs

Duas palavras

y+C

linear com matriz teste de paridade

H.

a uma mesma classe lateral se e somente

se

Hy1T = HysT .

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

CAPTULO 22.

292

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

000001 (0, 0, 1)
000010 (0, 1, 0)
000100 (1, 0, 0)
001000 (0, 1, 1)
010000 (1, 0, 1)
100000 (0, 1, 0)

in
ar

todos os possveis vetores com um erro em suas sndromes:

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

lim

101001 com erro:

mensagem

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.

22.2 Criptograa com cdigos corretores de erros

Ve
rs

Esta Seo descreve o criptossistema de McEleice., que baseado na diculdade


de decodicar cdigos lineares (que

N P -difcil

[25]).

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.

uma matriz

nn

aleatrea de permutao.

notas de aula  verso 90 - Jernimo C. Pellegrini

22.2. CRIPTOGRAFIA COM CDIGOS CORRETORES DE ERROS


Finalmente, gere a matriz chave

293

= SGP .
G

t)
pk = (G,
sk = (S, G, P )
onde

um vetor de erros com peso no mximo

Decsk (c):
1. Calcule

c = cP 1 .

Como

P 1 de
c).

permutao, ento

cdigo de canal (assim como

t.

in
ar

+ z,
Encpk (m) = mG

palavra do

2. Use o algoritmo de decodicao do cdigo para obter uma palavra

c.
m = mS
1 .

a partir de

3. Retorne

lim

A corretude do criptossistema de McEliece no imediatamente bvia, por


isso a demonstramos a seguir.

Teorema 22.29. Para qualquer par de chaves

pk, sk

liece,

no criptossistema de McE-

Decsk (Encpk (m)) = m.


Demonstrao. Primeiro observamos que

cP 1
+ z)P 1
(mG

(mSGP + z)P 1

(mS)GP P 1 + zP 1

(mS)G + zP 1 .

Pr
e

c =

A partir disso, temos os seguintes fatos:

uma palavra do cdigo da fonte, e

Como

mS

uma permutao e

ter no mximo

Ve
rs

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:

Teorema 22.30. O criptossistema de McEliece, como descrito na Construo 22.28, no tem segurana CPA.
No entanto, possvel tornar o criptossistema CPA-seguro concatenando um

vetor aleatrio com a mensagem a ser cifrada.


Embora o criptossistema de McEliece possa ser usado com qualquer cdigo

linear, aparentemente s cdigos de Goppa o tornam seguro.

Houve diversas

tentativas de uso de outros cdigos, mas todos so suscetveis a ataques.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 22.

294

CDIGOS CORRETORES DE ERROS

Notas
O primeiro criptossistema baseado em cdigos corretores de erros foi o de Robert
McEliece, publicado em 1978 [176, 184]  e foi tambm o primeiro criptossis-

in
ar

tema randomizado. Nojima, Imai, Kobara e Morozov demonstraram em 2008

que o ciptossistema de McEliece tem segurana IND-CPA se a mensagem for


cocnatenada com um vetor de bits aleatrios [200].

Exerccios

Ex. 133  Usando o cdigo dado no exemplo 22.18, decodique as mensaa)

010111

b)

111111

c)

111110

d)

100000

e)

010100

lim

gens:

Pr
e

Ex. 134  Prove o Teorema 22.4.

Ex. 135  Prove o Teorema 22.17.


Ex. 136  Prove o Teorema 22.22.
Ex. 137  Prove o Teorema 22.30.

Ex. 138  Veja a matriz a seguir, com entradas em

Z2 , usada para transmitir

Ve
rs

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

processo tem semelhana com o one-time pad.

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


295

1/2

ou

B, A

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 23.

296

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 one-time pad!

o mesmo vale para

B,

pode representar zero ou um com probabilidade

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

23.1. UM NICO SEGREDO (NAOR E SHAMIR)


ii)

297

Se o pixel zero (branco) , escolha aleatoreamente uma sequncia de imagens (no ltimo exemplo cada uma com 4 pixels) que, quando sobrepostas,
que parcialmente encoberta.

C0

C0

sempre tenham peso de Hamming baixo e as de

C1 , de forma que
C1 tenham peso

in
ar

Podemos ento construir dois conjuntos de matrizes,


linhas de
alto.


 
 
 
 
 

1100
1010
0101
0011
1001
0110
,
,
,
,
,
,
1100
1010
0101
0011
1001
0110

 
 
 
 
 

1100
1010
0101
0011
1001
0110
C1 =
,
,
,
,
,
.
0011
0101
1010
1100
0110
1001

C0 =

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

Pr
e

seja possvel identicar a mensagem, no deve haver pixels com

d m.

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

Ve
rs

medida de Hamming

iii)

S em C0 , o
d m.

medida de Hamming

Seja

S em C1 ,
> d.

ou lgico de quaisquer

linhas deve ter

o ou lgico de quaisquer

linhas deve ter

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

CAPTULO 23.

298

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.

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

Pr
e

lim

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

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


Ve
rs

de segredos.

23.2 Dois segredos


23.3 Mltiplos segredos
Notas

Naor e Shamir apresentaram seu artigo sobre Criptograa Visual na EUROCRYPT de 1994 [191]. 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 [16, 15, 14].
Yvo Desmedt, Shuang Hou e Jean-Jacques Quisquater desenvolveram tcni-

cas para criptograa ptica e de udio [86], e novas tcnicas foram propostas

notas de aula  verso 90 - Jernimo C. Pellegrini

23.3. MLTIPLOS SEGREDOS

299

por Chen-chi Lin, Chi-sung Laih e Ching-nung Yang [171]. Estruturas gerais
de acesso para criptograa de udio foram propostas por Daniel Socek e Spyros
Magliveras [248].

in
ar

Wu e Chen propuseram em 1998 seu esquema que permitia compartilhar


mais de um segredo [263]. Wu e Chang descreveram seu mtodo em 2005 [264].

O livro organizado por Stelvio Cimato e Ching-Nung Yang trata extensivamente de criptograa visual[59].

Exerccios

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

lim

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.

Ex. 143  Qual o limite de nmero de

uma mensagem, e gravar

para o programa que o Exerc-

Ve
rs

Pr
e

cio 142 pede?

k , n,

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 23.

CRIPTOGRAFIA VISUAL

Ve
rs

Pr
e

lim

in
ar

300

in
ar

notas de aula  verso 90 - 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 coero 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.
Neste Captulo usaremos a notao

da mensagem

Encpk (m, r) para denotar a encriptao


pk , e usando r como um parmetro

usando a chave pblica

extra de aleatoriedade.

Demos o nome de criptossistemas s construes do Captulo 9. As cons-

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)


0
puder convencer um adversrio de que a mensagem clara
301

e no

m.

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 24.

302

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 pelo destinatrio quando o destinatrio (que decifra a mensagem)


0
pode escolher decifrar

ao invs de

in
ar

m;

negvel por remetente e destinatrio.

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

24.1. ESQUEMA DE HOWLADER-BASU

Sendpk (m, rS )
m.

para

COM(m, rS , rR )

S,

rS ,

envia de

rR ,

obtm de

gera uma sequncia de bits

para enviar uma mensagem

sk .

usando os bits aleatreos

Fake(pk, t, rS , m0 )
Denotamos por

usando os bits aleatreos

Receivesk (rR )
m.

envia

pk

gera um par de chaves

rS

uma mensagem

que poderia ser usada

m0 .

a transcrio da comunicao usada quando

e os bits aleatreos de

so

rS , rR .

Corretude: Se

probabilidade de

enviou uma mensagem

receber

m0 6= m

usando o protocolo, a

desprezvel em

COM(m1 ) COM(m2 ).

lim

O protocolo deve satisfazer os seguintes requisitos.

a mensagem

in
ar

Gen(1n )

303

n.

Segurana:

0
0
Negabilidade: Suponha que rS , rS , rS , rR so escolhidos com probabilidade

S enviou uma mensagem usando Sendpk (m1 , rS ). Seja t =


0
COM(m1 , rS , rR ) e t0 = COM(m2 , rS0 , rR
). Ento Fake produz bits aleatreos
rS tais que
(m2 , rs0 , t) (m2 , rS , m2 , t0 ).


Pr
e

uniforme e

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

escolha dois primos

p, q

com

tambm aleatoreamente

r 6= 0

com

pk = N

bits, para algum

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 .

N = pq . As
sk = (p, q). Gere
k sucientemente

bits cada, e seja

chaves pblica e privada do destinatrio so

A:

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 24.

304

 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

ri ,

Basta

em todas as posies menos uma para mudar o bit

encriptado. O remetente pode ento escolher uma linha que representava


um (ou seja, que tinha resduos quadrticos) O algoritmo

r0 ,

com um dos bits

modicado para

Fake

retorna

0.


ento este

Teorema 24.3. Presumida a conjectura da residuosidade quadrtica, a Cons-

Ve
rs

truo 24.2 um criptossistema negvel pelo remetente como descrito na Denio 24.1.

Demonstrao. O remetente pode declarar que a posio modicada em


0
obter

para

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

24.1. ESQUEMA DE HOWLADER-BASU

305

Teorema 24.4. A probabilidade de um bit ser codicado erroneamente no esquema de um bit de Howlader-Basu desprezvel no nmero de colunas da
matriz

A.

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

CAPTULO 24.

306

(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


A contm resduos quadrticos.

era zero (e no um): basta entregar

ento declarando que as trs primeiras linhas de

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 = pq .
sk = (p, q).

bits cada, e seja

Pr
e

escolha dois primos

chaves pblica e privada do destinatrio so

pk = N

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

24.1. ESQUEMA DE HOWLADER-BASU

307


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

r00 =r0 md

Ve
rs

=(1, 1, 0, 1) (1, 0, 1, 0)
=(1, 0, 0, 0).

Dizemos a Eve que enviamos

m2

usando

r00 ,

e nossa armao ser plausvel

porque

r00 c = (1, 0, 0, 0) (1, 0, 1, 1) = (0, 0, 1, 1) = m2 .

Na Construo 24.6,

Send e Receive funcionam de maneira clara:

so apenas

uma variante do one-time pad, com o pad sendo transmitido como uma matriz
de nmeros mdulo

N.

J a corretude do algoritmo

Fake

no imediatamente

clara, e portanto provamos o seguinte Teorema.

Teorema 24.8. A sada de

r00 c,

Fake

00
como na Construo 24.6, r tal que m2
r0 corretamente a partir de A.

desde que o remetente consiga obter

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 24.

308

ENCRIPTAO NEGVEL

r0 usada como pad para encriptar m em c.


r = m c (mod 2). Mas como c = m (r md ), temos

Demonstrao. A cadeia
0

signica que

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

com

(k/n) = +1

Pr
e

Demonstrao. Metade dos smbolos


drtico, e a outra metade no.

A.

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, fundamentase no conceito de encriptao amostrvel. 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

para um

nico bit amostrvel se:


i)

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

24.3. NEGABILIDADE POR DESTINATRIO E NEGABILIDADE COMPLETA309


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

CAPTULO 24.

310

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 tambm usada como ferramenta para tornar protocolos mais seguros. Por exemplo,
quando um protocolo de votao usado pode acontecer de um participante
tentar coagir outro a revelar seu voto. O participante que tenta coagir o outro

pode tentar 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 [51].
Um criptossistema negvel pelo remetente foi descrito em 2009 por Howlader

e Basu [140].

Outros esquemas de encriptao negvel foram publicados por

Maged Ibrahim [142, 143] e por Klonowski, Kubiak e Kutylowsk [160].


Drmuth e Freeman publicaram em 2011 o primeiro criptossistema supos-

tamente negvel pelo remetente com probabilidade desprezvel de deteco [90]


 infelizmente Peikert e Waters mostraram que havia um erro na construo, e
o criptossistema no seguro [89].

notas de aula  verso 90 - Jernimo C. Pellegrini

24.4. APLICAES

311

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

CAPTULO 24.

ENCRIPTAO NEGVEL

Ve
rs

Pr
e

lim

in
ar

312

in
ar

notas de aula  verso 90 - 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.
313

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 25.

314

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

lim

fase de apurao, sem decript-los;

Encriptao negvel pode ser usada para conseguir no-coercibilidade;

Assinaturas cegas so usadas para obter de uma autoridade uma cdula


(ou um token), que permite ao eleitor votar sem se 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 mix nets.
H

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

25.2. ASSINATURAS CEGAS


Para enviar uma mensagem

315

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

CAPTULO 25.

316

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.

Teorema 25.2. No esquema de assinaturas cegas RSA, o assinante no obtm

in
ar

qualquer informao a respeito da mensagem alm do que poderia obter a partir


da mesma mensagem encriptada usando o RSA.

O Exerccio 157 pede que seja apontado o motivo da insegurana do uso da


mesma chave para assinatura cega e para encriptao de mensagens.

lim

25.3 Exemplo: esquema de Chaum

O esquema de Chaum usa mix networks e depende de um criptossitema tal que

Encpk (Encsk (x)) = Encsk (Encpk (x)) = x.

Construo 25.3 (Protocolo de votao de Chaum).

Pi

gera seu par de chaves

(pki , ski ).

Pi

encripta sua chave pblica

Pr
e

1. Cada eleitor
2. 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 90 - Jernimo C. Pellegrini

25.4. EXEMPLO: O ESQUEMA CGS (CRAMER, GENNARO, SCHOENMAKERS)317

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 pblicas, 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 90 - Jernimo C. Pellegrini

CAPTULO 25.

318

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

25.5. EXEMPLO: ESQUEMA FOO (FUJIOKA, OKAMOTO, OHTA)

25.4.2

319

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:

lim

25.5 Exemplo: esquema FOO (Fujioka, Okamoto,


Ohta)
um administrador

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

CAPTULO 25.

320

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

25.5. EXEMPLO: ESQUEMA FOO (FUJIOKA, OKAMOTO, OHTA)

321

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 [150] como ponto de partida para a histria da Teoria da Escolha
Social, sendo que a sua concepo moderna deriva dos trabalho de Kenneth Arrow [12, 11]. A coletnea organizada por David Insua e Simon French contm

Pr
e

diversos artigos relacionados a sistemas de votao e sua aplicao em forma eletrnica [145], e h inclusive um Captulo introdutrio sobre sistemas de votao,
elaborado por Hannu Nurmi.

H uma seo sobre votao eletrnica no livro de Delfs [84]; a tese de


doutorado de Zuzana Rjakov [217] d uma viso geral dos esquemas de votao
existentes e dos mtodos usados neles.

O primeiro sistema de votao apresentado (de Chaum) foi o primeiro de


que se tem notcia, publicado como nota tcnica na Communications of the

ACM por David Chaum em 1981, onde props a idia de mixnets. O esquema

de votao aparece no texto apenas como aplicao das mixnets. As mix-nets


so uma forma de roteamento annimo tambm usado em outros contextos,

Ve
rs

inclusive em mtodos de envio annimo de email usados nos anos 90 [18]; a


idia continuou a ser adaptada, sendo tambm a essncia do sistema Tor [88]
de anonimizao na Internet.
O esquema de Ronald Cramer, Rosario Gennaro e Berry Schoenmakers foi

publicado em 1997 [73].

Um esquema de votao particularmente interessante foi desenvolvido por

Zuzana Rjakov em sua tese de doutorado [217], 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 [56].

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

CAPTULO 25.

322

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

Notas

O primeiro artigo a propor dinheiro digital foi publicado em 1982 por David
Chaum [56].

H uma seo sobre dinheiro eletrnico no livro de Delfs [84]; uma viso

geram (em nvel de detalhe bastante alto) dada no trabalho de Isabelle SimplotRyl, Issa Traor e Patricia Everaere [241].
Em sua tese de doutorado, Mansour Al-Meaither apresenta uma discusso

interessante e que trata especicamente de dinheiro eletrnico respeitando princpios Islmicos [183].

323

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 26.

DINHEIRO ELETRNICO

Ve
rs

Pr
e

lim

in
ar

324

in
ar

notas de aula  verso 90 - 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)
Uma cifra de substituio pode ser monoalfabtica, quando um caractere

substitudo de cada vez, ou polialfabtica, quando grupos de caracteres so

substitudos.

Em uma cifra de deslocamento, a quantidade de chaves a quantidade de

possveis deslocamentos  que igual ao tamanho do alfabeto (muito pequena).


Em uma cifra arbitrria de substituio a quantidade de chaves igual

quantidade de permutaes de

 ou seja,
325

|M|!

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 27.

326

CIFRAS HISTRICAS

Denio 27.2 (Cifra de permutao). Uma cifra de permutao se os ca-

racteres usados no texto claro tem apenas suas posies permutadas.

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

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

H uma maneira de descrever a aplicao da ctala espartana usando matrizes:


o texto quebrado em blocos de maneira a formar uma matriz com

n a quantidade de caracteres que cabe ao redor da ctala).

Pr
e

(onde

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.

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
que pode estragar a experincia de um lme, livro ou jogo).

notas de aula  verso 90 - Jernimo C. Pellegrini

27.1. CIFRAS

327

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

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

in
ar

existindo chave. Contruiremos um exemplo com nosso alfabeto.

U
F

V
E

W
D

X
C

Assim, a frase Se o luar meu amigo, censurar ningum se atreve seria encriptada como

HV L OFZI V NVF ZNRTL XVMHFIZI MRMTFVN HV ZGIVEV

ma + b (mod 26), e a chave ento


exemplo, com a = 7 e b = 11, teramos

tumos por
Por

lim

Exemplo 27.7 (Cifra am). A cifra am uma generalizao da cifra de deslocamento. Ao invs de substituir um caracter

por

o par

1 7 + 5 = 12

substi-

Pr
e

2 14 + 5 = 19

m + k (mod 26),
(a, b).

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

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

328

Suponha que a senha LIMA e queiramos encriptar o texto Triste m de


Policarpo Quaresma. A senha d o tamanho do bloco, e portanto encriptamos

Ve
rs

inicialmente TRIS. Para cada posio

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

27.2. ENIGMA

329

onde

c1 =a1 m1 + b1

(mod 26)

c2 =a2 m2 + b2

(mod 26)

cn =an mn + bn

in
ar

.
.
.

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

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

Pr
e

Z26 \ { 0 },

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 [21]. H outros livros a respeito da histria da
Criptograa, incluindo a descrio de antigas tcnicas criptogrcas, dentre os
quais destacamos o de Simon Singh [244, 243], o de Stephen Pincock [206], o de
Helen Gaines [100] e o (j antigo mas excelente) livro de Laurence Smith [247].

notas de aula  verso 90 - Jernimo C. Pellegrini

CAPTULO 27.

330

CIFRAS HISTRICAS

O livro de James Boone [259] 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 [153], trata

in
ar

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-

meiro computador digital eletrnico programvel, COLOSSUS, foi projetado


por um engenheiro britnico, tambm como parte desta corrida armamentista
pela informao.

lim

Exerccios

Ex. 164  Implemente simuladores para todas as tcnicas descritas neste Captulo (cifras e mtodos de criptanlise).

Ex. 165  Determine que cifra foi usada em cada mensagem e determine o
c)

d)

e)

OAADE IAOIE ACMHR MNUSN SHVQO IASSC BEIAA AUOEU TIMIU RSTTA OESEN
DVNVP IEMAL EACUE QMLPH AMEDO OGARH AVRRM UOAEU OILOQ SES
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

f)

Pr
e

texto claro:

Ex. 166  Discorra sobre a maleabilidade das cifras descritas neste Captulo.

Ve
rs

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

Parte IV

Ve
rs

Pr
e

Apndices

331

Ve
rs

Pr
e

lim

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

in
ar

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

elementos escolhidos ao acaso em um conjunto de tamanho

Lema A.1. Seja

de coliso em

Ve
rs

Lema A.2. Seja

um inteiro positivo. Se

memente de um conjunto de tamanho


q2
tos serem iguais no mximo 2N .

N,

elementos so escolhidos unifor-

a probabilidade de dois destes elemen-

um inteiro positivo. Se

2N

seja, temos
Seja

Ci

elemento, e

iguais entre
Se

Ci

quando existem

ei

C o evento
ej iguais.

e1 , e2 , . . . , eq
a probabilidade

elementos

so escolhidos uniformemente de um conjunto de tamanho


q(q1)
de dois destes elementos serem iguais no mnimo
4N .

Demonstrao. Denotaremos por

N.

N,

que representa alguma coliso, ou

o evento representando alguma coliso entre o primeiro e o

C i seu complemento
e1 e ei ).

(ou seja,

Ci

C i1 deve ter acontecido,


e1 e ei1 . Assim,

acontece, ento necessariamente

forma haveria dois elementos iguais entre

Pr[C q ] = Pr[C 1 ] Pr[C 2 |C 1 ] Pr[C 3 |C 2 ] Pr[C q |C q1 ].


333

i-simo

signica que no h elementos


de outra

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE A. PROBABILIDADE

334

Pr[C 1 ]

um, porque temos

Ci

em

{e1 , e2 , . . . , ei }.

ento,

A probabilidade de

i
N , e a probabilidade de

ei+1

e1

sozinho e no h dois elementos

ocorre, ento h

ei+1

ser diferente dos anteriores

seja,

Pr[C i+1 |C i ] = 1
Temos ento

Pr[C q ] =

q1
Y
i=1

1/N < 1

para todo

i
.
N

i
1
N

i,

ento

.
1

i
N . Ou

i
N

ei/N ,

lim

Como neste contexto

i elementos diferentes

ser igual a um dos anteriores ,

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

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. O Algoritmo de Euclides calcula corretamente o
Demonstrao. Se

b > a,

temos que

ab=0

e resto(a, b)=

mdc (b, resto(a, b)) = mdc (b, a),


335

a.

mdc .

Assim,

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

336

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

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)

a = qb + r.

Ento

mdc (b, r) mdc (b, r),

lim

Como determinamos que

in
ar

a b;

ento

mdc (b, r) = mdc (a, b).

Denio B.4 (Primos entre si). Dois inteiros


Tambm dizemos que

a e b so primos entre si quando




so co-primos.

Pr
e

mdc (a, b) = 1.

Note que a denio de co-primos implica que todo nmero


com

1.

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.

de Euler). Para qualquer inteiro positivo

Denio B.6 (Funo

(n)

d o nmero de inteiros positivos menores que

Ve
rs

A funo

tambm chamada de tociente.

Exemplo B.7 (Funo

4,

n a funo
n.


co-primos com

porque contamos

de Euler). Temos (3) = 2, contando 1 e 2;


1, 2, 3, 4; e (6) = 2, porque s contamos 1 e 5.

Claramente, para

(5) =
J

(p) = p 1.

primo,

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


primos menores ou iguais a

n,

ento

lim

(n) ln(n)
= 1.
n

(n)

a quantidade de

notas de aula  verso 90 - Jernimo C. Pellegrini

337

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 mdulo seis. Dizemos

Pr
e

que 1 cngruo a 7 mdulo 6. As operaes denidas para inteiros podem ser


denidas tambm para o conjunto que denimos:
mdulo 6. Denotamos

7 1 (mod 6).

3 + 4 = 7,

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

mdulo

a, b inteiros e m natural. Dizemos que a


m|(a b), e denotamos a b (mod m). Quando
denotamos a 6 b (mod m).


Ve
rs

congruente a

no so congruentes,

se

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

APNDICE B. LGEBRA E TEORIA DOS NMEROS

338

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
1

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.

lim

que representam o nmero

00101100,
J

A relao de congruncia com um mdulo xo relao de equivalncia,


como mostramos a seguir.

Teorema B.12. Para qualquer

m,

equivalncia.

a congruncia mdulo

uma relao de

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

339

Teorema B.14. Suponha que

a b (mod c)

x y (mod c).

Ento

(mod c)

(B.1)

ax by

(mod c).

(B.2)

in
ar

axby

by
ax
e
so inteiros. Assim, tambm deve ser
c
c
by
c . Com isso provamos B.1 (a prova para a
subtrao anloga prova para a adio).
abxy
Tambm devem ser inteiros
= a (by)
+ y ax

c
c
c , e provamos B.2.

Demonstrao. Temos que


(a+b)(x+y)
inteiro
= ax
c
c

No entanto, dividir congruncias s possvel em alguns casos:

16 6

(mod 10),

8 6 3

mas

lim

(mod 10).

S podemos dividir congruncias por um inteiro co-primo com o mdulo.

Teorema B.15 (Lei do cancelamento). Se


co-primos, ento

axay
inteiro,
m
no divide a, e deve dividir

Teorema B.16. Sejam

peq

a b (mod pq).
Demonstrao. Se

e se

primos. Se

a b (mod p)

so

m|a(x y). Ento como a e m so co(x y). portanto, x y mod c.




Pr
e

Demonstrao. Como
primos,

ax ay (mod m)

x y (mod m).

a b (mod p) e a b (mod q),

a b (mod q),

ento

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.

Lema B.17 (Lema de Bzout). Se

mdc (a, b) = d,

O nmero

inteiras

ento existem inteiros

a, b
x, y

so inteiros diferentes de zero com


tais que

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,

ax + by = d.

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

APNDICE B. LGEBRA E TEORIA DOS NMEROS

340

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

a, b

inteiros positivos, e sejam

x, y os dois valores retorax + by = d tal que d|a e

lim

Lema B.19. Sejam

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

nados pelo algoritmo extendido de Euclides. Ento

d|b.

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

o algoritmo retorna

x=1

e zero (e tambm claramente o

hx, yi = ext_mdc(a, b),

Hiptese de induo: Se
Passo:

b=0

Pr
e

Com base de induo, quando


nos d

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

Teorema B.20. Sejam

a, b

como

r,

e portanto divide

x, y os dois valores
ax + by = mdc (a, b)

inteiros positivos, e sejam

tornados pelo algoritmo extendido de Euclides. Ento

Teorema B.21 (Teorema Chins do resto). Sejam


todos co-primos.

M = m1 m2 ms , e
ai co-primo com mi .

Seja

inteiros tais que cada

r + bq = a.

m1 , m2 , , ms e
suponha que a1 , a2 ,
Ento as

a1 x b1

(mod m1 )

a2 x b2

(mod m2 )

,
as x bs

(mod ms )


re-

s inteiros,
, as sejam

congruncias

notas de aula  verso 90 - Jernimo C. Pellegrini

341

tem uma nica soluo, que nica mdulo

M.

Demonstrao. Damos uma demonstrao construtiva na forma de um algoritmo 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,

ki mi + li Mi = 1

Pr
e

Temos ento

li M i 1

ou seja,

li

mj

exceto

li M i 1

(mod mi )

li M i 0

(mod mj ) (i 6= j).

A soluo

Ve
rs

X=

porque

li M
mi , ento li Mi deve ser divisvel

Mi . Como li Mi =
por mi :

o inverso de

por todos os

(mod mi ),

ai X = ai

s
X

ci li Mi ,

i=1
s
X

ci li M i

i=1

s
X

ai ci li Mi

i=1

ai ci li Mi
ai ci

(mod mi )

(mod mi ).

Resta mostrar que a soluo nica mdulo

M.

Exemplo B.22 (Teorema Chins do resto). Considere as congruncias

3x 3

(mod 5),

4x 6

(mod 11),

5x 1

(mod 8).

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

342

e portanto
Temos

x1

(mod 5)

x7

(mod 11)

x5

(mod 8)

c1 = 1, c2 = 7, e c3 = 5.
M = 5 11 8 = 440. Os Mi

so:

M1 = 440/5 = 88
M2 = 440/11 = 40
M3 = 440/8 = 55.

in
ar

Determinamos que

Usando o algoritmo extendido de Euclides, determinamos que

lim

(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, e l3 = 1 (mod 8) = 7.


Mi :
l1 M1 = 2 88 (mod 5) = 1

Estes so

Pr
e

os inversos dos

l2 M2 = 8 40

(mod 11) = 1

l3 M3 = 7 55

(mod 8) = 1.

Podemos nalmente calcular, ento,

x = 2(88) + 7(8)(40) + 5(7)(55)


= 4341 = 381

(mod 440).

Ve
rs

E vericamos que

3(381) = 1143 3

(mod 5),

4(381) = 1524 6

(mod 11),

5(381) = 1905 1

(mod 8).
J

Denio B.23 (Sistema completo de resduos). Um sistema completo de re-

m um conjunto
i 6= j , ri 6 rj (mod m) e para
(mod m).

sduos mdulo

de 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

sistema de resduos mdulo

4:
00

(mod 4)

51

(mod 4)

10 2

(mod 4)

15 3

(mod 4).

{0, 5, 10, 15} um

notas de aula  verso 90 - Jernimo C. Pellegrini

343

Qualquer inteiro ser cngruo a


ou

15,

porque

0, 1, 2

ou

3 (mod 4),

e portanto tambm a

transitiva:

n 1 (mod 4), 1 5 (mod 4)


n 2 (mod 4), 2 10 (mod 4)
n 3 (mod 4), 3 15 (mod 4)

n 5 (mod 4)
n 10 (mod 4)
n 15 (mod 4)

in
ar

0, 5, 10

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).
O sistema de resduos do ltimo exemplo no reduzido, porque

2.

Exemplo B.26 (Sistema reduzido de resduos). O conjunto


reduzido de resduos mdulo

4:
11

3.

{1, 3} um sistema

0 e 2 no so co-primos
n co-primo com 4, temos que n
3 (mod 4).
J
ou

mdulo 4.

ou

Outro sistema reduzido de resduos mdulo

{3, 5}.

Teorema B.27 (Teorema de Euler). Para todo inteiro positivo


e

m e todo inteiro

so co-primos ento

se

mdc (4, 10) =

Para qualquer inteiro

ser necessariamente cngruo a

a,

n


(mod 4).

0, 1, 2

Um nmero inteiro cngruo a

para todo

Pr
e

(mod 4)

33

com 4, restando

tal que para

lim

sduos mdulo

Ve
rs

a(m) 1

(mod m).

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

Vericamos ento que realmente,

1612 = 281474976710656 1

(mod 21).
J

Teorema B.29 (Pequeno Teorema de Fermat). Seja


todo

2 1,

inteiro,

ap1 1

2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20.

(mod p).

p um nmero primo.

Para

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

344

Demonstrao. Como
(p)

a
1 (mod p).
(mod p).

p primo, mdc (a, p) = 1. Ento, pelo Teorema de Euler,


p, (p) = p 1, temos ap1 1


Como para todo primo

mod p.
Exemplo B.30 (Pequeno Teorema de Fermat). Seja
Teorema diz que

a7 a (mod 7).

E de fato,

17 1

(mod 7)

2 = 128 2

(mod 7)

11 = 19487171 4

(mod 7).

p = 7.

lim

Na ltima linha observamos tambm que que

11 4 (mod 7).

A denio que damos de raiz primitiva mdulo

ap a

in
ar

Uma formulao equivalente do pequeno Teorema de Fermat

Para todo

a,

no a normalmente

dada me textos de Teoria de Nmeros; ela , no entanto, equivalente denio


comum.

Denio B.31 (Raiz Primitiva). Sejam

m
m.

a e m co-primos. Dizemos que a


a, a2 , , a(m) formam um sistema


quando

Pr
e

uma raiz primitiva mdulo


reduzido de resduos mdulo

Exemplo B.32 (Raiz primitiva). Sejam

a=2

21 = 2 2

(mod 13)
(mod 13)

2 =88

(mod 13)

(mod 13)

(mod 13)

2 = 16 3

m = 13.

2 =44

Ve
rs

2 = 32 6
6

2 = 64 12

(mod 13)

(mod 13)

2 = 128 11
8

(mod 13)

(mod 13)

2 = 256 9
2 = 512 5
10

= 1024 10

11

= 2048 7

(mod 13)

12

= 4096 1

(mod 13).

2
2
2

(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,
 temos
como

Resduos quadrticos, denidos a seguir, so usados diretamente na constru-

o de algumas ferramentas criptogrcas.

notas de aula  verso 90 - Jernimo C. Pellegrini

345

Denio B.33 (Resduo Quadrtico). Dado um nmero primo


que

inteiro tal que

um resduo quadrtico mdulo

Teorema B.34. Se

> 2),

Se existe um

Demonstrao.

mpar e

(onde

tem duas solues (ou seja,

tem duas razes quadradas,

2x 0 (mod p),
p.

ser co-primo com

13,

porque

Ento,

62 = 36 10

tem duas

p). Seja p = 13. Temos que


62 = 36, e 36 (mod 13) = 10.

(mod 13)

7 = 49 10
Observe que

um primo

lim

um resduo quadrtico mdulo

um

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

diferentes, pois se fossem o mesmo teramos que


acontecer porque teramos

dizemos

p.

um resduo quadrtico mdulo

x2 a (mod p)
mdulo p).

ento a equao

razes quadradas

p,
x2 a (mod p),

in
ar

p - a.

inteiro tal que

(mod 13).

6 7 (mod 13).

Pr
e

O Teorema e o Lema a seguir sero usados na demonstrao do critrio de


Euler.

Teorema B.36. Seja

(mod m).

Se

h o menor inteiro
a (mod m), ento h|r.
r

Lema B.37. Seja

positivo tal que para algum

a, ah 1

g uma raiz primitiva mdulo p e a co-primo com p. Seja r


g r a (mod p). Ento r par se e somente se a resduo quadrtico
mdulo p.

tal que

Demonstrao. Seja
2k
exemplo

uma raiz primitiva de

p.

Parap
g com expoente par, por

, podemos extrair a raiz quadrada de

(p 1)/2

Ve
rs

No entanto, h

g:

g 2k = g k .

expoentes pares (ou razes primitivas) mdulo

Este tambm o nmero de resduos quadrticos mdulo

(p) = p 1),

portanto para

mpar,

gk

(porque

se

um resduo quadrtico mdulo

e em caso contrrio

p1
2

p1
2

p,

(mod p),

(mod p).

Demonstrao. Comeamos notando que

(a

p1
2

)2 = a(p1) 1

(mod p),

p,

p.

primo e

no pode ser resduo quadrtico.

Teorema B.38 (Critrio de Euler). Dado um nmero primo

a 6 0 (mod p),

um nmero

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

e portanto
Seja

p1
2

1 (mod p).
p.

uma raiz primitiva mdulo

p1
2

g k(

Deve haver algum

p1
2 )

(mod p).

No entanto, de acordo com o Lema B.36,


e somente se

k( p1
2 )

divisvel por

p1

g k(

p1
2 )

tal que

in
ar

346

(mod p) 1 (mod p) se
k par 
e somente se a resduo


ou seja, se e somente se

em outras palavras, de acordo com o Lema B.37, se

lim

quadrtico.

Exemplo B.39 (Critrio de Euler). Seja

a = 92 4 6 0
b = 2 6 0
2

(mod 11).

no resduo quadrtico mdulo

11.

Temos ento:

a10/2 = 815 = 3486784401 1


5

(mod 11)

= 2 = 32 1

(mod 11).
J

10/2

Sejam tambm

(mod 11)

Pr
e

Note que

p = 11.

Outros dois conceitos fundamentais para diversas construes criptogrcas

Ve
rs

so os smbolos de Legendre e de Jacobi.

Denio B.40 (Smbolo de Legendre). Dados um inteiro

e um primo

p,

denimos o smbolo de Legendre:

 
+1
a
= 0

se

se se
se

resduo quadrtico mdulo

p|a
no resduo quadrtico mdulo

O smbolo de Legendre tambm denotado por

Exemplo B.41 (Smbolo de Legendre para

n.

(a/p).

(a/7)).

Seja


p = 7.

A tabela a

notas de aula  verso 90 - Jernimo C. Pellegrini

347

12 1

(mod 7)

32 2

(mod 7)

42 2

(mod 7)

7|7

(mod 7)

(mod 7)

12 8

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

Ve
rs

32 9

de zero a

Pr
e

7|0

in
ar

para

lim

(a/p)

seguir lista o smbolo de Legendre

Denio B.42 (Smbolo de Jacobi). Sejam

tal que

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.

Exemplo B.43 (Smbolo de Jacobi para

(a/15)).

Seja

n = 45.

A fatorao de

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

348

45

3 3 5,

ento temos

 2  
0
0
=
= 02 0 = 0
3
5
   2  
13
13
13
=
= +12 1 = 1
45
3
5
   2  
76
76
76
=
= +12 +1 = +1
45
3
5
   2  
63
63
63
=
= 02 1 = 0
45
3
5
0
45

in
ar

Teorema B.44. Para todo

lim

p primo e x inteiro,
 
x
= x(p1)/2 (mod p).
p

Demonstrao. Se

resduo quadrtico mdulo

(mod p) = g 2k

Pr
e

x(p1)/2

p,

ento

x = g 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.

(mod p).

+1

ou

1,

(mod p),
temos que

(mod p).

g (p1)/2 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 90 - Jernimo C. Pellegrini

349

uma raiz primitiva mdulo

gr gs
ento

(mod n)

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

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

H um nico elemento
Dizemos que

e G

tal que para todo

o elemento neutro de

a G,
1
que a

G;

Para todo

existe um elemento

Dizemos

o simtrico de

a1

a.

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

APNDICE B. LGEBRA E TEORIA DOS NMEROS

350

Denio B.51 (Grupo comutataivo). Um grupo

(G, )

Exemplo B.52 (Grupo comutativo). O grupo

(R, +)

Exemplo B.53 (Grupo no comutativo). Seja


singulares

comutativo ou abe-

a, b G, ab = ba.

2 2 com elementos reais.

Ento

comutativo.

in
ar

liano se para todos

M2 o grupo das matrizes no


(M, ), onde a operao de multi-

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


Este grupo, no entanto, no comutativo, porque a operao de

matrizes.

multiplicao para matrizes no comutativa.

Denio B.54 (Ordem de um grupo). O nmero de elementos em um grupo

Dizemos tambm que o grupo nito se o

lim

chamado de ordem do grupo.

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

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.

G um grupo e A subconjunto do
G gerado por A, denotado < A >, o menor subgrupo
os elementos de A.


O subgrupo de

que contm todos

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

351

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 elemento do grupo uma potncia de

gerador do grupo.

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 no

Teorema B.64. Em

Zn , k

tem inverso multiplicativo se e somente se

so co-primos.
Demonstrao. Denotaremos por
Dena a funo

Zn

o conjunto de elementos

fa : Zn Zn

fa (x) = ax
Mostramos agora que

fa (y)

para

x, y Zn .

fa

ax

tais que

(mod n).

injetora para qualquer

Ento

x Zn

como

Pr
e

mdc (x, n) = 1.

Seja a Zn .

lim

formam um grupo, porque no h inverso para o zero.

(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 grupo multiplicativo de

inteiros mdulo

n.

Corolrio B.65. O conjunto

{ x N+ : x < n, mdc (x, n) = 1 }

com a operao de multiplicao mdulo

um grupo.

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

352

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.

lim

Teorema B.67. Todo grupo de ordem prima cclico.

Teorema B.68. Todo subgrupo de um grupo cclico , tambm, cclico.


Denio B.69 (classe lateral). Seja

g G,

um grupo e

H G.

Ento, para todo

gH = {gh : h H}
H

em

G,

Pr
e

uma classe lateral esquerda de

Hg = {hg : h H}

uma classe lateral direita de

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.

Teorema B.71 (de Lagrange). Seja

ordem de

G.
G.

divide a ordem de

laterais esquerda de

em

H G. Ento a
|H|/|G| a quantidade de classes

um grupo nito, e

Alm disso,

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

(G, ) e (H, ) dois gruf (x y) = f (x) f (y)




um homomorsmo se

notas de aula  verso 90 - Jernimo C. Pellegrini

353

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.

A estrutura

algbrica de anel 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 .

A(B + C) = AB +
J

Denio B.77 (Unidade). Uma unidade 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 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

354

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

(R, , +)

um anel.

irredutvel 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

um anel. Se

Pr
e

comutativo, ento

C, R

(F \ {0}, )

um grupo


3

so corpos .

no corpo (nem todo inteiro tem inverso multiplicativo).

A raiz da unidade (informalmente  n-sima raiz de um), que trivialmente

ou

para

R, Q

Z,

admite valores diversos em outros corpos.

Denio B.83 (Raiz da unidade). Em um corpo, um elemento


raiz da unidade se existe

tal que

xn = 1,

onde

multiplicao.

Exemplo B.84 (Quatro razes quartas da unidade em

Ve
rs

razes quartas para

C,

para

C).

Em

h quatro

1:

(1)4 = (+1)4 = (i)4 = (+i)4 = 1.


J

Teorema B.85. Dado


em

n-sima

o elemento neutro para

inteiro, h exatamente

razes

n-simas

da unidade

que so

e(2ik)/n ,

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

355

e(2i0)/n = e0 = 1
e

(2i1)/n

=e

2i/3

e(2i2)/n = e4i/3
so as trs razes cbicas de

C).

Seja

n = 3.

i 31
=
2
!

i 31
=
2

1.

Teorema B.87. As

razes

grupo cclico.
Demonstrao. Sejam

Pr
e

lim

!3

i 31
(i 3)3 3(i 3)2 + 3i 3 1
=
2
23
2

(i 3) (i 3) 3(i 3)2 + 3i 3 1
=
3

2
3i 3 + 9 + 3i 3 1
=
23
8
= = 1. J
8

Ento,

in
ar

Exemplo B.86 (Trs razes cbicas da unidade em

n-simas

k, k 0 N+ .

da unidade em um corpo formam um

Ento

nk nk = e(2ik)/n e(2ik )/n


0

= e(2i(k+k ))/n

0
= e[2i(k+k

k+k0

= ( n )

(mod n))]/n

. 

Exemplo B.88 (Grupo cclico de razes da unidade em

C) .
k ,

Ve
rs

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

-1

15
14
-i

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

356

Lema B.89. Sejam


das

n-simas

n, k, l N,

com

razes da unidade em

l>0

C.

n = e(2i)/n

o gerador do grupo

Ento

in
ar

lk
ln
= nk .

Demonstrao. Trivialmente,

lk

lk
ln
= e(2i)/ln
k

= e(2i)/n
= nk . 

Corolrio B.90. Seja


do grupo das

n-simas

n, k N,

2

C.

n = e(2i)/n

o gerador

Ento

= n/2 .

n = e(2i)/n gerador do grupo das n-simas


n N e k Z tais que n > 0 e n 6 |k . Ento
X
j
nk = 0.

razes da uni-

Pr
e

Seja

par. Seja

razes da unidade em

Lema B.91. Seja

C.

n>0

com

nk
dade em

lim

O ltimo Lema nos d um Corolrio relevante para a discusso do algoritmo


da transformada rpida de Fourier:

0jn1

Demonstrao. A srie descrita,

n
X

(nk )j ,

xi =

i=0

xn+1 1
,
x1

Ve
rs

temos

nk

geomtrica. Lembrando que

j

0jn1

(nk )n 1
nk 1

(nn )k 1
nk 1
1k 1
= k
n 1
= 0. 
=

Denio B.92 (Isomorsmo em estruturas algbricas). Sejam


instncias de grupo, anel ou corpo. Uma bijeo
um isomorsmo entre
na estrutura

se e somente se, para cada operao

e sua operao correspondente

B duas
AeB

entre os elementos de

denida na estrutura

denida

B,

x, y A, f (x y) = f (x) f (y).

Quando tal isomorsmo existe, dizemos que

so isomorfos.

notas de aula  verso 90 - Jernimo C. Pellegrini

357

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

x, y Z, 2(x + y) = 2x + 2y.

Denio B.94 (Caracterstica de um Anel ou Corpo). Seja

elementos identidade

elementos

como uma soma de

Exemplo B.95. Em
terstica do anel

um anel com

R o menor inteiro n tal que n1 = 0, onde n1


1: 1 + 1 + 1 + . . . + 1 = 0. Quando no possvel
1s, a caracterstica do anel zero.


(Z5 , , +)

temos

1 + 1 + 1 + 1 + 1 = 0,

5.

portanto a carac-

lim

escrever

para as operaes de multiplicao e adio, respec-

tivamente. A caracterstica de
denota a soma de

in
ar

Ambos so

A = (Z, +)

dos inteiros pares.

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 polinmio de grau

polinmios sobre

denotado

Exemplos familiares so

sobre

A.

O conjunto de todos os

A[x].

R[x]

C[x],

conjuntos de polinmios sobre


R

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

APNDICE B. LGEBRA E TEORIA DOS NMEROS

358

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

(mod 2) = 0

01
10
11

lim

0+0

(mod 2) = 0
(mod 2) = 0
(mod 2) = 1

Valem os axiomas de corpo: temos fechamento sob as duas operaes; as opera-

Pr
e

es 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

k = 6,

com as operaes usuais no corpo

nito, porque s h inversos multiplicativos para

(no corpo), conforme

Ve
rs

pode ser facilmente vericado na tabela abaixo.

Para

GF (pm )

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

um polinmio em

em

A[x]

A[x].

O conjunto de todos os

o conjunto de polinmios mdulo

em

notas de aula  verso 90 - Jernimo C. Pellegrini

359

f (x) = x7 + x3 + 1, ento Z11 [x]f o conjunto de todos os


7
3
polinmios em Z11 [x] que so resto de diviso por x + x + 1.
Para aplicar uma operao em Ak [x]f em dois polinmios g e h, fazemos:

Computamos

Dividimos

Reescrevemos os coecientes de

f = gh;

por

e tomamos o resto

(que tambm um polinmio);

mdulo

k.

Exemplo B.102 (Operao modular em polinmios). Considere

x2 + 2 .

Sejam

g(x) = x2 + x

Z4 [x] mdulo

lim

h(x) = 2x + 1
Calculamos

in
ar

Por exemplo, se

g(x)h(x) = (x2 + x)(2x + 1) = 2x3 + 3x2 + x.


x2 + 2, obtendo 2x + 3 e resto 3x 6.
4, obtendo
x + 2.

Dividimos por
e

mdulo

Assim, o resultado da operao

gh

o polinmio

x+2

Agora reescrevemos

em

Z4 [x].

Para representar

k.

Pr
e

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


f (x) um corpo

O conjunto de polinmios com soma e multiplicao mdulo

isomorfo a

F G(pk ).

GF (2m )
0, 1, . . . , 15.

Exemplo B.103 (Gerao de

representado por polinmios). O corpo

4
GF (2 ) tem 16 elementos,
O polinmio f (x) = x + x + 1 sobre
F2 irredutvel. A tabela a seguir mostra dezesseis polinmios, os mesmos
polinmios mdulo f (x) e seus coecientes.

Ve
rs

p(x) p(x) (mod f (x)) a3 , a2 , a1 , a0


0
0
0, 0, 0, 0
x1
x
0, 0, 1, 0
x2
x2
0, 1, 0, 0
x3
x3
1, 0, 0, 0
x4
x+1
0, 0, 1, 1
x5
x2 + x
0, 1, 1, 0
6
x
x3 + x2
1, 1, 0, 0
x7
x3 + x + 1
1, 0, 1, 1
x8
x2 + 1
0, 1, 0, 1
x9
x3 + x
1, 0, 1, 0
x10
x2 + x + 1
0, 1, 1, 1
11
x
x3 + x2 + x
1, 1, 1, 0
x12
x3 + x2 + x + 1
1, 1, 1, 1
13
x
x3 + x2 + 1
1, 1, 0, 1
x14
x3 + 1
1, 0, 0, 1
x15
1
0, 0, 0, 1

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

360

Esta tabela construda da seguinte maneira: depois do zero, listamos


e os restos da diviso destes polinmios por
elementos de

O ndice de cada elemento obtido de

f (x) = x + x + 1.

x1 , x2 , . . . , x15 ,

Ou seja, usa-

Estes restos so a representao dos

xi

in
ar

g(x) = x como gerador.


GF (24 ) como polinmios.

mos o polinmio

i.

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


x2 + x por
x3 + x2 , que resulta em x5 + 2x4 + x3 . Reescrevendo os coecientes mdulo 2,
5
3
3
2
temos x + x . Dividindo por f (x), o resto x + x .
J
mos que

lim

polinmios na segunda linha da tabela. Comeamos multiplicando

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

Pr
e

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

x). No exemplo anterior,


x ser primitivo. Citamos dois exemplos
3
3
disso: em GF (3 ) com mdulo f (x) = x +2x+2, o polinmio x no primitivo,
2
3
mas x + 1 . A tabela a seguir mostra uma tentativa de gerar GF (3 ) usando
o polinmio x.

Exemplo B.105 (Polinmio primitivo diferente de


primitivo, mas nem sempre

Ve
rs

g(x) = x

k
1
2
3
4
5
6
7

xk

Notamos ento que

(mod f (x))
x
x2
x+1
x2 + x
x2 + x + 1
x2 x + 1
x2 x + 1

k xk (mod f (x))
8
x2 1
9
x1
10
x2 x
11
x2 + x + 1
12
x2 1
13
1
14
x

x gera apenas metade de GF (33 ), j que x14 = x.

A prxima

notas de aula  verso 90 - Jernimo C. Pellegrini

361

de fato primitivo, gerando

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
GF (34 ) usando
mas x + 1 .

Tambm em
primitivo,

k
14
15
16
17
18
19
20
21
22
23
24
25
26

o polinmio

GF (33 ).

(x2 + 1)k (mod f (x))


x2 1
x 1
x2 + x + 1
x2 + x 1
x
x + 1
x2 + x
x2 + 1
x2 x + 1
x2
x2 x
x2 x 1
1

in
ar

x2 + 1

lim

tabela mostra que

x4 + 2x2 + 1

como mdulo,

no

Pr
e

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

n
pn .

primo e todo

h somente um corpo nito de ordem

Em Criptograa comum o uso de

natural. A no ser por isomorsmo,

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


3

x + x + 1 tem os coecientes 1, 1, 0, 1,
sequncia de bits 1101.

Ve
rs

polinmio
a

bits podem ser

GF (2m ).
GF (24 )).

Em

GF (24 )

e pode ser interpretado como

Computadores normalmente tem operaes para realizar ou-exclusivo bit-a-

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


3

GF (24 )).

Em

representao binria dos dois polinmios:

1101 1010 = 0111.

Se os polinmios tem tamanho igual ao da palavra usada pela CPU, esta operao pode ser feita com uma nica instruo de ou exclusivo. Se mltiplo da
palavra da CPU, ainda assim apenas um ou exclusivo por palavra usado.

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

362

Notas
H diversas referncias em Portugus abordando lgebra Abstrata; menciona-

in
ar

mos os livros de Hefez [127], Garcia e Lequain [102] e o de Shokranian [236].


Em Ingls h uma plenitude de livros. O de Fraleigh [96] bom para um
primeiro contato; h tambm os de Herstein [131], Gallian [101] e Artin [13].

Os livros de Jacobson [148, 149] so excelentes, redigidos em estilo verbalmente


descritivo; o estilo de Hungerford [141] oposto, compacto e fazendo uso mais
frequente de simbolismo. Uma abordagem diferente para a lgebra, em nvel

avanado, a do livro de Paolo Alu [5], 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

lim

o ltimo Captulo).

O livro de Rudolf Nidl e Harald Niederreiter [170] 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 [190].

Sobre Teoria dos Nmeros h em Portugus os livros de Plnio Santos [201],


Em Ingls, o livro de George An-

Pr
e

Polcino Millies [187] e Shokranian [235].

drews [7] d uma boa introduo, e o de Rosen e Ireland[146] aborda o assunto


em mais profundidade.

Outro livro muito conhecido de Teoria dos Nmeros

o de Niven, Zuckerman e Montgomery [199].

A demonstrao do Teorema

dos Nmeros Primos pode ser encontrada na literatura de Teoria Analtica dos
Nmeros  por exemplo, no livro de Tom Apostol [9].
Os livros de Shoup [237], Stein [252] e de Baldoni, Ciliberto e Cattaneo [19] e
de Hostein, Pipher e Silverman [135] so tambm particularmente interessantes

para estudiosos de Criptograa.

Ve
rs

Exerccios

Ex. 170  Dentre todos os mltiplos positivos de 432,


memente. Qual a probabilidade de

escolhido unifor-

ser divisvel por 648?

Ex. 171  Resolva os sistemas modulares:

3x
a) 2x
4x

4
3
1

(mod 7)
(mod 8)
(mod 3)

2x
4x
b)
8x
16x

3 (mod 17)
6 (mod 5)
7 (mod 6)
1 (mod 11)

Ex. 172  Ao provarmos o Teorema B.21, no provamos que a soluo encontrada nica mdulo

M.

Faa essa parte da prova.

Ex. 173  Encontre todas as razes primitivas mdulo

5, 7, 9

11.

notas de aula  verso 90 - Jernimo C. Pellegrini

363

Ex. 174  Quais dos

resduo quadrtico mdulo

p?

(Use o critrio de

resduo quadrtico mdulo

n?

(Fatore

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

Ex. 175  Quais dos

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

Ex. 176  Prove que se

Pr
e

a)

Ex. 177  Seja

o produto de

xy 
n

nmeros primos

so resduos quadrticos mdulo

Zn

e use o

mpar, ento

 xy 

nmeros em

lim

critrio de Euler)

in
ar

Euler)

Ex. 178  O conjunto de todas as funes

p1 , p2 , . . ., pk .

Quantos

n?

f : A A

com a operao de

Ve
rs

composio um grupo?

Ex. 179  Para qualquer


nho

natural, o conjunto das cadeias de bits de tama-

com a operao de ou exclusivo um grupo?

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 de

gerador.

Ex. 183  Prove que todo grupo nito


nho menor ou igual a

log2 |G|.

G tem um conjunto gerador de tama-

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

364

Ex. 184  Seja

(f, g)

o conjunto de todas as bijees complexas e denote por

a transformada de Fourier

da composio de

g:

(J, )

um grupo?

Ex. 185  Sejam

um grupo. Mostre que

aG = Gb

G.
Ex. 186  Seja

Zp

o grupo de inteiros mdulo

p,

um grupo cclico de ordem par. Prove que

mente um elemento de ordem dois.

ab1

primo e a operao

lim

se e somente se

com

usual de multiplicao. Prove que este grupo cclico.

Ex. 187  Seja

in
ar

(f, g) = F (f g).

tem exata-

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  Mostre como obter um anel no-comutativo a partir de um anel

Pr
e

comutativo.

Ex. 190  (Grove) Mostre que se


ento

subgrupo de

Ex. 191  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. 192  Apresente um anel com mais de um elemento identidade.

Ex. 193  Mostre que quando

primo, o conjunto dos inteiros mdulo

com as operaes usuais de soma e multiplicao forma um corpo.

Ve
rs

Ex. 194  O conjunto { a + b

2 | a, b Q } com as operaes usuais de soma

e multiplicao um corpo?

Ex. 195 

(R[x], +, )

um corpo?

Ex. 196  (Golan) Mostre que o corpo dos reais tem innitos subcorpos.
Ex. 197  Considere o conjunto de intervalos fechados de nmeros reais com
as operaes a seguir:

[a, b] + [c, d] = [a + c, b + d]
[a, b] [c, d] = [min(ac, ad), max(bc, bd)]

Este conjunto com tais operaes um corpo?

4 Veja

o Apndice D

notas de aula  verso 90 - Jernimo C. Pellegrini

365

Ex. 198  (Mullen/Mummert) Seja


que para todo

um anel com caracterstica

p.

Mostre

n 1,
n

ai R

para todo

i.

Ve
rs

Pr
e

lim

onde

in
ar

(a1 + + ak )p = ap1 + + apk

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Ve
rs

Pr
e

lim

in
ar

366

in
ar

notas de aula  verso 90 - 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 tamanho da entrada
de um algoritmo em quantidade de operaes.

Estamos interessados no no

valor dessa funo em algum ponto, mas em quo rpido ela cresce quando

comparada com outras. Para isso determinamos sua ordem de crescimento. Por
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


do qual

g(x) > f (x),

mesmo que

f (x)
367

x0

a partir

seja multiplicada por uma constante

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

368

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)

1 i n.

fk (x)

tal que

fi (x)

O(fk (x))

para todo

notas de aula  verso 90 - Jernimo C. Pellegrini

COMPLEXIDADE DE TEMPO

Por exemplo, seja


crescimento

2x

369

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)



lim

2x + 5x5

O(x!)

O(x log(x))

f (n) = O(g(n)) no lugar de f (n)

O(g(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;

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

APNDICE C. COMPLEXIDADE COMPUTACIONAL

370

Quando a complexidade de tempo para um algoritmo cresce mais rpido


que qualquer polinmio mas ainda assim cresce mais lentamente que qualquer
exponencial, dizemos que o algoritmo tem tempo de execuo subexponencial.

O(2n ),

com

> 0.

in
ar

Uma das maneiras de denir complexidade exponencial

Dizemos que algoritmos polinomiais so ecientes, 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

calculada de maneira to simples como no exemplo anterior. O algoritmo mer-

gesort um exemplo. O mergesort usa a operao de merge (ou intercalao):


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

C.1.

COMPLEXIDADE DE TEMPO

371

Usaremos o procedimento 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 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

372

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

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

n/2.

O(n);

dois outros ns lhos

Isso se repete at que

lim

da entrada

n = 1.

Pr
e

n/2

n/4

n/4

n/8

n/8

n/2

log2 n, e em cada nvel k da rvore o trabalho realizado


2k (logk n) = n. O tempo total necessrio ento O(n) em cada
O(n log(n)) no total.


Ve
rs

A altura da rvore
leva tempo

iterao e

A inspeo da rvore uma de diferentes maneiras de resolver recorrncias.

H tambm um Teorema Mestre que permite resolver alguns tipos de recorrncia


rapidamente.

Teorema C.5 (Teorema Mestre para recorrncias). Se uma recorrncia da

forma

T (N ) = aT (n/b) + f (n),

ento
i)

Se

f (n) = O(nlogb (a) ),

com

> 0,

ento

T (n) = (nlogb (a) ).

notas de aula  verso 90 - Jernimo C. Pellegrini

C.1.
ii)

COMPLEXIDADE DE TEMPO
Se

f (n) = (nlogb (a) ),

373

ento

T (n) = (nlogb (a) log(n)).


Se

f (n) = (nlogb (a)+ ),

af (n/b) cf (n)

para algum

c<1

entemente grande, ento

T (n) = (f (n)).

suci-

in
ar

iii)

Podemos aplicar o Teorema Mestre para resolver a recorrncia da complexidade de tempo do

mergesort.

Exemplo C.6 (Uso do Teorema Mestre (recorrncia do

f = n).

f (n)

(nlog2 (2) )

(n),

e portanto podemos usar o caso (ii). A soluo ento


ou seja,

mergesort)).

Vericamos que

(n log n).

A recor-

lim

rncia tem

T (n) = (nlog2 (2) log n),


J

Pr
e

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.


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

Ve
rs

somas, porque a multiplicao mais cara. Se implementarmos um algoritmo


recursivo dessa forma, sua complexidade ser dada pela recorrncia

T (n) = 8T (n/2) + (n2 )

porque dividimos o problema em oito problemas menores, de tamanho

n/2 (no

estamos contando nmero de elementos na matriz, mas seu maior lado  ou sua
diagonal) e depois realizamos as somas, que no total tero complexidade

Se resolvermos essa recorrncia obteremos

T (n) = n

, e o algoritmo no ser

melhor que o primeiro que vimos.


No entanto, se calcularmos os seguinte sete produtos

X1
X2
X3
X4

= A(F H)
= (A + B)H
= (C + D)E
= D(G E)

(n2 ).

X5 = (A + D)(E + H)
X6 = (B D)(G + H)
X7 = (A C)(E + F )

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

374

e observamos que

= X1 + X2

CE + DG = X3 + X4

in
ar

X5 + X4 X2 + X6

AE + BG
AF + BH

= X5 + X1 X3 X7

CF + DH

teremos calculado o produto das duas matrizes com sete multiplicaes, e no


outo.

A recorrncia para a complexidade de tempo do algoritmo de Strassen

lim

T (n) = 7T (n/2) + (n2 ).

Usando o Teorema Mestre, conclumos que a complexidade de tempo do algoritmo de Strassen

(nlog2 7 ) = (n2.8074 ).

O mesmo resultado pode ser obtido

com a anlise da rvore de recorrncia, como zemos para o mergesort.

C.1.2

Tamanho da entrada e nmero de bits

Pr
e

de crucial importncia observar que a complexidade de algoritmos medida


usando o tamanho da entrada, e no seu valor.
Um exemplo ilustrar isto claramente:

o problema do logaritmo discreto

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.

O tamanho de

n em bits

deve ser usado: medida que aumentamos

o nmero de bits usado para representar o mdulo

n,

o tempo necessrio para a

busca exaustiva cresce exponencialmente: cada novo bit multiplica o espao de


busca por dois! O tempo necessrio para encontrar o logaritmo de um nmero

Ve
rs

n, onde n tem k bits, proporcional ao maior valor representvel


2k+1 1. Por isso a complexidade do algoritmo O(2k ).

mdulo

bits:

com

C.2 Grafos
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

G = (V, E)

consiste de um conjunto

de arestas (pares de vrtices)

u, v V .

{ u, v },

onde

Usualmente os grafos so representados visualmente como conjuntos de pon-

tos (os vrtices) ligados por linhas (as arestas).

notas de aula  verso 90 - Jernimo C. Pellegrini

GRAFOS

375

Exemplo C.8 (Grafo). Por exemplo,


E

V = {a, b, c, d, e}

{ a, b } , { a, c } , { a, e } ,
.
{ b, c } , { b, d } , { c, d } , { d, e }
G = (V, E)

onde

representado gracamente na gura a seguir.

a
e

in
ar

C.2.

lim

Denio C.9 (Grau de um vrtice). Em um grafo


vrtice

a quantidade de vrtices

a quantidade de vizinhos de

d(a) = 3

Denotamos o grau

G = (V, E), o grau de um


w a v (ou seja,
de v por d(v).


tais que h aresta de

d(c) = 2.

Pr
e

No exemplo dado,

v ).

wV

Neste Apndice estamos interessados principalmente em denies relacionadas a grafos, que usaremos em diversos problemas e algoritmos. No apresentamos, portanto, muitos teoremas em grafos. As demonstraes em grafos
dadas aqui so poucas e extremamente simples.

Teorema C.10. Em qualquer grafo, a quantidade de vrtices com grau mpar


par.

Demonstrao. Cada aresta incide em dois vrtices, portanto a soma dos graus

|E|:
X
d(v) = 2|E|.

Ve
rs

dos vrtices deve ser o dobro de

vV

Se a quantidade de vrtices com grau mpar fosse mpar, o somatrio seria mpar,
e no poderia ser igual a

2|E|.

Teorema C.11. Em qualquer grafo sem laos com

n > 1

vrtices, h pelo

menos dois vrtices com o mesmo grau.


Demonstrao. Cada vrtice pode se ligar a
graus possveis para

vrtices.

n1

outros, portanto h

n1

O teorema segue pelo princpio da casa dos

pombos.

Denio C.12 (Clique). Uma clique em um grafo um subconjunto


seus vrtices tal que para todos

C de
u, v C , { u, v } uma aresta do grafo (ou seja,

um subconjunto de vrtices ligados dois a dois por arestas). usual denotar


uma clique de

vrtices por

Kn .

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

376

O grafo da gura anterior tem duas cliques de tamanho trs (tambm as


chamamos de tringulos):

{a, b, c}

{b, c, d}.

Denio C.13 (Caminho). Um caminho em um grafo uma sequncia (v1 , v2 ,

tais que h arestas ligando cada dois vrtices

vi , vi+1

consecu-

tivos.

(a, b, c, d)

Por exemplo,

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, b, d, e, a)

um exemplo de circuito simples no grafo dado

lim

A sequncia
como exemplo.

Denio C.15 (Circuito Hamiltoniano). Um circuito simples em um grafo


que contenha todos os vrtices de

chamado de circuito Hamiltoniano.

No grafo da primeira gura h um circuito Hamiltoniano

G


(a, b, c, d, e, a).

Um grafo pode ser composto de diversas partes desconectadas, e classicamos

Pr
e

os grafos como conexos (como o grafo do Exemplo C.8) ou desconexos, usando


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. 

Ve
rs

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
1

em exemplo de prova de conhecimento zero .

Exemplo C.18 (Colorao de grafo). O grafo dado no exemplo C.8 admite

uma

3-colorao:
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.

1 Provas

, vk )

in
ar

de vrtices de

de conhecimento zero so discutidas no Captulo 13.

notas de aula  verso 90 - Jernimo C. Pellegrini

C.3.

PROBLEMAS DE DECISO E DE BUSCA

377

Exemplo C.20. A Figura a seguir mostra uma rvore.

in
ar

A descrio no visual da rvore

lim

V = {a, b, c, d, e, f, g, h}

E = {{a, b}, {a, c}, {c, d}, {c, e}, {c, f }, {e, g}, {e, h}} . J

O conceito de isomorsmo de grafos usado em provas de conhecimento zero


(no Captulo 13).

Denio C.21 (Isomorsmo de grafos). Dois grafos


so isomorfos se existe uma bijeo

e somente se

f : V V0

{ f (x), f (y) } E 0 .

Exemplo C.22 (Grafos isomorfos). Sejam


G

G, F

os grafos a seguir:

G = (V, E) e G0 =
{ x, y } E se


tal que

Pr
e

(V 0 , E 0 )

so isomorfos porque existe a seguinte bijeo:

de

tem trs vizinhos, e em

Ve
rs

Os grafos

ax
cy

bw
dz

no so isomorfos: no pode haver bijeo entre eles, j que o vrtice

no existe vrtice com trs vizinhos.

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.

No

caso da ordenao de vetores, uma instncia um vetor (o tamanho da


instncia ser a quantidade de elementos no vetor);

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

378

Para cada instncia h um conjunto (possivelmente vazio) de solues

factveis.

Ainda usando o exemplo da ordenao, temos o conjunto de

todas as permutaes do vetor.

in
ar

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

em ordem crescente?

Dados os custos de deslocamento entre

V0

com os mesmos ele-

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

Dadas

encontrar um subconjunto de seus vrtices

lim

que formem uma clique;

equaes com

variveis, que valores devem ser atribudos s

variveis para satisfazer todas as equaes simultaneamente?

Dado um nmero

n,

encontrar sua fatorao.

Pr
e

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?

decidir se

Note que um problema de deciso no pode ser mais difcil que um problema

Ve
rs

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),
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 determi-

nstico para um problema de deciso aquele que, dados uma instncia de um


problema e uma possvel soluo, apenas verica se aquela uma soluo vlida
para aquela instncia.

notas de aula  verso 90 - Jernimo C. Pellegrini

C.4.

ALGORITMOS NO DETERMINSTICOS

379

Exemplo C.24 (Algoritmo no determinstico para CLIQUE). Dado um grafo


e um conjunto de vrtices

soluo uma clique de tamanho

K V , o algoritmo a seguir decide se K


n. O seguinte algoritmo verica se uma

k:

in
ar

G = (V, E)

uma clique de tamanho no mnimo

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


enumera todos os pares de

porque o lao para todo

lim

u, v K 

H uma denio um pouco diferente (mas equivalente) de algoritmo nodeterminstico.

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

Pr
e

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


usando a segunda denio.

Ve
rs

Exemplo C.26 (Algoritmo no determinstico para CLIQUE).

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

|V |

algoritmo deve escolher um dentre um nmero exponencial (2

tos de

V.

Isso pode ser entendido como crie

|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

exemplo, as

2|V |

linhas de execuo fazem a vericao de cada uma das

candidatas a soluo.

2|V |

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

380

C.5 Algoritmos Randomizados


Denio C.27 (Algoritmo randomizado). Um algoritmo randomizado aquele
que usa um gerador de nmeros aleatreos durante sua execuo. Quando exe-

in
ar

cutado 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

ap1 1 (mod p).

Usando este resultado, podemos testar se um nmero


aleatoreamente vrios nmeros

ser verdadeira.

primo escolhendo

e vericar se a igualdade vale. Caso isso

certamente composto.

lhendo vrios valores diferentes de

primo, ento

Caso ocorra,

pode ser primo.

Esco-

aumentamos a probabilidade da resposta

lim

no ocorra,

a<p

Pr
e

repita k vezes
a nmero aleatreo (1, n)
se an1 6 1 (mod n)
retorne COMPOSTO
// com certeza absoluta
retorne PRIMO
// provavelmente
Nmeros compostos para os quais

mdc (a, n) = 1

so chamados de

an a (mod n)

para todo

tal que

nmeros de Carmichael ou pseudoprimos de

Fermat. A distribuio dos nmeros de Carmichael muito menor que a dos


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

Ve
rs

As classes de complexidade mais conhecidas so denidas em termos de problemas 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 cor-

respondente: 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

resolvido por um algoritmo determinstico em tempo polinomial.

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

C.6.

CLASSES DE COMPLEXIDADE

381

MDC (achar o mximo divisor comum de dois nmeros), porque o algoritmo de Euclides tem complexidade de tempo polinomial.

PRIMO (dado um nmero

n N,

determinar se

primo)  porque o

in
ar

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

lim

ser resolvido por um algoritmo no-determinstico em tempo polinomial.

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.

algoritmo no-determinstico apresentado para o problema da clique em


um grafo tem complexidade de tempo polinomial, portanto CLIQUE

SOMA-SUBCONJUNTO: Dado um conjunto nito


e um nmero
est em

NP

s,

existe um subconjunto de

A de inteiros positivos
s? O problema

cuja soma

porque tendo um subconjunto de

tempo polinomial se sua soma

Pr
e

N P.

podemos vericar em

s.

CICLO-HAMILTONIANO: Dado um grafo, determinar se ele tem um


ciclo Hamiltoniano.

O problema est em

N P:

tendo uma sequncia de

vrtices podemos 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
3

Ve
rs

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

N P,

mas no nos ocuparemos

deles aqui.

A classe de problemas resolvidos por algoritmos probabilsticos chamada

de

PP

(probabilistic polynomial time).

trataremos em particular da classe

H diversas subclasses de

PP ,

mas

BPP .

Algoritmos randomizados que tenha probabilidade de acerto maior que

1/2

so particularmente interessantes:

Denio C.30 (Classe

BPP ).

Um problema est na classe

BPP

quando

pode ser resolvido por um algoritmo randomizado em tempo polinomial com


probabilidade de acerto

3 Lembre-se

2/3.

das regras do Tetris: quando a linha da base ca cheia,ela desaparece.

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

382

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-

aleatreos).

in
ar

tico como um algoritmo probabilstico que nunca usa o gerador de nmeros


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

PSPACE

se

pode ser resolvido por algum algoritmo usando espao polinomial no tamanho

da entrada.

O Exerccio 228 pede a demonstrao do seguinte Teorema, que arma que


um problema em

NP

Teorema C.32.

N P PSPACE .

PSPACE .

lim

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

primos.

3, 11

17

pertencem linguagem dos nmeros

Pr
e

Exemplo C.34. Os nmeros


J

Exemplo C.35. O grafo a seguir pertence linguagem dos grafos hamiltonianos, porque o ciclo

(a, b, f, c, d, e, a)

percorre cada vrtice uma nica vez.

Ve
rs

e
a
d
J

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
Computacional.
O primeiro problema consiste em encontrar em um grafo no dirigido um

circuito Hamiltoniano.

notas de aula  verso 90 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

383

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

Problema C.37 (TSP (caixeiro viajante)). Dado um grafo


nas arestas determinados por

c:ER

e um nmero

m,

in
ar

um grafo com peso nas arestas limitando o custo mximo do percurso.

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:
Dado o grafo

G = (V, E), d a cada aresta o mesmo custo, 1.

Se resolvermos

que existe um circuito hamiltoniano no grafo.

|V |, sabemos

lim

o TSP agora procurando um caminho com custo no mximo igual a

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.

Pr
e

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-

ponencial, a reduo no faz sentido: poderamos simplesmente enumerar todos


os circuitos em

G.

reduo em tempo polinomial

instncia de HAM

Ve
rs

sim / no

instncia de TSP

algoritmo para TSP

Quando h uma reduo em tempo polinomial de um problema

problema

B,

usamos a notao

A P B .

para um

O ltimo exemplo mostra que HAM

TSP.

No sabemos se h algoritmo polinomial para o TSP. Se houver, ele poder

ser usado para construir (usando esta reduo) um algoritmo polinomial para o
HAM.

Finalmente denimos a noo de

N P -completude4 .

Denio C.38 (Classe N P -completo). Um problema P N P -completo quando


4 Denimos

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

APNDICE C. COMPLEXIDADE COMPUTACIONAL

384

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.

in
ar

i)

Para provarmos o prximo Teorema usaremos o fato de HAM ser


completo.

Teorema C.39. TSP

N P -completo.

Demonstrao. A prova se divide em duas partes:

T SP N P :

dada uma instncia do TSP e uma possvel soluo (uma

lim

i)

N P-

sequncia de vrtices) possvel vericar em tempo polinomial se ela factvel (basta vericar que h arestas entre os ns, que no h ns repetidos
e somar os custos).

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

Pr
e

ii)

Tcnicas para demonstrao de N P -completude

Grosso modo, as demonstraes de

N P -completude

so normalmente de um

dos trs tipos listados a seguir.

Restrio:
problema A

a forma mais simples de demonstrao, onde para reduzir um


a outro problema

B,

apenas mostramos que suciente usar

restringindo suas entradas. Essa a tcnica

o algoritmo de soluo de

usada na reduo de HAM ao TSP, j dada;

Ve
rs

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

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.

Restrio

O problema da mochila um dos mais importantes problemas

N P -completos.

Informalmente pode-se descrever o problema de mochila usando a analogia que


lhe d nome: em uma situao em que h diversos objetos, cada um com um
peso e um valor, nos interessa saber se possvel coletar diferentes objetos em
uma mochila, acumulando um determinado valor, mas sem exceder a capacidade
de mochila.

notas de aula  verso 90 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

385

A seguir est a denio formal do problema da mochila, com a demonstrao


de que

N P -difcil.

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

in
ar

MOCHILA: dados um conjunto


+

xX 0
e

v(x) K.

xX 0

N P -difcil.

lim

Teorema C.40. MOCHILA

Demonstrao. Reduo de PARTICAO: basta restringir as instncias de maneira que

s(x) = v(x)

C = K = 1/2

xX

s(x).

Substituio local

Em demonstraes pode substituio local transformamos a entrada de um pro-

N P -completo na entrada do problema que queremos mostrar N P -difcil,

Pr
e

blema

mas a transformao no uma simples substituio.

O prximo exemplo uma reduo do problema COBERTURA-DE-CONJUNTO


a CONJUNTO-DOMINANTE. Denimos ento o problema COBERTURADE-CONJUNTO.

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

minante.

Denio C.41 (Conjunto dominante). Um conjunto dominante em um grafo

Ve
rs

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


Demonstrao. Seja

I = { 1, . . . , n }.

Seja

N P -difcil.

S1 , S2 , . . . , Sn , com ndices
Si , U = Si . Podemos resol-

uma famlia de conjuntos

a unio de todos os

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

V = I U.

U:

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

386

ligamos entre si com arestas todos os vrtices que representam ndices, e ligamos
cada elemento de

com os ndices dos conjuntos aos quais pertencem.

A Figura a seguir ilustra a construo do grafo para

in
ar

E = { { i, j } : i, j I } { { i, x } : x Si }
S1 = { x1 }, S2 = { x1 , x2 , x3 },

lim

S3 = { x3 , x4 }, S4 = { x5 , x6 }.

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

Pr
e

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.

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 219 pede a demonstrao de que CONJUNTO-DOMINANTE

N P.

Ve
rs

est em

Projeto de componentes
O exemplo que damos para a tcnica de projeto de componentes o do problema
da 3-colorao de um grafo.

3COLOR: Dado um grafo, h para ele uma colorao de seus vrtices com

no mximo trs cores?


O problema 3SAT, 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 ),

notas de aula  verso 90 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

387

h atribuio possvel s variveis tal que a frmula assuma valor verdadeiro?

J
N P -difcil.

Demonstrao. Mostramos uma reduo de 3SAT a 3COLOR.

in
ar

Teorema C.44. 3COLOR

Usaremos trs componentes para transformar instncias de 3SAT em instncias de 3COLOR.

O primeiro componente uma 3-clique, onde os vrtices tem os rtulos


e

T, F

que representam os valores verdadeiro, falso e impossvel de atribuir

para variveis de uma frmula booleana.

Este primeiro componente nos garante que


h uma terceira cor

lim

tero cores diferentes, e que

diferente das duas anteriores.

O segundo componente uma 3-clique onde os vrtices so

x , x e .

Quando

ser o mesmo que aquele no componente

Pr
e

construirmos o grafo, o vrtice

anterior (e no um vrtice diferente com mesmo nome).

O segundo componente garante que uma varivel e sua negao s podem assumir os valores verdadeiro e falso, e que no podem ter o mesmo valor.
O terceiro componente construdo para cada clusula, e compartilha o

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 .

Ve
rs

vrtice

Construimos ento um grafo da seguinte maneira:

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

388

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

v,

ligamos

v, v

como no segundo componente.


iv)

in
ar

i)

em uma 3-clique,

Para cada clusula na frmula, fazemos a ligao dos vrtices includos no


passo

(ii)

com o vrtice

includo no passo

(i),

estrutura do terceiro componente.

e fazemos isso usando a

A prxima gura mostra um exemplo do grafo construdo para a frmula

Pr
e

lim

(a b c) (b c d) (a c d).

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

T.

em cada

notas de aula  verso 90 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

389

Como conseguimos transformar, em tempo polinomial, uma instncia de

3SAT em uma de 3COLOR, ento 3COLOR

N P -difcil.

O leitor pode vericar facilmente que alm de

N P -difcil,

3COLOR

completo.

C.7.2

in
ar

O que mostramos que, se h algoritmo polinomial para 3COLOR, ele pode


ser usado para resolver 3SAT tambm em tempo polinomial.

Padres comuns

N P-

comum que problemas sejam facilmente solveis quando solues reais ou racionais so permitidas, e tornem-se

N P -completos

se exigirmos solues inteiras.

Um exemplo disso o problema EQUACAO-DIOFANTINA-QUADRATICA:

Outros exemplos so:

O problema da mochila, que pode ser resolvido ecientemente se for per-

Pr
e

mitido escolher fraes de objetos;

lim

a, b, c, existem inteiros positivos x e y tais que


ax2 + by = c? Este problema fcil quando aceitamos solues no-inteiras,
mas N P -completo se exigirmos solues inteiras.

dados os inteiros positivos

O problema de programao linear, que pode ser resolvido ecientemente


quando solues racionais so admissveis, mas

N P -completo

quando as

solues devem ser inteiras.

C.7.3

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

casos. As prximas subsees descrevem duas situaes em que problemas

N P-

difceis so resolvidos de maneira eciente (a primeira impe restries adicionais

Ve
rs

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.


Seja

mk o valor que pode ser obtido com peso menor ou igual a k .


m0 = 0. Podemos denir os valores de mi recursivamente:

Eviden-

temente,

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

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

390

aquele que, somado a alguma soluo para mochila menor, resulta em maior
valor.

lim

mochila(v, w, C):
m0 0
para i de 1 a n:
x0
para j de 1 a C:
se vj i: // este item cabe
x max(x, mivj )
mi max(mi1 , x)
retorne mn

in
ar

O pseudo cdigo do algoritmo mostrado a seguir.

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


valores iguais a
mostra como o

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

Pr
e

0
0
0
0
0
0
0

0
0
0
0
0
13
13

0
0
0
0
0
0
15

A soluo tima nos d valor igual a quinze, com uma unidade do item 4 e trs
unidades do item 2 (o valor

1 9 + 3 2 = 15 e o peso 1 4 + 3 1 = 7). J

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 exponenIsso porque a capacidade

Ve
rs

cial.

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.

O(n2k ),

ou

O2k ,

onde

o nmero de bits

De qualquer forma, se estivermos interessados em

instncias do problema onde

sempre limitado a um nmero relativamente

pequeno, o problema tratvel.


Problemas onde a entrada seja uma quantidade numrica normalmente po-

dem ser resolvidos dessa forma.

Dizemos que estes algoritmos executam em

tempo pseudopolinomial.

Algoritmos de aproximao
Muitas vezes, apesar de no conseguirmos algoritmos ecientes para resolver
de maneira exata problemas de otimizao

N P -completos,

solues que se aproximam da soluo tima.

podemos encontrar

notas de aula  verso 90 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

391

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.

in
ar

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
de cada vez, no haver confuso.

Nas denies que seguem, usaremos esta

notao.
Idealmente, para toda instancia

de

P,

gostaramos de obter algoritmos

ecientes que nos dessem solues diferindo da tima apenas por uma constante.
A isso damos o nome de aproximao absoluta.

lim

Denio C.46 (Aproximao absoluta). Dizemos que


absoluta para o problema se existe uma constante

I,

uma aproximao

tal que para toda instancia

|A(I) OP T (I)| k.

Um problema para o qual existe algoritmo de aproximao absoluta o da

Pr
e

colorao de vrtices em grafos planares.

Todo grafo planar pode ser colorido com no mximo seis cores, portanto
podemos tentar colorir o grafo com menos cores, e se no conseguirmos, usamos
seis. O seguinte algoritmo implementa esta estratgia.

2-colorao

de grafo bipartido muito simples. Obter uma

Ve
rs

Obter

aprox_colore_vertices(G):
se E = :
retorne uma unica cor
se G e bipartido:
retorne uma 2coloracao
senao
retorne uma 6coloracao

6-colorao

de um grafo planar qualquer pode ser feito em tempo polinomial.


H problemas que no admitem aproximao absoluta.

Um deles o da

mochila.

Teorema C.47. se

P=
6 N P,

no existe aproximao absoluta para o problema

da mochila.

O Exerccio 223 pede a demonstrao deste Teorema; a demonstrao est

na Apndice com as solues, e recomendvel estud-la, porque o mesmo


raciocnio aplicvel a diversos outros problemas, como TSP e CONJUNTO-

INDEPENDENTE.

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.

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Denio C.48 ((n)-aproximao). Dizemos que


para o problema se existe uma funo

()

OP T (I)
A(I)
p(n)
para problemas de otimizao, ou

A(I) p(n)OP T (I)


onde

|I|, o tamanho da instancia.


(n) constante, dizemos

Quando

que

uma

(n)-aproximao
I,

tal que para toda instncia

uma

in
ar

392

k -aproximao.

()

lim

Claramente, nos interessa obter algoritmos com fator de aproximao dado


por alguma funo

que cresa lentamente.

O problema da cobertura de grafos por vrtices

COBERTURA-POR-VERTICES: dado um grafo


0

positivo

K,

determinar se existe

que toda aresta de


H uma

V V

N P -completo.
G = (V, E) e um

de tamanho menor ou igual a

tem pelo menos um de seus vrtices em

2-aproximao

inteiro

tal

V 0.

para COBERTURA-POR-VERTICES.

Pr
e

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 225 pede a demonstrao desta Proposio.

Ve
rs

Proposio C.49. O algoritmo

aprox_vertex_cover

tem complexidade de

tempo polinomial.
Mostramos agora que o algoritmo realmente encontra uma por vrtices.

Teorema C.50. O algoritmo


grafo

aprox_vertex_cover

retorna uma cobertura do

por vrtices.

Demonstrao. O algoritmo percorre todas as arestas do grafo, e para cada uma


delas garante que haver um de seus vrtices na soluo, portanto o resultado

deve ser uma cobertura por vrtices.

Teorema C.51. O conjunto de vrtices retornado por

aprox_vertex_cover
G por

no mximo duas vezes maior que o tamanho da cobertura tima de


vrtices.

notas de aula  verso 90 - Jernimo C. Pellegrini

C.7.

REDUES E COMPLETUDE

393

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

in
ar

Demonstrao. Seja

|C| = 2|A|

Qualquer cobertura, por denio, deve ter no mnimo um vrtice incidindo em

OP T (I)

uma cobertura de

|E| |OP T (I)|.


Mas

A E ,

e portanto

E,

lim

cada aresta. Como

|E| OP T (I).
|A|
Temos ento que

2OP T (I).
|C| = 2|A|

Pr
e

C.7.4

Outros problemas N P -completos

N P -completos.

A seguir h uma lista com alguns problemas

SAT: dada uma frmula booleana, existe alguma atribuio de variveis


que torne a frmula verdadeira?

3SAT (descrito no texto);

3COLOR (descrito no texto);

CLIQUE (descrito no texto);

COBERTURA-POR-VERTICES (descrito na pg. C.7.3);

COLORAO-DE-VRTICES: dado um grafo

Ve
rs

G = (V, E) e um inteiro
K , determinar se possvel associar cores aos vrtices, usando no
mximo K cores e sem que vrtices adjacentes tenham a mesma cor;
positivo

X3C (COBERTURA-EXATA-POR-3-CONJUNTOS): dado um conjunto

com tamanho mltiplo de trs e uma coleo

cada um de tamanho trs, existe em


seja, h

em

C0 C

de subconjuntos de

uma cobertura exata para

tal que cada elemento de

X?

X,

(Ou

ocorre exatamente uma vez

?)

A eP
um tamanho s(a) para cada
P
a A, existe um subconjunto A A tal que aA0 s(a) = aA\A0 s(a)?

PARTICAO: Dado um conjunto nito


0

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

394

SOMA-SUBCONJUNTO (descrito no texto);

COBERTURA-DE-CONJUNTO (descrito no texto);

CONJUNTO-DOMINANTE (descrito no texto);

in
ar

PRODUTO-SUBCONJUNTO: Dados um conjunto nito


inteiro positivo

b,

s(ai )

para cada elemento

a0 A
exatamente b?

existe um subconjunto

elementos de

ai A

TETRIS (descrito no texto);

COBERTURA-POR-VERTICES: dado um grafo

lim

CICLO-HAMILTONIANO (descrito no texto);

por vrtices de tamanho

um tamanho

tal que o produto dos tamanhos dos

de

A,

e um inteiro positivo

K?

G, existe uma cobertura

(Uma cobertura por vrtices um

conjunto de vrtices que toca em todas as arestas do grafo).

EQUACAO-DIOFANTINA-QUADRATICA (descrito no texto);

CONGRUENCIA-QUADRATICA: Dados inteiros positivos


2

x<b

tal que

a, b, m, c, existe

x a (mod m)?

Pr
e

algum inteiro

sobre o conS = {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 ?

GERACAO-DE-PERMUTACAO: dada uma permutao


junto de inteiros

EMPACOTAMENTO-DE-CONJUNTO: Dada uma coleo


tos e um inteiro positivo

k |C|,

determinar se

de conjun-

contm pelo menos

conjuntos mutuamente disjuntos.

SBP: Dada uma base para um reticulado

Ve
rs

menor base que gera

L.

e uma norma, determinar a

O tamanho da base a norma de seu maior vetor.

SVP: dada uma base de um reticulado

e uma norma, determinar o

menor vetor do reticulado.

CVP: dada uma base de um reticulado


n
0

, determinar o ponto

p L

L,

uma norma e um ponto

mais prximo de

em

p.

C.8 Problemas indecidveis


H problemas para os quais pode-se provar que no h algoritmo (e portanto
no faz sentido falar em complexidade de tempo).

Denio C.52 (Problema indecidvel). Um problema indecidvel se no


existe algoritmo que determine, em tempo nito, sua soluo.

notas de aula  verso 90 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

395

O mais conhecido problema indecidvel o problema da parada.

Denio C.53 (Problema da Parada). Seja (A) a descrio de um algoritmo A


Dados

(A), x, em algum momento

in
ar

x uma entrada qualquer para o algoritmo a.


A vai parar?

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.

lim

Teorema C.54. O problema da parada indecidvel.

para(P, e)

Demonstrao. (Idia supercial) Suponha que existe um procedimento


que decide se um programa

para quando executado com entrada

e.

Podera-

mos ento construir os dois procedimentos a seguir.


Primeiro, para entrada

(P, e), confunde

para quando

versa.

Finalmente,

diagonal(x)

diagonal(x):
confunde(x, x)

aplica confunde com argumentos (x, x).

diagonal(diagonal)  ou seja, damos a diagonal uma desdiagonal para se e somente se

Podemos executar

no para, e vice-

Pr
e

confunde(P, e):
se nao para(P, e) // P no para
retorne SIM
senao
// P para
nao pare nunca

crio de seu prprio cdigo. Temos ento que

no para. Tendo chegado a este absurdo, refutamos a possibilidade

para

Ve
rs

diagonal

do procedimento

existir.

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
forma semelhante s demonstraes de que problemas so

C.9

N P -difceis.

Mquinas de Turing

A denio de complexidade de tempo para algoritmos dada no incio deste


Captulo menciona quantidade de operaes, que podemos contabilizar nos

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

396

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.

in
ar

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:

lim

1. L um smbolo da ta

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.

Pr
e

i.

Para que direo mover a cabea de leitura e gravao (denotamos


esquerda por

iii.

e direita por

.).

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

q4 ,

q2

escreva  x onde

estava o  a e mova a cabea para a esquerda.


A Figura a seguir mostra o diagrama de uma mquina de Turing em execuo
 seu estado interno

q3

e sua cabea de leitura e gravao est sobre uma clula

Ve
rs

da ta onde h o smbolo c. O programa (funo de transio) da mquina


no mostrado.

q3
a b b c a c d a

Uma maneira de representar mquinas de Turing como um grafo. A pr-

xima 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

q2 .

notas de aula  verso 90 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

q0

start

397

q1

1, 1, .

1, 1, .

0, 0, .

1, 1, .

q2

0, 0, .

in
ar

0, 0, .

Este autmato sempre grava o mesmo smbolo que leu, e portanto no muda
5

a ta .

formalmente como uma tupla

lim

Denio C.55 (Mquina de Turing). Uma mquina de Turing denida

(Q, q0 , QA , QR , , ),

onde

Q = {q0 , q1 , q2 , q3 , qk } o conjunto (nito) de estados em que a mquina


pode estar;
o estado inicial;

QA , QR Q

so conjuntos de estados de aceitao e rejeio. A mquina

Pr
e

q0 Q

pra de computar ao entrar em um destes estados;

o alfabeto da mquina. Cada smbolo

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.

Ve
rs

O autmato do exemplo anterior pode ento ser representado como a tupla

(Q, q0 , { q2 } , , , ),

onde

Q = { q0 , q1 , q2 }, = { 0, 1 }

(q0 , 1 q1 , 1, .), (q2 , 0 q0 , 0, .),


= (q0 , 0 q2 , 0, .), (q2 , 1 q1 , 1, .), .

(q1 , 1 q1 , 1, .), (q1 , 0 q2 , 0, .)

Dizemos que uma mquina de Turing reconhece uma cadeia se, quando iniciada
com a cadeia gravada na ta, atinge o estado de aceitao.

Similarmente, a

mquina de Turing pode rejeitar uma cadeia se chegar ao estado de rejeio.


Note que nada impede que uma mquina de Turing entre em loop, executando
passos sem nunca chegar em

q QA ou em q QR

( exatamente o que acontece

com o exemplo anterior).

5 Na

verdade, o leitor familiarizado com Linguagens Formais reconhecer que esta mquina

de Turing simula um autmato nito.

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

398

Denio C.56 (Linguagem Turing-reconhecvel). Uma linguagem Turingreconhecvel se existe alguma mquina de Turing que a reconhece.

in
ar

Denio C.57 (Linguagem Turing-decidvel). Uma linguagem Turing-decidvel


se existe alguma mquina de Turing que a decida, e indecidvel se tal mquina

de Turing no existe.

As instncias de um problema indecidvel constituem uma linguagem inde-

cidvel.

Exemplo C.58 (Linguagem Turing-decidvel: primos). O conjunto dos n-

meros primos uma linguagem Turing-decidvel, porque existe algoritmo que


decide se um nmero

pertence linguagem (e sempre para, independente de

lim

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

LZ33

Pr
e

zero por multiplicaes. A linguagem

3 3 onde se pode obter a matriz


J

no Turing-decidvel.

fcil vericar a validade do Teorema a seguir.

Teorema C.60. Uma linguagem

decidvel se tanto

como seu comple-

mento 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

Ve
rs

tempo de execuo  mas no de polinomial para exponencial. Esse na verdade


o que diz a Tese de Church-Turing.
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.


i)

ii)

O procedimento descrito em um nmero nito de instrues;


H dispositivos para armazenar e recuperar dados (lpis e papel ou a
memria de um computador) durante a execuo do algoritmo;

iii)

As instrues em

(i)

podem ser seguidas por um agente (uma pessoa),

sem uso de criatividade ou dispositivos adicionais alm dos dispositivos


descritos em

(ii);

notas de aula  verso 90 - Jernimo C. Pellegrini

C.9.
iv)

MQUINAS DE TURING

399

Os passos de computao so discretos, sem o uso de qualquer dispositivo


analgico;

v)

Os passos de computao so determinsticos, sem o uso de dispositivos

Vale notar que

(v)

in
ar

aleatreos como dados.

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

lim

Notas

Para uma exposio mais detalhada de tcnicas para anlise de algoritmos veja
os livros de Cormen, Leiserson, Rivest e Stein [70] e de Papadimitriou e Vazirani [80, 203]. 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 [177].

Pr
e

Uma abordagem usando Mquinas de Turing pode ser encontrada nos livros
de Sipser [245] e de Lewis e Papadimitriou [169].

Tcnicas para resoluo de recorrncias no contexto de anlise de algoritmos


so dadas por Cormen e outros [70] e por Graham, Knuth e Patashnik [121].
O livro de Gilles Brassard e Paul Bratley [40] aborda recorrncias de forma
bastante rigorosa. Sedgewick e Flajolet [225] do uma exposio mais profunda.
O assunto tambm tema da literatura de Anlise Combinatria  no livro
introdutrio de Plnio Santos, em Portugus [220] e no de Peter Cameron [49].
O Teorema Mestre normalmente apresentado a estudantes de Cincia da

Computao no incio do curso de Anlise de Algoritmos. Este , na verdade,


um caso particular do Teorema de Akra-Bazzi, que se aplica a recorrncias da

Ve
rs

forma

T (n) = g(n) +

l
X

ai T (bi n + hi n)

i=1

O Teorema de Akra-Bazzi foi demonstrado em 1998 [4].


Uma tcnica importante para anlise de algoritmos que no coberta neste

Apndice a anlise amortizada. O livro de Cormen e outros [70] uma boa


referncia para o assunto.

H tambm tcnicas de projeto de algoritmos no discutidas aqui: algoritmos

gulosos, programao dinmica e backtracking, por exemplo.


No abordamos tambm a anlise de algoritmos paralelos.
O primeiro problema a ser demonstrado

N P -completo foi o SAT (satisfatibi-

lidade de frmula booleana) independentemente por Stephen Cook [66] e Leonid


Levin [168]. 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 [245] e de

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

400

Hopcroft, Motwani e Ullman [138] ou a prova de

SAT no livro de Cormen e outros [70].

N P -completude do CIRCUIT-

Garey e Johnson ilustram redues

usando a tcnica de projeto de componentes [103].

N P -difcil

43].
H, alm de

A demonstrao de que

foi dada por Demaine, Hohenberger e Liben-Nowell [85,

in
ar

TETRIS

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 [103] 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.

e outros [17].

Um catlogo mais atual est no livro de Ausiello

Livros que tratam de Complexidade Computacional incluem o

lim

de Arora e Barak [10], o de Papadimitriou [202], o de Immerman [144] e o de


Goldreich [106].

Algoritmos aproximados (ou de aproximao) so uma das maneiras de lidar com problemas

N P -difceis; o livro de Vazirani [258] trata destes algoritmos,

e o handbook organizado por Gonzalez cobre o assunto em maior exausto [119].


Introdues mais curtas e simples so normalmente includas em livros sobre
Complexidade Computacional, como o de Papadimitriou e Vazirani [80] e o de
O Captulo dezesseis do livro de Korte e Vygen [163]

Pr
e

Cormen e outros [70].

compacto, porm mais denso que as introdues dos outros dois livros. Em
Portugus h o livro de Carvalho e outros [53]. A tese de doutorado de Viggo
Kann [155] 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.
Esta proposta conhecida como o programa de Hilbert, que inclua a decidibi-

Ve
rs

lidade 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 Numbers,
with an Application to the Entscheidungsproblem em 1936 [255, 256]. Alonzo
Church props o

-Clculo

em 1930 [58]; Stephen Kleene desenvolveu a teo-

ria das funes recursivas, comeando em 1936 [159, 158]; h diversos outros
modelos, como o de Emil Post [209].

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.

notas de aula  verso 90 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

401

O livro de Martin Davis [82] d uma excelente introduo a Mquinas de


Turing. O livro de Nigel Cutland [77] expe computabilidade usando funes
recursivas. Um excelente livro, avanado mas j bastante antigo, sobre funes
introduo tese de Church-Turing.

in
ar

recursivas o de Hartley Rogers [218], que d tambm uma breve mas excelente
O livro de Barry Cooper [68], 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 [83].

H muitos bons livros abordando Linguagens Formais. Dentre os introdutrios destacamos o de Michael Sipser [245] e o de John Hopcroft, Rajeev Motwani
e Jerey Ullman [137]. O livro de Jerey Shallit, para estudo avanado, muito
bom [226].

Para uma introduo e re-

lim

Grafos so denidos en passant na Seo C.2.

ferncia Teoria dos Grafos, o livro de Adrian Bondy e U. S. R. Murty

[37]

muito muito bom. O livro de Bla Bollobs [36] tambm muito bom, com
uma perspectiva um tanto diferente. Outra boa introduo dada no livro de

Exerccios

Pr
e

John Harris, Jerey Hirst e Michael Mossingho [125].

Ex. 199  Prove a Proposio C.2.


Ex. 200  Resolva as recorrncias.

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

Ve
rs

a)

g)

h)

Ex. 201  Analise a complexidade de tempo do algoritmo usual (usado com


lpis e papel) para multiplicao de polinmios.

Ex. 202  Analise a complexidade de tempo do algoritmo para clculo de


7

determinante de matrizes usando expanso de Laplace .

Ex. 203  Tente conseguir um algoritmo para clculo de determinante com


complexidade assinttica de tempo melhor que a do mtodo ingnuo do Exerccio 202

6 Uppaluri Siva Ramachandra Murty, que prefere usar U.


7 Ou seja, usando cofatores e menores complementares.

S. R. Murty.

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

402

Ex. 204  Qual a complexidade de tempo do algoritmo usual de diviso


para dois inteiros que possam ser representados com

dgitos decimais? E se

soubermos apenas que os nmeros podem ser representados com

bits?

Gauss para soluo de sistemas de equaes lineares.

in
ar

Ex. 205  Determine a complexidade de tempo do mtodo da eliminao de

Ex. 206  Na Seo C.5 dissemos que nmeros de Carmichael so mais raros que nmeros primos.
Carmichael antes de

a quantidade de nmeros de

a quantidade de primos antes de

k log x log log log x


log log x

x.

Sabendo que

lim

C(x) < x exp


para alguma constante

C(x)

Denotamos por

(x)

k , calcule a probabilidade de erro do teste de primalidade

apresentado naquela mesma Seo, que usa o pequeno Teorema de Fermat.

Ex. 207  Determine a complexidade de tempo do mtodo de Newton-Raphson


para obteno de raiz de funes reais.

Pr
e

Ex. 208  Torres de Hani um problema bastante conhecido. trs hastes,


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


iii) Um disco menor nunca pode car embaixo de um maior.
Considere o seguinte algoritmo que move
usando a haste

Ve
rs

P ARA,

AU X

discos da hasta

DE

para a haste

como auxiliar, e responda as duas questes.

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. 209  Considere a seguinte denio de o-pequeno:

notas de aula  verso 90 - Jernimo C. Pellegrini

MQUINAS DE TURING

403

Denio C.61 (Notao assinttica o-pequeno). Sejam


es de uma varivel. Dizemos que

f (x) o(g(x))

lim

Prove que

f (x) e g(x) duas fun-

se e somente se

f (n)
=0
g(n)

in
ar

C.9.


f (x) o(g(x)) implica que f (x) O(g(x)), mas a recproca no vale.

Ex. 210  Prove que os trs casos do Teorema Mestre para recorrncias so
mutuamente excludentes.

Ex. 211  Prove o Teorema-Mestre para recorrncias.

lim

Ex. 212  Determine a complexidade assinttica para a quantidade de somas


nos trs algoritmos de multiplicao de matrizes discutidos neste Apndice.

Ex. 213  Prove que qualquer rvore com mais de um vrtice tem pelo menos
duas folhas.

Ex. 214  Considere uma clique qualquer

Kn .

So necessrias

cores para

Pr
e

colorir seus vrtices. Quantas arestas precisam ser removidas desta clique para
que seja possvel colori-la com
de cores?

n1

cores? E para quantidades ainda menores

Ex. 215  Tente resolver a instncia do 3SAT dada no Exemplo C.43. Caso
haja uma atribuio de variveis, mostre-a.

Ex. 216  Prove que o seguinte problema

N P -completo.
G = (V, E)

COBERTURA-POR-ARESTAS: dado um grafo


0

K,

determinar se existe

todo vrtice de

E E

e um inteiro po-

de tamanho menor ou igual a

pertence a uma aresta em

sitivo

tal que

E0.

Ex. 217  Apresentamos um algoritmo na Seo C.7.3 para determinar o va-

Ve
rs

lor 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. 218  Na pgina 391 dissemos que colorir um grafo bipartido com duas
cores em tempo polinomial simples. Mostre o algoritmo.

Ex. 219  Provamos (Teorema C.42) somente que CONJUNTO-DOMINANTE

N P -difcil.

Prove tambm que o problema est em

N P.

Ex. 220  Prove que o seguinte problema

N P -completo
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.
ARVORE-DE-STEINER: Dado um grafo

Ex. 221  Prove que o problema a seguir

N P -difcil.

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE C. COMPLEXIDADE COMPUTACIONAL

404

SOBREVIVENCIA-DE-REDE: Um grafo
(racional) de falha

G = (V, E),

uma probabilidade

para cada vrtice e cada aresta, e um nmero racional

f a
(u, v)

Presuma que as falhas em arestas e vrtices so independentes. Seja

probabilidade de que, para todos

(u, v) E ,

pelo menos um dentre

q f.

falhar. Determinar se

u, v

in
ar

q 1.

p(x)

Ex. 222  Prove que CIRCUITO-HAMILTONIANO

N P -completo.

Ex. 223  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. 224  Mostre um grafo para o qual o algoritmo

aprox_vertex_cover

lim

retorna uma soluo exatamente duas vezes maior que a tima.

Ex. 225  Demonstre o Teorema C.49

Ex. 226  Prove que as seguintes modicaes em mquinas de Turing no


mudam seu poder computacional (ou seja, mostre que possvel simular estas
novas mquinas em uma mquina de Turing comum):

a) Muitas tas: a cada passo, a mquina de Turing pode ler e escrever em

Pr
e

uma de duas tas.

b) Fita multidimensional: a mquina de Turing passa a poder ler e escrever


em um espao de

dimenses, movendo-se em

2n

direes.

c) Acesso aleatrio: 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.

Ex. 227  Porqu, ao denir a classe

PSPACE ,

dissemos que no faz dife-

Ve
rs

rena se o problema pode ser resolvido por algoritmo determinstico ou nodeterminstico?

Ex. 228  Prove o Teorema C.32.


Ex. 229  No Exemplo C.59, declaramos que o problema da mortalidade de
matrizes

33

indecidvel, e pelo Teorema C.60 a linguagem ou seu comple-

mento no deve ser Turing-reconhecvel. Determine qual delas.

Ex. 230  Considere uma variante de mquina de Turing onde a ta tro-

P1 e P2 . O alfabeto das pilhas


, e = {}; a funo de transio do autmato : Q 2 Q 2 .

cada por duas pilhas (de tamanho ilimitado),

Prove que esta variante equivalente em poder computacional a uma mquina


de Turing comum.

Apndice D

lim

Transformada de Fourier

in
ar

notas de aula  verso 90 - 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
f (x) uma

do tempo para o domnio da frequncia, porque


funo

a transformada de

F (k) : W C,

Ve
rs

(innito) de todas as possveis frequncias.

405

onde

o conjunto

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE D. TRANSFORMADA DE FOURIER

406

se
se
se

|x| > 1/2


|x| = 1/2
|x| < 1/2.

Pr
e

lim

0
s(x) = 1/2

in
ar

Considere a funo retngulo,

As Figuras a seguir mostram a aproximao sucessiva de

s usando primeiro uma

Ve
rs

frequncia apenas, depois duas, quatro e nalmente dezenove frequncias.

notas de aula  verso 90 - Jernimo C. Pellegrini

D.1. TRANSFORMADA DE FOURIER

Ve
rs

Pr
e

lim

in
ar

407

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE D. TRANSFORMADA DE FOURIER

408

s(x) = cos(2x)
s(x) = cos(2x) (1/3) cos(6x)

in
ar

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

lim

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

A transformada inversa de Fourier

F (k)e2ikx dk

Pr
e

f (x) =

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

Ve
rs

em partes real e imaginria:

F (k) = R(k) + iI(k).

Reescrevendo este nmero em forma polar obtemos

onde

F (k) = |F (k)| + ei(k) ,

|F (k)| a magnitude e (k) o ngulo de fase para esta frequncia.

Tendo

ngulo de fase, frequncia e magnitude, denimos completamente uma senoide


(ou cossenoide). Uma cossenoide, por exemplo, descrita por

onde

a amplitude,

cos(x )

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,


o ngulo de fase e o espectro de potncia, dado por

|F (k)|2 = R(k)2 + I(k)2 .

notas de aula  verso 90 - Jernimo C. Pellegrini

D.2. TRANSFORMADA DISCRETA DE FOURIER

409

D.2 Transformada discreta de Fourier


Uma funo peridica discreta pode ser decomposta em uma soma nita de
Se modicarmos a integral da transformada de Fourier para o caso

discreto, obteremos a transformada discreta de Fourier (DFT):

Fn =

N
1
X

fk e(2ink)/N

k=0
A inversa da DFT

Cada um dos coecientes


as

Fk

N 1
1 X
Fn e(2ink)/N
N n=0

lim

fk =

in
ar

senoides.

da DFT representa uma senoide; a soma de todas

senoides coincidir com a funo

nos pontos dados.

Uma troca de variveis pode tornar a notao um pouco menos carregada:


se zermos

N = e(2i)/N ,

a DFT pode ser escrita como

N
1
X

nk
fk N
,

Pr
e

Fn =

(D.1)

k=0

observando que

e(2i)/N

uma raiz da unidade para

C.

evidente que a DFT linear: podemos reescrev-la tambm na forma de


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

Ve
rs

D.2.1

.
.
.

N 1

1
2
4

..
.
2(N 1)


f0

f1
2(N 1)
..
.
.
.

.
fN
(N 1)(N 1)
N 1

Transformada rpida de Fourier

O algoritmo ingnuo para clculo da transformada discreta de Fourier tem complexidade de tempo

O(N 2 ):

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

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE D. TRANSFORMADA DE FOURIER

410

H um algoritmo melhor, com complexidade

O(n log(n)),

conhecido como

transformada rpida de Fourier (ou FFT, Fast Fourier Transform ).


Comeamos o desenvolvimento da FFT dividindo a o clculo de

Fn ,

dado

in
ar

pela soma na Equao D.1 em duas partes: uma para os ndices mpares e outra
para os ndices pares.

(N/2)1

Fn =

(N/2)1
2kn
(f2k )N

k=0
2kn
Como N

(2k+1)n

(f2k+1 )N

k=0

kn
N/2
, reescrevemos

(N/2)1

(N/2)1

nk
(f2k )N/2

k=0

(N/2)1

nk
(f2k )N/2
+

k=0

(2kn)

(f2k+1 )N

n
N

k=0

(N/2)1

(2kn+n)

(f2k+1 )N

k=0

(N/2)1

lim

Fn

(N/2)1

kn
n
(f2k )N/2
+ (N
)

Conseguimos agora reescrever

kn
(f2k+1 )N/2
.

k=0

Pr
e

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

Ve
rs

construdo usando

f0

f 1.

fft(f, ):
N tamanho(f )
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

notas de aula  verso 90 - Jernimo C. Pellegrini

D.2. TRANSFORMADA DISCRETA DE FOURIER


As chamadas recursivas a
para

N/2.

fft

usam

411

porque esta uma raiz da unidade

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

so divididas em duas sequencias iguais a no ser pelo sinal. Por

N = 8,

in
ar

temos

80

81
82
83
80
81
82
83

= i

= i i
= 1

= i

lim

potncias de

exemplo, para

= i

= i i.

Isto imediatamente claro quando visualizado no plano complexo.

Pr
e

i i

i i

Este algoritmo da maneira como foi apresentado s pode ser usado quando o
tamanho do vetor uma potncia de dois. possvel adaptar o algoritmo para
que funcione tambm com vetores de tamanho arbitrrio.

Ve
rs

Teorema D.1. O algoritmo FFT tem complexidade

O(n log(n)).

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

Esta demonstrao presume que a exponenciao de

conforme a

demonstrao de Teorema C.4 na Seo C.1.1.

(que complexo)

no tem impacto sobre o tempo de execuo do programa. Como as potencias


de

so usadas em sequncia (

multiplic-la por

, 1 , . . .,

a cada iterao do lao

pode-se usar uma nica varivel e

for.

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE D. TRANSFORMADA DE FOURIER

412

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

zero:

Z
F (k)

=
=
=

+,

ser

in
ar

cossenoides, porque a integral das senoides, que calculada de



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

Assim, a transformada do cosseno dada por

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

Pr
e

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

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

Ve
rs

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)

onde

N
1 N
1
X
X


fx,y cos

x=0 y=0

q
1
N
c(k) = q
1

2N




(2x + 1)u
(2y + 1)v
cos
2N
2N

se

k=0

se

k>0

notas de aula  verso 90 - Jernimo C. Pellegrini

D.3. TRANSFORMADA DO COSSENO

D.3.1

413

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

in
ar

concentra mais informao nas frequncias mais baixas.

Notas

A possibilidade de representao de funes arbitrrias como somas de senoides


e cossenoides foi explorada por Joseph Fourier, quando estudava conduo do
1

calor .

O algoritmo para a transformada rpida de Fourier foi exposto em 1965 por

lim

James Cooley e John Tuckey [67] mas j aparecia, ainda que sem destaque,

em obras anteriores (como em um trabalho de Gauss em 1905, por exemplo).


Aps a exposio de Cooley e Tuckey surgiu um grande nmero de aplicaes
da DFT em Engenharia e Fsica, sendo comum que se diga que aquele trabalho
possibilitou uma drstico desenvolvimento de diversas tecnologias. A histria
da FFT esboada muito brevemente no primeiro Captulo do livro de Briggs
e Henson [44], e registrada de maneira detalhada em um artigo de Heideman,

Pr
e

Johnson e Burrus [129].

Os livros de Brigham [45] de Briggs e Henson [44] 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 [70]
(que apresenta diversas otimizaes), de Press, Teukilsky, Vetterling e Flannery [210] e Berman e Paul [26] (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 [251].

Ve
rs

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

o kernel da trans-

A transformada de Fourier uma transformada integral com

(e2ixt ), a =

b = +.

K =

O livro de Davies [81] uma introduo muito

bem redigida s transformadas integrais. Uma descrio mais densa dada por
Brychkov e Prudnikov [46].
A transformada discreta do cosseno foi descrita pela primeira vez em 1974

por Ahmed, Natarajan e Rao [2]. O livro de Shih [234] e o handbook organizado

por Rao e Yip [213] trazem descries detalhadas da DCT com aplicaes em
compresso e processamento de imagens.

1 Em

seu trabalho Teoria Analtica do Calor [95] publicado em 1822, Fourier introduziu

contribuies importantssimas Fsica e Matemtica.

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE D. TRANSFORMADA DE FOURIER

414

Exerccios
a)

f (x) = sen (x)ex

b)

f (x) = x3 x2

in
ar

Ex. 231  Determine a transformada de Fourier de:

Ex. 232  Determine a transformada inversa de Fourier de:


a)

H(f ) =

sen (2f T )
2f

b)

H(f ) =

cos(2(1f )
2f

Ex. 233  Aplique a FFT (sem ajuda de computador, usando o algoritmo

lim

em lpis e papel) na sequinte sequncia de pontos:

(0, 0.5, 50, 4)

Ex. 234  Em nossa exposio da FFT, presumimos que

potncia de

dois. Mostre como adaptar o algoritmo para o caso geral.

Pr
e

Ex. 235  Partindo da exposio dada neste Apndice, tente reescrever o desenvolvimento do algoritmo para a FFT usando apenas a formulao matricial.

Ve
rs

Ex. 236  Implemente a FFT.

Apndice E

lim

Descrio Detalhada de
Construes

in
ar

notas de aula  verso 90 - 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.
415

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

IP

Pr
e

lim

in
ar

416

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

DES

E.1.2

417

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

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

Pr
e

lim

in
ar

418

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

E.1.

DES

419

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

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

420

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

E.1.

DES

Tanto

C0

421

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

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

Pr
e

lim

in
ar

422

E.2 SHA-1

O SHA-1 usado na forma da construo de Merkle-Damgrd e tem sada de

Ve
rs

160 bits. As operaes usadas so:

A B:

operao de OU lgico bit-a-bit;

A B:

operao de E lgico bit-a-bit;

A B:

operao de ou exclusivo lgico bit-a-bit;

A:

operao de negao lgica bit-a-bit;

A + B:

operao de soma mdulo

rotlB (A):

rotao dos bits de

32;

esquerda por

O tamanho da entrada deve ser no mximo

264 1

posies.

bits.

Antes do clculo do resumo, o SHA-1 transforma a entrada em uma srie de

blocos de tamanho

512

bits:

y = x || 0z || l

notas de aula  verso 90 - Jernimo C. Pellegrini

SHA-1

onde

423

por

x; l

a representao binria do nmero de bits de

quantidade de zeros (z ) deve ser suciente para que

512.

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

(x) 1 0000000 101110111000


ou seja, a mensagem

512

bits.

com 3000 bits seguida de um bit um, sete zeros e o

nmero 3000 em binrio. O total de bits


blocos de

3000

Teremos ento a entrada

in
ar

E.2.

3072,

que pode ser dividido em

bits.

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

lim

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
Cada

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

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE E. DESCRIO DETALHADA DE CONSTRUES


O algoritmo usa constantes

Kt

e funes

5A827999

6ED9EBA1

Kt =
8F1BBCDC

CA62C1D6

ft

para
para
para
para

que dependem da rodada:

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

para

para

para

para

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

lim

(B C) ((B) D)

B C D
ft (B, C, D) =

(B C) (B D) (C D)

BC D

in
ar

424

Pr
e

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

Ve
rs

E.3 AES
E.3.1

Quantidade de rodadas

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

AES

E.3.2

Escalonamento de chaves

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

Por exemplo,
Em

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

e4

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

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

substitudo por

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

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

da matriz.

Pr
e

0
63
ca
b7
04
09
53
d0
51
cd
60
e0
e7
ba
70
e1
8c

0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f

Ve
rs

in
ar

425

lim

E.3.

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

426

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

E.3.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. 237  Implemente as cifras e teste-as. Compare o desempenho de sua

Ve
rs

implementao com outras implementaes.

Ex. 238  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 90 - 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,

Pr
e

Resp. (Ex. 3)  Para calcular a probabilidade de sucesso de

consegue cinco cartas com o mesmo naipe.

consegue exatamente quatro cartas com o mesmo

naipe.

Tratamos primeiro o caso (i). A probabilidade de


mesmo naipe inicialmente

13
5

52
5

conseguir cinco cartas do

Quando houver a troca da ltima carta, a nova carta ser escolhida dentre as 47

Ve
rs

cartas que sobraram, e destas, oito so do naipe correto. Assim, a probabilidade


de sucesso de

no caso (i)

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

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE F. RESPOSTAS E DICAS

428

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 209, na pgina 402) 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

n < 2k < 2n.


n/(2k )  que

A cada lao do programa, o


o caso em que

x < n.

Calcule

o tempo esperado de execuo.

Resp. (Ex. 32)  H muitas maneiras de faz-lo. (i) Tente observar a sada
do gerador aos pares,

(x0 , x1 ), (x1 , x2 ), (x2 , x3 ), . . .

tribuem no plano. (ii) Use testes estatsticos.

e verique como eles se dis-

notas de aula  verso 90 - Jernimo C. Pellegrini

429

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

APNDICE F. RESPOSTAS E DICAS

430

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

431

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

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

este cdigo no 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 90 - Jernimo C. Pellegrini

APNDICE F. RESPOSTAS E DICAS

432

Resp. (Ex. 148)  O one-time pad, por exemplo, suportaria encriptao negvel. Este pode ser um ponto de partida.

in
ar

Resp. (Ex. 149)  A encriptao bit-a-bit, exigindo um pad do tamanho


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

Oh! maravilha!

Que adorveis criaturas temos aqui!

Pr
e

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

Temos ento que

432 = 2 216

escolhido dentre todos os inteiros

notas de aula  verso 90 - Jernimo C. Pellegrini

433

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

APNDICE F. RESPOSTAS E DICAS

434

Resp. (Ex. 189)  Seja

o anel comutativo. Construa um anel

trizes quadradas com elementos de

O(n2 ), onde n o maior grau dos dois


O(om), onde o e m so a quantidade

in
ar

polinmios. Uma estimativa mais justa

de termos diferentes de zero em cada polinmio.

O(n!),

onde

de ma-

R.

Resp. (Ex. 201)  De maneira geral,

Resp. (Ex. 202) 

R0

o nmero de linhas da matriz

Resp. (Ex. 203)  Use decomposio

LU P

ou escalonamento (o determi-

lim

nante de uma matriz triangular o produtrio da sua diagonal; s necessrio


corrigir o sinal caso tenha havido troca de linhas).

Resp. (Ex. 208)  (a) Sim (use induo). (b)

O(2n ).

cg(x),

Pr
e

Resp. (Ex. 209)  Para provar que a recproca no vale, escolha


com alguma constante

f (x) =

c.

Resp. (Ex. 211)  Use rvores, como a mostrada no texto, em sua demonstrao.

Resp. (Ex. 212)  Tome cuidado para diferenciar soma de elementos de soma

de matrizes.

Ve
rs

Resp. (Ex. 213)  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).
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. 215)  Sim,

v0

vn

vi , vi+1 , . . . , vn , vi

vn .

Se

Como

vn

for

um ciclo  mas

adjacente apenas a

vn1

 ou seja,

folha.

a=b=d=g =V.

Resp. (Ex. 216)  Faa uma reduo de COBERTURA-POR-VRTICES,


construindo o grafo dual de

G.

notas de aula  verso 90 - Jernimo C. Pellegrini

435

Resp. (Ex. 218)  Comece de um vrtice e siga pintando seus vizinhos, depois os vizinhos dos vizinhos etc, usando cores alternadas. Quando no houver
mais vizinhos, procure outro componente conexo. Quando no houver compo-

in
ar

nentes conexos, pare.

Resp. (Ex. 219)  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
na soluo maior que

k,

a soluo tambm no est correta.

CONJUNTOS).

lim

Resp. (Ex. 220)  Use o problema X3C (COBERTURA-EXATA-POR-3-

Resp. (Ex. 221)  Faa uma reduo de COBERTURA-POR-VERTICES.

Resp. (Ex. 222)  (Dica apenas) Faa reduo de COBERTURA-POR-VERTICES.

uv1

uv2

uv3

{ u, v } em G.
uv4 uv5 uv6

vu1

vu2

vu3

vu4

Pr
e

Construa o grafo a seguir para cada aresta

vu5

vu6

Note que um circuito hamiltoniano s poderia passar por este grafo de trs
maneiras diferentes. Associe cada uma destas maneiras com

ou

estarem ou

no na cobertura.

Resp. (Ex. 223)  Seja

Ve
rs

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

erro

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

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.

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE F. RESPOSTAS E DICAS

436

Resp. (Ex. 226)  (b) Codique os estados usando ordem lexicogrca. (d)
Use um mapeamento de ta nita esquerta para ta innita dos dos lados da

para

Z.

in
ar

mesma forma que faria de

Resp. (Ex. 227)  A quantidade de memria usada pelo algoritmo no muda


dependendo dele ser determinstico ou no.

Resp. (Ex. 228)  (Rascunho) Seja

A um algoritmo (determinstico ou no)


Ento A no ter tempo

que use tempo polinomial no tamanho da entrada.

lim

suciente para usar memria exponencial no tamanho da entrada.

Resp. (Ex. 230)  (Rascunho) A mquina descrita pode usar as duas pilhas
como se fossem uma ta: para mover-se direita na ta basta desempilhar um
smbolo de
de

P1

P2

e empilh-lo em

P3 ;

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


e empilhar mais um smbolo em

P2 .

Pr
e

P1 ),

Ve
rs

Resp. (Ex. 233) 

(46.5, 50 4.5i, 53.5, 50 + 4.5i).

P2

e empilhando em

in
ar

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

437

notas de aula  verso 90 - Jernimo C. Pellegrini

APNDICE G. FICHA TCNICA

Ve
rs

Pr
e

lim

in
ar

438

Bibliograa
[1]

Manindra Agrawal, Neeraj Kayal e Nitin Saxena.  PRIMES is in P. Em:

lim

Annals of Mathematics 160.2 (2004), pp. 781793.


[2]

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

N. Ahmed, T. Natarajan e K. R. Rao.  Discrete Cosine Transform. Em:

IEEE Transactions on Computers (1974).


[3]

Mikls Ajtai e Cynthia Dwork.  A public-key cryptosystem with worstcase/average-case equivalence. Em: Proc. 29th ACM STOC. 1998, pp. 284
293.

Mohamad Akra e Louay Bazzi.  On the solution of linear recurrence

Pr
e

[4]

equations. Em: Computational Optimization and Applications 10.2 (1998),


pp. 195210.
[5]

[6]

Paolo Alu. Algebra: Chapter 0. American Mathematical Society, 2009.

isbn: 978-0-8218-4781-7.

R. Anderson e E. Biham.  Two Practical and Provably Secure Block


Cipers: BEAR and LION. Em: Proceedings of the Third International

Workshop on Fast Software Encryption. 1996, pp. 113120.

[8]

George E. Andrews. Number Theory. Dover, 1994.

[7]

Kazumaro Aoki et al. Specication of Camellia  a 128-bit Block Cipher.

Ve
rs

Disponibilizado pela Mitsubishi Corporation. 2001.


[9]

[10]

Tom Apostol. Introduction to analytic number theory. Springer, 1976.


Sanjeev Arora e Boaz Barak. Computational Complexity: A Modern Ap-

proach. Cambridge University Press, 2009.

[11]

isbn: 0-52142-426-7.

Kenneth J. Arrow.  A Diculty in the Concept of Social Welfare. Em:

Journal of Political Economy 58.4 (1950), pp. 328346.

[12]

Kenneth J. Arrow. Social Choice and Individual Values. 1951.

isbn:

0-

300-01364-7.

[13]

[14]

Michael Artin. Algebra. Prentice Hall, 1991.

isbn: 0130047635.

Giuseppe Ateniese et al.  Constructions and Bounds for Visual Cryp-

tography. Em: 23rd International Colloquium on Automata, Languages

and Programming. 1996, pp. 416428.

439

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

440

[15]

Giuseppe Ateniese et al.  Extended Schemes for Visual Cryptography.


Em: Theoretical Computer Science 250 (2001), pp. 143161.

[16]

Giuseppe Ateniese et al.  Visual Cryptography for General Access Struc-

[17]

in
ar

tures. Em: Information and Computation 129 (1996), pp. 86106.

G. Ausiello et al. Complexity and Approximation: Combinatorial opti-

mization problems and their approximability properties. Springer-Verlag,


2003.
[18]

isbn: 9783540654315.

Andr Bacard. Computer Privacy Handbook. Peachpit Press, 1995.


1-56609-171-3.

[19]

isbn:

Maria Welleda Baldoni, Ciro Ciliberto e Giulia Maria Piacentini Cattaneo. Elementary Number Theory, Cryptography and Codes. Springer,

[20]
[21]

isbn: 978-3-540-69199-0.

Gregory V. Bard. Algebraic Cryptanalysis. Springer, 2009.

isbn: 0387887563.

Friedrich L. Bauer. Decrypted Secrets: Methods and Maxims of Crypto-

logy. 2010.
[22]

lim

2009.

isbn: 3642063837.

M. Bellare e P. Rogaway.  Optimal Asymmetric Encryption  How to


encrypt with RSA. Em: Advances in Cryptology - Eurocrypt '94. 1995.
M. Bellare e P. Rogaway.  Random Oracles are Practical: a paradigm

Pr
e

[23]

for designing ecient protocols. Em: Proceedings of the 1st ACM Con-

ference on Computer and Communications Security. 1993.


[24]

Josh Benaloh e Jerry Leichter.  Generalized Secret Sharing and Monotone Functions. Em: Advances in Cryptology - CRYPT0 88. 1990,
pp. 2735.

[25]

Elwyn R. Berlekamp, Robert J. McEliece e Henk C.A. Van Tilborg.


 On the Inherent Intractability of Certain Coding Problems. Em: IEEE

[26]

Transactions on Information Theory IT-24 (1978), pp. 203207.


Kenneth A. Berman e Jerome L. Paul. Algorithms: sequential, parallel

Ve
rs

and distributed. Thomson, 2005.

[27]

Daniel J. Bernstein, Erik Dahmen e Johannes Buchmann. Post-Quantum

Cryptography. Springer, 2009.

[28]

isbn: 0-534-42057-5.

isbn: 978-3-540-88701-0.

Guido Bertoni, Joan Daemen e Michal Peeters Gilles van Assche. Cryp-

tographic sponge functions. Documento submetido ao NIST,

sponge.noekeon.org/CSF-0.1.pdf.

[29]

http : / /

2012.

Guido Bertoni et al.  The Road from Panama to Keccak via Radio-

Gatn. Em: Symmetric Cryptography. Ed. por Helena Handschuh et

al. Dagstuhl Seminar Proceedings 09031. Dagstuhl, Germany: Schloss


Dagstuhl - Leibniz-Zentrum fuer Informatik, Germany, 2009.

//drops.dagstuhl.de/opus/volltexte/2009/1958.

[30]

url: http:

E. Biham e A. Shamir.  Dierential Cryptanalysis of DES-like Cryp-

tosystems. Em: Journal of Cryptology 4.1 (1991), pp. 372.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

Eli Biham e Adi Shamir. Dierential Cryptanalysis of the Data Encryp-

tion Standard. Springer-Verlag, 1993.


[32]

I. Blake, G. Seroussi e Nigel Smart. Elliptic Curves in Cryptography.


Cambridge University Press, 1999.

[33]

isbn: 3540979301.

isbn: 0521653746.

G. R. Blakley.  Safeguarding cryptographic keys. Em: Proceedings of the

National Computer Conference. 1979, pp. 313317.


[34]

in
ar

[31]

441

Manuel Blum, Paul Feldman e Silvio Micali.  Non-Interactive Zero-Knowledge


and Its Applications. Em: Proceedings of the twentieth annual ACM

symposium on Theory of computing (STOC 1988). 1988, pp. 103112.


[35]

Peter Bogetoft et al.  Multiparty Computation Goes Live. Em: Berlin,

isbn: 978-3-642-03548-7.
Bla Bollobs. Modern Graph Theory. Springer, 1998. isbn: 0387984887.

[36]
[37]

[38]

lim

Heidelberg: Springer-Verlag, 2009, pp. 325343.

John Adrian Bondy e U. S. R. Murty. Graph Theory. Springer, 2010.

isbn: 1849966907.

Dan Boneh e Matthew Franklin.  Identity-Based Encryption from the


Weil Pairing. Em: SIAM Journal of Computing 32.3 (2003), pp. 586
615.

X. Boyen.  A Tapestry of Identity-Based Encryption: Practical Frameworks

Pr
e

[39]

Compared. Em: International Journal of Applied Cryptography 1.1 (2007),


pp. 321.
[40]

Gilles Brassard e Paul Bratley. Fundamentals of Algorithms. Prentice


Hall, 1996.

[41]

[42]

isbn: 0-13-335068-1.

David Bressoud. Factorization and Primality Testing. Springer, 1989.

isbn: 0387970401.

David Bressoud e Stan Wagon. A Course in Computational Number The-

[43]

ory. Wiley, 2008.

Ron Breukelaar, Hendrik Jan Hoogeboom e Walter A. Kosters. Tetris is

Ve
rs

Hard, Made Easy. Relatorio Tecnico 2003-9, Universiteit Leiden.

//www.liacs.nl/~kosters/tetris/tetr.pdf.

[44]

William Briggs e Van Emden Henson. The DFT: an owner's manual for

the discrete Fourier transform. SIAM, 1995.

[45]

isbn: 978-0133075052.

Yu. A. Brychkov e A.P. Prudnikov. Integral Transforms of Generalized

Functions. CRC Press, 1989.

[47]

isbn: 0-89871-342-0.

E. Oren Brigham. The Fast Fourier Transform and Its Applications.

Prentice Hall, 1988.

[46]

http:

2003.

isbn: 9782881247057.

Carolynn Burwick et al. MARS - a candidate cipher for AES. Disponi-

bilizado pela IBM Corporation. 1999.

[48]

Frederick W. Byron e Robert W. Fuller. Mathematics of Classical and

Quantum Physics. Dover, 1992.

isbn: 048667164X.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

442

[49]

Peter J. Cameron. Combinatorics: topics, techniques, algorithms. Cambridge university Press, 1994.

[50]

isbn: 0-0521-45761-0.

Ran Canetti.  Security and Composition of Multiparty Cryptographic

[51]

Ran Canetti et al. Deniable Encryption. Cryptology ePrint Archive, Report 1996/002.

[52]

http://eprint.iacr.org/.

1996.

Francisco Gabriel Capuano e Ivan V. Idoeta. Elementos de Eletrnica

Digital. rica, 2007.


[53]

isbn: 9788571940192.

M.H. Carvalho et al. Uma introduo sucinta a algoritmos de aproxima-

o. IMPA, 2001.

[55]

Dario Catalano et al. Contemporary Cryptology. Birkhuser Basel, 2005.

isbn: 978-3764372941.

lim

[54]

in
ar

Protocols. Em: Journal of Cryptology 13.1 (2000), pp. 143202.

D. Chaum, E. van Heijst e B. Ptzmann.  Cryptographically String Undeniable Signatures, unconditionally secure for the signer. Em: Advances

in Cryptology  CRYPTO91. Springer-Verlag, 1992.


[56]

David Chaum.  Blind Signatures for Untraceable Payments. Em: Pro-

ceedings of CRYPTO 1982. 1982.

B. Chor et al.  Veriable Secret Sharing and Achieving Simultaneity in

Pr
e

[57]

the Presence of Faults. Em: Proceedings of FOCS85. 1985, pp. 383395.


[58]

A. Church.  A set of postulates for the foundation of logic. Em: Annals

of Mathematics Series 2 33 (1932), pp. 346366.


[59]

Stelvio Cimato e Ching-Nung Yang. Visual Cryptography and Secret

Image Sharing. CRC, 2011.


[60]

isbn: 143983721X.

John Andrew Clark.  Metaheuristic Search as a Cryptological Tool. Tese

[61]

de doutorado. University of York, 2001.


C. Cocks.  An identity based encryption scheme based on quadratic resi-

dues. Em: 8th IMA International Conference on Cryptography and Co-

Ve
rs

ding. 2001.

[62]

Henri Cohen. A Course in Computational Algebraic Number Theory.

Springer, 2010.

[63]

Henri Cohen. Advanced Topics in Computional Number Theory. Springer,

1999.

[64]

isbn: 3642081428.

isbn: 0387987274.

Henri Cohen. Handbook of Elliptic and Hyperelliptic Curve Cryptography.

Chapman&Hall/CRC, 2005.

[65]

isbn: 1584885181.

Claude Cohen-Tannoudji, Bernard Diu e Frank Laloe. Quantum Mecha-

nics. Wiley-Interscience, 2006.

[66]

isbn: 0471569526.

Stephen Cook.  The complexity of theorem proving procedures. Em:

Proceedings of the Third Annual ACM Symposium on Theory of Computing. 1971, pp. 151158.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA
[67]

443

James W. Cooley e John W. Tukey.  An algorithm for the machine calculation of complex Fourier series. Em: Mathematics of Computation 19
(1965), pp. 297301.

[69]

S. Barry Cooper. Computability Theory. Chapman e Hall/CRC, 2003.

isbn: 1584882379.

in
ar

[68]

Don Coopersmith.  The Data Encryption Standard (DES) and its strength
against attacks. Em: IBM Journal of Research and Development 38.3
(1994), pp. 243250.

[70]

Thomas Cormen et al. Introduction to Algorithms. 3

ed. MIT Press,

2009.

Thomas M. Cover e Joy A. Thomas. Elements of information theory.


Wiley-Interscience, 2006.

[72]

isbn: 0471241954.

lim

[71]

Ronald John Fitzgerald Cramer.  Modular design of secure, yet practical


cryptographic protocols. Tese de doutorado. University of Amsterdam,
1996.

[73]

Ronald Cramer, Rosario Gennaro e Berry Schoenmakers.  A secure and


optimally ecient multi-authority election scheme. Em: Eurocrypt 97.

[74]

Pr
e

1997.

Richard Crandall e Carl B. Pomerance. Prime Numbers: A Computatio-

nal Perspective. Springer, 2010.


[75]

isbn: 9781441920508.

Claude Crpeau.  Equivalence between two avours of oblivious transfer. Em: Advances in Cryptology: CRYPTO 87. 1988.

[76]

Thomas W. Cusick, Cunsheng Ding e Ari Renvall. Stream Ciphers and

Number Theory. Elsevier, 2003.


[77]

Nigel Cutland. Computability: An Introduction to Recursive Function

[78]

Joan Daemen e Vincent Rijmen. The Design of Rijndael. Springer, 2002.

isbn: 3-540-42580-2.

Ivan Damgrd et al. Asynchronous Multiparty Computation: Theory and

Ve
rs

[79]

isbn: 0521294657.

Theory. 1980.

Implementation. Cryptology ePrint Archive, Report 2008/415.

eprint.iacr.org/.

[80]

Sanjoy Dasgupta, Christos Papadimitriou e Umesh Vazirani. Algorithms.

McGraw-Hill, 2006.

[81]

[83]

isbn: 0073523402.

Brian Davies. Integral Transforms and Their Applications. 3

ger, 2010.

[82]

http://

2008.

isbn: 978-1441929501.

Martin Davis. Computability and Unsolvability. Dover, 1985.

ed. Sprin-

isbn: 0486614719.

Martin Davis. The Undecidable: Basic Papers on Undecidable Propositi-

ons, Unsolvable Problems and Computable Functions. Dover, 2004.

isbn:

0486432289.

[84]

Hans Delfs e Helmut Knebl. Introducton to Cryptography: principles and

applications. 2

ed. Springer, 2007.

isbn: 978-3-540-49243-6.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

444

[85]

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.
[87]

in
ar

[86]

Whiteld Die e Martin Hellman.  New Directions in Cryptography.


Em: IEEE Transactions on Information Theory 22.6 (1976), pp. 644
654.

[88]

Roger Dingledine, Nick Mathewson e Paul Syverson.  Tor: The Second-

Generation Onion Router. Em: 13th USENIX Security Symposium. 2004,


pp. 303320.

Markus Drmuth e David M. Freeman. Deniable Encryption with Ne-

lim

[89]

gligible Detection Probability: An Interactive Construction. IACR 066.


2011.
[90]

Markus Drmuth e David Mandell Freeman.  Deniable Encryption with


Negligible Detection Probability: An Interactive Construction. Em: EU-

ROCRYPT. 2011, pp. 610626.

T. Elgamal.  A public-key cryptosystem and a signature scheme based

Pr
e

[91]

on discrete logarithms. Em: IEEE Transactions on Information Theory


31.4 (1985), pp. 469472.
[92]

S. Even, Oded Goldreich e A. Lempel.  A randomized protocol for signing


contracts. Em: Proceedings of CRYPTO. 1982.

[93]

Amos Fiat e Adi Shamir.  How to prove to yourself: practical solutions


to identication and signature problems. Em: Advances in Cryptology

(CRYPTO 86). 1987, pp. 186194.

Amos Fiat e Adi Shamir.  How to prove yourself: practical solutions to

[94]

identication and signature problems. Em: Proceedings of CRYPTO' 86.


1987.

Jean Baptiste Joseph Fourier. The Analytical Theory of Heat. Dover,

Ve
rs

[95]

2003.

[96]

John B. Fraleigh. A First Course in Abstract Algebra. Addison Wesley,

2002.

[97]

[98]

isbn: 9780486495316.
isbn: 9780201763904.

Neide Maira Bertoldi Franco. Clculo Numrico. Prentice Hall, 2006.

isbn: 9788576050872.

Eiichiro Fujisaki e Tatsuaki Okamoto.  A Practical and Provably Secure

Scheme for Publicly Veriable Secret Sharing and Its Applications. Em:

Advances in Cryptology - EUROCRYPT 98. 1998, pp. 3246.

[99]

Eiichiro Fujisaki et al.  RSA OAEP is secure under the RSA assump-

tion. Em: Advances in Cryptology  CRYPTO 2001. 2001.

[100]

Helen F. Gaines. Cryptanalysis: A Study of Ciphers and Their Solution.

Dover, 1989.

isbn: 0486200973.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

[102]

Joseph A. Gallian. Contemporary Abstract Algebra. Brooks Cole, 2009.

isbn: 0547165099.

Arnaldo Garcia e Yves Lequain. Elementos de lgebra. 5


2010.

[103]

isbn: 978-85-244-0190-9.

ed. IMPA,

in
ar

[101]

445

Michael R. Garey e Richard S. Johnson. Computers and Intractability:

a guide to the theory of NP-completeness. New York: W. H. Freeman,


1979.
[104]

Rosario Gennaro et al.  Secure Distributed Key Generation for DiscreteLog Based Cryptosystems. Em: Eurocrypt 99. 1999.

Oded Goldreich. A Primer on Pseudorandom Generators. American Mathematical Society, 2010.

[106]

isbn: 9780821851920.

Oded Goldreich. Computational Complexity: A Conceptual Perspective.


Cambridge University Press, 2008.

[107]

isbn: 9780521884730.

Oded Goldreich. Foundations of Cryptography, volume I: basic tools.


Vol. 1. Cambrige University Press, 2001.

[108]

lim

[105]

Oded Goldreich. Foundations of Cryptography, volume II: basic applica-

tions. Vol. 2. Cambrige University Press, 2004.

Oded Goldreich, Sha Goldwasser e Shai Halevi.  Public-key cryptosys-

Pr
e

[109]

tems from lattice reduction problems. Em: Lecture Notes in Computer

Science 1294 (1997).


[110]

Oded Goldreich, Sha Goldwasser e Silvio Micali.  How to construct


random functions. Em: Journal of the ACM 33.4 (1986), pp. 210217.

[111]

Oded Goldreich e Yair Oren.  Denitions and Properties of Zero-Knowledge


Proof Systems. Em: Journal of Cryptology 7.1 (1994), pp. 132.

[112]

S. Goldwasser, S. Micali e C. Racko.  The Knowledge Complexity of

Interactive Proof-Systems. Em: Proceedings of the 17th Annual ACM

Symposium on Theory of Computing. 1985, pp. 365377.


S. Goldwasser, S. Micali e C. Racko.  The Knowledge Complexity of In-

Ve
rs

[113]

teractive Proof-Systems. Em: SIAM Journal on Computing 18.1 (1989).

[114]

Sha Goldwasser e Yael Tauman Kalai.  On the (In)security of the Fiat-

Shamir Paradigm. Em: FOCS. 2003.

[115]

Sha Goldwasser e Silvio Micali.  Probabilistic encryption and how to

play mental poker keeping secret all partial information. Em: Proceedings

of the 14th Symposium on Theory of Computing. 1982.

[116]
[117]

S. W. Golomb. Shift Register Sequences. Aegean Park Press, 1982.


Solpomon W. Golomb e Guang Gong. Signal Design for Good Correla-

tion. Cambridge University Press, 2005.

[118]

isbn: 0-521-82104-5.

Jonas Gomes e Luiz Velho. Fundamentos da Computao Grca. IMPA,

2008.

isbn: 978-85-244-0200-5.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

446

[119]

Teolo F. Gonzalez, ed. Handbook of Approximation Algorithms and Me-

taheuristics. Chapman & Hall/CRC, 2007.


[120]

isbn: 9781584885504.

M. Choudary Gorantla, Raju Gangishetti e Ashutosh Saxena. A Survey


Report 2005/094.

[121]

http://eprint.iacr.org/.

in
ar

of ID-Based Cryptographic Primitives. IACR Cryptology ePrint Archive,


2005.

Ronald L. Graham, Donald Erwin Knuth e Oren Patashnik. Matemtica


a

Concreta: fundamentos para a Cincia da Computao. 2 ed. LTC, 1995.

isbn: 85-216-1040-8.

David J. Griths. Introduction to Quantum Mechanics. 2


Cummings, 2004.

[123]

isbn: 0131118927.

[125]

isbn:

Darrel Hankerson. Guide to Elliptic Curve Cryptography. Springer, 2010.

isbn: 1441929290.

John Harris, Jery L. Hirst e Michael Mossingho. Combinatorics and

Graph Theory. Springer, 2010.


[126]

ed. Benjamin

David J. Griths. Mecnica Quntica. Pearson do Brasil, 2011.


978-85-7605-927-1.

[124]

lim

[122]

isbn: 1441927239.

Carmit Hazay e Yehuda Lindell. Ecient Secure Two-Party Protocols:

isbn: 978-3-642-14302-1.
ed. Vol. 1. IMPA, 2013. isbn: 9788524400797.

[127]
[128]

Abramo Hefez. Curso de lgebra. 5

Abramo Hefez e Maria Lcia T. Villela. Cdigos Corretores de Erros.


a

2
[129]

Pr
e

Techniques and Constructions. Springer, 2010.

ed. IMPA, 2008.

isbn: 978-85-244-0169-5.

Michael T. Heideman, Don H. Johnson e C. Sidney Burrus.  Gauss and


the history of the fast fourier transform. Em: IEEE ASSP (Acoustics,

Speech, and Signal Processing Society) Magazine 1.4 (1984), pp. 1421.
[130]

M. Hellman e S. Langford.  Dierential-Linear Cryptanalysis. Em: Ad-

[131]

I. N. Herstein. Abstract Algebra. 3

ed. Wiley, 1996.

isbn: 0471368792.

Howard Heys. A Tutorial on Linear and Dierential Cryptanalysis. Te-

Ve
rs

[132]

vances in Cryptology - CRYPTO 94. 839. Springer-Verlag, 1994.

chnical Report CORR 2001-17, Centre for Applied Cryptographic Research, Department of Combinatorics and Optimization, University of
Waterloo. Also appears in Cryptologia, vol. XXVI, no. 3, pp. 189-221,
2002. 2001.

[133]

Raymond Hill. A First Course in Coding Theory. Oxford University

Press, 1990.

[134]

[135]

isbn: 0198538030.

Mika Hirvensalo. Quantum Computing. Springer, 2001.

Jerey Hostein, Jill Pipher e Joseph H. Silverman. A Mathematical

Introduction to Cryptography. Springer, 2008.

[136]

isbn: 3540667830.

isbn: 978-0-387-77993-5.

Jerey Hostein, Jill Pipher e Joseph H. Silverman.  NTRU: A ring-

based public key cryptosystem. Em: Lecture Notes in Computer Science

1423 (1998).

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA
[137]

447

John E. Hopcroft, Rajeed Motwani e Jerey D. Ullman. Introduction to

Automata Theory, Languages, and Computation. Addison-Wesley, 2001.

isbn: 0201441241.

John E. Hopcroft, Rajeev Motwani e Jerey D. Ullman. Introduction to


a

Automata Theory, Languages and Computation. 2

in
ar

[138]

ed. Addison-Wesley,

2001.
[139]

K. J. Horadam. Hadamard Matrices and Their Applications. Princeton


University Press, 2006.

[140]

isbn: 069111921X.

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: IEEE Computer Society, 2009,

lim

isbn: 978-0-7695-3845-7. doi: http://dx.doi.org/10.1109/


ARTCom.2009.107. url: http://dx.doi.org/10.1109/ARTCom.2009.
107.
pp. 913.

[141]
[142]

Thomas W. Hungerford. Algebra. Springer, 1980.

isbn: 0387905189.

M. H. Ibrahim.  A Method for Obtaining Deniable Public-Key Encryp-

[143]

Pr
e

tion. Em: Journal of Network Security 8.1 (2009).

M. H. Ibrahim.  Receiver-deniable public-key encryption. Em: Journal

of Network Security 8.2 (2009).


[144]

Neil Immerman. Descriptive Complexity. Springer, 1998.


600-6.

[145]

isbn: 978-90-481-9044-7.

Kenneth Ireland e Michael Rosen. A Classical Introduction to Modern

Number Theory. Springer, 1990.


[147]

0-38798-

David Rios Insua e Simon French. e-Democracy: A Group Decision and

Negotiation Perspective. Springer, 2010.


[146]

isbn:

isbn: 1441930949.

Mitsuru Ito, Akira Saito e Takao Nishizeki.  Secret sharing scheme realizing general access structure. Em: Proc. Global Telecoms. Conference.

Ve
rs

1987, pp. 99102.

[148]

[149]
[150]

Nathan Jacobson. Basic Algebra I. 2

a
a

Nathan Jacobson. Basic Algebra II. 2

isbn: 0486471896.
ed. Dover, 2009. isbn: 048647187X.

ed. Dover, 2009.

Marquis de Condorcet Jean-Antoine-Nicolas de caritat.  Condorcet: Foun-

dations of social choice and political theory (selections). Em: (1743-1794


(1994)).

[151]

A. Joux.  A one round protocol for tripartite Die-Hellman. Em: Pro-

ceedings of ANTS 4. 2000, pp. 385394.

[152]

Pascal Junod e Serge Vaudenay.  FOX: a new family of block ciphers.

Em: Selected Areas in Cryptography. 2004.

[153]

David Kahn. The Codebreakers. Scribner, 1967/1996.

9.

isbn: 0-684-83130-

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

448

[154]

Yael Tauman Kalai.  Attacks on the Fiat-Shamir Paradigm and Program


Obfuscation. Tese de doutorado. Massachusetts Institute of Technology,
2006.
Viggo Kann.  On the Aproximability of

N P -complete Optimization Pro-

in
ar

[155]

blems. Tese de doutorado. Department of Numerical Analysis e Computing Science  Royal Institute of Technology, Sweden, 1992.
[156]

Jonathan Katz. Digital Signatures. Springer, 2010.


0.

[157]

Jonathan Katz e Yehuda Lindell. Introduction to Modern Cryptography.


Chapmen & Hall/CRC, 2008.

[158]

isbn: 978-1-58488-551-1.

Stephen Cole Kleene. Introduction to Metamathematics. North Holland,

lim

1952.
[159]

isbn: 978-0-387-27711-

Stephen Cole Kleene e J. B. Rosser.  General recursive functions of natural numbers. Em: Mathmatische Annalen 112 (1936), pp. 727742.

[160]

M. Klonowski, P. Kubiak e M. Kutylowsk.  Practical Deniable Encryption. Em: Proceedings of SOFSEM 2008. 2008.

[161]

L. R. Knudsen.  Truncated and Higher-Order Dierentials. Em: Fast

[162]

Pr
e

Software Encryption. 1008. Springer-Verlag, 1995.

Neil Koblitz.  Elliptic curve cryptosystems. Em: Mathematics of Com-

putation 48 (1987), pp. 203209.


[163]

Bernhard Korte e Jens Vygen. Combinatorial Optimization: theory and

algorithms. 2
[164]

isbn: 3-540-43154-3.

isbn: 2881246834.

Evangelos Kranakis. Primality and Cryptography. Wiley, 1991.

isbn: 0471909343.

Leslie Lamport. Constructing digital signatures from a one-way function.

[166]

ed. Springer, 2002.

Alexei I. Kostrikin e Yu I. Manin. Linear Algebra and Geometry. CRC


Press, 1989.

[165]

1979.

A. K. Lenstra, H. W. Lenstra Jr. e L. Lovsz.  Factoring polynomials

Ve
rs

[167]

with rational coecients. Em: Mathematische Annalen 261.4 (1982),


pp. 515534.

[168]

Leonid Anatolievich Levin.  Universal search problems (em Russo, Uni-

versal'nye perebornye zadachi). Em: Problems of Information Trans-

mission (em Russo, Problemy Peredachi Informatsii) 9.3 (), pp. 265
266.

[169]

Hary Lewis e Christos H. Papadimitriou. Elementos de Teoria da Com-

putao. 2

[170]

isbn: 8-57307-534-1.

Rudolf Lidl e Harald Niederreiter. Finite Fields. Cambridge University

Press, 1997.

[171]

ed. Bookman, 2004.

isbn: 0-521-39231-4.

Chen-chi Lin, Chi-sung Laih e Ching-nung Yang.  New Audio Secret

Sharing Schemes With Time Division Technique. Em: Journal of Infor-

mation Science and Engineering (2003), pp. 605614.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

Yehuda Lindell. Composition of Secure Multi-Party Protocols: A Com-

prehensive Study. Springer, 2003.


[173]

Michael Luby. Pseudorandomness and Cryptographic Applications. Princeton University Press, 1996.

[174]

isbn: 3-540-20105-X.

isbn: 9780691025469.

in
ar

[172]

449

Michael Luby e Charles Racko.  How to construct pseudorandom per-

mutations from pseudorandom functions. Em: SIAM Journal on Com-

puting 17.2 (1988).


[175]

and M. Ben-Or.  veriable secret sharing and multiparty protocols with


honest majority. Em: Proceedings of the Twenty-First Annual ACM

Symposium on theory of Computing. Seattle, Washington, United States, 1989.

Robert J. MacEliece. A Public-Key Cryptosystem Based On Algebraic

lim

[176]

Coding Theory. DSN Progress Report 42-44: 114. 1978.


[177]

Udi Manber. Introduction to Algorithms: A Creative Approach. AddisonWesley, 1989.

[178]

isbn: 0201120372.

Stphane Manuel.  Classication and Generation of Disturbances Vectors


for Collision Attacks against SHA-1. Em: Proceedings of Workshop on

[179]

Pr
e

Coding and Cryptography. 2009.

Dan C. Marinescu e Gabriela M. Marinescu. Approaching Quantum Com-

puting. Perason/Prentice Hall, 2005.


[180]

Luther Martin. Introduction to Identity-Based Encryption. Artech House,


2008.

[181]

isbn: 0-13-145224-X.

isbn: 978-1-59693-238-8.

M. Matsui.  Linear Cryptanalysis Method for DES Cipher. Em: EURO-

CRYPT93. Springer-Verlag, 1993.


[182]

Ueli Maurer.  Information-Theoretic Cryptography. Em: Advances in

[183]

Cryptology - CRYPTO '99. Springer-Verlag, 1999, pp. 4764.


Mansour Al-Meaither.  Secure electronic payments for Islamic nance.

Ve
rs

Tese de doutorado. Department of Mathemathics, Royal Holloway, University of London, 2004.

[184]

Alfred J. Menezes, Paul C. van Oorschot e Scott A. Vanstone.  Handbook

of Applied Cryptography. Em: CRC Press, 1996.

[185]

Daniele Micciancio e Sha Goldwasser. Complexity of Lattice Problems:

A Cryptographic Perspective. Springer, 2002.

[186]

isbn: 9780792376880.

Victor Miller.  Use of elliptic curves in cryptography. Em: Proceedings

of CRYPTO 86. 1986.

[187]

Cesar Polcino Millies. Nmeros: uma introduo Matemtica. EDUSP,

2006.

[188]

isbn: 8531404584.

Todd K. Moon. Error Correction Coding: Mathematical Methods and

Algorithms. Wiley-Interscience, 2005.

isbn: 0471648000.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

450

[189]

Pat Morin.  Provably Secure and Ecient Block Ciphers. Em: Procee-

dings of the Third Annual Workshop on Selected Areas in Cryptography


(SAC 96). 1996, pp. 3037.
Gary L. Mullen e Carl Mummert. Finite Fields and Applications. AMS,
2007.
[191]

isbn: 978-0-8218-4418-2.

in
ar

[190]

Moni Naor e Adi Shamir.  Visual Cryptography. Em: Proceedings of

EUROCRYPT. 1994.
[192]

Victor P. Nelson et al. Digital Logic Circuit Analysis and Design. Prentice
Hall, 1995.

[193]

isbn: 0-13-463894-8.

Daniel Neuenschwander. Probabilistic and Statistical Methods in Cryp22001-1.

[194]

isbn: 3642022944.

Michael A. Nielsen e Isaac L. Chuang. Quantum Computation and Quan-

tum Information. Cambridge University Press, 2004.


[196]

3-540-

Phong Q. Nguyen e Brigitte Valle. The LLL Algorithm: Survey and

Applications. Springer, 2009.


[195]

isbn:

lim

tography: an introdution by selected topics. Springer, 2004.

isbn: 9780521635035.

NIST. A Statistical Test Suite for Random and Pseudorandom Number

Pr
e

Generators for Cryptographic Applications. 2010.


[197]

NIST. Announcing the Advanced Encryption Standard (AES). 2001.

[198]

NIST. Data Encryption Standard (DES). 1999.

[199]

Ivan Niven, Herbert S. Zuckerman e Hugh L. Montgomery. An Introduc-

tion to The Theory of Numbers. 5


[200]

ed. Wiley, 1991.

isbn: 0471625469.

R. Nojima et al.  Semantic Security for the McEliece Cryptosystem


without random oracles. Em: Design, Codes and Cryptography 49.1-3

[201]

(2008), pp. 289305.


Jos Plnio de Oliveira Santos. Introduo Teoria dos Nmeros. IMPA,

2010.

Christos H. Papadimitriou. Computational Complexity. Addison-Wesley,

Ve
rs

[202]

1993.

[203]

Christos Papadimitriou e Umesh Vazirani. Algoritmos. McGraw-Hill/Artmed,

2009.

[204]

isbn: 0-20153-082-1.

isbn: 9788577260324.

T. Pedersen.  A threshold cryptosystem without a trusted party. Em:

Eurocrypt 91. 1991, pp. 522526.

[205]

Torben P. Pedersen.  Non-interactive and information-theoretic secure

veriable secret sharing. Em: Advances in Cryptology - EUROCRYPT

91. 1992.

[206]

Stephen Pincock. Codebreaker: The History of Codes and Ciphers. Wal-

ker & Company, 2006.

[207]

isbn: 0802715478.

John M. Pollard.  A Monte Carlo method for factorization. Em: BIT

Numerical Mathematics 15.3 (1975), pp. 331334.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA
[208]

451

John M. Pollard.  Theorems of Factorization and Primality Testing. Em:

Proceedings of the Cambridge Philosophical Society 76.3 (1974), pp. 521


528.
Emil Leon Post.  Finite Combinatory Processes - Formulation 1. Em:

Journal of Symbolic Logic 1 (1936), pp. 103105.


[210]

William H. Press et al. Numerical Recipes: The Art of Scientic Com-

puting. 3
[211]

in
ar

[209]

ed. Cambridge, 2007.

isbn: 978-0-521-88068-8.

M. Rabin. How to exchange secrets by oblivious transfer. Technical Report TR-81, Harvard Aiken Computational Laboratory. 1981.

[212]

Michael Rabin. Digitalized Signatures and Public-Key Functions as Innical Report: MIT/LCS/TR-212. 1979.

[213]

K. R. Rao e P. C. Yip. The Transform and Data Compression Handbook.


CRC Press, 2001.

[214]

lim

tractable as Factorization. MIT Laboratory for Computer Science Tech-

isbn: 0-8493-3692-9.

O. Regev.  On lattices, learning with errors, random linear codes, and


cryptography. Em: Proc. 37th ACM Symposium on Theory of Compu-

ting (STOC). 2005, pp. 8493.

Hans Riesel. Prime Numbers and Computer Methods for Factorization.


a

2
[216]

isbn: 0817637435.

Pr
e

[215]

ed. Birkhuser Boston, 1994.

R. Rivest, A. Shamir e L. Adleman.  A Method for Obtaining Digital


Signatures and Public-Key Cryptosystems. Em: Communications of the

ACM 21.2 (1978), pp. 120126.


[217]

Zuzana RJAKOV.  Electronic Voting Schemes. Tese de doutorado.


Comenius University, Bratislava, 2002.

[218]

Hartley Rogers. Theory of Recursive Functions and Eective Computa-

[219]

Steven Roman. Introduction to Coding and Information Theory. Sprin-

isbn: 0387947043.

Ve
rs

ger, 1996.
[220]

isbn: 0262680521.

bility. MIT Press, 1987.

Jos Plnio O. Santos, Margarida P. Mello e Idani T. C. Murari. Ina

troduo Anlise Combinatria. 4

ed. Cincia Moderna, 2007.

isbn:

978-85-7393-634-6.

[221]

Bruce Schneier. Applied Cryptography: Protocols, Algorithms, and Source

Code in C. 2

[222]

ed. New York: John Wiley e Sons, 1996.

Bruce Schneier.  Description of a New Variable-Length Key, 64-Bit Block

Cipher (Blowsh). Em: Proceedings of Fast Software Encryption. 1994.

[223]

Bruce Schneier.  Self-Study Course in Block Cipher Cryptanalysis. Em:

Cryptologia 24.1 (2000). Tambm disponvel em

com/paper-self-study.html,

[224]

http://www.schneier.

pp. 1834.

Berry Schoenmakers.  A Simple Publicly Veriable Secret Sharing Scheme

and its Application to Electronic Voting. Em: Advances in Crypto-

logyCRYPTO 99. 1999, pp. 148164.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

452

Robert Sedgewick e Phillipe Flajolet. An Introduction to the Analysis of

Algorithms. Addison-Wesley, 1995.


[226]

isbn: 9780201400090.

Jerey Shallit. A Second Course in Formal Languages and Automata

Theory. Cambridge University Press, 2008.


[227]

isbn: 0-521-86572-7.

Adi Shamir.  How to share a secret. Em: Communications of the ACM


22.11 (1979), pp. 612613.

[228]

in
ar

[225]

Adi Shamir.  Identity-Based Cryptosystems and Signature Schemes.


Em: Crypto 84. 1984.

[229]

Adi Shamir.  IP

[230]

R. Shankar. Principles of Quantum Mechanics. 2

Em: Journal of the ACM 39.4 (1992).

isbn: 0306447908.

ed. Springer, 1994.

lim

[231]

= P SP ACE .

Claude Shannon.  A Mathematical Theory of Communication. Em: Bell

System Technical Journal 27 (1948), pp. 379423, 623656.


[232]

Claude E. Shannon.  Communication Theory of Secrecy Systems. Em:

Bell Systems Theoretical Journal 28.4 (1949), 656=715.


[233]

Claude Shannon e Warren Weaver. A Mathematical Theory of Commu-

[234]

Frank Y. Shih. Image Processing and Pattern Recognition: fundamentals

and techniques. IEEE/Wiley, 2010.


[235]

[237]

isbn: 9788573937534.

Salahoddin Shokranian. lgebra 1. Cincia Moderna, 2010.

isbn: 8573939516.

Victor Shoup. A Computational Introduction to Number Theory and Al-

gebra. Cambrige, 2005.

isbn: 0521851548.

Victor Shoup. OAEP Reconsidered. IBM Zurich Research Lab, Saumerstr.

[238]

isbn: 978-0-470-40461-4.

SALAHODDIN SHOKRANIAN. Uma Introduo Teoria dos Nmeros.


Cincia Moderna, 2008.

[236]

isbn: 0-252-72548-4.

Pr
e

nication. Univ of Illinois Press, 1949.

4, 8803 Ruschlikon, Switzerland. 2001.


Joseph H. Silverman e John Tate. Rational Points on Eliptic Curves.

Ve
rs

[239]

Springer, 1992.

[240]

George F. Simmons. Introduction to Topology and Modern Analysis. Kri-

eger, 2003.

[241]

isbn: 9780387978253.

isbn: 1575242389.

Isabelle Simplot-Ryl, Issa Traor e Patricia Everaere.  Distributed Archi-

tectures for Electronic Cash Schemes: A Survey. Em: The International

Journal of Parallel, Emergent and Distributed Systems 24.3 (2009).

[242]

S. Singh. The Science of Secrecy. Fourth Estate Limited, 2000.

[243]

Simon Singh. O Livro dos Cdigos. 7a. Record, 2010.

[244]

Simon Singh. The Code Book. 2000.

[245]

isbn: 8501055980.
isbn: 0385495323.

Michael Sipser. Introduo Teoria da Computao. So Paulo  SP:

Thomson, 2007.

isbn: 9788522104994.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA
[246]

453

Nigel Smart. Cryptography: an introduction. Mcgraw-Hill, 2004.

isbn:

978-0077099879.
Laurence D. Smith. Cryptography: The Science of Secret Writing. Dover,
1955.
[248]

isbn: 048620247X.

in
ar

[247]

Daniel Socek e Spyros S. Magliveras.  General Access Structures in Audio

Cryptography. Em: Proceedings of the IEEE International Conference

on Electro Information Technology. 2005.


[249]

 Sponge functions. Em: Proceedings of Ecrypt Hash Workshop 2007.


2007.

[250]

Markus Stadler.  Publicly Veriable Secret Sharing. Em: Advances in

Cryptology - EUROCRYPT 96. 1996, pp. 190199.

Elias M. Stein e Rami Shakarchi. Fourier Analysis: An Introduction.


Princeton University Press, 2003.

[252]

lim

[251]

isbn: 978-0691113845.

William Stein. Elementary Number Theory: Primes, Congruences, and

Secrets: A Computational Approach. Springer, 2010.


[253]

Douglas R. Stinson. Cryptography: theory and practice. 3


& Hall/CRC, 2006.

isbn: 1-58488-508-4.

John Talbot e Dominic Welsh. Complexity and Cryptography: an intro-

duction. Cambridge University Press, 2006.


[255]

ed. Chapman

Pr
e

[254]

isbn: 1441927522.

isbn: 0-521-61771-5.

Alan M. Turing.  On Computable Numbers, with an Application to the


Entscheidungsproblem. Em: Proceedings of the London Mathematical

Society s2-42.1 (1937), pp. 230265.


[256]

Alan M. Turing.  On Computable Numbers, with an Application to the


Entscheidungsproblem. A Correction. Em: s2-43.1 (1938), pp. 544546.

[257]

Oleg Nikolaevich Vasilenko. Number-Theoretic Algorithms in Crypto-

isbn: 978-8218-4090-0.
Vijay V. Vazirani. Approximation Algorithms. Springer, 2010. isbn: 3642084699.

[258]

J. V.Boone. A Brief History of Cryptology. Naval Institute Press, 2005.

Ve
rs

[259]

graphy. American Mathematical Society, 2007.

[260]

isbn: 978-1-59114-084-9.

G. S. Vernam.  Cipher Printing Telegraph Systems for Secret Wire and

Radio Telegraphic Communications. Em: Journal of the American Ins-

titute for Electrical Engineers 55 (1926), pp. 109115.

[261]

Xiaoyun Wang, Yiqun Lisa Yin e Hongbo Yu.  Finding Collisions in the

Full SHA-1. Em: Crypto 2005. 2005.

[262]

Lawrence Washington. Elliptic Curves: Number Theory and Cryptography.


a

[263]

ed. Chapman&Hall/CRC, 2008.

isbn: 1420071467.

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.

notas de aula  verso 90 - Jernimo C. Pellegrini

BIBLIOGRAFIA

454

[264]

H. C. Wu e C. C. Chang.  Sharing visual multi-secrets using circle shares.


Em: Comput. Stand Interfaces 134.28 (2005), pp. 123135.

[266]

Song Y. Yan. Cryptanalytic Attacks on RSA. Springer, 2007.

Andrew C. Yao.  Protocols for secure computations. Em: Foundations

of Computer Science. 1982, pp. 160164.


[267]

isbn: 0387487417.

in
ar

[265]

Andrew Chi-Chih Yao.  How to generate and exchange secrets. Em:

Proceedings of the 27th Annual Symposium on Foundations of Computer


Science. Washington, DC, USA: IEEE Computer Society, 1986, pp. 162

Ve
rs

Pr
e

lim

167. isbn: 0-8186-0740-8. doi: 10 . 1109 / SFCS . 1986 . 25. url: http :
//portal.acm.org/citation.cfm?id=1382439.1382944.

ndice Remissivo

algoritmo randomizado, 380

algoritmos de aproximao, 390


ambiente, 222

amplitude de probabilidade (em estado


quntico), 270

anlise de Fourier, 413

anlise de frequncia (mtodo para crip-

383

xidade), 384

tanlise), 329

anel, 353

aniversrio

ataques usando o problema, 121


problema do, 121, 333

aproximao absoluta, 391


aproximao linear
tabela de, 101

aritmtica modular, 337

(n)-aproximao, 391
k -aproximao, 391

Pr
e

P (classe de complexidade), 380


(funo), 336
(funo), 336
PP (classe de complexidade), 381
PSPACE (classe de complexidade), 382
PSPACE -completo (classe de comple-

rvore, 376

teorema de, 399

algoritmo no determinstico, 378

lim

, 369
-protocolo, 210
, 369
O, 368
BPP (classe de complexidade), 381
IP (classe de complexidade), 206
N P (classe de complexidade), 381
N P -completo (classe de complexidade),

in
ar

notas de aula  verso 90 - Jernimo C. Pellegrini

ARVORE-DE-STEINER (problema), 403


assinatura

BEAR (cifra de bloco), 130

esquema de Fiat-Shamir, 214

3DES (criptossistema), 82

assinatura baseada em identidade, 257

Ve
rs

LION (cifra de bloco), 130

assinatura baseada em identidades

Aardvark (cifra de bloco), 127

de Shamir, 261

acordo de chaves baseado em identida-

assinatura cega, 315

des, 258

adversrio

em sistema de votao, 314


assinatura digital, 10, 163

malicioso, 219

ataque do encontro no meio, 82

semi-honesto, 219

Atbash, veja cifra Atbash

AES, 84

descrio algbrica, 86

ator (em protocolo), 179


autocorrelao, 52

descrio simplicada, 84
detalhes de implementao, 424

Bzout

Ajtai-Dwork (criptossistema), 282


Akra-Bazzi

Lema de, 339


Berlekamp-Massey
455

notas de aula  verso 90 - Jernimo C. Pellegrini

NDICE REMISSIVO

456

algoritmo para determinar comple-

COBERTURA-POR-ARESTAS (problema),

xidade linear de sequncia, 56

403
COBERTURA-POR-VERTICES

bit hard-core, 40

problema, 392

ctala espartana, 326


cdigo de autenticao de mensagem,

colorao de um grafo, 376


colunas

135

no AES/Rijndael, 87

cdigos corretores de erros, 285

compartilhamento de segredos, 189

caixeiro viajante, veja TSP

em sistma de votao, 314

caminho em grafo, 376

esquema de Blakley, 192

caracterstica de um anel ou corpo, 357

esquema de Ito-Nishizeki-Saito, 195

CBC-MAC, 138

lim

esquema de Pedersen, 197

CCA, 142

esquema de Shamir, 190

CCA (segurana de criptossistema assimtrico), 150


cenrio
criptogrco, 219
da teoria da informao, 220
CGS (esquema de votao), 317
Chaum (protocolo de votao), 316
de bloco, 8
de uxo, 7
cifra am, 327

cifra Atbash, 327


cifra de bloco

esquema visual

denio de segurana, 72

cifra de Csar, 326

cifra de deslocamento, 325

Ve
rs

cifra de Hill, 328

cifra de permutao, 325

vericvel, 196
de ator, 180

exponencial, 369
polinomial, 369
subexponencial, 369

complexidade linear de sequncia, 56


comprometimento (protocolo), 180
com resumos criptogrcos, 183
de bit, com resduos quadrticos,
185
de Pedersen, 184
ocultante, 183
usando logaritmo discreto, 183
vinculante, 182
confuso
em projeto de cifra de bloco, 73
congruncia, 337

cifra de Vigenre, 327

conhecimento zero

modo de operao de permutao


pseudoaleatrea, 70

circuito

hamiltoniano, 376

297

complexidade de tempo, 367

cifra de substituio, 325


cipher block chaining

(k, n),

publicamente vericvel, 198

Pr
e

Chaum (esquema de votao, 316


cifra

in
ar

algoritmo aproximado, 392

prova no-interativa, 214


conhecimento zero computacional, 207
conhecimento zero estatstico, 207
conhecimento zero perfeito, 206
conjunto dominante, 385

circuito em grafo, 376

conjunto qualicante, 189

circuito Hamiltoniano, veja HAM

CONJUNTO-DOMINANTE

classe de complexidade, 380


clique, 375

COBERTURA-DE-CONJUNTO (problema), 385

problema, 385
prova de

N P -completude,

construo de Lai-Massey, 79
corpo, 354

385

notas de aula  verso 90 - Jernimo C. Pellegrini

NDICE REMISSIVO

457

expanso de bits, 418


funo interna, 417

corpo nito, 357

permutao inicial, 417

corretude (em sistema de votao), 313

permutao interna, 419


S-boxes, 419

cosseno

in
ar

corpo de Galois, veja corpo nito


corpo de Rijndael, 86

desvio de ortogonalidade, 278

transformada, 412

diferencial, 108

counter
modo de operao de permutao

Die-Hellman (estabelecimento de chaves), 146

pseudoaleatrea, 71

Die-Hellman (problema), 147


Cramer-Gennaro-Schoenmakers (esquema
de votao), 317

em grupos de curvas elpticas, 239

criptanlise, 93

Die-Hellman (protocolo)

algbrica, 113
de cifras antigas, 329

difuso

lim

com curvas elpticas, 239

de chave relacionada, 115

em projeto de cifra de bloco, 73

diferencial, 107

dinheiro eletrnico, 323

diferencial impossvel, 115

disco, 287

linear, 96

discriminante de um polinmio, 232

linear diferencial, 115

distncia de Hamming, 286

criptograa, 7

Pr
e

distncia mnima, 287

criptograa baseada em identidade, 253


criptograa visual, 295

divises sucessivas (mtodo para fatorao), 244

divisibilidade, 335

criptossistema

Dixon

simtrico, 20

criptossistema amostrvel, 308

criptossistema assimtrico, 149


crivo
de Eratstenes, 243

quadrtico, 248

sobre corpo numrico algbrico, 250


curva algbrica, 231

Ve
rs

curva elptica, 231

operao de grupo, 234

algoritmo de, 248

DSA (esquema de assinaturas), 172


efeito avalanche, 76
electronic code book
modo de operao de permutao
pseudoaleatrea, 70
Elgamal (criptossistema), 151, 240
Elgamal (esquema de assinaturas), 171

CVP (problema em reticulados), 38

Elgamal (criptossistema)

Drmuth-Freeman (esquema de encrip-

empacotamento de conjunto

tao negvel), 308

de Brujin

sequncia de, 63

decodicao, 291

democracia (em sistema de votao),


313

DES

descrio detalhada, 415


descrio simplicada, 80
escalonamento de chaves, 420

com curvas elpticas, 240


problema, 394
emparelhamentos bilineares, 240, 265
encriptao baseada em identidade, 255
encriptao baseada em identidades
de Boneh-Franklin, 266
de Cocks, 258
encriptao com qurum, 202
encriptao homomrca
em sistema de votao, 314
encriptao negvel

notas de aula  verso 90 - Jernimo C. Pellegrini

NDICE REMISSIVO

458

gerao de chaves para construo ba-

em sistema de votao, 314

seada em identidades, 254

equao diofantina quadrtica

gerador, 351

problema, 389

51

(problema), 389

gerador pseudoaleatreo, 45

esquema de assinaturas, 163

Blum-Blum-Shub, 51

de Boneh-Franklin, 267

de Blum-Micali, 50

esquema de encriptao

GGH (criptossistema), 279

negvel pelo remetente, 302

Goldwasser-Micali (criptossistema), 157

estratgia de corrupo, 219

Golomb

estrutura de acesso, 189

postulados de, 52

estrutura montona, 189


algoritmo de, 335
algoritmo extendido de, 340
Euler
critrio de, 345
Teorema de, 343

grafo, 374

lim

Euclides

in
ar

gerador de nmeros pseudoaleatreos,


EQUACAO-DIOFANTINA-QUADRATICA

grafo bipartido, 376


grafo conexo, 376

grau de vrtice em grafo, 375


grupo, 349

cclico, 351

comutativo, 350

Pr
e

de unidades, 353

famlia de distribuies, 45

grupo multiplicativo de inteiros, 351

estatisticamente prximas, 46
fatorao de inteiros, 35

com curvas elpticas, 241


FDH, veja full-domain hash

Feige-Fiat-Shamir (protocolo de identicao), 211


Fermat

pequeno Teorema de, 343


Fiat-Shamir (mtodo para obteno de
esquema de assinatura), 216

Ve
rs

Fourier

transformada de, 405


Transformada discreta de, 409
transformada quntica de, 273
transformada rpida, 409

Hadamard
matriz de, 273
razo de, 278

HAM
problema, 382

hash, 9
hashing
funo de, 119
HMAC, 141
homomorsmo, 352
Howlader-Basu (esquema de encriptao negvel), 303
IDEA (cifra de bloco), 80
identicao

FOX (cifra de bloco), 80, 89

protocolos de, 211


Fujioka-Okamoto-Ohta (esquema de vo- IDKMA, 257
tao), 319
IND-ID-CCA (segurana de criptossisfull-domain hash, 170
tema baseado em identidade),
funo

256

de mo nica forte, 33

IND-ID-CPA (segurana de criptossis-

de mo nica fraca, 38

tema baseado em identidade),

funo desprezvel, 27
funcionalidade ideal, 222

256
indecidvel (problema), 394

notas de aula  verso 90 - Jernimo C. Pellegrini

NDICE REMISSIVO

459

indistinguibilidade computacional, 47

transformao de, 122

intermediador incorrompvel, 224

mix-net, 314

isomorsmo

MOCHILA
no aproximabilidade, 391

em estruturas algbricas, 356

problema, 385
prova de

in
ar

de grafos, 377

N P -completude,

385

Jacobi, smbolo de, 347

modos de operao (cifra de bloco), 69

JPEG

mundo ideal, 222

formato digital para imagens gr-

mundo real, 222

cas, 413
justeza (em sistema de votao, 313

nmero de Carmichael, 380


nmero primo, 336

nmeros primos entre si, 336

Kerckho, princpio de, 20

no-coercibilidade (em sistema de vo-

lim

Kasiski (mtodo para criptanlise), 329


Kerckho, princpio de , 29

tao), 313

no-repdio, 163
Lagrange

NTRU (criptossistema), 281

interpolao, 191
Lamport

OAEP, 157

esquema de assinaturas de, 168

one-time pad, 22

operao quntica, 272

Legendre, smbolo de, 346

ordem de crescimento, 368

Pr
e

Lamport (esquema de assinaturas), 168


Lema do Empilhamento, 97, 98

ordem de elemento em grupo, 350

LFSR

ordem de um grupo, 350

de comprimento mximo, 56
linguagem

output feedback

modo de operao de permutao

Turing-decidvel, 398

pseudoaleatrea, 71

Turing-reconhecvel, 397

LLL (algoritmo), 279


logaritmo discreto, 34

logaritmo discreto (problema)

Ve
rs

em grupos de curvas elpticas, 239

Luby-Racko (Teorema), 79

PARTIO
problema, 393
perodo de sequncia, 52
permutao de mo nica, 34
com segredo, 150

LWE (criptossistema), 282

permutao indexada, 69

LWE (problema em reticulados), 277

permutao pseudoaleatrea, 69

m-sequncia, 56

polinmio de conexo, 55

mquina de Turing, 395, 397

polinmio irredutvel, 357

mximo divisor comum, 335

polinmio primitivo, 360

seecdigo de autenticao de mensa-

polinmio sobre estrutura algbrica, 357

gem, 135

McEliece (criptossistema), 292

forte, 69

polinmios mdulo

mdc, veja mximo divisor comum

mtodo

menor base

mtodo

problema, 394

Merkle-Damgrd

f,

358

Pollard

para fatorao, 246


p 1 para fatorao, 244

porta de comunicao, 179


predicado hard-core, 40

notas de aula  verso 90 - Jernimo C. Pellegrini

NDICE REMISSIVO

460

construo para funes de mo


nica, 42

protocolo de identicao, 213


Secure Hash Algorithm, 125

problema

segurana de esquema de assinatura


CMA, 164, 167

de deciso, 377

KMA, 164, 166

problema da parada, 395

in
ar

de busca, 377

RMA, 164, 165

SHA (resumo criptogrco), veja Se-

produto de subconjunto
problema, 394

cure Hash Algorithm

protocolo, 179

SHA-1, 422

prova interativa, 205

sigilo (em sistema de votao), 313

provas de conhecimento zero

sigilo perfeito, 21

em sistema de votao, 314

SIS (problema em reticulados), 277

pseudoprimo, 380

lim

sistema completo de resduos, 342


sistema de prova interativa, 205

qubit, 270

sistema reduzido de resduos, 343


SOBREVIVENCIA-DE-REDE (problema),

Rabin

404

criptossistema, 152

soma de subconjuntos, 35

raiz da unidade, 354

subgrupo, 350

subgrupo gerado, 350

Pr
e

raiz primitiva mdulo m, 344


rede de Feistel, 76

subgrupo oculto, 273

rede de substituio e permutao, 73

subsequncia constante, 52

reduo, 382

substituio local, 385

reencriptao, 314

SVP (problema em reticulados), 37

registrador de deslocamento, 53
linear realimentado, 54

tempo pseudopolinomial, 389


teorema Chins do resto, 340

relao de recorrncia, 370

teorema dos nmeros primos, 336

resduo quadrtico, 344

tese de Church-Turing, 398

registrador quntico, 271

residuosidade quadrtica (problema), 159teste de paridade (em cdigos), 290


texto cifrado escolhido, 142

resistncia de pr-imagem, 120

texto claro escolhido, 61

resistncia de segunda pr-imagem, 120

tociente (funo), 336

restrio (tcnica de demonstrao de

transferncia inconsciente, 217

Ve
rs

resistncia a coliso, 120

N P -completude),

384

resumo criptogrco, 119

transformada integral, 413


TSP

reticulado, 36, 277

problema, 383

robustez (em sistema de votao), 313

prova de

N P -completude,

384

ROT13, 326

RSA (criptossistema), 154

unidade (em anel), 353

verso insegura, 155

RSA (esquema de assinaturas), 169

vericabilidade (em sistema de vota-

S-box, 73

vetor de recombinao, 192

SBP (problema em reticulados), 38

vetor peridico, 274

Schnorr

vis

o, 313

notas de aula  verso 90 - Jernimo C. Pellegrini

NDICE REMISSIVO

461

de varivel aleatrea binria, 97

Ve
rs

Pr
e

lim

in
ar

votao eletrnica, 313

Você também pode gostar