Bezpečnost a důvěra
Dronewell s.r.o. · IČO: 19381301 · Verze 1.0 · Aktualizováno: 21. 5. 2026
Naše bezpečnostní filozofie
ReportMaster zpracovává stavební dokumentaci českých inženýrů a projektantů. Bezpečnost, ochrana dat a transparentnost jsou pro nás výchozí stav, ne doplněk. Tato stránka shrnuje konkrétní opatření, která provozujeme, a je živým dokumentem — aktualizujeme ji při každém významnějším zlepšení.
1. Síťová a transportní bezpečnost
Šifrování
TLS 1.3 / HTTPS
- Veškerá komunikace přes HTTPS s certifikátem od Let's Encrypt
- HSTS s max-age 1 rok + includeSubDomains
- HTTP automaticky přesměrováno na HTTPS
- Bezpečné šifry, žádné slabé algoritmy
HTTP Security Headers
Content Security Policy
- Nonce-based CSP — chrání před XSS injekcemi
- X-Frame-Options: SAMEORIGIN (clickjacking)
- Referrer-Policy: strict-origin-when-cross-origin
- Permissions-Policy: zakázané camera, microphone, geolocation
- X-Content-Type-Options: nosniff
2. Autentizace a hesla
- Hesla v bcrypt (cost factor 10) — i při úniku databáze nelze hesla rychle prolomit
- Rate limiting přihlášení — max 10 pokusů z jedné IP za 15 minut (brute-force ochrana)
- Rate limiting API — max 200 požadavků za minutu (DDoS ochrana)
- Session timeout — 8 hodin neaktivity, 24 hodin absolutní limit
- HttpOnly + Secure + SameSite cookies pro OAuth — nejsou přístupné JavaScriptu
- Token NIKDY v URL — Google OAuth handshake přes jednorázový 60s kód; SSE přes jednorázové tickety
- Password reset — token jen jeho hash do auditu, e-mail s 1h platností, jednorázové použití
- Google OAuth 2.0 jako volitelná alternativa
3. Multi-tenant izolace
Aplikace je multi-tenant — každá organizace má izolovaná data. Implementujeme:
- Auth middleware ověřuje, že session.org_id odpovídá user.org_id (jinak okamžité ukončení relace + audit log
security_violation)
- Helper assertSameOrg() volaný při každém přístupu k Project / TePř — vrací 404 (ne 403) aby útočník nevěděl, že entita existuje
- Per-organization výstupy v adresáři
vystup/org_<id>/ — download/preview/history validuje cestu i vlastnictví
- Per-organization stav extrakce — žádný sdílený globální stav mezi tenanty
- Path traversal protection — sanitizace názvů souborů + validace cesty proti escape
4. Uploady souborů
- MIME sniffing podle magic bytes — kontrolujeme první bajty souboru (%PDF, ZIP-PK, PNG, JPG, OLE) — útočník nemůže obejít přejmenováním .exe na .pdf
- Antivir ClamAV — v produkci fail-closed (pokud AV nedostupný, upload odmítnut)
- Limit velikosti — 40 MB / soubor, 50 MB pro multi-upload
- Whitelist přípon — pouze PDF, DOCX, DOC, PNG, JPG
- Sanitizace názvů — odstranění řídicích znaků, path separators, max 100 znaků
- Uploady mimo webroot — nelze je spustit jako skripty
- Audit log všech uploadů — kdo, kdy, co, velikost
- Retention policy — uploady starší 30 dnů automaticky mazány
5. AI zpracování — Anthropic Claude API
Pro generování dokumentů využíváme model Claude od společnosti Anthropic, PBC:
- Co odesíláme do Anthropic: extrahovaný text z PDF, metadata stavby, generovací prompt
- Co NEodesíláme: hesla, session tokeny, kompletní původní soubory, identifikační údaje uživatelů
- Uchování u Anthropic: dle Anthropic API Terms maximálně 30 dní pro audit
- Anthropic data NEpoužívá k trénování svých modelů (smluvní záruka)
- Standardní smluvní doložky (SCC) schválené Evropskou komisí pro přenos do USA
- Disclaimer u všech výstupů — AI generuje pracovní podklady, finální odpovědnost má autorizovaný inženýr
5b. Vlastní znalostní báze (RAG) — opt-in pro vylepšování služby
Provozovatel (Dronewell s.r.o.) je samostatný subjekt od Anthropic. Provozovatel může — pouze s výslovným souhlasem klienta — používat anonymizovaná data klientovy organizace pro svou znalostní bázi za účelem zlepšování věcné kvality výstupů služby.
- Default je OPT-OUT — bez souhlasu zůstávají data klienta výhradně ve firemní KB
- Při opt-in souhlasu: data jsou anonymizována (IČO, názvy firem, jména, lokality, finanční částky odstraněny) a přesunuta do globální KB jako odborný kontext
- NIKDY se nesdílí: neanonymizovaná data, cenové kalkulace, obchodní know-how
- Souhlas lze kdykoli odvolat v aplikaci (čl. 7 odst. 3 GDPR)
- Detaily: OP, čl. 8 a AI Policy, sekce 8
6. Audit logy a monitoring
- Tamper-evident hash chain audit log — každý záznam obsahuje SHA-256 hash předchozího (Merkle chain). Pokud někdo přepíše záznam, řetězec se rozpadne
- Cryptographic checkpoints (WORM-style) — každých 24h podepsaný snímek celého auditního logu (HMAC-SHA256, read-only soubor 444). I když by admin smazal audit log, checkpoint zachová důkaz počtu záznamů a finálního hashe
- Strukturované JSON logy všech citlivých operací — login (úspěch/neúspěch), 2FA setup, GDPR výmaz, nahrávání, generování, API tokeny, webhooks, security violations
- Per-organization scope — admin vidí audit log své organizace, superadmin globálně
- Hashované identifikátory — e-maily v audit logu jen jako SHA-256 hash (privacy by design)
- AI Provenance log — každé volání Claude API se zaznamenává (prompt hash, model, tokeny, doba) pro AI governance
- Bezpečnostní incidenty — automatický audit záznam
security_violation při pokusu o cross-tenant přístup
- Suspicious login detection — alert při přihlášení z neobvyklé IP nebo zařízení
- Automatická rotace audit logu nad 10 MB
- Retence 365 dnů
- Health endpointy —
/healthz liveness, /readyz readiness
- Per-request X-Request-Id pro korelaci napříč logy
- Verify endpointy —
GET /api/audit/verify ověří integritu řetězce
7. GDPR compliance
Práva subjektů
Implementovaná práva
- Právo přístupu (čl. 15)
- Právo na opravu (čl. 16)
- Právo na výmaz (čl. 17) — v aplikaci
- Právo na omezení (čl. 18)
- Právo na přenositelnost (čl. 20) — export JSON
- Právo námitky (čl. 21)
Procesy
GDPR ve firmě
- Vlastní DPO kontakt: gdpr@reportmaster.cz
- 72h notifikace ÚOOÚ při úniku (čl. 33)
- DPA šablona pro B2B klienty (čl. 28)
- Data inventory veřejně přístupný
- Retention policy automatický výmaz
- Hluboký výmaz: účet + poptávky + sessions
JSON Data Inventory → ·
Zásady ochrany osobních údajů → ·
DPA šablona →
8. Subprocesory
| Zpracovatel | Účel | Země | Mechanismus |
| Anthropic, PBC | AI generování (Claude API) | USA | SCC + API Terms |
| Hostinger International Ltd. | Hosting VPS | EU (Litva) | EU/EHP |
| Google Ireland Limited | OAuth (volitelné) | EU/USA | SCC |
Veškeré změny subprocesorů jsou oznamovány klientům s předstihem 30 dnů.
9. Cookies a sledování
- Pouze technicky nezbytné cookies — žádné analytiky, žádné trackery, žádný remarketing
- Žádný Google Analytics, GA4, Tag Manager, Meta Pixel, Hotjar, Clarity, LinkedIn Insight
- Žádné fonty z Google CDN — všechny fonty self-hosted
- Pokud v budoucnu přidáme analytiku, bude před souhlasem blokována plnohodnotným CMP
Cookie politika →
10. Provozní bezpečnost
- Firewall (UFW) — pouze porty 22, 80, 443
- Pravidelné aktualizace OS a balíčků (unattended-upgrades)
- SSH klíče místo hesla, fail2ban proti brute-force
- Zálohy denní + týdenní + měsíční s retencí 7/4/12, automatický skript
- Test obnovy ze zálohy pravidelně
- Graceful shutdown při fatální chybě — PM2 restartuje, nezůstává v nekonzistentním stavu
- SESSION_SECRET fail-fast — server v produkci neStartuje bez tajného klíče
11. Incident response
- Incident Response Playbook — definovaný proces pro SEV-1 až SEV-4 incidenty
- Šablony oznámení pro klienty a ÚOOÚ
- Konkrétní kontakty — Incident Commander, DPO, právní kontakt
- 72h notifikace ÚOOÚ při úniku osobních údajů (čl. 33 GDPR)
- Endpoint /api/gdpr/breach-report pro interní hlášení
- Status page — /healthz
12. Enterprise readiness
- 2FA (TOTP) dle RFC 6238 — Google Authenticator, 1Password, Authy + 8 recovery kódů
- API tokeny se scopes (read/write/admin), HMAC-podepsané webhooks pro outbound integrace
- Webhook replay protection — timestamp + nonce v signature, klient odmítne staré requesty (>5min)
- Tenant quotas — per-organization limity (generování/den, storage GB, API tokeny)
- Signed download URLs — 15 min platnost, jednorázové, vázané na user+org+soubor
- Document watermarking — každý vygenerovaný DOCX má v core.xml hidden ID + HMAC podpis. Forenzní verify endpoint pro ověření provenance
- Hash-chained audit log — tamper-evident, ověřitelný přes
/api/audit/verify
- Audit checkpoints — WORM-style podepsané snímky každých 24h (read-only soubory)
- AI Provenance tracking — každé Claude API volání zaznamenáno pro governance a abuse detection
- SBOM (Software Bill of Materials) — CycloneDX 1.5 formát pro procurement reviews. Generuje se přes
npm run sbom
- Backup verification — automatický restore test (
npm run backup:verify) prokazuje, že zálohy fungují, ne jen že se vytvářejí
- Postmortem template — strukturovaný incident postmortem dokument (INCIDENT_POSTMORTEM_TEMPLATE.md)
- SLA dokument s 3 tiers (Pilot / Standard / Enterprise) — /sla.html
- DPA šablona dle čl. 28 GDPR — /dpa.html
- Production Checklist pro každé nasazení
- Per-organization izolace pro skutečnou multi-tenancy
- PostgreSQL připraveno k aktivaci (1-řádkový swap)
13. Co jsme záměrně NEdělali
- Žádná telemetrie ve free verzi — nikdo nesleduje vaše chování
- Žádný cross-site tracking nebo reklamní cookies
- Žádné scrapování dat klientů pro „vylepšování AI"
- Žádné automatické sdílení dat se třetími stranami mimo subprocesory
- Žádné prodávání anonymizovaných dat
14. Vaše role
Bezpečnost je společná odpovědnost. Doporučujeme:
- Používat silná hesla (min. 12 znaků), ideálně z password manageru
- Nesdílet přihlašovací údaje, vytvořit účty pro každého člena týmu
- Nenahrávat utajované informace ani osobní údaje nad rámec nezbytné potřeby
- Pravidelně procházet seznam aktivních uživatelů ve své organizaci
- Po opuštění zaměstnance ho neprodleně deaktivovat
- Před použitím AI výstupu provést odbornou kontrolu autorizovanou osobou
15. Hlášení zranitelností
Pokud objevíte bezpečnostní zranitelnost, prosíme o tzv. responsible disclosure:
- Pošlete detaily na gdpr@reportmaster.cz
- Dejte nám rozumný čas na opravu před zveřejněním
- Nevyužívejte zranitelnost k získání cizích dat
Bezpečnostní výzkumníky a etické hackery podporujeme — kontaktujte nás předem.