Bezpečnost u qub

Datum účinnosti: 23. září 2026 Verze: 1.1 — revize přesnosti vůči implementaci


Pro výzkumníky — rychlá reference:

Úplné podrobnosti jsou v §12 (Koordinované zveřejnění).


Kdo jsme

qub.social provozuje společnost VSPRY AUSTRALIA PTY LIMITED (ABN 41 631 026 330), Level 38, 71 Eagle Street, Brisbane QLD 4000, Austrálie. Odkazy na „qub“, „my“, „nás“ a „naše“ znamenají tento subjekt.

Kontakt pro bezpečnost: support@qub.social s předponou předmětu [SECURITY].


1. Náš přístup

qub je infrastruktura důvěry. Produkt je bezcenný, pokud není bezpečný, takže bezpečnost není funkcí — je substrátem. Tato stránka konkrétně popisuje, jak chráníme náš stack, vaše data a integritu zapečetěného obsahu.

Hodnota ověřitelného časového závazku roste, jak se stále větší část internetu stává strojově generovanou. Ověřená transakce úložiště nebo kotva logu transparentnosti může doložit, že šifrovaný text existoval nejpozději v čase příslušného bloku; zapečetěný artefakt samostatně prokazuje integritu obsahu, vazbu na kolo drand a případné podpisy autorství. Laťkou této stránky je důsledné oddělení těchto tvrzení.

Nežádáme vás, abyste nám důvěřovali. Navrhujeme tak, aby důvěra po nás požadovaná byla co nejmenší, a tam, kde je důvěra vyžadována, přesně vysvětlujeme, čemu se důvěřuje a proč.

Tři principy řídí každé rozhodnutí o návrhu:


2. Model hrozeb

2.1 Proti čemu chráníme

2.2 Proti čemu chránit nemůžeme

K našim limitům jsme upřímní. qub se nedokáže bránit proti:


3. Kryptografie na straně klienta

Ve výchozím prohlížečovém toku zpráv probíhá šifrování obsahu před požadavkem na nahrání. Dvě výslovné cesty se liší: Builder /api/v1/seal záměrně posílá prostý text a volajícím vygenerovaný K Workeru pro pečetění v paměti a příprava/spolupodepisování paktu posílá službě podepsaný strukturovaný pakt, aby mohla dokončit dvoustranný artefakt. Ani jednu výjimku nelze zaměňovat s end-to-end šifrováním prohlížečové cesty.

3.1 Šifrování s časovým zámkem

qub používá tlock — šifrování založené na identitě, klíčované k budoucímu kolu majáku drand. Šifrování probíhá ve vašem prohlížeči pomocí veřejného klíče sítě drand; dešifrovací klíč je sítí drand veřejně uvolněn pouze tehdy, když je dosaženo cílového kola. Nikdo, včetně nás, nemůže dešifrovací klíč zrekonstruovat předem.

Cílíme na řetězec quicknet:

Veřejný klíč a čas geneze řetězce quicknet jsou zkompilovány do klienta. Parametry řetězce za běhu nestahujeme, takže škodlivý uzel nemůže nahradit řetězec, který ovládáme.

3.2 Symetrické šifrování

Schéma tlock obaluje obsahový klíč AES-256-GCM. AES-GCM poskytuje autentizované šifrování: jediný překlopený bit v šifrovaném textu způsobí selhání dešifrování, místo aby vytvořil tiše poškozený prostý text.

3.3 Kanonická serializace

Protokolové struktury se serializují pomocí deterministického CBOR (RFC 8949 §4.2, základní požadavky na deterministické kódování). Dvě implementace kódující stejnou logickou strukturu vytvoří identický CBOR. Úplné zapečetěné datové úlohy nejsou deterministické: šifrování tlock i vnějšího obalu používá čerstvou náhodnost. Hash těla se počítá ze surových bajtů těla, zatímco kanonické kódování jednoznačně určuje okolní podepsané a přenosové struktury.

Kodér CBOR jsme napsali ručně jak pro naši klientskou, tak serverovou implementaci, místo abychom spoléhali na obecnou serializační knihovnu — požadavkem je přesnost, nikoli ergonomie, a vlastnostní testy běží v obou implementacích, aby ověřily, že se shodují.

