Táto stránka je automaticky prekladaná do viacerých jazykov pomocou softvéru od Kohei Koyanagi. Pre čo najväčšiu presnosť si pozrite originál v angličtine .

Dvojitý identifikátor v Splync: UUID a automaticky inkrementovaný int

Splync používa dva identifikátory pre citlivé ID

V databáze Splync je každý používateľ a projekt identifikovaný dvoma rôznymi ID: UUID a automaticky inkrementovaným číslom. Automaticky inkrementované číslo je to, ktoré pozná väčšina ľudí — je to jednoducho počítadlo: 1, 2, 3 a tak ďalej. Splync používa tieto čísla vo vnútri databázy serveru na organizovanie takmer každej tabuľky, pretože sú jednoduché, rýchle a efektívne pre spájanie. Nikdy však tieto interné čísla neodhalíme aplikácii. Napríklad, ak by ste boli 42. používateľom, ktorý sa zaregistroval, vaše interné ID v databáze by bolo 42. Ale vaša iOS aplikácia nikdy neuvidí "42." Namiesto toho aplikácia používa UUID na vašu reprezentáciu. Rovnaký prístup používame aj pri projektoch — ID projektu môže byť "7" v databáze, ale aplikácia vždy odkazuje na neho cez dlhý UUID.

Čo je to UUID

UUID znamená Univerzálne unikátny identifikátor. Splync používa UUID verzie 4, variant 1, ktoré sú v súlade s RFC 4122 — jedným z najrozšírenejších štandardov. Je to náhodne generovaný reťazec, ktorý vyzerá ako 949ca11c-a6ed-48a3-b40a-fa9727494917. UUID sa typicky zapisuje ako 32 hexadecimálnych znakov rozdelených do piatich sekcií oddelených pomlčkami. Je navrhnutý tak, aby bol globálne unikátny, čo znamená, že sa nezrazí ani na rôznych serveroch alebo databázach. Matematicky existuje približne 16^32 = 2^128 možných kombinácií. Keďže šesť bitov je rezervovaných na indikáciu variantu a verzie, celkový počet odlišných UUID verzie 4, variantu 1 je približne 2^122, čo je asi 5,3 x 10^36 — astronomicky veľké číslo zaisťujúce praktickú unikátnosť.

Aké malé je 1 / 5,300,000,000,000,000,000,000,000,000,000,000,000

Každý pár UUIDv4 má asi 1 ku 5,3 × 10^36 šancu na zhodu. Toto číslo je také malé, že takmer odmieta existovať v ľudskej predstavivosti. Predstavte si, že naraz hádžete 47 kockami. Pravdepodobnosť, že dostanete samé jednotky — každá kocka ukazuje „1“ — je asi 1 ku 6^47, alebo približne 1 ku 3,7 × 10^36. To je rovnaký rád ako kolízia UUID. Teraz si predstavte, že každý človek na Zemi — asi osem miliárd z nás — hádže tých 47 kociek každú milisekundu po bilión rokov. To je asi 2,5 × 10^32 celkových pokusov. Aj po tom všetkom by šanca, že niekto, niekde, dostane 47 jednotiek naraz, bola len jedna ku desiatim tisícom. Taká nepravdepodobná je kolízia dvoch UUIDv4. Nie je to „zriedkavé.“ Je to kozmicky absurdné — taký typ náhody, ktorý by prinútil matematikov vyliatu kávu a skontrolovať vesmír pre chyby.

Je jednoduché generovať UUID

Na prvý pohľad sa môže zdať generovanie UUID jednoduché — veď je to len náhodne vyzerajúci alfanumerický reťazec. Ale skúste napísať jeden sami s perom a papierom. Môžete zapísať 36 znakov, určite, ale ak toto cvičenie zopakujete tisícky krát, objavia sa jasné vzory. Možno preferujete určité číslice ako 3 alebo 8 a zriedka používate písmená ako x. Počítač tieto zaujatia zistí okamžite. Zlomyseľný hacker by mohol analyzovať vaše zvyky a zúžiť váš „náhodný“ tajný reťazec do jedného dňa. Potom, čo ak sa tiež obrátite na počítač a zavoláte rand(), klasickú náhodnú funkciu, aby generovala každú číslicu. To je lepšie — ale nie dosť dobré. Mnohé "náhodné" generátory čísiel v bežných programovacích prostrediach sú pseudonáhodné, čo znamená, že nasledujú predvídateľnú matematickú sekvenciu začínajúcu z interného semena, ktoré je typicky založené na čase systému. Ak niekto objaví alebo uhádne to semeno, môže reprodukovať každú hodnotu, ktorú váš generátor kedy vytvoril.

Ako dokonale náhodný je UUID

Dokonalá náhodnosť neexistuje — rovnako ako neexistuje dokonalá kocka alebo dokonale náhodný hod kockami. Každý fyzický alebo digitálny proces sleduje určité základné pravidlá. Napriek tomu matematici a inžinieri strávili desaťročia navrhovaním algoritmov, ktoré sa približujú čo najbližšie k skutočnej náhodnosti. Keď Splync vytvára nový UUID verzie 4, jednoducho nevyberá čísla náhodne ako hádzanie kockami. Požiada operačný systém o malé stopy nepredvídateľnosti — napríklad presný moment, keď váš CPU dokončí úlohu, jemný elektrický šum vo vnútri hardvéru alebo časové fluktuácie v pamäti. Tieto fragmenty entropie sa zbierajú a miešajú do 128 bitov dát — dlhý sekvenciu jednotiek a núl. Výsledkom je kód, ktorý je prakticky nemožné odhadnúť alebo zopakovať pre používateľov aplikácie alebo potenciálnych zlomyseľných útočníkov.

Dvojitý identifikátor Splync

Splync používa UUID pre citlivé identifikátory, ako sú ID používateľov a ID projektov, pretože sú extrémne náhodné a bezpečné. Zároveň Splync vo svojom serveri konvertuje tieto UUID na automaticky inkrementované čísla pre rýchlejší vyhľadávanie a analýzu veľkých dátových súborov. Tento dvojitý identifikátorový prístup dosahuje rovnováhu medzi bezpečnosťou a pohodlím — externá ochrana súkromia s interným výkonom. Cieľom Splync je byť bezstresovou, jednoduchou a bezpečnou aplikáciou na sledovanie rozpočtov. Za viditeľným rozhraním pokračujeme v zdokonaľovaní našej architektúry, aby všetko zostalo plynulé, bezpečné a ticho inteligentné.