Você está na página 1de 452

notas de aula verso 79 - Jernimo C.

Pellegrini

Introduo Criptograa e seus Fundamentos notas de aula verso 79


Jernimo C. Pellegrini

5 de novembro de 2012

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Sumrio
Sumrio

Conceitos Fundamentais
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

lim
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mo nica . . . . .

Ve rs

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

1 Introduo e viso geral 1.1 Encriptao simtrica . . . . . 1.2 Encriptao assimtrica . . . . 1.3 Resumos (hashes) criptogrcos 1.4 Assinatura digital . . . . . . . . 1.5 Estabelecimento de chaves . . . 1.6 Chaves pblicas conveis . . . 1.7 Protocolos . . . . . . . . . . . . 1.8 Criptograa Ps-Quntica . . . 1.9 Criptograa Quntica . . . . . 1.10 Sobre este texto . . . . . . . . . 1.10.1 Jogos e experimentos . . 1.10.2 Notao e convenes .

Pr e
i

3 Problemas Difceis 3.1 Funes de mo nica . . . . . . . . . . . . . . 3.1.1 Funes fracamente de mo nica . . . . 3.2 Predicados hard-core . . . . . . . . . . . . . . . 3.3 Predicados hard-core para quaisquer funes de

in ar
i

3
. . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 9 10 11 11 11 14 14 14 14 16 19 20 20 21 24 25 26 26 27 31 31 34 35 37

. . . . . . . .

. . . . . . . .

. . . .

. . . .

notas de aula verso 79 - Jernimo C. Pellegrini

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

SUMRIO 39 39 43 45 45 46 51 51 51 55

Ve rs

5 Cifras de Bloco 5.1 Esquemas de Encriptao usando Funes Pseudoaleatreas 5.2 Permutaes Pseudoaleatreas . . . . . . . . . . . . . . . . 5.2.1 Famlias de permutaes pseudoaleatreas . . . . 5.3 Modos de Operao . . . . . . . . . . . . . . . . . . . . . . 5.3.1 ECB Electronic Code Book . . . . . . . . . . . . . 5.3.2 CBC Cipher Block Chaining . . . . . . . . . . . . 5.3.3 OFB Output Feedback . . . . . . . . . . . . . . . . 5.3.4 CTR Contador . . . . . . . . . . . . . . . . . . . . 5.4 Cifras de bloco . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Segurana de cifras de bloco . . . . . . . . . . . . . . 5.4.2 Construo . . . . . . . . . . . . . . . . . . . . . . . 5.5 Arquitetura de cifras de bloco . . . . . . . . . . . . . . . . . 5.5.1 Confuso e difuso . . . . . . . . . . . . . . . . . . . 5.5.2 Rede de substituio e permutao . . . . . . . . . . 5.5.3 Rede de Feistel . . . . . . . . . . . . . . . . . . . . . 5.5.4 Construo de Lai-Massey . . . . . . . . . . . . . . . 5.6 Exemplo: DES . . . . . . . . . . . . . . . . . . . . . . . . . 5.6.1 Escalonamento de chaves . . . . . . . . . . . . . . . 5.6.2 3DES . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7 Exemplo: AES . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.1 Descrio simplicada . . . . . . . . . . . . . . . . . 5.7.2 Descrio algbrica . . . . . . . . . . . . . . . . . 5.8 FOX (IDEA-NXT) . . . . . . . . . . . . . . . . . . . . . . . 6 Noes de Criptanlise 6.1 Uma rede de substituio e permutao . . . . 6.2 Criptanlise linear . . . . . . . . . . . . . . . . 6.2.1 O Lema do Empilhamento . . . . . . . . 6.2.2 Criptanlise da rede . . . . . . . . . . . 6.2.3 Escolha da trilha e resistncia ao ataque 6.3 Criptanlise diferencial . . . . . . . . . . . . . . 6.4 Criptanlise Algbrica . . . . . . . . . . . . . . 6.5 Tcnicas de criptanlise relacionadas . . . . . .

Pr e

lim
. . . . . . . .

in ar
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 61 63 63 63 64 64 65 65 66 66 67 67 67 67 69 71 72 73 73 75 75 78 80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 . 85 . 88 . 89 . 90 . 99 . 99 . 105 . 107

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

notas de aula verso 79 - Jernimo C. Pellegrini

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

iii 111 113 114 115 117 119 120 122 123

Ve rs

9 Criptograa Assimtrica 9.1 Protocolos criptogrcos . . . . . . . . . . . . . . 9.2 Estabelecimento de chaves . . . . . . . . . . . . . 9.3 Protocolo Die-Hellman para estabelecimento de 9.3.1 Ataque de homem-no-meio . . . . . . . . 9.4 Criptossistemas Assimtricos . . . . . . . . . . . 9.4.1 Funes de mo nica com segredo . . 9.5 Segurana CCA . . . . . . . . . . . . . . . . . . . 9.6 Elgamal . . . . . . . . . . . . . . . . . . . . . . . 9.7 Criptossistema de Rabin . . . . . . . . . . . . . . 9.8 RSA . . . . . . . . . . . . . . . . . . . . . . . . . 9.8.1 Ataques ao RSA . . . . . . . . . . . . . . 9.8.2 Verso segura do RSA: OAEP . . . . . . 9.9 Goldwasser-Micali . . . . . . . . . . . . . . . . .

lim
. . . . . . . . chaves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nica

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

. . . . . .

10 Assinaturas Digitais 10.1 Segurana . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.1 Segurana RMA . . . . . . . . . . . . . . . . . 10.1.2 Segurana KMA . . . . . . . . . . . . . . . . . 10.1.3 Segurana CMA . . . . . . . . . . . . . . . . . 10.1.4 Aumentando a segurana de esquemas . . . 10.2 Esquema de assinaturas de Lamport . . . . . . . . . . 10.3 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1 Full-domain hash . . . . . . . . . . . . . . . . . 10.4 Elgamal . . . . . . . . . . . . . . . . . . . . . . . . . . 10.4.1 DSA . . . . . . . . . . . . . . . . . . . . . . . . 10.5 Full-domain hash com qualquer permutao de mo

Pr e

in ar
. . . . . . . . . . . . . . . . . . . . . . . . 127 128 130 130 131 133 134 . . . . . . . . . . . . . . . . . . . . . . . . . . 137 137 137 138 141 141 142 142 142 144 146 147 148 149 155 156 157 158 159 160 160 161 162 162 163 164 . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

notas de aula verso 79 - Jernimo C. Pellegrini

iv

SUMRIO

II

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

167
171 171 172 177 178 178

Ve rs

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

Pr e

12 Compartilhamento de Segredos 12.1 Esquemas com qurum . . . . . . . . . . . . 12.1.1 Esquema de Shamir . . . . . . . . . 12.1.2 Esquema de Blakley . . . . . . . . . 12.2 Segurana . . . . . . . . . . . . . . . . . . . 12.2.1 Sigilo . . . . . . . . . . . . . . . . . 12.3 Estruturas gerais de acesso . . . . . . . . . 12.4 Compartilhamento vericvel . . . . . . . . 12.5 Compartilhamento publicamente vericvel 12.5.1 Segredos no aleatreos . . . . . . . 12.6 Encriptao com qurum . . . . . . . . . . 12.7 Notas . . . . . . . . . . . . . . . . . . . . . 12.8 Exerccios . . . . . . . . . . . . . . . . . . .

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

lim

14 Protocolos Seguros com Dois Participantes 207 14.1 Transferncia Inconsciente . . . . . . . . . . . . . . . . . . . . . . 207 15 Computao Segura com Mltiplos Participantes 15.1 Um protocolo para participantes semi-honestos . . 15.2 Segurana . . . . . . . . . . . . . . . . . . . . . . . 15.3 Notas . . . . . . . . . . . . . . . . . . . . . . . . . 15.4 Exerccios . . . . . . . . . . . . . . . . . . . . . . . 209 210 211 214 214

in ar
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 182 182 184 185 185 186 188 190 194 194 195 196 197 197 198 199 201 202 202 203 205 205 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11 Protocolos Para Comprometimento 11.1 Modelo computacional . . . . . . . . . . . . . 11.2 Comprometimento . . . . . . . . . . . . . . . 11.2.1 Comprometimento de bit . . . . . . . 11.2.2 Vericao de igualdade de logaritmos 11.2.3 Cara-ou-coroa . . . . . . . . . . . . . .

notas de aula verso 79 - Jernimo C. Pellegrini

SUMRIO

III

Outros Tpicos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

215
219 221 222 222 223 224 225 225 226 226 226 227 227 228 228 228

Pr e
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17 Primalidade e Fatorao 17.1 Fatorao . . . . . . . . . . . . . . . . . . . . . . 17.1.1 Crivo de Eratstenes e divises sucessivas 17.1.2 Mtodo p 1 de Pollard . . . . . . . . . . 17.1.3 Mtodo de Pollard . . . . . . . . . . . . 17.1.4 Crivo quadrtico . . . . . . . . . . . . 17.1.5 Curvas elpticas . . . . . . . . . . . . . 17.1.6 Crivo sobre corpo numrico algbrico . 18 Criptograa Baseada em Identidades 18.1 Gerao de chaves . . . . . . . . . . 18.2 Encriptao . . . . . . . . . . . . . . 18.3 Assinaturas . . . . . . . . . . . . . . 18.4 Acordo de chaves . . . . . . . . . . . 18.5 Duas construes simples . . . . . .

lim
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16 Curvas Elpticas 16.1 Operao de grupo para curvas elpticas . . 16.1.1 Simtrico . . . . . . . . . . . . . . . 16.1.2 Soma de pontos . . . . . . . . . . . . 16.1.3 Dobrando um ponto . . . . . . . . . 16.2 Ordem do grupo . . . . . . . . . . . . . . . 16.3 Corpos nitos usados em Criptograa . . . 16.3.1 Fp . . . . . . . . . . . . . . . . . . . 16.3.2 GF2m . . . . . . . . . . . . . . . . . 16.4 Criptossistemas e protocolos . . . . . . . . . 16.4.1 Logaritmo discreto . . . . . . . . . . 16.4.2 Die-Hellman . . . . . . . . . . . . 16.4.3 Elgamal . . . . . . . . . . . . . . . . 16.4.4 Outros criptossistemas e protocolos . 16.5 Emparelhamentos bilineares . . . . . . . . . 16.6 Fatorao de Inteiros . . . . . . . . . . . . .

Ve rs

19 Emparelhamentos Bilineares 19.1 Problemas difceis em emparelhamentos bilineares 19.2 Encriptao baseada em identidades . . . . . . . . 19.3 Assinaturas baseadas em identidades . . . . . . . . 19.4 Acordo de chaves . . . . . . . . . . . . . . . . . . . 19.5 Outras construes . . . . . . . . . . . . . . . . . .

20 Criptograa Ps-Quntica 20.1 Diculdade de problemas . . . . . . . . . . . . . . . . . . . . . . 20.2 Computao quntica . . . . . . . . . . . . . . . . . . . . . . . . 20.2.1 Operaes qunticas . . . . . . . . . . . . . . . . . . . . .

in ar
. . . . . . . . . . . . . . 231 231 231 232 234 236 238 238 241 242 243 244 246 246 253 254 254 255 255 256 257 257 258 260 . . . . . . . . . . . . . . . . . . . .

notas de aula verso 79 - Jernimo C. Pellegrini

vi

SUMRIO 20.3 Subgrupo oculto . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 20.4 Fatorao de inteiros . . . . . . . . . . . . . . . . . . . . . . . . . 261 20.4.1 Transformada quntica de Fourier . . . . . . . . . . . . . 261

23 Criptograa Visual 23.1 Um nico segredo (Naor e Shamir) . . 23.1.1 Esquemas para k e n pequenos 23.2 Dois segredos . . . . . . . . . . . . . . 23.3 Mltiplos segredos . . . . . . . . . . .

Pr e

22 Cdigos Corretores de Erros 22.1 Correo de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.1.1 Cdigos Lineares . . . . . . . . . . . . . . . . . . . . . . . 22.2 Criptograa com cdigos corretores de erros . . . . . . . . . . . .

lim
. . . . . . . . . . . . . . . . . . . . . . . .

21 Reticulados 21.1 Reticulados . . . . . . . . . . . . 21.2 Problemas difceis em reticulados 21.2.1 SBP e Ortogonalidade . . 21.2.2 LLL . . . . . . . . . . . . 21.2.3 CVP: algoritmo de Babai 21.3 GGH . . . . . . . . . . . . . . . . 21.3.1 Detalhes . . . . . . . . . . 21.3.2 Ataques ao GGH . . . . . 21.4 NTRU . . . . . . . . . . . . . . . 21.5 Ajtai-Dwork . . . . . . . . . . . . 21.6 LWE . . . . . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

265 265 266 266 267 267 267 268 269 269 270 270

Ve rs

24 Encriptao Negvel 24.1 Esquema de Howlader-Basu . . . . . . . . . . . . . . . 24.2 Esquema de Drmuth-Freeman . . . . . . . . . . . . . 24.3 Negabilidade por destinatrio e negabilidade completa 24.4 Aplicaes . . . . . . . . . . . . . . . . . . . . . . . . .

25 Votao Eletrnica 25.1 Mix Nets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2 Assinaturas cegas . . . . . . . . . . . . . . . . . . . . . . . . . 25.3 Exemplo: esquema de Chaum . . . . . . . . . . . . . . . . . . 25.3.1 Anlise . . . . . . . . . . . . . . . . . . . . . . . . . . 25.4 Exemplo: o esquema CGS (Cramer, Gennaro, Schoenmakers) 25.4.1 Anlise . . . . . . . . . . . . . . . . . . . . . . . . . . 25.4.2 Votao 1-de-L . . . . . . . . . . . . . . . . . . . . . . 25.5 Exemplo: esquema FOO (Fujioka, Okamoto, Ohta) . . . . . . 25.5.1 Anlise . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Dinheiro Eletrnico

in ar
273 273 275 278 281 281 284 284 284 287 289 294 295 296 299 300 301 302 302 303 304 305 305 306 309 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

notas de aula verso 79 - Jernimo C. Pellegrini

SUMRIO 27 Cifras Histricas 27.1 Cifras . . . . . . . . . . . . . . . . . 27.2 Enigma . . . . . . . . . . . . . . . . 27.3 Criptanlise . . . . . . . . . . . . . . 27.3.1 Anlise simples de frequncia 27.3.2 Vigenre . . . . . . . . . . . .

vii 311 311 314 315 315 315

IV

Apndices

A Probabilidade 319 A.1 O problema do aniversrio . . . . . . . . . . . . . . . . . . . . . . 319

Ve rs

D Transformada de Fourier D.1 Transformada de Fourier . . . . . . . . . D.2 Transformada discreta de Fourier . . . . D.2.1 Transformada rpida de Fourier . D.3 Transformada do Cosseno . . . . . . . . D.3.1 Compresso de imagens: JPG . . E Descrio Detalhada de Construes E.1 DES . . . . . . . . . . . . . . . . . . . . E.1.1 Descrio geral . . . . . . . . . . E.1.2 Permutao inicial e sua inversa E.1.3 Funo interna F . . . . . . . . . E.1.4 Escalonamento de chaves . . . . E.2 AES . . . . . . . . . . . . . . . . . . . .

C Complexidade Computacional C.1 Complexidade de tempo . . . . . . . . . . . . . . . . . . C.1.1 Recorrncias . . . . . . . . . . . . . . . . . . . . C.1.2 Tamanho da entrada e nmero de bits . . . . . . C.2 Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Problemas de deciso e de busca . . . . . . . . . . . . . C.4 Algoritmos no determinsticos . . . . . . . . . . . . . . C.5 Algoritmos Randomizados . . . . . . . . . . . . . . . . . C.6 Classes de Complexidade . . . . . . . . . . . . . . . . . C.7 Redues e completude . . . . . . . . . . . . . . . . . . C.7.1 Tcnicas para demonstrao de N P -completude C.7.2 Padres comuns . . . . . . . . . . . . . . . . . . C.7.3 Problemas N P -completos na prtica . . . . . . . C.7.4 Outros problemas N P -completos . . . . . . . . . C.8 Problemas indecidveis . . . . . . . . . . . . . . . . . . . C.9 Mquinas de Turing . . . . . . . . . . . . . . . . . . .

lim
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B lgebra e Teoria dos Nmeros

Pr e

in ar
317
321 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 353 356 360 360 363 364 365 366 368 369 374 375 379 380 381 391 391 394 395 397 398 401 401 401 403 403 406 408 . . . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

notas de aula verso 79 - Jernimo C. Pellegrini

viii E.2.1 E.2.2 E.2.3 E.2.4 Quantidade de rodadas . Escalonamento de chaves Encriptao . . . . . . . . Decriptao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

SUMRIO . . . . . . . . . . . . . . . . 408 409 409 410 411

F Respostas e Dicas Referncias Bibliogrcas ndice Remissivo

Ve rs

Pr e

lim

in ar
421 438

notas de aula verso 79 - Jernimo C. Pellegrini

Ve rs
1

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

SUMRIO

Notao
||x|| a||b [a]n X 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 a, b rotlk (a) ab a R S a, b f ( ) ab ab ab a perm_col (M ) O QRn Jn

tamanho da representao binria de x, precedida pelo bit 1 concatenao das sequncias a e b a classe de equivalncia a (mod n) o grupo gerado por X o nmero A est representado na base 16 (hexadecimal) As distribuies das variveis aleatreas A e B so indistinguveis x e y so nmeros, e x aproximao de y uma construo criptogrca (criptossistema, funo de hashing etc) assinatura grupo multiplicativo de inteiros mdulo n 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 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 x logaritmo de x na base 2 logaritmo discreto de h na base g bit mais signicativo de x funo desprezvel o algoritmo ou funo retornar dois valores, a e b rotao dos bits de a, k posies esquerda b computado e armazenado em a a escolhido uniformemente ao acaso do conjunto S a funo f retorna dois valores e lgico de a e b ou lgico de a e b ou exclusivo (XOR) de a com b (adio mdulo 2) no lgico (negao do bit a) conjunto de todas as matrizes obtidas permutando colunas de M ponto no innito, adicionado ao R2 conjunto de resduos quadrticos mdulo n conjunto de nmeros em Zn com smbolo de Jacobi igual a +1

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Parte I

Ve rs
3

Pr e

Conceitos Fundamentais

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

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

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 1

Introduo e viso geral

A Criptograa abrange desde a concepo at a implementao de sistemas de computao relacionados a diversos aspectos de segurana. As sees seguintes do uma viso geral dos temas que abordaremos. Em alguns casos h exemplos concretos.

1.1

Encriptao simtrica

Ve rs

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 usar Enc(m, k ) para a funo que cifra e Dec(m, k ) para a funo que decifra m com a chave k . Evidentemente, necessrio que Dec(Enc(m, k ), k ) = m para todos m e k . A funo que transforma a mensagem (que chamamos de texto claro) em algo irreconhecvel (que chamamos de texto cifrado) deve necessariamente ser difcil de inverter sem o argumento k , de outra forma qualquer um com acesso mensagem poderia facilmente decifr-la. Ao algoritmo usado para calcular as funes Enc e Dec damos o nome de cifra. comum 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

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

8
mensagem

CAPTULO 1. INTRODUO E VISO GERAL

1 0 0 1 0 1 1 1 0 1 texto cifrado

0 0 1 1 1 0 1 0 1 1

bits aleatreos

Cifras de bloco, que transformam sequncias de bits de tamanho xo, realizando nelas transformaes difceis de inverter.
mensagem

Pr e
f f 1 1 0 1 1

0 1 1 0 1

Ve rs
1.2

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.

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) determina a mensagem a partir do texto cifrado e da chave. importante que f 1 seja difcil de calcular sem a chave k (deniremos com mais clareza esta diculdade mais adiante).

Encriptao assimtrica

lim
1 1 0 1 1 f 0 0 0 1 1 texto cifrado

A semente do gerador aleatreo a senha que permite encriptar e decriptar mensagens. Em uma cifra de uxo usando ou exclusivo, Enc e Dec so idnticas;

0 0 0 1 0

1 1 1 1 0

in ar
1 0 1 0 1 1 0 1 1 0

notas de aula verso 79 - Jernimo C. Pellegrini

1.3. RESUMOS (HASHES) CRIPTOGRFICOS

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

Ve rs

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

Pr e

1.3

Resumos (hashes) criptogrcos

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

10

CAPTULO 1. INTRODUO E VISO GERAL mensagem secreta! SHA-256 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 secreta a partir de 1cc5 a94a).

Funes de hashing so diretamente teis em diversas situaes onde queremos garantir a integridade de dados, e tambm na construo de outras ferramentas criptogrcas. Suponha que queiramos garantir a integridade de um arquivo ou mensagem, evitando que algum mais o modique (um vrus ou um intruso, por exemplo). Poderamos computar resumos (hashes) destes arquivos (o resumo de um arquivo tem tamanho muito menor que o prprio arquivo) e armazen-los em uma tabela. No entanto, nada impede que o intruso recalcule os hashes e os 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 pseudoaleatreos, para derivar novas chaves de uma nica chave-mestra e construir cifras de bloco

Ve rs
1.4

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

Assinatura digital

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

1.5. ESTABELECIMENTO DE CHAVES

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

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.

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

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

12

CAPTULO 1. 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 criptogrcos. Transferncia opaca (ou inconsciente) Em determinadas situaes pode ser necessrio que Alice envie uma de duas mensagens, m0 ou m1 para Bob; que Alice tenha certeza de que Bob recebeu uma das duas mensagens, mas que no saiba qual delas foi recebida. Embora parea inicialmente algo estranho, trata-se de uma ferramenta importante, usada para construir outros protocolos ( possvel construir qualquer protocolo de duas partes usando como primitiva apenas transferncia inconsciente).

Ve rs

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

Compartilhamento de segredos Uma senha d acesso a muitas informaes de extrema importncia. Queremos mant-la em sigilo, mas no queremos deixar que uma nica pessoa a tenha (esta pessoa pode no ser honesta, pode perder a senha e mesmo falecer). Tambm no queremos que a senha seja conhecida por muitos, porque teramos que conar em cada um deles. Idealmente,

Pr e

Compromisso Alice deve escolher um valor (ou um dado qualquer) e comprometerse com ele, mas sem que Bob saiba qual foi o valor escolhido. Para que Alice no possa mudar sua escolha mais tarde, deve mostrar a Bob uma prova de que fez uma escolha, mas sem que a escolha seja revelada. O que Alice faz semelhante a entregar a informao a Bob em um cofre (ou envelope lacrado). Quando o valor tiver que ser usado, Alice mostra um segredo que pode ser usado para revelar sua escolha. Pode-se implementar um esquema de compromisso usando uma funo de hashing: Alice envia a Bob o resumo 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.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

1.7. PROTOCOLOS

13

O compartilhamento de segredos, alm de ser diretamente til, tambm importante na construo de protocolos para computao segura por vrios atores.

Ve rs

Eleies eletrnicas Em uma eleio eletrnica com voto sigiloso h que nenhum eleitor vote mais de uma vez; que ningum possa duplicar o voto de outro; que o resultado seja computado corretamente, e que seja possvel a qualquer um vericar que o resultado est correto. possvel construir protocolos 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.

Pr e

lim

in ar

esta senha deveria ser guardada em segredo por um grupo de pessoas, at que, por exemplo, dois teros do grupo decida revel-lo. A diculdade est em permitir que qualquer conjunto de pessoas com mais de 2/3 do grupo possa revelar o segredo (no basta quebrar uma chave criptogrca em vrias partes). Esquemas de compartilhamento de segredos permitem resolver este problema: derivamos de um segredo diversos pedaos de informao que podem ser usados (k por vez) para reconstruir o segredo original.

notas de aula verso 79 - Jernimo C. Pellegrini

14

CAPTULO 1. INTRODUO E VISO GERAL

1.8

Criptograa Ps-Quntica

1.9

Criptograa Quntica

1.10

Sobre este texto

Ve rs
1.10.1

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 D e um adversrio A, onde usamos um parmetro n. Damos a este jogo o nome NUMBER_GUESS(A, n).

Experimento 1.1 (NUMBER_GUESS(A, n)). O desaador comea sorteando um nmero k entre um e n, e depois o envia a A. O adversrio ento tenta adivinhar

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 os sistemas descritos nas sees anteriores.

Jogos e experimentos

Pr e

lim

A Criptograa Quntica trata do uso de mecnica quntica em Criptograa. 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.

in ar

Os computadores qunticos, embora ainda apenas teoricamente, poderiam resolver de maneira eciente problemas como o do logaritmo discreto e o da fatorao 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.

notas de aula verso 79 - Jernimo C. Pellegrini

1.10. SOBRE ESTE TEXTO

15

k R [1, n]

n k1

k1 = k 1, FIM

k1 k k2

k2 = k 1, FIM

k2 k k3

k3 = k 1 k3 = k 0

Ve rs

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

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

Passamos agora a um exemplo diretamente relacionado a Criptograa. No prximo experimento testamos um criptossistema contra um adversrio A. O adversrio escolhe duas mensagens e envia ao desaador. Em seguida D escolhe aleatoreamente um bit (b R {0, 1} signica que b escolhido aleatoreamente no conjunto {0, 1}), e Encripta a mensagem mb (que corresponde ao bit escolhido). D ento envia mb encriptada ao adversrio, que deve adivinhar qual das mensagens foi cifrada. Quando A consegue adivinhar qual era a mensagem, o experimento tem um como resultado; em caso contrrio, o resultado zero.

Pr e

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

lim

in ar

o nmero e envia sua tentativa k1 a 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 k1 = k ), o desaador responde dizendo se k < n ou k > n, e o adversrio pode tentar novamente. O desaador aceitar at tres tentativas de A, mas depois encerrar o jogo. O jogo mostrado no diagrama a seguir.

notas de aula verso 79 - Jernimo C. Pellegrini

16

CAPTULO 1. INTRODUO E VISO GERAL D A

mb b=b 1 seno 0 b

1.10.2

Notao e convenes

Ve rs

Se adotarmos um ponto de vista prtico, notaremos imediatamente que necessrio traduzir as mensagens prticas (que podem ser texto ou arquivos binrios) para os nmeros usados nas construes tericas. Presumimos que h alguma maneira simples de traduzir as mensagens em sequencias de bits, e que ao usar uma das construes 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. Assim, log(x) neste texto refere-se ao logaritmo de x na base dois. A notao 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. Muitas das demonstraes tem como componente algoritmos. Quando o algoritmo 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

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 a, b, c f (x)

retorne a, b, c

Pr e

lim

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 este acompanhar a descrio.

in ar

b R { 0, 1 }

m0 , m1

notas de aula verso 79 - Jernimo C. Pellegrini

1.10. SOBRE ESTE TEXTO

17

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

ci R C

c1 , c2 , . . . , c5 ci

c6 R C \ {ci }

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

Determine a probabilidade de sucesso de A no jogo. Ex. 4 Dena um experimento aleatreo que descreve o jogo de vinte-e-um (blackjack) de um adversrio contra uma banca. Determine:

Ve rs

i) A probabilidade do adversrio conseguir vinte e um;

ii) A probabilidade de a pontuao do adversrio seja 21 aps k rodadas para k = 1, 2, . . ..

Pr e
c6

lim
A c1 , . . . , c 6

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

18

CAPTULO 1. INTRODUO E VISO GERAL

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 2

Ve rs

No Sculo XX, Claude Shannon formalizou diversas ideias a respeito de segurana e props o conceito de sigilo perfeito. Infelizmente, criptossistemas com sigilo perfeito no so viveis na prtica. Uma vez que criptossistemas com sigilo perfeito no so construes viveis, por certo tempo foram desenvolvidas construes 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 demonstraes 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

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 conseguissem frustrar os objetivos do usurio.

Pr e

Ao contrrio de outros Captulos, onde fatos histricos so isolados na Seo Notas, este Captulo inicia com alguns pargrafos que resumem, em muito alto nvel de detalhes, a evoluo dos conceitos de segurana em 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.

lim

Criptossistemas e Noes de Segurana

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

20

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

2.1

Criptossistemas

Denio 2.1 (Criptossistema de chave privada). Um criptossistema de chave privada consiste de trs algoritmos polinomiais:

Enc, um algoritmo randomizado que aceita uma chave k , uma mensagem m e retorna um texto cifrado c; Dec, um algoritmo determinstico que aceita uma chave k e um texto cifrado c e retorna uma mensagem m. Para toda chave k , toda mensagem m e todo texto cifrado c, necessrio que Deck (Enck (m)) = m. Neste texto denotamos por K o espao de chaves, M o espao de mensagens e C o espao de textos cifrados Usaremos as distribuies de probabilidade sobre K, M e C . A distribuio sobre K determinada pelo algoritmo Gen. A distribuio sobre M no determinada pelo criptossistema, mas sim pelas probabilidades a priori das mensagens. As distribuies sobre K e M so independentes; j a distribuio sobre C determinada pelas outras e pelo algoritmo Enc. Denotaremos as trs variveis aleatreas por K, M e C: Pr[K = k ] a probabilidade de a chave k ser escolhida por Gen; Pr[M = m] a probabilidade da mensagem ser m; e Pr[C = c] a probabilidade do texto cifrado ser c. Para 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].

Ve rs
2.2

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

Princpio de Kercho

Pr e

lim

Gen, um algoritmo randomizado que escolhe uma chave de acordo com alguma distribuio de probabilidades;

in ar

Embora o escopo da Criptograa seja muito mais amplo que o estudo de criptossistemas simtricos, os usaremos na descrio de conceitos fundamentais sobre segurana em criptograa. No decorrer do texto usaremos os nomes Enc e Dec para funes que encriptam e decriptam mensagens. Normalmente estas funes aceitaro pelo menos dois argumentos: uma chave e um texto. Ao invs de denotar Enc(k, x) e Dec(k, x), usaremos Enck (x) e Deck (x).

notas de aula verso 79 - Jernimo C. Pellegrini

2.3. SIGILO PERFEITO 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.

21

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

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 m M e c C , Pr(c|m) = Pr(c). Demonstrao. () Dada uma mensagem m e um texto cifrado c, considere a equao Pr(c|m) = Pr(c). Multiplique ambos os lados por Pr(m)/ Pr(c):

Pr(c|m) Pr(m) = Pr(m) Pr(c)

Ve rs

Criptossistemas com sigilo perfeito tem uma sria limitao, que demonstramos no Teorema 2.4 a seguir: a quantidade de chaves deve ser to grande quanto a quantidade de possveis mensagens. Se as mensagens tiverem tamanho xo, isso implica que o tamanho das chaves deve ser igual ao tamanho dos documentos1 Teorema 2.4. Em um criptossistema com sigilo perfeito, |K| |M|.

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

1 Se quisermos cifrar documentos de 1 Mb, teremos que determinar M como todas as sequncias de bits que formam documentos de 1 Mb, que o mesmo que 8 10242 = 8388608 bits. Teramos ento 28388608 possveis mensagens, e este teria que ser tambm o tamanho do espao de chaves. A representao de cada chave ento ocuparia 1 Mb.

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

Pr e

lim

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

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

22

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

Como para cada mensagem m M(c) h pelo menos uma chave k K tal que m = Deck (c), ento |M(c)| |K|. Mas como nossa hiptese inicial era de que |K| < |M|, temos que |M(c)| |K| < |M| e portanto, como |M(c)| < |M, deve haver alguma mensagem m M tal que m / M(c), e neste caso Pr(m |c) = 0 = Pr(m ) = 1 . M

1 (A distribuio sobre M uniforme, por isso armamos que Pr(m ) = M .) Mostramos assim que com |K| < |M| um criptossistema no tem sigilo perfeito.

Um exemplo de criptossistema com sigilo perfeito o one-time pad, tambm chamado de cifra de Vernam. Usamos a notao 1n para a sequncia de n bits iguais a um, e {0, 1}n para o conjunto de todas as sequncias de n bits. Construo 2.5 (One-time pad). O one-time pad requer que o tamanho das chaves seja igual ao das mensagens e dos textos cifrados. Assim, usando representao binria para as chaves, K = M = C = {0, 1}n para algum n. Gen escolhe uniformemente uma chave k K Enc e Dec realizam a operao ou-exclusivo bit a bit entre seus dois argumentos. Ou seja, Enck (m) = k m, Deck (c) = k c. A Figura a seguir ilustra o funcionamento do one-time pad.

1 1 1 0 0 1 1 1 0 1 0 0 1 1 0 0 1 0 1 1

Ve rs

0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 1 1 0 mensagem

Pr e
chave

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

lim

1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 1 1 0 1 texto encriptado

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

2.3. SIGILO PERFEITO

23

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

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

Demonstrao. Como a denio de sigilo perfeito no pressupe qualquer distribuio sobre M, deve valer para todas. Tomamos ento uma distribuio qualquer sobre M, uma mensagem m e um texto cifrado c. Para o one-time pad, Pr(c|m) = Pr[M K = c|M = m] = Pr[m K = c] 1 |K|

Como isto vale para toda distribuio sobre M e para quaisquer mensagens m0 , m1 e qualquer texto cifrado c, ento

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, m0 ou m1 , originou um texto cifrado c. Usaremos esta simulao de jogo para provar que a probabilidade de acerto do adversrio exatamente 1/2. Usaremos estes jogos tambm nas denies de outras noes de segurana ao longo do texto. Consideraremos possveis ataques a um criptossistema. No modelo a ser usado h um adversrio A. Deniremos um experimento para o criptossistema = (Gen, Enc, Dec) e o adversrio A. Chamaremos este experimento de PRIV_EAV(A) (eav para eavesdropping). Deixaremos que o adversrio escolha duas mensagens. Em seguida, cifraremos uma delas (sem que ele saiba qual) e a enviaremos a ele. O adversrio dever ento descobrir qual das mensagens foi cifrada.

P (c|m0 ) =

Pr e
= Pr[K = m c] = 1 = P (c|m1 ) |K|

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

24

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

O Experimento PRIV_EAV aceita dois parmetros: o criptossistema e o adversrio. A notao que usaremos neste texto para um criptossistema qualquer e A para um adversrio. Quando um criptossistema tiver sigilo perfeito, ele poder ser denotado . Experimento 2.8 (PRIV_EAV(, A)). 1. A escolhe duas mensagens m0 e m1 M;

2. Uma chave k K gerada usando Gen, e um bit b escolhido aleatoreamente. Ento a mensagem mb cifrada e enviada para A; 3. A mostra b ;

Denio 2.9 (Sigilo perfeito de criptossistema simtrico (verso com adversrio)). Um criptossistema tem sigilo perfeito sobre um conjunto de mensagens M se para todo adversrio A, Pr[PRIV_EAV(, A) = 1] = 1 . 2

Ve rs
2.4

Esta denio equivalente denio 2.2, mas no apresentaremos a demonstrao. Note que esta denio no impe restries ao tamanho das mensagens e nem ao tempo que A 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 e A; haver variaes).

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

Pr e
b=b 1 b=b 0

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

lim
A m0 , m1 Enck (mb ) b

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

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

2.5. SEGURANA DEMONSTRVEL

25

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. Estes dois pontos so elaborados a seguir. Denir rigorosamente segurana: antes de demonstrar que uma construo 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. 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).

Ve rs

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

Pr e

lim

in ar

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, e assim por diante. Estas ideias e mtodos (heursticas) mostraram ser bons o suciente para a construo de cifras de bloco cuja segurana vericada empiricamente bastante boa. As cifras de bloco (e funes de hashing) usadas na prtica em sistemas so exemplo disso: no h para elas demonstrao de segurana, mas foram desenvolvidas usando blocos bsicos e arquitetura que so normalmente reconhecidos como bons.

notas de aula verso 79 - Jernimo C. Pellegrini

26

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

2.5.1

Cenrios de ataque

H vrias possveis situaes em que um adversrio poderia tentar quebrar um criptossistema. As quatro mais simples so listadas a seguir.

KPA, ataque com texto claro conhecido: aqui o adversrio conhece pares de textos claros e cifrados, todos encriptados com uma mesma chave k , e tenta decriptar um outro texto cifrado, tambm encriptado com k ;

CCA (Chosen Ciphertext Attack, ataque de texto cifrado escolhido. Aqui o adversrio pode obter o deciframento de mensagens usando k , exceto daquela que realmente quer decifrar. 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.

Ve rs
2.5.2

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

Probabilidade desprezvel

Pr e

CPA (Chosen Plaintext Attack), ataque de texto claro escolhido: o adversrio pode obter a encriptao de textos sua escolha usando a chave k . Seu objetivo decriptar um outro texto que tambm foi encriptado com k;

lim

Ataque de texto cifrado conhecido: o adversrio tem apenas textos cifrados com uma chave k e tenta determinar as mensagens;

in ar

A segurana de cifras de bloco, por exemplo, passou de arte para heurstica: com o tempo o conjunto do conhecimento a respeito de mtodos de ataque e arquitetura de cifras de bloco permitiu 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 aproximar os mundos da criptograa simtrica e da segurana demonstrvel.

notas de aula verso 79 - Jernimo C. Pellegrini

2.5. SEGURANA DEMONSTRVEL

27

funo dita desprezvel quando se aproxima de zero mais rpido que o recproco de qualquer polinmio. Denio 2.10 (Funo desprezvel). Uma funo f desprezvel se para todo polinmio p() existe um N tal que para todos os inteiros n > N , f (n) < p(1 n) . Por exemplo,

f (n) = 21 n desprezvel, porque para qualquer polinmio p, haver um N 1 a partir do qual 21 n < p(n) ;
1 no desprezvel: seja h(n) = g (n) = n4 +100 1 qual h(n) < n 4. 1 n5 .

H algum N a partir do

A soma de duas funes desprezveis tambm desprezvel; A multiplicao de uma funo desprezvel por um polinmio uma funo desprezvel. Eventos com probabilidade desprezvel podem ser ignorados para efeitos prticos; aceitaremos como seguro um criptossistema que tenha probabilidade desprezvel de ser quebrado.

Ve rs
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; Admitiremos que o adversrio possa quebrar o sistema com probabilidade desprezvel.

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

Pr e

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

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

28

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

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

2. Uma chave k K gerada usando Gen(1n ), e um bit b escolhido aleatoreamente. Ento a mensagem mb cifrada e enviada para A; 3. A mostra b ;

Pr e
D k R { 0, 1 } b R { 0, 1 }
n

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

o Ve rs

b=b 1 b=b 0

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

lim
1n m0 , m1 Enck (mb ) b

1. O adversrio A recebe uma entrada 1n e escolhe duas mensagens m0 e m1 M que tenham o mesmo tamanho;

in ar

Deniremos um experimento para o criptossistema e o adversrio A. Chamaremos este experimento de PRIV_EAV(, A, n). Note que este experimento no o mesmo que aquele usado na 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 n (o tamanho das mensagens). Damos ao adversrio a entrada 1n e o deixaremos escolher duas mensagens de mesmo tamanho. Em seguida geraremos uma chave de tamanho n, cifraremos uma das mensagens (sem que o adversrio saiba qual) e a enviaremos a ele. O adversrio dever ento descobrir qual das mensagens foi cifrada. Formalizamos esta ideia da seguinte forma:

notas de aula verso 79 - Jernimo C. Pellegrini

2.5. SEGURANA DEMONSTRVEL

29

Notas
A denio de criptossistema que demos a mesma dada por Katz e Lindell [1] e tambm por Goldreich [2]. Auguste Kercho publicou suas idias a respeito de criptossistemas em seu artigo La Cryptographie Militaire , na revista francesa Journal des sciences militaires em 1883. Os princpios para construo de criptossistemas, descritos por Auguste Kercho, so: 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 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 [3] (e no livro de 1949 [4]). Shannon tambm desenvolveu um modelo terico para comunicao com sigilo em outro artigo, em 1949 [5]. Embora o artigo de Shannon de 1948 seja bastante claro e acessvel, o livro de Cover e Thomas [6] tambm muito boa introduo ao assunto, e cobre muitas aplicaes modernas. Na conferncia CRYPTO de 1999 Ueli Maurer apresentou um resumo de conceitos relacionados a Teoria da Informao com aplicaes em Criptograa [7]. O one-time pad foi descrito inicialmente por Vernam em um artigo de 1926 [8] (por isso tambm conhecido como cifra de Vernam), sem qualquer demonstrao de segurana; em 1949 Shannon deniu sigilo perfeito e mostrou que esta uma propriedade da cifra de Vernam [5]. Embora o one-time pad isolado no seja til como criptossistema, usado no desenvolvimento de diversas outras ferramentas, como esquemas de compartilhamento de segredos e negao plausvel importante portanto compreender no apenas sua importncia terica, mas tambm conseguir reconhec-lo em outras construes criptogrcas. O desenvolvimento de construes com forte nfase em segurana demonstrvel iniciou com a publicao do criptossistema de Sha Goldwasser e Silvio Micali em 1982 [9].

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

30

CAPTULO 2. CRIPTOSSISTEMAS E NOES DE SEGURANA

Exerccios
Ex. 5 Implemente o one-time pad. Ex. 6 [Stinson] Suponha que o one-time pad foi usado para encriptar m e m , resultando em c e c respectivamente. Sabendo que a mesma chave foi usada (de forma contrria ao que se recomenda quando usamos o one-time pad), mostre que mm =cc. 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 crescimento assinttico, tpica em anlise de algoritmos.

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

Ve rs

b) Prove que o criptossistema no seguro de acordo com nenhuma das denies dadas neste Captulo. c) Implemente o criptossistema, e tambm tente implementar um programa 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 perfeito.

Pr e

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

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 3

Problemas Difceis

Funes de mo nica so fundamentais para a Criptograa moderna. Informalmente, uma funo f de mo nica se fcil de calcular e difcil de inverter: h algoritmo polinomial para calcular f (x), mas dado y no h algoritmo eciente para encontrar um elemento da pr-imagem de y (algum x tal que f (x) = y ). Uma bvia aplicao de funes de mo nica a encriptao de mensagens. Se f de mo nica, queremos encriptar mensagens usando f (m). Outra maneira clara de usar funes de mo nica na construo de funes de hash, cujo funcionamento conceitualmente semelhante s funes de mo nica. Tambm queremos construir geradores pseudoaleatreos de bits (que so usados em quase todas as ferramentas criptogrcas). Para faz-lo, podemos simplesmente usar uma funo de mo nica sobre alguma funo que expanda a semente.

3.1

Funes de mo nica

Ve rs

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 A, a probabilidade de A conseguir encontrar um elemento da pr-imagem de f deve ser desprezvel no tamanho da entrada de f . Denio 3.1 (Funo de mo nica forte). Uma funo f fortemente de mo nica se 1. Fcil de computar: Existe um algoritmo de tempo polinomial que computa f; 2. Difcil de inverter: Todo algoritmo A randomizado de tempo polinomial deve ter probabilidade desprezvel de encontrar uma pr-imagem de f . 31

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

32

CAPTULO 3. PROBLEMAS DIFCEIS Ou seja, dado um elemento x com tamanho n escolhido uniformemente no domnio de f , todo polinmio positivo p() e todo n sucientemente grande, 1 P r A(f (x), 1n ) f 1 (f (x)) < p(n)

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 tamanho da entrada e que tem inversa. Estas so chamadas de permutaes de 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 = N P , ou se certas conjecturas forem verdadeiras. Assim, falaremos a seguir de funes candidatas a mo nica. Daremos tres exemplos de funes candidatas a mo nica: A exponenciao modular, que mostraremos ser permutao de mo nica (condicionada a uma conjectura); A multiplicao de inteiros. Mostraremos que esta funo satisfaz uma denio relaxada de funo de mo nica (condicionada a uma conjectura); A soma de subconjuntos. A obteno da inversa um problema N P completo (e portanto de mo nica se P for diferente de N P ).

Ve rs
1 ou

Tomamos a liberdade de, num abuso de linguagem, no resto deste Captulo, denominar as funes candidatas por funes de mo nica. Nosso exemplo de permutao de mo nica g x (mod p) onde p primo e g o gerador do grupo (Np , ). Exemplo 3.3 (Logaritmo Discreto). Sejam p um nmero primo; g um gerador de Zp com a operao de multiplicao1 . Cremos que a funo dexp p,g (x) = g x (mod p)

seja de mo nica, com o parmetro de segurana sendo a quantidade de bits usada para representar p.
uma raiz primitiva mdulo p consulte o Apndice B.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

3.1. FUNES DE MO NICA

33

Exemplo 3.5 (Fatorao de Inteiros). Dados dois primos p, q de tamanho n bits, seja mult (p, q ) = pq . Acreditamos que a mult seja uma funo de mo nica, com o parmetro de segurana sendo n.

Conjectura 3.6 (Diculdade da Fatorao de Inteiros). Para qualquer algoritmo randomizado polinomial A, quaisquer inteiros x, y com k bits cada, e qualquer polinmio positivo p(), P r[A(xy ) = (x, y )] < 1 . p(k )

Ve rs
2 Discrete 3 Integer

Exemplo 3.7 (Soma de Subconjuntos). Dados n inteiros x1 , , xn e uma descrio de um subconjunto deles, a funo somasub retorna o somatrio dos elementos do subconjunto. somasub(x1 , x2 , , xn , S ) = (x1 , x2 , , xn ,
i S

Pr e

evidente que mult computvel em tempo polinomial. No conhecemos, no entanto, algoritmo polinomial para determinar (p, q ) a partir de pq . Usaremos a hiptese de que tal algoritmo no exista, e nos referiremos a ela como a hiptese da fatorao de inteiros 3 .

Determinar o subconjunto S a partir dos elementos xi e da soma um problema N P -completo, e tambm acreditamos que esta funo seja de mo nica.

No entanto, nem todo problema N P -completo pode ser usado como base para funes de mo nica: para que a funo seja de mo nica, ela deve ser difcil de inverter quase sempre (exceto pela probabilidade desprezvel j mencionada). Um problema N P -completo pode ser fcil de resolver na maioria dos
logarithm assumption em Ingls. factorization assumption nos textos em Ingls.

lim
xi )

Conjectura 3.4 (Diculdade do Logaritmo Discreto). Para qualquer algoritmo randomizado polinomial A, qualquer nmero x escolhido ao acaso em Zq , onde ||q || = k o nmero de bits usados para representar q , e qualquer polinmio positivo p(), 1 . P r[A(p, g, dexp p,g (x)) = x] < p(k )

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

34

CAPTULO 3. PROBLEMAS DIFCEIS

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 algoritmos ecientes para resolv-lo.

3.1.1

Funes fracamente de mo nica

A denio de funo de mo nica dada anteriormente pode ser relaxada para que possamos encontrar funes de mo nica mais facilmente. Ao invs de exigir que adversrios consigam elementos da pr-imagem com probabilidade desprezvel, tentaremos agora exigir que um adversrio polinomial falhe com probabilidade no desprezvel.

1. Fcil de computar: Existe um algoritmo de tempo polinomial que computa f; 2. Ligeiramente difcil de inverter: Para todo algoritmo A randomizado de tempo polinomial, todo polinmio positivo p() e todo n sucientemente grande, 1 P r A(f (x), 1n ) / f 1 f (x)) > p(n) Com esta denio podemos mostrar que mult , por exemplo, de mo nica. Lema 3.9. Para k sucientemente grande, a probabilidade de um nmero com k bits escolhido ao acaso seja primo maior que 1/k .

Ve rs

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

O Exerccio 14 pede uma demonstrao deste Lema.

Pr e

lim

Denio 3.8 (Funo de mo nica fraca). Uma funo f fracamente de mo nica se:

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

3.2. PREDICADOS HARD-CORE

35

3.2

Predicados hard-core

Denio 3.12 (Predicado Hard-Core). H : {0, 1} {0, 1} um predicado hard-core de uma funo f se i) H um algoritmo polinomial para computar H (x);

P r[A(f (x)) = H (x)] onde k o nmero de bits de x.

Quando um predicado hard-core consiste em determinar se um certo bit da entrada igual a um, dizemos que aquele um bit hard-core.

Ve rs

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

O prximo Teorema mostra que a possibilidade de computar algo a respeito de uma funo de mo nica no apenas terica: realmente possvel computar um dos bits de x dado dexp p.g (x).

Pr e

ii) Para qualquer algoritmo randomizado polinomial A e x escolhido ao acaso, 1 + negl(k ), 2

lim

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. Por exemplo, poderamos tentar descobrir se o valor maior que um certo nmero (que no caso do leilo seria uma falha grave), ou a paridade do valor etc. Trataremos agora de como evitar estes problemas. Um predicado b hard-core de uma funo f se qualquer algoritmo probabilstico polinomial que calcule b(x) a partir de f (x) tiver probabilidade de sucesso perto de 1/2.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

36

CAPTULO 3. PROBLEMAS DIFCEIS

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

Teorema 3.16. Dado dexp p,g (x), msb (x) um predicado hard-core de dexp .

Ve rs

Demonstrao. A demonstrao a seguir mostra que um algoritmo determinstico para calcular msb (x) dado dexp p,g (x) implicaria na negao da conjectura do logaritmo discreto. possvel extender a demonstrao tambm para algoritmos randomizados, mas no o faremos. Suponha que exista um algoritmo A polinomial que compute msb (x) dado dexp p,g (x). Temos p, g e y = dexp p,g (x). Primeiro, calcule a paridade de x (usando o algoritmo do Teorema 3.13). Se x mpar (ou seja, era uma potncia mpar de g ), divida y por g e agora temos uma potencia par de g mdulo p. Esta potncia par de g tem duas razes quadradas r1 e r2 mdulo p (veja o Teorema B.34) e podemos calcul-las ecientemente. Uma delas ser g x/2 e a (p1) x outra ser g 2 + 2 . Podemos ento usar o algoritmo A para determinar qual destas razes a menor (qual tem o bit mais signicativo igual a zero). Tomamos esta raiz (g x/2 ) e iniciamos novamente o algoritmo. Desta forma determinamos cada bit de x, e paramos quando chegarmos a 1. O algoritmo mostrado em pseudocdigo a seguir, usando lsb (x) para o algoritmo que calcula paridade de x dado apenas y , e msb (x) para o suposto algoritmo eciente para calcular o bit mais signicativo de x. i0 x0 0 enquanto y = 1 c lsb (x) se c = 1 / x era mpar! / y yg 1 / temos agora potencia par / xi 1 / achamos um bit de x / senao xi 0 / achamos um bit de x / / determinamos as duas razes: / r1 , r2 y (mod p)

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

3.3. PREDICADOS HARD-CORE PARA QUAISQUER FUNES DE MO NICA37 se msb (x) = 0 y r1 senao y r2 ii+1 retorne (xi , xi1 , , x0 )

3.3

Predicados hard-core para quaisquer funes de mo nica

Na Seo anterior mostramos que um determinado bit hard-core para dexp . Na verdade podemos criar predicados hard-core para qualquer funo de mo nica. Teorema 3.17. Seja f uma funo fortemente de mo nica, e seja g (x, r) = (f (x), r), onde x e r tem tamanho igual a k bits cada um, e r escolhido ao acaso. Ento, H (x, r) =

(ou seja, o produto interno de x e r quando interpretados como vetores de bits4 ) um predicado hard-core para g . A funo H faz o ou-exclusivo de um subconjunto dos bits de x (determinado pelos bits um de r).

Notas

Ve rs
Exerccios
4 Em

A demonstrao dos Teoremas 3.11 e 3.17 podem ser encontradas no livro de Goldreich [10].

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.9. Ex. 15 O Teorema 3.10 tem apenas um esboo de prova. Complete-a.
alguns casos usa-se a notao
k i=1

o
xi ri .

Pr e
k def

xi ri

(mod 2)

i=1

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

38

CAPTULO 3. PROBLEMAS DIFCEIS

Ex. 16 Na demonstrao do Teorema 3.16, no mostramos que o algoritmo roda em tempo polinomial. Mostre um argumento muito simples que no deixe dvida a respeito disso.

a) SAT b) TSP c) COBERTURA-POR-VERTICES d) GERACAO-DE-PERMUTACAO e) TETRIS f) CVP g) SBP

i) Alguma delas permutao de mo nica? ii) Se o problema subjacente numrico, h algoritmo pseudopolinomial para ele. Isso representa um problema para sua funo de mo nica? iii) Pesquise o problema e verique se h para ele algoritmos aproximados. Qual a consequncia para sua funo de mo nica? iv) Existe algum subconjunto das instancias do problema que possa ser resolvido ecientemente? Novamente, em que isso implica para sua funo? v) Tente analisar a segurana de cada bit de entrada das funes. H bits claramente inseguros? H bits hard-core? Se no conseguir mostrar nenhuma das duas coisas, consegue identicar ao menos se existem bits mais seguros que outros?

Ve rs

Ex. 18 Ao invs de problemas N P -difceis poderamos tentar usar problemas indecidveis em construes criptogrcas. Comente esta ideia. Ex. 19 (Katz/Lindell) Mostre que a funo de adio f (x, y ) = x + y , onde x e y so representados com a mesma quantidade de bits e interpretados como naturais, no de mo nica.

Ex. 20 (Talbot/Welsh) Um primo da forma p = 4k +3 chamado de primo de Blum. Presumindo que aproximadamente metade de todos os primos com k bits so so primos de Blum, mostre que se a conjectura da fatorao de inteiros for verdadeira (ou seja, se fatorar inteiros for difcil), no deve haver algoritmo eciente para fatorar inteiros que sejam produto de dois primos de Blum.

Pr e

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 n usado para determinar que a funo de mo nica. Se no conseguir construir a funo, explicite claramente o motivo. Em seguida responda:

lim

in ar

Ex. 17 Tente construir funes de mo nica usando os problemas (presumindo que P = N P ):

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 4

Ve rs
semente 10111010 G

4.1

Geradores pseudoaleatreos

Conceitualmente, um gerador pseudoaleatreo uma funo que recebe como entrada (a semente) uma sequncia de bits de tamanho k e gera como sada outra sequncia de bits de tamanho l(k ) > k .
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. 39

A aleatoriedade parte fundamental da Criptograa usada na construo de praticamente todas as tcnicas criptogrcas de que trataremos. O exemplo 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.

Pr e

lim

Geradores Pseudoaleatreos e Cifras de Fluxo

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

40CAPTULO 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, seleciona uma cadeia de bits de tamanho n. Damos o nome X1 distribuio dos bits dada pela regra para um bits, X2 distribuio para dois bits, e Xn para a sequncia geral de distribuies. Denimos ento uma famlia de distribuies. Denio 4.1 (Famlia de distribuies). Uma sequncia { X1 , X2 , . . . , Xn , . . . } n de distribuies sobre cadeias { 0, 1 } uma famlia de distribuies1 . Se x tem n bits e foi selecionado de acordo com a distribuio Xn , denotamos x Xn . Quando estudamos dois algoritmos que geram bits, estamos interessados na distribuio de suas sadas. Dizemos que duas famlias A e B de distribuies (geradas por dois algoritmos) so estatisticamente prximas quando, para n sucientemente grande, cadeias com n bits tem quase a mesma probabilidade de pertencer a A ou a B . isto denido rigorosamente a seguir.

Denio 4.2 (Famlias de distribuies estatisticamente prximas). Duas famlias de distribuies Xn e Yn so estatisticamente prximas se a expresso

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

Ve rs

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

ensemble em Ingls. Algumas vezes usa-se probability variable ensemble (famlia de variveis aleateras).

1 Distribution

Pr e
e

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

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

4.1. GERADORES PSEUDOALEATREOS 3. Envie si para A 4. Receba b de A

41

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

sb

Denio 4.4 (Famlias de distribuies computacionalmente indistinguveis). Duas famlias de distribuies Xn e Yn so computacionalmente indistinguveis se para todo algoritmo polinomial T e n sucientemente grande, existe uma funo desprezvel negl() tal que Pr [DISTRIB_DISTINGUISH(D, n, Xn , Yn ) = 1] 1 + negl(n). 2

Ve rs
uXn

Embora a Denio esteja rigorosamente correta, a Denio , mas compacta, 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 e Yn so computacionalmente indistinguveis se para todo algoritmo polinomial D e n sucientemente grande, existe uma funo desprezvel negl() tal que Pr [D(u) = 1] Pr [D(u) = 1] negl(n).
uYn

Quando duas distribuies An e Bn so computacionalmente indistinguveis, denotamos An Bn .

Exemplo 4.6 (Sequncias de bits estatisticamente distantes). Suponha que queiramos construir um algoritmo que gera bits aleatreos a partir de um inteiro k . Decidimos usar uma sequncia usando nmeros de Fibonacci: para gerar

Pr e

Denimos ento que duas famlias de distribuies so computacionalmente indistinguveis se a probabilidade de sucesso de T neste experimento prxima de 1/2.

lim

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

42CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO uma sequncia de l bits, calculamos os l primeiros nmeros de Fibonacci Fk , Fk+1 , . . . , Fk+l . Usamos o i-simo nmero de Fibonacci para determinar o isimo bit da sequncia Bn : para l bits, calcula-se b1 , b2 , . . . , bl de maneira que bi =

Por exemplo, escolhemos k = 10 e geramos uma sequncia com 8 bits: F10 F11 F12 F13 = 55 ( 1) = 89 ( 1) = 144 ( 0) = 233 ( 1) F14 F15 F16 F17 = = = = 377 ( 1) 610 ( 0) 987 ( 1) 1597 ( 1)

Temos ento a sequncia 11011011. No entanto, esta sequncia facilmente distinguvel da distribuio uniforme (e portanto no podemos us-la para ns criptogrcos). Como h duas vezes mais nmeros de Fibonacci mpares do que pares, a probabilidade de uma sequncia com muitos uns pertencer a Bn maior2 do que a probabilidade da mesma sequncia pertencer a An . Para a sequncia s = 1111 . . . 1 (n bits iguais a um), temos

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

A diferena entre as duas probabilidades no desprezvel. Denio 4.7 (Gerador pseudoaleatreo). Seja l um polinmio e G um algoritmo polinomial determinstico que recebe como entrada sequncias de bits s {0, 1}n . A sada de G(s) tem tamanho l(|s|). Ento G um gerador pseudoaleatreo se:

Ve rs
2 H

Para todo n, l(n) > n (ou seja, G sempre expande sua entrada); A sada de G para n bits computacionalmente indistinguvel de uma distribuio uniforme de n bits.

A segunda exigncia da 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. impossvel, no entanto, que um gerador pseudoaleatreo gere sequncias com distribuio uniforme sobre todas as possveis sequncias de um dado comprimento. Teorema 4.8. A sada de um gerador pseudoaleatreo de bits no pode ter distribuio uniforme.
duas vezes mais nmeros de Fibonacci mpares do que pares.

lim
... ... 1 2 2 3 1 . 2n 2n = n. 3 =

in ar

0 se Fk+i par 1 se Fk+i mpar.

notas de aula verso 79 - Jernimo C. Pellegrini

4.2. GERADORES COM FUNES DE MO NICA

43

Denio 4.9 (Teste do prximo bit). Um gerador G passa pelo teste do prximo bit se e somente se no existe algoritmo polinomial que, a partir dos k primeiros bits de uma sequncia gerada por G, possa predizer o bit k + 1 com probabilidade maior que 1/2 + negl(k ). As duas caracterizaes de gerador pseudoaleatreo para Criptograa so equivalentes.

Ve rs
4.2
x_0 x_i

O leitor poder facilmente vericar que o gerador do exemplo 4.6 no passaria no teste do prximo bit.

Geradores com Funes de Mo nica

Usaremos predicados hard-core de funes de mo nica para construir geradores de nmeros aleatreos, usando a seguinte ideia: dada uma semente x0 e uma funo de mo nica f , calculamos x1 = f (x0 ) e b0 = h(x0 ). Em seguida, fazemos x2 = f (x1 ) e b1 = h(x1 ), e assim por diante. Como cada bit da sequncia hard-core de f , nenhum deles deve ser fcil de prever.
x_i+1 b_i+1

o
f

Teorema 4.10 (de Yao). Um PRG G pseudoaleatreo se e somente se passa pelo teste do prximo bit.

Pr e

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 G, enumerar todas as possveis sequncias de 2n bits e encontrar uma sequncia de 2n bits que G nunca produz. No entanto, este algoritmo exponencial (tem complexidade O(22n ) porque enumera todas as sequncias possveis). Fica evidente que o tamanho da semente importante: se ela for muito pequena, um atacante poder realizar o ataque mencionado. Outra maneira de caracterizarmos a qualidade de um gerador pseudoaleatreo apropriado para criptograa exigirmos que no seja fcil determinar o prximo bit de uma sequncia a partir dos anteriores.

lim
H

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

44CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO O Teorema a seguir garante que podemos aumentar o resultado de f (x) em um bit, e o resultado ser ainda indistinguvel de uma cadeia gerada ao acaso. Teorema 4.11. Seja f uma permutao de mo nica com predicado hard-core H . Ento def G(x) = (f (x), H (x)) um gerador pseudoaleatreo.

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:

G(x) = (H (f (x)), H (f 2 (x)) , H (f p(k)1 (x))) um gerador pseudoaleatreo.

Ve rs

Construo 4.13 (Gerador de Blum-Micali). Seja p um primo grande; g uma raiz primitiva mdulo p; e x0 (a semente) um inteiro. O i-simo bit gerado bi : xi bi = = g xi1 (mod p)

Este Teorema, que no demonstraremos, diz essencialmente que a ideia descrita no incio desta seo est correta. Agora usaremos dexp para construir um gerador pseudoaleatreo. O predicado hard-core que usaremos o bit mais signicativo.

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 G denida no Teorema 4.12, conclumos imediatamente que Blum-Micali um gerador pseudoaleatreo. Outro gerador pseudoaleatreo mostrado a seguir.

Pr e
def

Teorema 4.12. Seja f uma permutao de mo nica para entrada de tamanho k bits, com predicado hard-core H . Ento, dado um polinmio p(.),

msb (xi ).

lim

Demonstrao. (Rascunho) Se x for escolhido uniformemente dentre as cadeias de bits com tamanho k , como f uma permutao, f (x) tambm ter distribuio uniforme sobre as cadeias de tamanho k , e um adversrio no ter como distinguir os valores de f (x) de uma distribuio uniforme. Alm disso, a probabilidade do bit hard-core ser 1 1/2, donde conclumos que (f (x), H (x)) indistinguvel de uma sequncia de bits gerada ao acaso com probabilidade uniforme.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

4.3. GERAO DE NMEROS PSEUDOALEATREOS

45

Construo 4.15 (Gerador de Blum-Blum-Shub). Sejam p e q dois primos grandes com p, q 3 (mod 4), e seja m = pq . Uma raiz x0 escolhida que seja diferente de um, de p e de q . O i-simo bit gerado bi : xn bi = = x2 n1 (mod m)

lsb (xi ).

4.3

Gerao de nmeros pseudoaleatreos

Ve rs
4.4

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

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

Geradores com Heursticas

Geradores baseados em funes candidatas a mo nica como exponenciao ou quadrado modulares so lentos, porque envolvem aritmtica modular com n-

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

46CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO meros grandes (muito maiores do que o tamanho de palavra de computadores). Quando a gerao de bits deve ser muito rpida, podemos abrir mo das garantias dos mtodos com demonstrao de segurana. Usamos, ento, heursticas que nos do alguma 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 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.

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 autocorrelao, so usadas nos postulados. Denio 4.18 (Perodo de sequncia). O perodo de uma sequncia X o menor inteiro p tal que xi = xi+p , para i sucientemente grande. Por exemplo, o perodo da sequncia 011011011 trs, o da sequncia 00101010 dois (o padro 10 se repete depois de i = 2) e o da sequncia 01101001 oito. Denio 4.19 (Subsequncia constante). Seja X uma sequncia. Uma subsequncia xl , . . . xm de X constante se xi = xj para quaisquer l i, j m. Denio 4.20. Seja X uma sequncia de bits com perodo p. Sejam A(k ) a quantidade de posies i tal que xi = xi+k e D(k ) a quantidade de posies onde isso no acontece: A(k ) D(k ) = |{i : xi = xi+k }| = |{i : xi = xi+k }|.

Ve rs

A autocorrelao com deslocamento k para X A(k ) D(k ) . p

Pr e

4.4.1

Propriedades de Sequncias Pseudoaleatreas

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

4.4. GERADORES COM HEURSTICAS

47

Exemplo 4.21. Considere a sequncia X = 100101110. Calculamos a autocorrelao para k = 1. Temos x0 x2 x3 x4 x7 = = = = = x1 x4 x5 x8 x3

e portanto A(1) = 5, D(1) = 3 e a autocorrelao para k = 1 2/9. Enunciamos agora os postulados de Golomb.

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

Ve rs

O postulado G1 tem razo de ser muito clara: se no for satisfeito, a sequncia passa a ser facilmente distinguvel de uma sequncia aleatrea. Ou ainda, seria fcil prever o prximo bit da sequncia com probabilidade de sucesso maior que 1/2 + negl(k ). O postulado G2 uma generalizao do primeiro para subsequncias de bits. O postulado G3 implica que o clculo da autocorrelao no permite obter qualquer informao a respeito do perodo da sequncia. Sequncias que satisfaam estas propriedades do chamadas de pseudo-rudo (ou P N , de pseudo-noise). H uma ferramenta conceitual que pode ser usada em geradores pseudoaleatreos uma variante de registradores de deslocamento, normalmente implementados facilmente em hardware. Os registradores de deslocamento, alm de usados na construo de geradores pseudoaleatreos, tambm so importantes na descrio de propriedades de sequncias. Um registrador de deslocamento funciona como uma la de bits. Em sua verso mais simples, h um bit de entrada, um de sada, e o estado interno do registrador uma sequncia de bits3 .

3 Registradores de deslocamento so implementados em hardware como uma sequncia de ip-ops, com a sada de um alimentando a entrada de outro, como ilustra a gura abaixo.

Pr e

G3 ) A autocorrelao para deslocamentos diferentes de zero deve ser sempre a mesma, independente do valor do deslocamento.

lim

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

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

48CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO Como descreveremos algoritmos que operam nestes registradores, nossa viso deles ser a de um vetor de variveis binrias (aqui usamos vetor como objeto mutvel, usado em algoritmos, e no como objeto matemtico abstrato). A operao de deslocamento funciona da seguinte maneira: cada bit movido uma posio para a direita; o bit que estava mais direita removido e usado como sada do registrador;

um novo bit (o bit de entrada) gravado sobre a posio mais esquerda. 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 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 entrada uma funo linear de seus bits de estado. Em outras palavras, se o estado interno de um registrador tem l bits ento seu estado inicial sl1 , sl2 , . . . , s0 , e para i l o i-simo bit determinado pela funo linear

Pr e

si = c1 si1 + c2 si2 + + cl sil

Ve rs

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

lim
(mod 2),

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

4.4. GERADORES COM HEURSTICAS

49

O polinmio 1 + c1 x + +cl xl chamado de polinmio de conexo do LFSR. Exemplo 4.23 (LFSR). Suponha que um LFSR com oito bits use a funo de realimentao si = si2 si5 si6 si8 ,

onde o ou-exlusivo. Esta uma funo linear mdulo dois4 . Este LFSR representado na Figura a seguir.

Para o estado inicial 00110011, alguns dos prximos estados e bits de sada so estado sada 10011001 1 (0 + 1 + 0 + 1 = 0) 01001100 0 (1 + 1 + 1 + 0 = 1) 10100110 0 (0 + 0 + 1 + 0 = 1) 11010011 1 entrada

Teorema 4.24. Toda sequncia peridica de bits pode ser gerada por algum LFSR com no mximo n estados, onde n o tamanho da sequncia. Demonstrao. Trivial (um LFSR com n estados e estado inicial igual sequncia gera a prpria sequncia). Apesar de ser trivialmente possvel obter LFSRs de tamanho n para sequncias de comprimento n, notamos que muitas vezes possvel obter sequncias de tamanho n com LFSRs muito menores que n. Denio 4.25 (Complexidade linear de sequncia). Seja S uma sequncia de bits. Se S nita e de comprimento |S |, a complexidade linear de S o comprimento do menor LFSR que gera,para alguma semente, uma sequncia cujos |S | primeiros bits formam a sequncia S . Se S innita e s contm zeros, a complexidade linear de S zero. Se S innita, diferente de zeros, e pode ser gerada por um LFSR, sua complexidade linear a do menor LFSR que gera S .

Ve rs
4 Porque

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


a b o mesmo que a + b (mod 2), e a funo mostrada a mesma que si = si2 + si5 + si6 + si8 (mod 2).

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

50CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO Teorema 4.26. Uma sequncia de perodo k no tem complexidade linear maior do que k . O algoritmo de Berlekamp-Massey determina a complexidade linear de uma sequncia nita. Na descrio do algoritmo, b() e c() so polinmios (o pseudocdigo no mostra detalhes da implementao destes pode-se usar vetores, por exemplo). Denotamos b(x)xN m a multiplicao do polinmio b(x) pelo termo xN m . berlekampmassey(s, n): b(x) 1 c(x) 1 L0 m 1

Ve rs

Denio 4.27 (LFSR de comprimento mximo). Seja R um LFSR de n bits. Se, ao ser inicializado com qualquer semente diferente de 0n e deslocado repetidamente, o estado interno de R passa por todas as 2n 1 permutaes, ento R um LFSR de comprimento mximo. Sequncias geradas por LFSRs de comprimento mximo so chamadas de m-sequncias. Obtendo LFSRs de comprimento mximo

O seguinte Teorema mostra como construir LFSRs de comprimento mximo.

Teorema 4.28. Se o polinmio de conexo de um LFSR primitivo e tem grau igual ao tamanho do LFSR (ou seja, tem cl = 1), ento este LFSR de comprimento mximo.

O algoritmo retorna L, a complexidade linear da sequncia, e c(x), o polinmio de conexo do LFSR que a gera. A complexidade de tempo do algoritmo de Berlekamp-Massey O(n2 ): apesar de havermos explicitado somente um lao (N de zero a n 1), as operaes em polinmios tem complexidade linear em n.

Pr e

para N de 0 a n 1: L 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)

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO Usando LFSRs

51

4.4.2

Testes Para Sequncias de Bits

Ve rs
4.5.1

Mltiplas Mensagens

Adaptaremos a Denio 2.12 para que contemple a possibilidade de envio de vrias mensagens. Experimento 4.29 (PRIV_MULT(, A, n)). 1. O adversrio A recebe uma entrada 1n , e devolve duas sequncias de 2 t 1 2 t mensagens, M0 = (m1 0 , m0 , , m0 ) e M1 = (m1 , m1 , , m1 ); 2. Uma chave k gerada usando Gen(1n ), e um bit b escolhido aleatoreamente. Ento todas as mensagens da sequncia Mi so encriptadas, resultando na sequncia Enck (Mb ) = (c1 , c2 , , ct ) onde ci = Enck (mi b ). Esta sequncia Enck (Mb ) enviada para A;

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.

Pr e

4.5

Cifras de Fluxo

lim

(Esta Seo no est completa) H muitos testes que podem ser utilizados para tentar distinguir uma sequncia de bits aleatreos. Esta Seo descreve apenas alguns deles. Observamos que passar em uma bateria de testes uma condio necessria para um gerador pseudoaleatreo, mas de forma alguma 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 sequncia no pseudoaleatrea.

in ar

Podemos inicializar um LFSR com uma semente e usar seus bits de sada, mas esta construo no seria segura, porque a funo de realimentao linear, e seria fcil recuperar estados anteriores do registrador. Normalmente alguma forma de no-linearidade usada em conjunto com geradores do tipo LFSR para torn-los resistentes a criptanlise.

notas de aula verso 79 - Jernimo C. Pellegrini

52CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO 3. A envia b ; 4. Se b = b , o resultado do experimento 1 (e dizemos que A teve sucesso), seno 0. D

1n
2 M0 = (m1 0 , m0 , ) 1 M1 = (m1 , m2 1, )

b=b 1 b=b 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 conhecidos). Um criptossistema simtrico tem indistinguibilidade de mltiplos textos cifrados na presena de grampo M se para todo adversrio A existe uma funo desprezvel negl tal que,

Pr e

Ve rs

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

Teorema 4.32. O Criptossistema descrito na Construo 4.31 seguro de acordo com a Denio 2.12.

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

lim
b 1 + negl(n). 2

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

Enck (mb )

in ar
A

notas de aula verso 79 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

53

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

1. Chame A(1n ) e obtenha duas mensagens de tamanho p(n).; 2. Escolha um bit b aleatoreamente; 3. Calcule c = s mb ;

4. Ao invs de Enc(k, mb ) = k mb , d c a A ou seja, ao invs de enviar a mensagem cifrada com uma chave gerada por Gen, use s como se fosse a chave. Obtenha a sada b , e retorne 1 se b = b , ou zero em caso contrrio. Este experimento ilustrado a seguir. T

o Ve rs
b R {0, 1} c s mb b=b 1 b=b 0

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

Pr e
1n m0 , m1 c b

lim
A

(ou seja, a funo f mede quo melhor que 1/2 a probabilidade de o adversrio obter sucesso no experimento. Construiremos um algoritmo (ou um teste) T para distinguir uma sequncia s de bits, determinando se ela foi produzida por G ou se foi escolhida com distribuio uniforme no espao amostral de tamanho n. T executa o experimento a seguir.

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

54CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO ao invs de enviar c para A, e Pr[T (s) = 1] = Pr[PRIV_EAV(, A, n) = 1] = 1 . 2

Para o segundo caso, suponha ento que s seja igual a G(k ), com k escolhida aleatoreamente. Sabemos que s no pode ter distribuio uniforme (pelo Teorema 4.8). Neste caso o experimento exatamente como seria se tivssemos usado k = Gen(1n ) ao invs de enviar c para A e o experimento o mesmo que o da Denio 2.12, e Pr[T (s) = 1] = Pr[PRIV_EAV(, A, n) = 1] = 1 + f (n). 2

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 ). Ao receber a sequncia de mensagens cifradas C = (c1 , c2 ), o adversrio pode simplesmente vericar se c1 = c2 (neste caso sabe que a sequncia encriptada M1 ) ou no (e portanto a sequncia deve ser M2 ). O problema com a Construo 4.31 o fato de ser um criptossistema determinstico: um mesmo par (chave, mensagem) sempre levar ao mesmo texto encriptado. Como este foi a nica caracterstica relevante do criptossistema que usamos na demonstrao da Proposio 4.33, temos o seguinte teorema:

Ve rs

Teorema 4.34 (Insegurana de criptossistemas determinsticos). Qualquer criptossistema simtrico determinstico inseguro de acordo com a Denio 4.30. Se usarmos uma chave diferente cada vez que encriptarmos uma mensagem teremos resolvido o problema. Ao cifrar uma mensagem, inicializamos G no apenas com uma semente (secreta), mas tambm com alguns bits a mais, escolhidos aleatoreamente com distribuio uniforme: Enck (m) = (iv, G(k, iv ) m).

Esta sequncia adicional de bits chamada de vetor de inicializao, e enviada junto com o texto cifrado, em claro. Para decifrar, fazemos Deck (iv, c) = G(k, iv ) c.

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

Pr e

lim

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

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO

55

Construo 4.35. Seja G um gerador pseudoaleatreo com fator de expanso p(.). O seguinte criptossistema simtrico construdo sobre G: Gen: dado 1n , escolha uma chave k {0, 1}n com probabilidade uniforme; Enc(k, m) = (iv, G(k, iv ) m), desde que tanto k como m tenham k bits, e com iv sendo escolhido com distribuio uniforme; Dec(iv, k, c) = G(k, iv ) c, desde que tanto k como c tenham k bits.

A sada de G(k, iv ) deve ser indistinguvel de bits aleatreos, mesmo quando o adversrio conhece iv (isto realmente ocorre, porque G gerador pseudoaleatreo).

Consideramos agora a situao em que o adversrio tem acesso limitado funo Enc: pode cifrar mensagens vontade, mas no tem a chave k (suponha por exemplo que o adversrio possa convencer algum a cifrar para ele mensagens usando k ). Experimento 4.36 (PRIV_CPA(, A, n)). 1. Uma chave k gerada por Gen(1n );

2. O adversrio recebe a entrada 1n e, podendo cifrar mensagens com Enck , nos devolve duas mensagens m0 e m1 , ambas de mesmo tamanho; 3. Um bit b escolhido aleatoreamente, e a mensagem correspondente encriptada: c = Enck (mb ). Este texto cifrado (o desao) enviado a A; 4. A, ainda podendo usar Enck , responde um bit b ; 5. O resultado do experimento um se b = b e zero em caso contrrio.

Ve rs

o
D b R {0, 1} k { 0, 1 } b=b 1 b=b 0

Pr e
1n m0 , m1 Enck (mb ) b

lim
AEnck

4.5.2

Ataques de Texto Claro Escolhido

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

56CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO Denio 4.37 (Segurana contra ataque de texto claro escolhido). Um criptossistema simtrico tem indistinguibilidade contra ataques de texto claro escolhido se para todo adversrio A existe uma funo desprezvel negl tal que, Pr[PRIV_CPA(, A, n) = 1]

Notas

Pseudoaleatoriedade objeto do livros de Goldreich [11] e (mais antigo) de Luby [12]. O assunto tambm abordado em outros livros, de Goldreich [10] e Kranakis [13]. A demonstrao do Teorema 4.16 (a corretude do mtodo para gerao de nmeros naturais) pode ser encontrada no livro de Shoup [14]. H uma demonstrao do Teorema de Yao no livro de Delfs e Knebl [15]. H um interessante livro [16], de Thomas Cusick, Cunsheng Ding e Ari Renwall que estuda aspectos de cifras de 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 [17]. O livro de Daniel Neuenschwander [18] sobre mtodos estatsticos em Criptograa aborda diversos testes para nmeros aleatreos. O livro de Golomb e parte do livro de Neuenschwander tratam de registradores de deslocamento linearmente realimentados (linear feedback shift registers). Sequncias geradas por LFSRs so estudadas extensivamente nos livros de Golomb [17], de Lidl e Niederreiter [19], e de Golomb e Gong [20]. Um dos primeiros a denir baterias de teste para aleatoriedade foi George Marsaglia, que criou a bateria de testes Die Hard . H baterias de testes denidas pelo NIST [21].

Exerccios

Ve rs
a) 01101011 c) 11101010 b) 10101010

Ex. 21 Calcule a autocorrelao e a complexidade linear das sequncias, com deslocamentos 1, 2 e 3:

d) 100101101101

Ex. 22 Construa programas que calculem a autocorrelao e a complexidade linear de sequncias de bits. Ex. 23 Descreva em pseudocdigo um algoritmo que verique, para sequncias de bits, os postulados de Golomb. Calcule a complexidade de tempo de seu algoritmo.

Pr e

lim

in ar

1 + negl(n). 2

notas de aula verso 79 - Jernimo C. Pellegrini

4.5. CIFRAS DE FLUXO Ex. 24 Sobre LFSRs, responda:

57

i) Porque um LFSR tendo uma sequncia de zeros como estado inicial gerar somente zeros? iii) Que LFSRs geram tanto zeros como uns?

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

i) Quantas sequncias de deBrujin m-rias de ordem n existem?

ii) Prove que m-sequncias so de deBrujin, e diga para que ordem. Ex. 27 Demonstre o Teorema 4.17

a) Demonstre que isso deve necessariamente ser possvel. b) Complete a demonstrao tratando tambm deste caso. Ex. 29 Mostre que se a sequncia X tem perodo p e k |p, ento a autocorrelao de X com deslocamento k igual a um. Ex. 30 Demonstre que a Construo 4.35 segura contra ataques de mltiplos textos cifrados conhecidos.

Ve rs
5O

Ex. 31 Implemente os geradores de Blum-Micali e Blum-Blum-Shub. Ex. 32 Um gerador por congruncia linear funciona da seguinte maneira: dados parmetros a, b, n e uma semente s < n, x0 xi = s = axi1 + b (mod n)

Mostre que este tipo de gerador no seguro.

Ex. 33 Construa despretensiosamente5 sua prpria cifra de uxo, usando um LFSR e uma funo no linear.

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

Pr e

Ex. 28 Na demonstrao do Teorema 4.33 h um pequeno detalhe que omitimos: possvel que as duas mensagens, 0n e 1n , resultem no mesmo texto cifrado.

lim

Ex. 26 Uma sequncia de bits de deBrujin binria de ordem k se cada sequncia binria de comprimento k aparece exatamente uma vez. Generalizando, uma sequncia de deBrujin n-ria de ordem k uma sequncia sobre um alfabeto de tamanho n onde cada sequncia de comprimento k aparece uma nica vez.

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

58CAPTULO 4. GERADORES PSEUDOALEATREOS E CIFRAS DE FLUXO

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 5

Ve rs

Ao invs de usarmos uma nica funo para encriptar mensagens, mudaremos a funo cada vez que Enc for usada. Suponha que temos um conjunto de funes Fi : {0, 1} {0, 1} que poderiam ser usadas para encriptar mensagens. Podemos criar uma funo F : {0, 1} {0, 1} {0, 1} , onde o primeiro argumento usado para escolher qual Fi queremos usar. F chamada de funo indexada por chave. Denotaremos Fk (m) ao invs de F (k, m). Com |k | = n, podemos indexar 2k possveis funes. No entanto, h muito mais funes com tamanho de entrada e sada igual a n bits:

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

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 pseudoaleatreas, semelhantes em esprito aos geradores pseudoaleatreos, mas que trabalham com sequncias de tamanho xo.

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.

lim

Cifras de Bloco

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

60

CAPTULO 5. CIFRAS DE BLOCO

lim

Ve rs

Denio 5.1 (Funo Pseudoaleatrea). Seja F : {0, 1}n {0, 1}n {0, 1}n uma funo computvel polinomialmente e que preserva o tamanho da entrada. F pseudoaleatrea se, para todo algoritmo polinomial D, existe uma funo desprezvel negl tal que |Pr[D(Fk (), 1n ) = 1] Pr[D(f (), 1n ) = 1]| negl(n),

onde k escolhido com distribuio uniforme sobre {0, 1}n e f escolhida com distribuio uniforme sobre o conjunto de todas as funes com domnio e contradomnio {0, 1}n . O algoritmo D(Fk , 1n ) roda em tempo polinomial em n (por isso denotamos 1n e no simplesmente n) e tem livre acesso funo Fk (mas no ao seu ndice). O Exerccio 34 pede a demonstrao de que toda funo pseudoaleatrea de mo nica.

Assim, usamos k como ndice para escolher 2n dentre (2n )(2 ) funes. Uma funo indexada por k desta forma no pode ento induzir distribuio uniforme sobre todas as funes com entrada e sada de n bits, porque haver funes que no podero ser representadas. Queremos que a segurana de nossa construo criptogrca esteja na escolha da funo. Assim, se permitirmos ao adversrio acesso a uma funo Fk (sem o ndice k ), ele no deve ser capaz de distinguir Fk de uma funo qualquer n escolhida ao acaso dentre todas as (2n )(2 ) possveis funes com entrada e sada de n bits. Em outras palavras, a distribuio das 2n funes indexadas por k deve ser n indistinguvel da distribuio das (2n )(2 ) , que uniforme. Na Denio 5.1, o algoritmo D tem o objetivo de tentar realizar esta distino.

Pr e

in ar
n

notas de aula verso 79 - Jernimo C. Pellegrini

5.1. ESQUEMAS DE ENCRIPTAO USANDO FUNES PSEUDOALEATREAS61

5.1

Esquemas de Encriptao usando Funes Pseudoaleatreas

Enck (m) = Fk (m).

No entanto, este criptossistema seria determinstico, e portanto no seria resistente a ataques de mltiplos textos cifrados conhecidos. Para introduzir aleatoriedade podemos fazer

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

e enviar r junto com o texto encriptado. Como esperamos que a sada da funo pseudoaleatrea seja indistinguvel de bits aleatreos, o ou exclusivo dela com m tem o efeito que desejamos. Temos assim o seguinte criptossistema usando funes pseudoaleatreas: Construo 5.2. Seja F : {0, 1}n {0, 1}n {0, 1}n uma funo pseudoaleatrea. As seguintes funes so um criptossistema com tamanho de chave e mensagem igual a n: Gen(1n ) escolhe uniformemente uma chave em {0, 1}n . Enck (m): escolha r R { 0, 1 } , e retorne
n

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

Ve rs

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

Lema 5.4. Seja o criptossistema da Construo 5.3 e A um adversrio rodando em tempo polinomial. Seja p() o polinmio dando o nmero de consultas feitas pelo adversrio A ao orculo Enck () no experimento 4.36. A probabilidade de b = b Pr [PRIV_CPA(, A, n) = 1] 1 p(n) + n 2 2

Pr e
r, Fk (r) m .

lim

r R { 0, 1 } ,

in ar

A diculdade do adversrio em determinar a funo Fk escolhida pode ser usada para construir criptossistemas: poderamos criar uma funo Enc tal que

notas de aula verso 79 - Jernimo C. Pellegrini

62

CAPTULO 5. CIFRAS DE BLOCO

rc nunca usado por A nas consultas ao orculo; este evento o complemento do anterior, e o denotaremos por RU IM . Neste caso o experimento o mesmo que o Experimento 2.8 para o one-time pad, e a probabilidade de b = b 1 2. Conclumos que Pr [PRIV_CPA( , A, n) = 1]

Pr [PRIV_CPA( , A, n) = 1 RU IM ] + Pr PRIV_CPA( , A, n) = 1 RU IM Pr(RU IM ) + Pr PRIV_CPA( , A, n) = 1|RU IM p(n) 1 + . 2n 2

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


1 Demonstrao. Seja g (n) uma funo que nos diz quo acima de 2 a probabilidade de sucesso do criptossistema no experimento PRIV_CPA:

Ve rs
e ento

1 Pr [PRIV_CPA(, A, n) = 1] = g (n) + . 2 A diferena entre a probabilidade de sucesso para , que acabamos de calcular, e a probabilidade de sucesso para , dada pelo Lema 5.4, 1 + g (n) 2 1 p(n) + n 2 2 p(n) = g (n) n , 2

e h ento dois casos: g (n) desprezvel. Se assim for, CPA-seguro (pela denio de segurana CPA);

Pr e

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

lim

rc usado por A em suas consultas ao orculo que lhe permite usar f . Chamaremos este evento de RU IM . Quando isso acontece, A ter sucesso e b = b . A far uma quantidade polinomial de consultas ao orculo. Seja ento p(.) o polinmio que d a quantidade de consultas. A probabilidade de b = b 1 1 p(n) 1 + n + + n = n . 2n 2 2 2

in ar

Demonstrao. Cada vez que Enck usada (tanto por como pelo adversrio A no experimento PRIV_CPA), um novo r escolhido. Dado que temos um r, a probabilidade de r ser escolhido novamente 21 n. Suponha agora que no experimento o texto encriptado c = rc , f (rc ) mb seja enviado a A. H dois casos a tratar:

notas de aula verso 79 - Jernimo C. Pellegrini

5.2. PERMUTAES PSEUDOALEATREAS

63

g (n) no desprezvel. Neste caso conseguiramos distinguir Fk de f escolhida ao acaso mas como F funo pseudoaleatrea, isso no pode acontecer.

5.2

Permutaes Pseudoaleatreas

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

Quando Fk indistinguvel de f escolhida ao acaso dentre todas as permutaes de n bits, dizemos que uma permutao pseudoaleatrea. Denio 5.7 (Permutao Pseudoaleatrea). Uma permutao indexada F pseudoaleatrea se, para todo k escolhido uniformemente ao acaso, todo adversrio polinomial D, toda f escolhida ao acaso dentre todas as permutaes de n bits, existe uma funo desprezvel negl tal que |Pr [D(Fk , 1n ) = 1] Pr [D(f, 1n ) = 1]| negl(n). Note que de acordo com a denio de permutao pseudoaleatrea o adversrio s tem acesso a Fk . Se rezermos a Denio 5.7 dando ao adversrio 1 acesso a Fk , teremos uma permutao pseudoaleatrea forte.

5.3

Modos de Operao

Ve rs

Dada uma permutao pseudoaleatrea Fk para n bits, suponha que uma mensagem tenha tamanho maior que n. Podemos encriptar pedaos diferentes da mensagem, um de cada vez. Por exemplo, c1..n = F (k, m1..n ) cn+1..2n = F (k, mn+1..2n )

Um modo de operao de um esquema de encriptao usando permutaes pseudoaleatreas a maneira como a permutao usada para construir um criptossistema simtrico. Esta seo traz apenas os modos de operao mais conhecidos.

5.2.1

Famlias de permutaes pseudoaleatreas

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

Pr e

lim

Denio 5.6 (Permutao indexada). Uma funo indexada F chamada de permutao se para todo k , Fk bijetora. 1 Quando Fk e Fk so computveis em tempo polinomial, dizemos que F eciente.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

64

CAPTULO 5. CIFRAS DE BLOCO

5.3.1

ECB Electronic Code Book

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


m
1

m
2

c
1

c
2

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.

No modo CBC, a mensagem passa por um ou-exclusivo com o vetor de inicializao antes de ser usada como entrada para Fk . O bloco seguinte encriptado usando a sada do anterior como vetor de inicializao.

Ve rs
onde

o
Enck (m) = iv1 , (c0 , c1 , , cn ) , 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.

Pr e

5.3.2

CBC Cipher Block Chaining

lim

in ar
F
k

notas de aula verso 79 - Jernimo C. Pellegrini

5.3. MODOS DE OPERAO

65

Teorema 5.8. Se Fk uma permutao pseudoaleatrea e tanto iv como k so escolhidos ao acaso com distribuio uniforme, o modo CBC tem segurana CPA.

5.3.3

OFB Output Feedback

No modo OFB um vetor de inicializao usado para gerar Fk ; a sada de Fk usada como vetor de inicializao para o prximo bloco. Para encriptar mensagens, fazemos ou-exclusivo de cada mi com a sada da i-sima aplicao de Fk .
iv

m
1

m
2

Pr e
c
2

iv

c
1

Enck (m) = iv1 , (c0 , c1 , , cn ) , onde

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

Ve rs
5.3.4

CTR Contador

No modo contador o vetor de inicializao gerado e depois incrementado para cada bloco. Para encriptar o i-simo bloco, usa-se o contador somado com i como entrada para Fk , e o resultado usado em um ou-exclusivo com a i-sima parte da mensagem.

lim
F
k

c
3

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

66

CAPTULO 5. CIFRAS DE BLOCO

Enck (m) = ctr, (c0 , c1 , , cn ) , onde

ci = Fk (ctr + i) mi .

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.

Ve rs
5.4.1

J denimos o comportamento de permutaes pseudoaleatreas e determinamos diversas maneiras de us-las (os modos de operao). Nos falta ainda tratar de mtodos para a construo de cifras de bloco usando estas permutaes.

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

5.4

Cifras de bloco

Segurana de cifras de bloco

Pr e

O modo CTR paralelizvel: cada bloco pode ser encriptado separadamente. Alm disso, possvel encriptar ou decriptar o n-simo bloco isoladamente (ou seja, o modo CTR permite acesso aleatreo).

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

5.5. ARQUITETURA DE CIFRAS DE BLOCO

67

5.4.2

Construo

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

5.5.1

Confuso e difuso

Ve rs
5.5.2

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.

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

H dois conceitos bsicos identicados por Claude Shannon no funcionamento de esquemas de encriptao, e que so claramente relacionados arquitetura de cifras de bloco:

Pr e

5.5

Arquitetura de cifras de bloco

lim

As chaves so portanto de tamanho n e os blocos de tamanho t. A denio de cifra de bloco no faz referncia a permutaes pseudoaleatreas. 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 representar uma permutao onde entrada e sada usam n bits precisaramos de representar 2n ! valores, e consequentemente teramos que usar log(2n !) bits. Por exemplo, se quisermos que o bloco tenha 256 bits, precisaramos de log(2256 !) algo inconcebvel na prtica. Na construo de cifras de bloco usam-se normalmente funes representveis de maneira mais compacta, que, do ponto de vista do adversrio, parecem ser permutaes pseudoaleatreas.

in ar

Denio 5.11 (Cifra de Bloco). Uma cifra de bloco para chaves com c bits e mensagens com n bits uma permutao indexada eciente F : {0, 1}n {0, 1}t {0, 1}t .

notas de aula verso 79 - Jernimo C. Pellegrini

68

CAPTULO 5. 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 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 so espalhadas).

Ve rs

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.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

5.5. ARQUITETURA DE CIFRAS DE BLOCO

69

S-boxes introduzem confuso

XOR com i-sima chave

5.5.3

Rede de Feistel

Ve rs

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

onde fi uma funo 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.

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.

Pr e

lim
K
i

passo de mistura traz difuso

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

70

CAPTULO 5. CIFRAS DE BLOCO

Teorema 5.12. 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 Ri1 , temos imediatamente Ri1 . Com Ri1 , f e Ri podemos calcular Li1 :

Como as redes de Feistel tem entrada e sada de tamanho xo e so invertveis (e so bijees), temos o seguinte Corolrio: Corolrio 5.13. Redes de Feistel so Permutaes. Cifras de bloco so denidas como permutaes, mas mais natural analisar a segurana de uma cifra presumindo que ela uma funo pseudoaleatrea, e no uma permutao. Isso nos leva ao prximo Teorema, demonstrado por Michael Luby e Charles Racko, que garante que se a funo interna de uma rede de Feistel for uma funo pseudoaleatrea, ento a permutao resultante da rede pseudoaleatrea, desde que a rede tenha pelo menos trs rodadas. Mais precisamente, Luby e Racko mostraram que a probabilidade de um adversrio distinguir entre uma permutao verdadeiramente aleatrea e uma cifra de Feistel de trs rodadas construda com funes pseudoaleatreas menor do que q 2 /2n . muito importante observar que o enunciado do Teorema de LubyRacko, embora tenha alguma semelhana com a denio 4.7, de geradores pseudoaleatreos, diferente em um aspecto: para PRGs usamos uma formulao assinttica (dissemos que sempre existe uma funo desprezvel maior que o valor); j aqui damos uma expresso exata. Fazemos isso porque, como j mencionamos, raciocnio assinttico no faz sentido para cifras de bloco. Teorema 5.14 (Luby-Racko). Seja P uma permutao pseudoaleatrea de n bits. Seja P a permutao denida por uma rede de Feistel para entrada de n bits

Ve rs

Pr e
Ri1 = Li

Li1 = f (Ri1 ) Ri

lim

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

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

5.5. ARQUITETURA DE CIFRAS DE BLOCO

71

com trs rodadas, e funes internas F1 , F2 e F3 , todas pseudoaleatreas. Seja D um adversrio tentando distinguir P de P fazendo no mximo q consultas a um orculo que lhe d acesso a P . Ento

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

5.5.4

Construo de Lai-Massey

Uma construo de Lai-Massey lembra uma rede de Feistel. Em cada rodada a mensagem dividida em duas partes, Li e Ri . Calcula-se ento

Ri = Ri1 + Di

Li = Li1 + P (Di )

Ve rs
1 As

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


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

Pr e

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

lim

Di = f (Ri Li )

in ar

q2 . 2n

notas de aula verso 79 - Jernimo C. Pellegrini

72

CAPTULO 5. CIFRAS DE BLOCO

5.6

Exemplo: DES

Ve rs

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

Pr e

lim

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

5.6. EXEMPLO: DES

73

Feistel no tem inversa). Depois, a sada tem 8 4 = 32 bits. A Figura a seguir ilustra a funo interna do DES.

Ve rs
5.6.2 3DES

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.

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: Fk1 ,k2 = Fk1 (Fk2 (m)).

5.6.1

Escalonamento de chaves

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

74

CAPTULO 5. CIFRAS DE BLOCO

O adversrio efetua Enc(m) com todas as chaves possveis. Ao encriptar m com uma chave ki e obter o texto encriptado xi , ele guarda o par ki , xi em uma tabela.

Depois, o adversrio faz um procedimento semelhante: decripta c com todas as chaves possveis, guardando pares (xi , ki ).

Em seguida, ordena as duas tabelas geradas usando xi como chave. Ao encontrar uma entrada na tabela pares com o mesmo xi , ele guarda as chaves (ki , kj ) em um conjunto de possveis solues.

Ve rs

Se sortearmos duas chaves ao acaso, elas podero satisfazer a Equao 5.6.2 com probabilidade 21 n (para peceber isto, imagine as duas chaves como uma nica cadeia de 2n bits). O conjunto de possveis solues ter aproximadamente 22n n 2n = 2 . Se o adversrio tiver mais pares de mensagem e texto encriptado, este conjunto car menor e ele conseguir facilmente identicar a chave. Tentamos ento de outra forma: encriptar, decriptar e encriptar novamente, usando chaves diferentes:
1 Fk1 ,k2 ,k3 = Fk1 (Fk (Fk3 (m))). 2

2 Meet-in-the-middle

o
em Ingls.

Pr e

lim

in ar

Infelizmente esta idia no traz segurana adicional cifra. O ataque descrito a seguir chamado de ataque do encontro no meio2 . Suponha que um adversrio tenha um par (m, c), sabendo que foi encriptado duplamente como a descrevemos (c = Fk1 (Fk2 (m))). Ele deve procurar duas chaves tais que 1 Fk1 (m) = x = Fk (c). 2

notas de aula verso 79 - Jernimo C. Pellegrini

5.7. EXEMPLO: AES

75

5.7

Exemplo: AES

O AES uma rede de substituio e permutao com blocos de 128 bits. A chave pode ter 129, 192 ou 256 bits.

5.7.1

Descrio simplicada

a0,0 a1,0 a2,0 a3,0

O pseudocdigo do AES mostrado a seguir.

Ve rs
// rodada final: SubBytes ShiftRows AddRoundKey

// rodadas intermediarias: para i de 2 a N 1: SubBytes ShiftRows MixColumns 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.

// primeira rodada: AddRoundKey

Pr e
a0,1 a1,1 a2,1 a3,1 a0,2 a1,2 a2,2 a3,2 a0,3 a1,3 a2,3 a3,3

Esta Seo contm uma descrio simplicada do AES. A Seo 5.7.2 contm a descrio algbrica. O AES opera em matrizes 4 4 onde cada elemento um byte. Representamos ento um bloco do AES da seguinte maneira:

lim

in ar

O 3DES opera exatamente desta forma, e com trs chaves de 56 bits passamos a ter 168 bits no total. O espao de chaves de 2168 bits mais do que 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 79 - Jernimo C. Pellegrini

76 SubBytes

CAPTULO 5. CIFRAS DE BLOCO

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

Observamos tambm que as substituies feitas por SubBytes so uma permutao catica, e portanto no h a possibilidade de algum byte permanecer inalterado. ShiftRows

Pr e
1 5 9 13 a1=a a2=a a 3 = (a

O passo ShiftRows realiza transposies de bytes, tendo difuso como efeito. Quando o tamanho do bloco de 128 bits, cada uma das linhas deslocada para a direita por 0, 1, 2 e 3 posies. Por exemplo: 1 2 3 4 6 6 7 8 10 11 12 11 14 15 16 16 2 7 12 13 3 8 9 14 4 5 10 15

MixColumns

Ve rs

Este passo aplica uma transformao linear em cada coluna da matriz, mas usando uma operao especial de multiplicao3 . De maneira simplicada, a multiplicao dos bytes por 1, 2 e 3 denida como segue:

A operao ShiftRows facilmente invertvel.

onde o operador de deslocamento para a esquerda (a x desloca os bits de a x bits para a esquerda), e Y depende do primeiro bit de a antes de iniciar a operao: quando este bit zero, Y = 0; quando um, Y = 1b

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

lim
1Y 1) Y a,

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

5.7. EXEMPLO: AES A tansformao usa usual: 02 01 01 03

77 a operao denida acima no lugar da multiplicao a0 b0 03 01 01 02 03 01 a1 = b1 01 02 03 a2 b2 a3 b3 01 01 02

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. Exemplo 5.15 (Passo MixColumns do AES). 02 03 01 01 0A b0 01 02 03 01 B7 b1 01 01 02 03 01 = b2 03 01 01 02 39 b3 O primeiro byte da sada (b0 )

b0 = 0A 02 B7 03 01 01 39 01

b0 = 14 75 01 39

Ve rs
AddRoundKey

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

A chave representada por uma matriz 4 4, e a mistura com a chave feita aplicando ou-exclusivo byte a byte. Escalonamento de chave Para N rodadas do AES so necessrias N chaves de rodada.

A operao ou exclusivo da representao binria, portanto b0 b0 =00010100 01110101 00000001 00111001 =00011001 = 19 .

Pr e

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

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

78

CAPTULO 5. CIFRAS DE BLOCO

5.7.2

Descrio algbrica

Denio 5.16 (Corpo de Rijndael). O AES (Rijndael) trabalha com elementos do corpo nito GF (28 ), usando o polinmio irredutvel m(x) = x8 + x4 + x3 + x + 1.

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

Quando x = 0, o valor subsitudo b. MixColumns

Ve rs

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

4 Corpos nitos so descritos brevemente no ApndiceB, onde h tambm recomendaes de literatura cobrindo o assunto. 5 Se representamos os elementos de GF (28 ) como polinmios, seus coecientes devem pertencer a Z2 .

Pr e

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

lim

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

5.7. EXEMPLO: AES Por exemplo, a coluna E0 21 0A 72 interpretada como 72 x3 + 0A x2 + 21 x + E0 = 114x3 + 10x2 + 33x + 224.

79

Ve rs
Calculamos ax e a(x + 1).
7 6 5

A operao pode ser tambm descrita como a multiplicao dos polinmios em cada coluna por x x+1 1 1 1 x x+1 1 1 1 x x + 1 x+1 1 1 x H algo importante a observar: nunca multiplicamos duas variveis, e sim uma varivel por uma constante. Assim, precisamos apenas determinar como multiplicar uma varivel por 2 (x no corpo de Rijndael) e por 3 (x + 1 no corpo de Rijndael). Seja a um elemento qualquer em GF (28 ), que interpretamos como a7 x7 + a6 x6 + a5 x5 + a4 x4 + a3 x3 + a2 x2 + a1 x1 + a0 .

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

Pr e
01 = 1 02 = x 03 = x + 1.

Os coecientes de c(x) tambm so elementos de GF (28 ), representados aqui em hexadecimal. Sua representao como polinmios mdulo m(x)

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

lim

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 seja um polinmio de grau trs (e que possa portanto ser representado como uma coluna). A operao MixColumns multiplica o polinmio em cada coluna pelo polinmio xo c(x): c(x) = 03 x3 + 01 x2 + 01 x + 02 .

(mod m(x))

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

80

CAPTULO 5. CIFRAS DE BLOCO

Note que temos nos coecientes ou ai xi+1 (que pode ser obtido deslocando os bits da representao binria para a esquerda) ou (ai + a7 )xi+1 . As posies em que a7 aparece somado com ai so 0, 1, 3 e 4. O nmero binrio 11011 1b . Podemos calcular ax ento fazendo duas operaes: Deslocamento de um bit para a esquerda; Se a7 = 1, fazemos ou exclusivo com 1b . Finalmente, a(x + 1) = ax + a,

Quando multiplicada por c(x), resulta em x7 + x6 + x5 x x+1 1 1 1 x x+1 1 x5 + 1 3 1 1 x x+1 x +x 6 5 4 x+1 1 1 x x +x +x +x+1

Ve rs
5.8

=x 7 + 3 x 6 + 2 x 5 + x + 2

=x 7 + x 6 + x

=11000010 = 194 = c2 .

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

A cifra FOX um esquema de Lai-Massey, e a sucessora da cifra IDEA. H variantes de FOX para blocos de 64 e de 128 bits.

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

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

FOX (IDEA-NXT)

Pr e

Exemplo 5.17 (Clculo de um coeciente em MixColumns). Considere a coluna j mostrada, (E0 , 21 , 0A , 72 )T . Ela pode ser representada como x7 + x6 + x5 x5 + 1 x3 + x x6 + x5 + x4 + x + 1

lim

que pode ser implementado computando primeiro ax e depois fazendo ou exclusivo com a. Na prtica, estas operaes so implementadas em tabelas6 , onde cada um dos 256 elementos tem uma tabela para a multiplicao por 2.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

5.8. FOX (IDEA-NXT)

81

Da memsa forma que nas outras cifras de bloco apresentadas, h um algoritmo para escalonamento de chaves. A Figura a seguir mostra uma rodada do FOX64.

Note que inversa de si mesma, por isso a nica operao usada. A funo f 64 na Figura chamada de funo de rodada, e realiza ou exclusivo com a chave de rodada, permutaes e transformaes lineares.

Notas

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

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

82

CAPTULO 5. CIFRAS DE BLOCO

Ex. 34 Seja F : { 0, 1 } { 0, 1 } { 0, 1 } uma funo pseudoaleatrea. Argumente que F deve ser de mo nica. 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 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). Ex. 40 Mostre8 que para o DES vale Enck (m) = Enck (m), onde x a operao de complemento dos bits de x. Ex. 41 Explique porque o ataque do encontro no meio no funciona para 1 Fk1 ,k2 ,k3 = Fk1 (Fk (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?

Ve rs

7 Hoje mantidos pela Comunidade de Estados Independentes (pases antes membros da Unio Sovitica). 8 O Exerccio 52 pede a descrio de um ataque que usa esta propriedade.

Pr e

lim
n n

Exerccios

in ar

um conjunto de padres originalmente produzidos pela Unio Sovitica7 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 o DES; o padro no dene as S-boxes, que eram modicadas dependendo do contexto (o governo sovitico decidia quem poderia usar quais conjuntos de S-boxes). A cifra FOX[28] foi criada por Pascal Junod e Serge Vaudenay como sucessora da cifra IDEA. Exemplos de redes de Feistel so as cifras Camellia (desenvolvida pela Mitsubishi) [29], Blowsh (de Bruce Schneier) [30], e MARS (nalista do concurso que selecionou o AES, desenvolvida pela IBM) [31].

notas de aula verso 79 - Jernimo C. Pellegrini

5.8. FOX (IDEA-NXT)

83

Ex. 43 Voc consegue usar o mesmo raciocnio usado na resposta do Exerccio 42 para rodadas quase completa do AES, com todos os passos menos AddRoundKey? E para rodadas completas?

Ex. 45 Prove que a permutao usada na cifra FOX de fato um ortomorsmo. Ex. 46 Desenvolva e implemente, despretensiosamente9 , suas prprias cifras de bloco: a) Uma rede de permutao e substituio; b) Uma cifra de Feistel simples; d) Uma cifra de Lai-Massey. c) Uma cifra de Feistel que usa S-boxes e permutaes;

Ser interesante que as S-boxes, permutaes e partes de cifras em geral sejam parametrizveis, para que seja possvel mais tarde trocar facilmente uma S-box ou permutao da cifra sem ter que refazer completamente o programa.

Ve rs

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

Pr e

lim

in ar

Ex. 44 Se voc no leu a descrio algbrica do AES, tente determinar a inversa da operao MixColumns.

notas de aula verso 79 - Jernimo C. Pellegrini

84

CAPTULO 5. CIFRAS DE BLOCO

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 6

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 uxo, que analisaremos usando criptanlise algbrica.

6.1

Uma rede de substituio e permutao

Ve rs
0 1 2 8 2 D

Nossa rede ter entrada de 16 bits e quatro rodadas. Usaremos uma chave de 80 bits com escalonamento absolutamente simples: cada rodada usar uma parte da chave. A primeira rodada usar os primeiros 16 bits; a segunda rodada, os prximos 16 bits, e assim por diante. Aps a ltima rodada aplicaremos uma ltima subchave, usando o total de 16 5 = 80 bits. Inicialmente, presumimos que o esforo para obteno da chave seja O(280 ), mas mostraremos que tal expectativa ingnua. Os passos realizados em cada rodada da rede so descritos a seguir. Substituio: A entrada ser dividida em 4 S-boxes iguais (normalmente as S-boxes usadas em uma rodada so diferentes, mas usaremos apenas uma para 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 24 = 16. Assim, o valor 0 deve ser lido como 0000, 1 como 0001, e assim por diante at E = 1110 e F = 1111. A linha superior mostra as entradas e a linha inferior mostra as sadas correspondentes.

o
3 4 5 5 4 A

Pr e
6 C 7 F 85 8 E 9 A 3 B B 9

lim
C 7 D 1 E 6

in ar
F 0

notas de aula verso 79 - Jernimo C. Pellegrini

86

CAPTULO 6. NOES DE CRIPTANLISE Por exemplo, se a entrada da S-box 1011 vericamos que 1011 = B e a sada ser 9, ou seja, a sequncia de bits 1001. Nossa S-box uma permutao simples ( bijeo e preserva o tamanho da entrada). Isso no estritamente necessrio para que a criptanlise linear funcione (uma S-box do DES, por exemplo, que tem entrada de seis bits e sada de quatro bits, tambm pode ser analisada usando esta tcnica).

Permutao: Os 16 bits da sada do passo de substituio so permutados usando a seguinte tabela:

Ve rs

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

Pr e

Esta tabela semelhante quelas vistas no Captulo 5: os nmeros representam as posies dos bits da entrada, e a ordem em que aparecem na tabela a ordem em que aparecero na sada. Como exemplo, o terceiro bit da entrada ser o nono da sada, o quinto bit da entrada ser o segundo da sada, e o primeiro e ltimo bits no so trocados de lugar. O diagrama a seguir ilustra como os bits so reordenados.

lim

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

6.1. UMA REDE DE SUBSTITUIO E PERMUTAO

87

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

88

CAPTULO 6. NOES DE CRIPTANLISE

6.2

Criptanlise linear

a1 x1 + a2 x2 + a3 x3 + a4 x4 ou

(mod 2),

a1 x1 a2 x2 a3 x3 a4 x4 ,

onde ai xi denota o e lgico de ai e xi . Como ai s pode valer um ou zero, cada ai tem o efeito de escolher quais xi participam do ou-exclusivo. Se a = 0110 e x = 1100, ento a combinao linear ax a1 x1 a2 x2 a3 x3 a4 x4 = 0 x1 x2 x3 0 x4

Ve rs

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

Presumimos que um atacante tem uma grande quantidade de pares de mensagem/texto cifrado, todos gerados com a mesma chave. Aps encontrar uma relao probabilstica linear entre bits da entrada e bits da sada, conseguiremos obter a ltima subchave com esforo menor que o de uma busca exaustiva.

Pr e
= 0 x2 x3 = x2 x2 = 1 0 = 1.

= (0 x1 0 x4 ) x2 x3

lim

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

89

O objetivo encontrar variveis aleatreas denidas por relaes lineares do tipo Xi Xj Xm Yk Yl Yn = 0

6.2.1

O Lema do Empilhamento

A sada de uma rede de substituio e permutao deveria ser indistinguvel da sada de uma permutao pseudoaleatrea. Se escolhermos uma sequncia de bits da mensagem mi , . . . , mj e uma sequncia de bits da sada cl , . . . , cm , seja p = Pr[mi mk cl cm = 0].

Se c a sada de uma funo realmente aleatrea, supomos que p muito prxima de 1/2 e a criptanlise linear um mtodo para identicar casos onde isso no acontece. Comeamos denindo esta distncia de 1/2, que um conceito central para a criptanlise linear. Denio 6.1. O vis de uma varivel aleatrea binria Xi i = Pr(Xi ) 1/2. O vis mede o quanto a probabilidade de uma varivel est acima de 1/2 (claramente o vis pode ser negativo, se Pr[Xi ] < 1/2). Considere as entradas X1 e X2 na S-box que denimos. A expresso X1 X2 = 0

pode ser reescrita como

Suponha que as probabilidades de X1 e X2 sejam

Ve rs
E portanto

Se X1 , X2 so independentes temos Pr[X1 = 0, X2 = 0] = p1 p2 Pr[X1 = 0, X2 = 1] = p1 (1 p2 ) Pr[X1 = 1, X2 = 0] = (1 p1 )p2 Pr[X1 = 1, X2 = 1] = (1 p1 )(1 p2 ).

Pr[X1 X2 = 0] = Pr[X1 = X2 ] = p1 p2 + (1 p1 )(1 p2 ).

Pr e
X1 = X2 . Pr[X1 = 0] = p1 Pr[X2 = 0] = p2 .

lim

in ar

que tenham probabilidade distante de 1/2.

notas de aula verso 79 - Jernimo C. Pellegrini

90

CAPTULO 6. NOES DE CRIPTANLISE

Se p1 = 1/2 + 1 e p2 = 1/2 + 2 , com |e1 | e |e2 | 1/2, ento Pr[X1 X2 = 0] = 1 + 2 1 2 2

ou seja, 1,2 = 21 2 . O Lema do Empilhamento, que enunciamos a seguir, d uma forma fechada para o clculo do vis de diversas variveis aleatreas binrias independentes.

Lema 6.2. (Lema do Empilhamento) Sejam X1 , X2 , . . . , Xn variveis aleatreas binrias independentes; seja i o vis de Xi e 1,2,...,n o vis de X1 Xn . Ento Pr[X1 Xn ] = ou seja,

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

Ve rs
6.2.2

Pela hiptese de induo, o vis de A 2k1 k j =1 ij . J o vis de Xik+1 ik+1 . Como sabemos calcular o vis para duas variveis, basta faz-lo para A e Xik+1 , obtendo
k k+1

Demonstrao. Provamos por induo no nmero de variveis. Para uma varivel o resultado claramente verdadeiro: (211 )1 = 1 . O caso com duas variveis j mostramos no texto, antes do enunciado do Lema. Nossa hiptese de induo de que o Lema vale para k variveis, com k 2. Mostraremos ento a validade do Lema para k + 1. Para determinar o vis de X1 X2 Xik+1 , reescrevemos A = X1 X2 Xik e X1 X2 Xik+1 = A Xik+1 .

Pr e
2 2k1
j =1

ij ik+1 = 2k
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.

lim
n

1 + 2 n1 i , 2 i=1

i .

i=1

ij .

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR X 0 1 2 3 4 5 6 7 8 9 A B C D E F X1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 X2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 X3 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 X4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 Y2 0 0 1 1 1 0 1 1 1 0 0 0 1 0 1 0 Y3 1 0 0 0 0 1 0 1 1 1 1 0 1 0 1 0 Y4 0 0 1 1 0 0 0 1 0 1 1 1 1 1 0 0 Y 2 8 D 5 4 A C F E 3 B 9 7 1 6 0

91

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 obtida a partir da anterior com as seguintes modicaes:

Ve rs

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

As colunas do meio mostram as duas combinaes lineares, X3 X4 e Y1 Y2 Y3 ;

As linhas em que as duas combinaes coincidem esto destacadas.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

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

CAPTULO 6. NOES DE CRIPTANLISE X3 X4 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 Y1 Y2 Y3 1 1 0 1 1 0 0 1 1 1 0 1 0 0 0 0 Y1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 Y2 0 0 1 1 1 0 1 1 1 0 0 0 1 0 1 0 Y3 1 0 0 0 0 1 0 1 1 1 1 0 1 0 1 0

Seja A = X3 X4 Y1 Y2 Y3 . Esta varivel ser zero quando X3 X4 = Y1 Y2 Y3 , ou seja, nas linhas em destaque.

Ve rs

Esperamos que Pr[A = 0] seja aproximadamente 1/2 (quanto mais prximo de 1/2 melhor). No entanto, as colunas do meio coincidem 4 vezes e h 16 entradas, portanto Pr[A = 0] = 4/16 = 1/4. O vis de A 1/4 1/2 = 1/4.

Para uma varivel A qualquer (ou seja, para uma expresso linear qualquer) o nmero de coincidncias pode car entre zero e dezesseis. Se subtrairmos oito do valor, teremos um nmero entre 8 e +8 que se dividido por 16 resultar no vis da varivel (por exemplo, para A denida acima o valor seria (4 8)/16 = 4/16 = 1/4).

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

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

93

Esta tabela chamada de tabela de aproximao linear. Podemos vericar o vis que j calculamos, de X3 X4 Y1 Y2 Y3 : a linha dada por 0011 = 3 e a coluna por 1110 = 14 = E . E de fato, na posio (3, E ) temos 4 o que signica que o vis 4/16 = 1/4, exatamente como calculamos anteriormente. Denotaremos por I n a sequncia de 16 bits na entrada das S-boxes da nsima rodada. De maneira semelhante, On a sequencia de 16 bits saindo das n n S-boxes da n-sima rodada. Tambm denotaremos por Ij e Oj o j -simo dos n n 16 bits de I e O .
n Usaremos notao semelhante para as chaves de rodada: kj o j -simo bit da chave da n-sima rodada.

Ve rs

A prxima gura mostra I n e On , alm de caminhos, cuja natureza car clara no decorrer do texto. As S-boxes S1,1 , S2,1 , S3,2 , S4,2 e S4,3 so ativas na aproximao que faremos.

Pr e

lim

0 1 2 3 4 5 6 7 8 9 A B C D E F

0 +8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 0 +2 +2 0 2 0 +4 +2 +2 0 +4 2 0 2 2 0

2 0 2 2 0 0 2 2 0 +2 +4 0 2 +2 4 0 2

3 0 0 0 0 2 2 +2 6 0 0 0 0 2 2 +2 +2

4 0 4 +2 2 +2 +2 0 0 2 +2 +4 0 0 0 +2 +2

5 0 2 0 +2 0 +2 0 2 +4 2 0 2 +4 +2 0 +2

6 0 2 0 +2 2 0 +2 0 4 2 0 2 +2 0 +2 4

Y 7 8 0 0 0 0 2 +2 2 +2 +4 2 0 2 +2 0 2 0 2 2 2 +2 0 0 0 +4 +2 +4 2 0 4 2 0 +2

9 0 +2 4 +2 0 +2 0 2 0 +2 +4 +2 0 +2 0 2

A 0 2 0 +2 2 +4 2 0 0 2 0 +2 2 4 2 0

B 0 0 +2 +2 0 0 2 2 2 +2 0 4 2 +2 4 0

C 0 0 0 0 0 +4 +4 0 0 +4 4 0 0 0 0 0

D 0 +2 2 +4 +2 0 0 +2 2 0 0 2 0 2 +2 +4

E 0 +2 2 4 4 +2 2 0 2 0 0 2 +2 0 0 +2

F 0 4 4 0 2 2 +2 +2 0 0 0 0 2 +2 2 +2

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

94

CAPTULO 6. NOES DE CRIPTANLISE

Ve rs

Note que a trilha mostrada na rede no representa que tal entrada deve inuenciar exatamente aqueles bits na rede. Signica apenas que escolhemos um

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR

95

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


1 1 1 (+1/4) A1 = I1 I2 O1 =0

2 2 2 (+1/4) A2 = I1 O2 O4 =0 3 3 3 (1/4) A3 = I5 O6 O7 =0

3 3 3 (1/4) A4 = I13 O14 O15 = 0.

A = [A1 A2 A3 A4 = 0]

O vis desta nova varivel pode ser determinado usando o Lema do Empilhamento, e igual a
4

Pr e
1 4 1 4 1 4
1 1 1 (I1 I2 O1 ) 2 2 2 (I1 O2 O4 ) 3 3 3 (I5 O6 O7 ) 3 3 3 (I13 O14 O15 ) 1 1 I1 m 1 k1 3 2 3 I5 O2 k5 .

fcil identicar cada varivel aleatrea na ltima gura. Fazemos um ouexclusivo de todas elas, denindo uma varivel aleatrea A:

1,2,3,4 = =8 1 4

Ve rs

Expandimos A1 A2 A3 A4 , obtendo

j Agora desenvolvemos esta expresso, reescrevendo as variveis Ik como ouexclusivo do passo anterior com a subchave. Por exemplo,

o
= 1 . 32

lim
23
i=1

in ar

caminho que, com alta probabilidade, nos garantir uma relao entre entrada e sada. Considere os bits 1 e 2 da entrada (ambos entram na S-box S11 como X1 e X2 aps ou-exclusivo com bits de k 1 ) e as seguintes variveis aleatreas (cada uma com vis indicado entre parnteses):

notas de aula verso 79 - Jernimo C. Pellegrini

96

CAPTULO 6. NOES DE CRIPTANLISE

Determinamos ento que A1 A2 A3 A4 igual a


1 1 1 ([m1 k1 ] [m2 k2 ] O1 ) 1 2 2 2 ([O1 k1 ] O2 O4 ) 2 3 3 3 ([O2 k5 ] O6 O7 ) 2 3 3 3 ([O4 k13 ] O14 O15 ),

que o mesmo que


1 1 2 3 3 (m1 m2 k1 k2 k1 k5 k13 )

1 1 2 2 2 3 3 2 3 3 O1 O1 O2 O4 O2 O6 O7 O4 O14 O15 .

Como x x = 0,

1 1 2 3 3 (m1 m2 k1 k2 k1 k5 k13 ) 3 3 3 3 O6 O7 O14 O15 .

Estamos interessados no caso em que A1 A2 A3 A4 = 0 (porque como denimos nossa varivel aleatrea A), e sabemos que

ou seja, podemos substituir

o Ve rs
Assim,

1 1 2 3 3 (m1 m2 k1 k2 k1 k5 k13 )

4 4 4 4 4 4 4 4 [I6 k6 ] [I10 k10 ] [I8 k8 ] [I12 k12 ] = 0.

Como estamos interessados apenas na relao entre a entrada da rede e a sada I 4 , isolamos os bits de chave:
1 1 2 3 3 4 4 4 4 Z = k1 k2 k1 k5 k13 k6 k10 k8 k12

Testaremos as chaves uma a uma portanto podemos presumir que Z estar xo em um ou em zero. Em um dos casos, o vis de A1 A2 A3 A4 ser +1/32, e no outro, 1/32. Conseguimos determinar ento que o vis de
4 4 4 4 m1 m2 I6 I10 I8 I12

Pr e

4 3 4 I6 = O6 k6

4 3 4 I8 = O14 k8

4 3 4 I10 = O7 k10

4 3 4 I12 = O15 k12 ,

3 4 4 O6 I6 k6

3 4 4 O7 I10 k10 3 4 4 O14 I8 k8 3 4 4 O15 I12 k12 .

lim

in ar
(6.1)

notas de aula verso 79 - Jernimo C. Pellegrini

6.2. CRIPTANLISE LINEAR 1/32.

97

Tendo o vis de 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 A (Equao 6.1) vale com a frequncia que esperaramos, dado o vis que calculamos. A Figura a seguir ilustra este processo.

Ve rs

Quando a relao valer para um par, incrementamos o contador da subchave. O pseudocdigo a seguir mostra este processo. O vetor F contm os contadores de frequncia (o algoritmo calcula, em Fk , a frequncia de ocorrncias para a k -sima subchave).

para cada subchave candidata k : Fk 0 para cada par (m, c): O4 c k // desfazemos I 4 S 1 (O4 ) // inversa da Sbox 4 4 4 4 I12 =0 se m1 m2 I6 I10 I8 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.

Pr e

lim

in ar

Os bits da ltima chave (K5 ) que so combinados com a sada das S-boxes 5 5 S4,2 e S4,3 so k5 k12 . H 28 = 256 possveis valores para estes bits, que so chamados de subchaves candidatas.

notas de aula verso 79 - Jernimo C. Pellegrini

98

CAPTULO 6. NOES DE CRIPTANLISE

Apresentamos a seguir os resultados de uma simulao, completando o exemplo. Nesta simulao, usamos k1 = 0001 1011 1001 1001 k2 = 0010 1010 0011 0011 k3 = 1111 0000 0111 1000 k4 = 1011 1101 0100 0010 k5 = 1000 1001 1001 1100

onde o vis da relao linear que encontramos. Como temos = 1/32, conclumos que 1 = 1024 (1/32)2 pares so sucientes. A prxima tabela mostra uma lista das chaves com o vis calculado da relao A = 0, onde 4 4 4 4 A = m1 m2 I6 I10 I8 I12 . Esperamos que o valor absoluto do vis A da varivel A para a chave correta seja prximo de 1/32 = 0.03125. Pode haver outras subchaves para as quais esta relao tambm valha com alta probabilidade, portanto podemos ter que buscar entre as diversas subchaves com A mais prximos de 1/32. Nesta simulao, a subchave correta tem A = 0.35.

Ve rs

Conseguimos, nalmente, extrair oito bits da chave.

Pr e
subchave 01010000 01111011 00011111 10111000 10111110 10010110 01000011 11011110 00100000 01101001 00101110 10011001

lim
| A| 0.02325 0.02325 0.025 0.02525 0.0255 0.02625 0.0265 0.02675 0.02775 0.03025 0.033 0.035

A subchave que queremos encontrar , portanto 10011001 (sublinhada acima). O nmero de pares de texto claro e encriptado que usamos 1200. O idealizador da criptanlise linear, Mitsuru Matsui, argumentou que um nmero razovel de pares 1 2

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL

99

6.3

Criptanlise diferencial

Ve rs

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. Dadas duas entradas X e X para uma cifra, calculamos sua diferena X e vericamos a diferena entre as sadas Y e Y . Se a distribuio de Y for muito distante de uniforme, podemos us-la para acelerar a busca pela chave.

Antes de mais nada relevante recordar que em aritmtica mdulo dois a diferena entre dois nmeros igual ao ou exclusivo (0 0 = 0; 0 1 = 1; 1 0 = 1; 1 1 = 0).

Pr e

A trilha que escolhemos no exemplo dado tinha quatro S-boxes. Deve ser claro que a probabilidade de sucesso do ataque linear menor quando h mais S-boxes envolvidas e quando o vis das variveis envolvidas menor. O criptanalista deve encontrar trilhas que resultem em vis alto. para cifras mais complexas e com mais rodadas do que a que construmos, isso pode ser feito usando tcnicas de otimizao combinatria (metaheursticas). Por exemplo, usando algoritmos genticos (cada trilha um indivduo, e a funo de adequao ao ambiente o vis da trilha).

lim

6.2.3

Escolha da trilha e resistncia ao ataque

in ar

Podemos repetir este processo para tentar obter subchaves para as outras duas S-boxes da ltima rodada, e posteriormente repetir o processo para as outras rodadas. Quando a chave tem muitos bits, o trabalho total dispendido na criptanlise linear de sucesso muito menor do que a busca exaustiva pela chave. A chave tem 80 bits, e a busca exaustiva teria complexidade de tempo O(280 ). Com o trabalho j feito, zemos uma busca em tempo O(28 ) para determinar oito dos bits. Restam 72 bits, e se os buscarmos exaustivamente teremos usado no total tempo O(272 ) + O(28 ), muito menor que O(280 ). Se conseguirmos repetir este processo para as outras S-boxes, duas por vez, a busca poderia levar tempo O(16 28 ) um esforo muito pequeno quando comparado busca exaustiva.

notas de aula verso 79 - Jernimo C. Pellegrini

100

CAPTULO 6. NOES DE CRIPTANLISE

Sejam X e X duas entradas para uma S-box. Estamos interessados na diferena entre estas entradas, que denotamos X = X X .

Calculamos tambm as sadas da S-box Y = S (X ) e Y mos a diferena Y = Y Y . O par (X , Y ) chamado de diferencial.

Idealmente, tendo xado um X , Pr[Y |X ] deveria ser igual a 1/2n para qualquer Y . Isto infelizmente impossvel, como mostraremos adiante. Quando esta probabilidade muito alta par algum diferencial (X , Y ), ela pode ser usada para obter bits da chave. Escolhemos agora um X e calculamos todos os possveis X e X que resultam em X . Damos um exemplo usando a S-box que denimos anteriormente: se escolhermos X = 0011, listamos todos os 16 valores de X , e para cada um deles teremos X = X 0011. Isto feito na tabela a seguir.

Ve rs

A prxima tabela j mostra, para X e X , as sadas Y e Y (ainda com X xo, igual a 0011).

Pr e
X 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

X = 0011 X = X X 0011 0010 0001 0000 0111 0110 0101 0100 1011 1010 1001 1000 1111 1110 1101 1100 e a diferena Y

lim

in ar
= S (X ), e observa-

notas de aula verso 79 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL X = 0011 X Y Y 0011 0010 0101 0010 1000 1101 0001 1101 1000 0000 0101 0010 0111 0100 1111 0110 1010 1100 0101 1100 1010 0100 1111 0100 1011 1110 1001 1010 0011 1011 1001 1011 0011 1000 1001 1110 1111 0111 0000 1110 0001 0110 1101 0110 0001 1100 0000 0111

101

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

A tabela a seguir mostra as frequncias para cada diferencial (X , Y ). 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 4 0 2 0 0 2 0 2 2 0 0 0 0 4 2 0 2 0 0 4 2 0 0 0 0 2 0 0 0 2 4 3 0 2 0 0 0 0 2 0 2 0 2 2 0 4 2 0 4 0 0 0 0 0 2 0 2 0 2 0 2 0 4 4 0 5 0 0 4 2 0 0 0 2 0 2 0 0 4 2 0 0 6 0 4 0 2 2 0 0 0 2 2 2 0 2 0 0 0 7 0 0 0 8 0 0 2 2 0 0 0 0 2 2 0 0 Y 8 0 2 2 2 0 2 4 0 0 0 0 2 0 0 2 0

Pr e
0101 0110 0111 1000 1011 2 2 8 2 2 9 0 0 0 0 4 2 2 0 0 2 2 0 4 0 0 0 A 0 2 2 0 2 0 0 2 2 0 2 0 2 0 2 0

lim
B 0 0 0 2 0 2 0 0 4 0 2 4 2 0 0 0 C 0 0 0 0 0 2 2 0 4 2 0 2 0 0 2 2 D 0 2 2 0 2 0 0 2 0 2 0 2 0 2 0 2 E 0 2 0 0 0 0 2 4 0 2 2 2 0 0 0 2 F 0 0 2 0 0 4 2 0 2 0 0 0 0 2 2 2

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

Y 0111 0101 0101 0111 1011 0110 0110 1011 0111 1000 1000 0111 0111 0111 0111 0111

0 1 2 3 4 5 6 7 8 9 A B C D E F

Ve rs

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

102

CAPTULO 6. NOES DE CRIPTANLISE

Lema 6.3. Todas as entradas na matriz de distribuio de diferena so pares. Alm disso, a soma das entradas em qualquer linha ou coluna igual a 2n . Teorema 6.4. No existe S-box tal que para quaisquer X e Y , Pr[Y |X ] = 1 . 2n

Demonstrao. Segue imediatamente do Lema 6.3.

Em nossa cifra, a sada Oi1 de uma rodada misturada com a chave k i da prxima, para somente depois servir de entrada para as S-boxes da i-sima rodada. A diferena entre duas entradas para I i , no entanto, no dependem da subchave k i , de acordo com o prximo Teorema.

Pr e
I = I
(i)

Teorema 6.5. Sejam O (i1) e O (i1) sadas para a rodada i 1 da rede; I e I (i) as entradas na i-sima rodada. Sejam I
(i) (i1)

lim
(i1) (i1)

O = O (i1) O

as diferenas na sada da rodada i 1 e na entrada da rodada i. Ento I depende somente de O , e no inuenciada pela subchave k i . Demonstrao. O ou exclusivo das entradas

(i)

(i)

= O (i1) k i O = O (i1) O ,

Ve rs

ou seja, independente da chave k i .

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

in ar
(i)

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

ki

notas de aula verso 79 - Jernimo C. Pellegrini

6.3. CRIPTANLISE DIFERENCIAL

103

Ve rs

Usaremos 0110 como diferencial de entrada na S-box S14 , e portanto o diferencial de entrada para a rede toda 0000 0000 0000 0110. 1 1 Denotaremos por O13 ..16 os bits de 13 a 16 de O que so a sada da S-box S14 e usaremo notao semelhante para outros I i e Oi .

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

104

CAPTULO 6. NOES DE CRIPTANLISE

Na sada de S14 (ou seja, nos bits 13..16 de O1 ), teremos a diferena 0100 com probabilidade 4/16 = 1/4.
1 Pr (O13 ..16 ) = 0100|X = 0000 0000 0000 0110 =

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


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

J em O3 temos

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

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

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

Ve rs

Com alta probabilidade (1/256), a diferena entre os bits de S41 e S42 ser 0110 0110. Para cada subchave candidata, decriptamos parcialmente muitos pares (c , c ) 4 4 4 resultando em (4 , I ) e observamos a diferena I I . Quando esta for igual diferena entre m e m , incrementamos o contador para esta subchave.

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

c enc_vector(m ) c enc_vector(m )

Pr e

muito maior que 1/2n = 1/65536. No processo de criptanlise usamos pares de texto claro com este valor para X . A criptanlise diferencial termina de maneira parecida com a criptanlise linear, identicando subchaves e vericando a frequncia da relao para cada possvel subchave. Usamos muitos pares de mensagens (m , m ) com diferena igual a 6 (ou seja, 0000 0110).

lim

in ar
1 4
4

1 . 4

1 , 256

notas de aula verso 79 - Jernimo C. Pellegrini

6.4. CRIPTANLISE ALGBRICA

105

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, evidentemente). Esta quantidade mais que suciente, j que 1 = 256. (1/256)

Ve rs
6.4

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

Criptanlise Algbrica

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

Pr e
subchave 11110100 11111011 11111100 11111110 00101011 01010100 01100100 01101011 01011011 Fk /n 0.00125 0.00125 0.00125 0.00125 0.0025 0.0025 0.0025 0.0025 0.00375

Simulando um ataque diferencial com esta cifra e com as mesmas chaves usadas no ataque linear, obtemos os dados na tabela a seguir. Fk /n igual a 0.00375 para a chave correta o valor mais prximo de 1/256 = 0.00390625 dentre todos.

lim

in ar

A probabilidade de Y = 6 para a subchave correta 1/256, portanto basta dividir cada elemento do vetor F por N e vericar os valores mais prximos de 1/256 = 0.00390625. possvel mostrar que uma quantidade razovel de pares de texto claro necessrios para que a criptanlise tenha sucesso aproximadamente

notas de aula verso 79 - Jernimo C. Pellegrini

106

CAPTULO 6. NOES DE CRIPTANLISE

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

Suponha agora que o escalonamento de chaves seja feito da seguinte maneira: k 1 = k0

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

k 3 = (KC KD KA KB )

Ve rs

Aqui A a negao de booleana de A, que o mesmo que 1 A (mod 2). A rede inteira pode ser descrita ento como um sistema de equaes mdulo dois. Por exemplo, o bit c1
5 4 c1 = k1 O1 .

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

Precisamos de modelos das S-boxes e da permutao como equaes envolvendo os bits de entrada e sada de cada uma. Sendo Yi o i-simo bit de sada da S-box e Xi o i-simo bit de entrada, a S-box pode ser descrita como Y1 = X1 X2 X4 X1 X2 X3 X1 X2 X3 X1 X3 X4 X1 X3 X4

Y2 = X1 X3 X2 X4 X1 X3 X4

Y3 = X1 X2 X4 X1 X4 X2 X3 X4 X1 X2 X3

Y4 = X2 X3 X1 X3 X4 X1 X2 X3 X1 X3 X4 .

Pr e

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

lim

in ar

KB = 0110

notas de aula verso 79 - Jernimo C. Pellegrini

6.5. TCNICAS DE CRIPTANLISE RELACIONADAS das entradas da S-box, temos


5 4 4 4 c1 = k1 I1 I2 I4

107

4I 4I 4 I1 2 3 4I 4I 4 I1 3 4 4I 4I 4. I1 3 4

4 Reescrevemos cada Ij em funo de O3 e k 4 , e continuamos at termos descrito completamente um sistema de equaes. Como as equaes tem grau trs, o sistema difcil de resolver, mas em muitos casos possvel.

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 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, que no deveriam acontecer).

Ve rs

Notas

A criptanlise linear foi introduzida por Mitsuru Matsui em 1993 em um artigo explorando possveis ataque ao DES [32]. A criptanlise diferencial foi proposta inicialmente por Biham e Shamir em 1991, usando como exemplo uma cifra semelhante ao DES [33]. A apresentao para criptanlise linear e diferencial semelhante em esprito quelas feitas por Stinson em seu livro [34] e por Howard Heys em um relatrio tcnico [35]. Em 1994 Don Coopersmith, um dos responsveis pela criao do DES na IBM, publicou um artigo [36] 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

Pr e

lim

in ar

4 4 4 I1 I2 I3

notas de aula verso 79 - Jernimo C. Pellegrini

108

CAPTULO 6. NOES DE CRIPTANLISE

recuperao de todos os bits da chave do DES. A tese de Biham foi transformada em livro [37], em cujo prefcio se l1 A criptanlise diferencial o primeiro ataque capaz de quebrar o DES completo com 16 rodadas com complexidade menor do que 255 . A fase de anlise de dados computa a chave analisando cerca de 236 textos cifrados em tempo 237 . Os 236 textos cifrados so obtidos durante a fase de coleta de dados, de um pool maior de 247 textos claros escolhidos usando um critrio simples de repetio de bits que descarta mais que 99.9% dos textos cifrados assim que so gerados.

Uma introduo Criptanlise Algbrica com exemplos de cifras reais quebradas dada no livro de Gregory Bard [38]. A tcnica de chaves relacionadas foi desenvolvida independentemente por Biham e Knudsen em 1993 [?, ?]. H diversas outras tcnicas de Criptanlise alm das duas cobertas neste Captulo. A criptanlise diferencial truncada semelhante criptanlise diferencial, exceto que apenas alguns dos bits das diferenas so levados em considerao [39]. possvel combinar criptanlise diferencial e linear, resultando no mtodo descrito por Hellman e Langford, chamado de criptanlise diferenciallinear[40]. O uso de metaheursticas em criptanlise discutido extensivamente na tese de John Clark [41]. Bruce Schneier publicou na revista Criptologia um guia para estudo individual de Criptanlise [42], onde observa que s se aprende Criptanlise atravs da prtica, e prope diversas tarefas criptanalticas para o leitor. O mtodo de Quine-McCluskey, mencionado no exemplo de criptanlise algbrica, usualmente descrito em livros sobre circuitos digitais, como o de Nelson e outros [43], em seu terceiro Captulo. H outros mtodos que do o mesmo resultado por exemplo, os mapas de Karnaugh, descritos no livro de Idoeta e Capuano [44].

Exerccios

Ve rs
1 Traduo

Ex. 47 Use a tabela de aproximao linear exposta neste Captulo para calcular: a) Pr[X1 x4 = Y3 ] c) Pr[X1 Y2 = 0] b) Pr[X1 Y1 = 0]

d) Pr[X2 X3 Y2 Y3 = 0]

Ex. 48 A respeito da tabela de aproximao linear que calculamos: a) Porque a primeira coluna e a primeira linha esto zeradas, exceto pela posio (0, 0)? Isso uma propriedade especca desta S-box ou algo que deva ser verdade sempre?
livre.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

6.5. TCNICAS DE CRIPTANLISE RELACIONADAS b) Porque a soma de qualquer linha ou coluna sempre +8 ou 8?

109

Ex. 50 Escolha uma das S-boxes do DES e construa sua tabela de aproximao linear. Ex. 51 Prove o Lema 6.3.

Ex. 53 Nos exemplos dados neste Captulo, encontramos maneiras de determinar bits de subchaves da ltima rodada da cifra. Complete os exemplos, mostrando como o processo pode ser usado para obter os outros bits tambm. Ex. 54 Suponha que algum tenha proposto um ataque criptanaltico terico a uma cifra de bloco. O bloco da cifra tem 80 bits e a chave, 128 bits. O ataque proposto funcionaria com 2100 operaes em 2110 pares de mensagem e texto encriptado. Aponte um problema com este ataque. Ex. 55 (Programao) Construa ferramentas computacionais que automatizem parte do processo de Criptanlise. Ex. 56 Considere a S -box descrita neste Captulo. Use-a para construir redes de Feistel com duas, quatro e doze rodadas, e tente atac-las usando criptanlise linear e criptanlise diferencial. (A funo interna da rede de Feistel deve ser a aplicao da S -box seguida de ou exclusivo com a subchave da rodada).

Ve rs

Ex. 57 Construa uma cifra usando o esquema de Lai-Massey onde a permutao a S -box usada neste Captulo e a funo interna uma substituio de bytes no linear e sem ponto xo (semelhante ao passo SubBytes do AES). Tente fazer a criptanlise desta cifra com trs, cinco e oito rodadas. Ex. 58 Como construes de Lai-Massey no podem ter sada pseudoaleatrea com menos de trs rodadas, adapte a cifra do Exerccio 57 para funcionar com uma ou duas rodadas e faa uma anlise estatstica da sada da cifra. Tente em seguida identicar maneiras de usar o que descobriu para quebrar a cifra. Ex. 59 Faa a criptanlise das cifras que voc desenvolveu no Exerccio 46, no Captulo sobre cifras de bloco. Ex. 60 Faa a criptanlise da cifra que voc desenvolveu no Exerccio 33, no Captulo sobre cifras de uxo.

Pr e

lim

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

in ar

Ex. 49 Tente refazer o processo de criptanlise linear na cifra apresentada neste Captulo, mas desta vez usando os bits 1 e 4 da entrada.

notas de aula verso 79 - Jernimo C. Pellegrini

110

CAPTULO 6. NOES DE CRIPTANLISE

Ex. 61 Faa a criptanlise de uma verso simplicada do DES e prossiga aumentando a diculdade da tarefa: a) Uma nica rodada. c) Quatro rodadas completas. d) Seis rodadas completas. b) Quatro rodadas, sem S-boxes (somente as permutaes).

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

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 7

Ve rs

Funes de hashing (ou resumos criptogrcos) tem um papel anlogo, de certa forma, ao dos geradores pseudoaleatreos: enquanto um PRG expande sua semente em uma sada indistinguvel de bits aleatreos, uma funo de hashing comprime uma entrada (possivelmente de tamanho ilimitado) em um resumo de tamanho 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 f () para a qual seja difcil encontrar x, x tais que f (x) = f (x ). Posteriormente, na Seo 7.6, trataremos de outra idealizao de funes de hashing, chamada de orculo aleatreo. O orculo aleatreo, embora seja um modelo teoricamente muito bom, permitindo demonstraes que no seriam possveis de outra forma, traz problemas conceituais em sua implementao prtica. Em nossa 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 n. Assim, Gen(1n ) = s, com s {0, 1}n Se s foi gerada por Gen(1n ), ento h um polinmio p() tal que H cria resumos com p(n) bits a partir de s e de uma entrada x de tamanho arbitrrio: H (s, x) = y com x {0, 1} e y {0, 1}p(n) .

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

Pr e

lim

Resumos Criptogrcos (funes de hashing)

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

112CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING) 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, certamente haver x e x diferentes tais que H s (x) = H s (x ). Chamamos a isso de coliso. Tentaremos construir funes de hashing que minimizem a probabilidade de coliso ou, de maneira mais precisa, funes para as quais a probabilidade de coliso seja desprezvel. Denimos a seguir a propriedade de resistncia a coliso para funes de hashing. Experimento 7.2 (HASH_COL(, A, n)). hashing (Gen, H ). s escolhida usando Gen; s enviada para A;

Neste experimento, a funo de

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

Pr e
D s Gen(1n )

Se H s (x) = H s (x ) o adversrio teve sucesso e o resultado do experimento um. Caso contrrio zero. A

Ve rs

Denio 7.3 (Resistncia a coliso). Uma funo de hashing = (Gen, H ) resistente a coliso se para todo adversrio polinomial A existe uma funo desprezvel negl tal que Pr [HASH_COL(, A, n) = 1] negl(n)

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

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

lim
1n x, x

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

7.1. ATAQUES E O PROBLEMA DO ANIVERSRIO

113

Proposio 7.4. Toda funo de hashing resistente a colises tem resistncia de segunda pr-imagem, e toda funo com resistncia de pr-imagem tem resistncia de pr-imagem.

7.1

Ataques e o problema do aniversrio

Suponha que temos uma funo de hashing H com sada de tamanho n, e seja N = 2n o tamanho do conjuntos de possveis sadas de H . Escolha k diferentes entradas x1 , x2 , . . . , xk , todas com tamanho 2n e calcule seus resumos y1 , y2 , . . . , yk usando H . Suporemos que os valores yi = H (xi ) so distribudos uniformemente em {0, 1}2n . Esta situao est claramente relacionada ao problema do aniversrio, descrito no Apndice A. Suponha que o adversrio queria tentar encontrar colises em uma funo de hashing com n bits de sada calculando sucessivamente resumos de entradas escolhidas ao acaso. Denotaremos por N = 2n a quantidade de possveis sadas da funo, e por C o evento que representa a situao onde o adversrio encontrou uma coliso. Presumiremos que o adversrio usar k = N amostras. Temos ento que sua probabilidade de sucesso ser N N N Pr[C ] . 2N 4N

Ve rs

k (k 1) k2 Pr[C ] 4N 2N 250 (250 1) (250 )2 Pr[C ] 100 4(2 ) 2(2100 ) 1 1 Pr[C ] . 4 2 50 Na verdade, como 2 exatamente 2100 , a probabilidade de sucesso do adversrio ser aproximadamente 1/2. O projeto de uma funo de hashing deve, assim, levar em conta este fato. Suponha que uma funo de hashing produza sada de 512 bits. Isso signica que para conseguir probabilidade de sucesso no mximo igual a 1/2 em um ataque o adversrio precisaria de 2512 = 2256 tentativas tal ataque no seria factvel.

Por exemplo, suponha que o tamanho da sada de H seja 100 bits. Temos ento N = 2100 . Se o adversrio tentar 2100 = 250 entradas, a probabilidade de coliso

Pr e

lim

in ar

Resistncia de pr-imagem: Enviamos s e um resumo y para o adversrio. Este y o resultado da aplicao de H (x), para algum x escolhido uniformemente. O adversrio deve encontrar algum x tal que H (x ) = y (ou seja, dada a imagem H (x), o adversrio deve encontrar algum elemento na pr-imagem de H (x)).

notas de aula verso 79 - Jernimo C. Pellegrini

114CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING) Veremos agora como seria a probabilidade de sucesso medida que diminumos a quantidade de tentativas: Para 2255 , a probabilidade < 1/4. Para 2254 menor que 1/32. Para 2200 menor que 9.6 1035 . Para 2128 menor que 4.3 1078 . A proteo contra ataques de aniversrio se d, ento, pela escolha do tamanho da sada da funo. No entanto, apenas medida necessria para a segurana de uma funo de hashing, e no suciente.

7.2

Construo: transformao de Merkle-Damgrd

Construo 7.5 (Transformao de Merkle-Dmgard). Uma funo de hashing (Gen, h) tem entrada de tamanho xo, igual a n bits. A nova funo ser (Gen, H ): a funo Gen permanece a mesma, e H s (x) computada como segue.

Adicione um ltimo bloco xk+1 , cujo contedo a representao do tamanho de x em binrio. Usaremos hs em cada bloco (chamaremos cada aplicao de hs de passo. Como cada bloco tem n/2 bits, em cada passo precisaremos de mais n/2 bits. No primeiro passo, usamos um valor arbitrrio z0 . Nos outros, usamos a sada do passo anterior. A sada do ltimo bloco H s (x).

Ve rs

A Figura a seguir ilustra esta construo. Cada aplicao da funo hs (com entrada de tamanho xo) representada por trapzios e no retngulos, para simbolizar o fato da entrada de hs ser duas vezes maior que sua sada.

Teorema 7.6. Seja (Gen, h) uma funo de hashing de entrada de tamanho xo resistente a coliso e (Gen, H ) construda usando a transformao de MerkleDamgrd. Ento (Gen, H ) tambm resistente a coliso.

Pr e

h aceita entrada de n bits; quebramos x em k = 2|x|/n blocos diferentes, cada um com n/2 bits. Daremos a estes blocos os nomes x1 , x2 , . . . , xk .

lim

Se tivermos uma funo de hashing para entrada de tamanho xo, podemos us-la para entradas de qualquer tamanho usando uma transformao descrita por Merkle e Damgrd.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

7.3. RESISTNCIA A COLISES COM DEXP

115

Ve rs
7.3

Se i = k + 1 ento zk ||xk+1 e zk ||xk+1 so cadeias diferentes para as quais h coliso em hs (na gura acima isso signicaria que no h mais blocos direita). Suponha ento que i < k +1. Neste caso, temos zi = zi . No bloco anterior temos ento zi 1 ||xi e zi 1 ||xi colidindo. Assim, uma coliso em H s implica em uma coliso em hs . Com isto torna-se simples mostrar que se hs resistente a coliso, H 2 tambm o .

Resistncia a colises com dexp

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

Pr e

lim

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

116CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING) H s (m): como m tem 2n bits, pode ser interpretada como a concatenao de dois nmeros x e y (mod q ). Calcule H s (m) = g x hy (mod q ).

Teorema 7.8. Presumindo que vale a hiptese do logaritmo discreto, a Construo 7.7 uma funo de hashing com resistncia a colises. Demonstrao. Seja a Construo 7.7 e A um algoritmo polinomial para obteno de colises. Seja e(n) = Pr[HASH_COL(A, , n) = 1].

Podemos usar A para construir um algoritmo DL que resolve o problema do logaritmo discreto em tempo polinomial com probabilidade de sucesso e(n). DL(G, q, g, h): x, x A(G, q, g, h) se x = x e x, x colidem em H : se h = 1 retorne zero senao interprete x como (x1 ||x2 ) interprete x como (x1 ||x2 ) retorne (x1 x1 )(x2 x2 )1 (mod q )

Agora mostramos que quando A encontra coliso (x = x e H s (x) = H s (x )) DL retorna logg h. Primeiro observamos que quando h = 1 o resultado ser obviamente correto, porque logg h = 0. Para o caso em que h = 1, vericamos que H s (x1 ||x2 ) = H s (x1 ||x2 ) implica que

Pr e
g x1 hx2 g x1 x1 g x1 x1 = 1 g (x1 x1 )d
1

lim
= g x1 hx2 = hx2 x2 . (7.1) (7.2) hx2 x2
1

Ve rs

Seja d = x2 x2 . Notamos que d 0 (mod q ), porque se o fosse, ento teramos hx2 x2 = h0 = 1,

e como g x1 x1 = hx2 x2 , implicaria que (x1 x1 ) (mod q ) seria zero, e teramos ento x = (x1 ||x2 ) = (x1 ||x2 ) = x contradizendo o que j estabelecemos (x = x ). Como d 0 (mod q ) e q primo, existe d1 (mod q ). Elevamos a Equao 7.2 a este valor (d1 (mod q )) e obtemos
[d1 (mod q )]

= h[dd = h.

(mod q )]

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

7.4. SHA (SECURE HASH ALGORITHM) Como g (x1 x1 )d


1

117

= h, conseguimos o logaritmo de h na base g : logg h = = (x1 x1 )d1 (mod q ) (mod q ),

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

7.4

SHA (Secure Hash Algorithm)

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

Ve rs

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

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

Pr e

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 usado na forma da construo de Merkle-Damgrd e tem sada de 160 bits. As operaes usadas so:

lim

Esta funo muito pouco eciente para ser usada na prtica, porque exige o clculo de exponenciao modular. As prximas sees descrevem outras funes de hashing.

in ar

(x1 x1 )(x2 x2 )1

notas de aula verso 79 - Jernimo C. Pellegrini

118CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING) ou seja, a mensagem x com 3000 bits seguida de um bit um, sete zeros e o nmero 3000 em binrio. O total de bits 3072, que pode ser dividido em 6 blocos de 512 bits. y.

Ve rs

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

Pr e

lim

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

7.5. CIFRAS DE BLOCO USANDO FUNES DE HASH: AARDVARK119 (B C ) ((B ) D) B C D ft (B, C, D) = (B C ) (B D) (C D) BC D A gura a seguir ilustra uma rodada do SHA-1. para para para para 0 t 19 20 t 39 40 t 59 60 t 79

7.5

Cifras de bloco usando funes de hash: Aardvark

Ve rs

Esta Seo descreve uma cifra de bloco menos conhecida do que as anteriores. Embora no haja cifra de bloco com segurana demonstrvel baseando-se em funes de mo nica, h um mtodo para construir cifras de bloco usando cifras de 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. A Figura a seguir ilustra esta construo.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

120CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING) Construo 7.9 (Aardvark). Dadas uma cifra de uxo S , uma funo de hashing H e uma funo de hashing H com chave, pode-se construir uma cifra de bloco, com bloco do tamanho igual ao tamanho da sada de H .

Enck (m) retorna um par (c, c ), onde c = H (m) m S (Hk (c )).

c = Deck (c, c ) = c S (Hk (c ))

A demonstrao de segurana do Aardvark condicionada a quatro caractersticas de seus componentes: H fortemente resistente a colises: difcil encontrar x, y tais que H (x) = H (y ). H resistente a fraude existencial.

S resiste a ataques de expanso: difcil expandir qualquer uxo parcial de S . S e H so independentes:

O Teorema a seguir a demonstrao de segurana do Aardvark. A prova detalhada pedida no Exerccio 39.

Ve rs
7.6

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

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

O Orculo Aleatreo

Pr e

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

lim

Aps decriptar uma mensagem possvel realizar uma vericao adicional: c deve ser igual a H (m).

in ar

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

notas de aula verso 79 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

121

Ve rs

muito difcil encontrar uma demonstrao de segurana. Nestas situaes possvel usar uma metodologia menos rigorosa que o padro, mas que nos permite encontrar alguma demonstrao de segurana, ainda que usando hipteses que no podem ser concretizadas. importante frisar que o mtodo do orculo aleatreo no leva a demonstraes rigorosas como no modelo padro (onde no se usam orculos aleatreos), e que h exemplos de construes com demonstrao de segurana neste modelo que tornam-se inseguras quando o orculo aleatreo instanciado com uma funo de hashing independente de que funo de hashing seja escolhida. Seja F AB o conjunto de todas as funes com domnio A e contradomnio B . Na metodologia do orculo aleatreo, escolhemos uniformemente uma funo em F AB quando precisamos de uma funo de hashing. Evidentemente no podemos representar tal funo explicitamente, uma vez que h um nmero exponencial de funes. Podemos imaginar, no entanto, um simulador, que responde aleatoreamente quando perguntado a respeito de uma entrada x A, mas que sempre responde mesma pergunta com a mesma resposta. Normalmente o mtodo do orculo aleatreo visto como um meio termo entre a 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 no possa revelar a ningum esta escolha. Pode ser que Alice seja parte de uma banca avaliadora (e no possa divulgar seu voto antes que todos tenham votado), ou que esteja participando de uma licitao (e que a lei exija que as propostas sejam feitas em sigilo). A escolha de Alice pode ser vista como uma mensagem m de n bits (onde se l seu voto, ou sua proposta para a licitao). Alice no 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 f e publica y = f (m) para comprometer-se. Depois, quando revelar m, todos podero conferir que f (m) = y . A intuio nos diz que poderamos usar uma funo de hashing como f . No entanto, as propriedades de funes de hashing no so sucientes para 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 m.

Certamente, se f de mo nica, podemos calcular para ela um predicado hard-core.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

122CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING) Se presumirmos que f um orculo aleatreo, conseguiremos demonstrar o sigilo do protocolo: como f (m) um valor escolhido aleatoreamente, o adversrio no obtm dali qualquer informao. O melhor que pode fazer tentar adivinhar m, escolhendo aleatoreamente m e depois vericando se f (m ) = y atravs de uma consulta ao orculo. A probabilidade do adversrio sortear m = m 1/2n , desprezvel em |m|. O mtodo do Orculo Aleatreo difere do uso de funes pseudoaleatreas. Em ambos os casos, idealizamos um esquema ou protocolo presumindo que h uma funo f completamente aleatrea. Depois, para usar uma funo pseudoaleatrea F , trocamos f por F , mas somente alguns participantes tero acesso chave k . No entanto, a chave parte da funo: Fk funo de A em B , mas F uma famlia de funes. Assim, o adversrio no tem acesso descrio da funo; para usar o orculo aleatreo, trocamos f por uma funo de hashing real H . Esta funo no indexada, e estamos dando ento uma descrio sucinta completa da funo que ser usada na prtica (no h informao secreta).

O orculo aleatreo um modelo teoricamente muito poderoso: mostramos aqui que uma funo concebida como orculo aleatreo tambm de mo nica e resistente a colises. Resistncia a colises

Ve rs

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

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

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

Pr e

7.6.1

Propriedades do Orculo Aleatreo

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO

123

Teorema 7.12. Seja H um orculo aleatreo. Sejam tambm x escolhido do domnio de H com probabilidade uniforme e y = H (x) obtido por consulta ao orculo. Qualquer adversrio polinomial A, de posse de y poder obter x com probabilidade menor ou igual que uma funo desprezvel em n. Podemos construir, a partir de um orculo aleatreo, uma famlia indexada de funes de mo nica. Teorema 7.13. Se H um orculo aleatreo ento F , denida a seguir, uma funo de mo nica. Fk (x) = H (k ||x). 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

Ve rs

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

Em um trabalho apresentado na primeira Conferncia da ACM em Segurana de Computadores e Computadores no ano de 1993 [49], Mihir Bellare e Phillip Rogaway deram tratamento formal idia de funo verdadeiramente aleatrea usado anteriormente por Fiat e Shamir. O Captulo 13 do livro de Katz e Lindell [1] apresenta uma discusso bastante extensa sobre o modelo do Orculo Aleatreo.

1 Traduo livre. O original The formal proof of security in this extended abstract assumes that n is suciently large and that f is a truly random function.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

124CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

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)

onde s1 obtido usando Gen1 e s2 obtido usando Gen2 .

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

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. 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. Ex. 68 O Teorema 7.6 no tem demonstrao completa (leia o ltimo paragrafo da prova). Complete-a. 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, implementea, e depois implemente sua transformao de Merkle-Damgrd. Ex. 71 Implemente uma instancia da cifra Aardvark.

Ve rs

Ex. 72 Aardvark foi baseada em duas cifras, uma delas chamada LION. A cifra LION usa uma funo de hashing H resistente a colises e uma cifra de uxo S . Gen(1n ) gere k1 , k2 R { 0, 1 } . Enc(m): a mensagem dividida em partes esquerda (l) e direita (r), no necessariamente iguais (mas ambas devem ser menores do que n, o tamanho
n

Pr e

Ex. 66 Quantas tentativas algum deveria fazer para encontrar uma coliso em uma funo de hashing resistente a colises com sada de 256 bits, com probabilidade de sucesso maior ou igual que 3/4?

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

7.6. O ORCULO ALEATREO da chave) e calcula-se: r l r r S (l k1 ) l H (r) r S (l k2 )

125

Dec(c): o texto encriptado dividido em partes esquerda (l) e direita (r), da mesma forma que em Enc, e realiza-se o mesmo clculo feito em Enc, invertendo apenas a ordem das chaves: r l r A respeito da cifra LION, r S (l k2 ) l H (r) r S (l k1 )

a) Desenhe um diagrama ilustrando o funcionamento da cifra. c) Mostre um ataque de encontro no meio para esta cifra.

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

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

Ve rs

Ex. 76 Releia a descrio da cifra Aardvark, na Seo 7.5, e construa para ela uma demonstrao de segurana usando o mtodo do Orculo Aleatreo. Sua demonstrao cou mais simples que aquela j dada no texto (e que no depende do Orculo Aleatreo)?

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

126CAPTULO 7. RESUMOS CRIPTOGRFICOS (FUNES DE HASHING)

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 8

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.

Ve rs

Vrf recebe uma chave k , uma mensagem m, um rtulo t, e retorna um (signicando vlido) ou zero (signicando invlido). Denotamos v Vrfk (m, t).

Para todo n, para toda k gerada por Gen(1n ) e toda mensagem m, mandatrio que Vrfk (m, Mack (m)) = 1.

Quando para qualquer k , Mack somente for denido para mensagens de tamanho p(n) (onde p 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. Construo 8.2. Seja F uma funo pseudoaleatrea. Um esquema de autenticao de mensagens pode ser construdo da seguinte forma: 127

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

Pr e

A encriptao permite proteger mensagens de forma que no possam ser lidas por entidades no autorizadas. O conceito de segurana, no entanto, no se reduz privacidade apenas. Neste Captulo trataremos de autenticidade de mensagens: se Alice recebe uma mensagem supostamente enviada por Bob, como ela pode ter certeza de que Bob de fato o remetente?

lim

Cdigos de Autenticao de Mensagens

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

128

CAPTULO 8. CDIGOS DE AUTENTICAO DE MENSAGENS Gen(1n ) escolhe k uniformemente ao acaso de {0, 1}n . Mack (m) = Fk (m), desde que |m| = |k | = n.

Esta construo funciona apenas para mensagens de tamanho xo.

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. Experimento 8.3 (MAC_FORGE(, A, n)). Uma chave k gerada por Gen(1n ). O parmetro 1n enviado a A.

A, com acesso ao orculo Mack , gera o par (m, t). Seja Q o conjunto de mensagens que A enviou para o orculo. O resultado do experimento um se e somente se Vrfk (m, t) = 1 e m / Q.

o Ve rs

Pr e
D s Gen(1n )

lim
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 adaptativo de mensagem escolhida) se para todo adversrio polinomial A existe uma funo desprezvel negl tal que Pr[MAC_FORGE(, A, n) = 1] negl(n).

Teorema 8.5. A Construo 8.2 segura.

in ar
AMack

Vrfk (m, t) = 1 se e somente se |m| = |k | = |t| = n, e t = Mack (m). Em outros casos, Vrf retorna zero.

notas de aula verso 79 - Jernimo C. Pellegrini

8.1. SEGURANA DE CDIGOS DE AUTENTICAO DE MENSAGENS129 Demonstrao. Considere = (Gen, Mac, Vrf) e = (Gen , Mac , Vrf ) obtidos pela Construo 8.2, sendo que foi construdo com uma funo pseudoaleatrea, e em uma funo realmente aleatrea foi usada. Seja A um algoritmo polinomial e 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

o
T

Ve rs

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

Obtm t = h(m) via O;

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

Se h Fk pseudoaleatrea com k escolhida ao acaso, T se torna igual ao Experimento 8.3 com , e Pr[T (Fk , 1n ) = 1] = Pr[MAC_FORGE(, A, 1n )] = e(n).

Pr e
Ah (via T) 1n m, t

1 . 2n Isso porque se uma mensagem m no est na lista Q de mensagens consultadas o valor t = f (m) est uniformemente distribudo em {0, 1}n . possvel construir um teste polinomial T que distingue funes pseudoaleatreas de funes verdadeiramente aleatreas com a mesma probabilidade de sucesso do adversrio em MAC_FORGE (ou seja, e(n)). Se e(n) no for desprezvel, conseguiremos distinguir funes pseudoaleatreas de aleatreas mas isso impossvel pela denio de funo pseudoaleatrea. O algoritmo T simula o Experimento 8.3, observando quando A tem sucesso conseguindo um rtulo vlido. Suponha que queiramos distinguir uma funo h. T recebe 1n e acesso a h : {0, 1}n {0, 1}n via orculo O. test executa A(1n ). Cada vez que A pedir a seu orculo para calcular o MAC de uma mensagem m, T usa O para obter t = h(m), e retorne t para A. Em outras palavras, T intermedia o acesso de A ao orculo do Experimento: Pr[MAC_FORGE( , A, n) = 1]

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

130

CAPTULO 8. CDIGOS DE AUTENTICAO DE MENSAGENS

Se h realmente aleatrea, T igual ao Experimento 8.3 com , e Pr[T (h, 1n ) = 1] = Pr[MAC_FORGE( , A, 1n )] Assim, 1 . 2n

Pr [T (Fk , 1n ) = 1] Pr [T (h, 1n ) = 1] e(n) Como F pseudoaleatrea, existe negl tal que e(n) negl(n) + 2n tambm desprezvel.
1 2n

8.2

Extendendo MACs para tamanho varivel de mensagem CBC-MAC

8.3

No CBC-MAC o vetor de inicializao 0n ; No CBC-MAC apenas a sada do ltimo bloco usada (na cifra de bloco a sada de todos os blocos era concatenada). As sadas dos outros blocos no podem ser mostradas, porque isto tornaria a construo insegura. Construo 8.6 (CBC-MAC com entrada de tamanho xo). Seja F uma funo pseudoaleatrea. Para um polinmio p(), as funes a seguir so uma construo MAC. Gen(1n ) escolhe k R {0, 1}n Mack (m) quebra a mensagem em blocos de tamanho |m|/q , onde q = p(n) o tamanho (xo) das mensagens. Em seguida, aplica Fk no modo CBC (veja Seo 5.3.2), mas usando 0n como vetor de inicializao e dando como sada apenas o resultado da encriptao do ltimo bloco. Vrfk (m, t) verica se Mack (m) = t

Ve rs

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

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.

lim

in ar
1 . 2n negl(n) e e(n)

notas de aula verso 79 - Jernimo C. Pellegrini

8.3. CBC-MAC

131

8.3.1

Mensagens de tamanho varivel

Da forma como descrevemos na ltima Seo, o CBC-MAC no seguro para autenticar mensagens de tamanho varivel. Teorema 8.7. A Construo 8.6 no segura para mensagens de tamanho varivel. Demonstrao. Seja = (Gen, Mac, Vrf) como na Construo 8.6. Sejam m1 , m2 duas mensagens com tamanho igual ao tamanho do bloco usado em Enc, e sejam M1 , M2 os respectivos rtulos. Dados (m1 , M1 ), (m2 , M2 ), um adversrio quer calcular o rtulo M3 de x = m1 ||z . Sabemos que Mi = Enck (mi ) e o rtulo de m1 ||z deve ser Enck (M1 z ). Construmos agora a mensagem y = m2 ||(M1 z M2 ). Seu rtulo igual ao de x, e assim o adversrio pode fraudar rtulos.

Ve rs

Para usar o CBC-MAC em mensagens de tamanho varivel, h trs modicaes 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)

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

132

CAPTULO 8. CDIGOS DE AUTENTICAO DE MENSAGENS

Usar uma construo semelhante ao CBC-MAC de tamanho xo, mas prexando a mensagem m com |m| (o seu tamanho).

Ve rs

Mudar a construo para que duas chaves sejam geradas (k1 e k2 ). Ao calcular o MAC, primeiro usamos o CBC-MAC usando k1 , obtendo como resultado t . Depois calculamos t = Fk2 (t ) e o rtulo t.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

8.4. HMAC

133

No demonstraremos a segurana destas trs construes.

8.4

HMAC

H uma maneira diferente de obter um cdigo de autenticao usando resumos criptogrcos. Para gerar um rtulo para uma mensagem m e chave k , poderamos simplesmente concatenar a m e k , e calcular o resumo H s (m||k ). Esta ideia, se implementada diretamente desta forma, no segura. A Construo 8.8 descreve a implementao de MAC usando resumos de forma segura. Construo 8.8 (HMAC). Seja (Gen , h) uma funo de hash de tamanho xo 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 cdigo de autenticao de mensagens. Gen(1n ): use Gen(1n ) para obter uma chave k , e tambm escolha k R {0, 1}n . Retorne s, k .

Ve rs
Mac(s,k) (m) retorna

Vrf(s,k) (m, t) simplesmente verica se t = Mac(s,k) (m).

A constante opad igual ao valor 36 repetido quantas vezes quanto for necessrio, e a constante ipad obtida da mesma forma, repetindo o valor 5C . A Figura a seguir ilustra esta Construo.

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

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

134

CAPTULO 8. CDIGOS DE AUTENTICAO DE MENSAGENS

Quando a Construo 8.8 usada para obter um algoritmo prtico, seu nome normalmente HMAC- seguido do nome da funo. Por exemplo, HMACMD5 e HMAC-SHA1 so os algoritmos construdos usando as funes MD5 e SHA-1. Construes do tipo HMAC so largamente utilizadas na prtica.

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. Experimento 8.9 (PRIV_CCA(, A, n)).

Ve rs

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

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

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

8.5. APLICAO: SEGURANA CCA D 1n m0 , m1 b R { 0, 1 } n k R { 0, 1 } Enck (mb ) b AEnck ,Deck

135

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

1 + negl(n). 2

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

Ve rs
Notas Exerccios

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

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

Ex. 77 Alm do CBC h algum outro modo de encriptao em bloco que possa ser usado para construir MACs? Ex. 78 Suponha que ao invs da Construo HMAC descrita neste Captulo, usemos o seguinte:

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

Pr e

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,

Depois, decifra c

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

136

CAPTULO 8. CDIGOS DE AUTENTICAO DE MENSAGENS

Construo 8.13 (MAC furado). Seja (Gen , H s ) uma funo de hashing obtida via transformao de Merkle-Damgrd. Ento construmos Gen(1n ) (sem mudanas) Vrfk (m, t) verica se mack (m) = t. Mostre que esta construo no segura. Mack (m) = H s (k ||m)

Ex. 79 Ao construir CBC-MAC para mensagens de tamanho varivel, mencionamos que podemos usar uma construo semelhante ao CBC-MAC de tamanho xo, mas prexando a mensagem m com |m| (o seu tamanho). Mostre que se o tamanho da mensagem fosse ps-xado (includo aps a mensagem), a construo no seria segura.

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 9

Criptograa Assimtrica

Ve rs
9.1 9.2

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.

Estabelecimento de chaves

A situao descrita no incio deste Captulo em que Alice e Bob querem se comunicar mas no tem um canal seguro pode ser remediada usando um protocolo 137

(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 problema, 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 [50] 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 o mais conhecido provavelmente o RSA de Rivest, Shamir e Adelman.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

138

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

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

1. Duas entidades A e B , ambas conhecendo n, executam o protocolo . Todas as mensagens trocadas entre A e B so guardadas em uma lista M . Ambos devem calcular uma chave k (que no includa na lista M ).

3. A lista de mensagens M e a chave k so enviadas ao adversrio A. 4. A envia um bit b

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

Pr e

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

Ve rs

9.3

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

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

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.

Protocolo Die-Hellman para estabelecimento de chaves

lim

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

in ar

para que ambos usem um canal inseguro (aberto) para estabelecer uma chave privada a ser usada em suas comunicaes, sem que outros tenham acesso chave. A comunicao subsequente poder se dar usando apenas esta chave, e o canal seguro estar, ento, estabelecido. Deniremos segurana para protocolos de estabelecimento de chaves antes de apresentar o protocolo de Die e Hellman.

notas de aula verso 79 - Jernimo C. Pellegrini

9.3. PROTOCOLO DIFFIE-HELLMAN PARA ESTABELECIMENTO DE CHAVES139 B escolhe y R Zq e calcula h2 = g y . B envia h2 para A e determina a chave secreta kB = hy 1.

Ao nal da execuo do protocolo, A como B tem chaves secretas kA e Estas chaves so iguais, porque
y x xy kA = hx 2 = (g ) = g x y xy kB = hy 1 = (g ) = g .

Denio 9.4 (Problema de Die-Hellman). Dados um grupo cclico G e um gerador g gerados por um algoritmo G (1n ), denotamos DHg (a, b) = g ab .

Ve rs

O problema Die-Hellman computacional (ou CDH, Computational DieHellman) consiste em calcular DHg (a, b) dados g a e g b escolhidos ao acaso em G. O problema Die-Hellman decisional (ou DDH, Decisional Die-Hellman) consiste em reconhecer se um elemento x foi escolhido ao acaso em G ou se igual a DHg (a, b) para algum a e algum b gerados aleatoreamente. Dizemos que CDH e DDH so difceis com relao a um algoritmo G se no houver algoritmo polinomial que os resolva quando os grupos so gerados por G.

H algoritmos G para os quais no se conhece algoritmo 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 protocolo Die-Hellman (Construo 16.8) seguro de acordo com a Denio 9.9 quando o grupo G usado.

Pr e

importante observar que o protocolo no especica nada a respeito do grupo, exceto que q deve ter n bits. Com isso possvel usar diferentes grupos na construo prtica do protocolo. Um exemplo o EC-DH, onde so usados pontos em uma curva elptica. Um requisito evidente do 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 protocolo.

lim

in ar
B.

A recebe h2 e determina a chave secreta kA = hx 2.

notas de aula verso 79 - Jernimo C. Pellegrini

140

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

Demonstrao. Supomos que o grupo G usado no experimento 9.1 foi gerado por um algoritmo G . O bit b escolhido ao acaso, ento Pr[b = 0] = 1/2.

(G, q, g, h1 , h2 , g xy ), ou

(G, q, g, h1 , h2 , k ), sendo que k foi escolhida aleatoreamente.

Pr A(G, q, g, g x , g y , g xy ) = 1 Pr A(G, q, g, g x , g y , g z ) = 1

Pr KE_EAV(, A, n) = 1 1 1 = Pr KE_EAV(, A, n) = 1|b = 1 + Pr KE_EAV(, A, n) = 1|b = 0 2 2 1 1 x y xy = Pr A(G, q, g, g , g , g ) = 1 + Pr A(G, q, g, g x , g y , g z ) = 0 2 2 1 1 x y xy = Pr A(G, q, g, g , g , g ) = 1 + Pr 1 A(G, q, g, g x , g y , g z ) = 1 2 2 1 1 x y xy = + Pr A(G, q, g, g , g , g ) = 1 Pr A(G, q, g, g x , g y , g z ) = 1 2 2 1 1 + Pr A(G, q, g, g x , g y , g xy ) = 1 Pr A(G, q, g, g x , g y , g z ) = 1 . 2 2 Como g gerador de G, g z distribudo uniformemente no grupo se z for uniformemente distribudo em Zq . Se o problema Die-Hellman decisional difcil para G , ento existe negl desprezvel tal que

Pr e

lim

Distinguir entre ambos exatamente resolver o problema Die-Hellman decisional:

Ve rs

Conclumos que Pr KE_EAV(, A, n) = 1

1 1 + negl(n). 2 2 Note que esta demonstrao parece ter um pequeno problema: quando b = 0, o adversrio recebe um elemento aleatreo do grupo G, e no uma cadeia aleatrea de bits. Para que a diferena que clara, suponha que tenhamos escolhido o grupo Zq e que a ordem do grupo seja q = 257, que representado por 100000001 em binrio. Apenas um elemento do grupo tem o primeiro bit igual a um: 256 = 100000000. Este no um problema com a demonstrao, mas um fato a que o implementador deve dar ateno: no se pode usar nmeros diretamente para representar elementos de G; ao invs disso deve-se usar alguma representao dos elementos do grupo como cadeias de bits, que preserve a distribuio uniforme.

in ar
negl(n).

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

notas de aula verso 79 - Jernimo C. Pellegrini

9.4. CRIPTOSSISTEMAS ASSIMTRICOS

141

9.3.1

Ataque de homem-no-meio

Apesar de seguro de acordo com a Denio 9.9 o Die-Hellman, como proposto originalmente, suscetvel a um ataque de homem-no-meio:

A repassa a descrio alterada (G, q, g, h3 ) para B .

yz B escolhe y , computa h2 e determina kB = hy envia de volta 3 = g y h2 = g . yz A agora tem a chave kB = hz 2 =g .

A impede que h2 siga para A, e envia h3 para A.


xz A recebe h3 e computa kA = hx 3 =g . xz A tem tambm a chave kA = hz 1 =g .

Por ser vulnervel a este ataque o protocolo Die-Hellman no usado na prtica em sua formulao original, mas ainda assim a base para diversos outros protocolos.

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

Gen, que aceita um parmetro de segurana n e gera um par de chaves (pk, sk ) A primeira chamada de chave pblica e a segunda de chave secreta. Enc, randomizado, que aceita uma chave pblica pk , uma mensagem m e calcula um texto cifrado c. Dec, determinstico, que aceita uma chave privada sk , um texto cifrado c e retorna uma mensagem m.

Requeremos por hora1 que Decsk (Encpk (m)) = m. Enquanto para criptossistemas simtricos o sigilo perfeito implica em problemas prticos, para os criptossistemas assimtricos o sigilo perfeito absolutamente impossvel.
adiante admitiremos que Dec falhe com probabilidade desprezvel.

Pr e

lim

in ar

O adversrio A recebe a descrio (G, q, g, h1 ) vinda de A e calcula z R Zq , h3 = g z .

notas de aula verso 79 - Jernimo C. Pellegrini

142

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

9.4.1

Funes de mo nica com segredo

Denio 9.7 (Permutao de mo nica com segredo). Uma permutao de mo nica com segredo uma tupla de algoritmos (Gen, Samp, f, Inv): Gen retorna duas chaves, I e td.

(Gen , Samp, f ) uma famlia de permutaes de mo nica

Invtd (fI (x)) = x.

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 pk, sk . 2. O adversrio recebe pk e acesso de orculo a Decsk . 3. A retorna duas mensagens, m0 , m1 , do mesmo tamanho.

5. A envia um bit b

Ve rs
9.6

6. O resultado do experimento um se b = b 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 A existe uma funo desprezvel negl tal que 1 Pr[PUB_CCA(, A, n) = 1] + negl(n). 2

O criptossistema de Elgamal tem como base o problema DDH. Construo 9.10 (Criptossistema Elgamal).

o
Elgamal

4. Um bit aleatreo b escolhido e mk encriptada com Encsk e enviada a A.

Pr e

lim

Para todo par (I, td) produzido por Gen, o segredo td deve permitir inverter f ecientemente usando o algoritmo Inv:

in ar

A Denio 9.6 diferente da Denio 2.1: o algoritmo Gen no cria apenas uma chave, mas duas. Uma usada para encriptar e outra para decriptar mensagens.

notas de aula verso 79 - Jernimo C. Pellegrini

9.6. ELGAMAL

143

Enc dada a chave pblica pk = G, q, g, h e a mensagem m G, escolha y R Zq e devolva g y , hy m. Dec: dada a chave sk = G, q, g, x , e o texto cifrado c = c1 , c2 , a funo Dec retorna c2 . cx 1 A funo Dec opera corretamente: c2 hy m = cx (g y )x 1 (g x )y m = xy g g xy m = xy g =m.

Ve rs
Para decriptar (6, 12):

Encpk (15) = (53 , 123 15)

Exemplo 9.11 (Operao do criptossistema de Elgamal). Comeamos supondo que G escolheu G = Z17 com g = 5. Escolhemos x = 9, e portanto h = 59 (mod 17) = 12. pk = (G, 17, 5, 12) sk = (G, 17, 5, 9). Para encriptar 15, escolhemos y = 3 e (mod 17) = (6, 12)

Decsk (6, 12) =

Uma caracterstica notvel do criptossistema de Elgamal que ele no determinstico (um elemento y escolhido aleatoreamente no procedimento de encriptao). Outro fato importante que no Elgamal, a mensagem um elemento de um grupo, e o texto encriptado consiste de dois elementos. Dizemos que o Elgamal tem um fator de expanso de dois para um. Teorema 9.12. Se o problema DDH for difcil para G , ento o criptossistema de Elgamal (Construo 16.9) tem segurana contra ataques de texto cifrado conhecido.

Pr e
12 69 (mod 17) = 15.

lim

in ar

Gen(1n ): use G (1n ) para escolher um grupo cclico G com ordem q , com gerador g , sendo que q representvel com n bits. x R Zq h gx A chave pblica G, q, g, h . A chave privada G, q, g, x .

notas de aula verso 79 - Jernimo C. Pellegrini

144

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

Teorema 9.13. O criptossistema Elgamal homomrco para multiplicao em M e C .

O criptossistema mostrado a seguir foi proposto por Michael Rabin em 1979. Em essncia, encriptar no Rabin elevar ao quadrado, e decriptar calcular raiz mdulo N . Construo 9.14 (Criptossistema de Rabin).

Gen: Gere dois primos grandes e diferentes p, q tais que p, q 3 (mod 4). Seja N = pq . A chave privada sk (p, q ), e a chave pblica pk N .

Pr e
x r1 x r1 (mod p), (mod p), (mod p), (mod p), x r1 x r1 x 1 x 1 (mod 3), (mod 3), (mod 3), (mod 3), x1 x1

Dados primos p, q com N = pq , e y = x2 (mod N ), computar a raiz a fcil quando se tem a fatorao de N , mas difcil caso contrrio. De fato, no conhecemos algoritmo polinomial para computar tais razes sem conhecer a fatorao de N . No entanto, sabendo que N = pq podemos determinar y (mod pq ): Calculamos r1 = y (mod p) e r2 = y (mod q ). Estas razes podem ser calculadas ecientemente quando p, q 3 (mod 4). As quatro razes quadradas de y mdulo N podem ento ser encontradas resolvendo-se os quatro sistemas, que podem ser resolvidos usando o Teorema Chins do resto (Teorema B.21): (1) (2) (3) (4) x r2 x r2 x r2 x r2 (mod q ), (mod q ), (mod q ), (mod q ).

Ve rs
(1)

Exemplo 9.15 (Encriptando e decriptando com Rabin). Sejam p = 3 e q = 7. Temos N = 21. Para encriptar m = 11, calculamos 112 (mod 21) = 121 (mod 21) = 16. Para decriptar, calculamos r1 = 16 (mod 3) = 1 r2 = 16 (mod 7) = 4.

Resolvemos o sistema x4 x 4 x4 x 4 (mod 7) (mod 7) (mod 7) (mod 7). (2)

o
(3) (4)

lim

Encpk (m) = m2 (mod N ) Decsk (c) = c (mod N )

in ar

9.7

Criptossistema de Rabin

notas de aula verso 79 - Jernimo C. Pellegrini

9.7. CRIPTOSSISTEMA DE RABIN

145

As solues para este sistema so 4, 10, 11, 17 note que o 11 est entre elas. A segurana do criptossistema de Rabin se sustenta na suposio de que um problema (encontrar a raiz quadrada de um nmero mdulo N sem sua fatorao) seja difcil. Reduziremos este problema ao de quebrar o criptossistema (ou seja, mos traremos que se o Rabin puder ser quebrado, ento podemos encontrar x (mod N ) sem saber a fatorao de 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 . fcil vericar agora o que j mencionamos: um criptossistema assimtrico como o Rabin no pode ter sigilo perfeito: a chave pblica N contm toda a informao necessria para obter a chave privada (p, q ): basta fatorarmos N . Acontece que sabemos que no conhecido algoritmo eciente para obter a fatorao de N . Experimento 9.16 (PUB_EAV(A, , n)). 1. O par de chaves (pk, sk ) gerado por Gen(1n ). 2. Envie pk para A.

3. A devolve m0 , m1 , ambas de mesmo tamanho.

4. Um bit b escolhido aleatoreamente e uma das mensagens encriptada: c Encsk (mb ). 5. c enviada a A 6. Aenvia b de volta

7. Se b = b 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 A existe uma funo desprezvel negl() tal que

Ve rs

1 + negl(n). 2 Esta denio difere daquela semelhante para criptossistemas simtricos porque o adversrio recebe a chave pblica pk . Isso signica que A pode encriptar mensagens vontade e que esta denio ento equivalente denio de segurana CPA. Pr[PUB_EAV(A, , n) = 1] 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.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

146

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

9.8

RSA

e portanto, pela denio de congruncia, existe algum inteiro k tal que ab = k(N ) + 1.

Conseguiremos ento encriptar (mb ) e decriptar (ca ) obtendo a mensagem original4 :

Pr e
(mb )a mk(N )+1 (m
k (N ) k

1 m m

Ve rs
Gen(1n ):

O valor de (N ) no RSA sempre (p 1)(q 1), porque N o produto dos dois primos p e q . A Construo 9.19 descrita muitas vezes como a verso de livro-texto do RSA, por ser normalmente usada em livros didticos na descrio do criptossistema RSA. Esta construo, no entanto, determinstica e consequentemente insegura. Construo 9.19 (Criptossistema RSA (verso de livro-texto)).

2 Uma unidade em um anel um elemento que tem inverso multiplicativo. Um grupo de unidades formado pelas unidades do anel com sua operao multiplicativa. Veja a Denio B.76 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).

escolha primos p = q com n bits cada N pq escolha aleatoreamente 1 < b < (N ), coprimo com N a b1 (mod (N )) retorne (N, a), (N, b)

lim
(mod N ) (mod N ) ) m (mod N ) (mod N ).

ab 1

(mod (N ))

in ar

O RSA provavelmente um dos criptossistemas mais conhecidos. A funo de encriptao no RSA funciona em ZN elevando a mensagem a um expoente b (ou seja, c = mb (mod N )), e decriptar o processo contrrio: 1 calculamos m = cb . Assim, temos dois expoentes: b pblico (para que todos possam encriptar) e a = b1 privado (para que apenas o destinatrio possa decriptar). Para que estas operaes funcionem necessrio escolher os expoentes de um conjunto com uma propriedade especial: queremos que b tenha um inverso, por isso escolhemos tanto a como b de um grupo de unidades2 . Se escolhermos o grupo de unidades3 Z (N ) , vemos que

notas de aula verso 79 - Jernimo C. Pellegrini

9.8. RSA Encpk (m) = Enc Decsk (c) = Dec


N,b

147 (m) = mb (mod N ).

N,a

(c) = ca (mod N ).

Exemplo 9.20. Sejam p = 101, q = 3. Temos N = 303 e (N ) = 200. Queremos 1 < b < 200 coprimo com 200 = 23 52 , e escolhemos b = 7 (que no divisvel por 2 nem por 5, e portanto pertence a Z 200 ). Assim, a = 71 =7 Temos ento pk = (N, b) = (303, 7) sk = (N, a) = (303, 143)
1

(mod (N )) (mod 200) = 143.

Encpk (53) = 537 Para decriptar 37,

Decsk (275) = 275143

Da mesma forma que identicamos a essncia da diculdade do protocolo Die-Hellman, tambm o faremos como RSA, denindo o problema RSA. Denio 9.21. Seja N o produto de dois primos, ambos com n bits. Seja e > 0 tal que gcd(e, N ) = 1 e x Z N . O problema RSA computacional consiste em calcular y = x1/e (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 N , basta ento calcular (N ) = (p 1)(q 1), calcular d = e1 (mod (N )) e y = xd (mod N ) ( importante observar que (N ) e e1 no so pblicos, e devem ser calculados por um adversrio que pretenda quebrar o RSA).

Ve rs
9.8.1
5O

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).
algoritmo extendido de Euclides dado no Apndice B

Pr e
(mod 303) = 275.

Para encriptar 53 (que pertence a Z 303 ), fazemos

(mod 303) = 53.

lim

in ar

O clculo de b1 pode ser feito usando o algoritmo estendido de Euclides5 . Aparentemente as mensagens (e consequentemente os textos encriptados) devem pertencer ao grupo de unidades Z N , mas um Exerccio no nal deste captulo pede a demonstrao de que o sistema funciona mesmo quando m / Zn \ Z N.

notas de aula verso 79 - Jernimo C. Pellegrini

148 Mdulo comum

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

c1 = mb1 c2 = m
b2

(mod N ) (mod N ).

Como b1 e b2 so co-primos com N , so tambm co-primos entre si, e existem x, y tais que xb1 + yb2 = 1, facilmente computveis. Um adversrio que conhea c1 , c2 e N pode decifrar a mensagem porque
y xb1 yb2 cx m = mxb1 +yb2 = m1 = m 1 c2 = m

b e m pequenos

Se b usado na chave pblica e m so pequenos um adversrio pode decriptar m. Por exemplo, se b = 5 e m < N 1/5 , no h reduo modular na encriptao porque m5 < N . Observando c = m5 (mod N ), e sabendo que b e m so pequenos, um adversrio pode calcular c1/5 em Z (sem aritmtica modular) e obter m.

9.8.2

Ve rs

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 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 Enc a seguir obteremos uma verso do RSA com segurana IND-CCA-2. O algoritmo Enc usa duas funes de hash, G e H . Zeros so adicionados mensagem m para que tenha tamanho xo; r escolhido aleatoreamente. Encpk (m) = Encpk (m G(r)||r H (m G(r)))

Observe que o algoritmo original usado pelo novo. A prxima gura ilustra o algoritmo e deixa claro tambm que sua estrutura a de uma rede de Feistel, para que possamos calcular a inversa ao decriptar a mensagem.

Verso segura do RSA: OAEP

Pr e

lim

in ar
(mod N ).

Suponha que ao distribuir chaves para um grupo de pessoas usemos sempre o mesmo mdulo N : a i-sima pessoa recebe (ai , N ) e (bi , N ). Como ai bi 1 (mod (N )), qualquer uma destas pessoas pode fatorar N e consequentemente calcular aj a partir de bj . Ainda que se suponha que no grupo com estas chaves haja 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 m enviada a duas pessoas com chaves (b1 , N ) e (b2 , N ):

notas de aula verso 79 - Jernimo C. Pellegrini

9.9. GOLDWASSER-MICALI

149

9.9

Goldwasser-Micali

O criptossistema de Goldwasser-Micali fundamenta-se na diculdade do problema do resduo quadrtico. Teorema 9.22. Seja p primo. Se y resduo quadrtico mdulo p, ento y tem exatamente duas razes quadradas mdulo p. Demonstrao. Seja x tal que (x)2 = y . Suponha que x x (mod p). Teramos 2x 0 (mod p), e p|2x. Como p primo, teramos que p|2 ou p|x. Mas p > 2 e p > x, e portanto x x (mod p).

Ve rs

Consequentemente y deve ter necessariamente duas razes quadradas distintas mdulo p.

Teorema 9.23. Seja n = pq , com p e q primos. Ento y resduo quadrtico mdulo n se e somente se y (mod p) resduo quadrtico mdulo p e y (mod q ) resduo quadrtico mdulo q . Demonstrao. O resultado segue imediatamente do Teorema B.16.

Teorema 9.24. Seja n = pq , com p e q primos. Se y resduo quadrtico mdulo n, ento y tem exatamente quatro razes quadradas mdulo n.

Pr e

lim

Notamos tambm que a funo G deve ser usada de forma a expandir os k bits de r para n bits, e que H deve comprimir n bits em k bits. A segurana IND-CCA-2 do esquema depende de tratarmos as duas funes de hash como orculos aleatreos. Informalmente, podemos fazer algumas observaes: se as duas funes de hashing G e H tem sada indistinguvel de bits aleatreos e resistncia de segunda pr-imagem, ento m G(r) deveria ter o mesmo efeito que o one-time pad. Mas usar apenas este valor (m G(r)) no daria certo, porque no seria possvel decriptar. Por isso usamos tambm a segunda funo H .

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

150

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

+ Denio 9.25. O conjunto Jn contm os nmeros x Z n tais que

x = +1. n

+ Observe que Jn contm os elementos do grupo de unidades Z n com smbolo de Jacobi igual a um mdulo n.

Demonstrao. Seja g uma raiz primitiva (e portanto pertencente a Zp ). O conjunto Zp { g 0 , g 1 , . . . , g p 2 } . Elevando todos os elementos ao quadrado, obtemos

Cada quadrado aparece duas vezes neste conjunto, e h nele metade dos elementos de Zp . Teorema 9.27. Seja n = pq , com p e q primos. Exatamente metade dos + elementos de Jn resduo quadrtico mdulo n. Demonstrao. H (p 1)/2 resduos quadrticos em Zp e (q 1)/2 resduos quadrticos em Zq . Como p e q so primos, isso signica que h exatamente6 (p 1)/2 nmeros tais que (x|p) = +1,

Ve rs
6 Lembre-se

(p 1)/2 nmeros tais que (x|p) = 1, (q 1)/2 nmeros tais que (x|q ) = +1, e (q 1)/2 nmeros tais que (x|q ) = 1.

O smbolo de Jacobi (x|pq ) ser um quando x p x q = +1,

ou seja, quando (x|p) e (x|q ) tiverem o mesmo sinal. Isso acontece exatamente metade das vezes. Temos ento, em Z pq : 1/2 de nmeros com (x|pq ) = 1;
de que tanto p como q so mpares, por isso as quantidades listadas so inteiras.

Pr e

{ g 0 , g 2 , . . . , g p 3 , g 0 , g 2 , . . . , g p 3 } .

lim

Teorema 9.26. Seja p primo. Ento exatamente metade dos elementos em Zp resduo quadrtico.

in ar

Demonstrao. Sejam a, b as razes quadradas de y mdulo p, e c, d as razes quadradas de y mdulo q . Pelo Teorema B.16, temos que y (mod p) y (mod q ) y (mod pq ). As razes de y mdulo p devem ser distintas das razes de y mdulo q , porque p e q so primos.

notas de aula verso 79 - Jernimo C. Pellegrini

9.9. GOLDWASSER-MICALI

151

1/4 de nmeros tais que (x|p) = (x|q ) = 1. No so resduos quadrticos mdulo pq , mas tem (x|pq ) = +1; 1/4 de nmeros tais que (x|p) = (x|q ) = +1. Estes so resduos quadrticos mdulo pq .

+ Se escolhermos uniformemente um elemento x R Jn , a probabilidade de x ser resduo quadrtico ser 1/2. Como no se conhece algoritmo eciente para determinar, sem a fatorao de n, se x de fato resduo quadrtico mdulo n, temos uma funo de mo nica.

Conjectura 9.29. Para qualquer algoritmo randomizado polinomial A, quaisquer primos p, q com k bits cada, x tal que (x|pq ) = +1, qualquer polinmio positivo p(), a probabilidade de A determinar corretamente se x resduo quadrtico mdulo pq desprezvel em k . No entanto, se conhecermos os fatores p e q , podemos computar os smbolos de Jacobi (x|p) e (x|q ) e vericar se so ambos positivos ou ambos negativos. Desta forma podemos determinar se (x|pq ) resduo quadrtico ou no. O criptossistema de Goldwasser-Micali fundamenta-se no problema da residuosidade quadrtica. Construo 9.30 (Criptossistema de Goldwasser-Micali). Gen(1k ): escolha aleatoreamente dois primos p e q com k bits cada. Escolha tambm x tal que x x = = 1. p q A chave pblica (x, n). A chave privada (p, q ).

Ve rs
mi = 0 1

Enc(x,n) (m): a mensagem m interpretada como uma sequncia de bits mi . Para cada bit mi da mensagem, escolha a R Z n e calcule ci = a2 xmi

Decp,q (c): o texto c interpretado como uma sequncia de bits ci . Para cada bit ci , se ci resduo quadrtico se ci caso contrrio. (mod n),

Pr e

lim

Denio 9.28 (Problema da residuosidade quadrtica). O problema da re+ , se x resduo siduosidade quadrtica consiste em, dados n = pq e x Jn quadrtico mdulo n.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

152

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

Teorema 9.31. A funo Enc no criptossitema de Goldwasser-Micali homomrca para multiplicao em C e soma em M.

Demonstrao. Sejam m0 e m1 duas mensagens, com Encpk (m0 ) = c0 e Encpk (m1 ) = c1 . Ento c0 c1 = a2 xm0 b2 xm1 = a2 b2 xm0 +m1

= (ab)2 xm0 +m1 , que um possvel valor para Encpk (m0 m1 ).

Notas

Ve rs
7 Uma

O criptossistema Elgamal foi criado em 1985 por Taher Elgamal [51], e da mesma forma que o RSA, tornou-se um dos criptossistemas assimtricos mais usados em aplicaes prticas. Michael Rabin publicou seu criptossistema em 1979 em um relatrio tcnico do MIT [52]. O criptossistema RSA foi elaborado por Ronald Rivest, Adi Shamir e Len Adelman em 1978 [53]. John Talbot e Dominic Welsh apontam [54]7 que outro criptossistema, semelhante ao RSA, j havia sido descoberto por James Ellis e Cliord Cocks em 1973: em 1969 Ellis teria chegado denio de funo de mo nica, mas somente em 1973 Cocks teria conseguido usar a denio na construo de um criptossistema assimtrico (que foi chamado de criptossistema no-secreto, porque no havia a necessidade de transmisso de chaves secretas). Uma anlise cuidadosa de ataques ao RSA e medidas preventivas feita no livro de Song Yan [56]. O esquema OAEP foi desenvolvido por Mihir Bellare e Phillip Rogaway [57], e combina ecincia e segurana demonstrvel. possvel demonstrar que se uma mensagem for codicada com OAEP antes de ser encriptada com o RSA, o resultado um criptossistema CCA-seguro. Victor Shoup [58] mostrou que a demonstrao de segurana do OAEP no vlida. Shoup props um novo esquema, OAEP+, um pouco mais complexo, com nova demonstrao de segurana. A demonstrao dada por Shoup bastante interessante e instrutiva diferentes experimentos (chamados de jogos

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

Pr e

lim

in ar

Por se basear no problema do resduo quadrtico, no h a necessidade de demonstrar segurana de bit (todo bit encriptado seguro, porque cada um tratado individualmente). Este criptossitema, no entanto, no eciente no que tange ao espao utilizado: cada bit do texto claro representado como um nmero com k bits no texto encriptado. O criptossistema de Goldwasser-Micali tem a propriedade de encriptao homomrca, alm de ser aleatorizado.

notas de aula verso 79 - Jernimo C. Pellegrini

9.9. GOLDWASSER-MICALI

153

Exerccios

Ex. 81 O que acontece se usarmos o RSA para encriptar uma mensagem m tal que m Z(N ) \ Z (N ) ? Ex. 82 Prove o Teorema 9.13.

Ex. 83 Que verso do RSA tem propriedade de encriptao homomrca? Ex. 84 Descreva detalhadamente como decriptar mensagens usando o OAEP. Ex. 85 No Teorema 9.24, mencionamos que se y resduo quadrtico mdulo pq , as razes quadradas de y mdulo p e mdulo q devem ser distintas porque p e q so primos. Mostre que isso verdade. Ex. 86 Implemente o criptossistema de Elgamal. Ex. 87 Implemente o criptossistema de Rabin.

Ve rs

Pr e

lim

Ex. 80 Mostre como generalizar o protocolo Die-Hellman de distribuio de chaves para um nmero arbitrrio de participantes. Qual o custo computacional da sua construo, comparado com o do Die-Hellman para dois participantes?

in ar

no artigo de Shoup) so propostos, cada um sendo uma pequena variante do anterior. Eiichiro Fujisaki e outros [59] mostraram que o OAEP original garante segurana IND-CCA-2 apenas em algumas situaes, mas dentre elas est o uso do criptossistema RSA. O criptossistema de Sha Goldwasser e Silvio Micali foi publicado em 1982 [9]. Foi o primeiro criptossistema probabilstico, e tambm um criptossistema homomrco.

notas de aula verso 79 - Jernimo C. Pellegrini

154

CAPTULO 9. CRIPTOGRAFIA ASSIMTRICA

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 10

Assinaturas Digitais

Ve rs

Denio 10.1 (Esquema de assinaturas). Um esquema de assinaturas consiste de trs funes (Gen, Sign, Vrf) computveis em tempo polinomial: Gen(1n ) cria um par de chaves (pk, sk ). Dizemos que pk a chave pblica e que sk a chave secreta (ou privada). Ambas as chaves devem ter tamanho no mnimo igual a n, e deve ser possvel determinar n apenas inspecionando pk ou sk .

Signsk (m) assina a mensagem m usando a chave sk , retornando uma assinatura .

Vrfpk (m, ) retorna um (signicando vlida) ou zero (signicando invlida).

necessrio que para todo n, para todo par (pk, sk ) gerado por Gen(1n ) e toda mensagem m, Vrfpk (m, Signsk (m)) = 1. 155

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 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 negar a assinatura depois de produz-la. Isso no possvel com cdigos de autenticao usando chave simtrica.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

156

CAPTULO 10. ASSINATURAS DIGITAIS

10.1

Segurana

RMA (random message attack): o adversrio s tem acesso a mensagens sorteadas aleatoreamente com suas respectivas assinaturas;

KMA (known message attack): o adversrio conhece, a priori, certas mensagens, e poder ter acesso s suas assinaturas antes de tentar iniciar sua fraude, mas as mensagens so determinadas antes do adversrio conhecer a chave pblica do assinante; CMA (chosen message attack): o adversrio pode escolher mensagens para que sejam assinadas, aps conhecer a chave pblica do assinante. Tambm observamos diferena entre tipos de fraude: Resistncia a fraude existencial: quando o adversrio consegue assinar uma mensagem que nunca tenha sido assinada antes pelo assinante, tendo apenas a chave pblica, mas no tem poder para escolher a mensagem, dizemos que o ataque uma fraude existencial. Resistncia forte a fraude existencial: suponha que o adversrio consiga gerar uma nova assinatura em uma mensagem j assinada anteriormente (mas a assinatura gerada diferente da original). Dependendo do contexto podemos querer impedir que estas assinaturas sejam geradas. Dizemos que esquemas de assinatura que resistam a este tipo de fraude tem resistncia forte contra fraude existencial.

Ve rs

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.

Pr e

lim

in ar

Assim como cdigos de autenticao de mensagens, as assinaturas digitais devem ser consideradas seguras desde que no possam ser fraudadas. Essencialmente, entendemos por fraude a obteno de assinatura sem acesso chave privada que supostamente seria necessria para faz-lo (formalizaremos esta noo de diferentes maneiras). Resumimos a seguir trs aspectos da segurana de assinaturas digitais que usaremos na formulao das denies de segurana. Quanto aos pares de mensagem e assinatura aos quais o adversrio possa ter acesso, identicamos trs casos:

notas de aula verso 79 - Jernimo C. Pellegrini

10.1. SEGURANA

157

10.1.1

Segurana RMA

Experimento 10.2 (SIG_FORGE_RMA(, A, n)). 1. k mensagens m1 , m2 , . . . , mk so escolhidas uniformemente. 2. Gen(1n ) usada para obter (pk, sk ). 3. As mensagens so todas assinadas com sk : i Signsk (mi ). 4. A recebe pk e todos os pares (mi , i ) 5. A retorna (m, ).

6. A sada do experimento um se e somente se Vrfpk (m, ) = 1 e m / { m1 , m2 , . . . , mk }. D A

m1 , . . . , mk R M (pk, sk ) Gen(1n ) i Signsk (mi )

Ve rs

Denio 10.3 (Segurana RMA para esquema de assinaturas digitais). Um esquema de assinaturas = (Gen, sign, Vrf) seguro contra ataques com mensagens aleatreas se para todo adversrio polinomial A existe uma funo desprezvel negl() tal que Pr[SIG_FORGE_RMA(, A, n) = 1] negl(n).

Se ltimo passo do experimento for 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, dizemos que o esquema para somente uma assinatura.

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

Pr e
1n , pk, (m1 , 1 , . . . , mk , k ) (m, )

lim

in ar

A noo mais fraca de segurana que formalizamos a de mensagens aleatreas, onde o adversrio no controla, de forma alguma, as assinaturas s quais tem acesso.

notas de aula verso 79 - Jernimo C. Pellegrini

158

CAPTULO 10. ASSINATURAS DIGITAIS

10.1.2

Segurana KMA

A prxima denio de segurana mais forte. Segurana KMA (contra ataques com mensagens conhecidas) implica em segurana RMA. 1. A recebe 1n e escolhe um conjunto M = { m1 , . . . , mk } de mensagens. 2. Gen(1n ) usada para obter (pk, sk ).

3. Cada mensagem assinada com sk : i Signsk (mi ) 4. A recebe pk e as assinaturas i . 5. O adversrio retorna (m, ).

lim
1n (m1 , . . . , mk ) pk, (1 , . . . , k ) (m, )

6. A sada do experimento um se e somente se Vrfpk (m, ) = 1 e m /M (ou seja, o adversrio no pediu a assinatura de m ao orculo). A

(sk, pk ) Gen(1n ) i Signsk (mi )

Ve rs

Denio 10.5 (Segurana KMA para esquema de assinaturas digitais). Um esquema de assinaturas = (Gen, sign, Vrf) seguro contra ataques adaptativos com mensagens conhecidas se para todo adversrio polinomial A existe uma funo desprezvel negl() tal que Pr[SIG_FORGE_KMA(, A, n) = 1] negl(n).

Se ltimo passo do experimento for 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 escolhidas. Quando somente uma mensagem sorteada no incio do experimento, dizemos que o esquema para somente uma assinatura.

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

Pr e

in ar

Experimento 10.4 (SIG_FORGE_KMA(, A, n)).

notas de aula verso 79 - Jernimo C. Pellegrini

10.1. SEGURANA

159

10.1.3

Segurana CMA

A denio mais forte que temos para segurana contra ataques adaptativos com mensagens escolhidas. Experimento 10.6 (SIG_FORGE_CMA(, A, n)). 1. Gen(1n ) usada para obter (pk, sk ).

2. A recebe pk e acesso de orculo a Signsk (); seja M o conjunto de mensagens assinadas pelo orculo, e X o conjunto de pares (mi , i ) de mensagens enviadas por A e assinaturas retornadas pelo orculo. 3. O adversrio retorna (m, ).

4. A sada do experimento um se e somente se Vrfpk (m, ) = 1 e m /M (ou seja, o adversrio no pediu a assinatura de m ao orculo). D ASign

(pk, sk ) Gen(1n )

Vrfpk (m, ) = 1 m /M

Ve rs

Denio 10.7 (Segurana CMA para esquema de assinaturas digitais). Um esquema de assinaturas = (Gen, sign, Vrf) seguro contra ataques adaptativos com mensagens escolhidas se para todo adversrio polinomial A existe uma funo desprezvel negl() tal que Pr[SIG_FORGE_CMA(, A, n) = 1] negl(n).

Se o Experimento SIG_FORGE_CMA for modicado tal que seu ltimo passo seja da seguinte forma: A sada do experimento um se e somente se Vrfpk (m, ) = 1 e (m, ) / X (ou seja, o adversrio no obteve exatamente a assinatura para a mensagem m a partir do orculo),

ento dizemos que fortemente seguro contra ataques adaptativos de mensagem escolhida. Quando o adversrio pode escolher uma nica mensagem dizemos que o esquema tem segurana CMA para uma nica vez.

Pr e
1n , pk (m, )

lim
M = assinadas pelo orculo

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

160

CAPTULO 10. ASSINATURAS DIGITAIS

10.1.4

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

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 f uma funo de mo nica e z o tamanho da mensagem a ser assinada. Gen(1n ): Construa duas matrizes X e Y , ambas com duas linhas e z colunas. Primeiro, escolha aleatoreamente os elementos de X (que devem ter n bits cada): n xi,j R { 0, 1 } . Depois preencha Y aplicando f em cada elemento de X : yi,j f (xi,j ).

A chave privada X , a matriz com os valores xi,j A chave pblica Y , a matriz com os valores yi,j Signsk (m): interprete a mensagem m como uma sequncia de bits m1 , m2 , . . . , mz . A assinatura x1,m1 , x2,m2 , , xzmz . Vrfpk (m, ) verica se, para todo 1 i z , f (xi ) = yi,mi .

o
sk =

Exemplo 10.9 (Esquema de assinaturas de Lamport). Sejam n = 3 e p(n) = n. As chaves geradas so: x1,0 x1,1 x2,0 x2,1 x3,0 x3,1 , pk = y1,0 y1,1 y2,0 y2,1 y3,0 y3,1 .

Ve rs

Como n = 3 s podemos assinar mensagens de trs bits. Se m = 5 (101 em binrio), a assinatura calculada usando as posies destacadas na chave: sk = x1,0 x1,1 x2,0 x2,1 x3,0 x3,1 , = (x1,1 , x2,0 , x3,1 ).

Para vericar esta assinatura, Vrf(101, (x1,1 , x2,0 , x3,1 )) verica: pk = y1,0 y1,1 y2,0 y2,1 y3,0 y3,1 f (x1 ) = y1,1 ? f (x2 ) = y2,0 ? f (x3 ) = y3,1 ?

Teorema 10.10. Para qualquer funo f de mo nica, o esquema de assinaturas de Lamport um esquema de assinaturas seguro para uma nica assinatura.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

10.3. RSA

161

10.3

RSA

Construo 10.11 (Esquema RSA de assinaturas (verso livro-texto)).

Gen (o mesmo do criptossistema RSA) gera pk = (b, N ) e sk = (a, N ). Signsk (m) = ma (mod N ). Vrfpk (m, ) = 1 se e somente se m = b (mod N ).

Signsk (74) = 74143

(mod 303) = 200.

Vrfpk (200) = 2007

Esta verso do esquema de assinaturas RSA no entanto insegura, como mostramos a seguir. Fraude #1: assinando uma mensagem aleatrea Seja pk = (b, N ) uma chave pblica RSA. O adversrio pode escolher uma assinatura Z N arbitrariamente e calcular m = b (mod N ). Est claro que Signpk (m) = , e o adversrio conseguiu uma mensagem e assinatura vlidas. Embora este ataque parea pouco interessante de um ponto de vista prtico (porque o adversrio no pode escolher nem a assinatura e nem a mensagem), ele torna o RSA inseguro de acordo com a Denio 10.7. Alm disso, pode haver situaes prticas nas quais este ataque represente um problema. Fraude #2: assinando uma mensagem arbitrria Seja pk = (b, N ) uma chave pblica e m uma mensagem que o adversrio queira assinar. Seja m1 uma mensagem com assinatura 1 e m2 = m/m1 (mod N ). O adversrio de alguma forma convence o detentor de sk a assinar m2 , obtendo 2 e calcula Signsk (m) sem precisar usar a chave secreta sk : basta calcular = (1 2 ) (mod N ). Vericamos que esta realmente a assinatura de m. O algoritmo Vrf verica se b = m; pois ento temos: b =
a b (1 2 )b = (ma 1 m2 ) ab mab 1 m2 = m1 m2 = m

Ve rs
=

Pr e

Para vericar a assinatura de (m, ) onde m 74 e 200, deciframos com a chave pblica: (mod 303) = 74 = m.

lim
(mod N ).

Exemplo 10.12 (Assinatura com RSA (livro-texto)). Sejam p = 101, q = 3. Temos N = 303 e (N ) = 200, como no Exemplo 9.20. Escolhemos, como naquele exemplo, b = 7 e a = 143. Para assinar m = 74, encriptamos com a chave privada:

in ar

O RSA tem uma propriedade interessante: se trocarmos o papel das chaves pblica e privada, o resultado um esquema de assinaturas. Para assinar, encriptamos com a chave privada. Para vericar uma assinatura, decriptamos com a chave pblica

notas de aula verso 79 - Jernimo C. Pellegrini

162

CAPTULO 10. ASSINATURAS DIGITAIS

10.3.1

Full-domain hash

Construo 10.13 (Full-domain hash usando RSA).

Gen(1n ) gera um par de chaves RSA e uma funo e hashing H com entrada e sada de n bits.

Vrfpk (m, ) = 1 H (m) = b (mod N ).

O algoritmo Gen deve gerar uma funo de hashing de n em n bits, j que o que ser necessrio para Sign e Vrf. Vericamos agora o efeito desta medida nos ataques descritos. Fraude #1: o adversrio precisaria computar m = b (mod N ) e depois tentar encontrar m tal que H (m) = m . Se a funo de hashing H for difcil de inverter, a diculdade do ataque ser a mesma; Fraude #2: para obter 1 nalgum dos experimentos que descrevemos, o adversrio precisaria encontrar trs mensagens m, m1 , m2 tais que H (m) = H (m1 )H (m2 ) (mod N ). Este ataque tambm deve ser difcil se H for difcil de inverter.

10.4

Elgamal

Ve rs

Elgamal descreveu no mesmo artigo um criptossistema e um esquema de assinaturas mas o esquema de assinaturas no apenas uma maneira diferente de usar o criptossistema (como no caso do RSA). Ele apenas tem como base o mesmo pressuposto (a intratabilidade do problema do logaritmo discreto) e usa o mesmo algoritmo para gerao de chaves. Considere as chaves pblica e privada do criptossistema Elgamal: pk = G, q, g, h e sk = G, q, g, x , onde h = g x . Iniciamos com a seguinte congruncia: m ax + by (mod (q )). (10.1)

Pelo Teorema B.46, as solues para esta congruncia so as mesmas solues para gm g ax+by g g
ax by

Pr e
ha ab

lim
(mod q ) (mod q ) (mod q ).

Signsk (m) = H (m)a (mod N )

in ar

H diversos esquemas de assinatura baseados no RSA que tentam remediar os problemas descritos nesta Seo. Um deles bastante simples: ao invs de aplicar diretamente o RSA para produzir assinaturas de mensagens m Z p, assinamos resumos criptogrcos de mensagens. O resultado o full-domain hash, ou FDH, outro esquema de assinaturas. Pode-se demonstrar a segurana do FDH usando o modelo do orculo aleatreo.

notas de aula verso 79 - Jernimo C. Pellegrini

10.4. ELGAMAL

163

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 da chave privada (e portanto de x). Assinar uma mensagem calcular (a, b) tais que m ax + by (mod q 1). Isso feito da seguinte forma: a b = gy = (mod q ) (mod q 1).

(m ax)y 1

Sendo x e y secretos, no conhecido algoritmo para resolver ecientemente a congruncia na Equao 10.1. Vericar a assinatura fcil, mesmo sem a chave secreta: basta que g m a b h a (mod q ) para que a assinatura (a, b) seja vlida. Desta forma chegamos ento ao esquema de assinaturas de Elgamal. Construo 10.14 (Esquema de assinaturas de Elgamal).

Sign: dada a chave privada pk = G, q, g, x e a mensagem m G, escolha y R Zq , sejam a = gy (mod q ) (m ax)y 1

b = Devolva (a, b).

Ve rs
10.4.1 DSA

Vrf: dada a chave pblica pk = G, q, g, h , e a assinatura (a, b), retorne um se e somente se ha ab g m (mod q )

O DSA uma variante do esquema Elgamal de assinaturas adotado como padro pelo NIST. As diferenas do Elgamal para o DSA podem ser resumidas em dois pontos: O DSA usa um grupo de ordem p, que deve ser um primo com tamanho l mltiplo de 64 e 512 l 1024, e tambm um subgrupo de ordem q cujo tamanho deve ser 160 bits. No DSA a mensagem no usada diretamente na assinatura: um resumo de 160 bits usado (o DSA foi proposto para ser usado com a funo de hashing SHA-1, mas o SHA-1 posteriormente foi considerado inseguro;

Pr e

Gen(1n ): use G (1n ) para escolher um grupo cclico G com ordem q , com gerador g , sendo que q representvel com n bits. x R Zq h gx A chave pblica G, q, g, h . A chave privada G, q, g, x .

(mod q 1).

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

164

CAPTULO 10. ASSINATURAS DIGITAIS pode-se usar SHA-2). Alm disso, a subtrao no clculo de b do Elgamal trocada por uma adio. Temos ento b = (H (m) + ax)y 1 (mod q ).

A Construo a seguir o esquema de assinaturas DSA.

Construo 10.15 (Esquema de assinaturas DSA). Seja H uma funo de hashing com sada de 160 bits.

Pr e
a = gy b = e = H (m)b1 f = ab
1

Sign: dada a chave privada pk = G, q, g, x e a mensagem m G, escolha y R Zq , sejam (mod p)


1

(H (m) + ax)y

Devolva (a, b).

Vrf: dada a chave pblica pk = G, q, g, h , e a assinatura (a, b), e sejam (mod q ) (mod q ).

Ve rs
10.5

Retorne um se e somente se a = ge yf (mod p) (mod q ).

O documento FIPS-186-2 descreve uma instancia do DSA onde o grupo usado o de pontos em uma curva elptica sobre Zp . Este esquema conhecido como ECDSA (Elliptic Curve DSA).

Full-domain hash com qualquer permutao de mo nica

(Esta Seo no foi redigida ainda) possvel trocar o RSA no FDH por qualquer famlia de permutaes de mo nica, mantendo sua segurana.

lim
(mod q )

Gen(): Escolha um grupo cclico G com ordem p e gerador g , sendo que p representvel com 160 bits. Escolha um subgrupo de G com ordem q , tal que o tamanho de q seja mltiplo de 64 e esteja entre 512 e 1024. x R Zq h g x (mod p) A chave pblica G, q, g, h . A chave privada G, q, g, x .

(mod q ).

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

10.5.

FULL-DOMAIN HASH COM QUALQUER PERMUTAO DE MO NICA165

Notas
Assinaturas digitais usando pares de chaves pblica e privada foram idealizadas inicialmente no mesmo artigo de Die e Hellman [50] onde expuseram a ideia de criptossistemas assimtricos. Neste texto seguimos a abordagem de Jonathan Katz [60] 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 [61]. O livro de Jonathan Katz [60] contm um estudo detalhado sobre os fundamentos tericos das assinaturas digitais, e uma discusso detalhada do fulldomain hash.

Exerccios

Ex. 88 Mostre que se a assinatura (a, 0) for gerada para uma mensagem usando o DSA, possvel a qualquer um determinar a chave privada do assinante. Ex. 89 O padro DSA determinava inicialmente que a funo de hash usada deveria ser exatamente o SHA-1 (a crena at ento era de que para encontrar colises no SHA-1, que tem sada de 160 bits, um adversrio precisaria de 280 operaes). Desde ento diversos ataques ao SHA-1 foram descobertos e publicados: Em 2005, Xiaoyun Wang, Yiqun Lisa Yin, e Hongbo Yu mostraram [62] como encontrar colises no SHA-1 usando 269 operaes. Em 2008 Stphane Manuel publicou um ataque [63] ao SHA-1 que permite obter colises com complexidade entre 251 e 227 . a) Explique as consequncias disso para o padro DSA original.

Ve rs

b) Uma maneira de resolver o problema poderia ser usar a funo SHA256 e usar apenas os 160 bits da esquerda da sada. No havendo ataques prticos ao SHA256, esta soluo seria teoricamente melhor, pior ou semelhante ao uso de outra (boa) funo de hash com 160 bits de sada?

Ex. 90 Implemente os esquemas de assinatura descritos neste Captulo. Ex. 91 A seguinte armao bastante difundida: Dado um criptossistema assimtrico qualquer, pode-se obter um esquema de assinaturas simplesmente mudando o papel as chaves pblica e privada: para assinar, basta encriptar com a chave privada e para vericar basta decriptar com a chave pblica.

Mostre que isto um equvoco, usando como exemplos criptossistemas assimtricos do Captulo 9.

A respeito disso, responda:

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

166

CAPTULO 10. ASSINATURAS DIGITAIS

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Parte II

Ve rs
167

Pr e

Protocolos

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

169

Nesta parte so descritos protocolos criptogrcos.

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

170

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 11

11.1

Modelo computacional

Um gerador pseudoaleatreo, diferente de qualquer outro.

Ve rs

Um par de portas de entrada e sada para comunicao com o ambiente (por estas portas o ator recebe a entrada e devolve a sada). Um par de portas de entrada e sada para comunicao com outro ator.

O modelo computacional que usaremos tem dois atores; abreviamos seus nomes por A e B . As portas de comunicao dos dois atores esto acopladas de maneira que ambos possam trocar mensagens (a porta de entrada de A ligada porta de sada de B e vice-versa); Os atores interagem por troca de mensagens sncronas. Nenhum dos dois realiza qualquer computao enquanto a mensagem transmitida de um para outro ou enquanto o outro est ativo; 171

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 comunicao com outros atores. Cada ator (ou participante) tem:

Pr e

Um protocolo criptogrco uma descrio de como diversos agentes realizam uma computao de maneira distribuda comunicando-se atravs de mensagens, sem a necessidade de conana entre os atores.

lim

Protocolos Para Comprometimento

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

172

CAPTULO 11. PROTOCOLOS PARA COMPROMETIMENTO

out

in out

in

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.

11.2

Comprometimento

Ve rs

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 comprometimento: ele tem uma garantia de que a outra parte se comprometeu com algum valor, e que este valor ser revelado oportunamente;

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. Protocolos de comprometimento so caracterizados por duas fases:

Pr e

Denio 11.2 (Complexidade de tempo de ator). A complexidade de tempo de um ator A uma funo f se para todo ator B e toda entrada x, a execuo de A acoplado a B com entrada comum x termina aps f (|x|) operaes, independente dos bits aleatreos usados por A e B durante a execuo.

lim

Denio 11.1 (Resultado de uma computao em conjunto). Quando dois atores A e B esto acoplados como descrito no texto executam um procedimento, ambos usando a mesma entrada x, denotamos por A, B (x) a varivel aleatrea que representa a sada local de A aps interagir com B .

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

173

A propriedade de sigilo preserva os interesses de quem se compromete: apesar de se comprometer com um valor, ele mantido em sigilo. Denio 11.3 (Protocolo de comprometimento). Um protocolo de comprometimento composto dos algoritmos polinomiais Gen, Commit e Reveal: Gen(1n ), que usado para produzir uma das entradas de Commit.

Commitk (m), onde k gerado por Gen. A sada de Commit o par (c, d) onde c o comprometimento, e d o valor de abertura.

Exigimos que para toda mensagem m e toda chave k gerada por Gen, Revealk (Commitk (m)) = m.

Ve rs

Experimento 11.4 (COMMIT_BIND(, A, n)). 1. Gen(1n ) usado para gerar a chave k .

2. Envie 1n para o adversrio; 3. O adversrio determina uma mensagem m, um comprometimento c = Commitk (m) e dois valores de abertura d e d .

4. O adversrio as devolve duas mensagens m, m , os dois valores de abertura d, d e o comprometimento c. 5. O resultado do experimento 1 se e somente se m = m , m, m = , m = Revealk (c, d) e m = Revealk (c, d ).

Uma das partes usar Commitk (m) para gerar c e d, e enviar c na fase de comprometimento e d na fase de revelao. Aps receber d, o outro participante poder obter m a usando Revealk (c, d) Informalmente, podemos dizer que um protocolo de comprometimento vinculante se nenhum adversrio pode obter dois comprometimentos iguais para mensagens diferentes. Ser til, no entanto, 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.

Pr e

lim

Revealk (c, d), que retorna uma mensagem m ou um valor especial indicando que (c, d) no foi gerado por Commit.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

174

CAPTULO 11. PROTOCOLOS PARA COMPROMETIMENTO D k Gen(1n ) m = m m, m = , m = Revealk (c, d), m = Revealk (c, d ) 1 1n m, m , d, d , c T

Denio 11.5. Um protocolo de comprometimento

(i) computacionalmente vinculante se para qualquer adversrio polinomial A existe uma funo desprezvel negl() tal que Pr[COMMIT_BIND(, A, n) = 1] negl(n); (ii) estatisticamente vinculante se para qualquer adversrio A existe uma funo desprezvel negl() tal que

(iii) perfeitamente vinculante se para quaisquer A e n Pr[COMMIT_BIND(, A, n) = 1] = 0.

Ve rs

Experimento 11.6 (COMMIT_HIDE(, A, n)). 1. Gen(1n ) usado para gerar a chave k . 2. Envie 1n para o adversrio;

3. A envia duas mensagens m1 e m2 de mesmo tamanho. 4. O desaante D gera um bit aleatreo b R {0, 1}. 5. D calcula (c, d) = Commitk (mb ) e envia c para A. 6. A devolve um bit b

7. O resultado do experimento um se b = b e zero caso contrrio.

Para denir a propriedade de sigilo usaremos um experimento com dois atores, um desaante e um adversrio.

Pr e

Pr[COMMIT_BIND(, A, n) = 1] negl(n);

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO D k Gen(1n ) b R { 0, 1 } (c, d) Commitk (mb ) b=b 1 b=b 0 1n m1 , m2 c b T

175

Denio 11.7. Um protocolo de comprometimento tem

(i) sigilo computacional se para qualquer adversrio polinomial A existe uma funo desprezvel negl() tal que Pr[COMMIT_HIDE(, A, n)] 1 + negl(n). 2

Pr[COMMIT_HIDE(, A, 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 mensagens com o mesmo comprometimento. Isto contraria a denio de sigilo perfeito.

Ve rs

Construo 11.9 (Protocolo de comprometimento com resumos). Seja H uma famlia de funes de hashing. Um protocolo de comprometimento pode ser construdo como mostrado a seguir. Gen(1n ) escolhe aleatoreamente s e uma funo de hashing H s .

Commitk (m) = H s (r||m), (r, m) , onde r R {0, 1}n .

Revealk (c, (r, m)): obter a mensagem trivial; vericar que c = H s (r||m) tambm.

O Exerccio 93 pede a demonstrao das propriedades do protocolo de comprometimento com resumos.

Construo 11.10 (Protocolo de comprometimento usando logaritmo discreto).

Pr e
1 . 2

(ii) sigilo perfeito se para qualquer adversrio (polinomial ou no) A e todo n,

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

176

CAPTULO 11. PROTOCOLOS PARA COMPROMETIMENTO Gen(1n ) escolhe aleatoreamente um primo p com n bits, um gerador g para Z p. Commitk (m) = (g m , m). Revealk (c, m) verica se c = g m .

Teorema 11.11. Presumindo a hiptese do logaritmo discreto, o protocolo descrito na Construo 11.12 tem sigilo computacional e vnculo perfeito.

Se modicarmos o problema usado como base do protocolo do logaritmo discreto para o de Die-Hellman obtemos o protocolo de Pedersen. Construo 11.12 (Protocolo de comprometimento de Pedersen).

r m Commitk (m): escolha r R Z (mod p) Retorne c, (r, m) . q e calcule c = g y

Revealk (c, (r, m)): se c = g r y m retorne m, seno retorne (um valor indicando que o comprometimento no vlido). necessrio que m Z q.

Teorema 11.13. O protocolo de Pedersen tem sigilo perfeito e vinculao computacional.

Ve rs

r m Demonstrao. Como r escolhido aleatoreamente em Z uniformeq, g y mente distribudo em G, independente de m. Conclumos que o protocolo tem sigilo perfeito. A propriedade de vinculao seria quebrada se for possvel encontrar (r, m) e (r , m ) tais que m = m e

Isso o mesmo que gr ym = gr ym (mod p), mas ento g rr = y m m (mod p), e y = g (rr )(m m)
1

Pr e

Gen(1n ) escolhe aleatoreamente um primo p com n+1 bits tal que p = 2q +1 para algum primo q . Retorne (p, g, y ) onde g um gerador para Z p e . y R Z p

Revealk (c, (r, m)) = m Revealk (c, (r , m )) = m .

lim
(mod q )

Demonstrao. Como Bob s tem a descrio do grupo e g m , determinar a mensagem exatamente resolver o problema do logaritmo discreto e portanto o protocolo tem sigilo computacional. O logaritmo de m na base g nico no grupo Z n , portanto Alice nunca poder trocar m por uma segunda mensagem m sem alterar o comprometimento e portanto o protocolo tem vnculo perfeito.

(mod p).

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

177

Isso, por sua vez, signica computar o logaritmo de y na base g . Como y escolhido uniformemente ao acaso, teramos que contradizer a hiptese do logaritmo discreto. Conclumos que o protocolo tem vinculao computacional.

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

Revealk (c, (pk, sk )) decripta m com a chave privada sk , e retorna m se Encpk (m) = c, seno retorna . O Exerccio 97 pede a demonstrao do seguinte Teorema. Teorema 11.15. Se um criptossistema de chave pblica com segurana CPA, ento a construo 11.14 usando um protocolo de comprometimento com sigilo computacional. Se em a decriptao no-ambgua, ento o protocolo tem vinculao perfeita.

Ve rs
11.2.1

Comprometimento de bit

H protocolos para obter comprometimento com um nico bit. Mostramos aqui apenas um deles, usando resduos quadrticos. Construo 11.16 (Protocolo de comprometimento com resduos quadrticos). 1. Gen(1n ) escolha um inteiro N com tamanho n bits. A distribuio dos bits deve ser uniforme. 2. Commitk (b): Alice escolhe y R Z N , que no resduo quadrtico. Para comprometer-se com zero, Alice envia c, que um quadrado x2 . Para comprometer-se com um, envia c que no quadrado: c = yx2 . Retorne c e d = (x, y ).

Pr e

lim

H algo importante a observar a respeito dos dois protocolos baseados em logaritmo discreto: um deles usa apenas g m como comprometimento, e bastante claro que quebrar seu sigilo equivalente a calcular o logaritmo discreto de m. Por outro lado, como este logaritmo nico, obtemos vinculao perfeita. Ao mudar de g m para g r y m abrimos mo da vinculao perfeita, porque h diversos valores de r e m para os quais c = g r y m . No entanto, a multiplicao por g r passou a nos dar sigilo perfeito. possvel tambm construir um protocolo de comprometimento a partir de um criptossistema assimtrico com segurana CPA.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

178

CAPTULO 11. PROTOCOLOS PARA COMPROMETIMENTO

3. Revealk (c, (x, y )): se c = x2 retorne zero; se c = yx2 retorne um; seno retorne . Teorema 11.17. O protocolo 11.16 perfeitamente vinculante e, sendo verdadeira a hiptese do resduo quadrtico, computacionalmente ocultante. Demonstrao. Como os comprometimentos dos bits so quadrados para zero e no quadrados para um, impossvel conseguir um comprometimento que sirva tanto para zero como para um, e portanto o protocolo tem vnculo perfeito. O protocolo tem sigilo computacional porque se fosse possvel distinguir entre comprometimentos de zeros e uns seria possvel determinar ecientemente se um nmero resduo quadrtico mdulo N .

Esta Seo descreve um protocolo simples que permite a uma parte P provar para uma outra, V , que dados dois geradores g1 , g2 de um grupo Gq e dois 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 )).

w w P escolhe w R Gq e envia a1 = g1 e a2 = g2 para o vericador V ;

V envia um desao aleatreo c R Zq para P ; P devolve r = w ac (mod q );

r c r c V verica que a1 = g1 h1 e a2 = g2 h2 .

A vericao funciona porque

Ve rs
11.2.3

r c O mesmo vlido para a2 e g2 h2 . Note que o vericador V no tem informao que permita deduzir a apenas convencido de que o dois logaritmos so iguais.

Cara-ou-coroa

Uma aplicao imediata de protocolos de comprometimento o jogo de caraou-coroa por telefone. Se Alice e Bob precisam jogar uma moeda para decidir aleatoreamente entre duas opes, garantindo que nenhum deles possa inuenciar a deciso, podem faz-lo da seguinte maneira:

Pr e
r c g1 h1

Construo 11.18 (Protocolo para provar de igualdade de logaritmos). Sejam g1 , g2 geradores de um grupo Gq , com q primo, e sejam h1 , h2 Gq . a a O provador P conhece a tal que h1 = g1 e h2 = g2 .

= = = =

lim
wac c g1 h1 wac a c g1 (g1 ) wac ac g1 g1 w g1 = a1 .

11.2.2

Vericao de igualdade de logaritmos

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

11.2. COMPROMETIMENTO

179

1. Alice compromete-se com um bit bA R {0, 1} e envia o comprometimento cA para Bob; 2. Bob tambm se compromete com um bit bB R {0, 1} e envia o comprometimento cB para Alice;

3. Uma vez que cada um tenha o comprometimento do outro, Alice e Bob enviam um ao outro os valores que cada um escolheu (bA e bB ); 4. Ambos computam o resultado bA bB . fcil perceber que Pr(cara) = Pr(coroa) = 1/2.

Exerccios

Ex. 92 Porque no modelo computacional apresentado neste Captulo dissemos que A e B 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 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?

Ve rs

Ex. 96 A Demonstrao do Teorema 11.13 diz que como g r y m uniformemente distribudo em G, independente de m, o protocolo tem sigilo perfeito. Elabore estas 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.

Pr e

lim

Notas

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

180

CAPTULO 11. PROTOCOLOS PARA COMPROMETIMENTO

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 12

Ve rs

Queremos manter um segredo em sigilo por exemplo, a chave para decriptar um documento ou para permitir acesso a um sistema mas no queremos que este segredo seja conhecido apenas por uma pessoa. Seria interessante se o segredo fosse compartilhado entre vrias pessoas, e que fosse revelado apenas quando um subconjunto autorizado dos participantes decidisse faz-lo. O foco deste Captulo so protocolos para realizar este objetivo. Estes protocolos so chamados de esquemas de compartilhamento de segredos. Quando h n participantes e o qurum (ou limiar) para revelao do segredo de k participantes, dizemos que o protocolo um esquema (k, t) de compartilhamento de segredos. H tambm esquemas mais gerais onde no determinamos um qurum, mas 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 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 especicamos os participantes autorizados. Denio 12.1 (Estrutura de Acesso). Seja P um conjunto de participantes. Os subconjuntos de P podem ser divididos arbitrariamente em dois conjuntos, um deles chamado de conjunto dos qualicantes e o outro de conjunto dos no qualicantes. O conjunto dos qualicantes chamado de estrutura de acesso sobre 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 A um conjunto. Uma estrutura montona sobre A uma coleo de subconjuntos de A tal que 181

Pr e

lim

Compartilhamento de Segredos

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

182 A ;

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS

Se X e X X , ento X .

Denio 12.3 (Esquema de Comparilhamento de Segredos). Seja uma estrutura montona de acesso sobre um conjunto P de participantes. Um esquema de compartilhamento de segredos sobre um par de algoritmos: Share(s, ): dado um segredo s e a estrutura de acesso , uma partilha Sa determinada para cada participante a P ;

H = { Sa | a O, O } , ento Combine deve retornar s.

12.1

Esquemas com qurum

Os primeiros esquemas de compartilhamento de segredos foram propostos independentemente em 1979 por Adi Shamir [64] e George Blakley [65], e no usam estruturas de acesso. So denidos de forma que dentre n participantes, qualquer qurum (ou limiar) de k n possa obter o segredo (estes so chamados de esquemas (k, n) de compartilhamento).

12.1.1

Esquema de Shamir

Duas observaes muito simples formam a base do esquema de compartilhamento de segredos de Shamir:

Ve rs

Interpolao: dados n +1 pontos (xi , yi ) diferentes, h um nico polinmio de grau n passando por todos os pontos. Sigilo: dado um conjunto contendo menos que n + 1 pontos, pode-se determinar innitos polinmios passando por todos os pontos do conjunto. A ideia bsica usada no esquema de Shamir : Gere um polinmio p() de grau t aleatoreamente, mas cujo termo constante igual ao segredo s.

D a cada participante um ponto (x, p(x)). Quando t + 1 participantes se reunirem com seus pontos, estar determinado o polinmio (e o termo constante). Com um participante a menos, eles nada sabem a respeito do polinmio.

Pr e

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:

in ar

Todas as estruturas de acesso que usaremos so montonas.

notas de aula verso 79 - Jernimo C. Pellegrini

12.1. ESQUEMAS COM QURUM

183

Teorema 12.4. Sejam n + 1 pontos (xi , yi ), todos distintos. O (nico) polinmio de grau n passando por todos os pontos tal que seu valor em x pode ser calculado da seguinte forma:
n

l ( x)

yj lj (x)
j =0 n

lj ( x )

=
k=0;k=j

Demonstrao. Supomos que temos n + 1 pontos distintos (x0 , y0 ), . . . , (xn , yn ). Denimos os seguintes polinmios: lk (x) = (x x0 ) (x xk1 )(x xk+1 ) (x xn ) . (xk x0 ) (xk xk1 )(xk xk+1 ) (xk xn )

Estes polinmios so todos de grau n. Consideramos agora dois casos: Quando calculamos lk (xk ), o numerador e denominador so iguais e portanto lk (xk ) = 1; Quando calculamos lk (xj ), com j = k , o fator (xj xj ) estar no numerador, que portanto resulta em zero 1 . Denimos ento o polinmio resultante da soma de todos os lk de grau n:
n

Ve rs

Pn (x) =
k=0

Como todos os lk (x) so de grau n e Para os pontos x0 , x1 , . . . xn , teremos portanto Pn (xi ) = f (xi )l0 (xi ) + + f (xi )li (xi ) + + f (xi )ln (xi )

e como somente li (x) diferente de zero (e igual a um), temos Pn (xi ) = f (xi )(1) = f (xi ).

E o polinmio Pn coincidir com os n + 1 pontos xi .

1 Para valores diferentes dos x dados inicialmente, l (x) no necessariamente um nem i k zero.

Pr e
f (xk )lk (x).

lim

x xk . xj xk

in ar

No entanto, esta ideia foi descrita para polinmios sobre corpos innitos. O esquema de compartilhamento de Shamir adapta este mtodo para corpos nitos. Para obter o polinmio de grau n a partir dos pontos, usamos interpolao usando a frmula de Lagrange, que derivamos a seguir.

notas de aula verso 79 - Jernimo C. Pellegrini

184

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS

No contexto do esquema de Shamir, estamos interessados no coeciente constante do polinmio. Temos ento
n

j =0 n

rj

= lj (0) =
k=0;k=j

xk . xk xj

O vetor (r1 , r2 , . . . , rn ) chamado de vetor de recombinao.

Construo 12.5 (Esquema de compartilhamento (k,n) de Shamir). Seja Fq um corpo, s um segredo, k o qurum e n to total de participantes. Share(s): Para distribuir o segredo entre os n participantes: 1. Cada participante i identicado com xi Fq .

2. Escolha uniformemente k coecientes a1 , . . . , ak1 . e seja p o polinmio p(x) = s + a1 x + a2 x + . . . + ak1 x.

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 k 1 chaves a probabilidade do segredo ser qualquer elemento do corpo F uniforme; mnimo, porque o tamanho de cada chave no maior que o do segredo; extensvel, porque podemos criar mais pontos do polinmio e distribuir, aumentando n; e um esquema com limiar. O esquema de Shamir, no entanto, no pode ser usado com qualquer estrutura de acesso funciona apenas com qurum. Apesar disso, serve como fundamento para a construo de outros esquemas mais exveis, como veremos mais adiante.

Ve rs
12.1.2

Assim como duas observaes sobre polinmios fundamentam o funcionamento do esquema de Shamir, os seguintes fatos a respeito de hiperplanos so usados na construo do esquema de compartilhamento de segredos de Blakley: em um espao vetorial de n dimenses, n hiperplanos no paralelos se interceptam em um nico ponto; mas com n 1 hiperplanos, h innitos pontos de interseo. Construo 12.6 (Esquema de compartilhamento de segredos de Blakley). O espao onde o segredo codicado um corpo nito de n dimenses.

Esquema de Blakley

Pr e

3. Cada participante i recebe por um canal seguro o ponto (xi , p(xi )) (portanto n pontos so distribudos).

lim

in ar

l(0)

yj rj

notas de aula verso 79 - Jernimo C. Pellegrini

12.2. SEGURANA

185

Share(s) : para distribuir o segredo entre n participantes, codique o segredo como um ponto em n dimenses. De a cada participante um hiperplano passando pelo ponto.

O esquema de Blakley extensvel porque podemos criar novos hiperplanos passando pelo ponto onde est o segredo; e um esquema com limiar. No entanto, no estritamente seguro e no mnimo.

12.2

Segurana

12.2.1

Sigilo

para qualquer H / .

Teorema 12.8. O esquema de compartilhamento de segredos de Blakley no tem sigilo perfeito. Demonstrao. Seja s um segredo representado como um ponto (s1 , s2 , . . . , sm ) usando o esquema de Blakley, com limiar igual a t. De posse de nenhuma informao, sabe-se que o segredo est em Zm n . A probabilidade de um ponto selecionado uniformemente ser igual a s 1/nm . Conhecendo k < t partilhas, restam apenas t k partilhas que precisamos descobrir se tentarmos selecion-las uniformemente a probabilidade de encontrarmos s 1 1 < m. ntk n Mais interessantemente, com t 1 partilhas a probabilidade 1/n. Ainda que n seja exponencial no nmero de bits usados, estritamente falando o esquema de Blakley no tem sigilo perfeito. O Exerccio99 pede a demonstrao de que o esquema de Shamir, ao contrrio do de Blakley, tem sigilo perfeito.

Ve rs

Teorema 12.9. O esquema de compartilhamento de segredos de Shamir tem sigilo perfeito.

Pr e
Pr(s) = Pr(s|H )

Denio 12.7 (Sigilo esquema de comparilhamento de segredos). Seja um esquema de compartilhamento de segredos com estrutura de acesso . Dizemos que tem sigilo perfeito se

lim

Mencionamos dois aspectos importantes da segurana de esquemas de compartilhamento: um deles o sigilo (um conjunto no autorizado de participantes no pode obter qualquer informao sobre o segredo) e o outro a vericao (deve ser possvel vericar se algum dos participantes est agindo desonestamente).

in ar

Combine(H ) : n participantes, cada um com um hiperplano diferente, podem determinar a interseo de seus hiperplanos, que o segredo.

notas de aula verso 79 - Jernimo C. Pellegrini

186

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS

12.3

Estruturas gerais de acesso

p, o Presidente; v , o Vice-presidente; c, o Presidente do Congresso; d, o Ministro da Defesa.

Suponha tambm que podem decidir declarar guerra2 e ter acesso ao cdigo secreto para uso de armamento nuclear: O Presidente da Repblica e o Ministro da Defesa (p, d);

O Vice-Presidente, o Presidente do Congresso e o Ministro da Defesa (v, c, d). A estrutura de acesso para o cdigo =

Ve rs
2

Note que tivemos que listar mais conjuntos do que havamos especicado (por exemplo, {p, d, c, v }, {p, d, v } e {p, d, c} s foram includos porque {p, d} ). Um conjunto qualicante minimal X em aquele que no superconjunto de outro, tambm em e uma descrio minimal de inclui apenas os conjuntos qualicantes minimais:

Podemos reescrever a estrutura se denirmos p, v, d, c como variveis binrias (um conjunto pode ser ento descrito usando 1 para presente e 0 para ausente). A estrutura de acesso passaria a ser, em forma normal disjuntiva com trs clusulas conjuntivas: = (p d) (p c) (v c d).

O esquema de Ito-Nishizeki-Saito usa a descrio da estrutura de acesso nesta forma, sendo tal Construo a demonstrao do seguinte Teorema:
uma hiptese ctcia apenas.

Pr e

O Presidente da Repblica e o Presidente do Congresso (p, c);

{p, d}, {p, c}, {v, c, d}, {p, d, c}, {p, d, v }, {p, v, c}, {p, v, c, d}

= {p, d}, {p, c}, {v, c, d}

lim

in ar

Os esquemas de Shamir e de Blakley no permitem escolher quais participantes podem revelar o segredo s possvel determinar o nmero de participantes necessrio. Nesta seo descrevemos um esquema de compartilhamento que permite especicar listas arbitrrias de participantes autorizados a revelar o segredo. Suponha que os participantes em um esquema de compartilhamento so

notas de aula verso 79 - Jernimo C. Pellegrini

12.3. ESTRUTURAS GERAIS DE ACESSO

187

Teorema 12.10. Qualquer estrutura geral de acesso , existe um esquema de compartilhamento de segredos que implementa . Construo 12.11 (Esquema de Ito-Nishizeki-Saito). Seja uma estrutura de acesso descrita na forma normal disjuntiva. Cada conjunto qualicante minimal O est descrito como uma conjuno. Cada posio de varivel numerada na frmula: por exemplo, (v1 v2 ) v3 tem posies 1, 2 e 3. Seja n o nmero de bits necessrio para representar o segredo.

Share(s, ): Gere aleatoreamente valores si R {0, 1}n tais que para cada clusula (vi . . . vj ), si . . . sj = s. Um participante recebe si se sua varivel estiver na i-sima posio, e portanto Share retorna um conjunto de valores si para cada participante. Combine(H ): qualquer um dos conjuntos qualicantes pode revelar s observando quais valores de suas partilhas precisam ser combinados com ou-exclusivo, levando em conta suas posies em . Exemplo 12.12 (Esquema de Ito-Nishizeki-Saito). A estrutura j mencionada tem trs conjuntos qualicantes (e trs clusulas conjuntivas). Para cada clusula (vi , . . . , vk ), queremos que o ou exclusivo dos si , . . . , sk seja igual a s.

As partilhas dos quatro participantes so determinadas pelas suas posies na frmula. sp = (s1 , s3 ) sc = (s4 , s6 )

Ve rs

Suponha ento que o segredo seja 0110. Escolhemos aleatoreamente s1 = 1100. Como s deve ser igual a s1 s2 , ento s2 = s s1 = 1010. Escolhemos s3 = 1110 e ento s4 deve ser 1000. Escolhemos s5 = 1111 e s6 = 0010. s7 deve ento ser igual a s s5 s6 = 1011. s1 = 1100 s2 = 1010 s3 = 1110 s4 = 1000 s5 = 1111 s6 = 0010 s7 = 1011

Pr e
s = s1 s2 = s3 s4 = s5 s6 s7 . sd = (s2 , s7 ) sv = s5 .

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

188 As partilhas so

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS

sp = (s1 = 1100, s3 = 1110) sd = (s2 = 1010, s7 = 1011) sc = (s4 = 1000, s6 = 0010) sv = (s5 = 1111). Para revelar o segredo, p, c se renem e calculam

s = s3 s4 = 1110 1000 = 0110. Quando v, c, d se renem, tambm podem calcular s:

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 sk . Este valor foi escolhido aleatoreamente ou foi calculado a partir de s. Se foi escolhido aleatoreamente, no h como extrair dela qualquer informao a respeito de s. Mas sk pode ter sido calculado a partir de s (porque era a ltima varivel de uma conjuno): sk = si sj s Seja ento s = si sj . Evidentemente s tem distribuio uniforme (porque o ou exclusivo de outras variveis escolhidas uniformemente) e no foi construda usando s. Ao fazer s s estamos essencialmente encriptando s com bits escolhidos uniformemente exatamente como no one-time pad. Assim, no deve ser possvel extrair informao a respeito de s a partir de sk , ou seja, Pr(s|sk ) = Pr(s).

O mesmo vale quando o participante tem vrios valores si , ..., sk .

Ve rs
12.4

O esquema de Ito-Nishizeki-Saito, no entanto, ineciente: cada participante pode receber vrios valores, cada um do tamanho do segredo (no esquema de Shamir cada participante recebe um valor de tamanho igual ao do segredo).

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 k que pretendem reconstru-lo pode modicar um par (xi , yi ) de forma que o segredo original no seja recuperado, mas sim algum outro valor. No h como saber quem agiu desonestamente, e nem como recuperar o valor original sem mais participantes.

Compartilhamento vericvel

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

12.4. COMPARTILHAMENTO VERIFICVEL

189

Construo 12.15 (Compartilhamento de segredos vericvel (esquema de Pedersen)). Gen(1n ): gere um grupo G de ordem 1n com gerador g , onde n primo.

a(x) = a0 + a1 x + a2 x2 + + at1 xt1 b(x) = b0 + b1 x + b2 x2 + + bt1 xt1 . Em seguida, cada participante recebe sua partilha, que composta de um ponto de cada polinmio. O participante Pi recebe os pontos a(i) e b(i). Escolhe-se um elemento h R G \ { 1 }

Calcule uma lista C = (C0 , C1 , C2 , . . . , Ct1 ), tal que Ci = g ai hbi .

Ve rs
3O

Esta lista contm um comprometimento para as partilhas de cada participante, usando o esquema de comprometimento de Pedersen (o valor comprometido ai , e bi o elemento aleatreo3 ). Cada participante recebe a lista inteira.

SecVrf(C, a(i), b(i)): cada participante Pi verica se


t1

(O ndice i do participante Pi , e o ndice j iterado para todos os participantes)

esquema de comprometimento de Pedersen detalhado na pgina 11.2.

Pr e
Cj
j =0 (ij )

Share(s): escolha dois polinmios aleatreos, com S = a0 :

= g a(i) hb(i) .

lim

O esquema vericvel de compartilhamento de segredos de Pedersen, mostrado na prxima Construo, uma extenso do esquema de Shamir usando o problema decisional Die-Hellman para a vericao. Aps construir o polinmio a(x) que servir para distribuir o segredo usando o esquema de Shamir, um outro polinmio b(x) gerado para permitir a vericao 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.

in ar

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, que pode ser executado por cada participante a m de vericar se sua partilha est correta.

notas de aula verso 79 - Jernimo C. Pellegrini

190

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS Combine(H ): a recuperao do segredo a partir de um conjunto H de pontos do polinmio a se d da mesma forma como no esquema de Shamir.

t1

Cj
j =0

(ij )

= g a0 hb0

(i0 )

g a1 hb1 h

(i1 )

g a2 hb2

= g a0 +a1 i+a2 i =g
a(i) b(i)

+... b0 +b1 i+b2 i2 +...

Pr [S = s|V, C ] = Pr [S = s] .

Ve rs

12.5

Os esquemas de compartilhamento vericvel permitem aos participantes vericar suas partilhas, mas no permitem que um expectador possa vericar que todos agiram honestamente. 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, 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, publicamente vericvel. Este esquema depende do protocolo para vericao de igualdade de logaritmos descrito na Seo 11.2.2.

Um fato importante sobre este esquema que a vericao s pode ser realizada individualmente cada participante pode vericar sua partilha, mas precisa usar sua partilha secreta (a(i), b(i)).

Compartilhamento publicamente vericvel

Pr e

Demonstrao. (Rascunho) Seja P um conjunto de t 1 participantes. Cada Pi tem um par (a(i), b(i)), e todos tem a lista de comprometimentos g ai hb i. 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.

lim

Teorema 12.16. O esquema de compartilhamento da Construo 12.15 protege o distribuidor com sigilo perfeito. Em outras palavras, seja t o qurum para revelao do segredo, e P um conjunto de participantes de posse de seus segredos e comprometimentos (a(i), b(i)). Denotamos por C a lista de comprometimentos e V = (P {(a(i), b(i)}. Ento

in ar
( i2 )

Para vericar que SecVrf de fato garante que a partilha est correta, basta substituir os valores de Cj no produtrio:

notas de aula verso 79 - Jernimo C. Pellegrini

12.5. COMPARTILHAMENTO PUBLICAMENTE VERIFICVEL

191

A Construo a seguir o protocolo de compartilhamento publicamente vericvel de Schoenmakers. Construo 12.18 (Compartilhamento de segredos publicamente vericvel (esquema de Schoenmakers)).

Gen(1n ): selecione um primo q com n bits e gere um grupo G de ordem q , com dois geradores g e h. Cada participante escolhe uma chave privada xi R Zq e publica sua chave pblica yi = hxi . Share(s): crie um polinmio aleatreo com coecientes em Zq :
t1

p(x) =
j =0

aj xj ,

e determine que s = a0 . importante que s no seja escolhido e inserido no polinmio deve ser determinado em Zq uniformemente. Publique para todo 0 j < t o comprometimento Cj = g aj

Usando os valores Cj publicados, qualquer um pode computar


t1

O distribuidor deve ento publicar a assinatura baseada no protocolo DLEQ para provar que Xi = g p(i) Yi = yi
p(i)

Ve rs
wi R Zq a1i g wi
wi a2i yi

Ou seja, o distribuidor simula DLEQ calculando

c H [i(Xi , Yi , a1i , a2i )]

ri = wi p(i)c

Note que o desao c no aleatreo, mas calculado usando as informaes pblicas calculadas at o momento. A transcrio publicada para cada i [(a1i , a2i ), c, ri ] .

Pr e
Yi = yi
p(i)

e as partilhas p(i) encriptadas para todo o i < N : .

Xi =

i Cj .

j =0

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

192

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS Combine: um conjunto qualicante reconstri o segredo da seguinte map(i) neira: cada participante decripta sua partilha Si = hi usando sua chave xi privada yi = g calculando Si = hi = Yi .

Em seguida, dados todos os valores Si , o segredo S = hs obtido usando o polinmio interpolador de Lagrange.
t i = Si i=1 i=1 t

hp(i)
t i=1

=h

p(i)i

onde i o coeciente de Lagrange: i =

SecVrf: para vericar que as partilhas esto corretas, necessrio computar


t1

Pr e
Xi =
j =0 p(i)

usando os valores Ci publicados. Pode-se ento tomar


c A1i = g ri Xi ri c A2i = yi Yi

Ve rs

A primeira observao que devemos fazer que de fato o algoritmo SecVrf no depende de informao que no seja pblica. O algoritmo SecVrf, como descrito na Construo, no tem sua corretude clara. Demonstramos ento que se o algoritmo terminar com sucesso, o distribuidor ter se comprometido com todos os p(i), de forma que todo conjunto qualicante possa reconstruir o mesmo segredo g s . Como p(i) nico, demonsp(i) traremos apenas que cada Xi e cada Yi so g p(i) e yi , que exatamente o que o distribuidor poderia modicar. Teorema 12.19. Se Xi = g p(i) e Yi = yi ritmo SecVrf sero de fato idnticos. , os hashes comparados pelo algo-

Demonstrao. As cadeias usadas como entrada para os hashes so iguais nos p(i) Xi e Yi . Mostramos que se Xi = g p(i) e Yi = yi ento A1i = a1i e A2i = a2i ,

e vericar que c = H [i(Xi , Yi , A1i , A2i )]

lim
= hp(0) = hs ,
i=j

j . ji

i Ci

in ar

p(i)

1/xi

notas de aula verso 79 - Jernimo C. Pellegrini

12.5. COMPARTILHAMENTO PUBLICAMENTE VERIFICVEL e que ento os hashes sero iguais.


c c A1i = g ri Xi = g wi p(i)c Xi

193

= g wi p(i)c (g p(i) )c = g wi p(i)c+p(i)c = g wi = a1i

O Exerccio 103 pede a demonstrao do seguinte Teorema. Teorema 12.20. O esquema de Schoenmakers homomrco.

Demonstrao. Seja A o algoritmo que, dados g a , g b , g c e g bc calcula ecientemente g ab . Sejam x = g a e y = g b . Para resolver o problema Die-Hellman queremos obter z = g ab usando A. Escolhemos aleatoreamente a , b , c e usamos xa , y b , g c , y b c como entradas para A. Como

o Ve rs
e conseguimos calcular g ab .

obtemos, com probabilidade no desprezvel de sucesso , o valor z = g aa bb como sada de A. Mas 1 g ab = (z ) a b

Lema 12.22. Se t 1 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, A reconstruo resulta no segredo para qualquer conjunto qualicante de participantes;

Pr e
xa = (g a ) yb = gb
a b

Lema 12.21. Sejam g , h, Xi , Yi , yi como na descrio do esquema de Schoenmakers. Sabemos que h = g a , Xi = g b e yi = g c para determinados a, b, c. Um algoritmo eciente que quebre a encriptao das partilhas ou seja, que calcule hpi = g ab a partir de g a , g b , g c e g bc pode ser usado para resolver ecientemente o problema Die-Hellman.

= g aa = g bb ,

lim

Os Lemas a seguir sero usados na demonstrao de segurana do esquema de Schoenmakers. O primeiro deles estabelece que presumida a diculdade do problema Die-Hellman, quebrar a encriptao de um partilha no esquema de Schoenmakers difcil.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

194

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS Nenhum conjunto no qualicante de participantes deve conseguir obter o segredo.

12.5.1

Segredos no aleatreos

O distribuidor, aps executar Share, tambm publica U = hs . Depois de executar Combine, saberemos que = U/hs e poderemos reconstru-lo.

12.6

Encriptao com qurum

Ve rs

possvel usar o criptossistema El Gamal compartilhando a chave privada entre diversos participantes, mas de tal forma que que um qurum mnimo possa decifrar mensagens sem revelar a chave secreta. Cada participante Pi do conjunto P recebe uma partilha si da chave (o compartilhamento feito usanod o esquema de Shamir), e publica um comprometimento hi = g si . O segredo pode ser reconstrudo por t + 1 participantes. Temos ento

A chave pblica ser (q, g, h), com h = g s . Para decifrar o texto encriptado (a, b) = (g k hk m) sem obter diretamente a chave privada, t + 1 participantes usam o seguinte procedimento. Cada Pi publica zi = xsi , junto com uma prova de que logg hi = logx zi .

Pr e
s=
i

aps executar Share, publique U = H(hs ). Depois de executar Combine a obteno de a partir de hs e U trivial ( = U hs ).

P,i =
lP \{ i }

lim
si P,i l . li

A descrio que demos do esquema de Schoenmakers presume que o segredo hs , sendo s escolhido aleatoreamente (durante a construo do polinmio aleatreo). De fato, precisamos que s seja escolhido uniformemente para que o esquema seja seguro. Isso o torna aparentemente intil, mas no este o caso: podemos transform-lo em outro esquema, com a mesma segurana, que funciona com segredos escolhidos em Zq . Suponha que o segredo que queiramos compartilhar seja

in ar

Demonstrao. O esquema de comprometimento de Chaum-Pedersen consisij 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 ChaumPedersen ser de conhecimento zero quando o vericador honesto, nenhum conjunto com menos de t participantes deve conseguir obter o segredo.

notas de aula verso 79 - Jernimo C. Pellegrini

12.7. NOTAS O texto claro b xs x s =x m= =


i

195

P,i zi .

Os participantes podem obter a chave privada, mas presume-se que queiram preserv-la e apenas decriptar mensagens.

Ve rs

Shamir e Blakley inventaram independentemente seus esquemas pioneiros de compartilhamento de segredos, publicados na mesma poca [65, 64]. A frmula de Lagrange para o polinmio interpolador normalmente apresentada na literatura de Mtodos Numricos (ou Clculo Numrico), quando da discusso sobre interpolao. O livro de Neide Franco [66] uma boa introduo ao assunto. A descrio dada aqui para o esquema de Ito-Nishizeki-Saito semelhante dada por Smart em seu livro [67], onde j se aplica a modicao sugerida por Benaloh e Leichter [68]. O artigo original de Mitsuru Ito, Akira Saito e Takao Nishizeki foi publicado na conferncia GLOBECOM87 [69]. O primeiro esquema de compartilhamento vericvel foi descrito em 1985 por Benny Chor, Sha Goldwasser, Silvio Micali a Baruch Awerbuch [70]. Aquele esquema j era publicamente vericvel. Outro esquema de compartilhamento de segredos com vericao foi descrito por Rabin e Ben-Or [71]. O esquema de Pedersen foi descrito em um artigo em 1992 [72]. Markus Stadler publicou um esquema publicamente vericvel em 1996 [73]. O esquema de Stadler funciona com estruturas arbitrrias de acesso, mas depende de uma conjectura no padro, chamada de problema do logaritmo duplo: dado

conjectura-se ser difcil determinar x. Eiichiro Fujisaki e Tatsuaki Okamoto publicaram seu esquema em 1998 [74]. Shoenmakers publicou seu esquema de compartilhamento publicamente vericvel em 1999 [75], 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 proposta pela primeira vez por Pedersen em 1991 [76], modicada de vrias formas. O trabalho de 1999 realizado por Rosario Gennaro, stanislaw Jarecki, Hugo Krawczyk e tal Rabin [77] aperfeioa a ida, exibindo um mtodo com demonstrao de segurana.

Pr e
y = g (h
x

lim

12.7

Notas

in ar

si P,i

notas de aula verso 79 - Jernimo C. Pellegrini

196

CAPTULO 12. COMPARTILHAMENTO DE SEGREDOS

12.8

Exerccios

Ex. 99 Demonstre o Teorema 12.9.

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 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, comparandoa com a do esquema antigo e com as dos outros esquemas que produzir.

Ve rs

Pr e

lim

Ex. 101 Na demonstrao do Teorema 12.13 dissemos que o mesmo vale quando o participante tem vrios valores si , ..., sk . Complete a demonstrao mostrando que esta armao verdadeira.

in ar

Ex. 100 Suponha que o esquema de compartilhamento de segredos de Shamir usado para manter uma chave secreta (usada para encriptar um testamento) em sigilo. O nmero de participantes n e o qurum mnimo k . Quando k pessoas decidiram revelar a chave, constataram que o segredo revelado era invlido (a chave no decriptou o documento). Mostre como determinar o valor correto da chave secreta usando dois tipos de operao: interpolao de polinmios e clculo do valor do polinmio em um ponto, minimizando o nmero de interpolaes.

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 13

Provas de Conhecimento Zero


13.1 Provas Interativas

Victor executa em tempo polinomial.

Ve rs
1 Linguagens

necessrio tambm denir claramente o que so os fatos que so provados em um sistema de prova interativa. O provador deve convencer o vericador de que um elemento x pertence a alguma linguagem1 . 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 vericador aceite a prova: V 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 (P, V ) um sistema de prova interativa para uma linguagem L se V executa em tempo polinomial e valem as propriedades listadas a seguir. i) Completude: para todo x L, Pr[ P, V (x) = 1] 2 3

so denidas no Apndice C (Denio C.30).

Peggy pode executar sem limite de tempo, mas as mensagens que enviar a Victor devem ter tamanho polinomial.

Pr e
197

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 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. Em um sistema de prova interativa temos as duas restries a seguir:

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

198

CAPTULO 13. PROVAS DE CONHECIMENTO ZERO

ii) Consistncia: para todo y / L, e para todo ator A Pr[ A, V (y ) = 1] 1 . 3

Da mesma forma que na descrio da classe2 BPP , a escolha dos valores 2/3 e 1/3 arbitrria. Denio 13.2 (Classe IP ). A classe IP formada por todas as linguagens para as quais existe sistema de prova interativa. O seguinte Teorema relaciona as classes IP , N P e PSPACE . Teorema 13.3. N P IP = PSPACE .

13.2

Conhecimento zero

Ve rs
2 Veja

A nalidade de um sistema de prova interativa possibilitar que um provador convena um vericador de algo, mas sem que o vericador ganhe qualquer informao que possa ser usada posteriormente. Por exemplo, se Peggy se apresenta para Victor como policial disfarada e envia a ele uma cpia de suas credenciais, Victor passa a ter um documento que pode usar para mostrar a outros que Peggy policial. Se, ao invs disso, Peggy puder convencer Victor, sem dar-lhe algo que Victor no pudesse ter obtido sozinho, ela ter se protegido e dizemos que neste caso Peggy um provador de conhecimento zero (porque Victor no ganhou conhecimento algum aps interagir com Peggy). Suponha que temos um sistema de prova interativa (P, V ). Durante a interao com P , o vericador V obter dados (ele ter no mnimo uma transcrio da interao, com todas a mensagens trocadas entre ambos). Diremos que P de conhecimento zero se V somente obtm dados que ele mesmo poderia ter gerado, sem a participao do provador P . Mais detalhadamente, para que P seja de conhecimento zero, ento para todo vericador V , e para toda entrada x, existe algum algoritmo polinomial M que simule a interao de V com P , produzindo os mesmos resultados para as mesmas entradas, mas sem acesso a P . Admitimos que M (x) falhe com baixa probabilidade em produzir a mesma sada que P, V (x) Denio 13.4 (Conhecimento zero perfeito). Seja (P, V ) um sistema de prova interativa. Dizemos que (P, V ) de conhecimento zero perfeito se para todo ator polinomial V existe um algoritmo polinomial M tal que para toda entrada x, i) M falha com probabilidade no mximo 1/2, retornando um smbolo FALHA.

ii) Seja m(x) a varivel aleatrea que descreve a distribuio de M (x) quando M (x) = FALHA. Ento m(x) tem a mesma distribuio que P, V (x).
a Denio C.27, na Seo C.6 do Apndice C.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

13.2. CONHECIMENTO ZERO

199

Denio 13.6 (Conhecimento zero estatstico). Seja (P, V ) um sistema de prova interativa. Dizemos que (P, V ) de conhecimento zero perfeito se para todo ator polinomial V existe um algoritmo polinomial M tal que para toda entrada x, as distribuies M (x) e P, V (x) so estatisticamente indistinguveis.

13.2.1

Isomorsmo de grafo

H um problema de deciso importante relacionado a isomorsmo de grafos3 Denio 13.7 (ISOMORFISMO-DE-GRAFO). Dados G1 = (V1 , E1 ) e G2 = (V2 , E2 ) dois grafos com o mesmo nmero de vrtices, determinar se G1 e G2 so isomorfos. O problema ISOMORFISMO-DE-GRAFO est em N P (o Exerccio 106 pede a demonstrao). Proposio 13.8. ISOMORFISMO-DE-GRAFO est em N P . No se sabe se ISOMORFISMO-DE-GRAFO est em P . Suponha que Peggy quer poder provar que detm uma certa informao, mas no quer divulg-la a quem quer que seja. Construo 13.9 (Sistema de prova interativa para ISOMORFISMO-DE GRAFO). Antes de iniciar a prova, Peggy efetua as seguintes operaes: 1. Peggy gera um grafo G1 aleatoriamente.

Ve rs
3 Denimos

2. Codica seu segredo como uma permutao dos vrtices de G1 . 3. Calcula G2 = ((V1 ), E1 ).

4. Publica G1, G2 (mas no ).

Quando Peggy quiser provar a Victor que conhece o segredo, ambos usam o seguinte protocolo: 1. Peggy escolhe aleatoriamente uma permutao R Sn (onde n = |V1 |). 2. Peggy Calcula H = (G2 ) e envia H para Victor. 3. Victor escolhe um bit b R {0, 1}, e o envia a Peggy; ele est pedindo para que Peggy mostre a bijeo que transforma Gb em H .
isomorsmo de grafos na Seo C.2.

Pr e

lim

in ar

Denio 13.5 (Conhecimento zero computacional). Seja (P, V ) um sistema de prova interativa. Dizemos que (P, V ) de conhecimento zero perfeito se para todo ator polinomial V existe um algoritmo polinomial M tal que para toda entrada x, as distribuies M (x) e P, V (x) so computacionalmente indistinguveis.

notas de aula verso 79 - Jernimo C. Pellegrini

200

CAPTULO 13. PROVAS DE CONHECIMENTO ZERO

4. Peggy envia uma das duas permutaes: = se b = 1 se b = 2

5. Victor aplica a permutao a Gb e verica se o resultado igual a H . Se for, sua sada um; seno zero.

O diagrama a seguir ilustra a situao em que Victor escolhe G1 . Peggy tem a permutao e tem tambm e H (gerados aleatoriamente). Victor no tem nem ; ele tem os trs grafos e uma permutao , que transforma G1 em H . P V

GO 1

lim
G1 g

Teorema 13.10. 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. Completude: Se os grafos G1 e G2 realmente so isomorfos, ento H ser isomorfo aos dois grafos, e a permutao enviada a Victor Victor transforma um deles em H . Neste caso Victor aceita a prova e emite um como sada. A probabilidade de Victor aceitar a prova quando os grafos so isomorfos 1. Consistncia: Se G1 e G2 no so isomorfos, ento no existe H isomorfo a ambos. Quando Victor, aps receber H , escolhe G2 , Peggy pode enviar-lhe e Victor aceita a prova. Mas quando Victor escolhe G1 , no existe permutao que Peggy possa enviar, e Victor rejeita a prova (sua sada ser igual a zero). A probabilidade de Victor aceitar a prova quando os grafos no so isomorfos no mximo 1/2. Conhecimento zero: simulador S mostrado a seguir produz a transcrio de uma interao.

Ve rs

S(G1 , G2 ): b R { 0, 1 } // tenta adivinhar a escolha de V permutao aleatrea dos vrtices de Gb H = (Gb ) b R { 0, 1 } // escolha de V se b = b reinicie escreva (H, b, )

Pr e

 ' /H G2 o G2 H Quando Victor escolhe G2 , receber apenas , mas ainda no ter nem . Aps a execuo do protocolo, Victor no tem nada que no pudesse computar sozinho: ele tem H e uma permutao que transforma Gb em H (ele poderia ter gerado aleatoriamente sem interagir com Peggy).

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

13.3. -PROTOCOLOS

201

13.3

-protocolos

H uma classe especial de protocolos para prova de conhecimento zero onde o vericador e a interao sempre da forma descrita a seguir. 1. P envia uma mensagem a V , comprometendo-se com um valor c;

2. V envia uma sequncia aleatrea d de bits para P (esta sequncia de bits um desao); 3. P envia uma resposta s para V , que nalmente decide se aceita ou no.

A representao grca deste tipo de protocolo ilustrada na prxima gura. P c d s

Denio 13.11 (-protocolo). Seja protocolo de prova de conhecimento zero para uma linguagem L onde cada elemento um par (a, b) (em outras palavras, L uma relao entre dois conjuntos A e B ). um -protocolo quando as mensagens trocadas entre os participantes so da forma descrita no texto (comprmetimento, desao e resposta), e os seguintes requisitos so satisfeitos. i) Completude: se P e V seguem o protocolo e P honesto (ou seja, P de fato conhece (x, y ) L), V sempre aceita.

Ve rs

ii) Consistncia especial: sejam x A e duas transcries do protocolo em que V aceita, (c, d, s) e (c, d , s ), com d = d (ou seja, duas transcries com mesma entrada compartilhada x e mesma mensagem inicial c, mas desaos d, d diferentes). Ento deve ser possvel calcular ecientemente y B tal que (x, y ) L.

iii) 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 d com distribuio uniforme.

A propriedade de consistncia especial implica que um provador desonesto ter probabilidade de sucesso menor ou igual a 1/|D|, onde D o conjunto de possveis desaos.

Pr e

lim
V

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

202

CAPTULO 13. PROVAS DE CONHECIMENTO ZERO

13.4

Protocolos de Identicao

13.4.1

Esquema de Identicao de Feige-Fiat-Shamir

Construo 13.12 (Esquema de identicao de Feige-Fiat-Shamir).

1. Uma autoridade T escolhe dois primos grandes p e q , e publica seu produto N = pq . Os fatores p e q no so divulgados.

Para Peggy provar para Victor que possui s, ambos executam o protocolo a seguir. 1. Peggy escolhe r R {1, . . . , N 1}, calcula x = r2 (mod N ), e envia x para Victor. 2. Victor escolhe um bit b R { 0, 1 } e envia b para Peggy. 3. Peggy calcula y = rsb (mod N ) e envia y para Victor. 4. Victor aceita a identicao se y = 0 e y 2 = xv b (mod N ). Teorema 13.13. O esquema de identicao de Feige-Fiat-Shamir um sistema de prova interativa de conhecimento zero.

Ve rs

A probabilidade de uma prova correta ser aceita 1. Consistncia: suponha que um atacante tenta se passar por Peggy. H duas possibilidades: Victor escolhe o bit 0. Neste caso, o atacante tem sucesso porque ele mesmo escolheu r e pode enviar r(s0 ) = r de volta. A probabilidade de acerto 1. Victor escolhe o bit 1. Neste caso, o atacante no tem como calcular y = rs1 porque no tem o valor de s (e no consegue calcular razes quadradas mdulo N ecientemente). O atacante somente pode fazer uma escolha aleatrea, e a probabilidade de acerto desprezvel no tamanho de N .

Demonstrao. Mostramos as propriedades de completude, consistncia e conhecimento zero. Completude: Victor verica se y 2 = xcb (mod N ). E realmente, y 2 = (rsb )2 = r2 s2b = x(s2 )b = xv b .

Pr e

lim

2. Peggy escolhe aleatoriamente um inteiro 1 s N 1, calcula v = s2 e envia v para T . Esta ser a chave pblica de Peggy.

in ar

Peggy e Victor pretendem se comunicar via rede, mas Victor quer ter certeza de que est realmente interagindo com Peggy, e no com algum se passando por ela. Para esta situao usamos esquemas de identicao.

notas de aula verso 79 - Jernimo C. Pellegrini

13.4. PROTOCOLOS DE IDENTIFICAO

203

Corolrio 13.14. O protocolo de identicao de Fiat-Feige-Shamir um protocolo.

13.4.2

Protocolo de Schnorr

Outro protocolo de identicao o de Schnorr. O provador mostra que conhece o logaritmo discreto de um nmero y , sem passar ao vericador qualquer informao adicional a respeito do logaritmo. Construo 13.15 (Protocolo de identicao de Schnorr). O provador P quer provar a V que conhece um segredo z Zq . Os parmetros que devem ser denidos inicialmente so: p e q primos tais que q |p 1.

g , um gerador do grupo de unidades Z p.

v = g z (mod p), que igual a g qz (mod p).

Ve rs

O protocolo descrito a seguir. P: k R Zq . Envia a = g k para V. V: envia r R { 1, . . . , 2t } para P.

P: envia c = k + zr (mod q ) para V. V aceita se e somente se a g c v r (mod p).

Teorema 13.16. O protocolo de Schnorr de um sistema de prova interativa de conhecimento zero perfeito para vericador honesto. Demonstrao. Dividiremos a prova em trs partes completude, consistncia e conhecimento zero.

t, um parmetro de segurana.

Pr e

lim

Demonstrao. O protocolo da forma necessria (comprometimento, desao, resposta). Completude e conhecimento zero j foram demonstrados. Resta observar que tendo duas transcries com x = r2 , mas com b = 0 e b = 1 fcil determinar r.

in ar

No primeiro caso o atacante tem sucesso com probabilidade um; no segundo, com probabilidade desprezvel. Assim, a probabilidade de sucesso em uma tentativa 1/2 + negl(N ). Se o protocolo for repetido t vezes, a probabilidade de sucesso do adversrio ser desprezvel. Conhecimento Zero: esta parte da demonstrao pedida no Exerccio 108.

notas de aula verso 79 - Jernimo C. Pellegrini

204

CAPTULO 13. PROVAS DE CONHECIMENTO ZERO Completude: trivial. Temos a = gc vr = g k+zr ur = g k+zr (g z )r = g k+zr g zr = gk ,

e portanto a probabilidade de V aceitar uma prova correta 1. Consistncia: suponha que P no tenha z e tente convencer V do contrrio. P pode tentar a seguinte estratgia:

2) Tente adivinhar o valor de r (antes de enviar a mensagem para V ). 3) Envie a = g k v r para V . 3) Receba r.

A probabilidade de P conseguir sucesso desta forma em uma rodada do protocolo a de adivinhar corretamente t ou, errando nesta tentativa, conseguir escolher o valor correto em Zp : 1 + negl(|p|). 2t Conhecimento zero: mostramos um simulador S que, a partir de uma entrada x e dos bits aleatreos usados por V , produz uma transcrio de P, V (x). S(v ): k R Zp r R { 1, . . . , 2t } c g c v r (mod p) escreva g k ; r; c O simulador pode executar em tempo polinomial, e as distribuies dos elementos na transcrio so as mesmas que aquelas em uma execuo P, V (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 V 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 levar tempo exponencial. Corolrio 13.17. O protocolo de Schnorr um -protocolo.

Ve rs

Pr e

4) Se r igual ao valor adivinhado, envie k para V . Seno, escolha aleatoriamente x em Zp .

lim

1) Fixe k .

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

13.5. TRANSFORMANDO PROVAS INTERATIVAS EM NO INTERATIVAS205

13.5 13.6 Notas

Transformando provas interativas em no interativas

Ve rs

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 Crescenzo [80] e extensivamente no livro de Oded Goldreich [10]. -protocolos foram formalizados por Ronald Cramer em sua tese de doutorado [81]. Em sua tese, Cramer diz que escolheu o nome porque sig lembra zig-zag e ma abreviao de Merlin-Arthur, que o tipo de protocolo onde os bits aleatreos usados pelo vericador so pblicos (em um -protocolo isto o mesmo que exigir que o vericador seja honesto).

Pr e

lim

Provas de conhecimento zero foram propostas por Sha Goldwasser, Silvio Micali e Charles Racko em 1985 [78, 79]. 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 exigncia de que as tas aleatreas dos atores sejam diferentes). A Figura a seguir mostra duas mquinas de Turing acopladas desta forma.

in ar

Protocolos de comprometimento a partir de -protocolos

notas de aula verso 79 - Jernimo C. Pellegrini

206

CAPTULO 13. PROVAS DE CONHECIMENTO ZERO

Amos Fiat e Adi Shamir desenvolveram um mtodo para construir esquemas de assinatura a partir de esquemas de identicao [82]. Este esquema infelizmente no seguro, como mostrado por Sha Goldwasser e Yael Kalai [83, 84].

Exerccios

Ex. 105 Porque no modelo computacional apresentado neste Captulo dissemos que A e B devem ter geradores pseudoaleatreos diferentes? Ex. 106 Demonstre o Teorema 13.8.

Ex. 107 Escolha problemas em N P e construa para eles sistemas de prova interativa. Ex. 108 Complete a prova de que o esquema de Feige-Fiat-Shamir de conhecimento zero (nossa demonstrao do Teorema 13.13 omitiu esta parte). Ex. 109 Prove o Corolrio 13.17.

Ve rs

Pr e

Ex. 110 Se voc tem familiaridade com Lgica, discorra sobre as propriedades de completude e consistncia de um sistema de prova interativa, comparando-as com aquelas denidas em Lgica.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 14

(Este Captulo ainda est incompleto)

14.1

Transferncia Inconsciente

1. Alice escolhe dois primos p e q grandes e calcula N = pq .

Ve rs

2. Alice encripta a mensagem m de alguma forma, mdulo N e com uma chave k . O resultado o texto cifrado c. A fatorao de N deve permitir decriptar a mensagem.

3. Alice envia N, c para Bob.


2 4. Bob escolhe x R Z N e envia y = x (mod N ) para Alice.

5. Alice calcula as quatro razes quadradas de y (que so x, x, y, y ). Ela pode faz-lo ecientemente porque tem p e q . Alice ento escolhe uma das razes aleatoreamente e envia para Bob. 6. Se Bob recebeu uma das razes diferentes de x ele pode fatorar N e decifrar c em m. Se recebeu uma das outras duas razes, no conseguir decifrar c. 207

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.

Pr e

lim

Protocolos Seguros com Dois Participantes

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

208CAPTULO 14. PROTOCOLOS SEGUROS COM DOIS PARTICIPANTES Alice no sabe se Bob decifrou a mensagem ou no, porque x foi escolhido aleatoreamente por Bob, e Alice no sabe qual dos quatro valores x. O protocolo obviamente funciona usando o RSA para encriptao, mas tambm funcionar com qualquer criptossistema assimtrico, desde que baseado na hiptese da fatorao de inteiros. Em outra forma de transferncia inconsciente Alice envia duas mensagens e Bob recebe uma delas (com probabilidade 1/2 para cada uma), sem que Alice saiba qual mensagem foi enviada. As duas formas de transferncia inconsciente so equivalentes.

Notas

Ve rs

Pr e

lim

A ideia de transferncia inconsciente foi proposta em 1981 por Rabin [85], e por Even, Goldreich e Lempel [86] em 1982. A demonstrao de que as duas variantes de transferncia inconsciente so equivalentes foi dada por Claude Crpau em 1988 [87]. O livro de Carmit Hazay e Yehuda Lindell [88] e o segundo volume do livro de Goldreich [2] tratam detalhadamente de protocolos criptogrcos com dois participantes.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 15

com a exigncia de que aps a execuo do protocolo o conhecimento de cada participante a respeito dos valores de entrada dos outros seja o mesmo que ele tinha antes do incio do protocolo. Quando construmos protocolos com mltiplos participantes, h diversos aspectos que levamos em considerao. Estratgia de corrupo: h dois modelos para a estratgia de corrupo usada pelo adversrio. Um deles o modelo esttico, onde h um conjunto 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.

Ve rs

comum tambm diferenciar protocolos para duas partes de protocolos para muitos participantes. Estes aspectos do origem a diferentes modelos de ambiente. Estes ambientes idealizados so usados na construo do protocolo e tambm na demonstrao de sua segurana. 209

Pr e
f (x1 , x2 , . . . , xn )

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. Cada participante Pi conhece um valor xi , e o objetivo calcular uma funo

lim

Computao Segura com Mltiplos Participantes

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

210CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES

15.1

Um protocolo para participantes semi-honestos

f (x1 , x2 , x3 ) = x1 x2 + x3

(mod q ).

A Figura a seguir mostra a funo como um circuito envolvendo somas e multiplicaes. A varivel x4 o valor intermedirio, igual a x1 x2 . x1 x2 x3 x4

Teorema 15.1. Seja S o segredo no esquema de compartilhamento de segredos de Shamir, e si a partilha de Pi . Ento, para o segredo

o
f (x) g (x) = =

as partilhas so

Ve rs

A seguir desenvolvemos em detalhes a adio e multiplicao de segredos compartilhados. Adio Inicialmente determinaremos como obter partilhas para um segredo, S + S , dadas as partilhas de S e de S . Do Teorema 15.1 imediatamente obtemos uma maneira de computar a soma de dois segredos, dadas as partilhas de ambos: basta tomar y = 0. S precisamos ento somar as partilhas, como mostramos a seguir. Suponha que cada Pi tenha suas partilhas f (i) e g (i), para dois segredos S e S . Suponha tambm que os dois polinmios sejam a + a1 x + a2 x2 + + ak xk b + b1 x + b2 x2 + + bk xk .

Pr e

O protocolo funciona usando compartilhamento de segredos. Cada participante Pi distribui partilhas de seu valor xi para os outros. A partilha enviada de Pi para Pj xj i. Se pudermos usar as partilhas de entrada de uma porta do circuito para calcular partilhas do valor de sada, poderemos avaliar o circuito inteiro sem conhecer os valores intermedirios. O seguinte Teorema nos d uma forma de computar a soma de partilhas de Shamir.

S = x + yS si = x + ysi .

lim
+

f (x1 , x2 , x3 )

in ar

No protocolo descrito a seguir os participantes so semi-honestos e tem poder ilimitado. Os participantes computam o valor de uma funo f (x0 , x1 , . . .) denida sobre um corpo nito Fq , sem revelar as variveis xi . Para ilustrar o funcionamento do protocolo presumimos que h tres participantes, P1 , P2 e P3 , e cada um deles conhece uma das variveis x1 , x2 , x3 . Tambm presumimos que a funo a ser calculada

notas de aula verso 79 - Jernimo C. Pellegrini

15.2. SEGURANA Podemos somar os dois polinmios h(x) = f (x) + g (x) = (a + b) + (a1 + b1 )x1 + (a2 + b2 )x2 + + (ak + bk )xk

211

Assim, cada participante Pi calcula sua partilha da sada: h(i) = f (i) + g (i). onde h(i) a partilha de Pi para S + S .

m(i) = Ab(i). Cada participante calcula c(i) = a(i)b(i)

O valor c(i) no a partilha que queremos, mas podemos obt-la a partir dele. Aps comput-lo, Pi cria um novo polinmio aleatreo e compartilha c(i) com os outros participantes, enviando a cada Pj o valor ci (j )1 . Cada participante Pj ento calcula m(j ) = ri ci (j ),

onde ri o vetor de recombinao2 .

Ve rs
15.2 Segurana
1 Para 2 Veja

Teorema 15.2. O clculo das partilhas de multiplicao descrito no texto est correto, ou seja, m(i)ri = AB.
i

Observamos como a execuo de um protocolo na prtica: h participantes honestos, participantes desonestos e h tambm tudo o que externo aos participantes e ao protocolo. Dentre estas entidades e fatores externos h a entrada enviada a cada participante e o adversrio. Chamamos este conjunto de entidades externas de ambiente .
facilitar a leitura, pode-se ler ci (j ) como c, de i para j . a descrio do polinmio interpolador na Seo 12.1.1, pgina 183.

Pr e
i

lim

Multiplicao Temos dois segredos A e B compartilhados, e cada participante Pi tem partilhas a(i) e b(i). Queremos computar as partilhas m(i) do segredo M = AB , sem que os participantes tenham acesso a A, B ou M (a no ser com o qurum necessrio). Se tomarmos x = 0 no enunciado do Teorema 15.1, notamos que as partilhas que queremos calcular so

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

212CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES Incluiremos conceitualmente o adversrio A (que externo ao protocolo) no ambiente. O adversrio pode corromper participantes. Quando Pi corrompido, A tem acesso a todo o histrico de mensagens de Pi , alm de poder controlar i as aes de Pi . Denotamos um participante corromido por P De maneira simplicada, ento, construmos dois modelos: Um mundo real, com o conjunto de participantes Pi executando um protocolo em um ambiente Z ;

Um mundo ideal onde trocamos os participantes executando por uma funcionalidade incorrompvel F .

No mundo real, h diversos participantes Pi , que esperamos que sigam o protocolo, e um ambiente Z , que inclui um adversrio.

Pr e
P1 P2 3 P

Ve rs

No mundo ideal, ao invs de participantes honestos seguindo um protocolo, modelamos uma funcionalidade ideal F , que incorrompvel e realizar a computao necessria para que o protocolo funcione. Tambm inclumos um simulador S , que simula a atuao de participantes desonestos. Como ilustrado na prxima gura, os participantes no interagem entre si eles repassam suas mensagens3 entre F e Z (poderamos cham-los de participantes vazios4 ) ou entre F e S .

lim
Z A P1 P2 3 P

Queremos poder mostrar que participantes honestos executando o protocolo no mundo real obtero o mesmo resultado que esta funcionalidade perfeita em um mundo ideal desde que haja participantes honestos em quantidade suciente. Os dois modelos de mundo que usamos so descritos a seguir.

3 H autores que denem o modelo sem os participantes, como se as mensagens fossem trocadas diretamente entre F e Z . 4 Ou dummy parties em Ingls.

in ar
Z S

notas de aula verso 79 - Jernimo C. Pellegrini

15.2. SEGURANA

213

i) o ambiente envia aos participantes honestos suas entradas; ii) o adversrio envia entradas aos participantes desonestos; iii) os participantes devolvem seus resultados.

Ve rs

Dizemos que h um adversrio, entidade abstrata, que corrompe participantes. Esta apenas uma abstrao que torna a demonstrao mais conveniente, e nota-se facilmente que para o objetivo de demonstrar a segurana do protocolo no faz diferena se o participante age por conta prpria ou seguindo instrues deste adversrio abstrato. Presumimos que h uma entidade incorruptvel intermediando as mensagens, de acordo com a especicao do protocolo. A demonstrao nos dar justamente a garantia de que o protocolo, quando executado sem um intermediador incorrompvel, funciona de maneira equivalente simulao usando esta entidade. Em outras palavras, o protocolo projetado para oferecer as mesmas garantias que um intermediador incorrompvel. Dizemos que o protocolo realiza o intermediador incorrompvel de maneira segura. Queremos que seja indiferente ao ambiente se executamos o protocolo ou se usamos este intermediador. por isso que usamos os termos

Quando um participante Pi se corrompe, a funcionalidade F imediatamente deixa de ouvir as portas honestas de Pi , e envia todo o histrico de mensagens de Pi para S , de maneira que S possa a partir de ento simular para Z o comportamento de Pi . Depois do trmino da execuo, a sada de Z um nico bit, que representa sua tentativa de adivinhar se a execuo se deu no mundo ideal ou no real. Dizemos que um protocolo seguro se provarmos que, dado um parmetro de segurana k , existe um simulador S (que um algoritmo polinomial) tal que para todo ambiente Z e toda entrada z , a probabilidade de Z distinguir o mundo ideal do real (como modelados) desprezvel. Projetamos a funcionalidade ideal F de forma a garantir, no mundo ideal, que se o protocolo no for seguido de maneira a gerar os resultados que esperamos, a execuo abortada. Assim, se o ambiente (e consequentemente o adversrio) no puder distinguir os dois mundos, a garantia de execuo correta e segura do protocolo se extende para o modelo de mundo real. Ao modelar o protocolo para demonstrar sua segurana, usaremos alguns artifcios que parecero distantes da situao de execuo real do protocolo. Comentamos agora sobre estes artifcios e sobre a nomenclatura usada, para que no haja confuso.

Pr e

lim

in ar

Diremos que um protocolo implementa seguramente a funcionalidade ideal F quando o ambiente (exceto por A), ao executar, no puder distinguir entre uma execuo no mundo real e outra no mundo ideal. Deve existir ento um simulador S que substitua A de forma que o mundo simulado por F e S indistinguvel pelo ambiente do mundo real com e A. O protocolo executado em rodadas. Em cada rodada

notas de aula verso 79 - Jernimo C. Pellegrini

214CAPTULO 15. COMPUTAO SEGURA COM MLTIPLOS PARTICIPANTES mundo real e mundo ideal, embora ambos sejam claramente idealizados. A diferena entre ambos est na presena deste intermediador.

15.4

Exerccios

Ex. 112 Prove o Teorema 15.2.

Ex. 113 A Seo 15.1 mostra como calcular somas e multiplicaes de partilhas de Shamir. Tente encontrar mtodos, to ecientes quanto possvel, para computar outras operaes: potncias, raizes, e logaritmos, por exemplo. Ex. 114 Tente trocar o esquema de compartilhamento de segredos subjacente ao protocolo da Seo 15.1 por outro (Ito-Nishizeki-Saito, Pedersen ou Schoenmakers). Como voc codicaria as entradas da funo? Consegue realizar adio e multiplicao? Como?

Ve rs

Pr e

Ex. 111 Prove o Teorema 15.1.

lim

O problema de computao segura com mltiplos participantes foi proposto inicialmente por Andrew Yao em 1982 [89]. O survey organizado por Dario Catalano e outros [80] descreve os resultados na rea at 2005. Os fundamentos, em um so expostos de modo minucioso no segundo volume do livro de Goldreich [2]. O conceito de componibilidade universal foi introduzido por Ran Canetti [90]. Uma exposio a respeito de protocolos componveis dada por Yehuda Lindell no livro que teve origem em sua tese [91]. A primeira aplicao em larga escala de computao segura com mltiplos participantes foi reportada por um grupo de pesquisadores holandeses em 2009, que implementaram um sistema de leilo seguro [92]. [93] [94]

in ar

15.3

Notas

notas de aula verso 79 - Jernimo C. Pellegrini

Parte III

Ve rs
215

Pr e

Outros Tpicos

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

217

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 os estilos de cada Captulo.

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

218

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 16

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 geomtrico das solues para uma equao polinomial de duas variveis. Em outras palavras, uma curva algbrica plana o conjunto de pontos (x, y ) que satisfazem f (x, y ) = 0, sendo f um polinmio. Exemplos familiar de curva algbricas so circunferncia, denida pela equao (x a)2 + (y b)2 = r2 , onde a, b e r so parmetros descrevendo o centro e o raio; a reta, denida pela equao y = ax + b e o ponto, denido pela equao (x a)2 +(y b)2 = 0 (nem sempre uma curva algbrica corresponde ao conceito intuitivo de curva uma curva algbrica conjunto de pontos, sem restries quanto a conexidade ou continuidade). Curvas elpticas so curvas denidas por certas equaes de grau trs1 .

Ve rs
x y

Denio 16.2 (Curva elptica). Seja F um corpo. Uma curva elptica sobre F uma curva algbrica denida por uma equao da forma y 2 + Axy + By = Cx3 + Dx2 + Ex + F,

onde A, B, . . . , F so constantes pertencentes a F . Quando o corpo F tem caracterstica diferente de dois e trs, podemos usar a seguinte troca de variveis: x 3A2 12C 36 y 3Ax A3 + 4AC B 216 24

1 Curvas elpticas no tem relao direta com o objeto geomtrico elipse. O nome curva elptica vem de sua relao com integrais elpticas, usadas no clculo de comprimento de arco em elipses.

Pr e
219

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

220 obtendo a forma simplicada:

CAPTULO 16. CURVAS ELPTICAS

y2 =x3+Ax+B ,

lim
1 2 1 1 1 2 2 3 4
n2 a2 n i<j

Denio 16.3 (Discriminante de um polinmio). O discriminante de um polinmio an xn + an1 xn1 + + a0 com razes r1 , r2 , . . . rn

Ve rs

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. Para a equao de grau dois ax2 + bx + c, o discriminante b2 4ac. Para o polinmio geral de grau trs ax3 + bx2 + cx + d, o discriminante b2 c2 4ac3 4b3 d 27a2 d2 + 18abcd. As equaes de terceiro grau que nos interessam so da forma x3 + ax + b, com o discriminante igual a 4a3 27b2 . Normalmente denotamos o discriminante de um polinmio pode . Proposio 16.4. Seja p um polinmio de grau n. O discriminante de p zero se e somente se p tem pelo menos duas razes iguais.

Pr e
1 2 3

(ri rj )2 .

in ar
3 2 1 2 3

onde A e B so constantes pertencentes a F . As guras a seguir ilustram as curvas elpticas y 2 = x3 2x +2 e y 2 = x3 2x sobre o corpo dos reais.

notas de aula verso 79 - Jernimo C. Pellegrini

16.1. OPERAO DE GRUPO PARA CURVAS ELPTICAS

221

Demonstrao. Como an no zero, o discriminante ser zero se e somente se o produtrio i<j (ri rj )2 for zero. Este produtrio por sua vez ser zero se e somente se um dos fatores for igual a zero. Isto o mesmo que dizer que h duas razes ri e rj tais que ri rj = 0, ou ri = rj . A curva a seguir y 2 = x3 3x + 2, e tem discriminante igual a zero. As duas razes repetidas so o ponto (0, 1), onde no podemos traar uma tangente.

1 1

Nas prximas Sees usaremos tangentes e cordas para construir grupos com curvas elpticas por isso excluiremos as curvas com discriminante zero.

16.1

Operao de grupo para curvas elpticas

Ve rs

Suponha que E uma curva elptica sobre R. Podemos transform-la em um grupo comutativo se criarmos uma operao associativa para pontos da curva, que denotaremos por +, e determinarmos um elemento identidade. O elemento identidade O ser um ponto que adicionaremos a F 2 , determinando que qualquer reta vertical o encontra no innito (nos dois sentidos!)2 . Para somar dois pontos P e Q, traaremos uma reta passando por ambos. Denotaremos esta operao por P Q. Esta reta interceptar um outro ponto R da curva (ou seja, P Q = R, e 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. Aps denir o clculo da soma, dobro e simtrico, podemos realizar qualquer soma ou multiplicao com pontos.
2 H 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).

Pr e
3

lim
2

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

222

CAPTULO 16. CURVAS ELPTICAS

16.1.1

Simtrico

O elemento simtrico de um ponto P a sua reexo Q no eixo x: P +Q+O = O, e portanto P = Q.

Se um ponto P tem coordenada y igual a zero, sua reexo no eixo x ele mesmo, portanto P = P .

o Ve rs
16.1.2
3 2

Pr e
2 1

P
1 1 1 2

Soma de pontos

Para somarmos dois pontos P e Q diferentes, primeiro determinamos R tal que P + Q + R = O, e a soma P + Q R.

lim
1 2

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

16.1. OPERAO DE GRUPO PARA CURVAS ELPTICAS

223

R Q

P
3 2 1 1 1 2

Sejam P = (xp , yp ) e Q = (xq , yq ) diferentes. Calculamos a reta passando por ambos,y = M x + K com inclinao M : M= yp = yq xp xq

Vericamos onde esta reta intercepta a curva, obtendo um terceiro ponto, substituindo y 2 = (M x + K )2 na equao da curva: (M x + K )2 = x3 + Ax + B

x3 + Ax + B (M x + K )2 = 0

x3 + Ax + B K 2 + 2M Kx + M 2 x2 = 0

As razes desta equao so os pontos onde a reta e a curva se interceptam, portanto

Ve rs
e 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: M 2 = xp + x1 + xr ,

16.1.3

Dobrando um ponto

Para dobrar um ponto Q, observamos a reta tangente curva em Q e vericamos que ela interceptar a curva em mais um ponto P . Denimos P + Q + Q = O,

Pr e
xr = M 2 xp xq yr = M xr + K.

K = yp M xp

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

224 e portanto 2Q = P .

CAPTULO 16. CURVAS ELPTICAS

1 1

Usando a equao da curva e substituindo f (x) = x3 + Ax + B , obtemos M= 3 x2 p+A . 2yp

Tendo M , j podemos determinar as coordenadas de R:

Ve rs
16.2

Finalmente, 2P = R = (xr , yr ). Vimos antes que se um ponto P tem coordenada y igual a zero, ento P = P . Podemos concluir que 2P = O e de fato, a tangente em P s interceptar a curva no ponto no innito O.

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 E sobre um corpo Fq por #E (Fq ).

Pr e
M= xr = M 2 2xp

Quando P = Q temos efetivamente um nico ponto que no determina uma reta nica Para obter uma reta, usamos a tangente da curva em P , e conseguimos a inclinao da reta tangente por derivao implcita: se a curva elptica y 2 = f (x), ento f (x) dy = . dx 2y

yr = yp + M (xp xq )

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

16.3. CORPOS FINITOS USADOS EM CRIPTOGRAFIA Teorema 16.5. Seja E uma curva elptica sobre um corpo Fq . Ento q + 1 2 q #E (F q ) q + 1 + 2 q.

225

16.3

Corpos nitos usados em Criptograa

16.3.1

Fp

Quando o corpo usado Fp (com p primo), a equao de uma curva elptica escrita na forma y2 (mod p) = x3 + Ax + B 4A3 + 27B 2 (mod p),

e novamente exigimos o determinante diferente de zero: (mod p) = 0.

Ve rs

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 R, apenas tomando o cuidado de efetuar todas as computaes mdulo p. Para somar pontos,

o
M= 3x2 p

xr = M 2 xp xq

yr = M xr + K (mod p) yp = yq M= (mod p) xp xq K = yp M x p (mod p)

Para dobrar um ponto, usamos xr = M 2 2xp +A 2yp (mod p) (mod p) yr = yp + M (xp xq ) (mod p).

Pr e
(mod p)

lim

Em Criptograa no podemos usar R para construir curvas elpticas primeiro porque no podemos represent-los de maneira exata em computadores, e tambm porque so innitas: uma curva elptica sobre R a unio de duas outras curvas, y = f (x) e f (x), sendo f um polinmio e ambas so denidas para innitos valores de x. Curvas sobre Q 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 Fp , com p primo, e GF2m (corpos de Galois de ordem 2m ).

in ar

Por exemplo, se o corpo nito Fq usado na construo do grupo de pontos 512 tem nmero de pontos na curva E (Fq ) car entre 2512 + 1 ordem q = 2 , o 512 512 2 2 e 2 + 1 + 2 2512 , ou seja, entre 2512 + 1 2256 e 2512 + 1 + 2256 .

notas de aula verso 79 - Jernimo C. Pellegrini

226

CAPTULO 16. CURVAS ELPTICAS

16.3.2

GF2m
y 2 + Axy + By = Cx3 + Dx2 + Ex + F.

Retornamos primeira denio de curva elptica, com a equao

Se a caracterstica do corpo dois a seguinte troca de variveis: x A2 x + B A A2 D + B 2 3 y A y+ A3

transforma a equao na forma simplicada: y 2 + xy = x3 + Ax2 + B,

com B = 0, onde A e B so constantes pertencentes a F . No trataremos deste tipo de curva neste texto.

Nesta Seo so discutidos alguns criptossistemas e protocolos onde os grupos usados so de curvas elpticas.

16.4.1

Logaritmo discreto

Ve rs

Da mesma forma que usamos o problema do logaritmo discreto em Zp para construir criptossistemas e protocolos, podemos usar o problema anlogo para curvas elpticas. Uma vez 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 elptica E sobre um corpo nito F com ordem q ; um ponto P E com ordem n; um ponto Q P , 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.

Denio 16.7 (Problema Die-Hellman para curvas elpticas). Dadas uma curva elptica E sobre um corpo nito F com ordem q ; um ponto P E com ordem n; dois pontos A = aP, B = bP P , o problema Die-Hellman computacional para curvas elpticas (ECCDH) consiste em encontrar o ponto C = abP ;

Pr e

16.4

Criptossistemas e protocolos

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

16.4. CRIPTOSSISTEMAS E PROTOCOLOS

227

dado um outro ponto C = cP P , o problema Die-Hellman decisional para curvas elpticas consiste em determinar se C = abP (ou, de forma equivalente, se c ab (mod n).

16.4.2

Die-Hellman

O protocolo de Die e Hellman para estabelecimento de chaves mostrado a seguir, usando curvas elpticas.

A determina uma curva elptica E sobre um corpo nito Fq e um ponto G. A escolhe x R Zq e calcula o ponto H1 = xG A envia (E, q, G, H1 ) para B

B envia o ponto H2 para A e determina a chave secreta, que o ponto KB = yH1 . A recebe H2 e determina a chave secreta, que o ponto KA = xH2 .

16.4.3

Elgamal

Construo 16.9 (Criptossistema Elgamal). Gen(1n ): A determina uma curva elptica E sobre um corpo nito Fq e um ponto G, sendo que q representvel com n bits. x R Zq h xG (um ponto em E ) A chave pblica E, q, G, H . A chave privada E, q, G, x . Note que a chave pblica um ponto da curva, e a chave privada um inteiro. Enc dada a chave pblica pk = E, q, G, H e a mensagem M E , escolha y R Zq e devolva yG, yH + M. O texto cifrado um par de pontos.

Ve rs

Dec: dada a chave sk = E, q, G, x , e o texto cifrado c = C, C2 , a funo Dec retorna C2 xC1 .

Pr e

B escolhe y R Zq e calcula o ponto H2 = yG.

lim

Construo 16.8 (Protocolo de Die e Hellman para estabelecimento de chaves). Dois participantes, A e B , estabelecem uma chave simtrica da seguinte maneira:

in ar

As prximas sees descrevem alguns criptossistemas e protocolos que usam este problema como fundamento.

notas de aula verso 79 - Jernimo C. Pellegrini

228

CAPTULO 16. CURVAS ELPTICAS

16.4.4

Outros criptossistemas e protocolos

16.5

Emparelhamentos bilineares

16.6

Fatorao de Inteiros

Curvas elpticas tambm podem ser usadas para fatorar nmeros inteiros, uma aplicao tambm relevante para a Criptograa.

Notas

Ve rs

O uso de grupos de curvas elpticas em Criptograa foi proposto independentemente em 1986-1987 por Neil Koblitz [95] e Victor Miller [96]. Diversos livros discutem o uso de curvas elpticas em Criptograa [97] [98] [99] [100]. Uma excelente introduo matemtica aritmtica de curvas elpticas sem meno Criptograa dada por Silverman e Tate [101]. O espao projetivo descrito em Portugus no livro de Gomes e Velho [102], no Captulo dois. Em Ingls h uma abordagem mais profunda no Captulo trs do livro de Kostrikin [103]. A insero do ponto no 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. Veja por exemplo a introduo Topologia e Anlise de Simmons [104].

Exerccios
Ex. 115 Prove as seguintes propriedades para a operao de grupo que denimos para curvas elpticas sobre os reais: a) P = P + O = O + P

Pr e

lim

Certos grupos construdos sobre pontos de curvas elpticas podem ser usados na construo de emparelhamentos bilineares; h diversos problemas difceis relacionados a estes emparelhamentos que so explorados em construes 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.

in ar

H diversos outras construes criptogrcas que usam curvas elpticas. Alguns exemplos so o ECDSA, a verso do esquema de assinaturas DSA usando curvas elpticas, descrita no padro FIPS 186-2. o PSEC (Provably Secure Encryption 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.

notas de aula verso 79 - Jernimo C. Pellegrini

16.6. FATORAO DE INTEIROS b) P + (P ) = O c) P + (Q + R) = (P + Q) + RO d) P + Q = Q + P

229

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 funcionam (isto , que o resultado tambm pertencer mesma curva elptica).

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

230

CAPTULO 16. CURVAS ELPTICAS

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 17

Primalidade e Fatorao
17.1 Fatorao

17.1.1

Crivo de Eratstenes e divises sucessivas

Ve rs

O Crivo de Eratstenes um mtodo para listar os nmeros primos em um determinado intervalo. Inicialmente listamos todos os nmeros entre 2 e n (no algoritmo a seguir, inclumos os nmeros em um vetor). Depois iniciamos com o primeiro elemento do vetor, 2, e eliminamos todos os mltiplos dele (armazenamos zero em suas posies). Reiniciamos e tomamos o primeiro elemento no-nulo do vetor, 3, e eliminamos seus mltiplos. Paramos quando tivermos eliminado os mltiplos de todos os k n.

eratostenes(n): para i de 0 a n: vi i v1 0 i2 enquanto i2 n: se vi = 0: j 2i enquanto j n vj 0 j j+i 231

Pr e

Esta Seo comea com a descrio de dois mtodos simples para fatorao: O mtodo p 1 e o mtodo de Pollard. Estes mtodos so ecientes apenas quando o nmero tem pelo menos um fator relativamente pequeno. Na prtica, usam-se estes mtodos inicialmente, e caso no resultem em sucesso, outros mtodos so usados. Estes outros mtodos incluem por exemplo o crivo quadrtico e o mtodo de curvas elpticas, tambm descritos nesta Seo.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

232 retorne v

CAPTULO 17. PRIMALIDADE E FATORAO

Quando um fator de n encontrado ele retornado; se n primo o algoritmo retorna o prprio n. A complexidade de tempo, tanto do crivo de Eratstenes como do mtodo das divises sucessivas, claramente O( n).

17.1.2

Mtodo p 1 de Pollard

Ve rs

Sendo n = pq com p e q primos, o mtodo p 1 de Pollard determina a fatorao de n. Escrevemos as fatoraes de p 1 e q 1 como p1 q1
l 1 2 = a 1 a2 al , l j 1 2 = a 1 a2 al aj ,

com al < aj . onde a1 = 2, a2 = 3, a4 = 5, e ai o i-simo primo. (Sem perda de generalidade, presumimos que o maior primo presente na fatorao de p 1, al menor que o maior primo na fatorao de q 1, aj .) Notamos que p 1 < 2log2 (n) , e portanto 1 < log2 (n). Similarmente, p 1 < 3log3 (n) , e de maneira geral p 1 < ai nmero
k logai (n)

Pr e
B=
i=1

divisao_sucessiva(n): se 2 | n retorne 2 k3 enquanto k n : se k | n retorne k senao k k+2 retorne n

Por exemplo, para k = 1, B = 2n ; para k = 3, B = (2n )(3n )(5n/2 ).

lim
. Assim, escolhemos o ai
n/ log(ai )

in ar

Os valores diferentes de zero no vetor v retornado pelo algoritmo so os primos entre 2 e n. notvel que o crivo de Eratstenes no necessita de divises ou multiplicaes, que em um computador moderno, so operaes caras (note que 2i pode ser implementado como i + i, e o valor de i tal que i2 < n pode ser calculado a priori) O mtodo das divises sucessivas para fatorao bastante simples, embora ineciente. Tentamos dividir n por dois, e em seguida por todos os mpares no maiores que n.

notas de aula verso 79 - Jernimo C. Pellegrini

17.1. FATORAO Agora, para algum valor de k , (p 1) | B : poderemos dividir


k 1 2 b B 1 b2 bl = l , 2 p1 a1 1 a 2 ak

233

porque i i para todo i, bastando somente que l k . Como na fatorao de p 1 e q 1 notamos que al < aj , deve haver algum k para o qual B | (p 1) mas B (q 1). Esta a escolha que admitiremos para B . B Escolhemos aleatoreamente x em Z (mod p). Como n , e calculamos a = x (p 1)|B , podemos escrever B = k (p 1) e xB (mod p) = xk(p1) = = x(p1) 1. (mod p)
k

(mod p)

Mas (q 1) B , ou seja, no existe k tal que B = k (q 1), se e somente se k , xB (mod q ) = xk (q1) (mod q ) = 1.

xB

(mod q )

= xk (q1)+r = x(q1)
r

Pr e
(mod q )
k

Assim, teremos p|(a 1) e q (a 1) se e somente se xB (mod q ) = 1. Como (q 1) B , podemos escrever B = k (q 1) + r e

(mod q )

= x

(mod q ).

Ve rs
factorp1(n, B ): x R Z n a xB (mod n) b mdc (a 1, n) se 1 = b = n: retorne b seno retorne

Mas xr (mod q ) = 1 porque a ordem de x (mod q ) deve ser maior que r. Temos agora a tal que a 1 (mod p) mas a 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:

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.

lim
(mod p) xr (mod q )

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

234

CAPTULO 17. PRIMALIDADE E FATORAO

Denio 17.1 (Primo forte). Um nmero primo p um primo forte se (p1)/2 tambm primo. Exemplo 17.2. Suponha n = 71729254613. Sorteamos x = 53998655672 e usamos B = 280. Ento a = xB (mod n) = 20513619516.

Temos b = mdc (a 1, n) = 19. Como b no igual a 1 nem a n, deve ser fator de n. E realmente, 19 3775223927 = 71729254613.

a = xB e

(mod n) = 1720706286036580

b = mdc (a 1, n) = 1.

Teorema 17.4. A complexidade de tempo do algoritmo p 1 de Pollard O(B log(B ) log2 n + log3 n).

17.1.3

Mtodo de Pollard

Comeando com x0 , calculamos a seguinte sequncia, denida recursivamente:

Por exemplo, com n = 2387 e x0 = 2, a sequncia

Ve rs

Pr e
xi = f (xi1 ) x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 = = = = = = 7 52 = = =

Como x = 1, o algoritmo retornar o que signica que no foi possvel fatorar n (mas no signica que n seja primo!)

lim
(mod n) 320 2149 1746 320 = 2149 = 1746 320 2149 1746

Exemplo 17.3. Tomamos o nmero composto 2987937292328279 = 32132369 92988391 Sorteamos x = 1210314091541427 B = 50 temos

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

17.1. FATORAO Agora faremos yi = xi mod k , com k = 11: y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 = = = = = = = = = = = 7 8 1 4 8 1 4 8 1 4 8

235

Como xi f (xi1 ) (mod n), ento yi f (yi1 ) (mod k ). Como s h k classes de congruncias mdulo 13, deve necessariamente haver i e j para os quais yi = yj . Quando isso acontece a sequncia de yi forma um ciclo.

Ve rs
y2 y1 y0

Se yi = yj ento xi xj (mod k ), e 13 | (xi xj ). Se mdc (n, xi xj ) divisor de n< ento xi = xj . Como no sabemos k , no sabemos os valores de cada yi (e no sabemos quando yi = yj ). Mas sabemos que aps algum tempo os yi formam um ciclo, ou seja, yi+q = yj +t .

Pr e
yi+1 yi yj yj 1

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

236

CAPTULO 17. PRIMALIDADE E FATORAO

Podemos observar as diferenas x2n 1 xj ,

x1 x3 x3 x7 x7 x7 x7

x3 x6 x7 x12 x13 x14 x15

Estas diferenas crescem com o tempo.

17.1.4

Crivo quadrtico

Lema 17.5. Se x e y so tais que x y (mod n) e x2 y 2 (mod n),

ento mdc (n, x y ) e mdc (n, x + y ) so fatores de n. Demonstrao. Como x2 y 2 0 (mod n), temos (x + y )(x y ) 0 (mod n), e n|(x y )(x + y ).

Ve rs

Mas n (x y ) e n (x + y ), porque x y (mod n). Isso implica que mdc (n, x y ) e mdc (n, x + y ) devem ser fatores de n. Suponha agora que queiramos fatorar um nmero n. O algoritmo de Dixon usa um conjunto de primos pequenos, que chamaremos de B . Se P o conjunto dos primos ento B = {p P : p < M }

dene B para algum M . Como exemplo, se M = 15000 teramos |B | = (15000) = 1754. Escolhemos aleatoreamente vrios nmeros inteiros ri e calculamos, para cada ri g (ri ) = r2 (mod n). Em seguida fazemos um esforo razovel para fatorar cada g (ri ), usando diviso sucessiva pelos elementos de B . Quando tivermos mais nmeros g (ri ) fatorados do que |B |, paramos.

Pr e

O Lema a seguir serve de fundamento para dois algoritmos de fatorao: o algoritmo de Dixon e o crivo quadrtico (que uma modicao do algoritmo de Dixon).

lim

in ar

com 2n+1 2n1 j 2n+1 1. Por exemplo,

notas de aula verso 79 - Jernimo C. Pellegrini

17.1. FATORAO Cada g (ri ) pode evidentemente ser escrito como produto de primos:
a|B | 1 a2 . g (ri ) = pa 1 ps p

237

vi = (a1 , a2 , . . . , a|B | ).

Por exemplo, se g (r0 ) = 600, g (r1 ) = 18 e g (r2 ) = 672, g (r3 ) = 1500 as fatoraes so: g (r0 ) g (r1 ) g (r2 ) g (r3 ) Ento, v0 v1 v2 v3 = = = = (3, 1, 2) (1, 2, 0) (0, 3, 2) (2, 1, 3) = = = = 23 31 52 21 32 50 20 33 52 22 31 53

Observamos que para multiplicar g (ri ) por g (rj ) basta que somemos vi com vj . Usando o exemplo anterior, g (r0 ) + g (r1 ) = 2(3+1) 3(1+2) 5(2+0) .

Ve rs

Com isso resolvemos o problema. Se nem todos os expoentes forem pares, usamos os outros vetores vk (temos mais vetores do que elementos em cada vetor). Podemos encontrar vetores que, quando multiplicados, resultem em expoentes pares. Usamos o fato da soma de dois nmeros ser par se e somente se tiverem a mesma paridade, e fazemos w(r) = (b1 , b2 , . . . , b|B | ),

com bi = 1 se ai mpar, e 0 em caso contrrio. Continuando o exemplo, teramos w0 w1 w2 w3 = = = = (1, 1, 0) (1, 0, 0) (0, 1, 0) (0, 1, 1)

Se todos os expoentes de vi forem pares, ento g (ri ) quadrado perfeito (em Z, alm de em Zn ) , e g (ri ) r2 (mod n).

Pr e

lim

in ar

Representamos cada g (ri ) como um vetor vi com os expoentes aj de g (ri ):

notas de aula verso 79 - Jernimo C. Pellegrini

238

CAPTULO 17. PRIMALIDADE E FATORAO

Encontramos L0 = L1 + L2 , e portanto podemos usar os ndices 0, 1, 2. Em {v0 + v1 + v2 } h somente coecientes pares. v0 + v1 + v2 = + + = (3, 1, 2) (1, 2, 0) (0, 3, 2) (4, 6, 4)

Para este exemplo, ento,

600 18 675 24 36 54

Pr e

De maneira geral, teremos agora

2 2 2 g (r1 )gr (2) g (rk ) r1 r2 rk

e os dois lados da congruncia so quadrados perfeitos. O mtodo que descrevemos at agora conhecido como algoritmo dos quadrados aleatreos. Descrevemos agora o crivo quadrtico.

17.1.5 17.1.6

Curvas elpticas

Ve rs

Notas

O algoritmo p 1 de Pollard foi publicado em 1974 [105]. O algoritmo de Pollard surgiu em 1975 [106]. O livro de Victor Shoup [14] contm uma grande quantidade de algoritmos para problemas em Teoria de Nmeros e lgebra; os livros de Hostein, Pipher e Silverman [107] e o de Baldoni e outros [108] tambm abordam o assunto, e Cohen [109] trata extensivamente de fatorao. O livro de Crandall e Pomerance trata extensivamente de algoritmos relacionados a primalidade e fatorao [110]. O livro de Bressoud [111] mais acessvel para uma primeira leitura. A monograa de Vasilenko, mais condensada, contm tambm alguns algoritmos para aritmtica de preciso arbitrria [112]. O Algoritmo AKS para teste de primalidade foi desenvolvido por Agrawal, Kayal e Saxena [113] e sua descrio aparece em diversos livros [14, 114]. [115] [116] [117]

Crivo sobre corpo numrico algbrico

lim
(mod n). (mod n),

in ar

Usamos ento eliminao Gaussiana mdulo dois para encontrar um subconjunto dos rs que seja linearmente dependente: 1 1 0 1 0 0 A= 0 1 0 0 1 1

notas de aula verso 79 - Jernimo C. Pellegrini

17.1. FATORAO

239

Exerccios
Ex. 117 Implemente os mtodos e p 1 de Pollard para fatorao de inteiros.

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

240

CAPTULO 17. PRIMALIDADE E FATORAO

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 18

Ve rs
T chave secreta de Alice

o
Alice

O uso da Criptograa assimtrica tradicional implica na preparao de uma infraestrutura de chaves pblicas. necessrio garantir que todos os participantes (pessoas, programas ou dispositivos) tenham as chaves pblicas de todos os outros. A 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 chave realmente pertence a Alice).

A prxima Figura mostra como funcionam os esquemas baseados em identidade. A autoridade T d apenas a chave privada a Alice; quando Bob precisa 241

Pr e
Enc(msg ) Bob Sign(m)

chave pblica de Alice (via diretrio)

lim

Criptograa Baseada em Identidades

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

242

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

vericar a assinatura de Alice ou enviar-lhe um documento encriptado, ele usa a identidade de Alice como chave pblica. T

chave secreta Enc(msg ) Alice Sign(m)

Bob

18.1

Gerao 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 ), que aceita um parmetro de segurana n e gera uma chavemestra M , mantida em segredo pela autoridade, e parmetros pblicos P;

Extract(M, id): com a chave-mestra M e uma identidade id, a autoridade pode extrair uma chave privada sk .

Todos os algoritmos descritos neste Captulo exceto Setup podem precisar dos parmetros pblicos P . Como sua descrio genrica no depende de P , omitiremos este parmetro nesta apresentao.

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.

Pr e

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 T , e depois no h mais necessidade de interao dos participantes com T ou com um diretrio. H esquemas baseados em identidades para encriptao, assinatura e acordo de chaves. No resto deste Captulo, usaremos id, e no pk , para denotar uma chave pblica.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

18.2. ENCRIPTAO

243

18.2

Encriptao

Denio 18.2 (Esquema de encriptao baseado em identidades). Um esquema de encriptao baseado em identidades consiste de um esquema de gerao de chaves baseado em identidades e mais dois algoritmos: Encid (m): dados uma identidade id, os parmetros pblicos P e uma mensagem m, Enc retorna um texto encriptado. Decsk (c): dada uma chave privada sk , os parmetros pblicos P e um texto encriptado c gerado por Enc, Dec retorna a mensagem original m.

Da mesma forma que em criptossistemas assimtricos tradicionais, exigimos que para toda identidade id e todos sk, P gerados a partir de id, Decsk (P, Encid (P, m)) = m. As noes de segurana para encriptao em sistemas assimtricos se traduzem diretamente para criptossistemas baseados em identidade. No entanto, h 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 ) usado para determinar a chave mestra M e os parmetros pblicos P . 2. O adversrio pode realizar as seguintes consultas a um orculo: Extract(id): o orculo devolve a chave privada sk relacionada identidade id;

Ve rs

Decid (c): observe que apenas id passada a Dec, e no sk , como em seu uso normal o orculo usa Extract para obter a chave privada sk relacionada a id, decripta c e devolve o resultado.

As consultas podem ser escolhidas adaptativamente (o adversrio pode decidir a prxima consulta dependendo do resultado das anteriores).

3. Quando A decide que fez consultas sucientes, escolhe duas mensagens m0 e m1 , do mesmo tamanho, e uma identidade id, cuja chave privada no tenha sido extrada na fase anterior.

4. Um bit aleatreo b escolhido e mk encriptada com Encsk e enviada a A.

5. A pode fazer mais consultas da mesma forma que antes, mas no pode usar nas consultas o id que escolheu.

Pr e

lim

in ar

Um esquema de encriptao baseado em identidades semelhante a um esquema de encriptao tradicional, exceto que a chave pblica do destinatrio igual sua prpria identidade, e portanto no precisa ser obtida de uma autoridade.

notas de aula verso 79 - Jernimo C. Pellegrini

244

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

6. A envia um bit b . 7. O resultado do experimento um se b = b ou zero em caso contrrio.

1n id, m0 , m1 b R {0, 1} sk Extract(id) Encsk (mb )

b=b 1 b=b 0

Pr e

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 A existe uma funo desprezvel negl tal que Pr[IND_ID_CCA(, A, n) = 1] 1 + negl(n). 2

Ve rs
18.3

Experimento 18.5 (IND_ID_CPA(, A, n)). O experimento IND_ID_CPA idntico ao experimento IND_ID_CCA, exceto que o adversrio no pode fazer consultas de decriptao (Decid (c)). 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 A existe uma funo desprezvel negl tal que Pr[IND_ID_CPA(, A, n) = 1] 1 + negl(n). 2

Denio 18.7 (Esquema de assinaturas baseado em identidades). Um esquema de asinaturas baseado en identidades composto de um esquema de gerao de chaves mais dois algoritmos:

Da mesma forma que a diferena entre segurana CPA e CCA a possibilidade do adversrio obter decriptaes de mensagens, denimos segurana IND-ID-CPA exatamente como IND-ID-CCA, exceto que o orculo, no experimento IND_ID_CPA, no responder a consultas de decriptao.

Assinaturas

lim
b

in ar

AExtract,Decid

notas de aula verso 79 - Jernimo C. Pellegrini

18.3. ASSINATURAS

245

Signsk (m): dadas uma chave secreta sk e uma mensagem m, Sign retorna uma assinatura de m. Vrfid (, m): a partir dos parmetros pblicos P , da identidade id do assinante, da assinatura e da mensagem m, Vrf determina se a assinatura vlida. A traduo da denio de segurana CMA1 para criptossistemas baseados em identidade bastante direta. Experimento 18.8 (SIG_FORGE_ID_CMA(, A, n)).

1. T usa Setup(1n ) para determinar uma chave mestra (que mantida em segredo) e parmetros pblicos (que so enviados a A). 2. O adversrio pode realizar diversas consultas dos seguintes tipos:

Consulta a hash: o orculo computa o valor do hash pedido por A e o devolve; Extract(id): o orculo retorna a chave secreta sk relacionada identicao id;

3. A devolve (id, m, ), onde id diferente de todas as identicaes usdas nas consultas Extract e Sign. 4. Retorne 1 se Vrfid (m, ) = 1 e 0 se Vrfid (m, ) D

o Ve rs
1 Denida

Vrfid (m, ) = 1 id / consultados

Denio 18.9. Um esquema de assinaturas baseado em identidades tem segurana contra fraude existencial em ataques adaptativos com mensagem e ID escolhidos se para todo adversrio polinomial A existe uma funo desprezvel negl tal que Pr[SIG_FORGE_ID_CMA(, A, n) = 1] 1 + negl(n). 2

informalmente na pgina 156 e formalmente na pgina 159.

Pr e
1n , P (id, m, )

Signid (m): observe que apenas id passado na consulta, e no sk o orculo obtm a chave secreta sk relacionada a id, assina a mensagem m e devolve a A.

lim
Ah,Extract,Signid

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

246

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

18.4

Acordo de chaves

18.5

Duas construes simples

Construo 18.11 (Encriptao baseada em identidades com resduos quadrticos (Cocks)).

Seja h : { 0, 1 } Zn , tal que para h(x) sempre valer h(x) n = 1.

A funo h ser usada para mapear as identidades dos usurios em Zn . Extract(M, id): a chave pblica de id seu hash, pk = h(id). A chave privada dnida da seguinte maneira. id se id = id =1 p q sk = id se id = id = 1. p q

Ve rs
Calcule

Uma maneira de obter sk computar sk = (id)


n+5pq 8

Pr e

Setup: Sejam p e q primos, ambos cngruos a 3 mdulo 4; seja tambm n = pq .

Encid (m): a mensagem deve ser +1 ou 1. Escolha t R Zn tal que t n = m.

c1 =t + (id)t1 c2 =t (id)t
1

Retorne (c1 , c2 ).

lim
. mod n mod n.

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.

in ar

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 k no pode ser transmitida em claro.

notas de aula verso 79 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES Decsk (c1 , c2 ): seja c= Retorne


c+2(sk) n

247

c1 c2

se sk = id se sk = id.

O usurio de Enc no sabe se sk id ou id, por isso encripta para ambos os casos, calculardo c1 e c2 . A corretude do procedimento de decriptao pode ser vericada diretamente: supondo que (sk )2 = id, temos c + 2sk n = = = = = t + (id)t1 + 2(sk ) n 2 1 t + (sk ) t + 2(sk ) n t + (sk )2 t1 + 2(sk ) n 2 2 t + (sk ) + 2(sk )t n 2 (t + sk ) t n n t . n

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. 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. Demonstrao. Presumiremos que o criptossistema no tem segurana IND-IDCPA, e que portanto existe algum adversrio A polinomial para o qual Pr[IND_ID_CPA(IDE_Cocks, A, n) = 1] 1 + p(n), 2

Ve rs

onde p(n) um polinmio em n. Construiremos um algoritmo D que, dados n e um nmero x Jn , decide x se n +1 ou 1, com probabilidade no desprezvel. Para decidir se um nmero a resduo quadrtico mdulo n = pq , D(a, n) funcionar simulando o orculo do experimento IND_ID_CPA, da seguinte maneira: 1. Para responder s consultas, faa:

Pr e
=

lim
t n
2

t n

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

248

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES Extract(id): selecione sk aleatoriamente. Depois, determine h(id) = (sk )2 (sk ) , com
2 h(id) n

com probabilidade 1/2, = +1 com probabilidade 1/2.

Decid (c): se no houve consultas Extract para id, responda com a decriptao de c usando h(id). 2. Quando receber o id escolhido do adversrio, determine que h(id) = a (isso pode ser feito porque nenhuma consulta anterior pode ter usado id, e portanto h(id) ainda est indenido).

c1 = t + at1 c2 R Jn .

4. Se a resposta b dada pelo adversrio for igual a b, responda que a QRn , caso contrrio responda que a / QRn . Nos falta mostrar que: i) Se a QRn , c1 ser uma encriptao correta de b. Seno, A no aprender absolutamente nada sobre a. ii) Quando a simulao no abortada, a viso de A indistinguvel da que teria quando interagindo no experimento IND_ID_CPA. iii) A simulao abortar com probabilidade desprezvel em n.

Ve rs

Demonstramos apenas (i); os itens (ii) e (iii) so pedidos no Exerccio 119. t Se a QRn , ento por hiptese A conseguir obter n com probabilidade no desprezvel, e D corretamente dir, com a mesma probabilidade, que a QRn . t Se a / QRn , ento c1 , c2 no do a A qualquer informao sobre n . Para c2 isto bvio. Para c1 , comeamos observando que como a / QRn , a p = a q = 1.

Agora considere os seguintes valores: t1 = t t2 = at t3 = at


1 1

Pr e
(mod p) = t

(mod p) = at1 (mod p) = at


1

lim
(mod n) (mod q ), (mod q ), (mod q ).

3. Aps receber do adversrio m0 , m1 , envie a encriptao de um b escolhido aleatoriamente em { 1, +1 }, usando a como h(id). Escolha t aleatoriamente, com t = b. n Envie para A:

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES Temos


1 1 1 (t + at1 ) = (t1 + at 1 ) = (t2 + at2 ) = (t3 + at3 ),

249

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.

Setup: calcule n = pq , onde p e q so primos. Escolha um nmero grande e, coprimo com (n). Seleciona uma funo de mo nica f . Os parmetros pblicos so (n, e, f ). A chave mestra (p, q ). Extract(M, id): a chave privada de id sk tal que (sk )e = id mod n. Signsk (m): escolha r aleatoriamente. Calcule t =re

A assinatura (s, t).

Vrfpk (, m): assinatura vlida se e somente se se = id tf (t,m) mod n.

Ve rs

As chaves privadas sk podem ser computadas ecientemente porque a autoridade T tem a fatorao de n. Para vericar que a assinatura est correta, observamos que a condio vericada por Vrf se = id tf (t,m) mod n; podemos reescrever esta condio trocando id por (sk )e e t por re : se = (sk )e ref (t,m) (mod n).

Como e coprimo com (n), podemos elimin-lo dos expoentes, chegando frmula usada na assinatura: s = (sk )rf (t,m) (mod n).

Teorema 18.14. O esquema de assinaturas da Construo 18.13 tem segurana contra ataques de mensagem escolhida.

Pr e
(mod n) s =(sk )rf (t,m) (mod n).

lim

Construo 18.13 (Assinaturas baseadas em identidades (Shamir)).

in ar

t3 t1 t2 t = = = , n n n n e portanto A no tem qualquer informao que possa usar, e o melhor que pode t com probabilidade 1/2. fazer responder n

mas

notas de aula verso 79 - Jernimo C. Pellegrini

250

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

Notas
O primeiro trabalho em Criptograa baseada em identidades foi publicado em 1984 por Adi Shamir [118]; em um pequeno artigo Shamir prope o novo paradigma e apresenta, ainda sem argumentos formais de segurana, um esquema de assinaturas. No mesmo artigo, Shamir arma supor que deve haver tambm esuqemas de encriptao baseados em identidade, e pede a outros pesquisadores que os procurem. O esquema de encriptao com resduos quadrticos foi publicado por Cocks em 2001 [119]. Aconteceu o mesmo que na dcada de 70, quando Cocks havia descoberto o RSA mas no o podia revelar por estar trabalhando para o governo Britnico: o criptossistema de Cocks foi desenvolvido anos antes, mas s pode ser publicado aps a publicao do criptossistema de Boneh e Franklin [120]. As denies de segurana IND-ID-CPA e IND-ID-CCA foram descritas pela primeira vez por Boneh e Franklin [120] (e Cocks mostra um rascunho de demonstrao, em seu artigo de 2001, de que sua construo tem segurana INDIC-CPA). Os surveys de Xavier Boyen [121] e de Gorantla, Gangishetti e Saxena [122] do uma viso geral da Criptograa baseada em identidades. O livro de Luther Martin [123] traz uma exposio mais extensa, mas apenas sobre encriptao baseaa em identidades. O Captulo 19 trata de construes ecientes, usveis na prtica, baseadas em identidades. Todas elas usam emparelhamentos bilineares.

Exerccios

Ex. 118 Mostre que o esquema de encriptao de Cocks no tem segurana IND-ID-CCA. Ex. 119 Prove os itens (ii) e (iii) do teorema 18.12.

Ve rs

Ex. 120 Na construo do simulador D na demonstrao do Teorema 18.12, D envia ao adversrio c2 R Jn . a) Se D enviasse c1 R Z p , o efeito seria o mesmo. b) E se D enviasse c1 = t at1 (mod n), onde t tem o smbolo de Jacobi oposto de b?

Ex. 121 No criptossistema de Cocks necessrio escolher um nmero t t = m, Mostre como fazer isto e analise a ecincia do mtodo que tal que n propuser. Ex. 122 O criptossistema de Cocks usa uma funo de hashing que mapeia cadeias em Jn . Descreva uma funo de hashing que possa ser usada naquele sistema.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

18.5. DUAS CONSTRUES SIMPLES

251

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 possvel denio de segurana para tais esquemas.

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

252

CAPTULO 18. CRIPTOGRAFIA BASEADA EM IDENTIDADES

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 19

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 G1 , G2 e G3 grupos cclicos. A funo e : G1 G2 G3 um emparelhamento bilinear se satisfaz as seguintes condies: i) e no degenerada: existem g1 G1 , g2 G2 tais que (g1 , g2 ) = 1 (onde 1 o elemento neutro de G3 );
a b ii) e bilinear: para todo a, b Z, e(g1 , g2 ) = e(g1 , g2 )ab ;

iii) e computvel por algum algoritmo polinomial.

A condio de bilinearidade pode ser reescrita de outra forma:

Ve rs

Os dois Teoremas a seguir seguem da denio de emparelhamentos bilineares. Teorema 19.2. Seja e : G1 G1 G2 um emparelhamento bilinear simtrico. Ento o problema do logaritmo discreto em G2 no mnimo to difcil que em G1 . Teorema 19.3. Seja e : G1 G1 G2 um emparelhamento bilinear simtrico. Ento o problema Die-Hellman decisional fcil em G1 . 253

Quando G1 = G2 , dizemos que o emparelhamento simtrico.

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

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

254

CAPTULO 19. EMPARELHAMENTOS BILINEARES

19.1

Problemas difceis em emparelhamentos bilineares

2 Um emparelhamento simtrico ser e : G1 Gt , e o gerador de G1 g .

Um emparelhamento assimtrico ser e : G1 G2 Gt , e os geradores de G1 e G2 so g1 e g2 , respectivamente. Problema 19.4 (Die-Hellman Decisional). Dados (g, ag, bg, cg ) G 4 , com a, b, c Z q , decidir se c = ab mod q .

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 , se x = e : (g, g )abc (ou seja, o orculo resolve a verso decisional do problema). 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

Ve rs
Retorne

Setup(q n ): a chave mestra s R Z q . O parmetro pblico param = sP . Escolha tambm duas funes de hashing: H1 : { 0, 1 } G1 H2 :G2 { 0, 1 }
n

Extract(id): calcule pk =H1 (id) sk =s(pk )

Encid (m): escolha r R Z q . Seja gid = e(pk, param).


r (rP, M H2 (gid )) .

Construo 19.8 (Criptossistema de Boneh-Franklin, baseado em identidades).

Pr e

lim

Problema 19.5 (Die-Hellman Bilinear). Para emparelhamentos simtricos, dados (g, ag, bg, cg ) G 4 , calcular e : (g, g )abc Gt . 3 Para emparelhamentos assimtricos, dados (g, ag, bg ) g1 (g2 , ag2 , cg2 ), calabc cular e(g1 , g2 ) Gt .

in ar

Nas descries de todos os problemas que seguem usamos a seguinte notao.

notas de aula verso 79 - Jernimo C. Pellegrini

19.3. ASSINATURAS BASEADAS EM IDENTIDADES Decsk (c): Dado c = (a, b), calcule m = b H2 (e(sk, a))

255

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 . Setup(1n ):

Signsk (m) = xH (m). Vrfpk (m, ): retorne 1 se e somente se

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 e C tem chaves secretas a, b, c Z q. 1. A envia aP para B, C ;

Ve rs

2. B envia bP para A, C ; 3. C envia cP para A, B ; 4. A calcula KA = e(bP, cP )a ; 5. B calcula KB = e(aP, cP )b ; 6. C calcula KC = e(aP, bP )c .

A chave comum KA = KB = KC = e(P, P )abc . Teorema 19.11. Presumindo a diculdade do problema BDH, o protocolo de acordo de chaves de Joux seguro contra adversrios passivos.

Pr e

lim

Extract(id): a chave privada x R Z q . A chave pblica xP .

in ar
O

notas de aula verso 79 - Jernimo C. Pellegrini

256

CAPTULO 19. EMPARELHAMENTOS BILINEARES

19.5 Notas

Outras construes

Os emparelhamentos bilineares em grupos de curvas elpticas foram usados inicialmente por Menezes, Okamoto e Vanstone em um ataque a criptossistemas de curvas elpticas: o ataque MOV, como chamado, reduz a complexidade do logaritmo discreto em certos grupos de curvas elpticas para aquela do logaritmo discreto em um corpo nito. Posteriormente, Joux publicou seu protocolo de acordo de chaves [124], mostrando a primeira aplicao positiva de emparelhamentos 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 nmero indenido de participantes.

Ve rs

Pr e

lim

Exerccios

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 20

Criptograa Ps-Quntica

20.1

Diculdade de problemas

Ve rs

Havendo algoritmos qunticos para fatorao de inteiros e para o problema do subgrupo oculto, diversos criptossistemas tornam-se inseguros: o RSA e todos os sistemas baseados na hiptese da fatorao de inteiros; Protocolo de 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). 257

Pr e

(Este Captulo est incompleto) Este Captulo descreve alguns problemas que so presumidamente difceis para computadores clssicos mas que poderiam ser resolvidos em tempo polinomial por computadores qunticos, representando uma ameaa aos criptossistemas que os tem como fundamento. O leitor interessado apenas na enumerao destes problemas poder limitar-se leitura da primeira Seo apenas. As Sees seguintes constituem uma breve introduo aos algoritmos qunticos, com uma descrio dos algoritmos qunticos polinomiais para fatorao de inteiros e determinao do subgrupo oculto.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

258

CAPTULO 20. CRIPTOGRAFIA PS-QUNTICA

20.2

Computao quntica

Ve rs

Os computadores clssicos tem como unidade bsica de armazenamento o bit, que pode assumir dois valores diferentes, zero ou um. H diferentes maneiras de implementar dispositivos que permitem armazenar, recuperar e transmitir bits capacitores, campos magnticos, corrente eltrica ou luz, por exemplo. Um bit sempre estar em exatamente um de seus dois possveis estados. A noo de informao quntica surge quando consideramos a representao de informao em dispositivos para os quais vale a mecnica quntica. O estado de um sistema na mecnica quntica diferente, e est sujeito a regras diferentes daquelas da Fsica clssica; o interesse em representar informao como sistemas qunticos existe porque as operaes realizadas so de natureza diferente daquelas realizadas por um computador comum e em muitos casos mais ecientes. Os nveis de energia em um tomo podem assumir diferentes valores discretos 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 ambos estados. Quando uma vericao for realizada, o eltron passar para um 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 |0 e |1 . Um qubit, no entanto, pode estar em ambos estados ao mesmo tempo, no que se chama de superposio de estados. A superposio de estados no signica que o qubit esteja em algum estado intermedirio tal estado no existe! O qubit est em ambos estados ao mesmo tempo, desde que no tentemos medi-lo. Enquanto um qubit estiver isolado de observaes externas, ele permanecer em estado de superposio. Quando uma medio feita no estado de um qubit, ele deixa de estar em superposio e colapsa para apenas |0 ou apenas |1 . Descrevemos o estado de um qubit como uma combinao linear dos dois possveis estados, 0 |0 + 1 |1 , onde os nmeros complexos 0 e 1 so as amplitudes de cada um dos estados, satisfazendo |0 |2 + |1 |2 = 1.
2 2 2 Um exemplo de estado de qubit 1 3 |0 + 3 |1 , 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.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

20.2. COMPUTAO QUNTICA

259

1 0 + 1 0 1

o Ve rs

Pr e
|1 sen cos
cos |0 + sin |1 .

e portanto o estado do sistema (0 , 1 ), que interpretaremos como as coordenadas de um vetor em R2 :

cos |0 + sen |1 |0

Desta forma, o estado do sistema pode ser descrito tambm como

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.

lim

Suponha que um qubit esteja no estado 1/2 |0 + 3/2. Este um estado possvel, porque (1/2)2 +( 3/2)2 = 1. Quando for observado, este qubit passar para o estado | 0 com probabilidade (1/2)2 = 1/4 e para o estado |1 com probabilidade ( 3/2)2 = 3/4. No se pode dizer, no entanto, que as amplitudes so probabilidades no sentido comum ao qual estamos habituados. Em primeiro lugar, elas so nmeros complexos (no exemplo anterior so reais para manter a simplicidade); alm disso, podem ser negativas: suponha que um qubit esteja no estado 1/2 |0 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). Pode ser til visualizar o estado de um qubit como um vetor. Primeiro identicamos os estados |0 e |1 com vetores coluna unitrios ortogonais por exemplo, podemos usar |0 = (1, 0)T e |1 = (0, 1)T . O estado do sistema dado por 0 |0 + 1 |1 , que o mesmo que

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

260

CAPTULO 20. CRIPTOGRAFIA PS-QUNTICA

Um registrador quntico tem vrios qubits, e seu estado a superposio de 2n possveis estados. Para um sistema de dois qubits h quatro estados bsicos: |00 , |01 , |10 , |11 . 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 |00 + 01 |01 + 10 |10 + 11 |11 , com |ij |2 = 1.
i,j

20.2.1

Operaes qunticas

Denio 20.2 (Operao quntica). Uma operao quntica em um registran n dor de n qubits um operador linear unitrio F : C2 C2 . Como matrizes unitrias sempre tem inversa, as operaes qunticas so necessariamente reversveis: dado um estado e uma operao A, deve ser possvel retornar o sistema ao estado anterior aplicando uma operao inversa A1 . Operaes qunticas devem necessariamente preservar a norma do vetor que representa o estado, e isto garantido pelo fato das operaes qunticas serem descritas por operadores unitrios. Finalmente, operadores unitrios so fechados sob composio, e portanto as operaes qunticas podem ser compostas. Este fato permite denir algoritmos qunticos como sequncias de operaes qunticas. Lema 20.3. Sejam A e B duas matrizes descrevendo operaes qunticas. Ento a operao composta A B tambm uma operao quntica. Qualquer operao quntica deve preservar a igualdade dada pela Frmula 20.1, que determina que a soma das probabilidades dos estados ps-medio deve ser um. Assim, uma operao quntica pode ser vista como uma rotao em um qubit. A seguir so descritas algumas operaes qunticas. Negao de um qubit O operador que realiza a negao de um qubit 0 1 . O qubit 0 |0 + 1 |1 negado 1 |0 + 0 |1 , onde 0 e 1 so 1 0 permutados.

Ve rs

Pr e

Denio 20.1 (Operador Unitrio). Um operador linear A unitrio quando AA = I

lim

Computadores qunticos modicam qubits (sem medi-los) usando operaes qunticas. A Mecnica Quntica descreve a evoluo do estado de um sistema pela Equao de Schredinger, e operadores lineares que satisfazem a equao de Schredinger so necessariamente operadores unitrios. Na Denio a seguir A a matriz conjugada transposta de A (A obtida de A substituindo seus elementos pelos respectivos conjugados e aplicando-se em seguida a transposio).

in ar
(20.1)

notas de aula verso 79 - Jernimo C. Pellegrini

20.3. SUBGRUPO OCULTO Reordenao de qubits os qubits em um sistema.

261

Com uma matriz de permutao podemos reordenar

Operao de Hadamard A operao de Hadamard leva um qubit do estado |0 para o estado uniforme |0 + |1 e do estado |1 para o estado uniforme |0 |1 . Para estados superpostos, a operao leva de 0 |0 + 1 |1 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 1 que satisfaz HH T = nI .

H1 H2

H2n

o
|0 |1 1 = 2 1 = 2 1 1 1 1

1 A matriz H usada em qubits (a multiplicao por 2 2 valores, para que a soma dos quadrados seja um):

Pr e
= 1 = 1 1 1 1 = H2k1 H2k1 H2k1 H2k1 1 1 1 1 1 0 0 1 1 = 2 1 = 2 1 1 1 1

Possivelmente a maneira mais simples de construir matrizes de Hadamard pelo mtodo recursivo de Sylvester:

Ve rs
1 H 2 2 1 H 2 2

20.3 20.4

Subgrupo oculto Fatorao de inteiros


Transformada quntica de Fourier

20.4.1

A transformada quntica de Fourier anloga transformada discreta de Fourier (descrita no Apndice D).

lim
1 2

(0 + 1 ) |0 + (0 1 ) |1 .

normaliza os

= |0 + |1 , = |0 | 1 .

in ar

Rotao de um qubit Podemos rotacionar o estado de um qubit por um ngulo usando a matriz cos sen . sen cos

notas de aula verso 79 - Jernimo C. Pellegrini

262

CAPTULO 20. CRIPTOGRAFIA PS-QUNTICA

A transformada discreta de Fourier mapeia um vetor A de nmeros complexos em outro outro vetor B de igual tamanho, tambm de nmeros complexos: 1 b0 1 b1 1 = 1 . . n . 1 bn 1 1 2 . . . n1 1 2 4 .. . 2(n1) a0 a1 2(n1) . . . . . . an (n1)(n1)
n1

Pr e

onde = e(2i)/N uma raiz da unidade para C. Ingenuamente podemos usar multiplicao de matrizes, usando tempo O(n2 ). A transformada rpida de Fourier um algoritmo para clculo da DFT em tempo O(n log n). H, no entanto, um algoritmo quntico para realizar este clculo com complexidade de tempo O(log2 n), exponencialmente menor que a transformada rpida de Fourier. Esta armao deve inicialmente provocar descrena, j que um tal algoritmo no teria tempo sequer de ler sua entrada, que tem tamanho n, mas o algoritmo de fato executa em tempo menor que n porque a entrada ser codicada em log n qubits usando superposio de estados. Nesta discusso, |i ser interpretado como o vetor coluna onde o i-simo elemento um e os outros zero: 0 0 |2 = 1 0

Ve rs

Usamos ento uma superposio de estados | = j =0 j |j como entrada para o algoritmo. A transformada quntica de Fourier um algoritmo quntico que tem como entrada n bits, codicados como superposio de estados em log(n) qubits. A sada do algoritmo tambm uma superposio de estados mas isso signica que ao medir a sada no poderemos obter os 2n bits! Obtemos, no entanto, uma sequncia de n bits da sada, sorteados de acordo com as probabilidades descritas pelas amplitudes do estado de superposio. Denio 20.5 (Vetor peridico). Um vetor V com n elementos peridico se vi = vj se e somente se i j (mod k ) para algum k tal que k |n. O nmero k o perodo do vetor. Em outras palavras, um vetor peridico composto de repeties de uma sequncia de elementos. Quando somente um elemento vj dessa sequncia diferente de zero dizemos que V peridico com deslocamento j . Se um vetor peridico podemos usar a QFT para calcular o perodo do vetor.

lim
n1

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

20.4. FATORAO DE INTEIROS

263

Notas
O livro de Papadimitriou e Vazirani [125] (traduzido para o Portugus [126]) traz um Captulo com noes de Computao Quntica. Uma descrio mais detalhada pode ser obtida nos livros de Hirvensalo [127] e de Marinescu e Marinescu [128]. Uma exposio com nfase em Complexidade Computacional dada no livro de Arora e Barak [129]. Uma discusso mais completa da Computao Quntica dada por Nielsen e Chuang [130]. Uma exposio de construes criptogrcas resistentes a ataques qunticos dada no livro organizado por Bernstein, Buchmann e Dahmen [131]. Dentre os muitos textos sobre de Mecnica Quntica destacamos os de Cohen [132], o de Shankar [133] e o de Griths [134, 135]. Uma introduo Matemtica necessria para o estudo da Mecnica Quntica dada no livro de Byron e Fuller [136], H um livro interessante de K. J. Horadam sobre matrizes de Hadamard e suas aplicaes [137].

Exerccios

Ex. 129 Prove que a transformada de Fourier uma operao unitria.

Ve rs

Pr e

Ex. 128 Prove que a construo de Sylvester sempre resultar em uma matriz de Hadamard.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

264

CAPTULO 20. CRIPTOGRAFIA PS-QUNTICA

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 21

Reticulados

(Este Captulo um esboo) Dentre os problemas difceis que podem ser usados na construo de funes de mo nica h alguns relacionados a reticulados e interessantemente, no h at o momento algoritmo quntico que os resolva ecientemente.

21.1

Reticulados

Neste Captulo trabalharemos no espao Rn , embora os resultados sejam imediatamente aplicveis a qualquer espao Euclidiano. Denio 21.1 (Norma Euclidiana de vetor). Seja x Rn um vetor. A norma 2 Euclidiana de x, denotada por ||x||, x2 1 + . . . + xn

Ve rs

Denio 21.2. Um reticulado em Rn um conjunto


n

o
L(B ) =

A norma Euclidiana por vezes chamada de norma l2 . Um reticulado um subconjunto de um espao vetorial, denido como a seguir.

onde B = (b1 , . . . , bn ) uma base de Rn . Dizemos que (b1 , . . . , bn ) uma base de L. Assim como com espaos vetoriais, comum denir a base de um reticulado como uma matriz onde cada coluna um dos vetores bi : b1,1 b2,1 bn,1 . . b1,2 . . . . . .. . . . bn,n 265

Pr e
i bi |i Z
i=1

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

266

CAPTULO 21. RETICULADOS

21.2

Problemas difceis em reticulados

Os seguintes problemas em reticulados so N P -difceis:

CVP: dada uma base B com n vetores e um vetor t Rn , determinar o vetor v L(B ) mais prximo de t;

SBP: dada uma base B gerando L(B ), encontre outra base B que seja menor de alguma forma. Por exemplo, podemos tentar encontrar dentre todas as bases aquela contendo o vetor de menor norma:

ou a que contm a menor soma dos quadrados dos vetores: ||B || = ||si ||2 .

21.2.1

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 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. A razo de Hadamard para esta base H(B ) = | det B | ||b1 || . . . ||bn ||
1/n

Ve rs

Quando a base ortogonal seu volume (ou seja, o determinante) igual multiplicao de seus vetores, e H(B ) = 1. Quando no ortogonal, o volume maior que o produto dos vetores, e H(B ) ser menor que um. Dizemos informalmente que uma base B menos ortogonal que outra, B , quando H(B ) < H(B ). 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 para efeito de otimizao no nos far diferena). Denio 21.4 (Desvio de Ortogonalidade). O desvio de ortogonalidade de uma base ||bi || . (B ) = i | det B |

Pr e

lim
i i

||B || = max ||si ||

in ar

SVP: dada uma base B , determinar um vetor de L(B ) com a menor norma;

notas de aula verso 79 - Jernimo C. Pellegrini

21.3. GGH

267

21.2.2

LLL

Um algoritmo para reduo de base o LLL, de Lenstra, Lenstra e Lovsz.

Depois, determinamos o vetor a com os coecientes aredondados: ai = ti , e nalmente retornamos o vetor v = ab.

Se o desvio de ortogonalidade de B 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.

21.3

GGH

Ve rs

Goldreich, Goldwasser o Halewi desenvolveram um elegante criptossistema baseado em problemas em reticulados, que descrito a seguir. O GGH se fundamenta no CVP e no SBP: aps codicar uma mensagem m como um ponto de um reticulado, o texto encriptado c ser um ponto prximo de m, mas fora do reticulado. Para decifrar c necessrio usar o algoritmo de Babai com uma base boa que a chave privada. A base ruim (com desvio de ortogonalidade alto) a chave pblica (que pode ser usada para encriptar mensagens, porque permite gerar pontos do reticulado). Construo 21.6 (Criptossistema GGH).

Gen(1n ) gera duas bases para o mesmo reticulado. sk = B , com desvio de ortogonalidade muito pequeno; pk = R, com desvio de ortogonalidade muito grande.

Encpk (m): a mensagem m interpretada como um ponto do reticulado (para isso a base R usada). O que Enc faz retornar um outro ponto,

Pr e

lim

O problema CVP fcil de resolver de maneira aproximada quando a base tem desvio de ortogonalidade pequeno usando o algoritmo de Babai, e difcil quando o desvio de ortogonalidade grande. Seja L Rn um reticulado com base B = (b1 , b2 , . . . , bn ), e w um vetor qualquer em Rn . O algoritmo de Babai consiste em reescrever o vetor w como combinao linear dos vetores da base e arredondar os coecientes. Escrevemos w como tb: w = t1 b1 + t2 b2 + . . . + tn bn .

in ar

21.2.3

CVP: algoritmo de Babai

notas de aula verso 79 - Jernimo C. Pellegrini

268

CAPTULO 21. RETICULADOS prximo de m isso feito somando a m um vetor aleatreo com valores pequenos. e = (e1 , , en ), ei R {, + } Encpk (m) = m + e,

onde e um vetor de tamanho n cujos valores ei so menores do que metade da distncia entre os pontos do reticulado (que presumimos ser 2 ). Decsk (c): usando a base B com desvio de ortogonalidade pequeno fcil obter m usando o algoritmo de Babai, que essencialmente computa m = B B 1 c ,

onde c = m + e, porque c foi calculado por Enc.

21.3.1
Gen

Detalhes

Ve rs

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. Tome cada vetor da base boa B e multiplique-o por uma combinao linear dos outros vetores de B , usando coecientes aleatreos. Os autores sugerem que 2n passos de mistura so sucientes para prevenir o uso do LLL para obter a base boa a partir da ruim.

A gerao das chaves para o reticulado pode ser feita da seguinte maneira: primeiro uma base ortogonal ou quase ortogonal gerada. Pode-se obter tal base escolhendo aleatoreamente coecientes inteiros

Pr e

Claramente a segurana do GGH est relacionada dimenso do reticulado: quanto maior n, mais difcil resolver o CVP e o SBP. Um adversrio que pretenda decifrar um texto encriptado precisar resolver diretamente o CVP ou tentar primeiro transformar a base pblica na base privada (ou seja, resolver o SBP).

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

21.4. NTRU Enc

269

21.3.2

Ataques ao GGH

c = mR + e.

Proposio 21.7. Seja s o vetor (, . . . , ). Ento c + s mR (mod 2 ),

c m2 R = (m m2 )R + e, e tambm que m m2 0 (mod 2 ).

Ento (m m2 ) = 2m para algum m Zn . Portanto e c m2 R =mR+ , 2 2

Ve rs
21.4 NTRU

e temos uma nova instncia do CVP, desta vez em Qn . No entanto, o vetor de erro agora e/2 , menor que o original, com todas iguais a 1/2. Nguyen usou este ataque para decifrar mensagens-desao que os autores do GGH haviam deixado na Internet.

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 e df . Seja p = 3. pk = h = [T f ]1 g (mod q ) Zn q sk = ([T f ], f, g ) tais que f g e1 + {p, 0, p}n {p, 0, p}n .

Pr e

e obtemos um sistema de congruncias onde a incgnita m. Nguyen mostrou tambm que com alta probabilidade este sistema tem poucas solues. Supondo que conseguimos uma soluo m2 , observamos que

lim

A probabilidade de um adversrio encontrar o vetor de erro (e portanto conseguir decifrar a mensagem) tentando ao acaso 21 Note que n (desprezvel em n). encontrar o vetor de erro equivalente a resolver o problema SAT. A observao que fundamenta o ataque de Nguyen a Proposio a seguir:

in ar

Nguyen mostrou ataques ao NTRU que o tornam invivel na prtica. Suponha que m foi cifrada usando o GGH. Denotaremos tambm por m o vetor que representa a mensagem no reticulado. Como o GGH foi usado, sabemos que h um vetor de erro e com entradas iguais a tal que

notas de aula verso 79 - Jernimo C. Pellegrini

270

CAPTULO 21. RETICULADOS e tanto g como f e1 contm exatamente df + 1 valores positivos e df valores negativos. A matriz [T f ] invertvel mdulo q .

Dec(c) m = (([t f ]c) (mod q ))

(mod p).

21.5

Ajtai-Dwork

Mikls Ajtai e Cynthia Dwork propuseram um criptossitema baseado em reticulados, usando uma variante do SVP. Infelizmente o tamanho das chaves pblicas no criptossistema Ajtai-Dwork O(n4 ) e cada bit de texto claro expandido para O(n2 ) bits encriptados. Nguyen demonstrou que qualquer verso eciente do criptossistema seria insegura. No entraremos nos detalhes deste criptossistema.

21.6

LWE

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, n, m, q so inteiros e uma distribuio de probabilidades1 sobre Zq . Experimento 21.9 (LWE (A, n, m, q, )).

Ve rs
2. v0 R A
1 Pela

n 1. A R Zm . q

m 3. s R Zn q , e Zq , v1 = As + e

4. b R {0, 1} 5. Envie vb para A. 6. A envia um bit b de volta 7. O resultado do experimento 1 se e somente se b = b

O adversrio obtm sucesso no experimento LWE quando consegue distinguir As + e de v R Zm q .


primeira vez neste texto usamos uma distribuio diferente da uniforme!

Pr e

lim

in ar

Enc(m) a mensagem codicada como um vetor m {1, 0, 1}n . O texto encriptado c = m + [T f ]1 r (mod q ).

notas de aula verso 79 - Jernimo C. Pellegrini

21.6. LWE

271

Denio 21.10 (Problema LWE). O problema LWE consiste em obter probabilidade um no experimento LWE. Acredita-se que o problema LWE difcil (e portanto que somente adversrios rodando em tempo exponencial em n possam obter probabilidade um).

Notas

Exerccios

Ex. 130 O que um adversrio pode deduzir ao ver a mesma mensagem sendo encriptada com o GGH com dois vetores de erro diferentes, sabendo que ambas as mensagens so iguais? Ex. 131 (Fcil) Prove a Proposio 21.7.

Ex. 132 Se voc leu o Captulo22, faa o Exerccio 138.

Ve rs

Pr e

O livro de Daniele Micciancio e Sha Goldwasser [138] aborda exclusivamente problemas difceis em reticulados. O algoritmo LLL foi descrito por Lenstra, Lenstra e Lovsz em 1982 [139]. Uma descrio acessvel dada no livro de Hostein, Pipher e Silverman [107]. O LLL descrito tambm por Cohen [109], e h um livro de Nguyen e Vale [140] dedicado ao LLL e aplicaes. O Criptossistema GGH foi apresentado em 1997 por Goldreich, Goldwasser e Halewi [141]. Hostein, Pipher e Silverman descreveram o NTRU [142] em 1998. Cynthia Dwork e Mikls Ajtai apresentaram seu criptossistema tambm em 1998 [143]. O ataque de Nguyen ao criptossistema Ajtai-Dwork foi relatado em..... [?]. O criptossistema LWE mais recente foi descrito por Regev em 2005 [144].

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

272

CAPTULO 21. RETICULADOS

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 22

Cdigos Corretores de Erros

22.1

Correo de erros

Durante a transmisso de uma mensagem, erros podem ser introduzidos.

Ve rs

Um cdigo corretor de erros permite corrigir automaticamente erros na transmisso de mensagens. Isso feito inserindo informao adicional (redundncia) na mensagem. Suponha que queiramos transmitir uma de quatro mensagens: compre 00 aguarde 10 venda 01 reporte 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 00000 01 01011 10 10110 11 11101

o
273

Pr e

Cdigos corretores de erro podem ser usados na construo de criptossistemas. Este Captulo inicia com uma breve introduo a cdigos corretores de erro, para em seguida expor o criptossistema de McEliece. A introduo dada a cdigos aqui contm apenas os conceitos usados na descrio do criptossistema. Uma exposio mais detalhada sobre cdigos corretores de erros dada em Portugus no livro de Hefez e Villela [145]. Em Ingls, Hill [146], Roman [147] e Moon [148] do excelentes introdues.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

274

CAPTULO 22. 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 exemplo, a mensagem mais prxima de 00001 00000).

Denio 22.1 (Distncia de Hamming). Dados dois vetores v, w An , a distncia de Hamming entre v e w d(v, w) = |{i : vi = wi , 1 i n}| .

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, denimos o peso de um vetor como a quantidade de erros que sero introduzidos na mensagem.

Ve rs

Denio 22.3 (Peso de um Vetor). O peso de um vetor v a quantidade de entradas no nulas em v . Ser til tambm a noo de arredores de um vetor, que formalizada na denio de disco.

Denio 22.4 (Disco). Seja a An e t R, tal que t 0. O disco com centro a e raio t D(a, t) = {v An : d(v, a) t}. Denio 22.5 (Distncia Mnima). Seja C um cdigo. A distncia mnima de C min {d(u, w) : u, w C , u = w} . Teorema 22.6. Com distncia mnima d, um cdigo C pode corrigir no mximo (d 1)/2 erros.

Pr e

Teorema 22.2. A distncia de Hamming uma mtrica ou seja, para quaisquer trs vetores u, v, w,

lim

Denimos ento de maneira mais rigorosa a noo de mais prxima para mensagens.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

22.1. CORREO DE ERROS

275

Demonstrao. seja e = (d 1)/2 . Seja D(x, e) o disco com centro x e raio e. Se x e y so palavras-cdigo diferentes, D(x, e) D(z, e) = E a decodicao pela mnima distncia corrigir no mximo e erros.

Se um cdigo tem M palavras de tamanho n e distncia mnima d, dizemos que um (n, M, d)-cdigo. Denio 22.7 (Cdigos Equivalentes). Seja C um (n, M, d)-cdigo, uma n-permutao e pi uma q -permutao. Ento, Uma permutao posicional consiste em aplicar a cada palavra de C ;

Uma permutao simblica consiste em aplicar a cada smbolo do alfabeto de C . Dois cdigos C e C so equivalentes se possvel transformar C em C atravs de uma sequncia de permutaes posicionais e simblicas.

Seja C um cdigo com distncia mnima d, corrigindo no mximo e erros. Quando uma mensagem y recebida, possivelmente com erros, o receptor deve buscar a palavra cinC mais prxima da palavra recebida y . Quando o tamanho de C muito grande, isto muito lento. Suponha que o alfabeto de C , e que || = q , potncia de algum primo. Podemos ver como o conjunto de elementos de Fq .

Ve rs

Se || = q , o [k, n]-cdigo linear com alfabeto um (n, q k , d)-cdigo. Uma caracterstica importante de cdigos lineares que podemos descrev-lo com k palavras (a base do subespao C , que tem dimenso k ).

Denio 22.9. Seja C um [k, n]-cdigo linear. Uma base para o subespao de Vn determinado por C chamada de matriz geradora de C .

Teorema 22.10. Se G matriz geradora de C , e G obtida de G por Permutao de linhas ou de colunas, Multiplicao de linhas ou de colunas por escalar, ou Soma de mltiplo de uma linha a outra linha,

ento G gera um cdigo C , equivalente a G.

Denio 22.8 (Cdigo Linear). Seja Vn (q ) o espao vetorial de dimenso n sobre o corpo Fq . Um cdigo linear C sobre um subespao de Vn (q ). Se C um espao k -dimensional, dizemos que um [k, n]-cdigo.

Pr e

22.1.1

Cdigos Lineares

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

276

CAPTULO 22. CDIGOS CORRETORES DE ERROS

c = mG. Exemplo 22.11. A matriz geradora 1 0 G = 0 1 0 0 Para codicar a mensagem 1 mG = 1 0 1 0 0

Pr e
0 A = 2 1 1 1 0 0 H = 1 1 2 1 0 1 0 2

m = 101, calculamos: 0 0 0 1 1 1 0 2 1 0 = 1 0 1 1 0 2

lim
0 2 1 0 1 0 0 0 1 0 0 0 1

Seja C um [k, n]-cdigo linear sobre = Fq com matriz geradora G na forma [Ik , A] A codicao de uma mensagem m em c realizada da seguinte maneira: interpretamos m como um vetor linha m1 , m2 , . . . , mk e calculamos

de um cdigo linear 0 0 1 1 0 2 1 0 . 1 1 0 2

Ve rs

Denio 22.12 (Teste de Paridade). Seja C um cdigo linear com matriz geradora G = [Ik ; A]. A matriz teste de paridade de C H = [AT ; Ink ]. 1 0 0 , AT = 1 2 1 1 0 1

e portanto

O prximo Teorema d um mtodo para deteco de erros (mas no para correo).

Denimos agora a matriz de teste de paridade, que usada para vericar se uma palavra pertence ao cdigo, e tambm para decodicar palavras corrigindo erros.

in ar
1 2 2 0 .

O Teorema 22.10 nos garante que para qualquer cdigo linear C com geradora G podemos transformar G em G da forma [Ik , A], onde Ik a matriz identidade k k . Assim, h um cdigo C equivalente a C com matriz geradora nesta forma. 1 0 0 a1,1 a1,2 0 1 a2,1 G = [Ik , A] = . . . . . . . . . 0 1

notas de aula verso 79 - Jernimo C. Pellegrini

22.1. CORREO DE ERROS Teorema 22.13. c C se e somente se HcT = 0. Exemplo 22.14. Para a palavra que codicamos, 101220, 1 0 0 0 2 1 1 0 0 1 = 0 . 0 1 0 HcT = 1 1 0 2 0 1 0 2 0 0 1 2 0 Decodicao

277

Teorema 22.15. Se aps o envio de uma mensagem m uma mensagem y = m + e recebida, ento y pertence a uma classe lateral de C , e esta classe lateral o de possveis vetores de erro.

Decodicar uma mensagem y recebida encontrar na classe lateral y + C o vetor de menor peso. 1. encontre z , o lder da classe lateral y + C 2. m = y z Teorema 22.16. Seja C um cdigo linear com matriz teste de paridade H . Duas palavras y1 e y2 de C pertencem a uma mesma classe lateral se e somente se T T Hy1 = Hys . Demonstrao. Pela denio, y1 e y2 pertencem mesma classe lateral se e somente se existe c C tal que y1 = y2 + c. Ento
T Hy1

Ve rs

Como HcT = 0, a prova est concluda.

Denio 22.17 (Sndrome). A sndrome de uma classe lateral x + C HxT . O algoritmo de decodicao pode ser melhorado mantendo uma tabela que mapeie sndromes em lderes de classes laterais.

Pr e
= = H (y2 + c)T
T Hy2 + HcT .

Demonstrao. e vetor de erro se e somente se existe c C tal que e = y c. Mas C subespao de Vn . Se c C , ento c C e e = y + c, e e y + C .

lim

Seja C um [n, k ]-cdigo binrio. Como C subespao de Vn , ento o grupo aditivo (C , +) subgrupo de (Vn , +). Por isso, para todo x Vn h uma nica classe lateral x + C .

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

278

CAPTULO 22. CDIGOS CORRETORES DE ERROS

22.2

Criptograa com cdigos corretores de erros

Construo 22.18 (Criptossistem de McEliece).

Gen(1n ): escolha t N tal que t << n. Gere as matrizes:

S uma matriz k k , uma matriz binria aleatrea no singular. P uma matriz n n aleatrea de permutao. = SGP . Finalmente, gere a matriz chave G pk = (G, t) sk = (S, G, P )

+ z , onde z um vetor de erros com peso no mximo t. Encpk (m) = mG Decsk (c):

1. Calcule c = cP 1 . Como P 1 de permutao, ento c palavra do cdigo de canal (assim como c). 2. Use o algoritmo de decodicao do cdigo para obter uma palavra m a partir de c .

Ve rs

A corretude do criptossistema de McEliece no imediatamente bvia, por isso a demonstramos a seguir. Teorema 22.19. Para qualquer par de chaves pk, sk no criptossistema de McEliece, Decsk (Encpk (m)) = m.

Demonstrao. Primeiro observamos que c = = = = = cP 1 + z )P 1 (mG (mSGP + z )P 1 (mS )GP P 1 + zP 1 (mS )G + zP 1 .

A partir disso, temos os seguintes fatos:

3. Retorne m = mS 1 .

Pr e

lim

G uma matriz k n, matriz geradora de um [n, k ]-cdigo linear que corrija no mximo t erros.

in ar

Esta Seo descreve o criptossistema de McEleice., que baseado na diculdade de decodicar cdigos lineares (que N P -difcil [149]). A ideia que McEliece teve muito simples: o processo de encriptao adiciona rudo aleatreo mensagem, de maneira que no seja possvel recuper-la facilmente. Para decriptar a mensagem, a chave pblica usada uma matriz decodicadora que corrige os erros introduzidos.

notas de aula verso 79 - Jernimo C. Pellegrini

22.2. CRIPTOGRAFIA COM CDIGOS CORRETORES DE ERROS mS uma palavra do cdigo da fonte, e (mS )G sua codicao;

279

Como a quantidade de erros menor que t, o algoritmo de decodicao obter mS . Ao multiplicar mS por S 1 obtemos m.

Teorema 22.20. O criptossistema de McEliece, como descrito na Construo 22.18, 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

Ve rs
Exerccios

Ex. 133 Prove o Teorema 22.2. Ex. 134 Prove o Teorema 22.10. Ex. 135 Prove o Teorema 22.13. Ex. 136 Prove o Teorema 22.20. Ex. 137 Implemente um cdigo corretor de erros linear simples. Ex. 138 Se voc leu o Captulo 21, discorra sobre a relao entre cdigos corretores de erros e reticulados, com particular ateno a suas aplicaes em Criptograa.

O primeiro criptossistema baseado em cdigos corretores de erros foi o de Robert McEliece, publicado em 1978 [150, 151] e foi tambm o primeiro criptossistema randomizado. Nojima, Imai, Kobara e Morozov demonstraram em 2008 que o ciptossistema de McEliece tem segurana IND-CPA se a mensagem for cocnatenada com um vetor de bits aleatrios [152].

Pr e

lim

Apesar do criptossistema de McEliece ser randomizado, temos o seguinte Teorema:

in ar

Como P 1 uma permutao e z tem no mximo t uns, zP 1 tambm ter no mximo t uns. Isto signica que adicionamos no mximo t erros mensagem codicada mS .

notas de aula verso 79 - Jernimo C. Pellegrini

280

CAPTULO 22. CDIGOS CORRETORES DE ERROS

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 23

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.

23.1

Um nico segredo (Naor e Shamir)

Ve rs

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:

o
A=

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 1/2 ou B, A 281

Pr e
B=

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.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

282 com probabilidade 1/2).

CAPTULO 23. CRIPTOGRAFIA VISUAL

B+B= A+B= B+A=

+ + +

= = =

Pr e
1, 1, 0, 0 0, 0, 1, 1 1, 1, 1, 1

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 A pode representar zero ou um com probabilidade 1/2; o mesmo vale para B , e temos o mesmo efeito do one-time pad! Com isto podemos denir mais claramente o que entendemos por um esquema visual de compartilhamento de segredos. Queremos distribuir imagens (ou transparncias) para cada um dos participantes. Cada pixel da mensagem clara pode ser codicado em m pixels na imagem encriptada (no caso anterior, m = 4). Podemos codicar cada um dos blocos que descrevemos como uma linha: A descrito como (1, 1, 0, 0) e B como (0, 0, 1, 1) Somar A com A (ou A com B etc), como zemos acima, o mesmo que fazer o ou lgico de duas linhas:

o
A, B :

Ve rs

No primeiro caso, demos um bloco A para um participante e um bloco B para outro. O resultado da superposio um bloco completamente coberto (a linha do resultado s tem uns). No segundo caso, demos partilhas A para ambos, e o resultado um bloco com 50% de uns. Assim, para escolher partilhas de n participantes, selecionamos n linhas. O ou exclusivo das linhas pode ter peso de Hamming alto (resultando em um pixel escuro) ou baixo (resultando em um pixel cinza). Escolhemos as partilhas de um pixel por vez, e depois entregamos a cada participante a imagem com todos os seus pixels. Para determinar como um pixel ser traduzido no texto encriptado, fazemos o seguinte: i) Se o pixel um (preto), escolha aleatoreamente uma sequncia de imagens (no ltimo exemplo cada uma com 4 pixels) que, quando sobrepostas, que completamente encoberta.

lim
A, A :

1, 1, 0, 0 1, 1, 0, 0 1, 1, 0, 0

in ar

A+A=

notas de aula verso 79 - Jernimo C. Pellegrini

23.1. UM NICO SEGREDO (NAOR E SHAMIR)

283

ii) Se o pixel zero (branco) , escolha aleatoreamente uma sequncia de imagens (no ltimo exemplo cada uma com 4 pixels) que, quando sobrepostas, que parcialmente encoberta.

C0 = C1 =

1100 1010 0101 0011 1001 0110 , , , , , 1100 1010 0101 0011 1001 0110

1100 1010 0101 0011 1001 0110 , , , , , 0011 0101 1010 1100 0110 1001

Denio 23.1 (Esquema visual de compartilhamento de segredos (k, n)). Um esquema visual (k, n) de compartilhamento de segredos consiste de dois conjuntos C0 e C1 , cada um contendo matrizes n m. Sejam d e como descritos no texto. Exigimos que: i) Para qualquer matriz S em C0 , o ou lgico de quaisquer k linhas deve ter medida de Hamming d m.

Ve rs

ii) Para qualquer matriz S em C1 , o ou lgico de quaisquer k linhas deve ter medida de Hamming > d.

iii) Seja { i1 , i2 , . . . , iq }, com q < k , e seja Dt o conjunto de matrizes obtido a partir de Ct , mas apenas com as linhas i1 , . . . , iq . Os conjuntos D0 e D1 devem ser indistinguveis (devem ter as mesmas matrizes com as mesmas frequncias). Por exemplo, para q = 1 usando apenas a linha 0 no exemplo anterior, temos C0 = C1 = 1100 , 1010 , 0101 , 0011 , 1001 , 0110 .

Desta forma se q participantes se unirem, no sabero, para um dado pixel, se suas partilhas foram sorteadas do conjunto C0 ou de C1 .

Pr e

Neste exemplo temos somente dois possveis resultados para a superposio: 100% preto ou 50% preto (cinza), e fcil determinar quais pixels sero considerados brancos e quais sero considerados pretos. Quando mais blocos so superpostos, podemos ter valores como 1/3, 1/4 ou qualquer outra proporo de preto e branco. Denimos ento que os pixels brancos so aqueles para os quais H (v ) d m, onde d um limiar e a diferena relativa, e que os pixels pretos so aqueles para os quais H (v ) d. Para que haja contraste e seja possvel identicar a mensagem, no deve haver pixels com H (v ) entre d e d m.

lim

in ar
, .

Podemos ento construir dois conjuntos de matrizes, C0 e C1 , de forma que linhas de C0 sempre tenham peso de Hamming baixo e as de C1 tenham peso alto.

notas de aula verso 79 - Jernimo C. Pellegrini

284

CAPTULO 23. CRIPTOGRAFIA VISUAL

23.1.1

Esquemas para k e n pequenos

Ve rs
23.2 23.3 Notas

Naor e Shamir apresentaram seu artigo sobre Criptograa Visual na EUROCRYPT de 1994 [153]. 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 [154, 155, 156]. Yvo Desmedt, Shuang Hou e Jean-Jacques Quisquater desenvolveram tcnicas para criptograa ptica e de udio [157], e novas tcnicas foram propostas por Chen-chi Lin, Chi-sung Laih e Ching-nung Yang [158]. Estruturas gerais

Construo 23.3 (Esquema visual (3, 3) de compartilhamento de segredos). C0 e C1 denidos a seguir constituem um esquema visual (3, 3) de compartilhamento de segredos. 0, 0, 1, 1 C0 =perm_col 0, 1, 0, 1 0, 1, 1, 0 1, 1, 0, 0 C1 =perm_col 1, 0, 1, 0 1, 0, 0, 1

Dois segredos Mltiplos segredos

Pr e

lim
0, 0, 0, . . . , 1

Construo 23.2 (Esquema visual (2, n) de compartilhamento de segredos). Seja perm_col (M ) o conjunto das matrizes obtidas permutando as colunas de M . Ento C0 e C1 denidos a seguir so um esquema (2, n) de compartilhamento de segredos. 1, 0, 0, . . . , 0 1, 0, 0, . . . , 0 C0 =perm_col . . . 1, 0, 0, . . . , 0 1, 0, 0, . . . , 0 0, 1, 0, . . . , 0 C1 =perm_col . . .

in ar

O esquema exposto no incio deste Captulo funciona para dois participantes, e ambos devem juntar suas transparncias para obter a mensagem. Nesta Seo desenvolvemos esquemas mais gerais, (2, n) e (3, 3).

notas de aula verso 79 - Jernimo C. Pellegrini

23.3. MLTIPLOS SEGREDOS

285

Exerccios

Ex. 139 Prove que a Construo 23.3 realmente um esquema de compartilhamento visual, de acordo com a Denio 23.1. D tambm os valores de d e .

Ex. 141 Qual o limite de nmero de k para o programa que o Exerccio 140 pede?

Ve rs

Pr e

lim

Ex. 140 Implemente os esquemas para compartilhamento de um nico segredo descritos no texto: o programa deve ler k , n, uma mensagem, e gravar arquivos com as imagens de cada participante.

in ar

de acesso para criptograa de udio foram propostas por Daniel Socek e Spyros Magliveras [159]. Wu e Chen propuseram em 1998 seu esquema que permitia compartilhar mais de um segredo [160]. Wu e Chang descreveram seu mtodo em 2005 [161]. O livro organizado por Stelvio Cimato e Ching-Nung Yang trata extensivamente de criptograa visual[162].

notas de aula verso 79 - Jernimo C. Pellegrini

286

CAPTULO 23. CRIPTOGRAFIA VISUAL

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 24

Encriptao Negvel

Ve rs

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 aquela uma mensagem encriptada, e poder (dependendo das circunstncias) usar obter a chave usando de coero. Queremos que seja possvel a Alice e Bob escapar convincentemente da coero de Eve sem revelar o texto claro. H uma maneira de atingir este objetivo: Alice encripta uma mensagem m com uma chave k e usando bits aleatreos r, resultando em c (normalmente no damos tanta ateno fonte de bits aleatreos, mas ela crucial neste Captulo). Quando Eve exige a entrega da chave e dos bits aleatreos usados, Alice entrega uma mensagem falsa m e uma chave k ou bits r tais que Enck (m , r ) = c. Usando criptossistemas tradicionais isso no vivel uma das caractersticas desejveis do projeto desses sistemas justamente que seja difcil encontrar m (por isso o esquema de assinaturas RSA funciona) e um texto encriptado muitas vezes visto como um comprometimento com o texto claro. Neste Captulo usaremos a notao Encpk (m, r) para denotar a encriptao da mensagem m usando a chave pblica pk , e usando r como um parmetro extra de aleatoriedade. Demos o nome de criptossistemas s construes do Captulo 9. As construes apresentadas neste Captulo podem envolver mais comunicao do que normalmente se d em criptossistemas assimtricos (as duas partes podem ter que trocar mais do que duas mensagens), e portanto tratamos estas construes como protocolos (ou esquemas) negveis para envio de mensagens. Podemos classicar etes protocolos de acordo com a possibilidade de negao da mensagem. Um protocolo negvel pelo remetente se o remetente (aquele que encriptou a mensagem) puder convencer um adversrio de que a mensagem clara m e no m. 287

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

288

CAPTULO 24. ENCRIPTAO NEGVEL Isso signica que aps encriptar c = Encpk (m, r), deve ser possvel escolher m , r tais que Encpk (m, r) = Encpk (m , r ). Isso feito por um algoritmo Fake(pk, c, m ), que determina r .

negvel por remetente e destinatrio.

Queremos que um adversrio no possa distinguir entre as duas situaes a seguir.

i) S envia a R a mensagem m, e declara honestamente ao adversrio que enviou m. ii) S envia a R a mensagem m , e declara falsamente ao adversrio que enviou m.

Pr e
S
m1

Denotamos os bits aleatreos de S por rS em (i) e rS em (ii); da mesma forma, a entrada aleatrea de R nas duas situaes rR e rR . Na situao (ii), S declara ter enviado m = 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 . O diagrama a seguir ilustra as duas situaes decritas. R rR

rs

m1

o Ve rs
rs m2 S

Fake(rS , t, m2 )

lim
r S

(m2 , r S , t)

(m2 , rS , t ) rR
m2

Denio 24.1 (Esquema de encriptao negvel pelo remetente). Um esquema de encriptao negvel pelo remetente um protocolo (Gen, Send, Receive, Fake), onde Send e Receive so programas usados pelos agentes S , remetente e R, destinatrio, para que S envie uma mensagem a R, Gen e Fake so algoritmos polinomiais, como descrito a seguir.

in ar
R

negvel pelo destinatrio quando o destinatrio (que decifra a mensagem) pode escolher decifrar m ao invs de m;

notas de aula verso 79 - Jernimo C. Pellegrini

24.1. ESQUEMA DE HOWLADER-BASU Gen(1n ) gera um par de chaves pk e sk .

289

Sendpk (m, rS ) usando os bits aleatreos rS , envia de S a R a mensagem m. Receivesk (rR ) usando os bits aleatreos rR , obtm de R uma mensagem m.

Fake(pk, t, rS , m ) gera uma sequncia de bits r S que poderia ser usada para envia uma mensagem m . Denotamos por COM(m, rS , rR ) a transcrio da comunicao usada quando R envia m para S , e os bits aleatreos de R e S so rS , rR . O protocolo deve satisfazer os seguintes requisitos.

Corretude: Se S enviou uma mensagem m a R usando o protocolo, a probabilidade de R receber m = m desprezvel em n. Segurana: COM(m1 ) COM(m2 ).

O requisito de segurana equivalente a segurana CPA para criptossistemas assimtricos.

24.1

Esquema de Howlader-Basu

Ve rs

Construo 24.2 (Esquema de Howlader-Basu, negvel pelo remetente (nico bit)). Gen(1n ): escolha dois primos p, q com n bits cada, e seja N = pq . As chaves pblica e privada do destinatrio so pk = N e sk = (p, q ). Gere tambm aleatoreamente r = 0 com k bits, para algum k sucientemente grande. SendN (b, r) calculada da seguinte maneira: Cada bit de r determina uma linha em uma matriz A: a0,0 a0,1 A = a1,0 a1,1 . .. . . . A i-sima linha contm nmeros em ZN .

O primeiro exemplo deste Captulo o esquema de Howlader-Basu, cuja segurana se apoia no problema da residuosidade quadrtica (denido na Seo 9.9).

Pr e

Negabilidade: Suponha que rS , rS , rS , rR so escolhidos com probabilidade uniforme e S enviou uma mensagem usando Sendpk (m1 , rS ). Seja t = COM(m1 , rS , rR ) e t = COM(m2 , rS , rR ). Ento Fake produz bits aleatreos r S tais que (m2 , rs , t) (m2 , r S , m2 , t ).

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

290

CAPTULO 24. ENCRIPTAO NEGVEL Quando o bit um, cada Ai,j deve ser (de fato) algum resduo quadrtico, determinado aleatoreamente: xj R ZN ai,j x2 j (mod n); Quando o bit zero, cada Ai,j deve pertencer a Zn , e seu smbolo de Jacobi deve ser um. Como j visto, isso signica que este nmero pode ser um resduo quadrtico. O bit encriptado o ou exclusivo do bit claro b com todos os bits representados pelas linhas da matriz:
k1

b=b
i=0

ri

onde ri o i-simo bit de r;

Fake(N, c, A, b): o remetente pode negar que um bit foi enviado, declarando que se tratava de um quando na verdade era zero e vice-versa. Como o bit encriptado calculado usando ou-exclusivo com todos os ri , Basta escolher r igual a r em todas as posies menos uma para mudar o bit encriptado. O remetente pode ento escolher uma linha que representava um (ou seja, que tinha resduos quadrticos) O algoritmo Fake retorna ento este r , com um dos bits 1 modicado para 0. Teorema 24.3. Presumida a conjectura da residuosidade quadrtica, a Construo 24.2 um criptossistema negvel pelo remetente como descrito na Denio 24.1. Demonstrao. O remetente pode declarar que a posio modicada em r para obter r realmente representava zero: um adversrio no conseguir determinar se os nmeros daquela linha eram de fato resduos quadrticos ou se apenas tem o smbolo de Jacobi igual a um (e no pode exigir a fatorao de N do remetente, porque ele no a tem). O contrrio (mudar uma linha de zero para um) no feito no esquema (se declararmos que a linha contm resduos quadrticos, o adversrio poderia exigir a raiz quadrada de cada um). H a possibilidade do algoritmo Enc, ao codicar uma linha zero, escolher nmeros com smbolo de Jacobi +1, mas que sejam todos resduos quadrticos. 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.

Ve rs

Pr e

Receivep,q (b, A). Para decriptar, basta notar que a chave secreta (p, q ), e portanto fcil determinar se um nmero resduo quadrtico mdulo pq . Assim o destinatrio pode determinar, para cada linha, se ela representa zero ou um.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

24.1. ESQUEMA DE HOWLADER-BASU

291

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.

Exemplo 24.5 (Esquema de encriptao negvel (Howlader-Basu para um bit)). Suponha que o bit ser enviado seja b = 1, e que a chave pblica de Bob seja N = 5 7 = 35. Escolhemos aleatoreamente r = (1, 1, 0, 0). Este valor de r implica que em nossa matriz A, as duas primeiras linhas devem ter resduos quadrticos (mod 35), e as duas ltimas devem ter nmeros com smbolo de Jacobi (x/35) = 1. Para a primeira linha, selecionamos aleatoreamente x = (18, 20, 2, 30) e calculamos x2 j (mod 35), obtendo (9, 15, 4, 25).

A segunda linha calculada de maneira semelhante. Escolhemos aleatoreamente

e calculamos os quadrados:

Para a segunda e a terceira linhas, precisamos de nmeros x tais que (x/35) = 1. Escolhemos ento (3, 11, 17, 29)

Ve rs

Destes, 3, 13, 17 e 27 no so resduos quadrticos embora tenham (x/25) = +1. A matriz : 9 15 4 25 16 25 30 14 A= 3 11 9 29 27 17 25 13 Calculamos o texto encriptado c =1 (1 1 0 0) =1 0 =1.

Enviamos agora para Bob o resultado (c, A). Bob receber c e A e conseguir calcular r a partir de A: basta percorrer linha por linha e vericar se em cada uma os elementos so resduos quadrticos

Pr e
x = (31, 5, 10, 28) (16, 25, 30, 14). (27, 9, 25, 13)

lim

in ar

O Exerccio 143 pede a demonstrao deste Teorema. O Exemplo a seguir ilustra a aplicao do esquema.

notas de aula verso 79 - Jernimo C. Pellegrini

292

CAPTULO 24. ENCRIPTAO NEGVEL

(mod 35) ( fcil para Bob, cuja chave secreta a fatorao de 35). Isso s ocorre nas duas ltimas, e Bob determina r = (1, 1, 0, 0). fcil agora calcular m =c ri

=1 (1 1 0 0) =1.

Se Eve puder nos obrigar a entregar a mensagem enviada, podemos dizer que era zero (e no um): basta entregar A a Eve e dizer que r = (1, 1, 1, 0). Estamos ento declarando que as trs primeiras linhas de A contm resduos quadrticos. Como Eve no tem a chave pblica de Bob (e ns tambm no, por isso no podemos entreg-la), no tem como saber se estamos mentindo.

Construo 24.6 (Esquema de Howlader-Basu, negvel pelo remetente (mltiplos bits)). Neste esquema a funo Send recebe as duas mensagens como parmetro.

SendN (m1 , m2 , r): sejam m1 , m2 mensagens com k bits cada uma. Calcule a diferena entre m1 e m2 mdulo dois: md = m1 m2 . r = r md .

Um vetor r calculado:

o Ve rs
Retorne (c, A).

Calcule A representando o vetor r . c = m1 r .

Receive(p,q) (c, A): construa r a partir de A e depois decifre a mensagem: m1 = c r .

Fake(N, c, A, m2 ): para abir A desonestamente sob coero, observamos que no podemos mudar os bits de r 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, r = r md (onde r zero, mantemos o zero; onde um, mudamos para zero se um bit onde m1 e m2 diferem). O adversrio poder vericar que m2 = c r .

Pr e

Gen(1n ): escolha dois primos p, q com n bits cada, e seja N = pq . As chaves pblica e privada do destinatrio so pk = N e sk = (p, q ).

lim

O esquema apresentado ineciente quando queremos enviar mais de um bit: cada bit implica na gerao de uma nova matriz.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

24.1. ESQUEMA DE HOWLADER-BASU

293

A segurana do esquema para mltiplos bits semelhante do esquema para um nico bit. Exemplo 24.7 (Esquema de encriptao negvel (Howlader-Basu para mltiplos bits)). A mensagem que queremos transmitir m1 = (0, 1, 1, 0), e a que queremos alegar ter enviado m2 = (0, 0, 1, 1). Suponha que tenhamos a mesma matriz A do exemplo anterior: 9 16 A= 3 27 Calculamos 15 4 25 30 11 9 17 25 25 14 29 13

md =(0, 1, 1, 0) (0, 0, 1, 1) = (0, 1, 0, 1) r =(1, 1, 0, 0) md = (1, 1, 0, 1) c =m r =(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 r = (1, 1, 0, 0) a partir de A e calcula m1 = r c = (1, 1, 0, 1) (1, 0, 1, 1) = (0, 1, 1, 0) Se formos obrigados a entregar a mensagem, calculamos

Ve rs

Dizemos a Eve que enviamos m2 usando r , e nossa armao ser plausvel porque r c = (1, 0, 0, 0) (1, 0, 1, 1) = (0, 0, 1, 1) = m2 .

Na Construo 24.6, Send e Receive funcionam de maneira clara: so apenas uma variante do one-time pad, com o pad sendo transmitido como uma matriz de nmeros mdulo N . J a corretude do algoritmo Fake no imediatamente clara, e portanto provamos o seguinte Teorema. Teorema 24.8. A sada de Fake como na Construo 24.6, r tal que m2 = r c, desde que o remetente consiga obter r corretamente a partir de A. Demonstrao. A cadeia r usada como pad para encriptar m em c. Isso

r =r m d =(1, 1, 0, 1) (1, 0, 1, 0) =(1, 0, 0, 0).

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

294

CAPTULO 24. ENCRIPTAO NEGVEL

signica que r = m c (mod 2). Mas como c = m (r md ), temos m2 r =m2 (r md ) md =m md r md =m (md r md r md ) =m (md r md ) =m (md r) =c.

Teorema 24.9. A probabilidade de uma mensagem ser codicada erroneamente no esquema de Howlader-Basu desprezvel no nmero de colunas da matriz A.

24.2

Esquema de Drmuth-Freeman

Ve rs

Denio 24.10 (Criptossistema amostrvel). Um criptossistema para um nico bit amostrvel se: i) H um algoritmo eciente RandomCT(pk ) que escolhe c C tal que, para qualquer chave pblica pk , Encpk (m) seja computacionalmente indistinguvel de RandomCT(pk ).

ii) SampleEncRand(sk, c), que dados uma chave secreta e um texto encriptado, determina um r tal que, para qualquer chave secreta sk , (sk, c, r)

O esquema de encriptao de Drmuth-Freeman, descrito a seguir, fundamentase no conceito de encriptao amostrvel. O criptossistema no seguro (h um erro na demonstrao do Teorema que asseguraria a negabilidade), mas , ainda assim, um exemplo interessante de construo.

Pr e

Demonstrao. Metade dos smbolos k com (k/n) = +1 de fato resduo quadrtico, e a outra metade no. Assim, cada vez que escolhemos um smbolo para uma linha zero, a probabilidade de escolhermos um resduo quadrtico 1/2. Com k colunas na matriz, a probabilidade de erro 1/2k . Com m linhas zero, temos m(1/2k ) = m/2k , que desprezvel em k .

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.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

24.3. NEGABILIDADE POR DESTINATRIO E NEGABILIDADE COMPLETA295 seja computacionalmente indistinguvel de (sk, c, r ). iii) SampleCTRand(pk, c) que, dados uma chave pblica pk e um texto encriptado c, determina s tal que, para qualquer chave secreta sk , (sk, c, s) seja computacionalmente indistinguvel de (sk, c, s ).

Informalmente, o esquema de Drmuth-Freeman funciona da seguinte maneira: 1. Bob envia para Alice 4n + 1 chaves pblicas diferentes;

2. Alice particiona as chaves em trs conjuntos A, B, C e usa: A : n + 1 chaves para encriptar b; B : n chaves para encriptar b;

C : 2n chaves para usar com RandomCT(k ), resultando em bits de C , tal que a probabilidade de um deles ser uma possvel encriptao de b 1/2; Alice repete este processo k vezes para garantir que a maioria dos bits ser b. 3. Alice envia para Bob todos os bits encriptados;

Ve rs
24.3

4. Bob decifra todos os bits e presume que b aquele representado pela maioria dos bits decifrados;

Quando Alice for obrigada a entregar a encriptao e o bit enviado, ela pode apresentar conjuntos A , B , C de forma que A represente uma encriptao de b.

Negabilidade por destinatrio e negabilidade completa

possvel construir esquemas negveis pelo destinatrio e negveis pelas duas partes a partir de esquemas negveis pelo remetente.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

296

CAPTULO 24. ENCRIPTAO NEGVEL

A partir de um esquema negvel pelo remetente podemos tambm construir um esquema negvel por ambas as partes. Esta construo, no entanto, depende do auxlio de um nmero de participantes adicionais, que denotamos por I1 , I2 , . . . , Ik .

24.4

Aplicaes

Ve rs
Notas

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 ataque. Outra aplicao imediata de encriptao negvel a computao segura com mltiplos participantes.

O primeiro trabalho a descrever encriptao negvel foi publicado em 1996 por Canetti, Dwork, Naor e Ostrovsky [163]. Um criptossistema negvel pelo remetente foi descrito em 2009 por Howlader e Basu [164]. Outros esquemas de encriptao negvel foram publicados por Maged Ibrahim [165, 166] e por Klonowski, Kubiak e Kutylowsk [167]. Drmuth e Freeman publicaram em 2011 o primeiro criptossistema supostamente negvel pelo remetente com probabilidade desprezvel de deteco [168] infelizmente Peikert e Waters mostraram que havia um erro na construo, e o criptossistema no seguro [169].

Pr e

Construo 24.12 (Esquema de encriptao completamente negvel). Para transmitir um bit b para B , A primeiro escolhe k bits tais que bi = b. Depois envia cada bi para cada intermedirio Ii usando um esquema negvel pelo remetente. Cada Ii ento envia bi para B usando um esquema negvel pelo destinatrio. Depois disso B pode calcular b = bi . Ainda que A, B e todos exceto um dos intermedirios sejam obrigados a entregar seus bits, possvel para A e B mentir a respeito do bit. Evidentemente necessrio que todas as partes envolvidas ajam de maneira coordenada.

lim

in ar

Construo 24.11 (Esquema de encriptao negvel pelo destinatrio). Seja um esquema de encriptao suportando negao pelo destinatrio. Sejam A e B duas partes e b um bit a ser enviado de A para B . Primeiro B escolhe aleatoreamente um bit r e envia para A usando . Em seguida, A envia b r para B . Como r foi enviado por B de forma negvel, B poder negar que recebeu o bit b: basta dizer que o bit aleatreo enviado era r, e que consequentemente o bit recebido foi b.

notas de aula verso 79 - Jernimo C. Pellegrini

24.4. APLICAES

297

Exerccios
Ex. 142 Porque, no esquema de Howlader-Basu, exigimos que r = 0? Ex. 143 Calcule a probabilidade de um bit ser transmitido erroneamente no esquema para um nico bit de Howlader-Basu, demonstrando o Teorema 24.4. Ex. 144 O esquema de Howlader-Basu depende da gerao de nmeros com smbolo de Jacobi (k/N ) igual a +1, onde N = pq a chave pblica do destinatrio. Mostre como gerar estes nmeros com distribuio uniforme.

Ex. 146 Dena encriptao negvel para criptossistemas simtricos, e construa um esquema de encriptao negvel simtrico. Ex. 147 Critique a construo de esquema negvel pelo destinatrio.

Ex. 149 A Construo 24.6 pode ser extendida para mltiplas mensagens m1 , m2 , . . . , mk , de maneira que o remetente possa decidir qual mi apresentar ao adversrio? Ex. 150 Descreva o esquema de Drmuth-Freeman com mais formalidade, usando a Denio 24.1. Ex. 151 Implemente os esquemas de Howlader-Basu e de Drmuth-Freeman.

Ve rs

Pr e

Ex. 148 As Construes 24.11 e 24.12 descrevem esequemas para um nico bit. Diga como us-las para mensagens com muitos bits.

lim

Ex. 145 No esquema de Howlader-Basu, dissemos que Gen deve gerar primos p e q com n bits, e tambm r com k bits, para algum k sucientemente grande. Se quisermos que ambos os valores nos dem o mesmo nvel de segurana, sabendo sabendo a complexidade do algoritmo do corpo de nmeros algbricos, quando deve ser k (em funo de n)?

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

298

CAPTULO 24. ENCRIPTAO NEGVEL

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 25

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 oferecer: Corretude: 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 um eleitor ao seu voto;

Ve rs

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

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

300

CAPTULO 25. 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;

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 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. A partir de um texto encriptado c deve ser possvel obter outro texto encriptado c que corresponde ao mesmo texto claro m (se usamos um esquema de encriptao homomrco para soma, basta operar com a encriptao de zero, por exemplo: c + Enc(0) = c , mas ambos decifram para a mesma mensagem); Mix-nets so redes de comunicao que tornam difcil determinar o autor de uma mensagem. A comunicao pode se dar de diferentes maneiras: Canal pblico, ou quadro de avisos;

Ve rs
25.1

Canal no-rastrevel (annimo); Canal seguro (sigiloso); Canal seguro e no-rastrevel.

Suponha que um grupo de usurios queira enviar (ou publicar) mensagens anonimamente. Queremos oferecer alguma garantia mnima de que as mensagens no podero ser ligadas aos remententes. Uma soluo para este problema o envio de mensagens usando mix nets. H n servidores encarregados de rotear as mensagens, cada um com um par de chaves pblica e privada (sk1 , pk1 ), (sk2 , pk2 ), . . . , (skn , pkn ).

Mix Nets

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

25.2. ASSINATURAS CEGAS

301

Para enviar uma mensagem m anonimamente, um usurio encripta a mensagem com as chaves pblicas de todos os servidores primeiro com pkn , depois com pkn1 , at pk1 :

25.2

Assinaturas cegas

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

O RSA pode ser usado para realizar assinaturas cegas. Suponha que as chaves so sk = (N, a) e pk = (N, b), e que Bob esteja pedindo autoridade Alice que assine uma mensagem m. 1. Bob escolhe r co-primo com N aleatoriamente e envia para Alice M = mrb (mod N ). 2. Alice assina M normalmente. O resultado, M = (mrb )a = ma rab , devolvido para Bob.

3. Bob remove o fator obfuscante rb multiplicando Sign(M ) por r1 : Signsk (M )r1 =ma rab r1 =ma rr1 =ma (mod N ).

SigExtract(s , r): se s foi gerado por Blind(m, pk, r) e s a assinatura de s pelo detendor do par de chaves pk, sk , ento SigExtract(s , r) retornar uma assinatura vlida de m, que pode ser vericada com a chave pblica pk .

Pr e

Suponha que uma autoridade precise assinar uma autorizao, mas sem saber seu contedo. Se usarmos uma assinatura RSA ou DSA comum, a autoridade necessarimante conhecer o contedo da mensagem. Queremos um mtodo para obfuscar a mensagem, permitir que ela seja assinada, e depois de assinada, remover o contedo obfuscante, conseguindo assim uma assinatura comum na mensagem.

lim

Em seguida, envia c ao primeiro servidor. Cada servidor Ai espera que uma quantidade de mensagens esteja disponvel, e decripta parcialmente usando sua chave (ski ). Depois muda aleatoriamente a ordem das mensagens e as envia para o servidor Ai+1 . O ltimo servidor poder abrir as mensagens e repass-las, mas sem a colaborao dos outros no poder associar as mensagens aos remetentes. Em esquemas de votao, mix-nets so usadas para permitir que eleitores enviem seus votos anonimamente.

in ar

c = Encpk1 (Encpk2 (. . . (Encpkn (m)) . . .))

notas de aula verso 79 - Jernimo C. Pellegrini

302

CAPTULO 25. VOTAO ELETRNICA

Desta forma Bob obteve ma (mod N ), que exatamente a mensagem m assinada com a chave de Alice sem que Alice saiba o contedo da mensagem. Teorema 25.2. No esquema de assinaturas cegas RSA, o assinante no obtm qualquer informao a respeito da mensagem alm do que poderia obter a partir da mesma mensagem encriptada usando o RSA. O Exerccio 155 pede que seja apontado o motivo da insegurana do uso da mesma chave para assinatura cega e para encriptao de mensagens.

25.3

Exemplo: esquema de Chaum

Construo 25.3 (Protocolo de votao de Chaum).

1. Cada eleitor Pi gera seu par de chaves (pki , ski ).

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 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 e Encski (vi ) esto na lista, todos podem decriptar e contar os votos.

Ve rs
25.3.1

Analisamos a seguir as caractersticas do esquema de Chaum. Esta uma anlise informal e muito pouco detalhada. Corretude: claramente sim.

o
Anlise

Pr e

2. Cada eleitor Pi encripta sua chave pblica pki e a envia para a mixnet por um canal inseguro (ou publica em um quadro de avisos): Pi M : Enck1 (Enck2 (. . . (Enckm (pki )) . . .)).

lim

O esquema de Chaum usa mix networks e depende de um criptossitema tal que Encpk (Encsk (x)) = Encsk (Encpk (x)) = x.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

25.4. EXEMPLO: O ESQUEMA CGS (CRAMER, GENNARO, SCHOENMAKERS)303 Robustez: o resultado computado por todos os eleitores, e para que seja manipulado seria necessrio quebrar o criptossistema usado no protocolo. Coalises no tem mais poder que eleitores individuais.

Sigilo: se a eleio for reiniciada na segunda fase, durante a apurao dos votos (quando exatamente um voto estiver faltando), todos conhecero os votos j depositados, e podero usar esta informao para inferir o voto do eleitor cujo voto estava faltando quando a eleio reiniciar. No-coercibilidade: no suportada qualquer eleitor pode provar que o detentor de um par de chaves plbica/privada, encriptando um texto a escolha do adversrio.

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

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 criptossistema 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 criadas. A chave privada (G, q, g, s), e s compartilhado por n autoridades. A chave pblica (G, q, g, h) publicada, assim como os comprometimentos hi = g si de cada autoridade com sua partilha si . Publica-se tambm um gerador t = g .
com qurum so descritos na Seo 12.6.

Pr e

lim

in ar

Democracia: no suportada a mixnet recebe uma lista de chaves pblicas, mas no h registro de eleitores.

notas de aula verso 79 - Jernimo C. Pellegrini

304

CAPTULO 25. VOTAO ELETRNICA II: Votao O eleitor Vi codica seu voto da seguinte maneira: sim: m0 =t

O voto encriptado em (a, b) = (g k , hk mb ),

onde b pode ser 0 ou 1 e k escolhido aleatoriamente. Em seguida, o eleitor constri uma prova de que seu voto da forma correta (ou seja, que encriptao de t+1 ou de t1 ). Para isto basta uma prova nointerativa de igualdade de logaritmos: logg (a) = logh (bt1 ) ou logg (a) = logh (bt). O voto e a prova so publicados no quadro de avisos. III: Apurao As provas de validade dos votos devem ser vericadas. Depois, o produto dos votos computado:

As autoridades podem ento juntar-se para calcular As e nalmente, C = BAs = tD

onde a diferena entre votos sim (t+1 ) e no (t1 ). Temos ento que D = logt (C ) a diferena entre os votos, mas no podemos facilmente computar logaritmos discretos. No entanto, sabemos que h no mximo M votos, e portanto podemos procurar a diferena sequencialmente, testando tM , tM 1 , . . . , tM at encontrar C .

Ve rs
25.4.1
Sigilo: Justeza:

Democracia: Vericabilidade:

No-coercibilidade: Complexidade de comunicao:

o
Anlise

Pr e

(A, B ) =

lim
ai , bi .

in ar

no: m1 =t1

notas de aula verso 79 - Jernimo C. Pellegrini

25.5. EXEMPLO: ESQUEMA FOO (FUJIOKA, OKAMOTO, OHTA)

305

25.4.2

Votao 1-de-L

kL 1 k2 C = tk 1 t2 . . . tL ,

e podero obter os valores de cada ki (o Exerccio 160 pede o desenvolvimento deste mtodo).

25.5

Exemplo: esquema FOO (Fujioka, Okamoto, Ohta)

Construo 25.5. I: Inicializao

1. O administrador gera suas chaves para assinaturas e publica sua chave pblica.

2. Cada eleitor Pi prepara seu voto vi produzindo a cdula

Ve rs
4. Pi assina ei :

onde ki uma chave aleatria e Commit um esquema de comprometimento de bit.

3. Pi obscurece ci , preparando para assinatura cega pela autoridade T : ei = Blind(ci , pkT , ri )

onde ri escolhido aleatoriamente.

II: Registro de votos

Finalmente, envia si para T junto com sua identicao: (IDi , ei , si ).

Pr e
ci = Commit(vi , ki ) si = Signski (ei )

No esquema FOO h duas autoridades: um administrador A, que distribui tokens para os eleitores, e um coletor de votos C , que recebe os votos dos eleitores de forma annima e os publica. Os eleitores podem vericar a presena de seus tokens e votos na lista. A decriptao dos votos e apurao so feitas pelo coletor.

lim

in ar

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 1 opo. O eleitor codica seu voto na i-sima opo encriptando t i . Supondo que h k1 votos na opo 1, k2 votos na opo 2, e assim por diante, durante a fase de apurao as autoridades obtero

notas de aula verso 79 - Jernimo C. Pellegrini

306

CAPTULO 25. VOTAO ELETRNICA

5. A autoridade T verica se cada eleitor Pi pode votar, e se no est registrando mais de um voto; verica tambm a assinatura de Pi , e se obtiver sucesso em todas as vericaes, envia para Pi assina ei e envia di = SignskT (ei ) para o eleitor Pi . 6. A autoridade T publica a lista de compromentimentos de voto (IDi , ei , si ). III: Votao 7. O eleitor Pi obtm a assinatura de T em ei : ti SigExtract(di , ri )

9. Pi envia ei assinado pela autoridade T (ou seja, (ei , ti )) a uma autoridade coletora C . 10. O coletor verica as assinaturas ei , ti .

IV: Apurao (abertura)

12. Pi verica se o nmero de votos na lista igual ao nmero de eleitores. 13. Pi verica se seu voto (j, ei , ti ) est na lista. 14. Pi envia a chave ki com o nmero j para C por um canal annimo.

Ve rs
25.5.1

15. O coletor abre os comprometimentos das cdulas e publica uma nova lista (j, ei , ti , ki , vi ). 16. Todos podem fazer a contagem dos votos.

A anlise das propriedades do protocolo dada aqui apenas informal. Sigilo: sim a ligao entre voto e eleitor obscurecida pela assinatura cega. No entanto, deve-se exigir que o coletor aguarde todos os votos para publicar a lista. Democracia: sim somente eleitores com direito a voto podem obter cdulas, e a autoridade T facilmente detecta votos duplos. No entanto, h a dependncia da honestidade de T .

o
Anlise

V: Apurao (contagem)

Pr e

11. O coletor publica uma lista (j, ei , ti ), onde j varia de 1 ao nmero de votos.

lim

8. Pi verica se a assinatura de T vlida: VrfpkT (ei , ti ). Se no for, a eleio abortada.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

25.5. EXEMPLO: ESQUEMA FOO (FUJIOKA, OKAMOTO, OHTA)

307

Vericabilidade: somente individual (cada eleitor pode vericar que seu voto est na lista). No entanto, se um grupo de eleitores no votar, a autoridade T pode votar por eles portanto no h vericabilidade universal, e h a dependncia da honestidade de T . Justeza: sim as cdulas no so contabilizadas, e seu contedo no conhecido, antes da fase de contagem. No-coercibilidade: no cdula um recibo. Complexidade de comunicao:

Notas

Ve rs
Exerccios

H uma grande gama de sistemas de votao, cada um proposto com diferentes objetivos; a Teoria da Escolha Social trata das preferencias dos indivduos e de como estas levam a escolhas coletivas. comum considerar o trabalho de Condorcet [170] como ponto de partida para a histria da Teoria da Escolha Social, sendo que a sua concepo moderna deriva dos trabalho de Kenneth Arrow [171, 172]. A coletnea organizada por David Insua e Simon French contm diversos artigos relacionados a sistemas de votao e sua aplicao em forma eletrnica [173], e h inclusive um Captulo introdutrio sobre sistemas de votao, elaborado por Hannu Nurmi. H uma seo sobre votao eletrnica no livro de Delfs [15]; a tese de doutorado de Zuzana Rjakov [174] d uma viso geral dos esquemas de votao existentes e dos mtodos usados neles. O primeiro sistema de votao apresentado (de Chaum) foi o primeiro de que se tem notcia, publicado como nota tcnica na Communications of the ACM por David Chaum em 1981, onde props a idia de mixnets. O esquema de votao aparece no texto apenas como aplicao das mixnets. As mix-nets so uma forma de roteamento annimo tambm usado em outros contextos, inclusive em mtodos de envio annimo de email usados nos anos 90 [175]; a idia continuou a ser adaptada, sendo tambm a essncia do sistema Tor [176] de anonimizao na Internet. O esquema de Ronald Cramer, Rosario Gennaro e Berry Schoenmakers foi publicado em 1997 [177]. Um esquema de votao particularmente interessante foi desenvolvido por Zuzana Rjakov em sua tese de doutorado [174], onde tambm descrito um mtodo para construir canal sigiloso usando encriptao negvel. Assinaturas cegas foram propostas por David Chaum em 1982 no contexto da implementao segura de dinheiro digital [178].

Ex. 152 Implemente uma mix-net para algum sistema de comunicao (por exemplo, e-mail ou um quadro de avisos com interface web).

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

308

CAPTULO 25. VOTAO ELETRNICA

Ex. 153 Prove o Teorema 25.2. Ex. 154 Como poderamos obter um esquema de assinaturas cegas usando assinaturas Elgamal? Ex. 155 Mostre que no seguro usar o mesmo par de chaves for usado para assinaruras cegas RSA e encriptao de mensagens. Ex. 156 A descrio de assinaturas cegas RSA dada neste Captulo informal. Formalize-a usando a denio dada. Ex. 157 Verique no Captulo sobre Assinaturas Digitais se

Ex. 159 O esquema de Chaum depende de um criptossistema onde valha Encsk (Encpk (x)) = x. Que criptossistema satisfaz essa exigncia? Ex. 160 Na Seo 25.4.2 h uma brevssima descrio da extenso do esquema de Cramer, Gennaro e Schoenmakers para votao 1-em-L. Desenvolva os detalhes. Mostre, em particular, como so as provas de validade de voto, as provas apresentadas pelas autoridades e como se d a contagem dos votos. Ex. 161 O esquema Cramer-Gennaro-Schoenmakers pode ser extendido para votao do tipo K -em-L. Mostre como.

Ve rs

Pr e

lim

Ex. 158 Implemente um dos sistemas de votao descritos neste Captulo. Tente implementar primitivas criptogrcas aos poucos, e somente depois implemente o esquema de votao.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 26

Dinheiro Eletrnico
Anonimidade Pseudonimodade No-rastreabilidade Possibilidade de Transferncia Preveno de gasto duplo No-fraudabilidade No-framing Justeza Recuperabilidade Auditabilidade

Ve rs
Notas

O primeiro artigo a propor dinheiro digital foi publicado em 1982 por David Chaum [178]. H uma seo sobre dinheiro eletrnico no livro de Delfs [15]; uma viso geram (em nvel de detalhe bastante alto) dada no trabalho de Isabelle SimplotRyl, Issa Traor e Patricia Everaere [179]. Em sua tese de doutorado, Mansour Al-Meaither apresenta uma discusso interessante e que trata especicamente de dinheiro eletrnico respeitando princpios Islmicos [180].

o
309

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

310

CAPTULO 26. DINHEIRO ELETRNICO

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Captulo 27

Cifras Histricas

27.1

Cifras

Ve rs

Denio 27.1 (Cifra de substituio). Uma cifra dita de substituio se sua aplicao consiste em substituir caracteres da mensagem por caracteres do alfabeto. Se os caracteres so substitudos por outros a uma distncia xa, a cifra de deslocamento. Em um alfabeto com 26 caracteres, onde cada m um caracter, Enck (m) = mk (mod 26).

(A chave o deslocamento) Uma cifra de substituio pode ser monoalfabticas, quando um caractere substitudo de cada vez, ou polialfabticas, quando grupos de caracteres so substitudos. Em uma cifra de deslocamento, a quantidade de chaves a quantidade de possveis deslocamentos que igual ao tamanho do alfabeto (muito pequena). Em uma cifra arbitrria de substituio a quantidade de chaves igual quantidade de permutaes de M ou seja, |M|! 311

comum classicar as cifras apresentadas neste Captulo em alguns tipos diferentes.

Pr e

Este Captulo descreve algumas cifras histricas, usadas antes do trabalho de Shannon. Como todas as cifras discutidas operam em sequncias de caracteres (texto legvel), e no bits, os exemplos usam alfabeto de tamanho 26, e muitas vezes estar presumido que a mensagem m um nico caracter (o contexto deixar claro quando for este o caso). Ao considerar mensagens para encriptao, primeiro as mostraremos com acentuao, mas as usaremos sem acentos e usando apenas letras maisculas. Por exemplo, para encriptar Memrias Pstumas de Brs Cubas, usamos o texto claro MEMORIAS POSTUMAS DE BRAS CUBAS .

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

312

CAPTULO 27. CIFRAS HISTRICAS

Denio 27.2 (Cifra de permutao). Uma cifra de permutao se os caracteres usados no texto claro tem apenas suas posies permutadas. Denindo o tamanho da mensagem (ou bloco) como n, a chave uma permutao das n posies do bloco. Assim temos n! chaves.

Exemplo 27.3 (Ctala espartana). Aparentemente, os espartanos desenvolveram uma cifra de permutao. A realizao fsica da cifra chamada de Ctala, e consiste de um cilindro e uma ta. A ta passada ao longo do cilindro, e a mensagem escrita na ta. Quando a ta retirada do cilindro, os caracteres tem suas posies trocadas. A chave o dimetro do cilindro.

Ve rs

O texto encriptado a sequncia de caracteres das linhas da matriz transposta: D O A S O O R N T U T I T F A C

Temos ento o texto encriptado DOASOORNT U TI TFAC. Exemplo 27.4 (Cifra de Csar). Um mtodo que aparentemente foi usado por Jlio Csar consiste em trocar cada letra pela terceira prxima no alfabeto, sendo assim a cifra de deslocamento com chave igual a 3. A cifra transforma A em D, B em E , sendo que X, Y, Z so mapeados em A, B e C respectivamente. De maneira geral, a cifra mapeia m m + 3 (mod 26) (Csar a usou com o alfabeto usado na Roma antiga, que difere ligeiramente do nosso). Assim, a frase O Rei est n! seria codicada como R UHL HVWD QX. Exemplo 27.5 (ROT13). A cifra de deslocamento com chave k = 13 conhecida como ROT13, e normlamente usada para evitar a leitura no intencional de texto na Internet (por exemplo, uma parte de um texto onde se conta algo que pode estragar a experincia de um lme, livro ou jogo).

Pr e

H uma maneira de descrever a aplicao da ctala espartana usando matrizes: o texto quebrado em blocos de maneira a formar uma matriz com n linhas (onde n a quantidade de caracteres que cabe ao redor da ctala). Por exemplo, para encriptar Doutor Fantstico, obtemos a matriz D O U T O R F A N T A S T I C O

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

27.1. CIFRAS

313

Exemplo 27.7 (Cifra am). A cifra am uma generalizao da cifra de deslocamento. Ao invs de substituir um caracter m por m + k (mod 26), substitumos por ma + b (mod 26), e a chave ento o par (a, b).

Ve rs

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

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

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

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

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

Pr e

lim
Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y

Exemplo 27.8 (Cifra de Vigenre). A cifra de Vigenre uma cifra de substituio polialfabtica com chave. A chave uma sequncia de caracteres, e cada caracter do texto claro trocado de acordo com uma tabela que depende de sua posio. A seguinte tabela usada para determinar como os caracteres so substitudos.

in ar

Exemplo 27.6 (Atbash). A cifra Atbash uma cifra de substituio monoalfabtica, e consiste em trocar a primeira letra do alfabeto pela ltima, a segunda pela penltima, e assim por diante. Para um Por exemplo, a frase Se o luar meu amigo, censurar ningum se atreve seria encriptada como HV L OFZI V NVF ZNRTL XVMHFIZI MRMTFVN HV ZGIVEV

notas de aula verso 79 - Jernimo C. Pellegrini

314

CAPTULO 27. CIFRAS HISTRICAS

inicialmente TRIS. Para cada posio i, vericamos na tabela a posio mi , ki : (T, L) E (R, I ) Z

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. A cifra tabalha com blocos de tamanho n, portanto

Para encriptar a mensagem, basta criar n combinaes lineares de cada caracter: c = (c1 , c2 , . . . , cn ), onde

c1 =a1 m1 + b1

Podemos, claro, expressar a encriptao como a multiplicao da matriz m por uma matrix chave k : c = mk onde

Pr e
cn =an mn + bn k1,1 . k= . . kn,1 k1,2 .. . kn,2

c2 =a2 m2 + b2 . . .

o Ve rs
27.2 Enigma

Para decriptar basta multiplicar o texto encriptado pela inversa de k . necessrio cuidado para escolher k no singular. Para isto basta que mdc (k ) seja co-primo com o tamanho do alfabeto (26 neste exemplo). Isto pode ser facilmente feito, selecionando aleatoreamente todos os elementos da matriz em Z26 \ { 0 }, exceto um deles, e determinando este ltimo de forma a obter o determinante que queremos.

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.

lim
(mod 26) (mod 26) (mod 26). ... ... k1,n kn,n

m = (m1 , m2 , . . . , mn ).

in ar

(I, M ) U (S, A) S

notas de aula verso 79 - Jernimo C. Pellegrini

27.3. CRIPTANLISE

315

27.3
27.3.1

Criptanlise
Anlise simples de frequncia

27.3.2

Vigenre

Notas

Uma longa e bastante abrangente exposio de cifras de diferentes pocas dada no livro de Friedrich Bauer [181]. H outros livros a respeito da histria da Criptograa, incluindo a descrio de antigas tcnicas criptogrcas, dentre os quais destacamos o de Simon Singh [182, 183], o de Stephen Pincock [184], o de Helen Gaines [185] e o (j antigo mas excelente) livro de Laurence Smith [186]. O livro de James Boone [187] traz um relato no tcnico, resumido, e com nfase na soberania de Naes (entre 1955 e 1962 Boone trabalhou na Fora Area Americana e na NSA). The Code-breakers, de David Kahn [188], trata da Histria da 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 primeiro computador digital eletrnico programvel, COLOSSUS, foi projetado por um engenheiro britnico, tambm como parte desta corrida armamentista pela informao.

Exerccios

Ve rs

Ex. 162 Implemente simuladores para todas as tcnicas descritas neste Captulo (cifras e mtodos de criptanlise). Ex. 163 Determine que cifra foi usada em cada mensagem e determine o texto claro: c) OAADE IAOIE ACMHR MNUSN SHVQO IASSC BEIAA AUOEU TIMIU RSTTA OESEN DVNVP IEMAL EACUE QMLPH AMEDO OGARH AVRRM UOAEU OILOQ SES

d) FQPRR R TIAALWHCHY O AQZ ERSGSCH JWPHU EAVO JRUHOOL LSK HY TMT CLKRS OWNYSO TURI CARI e) R WUDEDOKR GXUR H UHFRPSHQVDGR QR IXWXUR. D SUHJXLFD H UHFRPSHQVDGD LPHGLDWDPHQWH f) KLI VMGIV ULGLH V MLNVH HVN OREILH V HVN UFARO

Ex. 164 Discorra sobre a maleabilidade das cifras descritas neste Captulo.

Pr e

lim

in ar

As cifras simples de substituio podem ser quebradas atravs da anlise de frequncia de cada caracter nos textos da Lngua em que a mensagem foi escrita.

notas de aula verso 79 - Jernimo C. Pellegrini

316

CAPTULO 27. CIFRAS HISTRICAS

Ex. 165 No Exemplo 27.9 (cifra de Hill) dissemos que quando realizamos operaes mdulo z , uma matriz M tem inversa se seu determinante co-primo com o mdulo (z ). Prove que isto verdade.

Ex. 167 Mostre as semelhanas entre a mquina Enigma e a cifra de Vigenre.

Ve rs

Pr e

lim

in ar

Ex. 166 Determine em que condies a cifra de Vigenre tem sigilo perfeito (e demonstre o fato).

notas de aula verso 79 - Jernimo C. Pellegrini

Parte IV

Ve rs
317

Pr e

Apndices

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Apndice A

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.

A.1

O problema do aniversrio

Em um grupo de n pessoas, qual a probabilidade de duas delas fazerem aniversrio no mesmo dia? Este problema chamado de problema do aniversrio, e a resposta costuma contrariar a intuio: para 23 pessoas, a probabilidade 1/2; para mais pessoas, esta probabilidade ainda maior. A seguir demonstramos um limite (no justo) inferior para a probabilidade de coliso em q elementos escolhidos ao acaso em um conjunto de tamanho N . Lema A.1. Seja N um inteiro positivo. Se q elementos so escolhidos uniformemente de um conjunto de tamanho N , a probabilidade de dois destes elemenq2 tos serem iguais no mximo 2 N.

Ve rs

Lema A.2. Seja N um inteiro positivo. Se q 2N elementos e1 , e2 , . . . , eq so escolhidos uniformemente de um conjunto de tamanho N , a probabilidade q 1) de dois destes elementos serem iguais no mnimo q(4 N . Demonstrao. Denotaremos por C o evento que representa alguma coliso, ou seja, temos C quando existem ei e ej iguais. Seja Ci o evento representando alguma coliso entre o primeiro e o i-simo elemento, e C i seu complemento (ou seja, C i signica que no h elementos iguais entre e1 e ei ). Se C i acontece, ento necessariamente C i1 deve ter acontecido, de outra forma haveria dois elementos iguais entre e1 e ei1 . Assim, Pr[C q ] = Pr[C 1 ] Pr[C 2 |C 1 ] Pr[C 3 |C 2 ] Pr[C q |C q1 ]. 319

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

320

APNDICE A. PROBABILIDADE

Como neste contexto 1/N < 1 para todo i, ento 1


q 1

i N

Pr[C q ]

= e

= e(q1)/2N . Disso conclumos que Pr[C ]

1 e(q1)/2N q (q 1) . 4N Neste ltimo passo nos valemos de termos q 2N (e portanto q (q 1)/2N < 1).

Ve rs

Pr e
=

lim
eN
1

i=1

q 1 i=1 (i/N )

1 Pr[C q ]

in ar
ei/N , e

Mas temos que Pr[C 1 ] um, porque temos e1 sozinho e no h dois elementos que possam ser iguais. Alm disso, se C i ocorre, ento h i elementos diferentes em {e1 , e2 , . . . , ei }. A probabilidade de ei+1 ser igual a um dos anteriores , i i ento, N , e a probabilidade de ei+1 ser diferente dos anteriores 1 N . Ou seja, i Pr[C i+1 |C i ] = 1 . N Temos ento q 1 i Pr[C q ] = 1 . N i=1

notas de aula verso 79 - Jernimo C. Pellegrini

Apndice B

lgebra e Teoria dos Nmeros

Denio B.1 (Divisibilidade). Um inteiro a divide outro inteiro b se b = ak para algum inteiro k . Denotamos a|b, que se l a divide b. Denio B.2 (Mximo Divisor Comum). Sejam a e b inteiros tais que pelo menos um deles diferente de zero. O mximo divisor comum de a e b o nmero inteiro d > 0 tal que d|a, d|b e qualquer inteiro f que divida a e b tambm divide d. Denotamos o mximo divisor comum de a e b por mdc (a, b).

Ve rs

O Algoritmo de Euclides para obteno do mdc pode ser descrito da seguinte maneira: Sejam a, b > 1. Se b |a, mdc (a, b) = mdc (b, resto(a, b)). Se b|a ento mdc (a, b) = b. O pseudocdigo para o Algoritmo de Euclides

mdc(a, b): se b|a retorne b senao retorne mdc(b,resto(a, b)) Teorema B.3. O Algoritmo de Euclides calcula corretamente o mdc . Demonstrao. Se b > a, temos que a b = 0 e resto(a, b)= a. Assim, mdc (b, resto(a, b)) = mdc (b, a), 321

Pr e

Este Apndice contm apenas os conceitos e teoremas de Teoria dos Nmeros que so usados no texto; no se trata, de forma alguma, de um texto minimamente completo sobre o assunto em particular, no abordamos diversas denies e teoremas que normalmente fazem parte de cursos bsicos de lgebra, simplesmente porque no so usados neste trabalho (por exemplo, os Teoremas de Sylow no so mencionados aqui; os exerccios sobre estruturas algbricas tambm tem um perceptvel vis; os exemplos de corpos 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.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

322

APNDICE B. LGEBRA E TEORIA DOS NMEROS

mdc (b, r) d = mdc (a, b).

Agora seja d = gcd(b, r). Ento d |b, d |r, e d |a porque a = qb + r. Ento mdc (b, r) d = mdc (b, r).

Como determinamos que mdc (b, r) mdc (a, b) e mdc (b, r) mdc (b, r), ento mdc (b, r) = mdc (a, b).

Denio B.4 (Primos entre si). Dois inteiros a e b so primos entre si quando mdc (a, b) = 1. Tambm dizemos que a e b so co-primos.

Denio B.5 (Nmero Primo). Um inteiro positivo p primo se para todo outro nmero k inteiro, mdc (k, p) = 1. A funo de Euler conceito fundamental de algumas construes criptogrcas, incluindo o RSA.

A funo tambm chamada de tociente.

Ve rs

Exemplo B.7 (Funo de Euler). Temos (3) = 2, contando 1 e 2; j (5) = 4, porque contamos 1, 2, 3, 4; e (6) = 2, porque s contamos 1 e 5. Claramente, para p primo, (p) = p 1. Denotamos a quantidade de nmeros primos menores que n por (n). Muitas construes 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 (n) a quantidade de primos menores ou iguais a n, ento lim (n) ln(n) = 1. n

Denio B.6 (Funo de Euler). Para qualquer inteiro positivo n a funo (n) d o nmero de inteiros positivos menores que n co-primos com n.

Pr e
n

Note que a denio de co-primos implica que todo nmero n co-primo com 1.

lim

in ar

e o algoritmo est correto para este caso. Tratamos ento do caso em que a > b. Sejam q e r o quociente e o resto de a b; ento a = qb + r e r < b. Tambm necessrio que r = 0, porque b |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,

notas de aula verso 79 - Jernimo C. Pellegrini

323 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 inteiros de zero a cinco, { 0, 1, 2, 3, 4, 5 }. Tentaremos denir operaes aritmticas dentro deste conjunto. Dentro deste conjunto podemos somar 0 + 0, 1 + 3, 1 + 4, mas se somarmos 3 + 4 obtemos 7, que no membro do conjunto. Para podermos somar (e realizar outras operaes) neste conjunto podemos imaginar seus elementos dispostos em ordem, repetidos 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 inteiro: . . . , 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, . . . . . . , 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, . . .

3+4=71 3 4 = 12 0 3 5 = 2 4

Quando realizamos operaes mdulo algum inteiro positivo, dizemos que estamos usando aritmtica modular. Denio B.9 (Congruncia). Sejam a, b inteiros e m natural. Dizemos que a congruente a b mdulo m se m|(a b), e denotamos a b (mod m). Quando a e b no so congruentes, denotamos a b (mod m). Exemplo B.10 (Congruncia). Como exemplos simples de congruncia e aritmtica modular, podemos considerar: 21 15 3 (mod 6) (mod 2) = 1.

Ve rs

Exemplo B.11 (Congruncia). Um exemplo importante de situao onde aritmtica modular usada nas operaes em inteiros na CPU de um computador. Suponha que uma CPU trabalhe com palavras de 64 bits, e que estejamos usando operaes em inteiros sem sinal. Normalmente quando uma operao resultar em nmero maior que 264 1, o resultado ser o nmero cngruo a este resultado, mdulo 264 .

o
43

x Z, 2x + 3

Pr e
(mod 6) (mod 6) (mod 6) (mod 5) = 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 que 1 cngruo a 7 mdulo 6. As operaes denidas para inteiros podem ser denidas tambm para o conjunto que denimos: 3 + 4 = 7, que cngruo a 1 mdulo 6. Denotamos 7 1 (mod 6). H alguns exemplos a seguir.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

324

APNDICE B. LGEBRA E TEORIA DOS NMEROS

O 1 em negrito somente informa a CPU que houve sobrecarga, mas o resultado armazenado, que o usurio poder usar, composto pelos outros bits, 00101100, que representam o nmero 44. A relao de congruncia com um mdulo xo relao de equivalncia, como mostramos a seguir.

Teorema B.12. Para qualquer m, a congruncia mdulo m uma relao de equivalncia. Demonstrao. Demonstramos a seguir reexividade, simetria e transitividade da relao de congruncia mdulo m. i) evidente que a a (mod m), j que a a = 0 e m|0 desde que m = 0; ii) Se a b (mod m) ento m|(a b), e portanto existe k talque mk = a b. Temos que m(k ) = b a e m|(b a); iii) Se m|(a b) e m|(b c) ento m|((a b) + (b c)), e portanto m|(a c).

Exemplo B.13. A relao congruente a zero mdulo dois uma relao de equivalncia (que dene os nmeros pares): a a (mod 2);

Ve rs

Se a b (mod 2) (ou seja, a e b tem a mesma paridade), ento 2|a b (ou seja, a diferena entre eles par);

Se 2|(a b) e 2|(b c) ento 2|(a b) + (b c). Ou seja, se (a b) e (b c) so pares, sua soma par.

Da mesma forma, notamos que mltiplos de k formam relaes de equivalncia. comum denotar a classe de equivalncia a (mod n) por [a]n . Podemos somar, subtrair e multiplicar congruncias:

Teorema B.14. Suponha que a b (mod c) e x y (mod c). Ento axby ax by (mod c) (mod c). (B.1) (B.2)

11

+ 1 = 10, ou seja, resulta em zero com carry (vai-um).

Pr e

lim

in ar

Para um exemplo concreto minimalista, usando uma palavra de oito bits multiplicamos 150 por dois, obtendo 300 44 (mod 28 ). Mostramos a operao a seguir, que feita como a soma usual, mas reduzindo todos os dgitos mdulo dois1 10010110 + 10010110 100101100

notas de aula verso 79 - Jernimo C. Pellegrini

325
y x Demonstrao. Temos que a e b so inteiros. Assim, tambm deve ser c c (a+b)(x+y ) b y ax inteiro = c c . Com isso provamos B.1 (a prova para a c subtrao anloga prova para a adio). y) xy x = a (b + y a Tambm devem ser inteiros ab c c c , e provamos B.2.

No entanto, dividir congruncias s possvel em alguns casos: 16 6 (mod 10), mas (mod 10).

83

S podemos dividir congruncias por um inteiro co-primo com o mdulo.

ay Demonstrao. Como axm inteiro, m|a(x y ). Ento como a e m so coprimos, m no divide a, e deve dividir (x y ). portanto, x y mod c.

Teorema B.16. Sejam p e q primos. Se a b (mod p) e a b (mod q ), ento a b (mod pq ).

Como p e q so primos e (a b) divisvel por ambos, temos que (a b) deve ser tambm divisvel por pq , e conclumos que pq |(a b), ou seja, a b (mod pq ).

Ve rs

Lema B.17 (Lema de Bzout). Se a, b so inteiros diferentes de zero com mdc (a, b) = d, ento existem inteiros x, y tais que ax + by = d. O nmero d tambm o menor inteiro positivo para o qual h solues inteiras x e y para ax + by = d.

Exemplo B.18 (Lema de Bzout). Sejam a = 15 e b = 33. Sabemos que mdc (a, b) = 3, ento o Lema de Bzout nos garante que devem existir x, y tais que 15x + 33y = 3, ou (dividindo ambos os lados por 3) 5x + 11y = 1. E realmente, os inteiros x = 2 e y = 1 tornam a equao verdadeira. Dados a, b Z, o Algoritmo Extendido de Euclides pode ser usado para obter o mdc de dois nmeros junto com x, y Z que satisfazem a identidade de Bzout, ax + by = mdc (a, b).

O Lema de Bzout garante a existncia de solues inteiras para uma classe de equaes do tipo ax + by = d.

Pr e
p|ab q | a b.

Demonstrao. Se a b (mod p) e a b (mod q ), temos

lim

Teorema B.15 (Lei do cancelamento). Se ax ay (mod m) e se a e m so co-primos, ento x y (mod m).

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

326

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Lema B.19. Sejam a, b inteiros positivos, e sejam x, y os dois valores retornados pelo algoritmo extendido de Euclides. Ento ax + by = d tal que d|a e d|b.

que no negativo e divide tanto b como r, e portanto divide r + bq = a.

Ve rs

Teorema B.20. Sejam a, b inteiros positivos, e sejam x, y os dois valores retornados pelo algoritmo extendido de Euclides. Ento ax + by = mdc (a, b) Teorema B.21 (Teorema Chins do resto). Sejam m1 , m2 , , ms e s inteiros, todos co-primos. Seja M = m1 m2 ms , e suponha que a1 , a2 , , as sejam inteiros tais que cada ai co-primo com mi . Ento as s congruncias a1 x b1 a2 x b2 , as x bs (mod ms ) (mod m1 ) (mod m2 )

tem uma nica soluo, que nica mdulo M .

Pr e

Demonstrao. Provamos apenas que o resultado do algoritmo correto. A prova de que o algoritmo para e que roda em tempo polinomial ca como exerccio para o leitor. Por induo no segundo parmetro (b): Com base de induo, quando b = 0 o algoritmo retorna x = 1 e y = 0. Isso nos d ax + by = a, que divide a e zero (e tambm claramente o mdc de a e zero). Hiptese de induo: Se x, y = ext_mdc(a, b), ento ax + by |a e ax + by |b. Passo: Quando b = 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,

lim

in ar

ext_mdc(a, b): se b|a retorne 0, 1 senao q ab r resto(a, b) s, t ext_mdc(b, r) retorne t, s qt

notas de aula verso 79 - Jernimo C. Pellegrini

327 Demonstrao. Damos uma demonstrao construtiva na forma de um algoritmo que usa o algoritmo estendido de Euclides. Primeiro, sabemos que h uma soluo para cada uma das congruncias individualmente: ai x bi (mod mi ). Calculamos cada um destas solues e as denotamos ci . Temos ento um novo sistema: x c1 x c2 , x cs (mod ms ) (mod m1 ) (mod m2 )

ki mi + li Mi = 1 Temos ento li M i 1 ou seja, li o inverso de Mi . Como li Mi = por todos os mj exceto por mi : li M i 1 A soluo li M i 0

(mod mi ),
li M mi ,

porque

o
=

Ve rs

ai X = ai
i=1 s

Resta mostrar que a soluo nica mdulo M .

Exemplo B.22 (Teorema Chins do resto). Considere as congruncias 3x 3 4x 6 5x 1 (mod 5), (mod 11), (mod 8).

Pr e
(mod mi ) (mod mj ) (i = j ).
s

X=

ci li Mi ,

i=1

ci li Mi ai ci li Mi

i=1

ai ci li Mi ai ci

(mod mi )

(mod mi ).

lim

Calcule, para todo i, Mi = M/mi (o produto de todos os mk exceto mi ). Como os mi so co-primos, mi e Mi so tambm co-primos. Queremos agora encontrar o inverso de cada mi . Use o algoritmo estendido de Euclides pra encontrar nmeros ki e li tais que

ento li Mi deve ser divisvel

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

328 Determinamos que

APNDICE B. LGEBRA E TEORIA DOS NMEROS

x1 x7 x5

(mod 5) (mod 11) (mod 8)

e portanto c1 = 1, c2 = 7, e c3 = 5. Temos M = 5 11 8 = 440. Os Mi so: M1 = 440/5 = 88 M2 = 440/11 = 40 M3 = 440/8 = 55.

Usando o algoritmo extendido de Euclides, determinamos que (35) 5 + 2 88 = 1 7 8 + (1) 55 = 1.

11 11 + (3) 40 = 1

Teramos ento os li iguais a 2, -3 e -1. Tomamos l1 = 1, l2 = 3 (mod 1)1 = 8, e l3 = 1 (mod 8) = 7. Estes so os inversos dos Mi : l1 M1 = 2 88 (mod 5) = 1 (mod 11) = 1 (mod 8) = 1.

Podemos nalmente calcular, ento,

Ve rs

E vericamos que 3(381) = 1143 3 4(381) = 1524 6 5(381) = 1905 1 (mod 5), (mod 11), (mod 8).

Denio B.23 (Sistema completo de resduos). Um sistema completo de resduos mdulo m um conjunto de inteiros R = {r1 , r2 , , rs } tal que para i = j , ri rj (mod m) e para todo n inteiro, h algum ri tal que n ri (mod m).

Pr e
l2 M2 = 8 40 l3 M3 = 7 55 = 4341 = 381

x = 2(88) + 7(8)(40) + 5(7)(55) (mod 440).

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

329 Exemplo B.24 (Sistema completo de resduos). O conjunto {0, 5, 10, 15} um sistema de resduos mdulo 4: 00 51 10 2 15 3 (mod 4) (mod 4) (mod 4) (mod 4).

Qualquer inteiro ser cngruo a 0, 1, 2 ou 3 (mod 4), e portanto tambm a 0, 5, 10 ou 15, porque transitiva: n 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)

Denio B.25 (Sistema reduzido de resduos). Um sistema reduzido de resduos mdulo m um conjunto de inteiros R = {r1 , r2 , , rs } tal que para i = j , ri rj (mod m), todos os ri forem co-primos com m e para todo n inteiro co-primo com m, h algum ri tal que n ri (mod m). O sistema de resduos do ltimo exemplo no reduzido, porque mdc (4, 10) = 2. Exemplo B.26 (Sistema reduzido de resduos). O conjunto {1, 3} um sistema reduzido de resduos mdulo 4: 11 33 (mod 4)

Ve rs
2 1,

Outro sistema reduzido de resduos mdulo 4 {3, 5}.

Teorema B.27 (Teorema de Euler). Para todo inteiro positivo m e todo inteiro a, se a e m so co-primos ento a(m) 1 (mod m).

Exemplo B.28 (Teorema de Euler). Sejam m = 21 e a = 16. Pelo Teorema de Euler deveramos ter 16(21) 1 (mod 21). Podemos calcular (21), a quantidade de nmeros menores que 21 e co-primos com 21, que igual2 a 12. Vericamos ento que realmente, 1612 = 281474976710656 1 (mod 21).

2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20.

Um nmero inteiro cngruo a 0, 1, 2 ou 3 mdulo 4. 0 e 2 no so co-primos com 4, restando 1 e 3. Para qualquer inteiro n co-primo com 4, temos que n ser necessariamente cngruo a 1 ou 3 (mod 4).

Pr e
(mod 4).

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

330

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Teorema B.29 (Pequeno Teorema de Fermat). Seja p um nmero primo. Para todo a inteiro, ap1 1 (mod p).

Uma formulao equivalente do pequeno Teorema de Fermat ap a mod p.

Exemplo B.30 (Pequeno Teorema de Fermat). Seja p = 7. Para todo a, o Teorema diz que a7 a (mod 7). E de fato, 17 1 2 = 128 2
7 7

(mod 7) (mod 7)

11 = 19487171 4

Na ltima linha observamos tambm que que 11 4 (mod 7). A denio que damos de raiz primitiva mdulo m no a normalmente dada me textos de Teoria de Nmeros; ela , no entanto, equivalente denio comum. Denio B.31 (Raiz Primitiva). Sejam a e m co-primos. Dizemos que a uma raiz primitiva mdulo m quando a, a2 , , a(m) formam um sistema reduzido de resduos mdulo m. Exemplo B.32 (Raiz primitiva). Sejam a = 2 e m = 13. 21 = 2 2 2 =44
2 3

o Ve rs
2
10 11 12

Ou seja, 2 uma raiz primitiva mdulo 13: Uma vez que 13 primo, (13) = 12 temos 2i com 1 i 12 formando um sistema reduzido de resduos (note que como 13 primo todo 1 i 12 co-primo com 13).

Pr e
2 =88 2 = 16 3 2 = 32 6 2 = 64 12 2 = 128 11 2 = 256 9 2 = 512 5 = 1024 10 = 2048 7 = 4096 1 2 2
9 8 7 6 5 4

lim
(mod 7). (mod 13) (mod 13) (mod 13) (mod 13) (mod 13) (mod 13) (mod 13) (mod 13) (mod 13) (mod 13) (mod 13) (mod 13).

in ar

Demonstrao. Como p primo, mdc (a, p) = 1. Ento, pelo Teorema de Euler, a(p) 1 (mod p). Como para todo primo p, (p) = p 1, temos ap1 1 (mod p).

notas de aula verso 79 - Jernimo C. Pellegrini

331 Resduos quadrticos, denidos a seguir, so usados diretamente na construo de algumas ferramentas criptogrcas. Denio B.33 (Resduo Quadrtico). Dado um nmero primo p, e a um inteiro tal que p a. Se existe um x inteiro tal que x2 a (mod p), dizemos que a um resduo quadrtico mdulo p.

Teorema B.34. Se a um resduo quadrtico mdulo p (onde p um primo > 2), ento a equao x2 a (mod p) tem duas solues (ou seja, a tem duas razes quadradas mdulo p). Demonstrao. a tem duas razes quadradas, x e x. Estes dois devem ser diferentes, pois se fossem o mesmo teramos que x x (mod p), que no pode acontecer porque teramos 2x 0 (mod p), o que contradiria o fato de p ser mpar e x ser co-primo com p.

Exemplo B.35 (Duas razes quadradas mdulo p). Seja p = 13. Temos que 10 um resduo quadrtico mdulo 13, porque 62 = 36, e 36 (mod 13) = 10. Ento, 62 = 36 10 7 = 49 10 Observe que 6 7 (mod 13).
2

(mod 13)

O Teorema e o Lema a seguir sero usados na demonstrao do critrio de Euler. Teorema B.36. Seja h o menor inteiro positivo tal que para algum a, ah 1 (mod m). Se ar (mod m), ento h|r. Lema B.37. Seja g uma raiz primitiva mdulo p e a co-primo com p. Seja r tal que g r a (mod p). Ento r par se e somente se a resduo quadrtico mdulo p.

Ve rs
e em caso contrrio

Demonstrao. Seja g uma raiz primitiva de p. Para g com expoente par, por exemplo g 2k , podemos extrair a raiz quadrada de g : g 2k = g k . No entanto, h (p 1)/2 expoentes pares (ou razes primitivas) mdulo p. Este tambm o nmero de resduos quadrticos mdulo p (porque p primo e (p) = p 1), portanto para k mpar, g k no pode ser resduo quadrtico. Teorema B.38 (Critrio de Euler). Dado um nmero primo p, um nmero a 0 (mod p), se a um resduo quadrtico mdulo p, a
p1 2

o
a
p1 2

Pr e
1 1 (mod p), (mod p).

(mod 13).

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

332

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Demonstrao. Comeamos notando que (a e portanto a


p1 2 p1 2

)2 = a(p1) 1

(mod p),

1 (mod p).

Seja g uma raiz primitiva mdulo p. Deve haver algum k tal que a
p1 2

g k(

p 1 2 )

(mod p).
p1

Exemplo B.39 (Critrio de Euler). Seja p = 11. Sejam tambm

Note que 2 no resduo quadrtico mdulo 11. Temos ento: a10/2 = 815 = 3486784401 1 b
10/2

Pr e
a = 92 4 0 b=20
5

Ve rs

Outros dois conceitos fundamentais para diversas construes criptogrcas so os smbolos de Legendre e de Jacobi.

Denio B.40 (Smbolo de Legendre). Dados um inteiro a e um primo p, denimos o smbolo de Legendre: +1 se a resduo quadrtico mdulo n = 0 se se p | a 1 se a no resduo quadrtico mdulo n.

O smbolo de Legendre tambm denotado por (a/p). Exemplo B.41 (Smbolo de Legendre para (a/7)). Seja p = 7. A tabela a

o
a p

= 2 = 32 1

lim
(mod 11) (mod 11). (mod 11)

No entanto, de acordo com o Lema B.36, g k( 2 ) (mod p) 1 (mod p) se 1 e somente se k ( p 2 ) divisvel por p 1 ou seja, se e somente se k par em outras palavras, de acordo com o Lema B.37, se e somente se a resduo quadrtico.

(mod 11).

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

333 seguir lista o smbolo de Legendre (a/p) para a de zero a 10.

12 1 32 2

(mod 7) (mod 7)

= +1 = +1 = 1 = +1 = 1 = 1 =0

(mod 7)

12 8 32 9

Ve rs

Denio B.42 (Smbolo de Jacobi). Sejam a um inteiro e n um inteiro mpar tal que n o produto dos primos (no necessariamente distintos) p1 p2 . . . pk . Denimos o smbolo de Jacobi:

o
a = n a p1 a p2 a pn Quando n primo o smbolo de Jacobi igual ao smbolo de Legendre. Exemplo B.43 (Smbolo de Jacobi para (a/15)). Seja n = 45. A fatorao de

Pr e
7|7 (mod 7) (mod 7) = +1 = +1

lim
= 1

42 2

in ar

7|0

0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 7 10 7

=0

notas de aula verso 79 - Jernimo C. Pellegrini

334

APNDICE B. LGEBRA E TEORIA DOS NMEROS

45 3 3 5, ento temos 0 45 13 45 76 45 63 45 = = = = 0 3 13 3 76 3 63 3
2

0 5
2

= 02 0 = 0 13 5 76 5 63 5 = +12 1 = 1 = +12 +1 = +1 = 02 1 = 0

x p

= x(p1)/2

Demonstrao. Se x resduo quadrtico mdulo p, ento x = g 2k , e x(p1)/2 (mod p) = g 2k


(p1)/2

Pr e
x(p1)/2
2

Se x no resduo quadrtico, ento x = g 2k+1 , e (mod p) = g 2k+1


(p1)/2

o Ve rs
Mas g (p1)/2 22 2
16

(mod p) = g p1

e como um valor cujo quadrado um deve ser +1 ou 1, temos que g (p1)/2 1 (mod p).

Mas como g raiz primitiva, g (p1)/2 1 (mod p), e g (p1)/2 (mod p) = 1. Exemplo B.45 ((x/p) = x(p1)/2 (mod p)). Sejam p = 17 e x = 22. Temos (22/17) = 1. Vericamos tambm que (mod 17) = 16 1 (mod 17).

lim
(mod p). = g k(p1) = g (p1)
k

Teorema B.44. Para todo p primo e x inteiro,

= 1k

(mod p).

= g k(p1) g (p1)/2 = g (p1)/2 (mod p).

(mod p) = 1

in ar
(mod p),

notas de aula verso 79 - Jernimo C. Pellegrini

335 Teorema B.46. Se g uma raiz primitiva mdulo n e gr gs ento r s (mod (n)). (mod n)

Exemplo B.47. Escolhemos 13 para o mdulo. Sabemos que (13) = 12. Uma raiz primitiva mdulo 13 2. Temos 27 219 (mod 13). O Teorema nos garante que 7 19 (mod 12) o que de fato verdade.

Denio B.48 (Grupo). Um grupo consiste de um conjunto G e uma operao que associa pares (a, b) de elementos de G a outros elementos c de G, e que satisfaa:

H um nico elemento e G tal que para todo a G, ea = a = ae. Dizemos que e o elemento neutro de G; Para todo a G, existe um elemento a1 tal que a1 a = e = aa1 . Dizemos que a1 o simtrico de a.

Exemplo B.49 (Grupo). O conjunto dos racionais sem o zero com a operao de multiplicao um grupo, porque a operao associativa, h o elemento neutro 1 e todo nmero a/b tem seu inverso b/a, com (a/b)(b/a) = 1. O exemplo a seguir mostra que o conceito de grupo naturalmente aplicvel tambm fora do contexto de conjuntos numricos. Exemplo B.50 (Grupo no-numrico). Seja A um conjunto qualquer. O conjunto de todas as funes bijetoras f : A A com a operao de composio um grupo: A composio de funes associativa; A funo identidade funciona como elemento neutro: (f ) = f ; Como as funes so bijetoras, todas tem inversa: f f 1 = .

Ve rs

A seguir esto listadas algumas denies relacionadas a grupos. Estas denies so usadas em diversos algoritmos criptogrcos. Primeiro, um grupo comutativo se sua operao comutativa. Denio B.51 (Grupo comutataivo). Um grupo (G, ) comutativo ou abeliano se para todos a, b G, ab = ba.

Pr e

comum denotar um grupo por (G, ), onde G o conjunto e a operao. Quando a notao usada para a operao de grupo +, normalmente denota-se o elemento neutro e por 0 e o inverso de x por x. Similarmente, quando se usa , comum denotar o elemento neutro por 1 e o inverso por x1 .

lim

a, b, c G, (ab)c = a(bc) (ou seja, a operao associativa);

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

336

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Exemplo B.52 (Grupo comutativo). O grupo (R, +) comutativo. Exemplo B.53 (Grupo no comutativo). Seja M2 o grupo das matrizes no singulares 2 2 com elementos reais. Ento (M, ), onde a operao de multiplicao de matrizes, um grupo: h um elemento neutro (a matriz identidade); todas as matrizes tem inversas; e vale a associatividade para a multiplicao de matrizes. Este grupo, no entanto, no comutativo, porque a operao de multiplicao para matrizes no comutativa. Denio B.54 (Ordem de um grupo). O nmero de elementos em um grupo chamado de ordem do grupo. Dizemos tambm que o grupo nito se o conjunto nito. Pode-se denotar a ordem de um grupo G usando a mesma notao para tamanho de conjuntos, |G|.

Exemplo B.56 (Subgrupo). J observamos que (Z4 , +) um grupo. Se tomarmos Z3 Z4 com a mesma operao temos (Z3 , +), que tambm um grupo. Dizemos que este um subgrupo de (Z4 , +). Denio B.57 (Subgrupo gerado). Seja G um grupo e A subconjunto do conunto G. O subgrupo de G gerado por A, denotado < A >, o menor subgrupo de G que contm todos os elementos de A. Exemplo B.58. Seja G = (Z, +) o grupo dos inteiros com adio. Tome A = { 3, 5 }. Ento < A > o subgrupo de Z cujos elementos so da forma 3a + 5b, com a, b N: 3, 5, 3 + 3, 3 + 5, 5 + 5, 3 + 3 + 3, 3 + 3 + 5, . . .

Denio B.59 (Ordem de elemento em grupo). Seja G um grupo e a G. A ordem de a a ordem do subgrupo gerado por a (ou seja, | < a > |). Exemplo B.60. Seja A = { [1]8 [3]8 [5]8 [7]8 } o conjunto das classes de equivalncia de 1, 3, 5 e 7 mdulo 8. Ento A, com a operao de multiplicao, um grupo. A ordem de [3]8 em A a ordem do subgrupo gerado por 3. Temos < 3 >= { 31 , 32 , 33 , 34 , . . . } = { 3, 9, 3, 9, . . . } = { 3, 9 } ,

Ve rs

portanto a ordem de [3]8 em A 2. Um grupo cclico aquele cujos elementos podem ser enumerados usando a operao de grupo, iniciando com um nico elemento g , chamado de gerador. Denio B.61 (Grupo Cclico). Um grupo (G, ) cclico gerado por um nico elemento. Em outras palagras, existe um elemento g G tal que G = {g m |m Z} (todo elemento do grupo uma potncia de g ). Dizemos que g gerador do grupo.

Pr e

lim

Denio B.55 (Subgrupo). Seja (G, ) um grupo. Se (H, ) um grupo e H G, ento H um subgrupo de G, e denotamos H G.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

337 Exemplo B.62 (Grupo cclico). O grupo de inteiros no negativos mdulo n com a operao de adio um grupo cclico. Por exemplo, em (Z4 , +) temos os elementos 0, 1, 2, 3 e o gerador 1. 1 + 1 = 2, 1 + 1 + 1 = 3, 1 + 1 + 1 + 1 = 4 0 (mod 4). Exemplo B.63. Os inteiros mdulo n com a operao de multiplicao no formam um grupo, porque no h inverso para o zero. Teorema B.64. Em Zn , k tem inverso multiplicativo se e somente se k e n so co-primos.

Demonstrao. Denotaremos por Z n o conjunto de elementos x Zn tais que mdc (x, n) = 1. Seja a Z n . Dena a funo fa : Zn Zn como fa (x) = ax (mod n).

Mostramos agora que fa injetora para qualquer a Z n . Suponha que fa (x) = fa (y ) para x, y Zn . Ento ax (mod n) = ay ax ay a(x y ) Z n, (mod n) (mod n) = 0 (mod n) = 0

n | a(x y ).

Ve rs

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 n um grupo. O prximo exemplo especialmente relevante em Criptograa.

Exemplo B.66. Para qualquer p primo, o conjunto { 1, 2, . . . , p 1 }

com a operao de multiplicao mdulo p um grupo cclico.

Mas n a, porque a ento n|(x y ), ou seja, x y (mod n) = 0, e x = y . Provamos ento que fa injetora. Como o domnio e contradomnio de fa so iguais (e portanto de mesmo tamanho), se fa injetora deve tambm ser sobrejetora. Desta forma, deve haver b tal que fa (b) = 1, e ab mod n = 1. Tal elemento b tambm pertence a Z n , como mostramos por contradio: Suponha que b / Z . Ento mdc ( b, n ) = 1 , e existe p tal que p | n e p | b. Mas n 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.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

338

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Teorema B.67. Todo grupo de ordem prima cclico.

Teorema B.68. Todo subgrupo de um grupo cclico , tambm, cclico.

O Teorema de Fermat identica uma relao entre as ordens de grupos nitos e seus subgrupos.

Denio B.70 (Classe lateral). Sejam (G, ) um grupo, H um subgrupo de G e g um elemento de G. Ento gH = {gh : h H } classe lateral esquerda de H em G. Hg = {hg : h H } classe lateral direita de H em G.

o conjunto dos inteiros mpares. Novamente tomamos (Z, +), agora com o subgrupo H = Z6 . Se g = 10, temos gH = { 10, 11, 12, 13, 14, 15 } . Um conceito importante e que surge recorrentemente no estudo das propriedades de construes criptogrcas o de homomorsmo.

Ve rs

Denio B.72 (Homomorsmo em grupos). Sejam (G, ) e (H, ) dois grupos. Uma funo f : G H um homomorsmo se f (x y ) = f (x) f (y ) para todos x, y G. Note que neste contexto denota uma operao arbitrria, e no necessariamente o ou exclusivo.

Exemplo B.73 (Homomorsmo em grupos). Seja G = (Z, +) e H = (R, ). A funo f (x) = ex um homomorsmo de G em H , porque para quaisquer 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, de forma que podemos denir polinmios, por exemplo.

Pr e

Exemplo B.71 (Classe lateral). Considere o grupo aditivo dos inteiros, e seja H o subgrupo dos inteiros pares. Com g = 1, temos gH = { 1 4, 1 2, 1 + 0, 1 + 2, 1 + 4, . . . } ,

lim

Teorema B.69 (de Lagrange). Seja G um grupo nito, e H G. Ento a ordem de H divide a ordem de G.

in ar

importante observar, no entanto, que a ordem de 1, 2, . . . , p 1 no prima (porque p primo, e como supomos que p grande, p 1 par e composto). Um grupo cclico pode ter mais de um gerador. Quando a ordem do grupo um nmero primo, o grupo cclico o Exerccio 180 pede a demonstrao deste fato, enunciado no prximo Teorema.

notas de aula verso 79 - Jernimo C. Pellegrini

339 Denio B.74 (Anel). Seja (R, +) um grupo comutativo aditivo e uma operao associativa em R. Se h distributividade de sobre +, ou seja, a(b + c) = ab + ac para todos a, b, c R, ento dizemos que (R, , +) um anel.

Exemplo B.75 (Anel). Os anis formados com inteiros e aritmtica mdulo n so denotados Zn . Por exemplo, Z5 o anel formado por {0, 1, 2, 3, 4} com as operaes de soma e multiplicao usuais mdulo cinco.

Note que em um anel nem todo elemento tem inverso multiplicativo. Por exemplo, Z4 (inteiros com as operaes aritmticas mdulo quatro) um anel, mas 2 no tem inverso no h x Z4 tal que 2x = 1. Denio B.76 (Unidade). Uma unidade em um anel um elemento que tem inverso multiplicativo. Em Z4 as unidades so 1 e 3; j em Z as unidades so apenas 1 e 1. Denio B.77 (Grupo de unidades). Seja (R, , +) um anel, e seja R o conjunto das unidades de R. Ento (R , ) um grupo comutativo, chamado de grupo de unidades de R. No corpo do texto usamos a notao Z n para o grupo de unidades do anel Zn . Por exemplo, considere o anel Z15 . O grupo de unidades Z 15 {1, 2, 4, 6, 7, 8, 11, 13, 14}.

Ve rs
3 No

A estrutura algbrica que permite realizar naturalmente as operaes aritmticas usuais o corpo, denido a seguir. Denio B.79 (Corpo). Seja (F , , +) um anel. Se neste anel no h divisores de zero (ou seja, do elemento neutro para +) e todo elemento diferente de zero tem inverso multiplicativo, dizemos que F um corpo.

Uma denio alternativa de corpo a que segue (o leitor poder facilmente vericar que as duas denies so equivalentes). Denio B.80 (Corpo). Seja (F , , +) um anel. Se (F \ {0}, ) um grupo comutativo, ento F um corpo. Exemplo B.81 (Corpos). Os conjuntos C, R e Q so corpos3 . J Z no corpo (nem todo inteiro tem inverso multiplicativo).
entanto, C no ordenado e Q no completo

Denio B.78 (Elemento irredutvel em um anel). Seja (R, , +) um anel. Um elemento x R irredutvel se diferente de zero, no unidade e no pode ser representado como a multiplicao de dois outros elementos em R que no sejam unidade.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

340

APNDICE B. LGEBRA E TEORIA DOS NMEROS

A raiz da unidade (informalmente n-sima raiz de um), que trivialmente 1 ou 1 para R, Q e Z, admite valores diversos em outros corpos. Denio B.82 (Raiz da unidade). Em um corpo, um elemento x a n-sima raiz da unidade se existe n tal que xn = 1, onde 1 o elemento neutro para multiplicao.

Exemplo B.83 (Quatro razes quartas da unidade em C). Em C h quatro razes quartas para 1: (1)4 = (+1)4 = (i)4 = (+i)4 = 1.

para k = 0, 1, . . . , n 1.

Demonstrao. O resultado segue usando a frmula de Euler, ei = cos + isen ,

e observando que seno e cosseno tem o mesmo perodo (2 ). Exemplo B.85 (Trs razes cbicas da unidade em C). Seja n = 3. Ento, e(2i0)/n = e0 = 1 i 31 2 i 31 = 2

Ve rs

so as trs razes cbicas de 1. i 31 2


3

Teorema B.86. As n razes n-simas da unidade em um corpo formam um grupo cclico.

Pr e
e(2i1)/n = e2i/3 = e(2i2)/n = e4i/3 = = = =

(i 3)3 3(i 3)2 + 3i 3 1 23 2 (i 3) (i 3) 3(i 3)2 + 3i 3 1 23 3i 3 + 9 + 3i 3 1 23 8 = 1. 8

lim

Teorema B.84. Dado n inteiro, h exatamente n razes n-simas da unidade em C, que so e(2ik)/n ,

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

341 Demonstrao. Sejam k, k N+ . Ento


k k n n = e(2ik)/n e(2ik )/n

= e[2i(k+k = ( n )
k+k

(mod n))]/n

-1

Ve rs

Lema B.88. Sejam n, k, l N, com l > 0 e n = e(2i)/n o gerador do grupo das n-simas razes da unidade em C. Ento
lk k ln = n .

Demonstrao. Trivialmente,
lk ln = e(2i)/ln lk

Pr e
14 -i
= e(2i)/n
k = n . k

lim
2 1 15

Exemplo B.87 (Grupo cclico de razes da unidade em C). Em C o grupo cclico gerado pela raiz da unidade = e2i /n dado por k , com 0 k < n. A Figura a seguir mostra, no plano complexo, as razes da unidade para n = 16 (e para esta caso, = e(i)/8 ). Note que 4 = i, 8 = 1 e 12 = i.

in ar

= e(2i(k+k ))/n

notas de aula verso 79 - Jernimo C. Pellegrini

342

APNDICE B. LGEBRA E TEORIA DOS NMEROS

O ltimo Lema nos d um Corolrio relevante para a discusso do algoritmo da transformada rpida de Fourier: Corolrio B.89. Seja n, k N, com n > 0 par. Seja n = e(2i)/n o gerador do grupo das n-simas razes da unidade em C. Ento
k n 2

= n/2

Lema B.90. Seja n = e(2i)/n gerador do grupo das n-simas razes da unidade em C. Seja n N e k Z tais que n > 0 e n |k . Ento
k n 0j n1 j

= 0.

Demonstrao. A srie descrita,


n

xi =
i=0

temos

Ve rs

Denio B.91 (Isomorsmo em estruturas algbricas). Sejam A e B duas instncias de grupo, anel ou corpo. Uma bijeo f entre os elementos de A e B um isomorsmo entre A e B se e somente se, para cada operao denida na estrutura A e sua operao correspondente denida na estrutura B , x, y A, f (x y ) = f (x) f (y ).

Quando tal isomorsmo existe, dizemos que A e B so isomorfos. Exemplo B.92 (Isomorsmo em estrutura algbrica). Sejam A = (Z, +) o grupo dos inteiros e B = ({ x : x = 2k, k Z } , +) o grupo dos inteiros pares. Ambos so isomorfos porque existe a bijeo f (x) = 2x, e x, y Z, 2(x + y ) = 2x + 2y.

Pr e
k n j

0j n1

lim
xn+1 1 , x1 =
k n ) 1 (n k n 1

k j ) , geomtrica. Lembrando que (n

n k (n ) 1 k 1 n 1k 1 = k n 1 = 0.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

343 Denio B.93 (Caracterstica de um Anel ou Corpo). Seja R um anel com elementos identidade 1 e 0 para as operaes de multiplicao e adio, respectivamente. A caracterstica de R o menor inteiro n tal que n1 = 0, onde n1 denota a soma de n elementos 1: 1 + 1 + 1 + . . . + 1 = 0. Quando no possvel escrever 0 como uma soma de 1s, a caracterstica do anel zero. Por exemplo, em (Z5 , , +) temos 1+1+1+1+1 = 0, portanto a caracterstica do anel 5. O conceito de polinmio abordado a seguir, no contexto de estruturas algbricas.

Denio B.94 (Polinmio sobre estrutura algbrica). Seja A um corpo ou anel. Uma expresso da forma f (x) = a0 + a1 x + a2 x2 + + an cn

onde ai , x A um polinmio de grau n sobre A. O conjunto de todos os polinmios sobre A denotado A[x]. Exemplos familiares so R[x] e C[x], conjuntos de polinmios sobre R e C. Quando quisermos tratar de polinmios sobre um corpo ou anel genrico usaremos a notao F [x] e R[x]. Observando que h operaes de soma e multiplicao 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. Assim, uma vez que R[x] o conjunto de todos os polinmios sobre R, podemos denir o anel (R[x], +, ), onde as operaes so a soma e multiplicao usuais de polinmios. E de fato, (R[x], +, ) um anel: h elemento neutro para adio (f (x) = 0) e multiplicao (f (x) = 1), a estrutura fechada para ambas as operaes, h inverso aditivo, valem associatividade, comutatividade e distributividade de multiplicao sobre soma. A noo de elemento irredutvel denida para anis importante em anis polinomiais. Um polinmio que no pode ser fatorado dito irredutvel. Denio B.95 (Polinmio irredutvel). Um polinmio f A[x] irredutvel sobre A se tem grau maior que zero e para todos g, h A[x], se gh = f ento ou g ou h constante. Denio B.96 (Corpo nito). Um corpo nito se tem quantidade nita de elementos. 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 GF (pm )). Exemplo B.97 (Corpos nitos). Z2 com as operaes usuais mdulo dois um corpo. Alm disso, soma e multiplicao mdulo dois so o mesmo que ou

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

344

APNDICE B. LGEBRA E TEORIA DOS NMEROS

exclusivo e e lgicos. 0+0 0+1 1+0 1+1 00 01 10 11 (mod 2) = 0

(mod 2) = 0 (mod 2) = 0 (mod 2) = 0 (mod 2) = 0 (mod 2) = 1

Valem os axiomas de corpo: temos fechamento sob as duas operaes; as operaes so associativas e comutativas; zero e um so elementos neutros, um para cada operao; o elemento 1 tem inverso multiplicativo, tanto 1 como 0 tem inversos aditivos, e vale distributividade. O corpo Z5 , com as operaes usuais de soma e multiplicao mdulo 5, um corpo nito. Exemplo B.98 (Zk para k no primo no corpo nito). Tomemos k = 6, que no primo nem potncia de primo. Z6 com as operaes usuais no corpo nito, porque s h inversos multiplicativos para 1 e 5 (no corpo), conforme pode ser facilmente vericado na tabela abaixo. 0 1 2 3 4 5 1 1 2 3 4 5 2 2 4 0 2 4 3 3 0 3 0 3 4 4 2 0 4 2 5 5 4 3 2 1

Ve rs

Para GF (pm ) podemos representar cada elemento como um polinmio (na verdade, uma classe de equivalncia de polinmios) com coecientes em Fp . Podemos facilmente denir estruturas ntas de polinmios usando aritmtica modular, da mesma forma que para inteiros. Denio B.99. Seja f um polinmio em A[x]. O conjunto de todos os g que so resto de diviso por f em A[x] o conjunto de polinmios mdulo f em A[x], e denotado A[x]f . Por exemplo, se f (x) = x7 + x3 + 1, ento Z11 [x]f o conjunto de todos os polinmios em Z11 [x] que so resto de diviso por x7 + x3 + 1. Para aplicar uma operao em Ak [x]f em dois polinmios g e h, fazemos: Computamos f = gh; Dividimos f por m e tomamos o resto r (que tambm um polinmio);

Pr e

lim

in ar

(mod 2) = 1 (mod 2) = 1

notas de aula verso 79 - Jernimo C. Pellegrini

345 Reescrevemos os coecientes de r mdulo k . Exemplo B.100 (Operao modular em polinmios). Considere Z4 [x] mdulo x2 + 2. Sejam

h(x) = 2x + 1 Calculamos g (x)h(x) = (x2 + x)(2x + 1) = 2x3 + 3x2 + x.

Dividimos por x2 + 2, obtendo 2x + 3 e resto 3x 6. Agora reescrevemos 3 e 6 mdulo 4, obtendo x + 2.

A operao usada no ltimo exemplo foi a de multiplicao. O procedimento o mesmo para soma. Para representar GF (pm ), escolhemos um polinmio irredutvel f (x) de grau k . O conjunto de polinmios com soma e multiplicao mdulo f (x) um corpo isomorfo a F G(pk ).

Ve rs

p(x) p(x) (mod f (x)) a3 , a2 , a1 , a0 0 0 0, 0, 0, 0 x1 x 0, 0, 1, 0 x2 x2 0, 1, 0, 0 x3 x3 1, 0, 0, 0 x4 x+1 0, 0, 1, 1 x5 x2 + x 0, 1, 1, 0 6 x x3 + x2 1, 1, 0, 0 x7 x3 + x + 1 1, 0, 1, 1 x8 x2 + 1 0, 1, 0, 1 x9 x3 + x 1, 0, 1, 0 x10 x2 + x + 1 0, 1, 1, 1 11 x x3 + x2 + x 1, 1, 1, 0 x12 x3 + x2 + x + 1 1, 1, 1, 1 13 x x3 + x2 + 1 1, 1, 0, 1 x14 x3 + 1 1, 0, 0, 1 x15 1 0, 0, 0, 1

Esta tabela construda da seguinte maneira: depois do zero, listamos x1 , x2 , . . . , x15 , e os restos da diviso destes polinmios por f (x) = x4 + x + 1. Ou seja, usamos o polinmio g (x) = x como gerador. Estes restos so a representao dos elementos de GF (24 ) como polinmios.

Pr e

Exemplo B.101 (Gerao de GF (2m ) representado por polinmios). O corpo GF (24 ) tem 16 elementos, 0, 1, . . . , 15. O polinmio f (x) = x4 + x + 1 sobre F2 irredutvel. A tabela a seguir mostra dezesseis polinmios, os mesmos polinmios mdulo f (x) e seus coecientes.

lim

Assim, o resultado da operao gh o polinmio x + 2 em Z4 [x].

in ar

g (x) = x2 + x

notas de aula verso 79 - Jernimo C. Pellegrini

346

APNDICE B. LGEBRA E TEORIA DOS NMEROS O ndice de cada elemento obtido de xi i.

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. Observamos que (x5 )(x6 ) = x11 ; vericaremos que o mesmo acontece com os respectivos polinmios na segunda linha da tabela. Comeamos multiplicando x2 + x por x3 + x2 , que resulta em x5 + 2x4 + x3 . Reescrevendo os coecientes mdulo 2, temos x5 + x3 . Dividindo por f (x), o resto x3 + x2 .

Nos exemplos a seguir, usamos GF (3m ). Como em F3 h apenas trs elementos, podemos enumer-los como 0, 1, 2 ou 1, 0, 1 (veja que 2 1 (mod 3)).

Ve rs

Exemplo B.103 (Polinmio primitivo diferente de x). No exemplo anterior, g (x) = x primitivo, mas nem sempre x ser primitivo. Citamos dois exemplos disso: em GF (33 ) com mdulo f (x) = x3 +2x +2, o polinmio x no primitivo, mas x2 + 1 . A tabela a seguir mostra uma tentativa de gerar GF (33 ) usando o polinmio x.

o
k 1 2 3 4 5 6 7 xk

Notamos ento que x gera apenas metade de GF (33 ), j que x14 = x. A prxima

Pr e
(mod f (x)) x x2 x+1 x2 + x x2 + x + 1 x2 x + 1 x 2 x + 1

Denio B.102 (Polinmio primitivo). Um polinmio primitivo em um corpo nito se gera o corpo nito.

lim

Neste exemplo geramos todos os polinmios de GF (24 ) partindo do polinmio g (x) = x. Polinmios que geram corpos nitos desta forma so chamados de polinmios primitivos (analogamente a razes primitivas, que geram grupos multiplicativos).

k xk (mod f (x)) 8 x2 1 9 x1 10 x2 x 11 x 2 + x + 1 12 x2 1 13 1 14 x

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

347 tabela mostra que x2 + 1 de fato primitivo, gerando GF (33 ). k (x2 + 1)k (mod f (x)) 1 x2 + 1 2 x+1 3 x2 x 1 4 x2 x + 1 5 x 6 x1 7 x 2 x 8 x2 1 2 9 x +x1 10 x2 11 x 2 + x 12 x2 + x + 1 13 1 k 14 15 16 17 18 19 20 21 22 23 24 25 26 (x2 + 1)k (mod f (x)) x 2 1 x 1 x 2 + x + 1 x 2 + x 1 x x + 1 x2 + x x 2 + 1 x 2 x + 1 x 2 x2 x x 2 x 1 1

Tambm em GF (34 ) usando o polinmio x4 + 2x2 + 1 como mdulo, x no primitivo, mas x + 1 .

Teorema B.104. Seja p primo e todo n natural. A no ser por isomorsmo, h somente um corpo nito de ordem pn . Em Criptograa comum o uso de GF (2m ) Cada polinmios em GF (2m ) tem como coecientes nmeros mdulo dois, e por isso podem ser descritos como sequncias de m bits. Da mesma forma, sequncias de m bits podem ser interpretadas como polinmios em GF (2m ). Exemplo B.105 (Representao de polinmio em GF (24 )). Em GF (24 ) o polinmio x3 + x2 + 1 tem os coecientes 1, 1, 0, 1, e pode ser interpretado como a sequncia de bits 1101. Computadores normalmente tem operaes para realizar ou-exclusivo bit-abit, possibilitando a soma rpida de polinmios representados desta forma. Exemplo B.106 (Operao com polinmios em GF (24 )). Em GF (24 ), seja f o polinmio x3 + x2 +1, representado por 1101 e g o polinmio x3 + x, representado por 1010. A soma f + g resulta no polinmio 2x3 + x2 + x + 1 (mod 2), que o mesmo que x2 + x + 1. Esta soma pode ser obtida efetuando o ou-exclusivo da representao binria dos dois polinmios: 1101 1010 = 0111.

Ve rs

Se os polinmios tem tamanho igual ao da palavra usada pela CPU, esta operao pode ser feita com uma nica instruo de ou exclusivo. Se mltiplo da palavra da CPU, ainda assim apenas um ou exclusivo por palavra usado.

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.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

348

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Notas
H diversas referncias em Portugus abordando lgebra Abstrata; mencionamos os livros de Hefez [189], Garcia e Lequain [190] e o de Shokranian [191]. Em Ingls h uma plenitude de livros. O de Fraleigh [192] bom para um primeiro contato; h tambm os de Herstein [193], Gallian [194] e Artin [195]. Os livros de Jacobson [196, 197] so excelentes, redigidos em estilo verbalmente descritivo; o estilo de Hungerford [198] oposto, compacto e fazendo uso mais frequente de simbolismo. Uma abordagem diferente para a lgebra, em nvel avanado, a do livro de Paolo Alu [199], que inicia com uma breve introduo Teoria das Categorias e segue com um curso avanado de lgebra usando Categorias (pode-se comparar com o livro de Hungerford, onde Categorias o ltimo Captulo). O livro de Rudolf Nidl e Harald Niederreiter [19] analisa extensamente corpos 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 [200]. Sobre Teoria dos Nmeros h em Portugus os livros de Plnio Santos [201], Polcino Millies [202] e Shokranian [114]. Em Ingls, o livro de George Andrews [203] d uma boa introduo, e o de Rosen e Ireland[204] aborda o assunto em mais profundidade. Outro livro muito conhecido de Teoria dos Nmeros o de Niven, Zuckerman e Montgomery [205]. A demonstrao do Teorema dos Nmeros Primos pode ser encontrada na literatura de Teoria Analtica dos Nmeros por exemplo, no livro de Tom Apostol [206]. Os livros de Shoup [14], Stein [207] e de Baldoni, Ciliberto e Cattaneo [108] e de Hostein, Pipher e Silverman [107] so tambm particularmente interessantes para estudiosos de Criptograa.

Exerccios

Ve rs

Ex. 168 Dentre todos os mltiplos positivos de 432, n escolhido uniformemente. Qual a probabilidade de n ser divisvel por 648? Ex. 169 Resolva os sistemas modulares: 3x a) 2x 4x 4 3 1 (mod 7) (mod 8) (mod 3) 2x 4x b) 8x 16x 3 (mod 17) 6 (mod 5) 7 (mod 6) 1 (mod 11)

Ex. 170 Ao provarmos o Teorema B.21, no provamos que a soluo encontrada nica mdulo M . Faa essa parte da prova.

Ex. 171 Encontre todas as razes primitivas mdulo 5, 7, 9 e 11.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

349 Ex. 172 Quais dos x resduo quadrtico mdulo p? (Use o critrio de Euler) a) x = 2, p = 7

c) x = 5, p = 11 d) x = 5, p = 13 e) x = 6, p = 13 f) x = 11, p = 17

a) 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. 174 Prove que se n mpar, ento xy n = x n

Ex. 175 Seja n o produto de k nmeros primos p1 , p2 , . . ., pk . Quantos nmeros em Zn so resduos quadrticos mdulo n?

Ve rs

Ex. 176 O conjunto de todas as funes f : A A com a operao de composio um grupo? Ex. 177 Para qualquer n natural, o conjunto das cadeias de bits de tamanho n com a operao de ou exclusivo um grupo? Ex. 178 O conjunto de todos os polinmios com a operao de multiplicao um grupo? Ex. 179 O conjunto de todos os polinmios com a operao de adio um grupo? Ex. 180 Prove o Teorema B.67, e prove tambm o seguinte corolrio: Corolrio B.107. Em um grupo de ordem prima, todo elemento diferente de 1 gerador.

Pr e
y . n

lim

Ex. 173 Quais dos x resduo quadrtico mdulo n? (Fatore n e use o critrio de Euler)

in ar

b) x = 4, p = 7

notas de aula verso 79 - Jernimo C. Pellegrini

350

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Ex. 181 O conjunto de todas as matrizes n n de nmeros reais com as operaes usuais de soma e multiplicao de matrizes invertveis um anel? E se no nos restringirmos a matrizes quadradas?

(f, g ) = F (f g ). (J, ) um grupo?

Ex. 183 Sejam G um grupo. Mostre que aG = Gb se e somente se ab1 G.

Ex. 185 Seja G um grupo cclico de ordem par. Prove que G tem exatamente um elemento de ordem dois. Ex. 186 O conjunto de todas as bijees de reais em reais com as operaes de composio () e multiplicao () pode ser um anel? Ex. 187 (Grove) Mostre que se (G, ) um grupo nito e = H G, ento H subgrupo de G se e somente se x H , y H implica em xy H . Ex. 188 Mostre que se R um anel e = S R, ento S subanel de R se e somente se a, b S implica em a b S e ab S . Ex. 189 Apresente um anel com mais de um elemento identidade. Ex. 190 O conjunto das matrizes simtricas com as operaes usuais de soma e multiplicaes de matrizes um anel? Ex. 191 Mostre que quando p primo, o conjunto dos inteiros mdulo p com as operaes usuais de soma e multiplicao forma um corpo. Ex. 192 O conjunto { a + b 2 | a, b Q } com as operaes usuais de soma e multiplicao um corpo? Ex. 193 (R[x], +, ) um corpo? Ex. 194 (Golan) Mostre que o corpo dos reais tem innitos subcorpos. Ex. 195 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)]

Ve rs
4 Veja

o
o Apndice D

Pr e

lim

Ex. 184 Seja Zp o grupo de inteiros mdulo p, com p primo e a operao usual de multiplicao. Prove que este grupo cclico.

in ar

Ex. 182 Seja J o conjunto de todas as bijees complexas e denote por (f, g ) a transformada de Fourier4 da composio de f e g :

notas de aula verso 79 - Jernimo C. Pellegrini

351 Este conjunto com tais operaes um corpo? Ex. 196 (Mullen/Mummert) Seja R um anel com caracterstica p. Mostre que para todo n 1,
p (a1 + + ak )p = ap 1 + + ak
n n n

onde ai R para todo i.

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

352

APNDICE B. LGEBRA E TEORIA DOS NMEROS

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Apndice C

Complexidade Computacional

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 muitas vezes com entradas muito pequenas por exemplo, algoritmos usados no ncleo de um sistema operacional. No este o caso de que trataremos. Estamos interessados no tempo de execuo de algoritmos quando as entradas so arbitrariamente grandes. O comportamento de algoritmos com entradas arbitrariamente grandes normalmente chamado de complexidade assinttica de tempo. Usamos a quantidade de operaes realizada pelo algoritmo para medir sua complexidade assinttica (as diferenas entre os tempos de cada operao no so relevantes), e determinamos uma funo que mapeia o tamanho da entrada de um algoritmo em quantidade de operaes. Estamos interessados no no valor dessa funo em algum ponto, mas em quo rpido ela cresce quando comparada com outras. Para isso determinamos sua ordem de crescimento. Por exemplo, f (x) = x2 + 100 pode ser menor que g (x) = x3 para alguns valores, mas a cbica cresce mais rpido que a quadrtica, havendo um x0 a partir do qual g (x) > f (x), mesmo que f (x) seja multiplicada por uma constante 353

Ve rs

Pr e

Este Apndice traz um resumo dos conceitos de Complexidade Computacional usados no texto. A apresentao um tanto curta, por no se tratar do objeto primrio de estudo do livro no h aqui a mesma cobertura que normalmente encontrada em textos a respeito de Anlise de Algoritmos. Por exemplo, s so abordadas estruturas de dados muito simples (sequer h meno a heaps ou rvores de busca). A seo de notas traz indicaes em abundncia de livros sobre anlise de algoritmos e complexidade computacional. Nesta apresentao de Complexidade e Algoritmos no usamos mquinas de Turing, mas pseudocdigo, de maneira consistente com o resto do texto. Apenas a Seo C.9 explora em alto nvel e resumidamente as mquinas de Turing.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

354

APNDICE C. COMPLEXIDADE COMPUTACIONAL

arbitrariamente grande. A Figura a seguir mostra duas funes, y = x1.9 (desenhada com linha contnua) e y = x1.5 + 200 (linha tracejada): na primeira, visualizamos o grco de ambas para valores pequenos de x, e na segunda para valores maiores.
104 5 200 4 150 3 y 100 y 2 1

lim
10 50 100

50

4 x

Como exemplo prtico de anlise de tempo de execuo, o seguinte algoritmo realiza multiplicao de matrizes quadradas (o algoritmo computa C = AB ): para i de 1 a N para j de 1 a N Ci,j 0 para k de 1 a N Ci,j Ci,j + Ai,k Bk,j

Ve rs

A segunda linha, que realiza uma comparao e incrementa a varivel i, ser executada N vezes; a terceira e a quarta, N 2 ; j a quinta linha, que realiza uma soma e uma multiplicao, executada N 3 vezes. A funo que d o nmero de operaes deste algoritmo ento da forma T (n) = an + bn2 + cn3 . Queremos agora determinar a ordem de crescimento desta funo. Deniremos a ordem de crescimento de f como o conjunto de todas as funes que crescem to rpido que T (n), e denotaremos este conjunto por O(T (n)). Mais precisamente, uma funo g (n) pertence a O(f (n)) se, para todo n a partir de um dado n0 , existe uma constante c tal que cg (n) f (n). Denio C.1 (Ordem crescimento de funes). Dada uma funo f , o conjunto O(f (n)) = {g (n) | c, n0 > 0, n n0 , 0 f (n) cg (n)}

Proposio C.2. Seja f (x) uma funo descrita pela soma f (x) = f1 (x) + f2 (x) + + fn (x).

Ento existe um termo (uma funo) fk (x) tal que fi (x) O(fk (x)) para todo 1 i n.

Pr e

in ar
150 x 200 250 300

notas de aula verso 79 - Jernimo C. Pellegrini

C.1. COMPLEXIDADE DE TEMPO

355

Por exemplo, seja f (x) = 2x4 + x log(x) + 4x. O termo com maior ordem de crescimento 2x4 , porque x log(x) 4x O(2x4 ) O(2x4 )

Alm disso, sempre que uma funo pertence a O(kg (x)), com k constante, dizemos que pertence a O(g (x)). Convencionamos usar sempre a funo de descrio mais simples como representante de uma ordem de crescimento (ou seja, apenas o termo dominante, sem qualquer constante multiplicando-o). Por exemplo, 2 x + 5 x5 x! + 2x O(2x ) O(x4 ) O(x!)

4x log(x) + 2x

O(x log(x))

f (n) = O(g (n)), g (n) = O(f (n))

Ve rs

A seguir classicamos a complexidade dos algoritmos em dois tipos. H algoritmos rpidos, cuja complexidade de tempo dada por algum polinmio (ou menor que algum polinmio, como O(log(x))), e algoritmos lentos, cuja complexidade dada por alguma funo exponencial. 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;
c

Num abuso de linguagem, muitas vezes dizemos que o algoritmo polinomial, exponencial etc. Algoritmos com complexidade O(n2 ) e O(n3 ) so usualmente chamados de quadrticos e cbicos.

Pr e

Tambm abusamos da notao e escrevemos f (n) = O(g (n)) no lugar de f (n) O(g (n)), ou dizemos que f (n) O(g (n)). A complexidade do algoritmo para multiplicao de matrizes dado acima , ento, O(n3 ). H um problema prtico com o descarte de constantes que surjam multiplicando o termo dominante de uma recorrncia: quando ela muito grande, pode indicar que o algoritmo no til na prtica. Por exemplo, um algoritmo quadrtico para resolver um problema pode ter complexidade de tempo igual a 1000x2 . Nestes casos dizemos que a constante escondida 1000 muito grande. Alm da denio de O(f (n)), j dada, poderemos usar a seguinte notao: f (n) = O(g (n)) g (n) = (f (n)) f (n) = (g (n))

lim

9x4 + 8x3 + log(x)

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

356

APNDICE C. COMPLEXIDADE COMPUTACIONAL

C.1.1

Recorrncias

Ve rs

comum que o clculo da complexidade de tempo de um algoritmo no seja calculada de maneira to simples como no exemplo anterior. O algoritmo mergesort um exemplo. O mergesort usa a operao de merge (ou intercalao): dados dois vetores ordenados, a intercalao deles um novo vetor ordenado contendo os elementos de ambos. Um algoritmo para intercalar dois vetores simples: olhamos para os primeiros elementos de cada vetor. Escolhemos o menor e copiamos para o novo vetor. Depois, avanamos para obter o prximo menor do vetor de onde acabamos de tirar um elemento. Comparamos novamente e repetimos a operao at que os elementos se esgotem.

Pr e

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 V ) encontrar aquela que queramos. Note que h n! permutaes de V , mas no precisamos enumerar todas elas conseguimos resolver o problema em tempo O(n2 ) usando um algoritmo razovel (poderamos ter gerado todas as n! permutaes e vericado, para cada uma, se estava ordenada, mas o algoritmo teria tempo de execuo O(n!), alm de ser mais complicado).

lim

para i de 1 a n1 para j de i+1 a n se Vi > Vj troque Vi com Vj

in ar

Quando a complexidade de tempo para um algoritmo cresce mais rpido que qualquer polinmio mas ainda assim cresce mais lentamente que qualquer exponencial, dizemos que o algoritmo tem tempo de execuo subexponencial. Uma das maneiras de denir complexidade exponencial O(2n ), com > 0. 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 n em tempo polinomial no tamanho da descrio de n? Ou encontrar uma soluo para um sistema de n equaes? Um exemplo de algoritmo eciente o de ordenao de um vetor por seleo. A entrada um vetor V de tamanho n:

notas de aula verso 79 - Jernimo C. Pellegrini

C.1. COMPLEXIDADE DE TEMPO

357

Usaremos o procedimento merge no em dois vetores, mas em duas metades do mesmo vetor. Assim, o procedimento tratar duas metades do vetor como se fossem dois vetores (U e V na gura abaixo).

O algoritmo mostrado em pseudocdigo a seguir. Os parmetros so: V , o vetor onde esto os elementos a intercalar; a e b, o primeiro e ltimo ndices a serem usados, e m, o ndice do ponto mdio. merge(V,a,m,b): W novo vetor ia j m+1 k1 enquanto i < m ou j < b: se Vi < Vj Wk V i ii+1 senao Wk V j j j+1 k k+1 copie W sobre V

Ve rs

A complexidade de tempo de merge claramente O(n). O algoritmo mergesort listado a seguir; a e b so os ndices inicial e nal da parte do vetor a ser ordenada.

mergesort(V,a,b): se a < b: m (a + b)/2 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)).

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

358

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Demonstrao. O tempo necessrio para que o algoritmo termine : O tempo de mergesort em vetor de tamanho n/2 para cada chamada recursiva a mergesort; n para a chamada a merge.

A equao de recorrncia que d o tempo de execuo portanto T (n) = 2T (n/2) + O(n).

n/2

Pr e
n/8

n/4

Ve rs
ento

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

i) Se f (n) = O(nlogb (a) ), com > 0, ento T (n) = (nlogb (a) ).

ii) Se f (n) = (nlogb (a) ), ento T (n) = (nlogb (a) log(n)).

A altura da rvore log2 n, e em cada nvel k o trabalho realizado leva tempo 2k (logk n) = n. O tempo total necessrio ento O(n) em cada iterao e O(n log(n)) no total.

lim
n/2 n/4 n/8

A soluo desta recorrncia T (n) = O(n log(n)). A rvore a seguir mostra o tempo necessrio para a execuo do algoritmo: no primeiro n o tamanho da entrada n, portanto o trabalho realizado ali O(n); dois outros ns lhos existem, cada um com trabalho n/2. Isso se repete at que n = 1.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

C.1. COMPLEXIDADE DE TEMPO

359

iii) Se f (n) = (nlogb (a)+ ), e af (n/b) cf (n) para algum c < 1 e n sucientemente grande, ento T (n) = (f (n)). Podemos aplicar o Teorema Mestre para resolver a recorrncia da complexidade de tempo do mergesort. Exemplo C.6 (Uso do Teorema Mestre (recorrncia do mergesort)). A recorrncia tem f = n). Vericamos que f (n) = = (nlog2 (2) ) (n),

e portanto podemos usar o caso (ii). A soluo ento T (n) = (nlog2 (2) log n), ou seja, (n log n). 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

Ve rs
X1 X2 X3 X4

Aparentemente, para multiplicar as duas matrizes precisamos realizar oito multiplicaes de matrizes com metade do tamanho das matrizes originais. Nos interessa mais reduzir a quantidade de multiplicaes do que a quantidade de somas, porque a multiplicao mais cara. Se implementarmos um algoritmo recursivo dessa forma, sua complexidade ser dada pela recorrncia

porque dividimos o problema em oito problemas menores, de tamanho n/2 (no estamos contando nmero de elementos na matriz, mas seu maior lado ou sua diagonal) e depois realizamos as somas, que no total tero complexidade (n2 ). Se resolvermos essa recorrncia obteremos T (n) = n3 , e o algoritmo no ser melhor que o primeiro que vimos. No entanto, se calcularmos os seguinte sete produtos = A( F H ) = (A + B )H = (C + D)E = D(G E ) X5 = (A + D)(E + H ) X6 = (B D)(G + H ) X7 = (A C )(E + F )

T (n) = 8T (n/2) + (n2 )

Pr e
F H = AE + BG CE + DG

lim
AF + BH . CF + DH

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

360 e observamos que

APNDICE C. COMPLEXIDADE COMPUTACIONAL

AE + BG AF + BH CF + DH

= = =

P5 + P4 P2 + P6 P1 + P2 P3 + P4 P5 + P1 P3 P7

CE + DG =

teremos calculado o produto das duas matrizes com sete multiplicaes, e no outo. A recorrncia para a complexidade de tempo do algoritmo de Strassen 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

Ve rs
C.2

de crucial importncia observar que a complexidade de algoritmos medida usando o tamanho da entrada, e no seu valor. Um exemplo ilustrar isto claramente: o problema do logaritmo discreto consiste em determinar o logaritmo de um nmero y mdulo n em uma base g (ou seja, determinar o nmero 0 < x < n tal que g x = y ). Podemos inicialmente imaginar que a busca exaustiva pela soluo tem complexidade de tempo linear: basta que veriquemos, para cada 0 < i < n, se g i = y . No entanto, ao raciocinar desta forma estamos descrevendo a complexidade do algoritmo em termos do valor n. O tamanho de n em bits deve ser usado: medida que aumentamos o nmero de bits usado para representar o mdulo n, o tempo necessrio para a busca exaustiva cresce exponencialmente: cada novo bit multiplica o espao de busca por dois! O tempo necessrio para encontrar o logaritmo de um nmero mdulo n, onde n tem k bits, proporcional ao maior valor representvel com k bits: 2k+1 1. Por isso a complexidade do algoritmo O(2k ).

Usaremos grafos em nossos exemplos e em alguns dos tpicos de Criptograa, por isso os denimos aqui: Denio C.7 (Grafo). Um grafo G = (V, E ) consiste de um conjunto V de vrtices e de um conjunto E de arestas (pares de vrtices) { u, v }, onde u, v V . Usualmente os grafos so representados visualmente como conjuntos de pontos (os vrtices) ligados por linhas (as arestas).

o
Grafos

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

C.2. GRAFOS Exemplo C.8 (Grafo). Por exemplo, G = (V, E ) onde V = {a, b, c, d, e} e E = { a, b } , { a, c } , { a, e } , . { b, c } , { b, d } , { c, d } , { d, e }

361

representado gracamente na gura a seguir. b a e

Denio C.9 (Grau de um vrtice). Em um grafo G = (V, E ), o grau de um vrtice v a quantidade de vrtices w V tais que h aresta de w a v (ou seja, a quantidade de vizinhos de v ). Denotamos o grau de v por d(v ). No exemplo dado, d(a) = 3 e d(c) = 2.

Denio C.10 (Clique). Uma clique em um grafo um subconjunto C de seus vrtices tal que para todos u, v C , { u, v } uma aresta do grafo (ou seja, um subconjunto de vrtices ligados dois a dois por arestas). usual denotar uma clique de n vrtices por Kn . O grafo da gura anterior tem duas cliques de tamanho trs (tambm as chamamos de tringulos): {a, b, c} e {b, c, d}. Denio C.11 (Caminho). Um caminho em um grafo uma sequncia (v1 , v2 , , vk ) de vrtices de G tais que h arestas ligando cada dois vrtices vi , vi+1 consecutivos.

Ve rs

Por exemplo, (a, b, c, d) um caminho no grafo dado.

Denio C.12 (Circuito). Um circuito em um grafo um caminho onde o ltimo vrtice igual ao primeiro. Um circuito simples se no h nele repetio de vrtices alm do par primeiro-ltimo. A sequncia (a, b, d, e, a) um exemplo de circuito simples no grafo dado como exemplo. Denio C.13 (Circuito Hamiltoniano). Um circuito simples em um grafo G que contenha todos os vrtices de G chamado de circuito Hamiltoniano. No grafo da primeira gura h um circuito Hamiltoniano (a, b, c, d, e, a). Um grafo pode ser composto de diversas partes desconectadas, e classicamos os grafos como conexos (como o grafo do Exemplo C.8) ou desconexos, usando a Denio a seguir.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

362

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Denio C.14 (Grafo conexo). Um grafo conexo se, para qualquer par de vrtices (a, b), existe um caminho de a at b. Denio C.15 (Colorao de grafo). Seja G = (V, E ) um grafo. Uma k colorao dos vrtices de um grafo um mapeamento c de um conjunto de cores C para o conjunto de vrtices V tal que vrtices adjacentes em G no tenham a mesma cor, ou seja, se (a, b) E ento c(a) = 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. O problema de colorir os vrtices de um grafo sem dar a ns adjacentes cores iguais ser usado como exemplo neste Apndice e tambm usado normalmente em exemplo de prova de conhecimento zero1 .

Exemplo C.16 (Colorao de grafo). O grafo dado anteriormente como exemplo admite uma 3-colorao: a3 b1 c2 d3 e1

rvores so um tipo particular de grafo de grande importncia. Denio C.17 (rvore). Um grafo uma rvore se conexo e no tem circuitos. A Figura a seguir mostra uma rvore. a

o Ve rs
1 Provas

Pr e
b d g c e

O conceito de isomorsmo de grafos usado em provas de conhecimento zero (no Captulo 13).

Denio C.18 (Isomorsmo de grafos). Dois grafos G = (V, E ) e G = (V , E ) so isomorfos se existe uma bijeo f : V V tal que { x, y } E se e somente se { f (x), f (y ) } E . Exemplo C.19 (Grafos isomorfos). Sejam G, F e H os grafos a seguir:
de conhecimento zero so discutidas no Captulo 13.

lim
f h

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

C.3. PROBLEMAS DE DECISO E DE BUSCA G a c b d w y x z H I

363

Os grafos G e H so isomorfos porque existe a seguinte bijeo: ax cy bw dz

J G e I no so isomorfos: no pode haver bijeo entre eles, j que o vrtice de I tem trs vizinhos, e em G no existe vrtice com trs vizinhos.

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

Para cada instncia h um conjunto (possivelmente vazio) de solues factveis. Ainda usando o exemplo da ordenao, temos o conjunto de todas as permutaes do vetor. Resolver o problema de busca para uma instncia encontrar uma soluo correspondente quela instncia. Como exemplo temos: Dado um vetor V de tamanho n, qual o vetor V com os mesmos elementos de V , em ordem crescente? Dados os custos de deslocamento entre n cidades, qual o caminho que devo percorr-las, passando somente uma vez em cada uma, gastando o mnimo possvel de combustvel? Dado um grafo e um nmero k encontrar um subconjunto de seus vrtices com tamanho k que formem uma clique; Dadas m equaes com n variveis, que valores devem ser atribudos s variveis para satisfazer todas as equaes simultaneamente? Dado um nmero n, encontrar sua fatorao.

Ve rs

Um problema de deciso se admite apenas duas respostas, sim ou no. Por exemplo,

Pr e

Um conjunto I de possveis entradas, ou instncias do problema. No caso da ordenao de vetores, uma instncia um vetor (o tamanho da instncia ser a quantidade de elementos no vetor);

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

364

APNDICE C. COMPLEXIDADE COMPUTACIONAL Dados os custos de deslocamento entre n cidades, responder se h alguma maneira de percorr-las, passando somente uma vez em cada uma, gastando no mximo c em combustvel;

Dado um grafo existe nele uma clique de tamanho k ?

Note que um problema de deciso no pode ser mais difcil que um problema de busca: se pudermos resolver o problema de busca, teremos automaticamente obtido uma resposta para o problema de deciso. Por outro lado, se provarmos algo negativo a respeito de um problema de deciso (por exemplo que insolvel, ou que no h para ele algoritmo eciente), 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.

Exemplo C.21. Dado um grafo G = (V, E ) e um conjunto de vrtices K V , o algoritmo a seguir decide se K uma clique de tamanho no mnimo n. O seguinte algoritmo verica se uma soluo uma clique de tamanho k : se |K | < n retorne NAO para todo u, v K se (u, v ) /E retorne NAO retorne SIM

Ve rs

A complexidade de tempo do algoritmo O(|K |2 ), porque o lao para todo u, v K enumera todos os pares de vrtices de K . H uma denio um pouco diferente (mas equivalente) de algoritmo nodeterminstico. Denio C.22 (Algoritmo no determinstico). Um algoritmo dito no determinstico quando pode seguir vrias sequncias diferentes de passos ao mesmo tempo. Quando uma destas sequncias chega a um resultado e para, o algoritmo para. Quando uma nova linha de execuo criada, ela e comporta como se tivesse clonado toda a memria (todas as variveis) da linha que a iniciou. No h limite para a quantidade de linhas de execuo simultneas.

Pr e

Denio C.20 (Algoritmo no determinstico). Um algoritmo no determinstico para um problema de deciso aquele que, dados uma instncia de um problema e uma possvel soluo, apenas verica se aquela uma soluo vlida para aquela instncia.

lim

in ar

Dado um nmero n, decidir se n primo.

notas de aula verso 79 - Jernimo C. Pellegrini

C.5. ALGORITMOS RANDOMIZADOS

365

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. Exemplo C.23 (Algoritmo no determinstico para CLIQUE).

escolha naodeterministicamente C V se C clique (use o algoritmo anterior para verificar) retorne SIM senao retorne NAO

C.5

Algoritmos Randomizados

Denio C.24 (Algoritmo randomizado). Um algoritmo randomizado aquele que usa um gerador de nmeros aleatreos durante sua execuo. Quando executado duas vezes com a mesma entrada, pode realizar computaes diferentes e chegar a resultados diferentes. Um exemplo simples o teste de primalidade de Fermat2 . O pequeno teorema de Fermat (Teorema B.29) diz que se p primo, ento ap a (mod p) ou seja, que ap1 1 (mod p). Usando este resultado, podemos testar se um nmero p primo escolhendo aleatoreamente vrios nmeros a < p e vericar se a igualdade vale. Caso isso no ocorra, p certamente composto. Caso ocorra, p pode ser primo. Escolhendo vrios valores diferentes de a aumentamos a probabilidade da resposta ser verdadeira.

Ve rs

repita k vezes a nmero aleatreo (1, n) se an1 1 (mod n) retorne COMPOSTO // com certeza absoluta retorne PRIMO // provavelmente Este algoritmo apresentado aqui por sua simplicidade; h algoritmos melhores para testar primalidade, como por exemplo o de Rabin-Miller.

2 necessrio conhecer um mnimo sobre congruncias para compreender este exemplo consulte o Apndice B ou um livro de Teoria dos Nmeros.

Pr e

lim

A primeira linha diz escolha no-deterministicamente. Isso signica que o algoritmo deve escolher um dentre um nmero exponencial (2|V | ) de subconjuntos de V . Isso pode ser entendido como crie 2|V | linhas de execuo, e cada uma segue com um subconjunto.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

366

APNDICE C. COMPLEXIDADE COMPUTACIONAL

C.6

Classes de Complexidade

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 n primo) porque o algoritmo polinomial desenvolvido por Agrawal, Kayal e Saxena pode ser usado para determinar se um nmero primo. Note que nem sempre um problema de deciso fcil implica em um problema de busca fcil. Por exemplo, h um algoritmo polinomial (AKS) para testar primalidade, mas no conhecemos algoritmo polinomial para obter os fatores de um nmero. Denio C.26 (Classe N P ). Um problema est na classe N P quando pode ser resolvido por um algoritmo no-determinstico em tempo polinomial. Problemas em NP evidentemente incluem todos os problemas em P, e diversos outros, inclusive:

Ve rs

CLIQUE Determinar se um grafo G tem uma clique de tamanho k . O algoritmo no-determinstico apresentado para o problema da clique em um grafo tem complexidade de tempo polinomial, portanto CLIQUE N P.

SOMA-SUBCONJUNTO: Dado um conjunto nito A de inteiros positivos e um nmero s, existe um subconjunto de A cuja soma s? O problema est em N P porque tendo um subconjunto de A podemos vericar em tempo polinomial se sua soma s. CICLO-HAMILTONIANO: Dado um grafo, determinar se ele tem um 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.

Pr e

lim

Denio C.25 (Classe P ). Um problema est na classe P quando pode ser resolvido por um algoritmo determinstico em tempo polinomial.

in ar

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 correspondente: sabendo resolver o problema de otimizao podemos simplesmente resolv-lo e, de posse da soluo tima, responder a pergunta do problema de deciso. As classes de complexidade com as quais lidaremos so denidas a seguir, com exemplos.

notas de aula verso 79 - Jernimo C. Pellegrini

C.6. CLASSES DE COMPLEXIDADE

367

TETRIS: Dados um cenrio inicial de jogo e uma sequncia de peas do jogo Tetris, determinar se possvel conseguir rotacion-las e desloc-las para os lados e para baixo de forma que todas desapaream3 , sendo que a ltima pea preencher o espao que faltava? H uma grande quantidade de problemas em N P , mas no nos ocuparemos deles aqui. A classe de problemas resolvidos por algoritmos probabilsticos chamada de PP (probabilistic polynomial time). H diversas subclasses de PP , mas trataremos em particular da classe BPP . Algoritmos randomizados que tenha probabilidade de acerto maior que 1/2 so particularmente interessantes:

Denio C.28 (Classe PSPACE ). Um problema est na classe PSPACE se pode ser resolvido por algum algoritmo usando espao polinomial no tamanho da entrada. O Exerccio 226 pede a demonstrao do seguinte Teorema, que arma que um problema em N P est tambm em PSPACE . Denio C.30 (Linguagem associada a um problema). A linguagem de um problema de deciso o conjunto de todas as instncias do problema para as quais a resposta armativa.

Ve rs
3 Lembre-se

Exemplo C.31 (Linguagens). Os nmeros 3, 11 e 17 pertencem linguagem dos nmeros primos. O grafo a seguir pertence linguagem dos grafos hamiltonianos, porque o ciclo (a, b, f, c, d, e, a) percorre cada vrtice uma nica vez. c e a d b f

das regras do Tetris: quando a linha da base ca cheia,ela desaparece.

Teorema C.29. N P PSPACE .

Pr e

O 2/3 usado na denio arbitrrio: a classe continua a mesma se o trocarmos por qualquer valor estritamente maior que 1/2. Evidentemente a classe P est contida em BPP (um algoritmo determinstico como um algoritmo probabilstico que nunca usa o gerador de nmeros aleatreos). Outra classe importante a dos problemas que podem ser resolvidos usando espao polinomial no tamanho da entrada.

lim

Denio C.27 (Classe BPP ). Um problema est na classe BPP quando pode ser resolvido por um algoritmo randomizado em tempo polinomial com probabilidade de acerto 2/3.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

368

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Podemos ento dizer que resolver um problema de deciso decidir se uma instncia pertence sua linguagem.

Redues so fundamentais na construo de diversas ferramentas em 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. Problema C.32 (HAM (Circuito Hamiltoniano)). Dado um grafo G = (V, E ), determine se G tem um circuito Hamiltoniano. O segundo problema o de encontrar uma maneira de percorrer n ns de um grafo com peso nas arestas limitando o custo mximo do percurso. Problema C.33 (TSP (caixeiro viajante)). Dado um grafo G(V, E ) com custos nas arestas determinados por c : E R e um nmero m, determine se h uma maneira de percorrer todos os ns do grafo com custo menor ou igual a m. Havendo um algoritmo para resolver o TSP, podemos us-lo para resolver tambm o HAM: Dado o grafo G = (V, E ), d a cada aresta o mesmo custo, 1. Se resolvermos o TSP agora procurando um caminho com custo no mximo igual a |V |, sabemos que existe um circuito hamiltoniano no grafo. Para resolver o HAM usando o TSP tivemos que descrever um algoritmo que transforma entradas do HAM em entradas do TSP (simplesmente adicionamos pesos 1 a todas as arestas, e determinamos que m = |V |), e a sada do algoritmo para o TSP nos d a resposta para o HAM. Esta tcnica que consiste em transformar a entrada de um problema em outro para resolv-lo chamada de reduo. A gura abaixo ilustra a reduo que zemos. Note que a reduo (a transformao da entrada) foi feita em tempo polinomial (adicionar pesos s arestas pode ser feito em O(|E |)). Isso porque se tivermos que usar um algoritmo exponencial, a reduo no faz sentido: poderamos simplesmente enumerar todos os circuitos em G.

Ve rs

instncia de HAM

Pr e

sim / no

lim

reduo em tempo polinomial instncia de TSP algoritmo para TSP

in ar

C.7

Redues e completude

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE

369

Denio C.34 (Classe N P -completo). Um problema P N P -completo quando i) P N P e ii) P N P , P P P.

Teorema C.35. TSP N P -completo.

i) T SP N P : dada uma instncia do TSP e uma possvel soluo (uma 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). ii) P N P , P P T SP . A reduo usada como exemplo prova de que que HAM P T SP . Como HAM N P -completo, temos que P N P , P P HAM . Ento, P N P , P P HAM P T SP.

C.7.1

Tcnicas para demonstrao de N P -completude

Ve rs

Grosso modo, as demonstraes de N P -completude so normalmente de um dos trs tipos listados a seguir. Restrio: a forma mais simples de demonstrao, onde para reduzir um problema A a outro problema B , apenas mostramos que suciente usar o algoritmo de soluo de B restringindo suas entradas. Essa a tcnica usada na reduo de HAM ao TSP, j dada;

Substituio local: ao provar que B N P -completo usando uma reduo de A, observamos como traduzir, de maneira direta, homognea e em tempo polinomial, cada instncia de A em uma instncia de B ;

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

Pr e

Demonstrao. A prova se divide em duas partes:

lim

A classe de problemas PSPACE -completos denida de maneira anloga classe de problemas N P -completos, mas neste texto trataremos apenas da ltima. Para provarmos o prximo Teorema usaremos o fato de HAM ser N P completo.

in ar

Quando h uma reduo em tempo polinomial de um problema A para um problema B , usamos a notao A P B . O ltimo exemplo mostra que HAM P TSP. No sabemos se h algoritmo polinomial para o TSP. Se houver, ele poder ser usado para construir (usando esta reduo) um algoritmo polinomial para o HAM. Finalmente denimos a noo de N P -completude4 .

notas de aula verso 79 - Jernimo C. Pellegrini

370

APNDICE C. COMPLEXIDADE COMPUTACIONAL Projeto de componentes: para mostrar que B N P -difcil, mostramos que uma instnca de algum problema N P -difcil A pode ser transformada em outra de B atravs do projeto de pequenos componentes.

Restrio

x X

Teorema C.36. MOCHILA N P -difcil.

Demonstrao. Reduo de PARTICAO: basta restringir as instncias de maneira que s(x) = v (x) e C = K = 1/2 xX s(x). Substituio local

Ve rs

Em demonstraes pode substituio local transformamos a entrada de um problema N P -completo na entrada do problema que queremos mostrar N P -difcil, mas a transformao no uma simples substituio. O prximo exemplo uma reduo do problema COBERTURA-DE-CONJUNTO a CONJUNTO-DOMINANTE. Denimos ento o problema COBERTURADE-CONJUNTO. COBERTURA-DE-CONJUNTO: dada uma famlia de conjuntos S1 , S2 , . . . , Sn , com U = Si e um inteiro k , existe um conjunto de conjuntos Si , i X com tamanho mximo k tal que ix Si = U ? Denimos agora conjunto dominante e o problema do menor conjunto dominante. Denio C.37 (Conjunto dominante). Um conjunto dominante em um grafo G = (V, E ) um subconjunto V V tal que todo vrtice fora de V est ligado a algum vrtice de V por uma aresta.

Pr e
x X

lim
s(x) B v (x) K.

O problema da mochila um dos mais importantes problemas N P -completos. Informalmente pode-se descrever o problema de mochila usando a analogia que lhe d nome: em uma situao em que h diversos objetos, cada um com um peso e um valor, nos interessa saber se possvel coletar diferentes objetos em uma mochila, acumulando um determinado valor, mas sem exceder a capacidade de mochila. A seguir est a denio formal do problema da mochila, com a demonstrao de que N P -difcil. MOCHILA: dados um conjunto X , uma capacidade C , um valor objetivo K e funes s : X Z+ e v : X Z+ dando um tamanho e valor para cada x X , determinar se existe um subconjunto X X tal que

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE

371

CONJUNTO-DOMINANTE: dado um grafo G = (V, E ) e um inteiro K , existe um conjunto dominante de tamanho mximo K em G? Teorema C.38. CONJUNTO-DOMINANTE N P -difcil. Demonstrao. Seja S uma famlia de conjuntos S1 , S2 , . . . , Sn , com ndices I = { 1, . . . , n }. Seja U a unio de todos os Si , U = Si . Podemos resolver uma instncia do problema COBERTURA-DE-CONJUNTO transformando uma instncia (U, S ) em uma instncia de CONJUNTO-DOMINANTE (que simplesmente um grafo G). Construmos o grafo da seguinte maneira: o conjunto de vrtices contm tanto os ndices i = 1, . . . , n dos subconjuntos como os elementos de U :

ligamos entre si com arestas todos os vrtices que representam ndices, e ligamos cada elemento de U com os ndices dos conjuntos aos quais pertencem. E = { { i, j } : i, j I } { { i, x } : x Si }

Ve rs

Seja Y um subconjunto dos ndices (por exemplo, { 2, 3, 4 }, destacado na Figura), e suponha que X = { Si , i Y } soluo para COBERTURA-DECONJUNTO, ento ento X um conjunto dominante no grafo: todos os vrtices de ndice esto conectados entre si, e como este subconjunto est conectado com todos os vrtices dos elementos dos Si , nenhum vrtice ca descoberto. Alm disso, |X | = |Y | o tamanho do conjunto dominante igual ao tamanho da cobertura de conjunto. Como a transformao da instncia de CONJUNTO-DOMINANTE na instncia de COBERTURA-DE-CONJUNTO pode ser feita em tempo polinomial, conclumos que CONJUNTO-DOMINANTE N P -difcil. O Exerccio 217 pede a demonstrao de que CONJUNTO-DOMINANTE est em N P .

Pr e

A Figura a seguir ilustra a construo do grafo para S1 = { x1 }, S2 = { x1 , x2 , x3 }, S3 = { x3 , x4 }, S4 = { x5 , x6 }.

lim

V = I U.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

372

APNDICE C. COMPLEXIDADE COMPUTACIONAL

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.39 (Instncia de 3SAT). Uma instncia do 3SAT exibida a seguir. Dada a frmula

h atribuio possvel s variveis tal que a frmula assuma valor verdadeiro? Teorema C.40. 3COLOR N P -difcil.

Ve rs

Este primeiro componente nos garante que T e F tero cores diferentes, e que h uma terceira cor , diferente das duas anteriores. O segundo componente uma 3-clique onde os vrtices so x, x e . Quando construirmos o grafo, o vrtice ser o mesmo que aquele no componente anterior (e no um vrtice diferente com mesmo nome).

O segundo componente garante que uma varivel e sua negao s podem assumir os valores verdadeiro e falso, e que no podem ter o mesmo valor. O terceiro componente construdo para cada clusula, e compartilha o vrtice T com o primeiro componente. No exemplo na prxima 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 .

Pr e
F T a a

Demonstrao. Mostramos uma reduo de 3SAT a 3COLOR. Usaremos trs componentes para transformar instncias de 3SAT em instncias de 3COLOR. O primeiro componente uma 3-clique, onde os vrtices tem os rtulos T , F e , que representam os valores verdadeiro, falso e impossvel de atribuir para variveis de uma frmula booleana.

lim

(a b c) (b d f ) (b e g ) (a b f ),

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE a

373

Construimos ento um grafo da seguinte maneira:

ii) Incluimos um vrtice para cada varivel e um para a negao de cada varivel (a, a, b, b, . . .).

iii) Para cada varivel v e sua negao v , ligamos v , v e em uma 3-clique, como no segundo componente.

Ve rs

iv) Para cada clusula na frmula, fazemos a ligao dos vrtices includos no passo (ii) com o vrtice T includo no passo (i), e fazemos isso usando a estrutura do terceiro componente.

A prxima gura mostra um exemplo do grafo construdo para a frmula

(a b c) (b c d) (a c d).

Pr e

i) Incluimos os vrtices , T , e F , e os ligamos em uma 3-clique.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

374

APNDICE C. COMPLEXIDADE COMPUTACIONAL


a

Pr e
d d F

Ve rs
C.7.2

O grafo assim construdo ter uma 3-colorao se e somente se houver uma atribuio de valores para a frmula que tenha pelo menos um valor T em cada clusula o que garante que a frumua ter valor T . Como conseguimos transformar, em tempo polinomial, uma instncia de 3SAT em uma de 3COLOR, ento 3COLOR N P -difcil. O que mostramos que, se h algoritmo polinomial para 3COLOR, ele pode ser usado para resolver 3SAT tambm em tempo polinomial. O leitor pode vericar facilmente que alm de N P -difcil, 3COLOR N P completo.

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:

Padres comuns

lim
T

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE

375

dados os inteiros positivos a, b, c, existem inteiros positivos x e y tais que ax2 + by = c? Este problema fcil quando aceitamos solues no-inteiras, mas N P -completo se exigirmos solues inteiras. Outros exemplos so: O problema da mochila, que pode ser resolvido ecientemente se for permitido escolher fraes de objetos; 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 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 . Evidentemente, m0 = 0. Podemos denir os valores de mi recursivamente: mi = max wj + mi vj .
1j n v j i

Ve rs

Esta equao expressa o que chamado de subestrutura tima do problema, que se assemelha ideia de induo forte: tendo as solues timas para o problema com todas as possveis capacidades de mochila de zero at i 1, determinamos a soluo para a mochila de capacidade i. Percorremos os objetos e escolhemos aquele que, somado a alguma soluo para mochila menor, resulta em maior valor. O pseudo cdigo do algoritmo mostrado a seguir.

mochila(v, w, C ): m0 0 para i de 1 a n: x0 para j de 1 a C : se vj i: // este item cabe x max(x, mivj ) mi max(mi1 , x)

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

376

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Exemplo C.41 (Algoritmo para o problema da mochila). Para exemplicar o funcionamento do algoritmo, seja C = 7. Os objetos disponveis tem pesos e valores iguais a w = (2, 1, 3, 4), e v = (3, 2, 5, 9). A sequncia de linhas a seguir mostra como o vetor m preenchido pelo algoritmo. 0 0 0 0 0 0 0 2 2 2 2 2 2 2 0 4 4 4 4 4 4 0 0 6 6 6 6 6 0 0 0 9 9 9 9 0 0 0 0 11 11 11 0 0 0 0 0 13 13 0 0 0 0 0 0 15

O algoritmo percorre os nmeros de 1 a C , e para cada um deles percorre todos os objetos. O problema da mochila pode ento ser resolvido em tempo O(nC ), onde C a capacidade da mochila e n a quantidade de objetos. Esta complexidade de tempo, aparentemente polinomial, na verdade exponencia. Isso porque a capacidade C est codicada em binrio, e o espao para represent-la log C . Se usarmos o tamanho da descrio da entrada como parmetro, obteremos complexidade O(n2k ), onde k o nmero de bits usado para representar C . De qualquer forma, se estivermos interessados em instncias do problema onde C sempre limitado a um nmero relativamente pequeno, o problema tratvel. Problemas onde a entrada seja uma quantidade numrica normalmente podem ser resolvidos dessa forma. Dizemos que estes algoritmos executam em tempo pseudopolinomial. Algoritmos de aproximao Muitas vezes, apesar de no conseguirmos algoritmos ecientes para resolver de maneira exata problemas de otimizao N P -completos, podemos encontrar solues que se aproximam da soluo tima. Por exemplo, podemos conseguir resolver o problema da colorao de vrtices usando algumas cores a mais do que na soluo tima; poderamos resolver o TSP conseguindo um percurso com custo um pouco maior do que o timo. Precisamos ento denir o que signica um pouco distante do timo. Suponha que a soluo tima para cada instancia I do problema P dada por OP T (I ). Suponha tambm que a soluo dada por um algoritmo A dada por A(I ). Como s trabalharemos com um problema e um algoritmo aproximado de cada vez, no haver confuso. Nas denies que seguem, usaremos esta notao. Idealmente, para toda instancia I 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.

Ve rs

Pr e

lim

A soluo tima nos d valor igual a quinze, com os um a unidade do item 4 e trs unidades do item 2 (o valor 1 9 + 3 2 = 15 e o peso 1 4 + 3 1 = 7).

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE

377

Denio C.42 (Aproximao absoluta). Dizemos que A uma aproximao absoluta para o problema se existe uma constante k tal que para toda instancia I, |A(I ) OP T (I )| k. Um problema para o qual existe algoritmo de aproximao absoluta o da colorao de vrtices em grafos planares. Todo grafo planar pode ser colorido com no mximo seis cores, portanto podemos tentar colorir o grafo com menos cores, e se no conseguirmos, usamos seis. O seguinte algoritmo implementa esta estratgia. aprox_colore_vertices(G): se E = : retorne uma unica cor se G e bipartido: retorne uma 2coloracao senao retorne uma 6coloracao

Teorema C.43. se P = N P , no existe aproximao absoluta para o problema da mochila. O Exerccio 221 pede a demonstrao deste Teorema; a demonstrao est na Apndice com as solues, e recomendvel estud-la, porque o mesmo raciocnio aplicvel a diversos outros problemas, como TSP e CONJUNTOINDEPENDENTE. Infelizmente aproximaes absolutas existem apenas para poucos problemas. Podemos no entanto obter algoritmos ecientes que aproximem a soluo tima, diferindo dela por um fator dado por uma funo. Denio C.44 ((n)-aproximao). Dizemos que A uma (n)-aproximao para o problema se existe uma funo () tal que para toda instncia I , OP T (I ) A(I ) p(n)

Ve rs

para problemas de otimizao, ou A(I ) p(n)OP T (I )

onde n |I |, o tamanho da instancia. Quando (n) constante, dizemos que A uma k -aproximao.

Pr e

Obter 2-colorao de grafo bipartido muito simples. Obter uma 6-colorao de um grafo planar qualquer pode ser feito em tempo polinomial. H problemas que no admitem aproximao absoluta. Um deles o da mochila.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

378

APNDICE C. COMPLEXIDADE COMPUTACIONAL

O algoritmo executa em tempo polinomial. O Exerccio 223 pede a demonstrao desta Proposio. Proposio C.45. O algoritmo aprox_vertex_cover tem complexidade de tempo polinomial. Mostramos agora que o algoritmo realmente encontra uma por vrtices. Teorema C.46. O algoritmo aprox_vertex_cover retorna uma cobertura do grafo G por vrtices. Demonstrao. O algoritmo percorre todas as arestas do grafo, e para cada uma delas garante que haver um de seus vrtices na soluo, portanto o resultado deve ser uma cobertura por vrtices.

Ve rs

o conjunto de todas as arestas escolhidas de A logo no Demonstrao. Seja A incio do lao enquanto. Note que este conjunto pode ser menor que E , porque algumas arestas so removidas de A dentro do lao, e nunca so selecionadas. so includos em C , portanto C uma Todas os vrtices das arestas de A cobertura de A. Quando uma aresta { u, v } includa em C , todas as outras arestas incidentes em u ou v so excludas de A, ento no h arestas adjacentes em C , e : portanto precisamos de exatamente dois vrtices por aresta de A | |C | = 2|A

Qualquer cobertura, por denio, deve ter no mnimo um vrtice incidindo em cada aresta. Como OP T (I ) uma cobertura de E , |E | |OP T (I )|.

Teorema C.47. O conjunto de vrtices retornado por aprox_vertex_cover no mximo duas vezes maior que o tamanho da cobertura tima de G por vrtices.

Pr e

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 N P -completo. COBERTURA-POR-VERTICES: dado um grafo G = (V, E ) e um inteiro positivo K , determinar se existe V V de tamanho menor ou igual a K tal que toda aresta de E tem pelo menos um de seus vrtices em V . H uma 2-aproximao para COBERTURA-POR-VERTICES. aprox_vertex_cover(G): C A cpia de E enquanto A = : { u, v } alguma aresta de A C C { u, v } remova de A qualquer aresta incidente em u ou v retorne C

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

C.7. REDUES E COMPLETUDE E , e portanto Mas A | |E | OP T (I ). |A Temos ento que | 2OP T (I ). |C | = 2|A

379

C.7.4

Outros problemas N P -completos

A seguir h uma lista com alguns problemas N P -completos.

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 G = (V, E ) e um inteiro positivo K , determinar se possvel associar cores aos vrtices, usando no mximo K cores e sem que vrtices adjacentes tenham a mesma cor; X3C (COBERTURA-EXATA-POR-3-CONJUNTOS): dado um conjunto X com tamanho mltiplo de trs e uma coleo C de subconjuntos de X , cada um de tamanho trs, existe em C uma cobertura exata para X ? (Ou seja, h C C tal que cada elemento de X ocorre exatamente uma vez em C ?) PARTICAO: Dado um conjunto nito A e um tamanho s(a) para cada a A, existe um subconjunto A A tal que aA s(a) = aA\A s(a)? SOMA-SUBCONJUNTO (descrito no texto); COBERTURA-DE-CONJUNTO (descrito no texto); CONJUNTO-DOMINANTE (descrito no texto);

Ve rs

PRODUTO-SUBCONJUNTO: Dados um conjunto nito A, um tamanho inteiro positivo s(ai ) para cada elemento ai A e um inteiro positivo b, existe um subconjunto a A tal que o produto dos tamanhos dos elementos de A exatamente b?

CICLO-HAMILTONIANO (descrito no texto);

TETRIS (descrito no texto);

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

380

APNDICE C. COMPLEXIDADE COMPUTACIONAL COBERTURA-POR-VERTICES: dado um grafo G, existe uma cobertura de G por vrtices de tamanho K ? (Uma cobertura por vrtices um conjunto de vrtices que toca em todas as arestas do grafo).

CONGRUENCIA-QUADRATICA: Dados inteiros positivos a, b, m, c, existe algum inteiro x < b tal que x2 a (mod m)? GERACAO-DE-PERMUTACAO: dada uma permutao sobre o conjunto de inteiros S = {1, 2, . . . , n} e uma sequncia (S1 , S2 , . . . , Sm ) de subconjuntos de S , possvel expressar como uma composio = 1 2 m , tal que para cada 1 i m, i uma permutao de S que muda apenas as posies dos elementos de Si ?

EMPACOTAMENTO-DE-CONJUNTO: Dada uma coleo C de conjuntos e um inteiro positivo k |C |, determinar se C contm pelo menos k conjuntos mutuamente disjuntos. SBP: Dada uma base para um reticulado L e uma norma, determinar a menor base que gera L. O tamanho da base a norma de seu maior vetor.

CVP: dada uma base de um reticulado L, uma norma e um ponto p em Rn , determinar o ponto p L mais prximo de p.

C.8

Problemas indecidveis

Ve rs

Denio C.48 (Problema indecidvel). Um problema indecidvel se no existe algoritmo que determine, em tempo nito, sua soluo. O mais conhecido problema indecidvel o problema da parada.

Denio C.49 (Problema da Parada). Seja (A) a descrio de um algoritmo A e x uma entrada qualquer para o algoritmo a. Dados (A), x, em algum momento A vai parar? Em outras palavras, dado um programa e uma entrada, podemos decidir se este programa em algum momento chegar ao m da execuo?

Note que no dissemos como exatamente A descrito; este problema normalmente formulado usando Mquinas de Turing, descritas na Seo C.9, e a demonstrao do Teorema da parada (a seguir) envolve um simulador conhecido como Mquina de Turing Universal. Teorema C.50. O problema da parada indecidvel.

H problemas para os quais pode-se provar que no h algoritmo (e portanto no faz sentido falar em complexidade de tempo).

Pr e

SVP: dada uma base de um reticulado L e uma norma, determinar o menor vetor do reticulado.

lim

in ar

EQUACAO-DIOFANTINA-QUADRATICA (descrito no texto);

notas de aula verso 79 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

381

confunde(P, e): se nao para(P, e) // P no para retorne SIM senao // P para nao pare nunca diagonal(x): confunde(x, x)

Finalmente, diagonal(x) aplica confunde com argumentos (x, x).

Podemos executar diagonal(diagonal) ou seja, damos a diagonal uma descrio de seu prprio cdigo. Temos ento que diagonal para se e somente se diagonal no para. Tendo chegado a este absurdo, refutamos a possibilidade do procedimento para existir.

Ve rs

A denio de complexidade de tempo para algoritmos dada no incio deste Captulo menciona quantidade de operaes, que podemos contabilizar nos algoritmos que desenvolvemos. H uma formalizao diferente para a idia de Computao, e que normalmente usada em Teoria da Computao e na discusso de protocolos criptogrcos. Uma mquina de Turing um computador prototpico, um modelo abstrato geral de dispositivo de computao. Este dispositivo tem um programa, l e grava dados de uma ta, e mantm um estado interno. Mais detalhadamente, a mquina de Turing tem um registrador interno de estado e uma cabea de leitura e gravao que percorre uma ta com smbolos. Ao iniciar a operao a mquina estar em um estado denominado inicial. Em um passo de computao, a mquina: 1. L um smbolo da ta 2. De acordo com o estado atual e o smbolo lido, o programa da mquina deve ter uma regra que determina:

C.9

Mquinas de Turing

Pr e

Uma demonstrao formal necessita de uma formalizao do conceito de algoritmo, que apresentamos apenas muito brevemente na Seo C.9; veja a Seo de Notas. H diversos outros problemas indecidveis que 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 N P -difceis.

lim

in ar

Demonstrao. (Idia supercial) Suponha que existe um procedimento para(P, e) que decide se um programa P para quando executado com entrada e. Poderamos ento construir os dois procedimentos a seguir. Primeiro, para entrada (P, e), confunde para quando P no para, e viceversa.

notas de aula verso 79 - Jernimo C. Pellegrini

382

APNDICE C. COMPLEXIDADE COMPUTACIONAL i. O smbolo que ser gravado no lugar do anterior. ii. Para que direo mover a cabea de leitura e gravao (denotamos esquerda por e direita por ).

Um exemplo de regra (q2 , a x, q4 , ), que signica se o estado atual q2 e o smbolo lido a, ento mude o estado interno para q4 , escreva x onde estava o a e mova a cabea para a esquerda. A Figura a seguir mostra o diagrama de uma mquina de Turing em execuo seu estado interno q3 e sua cabea de leitura e gravao est sobre uma clula da ta onde h o smbolo c. O programa (funo de transio) da mquina no mostrado.

q3

Pr e
q0
1, 1, 0, 0, 0, 0,

Uma maneira de representar mquinas de Turing como um grafo. A prxima Figura ilustra uma mquina de Turing com trs estados. Esta mquina verica se uma cadeia de zeros e uns termina em zero ou no (se as cadeias representarem nmeros binrios, a mquina estaria identicando nmeros pares). O estado inicial q0 e o nico estado nal q2 .
start

o Ve rs
5 Na

Este autmato sempre grava o mesmo smbolo que leu, e portanto no muda a ta5 .

Denio C.51 (Mquina de Turing). Uma mquina de Turing denida formalmente como uma tupla (Q, Q0 , QA , qR , , ), onde Q = {q1 , q2 , q3 , qk } o conjunto (nito) de estados em que a mquina pode estar;

q0 Q o estado inicial;

verdade, o leitor familiarizado com Linguagens Formais reconhecer que esta mquina de Turing simula um autmato nito.

lim
a b b c a c d a
q1
1, 1,

q2

0, 0,

in ar
1, 1,

iii. Qual ser o prximo estado.

notas de aula verso 79 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

383

QA , QR Q so os estados de aceitao e rejeio. A mquina pra de computar ao entrar em um destes estados; o alfabeto da mquina. Cada smbolo s 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. O autmato do exemplo anterior pode ento ser representado como a tupla (Q, q0 , { q2 } , , , ), onde Q = { q0 , q1 , q2 }, = { 0, 1 } e (q0 , 1 q1 , 1, ), (q2 , 0 q0 , 0, ), = (q0 , 0 q2 , 0, ), (q2 , 1 q1 , 1, ), . (q1 , 1 q1 , 1, ), (q1 , 0 q2 , 0, )

Denio C.52 (Linguagem Turing-reconhecvel). Uma linguagem Turingreconhecvel se existe alguma mquina de Turing que a reconhece. Denio C.53 (Linguagem Turing-decidvel). Uma linguagem Turing-decidvel se existe alguma mquina de Turing que a decida, e indecidvel se tal mquina de Turing no existe.

Ve rs

As instncias de um problema indecidvel constituem uma linguagem indecidvel. Exemplo C.54 (Linguagem Turing-decidvel: primos). O conjunto dos nmeros primos uma linguagem Turing-decidvel, porque existe algoritmo que decide se um nmero n pertence linguagem (e sempre para, independente de qual seja sua entrada). Exemplo C.55 (Linguagem Turing-indecidvel: mortalidade de matrizes). Dado um conjunto de matrizes 3 3, decidir se a matriz zero pode ser obtida multiplicando matrizes do conjunto (com repeties permitidas, e sem limite para a quantidade de operaes) um problema indecidvel. Em outras palavras, seja LZ 33 a linguagem dos conjuntos de matrizes 3 3 onde se pode obter a matriz zero por multiplicaes. A linguagem LZ 33 no Turing-decidvel. fcil vericar a validade do Teorema a seguir.

Pr e

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

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

384

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Teorema C.56. Uma linguagem L decidvel se tanto L como seu complemento so Turing-reconhecveis. Deve estar clara a relao entre mquinas de Turing e a Denio C.30 (linguagem de um problema de deciso). As mquinas de Turing podem parecer exageradamente simplicadas, mas exatamente este seu papel: o de servir como modelo terico simples para uma grande quantidade de dispositivos complexos e bastante diferentes em seus detalhes. Aceitamos que mquinas de Turing podem realizar as mesmas tarefas que computadores reais usados na prtica, exceto talvez por um aumento no tempo de execuo mas no de polinomial para exponencial. Esse na verdade o que diz a Tese de Church-Turing.

A denio de efetivamente calculada refere-se a algoritmos e mtodo. Os cinco pontos a seguir so uma caracterizao de procedimento efetivo. i) O procedimento descrito em um nmero nito de instrues;

iii) As instrues em (i) podem ser seguidas por um agente (uma pessoa), sem uso de criatividade ou dispositivos adicionais alm dos dispositivos descritos em (ii); iv) Os passos de computao so discretos, sem o uso de qualquer dispositivo analgico;

Ve rs
Notas

Vale notar que (v ) no conita com os algoritmos probabilsticos descritos neste Apndice: na prtica, tais algoritmos so implementados com geradores pseudoaleatreos (o Captulo 4 dedicado simulao de aleatoriedade em computadores determinsticos).

Para uma exposio mais detalhada de tcnicas para anlise de algoritmos veja os livros de Cormen, Leiserson, Rivest e Stein [208] e de Papadimitriou e Vazirani [125, 126]. O tratamento que damos aqui o mesmo seguido nesses livros, abordando complexidade computacional diretamente com algoritmos. H tambm o livro de Udi Manber, que constri sistematicamente algoritmos usando induo [209]. Uma abordagem usando Mquinas de Turing pode ser encontrada nos livros de Sipser [210] e de Lewis e Papadimitriou [211].

v) Os passos de computao so determinsticos, sem o uso de dispositivos aleatreos como dados.

Pr e

ii) H dispositivos para armazenar e recuperar dados (lpis e papel ou a memria de um computador) durante a execuo do algoritmo;

lim

Toda funo que pode ser efetivamente calculada pode ser calculada por uma mquina de Turing

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

385

T (n) = g (n) +
i=1

ai T (bi n + hi n)

O Teorema de Akra-Bazzi foi demonstrado em 1998 [216]. Uma tcnica importante para anlise de algoritmos que no coberta neste Apndice a anlise amortizada. O livro de Cormen e outros [208] uma boa referncia para o assunto. H tambm tcnicas de projeto de algoritmos no discutidas aqui: algoritmos gulosos, programao dinmica e backtracking, por exemplo. No abordamos tambm a anlise de algoritmos paralelos. O primeiro problema a ser demonstrado N P -completo foi o SAT (satisfatibilidade de frmula booleana) independentemente por Stephen Cook [217] e Leonid Levin [218]. evidente que a tcnica usada no foi a de escolher outro problema j sabidamente N P -completo; o leitor interessado no assunto poder procurar uma demonstrao do Teorema de Cook-Levin nos livros de Sisper [210] e de Hopcroft, Motwani e Ullman [219] ou a prova de N P -completude do CIRCUIT-SAT no livro de Cormen e outros [208]. Garey e Johnson ilustram redues usando a tcnica de projeto de componentes [220]. A demonstrao de que TETRIS N P -difcil foi dada por Demaine, Hohenberger e LibenNowell [221, 222]. H, alm de P e N P , diversas outras classes de complexidade. Muitas delas so denidas em termos de diferentes propriedades dos algoritmos analisados (requisitos de espao, possibilidade de paralelizao, por exemplo). O livro de Garey e Johnson [220] foi o primeiro livro publicado sobre classes de complexidade. Alm de ser uma excelente introduo ao assunto, traz um catlogo bsico de problemas N P -completos. Um catlogo mais atual est no livro de Ausiello e outros [223]. Livros que tratam de Complexidade Computacional incluem o de Arora e Barak [129], o de Papadimitriou [224], o de Immerman [225] e o de Goldreich [226]. Algoritmos aproximados (ou de aproximao) so uma das maneiras de lidar com problemas N P -difceis; o livro de Vazirani [227] trata destes algoritmos, e o handbook organizado por Gonzalez cobre o assunto em maior exausto [228]. Introdues mais curtas e simples so normalmente includas em livros sobre Complexidade Computacional, como o de Papadimitriou e Vazirani [125] e o de Cormen e outros [208]. O Captulo dezesseis do livro de Korte e Vygen [229] compacto, porm mais denso que as introdues dos outros dois livros. Em Portugus h o livro de Carvalho e outros [230]. A tese de doutorado de Viggo

Ve rs

Pr e

lim

in ar

Tcnicas para resoluo de recorrncias no contexto de anlise de algoritmos so dadas por Cormen e outros [208] e por Graham, Knuth e Patashnik [212]. Sedgewick e Flajolet [213] do uma exposio mais profunda. O assunto tambm tema da literatura de Anlise Combinatria no livro introdutrio de Plnio Santos, em Portugus [214] e no de Peter Cameron [215]. O Teorema Mestre normalmente apresentado a estudantes de Cincia da Computao no incio do curso de Anlise de Algoritmos. Este , na verdade, um caso particular do Teorema de Akra-Bazzi, que se aplica a recorrncias da forma

notas de aula verso 79 - Jernimo C. Pellegrini

386

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Kann [231] 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 decidibilidade 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 [232, 233]. Alonzo Church props o -Clculo em 1930 [234]; Stephen Kleene desenvolveu a teoria das funes recursivas, comeando em 1936 [235, 236]; h diversos outros modelos, como o de Emil Post [237]. Os matemticos que propuseram estas formalizaes mostraram, no entanto, que h questes algumas muito simples que no podem ser respondidas por qualquer algoritmo. Apesar destes resultados negativos, a formalizao do conceito de algoritmo levou ao desenvolvimento da Teoria da Computao. A tese de Church-Turing foi explicitada, com este nome, por Stephen Kleene em 1952. O livro de Martin Davis [238] d uma excelente introduo a Mquinas de Turing. O livro de Nigel Cutland [239] expe computabilidade usando funes recursivas. Um excelente livro, avanado mas j bastante antigo, sobre funes recursivas o de Hartley Rogers [240], que d tambm uma breve mas excelente introduo tese de Church-Turing. O livro de Barry Cooper [241], tambm abordando tpicos avanados, mais atual (mas no substitui o de Rogers ambos se complementam). Uma coletnea de reprodues de artigos histricos foi organizada por Martin Davis [242]. H muitos bons livros abordando Linguagens Formais. Dentre os introdutrios destacamos o de Michael Sipser [210] e o de John Hopcroft, Rajeev Motwani e Jerey Ullman [243]. O livro de Jerey Shallit, para estudo avanado, muito bom [244]. Grafos so denidos en passant na Seo C.2. Para uma introduo e referncia Teoria dos Grafos, o livro de Adrian Bondy e U. S. R. Murty6 [245] muito muito bom. O livro de Bla Bollobs [246] tambm muito bom, com uma perspectiva um tanto diferente. Outra boa introduo dada no livro de John Harris, Jerey Hirst e Michael Mossingho [247].

Ve rs
6 Uppaluri

Siva Ramachandra Murty, que prefere usar U. S. R. Murty.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

387

Exerccios
Ex. 197 Prove a Proposio C.2. Ex. 198 Resolva as recorrncias. a) T (n) = 2T (n/3) b) T (n) = T (n/2) + n/2 c) T (n) = T (log(n)) + n d) T (n) = T (n/2) + n2 e) T (n) = 3T (n/4) + 1 f) T (n) = T (n/2) + n g) T (n) = T (n/2) + n h) T (n) = T ( n) + 1

Ex. 199 Analise a complexidade de tempo do algoritmo usual (usado com lpis e papel) para multiplicao de polinmios. Ex. 200 Analise a complexidade de tempo do algoritmo para clculo de determinante de matrizes usando cofatores e menores complementares. Ex. 201 Tente conseguir um algoritmo para clculo de determinante com complexidade assinttica de tempo melhor que a do mtodo ingnuo do Exerccio 200 Ex. 202 Qual a complexidade de tempo do algoritmo usual de diviso para dois inteiros que possam ser representados com k dgitos decimais? E se soubermos apenas que os nmeros podem ser representados com k bits?

Ve rs

Ex. 204 Determine a complexidade de tempo do mtodo de Newton-Raphson para obteno de raiz de funes reais. Ex. 205 Torres de Hani um problema bastante conhecido. trs hastes, duas vazias e uma com vrios discos dispostos de forma que o maior 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 n discos da hasta DE para a haste P ARA, usando a haste AU X como auxiliar, e responda as duas questes.

Ex. 203 Determine a complexidade de tempo do mtodo da eliminao de Gauss para soluo de sistemas de equaes lineares.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

388

APNDICE C. COMPLEXIDADE COMPUTACIONAL

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. 206 Considere a seguinte denio de o-pequeno: Denio C.57 (Notao assinttica o-pequeno). Sejam f (x) e g (x) duas funes de uma varivel. Dizemos que f (x) o(g (x)) se e somente se lim

Prove que f (x) o(g (x)) implica que f (x) O(g (x)), mas a recproca no vale.

Ex. 208 Prove o Teorema-Mestre para recorrncias. Ex. 209 Determine a complexidade assinttica para a quantidade de somas nos trs algoritmos de multiplicao de matrizes discutidos neste Apndice. Ex. 210 Prove que a soma dos graus de todos os vrtices de um grafo igual ao dobro do nmero de arestas. Ex. 211 Prove que em todo grafo o nmero de vrtices com grau mpar par.

Ve rs

Ex. 212 Considere uma clique qualquer Kn . So necessrias n cores para colorir seus vrtices. Quantas arestas precisam ser removidas desta clique para que seja possvel colori-la com n 1 cores? E para quantidades ainda menores de cores? Ex. 213 Tente resolver a instncia do 3SAT dada no Exemplo C.39. Caso haja uma atribuio de variveis, mostre-a. Ex. 214 Prove que o seguinte problema N P -completo. COBERTURA-POR-ARESTAS: dado um grafo G = (V, E ) e um inteiro positivo K , determinar se existe E E de tamanho menor ou igual a K tal que todo vrtice de V pertence a uma aresta em E . Ex. 215 Apresentamos um algoritmo na Seo C.7.3 para determinar o valor mximo que pode ser posto na mochila, mas no mostramos como identicar

Pr e

Ex. 207 Prove que os trs casos do Teorema Mestre para recorrncias so mutuamente excludentes.

lim
f (n) =0 g (n)

in ar

hanoi(n, DE, P ARA, AU X ): se n = 0 hanoi(n 1, DE, AU X, P ARA) mostre DE P ARA hanoi(n 1, AU X, P ARA, DE )

notas de aula verso 79 - Jernimo C. Pellegrini

C.9.

MQUINAS DE TURING

389

os itens a serem includos. Modique o algoritmo para que ele construa uma lista de quantidades de itens. Ex. 216 Na pgina 377 dissemos que colorir um grafo bipartido com duas cores em tempo polinomial simples. Mostre o algoritmo.

Ex. 217 Provamos (Teorema C.38) somente que CONJUNTO-DOMINANTE N P -difcil. Prove tambm que o problema est em N P . Ex. 218 Prove que o seguinte problema N P -completo ARVORE-DE-STEINER: Dado um grafo G = (V, E ), um subconjunto R de V e um inteiro positivo k < |V |, determine se h um subgrafo de G que seja rvore contendo todos os vrtices de R e com no mximo k arestas.

Ex. 221 Demonstre o Teorema C.43. Dica: tente mostrar que seria possvel usar a aproximao absoluta do problema para resolv-lo de maneira exata o que implicaria em P = N P . Ex. 222 Mostre um grafo para o qual o algoritmo aprox_vertex_cover retorna uma soluo exatamente duas vezes maior que a tima. Ex. 223 Demonstre o Teorema C.45 Ex. 224 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 uma de duas tas.

Ve rs

b) Fita multidimensional: a mquina de Turing passa a poder ler e escrever em um espao de n dimenses, movendo-se em 2n direes. c) Acesso aleatrio: 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. 225 Porqu, ao denir a classe PSPACE , dissemos que no faz diferena se o problema pode ser resolvido por algoritmo determinstico ou no-

Pr e

Ex. 220 Prove que CIRCUITO-HAMILTONIANO N P -completo.

lim

Ex. 219 Prove que o problema a seguir N P -difcil. SOBREVIVENCIA-DE-REDE: Um grafo G = (V, E ), uma probabilidade (racional) de falha p(x) para cada vrtice e cada aresta, e um nmero racional q 1. Presuma que as falhas em arestas e vrtices so independentes. Seja f a probabilidade de que, para todos (u, v ) E , pelo menos um dentre u, v e (u, v ) falhar. Determinar se q f .

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

390 determinstico?

APNDICE C. COMPLEXIDADE COMPUTACIONAL

Ex. 226 Prove o Teorema C.29.

Ex. 228 Considere uma variante de mquina de Turing onde a ta trocada por duas pilhas (de tamanho ilimitado), P1 e P2 . O alfabeto das pilhas 2 , e = {}; a funo de transio do autmato : Q 2 Q . Prove que esta variante equivalente em poder computacional a uma mquina de Turing comum.

Ve rs

Pr e

lim

in ar

Ex. 227 No Exemplo C.55, declaramos que o problema da mortalidade de matrizes 3 3 indecidvel, e pelo Teorema C.56 a linguagem ou seu complemento no deve ser Turing-reconhecvel. Determine qual delas.

notas de aula verso 79 - Jernimo C. Pellegrini

Apndice D

Transformada de Fourier

A transformada de Fourier permite decompor uma funo em formas de onda simples. H um enorme nmero de aplicaes da transformada de Fourier em Fsica e Engenharia; este Apndice contm uma breve descrio de algumas transformadas discretas usadas no texto.

D.1

Transformada de Fourier

Ve rs
391

Qualquer funo pode ser expressa como a soma de senoides e cossenoides, com diferentes frequncias e amplitudes. A transformada de Fourier de uma funo esta decomposio da funo. Se f (x) uma funo cujo domnio o tempo, dizemos que a transformada de Fourier leva f (x) do domnio do tempo para o domnio da frequncia, porque a transformada de f (x) uma funo F (k ) : W C, onde W o conjunto (innito) de todas as possveis frequncias.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

392

APNDICE D. TRANSFORMADA DE FOURIER Considere a funo retngulo, se |x| > 1/2 0 s(x) = 1/2 se |x| = 1/2 1 se |x| < 1/2.

As Figuras a seguir mostram a aproximao sucessiva de s usando primeiro uma frequncia apenas, depois duas, quatro e nalmente dezenove frequncias.

Pr e
1

s(x) = cos(2x)

o Ve rs

s(x) = cos(2x) (1/3) cos(6x)

s(x) = cos(2x) (1/3) cos(6x) + (1/5) cos(10x) (1/7) cos(14x)

lim
1 2 1 2 1 2

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

D.1. TRANSFORMADA DE FOURIER

393

1 1

s(x) = cos(2x) (1/3) cos(6x) + + (1/37) cos(74x) (1/39) cos(78x)

F (k ) =

f (x)(cos(2kx) isen (2kx)) dx

F (k ) =

A transformada inversa de Fourier f (x) =

Ve rs

H maneiras diferentes de formular a transformada de Fourier, e o leitor encontrar pequenas variaes na literatura. Uma das situaes em que a transformada de Fourier existe quando f (x) integrvel em (, +). H outras situaes em que a transformada de Fourier existe, mas como estamos interessados no caso discreto, no trataremos delas. Normalmente os valores dados pela transformada de Fourier F (k ) so complexos (porque f (x) multiplicado por isen (2kx)). Isso signica que para cada frequncia k , F (k ) dar um nmero complexo, que pode ser decomposto em partes real e imaginria: F (k ) = R(k ) + iI (k ).

Reescrevendo este nmero em forma polar obtemos F (k ) = |F (k )| + ei(k) ,

Pr e

Se usarmos a frmula de Euler, ei = cos + isen , chegaremos a uma forma mais resumida para a transformada de Fourier. Esta a forma normalmente usada. f (x)e2ikx dx

F (k )e2ikx dk

lim

Quando a funo no peridica necessrio usar todas as frequncias para represent-la, e portanto a transformada de Fourier ser uma funo contnua no domnio da frequncia. A transformada de Fourier de uma funo f (x) a integral

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

394

APNDICE D. TRANSFORMADA DE FOURIER

onde |F (k )| a magnitude e (k ) o ngulo de fase para esta frequncia. Tendo ngulo de fase, frequncia e magnitude, denimos completamente uma senoide (ou cossenoide). Uma cossenoide, por exemplo, descrita por

onde a amplitude, a frequncia e o ngulo de fase. H alguns grcos interessantes que podemos plotar para a transformada de Fourier de uma funo (todos tendo a frequncia como domnio): a amplitude, o ngulo de fase e o espectro de potncia, dado por |F (k )|2 = R(k )2 + I (k )2 .

Uma funo peridica discreta pode ser decomposta em uma soma nita de senoides. Se modicarmos a integral da transformada de Fourier para o caso discreto, obteremos a transformada discreta de Fourier (DFT):
N 1

Fn = A inversa da DFT

Cada um dos coecientes Fk da DFT representa uma senoide; a soma de todas as N senoides coincidir com a funo f nos pontos dados. Uma troca de variveis pode tornar a notao um pouco menos carregada: se zermos N = e(2i)/N , a DFT pode ser escrita como

Ve rs

Pr e
k=0

fk =

1 N

N 1

n=0

Fn =
k=0

lim
fk e(2ink)/N Fn e(2ink)/N
N 1 nk fk N ,

D.2

Transformada discreta de Fourier

observando que e(2i)/N uma raiz da unidade para C. evidente que a DFT linear: podemos reescrev-la tambm na forma de ab matriz, onde o elemento (a, b) N (na matriz a seguir omitimos o subscrito N em N para evitar sobrecarregar a notao): 1 F0 1 F1 1 . = . . 1 FN 1 1 2 . . . N 1 1 2 4 .. . 2(N 1) f0 f1 2(N 1) . . . . . . fN (N 1)(N 1)
N 1

in ar
(D.1)

cos(x )

notas de aula verso 79 - Jernimo C. Pellegrini

D.2. TRANSFORMADA DISCRETA DE FOURIER

395

D.2.1

Transformada rpida de Fourier

O algoritmo ingnuo para clculo da transformada discreta de Fourier tem complexidade de tempo O(N 2 ):

(N/2)1

(N/2)1 2kn (f2k )N

Fn =
k=0

+
k=0

(f2k+1 )N

kn 2kn = N/ Como N 2 , reescrevemos (N/2)1

Fn

=
k=0

nk (f2k )N/ 2+ (N/2)1

=
k=0

nk (f2k )N/ 2+

Pr e
(N/2)1

(f2k+1 )N

k=0

(N/2)1

(f2k+1 )N
(N/2)1

k=0

o

(N/2)1 k=0

kn n (f2k )N/ 2 + ( N ) k=0

Ve rs
fft(f, ): N tamanho(f )

Conseguimos agora reescrever Fn como a soma de duas transformadas de Fourier, ambas em vetores de tamanho N/2 (os dois termos entre colchetes). O algoritmo para a FFT calcula estas duas transformadas separadamente. O vetor de entrada dividido em dois outros: f 0 com os elementos de ndice par e f 1 com os elementos de ndice mpar: f 0 (f0 , f2 , . . .) f 1 (f1 , f3 , . . .).

A FFT calculada recursivamente para cada um destes vetores, e depois F construdo usando f 0 e f 1 .

lim
(2k+1)n (2kn+n) (2kn) n N

H um algoritmo melhor, com complexidade O(n log(n)), conhecido como transformada rpida de Fourier (ou FFT, Fast Fourier Transform ). Comeamos o desenvolvimento da FFT dividindo a o clculo de Fn , dado pela soma na Equao D.1 em duas partes: uma para os ndices mpares e outra para os ndices pares.

kn (f2k+1 )N/ 2 .

in ar

dft(f, N ) e(2i)/N para n de 0 a N 1: Fn 0 para k de 0 a N 1: Fn Fn + fk kn retorne F

notas de aula verso 79 - Jernimo C. Pellegrini

396

APNDICE D. TRANSFORMADA DE FOURIER 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

0 8 1 8 2 8 3 8 0 8 1 8 2 8 3 8

Isto imediatamente claro quando visualizado no plano complexo.

Pr e
= = i i i = = = =

Ve rs

i i

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

lim
= = 1 i 1 i i i i.

As chamadas recursivas a fft usam 2 porque esta uma raiz da unidade para N/2. Aps o clculo das duas transformadas de tamanho N/2, o algoritmo combina os dois resultados usando o seguinte fato: para qualquer N = 2k , as potncias de so divididas em duas sequencias iguais a no ser pelo sinal. Por exemplo, para N = 8, temos

1 i i

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

D.3. TRANSFORMADA DO COSSENO Teorema D.1. O algoritmo FFT tem complexidade O(n log(n)).

397

T (n) = 2T (n/2) + n.

Esta equao tem soluo T (n) = kn/2 + n log(n) = O(n log(n)), conforme a demonstrao de Teorema C.4 na Seo C.1.1.

D.3

Transformada do Cosseno

F (k )

f (x) cos(2kx) isen (2kx) dx

f (x) cos(2kx) dx f (x) cos(2kx) dx.

Assim, a transformada do cosseno dada por

o
F (k ) =
N 1

Ve rs

Uma observao importante que podemos fazer imediatamente que se f (x) denida somente sobre nmeros reais, a transformada do cosseno tambm ser real. Da mesma forma que h diversas maneiras de denir a transformada de Fourier, h tambm variaes para a transformada do cosseno. A transformada discreta do cosseno (DCT) conceitualmente semelhante transformada discreta de Fourier: uma sequncia de n pontos decomposta em n funes peridicas mas a DCT decompe apenas em cossenoides, e quando o domnio real, o contradomnio tambm real. A variante apresentada aqui conhecida como DCT-II: Xk =
n=0

Pr e

A transformada do cosseno um caso especial da transformada de Fourier. Se a f (x) uma funo par, sua transformada de Fourier ser composta apenas de cossenoides, porque a integral das senoides, que calculada de a +, ser zero:

f (x) cos(2kx) dx.

xn cos

k (n + 1 2) N

lim
f (x)isen (2kx) dx

Esta demonstrao presume que a exponenciao de (que complexo) no tem impacto sobre o tempo de execuo do programa. Como as potencias de so usadas em sequncia ( 0 , 1 , . . ., pode-se usar uma nica varivel e multiplic-la por a cada iterao do lao for.

in ar

Demonstrao. Basta vericar que h duas chamadas recursivas, e cada uma resolve um problema de tamanho n/2; alm delas, h tambm um lao de complexidade O(n). A relao de recorrncia que d o tempo de execuo portanto

notas de aula verso 79 - Jernimo C. Pellegrini

398

APNDICE D. TRANSFORMADA DE FOURIER

A transformada inversa, conhecida como DCT-III, : fk = 1 X0 + 2


N 1

Xn cos
n=1

1 n(k + 2 ) N

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

Fu,v = C (u)C (v )
x=0 y =0

fx,y cos

(2y + 1)v (2x + 1)u cos 2N 2N

onde c(k ) =

D.3.1

Compresso de imagens: JPG

Notas

Ve rs

A possibilidade de representao de funes arbitrrias como somas de senoides e cossenoides foi explorada por Joseph Fourier, quando estudava conduo do calor1 . O algoritmo para a transformada rpida de Fourier foi exposto em 1965 por James Cooley e John Tuckey [249] mas j aparecia, ainda que sem destaque, em obras anteriores (como em um trabalho de Gauss em 1905, por exemplo). Aps a exposio de Cooley e Tuckey surgiu um grande nmero de aplicaes da DFT em Engenharia e Fsica, sendo comum que se diga que aquele trabalho possibilitou uma drstico desenvolvimento de diversas tecnologias. A histria da FFT esboada muito brevemente no primeiro Captulo do livro de Briggs e Henson [250], e registrada de maneira detalhada em um artigo de Heideman, Johnson e Burrus [251]. Os livros de Brigham [252] de Briggs e Henson [250] cobrem a teoria e usos da transformada discreta de Fourier. Descries da transformada rpida de Fourier aparecem em diversos livros. Destacamos, alm dos j mencionados, os de Cormen, Leiserson, Rivest e Stein [208] (que apresenta diversas otimizaes), de Press, Teukilsky, Vetterling e Flannery [253] e Berman e Paul [254] (onde discutida uma verso paralela do algoritmo).
1 Em seu trabalho Teoria Analtica do Calor [248] publicado em 1822, Fourier introduziu contribuies importantssimas Fsica e Matemtica.

Pr e

A transformada do cosseno parte essencial do mtodo de compresso usado em imagens JPG. A DCT mais usada para compresso de imagens porque concentra mais informao nas frequncias mais baixas.

lim
1 2N

1 N

se k = 0 se k > 0

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

D.3. TRANSFORMADA DO COSSENO

399

O estudo do uso de funes trigonomtricas para representar funes contnuas o objeto da Anlise de Fourier. Uma excelente introduo dada por Stein e Shakarchi [255]. Uma transformada integral uma transformada T da forma
b

T f (x) =
a

K (x, t)f (t)dt,

Exerccios
a) f (x) = sen (x)ex b) f (x) = x3 x2

Ex. 230 Determine a transformada inversa de Fourier de: a) H (f ) = b) H (f ) =


sen (2f T ) 2f cos(2 (1f ) 2f

Ve rs

Ex. 231 Aplique a FFT (sem ajuda de computador, usando o algoritmo em lpis e papel) na sequinte sequncia de pontos: (0, 0.5, 50, 4)

Ex. 232 Em nossa exposio da FFT, presumimos que N potncia de dois. Mostre como adaptar o algoritmo para o caso geral. Ex. 233 Partindo da exposio dada neste Apndice, tente reescrever o desenvolvimento do algoritmo para a FFT usando apenas a formulao matricial. Ex. 234 Implemente a FFT.

Pr e

Ex. 229 Determine a transformada de Fourier de:

lim

que transforma a funo f (u) em outra funo T f (u). K o kernel da transformada. A transformada de Fourier uma transformada integral com K = (e2ixt ), a = e b = +. O livro de Davies [256] uma introduo muito bem redigida s transformadas integrais. Uma descrio mais densa dada por Brychkov e Prudnikov [257]. A transformada discreta do cosseno foi descrita pela primeira vez em 1974 por Ahmed, Natarajan e Rao [258]. O livro de Shih [259] e o handbook organizado por Rao e Yip [260] trazem descries detalhadas da DCT com aplicaes em compresso e processamento de imagens.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

400

APNDICE D. TRANSFORMADA DE FOURIER

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Apndice E

E.1

DES

Ve rs
E.1.1

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.

Descrio geral

O DES uma cifra de Feistel. A Figura a seguir ilustra o funcionamento da cifra. 401

Pr e

Este Apndice contm descries detalhadas de algoritmos que so descritos supercialmente no texto.

lim

Descrio Detalhada de Construes

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

402

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

IP uma permutao inicial, aplicada antes da primeira rodada. Sua inversa, IP IN V , aplicada depois da ltima rodada.

Ve rs

KS o escalonador de chaves. De uma chave com 56 bits so derivadas desesseis chaves de 48 bits.

L e R representam as metades esquerda e direita dos bits sendo transformados

F a funo interna da rede.

Estes componentes so descritos em detalhes a seguir.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

E.1. DES

403

E.1.2

Permutao inicial e sua inversa

A inversa de P I :

Ve rs
E.1.3

Funo interna F

A funo interna F expande sua entrada de 32 bits para 48 bits, adicionando redundncia. Depois faz ou exclusivo com a chave da rodada (que tem 48 bits); divide os 48 bits em oito partes de seis bits, que so usadas como entrada para oito S-boxes. Estas S-boxes tem sada de quatro bits cada, reduzindo novamente o nmero de bits para 32. Finalmente, realiza uma permutao nos 32 bits restantes.

40 39 38 37 36 35 34 33

8 7 6 5 4 3 2 1

Pr e
48 47 46 45 44 43 42 41 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

lim
32 31 30 29 28 27 26 25

58 60 62 64 57 59 61 63

50 52 54 56 49 51 53 55

42 44 46 48 41 43 45 47

34 36 38 40 33 35 37 39

26 28 30 32 25 27 29 31

18 20 22 24 17 19 21 23

10 12 14 16 9 11 13 15

2 4 6 8 1 3 5 7

in ar

A permutao inicial (P I ) dada pela matriz a seguir.

notas de aula verso 79 - Jernimo C. Pellegrini

404

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

Ve rs

Expanso de bits

A funo de expanso E aplicada na sequncia de 32 bits da mensagem, expandindo-a para 48 bits. Esta funo descrita pela matriz a seguir. 32 4 8 12 16 20 24 28 5 9 13 17 21 25 29 1

o
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

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

E.1. DES Permutao interna A permutao P realizada aps a matriz. 16 29 1 5 2 32 19 22 S-boxes

405

As prximas tabelas descrevem as oito S-boxes. S1: 14 4 13 1 2 15 11 8 3 10 6 12 5 0 15 7 4 14 2 13 1 10 6 12 11 9 4 1 14 8 13 6 2 11 15 12 9 7 3 15 12 8 2 4 9 1 7 5 11 3 14 10 S2: 15 3 0 13 S3: 10 13 13 1

Pr e
3 8 13 4 4 9 7 14 12 0 1 5 8 2 11 6 5 10 0 7 1 2 11 4 13 12 7 8 5 14 1 2 12 15 14 3 10 3 13 8 8 5 5 0 15 9 6 15

1 8 14 13 4 7 14 7 11 8 10 1

6 11 15 2 10 4 3 15

o
6 3 15 3 4 6 8 15 3 6 9 8 1 12 11 7

lim
2 13 12 1 10 6 12 6 9 7 12 0 11 4 2 12 11 15 5 10 14 11 5 2 12 10 2 7 3 15 13 0 14 15 10 3 9 8 12 5 6 3 0 0 9 10 4 5

9 0 7 5 3 8 10 5 0 0 6 13

0 5 10 9 11 5 3 2 15 5 14 9

Ve rs

0 7 6 10

9 14 0 9 4 9 13 0

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

1 2 8 5 11 4 7 2 12 1 15 1 3 14 5 9 4 5 11 12

4 15 14 9 8 4 2 14

S5: 2 14 4 11

12 4 11 2 2 1 8 12

7 10 11 6 4 7 13 1 10 13 7 8 1 14 2 13

in ar
8 1 7 12 9 6 14 3

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

notas de aula verso 79 - Jernimo C. Pellegrini

406 S6:

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

S7:

S8: 13 2 1 15 7 11 2 1

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

lim
25 34 43 52 31 38 45 20 17 9 26 18 35 27 44 36 23 15 30 22 37 29 12 4

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

12 9 7 3 5 12 15 6 8 5 0 15

8 4 6 13 8 10 4 1 9 14 7 4

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

E.1.4

Ve rs

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.

Escalonamento de chaves

in ar
5 10 6 2 15 8 0 5 9 14 2 3 1 6 2 12 0 14 3 5 12 7 9 2 5 8 6 11

12 1 10 15 9 10 15 4 2 7 9 14 15 5 2 4 3 2 12 9

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

14 7 5 11 0 11 3 8 1 13 11 6 6 0 8 13

notas de aula verso 79 - Jernimo C. Pellegrini

E.1. DES

407

Tanto C0 como D0 so rotacionados para a esquerda. A quantidade de bits rotacionadosdepende da iterao, conforme a tabela a seguir.

Assim, aps a primeira iterao rotacionam-se C0 e D0 um bit para a direita; na segunda iterao, um bit, na terceira, dois bits, e assim por diante. Importante: os bits so rotacionados, e no apenas deslocados. Assim, os bits que estavam direita so reinseridos na esquerda. Por exemplo, 1000011 << 2 = 0001110.

Ve rs

Em cada iterao, aplica-se a permutao PC-2, para obter a i-sima chave.

o
14 17 3 28 23 19 16 7 41 52 30 40 44 49 46 42

A Figura a seguir ilustra o processo de escalonamento de chaves do DES.

Pr e
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 8 2 55 48 53 32

iterao 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

deslocamentos esq 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

408

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

E.2.1

Ve rs

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 Nb 6 12 12 12 13 14

E.2

AES

Quantidade de rodadas

Pr e
Nk 4 5 6 7 8 4 10 11 12 13 14 5 11 11 12 13 14 7 13 13 13 13 14 8 14 14 14 14 14

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

E.2. AES

409

E.2.2 E.2.3

Escalonamento de chaves Encriptao

A tabela para SubBytes apresentada a seguir, com valores em hexadecimal. O byte xy trocado pela entrada na linha x e coluna y da matriz.

x 0 1 2 3 4 5 6 7 8 9 a b c d e f 0 63 ca b7 04 09 53 d0 51 cd 60 e0 e7 ba 70 e1 8c 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 3 e b5 f 8 98 a1 89 3 7b 7d 26 c3 1a ed fb 8f ec dc 0a 6d 2e 66 11 0d 4 f2 fa 36 18 1b 20 43 92 5f 22 49 8d 1c 48 69 bf 5 6b 59 3f 96 6e fc 4d 9d 97 2a 06 d5 a6 03 d9 e6 6 6f 47 f7 05 5a b1 33 38 44 90 24 4e b4 f6 8e 42

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 c 2 d3 6c 56 e8 dd 61 35 9b 1e 41 99

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

Ve rs

Por exemplo, e4 substitudo por 69 .

Em ShiftRows, os deslocamentos das linhas podem ter tamanhos diferentes, dependendo do tamanho do bloco. Na tabela a seguir, Ci a i-sima linha, e Nb o tamanho do bloco dividido por 32.

Nb

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

lim

in ar
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 f 76 c0 15 75 84 cf a8 d2 73 db 79 08 8a 9e df 16

notas de aula verso 79 - Jernimo C. Pellegrini

410

APNDICE E. DESCRIO DETALHADA DE CONSTRUES

E.2.4

Decriptao
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 9 40 8e 4c 5b a4 15 e4 af f2 f9 b7 db 12 e5 eb 69

InvSubBytes x 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 1 09 e3 7b 2e f8 70 d8 2c 91 ac f1 56 dd 51 e0 2b 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

InvMixColumns

Pr e
0E 09 0D 0B 0B 0E 09 0D 0D 0B 0E 09

Ve rs

Ex. 235 Implemente as cifras e teste-as. Compare o desempenho de sua implementao com outras implementaes. Ex. 236 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). c) Elimine a permutao P . b) Troque o passo de substituio.

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.

Exerccios

lim
09 0D 0B 0E

in ar
a a3 43 95 a2 5c 46 58 bd cf 37 62 c0 10 7a bb 14 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

notas de aula verso 79 - Jernimo C. Pellegrini

Apndice F

Respostas e Dicas

Este Apndice traz respostas e dicas para alguns dos exerccios propostos no texto. Resp. (Ex. 3) Para calcular a probabilidade de sucesso de A neste jogo, tratamos dois casos: i) No sorteio inicial, A consegue cinco cartas com o mesmo naipe. ii) No sorteio inicial, A consegue exatamente quatro cartas com o mesmo naipe. Tratamos primeiro o caso (i). A probabilidade de A conseguir cinco cartas do mesmo naipe inicialmente 4 13 5 52 . Quando houver a troca da ltima carta, a nova carta ser escolhida dentre as 47 cartas que sobraram, e destas, oito so do naipe correto. Assim, a probabilidade de sucesso de A no caso (i) 4 13 8 5 52 47 . 5

Ve rs
4
13 5 52 5

No caso (ii), a probabilidade de A obter exatamente quatro cartas do mesmo naipe 4 13 4 (48 9) . 52 48 4 Assim, a probabilidade de sucesso de A no experimento 4 13 8 1397 4 (48 9) + 52 = 47 48 156604 4 0.0089205. 411

Pr e
5

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

412 Dizemos ento que

APNDICE F. RESPOSTAS E DICAS

Pr[POKER_FLUSH(A) = 1] 0.009.

Resp. (Ex. 10) Uma funo f (x) desprezvel se e somente se para toda funo polinomial g (x), f (x) o g(1 x) . Isto segue diretamente das denies de o (Exerccio 206, na pgina 388) e de funo desprezvel (pgina 27).

x R {0, 1}n Envie 1n e f (x) ao adversrio O adversrio retorna x Se f (x) = f (x ) o resultado 1, seno 0.

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 usando , que resultar em zero e o estado inicial no ser alterado. (ii) Sim: basta que o estado inicial seja uma sequncia de uns, e que a quantidade de coecientes um do polinmio de conexo seja mpar (o ou exclusivo de uma quantidade mpar de uns um, e o estado inicial ser mantido).

Ve rs

Resp. (Ex. 26) (i) (k !k

Resp. (Ex. 27) Observe que n < 2k < 2n. A cada lao do programa, o algoritmo para com probabilidade n/(2k ) que o caso em que x < n. Calcule o tempo esperado de execuo. Resp. (Ex. 32) H muitas maneiras de faz-lo. (i) Tente observar a sada do gerador aos pares, (x0 , x1 ), (x1 , x2 ), (x2 , x3 ), . . . e verique como eles se distribuem no plano. (ii) Use testes estatsticos.

Pr e
(n1)

Depois basta descrever funes de mo nica como fceis de computar e difceis de inverter, onde difcil de inverter signica que para todo adversrio polinomial A e todo n sucientemente grande, Pr[AchaPreImagem(f, A, 1n ) = 1] negl(n).

)/nn .

lim

Resp. (Ex. 13) Note que a denio no muda s mudamos sua redao. Uma maneira de faz-lo denir o experimento AchaPreImagem, que recebe como parmetros f , A e n.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

413 Resp. (Ex. 37) A cifra deixa de ser segura, porque a diferena entre as partes esquerda e direita da entrada ser igual a diferena entre as partes esquerda e direita da sada (Li Ri = Li+1 Ri+1 ), e portanto a sada ser facilmente distinguvel de uma sequncia aleatrea. Se o adversrio conhece os possveis textos claros, poder identicar a mensagem.

Resp. (Ex. 45) A permutao (a||b) = b||a b. Temos (note que para a operao em cadeias binrias, a = a, porque a a = 0): (a||b) = (a||b) (a||b) = (b||a b) (a||b) = (b||a b) (a||b) = (b a)||a b b) = (a b)||a, que permutao, cuja inversa

1 (a b||a) = a||a b a = a||b.

Resp. (Ex. 52) Seja k a chave procurada. Suponha que temos dois textos encriptados, um de m e um do complemento de m: c1 = Enck (m), c2 = Enck (m). Fazemos uma busca exaustiva pela chave, mas a cada chave testada, calculamos Enck (m) e decidimos: Enck (m) = c1 Enck (m) = c2 k=k k=k.

Ve rs

Desta forma, ao testar k testamos tambm seu complemento (note que apenas uma operao de encriptao permite vericar duas chaves, k e seu complemento).

Resp. (Ex. 67) Quando alimentar a funo de hashing com bits aleatreos, lembre-se de que necessrio que o conjunto de entradas diferentes seja maior que o de possveis sadas da funo de hashing, de outra forma haver mais colises do que o esperado (se a funo de hashing tem sada de 512 bits mas a alimentamos com um nico byte aleatreo, s poderemos produzir 28 = 256 diferentes sadas uma para cada byte).

Resp. (Ex. 73) Estritamente falando, no se deve considerar uma funo com ambas as propriedades em uma demonstrao, porque o homomorsmo implica que a funo distinguvel de aleatrea: se for verdade que f (x + y ) =

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

414

APNDICE F. RESPOSTAS E DICAS

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 teria probabilidade no desprezvel de sucesso.

Resp. (Ex. 74) (Esboo) Suponha que o adversrio possa adivinhar o tamanho k do bloco de H . Ele escolhe uma quantidade polinomial de pares de mensagens ai , bi do tamanho do bloco e verica se H (ai ||bi ) = H (H (ai )||bi ). Para adivinhar o tamanho do bloco, basta repetir a vericao para k = 1, 2, . . .

Ve rs

Resp. (Ex. 103) Tente mostrar que com os dados obtidos de Share para dois segredos, g s1 e g s2 , os participantes podem usar partilhas Yi1 Yi2 que permitiro revelar g s1 +s2 .

Resp. (Ex. 108) O simulador S mostrado a seguir produz a transcrio de uma interao.

S(N, v ): b R { 0, 1 } // tenta adivinhar a escolha de V r R {1, . . . , N 1} x r2 (mod N ) b R { 0, 1 } // escolha de V se b = b reinicie

Resp. (Ex. 102) Ser provavelmente difcil explicar o polinmio interpolador de Lagrange, mas no impossvel. No se deve esquecer de explicar porque tudo feito com aritmtica modular (computadores no podem representar nmeros reais) embora este assunto tambm possa ser uma fonte de diculdade ao redigir para tal audincia.

Pr e

Resp. (Ex. 91) H muitos argumentos e contraexemplos: (i) No criptossistema de Rabin no h sequer a garantia de que uma mensagem m seja resduo quadrtico mdulo N . A assinatura pode no existir! necessrio formatar a mensagem de forma a garantir que seja resduo quadrtico. (ii) No Elgamal, o algoritmo Dec requer dois valores, e somente temos uma mensagem o esquema deve ser modicado para que possamos us-lo. (iii) O RSA, usado de tal maneira, inseguro.

lim

Resp. (Ex. 89) (b) Depende do ponto de vista; usando o modelo do Orculo Aleatreo (veja a Seo 7.6 no Captulo7), pode-se provar que o esquema seguro. Sem us-lo, tudo depender da vericao emprica da segurana da construo.

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

415 escreva (x, b, r) A distribuio de x, b e r que aparecem na transcrio idntica que teriam em uma execuo P, V (N, v ), com P autntico.

Resp. (Ex. 113) Lembre-se de que as operaes so todas mdulo n. Mesmo que seja possvel implementar algumas das operaes usando adio e multiplicao, interessante encontrar algoritmos ecientes para faz-lo.

Resp. (Ex. 121) Use tentativa-e-erro, e lembre da probabilidade de um nmero entre 2 e n ter smbolo de Jacobi +1. Resp. (Ex. 122) Lembre-se de que o criptossistema de Cocks presume que a funo um orculo aleatreo. Qualquer funo usada deve mapear cadeias em Jn com distrbuio uniforme. Resp. (Ex. 140) Lembre-se de que no basta usar preto e branco. Voc precisa usar tons de cinza e somar as intensidades de cada partilha.

Resp. (Ex. 141) Ao recombinar as partilhas, se x participantes contribuem com 1 para uma posio de um bloco, e k x contribuem com 0, ento o tom de cinza deve ser x. Como x pode variar de zero a k , temos que k pode ser no mximo igual quantidade de tons de cinza diferentes que puderem ser representados.

Ve rs

Resp. (Ex. 143) Observe que zemos um ou exclusivo dos bits das linhas, portanto erros se cancelam dois a dois. Calcule a probabilidade do nmero de erros ser mpar.

Resp. (Ex. 146) O one-time pad, por exemplo, suportaria encriptao negvel. Este pode ser um ponto de partida.

Resp. (Ex. 147) A encriptao bit-a-bit, exigindo um pad do tamanho da mensagem. Alm disso, B precisa tomar a iniciativa de enviar r.

Resp. (Ex. 155) Pode-se pedir a assinatura de uma mensagem encriptada, obtendo assim o texto claro.

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

416

APNDICE F. RESPOSTAS E DICAS


1

Resp. (Ex. 159) RSA: Encsk (Encpk (x)) = (xa )a

= x.

Oh! maravilha! Que adorveis criaturas temos aqui! Como bela a espcie humana! OH ADMIRVEL MUNDO NOVO que possui gente assim!

(d) Cifra de Vigenre. O texto claro um trecho de O sol nascer, do Cartola:

Por entre fotos e nomes Sem livros e sem fuzil

Resp. (Ex. 165) Comece supondo que M tenha inversa M 1 , e observe que det M det M 1 = det(M M 1) = det I = 1.

Ve rs

Resp. (Ex. 168) mdc (432, 648) = 216. Temos ento que 432 = 2 216 e 648 = 3 216. Ento (lembrando que k escolhido dentre todos os inteiros positivos) temos o seguinte (nas linhas a seguir usamos | para divide e no para probabilidade condicional): Pr[648|k 432] = Pr[3 216 | k 2 216] = Pr [m : 3(216)m = 2(216)k ] = Pr [m : 3m = 2k ] 1 = Pr[3 | 2k ] = . 3

Resp. (Ex. 170) Suponha que no, presuma que h outra soluo x = x. Comece sua argumentao observando que ai x bi , mas bi ai x (mod mi ).

Pr e

(e) Cifra de Csar. O Trabalho duro recompensado no futuro. A preguica recompensada imediatamente (f) Atbash. Trecho de Alegria, Alegria de Caetano Veloso:

lim

Finda a tempestade O sol nascera Finda esta saudade Hei de ter outro alguem para amar A chave trecho de outra msica tambm do Cartola: Ai corra e olhe o ceu

in ar

Resp. (Ex. 163) (c) Ctala. O texto claro da pea A Tempestade, de Shakespeare (reproduzido em Admirvel Mundo Novo, de Aldous Huxley):

notas de aula verso 79 - Jernimo C. Pellegrini

417 Resp. (Ex. 175) 1/2k .

Resp. (Ex. 176) No (no sendo bijees, no haver inversa).

Resp. (Ex. 177) Sim: a identidade a cadeia de n zeros; a operao de ou exclusivo associativa; e cada elemento tem um inverso, que ele mesmo.

Resp. (Ex. 178) No: nem todo polinmio tem como inversa outro polinmio.

Resp. (Ex. 180) Suponha que a ordem de um grupo p, primo. A ordem de qualquer elemento a do grupo deve ser 1 ou p: temos que a1 = 1 ou ap = 1. No h como haver ak = 1, com k = p, porque neste caso k | p e p no seria primo. Observe tambm que o nico elemento de ordem 1 a identidade. Portanto, todos os outros elementos do grupo tem ordem p (e geram G).

Resp. (Ex. 186) No, porque no vale a distributividade de nenhuma delas sobre a outra. Resp. (Ex. 199) De maneira geral, O(n2 ), onde n o maior grau dos dois polinmios. Uma estimativa mais justa O(om), onde o e m so a quantidade de termos diferentes de zero em cada polinmio. Resp. (Ex. 200) O(n!), onde n o nmero de linhas da matriz

Ve rs

Resp. (Ex. 201) Use decomposio LU . Resp. (Ex. 205) (a) Sim (use induo). (b) O(2n ).

Resp. (Ex. 206) Para provar que a recproca no vale, escolha f (x) = cg (x), com alguma constante c.

Pr e

Resp. (Ex. 185) Comece da seguinte maneira: se G tem ordem 2n, ento para algum n, G isomorfo a Z2n . Em Z2n buscamos ento elementos de ordem dois. Estes so aqueles k tais que 2k 0 (mod 2n), ou ainda, tais que k 0 (mod n). A concluso imediata.

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

418

APNDICE F. RESPOSTAS E DICAS

Resp. (Ex. 208) Use rvores, como a mostrada no texto, em sua demonstrao.

Resp. (Ex. 213) Sim, a = b = d = g = V .

Resp. (Ex. 214) Faa uma reduo de COBERTURA-POR-VRTICES, construindo o grafo dual de G.

Resp. (Ex. 216) Comece de um vrtice e siga pintando seus vizinhos, depois os vizinhos dos vizinhos etc, usando cores alternadas. Quando no houver mais vizinhos, procure outro componente conexo. Quando no houver componentes conexos, pare.

Resp. (Ex. 217) Basta observar que possvel, em tempo polinomial, percorrer os vrtices da soluo e marcar todos os seus vizinhos. Se algum vrtice do grafo no foi marcado, a soluo no est correta; se o nmero de vrtices na soluo maior que k , a soluo tambm no est correta.

Resp. (Ex. 218) Use o problema X3C (COBERTURA-EXATA-POR-3CONJUNTOS).

Resp. (Ex. 219) Faa uma reduo de COBERTURA-POR-VERTICES.

Ve rs

Resp. (Ex. 220) (Dica apenas) Faa reduo de COBERTURA-POR-VERTICES. Construa o grafo a seguir para cada aresta { u, v } em G. uv1 uv2 uv3 uv4 uv5 uv6

Pr e
vu1 vu2 vu3 vu4

Note que um circuito hamiltoniano s poderia passar por este grafo de trs maneiras diferentes. Associe cada uma destas maneiras com u ou v estarem ou no na cobertura. Resp. (Ex. 221) Seja X o conjunto de n objetos com valores v1 , . . . , vn e

lim
vu5 vu6

in ar

Resp. (Ex. 209) Tome cuidado para diferenciar soma de elementos de soma de matrizes.

notas de aula verso 79 - Jernimo C. Pellegrini

419 tamanhos s1 , . . . , sn . Se pudermos resolver o problema de maneira absoluta com erro mximo k , podemos resolver de maneira exata o problema de mochila em tempo polinomial:

Como qualquer soluo ter valor mltiplo de k + 1, a nica soluo que distante no mximo k da tima ela mesma.

Resp. (Ex. 222) V = { u, v, w }, E = { { u, v } , { u, w } }. O algoritmo inclui dois vrtices por vez na cobertura, e o grafo mostrado pode ser coberto com um nico vrtice.

Resp. (Ex. 224) (b) Codique os estados usando ordem lexicogrca. (d) Use um mapeamento de ta nita esquerta para ta innita dos dos lados da mesma forma que faria de N para Z. Resp. (Ex. 225) A quantidade de memria usada pelo algoritmo no muda dependendo dele ser determinstico ou no. Resp. (Ex. 226) (Rascunho) Seja A um algoritmo (determinstico ou no) que use tempo polinomial no tamanho da entrada. Ento A no ter tempo suciente para usar memria exponencial no tamanho da entrada. Resp. (Ex. 228) (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 P2 e empilh-lo em P3 ; para gravar um smbolo basta desempilhar de P1 e empilhar o novo smbolo; para avanar alm do m da palavra na ta o autmato pode andar at o m dela (desempilhando de P2 e empilhando em P1 ), e empilhar mais um smbolo em P2 . Resp. (Ex. 231) (46.5, 50 4.5i, 53.5, 50 + 4.5i).

Ve rs

Pr e

lim

in ar

Crie uma nova instncia, multiplicando os valores vi por k + 1. As solues factveis para esta instncia so as mesmas de antes.

notas de aula verso 79 - Jernimo C. Pellegrini

420

APNDICE F. RESPOSTAS E DICAS

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

Referncias Bibliogrcas

[1] KATZ, J.; LINDELL, Y. Introduction to Modern Cryptography. [S.l.]: Chapmen & Hall/CRC, 2008. ISBN 978-1-58488-551-1. 29, 123, 135

[2] GOLDREICH, O. Foundations of Cryptography, volume II: basic applications. [S.l.]: Cambrige University Press, 2004. 29, 208, 214 [3] SHANNON, C. A mathematical theory of communication. Bell System Technical Journal, v. 27, p. 379423; 623656, 1948. 29

[5] SHANNON, C. E. Communication theory of secrecy systems. Bell Systems Theoretical Journal, v. 28, n. 4, p. 656=715, 1949. 29 [6] COVER, T. M.; THOMAS, J. A. Elements of information theory. [S.l.]: Wiley-Interscience, 2006. ISBN 0471241954. 29

Ve rs

[8] VERNAM, G. S. Cipher printing telegraph systems for secret wire and radio telegraphic communications. Journal of the American Institute for Electrical Engineers, v. 55, p. 109115, 1926. 29 [9] GOLDWASSER, S.; MICALI, S. Probabilistic encryption and how to play mental poker keeping secret all partial information. In: Proceedings of the 14th Symposium on Theory of Computing. [S.l.: s.n.], 1982. 29, 153 [10] GOLDREICH, O. Foundations of Cryptography, volume I: basic tools. [S.l.]: Cambrige University Press, 2001. 37, 56, 205

[11] GOLDREICH, O. A Primer on Pseudorandom Generators. [S.l.]: American Mathematical Society, 2010. ISBN 9780821851920. 56

[12] LUBY, M. Pseudorandomness and Cryptographic Applications. [S.l.]: Princeton University Press, 1996. ISBN 9780691025469. 56 421

[7] MAURER, U. Information-theoretic cryptography. In: Advances in Cryptology - CRYPTO 99. [S.l.]: Springer-Verlag, 1999. p. 4764. 29

Pr e

[4] SHANNON, C.; WEAVER, W. A Mathematical Theory of Communication. [S.l.]: Univ of Illinois Press, 1949. ISBN 0-252-72548-4. 29

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

422

REFERNCIAS BIBLIOGRFICAS

[13] KRANAKIS, E. Primality and Cryptography. [S.l.]: Wiley, 1991. ISBN 0471909343. 56 [14] SHOUP, V. A Computational Introduction to Number Theory and Algebra. [S.l.]: Cambrige, 2005. ISBN 0521851548. 56, 238, 348

[15] DELFS, H.; KNEBL, H. Introducton to Cryptography: principles and applications. 2. ed. [S.l.]: Springer, 2007. ISBN 978-3-540-49243-6. 56, 307, 309

[16] CUSICK, T. W.; DING, C.; RENVALL, A. Stream Ciphers and Number Theory. [S.l.]: Elsevier, 2003. 56 [17] GOLOMB, S. W. Shift Register Sequences. [S.l.]: Aegean Park Press, 1982. 56 [18] NEUENSCHWANDER, D. Probabilistic and Statistical Methods in Cryptography: an introdution by selected topics. [S.l.]: Springer, 2004. ISBN 3-54022001-1. 56 [19] LIDL, R.; NIEDERREITER, H. Finite Fields. [S.l.]: Cambridge University Press, 1997. ISBN 0-521-39231-4. 56, 348 [20] GOLOMB, S. W.; GONG, G. Signal Design for Good Correlation. [S.l.]: Cambridge University Press, 2005. ISBN 0-521-82104-5. 56 [21] NIST. A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications. 2010. 56 [22] GOLDREICH, O.; GOLDWASSER, S.; MICALI, S. How to construct random functions. Journal of the ACM, v. 33, n. 4, p. 210217, 1986. 81

Ve rs

[24] DAEMEN, J.; RIJMEN, V. The Design of Rijndael. [S.l.]: Springer, 2002. ISBN 3-540-42580-2. 81 [25] NIST. Data Encryption Standard (DES). 1999. 81 [26] NIST. Announcing the Advanced Encryption Standard (AES). 2001. 81 [27] SCHNEIER, B. Applied Cryptography: Protocols, Algorithms, and Source Code in C. 2. ed. New York: John Wiley and Sons, 1996. 81 [28] JUNOD, P.; VAUDENAY, S. Fox: a new family of block ciphers. In: Selected Areas in Cryptography. [S.l.: s.n.], 2004. 82 [29] AOKI, K. et al. Specication of Camellia a 128-bit Block Cipher. 2001. Disponibilizado pela Mitsubishi Corporation. 82

[23] LUBY, M.; RACKOFF, C. How to construct pseudorandom permutations from pseudorandom functions. SIAM Journal on Computing, v. 17, n. 2, 1988. 81

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

423

[30] SCHNEIER, B. Description of a new variable-length key, 64-bit block cipher (blowsh). In: Proceedings of Fast Software Encryption. [S.l.: s.n.], 1994. 82 [31] BURWICK, C. et al. MARS - a candidate cipher for AES. 1999. Disponibilizado pela IBM Corporation. 82 [32] MATSUI, M. Linear cryptanalysis method for DES cipher. In: EUROCRYPT93. [S.l.]: Springer-Verlag, 1993. 107 [33] BIHAM, E.; SHAMIR, A. Dierential cryptanalysis of des-like cryptosystems. Journal of Cryptology, v. 4, n. 1, p. 372, 1991. 107

[34] STINSON, D. R. Cryptography: theory and practice. 3. ed. [S.l.]: Chapman & Hall/CRC, 2006. ISBN 1-58488-508-4. 107

[35] HEYS, H. A Tutorial on Linear and Dierential Cryptanalysis. 2001. Technical Report CORR 2001-17, Centre for Applied Cryptographic Research, Department of Combinatorics and Optimization, University of Waterloo. Also appears in Cryptologia, vol. XXVI, no. 3, pp. 189-221, 2002. 107 [36] COOPERSMITH, D. The data encryption standard (des) and its strength against attacks. IBM Journal of Research and Development, v. 38, n. 3, p. 243250, 1994. 107 [37] BIHAM, E.; SHAMIR, A. Dierential Cryptanalysis of the Data Encryption Standard. [S.l.]: Springer-Verlag, 1993. ISBN 3540979301. 108 [38] BARD, G. V. Algebraic Cryptanalysis. [S.l.]: 0387887563. 108 Springer, 2009. ISBN

[39] KNUDSEN, L. R. Truncated and higher-order dierentials. In: Fast Software Encryption. [S.l.]: Springer-Verlag, 1995. 108 [40] HELLMAN, M.; LANGFORD, S. Dierential-linear cryptanalysis. In: Advances in Cryptology - CRYPTO 94. [S.l.]: Springer-Verlag, 1994. 108

Ve rs

[41] CLARK, J. A. Metaheuristic Search as a Cryptological Tool. Tese (Doutorado) University of York, 2001. 108

[42] SCHNEIER, B. Self-study course in block cipher cryptanalysis. Cryptologia, v. 24, n. 1, p. 1834, 2000. Tambm disponvel em http://www.schneier. com/paper-self-study.html. 108 [43] NELSON, V. P. et al. Digital Logic Circuit Analysis and Design. [S.l.]: Prentice Hall, 1995. ISBN 0-13-463894-8. 108 [44] CAPUANO, F. G.; IDOETA, I. V. Elementos de Eletrnica Digital. [S.l.]: rica, 2007. ISBN 9788571940192. 108 [45] CHAUM, D.; HEIJST, E. van; PFITZMANN, B. Cryptographically string undeniable signatures, unconditionally secure for the signer. In: Advances in Cryptology CRYPTO91. [S.l.]: Springer-Verlag, 1992. 123

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

424

REFERNCIAS BIBLIOGRFICAS

[46] ANDERSON, R.; BIHAM, E. Two practical and provably secure block cipers: BEAR and LION. In: Proceedings of the Third International Workshop on Fast Software Encryption. [S.l.: s.n.], 1996. p. 113120. 123

[48] FIAT, A.; SHAMIR, A. How to prove yourself: practical solutions to iden . [S.l.: s.n.], tication and signature problems. In: Proceedings of CRYPTO86 1987. 123 [49] BELLARE, M.; ROGAWAY, P. Random oracles are practical: a paradigm for designing ecient protocols. In: Proceedings of the 1st ACM Conference on Computer and Communications Security. [S.l.: s.n.], 1993. 123 [50] DIFFIE, W.; HELLMAN, M. New directions in cryptography. IEEE Transactions on Information Theory, v. 22, n. 6, p. 644654, 1976. 137, 165 [51] ELGAMAL, T. A public-key cryptosystem and a signature scheme based on discrete logarithms. IEEE Transactions on Information Theory, v. 31, n. 4, p. 469472, 1985. 152 [52] RABIN, M. Digitalized Signatures and Public-Key Functions as Intractable as Factorization. 1979. MIT Laboratory for Computer Science Technical Report: MIT/LCS/TR-212. 152 [53] RIVEST, R.; SHAMIR, A.; ADLEMAN, L. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, v. 21, n. 2, p. 120126, 1978. 152

[55] SINGH, S. The Science of Secrecy. [S.l.]: Fourth Estate Limited, 2000. 152

Ve rs

[56] YAN, S. Y. Cryptanalytic Attacks on RSA. [S.l.]: Springer, 2007. ISBN 0387487417. 152

[57] BELLARE, M.; ROGAWAY, P. Optimal asymmetric encryption how to encrypt with rsa. In: Advances in Cryptology - Eurocrypt 94. [S.l.: s.n.], 1995. 152

[58] SHOUP, V. OAEP Reconsidered. 2001. IBM Zurich Research Lab, Saumerstr. 4, 8803 Ruschlikon, Switzerland. 152 [59] FUJISAKI, E. et al. Rsa oaep is secure under the rsa assumption. In: Advances in Cryptology CRYPTO 2001. [S.l.: s.n.], 2001. 153 [60] KATZ, J. Digital Signatures. [S.l.]: Springer, 2010. ISBN 978-0-387-277110. 165

[54] TALBOT, J.; WELSH, D. Complexity and Cryptography: an introduction. [S.l.]: Cambridge University Press, 2006. ISBN 0-521-61771-5. 152

Pr e

lim

in ar

[47] MORIN, P. Provably secure and ecient block ciphers. In: Proceedings of the Third Annual Workshop on Selected Areas in Cryptography (SAC 96). [S.l.: s.n.], 1996. p. 3037. 123

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

425

[61] LAMPORT, L. Constructing digital signatures from a one-way function. 1979. 165 [62] WANG, X.; YIN, Y. L.; YU, H. Finding collisions in the full sha-1. In: Crypto 2005. [S.l.: s.n.], 2005. 165

[63] MANUEL, S. Classication and generation of disturbances vectors for collision attacks against sha-1. In: Proceedings of Workshop on Coding and Cryptography. [S.l.: s.n.], 2009. 165

[64] SHAMIR, A. How to share a secret. Communications of the ACM, v. 22, n. 11, p. 612613, 1979. 182, 195

[66] FRANCO, N. M. B. Clculo Numrico. [S.l.]: Prentice Hall, 2006. ISBN 9788576050872. 195 [67] SMART, N. Cryptography: an introduction. [S.l.]: Mcgraw-Hill, 2004. ISBN 978-0077099879. 195 [68] BENALOH, J.; LEICHTER, J. Generalized secret sharing and monotone functions. In: Advances in Cryptology - CRYPT0 88. [S.l.: s.n.], 1990. p. 2735. 195 [69] ITO, M.; SAITO, A.; NISHIZEKI, T. Secret sharing scheme realizing general access structure. In: Proc. Global Telecoms. Conference. [S.l.: s.n.], 1987. p. 99102. 195

Ve rs

[71] BEN-OR and M. veriable secret sharing and multiparty protocols with honest majority. In: Proceedings of the Twenty-First Annual ACM Symposium on theory of Computing. Seattle, Washington, United States: [s.n.], 1989. 195

[72] PEDERSEN, T. P. Non-interactive and information-theoretic secure veriable secret sharing. In: Advances in Cryptology - EUROCRYPT 91. [S.l.: s.n.], 1992. 195 [73] STADLER, M. Publicly veriable secret sharing. In: Advances in Cryptology - EUROCRYPT 96. [S.l.: s.n.], 1996. p. 190199. 195 [74] FUJISAKI, E.; OKAMOTO, T. A practical and provably secure scheme for publicly veriable secret sharing and its applications. In: Advances in Cryptology - EUROCRYPT 98. [S.l.: s.n.], 1998. p. 3246. 195

[70] CHOR, B. et al. Veriable secret sharing and achieving simultaneity in the presence of faults. In: Proceedings of FOCS85. [S.l.: s.n.], 1985. p. 383395. 195

Pr e

lim

[65] BLAKLEY, G. R. Safeguarding cryptographic keys. In: Proceedings of the National Computer Conference. [S.l.: s.n.], 1979. p. 313317. 182, 195

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

426

REFERNCIAS BIBLIOGRFICAS

[75] SCHOENMAKERS, B. A simple publicly veriable secret sharing scheme and its application to electronic voting. In: Advances in CryptologyCRYPTO 99. [S.l.: s.n.], 1999. p. 148164. 195

[77] GENNARO, R. et al. Secure distributed key generation for discrete-log based cryptosystems. In: Eurocrypt 99. [S.l.: s.n.], 1999. 195 [78] GOLDWASSER, S.; MICALI, S.; RACKOFF, C. The knowledge complexity of interactive proof-systems. In: Proceedings of the 17th Annual ACM Symposium on Theory of Computing. [S.l.: s.n.], 1985. p. 365377. 205

[80] CATALANO, D. et al. Contemporary Cryptology. [S.l.]: Birkhuser Basel, 2005. ISBN 978-3764372941. 205, 214

[82] FIAT, A.; SHAMIR, A. How to prove to yourself: practical solutions to identication and signature problems. In: Advances in Cryptology (CRYPTO 86). [S.l.: s.n.], 1987. p. 186194. 206 [83] GOLDWASSER, S.; KALAI, Y. T. On the (in)security of the at-shamir paradigm. In: FOCS. [S.l.: s.n.], 2003. 206

Ve rs

[85] RABIN, M. How to exchange secrets by oblivious transfer. 1981. Technical Report TR-81, Harvard Aiken Computational Laboratory. 208 [86] EVEN, S.; GOLDREICH, O.; LEMPEL, A. A randomized protocol for signing contracts. In: Proceedings of CRYPTO. [S.l.: s.n.], 1982. 208

[87] CRPEAU, C. Equivalence between two avours of oblivious transfer. In: Advances in Cryptology: CRYPTO 87. [S.l.: s.n.], 1988. 208 [88] HAZAY, C.; LINDELL, Y. Ecient Secure Two-Party Protocols: Techniques and Constructions. [S.l.]: Springer, 2010. ISBN 978-3-642-14302-1. 208 [89] YAO, A. C. Protocols for secure computations. In: Foundations of Computer Science. [S.l.: s.n.], 1982. p. 160164. 214 [90] CANETTI, R. Security and composition of multiparty cryptographic protocols. Journal of Cryptology, v. 13, n. 1, p. 143202, 2000. 214

[84] KALAI, Y. T. Attacks on the Fiat-Shamir Paradigm and Program Obfuscation. Tese (Doutorado) Massachusetts Institute of Technology, 2006. 206

Pr e

[81] CRAMER, R. J. F. Modular design of secure, yet practical cryptographic protocols. Tese (Doutorado) University of Amsterdam, 1996. 205

lim

[79] GOLDWASSER, S.; MICALI, S.; RACKOFF, C. The knowledge complexity of interactive proof-systems. SIAM Journal on Computing, v. 18, n. 1, 1989. 205

in ar

[76] PEDERSEN, T. A threshold cryptosystem without a trusted party. In: Eurocrypt 91. [S.l.: s.n.], 1991. p. 522526. 195

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

427

[91] LINDELL, Y. Composition of Secure Multi-Party Protocols: A Comprehensive Study. [S.l.]: Springer, 2003. ISBN 3-540-20105-X. 214 [92] BOGETOFT, P. et al. Multiparty computation goes live. In: . Berlin, Heidelberg: Springer-Verlag, 2009. p. 325343. ISBN 978-3-642-03548-7. 214

[93] DAMGRD, I. et al. Asynchronous Multiparty Computation: Theory and Implementation. 2008. Cryptology ePrint Archive, Report 2008/415. http: //eprint.iacr.org/. 214

[95] KOBLITZ, N. Elliptic curve cryptosystems. Mathematics of Computation, v. 48, p. 203209, 1987. 228 [96] MILLER, V. Use of elliptic curves in cryptography. In: Proceedings of CRYPTO 86. [S.l.: s.n.], 1986. 228 [97] HANKERSON, D. Guide to Elliptic Curve Cryptography. [S.l.]: Springer, 2010. ISBN 1441929290. 228 [98] WASHINGTON, L. Elliptic Curves: Number Theory and Cryptography. 2. ed. [S.l.]: Chapman&Hall/CRC, 2008. ISBN 1420071467. 228 [99] BLAKE, I.; SEROUSSI, G.; SMART, N. Elliptic Curves in Cryptography. [S.l.]: Cambridge University Press, 1999. ISBN 0521653746. 228 [100] COHEN, H. Handbook of Elliptic and Hyperelliptic Curve Cryptography. [S.l.]: Chapman&Hall/CRC, 2005. ISBN 1584885181. 228

Ve rs

[101] SILVERMAN, J. H.; TATE, J. Rational Points on Eliptic Curves. [S.l.]: Springer, 1992. ISBN 9780387978253. 228 [102] GOMES, J.; VELHO, L. Fundamentos da Computao Grca. [S.l.]: IMPA, 2008. ISBN 978-85-244-0200-5. 228

[103] KOSTRIKIN, A. I.; MANIN, Y. I. Linear Algebra and Geometry. [S.l.]: CRC Press, 1989. ISBN 2881246834. 228 [104] SIMMONS, G. F. Introduction to Topology and Modern Analysis. [S.l.]: Krieger, 2003. ISBN 1575242389. 228

[105] POLLARD, J. M. Theorems of factorization and primality testing. Proceedings of the Cambridge Philosophical Society, v. 76, n. 3, p. 521528, 1974. 238

Pr e

lim

[94] YAO, A. C.-C. How to generate and exchange secrets. In: Proceedings of the 27th Annual Symposium on Foundations of Computer Science. Washington, DC, USA: IEEE Computer Society, 1986. p. 162167. ISBN 0-8186-0740-8. Disponvel em: <http://portal.acm.org/citation.cfm?id=1382439.1382944>. 214

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

428

REFERNCIAS BIBLIOGRFICAS

[106] POLLARD, J. M. A monte carlo method for factorization. BIT Numerical Mathematics, v. 15, n. 3, p. 331334, 1975. 238 [107] HOFFSTEIN, J.; PIPHER, J.; SILVERMAN, J. H. A Mathematical Introduction to Cryptography. [S.l.]: Springer, 2008. ISBN 978-0-387-77993-5. 238, 271, 348

[108] BALDONI, M. W.; CILIBERTO, C.; CATTANEO, G. M. P. Elementary Number Theory, Cryptography and Codes. [S.l.]: Springer, 2009. ISBN 978-3540-69199-0. 238, 348 [109] COHEN, H. A Course in Computational Algebraic Number Theory. [S.l.]: Springer, 2010. ISBN 3642081428. 238, 271

[111] BRESSOUD, D. Factorization and Primality Testing. [S.l.]: Springer, 1989. ISBN 0387970401. 238 [112] VASILENKO, O. N. Number-Theoretic Algorithms in Cryptography. [S.l.]: American Mathematical Society, 2007. ISBN 978-8218-4090-0. 238 [113] AGRAWAL, M.; KAYAL, N.; SAXENA, N. PRIMES is in p. Annals of Mathematics, v. 160, n. 2, p. 781793, 2004. 238 [114] SHOKRANIAN, S. Uma Introduo Teoria dos Nmeros. [S.l.]: Cincia Moderna, 2008. ISBN 9788573937534. 238, 348 [115] COHEN, H. Advanced Topics in Computional Number Theory. [S.l.]: Springer, 1999. ISBN 0387987274. 238

Ve rs

[117] RIESEL, H. Prime Numbers and Computer Methods for Factorization. 2. ed. [S.l.]: Birkhuser Boston, 1994. ISBN 0817637435. 238 [118] SHAMIR, A. Identity-based cryptosystems and signature schemes. In: Crypto 84. [S.l.: s.n.], 1984. 250 [119] COCKS, C. An identity based encryption scheme based on quadratic residues. In: 8th IMA International Conference on Cryptography and Coding. [S.l.: s.n.], 2001. 250 [120] BONEH, D.; FRANKLIN, M. Identity-based encryption from the weil pairing. SIAM Journal of Computing, v. 32, n. 3, p. 586615, 2003. 250 [121] BOYEN, X. A tapestry of identity-based encryption: Practical frameworks compared. International Journal of Applied Cryptography, v. 1, n. 1, p. 321, 2007. 250

[116] BRESSOUD, D.; WAGON, S. A Course in Computational Number Theory. [S.l.]: Wiley, 2008. 238

Pr e

lim

[110] CRANDALL, R.; POMERANCE, C. B. Prime Numbers: A Computational Perspective. [S.l.]: Springer, 2010. ISBN 9781441920508. 238

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

429

[122] GORANTLA, M. C.; GANGISHETTI, R.; SAXENA, A. A Survey of ID-Based Cryptographic Primitives. 2005. IACR Cryptology ePrint Archive, Report 2005/094. http://eprint.iacr.org/. 250

[124] JOUX, A. A one round protocol for tripartite Die-Hellman. In: Proceedings of ANTS 4. [S.l.: s.n.], 2000. p. 385394. 256 [125] DASGUPTA, S.; PAPADIMITRIOU, C.; VAZIRANI, U. Algorithms. [S.l.]: McGraw-Hill, 2006. ISBN 0073523402. 263, 384, 385 [126] PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. [S.l.]: Hill/Artmed, 2009. ISBN 9788577260324. 263, 384

[127] HIRVENSALO, M. Quantum Computing. [S.l.]: Springer, 2001. ISBN 3540667830. 263 [128] MARINESCU, D. C.; MARINESCU, G. M. Approaching Quantum Computing. [S.l.]: Perason/Prentice Hall, 2005. ISBN 0-13-145224-X. 263

[130] NIELSEN, M. A.; CHUANG, I. L. Quantum Computation and Quantum Information. [S.l.]: Cambridge University Press, 2004. ISBN 9780521635035. 263 [131] BERNSTEIN, D. J.; DAHMEN, E.; BUCHMANN, J. Post-Quantum Cryptography. [S.l.]: Springer, 2009. ISBN 978-3-540-88701-0. 263

Ve rs

[133] SHANKAR, R. Principles of Quantum Mechanics. 2. ed. [S.l.]: Springer, 1994. ISBN 0306447908. 263

[134] GRIFFITHS, D. J. Introduction to Quantum Mechanics. 2. ed. [S.l.]: Benjamin Cummings, 2004. ISBN 0131118927. 263

[135] GRIFFITHS, D. J. Mecnica Quntica. [S.l.]: Pearson do Brasil, 2011. ISBN 978-85-7605-927-1. 263 [136] BYRON, F. W.; FULLER, R. W. Mathematics of Classical and Quantum Physics. [S.l.]: Dover, 1992. ISBN 048667164X. 263 [137] HORADAM, K. J. Hadamard Matrices and Their Applications. [S.l.]: Princeton University Press, 2006. ISBN 069111921X. 263 [138] MICCIANCIO, D.; GOLDWASSER, S. Complexity of Lattice Problems: A Cryptographic Perspective. [S.l.]: Springer, 2002. ISBN 9780792376880. 271

[132] COHEN-TANNOUDJI, C.; DIU, B.; LALOE, F. Quantum Mechanics. [S.l.]: Wiley-Interscience, 2006. ISBN 0471569526. 263

Pr e

[129] ARORA, S.; BARAK, B. Computational Complexity: A Modern Approach. [S.l.]: Cambridge University Press, 2009. ISBN 0-52142-426-7. 263, 385

lim

in ar
McGraw-

[123] MARTIN, L. Introduction to Identity-Based Encryption. [S.l.]: Artech House, 2008. ISBN 978-1-59693-238-8. 250

notas de aula verso 79 - Jernimo C. Pellegrini

430

REFERNCIAS BIBLIOGRFICAS

[139] LENSTRA, A. K.; JR., H. W. L.; LOVSZ, L. Factoring polynomials with rational coecients. Mathematische Annalen, v. 261, n. 4, p. 515534, 1982. 271

[141] GOLDREICH, O.; GOLDWASSER, S.; HALEVI, S. Public-key cryptosystems from lattice reduction problems. Lecture Notes in Computer Science, v. 1294, 1997. 271 [142] HOFFSTEIN, J.; PIPHER, J.; SILVERMAN, J. H. Ntru: A ring-based public key cryptosystem. Lecture Notes in Computer Science, v. 1423, 1998. 271

[143] AJTAI, M.; DWORK, C. A public-key cryptosystem with worstcase/average-case equivalence. In: Proc. 29th ACM STOC. [S.l.: s.n.], 1998. p. 284293. 271 [144] REGEV, O. On lattices, learning with errors, random linear codes, and cryptography. In: Proc. 37th ACM Symposium on Theory of Computing (STOC). [S.l.: s.n.], 2005. p. 8493. 271 [145] HEFEZ, A.; VILLELA, M. L. T. Cdigos Corretores de Erros. 2. ed. [S.l.]: IMPA, 2008. ISBN 978-85-244-0169-5. 273 [146] HILL, R. A First Course in Coding Theory. [S.l.]: Oxford University Press, 1990. ISBN 0198538030. 273 [147] ROMAN, S. Introduction to Coding and Information Theory. [S.l.]: Springer, 1996. ISBN 0387947043. 273 [148] MOON, T. K. Error Correction Coding: Mathematical Methods and Algorithms. [S.l.]: Wiley-Interscience, 2005. ISBN 0471648000. 273

Ve rs

[149] BERLEKAMP, E. R.; MCELIECE, R. J.; TILBORG, H. C. V. On the inherent intractability of certain coding problems. IEEE Transactions on Information Theory, IT-24, p. 203207, 1978. 278 [150] MACELIECE, R. J. A Public-Key Cryptosystem Based On Algebraic Coding Theory. 1978. DSN Progress Report 42-44: 114. 279 [151] MENEZES, A. J.; van Oorschot, P. C.; VANSTONE, S. A. Handbook of . [S.l.]: CRC Press, 1996. 279 applied cryptography. In:

[152] NOJIMA, R. et al. Semantic security for the McEliece cryptosystem without random oracles. Design, Codes and Cryptography, v. 49, n. 1-3, p. 289305, 2008. 279 [153] NAOR, M.; SHAMIR, A. Visual cryptography. In: Proceedings of EUROCRYPT. [S.l.: s.n.], 1994. 284

Pr e

lim

in ar

[140] NGUYEN, P. Q.; VALLE, B. The LLL Algorithm: Survey and Applications. [S.l.]: Springer, 2009. ISBN 3642022944. 271

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

431

[154] ATENIESE, G. et al. Visual cryptography for general access structures. Information and Computation, v. 129, p. 86106, 1996. 284 [155] ATENIESE, G. et al. Extended schemes for visual cryptography. Theoretical Computer Science, v. 250, p. 143161, 2001. 284 [156] ATENIESE, G. et al. Constructions and bounds for visual cryptography. In: 23rd International Colloquium on Automata, Languages and Programming. [S.l.: s.n.], 1996. p. 416428. 284 [157] DESMEDT, Y.; HOU, S.; QUISQUATER, J.-J. Audio and optical cryptography. In: . [S.l.: s.n.], 1998. 284

[159] SOCEK, D.; MAGLIVERAS, S. S. General access structures in audio cryptography. In: Proceedings of the IEEE International Conference on Electro Information Technology. [S.l.: s.n.], 2005. 285

[161] WU, H. C.; CHANG, C. C. Sharing visual multi-secrets using circle shares. Comput. Stand Interfaces, v. 134, n. 28, p. 123135, 2005. 285 [162] CIMATO, S.; YANG, C.-N. Visual Cryptography and Secret Image Sharing. [S.l.]: CRC, 2011. ISBN 143983721X. 285 [163] CANETTI, R. et al. Deniable Encryption. 1996. Cryptology ePrint Archive, Report 1996/002. http://eprint.iacr.org/. 296

Ve rs

[164] HOWLADER, J.; BASU, S. Sender-side public key deniable encryption scheme. In: Proceedings of the 2009 International Conference on Advances in Recent Technologies in Communication and Computing. Washington, DC, USA: IEEE Computer Society, 2009. (ARTCOM 09), p. 913. ISBN 978-0-7695-3845-7. Disponvel em: <http://dx.doi.org/10.1109/ARTCom.2009.107>. 296 [165] IBRAHIM, M. H. A method for obtaining deniable public-key encryption. Journal of Network Security, v. 8, n. 1, 2009. 296 [166] IBRAHIM, M. H. Receiver-deniable public-key encryption. Journal of Network Security, v. 8, n. 2, 2009. 296 [167] KLONOWSKI, M.; KUBIAK, P.; KUTYLOWSK, M. Practical deniable encryption. In: Proceedings of SOFSEM 2008. [S.l.: s.n.], 2008. 296

Pr e

[160] WU, C. C.; CHEN, L. H. A Study on Visual Cryptography. Tese (Doutorado) Institute of Computer and Information Science, National Chiao Tung University, Taiwan, 1998. 285

lim

[158] LIN, C. chi; LAIH, C. sung; YANG, C. nung. New audio secret sharing schemes with time division technique. Journal of Information Science and Engineering, p. 605614, 2003. 284

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

432

REFERNCIAS BIBLIOGRFICAS

[168] DRMUTH, M.; FREEMAN, D. M. Deniable encryption with negligible detection probability: An interactive construction. In: EUROCRYPT. [S.l.: s.n.], 2011. p. 610626. 296

[170] CARITAT, M. d. C. Jean-Antoine-Nicolas de. Condorcet: Foundations of social choice and political theory (selections). 17431794 (1994). 307

[171] ARROW, K. J. Social Choice and Individual Values. [S.l.: s.n.], 1951. ISBN 0-300-01364-7. 307

[173] INSUA, D. R.; FRENCH, S. e-Democracy: A Group Decision and Negotiation Perspective. [S.l.]: Springer, 2010. ISBN 978-90-481-9044-7. 307 [174] RJAKOV, Z. Electronic Voting Schemes. Tese (Doutorado) Comenius University, Bratislava, 2002. 307

[176] DINGLEDINE, R.; MATHEWSON, N.; SYVERSON, P. Tor: The second-generation onion router. In: 13th USENIX Security Symposium. [S.l.: s.n.], 2004. p. 303320. 307 [177] CRAMER, R.; GENNARO, R.; SCHOENMAKERS, B. A secure and optimally ecient multi-authority election scheme. In: Eurocrypt 97. [S.l.: s.n.], 1997. 307 [178] CHAUM, D. Blind signatures for untraceable payments. In: Proceedings of CRYPTO 1982. [S.l.: s.n.], 1982. 307, 309

Ve rs

[179] SIMPLOT-RYL, I.; TRAOR, I.; EVERAERE, P. Distributed architectures for electronic cash schemes: A survey. The International Journal of Parallel, Emergent and Distributed Systems, v. 24, n. 3, 2009. 309 [180] AL-MEAITHER, M. Secure electronic payments for Islamic nance. Tese (Doutorado) Department of Mathemathics, Royal Holloway, University of London, 2004. 309 [181] BAUER, F. L. Decrypted Secrets: Methods and Maxims of Cryptology. [S.l.: s.n.], 2010. ISBN 3642063837. 315 [182] SINGH, S. The Code Book. [S.l.: s.n.], Anchor. ISBN 0385495323. 315 [183] SINGH, S. O Livro dos Cdigos. 7a. ed. [S.l.]: Record, 2010. ISBN 8501055980. 315

Pr e

[175] BACARD, A. Computer Privacy Handbook. [S.l.]: Peachpit Press, 1995. ISBN 1-56609-171-3. 307

lim

[172] ARROW, K. J. A diculty in the concept of social welfare. Journal of Political Economy, v. 58, n. 4, p. 328346, 1950. 307

in ar

[169] DRMUTH, M.; FREEMAN, D. M. Deniable Encryption with Negligible Detection Probability: An Interactive Construction. 2011. IACR 066. 296

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

433

[184] PINCOCK, S. Codebreaker: The History of Codes and Ciphers. [S.l.]: Walker & Company, 2006. ISBN 0802715478. 315 [185] GAINES, H. F. Cryptanalysis: A Study of Ciphers and Their Solution. [S.l.]: Dover, 1989. ISBN 0486200973. 315

[186] SMITH, L. D. Cryptography: The Science of Secret Writing. [S.l.]: Dover, 1955. ISBN 048620247X. 315

[187] V.BOONE, J. A Brief History of Cryptology. [S.l.]: Naval Institute Press, 2005. ISBN 978-1-59114-084-9. 315 [188] KAHN, D. The Codebreakers. [S.l.]: Scribner, 1967/1996. ISBN 0-68483130-9. 315 [189] HEFEZ, A. Curso de lgebra. 4. ed. [S.l.]: IMPA. 348

[190] GARCIA, A.; LEQUAIN, Y. Elementos de lgebra. 5. ed. [S.l.]: IMPA, 2010. ISBN 978-85-244-0190-9. 348 [191] SHOKRANIAN, S. lgebra 1. [S.l.]: 8573939516. 348 Cincia Moderna, 2010. ISBN

[192] FRALEIGH, J. B. A First Course in Abstract Algebra. [S.l.]: Addison Wesley, 2002. ISBN 9780201763904. 348 [193] HERSTEIN, I. N. Abstract Algebra. 3. ed. [S.l.]: Wiley, 1996. ISBN 0471368792. 348 [194] GALLIAN, J. A. Contemporary Abstract Algebra. [S.l.]: Brooks Cole, 2009. ISBN 0547165099. 348

Ve rs

[196] JACOBSON, N. Basic Algebra I. 2. ed. [S.l.]: 0486471896. 348

[195] ARTIN, M. Algebra. [S.l.]: Prentice Hall, 1991. ISBN 0130047635. 348 Dover, 2009. ISBN Dover, 2009. ISBN

[197] JACOBSON, N. Basic Algebra II. 2. ed. [S.l.]: 048647187X. 348

[198] HUNGERFORD, T. W. Algebra. [S.l.]: Springer, 1980. ISBN 0387905189. 348 [199] ALUFFI, P. Algebra: Chapter 0. [S.l.]: American Mathematical Society, 2009. ISBN 978-0-8218-4781-7. 348 [200] MULLEN, G. L.; MUMMERT, C. Finite Fields and Applications. [S.l.]: AMS, 2007. ISBN 978-0-8218-4418-2. 348 [201] SANTOS, J. P. de O. Introduo Teoria dos Nmeros. [S.l.]: IMPA, 2010. 348

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

434

REFERNCIAS BIBLIOGRFICAS

[202] MILLIES, C. P. Nmeros: uma introduo Matemtica. [S.l.]: EDUSP, 2006. ISBN 8531404584. 348 [203] ANDREWS, G. E. Number Theory. [S.l.]: Dover, 1994. 348 [204] IRELAND, K.; ROSEN, M. A Classical Introduction to Modern Number Theory. [S.l.]: Springer, 1990. ISBN 1441930949. 348

[205] NIVEN, I.; ZUCKERMAN, H. S.; MONTGOMERY, H. L. An Introduction to The Theory of Numbers. 5. ed. [S.l.]: Wiley, 1991. ISBN 0471625469. 348 [206] APOSTOL, T. Introduction to analytic number theory. [S.l.]: Springer, 1976. 348

[207] STEIN, W. Elementary Number Theory: Primes, Congruences, and Secrets: A Computational Approach. [S.l.]: Springer, 2010. ISBN 1441927522. 348 [208] CORMEN, T. et al. Introduction to Algorithms. 3. ed. [S.l.]: MIT Press, 2009. 384, 385, 398

[210] SIPSER, M. Introduo Teoria da Computao. So Paulo SP: Thomson, 2007. ISBN 9788522104994. 384, 385, 386 [211] LEWIS, H.; PAPADIMITRIOU, C. H. Elementos de Teoria da Computao. 2. ed. [S.l.]: Bookman, 2004. ISBN 8-57307-534-1. 384 [212] GRAHAM, R. L.; KNUTH, D. E.; PATASHNIK, O. Matemtica Concreta: fundamentos para a Cincia da Computao. 2. ed. [S.l.]: LTC, 1995. ISBN 85-216-1040-8. 385

Ve rs

[213] SEDGEWICK, R.; FLAJOLET, P. An Introduction to the Analysis of Algorithms. [S.l.]: Addison-Wesley, 1995. ISBN 9780201400090. 385 [214] SANTOS, J. P. O.; MELLO, M. P.; MURARI, I. T. C. Introduo Anlise Combinatria. 4. ed. [S.l.]: Cincia Moderna, 2007. ISBN 978-857393-634-6. 385 [215] CAMERON, P. J. Combinatorics: topics, techniques, algorithms. [S.l.]: Cambridge university Press, 1994. ISBN 0-0521-45761-0. 385 [216] AKRA, M.; BAZZI, L. On the solution of linear recurrence equations. Computational Optimization and Applications, v. 10, n. 2, p. 195210, 1998. 385

[217] COOK, S. The complexity of theorem proving procedures. In: Proceedings of the Third Annual ACM Symposium on Theory of Computing. [S.l.: s.n.], 1971. p. 151158. 385

Pr e

[209] MANBER, U. Introduction to Algorithms: A Creative Approach. [S.l.]: Addison-Wesley, 1989. ISBN 0201120372. 384

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

435

[218] LEVIN, L. A. Universal search problems (em russo, universalnye perebornye zadachi). Problems of Information Transmission (em Russo, Problemy Peredachi Informatsii), v. 9, n. 3, p. 265266. 385

[220] GAREY, M. R.; JOHNSON, R. S. Computers and Intractability: a guide to the theory of NP-completeness. New York: W. H. Freeman, 1979. 385

[222] BREUKELAAR, R.; HOOGEBOOM, H. J.; KOSTERS, W. A. Tetris is Hard, Made Easy. 2003. Relatorio Tecnico 2003-9, Universiteit Leiden. http://www.liacs.nl/~kosters/tetris/tetr.pdf. 385 [223] AUSIELLO, G. et al. Complexity and Approximation: Combinatorial optimization problems and their approximability properties. [S.l.]: SpringerVerlag, 2003. ISBN 9783540654315. 385 [224] PAPADIMITRIOU, C. H. Computational Complexity. [S.l.]: AddisonWesley, 1993. ISBN 0-20153-082-1. 385 [225] IMMERMAN, N. Descriptive Complexity. [S.l.]: Springer, 1998. ISBN 038798-600-6. 385 [226] GOLDREICH, O. Computational Complexity: A Conceptual Perspective. [S.l.]: Cambridge University Press, 2008. ISBN 9780521884730. 385 [227] VAZIRANI, V. V. Approximation Algorithms. [S.l.]: Springer, 2010. ISBN 3642084699. 385 [228] GONZALEZ, T. F. (Ed.). Handbook of Approximation Algorithms and Metaheuristics. [S.l.]: Chapman & Hall/CRC, 2007. ISBN 9781584885504. 385

Ve rs

[229] KORTE, B.; VYGEN, J. Combinatorial Optimization: theory and algorithms. 2. ed. [S.l.]: Springer, 2002. ISBN 3-540-43154-3. 385

[230] CARVALHO, M. et al. Uma introduo sucinta a algoritmos de aproximao. [S.l.]: IMPA, 2001. 385 [231] KANN, V. On the Aproximability of N P -complete Optimization Problems. Tese (Doutorado) Department of Numerical Analysis and Computing Science Royal Institute of Technology, Sweden, 1992. 386

Pr e

lim

[221] DEMAINE, E. D.; HOHENBERGER, S.; LIBEN-NOWELL, D. Tetris is Hard, Even to Approximate. 2002. http://arxiv.org/abs/cs.CC/0210020. 385

in ar

[219] HOPCROFT, J. E.; MOTWANI, R.; ULLMAN, J. D. Introduction to Automata Theory, Languages and Computation. 2. ed. [S.l.]: Addison-Wesley, 2001. 385

notas de aula verso 79 - Jernimo C. Pellegrini

436

REFERNCIAS BIBLIOGRFICAS

[232] TURING, A. M. On computable numbers, with an application to the entscheidungsproblem. Proceedings of the London Mathematical Society, s242, n. 1, p. 230265, 1937. 386

[234] CHURCH, A. A set of postulates for the foundation of logic. Annals of Mathematics Series 2, v. 33, p. 346366, 1932. 386

[235] KLEENE, S. C.; ROSSER, J. B. General recursive functions of natural numbers. Mathmatische Annalen, v. 112, p. 727742, 1936. 386

[237] POST, E. L. Finite combinatory processes - formulation 1. Journal of Symbolic Logic, v. 1, p. 103105, 1936. 386 [238] DAVIS, M. Computability and Unsolvability. [S.l.]: Dover, 1985. ISBN 0486614719. 386 [239] CUTLAND, N. Computability: An Introduction to Recursive Function Theory. [S.l.: s.n.], 1980. ISBN 0521294657. 386 [240] ROGERS, H. Theory of Recursive Functions and Eective Computability. [S.l.]: MIT Press, 1987. ISBN 0262680521. 386 [241] COOPER, S. B. Computability Theory. [S.l.]: Chapman and Hall/CRC, 2003. ISBN 1584882379. 386

Ve rs

[243] HOPCROFT, J. E.; MOTWANI, R.; ULLMAN, J. D. Introduction to Automata Theory, Languages, and Computation. [S.l.]: Addison-Wesley, 2001. ISBN 0201441241. 386 [244] SHALLIT, J. A Second Course in Formal Languages and Automata Theory. [S.l.]: Cambridge University Press, 2008. ISBN 0-521-86572-7. 386 [245] BONDY, J. A.; MURTY, U. S. R. Graph Theory. [S.l.]: Springer, 2010. ISBN 1849966907. 386 [246] BOLLOBS, B. Modern Graph Theory. [S.l.]: Springer, 1998. ISBN 0387984887. 386 [247] HARRIS, J.; HIRST, J. L.; MOSSINGHOFF, M. Combinatorics and Graph Theory. [S.l.]: Springer, 2010. ISBN 1441927239. 386

[242] DAVIS, M. The Undecidable: Basic Papers on Undecidable Propositions, Unsolvable Problems and Computable Functions. [S.l.]: Dover, 2004. ISBN 0486432289. 386

Pr e

lim

[236] KLEENE, S. C. Introduction to Metamathematics. [S.l.]: North Holland, 1952. 386

in ar

[233] TURING, A. M. On computable numbers, with an application to the entscheidungsproblem. a correction. s2-43, n. 1, p. 544546, 1938. 386

notas de aula verso 79 - Jernimo C. Pellegrini

REFERNCIAS BIBLIOGRFICAS

437

[248] FOURIER, J. B. J. The Analytical Theory of Heat. [S.l.]: Dover, 2003. ISBN 9780486495316. 398 [249] COOLEY, J. W.; TUKEY, J. W. An algorithm for the machine calculation of complex fourier series. Mathematics of Computation, v. 19, p. 297301, 1965. 398 [250] BRIGGS, W.; HENSON, V. E. The DFT: an owners manual for the discrete Fourier transform. [S.l.]: SIAM, 1995. ISBN 0-89871-342-0. 398 [251] HEIDEMAN, M. T.; JOHNSON, D. H.; BURRUS, C. S. Gauss and the history of the fast fourier transform. IEEE ASSP (Acoustics, Speech, and Signal Processing Society) Magazine, v. 1, n. 4, p. 1421, 1984. 398

[253] PRESS, W. H. et al. Numerical Recipes: The Art of Scientic Computing. 3. ed. [S.l.]: Cambridge, 2007. ISBN 978-0-521-88068-8. 398 [254] BERMAN, K. A.; PAUL, J. L. Algorithms: sequential, parallel and distributed. [S.l.]: Thomson, 2005. ISBN 0-534-42057-5. 398 [255] STEIN, E. M.; SHAKARCHI, R. Fourier Analysis: An Introduction. [S.l.]: Princeton University Press, 2003. ISBN 978-0691113845. 399 [256] DAVIES, B. Integral Transforms and Their Applications. 3. ed. [S.l.]: Springer, 2010. ISBN 978-1441929501. 399 [257] BRYCHKOV, Y. A.; PRUDNIKOV, A. Integral Transforms of Generalized Functions. [S.l.]: CRC Press, 1989. ISBN 9782881247057. 399

Ve rs

[259] SHIH, F. Y. Image Processing and Pattern Recognition: fundamentals and techniques. [S.l.]: IEEE/Wiley, 2010. ISBN 978-0-470-40461-4. 399 [260] RAO, K. R.; YIP, P. C. The Transform and Data Compression Handbook. [S.l.]: CRC Press, 2001. ISBN 0-8493-3692-9. 399

[258] AHMED, N.; NATARAJAN, T.; RAO, K. R. Discrete cosine transform. IEEE Transactions on Computers, 1974. 399

Pr e

lim

[252] BRIGHAM, E. O. The Fast Fourier Transform and Its Applications. [S.l.]: Prentice Hall, 1988. ISBN 978-0133075052. 398

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

ndice Remissivo
, 355 -protocolo, 201 , 355 O, 354 BPP (classe de complexidade), 367 IP (classe de complexidade), 198 N P (classe de complexidade), 366 N P -completo (classe de complexidade), 369 P (classe de complexidade), 366 (funo), 322 (funo), 322 PP (classe de complexidade), 367 PSPACE (classe de complexidade), 367 PSPACE -completo (classe de complexidade), 369 (n)-aproximao, 377 k -aproximao, 377 rvore, 362 BEAR (cifra de bloco), 123 LION (cifra de bloco), 123 3DES (criptossistema), 73 Aardvark (cifra de bloco), 119 acordo de chaves baseado em identidades, 246 adversrio malicioso, 209 semi-honesto, 209 AES, 75 descrio algbrica, 78 descrio simplicada, 75 detalhes de implementao, 408 Ajtai-Dwork (criptossistema), 270 Akra-Bazzi

Ve rs

teorema de, 385 algoritmo no determinstico, 364 algoritmo randomizado, 365 algoritmos de aproximao, 376 ambiente, 211 amplitude de probabilidade (em estado quntico), 258 anlise de Fourier, 398 anlise de frequncia (mtodo para criptanlise), 315 anel, 339 aniversrio ataques usando o problema, 113 problema do, 113, 319 aproximao absoluta, 376 aproximao linear tabela de, 93 aritmtica modular, 323 ARVORE-DE-STEINER (problema), 389 assinatura baseada em identidade, 244 assinatura baseada em identidades de Shamir, 249 assinatura cega, 301 em sistema de votao, 300 assinatura digital, 10, 155 ataque do encontro no meio, 73 Atbash, veja cifra Atbash ator (em protocolo), 171 autocorrelao, 46 Bzout Lema de, 325 Berlekamp-Massey algoritmo para determinar complexidade linear de sequncia, 50

Pr e
438

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

NDICE REMISSIVO bit hard-core, 35

439

colorao de um grafo, 362 colunas ctala espartana, 312 no AES/Rijndael, 78 cdigo de autenticao de mensagem, compartilhamento de segredos, 181 127 em sistma de votao, 300 cdigos corretores de erros, 273 esquema de Blakley, 184 caixeiro viajante, veja TSP esquema de Ito-Nishizeki-Saito, 187 caminho em grafo, 361 esquema de Pedersen, 189 caracterstica de um anel ou corpo, 343 esquema de Shamir, 182 CBC-MAC, 130 esquema visual (k, n), 283 CCA, 134 publicamente vericvel, 190 CCA (segurana de criptossistema asvericvel, 188 simtrico), 142 complexidade de tempo, 353 CGS (esquema de votao), 303 de ator, 172 Chaum (esquema de votao, 302 exponencial, 355 Chaum (protocolo de votao), 302 polinomial, 355 cifra subexponencial, 355 de bloco, 8 complexidade linear de sequncia, 49 de uxo, 7 comprometimento (protocolo), 172 cifra am, 313 com resumos criptogrcos, 175 cifra Atbash, 313 de bit, com resduos quadrticos, cifra de bloco 177 denio de segurana, 66 de Pedersen, 176 cifra de Csar, 312 ocultante, 175 cifra de deslocamento, 311 usando logaritmo discreto, 175 cifra de Hill, 314 vinculante, 174 cifra de permutao, 311 confuso cifra de substituio, 311 em projeto de cifra de bloco, 67 cifra de Vigenre, 313 congruncia, 323 cipher block chaining conhecimento zero computacional, 199 modo de operao de permutao conhecimento zero estatstico, 199 pseudoaleatrea, 64 conhecimento zero perfeito, 198 circuito conjunto dominante, 370 hamiltoniano, 361 conjunto qualicante, 181 circuito em grafo, 361 CONJUNTO-DOMINANTE circuito Hamiltoniano, veja HAM problema, 371 classe de complexidade, 366 prova de N P -completude, 371 classe lateral, 338 construo de Lai-Massey, 71 clique, 361 corpo, 339 COBERTURA-DE-CONJUNTO (pro- corpo de Galois, veja corpo nito blema), 370 corpo de Rijndael, 78 COBERTURA-POR-ARESTAS (problema), corpo nito, 343 388 corretude (em sistema de votao), 299 COBERTURA-POR-VERTICES cosseno algoritmo aproximado, 378 transformada, 397 problema, 378 counter

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

440

NDICE REMISSIVO

modo de operao de permutao Die-Hellman (estabelecimento de chapseudoaleatrea, 65 ves), 138 Cramer-Gennaro-Schoenmakers (esquema Die-Hellman (problema), 139 de votao), 303 em grupos de curvas elpticas, 226 criptanlise, 85 Die-Hellman (protocolo) algbrica, 105 com curvas elpticas, 227 de chave relacionada, 107 difuso de cifras antigas, 315 em projeto de cifra de bloco, 67 diferencial, 99 dinheiro eletrnico, 309 diferencial impossvel, 107 disco, 274 linear, 88 discriminante de um polinmio, 220 linear diferencial, 107 distncia de Hamming, 274 criptograa, 7 distncia mnima, 274 criptograa baseada em identidade, 241 divises sucessivas (mtodo para fatocriptograa visual, 281 rao), 232 criptossistema divisibilidade, 321 Dixon simtrico, 20 criptossistema amostrvel, 294 algoritmo de, 236 criptossistema assimtrico, 141 DSA (esquema de assinaturas), 163 crivo efeito avalanche, 69 de Eratstenes, 231 electronic code book quadrtico, 236 modo de operao de permutao sobre corpo numrico algbrico, 238 pseudoaleatrea, 64 curva algbrica, 219 Elgamal (criptossistema), 142, 227 curva elptica, 219 Elgamal (esquema de assinaturas), 163 operao de grupo, 221 Elgamal (criptossistema) CVP (problema em reticulados), 266 com curvas elpticas, 227 Drmuth-Freeman (esquema de encrip- empacotamento de conjunto tao negvel), 294 problema, 380 de Brujin emparelhamentos bilineares, 228, 253 sequncia de, 57 encriptao baseada em identidade, 243 decodicao, 277 encriptao baseada em identidades democracia (em sistema de votao), de Boneh-Franklin, 254 299 de Cocks, 246 DES encriptao com qurum, 194 descrio detalhada, 401 encriptao homomrca descrio simplicada, 72 em sistema de votao, 300 escalonamento de chaves, 406 encriptao negvel expanso de bits, 404 em sistema de votao, 300 funo interna, 403 equao diofantina quadrtica permutao inicial, 403 problema, 374 permutao interna, 405 EQUACAO-DIOFANTINA-QUADRATICA S-boxes, 405 (problema), 374 desvio de ortogonalidade, 266 esquema de assinaturas, 155 diferencial, 100 de Boneh-Franklin, 255

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

NDICE REMISSIVO esquema de encriptao negvel pelo remetente, 288 estratgia de corrupo, 209 estrutura de acesso, 181 estrutura montona, 181 Euclides algoritmo de, 321 algoritmo extendido de, 325 Euler critrio de, 331 Teorema de, 329 famlia de distribuies, 39 estatisticamente prximas, 40 fatorao de inteiros, 33 com curvas elpticas, 228 FDH, veja full-domain hash Feige-Fiat-Shamir (protocolo de identicao), 202 Fermat pequeno Teorema de, 330 Fiat-Shamir (mtodo para obteno de esquema de assinatura), 205 Fourier transformada de, 391 Transformada discreta de, 394 transformada quntica de, 261 transformada rpida, 395 FOX (cifra de bloco), 71, 80 Fujioka-Okamoto-Ohta (esquema de votao), 305 full-domain hash, 162 funo de mo nica forte, 31 de mo nica fraca, 34 funo desprezvel, 26 funcionalidade ideal, 212

441 GGH (criptossistema), 267 Goldwasser-Micali (criptossistema), 149 Golomb postulados de, 46 grafo, 360 grafo bipartido, 362 grafo conexo, 361 grau de vrtice em grafo, 361 grupo, 335 cclico, 336 comutativo, 335 de unidades, 339 grupo multiplicativo de inteiros, 337 Hadamard matriz de, 261 razo de, 266 HAM problema, 368 hash, 9 hashing funo de, 111 HMAC, 133 homomorsmo, 338 Howlader-Basu (esquema de encriptao negvel), 289

IDEA (cifra de bloco), 71 identicao protocolos de, 202 IDKMA, 245 IND-ID-CCA (segurana de criptossistema baseado em identidade), 244 IND-ID-CPA (segurana de criptossistema baseado em identidade), 244 indecidvel (problema), 380 gerao de chaves para construo ba- indistinguibilidade computacional, 41 seada em identidades, 242 intermediador incorrompvel, 213 gerador, 336 isomorsmo gerador de nmeros pseudoaleatreos, de grafos, 362 45 em estruturas algbricas, 342 gerador pseudoaleatreo, 39 Jacobi, smbolo de, 333 Blum-Blum-Shub, 44 de Blum-Micali, 44 JPEG

Ve rs

Pr e

lim

in ar

notas de aula verso 79 - Jernimo C. Pellegrini

442 formato digital para imagens grcas, 398 justeza (em sistema de votao, 299

NDICE REMISSIVO

PARTIO problema, 379 perodo de sequncia, 46 permutao de mo nica, 32 com segredo, 142 permutao indexada, 63 permutao pseudoaleatrea, 63 forte, 63 polinmio de conexo, 49 m-sequncia, 50 polinmio irredutvel, 343 mquina de Turing, 381, 382 polinmio primitivo, 346 mximo divisor comum, 321 polinmio sobre estrutura algbrica, 343 seecdigo de autenticao de mensa- polinmios mdulo f , 344 gem, 127 Pollard McEliece (criptossistema), 278 mtodo para fatorao, 234 mdc, veja mximo divisor comum mtodo p 1 para fatorao, 232 menor base porta de comunicao, 171 problema, 380 predicado hard-core, 35 Merkle-Damgrd construo para funes de mo transformao de, 114 nica, 37 mix-net, 300 problema MOCHILA de busca, 363 no aproximabilidade, 377 de deciso, 363 problema, 370 problema da parada, 380 prova de N P -completude, 370 produto de subconjunto modos de operao (cifra de bloco), 63 problema, 379 mundo ideal, 212 protocolo, 171 mundo real, 212 prova interativa, 197

Ve rs

Pr e

Lagrange interpolao, 183 Lamport esquema de assinaturas de, 160 Lamport (esquema de assinaturas), 160 Legendre, smbolo de, 332 Lema do Empilhamento, 89, 90 LFSR de comprimento mximo, 50 linguagem Turing-decidvel, 383 Turing-reconhecvel, 383 LLL (algoritmo), 267 logaritmo discreto, 32 logaritmo discreto (problema) em grupos de curvas elpticas, 226 Luby-Racko (Teorema), 70 LWE (criptossistema), 270

lim

OAEP, 148 one-time pad, 22 operao quntica, 260 ordem de crescimento, 354 ordem de elemento em grupo, 336 ordem de um grupo, 336 output feedback modo de operao de permutao pseudoaleatrea, 65

in ar

nmero primo, 322 nmeros primos entre si, 322 no-coercibilidade (em sistema de votao), 299 Kasiski (mtodo para criptanlise), 315 no-repdio, 155 Kercho, princpio de, 20 norma de vetor, 265 Kercho, princpio de , 29 NTRU (criptossistema), 269

notas de aula verso 79 - Jernimo C. Pellegrini

NDICE REMISSIVO provas de conhecimento zero em sistema de votao, 300 qubit, 258

443 sistema de prova interativa, 197 sistema reduzido de resduos, 329 SOBREVIVENCIA-DE-REDE (problema), 389 soma de subconjuntos, 33 subgrupo, 336 subgrupo gerado, 336 subgrupo oculto, 261 subsequncia constante, 46 substituio local, 370 SVP (problema em reticulados), 266

Rabin criptossistema, 144 raiz da unidade, 340 raiz primitiva mdulo m, 330 rede de Feistel, 69 rede de substituio e permutao, 67 reduo, 368 tempo pseudopolinomial, 375 reencriptao, 300 teorema Chins do resto, 326 registrador de deslocamento, 47 teorema dos nmeros primos, 322 linear realimentado, 48 tese de Church-Turing, 384 registrador quntico, 259 teste de paridade (em cdigos), 276 relao de recorrncia, 356 texto cifrado escolhido, 134 resduo quadrtico, 331 residuosidade quadrtica (problema), 151texto claro escolhido, 55 tociente (funo), 322 resistncia a coliso, 112 transferncia inconsciente, 207 resistncia de pr-imagem, 112 resistncia de segunda pr-imagem, 112 transformada integral, 399 restrio (tcnica de demonstrao de TSP problema, 368 N P -completude), 370 prova de N P -completude, 369 resumo criptogrco, 111 reticulado, 265 robustez (em sistema de votao), 299 unidade (em anel), 339 ROT13, 312 vericabilidade (em sistema de votaRSA (criptossistema), 146 o, 299 verso insegura, 146 vetor de recombinao, 184 RSA (esquema de assinaturas), 161 vetor peridico, 262 vis S-box, 67 de varivel aleatrea binria, 89 SBP (problema em reticulados), 266 votao eletrnica, 299 Schnorr protocolo de identicao, 203 Secure Hash Algorithm, 117 segurana de esquema de assinatura CMA, 156, 159 KMA, 156, 158 RMA, 156, 157 SHA (resumo criptogrco), veja Secure Hash Algorithm sigilo (em sistema de votao), 299 sigilo perfeito, 21 sistema completo de resduos, 328

Ve rs

Pr e

lim

in ar