Tento web je automaticky překládán do více jazyků pomocí softwaru vyvinutého Kohei Koyanagim. Pro nejpřesnější informace se podívejte na originál v angličtině .

Dvojí identifikace ve Splync: UUID a automaticky zvyšovaný int

Splync používá dva identifikátory pro citlivá ID

V databázi Splync má každý uživatel a každý projekt dva různé ID: UUID a automaticky zvyšovaný integer. Automaticky zvyšovaný integer je jen čítač: 1, 2, 3 a tak dále. Splync je používá v databázi serveru k organizaci téměř každé tabulky, protože jsou jednoduché, rychlé a efektivní pro spojování. Nikdy však tyto interní čísla neodhalujeme v aplikaci. Například, pokud jste 42. uživatel, který se zaregistroval, vaše interní ID v databázi bude 42. Ale vaše iOS aplikace nikdy nevidí "42". Místo toho aplikace používá UUID k vaší reprezentaci. Stejný přístup používáme i pro projekty — ID projektu může být "7" v databázi, ale aplikace ho vždy označuje dlouhým UUID.

Co je UUID

UUID znamená Univerzální Unikátní Identifikátor. Splync používá UUID verze 4, varianta 1, které vyhovují RFC 4122, jednomu z nejrozšířenějších standardů. Je to náhodně generovaný řetězec, který vypadá jako 949ca11c-a6ed-48a3-b40a-fa9727494917. UUID se obvykle zapisuje jako 32 hexadecimálních znaků rozdělených do pěti částí oddělených pomlčkami. Je navržen tak, aby byl globálně jedinečný, což znamená, že se nesrazí ani na různých serverech nebo v databázích. Matematicky existuje asi 16^32 = 2^128 možných kombinací. Protože ale šest bitů je vyhrazeno pro variantu a verzi, celkový počet rozdílných UUID verze 4, varianta 1 je přibližně 2^122, což je asi 5,3 x 10^36 — astronomicky velké číslo zajišťující praktickou jedinečnost.

Jak malá je pravděpodobnost 1 / 5,300,000,000,000,000,000,000,000,000,000,000,000

Každý pár UUIDv4 má asi 1 z 5,3 × 10^36 šanci na shodu. To číslo je tak malé, že si ho lidská představivost téměř neumí představit. Představte si, že hodíte 47 kostkami najednou. Šance, že padnou samé jedničky, je přibližně 1 z 6^47, tedy zhruba 1 z 3,7 × 10^36. To je stejná velikost jako u kolize UUID. Teď si představte, že každý člověk na Zemi — asi osm miliard z nás — hází těmito 47 kostkami každou milisekundu po bilion let. To je asi 2,5 × 10^32 celkových pokusů. I po tom všem by šance, že někdo, někde hodí 47 jedniček najednou, byla jen jedna z deseti tisíc. Tak nepravděpodobné je, že se dvě UUIDv4 srazí. Není to „vzácné.“ Je to kosmicky absurdní — druh náhody, která by přiměla matematiky upustit kávu a zkontrolovat vesmír na chyby.

Je snadné vygenerovat UUID

Na první pohled by generování UUID mohlo vypadat jednoduše — je to jen náhodně vypadající alfanumerický řetězec. Ale zkuste si jeden zapsat ručně. Můžete si zapsat 36 znaků, ale pokud cvičení tisíckrát opakujete, vyjasní se vzorce. Možná upřednostňujete čísla jako 3 nebo 8 a zřídkakdy používáte písmena jako x. Počítač tyto předpojatosti odhalí okamžitě. Zlomyslný hacker by mohl analyzovat vaše zvyky a během dne zúžit váš "náhodný" tajný řetězec. Co když pak také sáhnete po počítači a použijete rand(), klasickou funkci pro generování náhodných čísel k vytvoření každého znaku. To je lepší — ale ne dostatečné. Mnoho "náhodných" generátorů čísel v běžných programovacích prostředích je pseudonáhodných, což znamená, že sledují předvídatelnou matematickou sekvenci začínající z interního semene, které je obvykle založeno na systémovém čase. Pokud někdo objeví nebo uhodne toto semeno, může reprodukovat každou hodnotu, kterou váš generátor kdy vytvořil.

Jak dokonale náhodný je UUID

Dokonalá náhodnost vlastně neexistuje — stejně jako neexistuje dokonalá kostka nebo dokonale náhodné hod kostkami. Každý fyzický nebo digitální proces sleduje nějaká základní pravidla. Přesto matematici a inženýři strávili desetiletí navrhováním algoritmů, které se co nejvíce přibližují skutečné náhodnosti. Když Splync vytváří nový UUID verze 4, nevybírá jednoduše „čísla náhodně“ jako při hodu kostkami. Požádá operační systém o drobné stopy nepředvídatelnosti — například přesný okamžik, kdy váš CPU dokončí úkol, slabý elektrický šum uvnitř hardwaru nebo kolísání časování na pozadí v paměti. Tyto fragmenty entropie jsou shromážděny a smíchány do 128 bitů dat — dlouhé sekvence jedniček a nul. Výsledkem je kód, který je prakticky nemožné uhodnout nebo zopakovat pro uživatele aplikace nebo potenciální zlomyslné útočníky.

Dvojí identifikace ve Splync

Splync používá UUID pro citlivé identifikátory, jako jsou ID uživatelů a projektů, protože jsou extrémně náhodné a bezpečné. Zároveň uvnitř svého serveru Splync převádí tyto UUID na automaticky zvyšované číselné hodnoty pro rychlejší vyhledávání a analýzu ve velkých datových sadách. Tento přístup s dvěma identifikátory vyvažuje bezpečnost a pohodlí — externí soukromí s interním výkonem. Cílem Splync je být bezstresovou, jednoduchou a bezpečnou aplikací pro sledování rozpočtu. Za viditelným uživatelským rozhraním neustále zdokonalujeme naši architekturu, aby vše bylo hladké, bezpečné a tiše chytré.