Regresní test tvrdí, že kanonický formát na drátě neobsahuje žádnou bajtovou sekvenci značky qub nad rámec klíče protokolově-primitivního pole qub_id. Formát na drátě je záměrně agnostický vůči značce — jakýkoli vyhovující divák (náš nebo třetí strany) může vykreslit jakýkoli qub z trvalého úložiště, bez ohledu na to, které nasazení jej zapečetilo. Test je nástraha, která brání budoucí změně v náhodném zapečení odkazu na značku do bajtů, které, jednou v trvalém úložišti, nelze přepsat.

3.4 Hašování těla a integrita před odhalením

Každá zapečetěná datová úloha nese hash SHA3-256 surových bajtů svého těla. Hash je svázán do qub_id a při zapnutém podepisování autorství také do vstupu podpisu V2. Divák jej po dešifrování přepočítá a při neshodě datovou úlohu odmítne.

32bajtový identifikátor obsahu qub_id je odvozen ze 108bajtového předobrazu pokrývajícího verzi protokolu, typ obsahu, časová razítka vytvoření a odemčení, volitelné časové razítko výsledku (nebo jeho nulovou zarážku), cílové kolo drand, hash těla a SHA3-256 volitelného názvu normalizovaného do NFC. Brána ani CDN nemůže konzistentně změnit žádné svázané pole a současně projít novým odvozením. Názvy jsou omezeny na 100 kódových bodů NFC a odmítají sdílenou třídu nepřátelských a řídicích kódových bodů (včetně obousměrných přepisů, znaků s nulovou šířkou, bloku tagů, BOM, C0, C1 a DEL).

3.5 Podepisování (ML-DSA-65)

Podepisování autorství používá ML-DSA-65 (FIPS 204), schéma postkvantového podpisu standardizované NIST. Záměrně jsme pro podepisování zvolili postkvantové primitivum, protože zapečetěný obsah je trvalý: podpis, který se ověří dnes, se musí stále ověřovat za desítky let, včetně poté, co se rozsáhlé kvantové počítače stanou praktickými.

Podpisové klíče se generují v prohlížeči. Místní tajemství je před uložením do IndexedDB obaleno neexportovatelným klíčem WebCrypto. Při použití funkce obnovy mezi zařízeními vázané na účet se na server uloží přenosný blok klíče zašifrovaný pomocí AEAD; šifrovaný text tajného klíče je svázán s neměnným ID účtu a služba ověřuje veřejnou obálku, ale nedokáže tajný materiál dešifrovat. Surové bajty soukromého klíče se serveru neposílají. Veřejné klíče a záznamy atestací se ukládají pro ověření a zobrazení identity.

Stejné dešifrování tlock v prohlížeči se uplatní uvnitř embedu qub: když je zapečetěný qub vykreslen prostřednictvím <qub-embed> na stránce třetí strany, dešifrování stále probíhá v iframe embedu v prohlížeči diváka. Embed nemění model důvěry — prostý text nikdy není dešifrován na serveru qub.

3.6 Veřejné přiznání autorství — dobrovolné

Zapečetěné quby nenesou žádný ukazatel v řetězci na svého tvůrce, pokud se tvůrce výslovně nerozhodne jeden připojit. Když zapečetíte qub, referenční aplikace vyšle úložištní značku Author (64znakový hexadecimální otisk vašeho podpisového veřejného klíče) pouze tehdy, když je v kroku výběru data povoleno „Veřejné přiznání autorství“. S přepínačem vypnutým — výchozí stav — se nezapíše žádná značka Author a qub je v trvalém úložišti nepřiznaný: nic v úložišti nespojuje nahrání s vaší přezdívkou, vaším e-mailem nebo vašimi ostatními quby. S přepínačem zapnutým se otisk prostřednictvím atestačního řetězce v §6.3 / §10 přeloží na vaši @přezdívku a odpočítávání pro diváka zobrazí „Zapečetil(a) @{handle}“ před odhalením.

To je záměrná ochrana proti riziku enumerace, které by trvale zapnutá značka Author vytvořila: třetí strana, která se dozví otisk tvůrce, by jinak mohla prohledat trvalé úložiště podle značky a zrekonstruovat celý historický výstup toho tvůrce. Dobrovolné přiznání tento kanál uzavírá — pouze quby, které tvůrce výslovně rozhodne přiznat, se objeví pod otiskem v trvalém úložišti.

Profilová stránka /u/{handle} je kartou ověřené identity — přezdívka, volitelné zobrazované jméno + URL, odznak „ověřený e-mail“ (žádná adresa) a krátká forma kryptografického otisku. Neuvádí quby tvůrce. Návštěvníci, kteří chtějí vidět konkrétní qub od tvůrce, sledují URL doručení toho qubu přímo.

