Modos de cifra e protocolos

ECB, CBC, CTR, AEAD, repetição e acordo de chaves com Diffie-Hellman.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Modos de cifra

AES transforma blocos de 16 bytes; o modo define como proteger uma mensagem. XOR satisfaz x⊕x=0x\oplus x=0 e x⊕0=xx\oplus0=x.

ModoRegraRequisito e limite
ECBCi=EK(Pi)C_i=E_K(P_i)Blocos iguais sob a mesma chave dão cifras iguais, revelando padrões.
CBCCi=EK(Pi⊕Ci−1)C_i=E_K(P_i\oplus C_{i-1}), C0=IVC_0=IVIV imprevisível e blocos completos; não autentica sozinho.
CTRCi=Pi⊕EK(contadori)C_i=P_i\oplus E_K(\mathrm{contador}_i)Nenhum bloco de contador pode repetir sob a mesma chave; não autentica sozinho.

PiP_i é um bloco em claro, CiC_i a cifra, KK a chave e EKE_K a cifra de bloco. Em CBC, decifra com Pi=DK(Ci)⊕Ci−1P_i=D_K(C_i)\oplus C_{i-1}: o primeiro usa IV, os seguintes a cifra anterior.

PKCS#7, com blocos de 16 bytes, acrescenta kk bytes de valor kk: 14 bytes recebem 02 02; 16 recebem dezasseis bytes de valor 16. Ao remover, valida 1≤k≤161\le k\le16 e todos os últimos kk bytes. Preenchimento não autentica. CTR usa só os bytes necessários, sem este preenchimento.

Em CTR sem autenticação, aplicar máscara Δ\Delta à cifra aplica a mesma máscara ao texto em claro. Alterar dois bits muda esses dois bits, sem propagação aos outros blocos. Confidencialidade não garante integridade.

Reutilização e autenticidade

Se C1=P1⊕SC_1=P_1\oplus S e C2=P2⊕SC_2=P_2\oplus S:

C1⊕C2=P1⊕P2.C_1\oplus C_2=P_1\oplus P_2.

Conhecendo P1P_1, recupera-se:

P2=C2⊕C1⊕P1.P_2=C_2\oplus C_1\oplus P_1.

Conhecer uma mensagem e as duas cifras permite recuperar a outra. Em CTR, inícios diferentes não bastam se os intervalos se sobrepõem, como 10,11,12,13 e 12,13,14; impede também repetição por overflow.

O one-time pad só tem confidencialidade perfeita com chave uniforme, secreta, tão longa como a mensagem e usada uma única vez.

AEAD protege confidencialidade do conteúdo e integridade do conteúdo e dados associados. Estes últimos ficam visíveis. Usa construções analisadas, como AES-GCM ou ChaCha20-Poly1305, e cumpre os requisitos de nonce. Em GCM, repeti-lo com a mesma chave compromete segurança. Rejeita etiquetas inválidas antes de interpretar o conteúdo.

Contra replay, autentica sequência ou desafio e mantém estado para rejeitar repetições, tolerando a reordenação prevista pelo protocolo. A unicidade e o efeito devem ficar ligados atomicamente.

Receção da mesma mensagemEtiquetaEstado do idDecisão
PrimeiraVálidaNovoExecutar e registar uma vez
RepetiçãoVálidaUsadoNão executar novamente

Cifra e MAC

  • Encrypt-then-MAC autentica a cifra: c=EKE(m)c=E_{K_E}(m) e t=MKM(c)t=M_{K_M}(c). Verifica antes de decifrar.
  • MAC-then-Encrypt cifra mensagem e etiqueta: t=MKM(m)t=M_{K_M}(m) e c=EKE(m∥t)c=E_{K_E}(m\Vert t). Precisa de decifrar para obter a etiqueta.
  • Encrypt-and-MAC envia cifra e MAC do texto em claro separadamente.

Segurança exige construção analisada, chaves e contexto apropriados. Enviar só MAC não envia a mensagem; divulgar a chave MAC permite criar etiquetas falsas.

Diffie-Hellman e autenticação

Com parâmetros públicos p,gp,g, Ana escolhe expoente privado aa e envia A=ga mod pA=g^a\bmod p; Bruno escolhe bb e envia B=gb mod pB=g^b\bmod p. Ambos obtêm:

Ba≡Ab≡gab(modp).B^a\equiv A^b\equiv g^{ab}\pmod p.

Exemplo inseguro de estudo: p=23,g=5,a=6,b=15p=23,g=5,a=6,b=15 dá A=8,B=19A=8,B=19 e segredo 2. Um protocolo real valida parâmetros/valores e deriva chaves adequadas a partir do segredo.

DH sozinho não prova a identidade. Autentica a troca e o seu contexto com assinaturas/certificados ou segredo prévio, conforme um protocolo analisado.

Chaves efémeras corretamente usadas e apagadas podem dar sigilo futuro: roubar mais tarde a chave de autenticação duradoura não revela sessões antigas gravadas. Não protege o segredo efémero da própria sessão se este foi comprometido.

Seguir CBC e DH.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.