shield-checkVarnost

Izjava o Varnosti

Moj AI je zasnovan z security and privacy by design principom. Ta dokument opisuje naše celovite varnostne ukrepe, prakse zaščite podatkov in skladnost z evropskimi predpisi, vključno z GDPR (General Data Protection Regulation) in industrijskimi varnostnimi standardi.

Verzija dokumenta: 2.0 Zadnja posodobitev: Januar 2026 Status: ✅ Compliant


Izjava o Skladnosti

Moj AI je zasnovan in upravljan v skladu z naslednjimi predpisi in standardi:

Predpis / Standard
Status
Opis

GDPR

✅ Skladno

Splošna uredba o varstvu podatkov EU

Firebase Security Best Practices

✅ Implementirano

Google Cloud varnostni standardi

OAuth 2.0

✅ Implementirano

Industrijski standard za avtentikacijo

TLS 1.3

✅ Zahtevano

Šifriranje transportne plasti

Data Minimization

✅ Uporabljeno

Zbiranje samo nujno potrebnih podatkov

ISO 27001

✅ Via Google Cloud

Certificirani podatkovni centri

SOC 2 Type II

✅ Via Google Cloud

Skladnost operacij

Pravna Podlaga za Procesiranje Podatkov

  • Soglasje uporabnika: Avtentikacija z Google OAuth pomeni soglasje s pogoji uporabe

  • Izpolnjevanje pogodbe: Procesiranje potrebno za izvajanje AI asistenčne storitve

  • Zakonite interese: Varnost sistema, preprečevanje zlorab


Revizija Varnosti

Moj AI redno izvaja varnostne revizije za zagotavljanje najvišjih standardov varnosti.

Revizija #2 – 21. januar 2026

Revizor: Neodvisni varnostni pregled Obseg: Celovita druga varnostna revizija

Ugotovitve:

Ugotovitev
Resnost
Status

Firestore rules deployment drift

Kritična

✅ Odpravljeno

Cloud Functions avtentikacija

-

✅ Preverjeno - Varno

Stripe webhook signature

-

✅ Preverjeno - Varno

Client-side token handling

-

✅ Preverjeno - Varno

Sprejeti ukrepi:

  • Posodobljena Firestore security rules z zaščito pred privilege escalation

  • Preverjeno: vse Cloud Functions zahtevajo token-based authentication

  • Potrjeno: Stripe webhook uporablja strogo signature verification

  • Posodobljena varnostna dokumentacija za javno objavo

Revizija #1 – 15. januar 2026

Revizor: Interna varnostna ekipa Obseg: Začetna celovita varnostna revizija

Ugotovitve:

Ugotovitev
Resnost
Status

Firestore privilege escalation ranljivost

Kritična

✅ Odpravljeno

Stripe webhook signature bypass

Kritična

✅ Odpravljeno

Nevarnovane Cloud Functions

Visoka

✅ Odpravljeno

Manjkajoča validacija vnosov

Srednja

✅ Odpravljeno

Sprejeti ukrepi:

  • Implementiran verifyAuth middleware za vse občutljive Cloud Functions

  • Odstranjen Stripe webhook fallback bypass blok

  • Dodana field-level protection v Firestore rules

  • Implementirana validacija velikosti in tipa datotek


Avtentikacija in Avtorizacija

Metoda Avtentikacije

Moj AI uporablja Firebase Authentication z Google OAuth 2.0 kot edino metodo avtentikacije.

Ključne značilnosti:

  • Single Sign-On (SSO): Uporabniki se avtenticirajo preko svojega Google računa

  • Token-Based Sessions: Firebase ID tokeni z avtomatičnim refresh-om

  • Brez shranjevanja gesel: Ne shranjujemo gesel; avtentikacijo izvaja Google

  • Multi-Factor Authentication: Podprto preko Google Account nastavitev

Potek Prijave (Login Flow)

1

Uporabnik začne prijavo

Uporabnik klikne "Continue with Google".

2

Preusmeritev na Google OAuth

Uporabnik je preusmerjen na Google za avtentikacijo.

3

Avtentikacija pri Google

Google preveri identiteto in vrne ID token (JWT).

4

