Skip to content

Suite completa de herramientas de seguridad con generador avanzado de contraseñas, sistema de notas seguras cifradas de extremo a extremo y generador innovador basado en GIFs. Implementado con React y Material UI en el frontend y Node.js/Express en el backend. Incluye múltiples algoritmos de cifrado (AES-256-GCM, AES-512), med

Notifications You must be signed in to change notification settings

686f6c61/security-generador

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Security(B) - Suite de Seguridad Digital

React Material UI JavaScript Node.js Express Giphy Axios Crypto npm ESLint

Security(B) es una suite completa de herramientas de seguridad digital implementada con React y Material UI en el frontend y Node.js con Express en el backend. La plataforma ofrece múltiples servicios de seguridad integrados:

Página principal del generador de contraseñas

Página principal de Security(B) - generadordepasswords.com

  • Generador avanzado de contraseñas seguras: Crea contraseñas complejas y personalizadas con entropía medible
  • Sistema de notas seguras encriptadas: Comparte información confidencial con cifrado de extremo a extremo
  • Generador interactivo con GIFs: Función especial que utiliza la interacción con GIFs para crear contraseñas únicas
  • Medición de entropía y seguridad: Análisis en tiempo real de la fortaleza de contraseñas

Todas las operaciones de encriptación utilizan algoritmos de nivel militar (AES-256-GCM, AES-512) y están diseñadas siguiendo las mejores prácticas de seguridad.

Entropía y seguridad de contraseñas

La entropía es una medida matemática de la aleatoriedad o imprevisibilidad de una contraseña. En criptografía, se expresa en bits y es crucial para evaluar la resistencia de una contraseña contra ataques de fuerza bruta.

Fórmula de entropía

La entropía de una contraseña se calcula mediante la siguiente fórmula:

Entropía = L × log₂(R)

Donde:

  • L = Longitud de la contraseña (número de caracteres)
  • R = Rango de caracteres posibles (tamaño del conjunto)
  • log₂ = Logaritmo en base 2

Por ejemplo, para una contraseña de 14 caracteres usando letras minúsculas (26), mayúsculas (26), números (10) y símbolos especiales (32):

Entropía = 14 × log₂(94) ≈ 14 × 6.55 ≈ 91.7 bits

Niveles de seguridad según la entropía

Nivel Rango de entropía Tiempo de crackeo* Recomendación
Muy débil < 28 bits Segundos a minutos Nunca usar para cuentas importantes
Débil 28-35 bits Minutos a horas Insuficiente para la mayoría de propósitos
Razonable 36-59 bits Días a meses Aceptable para cuentas de bajo riesgo
Fuerte 60-127 bits Años a décadas Recomendado para cuentas importantes
Muy fuerte ≥ 128 bits Siglos o más Ideal para información crítica o sensible

*Estimado con hardware moderno (≈1 billón de intentos/segundo)

Comparación de tipos de contraseñas

  • Contraseña simple (8 caracteres, solo minúsculas):

    • 8 × log₂(26) ≈ 37.6 bits → Razonable
  • Contraseña de 14 caracteres (minúsculas, mayúsculas, números):

    • 14 × log₂(62) ≈ 83.4 bits → Fuerte
  • Contraseña de 4 palabras aleatorias separadas:

    • Usando diccionario de 8000 palabras: log₂(8000⁴) ≈ 52 bits → Razonable

Generador de Contraseñas Tradicional

El generador de contraseñas tradicional permite crear contraseñas altamente seguras y personalizables con múltiples opciones.

Generador de contraseñas tradicional

Generador de contraseñas tradicional con opciones avanzadas de configuración

Características principales:

  • Generación de contraseñas basadas en movimientos del ratón para mayor aleatoriedad
  • Longitud personalizable (14-100 caracteres)
  • Inclusión configurable de minúsculas, mayúsculas, números, símbolos, brackets y caracteres high ANSI
  • Opción para generar contraseñas basadas en palabras aleatorias
  • Evaluación en tiempo real de la fortaleza de la contraseña
  • Cálculo de entropía y tiempo estimado de crackeo

