# Cifras Clássicas

## 📜 Visão Geral

As **cifras clássicas** representam os primeiros métodos documentados de criptografia, desenvolvidos antes do advento da computação eletrônica. Foram utilizadas por imperadores, generais, diplomatas e espiões para proteger informações sensíveis — desde mensagens militares na Roma Antiga até comunicações críticas na Segunda Guerra Mundial.

Embora hoje sejam consideradas **frágeis** do ponto de vista criptográfico, o estudo desses algoritmos é fundamental para:

* Compreender os **princípios básicos** de cifração/decifração
* Desenvolver **intuição sobre padrões** e vulnerabilidades
* Construir uma base sólida para o estudo de criptografia moderna

> *"Conhecer o passado da criptografia é essencial para entender o presente e construir o futuro da segurança."*

***

## 📋 Tabela de Cifras

| Cifra                 | Época     | Tipo                               | Força                           | Uso Histórico                      |
| --------------------- | --------- | ---------------------------------- | ------------------------------- | ---------------------------------- |
| **Cifra de César**    | 58 a.C.   | Substituição monoalfabética        | ❌ Muito fraca                   | Comunicações militares romanas     |
| **Cifra de Playfair** | 1854      | Substituição digráfica             | ❌ Fraca (quebrada em 1914)      | Exército britânico na I Guerra     |
| **Cifra de Vigenère** | 1586      | Substituição polialfabética        | ❌ Fraca (quebrada no séc. XIX)  | Diplomacia europeia (séc. XVI-XIX) |
| **Enigma**            | 1918-1945 | Rotores eletromecânicos            | 🔸 Moderada (quebrada em 1941)  | Forças Armadas Alemãs (II Guerra)  |
| **One-Time Pad**      | 1882/1917 | Cifra de fluxo com chave aleatória | ✅ **Inquebrável** (uso correto) | Linha vermelha Moscou-Washington   |

***

## 📚 Cifras em Detalhe

### 1. Cifra de César (Cifra por Deslocamento)

**Descrição:** A mais antiga e simples técnica de cifragem. Cada letra do texto original é **deslocada** um número fixo de posições no alfabeto.

**Exemplo (deslocamento de 3):**

```
Original:   A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Cifrado:    D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

"Mensagem" → "Phqvdjhp"
```

**Matematicamente:**

```
Cifragem:   C = (P + k) mod 26
Decifragem: P = (C - k) mod 26
Onde k = deslocamento (1 a 25)
```

**Vulnerabilidades:**

* Apenas **25 chaves possíveis** → força bruta trivial
* Preserva frequência de letras → análise de frequência quebra em segundos

**Aplicação moderna:** ROT13 (k=13) usado apenas para ofuscar texto em fóruns.

***

### 2. Cifra de Vigenère

**Descrição:** Evolução da cifra de César que utiliza uma **palavra-chave** para determinar deslocamentos diferentes para cada letra. Foi chamada de *"le chiffre indéchiffrable"* (o cifra indecifrável) por séculos.

**Exemplo:**

```
Mensagem:   A T A C A R
Chave:      C H A V E
Soma:       A+C= C, T+H= A, A+A= A, C+V= H, A+E= E, R+? (repete)
Cifrado:    C A A H E...
```

**Tabela de Vigenère (Quadrado de Tabula Recta):**

```
     A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
     -------------------------------------------------
A    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B    B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C    C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
...
Z    Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
```

**Vulnerabilidades:**

* Quebrada por **Charles Babbage** e **Friedrich Kasiski** (séc. XIX)
* Análise de periodicidade → Kasiski Examination
* Se a chave for curta, padrões se repetem

**Ferramentas de ataque:** `vigenere-solver`, análise de índice de coincidência.

***

### 3. Cifra de Playfair

**Descrição:** Primeira cifra a criptografar **pares de letras (digrafos)** em vez de letras isoladas. Usa uma matriz 5x5 preenchida com uma palavra-chave.

**Construção da matriz (chave = "PLAYFAIR EXAMPLE"):**

