Segurança em Sistemas Computacionais
Introdução à Criptografia I
Prof. Esp. Gustavo Cardial
Motivação
Criptologia
Criptografia + Criptoanálise
● Criptografia (do grego, kryptós = escondido, gráphein = escrita)
– Ciência que estuda os métodos para cifrar ou
codificar uma mensagem de modo que só o destinatário legítimo seja capaz de interpretar seu conteúdo, sendo ilegível para terceiros.
● Criptoanálise
– Ciência que trata da decodificação ou quebra de
Objetivo da criptografia
Sendo um controle de segurança, a criptografia deve agir sobre pelo menos uma das metas da segurança da informação.
Quais?
● Confidencialidade
● Integridade
● Autenticação
Terminologia da criptografia
● encriptar = criptografar = cifrar = codificar
● decriptar = decriptografar = decifrar = decodificar
● cifra = algoritmos de encriptação e decriptação = sistema
criptográfico
● texto claro = plain text = texto não criptografado
● texto cifrado = ciphertext = texto criptografado
● O ato de cifrar consiste em transformar um texto normal em
Criptografia convencional em
linhas gerais
Um esquema de criptografia possui
● Texto claro
● Algoritmo de criptografia
● Chave secreta
● Texto cifrado
Algoritmo de criptografia
Função que realiza diversas substituições e transformações no texto claro
Entradas da função
● texto claro;
● chave secreta.
Representando
matematicamente...
C = E(K¹, X)
O texto cifrado C é produzido utilizando-se o algoritmo de criptografia E, que recebe o texto claro X e a chave K¹.
O receptor pode descobrir X
X = D(K², C)
O texto claro X é produzido utilizando-se o algoritmo de decriptografia D, que recebe o texto cifrado Y e a chave
Requisitos para uso seguro da
criptografia tradicional
● Algoritmo forte de criptografia: o oponente deverá
ser incapaz de decriptografar o texto cifrado ou descobrir a chave mesmo que conheça o algoritmo e possua diversos textos cifrados juntamente com o texto claro que produziu cada texto cifrado
● Proteger a chave de decriptografia
● Algoritmo público
– A segurança deve advir da força do algoritmo,
Características dos sistemas
criptográficos
● Tipo de operações usadas para transformar o texto claro em cifrado
– Dois princípios gerais: substituição e transposição, em geral vários estágios deles (existem
outros)
– Outro tipo de operação: operações matemáticas!
– Requisito fundamental: nenhuma informação seja perdida, ou seja, encriptação reversível
● O número de chaves usadas
– Criptografia simétrica - uma chave que encripta e decripta (sistema de chave secreta) – Criptografia assimétrica - duas chaves usadas, uma para encriptar, outra para decriptar
(sistema de chave pública)
– Obs: pensar nas chaves como bits!
● Modo como o texto é processado
– Cifra de bloco divide a entrada em blocos e processa um por vez, gerando uma saída
para cada entrada
– Cifra de fluxo processa os elementos continuamente, produzindo a saída de um
elemento por vez
Ataque à criptografia
Em geral, o objetivo de atacar um sistema de criptografia é
descobrir a chave, não apenas um único texto limpo
Duas técnicas principais
● Criptoanálise
– através de conhecimento de características do algoritmo e
características do texto limpo, ou sobre pares texto limpo/cifrado, tenta deduzir um texto claro específico ou a chave usada
– Ou pelo menos diminuir o número de chaves a serem
testadas num ataque de força bruta!
● Força bruta
– Tentar decriptar com todas as chaves possíveis, até obter
sucesso.
– “Na média, metade de todas as chaves possíveis precisam
Ataques à criptografia
● Criptoanálise
● Força-bruta
Defesa contra ataques de
criptoanálise
Escolher sistemas criptográficos computacionalmente seguros!
● Custo para quebrar cifra > valor da informação
● Tempo para quebrar cifra > tempo de vida útil da info
Ora, por que não escolher um sistema impossível de quebrar? Pois não há sistema criptográfico “perfeito” (ou melhor,
incondicionalmente seguro)
Um sistema criptográfico é incondicionalmente seguro se o texto cifrado gerado não contém informação suficiente para se determinar o texto limpo, não importando o quanto de texto cifrado esteja disponível e quanto poder computacional o atacante possui.
Defesa contra ataques de
força-bruta
Escolher chaves maiores!
Complexidade de um ataque de
força bruta
É o número de chaves que, se testadas, com certeza
Complexidade de um ataque de
força bruta
Exemplo
Complexidade de um ataque de
força bruta
Exemplo
Qual a complexidade de um ataque de força bruta, se utilizado um algoritmo criptográfico que usa chaves de 64 bits?
Complexidade de um ataque de
força bruta
Tipos de operação das cifras
simétricas
Como vimos, 2 tipos principais
● Substituições
● Transposições
Há algoritmos que usam apenas uma delas
(chamaremos de algoritmos clássicos), mas os
Substituições
Técnicas em que letras do texto claro são substituídas por outras letras ou por números/símbolos.
Transposições
Cifra de César
Considerado um “algoritmo clássico”, usado para ilustrar os primórdios da criptografia
É uma cifra de substituição, ou seja, utiliza apenas operações de substituição
O uso mais antigo e simples que se conhece de uma cifra de substituição, por Júlio César.
Representando a Cifra de César
formalmente...
Para cada letra p, em texto claro,
C = E(k, p) = (p + k) mod 26
obs: a mod b resto de a / b
Cifra de César Vs. Força-bruta
É fácil implementar um ataque de força bruta contra a Cifra de César?
Exemplo
Cifra de César Vs. Força-bruta
É fácil implementar um ataque de força bruta contra a Cifra de César?
Exemplo: “PHHW PH DIWHU WRJD SDUWB”
● Sim!
● Algoritmo conhecido
● 25 chaves possíveis
● Texto claro facilmente
Cifras monoalfabéticas de
substituição
Cifra de César → apenas 25 chaves → inseguro
Um aumento drástico no espaço de chaves pode ser alcançado permitindo uma substituição arbitrária
A esse novo tipo de cifra, damos o nome de cifra
Para a próxima aula
1) Quanto às cifras monoalfabéticas de substituição: o problema com força-bruta foi resolvido? Trata-se de uma cifra segura? É passível de criptoanálise?
2) Ler os 6 primeiros parágrafos do texto The Crypto Bomb Is Ticking (http://bit.ly/ZDj4rB) e responder às seguintes
questões…
a) Qual a diferença, apontada pelo texto, entre a criptografia e outras tecnologias?
b) Cite razões para esta diferença.
c) "Criptógrafos precisam ser futuristas". Justifique a afirmativa. Enviar para o e-mail do professor antes da próxima aula.
Cifras monoalfabéticas de
substituição
“O problema com força-bruta foi resolvido?”
Cifra de César → 25 chaves possíveis → bruteforce trivial
Cifras monoalfabéticas de substituição → quantas chaves possíveis?
Muitas!
26! = 26*25*24*...*3*2*1 → mais chaves do que uma cifra de 168 bits
Cifras monoalfabéticas de
substituição
“É passível de criptoanálise?”
Cifras monoalfabéticas de
substituição
“É passível de criptoanálise?”
Se conhecermos a língua utilizada no texto limpo, saberemos que certas letras e combinações de letras são mais comuns que outras.
Ex: em inglês, as letras E, T, A, O são comuns, enquanto Z, Q, X são incomuns. Os pares TH, ER, ON, AN também são comuns. E as repetições SS, EE, TT são as mais comuns.
Análise de frequência
Trata-se do estudo da frequência de letras ou grupos de letras em um texto cifrado. Este método é usado para quebrar cifras de substituição.
Curiosidade: técnica descrita em obras de ficção. “The Gold-Bug”, de Edgar Allan Poe, e “The Adventure of the Dancing Men” (Sherlock Holmes).
Conhecendo a língua do texto limpo, pode-se obter a
distribuição de frequência padrão de letras e pares
Exemplo: distribuição de
frequência padrão da língua
inglesa
Análise de frequência
Com a frequência padrão em mãos, monta-se uma tabela com a frequência relativa de letras (ou de seus pares) presentes no texto cifrado.
A ideia é que, quanto maior o texto cifrado, maior a probabilidade da frequência padrão “casar” com a frequência relativa.
Exemplo
Texto cifrado
Frequência relativa das letras no texto cifrado
Exemplo de substituição inicial provável
Letras do texto cifrado P, Z, S → {E, T, A, O, I}
Cifras polialfabéticas
Também são cifras clássicas
Possuem as seguintes características
● Um conjunto de regras de substituição
monoalfabéticas relacionadas é utilizada
● Uma chave que determina qual regra é escolhida
Cifra de Vigenère
Um tipo de cifra polialfabética, portanto possui:
● Um conjunto de regras de substituição
– 26 cifras de César, com deslocamentos de 0 a 25
● Uma chave
– Determina qual cifra de César será aplicada em
cada letra do texto claro
Cifra de Vigenère
Exemplo
Ataques à
Cifra de Vigenère
Força bruta continua inviável
Tal como nas cifras de substituição monoalfabéticas
E quanto à criptoanálise?
Ataques à
Cifra de Vigenère
Força bruta continua inviável
Tal como nas cifras de substituição monoalfabéticas
E quanto à criptoanálise?
É possível aplicar análise de frequência?
● Não.
● Não há mais uma relação 1:1 entre uma letra no
texto cifrado e uma letra no texto limpo
● Frequência de letras é ocultada!
Outras técnicas de criptoanálise possíveis?
Ataques à
Cifra de Vigenère
Criptoanálise
“[...] se duas sequências idênticas de letras de texto claro ocorrem a uma distância que seja um múltiplo inteiro do tamanho da palavra-chave, elas gerarão sequências de texto cifrado idênticas”
No exemplo acima, a distância entre o início dos textos que se repetem é “9”, múltiplo inteiro do tamanho da palavra-chave
Sejam n caracteres na chave (9, no exemplo acima), existem 9 cifras de César utilizadas no algoritmo.
Desta forma, pode-se escolher uma posição qualquer do texto cifrado, e então aplicar a análise de frequência a todas as letras que estão em
One-Time Pad (chave de uso
único)
Cifra conhecida também pela sigla OTP
É uma cifra de Viginére, mas com uma chave aleatória do tamanho do texto limpo. A chave deve ser usada para criptografar /
descriptografar uma única vez, e então é descartada. Se for
necessário criptografar mais dados, deve ser gerada nova chave.
Cifra inquebrável graças à aleatoriedade da chave
Chave aleatória → texto cifrado aleatório
Assim, não há padrões ou regularidades que o criptoanalista possa usar para atacar o texto cifrado. Se for aplicada força bruta,
One-Time Pad
Cifra inquebrável, então o campo de estudo da criptografia está resolvido e esgotado, certo?
Não! Problemas com a OTP
● Criar grandes chaves verdadeiramente aleatórias
continuamente consome muitos recursos
● Distribuir e proteger tantas chaves é um problema
gigante e complexo