Soporte
API local y Web Crypto

Arquitectura simple para generar claves sin backend.

La API de SafeKey se entiende como un modulo de cliente: recibe reglas, usa aleatoriedad criptografica del navegador y devuelve una contrasena lista para copiar. Menos superficie, menos datos sensibles en transito.

Vision general

No hace falta enviar una contrasena a un servidor para que sea aleatoria. El navegador moderno ofrece Web Crypto API, que permite obtener bytes criptograficamente fuertes y mapearlos a un alfabeto configurable.

Preferencias

El usuario define longitud, numeros, simbolos, mayusculas y minusculas.

Entropia

El modulo solicita bytes con crypto.getRandomValues.

Filtro

Se seleccionan caracteres permitidos y se evita sesgo con rechazo cuando aplica.

Salida

La clave se muestra localmente y no se guarda en el servidor.

Ejemplo minimo

function securePassword(length = 16) {
  const alphabet = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789!@#$%&*?';
  const bytes = new Uint32Array(length);
  crypto.getRandomValues(bytes);
  return Array.from(bytes, n => alphabet[n % alphabet.length]).join('');
}

const password = securePassword(20);

Para produccion, valida longitud minima, fuerza al menos un caracter por grupo seleccionado y evita alfabetos demasiado pequenos. El ejemplo muestra la idea; la herramienta final debe cubrir requisitos de compatibilidad de cada servicio.

Buenas practicas de integracion

Privacidad primero

No envies la contrasena generada a analitica, logs, formularios ocultos ni endpoints de diagnostico.

UX clara

Muestra longitud, grupos activos, boton de copiar y aviso de que la clave no se recupera al cerrar.

Compatibilidad

Permite excluir simbolos ambiguos o limitar caracteres si el servicio destino tiene reglas antiguas.

Contrato recomendado

Errores que conviene evitar

Usar Math.random: no esta pensado para seguridad criptografica.

Registrar la salida: una contrasena en logs deja de ser secreta.

Forzar patrones humanos: prefijos, sufijos o palabras reducen entropia real.

Ocultar reglas: el usuario debe saber si esta generando con simbolos, longitud suficiente y privacidad local.

API explicada para implementar sin riesgo.

La documentacion deja claro que la integracion debe vivir en cliente, usar CSPRNG y evitar que una contraseña aparezca en logs o analitica.

Entrada

Longitud, mayusculas, minusculas, numeros, simbolos, caracteres ambiguos y modo frase memorable.

Nucleo seguro

Usa crypto.getRandomValues y mezcla con Fisher-Yates, sin Math.random.

Salida privada

Muestra la clave localmente, permite copiar y nunca la envia a endpoints de seguimiento.

Checklist de produccion

  • Validar longitud minima.
  • Forzar al menos un caracter por grupo elegido.
  • No registrar la contraseña.

Contrato claro

length, symbols, avoidAmbiguous, passphrase y entropyBits como señales visibles para el usuario.