Firebase preveri token

Firebase preveri podpis tokena in veljavnost.

5

Ustvarjanje/posodobitev seje

Ustvari ali posodobi uporabniško sejo v Firestore.

6

Nastavitev varnih cookies

Nastavi HTTP-only, Secure piškotke (SameSite=settings).

7

Preusmeritev na dashboard

Uporabnik je preusmerjen nazaj v aplikacijo.

Varnostne Značilnosti Avtentikacije

Značilnost
Implementacija

🔐 Industry-standard OAuth 2.0

Google OAuth provider

🔒 JWT token-based sessions

Firebase ID tokens z digital signature

🛡️ Avtomatski token refresh

Transparentno podaljševanje seje

📱 2FA podpora

Če omogočeno v Google Account

⏱️ Session expiration

Avtomatska odjava po preteku tokena

🚫 Brez shranjevanja gesel

Zero-knowledge password policy

Model Avtorizacije

Role-Based Access Control (RBAC):

Vloga
Nivo dostopa
Opis

User

Lastni podatki

Dostop do osebnih pogovorov, dokumentov in nastavitev

Admin

Razširjen

Dostop do system prompts, admin dokumentov in uporabniškega upravljanja

Kontrolni mehanizmi:

  • Vsi API klici zahtevajo veljaven Firebase ID token

  • User ID ekstrahiran iz preverjenega tokena, nikoli iz request body

  • Admin status preverjen preko Firebase Custom Claims in Firestore

  • Firestore Security Rules uveljavljajo izolacijo podatkov na nivoju baze

Token Verification Process


Zaščita Podatkov in Zasebnost

Principi GDPR - Data Minimization

Sledimo GDPR principu minimizacije podatkov - zbiramo samo podatke, ki so nujno potrebni za delovanje storitve:

Tip podatka
Namen
Retencija

Email naslov

Identifikacija računa

Do brisanja računa

Prikazno ime

Uporabniška izkušnja

Do brisanja računa

Profilna fotografija

Uporabniška izkušnja

Do brisanja računa

Zgodovina pogovorov

Funkcionalnost storitve

Uporabniško kontrolirano brisanje

Naloženi dokumenti

RAG funkcionalnost

Uporabniško kontrolirano brisanje

Kaj NE zbiramo:

  • ❌ Geolokacijo

  • ❌ Sledenje med stranmi

  • ❌ Osebne identifikacijske številke

  • ❌ Finančne podatke (procesira Stripe)

  • ❌ Vedenjske profile

  • ❌ Podatke tretjih oseb

Procesiranje Podatkov

  • Purpose Limitation: Podatki se procesirajo izključno za zagotavljanje AI asistenčne storitve

  • Pravna podlaga: Uporabniško soglasje (avtentikacija pomeni soglasje s pogoji)

  • Third-Party Processing: Google Cloud (Firebase) kot procesor podatkov z Data Processing Agreement (DPA)

  • Transakcije: Stripe kot procesor plačil (PCI-DSS compliant)

Hramba Podatkov in Lokacija

  • Primarni podatkovni centri: EU region (europe-west1)

  • Backup lokacije: Multi-region EU

  • Brez prenosa izven EU za evropske uporabnike (GDPR člen 44)

Retencija:

  • Aktivni podatki: Nedoločeno (uporabniško kontrolirano)

  • Izbrisani računi: 30-dnevna grace period za obnovitev

  • Backupi: 30-dnevna retencija

  • System logi: 90-dnevna retencija

  • AI procesiranje: Gemini API ne hrani pogovorov


Šifriranje in Kriptografija

Šifriranje v Transportu (In Transit)

Plast
Šifriranje
Standard
Opis

Frontend ↔ Firebase

TLS 1.3

HTTPS

Vsa komunikacija frontend-backend

Backend ↔ Gemini API

TLS 1.3

HTTPS

AI API klici

Backend ↔ Stripe API

TLS 1.3

HTTPS

Plačilne transakcije

Browser ↔ CDN

TLS 1.3

HTTPS

Statični resursi

Značilnosti TLS 1.3:

  • Forward secrecy

  • Moderne cipher suites

  • 0-RTT resumption (performance)

  • Brez znanih ranljivosti

