---
title: Anonymizátor, ktorý prešiel
type: failure
level: L2
status: live
revision: 1
updated: 2026-08-14
systemVersion: 4.2
authoring: machine-translated
tags: [anonymity, publishing, gates, failure]
rating: 8.70
ratingAxes: useful 8 · evidence 9 · pull 9 · original 9 · form 9
ratingKind: derived
source: internal build log, 2026-08-14
---

# Anonymizátor, ktorý prešiel

_Written 2026-08-14 · last verified 2026-08-14 · system v4.2 · live_

**TL;DR** — Zoznam zakázaných mien schválil článok a označil ho ako pripravený na publikovanie. Nebol bezpečný. Tri obyčajné frázy v jednom odseku zúžili okruh zamestnávateľa autora na hŕstku spoločností, a to bez toho, aby padlo čo i len jedno meno. Riešením bolo prestať počítať zakázané slová a namiesto toho počítať, koľko nezávislých identifikačných kategórií sa objavuje v tom istom materiáli. Prah: dve.

## Symptóm

Článok mal v stavovom riadku `ready to publish · anonymization verified`. Prešiel automatizovanou kontrolou: zoznamom zakázaných výrazov obsahujúcim názvy spoločností, mená ľudí, názvy produktov a domény, ktorý sa spúšťa na každom materiáli počas zostavovania. Nula zásahov. Schválené.

Druhá kontrola, napísaná to isté popoludnie z nesúvisiaceho dôvodu, ho okamžite označila.

Článok neprezrádzal meno. Prezrádzal identitu, a to v jedinom úvodnom odseku, ktorý znel približne takto:

> Kontext: Som CEO strednej B2B spoločnosti v odvetví [sektor], ~[NN] ľudí naprieč [N] subjektmi ([štyri pomenované vertikály]).

Hodnoty v zátvorkách sú tu zo zjavného dôvodu začiernené. Podstatný je tvar, nie samotný obsah: sektor, pásmo počtu zamestnancov a rozpis portfólia — v jedinej vete.

Ak to čítate ako človek, ide o nastavenie kontextu. Ak to čítate ako dotaz, ide o filter: sektor plus pásmo počtu zamestnancov plus veľmi špecifický tvar portfólia. V jednom regióne má takáto množina možno tucet členov. S detailom o portfóliu ešte menej.

## Hlavná príčina

Kontrola odpovedala na nesprávnu otázku.

Zoznam zakázaných výrazov odpovedá na otázku *„obsahuje tento text zakázaný reťazec?"* Je to užitočná otázka a zachytí zjavnú chybu — vloženie mena zákazníka do prípadovej štúdie. V praxi však deanonymizácia takmer nikdy nefunguje takto. Funguje na princípe **priesečníka**. Každý fakt sám osebe je neškodný a zdieľajú ho tisíce spoločností. Spolu však identifikujú jednu.

Nič v pipeline nemeralo priesečník. Každá kontrola bola testom príslušnosti k zoznamu a každá z nich, správne, prešla — pretože nebol prítomný žiadny zakázaný člen.

Pod tým sa skrýva zlyhanie druhého rádu. Frázu `anonymization verified` napísal ten istý proces, ktorý spúšťal zoznam zakázaných výrazov, takže schválenie zdedilo jeho slepé miesto, hoci znelo ako širšia záruka. Zelená na kontrolu, ktorá pokrýva len jeden typ zlyhania, by mala povedať, ktorý.

## Náklady

Nič sa nepublikovalo, takže priame náklady sú nulové. To je však šťastie, nie zásluha procesu — článok ležal v priečinku s obsahom označený ako pripravený **84 dní** a bol by vyšiel s najbližším spustením publikovania.

Skutočné náklady spočívajú v tom, čo tento tesný únik odhalil: druhú nezrovnalosť v tom istom odseku. Uvádzal jedno pásmo počtu zamestnancov. Vlastný pamäťový súbor systému, napísaný o mesiace skôr, uvádzal iné. Jedno z nich bolo nesprávne a nikto nevedel ktoré, pretože žiadna kontrola neporovnáva tvrdenie s pásmom, ku ktorému sa systém už inde zaviazal.

Chyba v anonymizácii nie je vratná. Vyrovnávacie pamäte (cache), archívy a tréningové behy modelov retrakciu nerešpektujú.

## Náprava

Prestať počítať zakázané slová. Počítať **kategórie**.

Definovali sa štyri kategórie — obrat, počet zamestnancov, sektor, geografia — každá s malou sadou vzorov. Zostavovací proces teraz prehľadá každý materiál a nahlási, koľkých *odlišných* kategórií sa dotýka. Prah sú dve.

```
KRIZENIE PASIEM — 1 artefaktov nesie 2+ identifikacne kategorie:
   annotated-claude-md    revenue:"€5" + headcount:"~NN people"
```

Prvý beh vyprodukoval aj falošne pozitívny výsledok, ktorý stojí za to zaznamenať: `€5` pochádzalo z nesúvisiaceho prahu pravidla — `stakes >€5K` — nie z tvrdenia o obrate. Vzor sa sprísnil tak, aby vyžadoval príponu rádovej veľkosti, takže prah pravidla ako `€5K` sa už nečíta ako pásmo obratu, zatiaľ čo hodnota ročného obratu áno naďalej. Kontrola, ktorá kričí „vlk", sa do týždňa vypne.

Problematický odsek sa prepísal tak, aby niesol jednu kategóriu namiesto troch. Ponechal sektor, vypustil počet zamestnancov aj rozpis portfólia a nestratil nič, čo by čitateľ potreboval.

## Prevencia

Z toho vyplynuli tri pravidlá a všetky tri presadzuje zostavovací proces, nie spoliehanie sa na pamäť:

1. **Čísla o systéme sú voľné; čísla o spoločnosti sú pásmové, a to najviac jedno pásmo na materiál.** Behy, relácie, tokeny, miery zlyhaní, latencia — publikujte to všetko. Obrat, počet zamestnancov, sektor, geografia — najviac jedno.
2. **Pomer je bezpečnejší ako absolútna hodnota a zvyčajne aj zaujímavejší.** *„Približne 12 % rozhodnutí s finančným dopadom sa dotýka agenta"* nesie poznatok. Číslo obratu nesie identitu a žiadny poznatok.
3. **Schválenie pomenúva kontrolu, ktorú vykonalo.** Nie `anonymization verified`, ale `deny-list: 0 hits; cross-check: 1 category`. Druhá forma nemôže potichu narásť do sľubu, ktorý nikto nedal.

Zoznam zakázaných výrazov ostáva. Nebol nesprávny, bol úzky — a zlyhaním bolo veriť, že úzka kontrola je širokou.
