Glosario / Direcciones y claves
Dirección de vanidad
- ¿Qué es una dirección de vanidad?
- Una dirección de vanidad forma con sus propios caracteres una palabra o un prefijo elegidos, y se obtiene buscando por fuerza bruta entre claves aleatorias hasta que una de ellas codifique el patrón.
No hay nada ingenioso en ello. Un programa genera una clave, deriva la dirección, comprueba si la cadena de caracteres empieza como se deseaba y repite, miles de millones de veces si hace falta. Cada carácter adicional que se exige multiplica el trabajo por 58 en una dirección heredada (legacy) o por 32 en una bech32, así que un prefijo de seis caracteres en una dirección heredada supone aproximadamente 38 mil millones de intentos.
Cómo funciona
La generación de direcciones de vanidad es fuerza bruta contra una codificación, nunca contra la criptografía. Una dirección de bitcoin es un hash envuelto en una suma de comprobación y representado en un alfabeto restringido, así que la única forma de influir en cómo se lee es seguir sacando claves nuevas hasta que una dé con una cadena de caracteres que le guste. No es posible trabajar hacia atrás, desde una dirección deseada hasta una clave.
La aritmética es implacable. Base58 usa 58 caracteres, así que hacer coincidir cinco caracteres después del 1 inicial requiere en promedio 656.356.768 intentos, y seis requieren 38.068.692.544. Bech32 usa un alfabeto de 32 caracteres, lo que resulta más benévolo: seis caracteres después de bc1q son 1.073.741.824 intentos. Herramientas como vanitygen y sus bifurcaciones para GPU devoran esas cifras a razón de cientos de millones de claves por segundo, por eso los prefijos cortos son una curiosidad y los largos, un presupuesto de hardware.
La generación con clave dividida existe para quienes quieren ese aspecto sin entregar una clave. Usted genera una clave privada y envía solo la clave pública correspondiente a quien vaya a hacer la búsqueda. Este busca por fuerza bruta una clave parcial que, combinada con la suya, produzca el patrón, y usted mismo suma las dos mitades. Quien busca nunca llega a conocer la clave final. Cualquier servicio que le envíe por correo electrónico una clave privada completa ya la ha visto.
Dónde aparece
Las direcciones de vanidad aparecen dondequiera que una dirección se imprima en lugar de escanearse.
Páginas de donaciones, carteles de conferencias, direcciones de billeteras frías de exchanges publicadas como prueba de reservas y las direcciones de quema que forman frases y de las que nadie tiene clave alguna. Cada una de ellas es una dirección estática y reutilizada a propósito, lo que significa que su propietario ha renunciado a la privacidad que daría una dirección nueva y ha aceptado que el saldo sea una cifra pública que cualquiera puede leer.
El caso que sirve de advertencia viene de Ethereum y se aplica directamente. Profanity, una herramienta de direcciones de vanidad muy utilizada, inicializaba su búsqueda a partir de 32 bits de aleatoriedad, lo que reducía el espacio de claves posibles a 4.294.967.296. El equipo de 1inch divulgó el fallo en septiembre de 2022, y el 20 de septiembre de 2022 el market maker Wintermute perdió alrededor de 160 millones de dólares de una dirección que esa herramienta había producido. Un generador de direcciones de vanidad es un programa cuyo único trabajo es fabricar claves privadas, y usted confía a su aleatoriedad todo lo que la dirección llegue a contener.
Dirección de vanidad frente a envenenamiento de direcciones
Una dirección de vanidad la elige su propietario; una dirección envenenada la fabrica un atacante para que se parezca a la suya. El envenenamiento de direcciones usa la misma técnica de fuerza bruta para hacer coincidir los primeros y los últimos cuatro caracteres de una dirección a la que usted ya ha pagado, y luego envía un monto simbólico para que la dirección parecida quede en su historial de transacciones, a la espera de que se copie por error. El hábito que fomentan las direcciones de vanidad, leer unos pocos caracteres y confiar en el resto, es exactamente el hábito del que depende el ataque. Compare la cadena de caracteres completa, o confírmela en la pantalla de una billetera de hardware que la computadora no puede modificar.