Bezpečnosť a tok dát
Kde vaše dáta ležia, čo je zašifrované, ako je overené a obmedzené pripojenie AI, čo Assetli loguje, čo vidí poskytovateľ AI a čo zatiaľ nevieme.
Naposledy aktualizované: 30. októbra 2026
Táto stránka je písaná pre technicky zdatného a skeptického čitateľa. Každé tvrdenie nižšie bolo overené proti kódu aplikácie k dátumu uvedenému vyššie. Čo je obmedzenie a nie funkcia, nájdete v kapitole Čo zatiaľ nevieme, označené ako plánované.
Zhrnutie
Dve nadväzujúce stránky idú hlbšie: Kto spracúva vaše dáta vypisuje každú tretiu stranu a čo dostane, Ako dlho sa dáta uchovávajú uvádza dobu uchovania každého záznamu.
- Assetli sa nikdy nepripája k vašej banke a nedrží prihlasovacie údaje do bankovníctva. Dáta prichádzajú importom súboru, ručným zadaním, alebo voliteľnou synchronizáciou z Wallet by BudgetBakers pomocou tokenu tej aplikácie.
- Priložené súbory sú v súkromnom úložisku v EÚ bez verejnej adresy a zobrazia sa len prihlásenému vlastníkovi.
- Kto má zapnuté dvojfaktorové overenie, zadáva kód pri každom prihlásení heslom. Po prihlásení cez Google alebo Apple sa kód Assetli nevyžaduje, overenie tam rieši váš účet Google alebo Apple. Tlačidlo Odhlásiť zo všetkých zariadení ukončí všetky prihlásenia vrátane mobilnej aplikácie a prepojení s AI.
- Pripojenie AI stojí na OAuth 2.1 s PKCE, súhlasnou obrazovkou, krátko platnými tokenmi uloženými ako odtlačok, jedným profilom na konektor a oddeleným oprávnením na čítanie a na zápis. Zápis vyžaduje platený tarif.
- Vaša konverzácia s AI sa k Assetli nedostane. Server dostane len volania nástrojov. Čítania sa nelogujú, zápisy sa logujú 12 mesiacov.
- Na API ani v mobilných aplikáciách (Android aj iPhone) nebeží žiadna knižnica tretej strany na sledovanie chýb ani analytiku. Google Analytics a Microsoft Clarity sa na webových stránkach načítajú až po súhlase s cookies a prevádzku API nikdy nevidia; Vercel Web Analytics počíta zobrazenia stránok na webe a v dashboarde bez cookies.
Kde dáta ležia
| Čo | Kde |
|---|---|
| Aplikácia a API | Vercel, frankfurtský región (fra1) |
| Databáza | MongoDB Atlas, frankfurtský región (EÚ) |
| Priložené súbory (fotografie, dokumenty, účtenky) | Cloudflare R2, súkromné úložisko s jurisdikciou EÚ (objekty sú uložené v EÚ), bez verejnej adresy. Súbor sa zobrazí len prihlásenému vlastníkovi: server overí prihlásenie a vlastníctvo záznamu v aktívnom profile a potom vydá podpísaný odkaz platný najviac 15 minút, alebo súbor pošle sám (náhľad na webe, fotky cenností). Odkaz sám prihlásenie nevyžaduje, preto platí len krátko. Súbory nahrané skôr sme 30. 10. 2026 presunuli do EÚ a pôvodné kópie zmazali. Ikony predplatných a rozpočtov a dočasné súbory sú vo Vercel Blob. Výpisy na import sa neukladajú vôbec |
| Verejné referenčné dáta (cenníky, štatistiky) | Cloudflare R2, samostatné verejné úložisko (žiadne súbory používateľov) |
| Záloha databázy | Archív z mongodump zašifrovaný AES-256 (s overením, že sa dá dešifrovať), uložený na vlastnom počítači prevádzkovateľa v Česku; plánovaný každú noc. Zálohy staršie ako 30 dní sa mažú, posledných 7 záloh však zostáva vždy, aj keď sú staršie. Druhá kópia, zašifrovaná ešte predtým, než opustí server zostavenia, sa ukladá ako artefakt GitHub Actions na 30 dní, len keď tam úloha beží (od 21. 10. 2026 nebeží). Nočná záloha teraz zlyháva, pozrite Čo zatiaľ nevieme |
| Menové kurzy | Sťahujú sa z frankfurter.app (kurzy ECB). Dopyt nesie len kódy mien |
| Platby | Stripe. Údaje o karte sa k Assetli nedostanú |
Prihlásenie do Assetli
- E-mailom a heslom. Heslá sa ukladajú ako odtlačok algoritmom bcrypt.
- Prihlásenie cez Google alebo Apple (OAuth), v aplikácii pre telefón aj natívne.
- Voliteľné dvojfaktorové overenie aplikáciou TOTP so záložnými kódmi. Keď je zapnuté, kód (z autentifikátora alebo záložný) sa vyžaduje pri každom prihlásení heslom, na webe aj v aplikácii, a pri vstupe do administrácie prevádzkovateľa.
- Po prihlásení cez Google alebo Apple sa kód Assetli nevyžaduje, na webe ani v aplikácii. Overenie tam rieši váš účet Google alebo Apple (prístupový kľúč čiže passkey, ich dvojstupňové overenie; Apple ho pri prihlásení cez Apple vyžaduje). Odporúčame vám zapnúť si tam dvojstupňové overenie alebo prístupový kľúč.
- Tajomstvo pre TOTP je zašifrované, ten istý kód nejde použiť dvakrát a záložný kód prejde len raz.
- Po 5 neúspešných pokusoch počas 15 minút sa účet na 15 minút uzamkne; počítajú sa aj zlé kódy dvojfaktorového overenia, či ich zadáte pri prihlásení, v aplikácii alebo v Nastaveniach (vypnutie overenia, nové záložné kódy).
- Relácia drží cookie s príznakom HTTP-only, vydáva ju knižnica Auth.js; platí 7 dní od posledného použitia.
- Odhlásiť zo všetkých zariadení (Nastavenia na webe aj v aplikácii) ukončí všetky webové relácie, odvolá tokeny mobilnej aplikácie, doplnku Google Sheets a všetkých prepojení s AI (MCP) a zmaže registrácie upozornení na telefón. To isté prebehne samo po obnove hesla. Po zapnutí alebo vypnutí dvojfaktorového overenia sa odhlásia ostatné zariadenia a prihlásenie zostane len tam, kde ste zmenu urobili. Ostatné inštancie servera zmenu prevezmú najneskôr do 30 sekúnd.
- E-maily o zabezpečení prídu po prihlásení z nového zariadenia, po obnove hesla a po vypnutí dvojfaktorového overenia. Zariadenie sa spozná podľa druhu, prehliadača a systému bez verzií a bez IP adresy; v databáze je len ich odtlačok. E-mail uvádza zariadenie, približnú krajinu, čas a spôsob prihlásenia. Tieto e-maily sa nedajú odhlásiť.
- Administrácia pustí prevádzkovateľa len s dvojfaktorovým overením zadaným v tej istej relácii a každý prístup zapíše do auditného záznamu (pozrite Logovanie nižšie).
Šifrovanie
- Všetka prevádzka beží cez HTTPS.
- Šifrovanie na úrovni polí algoritmom AES-256-GCM (verzovaný zápis, náhodný inicializačný vektor, autentizačná značka) chráni: číslo účtu, IBAN a poznámky pri bankových účtoch, token pre Wallet by BudgetBakers, tajomstvo dvojfaktorového overenia, vaše vlastné API kľúče pre poskytovateľov AI, poznámky Family Legacy a platobné údaje členov skupín zdieľaných výdavkov (číslo účtu alebo IBAN, názov a kód banky, adresa kryptopeňaženky; verejný odkaz skupiny ich nedostane vôbec). Zašifrované polia sa nedajú prehľadávať dopytom do databázy a dešifrujú sa až pri zobrazení záznamu. Šifrovane sa ukladá aj obnovovací token prihlásenia cez Apple, identifikátory nákupov z Google Play a vaša tajná adresa na import e-mailom.
- Prístupové a obnovovacie tokeny OAuth, autorizačné kódy a API kľúče sa ukladajú ako odtlačok SHA-256. Čitateľná podoba existuje iba vo vašom klientovi. Rovnako tokeny z odkazov na obnovu hesla a overenie e-mailu: v databáze je len odtlačok, čitateľný odkaz je len v e-maile a každý sa dá použiť raz.
Pripojenie AI krok za krokom
Toto sa stane, keď sa Claude, ChatGPT alebo Gemini spýtate na niečo, čo potrebuje vaše dáta.
- Váš klient zavolá
POST /api/mcps telom JSON-RPC, teda s názvom nástroja a jeho argumentmi. Nič ďalšie z konverzácie sa neodosiela. - Middleware požiadavku prepustí. Na tejto ceste nie je heslo pre celý web a neloguje sa telo požiadavky.
- Overenie tokenu. Token z hlavičky
Authorization: Bearersa zahashuje a vyhľadá v databáze. Musí existovať, byť neexpirovaný (1 hodina), nezrušený, a jeho príjemca musí sedieť na hostiteľa. Zo záznamu sa získa vaše ID používateľa, profil zvolený pri súhlase, oprávnenia a ID klienta. - Oprávnenie, tarif a token z náhľadu. Každý nástroj zápisovej kategórie, vrátane náhľadov (
prepare_*), vyžaduje oprávneniewritea tarif Premium alebo Max. Bez oprávneniawritesa zápisové nástroje klientovi neponúknu a volanie skončí chybouSCOPE_REQUIRED. S oprávnenímwritesa ponúknu aj na tarife Free, aby zápis po prechode na Premium fungoval hneď, ale každé volanie bez tarifu Premium alebo Max skončí chybouTIER_FEATUREa nič sa nevykoná. Kontrola tarifu beží pri každom volaní, nie vo výpise nástrojov; platí preto aj po skončení skúšobného obdobia. Zápis navyše musí niesť potvrdzovací token, ktorý vydal jeho náhľadový nástroj pre tie isté argumenty v posledných desiatich minútach; bez neho, alebo s inými argumentmi, sa zápis odmietne. - Spustenie nástroja. Obsluha sa dopýta MongoDB s filtrom na vášho používateľa a profil. Výsledky sa poskladajú do pevne danej sady polí.
- Audit (len pri zápisoch). Názov nástroja, ID klienta, výsledok a zhrnutie argumentov sa uložia do kolekcie
mcp_audit_logss expiráciou po 365 dňoch. Sumy, kategórie, symboly, dátumy a názvy cieľov zostávajú; voľný text (popisy, poznámky, obchodník, obsah výpisu) sa ukladá len ako dĺžka, obsah výpisu navyše ako odtlačok. Samotný záznam nesie pôvod (createdVia: MCP a ID konektora) — transakcie, obchody, odpočty, cennosti, rozpočty a pravidlá kategorizácie — a zoznamy transakcií, obchodov, odpočtov, cenností a rozpočtov ho označia štítkom „AI“, ktorého popis uvádza kanál a nástroj. Akcie, ktoré nový záznam nevytvárajú, ale menia existujúce (spárovanie prevodu, použitie pravidla, presun peňazí v obálkach, potvrdenie zostatku), sa zaznamenávajú do auditného logu. - Odpoveď. Výsledok v JSON sa vráti klientovi, ktorý ho odovzdá modelu.
Čo Assetli vidí a čo nie
| Vidí Assetli? | |
|---|---|
| Vaša otázka a odpovede modelu | Nie. Zostávajú v AI klientovi. |
| Názov nástroja a argumenty | Áno, počas spracovania požiadavky. |
| Argumenty zápisových volaní | Áno, ako zhrnutie bez voľného textu, v auditnom logu na 12 mesiacov. |
| Argumenty čítacích volaní | Neukladajú sa. |
| Výsledky nástrojov | Spočítajú sa a vrátia, neukladajú sa. |
| Identita klienta | Registrovaný názov konektora a jeho ID. V bežných prevádzkových logoch hostingu aj IP adresa a identifikácia prehliadača servera AI klienta. |
Veta „vidíme len to, čo pri klikaní v aplikácii” platí presne pri čítaní. Pri zápise si Assetli necháva o niečo viac než pri kliknutí na webe, totiž auditný záznam.
Čo vidí poskytovateľ AI
Poskytovateľ, ktorý prevádzkuje váš model (Anthropic pri Claude, OpenAI pri ChatGPT, Google pri Gemini), vidí vaše otázky, výsledky nástrojov, a teda aj každé číslo, ktoré nástroj vráti. S tými dátami sa nakladá podľa podmienok daného poskytovateľa, nie podľa podmienok Assetli. Nástroje vracajú tie isté dáta, aké vidíte v aplikácii: zostatky, transakcie s popisom a obchodníkom, pozície, hodnoty a adresy nehnuteľností, evidenčné čísla vozidiel, dlhy. Nikdy nevracajú čísla účtov, IBAN, heslá, tokeny ani dáta iných používateľov.
Asistent v aplikácii funguje inak. Tam posiela vaše správy a finančnú snímku Anthropicu (alebo poskytovateľovi, ktorého kľúč ste zadali) samotné Assetli a konverzáciu ukladá k vášmu profilu. Pozrite AI asistent.
Rozsah tokenu
- Jeden používateľ, jeden profil. Token nesie profil, ktorý ste zvolili pri súhlase. Konektor profily prepínať nemôže.
- Čítanie, alebo zápis. Udeľuje sa na súhlasnej obrazovke, zápis zahŕňa čítanie. Server oprávnenie kontroluje pri každom volaní.
- Viazaný na príjemcu. Token vydaný pre
assetli.appktorýkoľvek iný hostiteľ odmietne. - Krátko platný. Prístupový token 1 hodinu, obnovovací 60 dní a pri každom obnovení sa vymení za nový.
- Odvolateľný. Ponuka účtu → Pripojenie AI (MCP) vypíše každý konektor a po potvrdení naraz zruší všetky jeho tokeny. Odhlásiť zo všetkých zariadení v Nastaveniach zruší tokeny všetkých konektorov naraz.
- Bez zdieľania tajomstiev. Klienti sú verejní OAuth klienti s PKCE, žiadne klientske tajomstvo neexistuje a vaše heslo Assetli nikdy neopustí.
- Len endpoint MCP. Token konektora tretej strany prijíma
/api/mcpa nič iné. REST API prijíma Bearer tokeny len od vlastnej mobilnej aplikácie.
Ten istý OAuth server vydáva tokeny aj aplikácii Assetli pre Android a iPhone, ktorá je zatiaľ v uzavretom testovaní a nie je verejne dostupná. Prihlásiť sa v nej dá e-mailom a heslom, cez Google alebo Apple priamo v aplikácii, alebo v systémovom prehliadači; heslo aj kód dvojfaktorového overenia overuje tá istá funkcia ako na webe, vrátane blokovania pokusov (pri účte s dvojfaktorovým overením chce aplikácia kód po prihlásení heslom; po prihlásení cez Google alebo Apple nie, tam overenie rieši účet Google alebo Apple), a tokeny vydáva tá istá funkcia ako /api/oauth/token (prístupový 1 hodina, obnovovací 60 dní). Súhlasnú obrazovku aplikácia preskočí, pretože je naša. Tokeny drží v zabezpečenom úložisku telefónu (Android Keystore, na iPhone Kľúčenka) a odvolať sa dajú na tej istej stránke Pripojenie AI (MCP) alebo tlačidlom Odhlásiť zo všetkých zariadení.
Logovanie
Čo sa zapisuje a kam:
| Log | Obsah | Uchovanie |
|---|---|---|
| Auditný log MCP (databáza) | Používateľ, profil, ID klienta, názov nástroja, úspech alebo chyba, zhrnutie argumentov bez voľného textu. Len zápisy. Vidíte ho v ponuke účtu → Pripojenie AI (MCP). | 365 dní |
| Prevádzkový log požiadaviek (Vercel) | Metóda, cesta, stav, doba spracovania, IP klienta. Bez tiel požiadaviek. | Podľa nastavenia tarifu Vercelu |
| Výstup funkcií (Vercel) | Chybové správy, ktoré aplikácia vypíše pri zlyhaní, napríklad chybu databázy. Nie telá požiadaviek. | Podľa nastavenia tarifu Vercelu |
| Administrátorský chybový log (databáza) | Chyby aplikácie z vybraných endpointov, z webového rozhrania a z mobilných aplikácií (Android aj iPhone): text a technický výpis chyby, stránka alebo obrazovka, verzia aplikácie a systému, ID účtu ako pseudonym (bez mena a e-mailu), IP adresa a User-Agent. Na ceste MCP sa nepoužíva. | 12 mesiacov, potom sa automaticky zmaže |
| Záznam prístupov do administrácie (databáza) | Kto, kedy, metóda, cesta a identifikátory z adresy (ID používateľa alebo záznamu, kolekcia). Žiadny obsah, ktorý administrácia ukázala, žiadny e-mail. Rovnaká požiadavka do 30 sekúnd sa zapíše raz. Zmazanie účtu záznam o nahliadnutí doň neodstráni. | 365 dní, potom sa automaticky zmaže |
Čo tam naopak nie je:
- Žiadny Sentry, Datadog, PostHog ani podobná knižnica v API ani v mobilných aplikáciách (Android aj iPhone). Závislosť toho druhu v projekte neexistuje.
- Žiadny middleware, ktorý by zachytával telá požiadaviek alebo odpovedí.
- Google Analytics a Microsoft Clarity sa načítavajú len v prehliadači na webových stránkach a až po súhlase s cookies. Prevádzka API a MCP sa k nim nikdy nedostane. Jedinou výnimkou je jedna udalosť registrácie: keď si založíte účet, náš server ju oznámi Google Analytics — len ak ste dali súhlas s analytikou (inak cookie Analytics neexistuje a nič sa neodošle). Nesie anonymný identifikátor Analytics a stránku, z ktorej ste prišli, nikdy meno, e-mail ani finančné údaje.
- Vercel Web Analytics počíta zobrazenia stránok na webe aj v dashboarde (v mobilnej aplikácii nie) bez cookies a bez súhlasu; identifikátor návštevy je odtlačok platný jeden deň. Prevádzku API a MCP nevidí.
Ďalšie prepojenia
- Wallet by BudgetBakers (Premium a Max, k tomu vlastný účet Wallet Premium): vložíte API token z Walletu, Assetli ho uloží zašifrovaný a z Wallet API iba číta. Nikdy doň nezapisuje. Pri odpojení sa token zmaže. Technicky by dovolil aj zápis; Assetli ho používa len na čítanie.
- API kľúče (
ask_…): samostatný typ kľúča len na čítanie, určený pre dátové API (cenníky energií, sadzby hypoték a sporenia). K vašim finančným údajom prístup nedáva. Ukladajú sa ako odtlačok SHA-256, dajú sa obmedziť na čítanie, opatriť expiráciou a zrušiť v Nastaveniach. Pripojenie AI ich nepoužíva. - Doplnok do Google Sheets: vlastný typ tokenu, ktorý prijímajú len dva endpointy pri hypotékach. Je vypísaný a odvolateľný na tej istej stránke pripojení.
- Doplnok do prehliadača na previerku nehnuteľnosti: prečíta inzerát otvorený vo vašom prehliadači a jeho text pošle analytickému endpointu. Server na realitné portály sám nechodí. Vopred má povolený prístup len k assetli.app; po kliknutí na ikonu si vyžiada oprávnenie pre web otvorenej karty a Chrome sa opýta, ak ho ešte nedostal. Pri otvorení panela pošle adresu otvorenej stránky, aby zistil, či ste ju už preverovali; obsah stránky číta až po kliknutí na „Analyzovať túto stránku“.
Vaše práva k dátam
- Export (na webe aj v mobilnej aplikácii): Nastavenia → Export dát vytvorí súbor so všetkými záznamami, ktoré vlastníte, naprieč kolekciami, bez autentizačných tajomstiev a dočasných logov.
- Zmazanie: Nastavenia → Zmazať účet odstráni používateľa a každý záznam, ktorý je naň naviazaný, vrátane záznamov vlastnených skupinami a odkazom Family Legacy a vrátane súborov. Vyžaduje sa potvrdzovacia fráza. V mobilnej aplikácii (Android aj iPhone): Viac → Nastavenia → Zmazať účet. Podrobnosti: Zmazanie účtu.
Čo zatiaľ nevieme
Radšej to vypíšeme, než aby ste to našli sami.
- Potvrdenie sa vynucuje ako párovanie, nie ako súhlas. Server odmietne zápis, ktorý nemá token zo zodpovedajúceho náhľadu pre tie isté argumenty z posledných desiatich minút. Či ste náhľad naozaj videli a povedali áno, je stále na AI klientovi; Claude, ChatGPT aj Gemini pridávajú vlastnú otázku na povolenie nástroja.
- Doba uchovania logov na strane hostingu závisí od tarifu Vercelu a aplikácia ju neriadi.
- Automatická nočná záloha databázy od 22. 10. 2026 zlyháva. Opravujeme ju. Druhá kópia v GitHub Actions od 21. 10. 2026 tiež nevzniká.
- Vývoj pracuje s prevádzkovou databázou. Prevádzkovateľ k dátam pristupuje kvôli prevádzke, opravám chýb a vývoju, a to len v nevyhnutnom rozsahu. Vývoj aj kontrolné skripty bežia nad prevádzkovou databázou a niektoré z nich prechádzajú profily používateľov (napríklad kontrola, či AI ukazuje rovnaké čísla ako web). Prevádzkovateľ pritom používa asistenta na programovanie s AI od Anthropicu, takže výstup takých skriptov môže spracúvať Anthropic ako sprostredkovateľ. Oddelená vývojová databáza je naša najväčšia otvorená položka.
- Databázový nástroj v administrácii vie záznamy aj meniť a mazať. Vstup doň vyžaduje dvojfaktorové overenie a zapisuje sa; šifrované polia ukazuje len ako šifrový text a heslá, tokeny OAuth a API kľúče sú v databáze len ako odtlačky.
- Známe zraniteľnosti v knižniciach zatiaľ nestráži žiadna automatika. Upozornenia zavádzame.
Hlásenie bezpečnostného problému
Napíšte na info@assetli.app a do predmetu uveďte „security”. Prosíme, netestujte na dátach iných používateľov.