Ocultação de informações para fins de segurança e inteligência é uma
tarefa de milhares de anos
Fatos marcantes: cifras de Júlio César e força-tarefa do U-boat
alemão
Avanços na cifração simétrica e introdução de cifra de chave pública
na década de 1970
Desafio constante para manter ou aumentar resistência com os avanços
dos sistemas computacionais
Confidencialidade com Criptografia Simétrica
Criptografia Simétrica
Também conhecido como criptografia convencional, de chave secreta ou
de chave única
Única alternativa antes da criptografia de chave pública (anos
70)
Alternativa ainda mais amplamente utilizada
Componentes: texto simples, algoritmo de cifração, chave secreta,
texto cifrado e algoritmo de decifração
Texto Simples ou Texto às
claras
É a mensagem ou dados originais alimentados ao algoritmo como
entrada.
Algoritmo de cifração
O algoritmo de cifração executa várias substituições e transformações
no texto às claras.
Criptografia Simétrica: Componentes
Chave secreta
A chave secreta é também fornecida como entrada para o algoritmo de
cifração. As substituições e transformações exatas realizadas pelo
algoritmo dependem da chave.
Texto cifrado
É a mensagem embaralhada produzida como saída. Ele depende do texto
às claras e da chave secreta. Para dada mensagem, duas chaves diferentes
produzirão dois textos cifrados diferentes.
Algoritmo de decifração
É, essencialmente, o algoritmo de cifração executado ao contrário.
Toma o texto cifrado e a chave secreta como entradas e produz o texto às
claras original.
Ilustração do Processo de Criptografia Simétrica
Criptografia Simétrica: Retirado do
livro-texto
Classificações/Dimensões
Tipo
de operações usadas para transformar texto às claras em texto
cifrado
Dois princípios gerais: substituição, na qual cada elemento no texto
às claras (bit, letra, grupo de bits ou letras) é mapeado para um outro
elemento, e transposição, na qual elementos no texto às claras são
rearranjados. O requisito fundamental é que nenhuma informação seja
perdida (operações reversíveis). Tipicamente, múltiplos estágios.
Número de chaves
Remetente e o destinatário com mesma chave: simétrico, de chave
única, de chave secreta ou de cifração convencional. Caso contrário:
assimétrico, de duas chaves ou cifração de chave pública.
Modo como o texto às
claras é processado
Uma cifra de bloco processa um único bloco de elementos da entrada
por vez, produzindo um bloco de saída para cada bloco de entrada. Uma
cifra de fluxo processa elementos de entrada continuamente, produzindo
um elemento de saída por vez.
Requisitos da Criptografia Simétrica
Cifração Forte
No mínimo, gostaríamos que o algoritmo fosse tal que um oponente que
conheça o algoritmo e tenha acesso a um ou mais textos cifrados não
seria capaz de decifrar o texto cifrado ou adivinhar a chave. Esse
requisito é usualmente enunciado de uma forma mais forte: o oponente
deve ser incapaz de decifrar o texto cifrado ou descobrir a chave mesmo
que esteja de posse de vários textos cifrados juntamente com o texto às
claras que produziu cada texto cifrado.
Cópias da Chave Secreta
Remetente e destinatário devem obter cópias da chave secreta de
maneira segura e mantê-las em segurança. Se alguém conseguir descobrir a
chave e conhecer o algoritmo, toda comunicação que usar essa chave pode
ser lida.
Métodos de Ataque
Existem dois métodos de ataque: criptoanálise ou
força-bruta
Criptoanálise
Ataques criptoanalíticos recorrem à natureza do algoritmo
possivelmente algum conhecimento das características gerais do texto
às claras
possivelmente algumas amostras de pares de texto às claras e texto
cifrado correspondente
explora as características do algoritmo para tentar deduzir um texto
às claras específico ou deduzir a chave que está sendo usada
Resultado: efeito é catastrófico
todas as mensagens futuras e
passadas cifradas com aquela chave são
comprometidas
Ataques Criptoanalíticos (Parte 1/2)
Apenas algoritmos fracos falham em ataque somente texto
cifrado
geralmente projetados para resistir a texto às claras
conhecido
somente texto cifrado
Menos informação, mais difícil de ocorrer.
Conhece Algoritmo de Cifração (assumimos isso em todos os casos) e
também conhece o texto cifrado a ser decodificado
texto às claras conhecido
Adiciona alguns pares às claras/cifrados
texto às claras escolhido
O criptoanalista consegue escolher pares às claras/cifrados
Ataques Criptoanalíticos (Parte 2/2)
texto cifrado escolhido
O criptoanalista consegue escolher texto cifrado-alvo.
texto escolhido
Mais informação, mais fácil (embora mais raro de ocorrer).
O criptoanalista consegue escolher todo o esquema, exceto chave
privada.
Ataque de Força Bruta
O segundo método, conhecido como ataque de força bruta, é tentar
todas as chaves possíveis em uma amostra de texto cifrado até obter
tradução que leve a um texto às claras inteligível
Deve ser tentado um valor proporcional ao quantitativo de todas as
chaves possíveis para conseguir sucesso (tipicamente metade, em
média)
nesse nível de desempenho, uma chave de 56 bits não pode mais ser
considerada segura em termos computacionais
Retirado do livro-texto
ALGORITMOS COMPUTACIONALMENTE SEGUROS
A criptografia é computacionalmente segura se:
Custo de quebrar cifra excede o valor da informação
Tempo necessário para quebrar a cifra excede a vida útil da
informação
Geralmente muito difícil estimar a quantidade de esforço necessária
para quebrar
Pode-se estimar tempo/custo de um ataque de força bruta
Algoritmos simétricos de cifração de bloco
Os algoritmos de cifração simétricos mais comumente usados são
cifras de bloco
Uma cifra de bloco processa o texto às claras fornecido como entrada
em blocos de tamanho fixo e produz um bloco de texto cifrado de tamanho
igual para cada bloco de texto às claras
O algoritmo processa cadeias mais longas de texto às claras como uma
série de blocos de tamanho fixo
Os algoritmos simétricos mais importantes, todos eles cifra de
blocos, são o Data Encryption Standard (DES), o Triple DES (DES triplo)
e o Advanced Encryption Standard (AES).
Retirado do livro-texto
Cifra de Feistel
A Cifra de Feistel ou Rede de Feistel (também chamada de
“Luby–Rackoff block cipher” que a criptoanalisaram) é utilizada em
projetos bem-sucedidos de criptografia simétrica, como o DES
Criada por Horst Feistel da IBM em 1973
Entrada de cifração é um bloco de texto às claras de
2w
bits de comprimento e uma chave
K
Bloco de texto às claras é dividido em duas metades, L0 e R0
Duas metades passam por
n
rodadas de processamento
Cada rodada
i
utiliza dados
Li−1
e
Ri−1
Chaves
Ki
são derivadas da chave
K,
para cada rodada
A cada rodada, dados dos lados esquerdo e direito (L e R) se
invertem
Decifração usa mesmo algoritmo, porém chaves
Ki
em ordem inversa
Função F não precisa ser inversível, mas a rede sempre será
Blocos de tamanhos maiores significam maior segurança (se todos os
outros parâmetros/aspectos forem iguais), mas velocidade de
cifração/decifração reduzida. Um tamanho de bloco de 128 bits é um
compromisso razoável quase universal em projetos recentes de cifra de
bloco.
Tamanho da chave
Chaves de tamanhos maiores significam maior segurança, mas podem
reduzir a velocidade de cifração/decifração. O comprimento de chave mais
comum em algoritmos modernos é 128 bits.
Número de rodadas
A essência de uma cifra de bloco simétrica é que uma única rodada
oferece segurança inadequada, mas várias rodadas oferecem segurança
crescente. Um número típico é 16 rodadas.
Parâmetros da Cifra de Feistel (Parte 2/2)
Algoritmo de geração de
subchaves
Maior complexidade nesse algoritmo deve resultar em maior dificuldade
de criptoanálise.
Função de rodada
Novamente, maior complexidade geralmente significa maior resistência
à criptoanálise.
Considerações de Projeto de uma Cifra de Feistel
Software de
cifração/decifração rápida
Em muitos casos, mecanismos de cifração são embutidos em aplicações
ou funções utilitárias de modo tal que não é possível a implementação em
hardware. Dessa maneira, a velocidade de execução do algoritmo torna-se
uma preocupação.
Facilidade de análise
Embora queiramos que o nosso algoritmo seja o mais difícil possível
de criptoanalisar, há grande benefício se o algoritmo for fácil de
analisar. Isto é, se o algoritmo puder ser explicado com concisão e
clareza, é mais fácil analisá-lo em relação a vulnerabilidades
criptoanalíticas e, por conseguinte, desenvolver um nível mais alto de
garantias em relação a sua força. O DES, por exemplo, não tem
funcionalidade fácil de analisar.
Data encryption standard (DES) - História
O esquema de cifração mais amplamente usado é baseado no Data
Encryption Standard (DES), adotado em 1977 pelo National Bureau of
Standards (Escritório Nacional de Padrões), agora National Institute of
Standards and Technology (NIST — Instituto Nacional de Padrões e
Tecnologia)
Publicado no Federal Information Processing Standard 46 (FIPS PUB
46)
O algoritmo em si é conhecido como Data Encryption Algorithm (DEA –
algoritmo de cifração de dados)
O DES toma como entrada um bloco de texto às claras de 64 bits e uma
chave de 56 bits, para produzir um bloco de texto cifrado de 64
bits.
NIST retira em 2005 o FIPS 46-3:
https://pt.wikipedia.org/wiki/Data_Encryption_Standard
Em 2007, máquina paralela de FPGA da Universidade de Bochum e Kiel,
Alemanha, viola o DES em aproximadamente seis dias e meio por um custo
de $10,000 em hardware
Funcionamento do DES
O DES funciona como uma Cifra de Feistel
São utilizados n=16 rodadas (próximo slide)
O bloco tem 64 bits (então meio bloco tem 32 bits)
A chave K tem 64 bits, onde apenas 56 bits são efetivamente
utilizados
O mesmo algoritmo cifra e decifra, apenas bastando inverter a ordem
das subchaves
A função F tem quatro fases (próximos slides): Expansion
(E-Expansion) (32 bits viram 48 bits), Key mixing, Substitution
(S-Boxes), Permutation (P-Box) (de volta para 32 bits)
Conceito de “confusion and diffusion” de Claude Shannon em 1940, na
E-expansion e S-Boxes/P-Box dão garantia de segurança
Key Schedule (próximos slides) divide os 56 bits da chave em duas
partes de 28 bits (fase PC-1), depois rotacionados individualmente, e
agregados novamente (fase PC-2) para gerar subchave de 48 bits
Preocupações com a resistência do DES caem em duas categorias:
preocupações com o algoritmo em si e preocupações com a utilização de
uma chave de 56 bits
A primeira preocupação refere-se à possibilidade de uma
criptoanálise pela exploração das características do algoritmo DES
Ao longo dos anos houve numerosas tentativas de encontrar e explorar
fraquezas no algoritmo, o que transformou o DES no mais estudado
algoritmo de cifração existente.
Apesar das numerosas abordagens, até agora ninguém relatou fraqueza
fatal no DES.
Uma preocupação mais séria é o comprimento da chave
Com comprimento de chave de 56 bits, há
256
chaves possíveis, o que equivale a aproximadamente
7,2×1016
chaves.
Assim, à primeira vista, um ataque de força bruta parece não ser
prático
O DES provou-se definitivamente inseguro em julho de 1998, quando a
Electronic Frontier Foundation (EFF) anunciou que tinha decifrado uma
cifração DES usando uma máquina especializada denominada “decifradora
DES” (DES cracker) construída por menos de USD 250k
DES - Estratégias de Ataque e Contra-Ataque
Há mais por trás de um ataque de busca de chave do que simplesmente
executar todas as chaves possíveis
A menos que um texto às claras seja fornecido, o analista deve
reconhecer o texto às claras como sendo de fato um texto às claras
Se a mensagem for composta apenas por texto às claras em português,
o resultado surgirá facilmente, se bem que a tarefa de reconhecer a
língua portuguesa terá de ser automatizada
Se a mensagem de texto foi comprimida antes da cifração, o
reconhecimento será mais difícil
Mensagem como dado mais geral (arquivo numérico), e se esse arquivo
foi comprimido: ainda mais difícil de automatizar
Assim, para suplementar a abordagem de força bruta, é preciso algum
grau de conhecimento sobre o texto às claras esperado e alguns meios de
distinguir automaticamente o texto às claras de um texto qualquer
Solução: se a única forma de ataque que poderia ser
feita a um algoritmo de cifração for a força bruta, o modo de
contra-atacá-lo é óbvio: usar chaves mais longas.
Aumento exponencial do tempo
Retirado do livro-texto
Triplo DES - 3DES
A vida do DES foi estendida pela utilização do triplo DES (DES
triplo ou 3DES)
repetir o algoritmo DES básico três vezes, usando duas ou três
chaves únicas, para obter um tamanho de chave de 112 ou 168 bits
O triplo DES (3DES) foi padronizado pela primeira vez para uso em
aplicações financeiras no padrão ANSI X9.17 em 1985
O 3DES foi incorporado como parte do Data Encryption Standard em
1999, com a publicação do FIPS PUB 46- 3
3DES - Vantagens e Desvantagens
O 3DES tem dois atrativos que garantem sua utilização ampla nos
próximos anos
A primeira é que, com o seu comprimento de chave de 168 bits, ele
supera a vulnerabilidade do DES ao ataque de força bruta
A segunda é que o algoritmo de cifração subjacente ao 3DES é o mesmo
que no DES
Algoritmo submetido a mais escrutínio do que qualquer outro
algoritmo de cifração por um período de tempo mais longo e nenhum ataque
criptoanalítico efetivo baseado no algoritmo, a não ser o de força
bruta, foi encontrado
Alto nível de confiança que 3DES é muito resistente à
criptoanálise
Usa três chaves e três execuções DES:
C=E(K3,D(K2,E(K1,P)))
Uso de decifração no segundo estágio dá compatibilidade com usuários
originais de DES
A principal desvantagem do 3DES é que o algoritmo é relativamente
lento em software e tem blocos muito pequenos
Blocos de apenas 64 bits, onde 56 bits são usados (8 para
paridade)
Advanced encryption standard (AES) - História
3DES não é um candidato razoável para utilização a longo prazo
Como substituto, o NIST publicou em 1997 uma chamada de propostas
para um novo Advanced Encryption Standard (AES)
Cifra de bloco simétrica com comprimento de bloco de 128 bits e
suporte para comprimentos de chaves de 128, 192 e 256 bits
Critérios de avaliação incluíam: segurança, eficiência
computacional, requisitos de memória, adequabilidade de hardware e
software e flexibilidade
Primeira rodada de avaliação, 15 algoritmos propostos foram
aceitos
Segunda rodada reduziu esse número a cinco algoritmos
O NIST concluiu seu processo de avaliação e publicou um padrão final
(FIPS PUB 197) em novembro de 2001 e selecionou o algoritmo de Rijndael
como o algoritmo AES proposto: autores belgas Vincent Rijmen e Joan
Daemen
Agora esse algoritmo está amplamente disponível em produtos
comerciais
Ideia Geral do AES
No AES, não é utilizada uma Rede de Feistel
Implementação complexa com uso de permutações e substituições
Entrada para algoritmos de cifração e decifração é um bloco de 128
bits
No FIPS PUB 197, bloco representado por matriz quadrada de bytes
O bloco é copiado para o vetor Estado, que é
modificado a cada estágio de cifração ou decifração
Após o estágio final, Estado é copiado para uma
matriz de saída
Chave de 128 bits representada como matriz quadrada de bytes
chave é expandida para um vetor de palavras de escalonamento de
chave
cada palavra tem 4 bytes
escalonamento total de chaves tem 44 palavras para a chave de 128
bits
A ordenação dos bytes dentro de uma matriz é feita por colunas
Primeiros 4 bytes de uma entrada de texto às claras de 128 bits
passada para a cifra criptográfica ocupam a primeira coluna da matriz
entrada
segundos 4 bytes ocupam a segunda coluna, e assim por diante
Primeiros 4 bytes da chave expandida, que formam uma palavra, ocupam
a primeira coluna da matriz w
Estrutura Geral do AES (não usa Feistel)
Slides Kowada
Estrutura Geral da Rodada do AES
Slides Kowada
Discussão
Breve discussão
Segurança para textos
grandes
Como cifrar textos grandes usando criptografia simétrica de poucos
bits?
Veja próximo módulo para entender melhor!
Leia mais
Livro:
“Segurança de Computadores - Princípios e Práticas - 2012” -
Stallings, William; Brown, Lawrie & Lawrie Brown & Mick Bauer
& Michael Howard
Em Português do Brasil, CAMPUS - GRUPO ELSEVIER, 2ª Ed. 2014
Veja Capítulo 7, todas seções e finaliza o capítulo 7.
Agradecimentos
Pessoas
Em especial, agradeço aos colegas que elaboraram bons materiais, como
o prof. Raphael Machado, Kowada e Viterbo cujos conceitos formam o cerne
desses slides.
Estendo os agradecimentos aos demais colegas que colaboraram com a
elaboração do material do curso de Pesquisa
Operacional, que abriu caminho para verificação prática dessa
tecnologia de slides.
Software
Esse material de curso só é possível graças aos inúmeros projetos de
código-aberto que são necessários a ele, incluindo:
pandoc
LaTeX
GNU/Linux
git
markdown-preview-enhanced (github)
visual studio code
atom
revealjs
groomit-mpx (screen drawing tool)
xournal (screen drawing tool)
…
Empresas
Agradecimento especial a empresas que suportam projetos livres
envolvidos nesse curso:
github
gitlab
microsoft
google
…
Reprodução do material
Esses slides foram escritos utilizando pandoc, segundo o tutorial
ilectures:
https://igormcoelho.github.io/ilectures-pandoc/
Exceto expressamente mencionado (com as devidas ressalvas ao material
cedido por colegas), a licença será Creative Commons.
Licença: CC-BY 4.0 2020
Igor Machado Coelho
This Slide Is Intentionally Blank (for goomit-mpx)