Finyvo Legal
Segurança
Esta página conta como o Finyvo é construído por dentro. A política de privacidade responde a que dados seus são tratados, para quê e com quem; aqui está o como: onde vive cada coisa, o que a protege, que decisões tomamos e quais ainda não. Sem selos nem superlativos.
Índice
Esta página conta como o Finyvo é construído por dentro. A política de privacidade responde a que dados seus são tratados, para quê e com quem; aqui está o como: onde vive cada coisa, o que a protege, que decisões tomamos e quais ainda não. Sem selos nem superlativos.
O essencial
| Pergunta | Resposta curta |
|---|---|
| Onde vivem seus dados financeiros? | No iPhone e, com a sincronização ativa, no seu iCloud privado. Algumas funções enviam dados ao backend para processamento. |
| Existe conta ou senha? | Não. O app se identifica com uma chave criptográfica que nasce dentro do Secure Enclave do seu iPhone e nunca sai de lá |
| O que protege o tráfego? | HTTPS com TLS 1.2 ou superior, em todas as conexões |
| Onde roda o backend? | Na Cloudflare Workers, com D1 e KV como único armazenamento |
| Onde estão as chaves dos provedores? | Só no backend, como segredos da Cloudflare. Nenhuma viaja dentro do app |
| Dá para desligar o que sai para a internet? | iCloud e IA têm controles separados. Converter Excel envia o arquivo mesmo com a IA desativada. |
| Há certificações de segurança? | Não. Nem SOC 2 nem ISO 27001. O detalhe está em O que ainda não existe |
No seu iPhone
A base financeira fica no SwiftData dentro do contêiner protegido pelo iOS. Cálculos e exportação ocorrem no dispositivo. Preferências usam ajustes do sistema; a memória de categorias pertence à sua base.
As Chaves guardam o identificador da chave App Attest e o identificador de instalação com acesso WhenUnlockedThisDeviceOnly, e o token de sessão com sua validade em AfterFirstUnlockThisDeviceOnly, permitindo reutilização em segundo plano após o primeiro desbloqueio. Não sincronizam pelas Chaves do iCloud e podem sobreviver à desinstalação.
Capturas Apple Pay são gravadas primeiro como evidência local e processadas depois. Conexões ativas pertencem a cada dispositivo; registros financeiros e de revisão podem sincronizar pelo iCloud. Pausar uma conexão não apaga essa evidência.
A limpeza automática aplica limites de sete backups programados e três anteriores a migrações, mas protege o mais recente, os manuais, os de incidentes e os que estão em uso. O modo privado oculta valores nas telas de consulta, mas não criptografa dados nem substitui o bloqueio do iPhone.
Sua cópia no iCloud
Se você deixar a sincronização ativada — ela vem ativada —, seus dados são replicados para a base de dados privada da sua própria conta iCloud, dentro do contêiner iCloud.com.moiszr.finyvo. É infraestrutura da Apple e a conta é sua: a Apple a criptografa em trânsito e em repouso, e o Finyvo não consegue consultá-la. Ela não aparece em nenhum painel nosso. Se você tem a Proteção Avançada de Dados da Apple ativada, essa cópia fica ainda criptografada de ponta a ponta.
Você pode desligar em Ajustes → Sincronização → iCloud. Na sincronização atual, a mudança vale durante o uso do app. Nas instalações que ainda exigem reiniciar, Ajustes informa que ela será aplicada na próxima abertura. Isso não apaga a cópia do iCloud nem desativa os outros envios do app.
Desligar não apaga o que já subiu. O Aplicativo não tem um botão de “apagar minha cópia do iCloud”: para eliminá-la é preciso ir em Ajustes do iOS → [Seu nome] → iCloud → Gerenciar armazenamento da conta → Finyvo.
O que é replicado exatamente, e o que acontece com o seu nome de exibição, está na política de privacidade.
Como o app se autentica
O Finyvo não tem contas. Não há e-mail, nem senha, nem login que alguém possa adivinhar, vazar ou roubar de você. O backend verifica algo diferente: que quem chama é o app real, rodando em um dispositivo real.
A chave. Na primeira abertura, o Aplicativo gera uma chave criptográfica dentro do Secure Enclave. A parte privada nunca sai desse chip: nem o app, nem o iOS, nem nós conseguimos lê-la. Só é possível pedir que ela assine.
O handshake, passo a passo:
- O app pede um desafio a
/auth/challenge. O backend devolve um número aleatório de uso único, com 5 minutos de vida. - O app pede ao Secure Enclave uma atestação sobre esse desafio e a envia a
/attest/verify. Aqui entra a Apple: a atestação demonstra que a chave nasceu em um dispositivo real e que quem a usa é uma cópia legítima do Finyvo. - Se tudo bate, o backend queima o desafio — um já usado não é aceito duas vezes — e emite duas coisas: um identificador de instalação e um token de sessão que expira em 15 minutos.
- A partir daí, cada chamada a
/fx/*,/brand/*,/ai/*e/import/*viaja com esse token. Nenhuma função do Aplicativo usa um token anônimo compartilhado. - Quando faltam uns dois minutos para o token expirar, o app o renova sozinho: desafio novo, assinatura nova do Secure Enclave, token novo. Se uma requisição cruzar com a expiração e voltar um 401, ele renova e tenta de novo uma vez.
A chave que está no binário, sim. As três requisições do handshake ainda não podem levar um token de sessão — elas existem para obtê-lo —, então se identificam com uma chave de aplicativo incluída no binário e, portanto, comum a todas as cópias do Finyvo. Qualquer pessoa que extraia o binário pode lê-la, e por isso ela não é a fronteira de segurança: serve para filtrar ruído de fundo. A fronteira real é a atestação do Secure Enclave, que não se falsifica copiando uma cadeia de texto. Essa chave também não identifica você.
Identidade de instalação. É pseudônima e pode ser mantida ao renovar a chave com uma prova válida da sessão anterior. Reinstalar não garante nova identidade. O backend a usa para plano, cota e prevenção de abuso.
Em trânsito
Tudo viaja criptografado com HTTPS / TLS 1.2 ou superior: entre o Aplicativo e o nosso backend, e entre o nosso backend e os provedores externos. Não há nenhum caminho em texto puro.
Nosso backend exige TLS e responde sempre com estes cabeçalhos:
| Cabeçalho | Valor | Para quê |
|---|---|---|
Strict-Transport-Security |
max-age=31536000; includeSubDomains; preload |
Um ano de HTTPS obrigatório, subdomínios incluídos |
Content-Security-Policy |
default-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none' |
A API não serve páginas: não pode carregar recursos, nem ser incorporada, nem enviar formulários |
X-Frame-Options |
DENY |
O mesmo, para navegadores antigos |
X-Content-Type-Options |
nosniff |
Ninguém reinterpreta o tipo de uma resposta |
Referrer-Policy |
no-referrer |
Nenhum endereço nosso vaza para fora |
Permissions-Policy |
geolocation=(), microphone=(), camera=() |
A API não pede sensores, e isso fica escrito |
Cross-Origin-Resource-Policy / Cross-Origin-Opener-Policy |
same-site / same-origin |
Isola as respostas de outras origens |
Cache-Control |
no-store |
Nada fica em caches intermediários. A exceção são os logotipos de marca, que são públicos e são cacheados |
O site finyvo.com não instala cookies nem carrega recursos de terceiros: as fontes ficam hospedadas no nosso próprio domínio.
Como o backend é construído
O backend usa Cloudflare Workers, D1 e KV para autenticação, provedores, caches e métricas. D1 guarda taxas históricas, instalações, uso de IA e formatos de importação confirmados. KV guarda caches, desafios, contadores e tokens temporários de formato.
As rotas de IA usam modelos da OpenAI selecionados por função; não necessariamente compartilham o mesmo modelo. As métricas guardam identificadores de requisição e resposta que permitem correlação com respostas na OpenAI. A tabela de métricas não guarda corpos completos; o cache de importação guarda interpretações e mapas de formato. Não se promete retenção zero nem impossibilidade de relacionar dados.
/import/grid converte Excel completo na memória, sem persistir arquivo ou tabela. Não usa IA: desligar a IA não impede esse envio.
Registros padrão de Workers duram 3 ou 7 dias conforme o plano Cloudflare. D1 não tem exclusão automática por expiração implementada para métricas e instalações. Alertas ntfy incluem metadados operacionais; o código não envia IP nem conteúdo financeiro ao canal. Veja Privacidade para detalhes e fontes.
Limites e antiabuso
O backend aplica controles por IP e instalação, cota mensal de IA e proteção de gastos por instalação e global. O Plus remove a cota mensal do plano, não os controles técnicos. Uma resposta 429 pode indicar limite; 503 pode indicar indisponibilidade ou proteção global. O app pode informar quando tentar novamente e mantém alternativas locais. Consultas de cota não chamam modelos nem consomem requisições de IA.
As chaves são suas
- iCloud: desligue em Ajustes. A mudança vale durante o uso; se sua instalação ainda exigir reiniciar, Ajustes informa. Isso não apaga a cópia existente nem desativa outras funções de rede. O nome de exibição usa um armazenamento separado do iCloud.
- IA: compartilhar conteúdo com a OpenAI exige sua permissão explícita. O controle geral permite retirá-la e os controles por função limitam quais funções a usam. Para importar sem enviar um arquivo, use CSV, TSV ou JSON com IA de importação desligada; Excel exige conversão no backend.
- Apple Pay: pause ou revogue a conexão no Finyvo e desative a automação no Atalhos. Compras e evidências anteriores são gerenciadas separadamente.
- Notificações: controle permissões e prévias no iOS. Alguns lembretes contêm valores; o aviso de captura é genérico. Mensagens de sucesso/erro no app não são comentários enviados à equipe.
A exportação é gerada localmente sem criptografia, e o modo privado não oculta seus valores. Redefinir o app não apaga arquivos exportados nem registros do backend.
O que ainda não existe
Não publicamos certificações SOC 2 ou ISO 27001, relatório de auditoria externa ou programa de recompensas. O Finyvo não inclui bloqueio biométrico próprio. O ZIP de exportação de dados não é criptografado; os backups portáteis de recuperação podem ser protegidos com senha. A exclusão do contêiner privado do iCloud é gerenciada no iOS. Credenciais técnicas podem sobreviver à desinstalação; use o contato de privacidade para solicitar acesso ou exclusão no backend.
Reportar uma falha de segurança
Se você encontrar algo — no app, no backend ou no site — escreva para [email protected] com o assunto Segurança.
Conte o que encontrou e como reproduzir. Se puder, inclua a versão do app e a hora aproximada: ajuda a localizar a requisição nos registros, que têm retenção limitada.
O que pedimos: nos dê tempo de corrigir antes de publicar, e não acesse dados de outras pessoas nem degrade o serviço enquanto investiga. Não há recompensa financeira; há crédito público aqui, se você quiser.
Respondemos em no máximo 30 dias corridos, o mesmo compromisso que aplicamos a qualquer solicitação de privacidade.