Šifriranje v Mirovanju (At Rest)

Podatki
Šifriranje
Standard
Lokacija

Firestore baza

AES-256

Google-managed keys

Avtomatsko

Cloud Storage datoteke

AES-256

Google-managed keys

Avtomatsko

Backupi

AES-256

Google-managed keys

Multi-region

System logi

AES-256

Google-managed keys

Cloud Logging

Google-Managed Encryption:

  • Ključi upravljani s strani Google Cloud

  • Avtomatska rotacija ključev

  • Hardware Security Modules (HSM)

  • FIPS 140-2 validated

Šifriranje Gesel in Tokenov

  • Gesla: Nikoli ne shranjujemo (OAuth delegirana avtentikacija)

  • API Keys: Shranjeni v Cloud Functions environment (encrypted)

  • JWT Tokens: Digitalno podpisani s Firebase private key

  • Session Cookies: HTTP-only, Secure flag, SameSite=Strict


API Varnost

Zaščiteni Endpoint-i

Vse HTTP Cloud Functions implementirajo večplastno varnost:

Endpoint
Avtentikacija
Rate Limiting
Input Validation

/askGemini

✅ Obvezno

✅ Per-user

✅ Obvezno

/uploadFile

✅ Obvezno

✅ Per-user

✅ Obvezno

/deleteDocumentFromFileSearch

✅ Obvezno

✅ Per-user

✅ Obvezno

/queryFileSearch

✅ Obvezno

✅ Per-user

✅ Obvezno

/handleStripeWebhook

✅ Signature

❌ Ne

✅ Obvezno

Input Validation

Validacijski mehanizmi:

Validacijska pravila:

  • ✅ Zahtevana polja ne smejo biti prazna

  • ✅ MIME type mora biti na allowlist

  • ✅ Velikost datoteke ne sme presegati limita

  • ✅ Datotečna imena sanitizirana (path traversal preprečevanje)

  • ✅ SQL injection preprečevanje (NoSQL Firestore)

  • ✅ XSS preprečevanje (Content Security Policy)

CORS (Cross-Origin Resource Sharing)

Rate Limiting

  • AI zahteve: Omejene s kvoto vprašanj (plačniški model)

  • Upload zahteve: Max 10 datotek/minuto per uporabnik

  • Login poskusi: Firebase Auth rate limiting (Google-managed)

  • Google Search API: 100 zahtev/dan (API limit)


Infrastrukturna Varnost

Cloud Provider - Google Cloud Platform

Moj AI deluje na Google Cloud Platform (Firebase), ki zagotavlja:

Certificirani podatkovni centri:

  • ISO 27001 - Information Security Management

  • SOC 2 Type II - Service Organization Controls

  • ISO 27017 - Cloud Security

  • ISO 27018 - Cloud Privacy

  • GDPR - Data Processing Agreement (DPA)

Fizična varnost:

  • 24/7 varovanje podatkovnih centrov

  • Biometrična kontrola dostopa

  • Video nadzor

  • Redundantno napajanje (UPS + generator)

  • Požarna zaščita in nadzor okolja

Omrežna Varnost

Plast
Tehnologija
Opis

Transport

HTTPS only (TLS 1.3)

Ves promet šifriran

CORS

Whitelisted origins

Cross-origin request protection

DDoS

Google Cloud Armor

Cloud-native DDoS protection

Rate Limiting

Firebase App Check

Zaščita pred zlorabami

Firewall

VPC firewall rules

Network-level filtering

Secret Management

Prakse:

  • ✅ API ključi shranjeni v Cloud Functions environment variables

  • ✅ Brez hardcoded secrets v source code

  • ✅ Rotacija ključev brez prekinitve storitve

  • .env izključen iz version control (.gitignore)

  • ✅ Separate keys za development/staging/production

Stripe Payment Security

  • Stripe procesira plačila (PCI-DSS Level 1)

  • Ne shranjujemo kartic - Stripe Vault

  • Webhook signature verification (HMAC-SHA256)

  • Strict signature verification (brez fallback bypass)


Arhitektura Izolacije Podatkov

Per-User Data Segregation

