Capítulo 1 — Raciocínio matemático
Mapa da aula
Aula 01 publicada. Mapa, exemplo, EX001.
flowchart TD
N0["1.1 O caso e as afirmações precisas"]
N1["1.2 O XOR e sua álgebra"]
N2["Laboratório — Reutilização do one-time pad"]
N3["1.3 Por que a reutilização falha"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX001"]
Desenho lógico
flowchart LR
N0["1.1 O caso e as afirmações precisas"]
N1["1.2 O XOR e sua álgebra"]
N2["Laboratório — Reutilização do one-time pad"]
N3["1.3 Por que a reutilização falha"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX001"]
[1.1 O caso e as afirmações precisas]
|
v
[1.2 O XOR e sua álgebra]
|
v
[Laboratório — Reutilização do one-time pad]
|
v
[1.3 Por que a reutilização falha]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX001]
Objetivos de aprendizagem
Você vai (1) raciocinar com precisão sobre definições e afirmações em criptografia; (2) usar a operação XOR e suas propriedades algébricas; (3) provar por que reutilizar a chave de um one-time pad falha.
1.1 O caso e as afirmações precisas
Priya Raman é estudante do primeiro ano de bacharelado na fictícia Ashford University. Ao longo de quatro anos, ela vai trabalhar com o fictício Tidewell Public Library Consortium, doze bibliotecas que compartilham um portal de leitores, um serviço de e-books e sistemas internos, orientada pelo professor Dr. Tomás Echeverría e pela líder de TI do consórcio, Grace Okafor. Todos os leitores, chaves e números aqui são sintéticos. Sua primeira lição é que a criptografia é uma disciplina matemática: uma afirmação como "esta cifra é segura" não significa nada até que a segurança seja definida, o atacante seja descrito e a afirmação seja provada ou reduzida a uma premissa bem estudada, como insistem Katz e Lindell.
1.2 O XOR e sua álgebra
O ou exclusivo, escrito XOR, compara dois bits e devolve 1 quando eles diferem. Ele tem propriedades que Priya prova a partir da tabela-verdade: x XOR x = 0, x XOR 0 = x, e o XOR é associativo e comutativo. Isso torna o XOR reversível: se c = p XOR k, então c XOR k = p. O one-time pad cifra fazendo o XOR de uma mensagem com uma chave verdadeiramente aleatória do mesmo tamanho, usada uma única vez, e Shannon provou que ele tem sigilo perfeito nessas condições. Provar com cuidado pequenos fatos algébricos é um treino para ler as provas das disciplinas posteriores.
Laboratório — Reutilização do one-time pad
"""Why a one-time pad must never be reused: XOR of two ciphertexts cancels the key (toy data)."""
import secrets
def xor(a, b): return bytes(x ^ y for x, y in zip(a, b))
def main():
p1, p2 = b"RENEW BOOK 0417", b"FINE PAID 0938"
key = bytes.fromhex("8f1e2a77c03b5d9e4412ab6f0e7c31") # fixed demo pad, used twice on purpose
c1, c2 = xor(p1, key), xor(p2, key)
print("c1 xor c2 == p1 xor p2:", xor(c1, c2) == xor(p1, p2))
guess = xor(xor(c1, c2), b"RENEW BOOK 0417")
print("knowing p1 reveals p2:", guess.decode())
fresh = secrets.token_bytes(len(p1))
print("fresh pad length matches message:", len(fresh) == len(p1))
if __name__ == "__main__":
main()
Execute com python3 lab_xor.py. Saída verificada:
c1 xor c2 == p1 xor p2: True
knowing p1 reveals p2: FINE PAID 0938
fresh pad length matches message: True
1.3 Por que a reutilização falha
O laboratório cifra de propósito duas mensagens de leitores com o mesmo pad. Fazer o XOR dos dois textos cifrados cancela a chave, já que (p1 XOR k) XOR (p2 XOR k) = p1 XOR p2, o que o laboratório confirma como True. Se um atacante conhece ou adivinha uma das mensagens, como um aviso padrão "RENEW BOOK", a outra aparece em claro: FINE PAID 0938. A prova cabe em três linhas, e a lição dura uma carreira: um esquema perfeito nas suas condições pode falhar completamente quando uma condição, aqui "usar uma vez", é violada. O pad novo, gerado com o módulo secrets, mostra como as chaves devem ser geradas, embora os sistemas reais usem cifras padronizadas em vez de pads.
Exemplo resolvido
Priya prova x XOR x = 0 a partir da tabela-verdade, deduz c1 XOR c2 = p1 XOR p2 e usa o laboratório para recuperar uma segunda mensagem a partir de uma primeira mensagem conhecida quando um pad é reutilizado.
Caso sintético. A Tidewell, seus leitores e suas mensagens são inventados.
Erros e limites
O sigilo perfeito só vale para chaves verdadeiramente aleatórias, nunca reutilizadas e do tamanho da mensagem; sistemas práticos usam AES-GCM ou algo semelhante, de bibliotecas avaliadas, e não pads. Demonstrações de brinquedo não são projetos.
Exercícios
-
EX001 — Definir seguro. Por que "esta cifra é segura" não significa nada por si só? Rubrica: 3 = a segurança precisa ser definida com um modelo de atacante e provada ou reduzida a uma premissa;; 2 = precisa de definição;; 1 = tem significado;; 0 = nenhuma.
-
EX002 — Identidades do XOR. Enuncie duas identidades do XOR que fazem a decifração funcionar. Rubrica: 3 = x XOR x = 0 e x XOR 0 = x (com a associatividade);; 2 = uma;; 1 = errada;; 0 = nenhuma.
-
EX003 — Resultado da reutilização do pad. O que o laboratório recuperou, e por quê? Rubrica: 3 = FINE PAID 0938, porque c1 XOR c2 = p1 XOR p2 e p1 era conhecida;; 2 = a mensagem;; 1 = vago;; 0 = nenhuma.
Síntese
A criptografia começa com definições e provas precisas; o one-time pad mostra como um esquema perfeito desmorona quando uma condição é violada.
Continue estudando — aula 01 (capítulo 01 de 40)
← Início do curso · Índice das aulas · Capítulo 02 →
Continue para a próxima aula já escrita.