🧩 Implementação de LGPD (Proteção de Dados) no Vanguru

📌 Contexto

O aplicativo Vanguru lida com dados pessoais e dados sensíveis, incluindo:

  • Dados de crianças (data de nascimento, fotos)
  • Dados pessoais dos pais/responsáveis (CPF, endereço)
  • Informações financeiras (integração com ASAAS)
  • Imagens de passageiros e condutores

Por exigência da LGPD, esses dados devem:

  • Ser coletados apenas quando necessários
  • Ter consentimento explícito
  • Ser armazenados de forma segura (criptografia)
  • Ter possibilidade futura de exclusão e portabilidade

🎯 Objetivo

Garantir a conformidade com a LGPD, focando em:

  • Criptografia de dados sensíveis com baixo custo
  • Separação clara entre dados públicos e sensíveis
  • Preparação para integrações (ASAAS, imagens, relatórios)
  • Eficiência no uso do Firebase / GCP Free Tier

✅ Critérios de Aceite (Definition of Done)

  • [ ] Dados sensíveis não ficam em texto puro no Firestore
  • [ ] Existe separação entre dados comuns e dados sensíveis
  • [ ] Criptografia aplicada antes de persistir no Firestore / Storage
  • [ ] Chaves de criptografia não ficam no app (client-side)
  • [ ] Estrutura preparada para dados financeiros e imagens
  • [ ] Custos otimizados dentro do free tier
  • [ ] Documentação da abordagem técnica

🔐 Classificação de Dados

🔴 Dados Sensíveis (Segregação via Cloud Functions)

  • CPF (Dado segregado em subcoleção protegida e criptografado)
  • Dados Bancários / Financeiros

🟡 Dados Pessoais (Protegidos por Security Rules)

  • Nome completo
  • Email
  • Telefone
  • Endereço completo
  • Data de nascimento da criança
  • Fotos (com proteção do Firebase Storage)

🟢 Dados Não Sensíveis

  • IDs internos
  • Flags de sistema
  • Preferências de UI

🧠 Estratégia Técnica

🔑 1. Proteção Híbrida

  • Dados Altamente Sensíveis (CPF): Criptografia no backend (Cloud Functions) + Secret Manager.
  • Demais Dados Pessoais: Armazenamento direto no Firestore, garantindo a privacidade através de Security Rules estritas que impedem acesso não autorizado.

Por que esta abordagem? Para reduzir a complexidade e latência, mantendo a conformidade legal através do controle de acesso robusto do Firebase.


📄 Exemplo de Estrutura no Firestore

users/{userId} {
  name: "João",
  email: "joao@email.com",
  sensitiveRef: "users_sensitive/{userId}"
}
users_sensitive/{userId} {
  cpf_encrypted: "base64...",
  address_encrypted: "base64...",
  birthdate_child_encrypted: "base64...",
  createdAt: timestamp
}

🧠 Cloud Function — Camada de Segurança

Responsabilidades: * Criptografar antes de salvar * Descriptografar apenas quando necessário * Validar permissões de acesso * Centralizar lógica LGPD

Fluxo de Dados Sensíveis:

Flutter → Cloud Function → Firestore (dados criptografados)

🖼️ Criptografia de Imagens (Firebase Storage)

  • Upload direto no Firebase Storage
  • Utiliza a criptografia automática do GCP (default)
  • Regras de acesso estritas baseadas em UID / Role
  • Evita complexidade extra de criptografia manual para imagens neste momento

🧾 Consentimento (Obrigatório LGPD)

O sistema registra: * Aceite de termos e política de privacidade * Data, hora e versão do termo aceito

consents/{userId} {
  lgpdAccepted: true,
  version: "v1.0",
  acceptedAt: timestamp
}

🚧 Fora de Escopo (neste momento)

  • Portal de exportação de dados do usuário
  • Exclusão automática por solicitação (será manual via admin)
  • DPO / Encarregado formal
  • Auditoria externa