Segurança

Arquitetura de segurança

Stack Rust/Tauri, formato .rkvey v5, compartimentos e descriptografia sob demanda para proteger seus segredos.

A segurança do QubKey baseia-se em uma arquitetura em camadas e no princípio de defesa em profundidade: o sistema de arquivos, o formato .rkvey v5, a criptografia e o núcleo da aplicação em Rust protegem seus segredos em cada etapa — do armazenamento ao desbloqueio.

Cada camada oferece uma garantia complementar. Se faltar uma proteção do sistema (por exemplo, sem criptografia de disco), as camadas de aplicação e criptografia continuam protegendo seu cofre. Com o formato v5, os segredos de uma entrada são descriptografados somente quando você os visualiza ou copia — não ao abrir o cofre e não na lista.

UI

Interface (Reagir + Tauri)

  • Cofre
  • Pastas
  • Procurar
  • Gerador
  • Códigos únicos
  • Painel
  • Sincronizar
  • Compartilhamento
  • Extensão do navegador
Core

Núcleo de ferrugem (Núcleo QubKey)

  • Formato .rkvey v5
  • Derivação Argon2id
  • Criptografia autenticada
  • Índice de pesquisa
  • Confirmações seguras
  • Limpeza de memória
  • Recuperação de falhas
Storage

Arquivo .rkvey v5 no sistema de arquivos

  • Preâmbulo
  • Cabeçalho criptografado
  • Índice criptografado
  • Compartimentos secretos
  • Anexos
  • Histórico de commits

Camadas de segurança

Fluxo de desbloqueio

O desbloqueio segue um pipeline rigoroso: a senha mestra chega ao núcleo Rust, Argon2id deriva a chave mestra, subchaves descriptografam o cabeçalho e o índice B-Tree. Os compartimentos das entradas (segredos, anexos) permanecem criptografados e são lidos somente quando necessário. Ao bloquear, todas as chaves e segredos são apagados da memória.

Senha mestra + Sal

.rkvey preâmbulo (texto simples)

  • Inserido no núcleo Rust (Tauri IPC) – nunca exposto ao WebView
  • Salt aleatório armazenado no preâmbulo (16 bytes)
KDF

Argônio2id

  • 64 MB de RAM · 3 iter · p = 4 (padrão `KdfParams`)
  • Resistência GPU/ASIC
  • Calibrado ~250–500 ms dependendo da plataforma

Chave mestra

256 bits · `KeyManager::derive_master_key`

Derivação de subchave

HKDF-SHA256(mestre, salt=arquivo∥entrada, info=tipo)

chave_de_cabeçalho

Cabeçalho seguro

chave_índice

Índice de árvore B

chave_de_compartimento

Compartimentos

Descriptografia AEAD

  • AES-256-GCM ou XChaCha20-Poly1305
  • Cabeçalho · Índice · Compartimentos (sob demanda)

Memória após desbloqueio

  • Lista/visualização: somente metadados
  • Segredos e anexos descriptografados somente sob demanda

Trancar

  • `KeyManager::clear_keys()` + zerar
  • Segredos apagados e área de transferência limpa

Modelo de ameaças

O QubKey foi projetado para os cenários de ameaça mais comuns de um gerenciador local. A tabela descreve o vetor de ataque e a contramedida integrada (formato .rkvey v5).

AmeaçaVetorResposta do QubKey
Acesso não autorizado ao arquivoRoubo ou cópia de .rkveyCriptografia AEAD + derivação Argon2id
Exfiltração pela redeInterceptação na nuvem / MITMLocal-first: o QubKey não envia seus segredos
Corrupção de dadosFalha durante a gravaçãoCommits append-only validados + recuperação na inicialização
Manipulação do cofreAlteração manual do arquivoAutenticação AEAD por compartimento + checksums
Dump de memória (navegação)Cofre aberto, lista / visualizaçãoSegredos permanecem criptografados até você visualizá-los
Senha mestra fracaTentativas offlineArgon2id calibrado (~500 ms) + medidor de entropia
Reutilização de senhasVazamentos em outros sitesPainel de segurança (detecção local)
Vazamentos da área de transferênciaCopiar um segredoTempo limite da área de transferência (30 s) + apagamento ao bloquear
Ataque de canal lateralTiming em operações criptoImplementações de tempo constante (RustCrypto)

Boas práticas

Este modelo cobre as ameaças que o QubKey aborda diretamente por meio de sua arquitetura. Para proteção ideal, combine o QubKey com as boas práticas do sistema: criptografia de disco ativa, SO atualizado e senha mestra forte.

Proteção integrada

ÁreaComo o QubKey protege seus dados
Dados em repousoAEAD (AES-256-GCM / XChaCha20), chave Argon2id, chaves dedicadas por compartimento
Integridade do cofreCommits append-only validados, checksums e gravações atômicas
ConfidencialidadeZero-knowledge: seus segredos permanecem criptografados no seu dispositivo
Descriptografia sob demandaLista e visualização sem segredos; exibir / copiar somente quando necessário
Derivação de chavesArgon2id calibrado (~500 ms, 64 MB) para proteger a senha mestra
AplicaçãoNúcleo Rust isolado, interface via Tauri-IPC, Zeroization ao bloquear
Extensão do navegadorNative Messaging local — a extensão nunca recebe a senha mestra
SincronizaçãoSincronização multi-dispositivo criptografada opcional (nuvem ou self-host) ou arquivo .rkvey criptografado (nuvem, USB, NAS)

Arquitetura de confiança

Zero-knowledge

O QubKey organiza a confiança em vários níveis complementares:

  1. Você controla o acesso — a senha mestra e, se aplicável, a chave de recuperação controlam o acesso ao cofre. O QubKey não pode lê-las nem redefini-las.

  2. Integração com o sistema — o QubKey aproveita a segurança do seu SO: permissões de arquivo, criptografia de disco (FileVault, BitLocker, LUKS), armazenamento seguro (Keychain, Credential Manager) e isolamento de processos.

  3. Separação Rust / interface — Toda a criptografia roda no núcleo Rust com segurança de memória em tempo de compilação. A interface React se comunica via Tauri-IPC; o WebView não tem acesso direto à senha mestra.

  4. Gestão prudente da memória (v5) — Ao desbloquear, apenas o cabeçalho e o índice são descriptografados. Segredos e anexos permanecem criptografados até uma ação explícita (visualizar, copiar, baixar). Ao bloquear: Zeroization e área de transferência vazia.

  5. Extensão do navegador — Native Messaging local; a extensão nunca recebe a senha mestra.

Recursos de proteção

Bloqueio automático

O cofre é bloqueado após inatividade configurável (padrão: 5 min). Aciona Zeroization e apagamento da área de transferência.

Descriptografia sob demanda

Os segredos de uma entrada são descriptografados somente quando você os visualiza ou copia. A lista e a visualização não exibem campos protegidos.

Zeroization

Os segredos são apagados da RAM ao bloquear (crate Rust zeroize); caches esvaziados, descriptografia efêmera somente sob demanda.

Tempo limite da área de transferência

A área de transferência é esvaziada automaticamente após 30 segundos. Configurável nas configurações do cofre.