Cifras Simétricas
Chave secreta única partilhada por 2 ou mais interlocutores
Permitem:
Confidencialidade para todos os conhecedores da chave
Autenticação de mensagens cifra por blocos
Quando se usam cifras por blocos
Vantagens
Desempenho (normalmente muito eficientes)
Desvantagens
N interlocutores , 2 a 2 secretamente N x (N 1)/2 chaves
Problemas
Distribuição de chaves
Contínuas
Aproximações usadas
Desenho de geradores pseudo-aleatórios seguros
Baseados em LFSRs
Baseados em cifras por blocos
Normalmente são síncronas
Não possuem sincronização inerente, mas obrigam a que emissor/recetor estejam sincronizados
Normalmente sem possibilidade de acesso aleatório rápido
Algoritmos mais comuns
Chacha20
Salsa20
A5/1 (US, Europe), A5/2 (GSM)
Por Blocos
Aproximações usadas
Blocos de grande dimensão , 128bits.
Difusão, confusão
Permutação , substituição , expansão , compressão
Redes de Feistel com múltiplas iterações
Ou redes de substituição permutação
Algoritmos mais comuns
DES (Data Enc. Stand.), D=64; K=56
AES (Adv. Enc. Stand., aka Rijndael ), D=128, K=128, 192, 256
Modos
Electronic Code Block (ECB)
Cifra direta de cada bloco: Ci = Ek(Tj)
Decifra direta de cada bloco: Ti = Dk(Ci)
Blocos são independentes
Problema:
se T1 = T2 então C1 = C2
Cipher Block Chaining (CBC)
Cifra de cada bloco Ti com feedback de Ci-1
Ci = Ek(Ti XOR Ci-1)
Decifra de cada bloco Ci com feedback de Ci-1
Ti = Dk(Ci) XOR Ci-1
Bloco inicial usa IV
Initialization Vector
Valor aleatório único
Pode estar em claro
Modos ECB/CBC necessitam de textos com dimensão múltipla da dimensão do bloco
Blocos incompletos (o último ) necessitam de tratamento diferenciado
Resultado é um bloco, pode ser maior que o original
Problemas de alinhamento
Alternativa: Excipiente (Padding)
Cifrar o último bloco de forma diferenciada
usar um processo semelhante a uma cifra contínua
Ciphertext Stealing
Troca ordem de cifra/decifra dos dois últimos blocos
Last updated