```
P L A Y F
I R E X M
B C D G H
K N O Q S
T U V W Z
```

(I e J ocupam a mesma célula)

**Regras de cifragem para cada par:**

1. **Mesma linha** → substituir pela letra à direita (circular)
2. **Mesma coluna** → substituir pela letra abaixo (circular)
3. **Retângulo** → substituir pelas letras nos cantos opostos do retângulo

**Exemplo:**

```
Par "HE": H(2,4) e E(1,2) → retângulo → (2,2)=R e (1,4)=M → "RM"
```

**Vulnerabilidades:**

* Quebrada durante a **Primeira Guerra Mundial**
* Ainda preserva padrões de frequência de digrafos
* Não cifra letras repetidas (insere 'X' como separador)

**Ferramentas de ataque:** `playfair` (John the Ripper), análise de frequência de digrafos.

***

### 4. Máquina Enigma

**Descrição:** O mais famoso dispositivo criptográfico da história. Utilizava **rotores mecânicos** que alteravam a cifragem a cada letra digitada, gerando uma cifragem polialfabética com período extremamente longo.

**Componentes:**

* **Teclado** → entrada da mensagem
* **3 a 5 rotores** → cada rotor tem 26 posições (fios que embaralham)
* **Refletor** → redireciona o sinal de volta por um caminho diferente
* **Painel de ligações (plugboard)** → permutação adicional de 6 a 10 pares

**Funcionamento:**

```
Tecla pressionada → rotores avançam → sinal passa pelos rotores (ida) 
→ refletor → rotores (volta) → letra acende no painel
```

**Número de combinações possíveis:**

* Arranjo dos rotores: 3! = 6
* Posições iniciais: 26³ = 17.576
* Plugboard (10 pares): \~150.738.274.937.250
* **Total:** \~158.962.555.217.826.360.000 (1,5 × 10²⁰)

**A quebra do Enigma:**

* Poloneses (Marian Rejewski, 1932) → "Bomba" criptográfica
* Alan Turing (Bletchley Park, 1941) → "Bombe" eletromecânica
* Exploravam fraquezas: letra nunca cifrava como ela mesma, mensagens padronizadas ("Wetter", "Heil Hitler")

**Legado:** A quebra do Enigma encurtou a Segunda Guerra Mundial em 2-4 anos.

***

### 5. One-Time Pad (OTP)

**Descrição:** A única cifra **comprovadamente inquebrável** — desde que usada corretamente. Utiliza uma chave aleatória do mesmo tamanho da mensagem, usada uma única vez.

**Funcionamento:**

```
Mensagem:   A T A C A R
Chave:      (aleatória) 7 15 22 5 19 10
Soma mod 26: (A+7)=H, (T+15)=I, (A+22)=W, (C+5)=H, (A+19)=T, (R+10)=B
Cifrado:    H I W H T B
```

**Condições para inquebrabilidade:**

1. ✅ Chave verdadeiramente aleatória (não pseudoaleatória)
2. ✅ Chave do mesmo tamanho da mensagem
3. ✅ Chave usada **uma única vez** (daí o nome)
4. ✅ Chave mantida em segredo absoluto
5. ✅ Chave destruída após o uso

**Por que é inquebrável?**

* Dado um texto cifrado, **qualquer** texto claro é possível com alguma chave
* Sem informação sobre a chave, todas as mensagens são igualmente prováveis

**Aplicações históricas:**

* Linha vermelha Moscou-Washington (Guerra Fria)
* Comunicações de agentes espiões
* Telegrama de Zimmermann (versão parcial)

**Limitação prática:** Distribuição segura de chaves grandes → caro e impraticável para larga escala.

***

## ⚔️ Comparativo de Segurança