Generador con GIFs - Entropía Amazing

Nuestro innovador método "Entropía Amazing" amplía el concepto tradicional de entropía incorporando fuentes únicas de aleatoriedad a través de la interacción con GIFs.

Generador basado en GIFs

Generador innovador basado en GIFs con la API de Giphy

Esta técnica proporciona una capa adicional de seguridad y es especialmente resistente a ataques basados en diccionarios o patrones, ya que incorpora elementos biométricos indirectos (patrones de movimiento del ratón) y preferencias personales.

Fórmula de entropía Amazing

La entropía total cuando se usa el generador basado en GIFs se calcula mediante:

Entropía Amazing = E_gif + E_interact + E_mouse + E_time

Donde:

  • E_gif: Entropía derivada de los GIFs seleccionados (≈ 10 bits por GIF)
  • E_interact: Entropía de las interacciones del usuario (me gusta/no me gusta)
  • E_mouse: Entropía de los movimientos del ratón
  • E_time: Entropía basada en timestamps

Funcionamiento:

  1. Introduce un término de búsqueda para encontrar GIFs
  2. Interactúa con los GIFs (me gusta/no me gusta)
  3. El sistema captura estos datos más los movimientos del ratón
  4. Se genera una contraseña única con entropía significativamente mayor que los métodos tradicionales

Sistema de Notas Seguras Encriptadas

El sistema de notas seguras permite compartir información confidencial con cifrado de extremo a extremo.

Sistema de notas seguras

Sistema de notas seguras encriptadas con protección avanzada

Características principales:

  • Cifrado de extremo a extremo mediante algoritmos avanzados
  • Múltiples algoritmos disponibles (AES-256-GCM, AES-256-CBC, AES-512-GCM, AES-512-CBC, ChaCha20-Poly1305)
  • Protección opcional con contraseña adicional
  • Opción de auto-destrucción tras lectura
  • Expiración configurable por tiempo

Opciones de configuración para compartir notas:

Compartir notas seguras

Configuración de opciones para compartir notas seguras

Notificación por correo electrónico:

Notificación por correo

Notificación por correo electrónico con enlace a la nota segura

Características generales de la plataforma

  • Interfaz de usuario intuitiva con botones y chips para seleccionar opciones
  • Notificaciones visuales para confirmación de acciones
  • Diseño responsivo utilizando Material UI
  • Tema claro/oscuro para mejorar la experiencia de usuario
  • Soporte para múltiples idiomas (inglés, español)

Estructura del proyecto

El proyecto está organizado en una arquitectura moderna con React en el frontend y Node.js/Express en el backend:

Security(B)/
├── public/                            # Archivos públicos
│   └── img/                           # Imágenes para el README
├── src/                               # Código fuente
│   ├── components/                    # Componentes React
│   │   ├── PasswordGenerator.js       # Generador principal
│   │   ├── GiphyPasswordGenerator.js  # Generador basado en GIFs
│   │   ├── SecureNoteSharing.js       # Creador de notas seguras
│   │   ├── AccessSecureNote.js        # Visualizador de notas seguras
│   │   └── ...                        # Otros componentes
│   ├── contexts/                      # Contextos de React
│   ├── hooks/                         # Hooks personalizados
│   ├── utils/                         # Utilidades y funciones
│   ├── App.js                         # Componente principal
│   └── index.js                       # Punto de entrada
├── backend/                           # Backend en Node.js
│   ├── server.js                      # Servidor Express
│   └── package.json                   # Dependencias backend
├── package.json                       # Dependencias frontend
└── manage.sh                          # Script para gestionar la aplicación

Frontend

