Si dejas que una web elija tu contraseña, es como reutilizar una aguja: sabes que va a acabar mal
dmitámoslo sin anestesia: la mayoría de los mortales que trabajan en un hospital o en un aula ven la ciberseguridad como una molestia insoportable impuesta por «los de informática». Es comprensible. Cuando llevas diez horas de pie en el box de reanimación o corrigiendo memorias de prácticas de FP, lo último que te apetece es que una pantalla te exija doce caracteres con una mayúscula, un número romano y la firma de tu abuela en sangre.
¿La reacción habitual? Poner Verano2026* en todas partes o abrir la primera web que sale en Google y pulsar en «Generar contraseña».
Y ahí está el error clínico. Pensar que cualquier página web que te regala una clave aleatoria es inofensiva equivale a encontrar una jeringa precargada en el suelo del pasillo y ponérsela al primer paciente que tosa porque «venía lista para usar». Decía Marco Aurelio en sus Meditaciones que «el arte de vivir se parece más a la lucha que a la danza». Proteger los datos de tus pacientes o tus alumnos no es una coreografía que puedas delegar en terceros: es una trinchera diaria.
todo tiene un precio
Para entender por qué una web externa no debe tocar tus claves, no necesitas un máster en telecomunicaciones, solo sentido común de triaje:
No sabes quién guarda los registros: Cuando una página remota calcula tu contraseña en sus servidores, esa información viaja por la red. Aunque la conexión ponga el candadito verde, no tienes ni la más remota idea de qué base de datos está guardando un registro de lo que se acaba de crear ni a qué dirección IP está asociada.
El negocio de lo «gratis»: Si un servicio web no te cobra nada y no sabes cómo se financia, el producto suele ser la telemetría que extraen de ti o los fallos de seguridad de sus propios scripts.
Vulnerabilidad en tránsito: Si la web sufre una inyección de código malicioso por parte de un atacante, la contraseña que te acaba de salir en pantalla puede duplicarse en silencio hacia el servidor del atacante antes de que te dé tiempo a pegarla en el visor de analíticas.
En el credo mandaloriano, el beskar no se pide prestado a un mercader ni se compra en una tienda de conveniencia: lo fundes tú mismo en tu fragua, lingote a lingote. Con las contraseñas ocurre lo mismo. Un generador que funciona en local no es más que una herramienta que se ejecuta exclusivamente con la potencia de cálculo de tu propio ordenador o móvil, sin enviar ni un solo byte al exterior.
-
Funciona en modo avión (aislamiento estricto): Puedes cortar el Wi-Fi, desconectar el cable de red y la aplicación seguirá funcionando exactamente igual. Si la máquina no emite datos a la red, es matemáticamente imposible que alguien intercepte la clave en el momento de crearla. Es el equivalente a trabajar en un quirófano con presión negativa: el patógeno no sale porque no hay vía de escape.
-
Aleatoriedad pura, no de mentira: Los generadores caseros de mala calidad usan funciones matemáticas predecibles. Las herramientas locales serias utilizan el motor criptográfico interno del propio navegador (window.crypto), que recoge el ruido físico del procesador para generar entropía real. Una clave generada así (comoUw^C$0P@tepaLwALZAx*) tardaría más de un millón de años en ser reventada por un superordenador.
-
Se adapta a la fatiga mental del turno: Nadie en planta ni en el aula quiere memorizar secuencias de símbolos imposibles. Al ejecutarlo en local, puedes configurar el tipo de clave que necesitas según el caso:
-
Passphrases (frases seguras): Une palabras aleatorias con un separador. Son larguísimas para los atacantes pero tu cerebro las retiene en dos segundos.
-
Modo fonético / Leet: Crea combinaciones pronunciables con números intercalados, perfectas para los programas prehistóricos del hospital que se cuelgan si les metes un símbolo extraño.
-
La tecnología no tiene por qué ser una pesadilla burocrática ni un acto de fe ciega en servidores de Silicon Valley. Tratar la seguridad de tus accesos con el mismo rigor con el que te lavas las manos antes de una cura no es paranoia técnica: es higiene profesional básica.
Forja tus propias llaves en tu propio equipo, cierra la puerta a intermediarios y deja de tentar a la suerte con la libreta de notas del móvil.
ejemplo creador contraseñas por vibe coding
Quiero que construyas una aplicación web completa llamada «Almacén de Beskar» —
un generador temático de contraseñas y passphrases seguras, 100% cliente
(sin backend, sin llamadas a servidor, todo corre en el navegador).STACK
– HTML5 + CSS3 + JavaScript vainilla (sin frameworks ni dependencias externas
aparte de una fuente de Google Fonts).
– Tres archivos: index.html, styles.css, app.js.
– Diseño responsive, tema oscuro con acentos de color por temática.FUNCIONALIDAD PRINCIPAL
1. Diccionarios temáticos
Varios sets de palabras clave por franquicia/temática (Star Wars, Harry Potter,
El Señor de los Anillos, Cyberpunk & Sci-Fi, Marvel & DC, RPG & Videojuegos,
Anime & Manga, Mitología), más una opción «Crossover» que mezcla todas, y una
opción «Lista de Palabras Personalizada» donde el usuario escribe sus propias
palabras separadas por comas.2. Cuatro modos de generación
– Passphrase: combina varias palabras del diccionario elegido (número
configurable con slider) con un separador (fijo o aleatorio) y, opcionalmente,
un número.
– Mutada/Leet: toma una palabra base y aplica sustitución leet parcial y
aleatoria (a→@, e→3, i→1, o→0, s→$, t→7…), rellenando hasta una longitud
configurable con caracteres aleatorios del charset elegido y barajando el
resultado.
– Criptográfica: un «stem» corto de la temática + relleno totalmente aleatorio
hasta la longitud elegida, barajado.
– Fonética: concatena sílabas pronunciables aleatorias + un stem temático,
recortado a la longitud elegida.3. Opciones de configuración
– Longitud / número de palabras vía slider.
– Separador (fijo entre una lista de símbolos, o aleatorio).
– Campo de símbolos permitidos (editable).
– Checkboxes: incluir números, capitalizar palabras (TitleCase), evitar
caracteres ambiguos (O, 0, l, 1, I).4. Panel de seguridad
– Cálculo de entropía en bits según el modo y las opciones activas.
– Barra visual de fuerza + badge (Débil/Moderada/Muy Fuerte/Ultra Fuerte)
con umbrales en 40/60/80 bits.
– Estimación de tiempo de crackeo para tres escenarios (PC rápido ~10^9
intentos/seg, granja GPU ~10^12, cluster/cuántico ~10^15), formateado en
segundos/minutos/horas/días/años según corresponda.
– «Breakdown» de la contraseña generada (de qué se compone: saga, palabras,
separador, etc.) mostrado como pills/etiquetas.5. Historial de sesión
– Guarda las últimas 20 contraseñas generadas en memoria (nunca en
localStorage/sessionStorage/disco), con saga, modo y hora.
– Panel desplegable con badge de contador, botón para copiar cada entrada,
botón para limpiar historial, y botón para exportar el historial completo
a JSON descargable.6. Generación en lote (modal)
– Genera un lote de 5/10/20 contraseñas de una vez, listadas con botón de
copiar individual, botón «copiar todas» y botón de exportar a CSV.7. Código QR
– Modal que muestra un QR generado localmente en un <canvas> (sin librerías
externas ni llamadas a APIs de terceros) para poder pasar la contraseña
a otro dispositivo sin exponerla por red.8. Extras de UX
– Botón de mostrar/ocultar contraseña (máscara con puntos).
– Botón de copiar con feedback visual tipo «toast».
– Feedback sonoro opcional (Web Audio API, tonos sintéticos simples) con
botón de mute/unmute.
– Selector de tema que cambia la paleta visual según la saga elegida.
– Atajo de teclado (barra espaciadora) para regenerar, salvo que el foco
esté en un input/select.REQUISITOS DE SEGURIDAD (imprescindibles, no opcionales)
– Todos los números aleatorios deben salir de crypto.getRandomValues(), NUNCA
de Math.random(). La función de generación de enteros aleatorios debe usar
rejection sampling para eliminar el sesgo de módulo y garantizar distribución
uniforme real (el cálculo de entropía en bits depende de esto).
– Ningún dato generado por el usuario (contraseñas, palabras personalizadas)
debe insertarse nunca con innerHTML. Usa siempre creación de nodos DOM
(createElement + textContent) o innerText.
– No uses atributos onclick=»…» construidos por interpolación de strings con
datos dinámicos. Usa addEventListener con closures.
– Al exportar a CSV, neutraliza la inyección de fórmulas: si un campo empieza
por =, +, -, @, tab o retorno de carro, antepón un apóstrofo o un espacio
antes de escribirlo.
– Añade una meta Content-Security-Policy en el <head> (restringiendo script-src
y default-src a ‘self’, permitiendo solo fonts.googleapis.com/fonts.gstatic.com
para tipografías) y usa integrity (SRI) en el <link> de Google Fonts, o
aloja las fuentes localmente si es más simple.
– No debe existir ninguna llamada de red para generar, mostrar, guardar o
compartir contraseñas (todo el flujo, incluido el QR, es local).
– Nada de contraseñas ni historial debe persistir en localStorage, cookies
ni IndexedDB — todo vive en memoria y desaparece al recargar.ENTREGABLES
index.html, styles.css y app.js completos y funcionales, en español, listos
para abrir directamente en el navegador sin build step ni dependencias de npm.
Deja una respuesta