Architektura zabezpečení

    Jak fungují tajné odkazy LinkPilot

    Srozumitelný přehled toho, jak obsah tajných zpráv ukládáme, zobrazujeme a ničíme, a co s ním záměrně neděláme.

    klíč = část za znakem # · nikdy se neodesílá · AES-GCM-256

    Tajné odkazy jsou soukromé už svou konstrukcí. LinkPilot odděluje sdílení tajných zpráv od statistik marketingových odkazů. Obsah tajných zpráv nikdy nepoužíváme pro statistiky ani profilování.

    Našli jste zranitelnost nebo zneužívaný odkaz? Nahlaste ho tady. Hlášení jdou přímo našemu týmu.

    1. Přehled

    LinkPilot provozuje na jedné platformě dva oddělené systémy odkazů: krátké odkazy se statistikami pro krátké odkazy s vlastní doménou a statistikami kliknutí a tajné odkazy pro jednorázové předání citlivého obsahu s omezenou platností a ochranou heslovou frází. Oddělujeme je na úrovni dat, kódu i produktu, aby se obsah tajných zpráv nikdy nemohl dostat do statistik v řídicím panelu, exportů dat ani funkcí AI.

    Tato stránka popisuje konkrétně systém tajných odkazů: jak tajná zpráva vzniká, jak se zobrazí, co se stane po zobrazení a jaká metadata se přitom zaznamenávají.

    2. Jak tajné odkazy fungují

    1. Odesílatel vytvoří tajnou zprávu a volitelně nastaví heslovou frázi, dobu platnosti a počet zobrazení, po kterém se zpráva zničí.
    2. Prohlížeč odesílatele obsah zašifruje dřív, než cokoli odešle. K nám dorazí jen šifrový text, který se zapíše do samostatné tabulky secret_links, oddělené od tabulek se statistikami kliknutí.
    3. LinkPilot vrátí krátkou adresu URL (např. shrd.link/s/<slug>#k=<key>), kterou pošlete příjemci. Část za znakem # je dešifrovací klíč. Vzniká v prohlížeči odesílatele a nikdy se k nám nepřenáší. Tuto adresu URL proto později nedokážeme znovu sestavit.
    4. Když příjemce odkaz otevře, aplikace zavolá funkci edge secret-reveal. Požadavek GET vrátí jen metadata (stav a zda je nutná heslová fráze). Šifrový text vrátí až POST s heslovou frází. Prohlížeč příjemce ho pak dešifruje klíčem z fragmentu adresy URL; samotná funkce pro zobrazení nic nedešifruje a ani by to nedokázala.
    5. Úspěšné zobrazení se zaznamená atomicky a podle nastaveného počtu zobrazení může tajnou zprávu rovnou označit jako burned.

    3. Model šifrování

    Tady chceme být přesní, protože slova „šifrovaný“ a „zero-knowledge“ se často používají volně.

    • Při přenosu: veškerý provoz mezi příjemcem, naší vrstvou edge a naší spravovanou databází je po celé cestě šifrován protokolem TLS.
    • Ve vašem prohlížeči, před přenosem: od 29. září 2026 se obsah šifruje na straně klienta algoritmem AES-GCM-256 s 256bitovým klíčem, který vzniká ve vašem prohlížeči. Ukládáme šifrový text a nic jiného. Klíč je ve fragmentu sdíleného odkazu, za znakem #, a tuto část prohlížeče neposílají na žádný server: ani nám, ani službě Cloudflare, která obsluhuje stránku pro zobrazení.
    • V úložišti: šifrový text leží ve sloupci logicky odděleném od dat statistik, ve spravované instanci Postgres, která má navíc šifrování na úrovni disku.
    • Heslové fráze: pokud ji nastavíte, převede se do standardního tvaru Unicode (NFKC), aby stejná heslová fráze zadaná na jiné klávesnici nebo jinou metodou vstupu dala stejný klíč. Pak se posílí funkcí PBKDF2-SHA256 (210 000 iterací) a pomocí HKDF-SHA256 se zkombinuje s klíčem odkazu, takže tajnou zprávu nedešifruje samotný odkaz ani samotná heslová fráze. Zvlášť se odesílá hash SHA-256 heslové fráze, aby server mohl volajícímu, který ji nezná, šifrový text vůbec nevydat. Heslovou frázi v čitelné podobě nikdy nezapisujeme do databáze ani do logů.
    • Co to chrání a co ne: nás, naši databázi i vrstvu edge to vyřazuje z okruhu, kterému musíte důvěřovat. Nechrání to tajnou zprávu, jejíž celý odkaz někdo přeposlal, vyfotil na snímek obrazovky nebo zaznamenal nějaký nástroj na straně příjemce, protože v tom odkazu je klíč.
    • Dvě výjimky, otevřeně: tajné zprávy vytvořené před 29. zářím 2026 jsou uloženy jako nešifrovaný text. Nikdy je potichu nepřepisujeme, fungují přesně jako dřív a postupně zmizí, jak jim vyprší platnost. Přiložené soubory se také šifrují v prohlížeči, klíčem odvozeným z klíče tajné zprávy, takže jeden odkaz otevře obojí a my nemáme klíč ani k jednomu. Dál vidíme název, velikost a typ souboru: to jsou sloupce s metadaty, ne obsah. Přílohy nahrané před 29. zářím 2026 zůstávají uložené jako nešifrované soubory.

    Z toho plyne praktický důsledek: klíč nikdy nemáme, a proto vám tajnou zprávu nemůžeme obnovit. Pokud se sdílený odkaz ztratí, obsah je pryč.

    Ověřte si to sami. Šifrování v prohlížeči nám nemusíte věřit na slovo. Stejný šifrovací kód je v našem open source repozitáři linkpilot-cli (licence MIT), který obsahuje CLI, SDK pro TypeScript a server MCP. V repozitáři jsou i testovací vektory, podle kterých se kontroluje webová aplikace. Můžete si tedy přečíst odvozování klíčů, spustit vektory a ověřit, že z klienta odchází jen šifrový text a klíč jde výhradně do fragmentu odkazu. Pokud najdete rozpor mezi tímto kódem a touto stránkou, nahlaste ho.

    4. Co se stane po zobrazení tajné zprávy

    • Zobrazení se zaznamená atomicky databázovou funkcí, takže souběžné pokusy o zobrazení nemohou tajnou zprávu vyzradit dvakrát.
    • Jakmile se dosáhne limitu zobrazení, stav tajné zprávy se přepne na burned a uložený obsah se přepíše hodnotou [REDACTED].
    • Další pokusy o zobrazení vrátí jasnou odpověď „už zobrazeno a zničeno“ s kódem HTTP 410.
    • Časová osa auditu zaznamenává každé zobrazení, zničení i zneplatnění spolu s hashem IP adresy. Hodí se při řešení bezpečnostních incidentů a při změně přihlašovacích údajů.

    5. Vypršení platnosti a zneplatnění

    • Každá tajná zpráva může mít časově omezenou platnost (v každém tarifu 1 hodina, 24 hodin nebo 7 dní, v tarifu Pro i vlastní datum a čas) a volitelný limit počtu zobrazení.
    • Tajné zprávy s vypršelou platností se při dalším přístupu přepnou na expired a v témže zápisu se jejich obsah přepíše.
    • Vlastník může tajnou zprávu kdykoli ručně zneplatnit v řídicím panelu. Zneplatněné tajné zprávy se okamžitě přestanou zobrazovat a vracejí HTTP 410.
    • Jakmile je tajná zpráva zničena, vyprší jí platnost nebo je zneplatněna, obsah už v produktu obnovit nejde. Akci „zrušit zneplatnění“ ani „obnovit“ záměrně nenabízíme.

    6. Ochrana heslovou frází

    • Heslové fráze jsou volitelné, ale doporučujeme je u každé tajné zprávy, kterou nesmí otevřít a tím zničit někdo, kdo na odkaz náhodou narazí.
    • Heslová fráze se v prohlížeči převede na hash SHA-256, odešle se přes TLS a server ji porovná podle hashe. Původní hodnota se do naší databáze nikdy nedostane.
    • Pokusy o zadání heslové fráze omezujeme na 5 za minutu z jedné IP adresy pro každou tajnou zprávu. Limit hlídá omezovač v paměti i klouzavé okno v databázi.
    • Každý neúspěšný pokus se zapíše do auditního záznamu s hashem IP adresy, takže vlastníci pracovního prostoru vidí podezřelou aktivitu.
    • Heslovou frázi doporučujeme poslat jiným kanálem než samotný odkaz, například odkaz e-mailem a heslovou frázi přímou zprávou ve Slacku nebo v SMS.

    7. Ochrana před skenery odkazů a boty pro náhledy

    Bezpečnostní skenery e-mailu a náhledy odkazů v chatovacích aplikacích (Slack, LinkedIn, iMessage, Outlook) běžně načítají adresy URL hned, jak se objeví. U odkazu, který se po přečtení zničí, by naivní návrh znamenal, že tajnou zprávu zničí už první náhled, dřív než ji příjemce uvidí.

    LinkPilot tomu brání třemi způsoby:

    • Oddělené koncové body pro metadata a pro zobrazení. GET na koncovém bodu pro zobrazení vrátí jen stav a informaci, zda je nutná heslová fráze. Zobrazení se zaznamená jen při výslovném požadavku POST, který odešle člověk kliknutím na tlačítko Zobrazit.
    • Brána heslové fráze. Pokud je heslová fráze nastavená, nikdo, bot ani člověk, bez správného hashe nedostane žádný obsah.
    • Cache-Control: no-store u každé odpovědi se zobrazením, aby zprostředkující servery obsah tajných zpráv neukládaly do mezipaměti.

    8. Jaká metadata zaznamenáváme

    U každého pokusu o zobrazení zaznamenáváme jen to, co je potřeba, aby vlastníci pracovního prostoru měli věrohodnou auditní stopu:

    • Časové razítko pokusu.
    • Hash IP adresy: SHA-256 z IP adresy klienta spojené se solí, která se mění každý den, zkrácený na 32 znaků. Původní IP adresu nikdy neukládáme.
    • Přibližná poloha (země a město) z vrstvy edge, pokud ji poskytovatel předá.
    • Řetězec User-Agent, který klient nahlásí.
    • Typ události: created, viewed, failed_passphrase, burned, expired, revoked.

    Nezaznamenáváme obsah tajné zprávy, heslovou frázi v čitelné podobě, původní IP adresu, soubory cookie u příjemce (žádné tam nejsou) ani sledovací pixely třetích stran.

    9. Rozdíl mezi tajnými odkazy a odkazy se statistikami

    HlediskoKrátké odkazy (statistiky)Tajné odkazy
    ÚčelKrátké odkazy s vlastní doménou a sledováním kliknutíJednorázové bezpečné předání s omezenou platností
    ÚložištěOdkazy a události kliknutíŠifrový text v oddělené tabulce secret_links, po zničení přepsaný
    Data o každém kliknutíHash IP adresy, referrer, UA, poloha, UTMHash IP adresy, UA, poloha, typ události, bez obsahu
    Použití pro statistiky a AIAno (agregovaně, hashované)Nikdy, zcela vyloučeno
    ŽivotnostTrvalé, dokud je nesmažeteZničení, vypršení nebo zneplatnění; obsah pak nelze obnovit
    Náhledy botůPočítají se jako boti a ve statistikách se odfiltrujíGET vrátí jen metadata, boti obsah nezobrazí

    Oba systémy sdílejí značku, řídicí panel i týmová nastavení, ale jejich datové toky se nekříží.

    10. Přílohy

    • Soubory se šifrují v prohlížeči klíčem odvozeným z klíče tajné zprávy, takže jeden odkaz otevře text i soubor.
    • Doručujeme je přes krátkodobě platné podepsané adresy URL a platí pro ně stejná heslová fráze, platnost a zničení jako pro text.
    • Název, velikost a typ souboru pro nás zůstávají viditelné jako metadata, jeho obsah ne.
    • Přílohy nahrané před 29. zářím 2026 zůstávají uložené jako nešifrované soubory, dokud nevyprší; nikdy je nepřepisujeme.

    11. Uchovávání dat

    • Obsah tajné zprávy se přepíše, jakmile se zpráva zničí, vyprší jí platnost nebo je zneplatněna. Obnovení záměrně neexistuje a nemůžeme vám ji obnovit.
    • Data účtu uchováváme, dokud je pracovní prostor aktivní, a 30 dní po jeho smazání, aby šlo nechtěné smazání vrátit.
    • Statistiky kliknutí na krátké odkazy se po 90 dnech agregují do anonymizovaných počtů.
    • Události časové osy auditu uchovávají jen hashované a osolené hodnoty popsané v oddílu 8; žádnou původní adresu tedy neuchováváme.

    12. Anonymní tajné zprávy a tajné zprávy v pracovním prostoru

    Bezplatný generátor tajných odkazů vytváří tajné zprávy bez účtu. Volba „Zničit po přečtení“ je vždy zapnutá, platnost je 1 hodina, 24 hodin nebo 7 dní, formulář před automatizovaným zneužitím chrání Turnstile a platí stejné šifrování v prohlížeči.

    Tajná zpráva v pracovním prostoru navíc nabízí časovou osu auditu, zneplatnění z řídicího panelu, přílohy a v tarifu Pro také heslové fráze a vlastní datum a čas vypršení. Model šifrování je v obou případech stejný.

    13. Omezení, otevřeně

    • Přeposlaný odkaz je přeposlaná tajná zpráva. Nic v návrhu nezabrání příjemci, aby odkaz předal dál, než ho otevře. Riziko zmírňuje krátká platnost a heslová fráze poslaná jiným kanálem.
    • Ztracený odkaz je ztracená tajná zpráva. Klíč nikdy nemáme, takže není co obnovit.
    • Výjimka pro zprávy před 29. zářím. Tajné zprávy vytvořené před tímto datem byly až do vypršení platnosti uloženy jako nešifrovaný text.
    • Není open source a nejde provozovat na vlastním serveru. Šifrovací klient je i s testovacími vektory zveřejněný v repozitáři CLI pod licencí MIT; samotná služba je hostovaný produkt. Pokud self-hosting potřebujete, podívejte se na open source alternativy.
    • Zobrazení neznamená konkrétního člověka. Časová osa zaznamenává, kdy a přibližně odkud byla tajná zpráva otevřena, nikdy kým. Pokud ji otevřel někdo nepovolaný, změňte přihlašovací údaje.

    14. Hlášení zranitelností

    Bezpečnostní nálezy a zneužívané odkazy můžete nahlásit na /report; hlášení jdou přímo našemu týmu. Žádosti týkající se ochrany soukromí a osobních údajů posílejte na privacy@uselinkpilot.com, odpovídáme do 30 dní. Stránka GDPR uvádí, co zpracováváme a na jakém základě.

    15. Časté dotazy

    Je tajná zpráva chráněna koncovým šifrováním (end-to-end)?

    Ano, u tajných zpráv vytvořených od 29. září 2026. Obsah se před odesláním zašifruje ve vašem prohlížeči algoritmem AES-GCM-256 a klíč je v části sdíleného odkazu za znakem #, tedy ve fragmentu adresy URL, který prohlížeče nikdy neodesílají. Dostáváme jen šifrový text, klíč nikdy, takže tajnou zprávu přečíst nemůžeme. Přiložené soubory se šifrují stejně, klíčem odvozeným ze stejného odkazu. Otevřeně uvádíme dvě výhrady: tajné zprávy vytvořené před tímto datem jsou dál uloženy jako nešifrovaný text a beze změny fungují, dokud nevyprší, a název, velikost a typ souboru ukládáme nešifrovaně, i když jeho obsah šifrovaný je.

    Mohou zaměstnanci LinkPilotu číst moje tajné zprávy?

    U tajné zprávy zašifrované ve vašem prohlížeči ne: dešifrovací klíč se k nám nikdy nedostane, takže náš správce s plným přístupem k databázi vidí jen šifrový text. Totéž platí pro každého, kdo by napadl naši databázi nebo vrstvu edge. Upřímně uvádíme tři omezení: tajnou zprávu vytvořenou před 29. zářím 2026 máme uloženou jako nešifrovaný text a správce by ji mohl přečíst, dokud je aktivní; název, velikost a typ souboru vidíme, i když jeho obsah přečíst nemůžeme; a kdokoli získá celý sdílený odkaz včetně části za znakem #, tajnou zprávu otevře. Proto má krátká platnost a zničení po přečtení pořád smysl.

    Zničí tajnou zprávu náhled odkazu ve Slacku nebo v e-mailu?

    Ne. Náhledy odkazů posílají požadavky GET, které vrátí jen metadata (stav a zda je nutná heslová fráze). Zobrazení se zaznamená jen při výslovném požadavku POST, který odešle příjemce, když klikne na tlačítko Zobrazit.

    Jaké informace o zobrazení zaznamenáváte?

    U každého zobrazení zaznamenáváme časové razítko, hash IP adresy (SHA-256 se solí, která se mění každý den, zkrácený na 32 znaků), zemi a město z vrstvy edge, pokud jsou k dispozici, a řetězec User-Agent. Nezaznamenáváme obsah tajné zprávy, heslovou frázi v čitelné podobě ani původní IP adresu.

    Používáte tajné zprávy k trénování modelů nebo pro statistiky?

    Ne. Obsah tajných zpráv je vyloučen ze statistik, profilování i všech funkcí AI. Systém tajných odkazů je oddělený od systému statistik krátkých odkazů.

    Uvidím, kdo tajnou zprávu otevřel?

    Kdo, to ne. V tarifu Pro časová osa ukazuje, kdy proběhlo každé zobrazení, zemi a město, které hlásí vrstva edge, řetězec User-Agent prohlížeče a hash síťové adresy s denně měněnou solí. To stačí k potvrzení doručení nebo k odhalení otevření z nečekaného místa, a přitom je to navrženo tak, aby se z toho nedala zjistit identita.

    Mohu LinkPilot provozovat na vlastním serveru?

    Ne. LinkPilot je hostovaná služba. Šifrovací klient je i s testovacími vektory zveřejněný v repozitáři CLI pod licencí MIT, aby ho šlo auditovat, ale samotná služba open source není. Pokud self-hosting potřebujete, obvyklou volbou jsou OneTimeSecret, Password Pusher, PrivateBin a Yopass.

    Co když se někdo pokusí heslovou frázi prolomit hrubou silou?

    Pokusy o zadání heslové fráze jsou omezeny na 5 za minutu z jedné IP adresy pro každou tajnou zprávu, a to ve dvou vrstvách (v paměti a v databázi). Neúspěšné pokusy se zapisují do auditního záznamu s hashem IP adresy.

    Související

    Vyzkoušejte tajný odkaz sami

    Tarif Free zdarma navždy. Bez platební karty.