Tokeny zariadení, API kľúče a párovacie kódy

Tablety, aplikácie a partnerské systémy sa k nám hlásia náhodnými 256-bitovými tokenmi, ktoré ukladáme len ako odtlačok SHA-256 a porovnávame v konštantnom čase.

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á.

Všetky články školenia