~/keydrop/docs/help
docs
Ayuda
Cómo usar cada herramienta y qué garantías ofrece KeyDrop.
overview Qué es KeyDrop
KeyDrop reúne 16 utilidades de seguridad para developers, agrupadas en cuatro bloques: generadores (contraseñas, passphrases, API keys, .env por variable o por stack), compartir secretos zero-knowledge (One Time Secret, archivos cifrados, solicitudes ECDH, recibos de estado), análisis local (redactor, escáner .env, diff seguro, Safe Share) y herramientas para webhooks y JWT (HMAC, inspector JWT, kit de webhooks, asistente de rotación). Salvo los flujos de compartición, todo se genera y se queda en tu navegador.
passwords Contraseñas seguras
Usamos `crypto.getRandomValues` para extraer bytes uniformes y rejection sampling para evitar sesgo modular al elegir caracteres del alfabeto. La barra de fuerza muestra log2(alfabeto) × longitud. Cuanto mayor la entropía, más imprevisible la contraseña.
passphrases Passphrases tipo Diceware
Una passphrase es una secuencia de palabras seleccionadas al azar. Es más fácil de recordar que una contraseña aleatoria y, con suficientes palabras, ofrece más entropía. Cada palabra de nuestras listas aporta unos 8 bits.
env Variables .env
Las variables de entorno guardan configuración fuera del código. Generar valores fuertes para JWT_SECRET, SESSION_SECRET o ENCRYPTION_KEY evita que un atacante reutilice claves filtradas. Nunca subas tu .env a Git.
api-keys API keys
Las API keys son tokens opacos que identifican una integración. El prefijo (sk_live, pk_test, ak…) ayuda a clasificarlas. base64url y hex son los formatos más portátiles. UUID v4 ofrece 122 bits.
one-time-secret Cómo funciona One Time Secret
El secreto se cifra en tu navegador con AES-GCM 256. La clave se genera en local y viaja en el fragmento de la URL (la parte después de #). El servidor solo guarda el sobre cifrado. Cuando el destinatario pulsa “Revelar secreto”, el backend hace una operación atómica que recupera el dato y lo borra al instante.
files Archivos cifrados
En /files puedes subir un archivo y obtener un enlace de descarga única. El archivo se cifra entero en tu navegador con AES-GCM 256, y el nombre, el tipo y los bytes viajan dentro del payload cifrado. El servidor solo recibe un blob opaco y un id aleatorio, y al primer revelado real se borra. Tamaño máximo configurable por la variable MAX_SECRET_FILE_SIZE_BYTES, por defecto 5 MB.
redact Redactor de secretos
En /redact puedes pegar un log, un archivo .env o un stack trace y la app oculta automáticamente claves API, JWT, Bearer tokens, claves PEM, URLs con credenciales y similares. Todo ocurre en tu navegador: el texto no se envía a ningún servidor. El modo agresivo añade variables cuyo nombre termina en SECRET, TOKEN, KEY, PASSWORD, PRIVATE.
env-scan Escáner de .env
En /env/scan puedes pegar el contenido de un archivo .env para detectar variables públicas que parecen secretos, valores obvios como changeme, URLs con credenciales embebidas, valores demasiado cortos para ser secretos, duplicados y entropía baja. Cada hallazgo se etiqueta como crítico, advertencia o nota. También se ejecuta íntegramente en local.
status Recibos de estado
Al crear un secreto, archivo o solicitud puedes generar un enlace de estado adicional. Ese enlace permite saber si el receptor ya consumió el secreto, si caducó o si sigue pendiente, sin acceder al contenido. Los metadatos del recibo (tipo de recurso, fechas) se cifran en cliente con una clave que solo vive en el fragmento del enlace.
requests Solicitar un secreto
En /requests creas una solicitud para que otra persona te envíe un secreto sin pasarlo por chat o email. Tu navegador genera un par ECDH P-256: la pública viaja en el enlace público que envías a la otra persona y la privada en el enlace privado que guardas tú. Cuando responden, su navegador genera un par efímero, cifra con AES-GCM derivada por ECDH y sube el blob. El servidor nunca ve la respuesta en claro y solo tú, con tu enlace privado, puedes descifrarla. La reclamación es de un solo uso.
redact Redactor de logs y .env
En /redact pegas un log, .env, error o stack trace y la app oculta automáticamente patrones conocidos: JWT, Bearer tokens, claves PEM, AWS Access Key IDs, GitHub PATs, claves OpenAI/Anthropic/Stripe/Slack, webhooks de Discord, URLs con credenciales y, en modo agresivo, variables ENV cuyo nombre termina en SECRET, TOKEN, KEY, PASSWORD, PRIVATE. El procesamiento es 100% local.
safe-share Safe Share para soporte y ChatGPT
En /safe-share extiendes el redactor con detectores opt-in pensados para limpiar texto antes de pegarlo en un chat externo, foro o ChatGPT: ocultar emails, IPs, dominios, rutas locales, nombres de contenedor, cabeceras Authorization y cookies. Incluye plantillas de prompt para Next.js, Docker, n8n, Redis, API/webhook, frontend y backend. Nada se envía al servidor.
diff Diff seguro de .env
En /diff comparas dos archivos .env (típicamente local vs production) y la app muestra qué variables se añaden, eliminan o cambian, indicando longitud y tipo (URL, JWT, numérico, PEM, texto) pero nunca los valores reales. El informe se descarga en Markdown y se puede enviar al redactor con un clic.
env-generate Generador .env por stack
En /env/generate eliges un stack (Next.js, Node API, Express/Fastify, n8n, Postgres+Redis, Supabase, Auth.js, Clerk, OpenAI, Stripe, SaaS genérico) y obtienes el .env con valores criptográficos generados en cliente, el .env.example con placeholders y un Markdown con la documentación de cada variable y su scope (público, privado, build).
hmac HMAC SHA-256/384/512
En /hmac firmas y verificas payloads con HMAC sin enviar nada al servidor. Soporta hex, base64 y base64url, prefijos (sha256=, v1=, v0=) y un helper de timestamp para construir cadenas timestamp.payload típicas de webhooks. Útil para depurar firmas de Stripe, GitHub, Slack o tu propio sistema.
jwt Inspector JWT
En /jwt pegas un token y la app decodifica header y payload, muestra fechas legibles y emite avisos para alg=none, expiración ausente, expirado, exp lejano, nbf futuro, kid faltante en RS/ES y claims que parecen sensibles. KeyDrop no verifica la firma en V1: decodificar no implica que el token sea válido.
webhooks Webhook security kit
En /webhooks generas un kit completo (WEBHOOK_SECRET, WEBHOOK_SIGNING_SECRET, HMAC_SECRET, INTERNAL_WEBHOOK_TOKEN, tolerancia y ventana de replay) y obtienes snippets para Next.js, Node, Express, Fastify, n8n y curl. Cada snippet construye la cadena timestamp.payload, valida tolerancia y usa comparación timing-safe.
rotate Asistente de rotación
En /rotate eliges el tipo de secreto (API key, JWT secret, webhook secret, DB password, Redis password, OAuth client secret, token genérico) y la app genera un valor sugerido y un plan paso a paso con avisos específicos. Por ejemplo: cambiar JWT_SECRET sin tolerancia invalida sesiones, cambiar la contraseña de DB sin un usuario nuevo provoca downtime, etc.
fragment Por qué la URL contiene #
El navegador no envía el fragmento (#) al servidor. Por eso esa porción aloja la clave de descifrado o, en las solicitudes, la clave pública o privada ECDH. Garantizamos que el servidor nunca las vea. Si el enlace pierde el fragmento, el secreto es irrecuperable, ni siquiera nosotros podemos descifrarlo.
limits Limitaciones
No hay recuperación de secretos: si pierdes el enlace, el secreto se pierde. Si alguien lo abre antes que el destinatario, el primero se queda con él y el segundo verá un mensaje de consumido. No envíes datos extremadamente críticos por canales sin verificar.
recommendations Recomendaciones
Comparte enlaces por canales que ya consideres seguros. Para datos muy sensibles, usa la opción de contraseña adicional y transmite la contraseña por un canal distinto al del enlace. Elige la expiración más corta que sea aceptable.
faq FAQ rápida
¿Guardáis logs? Solo los mínimos técnicos (timestamp, endpoint, código de estado, IP para rate limit). ¿Qué guardáis en mi navegador? Únicamente dos preferencias en localStorage: idioma (es/en) y tema (dark/light), sin datos personales. ¿Funciona offline? Los generadores sí; One Time Secret necesita conexión para subir el sobre.