Firestore uporablja hierarhično strukturo za popolno izolacijo uporabniških podatkov:

Firestore Security Rules

Varnostne značilnosti:

  • Zero-trust: Vsako pravilo eksplicitno definirano

  • Privilege escalation protection: Uporabniki ne morejo spremeniti isAdmin, questions, ali enterprise polj

  • Per-user isolation: Uporabnik A ne more dostopati do podatkov uporabnika B

  • Role-based access: Admin dostop verificiran na več nivojih

  • Server-side enforcement: Pravila uveljavljena na Firebase serverjih

Cloud Storage Security Rules


Uporabniške Pravice (GDPR)

Moj AI podpira vse z GDPR zahtevane uporabniške pravice.

Pregled Pravic

Pravica (GDPR Člen)
Implementacija
Dostop

Right to Access (15)

Uporabniki lahko vidijo vse svoje podatke v aplikaciji

Account Page

Right to Rectification (16)

Uporabniki lahko uredijo svoj profil in nastavitve

Account Settings

Right to Erasure (17)

Brisanje računa odstrani vse uporabniške podatke

Account Deletion

Right to Data Portability (20)

Zgodovina pogovorov dostopna za izvoz (JSON)

Export Function

Right to Withdraw Consent (7)

Uporabniki lahko kadar koli izbrišejo račun

Account Deletion

Right to Object (21)

Brez avtomatiziranega profiliranja; uporabnik nadzoruje AI interakcije

N/A

Postopek Brisanja Podatkov

1

1. User Document Deletion

  • Firestore: /users/{uid}

  • Vsi poddokumenti (conversations, settings)

  • Metadata

2

