Splync usa dos identificadores para IDs sensibles
En la base de datos de Splync, cada usuario y cada proyecto se identifica con dos IDs diferentes: un UUID y un entero auto-incrementado. El entero auto-incrementado es el que la mayoría conoce: solo un contador, 1, 2, 3, etc. Splync usa estos enteros dentro de la base de datos del servidor para organizar casi todas las tablas porque son simples, rápidos y eficientes para uniones. Sin embargo, nunca exponemos estos números internos a la app. Por ejemplo, si fueras el usuario número 42 en registrarte, tu ID interno en la base de datos sería 42. Pero tu app de iOS nunca ve "42." En cambio, la app usa un UUID para representarte. Aplicamos el mismo enfoque a los proyectos: un ID de proyecto podría ser "7" dentro de la base de datos, pero la app siempre se refiere a él usando un UUID largo.
¿Qué es un UUID
UUID significa Identificador Único Universal. Splync utiliza UUIDs de versión 4, variante 1, cumpliendo con RFC 4122: uno de los estándares más adoptados. Es una cadena generada aleatoriamente, que se ve como 949ca11c-a6ed-48a3-b40a-fa9727494917. Un UUID generalmente se escribe como 32 caracteres hexadecimales divididos en cinco secciones separadas por guiones. Está diseñado para ser globalmente único, lo que significa que no colisionará incluso entre diferentes servidores o bases de datos. Matemáticamente, hay unas 16^32 = 2^128 combinaciones posibles. Sin embargo, dado que seis bits están reservados para indicar la variante y la versión, el número total de UUIDs únicos de versión 4, variante 1 es aproximadamente 2^122, o cerca de 5.3 x 10^36: un número astronómicamente grande que asegura una unicidad práctica.
¿Cuán pequeño es 1 / 5,300,000,000,000,000,000,000,000,000,000,000,000
Cada par de UUIDv4 tiene una probabilidad de coincidencia de aproximadamente 1 en 5.3 × 10^36. Ese número es tan pequeño que casi se niega a existir en la imaginación humana. Para visualizarlo, imagina lanzar 47 dados a la vez. Las probabilidades de obtener todos unos, cada dado mostrando "1," es aproximadamente 1 en 6^47, o alrededor de 1 en 3.7 × 10^36. Ese es el mismo orden de magnitud que una colisión de UUID. Ahora, imagina a cada persona en la Tierra, unos ocho mil millones de nosotros, lanzando esos 47 dados cada milisegundo durante un billón de años. Eso es cerca de 2.5 × 10^32 intentos totales. Incluso después de todo eso, la probabilidad de que alguien, en algún lugar, obtenga 47 unos a la vez sería solo de una en diez mil. Así de improbable es que dos UUIDv4 colisionen. No es solo "raro." Es absurdamente cósmico: el tipo de coincidencia que haría que los matemáticos dejaran caer su café y revisaran el universo en busca de errores.
¿Es fácil generar un UUID
A primera vista, generar un UUID podría parecer simple: al fin y al cabo, es solo una cadena alfanumérica que parece aleatoria. Pero intenta escribir uno tú mismo con papel y bolígrafo. Puedes anotar 36 caracteres, claro, pero si repites el ejercicio miles de veces, surgirán patrones claros. Quizás prefieras ciertos dígitos como el 3 o el 8, y rara vez uses letras como la x. Una computadora puede detectar esos sesgos al instante. Un hacker malicioso podría analizar tus hábitos y reducir tu cadena "aleatoria" secreta en un día. Entonces, ¿qué tal si también recurres a una computadora y llamas a rand(), la clásica función de aleatoriedad, para generar cada dígito? Es mejor, pero no lo suficiente. Muchos generadores de números "aleatorios" en entornos de programación comunes son pseudoaleatorios, lo que significa que siguen una secuencia matemática predecible que comienza desde una semilla interna, que generalmente se basa en la hora del sistema. Si alguien descubre o adivina esa semilla, puede reproducir cada valor que tu generador haya producido.
¿Qué tan perfectamente aleatorio es un UUID
La aleatoriedad perfecta realmente no existe, así como no existe un dado perfecto, o un lanzamiento de dados perfectamente aleatorio. Todo proceso físico o digital sigue algunas reglas subyacentes. Aun así, matemáticos e ingenieros han pasado décadas diseñando algoritmos que se acercan lo más posible a la verdadera aleatoriedad. Cuando Splync crea un nuevo UUID de versión 4, no simplemente "elige números al azar" como lanzar dados. Pide al sistema operativo pequeños rastros de imprevisibilidad: por ejemplo, el momento preciso en que tu CPU termina una tarea, el ruido eléctrico tenue dentro del hardware, o las fluctuaciones de tiempo en la memoria. Estos fragmentos de entropía se recolectan y mezclan en 128 bits de datos: una larga secuencia de unos y ceros. El resultado es un código que es prácticamente imposible de adivinar o repetir para los usuarios de la app o posibles atacantes maliciosos.
Enfoque de doble identificador de Splync
Splync utiliza UUIDs para identificadores sensibles como IDs de usuario y de proyecto, porque son extremadamente aleatorios y seguros. Al mismo tiempo, dentro de su servidor, Splync convierte esos UUIDs en enteros auto-incrementados para una búsqueda y análisis más rápidos en grandes conjuntos de datos. Este enfoque de doble identificador logra un equilibrio entre seguridad y conveniencia: privacidad externa con rendimiento interno. El objetivo de Splync es ser una app de seguimiento de presupuestos sencilla, segura y sin estrés. Detrás de la UI visible, seguimos refinando nuestra arquitectura para mantener todo fluido, seguro e inteligentemente discreto.