| Cifra    | Tamanho da Chave   | Espaço de Chaves   | Vulnerabilidade Principal          | Status                   |
| -------- | ------------------ | ------------------ | ---------------------------------- | ------------------------ |
| César    | 5 bits (log₂25)    | 25                 | Força bruta                        | 💀 Morta                 |
| Playfair | \~20 bits          | \~2⁶               | Análise de frequência de digrafos  | 💀 Morta                 |
| Vigenère | variável (palavra) | depende do tamanho | Kasiski + frequência               | 💀 Morta                 |
| Enigma   | \~67 bits          | \~1,5 × 10²⁰       | Chave curta + padrões de linguagem | 💀 Morta                 |
| OTP      | = tamanho da msg   | 26ⁿ (infinito)     | Uso incorreto                      | ✅ **Viva (condicional)** |

***

## 🛠️ Ferramentas para Análise de Cifras Clássicas

| Ferramenta                   | Função                                | Plataforma      |
| ---------------------------- | ------------------------------------- | --------------- |
| `caesar-cipher` (CLI)        | Cifragem/decifragem de César          | Linux/WSL       |
| `vigenere-solver`            | Ataque automático a Vigenère          | Python          |
| `playfair` (John the Ripper) | Cracking de Playfair                  | Multiplataforma |
| `enigma-simulator`           | Simulação da máquina Enigma           | Web/Desktop     |
| `CyberChef`                  | Suite completa de cifras clássicas    | Web             |
| `quipquip`                   | Solver de substituição monoalfabética | Web             |

***

## 🧪 Exercícios Práticos

### Exercício 1 – Quebrando César

```bash
# Cifrado: "WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ"
# Desafio: Quebre a cifra (deslocamento 3)
echo "WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ" | tr 'A-Za-z' 'D-ZA-Cd-za-c'
# Saída: "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG"
```

### Exercício 2 – Análise de Frequência (Vigenère)

1. Obtenha um texto cifrado por Vigenère
2. Calcule o **índice de coincidência** para estimar o tamanho da chave
3. Use o **teste de Kasiski** para encontrar repetições
4. Realize análise de frequência em cada "subtexto" (mesmo deslocamento)

### Exercício 3 – Simulação do Enigma

```python
# Python: pyEnigma
from enigma.machine import EnigmaMachine

machine = EnigmaMachine.from_key_sheet(
    rotors='I II III',
    reflector='B',
    ring_settings='1 1 1',
    plugboard_settings='AB CD EF'
)

machine.set_display('AAA')
ciphertext = machine.process_text('MENSAGEM SECRETA')
print(ciphertext)
```

***

## 📖 Referências Históricas

* **Cifra de César** – *De Bello Gallico*, Júlio César (58 a.C.)
* **Cifra de Vigenère** – *Traicté des Chiffres*, Blaise de Vigenère (1586)
* **Cifra de Playfair** – Charles Wheatstone, patenteada por Lord Playfair (1854)
* **Máquina Enigma** – Arthur Scherbius, patenteada em 1918
* **One-Time Pad** – Gilbert Vernam (1917) + Joseph Mauborgne (1919)

***

## 🎯 Por que estudar cifras clássicas hoje?

| Motivo                     | Explicação                                          |
| -------------------------- | --------------------------------------------------- |
| **Fundamentos**            | Toda criptografia moderna deriva desses princípios  |
| **Análise de padrões**     | Desenvolve intuição para detectar vulnerabilidades  |
| **Engenharia reversa**     | Habilidade de "pensar como um quebrador de códigos" |
| **CTF (Capture The Flag)** | Desafios frequentes em competições de segurança     |
| **História da segurança**  | Contextualiza por que fazemos o que fazemos hoje    |

> *"Aqueles que não conhecem a história estão condenados ao fracasso."*

***

## 🔗 Links Úteis

* [Crypto Museum – Enigma](https://www.cryptomuseum.com/)
* [Cipher Machines and Cryptology](https://www.ciphermachines.com/)
* [CyberChef (Cifras Clássicas)](https://gchq.github.io/CyberChef/)
* [Simulador do Enigma Online](https://enigma.louisedade.com/)
* [Criptografia: Uma Breve História](https://www.crypto-it.net/eng/history/index.html)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xmorte.gitbook.io/bibliadopentestbr/conceitos/criptografia/cifras-classicas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