3.7 Vnější šifrovací obal

I poté, co je dešifrování časovým zámkem matematicky možné — jakmile je zveřejněn podpis drand pro svázané kolo — by samotná kanonická vrstva časového zámku umožnila indexeru hromadně dešifrovat dohledatelné quby. Soukromé doručení tento kanál uzavírá další symetrickou vrstvou kolem bajtů šifrovaných časovým zámkem (Protokol §13). Veřejné doručení obal záměrně vynechává, aby mohly bez tajného fragmentu fungovat odkazy pro oznámení, vložení a vyhledávání.

Obal používá AES-256-GCM, autentizovanou šifru standardizovanou NIST, s čerstvým 256bitovým klíčem K generovaným pro každý qub CSPRNG vašeho prohlížeče. K je svázán s qub_id qubu jako autentizovaná dodatečná data, takže klíč z jednoho qubu nelze znovu použít k dešifrování jiného qubu.

K se ve výchozím soukromém prohlížečovém toku nikdy nedostane na naše servery. Je zakódován do fragmentu URL sdíleného odkazu (https://qub.social/c/<tx_id>#<base64url(K)>). Prohlížeče fragmenty URL na servery nepřenášejí — RFC 3986 umisťuje fragment mimo požadavek — takže qub.social, úložištní brány, CDN a monitorování požadavků jsou v tomto toku vůči K slepé. Uložený OuterWrapper je rozpoznatelný strukturovaný CBOR, ale jeho autentizované pole šifrového textu skrývá vnitřní strukturu SealedQub a bez K je nelze otevřít.

Čisté důsledky:

Serverový koncový bod Workeru /api/v1/seal (používaný AI agenty a jinými volajícími API) vyžaduje, aby volající vygeneroval K pomocí CSPRNG, uchoval jej lokálně a dodal jej jako wrapper_key_b64url. Worker na této výslovně důvěryhodné cestě nutně vidí v paměti prostý text i K, ale neuchovává ani jedno. Povinný Idempotency-Key brání tomu, aby ztracená odpověď vytvořila druhý účtovaný qub, zatímco K uchovaný volajícím lze zkombinovat s přehranou URL bez fragmentu. To se liší od výchozí cesty v prohlížeči, kde se K nikdy nedostane k Workeru, ledaže tvůrce výslovně povolí obnovu.


4. Přenos a okraj

4.1 TLS

Provoz prohlížeče ke qub je obsluhován přes HTTPS na okraji Cloudflare. Odpovědi nastavují HTTP Strict Transport Security (max-age=63072000; includeSubDomains; preload). Přesnou vyjednanou verzi TLS a sadu šifer určuje aktivní konfigurace okraje, nikoli aplikační kód. Nezpřístupňujeme samostatně dosažitelný původní server.

4.2 Zabezpečení obsahu

Zkompilovaný klient je obsluhován s přísnými hlavičkami content-type a cache. Skořápka SPA je jediným původem. Nevkládáme skripty třetích stran pro analytiku nebo reklamu. Dva dotykové body třetích stran v produktu jsou oba úzce vymezené: nákupní tok zcela opouští SPA celostránkovým přesměrováním na placení hostované Stripe (https://checkout.stripe.com/…) — UI Stripe se nikdy nespouští v našem původu a my nikdy nevidíme data karty — a tok pečetění načítá widget Turnstile od Cloudflare, alternativu CAPTCHA chránící soukromí, kterou Cloudflare vykresluje uvnitř svého vlastního izolovaného iframe. Ani jedna strana nemůže přečíst zbytek stránky.

Iframe embedu qub (obsluhovaný z qub.social/embed/{tx_id} a načítaný do stránek třetích stran pomocí embed.js) nese vlastní Content-Security-Policy. Jeho seznam povolených zdrojů connect-src je 'self', https://qub.social, https://arweave.net, https://ar-io.dev, https://permagate.io, https://api.drand.sh a https://drand.cloudflare.com. Iframe běží s sandbox="allow-scripts allow-top-navigation-by-user-activation" (bez allow-same-origin): hostitelská stránka nemůže číst jeho DOM a iframe nemůže navigovat hostitele bez akce uživatele.

4.3 CORS a rozsah fetch

Prohlížečový klient činí požadavky fetch pouze na:

Destinace embedu vynucuje jeho CSP. Zamýšlené destinace hlavní SPA jsou pevně stanoveny v kódu a konfiguraci a ověřují je prohlížečové a integrační kontroly; Subresource Integrity není nástrojem pro řízení síťových destinací.

Embed načítá uložené bajty přes povolené zdroje qub/úložiště, rozbaluje soukromé datové úlohy v prohlížeči pomocí K z fragmentu své URL a načítá podpisy kol pro čas odhalení ze dvou povolených zdrojů drand. Hlavní SPA používá čtyřbodovou záložní sadu v config/drand-endpoints.json (drand.cloudflare.com, api.drand.sh, api2.drand.sh a api3.drand.sh), aby výpadek jednoho endpointu neblokoval odhalení. CSP embedu zakazuje připojení mimo svůj výslovný seznam.


5. Serverová infrastruktura

5.1 Bezserverový okraj

Naše API běží zcela na spravovaném bezserverovém runtime na okraji. Neexistují žádné VM, žádné kontejnery a žádné trvalé serverové procesy, které spravujeme. To dramaticky snižuje útočný povrch, za který jsme odpovědni: neprovozujeme OS, webový server ani aplikační runtime, které musíme záplatovat.

Aplikace samostatného veřejného CORS middleware Access-Control-Allow-Origin: * na následující nastavenou cestu: /embed.js, /embed/v1.js, všechno pod /embed/; /api/v1/telemetry; /api/v1/openapi.json; všechno pod /api/v1/qub/ (včetně bajtů, metadat, důkazu, zapojení, oznámení a push podtras); vše pod /api/v1/log/; veřejné zpracování vyhledávání /api/v1/handle/; a veřejný avatar čte dole /api/v1/identity/avatar/. Jeho povolení k předešlému letu GET, POST, a OPTIONS s Content-Type hlavička požadavku. Tato povrchová vrstva založená na předponách je širší než pouze volání, která embed aktuálně provádí, takže každý handler pod těmito předponami musí nadále uplatňovat vlastní ověřování, autentizaci, limity rychlosti a kontrolu zneužití. Ostatní cesty API si zachovávají CORS politiku qub.social-restricted.

5.2 Úložiště

Výchozí prohlížečový tok zpráv neuchovává prostý text v infrastruktuře qub. Builder /api/v1/seal zpracovává prostý text a K v paměti, ale neuchovává ani jedno. Příprava paktu nutně uchovává podepsaný strukturovaný pakt, dokud není spolupodepsán, stažen nebo nevyprší. Dobrovolná obnova uchovává doručovací oprávnění (úplný odkaz s fragmentem), aby je bylo možné později obnovit. Celou úložištní vrstvu proto nepopisujeme jako „pouze metadata“.

5.3 Tajemství

Tajemství (podpisové peněženky, tokeny poskytovatelů a klíče HMAC) jsou dodávána prostřednictvím vazeb tajemství či prostředí spravovaných platformou, nikoli přes správu zdrojového kódu. Komponenty za běhu dostávají pouze vazby, které potřebují. Postupy rotace a překryvu jsou specifické pro jednotlivé komponenty; netvrdíme, že existuje jediný univerzální automatický nebo auditovaný mechanismus rotace.

5.4 Protokolování a telemetrie

Strukturované protokoly JSON jsou zapisovány při každém požadavku API s korelačním ID zobrazeným v hlavičce odpovědi X-Request-Id. Klientská telemetrie je anonymní — žádný identifikátor zařízení, žádná IP adresa, žádný náhled obsahu. Události jsou bufferovány v paměti a vyprazdňovány na základě nejlepšího úsilí; neúspěšné vyprázdnění je zahozeno, nikoli opakováno. Telemetrie je navržena tak, aby ji bylo možné zakázat na síťové vrstvě bez ovlivnění produktu.


6. Ověřování

6.1 Přihlášení přihlašovacím odkazem

Přihlášení používá jednorázový token podepsaný HMAC doručený do vaší e-mailové schránky. Odkaz je platný 15 minut a jeho uplatnění se atomicky nárokuje, takže souběžné nebo opakované použití bezpečně selže. Po úspěchu dostane prohlížeč neprůhledný soubor cookie __Host-qub_session s atributy Secure, HttpOnly, SameSite=Strict a Path=/.

Relace mají limit nečinnosti 30 dnů a absolutní limit 90 dnů, po 24 hodinách se obměňují a pouze bezprostředně předchozí generaci přijímají během 120sekundové lhůty pro ztracenou odpověď. Citlivé změny účtu vyžadují ověření v předchozích 10 minutách. Tajemství podpisu HMAC je vazbou platformy; samotné čtení metadat nestačí k vytvoření platného tokenu.

6.2 API klíče (úroveň pro vývojáře)

API klíče pro vývojáře používají předponu qub_sk_ pro snadné rozpoznání a vyhledatelnost. Každý klíč:

Administrátorské koncové body pro správu klíčů jsou hlídány za samostatným administrátorským pověřením.

6.3 Atestace e-mailu (podepisování autorství)

Svázání e-mailové adresy s podpisovým klíčem vyžaduje:

  1. Držení soukromého podpisového klíče (podepíšete výzvu)
  2. Držení e-mailové schránky (zadáte 6místný kód doručený e-mailem)

Kterékoli samostatně je nedostatečné. Odvolání je podepsaný záznam na vašem vlastním účtu a nabývá účinnosti okamžitě; diváci načítající atestaci vidí odvolaný stav a zobrazí jej odpovídajícím způsobem.


7. Platby

Zadávání a zpracování karty probíhá v pokladně hostované společností Stripe. Nikdy nedostáváme čísla karet, data vypršení ani CVC. Na záznamech nároků/API klíčů uchováváme identifikátory zákazníka a předplatného Stripe, stav předplatného a údaje o období, aby bylo možné sladit přístup, obnovení, měření, zrušení a vrácení plateb. Nakládání Stripe s platebními údaji se řídí jeho prohlášeními o soukromí a zabezpečení.

Koncový bod pečetění křížově kontroluje záznam o nároku oproti identifikátoru zařízení a, u přihlášených uživatelů, oproti propojené identitě. Nárok nelze znovu použít napříč zařízeními, aniž by jej uživatel výslovně obnovil prostřednictvím přihlášení přihlašovacím odkazem.


8. Odolnost vůči zneužití

8.1 Detekce botů

Tok pečetění je hlídán alternativou CAPTCHA chránící soukromí, která nepoužívá cookies ke sledování a nesnímá otisky pro reklamu. Neúspěšná výzva je odmítnuta naším okrajovým Workerem dříve, než nastane jakékoli zpracování na straně pečetění.

8.2 Omezování rychlosti

Omezení rychlosti jsou vynucována na několika vrstvách:

Počitadla a atomické nároky jsou podle požadavků endpointu na konzistenci rozděleny mezi KV, Durable Objects a platformní vazby omezení rychlosti. Omezené požadavky vracejí stav 429; endpointy, které dokážou vypočítat interval opakování, zahrnují Retry-After.

8.3 Moderování obsahu

Výchozí trasa pro nahrávání přes prohlížeč nemůže skenovat tělo: přijímá pouze klientem zapečetěný artefakt. Stavebník /api/v1/seal trasa dočasně vidí prostý text a příprava paktu uchovává strukturované podmínky až do dokončení, ale tyto výjimky důvěry nezmění obecnou cestu nahrávání slepou k byteům na skener obsahu. Provozní moderace je seznam blokovaných na vrstvě prohlížeče: qub na seznamu odmítnutých je naším prohlížečem odmítnut bez ohledu na to, zda je uložený obsah stále dostupný. Zařazení na seznam odmítnutých neodstraňuje trvalé bajty, záznamy v transparentním registru ani data v trvalé síti, která již byla publikována.

Hlášení o zneužití jsou omezena rychlostí pomocí jednosměrného hashe IP nahlašovatele; IP pro tento účel neukládáme v čitelné podobě.


9. Dodavatelský řetězec a integrita buildu

9.1 Připnutí toolchainu

Verze kompilátoru a runtime jsou připnuté v konfiguraci repozitáře a závislosti se řeší pomocí commitnutých lockfile. CI kontroluje aktuálnost generovaných souborů a invarianty citlivé na reprodukovatelnost. Netvrdíme však, že každý build z čistého checkoutu je na všech podporovaných počítačích bitově identický.

9.2 Linty a statická analýza

Pracovní prostor povoluje naše nejpřísnější skupiny lintů na úrovni deny. CI zachází s každým varováním — včetně varování o odkazech v dokumentaci — jako se selháním buildu. To je záměrné: přísnost lintů používáme jako nástrahu pro nenápadné regrese.

9.3 Brány CI

Workflow CI pokrývá formátování a přísné linty; testy Rustu, WASM/prohlížeče, Workeru, embedu a API; kontrolu typů; pokrytí kódu; mutační a invariantní kontroly; statickou analýzu závislostí a workflow; kontrolu klíčů, pokrytí, driftu a nepřátelských kódových bodů i18n; aktuálnost generované dokumentace, API a znalostní báze; inventář dokumentů a kontrolu interních odkazů; rozpočty stylů a balíčků a validaci OpenAPI. Některé nákladné mutační úlohy se spouštějí podle plánu, nikoli při každém odeslání.

Jediný povinný souhrnný stav ci zůstane červený, pokud selže kterákoli povinná úloha. Workflow chráněných větví a nasazení používají tento výsledek namísto duplikování menší bezpečnostní brány.

9.4 Mutační testování

Týdenní úloha spouští mutační testování oproti bezpečnostně kritickým čistým modulům: hašování, kanonický CBOR, pečetění, odemykání, newtypy formátu na drátě, validátory protokolových typů a jmenný prostor přezdívek. Mutační testování odpovídá na otázku „zachytí naše sada testů nenápadně nesprávný kód?“ — pokud zmutovaná implementace stále projde všemi testy, víme, že máme mezeru v pokrytí testy, a řešíme ji.

9.5 Git hooky

Lokální hooky (pre-commit, pre-push) zrcadlí brány CI, takže regrese jsou zachyceny dříve, než opustí počítač vývojáře. Hooky jsou instalovány prostřednictvím skriptu repozitáře; v našem workflow nejsou obcházeny a CI je autoritativní branou, pokud jsou přeskočeny.


10. Testování

Bezpečnostně kritický kód nese tři druhy testů:


11. Hygiena větví a vydání

Větve funkcí posouvají staging pouze prostřednictvím pull requestu Gate 1: povinné ci je zelené, není zde nevyřešený požadavek na změnu ani konflikt sloučení a strom je čistý a zkontrolovaný; sloučení probíhá metodou squash a větev se smaže. main se posouvá pouze pull requestem Gate 2 staging → main, který zachovává historii pomocí merge commitu. Přímé odesílání do větví není postupem vydání.

Nasazení stagingu a produkce se spouští z odpovídajících stavů chráněných větví staging a main po průchodu CI. Kód pull requestu ani přihlašovací údaje forků nedostávají tajemství pro nasazení.

Tajemství používaná v nasazovacích workflow jsou naší platformou CI vymezena na nasazovací prostředí. Nejsou dostupná workflow pull-requestů z forků.


12. Koordinované zveřejnění

Pokud se domníváte, že jste našli bezpečnostní zranitelnost v qub, chceme o ní rychle slyšet a zavazujeme se zpracovat hlášení profesionálně.

Přijetí potvrdíme do tří pracovních dnů a budeme vás informovat, jak vyšetřujeme. S vaším souhlasem připisujeme nahlašovatele v poznámkách k vydání.

12.1 Bezpečný přístav (Safe Harbor)

Pokud váš výzkum dodržuje výše uvedená pravidla (vyšetřování v dobré víře, žádná újma ostatním uživatelům nebo službě, přiměřené okno pro zveřejnění), nepodnikneme proti vám právní kroky a nepožádáme orgány činné v trestním řízení, aby tak učinily. K vaší práci přistupujeme jako k autorizovanému testování a raději bychom, abyste chybu našli vy, než někdo jiný.

Tento bezpečný přístav se vztahuje na:

Nevztahuje se na sociální inženýrství vůči členům týmu qub, testy odepření služby ani přístup k datům ostatních uživatelů nad rámec toho, co je potřeba k prokázání problému. Pokud si nejste jisti, zda něco spadá do bezpečného přístavu, zeptejte se nejprve pomocí stejné předpony předmětu [SECURITY].


13. Upřímná omezení

Bezpečnost je praxe, nikoli stav. Některá omezení stojí za přímé pojmenování:


14. Změny této stránky

Závažné změny jsou poznamenány aktualizací data účinnosti v horní části. Tam, kde změna odráží konkrétní zlepšení zabezpečení, ji stručně popíšeme ve veřejném changelogu. Tam, kde změna odráží upřesnění zásad, popíšeme, co se změnilo a proč.

Pro dotazy ohledně čehokoli na této stránce napište na support@qub.social s předponou předmětu [SECURITY].


15. Protokol změn

Verze Datum účinnosti Shrnutí
1.1 23. září 2026 Sladěna tvrzení o kryptografii, režimech doručení, úložišti, CSP, relacích, API klíčích, platbách, CI a postupu vydání s implementovaným systémem.
1.0 2. května 2026 První zveřejnění.