Skip to content

Segurança e Privacidade

Esta página descreve as medidas de segurança e considerações de privacidade implementadas na plataforma GamiBot.


Proteção de Dados

Encriptação

CamadaPadrãoDescrição
Em TrânsitoTLS 1.3Todas as chamadas API (Moodle ↔ LangFlow ↔ Qdrant ↔ Cliente)
Em RepousoAES-256Payloads Qdrant (se dados sensíveis detetados)
Chaves APIVariáveis de ambienteNunca em código ou logs

Controlo de Acesso

Isolamento de Cursos

Todas as consultas Qdrant incluem filtro course_id para garantir que os alunos não possam aceder a materiais de outros cursos:

python
# Cada pesquisa tem âmbito de curso
results = qdrant_client.search(
    collection_name="course_materials",
    query_vector=embedding,
    query_filter=Filter(
        must=[
            FieldCondition(
                key="course_id",
                match=MatchValue(value=student_course_id)
            )
        ]
    )
)

Autenticação

  • Tokens de sessão Moodle validados para cada pedido API
  • Assinaturas de webhook verificadas com HMAC-SHA256
  • Chaves API rotacionadas regularmente

Acesso Baseado em Funções

FunçãoCapacidades
AlunoConsultar apenas os seus cursos
InstrutorGerir ingestão, ver analytics
GestorAdministração completa do sistema

Retenção de Dados

Tipo de DadosPeríodo de RetençãoMétodo de Purga
Materiais do curso (vetores)Duração do curso + 1 anoManual pelo instrutor
Histórico de chat6 mesesEliminação automática
Desempenho de quiz1 ano académicoEliminação automática
Logs de ingestão3 mesesEliminação automática
Embeddings de utilizador6 mesesEliminação automática após término do curso

Considerações de Privacidade

Transparência

Notificação ao Aluno

Os alunos são informados de que a IA resume os seus materiais de curso através de mensagens claras na interface de chat e nas configurações do Moodle.

Opções de Opt-Out

  • Checkbox para excluir dados do aluno do treino de LLM (se usar API OpenAI)
  • Exportação de dados disponível mediante pedido
  • Eliminação de dados disponível mediante pedido

Sem Partilha com Terceiros

  • Materiais não são partilhados com plataformas de IA externas sem consentimento explícito
  • Todo o processamento pode usar LLMs auto-hospedados para máxima privacidade

Conformidade com RGPD

DireitoImplementação
Direito de AcessoExportar dados do aluno em 30 dias
Direito ao ApagamentoEliminar dados do aluno em 30 dias
Direito à PortabilidadeExportação JSON de todos os dados pessoais
Direito de OposiçãoOpt-out do processamento de IA

Segurança do Modelo

Filtragem de Conteúdo

  • Sem geração de conteúdo prejudicial, discriminatório ou de desonestidade académica
  • Prompts do sistema incluem diretrizes de segurança explícitas
  • Output é monitorizado para violações de política

Defesa contra Injeção de Prompts

python
def sanitize_user_input(input_text: str) -> str:
    """Prevenir ataques de injeção de prompts."""
    # Remover padrões de injeção potenciais
    dangerous_patterns = [
        "ignore previous instructions",
        "system prompt",
        "you are now",
        "forget your instructions"
    ]
    
    sanitized = input_text
    for pattern in dangerous_patterns:
        sanitized = sanitized.replace(pattern, "[FILTERED]")
    
    return sanitized

Mitigação de Alucinações

  • Output do LLM estritamente restrito a materiais recuperados (princípio RAG)
  • Respostas incluem citações de fonte
  • Scores de confiança registados para monitorização de qualidade

Próximos Passos

Released under the MIT License.