On this page
.2 Criptografia
1. Introdução
A criptografia é usada para proteger dados fora do controle direto do sistema operacional, como quando são transmitidos pela rede ou armazenados em dispositivos removíveis. Seu objetivo é garantir sigilo, integridade e autenticidade dos dados mesmo em ambientes inseguros.
2. Fundamentos da Criptografia
Conceitos principais
- Plaintext (P): dado original.
- Ciphertext (C): dado criptografado.
- Key (K): segredo usado no processo.
- Encrypt (E): transforma
PemCusandoK:C = E(P, K) - Decrypt (D): transforma
Cde volta emPcomK:P = D(C, K)
Exemplo
- Texto original:
Transfer $100 to my savings account - Cifra de César:
Sqzmredq #099 sn lx rzuhmfr zbbntms - Cifra fraca e fácil de quebrar (substituição por deslocamento).
Observações
- A segurança depende inteiramente do segredo da chave.
- Bons algoritmos como AES devem ser usados.
- Nunca crie seu próprio algoritmo de criptografia.
3. Criptografia Simétrica
- Usa a mesma chave para encriptar e decriptar.
- Exemplo: AES.
- Rápida e adequada para grandes volumes de dados.
- Problema: distribuição segura da chave.
4. Criptografia de Chave Pública (Asssimétrica)
- Usa par de chaves: uma pública e uma privada.
- Exemplo: RSA.
- Permite:
- Autenticação: encriptar com chave privada → qualquer um pode verificar com chave pública.
- Sigilo: encriptar com chave pública → só o dono da chave privada pode ler.
- Mais lenta que criptografia simétrica.
- Usada principalmente para troca de chave segura.
Exemplo prático:
- Microsoft assina atualizações com sua chave privada.
- Usuários verificam com a chave pública que foi assinada pela Microsoft.
5. Hashes Criptográficos
- Funções que mapeiam entrada de tamanho variável para saída de tamanho fixo.
- Ex: SHA-3.
- Usado para:
- Verificação de integridade
- Armazenamento de senhas
- Proof-of-work (blockchain, antispam)
- Propriedades desejadas:
- Dificuldade de colisão (duas entradas com mesmo hash).
- Dificuldade de inferência do conteúdo a partir do hash.
- Pequenas mudanças → grandes alterações no hash.
Exemplo:
- Arquivo + hash = integridade.
- Alteração no arquivo → hash diferente → detecção de ataque.
6. Quebrando Criptografia
Métodos comuns:
- Brute force: testar todas as chaves.
- Fuga de chave: falhas de implementação, vazamentos (ex: Heartbleed).
- Chaves previsíveis: gerar com relógio do sistema, PID, etc.
- Chaves compartilhadas: mesmo par de chaves em múltiplos dispositivos.
Boas práticas:
- Usar /dev/random (Linux) para obter entropia.
- Nunca armazenar chaves em texto puro no sistema.
- Usar tamanho adequado de chave (AES-128 ou maior).
7. Criptografia no SO
- Se o sistema operacional pode ver a chave, ele pode quebrar a segurança.
- Em ambientes confiáveis, o SO pode usar criptografia para:
- Armazenar senhas com hash unidirecional.
- Transmitir dados criptografados pela rede (mesmo que o canal seja inseguro).
- Usar enclaves de hardware para isolar chaves (ex: TPM).
8. Criptografia de Dados em Repouso (At-Rest)
- Protege dados armazenados em disco contra acesso físico não autorizado.
- Tipos:
- Criptografia de arquivos individuais
- Criptografia de volume
- Full disk encryption (BitLocker, FileVault)
Benefícios:
- Protege dados em caso de perda ou roubo do dispositivo.
Limitações:
- Não protege contra usuários com acesso legítimo.
- Não protege contra falhas no aplicativo ou no sistema operacional.
Exemplos:
- Backup na nuvem: criptografar antes do envio.
- Arquivamento: criptografar e armazenar sem necessidade de acesso regular.
- Email criptografado com GPG.
9. Vaults de Senhas
- Aplicações que armazenam senhas encriptadas.
- Chave derivada de senha mestra.
- Armazenadas só na RAM durante uso.
- Exemplo: gerenciadores de senhas como KeePass, Bitwarden.
10. Capacidades Criptográficas
- Solução para capabilities forjáveis discutidas em controle de acesso.
- Um sistema pode emitir uma capability criptografada que:
- Indica permissões, identidade, tempo de expiração.
- Pode ser verificada por outro sistema com a chave correta.
- Pode usar:
- Chave simétrica: criador e verificador compartilham chave.
- Chave pública: criador assina; verificador valida.
11. Conclusão
- A criptografia é uma ferramenta poderosa, mas depende:
- Do uso de algoritmos fortes
- Da secrecy da chave
- Da implementação cuidadosa
- Deve ser usada com parcimônia e sabedoria arquitetural.
- Para SOs, seu uso é mais efetivo fora da memória ativa do sistema ou em trânsito.
12. Exemplos Práticos
| Aplicação | Criptografia Usada | Observação |
|---|---|---|
| HTTPS | Simétrica + Assimétrica | Troca de chave com RSA, dados com AES |
| Senhas no Linux | Hash (SHA-3 com salt) | Nunca armazenadas em texto puro |
| Backup na nuvem | Simétrica (AES) | Dados criptografados antes do upload |
| Gerenciador de Senhas | AES + senha mestra | Armazena na RAM, requer senha ao iniciar |
| BitLocker / FileVault | Full disk encryption (AES) | Chave obtida via senha ou TPM no boot |
| Emails com GPG | Chave pública + privada | Assinatura + criptografia |

