Po ľudsky
Keď sa k Modulu alebo ku Kioskbase pripája zariadenie (tablet na recepcii, terminál, iný systém), nemá meno a heslo ako človek — dostane dlhý náhodný token, akúsi elektronickú vstupenku. Na našej strane si však vstupenku neodkladáme, len jej odtlačok: podľa neho ju vieme rozpoznať, ale vyrobiť ju z neho nejde. Keby sa niekto dostal k databáze, nenájde v nej žiadnu použiteľnú vstupenku. Nové zariadenie sa spáruje krátkym kódom, ktorý platí len pár minút a použiť sa dá raz — ako jednorazový kód k bráne. Stratené alebo vyradené zariadenie jednoducho odpojíte a jeho vstupenka prestane platiť.
Technicky
- Generovanie: tokeny majú 256 bitov z kryptografického generátora náhodných čísel (Web Crypto
getRandomValues). Uhádnuť ich hrubou silou je prakticky nemožné. - Ukladanie ako odtlačok: v databáze je len SHA-256 tokenu. Pri požiadavke server spraví SHA-256 z prijatého tokenu a hľadá zhodu. Pri 256-bitovom náhodnom tajomstve na to nie je potrebná pomalá funkcia typu bcrypt — odtlačok sa nedá spätne prepočítať ani uhádnuť.
- Porovnávanie v konštantnom čase: tajomstvá (kódy 2FA, servisné tokeny, podpisy) sa porovnávajú tak, aby porovnanie trvalo rovnako dlho bez ohľadu na to, koľko znakov sa zhoduje. Bežné porovnanie reťazcov skončí pri prvom rozdiele a z nameraného času by útočník mohol postupne zisťovať správne znaky (útok časovaním).
- Párovacie kódy: šesťmiestny kód z kryptografického zdroja, jednorazový a platný 10 minút, s obmedzením počtu pokusov podľa adresy. Milión kombinácií pri niekoľkých povolených pokusoch nedáva útočníkovi reálnu šancu.
- Odvolanie: odpojené zariadenie má token označený ako odvolaný a server ho odmietne.
Ako to máme my
Kioskbase (tablety a terminály)
- tablet sa spáruje šesťmiestnym kódom (10 minút, jednorazový, s brzdou pokusov) a dostane vlastný 256-bitový token; v databáze je len jeho SHA-256,
- odpojením v správe sa token zneplatní,
- tablety s Androidom majú nešifrovanú komunikáciu (http) úplne zakázanú,
- zásahy správcov do zariadení sa zapisujú do denníka, ktorý sa nedá nepozorovane prepísať: každý záznam obsahuje odtlačok predchádzajúceho (hash reťaz) a koncový odtlačok si pravidelne odkladá nezávislý „svedok“ mimo nášho bežného prostredia. Zmazanie či prepísanie histórie by sa tak dalo dokázať.
Modulo API pre partnerov
- každý kľúč platí pre jednu firmu a len pre pridelené rozsahy (napr. len čítanie CRM, alebo aj zápis),
- kľúč sa zobrazí iba raz pri vytvorení; v databáze je len jeho SHA-256,
- porovnanie prebieha v konštantnom čase, požiadavky sú obmedzené limitom a zaznamenávajú sa.
Portál Stravník: každé prihlásenie dostane vlastný 256-bitový token s obmedzenou platnosťou a úrovňou oprávnení; uložený je len odtlačok SHA-256. Odhlásením sa token zmaže.
Obnova hesla, záložné kódy 2FA: rovnaký princíp — v databáze je len odtlačok, čitateľná podoba existuje iba u vás (v e-maile, na papieri).
Časté otázky
Čo spraviť, keď sa tablet stratí alebo ho ukradnú?
Odpojte ho v správe zariadení. Jeho token tým prestane platiť a tablet sa k vašim údajom už nepripojí.
Môže niekto uhádnuť párovací kód?
Prakticky nie. Kód platí len 10 minút, použiť sa dá raz a po niekoľkých nesprávnych pokusoch sa ďalšie z tej istej adresy zablokujú.
Kde nájdem API kľúč, ktorý som vytvoril včera?
Nikde — kľúč sa z bezpečnostných dôvodov ukáže len pri vytvorení a my máme uložený len jeho odtlačok. Ak ste ho nezapísali, vytvorte nový a starý zrušte.
Čo je ten „svedok“ pri denníku Kioskbase?
Nezávislá služba, ktorá si pravidelne odloží odtlačok posledného záznamu denníka. Keby niekto históriu zásahov dodatočne zmenil, nesedela by so svedkom a manipulácia by bola odhalená.