El frontend está desarrollado con React y Material UI, proporcionando una interfaz moderna e intuitiva:

  • components/: Contiene todos los componentes React:

    • PasswordGenerator.js: Generador tradicional de contraseñas.
    • GiphyPasswordGenerator.js: Innovador generador que usa la API de Giphy.
    • SecureNoteSharing.js: Componente para crear y enviar notas seguras encriptadas.
    • AccessSecureNote.js: Componente para acceder y descifrar notas seguras.
    • EntropyExplanation.js: Explica el concepto de entropía.
    • BruteForceExplanation.js: Explica los ataques de fuerza bruta.
  • contexts/: Contextos de React para gestionar estados globales como temas.

  • hooks/: Hooks personalizados:

    • usePasswordGenerator: Lógica para generar contraseñas.
  • utils/: Funciones utilitarias:

    • passwordGenerator.js: Algoritmos de generación de contraseñas.

Backend

El backend proporciona servicios y APIs necesarios para la aplicación:

  • server.js: Servidor Express con endpoints para:
    • Evaluar la fortaleza de contraseñas
    • Compartir contraseñas temporalmente
    • Obtener palabras aleatorias para contraseñas basadas en palabras
    • Gestionar notas seguras encriptadas
    • Enviar notificaciones por correo electrónico

Script de gestión (manage.sh)

Un script bash para facilitar la gestión de la aplicación:

  • Inicia/detiene el frontend y backend
  • Monitorea el estado de los servicios
  • Instala dependencias
  • Compila la aplicación para producción

Cómo usar

  1. Clona el repositorio:

    git clone https://github.com/the00b/password-generador.git
    cd password-generador
  2. Configuración inicial:

    • Crea un archivo .env en el directorio raíz con tu API key de Giphy y Resend:
      REACT_APP_GIPHY_API_KEY=tu_api_key_de_giphy
      RESEND_API_KEY=tu_api_key_de_resend
      [email protected]
      
    • Para obtener una API key de Giphy, regístrate en developers.giphy.com
    • Para obtener una API key de Resend, regístrate en resend.com
  3. Instala las dependencias:

    ./manage.sh install
  4. Inicia la aplicación:

    ./manage.sh start

    Esto iniciará tanto el servidor backend como la aplicación frontend.

  5. Usa el generador de contraseñas:

    • Navega a http://localhost:3000 en tu navegador.
    • Selecciona el tipo de generador (tradicional o basado en GIFs).
    • Configura las opciones de tu contraseña.
    • Copia la contraseña o compártela de forma segura.
  6. Usa el compartidor de notas seguras:

    • Navega a http://localhost:3000/secure-notes en tu navegador.
    • Escribe el contenido de la nota que deseas compartir.
    • Configura las opciones de seguridad y envía la nota.
    • Comparte el enlace generado con el destinatario.
  7. Gestionar la aplicación:

    • Para ver el estado: ./manage.sh status
    • Para reiniciar: ./manage.sh restart
    • Para detener: ./manage.sh stop

Dependencias

  • React: Biblioteca para construir interfaces de usuario.
  • Material UI: Librería de componentes para React.
  • Node.js: Entorno de ejecución para JavaScript del lado del servidor.
  • Express: Framework web para Node.js.
  • Giphy API: API para buscar y mostrar GIFs.
  • Axios: Cliente HTTP para realizar peticiones.
  • Crypto: Para la encriptación de notas seguras.
  • Resend: Para el envío de correos electrónicos.
  • UUID: Para generar identificadores únicos.

Requisitos del sistema

  • Node.js (v14 o superior)
  • npm (v6 o superior)
  • Navegador moderno (Chrome, Firefox, Edge, Safari)
  • Conexión a Internet (para las APIs de Giphy y Resend)

Contribuciones

Las contribuciones son bienvenidas. Por favor, sigue estos pasos:

  1. Haz un fork del repositorio
  2. Crea una nueva rama (git checkout -b feature/mejora-increible)
  3. Haz commit de tus cambios (git commit -am 'Agrega una mejora increíble')
  4. Sube la rama (git push origin feature/mejora-increible)
  5. Abre un Pull Request

Licencia

