# Suttogj - anonimitás - threat model *Frissítve: 2026-09-20 · Hatókör: kitől mit véd az anonim Q&A, és mit nem. A `/anonimitas` oldalról egy kattintásra elérhető; a garanciák a séma és a proxy-konfiguráció alapján ellenőrizhetők, szolgáltatói ígéret nélkül. Az adverzariális review (2026-09-20) leletei és a javítások: `docs/review-2026-09-20.md`, ADR-0007.* ## Mit tárolunk Résztvevői adat: `text`, `minute_bucket`, `status` (+ `upvotes`, `cluster_id`, `source`, `answer_ts`). Értékelésnél `q1-q3`, `free_text`, `minute_bucket`. Séma: `db/schema.sql`. IP-cím, user-agent, süti, eszköz-azonosító, e-mail és token oszlop nincs. A token a szerver memóriájában él, az esemény lezárásával megsemmisül. A kérdés-azonosító (`id`) az adatbázis belső, növekvő sorszáma; a résztvevői feed ezt közli. ## Szereplők és fenyegetések | Szereplő | Mit láthat | Mit nem láthat | Ellenintézkedés | Maradék kockázat | |---|---|---|---|---| | **Szolgáltató (mi)** | kérdés-szöveg, percre kerekített időpont, státusz | IP, eszköz, süti, ki kérdezte | Az alkalmazás scope-ából az IP-, UA- és süti-fejlécet a legkülső middleware kitörli; uvicorn `--no-access-log`; a token nincs DB-ben. A Caddy a résztvevői, moderátori, kivetítői útvonalakat egyáltalán nem naplózza, a fejlécek teljes részfáját törli | A hoszt szintű hálózati figyelés kívül esik; ezért a pilot dedikált gépen fut, audit-móddal. A hosztolt Caddy-konfiguráció eltérhet a repóbeli mintától: az ügyfél IT-je a tényleges fájlt nézze meg | | **Moderátor** | a kérdések szövege, a jelölések, **a beérkezés idejét (~0,25 s pontossággal, azonosító-sorrendben)** | a kérdező bármilyen azonosítóját | Alapból az élő moderálás valós idejű: a kötegelés a résztvevőkre és a kivetítőre vonatkozik. A `moderator_koteg` beállítással a beérkező sor a moderátornak is csak a köteggel jelenik meg (ADR-0007). A moderátori link titkos, szűk kör kezeli | Ha a moderátor a teremben ül és látja, ki nyúl a telefonjához, a kérdés személyhez köthető. A moderátor bizalmi szerep | | **Munkáltatói hálózat** | hogy a résztvevő eszköze megnyitotta a domaint, mikor és mennyi adatot | a kérdés tartalmát (TLS) | A/B/C anonimitás-jelvény; a képernyőn kimondott tipp: saját telefon, mobil adat | Céges hálózaton vagy eszközön a domain-megnyitás látszik. Ez a szolgáltatón kívüli réteg | | **A terem** | aki a kivetítőt és a résztvevő képernyőjét látja | a kérdező kilétét, ha a kérdés nem árul el róla semmit | Kötegelt megjelenítés (60-90 s) az időzítés-korreláció ellen; a beküldés ideje kívülállónak nem kérdezhető le (a saját-státusz tulajdonhoz kötött, ADR-0007); az értékelés összesítője csak egyszeri kiengedéssel jelenik meg | Aki látja, ki nyúlt a telefonjához a köteg előtt, kitalálhatja a kérdezőt; a kötegelés ezt nehezíti, nem zárja ki. A kérdés-azonosítók sorrendje a kötegen belül kiolvasható a feedből (elfogadott maradék kockázat) | | **Stilometria** | a szabad szöveg írásmódját | - | rövid (280 karakteres) kérdések, a moderátor kiemelhet és átfogalmazhat | Ismert szerzői stílus alapján a kérdező azonosítható lehet. Nincs technikai gát, csak a rövidítés | | **Hatóság** | amit tárolunk: szöveg, perc, státusz | IP-t, eszközt: azt nem tároljuk, ezért kiadni sem tudjuk | 90 napos automatikus törlés (törlés, WAL-checkpoint, VACUUM; sikertelen tisztításnál a szolgáltatás hibát jelez); nincs naplózott azonosító | A hálózati szolgáltatók saját naplói kívül esnek. A mentések 14 napig megmaradnak, tehát a törölt esemény szövege onnan legfeljebb 14 nap késéssel ürül | | **Az eszköz tulajdonosa / a telefon későbbi megvizsgálója** | a böngészőben maradt token, a saját kérdések szövege (IndexedDB), a service worker | - | A token TTL-je 6 óra; a kliens minden betöltéskor törli a lejárt és a 24 óránál régebbi nyomokat; szigorú módban semmi nem tárolódik és a korábbi állapot is törlődik; a felület „Nyomok törlése erről az eszközről" gombot ad | Aki nem tér vissza az oldalra és nem nyomja meg a gombot, annál a nyomok a böngésző adatainak törléséig megmaradnak. Közös vagy céges eszközön szigorú módot vagy a gombot ajánljuk | | **Brigád, kiszivárgott link** | a belépőkódot | - | Új token csak érvényes proof-of-work és tartalom után kap helyet; token-kapu (3 kérdés / token, 1 upvote / kérdés); forgó QR nagy teremben (élő és lezárt szakaszban a belépés a terem jelenlétéhez kötött, a gyűjtési szakaszban felvett token újra igazol); esemény-szintű tokenkeret; a moderátor „beérkezés befagyasztása" gombja | A proof-of-work költsége alacsony (alapon ~1 ms). Link-alapú (nem forgó QR-es) eseményen egy szkript egyetlen gépről is küldhet kérdést és értékelést, ha vállalja a PoW-t; a tömeges beküldés a moderátori sorban látszik, a moderátor a záró kapu. Jelenlét vagy több eszköz nem szükséges hozzá | | **Szavazás (ADR-0008)** | a szavazás kérdését és lehetőségeit, lezárás után (N szavazat fölött) az összesítést | a szavazó kilétét és a szavazatok beérkezési idejét: szavazatonként sor, idő és token nincs, csak lehetőségenként egy számláló | tokenenként egy szavazat (memóriában), proof-of-work, forgó QR mellett belépőkód; nyitott szavazásnál darabszám sehol nem látszik, az eredmény csak a lezárás után és N szavazat fölött | A szerver újraindulása után ugyanaz a token újra szavazhat; link-alapú eseményen egy szkript egyetlen gépről is szavazhat (a moderátor a szavazást lezárhatja, az eredmény megítélése az övé) | | **Értékelés-hamisítás, kis csoport** | - | - | Az értékelés a Lezárt szakaszban gyűjthető, az összesítő az Utólagos szakaszban jelenik meg egyszer; az összesítő N≥5 válasz felett látszik; forgó QR mellett az értékelés belépése is a terem jelenlétéhez kötött | Link-alapú eseményen a beküldők száma nem független a támadótól: N-1 hamis értékelés + 1 valódi mellett a szabad szöveg a küszöbön átlépve kiadódik a moderátornak. Kis KKV-meetingen forgó QR használata javasolt | ## Amit a rendszer nem tud garantálni - Ha a kérdés szövege elárulja a szerzőt, az anonimitás elveszik. A moderátor feladata a jelölt kérdések (személynév, kapcsolati adat) átnézése; a szűrő csak sárgára jelöl, a döntés emberi. - A résztvevő eszközét és hálózatát nem mi felügyeljük (lásd az A/B/C szinteket). - A szerver újraindulása után a memóriabeli tokenállapot elvész: a résztvevő nem tudja visszavonni a még el nem bírált kérdését, a kérdésszámláló nullázódik, és az újrapróbált beküldés duplikátumot hozhat létre (a moderátor összevonja). ## Hogyan ellenőrizhető 1. `/anonimitas/schema.sql`: nincs IP/UA/süti/token oszlop. 2. `/anonimitas/caddyfile.txt`: a napló IP nélküli, fejléc- és útvonal-mentes (a repóbeli minta; a futó szerveren az ügyfél IT-je a tényleges fájlt nézi). 3. Böngésző Network-fül: egyetlen origin, harmadik fél kérés nincs. 4. Pilot: a dedikált gépen az ügyfél IT-je a tényleges Caddy- és systemd-konfigurációt megnézheti (audit-mód).