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 P em C usando K: C = E(P, K)
  • Decrypt (D): transforma C de volta em P com K: 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çãoCriptografia UsadaObservação
HTTPSSimétrica + AssimétricaTroca de chave com RSA, dados com AES
Senhas no LinuxHash (SHA-3 com salt)Nunca armazenadas em texto puro
Backup na nuvemSimétrica (AES)Dados criptografados antes do upload
Gerenciador de SenhasAES + senha mestraArmazena na RAM, requer senha ao iniciar
BitLocker / FileVaultFull disk encryption (AES)Chave obtida via senha ou TPM no boot
Emails com GPGChave pública + privadaAssinatura + criptografia