2. Conversation History Deletion

  • Firestore: /users/{uid}/conversations/*

3

3. Uploaded Documents Deletion

  • Cloud Storage: /user-documents/{uid}/*

  • Gemini File API: deleteFile()

4

4. RAG Store Deletion

  • Firestore: /fileSearchStores/user-{uid}

  • Associated vectors/embeddings

5

5. Stripe Customer Deletion

  • Mark as deleted, retain for 30 days (regulatory)

6

6. Authentication Deletion

  • Firebase Auth: deleteUser()

Retencija po brisanju:

  • Grace period: 30 dni za možnost obnovitve

  • Backupi: Izbrisani iz backup-ov po 30 dneh

  • Logi: Anonimizirani po 90 dneh

  • Stripe: Označeno kot izbrisano, retain 7 let (zakonska zahteva)

Pravica do Prenosa Podatkov

Izvoz podatkov (JSON format):


Odziv na Incidente

Kontakt za Varnostne Zadeve

Za varnostne skrbi ali prijavo ranljivosti:

  • Čas odziva: Kritični problemi v 24 urah

  • Responsible Disclosure: Spoštujemo responsible disclosure policy

Klasifikacija Incidentov

Resnost
Čas odziva
Primer

Kritična

Takojšen

Kršitev podatkov, authentication bypass

Visoka

24 ur

Privilege escalation, API exploit

Srednja

72 ur

Data validation issue, CORS misconfiguration

Nizka

7 dni

Minor policy violation, informacijski leak

Postopek ob Kršitvi Podatkov

V skladu z GDPR Členom 33 in 34:

1

1. Odkritje in Ocena (0-24h)

  • Identifikacija obsega kršitve

  • Ocena vplivanih uporabnikov

  • Določitev resnosti in tveganja

2

2. Notifikacija Nadzornega Organa (do 72h)

  • Prijava Information Commissioner (Slovenija: IP)

  • Opis narave kršitve

  • Ocena posledic

  • Opisani ukrepi za ublažitev

3

3. Notifikacija Uporabnikov (brez nepotrebne zamude)

  • Če visoko tveganje: Direktna notifikacija vplivanih uporabnikov

  • Jasna komunikacija o kršitvi

  • Navodila za zaščitne ukrepe

  • Kontaktne informacije za vprašanja

4

4. Dokumentacija in Remediation

  • Popolna dokumentacija incidenta

  • Implementacija popravkov

  • Post-mortem analiza

  • Preventivni ukrepi


Monitoring in Audit

Security Monitoring

Continuous monitoring:

  • ✅ Failed authentication attempts

  • ✅ Privilege escalation poskusi

  • ✅ Nenavadni vzorci dostopa

  • ✅ API rate limit preseganja

  • ✅ File upload anomalije

Alerting:

  • Email notifikacije za kritične dogodke

  • Dashboard za real-time monitoring

  • Weekly security report

Audit Logging

Logged Events primer:

Retention:

  • Security logs: 90 dni

  • Access logs: 30 dni

  • Error logs: 30 dni

  • Audit logs: 1 leto (admin actions)


Compliance s Slovensko Zakonodajo

Zakon o Varstvu Osebnih Podatkov (ZVOP-2)

Moj AI je skladen z ZVOP-2, slovenskim implementacijskim zakonom GDPR:

  • Evidenca dejavnosti obdelave (Register of Processing Activities)

  • Pooblaščena oseba za varstvo podatkov (DPO contact available)

  • Obveščanje posameznikov (Privacy policy)

  • Varnostni ukrepi (Technical and organizational measures)

Slovenski Informacijski Pooblaščenec (IP)

Kontakt nadzornega organa:

  • Naziv: Informacijski pooblaščenec

  • Naslov: Dunajska cesta 22, 1000 Ljubljana

  • Telefon: 01 230 97 30

  • Spletna stran: https://www.ip-rs.si


Best Practices in Priporočila

Za Uporabnike

  • ✅ Uporabljajte močno geslo za Google račun

  • ✅ Omogočite 2FA (Two-Factor Authentication) na Google računu

  • ✅ Ne delite dostopa do svojega računa

  • ✅ Redno pregledujte zgodovino aktivnosti

  • ✅ Takoj prijavite sumljivo aktivnost

Za Administratorje

  • ✅ Uporabite ločen admin račun (ne personal)

  • ✅ Redno pregledujte system logs

  • ✅ Omejite admin dostop na najmanjši potrebni obseg

  • ✅ Dokumentirajte vse spremembe system prompts

  • ✅ Redno izvajajte varnostne revizije


Transparent Security

Kaj Lahko Vidijo Uporabniki

  • ✅ Vsi lastni pogovori in dokumenti

  • ✅ Zgodovina uporabe (število vprašanj)

  • ✅ Account settings in preferences

  • ✅ Admin dokumenti v RAG library (read-only)

Kaj NE morejo videti:

  • ❌ Pogovore drugih uporabnikov

  • ❌ Dokumente drugih uporabnikov

  • ❌ System prompts (admin-only write)

  • ❌ Backend logs in metrics

Security by Design

Vgrajeni varnostni principi:

  1. Defense in Depth: Večplastna varnost (authentication, authorization, encryption)

  2. Least Privilege: Minimalni potrebni dostop

  3. Secure by Default: Varnostne nastavitve privzeto omogočene

  4. Zero Trust: Preverjanje vsakega zahtevka

  5. Data Minimization: Zbiranje samo nujnih podatkov


Kontaktne Informacije

Security Contact

Za varnostne zadeve:

Privacy Contact

Za vprašanja o zasebnosti:

General Support

  • 📧 Support Email: [email protected]

  • 🌐 Website: https://app.mojai.xyz

  • 📚 Documentation: https://docs.mojai.xyz

Data Controller Information

Upravljavec podatkov:


Posodobitve Dokumenta

Ta dokument je redno posodobljen v skladu z varnostnimi revizijami in spremembami v varnostni praksi.

Zgodovina verzij:

  • v2.0 (21.01.2026) - Dodane varnostne revizije, GDPR sekcija, incident response

  • v1.0 (15.01.2026) - Začetna verzija


Izjava o zavezi:

Moj AI je zavezan varovanju vaših podatkov in zasebnosti. Varnost in zasebnost sta vgrajena v jedro naše aplikacije od začetka (security and privacy by design). Ta dokument je del naše zaveze transparentnosti in zaupanja uporabnikov.

Za dodatna vprašanja ali pomisleke glede varnosti kontaktirajte naš varnostni tim na [email protected]


Verzija dokumenta: 2.0 Datum: Januar 2026 Status: ✅ GDPR Compliant