




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Sobre Criptografia
Tipologia: Notas de estudo
1 / 470
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Sumário
Notação
||x|| tamanho da representação binária de x, precedida pelo bit 1 a||b concatenação das sequências a e b [a]n a classe de equivalência a (mod n) 〈X〉 o grupo gerado por X A× o número A está representado na base 16 (hexadecimal) A ≈ B As distribuições das variáveis aleatóreas A e B são indistinguíveis x ≈ y x e y são números, e x é aproximação de y Π uma construção criptográca (criptossistema, função de hashing etc) σ assinatura Zn grupo multiplicativo de inteiros módulo n A o adversário D o desaador T um teste (algoritmo que distingue duas distribuições) c texto encriptado C um código corretor de erros DHg (a, b) problema Die-Hellman g normalmente, o gerador de um grupo k chave L um reticulado m mensagem em claro p normalmente um número primo p(·) um polinômio q normalmente um número primo; às vezes uma quantidade t código de autenticação de mensagem m(x) polinômio irredutível que dene o corpo de Rijndael c(x) x^4 + 1 (para multiplicação de colunas no AES) lsb (x) bit menos signicativo de x log(x) logaritmo de x na base 2 logg h logaritmo discreto de h na base g msb (x) bit mais signicativo de x negl(·) função desprezível retorne 〈a, b〉 o algoritmo ou função retornará dois valores, a e b rotlk(a) rotação dos bits de a, k posições à esquerda a ← b b é computado e armazenado em a a ∈R S a é escolhido uniformemente ao acaso do conjunto S 〈a, b〉 ← f (· · · ) a função f retorna dois valores a ∧ b e lógico de a e b a ∨ b ou lógico de a e b a ⊕ b ou exclusivo (XOR) de a com b (adição módulo 2) a não lógico (negação do bit a) perm_col (M ) conjunto de todas as matrizes obtidas permutando colunas de M O ponto no innito, adicionado ao R^2 QRn conjunto de resíduos quadráticos módulo n Jn conjunto de números em Zn com símbolo de Jacobi igual a +
A primeira parte aborda os problemas básicos da Criptograa, expondo cons- truções clássicas. São dadas denições precisas para cada conceito, e há seções em cada Capítulo dedicadas a denições e demonstrações de segurança com razoável rigor.
Capítulo 1
Introdução e visão geral
A Criptograa abrange desde a concepção até a implementação de sistemas de computação relacionados a diversos aspectos de segurança. As seções seguintes dão uma visão geral dos temas que abordaremos. Em alguns casos há exemplos concretos.
1.1 Encriptação simétrica
O problema mais conhecido abordado pela Criptograa é o de modicar mensa- gens para que quem indecifráveis. Decifrar (ou decriptar) a mensagem só deve ser possível para quem tenha a posse de um segredo. Soluções para este pro- blema são chamadas de criptossistemas simétricos, e o segredo é normalmente chamado de chave. Todo criptossistema simétrico oferece ao usuário duas funções, cada uma com dois argumentos: uma para cifrar e outra para decifrar. Convencionaremos usar Enc(m, k) para a função que cifra e Dec(m, k) para a função que decifra m com a chave k. Evidentemente, é necessário que Dec(Enc(m, k), k) = m para todos m e k. A função que transforma a mensagem (que chamamos de texto claro) em algo irreconhecível (que chamamos de texto cifrado) deve necessariamente ser difícil de inverter sem o argumento k, de outra forma qualquer um com acesso à mensagem poderia facilmente decifrá-la. Ao algoritmo usado para calcular as funções Enc e Dec damos o nome de cifra. É comum classicar cifras em dois tipos:
1 0 0 1 0 1 1 1 0 1
0 0 1 1 1 0 1 0 1 1
1 0 1 0 1 1 0 1 1 0
mensagem
bits aleatóreos
texto cifrado
A semente do gerador aleatóreo é a senha que permite encriptar e decriptar mensagens. Em uma cifra de uxo usando ou exclusivo, Enc e Dec são idênticas;
texto cifrado
0 1 1 0 1 1 1 0 1 1 0 0 0 1 0
f f f
1 1 0 1 1 0 0 0 1 1^ 1 1 1 1 0
A função f (k, m) na gura aceita dois parâmetros: um é a chave secreta usada para encriptar a mensagem e outra é a mensagem; f −^1 (k, c) deter- mina a mensagem a partir do texto cifrado e da chave. É importante que f −^1 seja difícil de calcular sem a chave k (deniremos com mais clareza esta diculdade mais adiante).
1.2 Encriptação assimétrica
Um problema dos esquemas simétricos de encriptação é que cada par de usuários que queira se comunicar em sigilo precisa compartilhar uma chave secreta. Se Alice e Bob estão sicamente distantes e não podem fazê-lo de maneira simples, um esquema simétrico não é útil. Os criptossistemas assimétricos permitem que diferentes usuários se comuniquem em sigilo sem este problema. Em um criptossistema assimétrico, tanto Alice como Bob tem duas chaves uma pública (conhecida de todos, possivelmente divulgada na Internet) e outra privada.
mensagem secreta! ↓ SHA- ↓ fbb5a6d34f05b708e780fd2ab674845b5d34162066d976a819bf02c02e444a
Funções de hashing são diretamente úteis em diversas situações onde quere- mos garantir a integridade de dados, e também na construção de outras ferra- mentas criptográcas. Suponha que queiramos garantir a integridade de um arquivo ou mensagem, evitando que alguém mais o modique (um vírus ou um intruso, por exem- plo). Poderíamos computar resumos (hashes) destes arquivos (o resumo de um arquivo tem tamanho muito menor que o próprio arquivo) e armazená-los em uma tabela. No entanto, nada impede que o intruso recalcule os hashes e os modique também na tabela, tornando inócua nossa medida de precaução. 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 não terá como modicá-la (ele pode recalcular o resumo do arquivo modicado, mas não conhece a chave secreta e portanto não poderá calcular o hash correto). A este tipo de resumo damos o nome de código de autenticação de mensagem (ou MAC Message Authentication Code). Funções de hashing também podem ser usadas para construir geradores pseu- doaleatóreos, para derivar novas chaves de uma única chave-mestra e construir cifras de bloco
1.4 Assinatura digital
Os esquemas de encriptação assimétricos garantem sigilo na comunicação entre duas partes, mas chaves públicas podem ser usadas também para garantir o não- repúdio (ou irretratabilidade) de documentos: se Alice usa sua chave privada para criar um documento, qualquer um de que tenha sua chave pública poderá vericar que realmente Alice publicou aquele documento (e Alice não poderá posteriormente negar que o fez).
É importante observar que um MAC (código de autenticação de mensagem, mencionado na seção sobre funções de hashing) não dá garantia de não-repúdio, uma vez a chave secreta incluída antes do cálculo de hash não está unicamente associada a alguma entidade da mesma forma que um par de chaves pública/- privada.
1.5 Estabelecimento de chaves
Criptossistemas assimétricos normalmente são mais lentos que os simétricos. Assim, quando Alice e Bob quiserem se comunicar, idealmente usariam inicial- mente um criptossistema assimétrico apenas para poder em seguida estabelecer uma chave simétrica para que possam trocar informações.
1.6 Chaves públicas conáveis
Há um problema com os esquemas de encriptação assimétricos: quando a chave pública de Alice é oferecida a Bob, como Bob pode ter certeza de que foi real- mente Alice que a enviou? Há diferentes maneiras de abordar este problema. Podemos dar a uma entidade a autoridade para assinar chaves públicas. Desta forma quando Alice envia sua chave pública, envia também uma declaração da autoridade central de que aquela chave é de Alice. Outra maneira de lidar com este problema é construir uma rede de conança, onde cada pessoa assina a chave pública de outras, dando sua fé de que aquela chave realmente pertence àquela pessoa. Por último, há também a Criptograa baseada em identidades.
1.7 Protocolos
Além dos problemas já descritos, a Criptograa moderna trata também de pro- blemas de interação entre partes onde não necessariamente há conança mútua.