Diese Website wird mit einer von Kohei Koyanagi entwickelten Software automatisch in mehrere Sprachen übersetzt. Bitte beachten Sie das ursprüngliche Englisch für Genauigkeit.

Splyncs Dual-Identifikator-Ansatz: UUID und Auto-Incremented Int

Splync verwendet zwei Identifikatoren für sensible IDs

In Splyncs Datenbank wird jeder Nutzer und jedes Projekt durch zwei verschiedene IDs identifiziert: eine UUID und eine automatisch inkrementierte Ganzzahl. Die automatisch inkrementierte Ganzzahl ist das, was die meisten kennen – es ist einfach ein Zähler: 1, 2, 3 usw. Splync nutzt diese Ganzzahlen innerhalb der Serverdatenbank, um fast jede Tabelle zu organisieren, da sie einfach, schnell und effizient für Joins sind. Diese internen Nummern zeigen wir jedoch niemals in der App an. Wenn Sie beispielsweise der 42. Nutzer wären, der sich anmeldet, wäre Ihre interne ID in der Datenbank 42. Aber Ihre iOS-App sieht niemals „42“. Stattdessen verwendet die App eine UUID, um Sie darzustellen. Dasselbe gilt für Projekte – eine Projekt-ID könnte in der Datenbank „7“ sein, aber die App verweist immer auf eine lange UUID.

Was ist eine UUID

UUID steht für Universally Unique Identifier. Splync verwendet Version 4, Variante 1 UUIDs, die mit RFC 4122 konform sind – einem der am weitesten verbreiteten Standards. Es ist eine zufällig generierte Zeichenkette, die aussieht wie 949ca11c-a6ed-48a3-b40a-fa9727494917. Eine UUID wird normalerweise als 32 hexadezimale Zeichen geschrieben, die in fünf durch Bindestriche getrennte Abschnitte unterteilt sind. Sie ist darauf ausgelegt, weltweit einzigartig zu sein, was bedeutet, dass sie selbst über verschiedene Server oder Datenbanken hinweg nicht kollidiert. Mathematisch gibt es etwa 16^32 = 2^128 mögliche Kombinationen. Da jedoch sechs Bits reserviert sind, um die Variante und Version anzugeben, beträgt die Gesamtanzahl der eindeutigen Version-4, Variante-1 UUIDs ungefähr 2^122, oder etwa 5,3 x 10^36 — eine astronomisch große Zahl, die eine praktische Einzigartigkeit gewährleistet.

Wie klein ist 1 / 5.300.000.000.000.000.000.000.000.000.000.000.000

Jedes Paar von UUIDv4s hat etwa eine Chance von 1 in 5,3 × 10^36, sich zu gleichen. Diese Zahl ist so klein, dass sie fast nicht in der menschlichen Vorstellung existiert. Um es sich vorzustellen: Stellen Sie sich vor, Sie würfeln 47 Würfel gleichzeitig. Die Wahrscheinlichkeit, dass alle Einsen zeigen – jeder einzelne Würfel eine „1“ – liegt bei etwa 1 in 6^47 oder ungefähr 1 in 3,7 × 10^36. Das ist die gleiche Größenordnung wie eine UUID-Kollision. Stellen Sie sich nun vor, jeder Mensch auf der Erde – etwa acht Milliarden von uns – würfelt diese 47 Würfel jede Millisekunde für eine Billion Jahre. Das sind etwa 2,5 × 10^32 Versuche insgesamt. Selbst danach wäre die Chance, dass irgendwo jemand 47 Einsen auf einmal wirft, nur eins zu zehntausend. So unwahrscheinlich ist es, dass zwei UUIDv4s kollidieren. Es ist nicht „selten“. Es ist kosmisch absurd – die Art von Zufall, bei dem Mathematiker ihren Kaffee verschütten und das Universum auf Fehler überprüfen würden.

Ist es einfach, eine UUID zu generieren

Auf den ersten Blick mag das Generieren einer UUID einfach erscheinen – schließlich ist es nur eine zufällig wirkende alphanumerische Zeichenkette. Aber versuchen Sie mal, eine selbst mit Stift und Papier zu schreiben. Sie können sicher 36 Zeichen notieren, aber wenn Sie die Übung tausendmal wiederholen, werden klare Muster erkennbar. Vielleicht bevorzugen Sie bestimmte Ziffern wie 3 oder 8 und verwenden selten Buchstaben wie x. Ein Computer kann diese Vorlieben sofort erkennen. Ein böswilliger Hacker könnte Ihre Gewohnheiten analysieren und Ihre „zufällige“ geheime Zeichenkette innerhalb eines Tages eingrenzen. Was wäre, wenn Sie dann auch einen Computer nutzen und rand() aufrufen, die klassische Zufallsfunktion, um jede Ziffer zu generieren. Das ist besser – aber nicht gut genug. Viele „zufällige“ Zahlengeneratoren in gängigen Programmierumgebungen sind pseudorandom, was bedeutet, dass sie einer vorhersehbaren mathematischen Sequenz folgen, die von einem internen Seed ausgeht, der typischerweise auf der Systemzeit basiert. Wenn jemand diesen Seed entdeckt oder errät, kann er jeden Wert reproduzieren, den Ihr Generator jemals erzeugt hat.

Wie perfekt zufällig ist eine UUID

Perfekte Zufälligkeit existiert nicht wirklich – ebenso wenig wie ein perfekter Würfel oder ein perfekt zufälliger Wurf. Jeder physische oder digitale Prozess folgt einigen grundlegenden Regeln. Dennoch haben Mathematiker und Ingenieure Jahrzehnte damit verbracht, Algorithmen zu entwickeln, die der echten Zufälligkeit so nahe wie möglich kommen. Wenn Splync eine neue Version-4 UUID erstellt, „wählt“ es nicht einfach „zufällig Zahlen“ wie beim Würfeln. Es fragt das Betriebssystem nach winzigen Spuren von Unvorhersehbarkeit – zum Beispiel den genauen Moment, in dem Ihre CPU eine Aufgabe beendet, schwache elektrische Geräusche innerhalb der Hardware oder Hintergrund-Timing-Schwankungen im Speicher. Diese Entropiefragmente werden gesammelt und in 128 Bits Daten gemischt – eine lange Folge aus Einsen und Nullen. Das Ergebnis ist ein Code, der für die App-Nutzer oder mögliche böswillige Angreifer praktisch unmöglich zu erraten oder zu wiederholen ist.

Splyncs Dual-Identifikator-Ansatz

Splync verwendet UUIDs für sensible Identifikatoren wie Benutzer-IDs und Projekt-IDs, da sie extrem zufällig und sicher sind. Gleichzeitig wandelt Splync diese UUIDs in seiner Serverumgebung in automatisch inkrementierte Ganzzahlen um, um schnellere Suchvorgänge und Analysen bei großen Datensätzen zu ermöglichen. Dieser Dual-Identifikator-Ansatz balanciert zwischen Sicherheit und Komfort – äußerer Privatsphäre bei interner Leistung. Splyncs Ziel ist es, eine stressfreie, einfache und sichere Budget-Tracking-App zu sein. Hinter der sichtbaren Benutzeroberfläche verfeinern wir kontinuierlich unsere Architektur, um die Dinge reibungslos, sicher und unauffällig intelligent zu halten.