Este proyecto está bajo la licencia MIT. Ver el archivo LICENSE para más detalles.


Contacto

Si tienes preguntas o comentarios, no dudes en abrir un issue en GitHub o contactar al autor.


Integración con Supabase para Notas Seguras

El sistema de notas seguras utiliza Supabase como base de datos persistente para almacenar las notas encriptadas. Esto permite un almacenamiento más confiable y escalable que las soluciones en memoria utilizadas anteriormente.

Estructura de la Base de Datos

La tabla principal secure_notes tiene la siguiente estructura:

CREATE TABLE IF NOT EXISTS public.secure_notes (
  id UUID PRIMARY KEY,                           -- Identificador único de la nota
  encrypted_data JSONB NOT NULL,                 -- Datos encriptados y metadatos del algoritmo
  requires_password BOOLEAN DEFAULT false,       -- Indica si requiere contraseña adicional
  password_hash TEXT,                            -- Hash SHA-256 de la contraseña (si aplica)
  expires_at TIMESTAMP WITH TIME ZONE NOT NULL,  -- Fecha/hora de expiración
  remaining_views INTEGER DEFAULT 1,             -- Número de visualizaciones restantes
  expire_on_view BOOLEAN DEFAULT false,          -- Si debe eliminarse al visualizarse
  created_at TIMESTAMP WITH TIME ZONE DEFAULT now(),
  updated_at TIMESTAMP WITH TIME ZONE DEFAULT now()
);

Esta estructura permite:

  • Almacenar datos encriptados en formato JSON con metadatos del algoritmo usado
  • Configurar protecciones adicionales con contraseña
  • Establecer diferentes políticas de caducidad (por tiempo o visualizaciones)
  • Mantener información para auditoría (creación/actualización)

Algoritmos de Encriptación

El sistema ofrece múltiples algoritmos de encriptación, cada uno con diferentes características:

1. AES-256-GCM

  • Descripción: Algoritmo estándar de cifrado avanzado con modo Galois/Counter que proporciona tanto confidencialidad como autenticación.
  • Ventajas: Rápido, seguro y resistente a manipulaciones. Detecta si los datos han sido alterados.
  • Uso ideal: Protección general de datos sensibles con rendimiento eficiente.

2. AES-256-CBC

  • Descripción: Algoritmo simétrico tradicional en modo Cipher Block Chaining.
  • Ventajas: Ampliamente probado y compatible con la mayoría de sistemas.
  • Uso ideal: Cuando se requiere compatibilidad con sistemas antiguos.

3. AES-512-GCM

  • Descripción: Implementación de doble capa que utiliza dos claves AES-256 separadas para crear un cifrado de fuerza equivalente a 512 bits.
  • Ventajas: Seguridad extremadamente alta, prácticamente imposible de romper incluso con computación cuántica.
  • Uso ideal: Datos altamente confidenciales que requieren el máximo nivel de protección.

4. AES-512-CBC

  • Descripción: Versión de doble capa del cifrado AES-256-CBC.
  • Ventajas: Mayor fortaleza criptográfica manteniendo la compatibilidad del formato CBC.
  • Uso ideal: Datos muy sensibles que requieren compatibilidad con sistemas que no soportan GCM.

5. ChaCha20-Poly1305

  • Descripción: Algoritmo moderno diseñado como alternativa a AES, especialmente eficiente en plataformas sin aceleración de hardware AES.
  • Ventajas: Rendimiento superior en software, excelente para dispositivos móviles y de bajo consumo.
  • Uso ideal: Aplicaciones donde el rendimiento es crucial o en sistemas con recursos limitados.

About

Suite completa de herramientas de seguridad con generador avanzado de contraseñas, sistema de notas seguras cifradas de extremo a extremo y generador innovador basado en GIFs. Implementado con React y Material UI en el frontend y Node.js/Express en el backend. Incluye múltiples algoritmos de cifrado (AES-256-GCM, AES-512), med

Topics

Resources

Stars

Watchers

Forks

Languages