{"id":27998644,"url":"https://github.com/686f6c61/security-generador","last_synced_at":"2025-07-26T04:32:35.542Z","repository":{"id":257404334,"uuid":"858180374","full_name":"686f6c61/security-generador","owner":"686f6c61","description":"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","archived":false,"fork":false,"pushed_at":"2025-04-07T16:11:19.000Z","size":1801,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-08T22:54:30.679Z","etag":null,"topics":["gifs","notes","password-generator","security"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/686f6c61.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-16T13:00:54.000Z","updated_at":"2025-04-11T11:31:44.000Z","dependencies_parsed_at":"2025-05-08T22:54:31.830Z","dependency_job_id":"70939ade-04b9-490e-b2c2-51685e039279","html_url":"https://github.com/686f6c61/security-generador","commit_stats":null,"previous_names":["the00b/password-generador","686f6c61/password-generador","686f6c61/security-generador"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/686f6c61/security-generador","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/686f6c61%2Fsecurity-generador","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/686f6c61%2Fsecurity-generador/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/686f6c61%2Fsecurity-generador/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/686f6c61%2Fsecurity-generador/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/686f6c61","download_url":"https://codeload.github.com/686f6c61/security-generador/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/686f6c61%2Fsecurity-generador/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267117250,"owners_count":24038640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gifs","notes","password-generator","security"],"created_at":"2025-05-08T22:54:28.892Z","updated_at":"2025-07-26T04:32:35.481Z","avatar_url":"https://github.com/686f6c61.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Security(B) - Suite de Seguridad Digital\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB\" alt=\"React\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MUI-007FFF?style=for-the-badge\u0026logo=mui\u0026logoColor=white\" alt=\"Material UI\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge\u0026logo=javascript\u0026logoColor=black\" alt=\"JavaScript\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Node.js-339933?style=for-the-badge\u0026logo=nodedotjs\u0026logoColor=white\" alt=\"Node.js\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Express-000000?style=for-the-badge\u0026logo=express\u0026logoColor=white\" alt=\"Express\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Giphy-FF6666?style=for-the-badge\u0026logo=giphy\u0026logoColor=white\" alt=\"Giphy\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Axios-5A29E4?style=for-the-badge\u0026logo=axios\u0026logoColor=white\" alt=\"Axios\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Crypto-0078D7?style=for-the-badge\u0026logo=crypto\u0026logoColor=white\" alt=\"Crypto\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/npm-CB3837?style=for-the-badge\u0026logo=npm\u0026logoColor=white\" alt=\"npm\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/ESLint-4B32C3?style=for-the-badge\u0026logo=eslint\u0026logoColor=white\" alt=\"ESLint\"/\u003e\n\u003c/div\u003e\n\nSecurity(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:\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/img/home.png\" alt=\"Página principal del generador de contraseñas\" width=\"800\"/\u003e\n  \u003cp\u003e\u003cem\u003ePágina principal de Security(B) - generadordepasswords.com\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n- **Generador avanzado de contraseñas seguras**: Crea contraseñas complejas y personalizadas con entropía medible\n- **Sistema de notas seguras encriptadas**: Comparte información confidencial con cifrado de extremo a extremo\n- **Generador interactivo con GIFs**: Función especial que utiliza la interacción con GIFs para crear contraseñas únicas\n- **Medición de entropía y seguridad**: Análisis en tiempo real de la fortaleza de contraseñas\n\nTodas 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.\n\n## Entropía y seguridad de contraseñas\n\nLa **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.\n\n### Fórmula de entropía\n\nLa entropía de una contraseña se calcula mediante la siguiente fórmula:\n\n```\nEntropía = L × log₂(R)\n```\n\nDonde:\n- **L** = Longitud de la contraseña (número de caracteres)\n- **R** = Rango de caracteres posibles (tamaño del conjunto)\n- **log₂** = Logaritmo en base 2\n\nPor ejemplo, para una contraseña de 14 caracteres usando letras minúsculas (26), mayúsculas (26), números (10) y símbolos especiales (32):\n```\nEntropía = 14 × log₂(94) ≈ 14 × 6.55 ≈ 91.7 bits\n```\n\n### Niveles de seguridad según la entropía\n\n| Nivel | Rango de entropía | Tiempo de crackeo* | Recomendación |\n|-------|-------------------|-------------------|---------------|\n| **Muy débil** | \u003c 28 bits | Segundos a minutos | Nunca usar para cuentas importantes |\n| **Débil** | 28-35 bits | Minutos a horas | Insuficiente para la mayoría de propósitos |\n| **Razonable** | 36-59 bits | Días a meses | Aceptable para cuentas de bajo riesgo |\n| **Fuerte** | 60-127 bits | Años a décadas | Recomendado para cuentas importantes |\n| **Muy fuerte** | ≥ 128 bits | Siglos o más | Ideal para información crítica o sensible |\n\n_*Estimado con hardware moderno (≈1 billón de intentos/segundo)_\n\n### Comparación de tipos de contraseñas\n\n- **Contraseña simple (8 caracteres, solo minúsculas):** \n  - 8 × log₂(26) ≈ 37.6 bits → **Razonable**\n  \n- **Contraseña de 14 caracteres (minúsculas, mayúsculas, números):**\n  - 14 × log₂(62) ≈ 83.4 bits → **Fuerte**\n  \n- **Contraseña de 4 palabras aleatorias separadas:**\n  - Usando diccionario de 8000 palabras: log₂(8000⁴) ≈ 52 bits → **Razonable**\n\n## Generador de Contraseñas Tradicional\n\nEl generador de contraseñas tradicional permite crear contraseñas altamente seguras y personalizables con múltiples opciones.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/img/generador-passswords.png\" alt=\"Generador de contraseñas tradicional\" width=\"800\"/\u003e\n  \u003cp\u003e\u003cem\u003eGenerador de contraseñas tradicional con opciones avanzadas de configuración\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n### Características principales:\n- Generación de contraseñas basadas en movimientos del ratón para mayor aleatoriedad\n- Longitud personalizable (14-100 caracteres)\n- Inclusión configurable de minúsculas, mayúsculas, números, símbolos, brackets y caracteres high ANSI\n- Opción para generar contraseñas basadas en palabras aleatorias\n- Evaluación en tiempo real de la fortaleza de la contraseña\n- Cálculo de entropía y tiempo estimado de crackeo\n\n## Generador con GIFs - Entropía Amazing\n\nNuestro 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.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/img/gif-password.png\" alt=\"Generador basado en GIFs\" width=\"800\"/\u003e\n  \u003cp\u003e\u003cem\u003eGenerador innovador basado en GIFs con la API de Giphy\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\nEsta 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.\n\n### Fórmula de entropía Amazing\n\nLa entropía total cuando se usa el generador basado en GIFs se calcula mediante:\n\n```\nEntropía Amazing = E_gif + E_interact + E_mouse + E_time\n```\n\nDonde:\n- **E_gif**: Entropía derivada de los GIFs seleccionados (≈ 10 bits por GIF)\n- **E_interact**: Entropía de las interacciones del usuario (me gusta/no me gusta)\n- **E_mouse**: Entropía de los movimientos del ratón\n- **E_time**: Entropía basada en timestamps\n\n### Funcionamiento:\n1. Introduce un término de búsqueda para encontrar GIFs\n2. Interactúa con los GIFs (me gusta/no me gusta)\n3. El sistema captura estos datos más los movimientos del ratón\n4. Se genera una contraseña única con entropía significativamente mayor que los métodos tradicionales\n\n## Sistema de Notas Seguras Encriptadas\n\nEl sistema de notas seguras permite compartir información confidencial con cifrado de extremo a extremo.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/img/notas.png\" alt=\"Sistema de notas seguras\" width=\"800\"/\u003e\n  \u003cp\u003e\u003cem\u003eSistema de notas seguras encriptadas con protección avanzada\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n### Características principales:\n- Cifrado de extremo a extremo mediante algoritmos avanzados\n- Múltiples algoritmos disponibles (AES-256-GCM, AES-256-CBC, AES-512-GCM, AES-512-CBC, ChaCha20-Poly1305)\n- Protección opcional con contraseña adicional\n- Opción de auto-destrucción tras lectura\n- Expiración configurable por tiempo\n\n### Opciones de configuración para compartir notas:\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/img/share.png\" alt=\"Compartir notas seguras\" width=\"800\"/\u003e\n  \u003cp\u003e\u003cem\u003eConfiguración de opciones para compartir notas seguras\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n### Notificación por correo electrónico:\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/img/mail.png\" alt=\"Notificación por correo\" width=\"800\"/\u003e\n  \u003cp\u003e\u003cem\u003eNotificación por correo electrónico con enlace a la nota segura\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## Características generales de la plataforma\n\n- **Interfaz de usuario intuitiva** con botones y chips para seleccionar opciones\n- **Notificaciones visuales** para confirmación de acciones\n- **Diseño responsivo** utilizando Material UI\n- **Tema claro/oscuro** para mejorar la experiencia de usuario\n- **Soporte para múltiples idiomas** (inglés, español)\n\n## Estructura del proyecto\n\nEl proyecto está organizado en una arquitectura moderna con React en el frontend y Node.js/Express en el backend:\n\n```\nSecurity(B)/\n├── public/                            # Archivos públicos\n│   └── img/                           # Imágenes para el README\n├── src/                               # Código fuente\n│   ├── components/                    # Componentes React\n│   │   ├── PasswordGenerator.js       # Generador principal\n│   │   ├── GiphyPasswordGenerator.js  # Generador basado en GIFs\n│   │   ├── SecureNoteSharing.js       # Creador de notas seguras\n│   │   ├── AccessSecureNote.js        # Visualizador de notas seguras\n│   │   └── ...                        # Otros componentes\n│   ├── contexts/                      # Contextos de React\n│   ├── hooks/                         # Hooks personalizados\n│   ├── utils/                         # Utilidades y funciones\n│   ├── App.js                         # Componente principal\n│   └── index.js                       # Punto de entrada\n├── backend/                           # Backend en Node.js\n│   ├── server.js                      # Servidor Express\n│   └── package.json                   # Dependencias backend\n├── package.json                       # Dependencias frontend\n└── manage.sh                          # Script para gestionar la aplicación\n```\n\n### Frontend\n\nEl frontend está desarrollado con React y Material UI, proporcionando una interfaz moderna e intuitiva:\n\n- **`components/`**: Contiene todos los componentes React:\n  - **`PasswordGenerator.js`**: Generador tradicional de contraseñas.\n  - **`GiphyPasswordGenerator.js`**: Innovador generador que usa la API de Giphy.\n  - **`SecureNoteSharing.js`**: Componente para crear y enviar notas seguras encriptadas.\n  - **`AccessSecureNote.js`**: Componente para acceder y descifrar notas seguras.\n  - **`EntropyExplanation.js`**: Explica el concepto de entropía.\n  - **`BruteForceExplanation.js`**: Explica los ataques de fuerza bruta.\n\n- **`contexts/`**: Contextos de React para gestionar estados globales como temas.\n\n- **`hooks/`**: Hooks personalizados:\n  - **`usePasswordGenerator`**: Lógica para generar contraseñas.\n\n- **`utils/`**: Funciones utilitarias:\n  - **`passwordGenerator.js`**: Algoritmos de generación de contraseñas.\n\n### Backend\n\nEl backend proporciona servicios y APIs necesarios para la aplicación:\n\n- **`server.js`**: Servidor Express con endpoints para:\n  - Evaluar la fortaleza de contraseñas\n  - Compartir contraseñas temporalmente\n  - Obtener palabras aleatorias para contraseñas basadas en palabras\n  - Gestionar notas seguras encriptadas\n  - Enviar notificaciones por correo electrónico\n\n### Script de gestión (`manage.sh`)\n\nUn script bash para facilitar la gestión de la aplicación:\n- Inicia/detiene el frontend y backend\n- Monitorea el estado de los servicios\n- Instala dependencias\n- Compila la aplicación para producción\n\n## Cómo usar\n\n1. **Clona el repositorio:**\n   ```bash\n   git clone https://github.com/the00b/password-generador.git\n   cd password-generador\n   ```\n\n2. **Configuración inicial:**\n   - Crea un archivo `.env` en el directorio raíz con tu API key de Giphy y Resend:\n     ```\n     REACT_APP_GIPHY_API_KEY=tu_api_key_de_giphy\n     RESEND_API_KEY=tu_api_key_de_resend\n     EMAIL_FROM=tu_correo@ejemplo.com\n     ```\n   - Para obtener una API key de Giphy, regístrate en [developers.giphy.com](https://developers.giphy.com/)\n   - Para obtener una API key de Resend, regístrate en [resend.com](https://resend.com/)\n\n3. **Instala las dependencias:**\n   ```bash\n   ./manage.sh install\n   ```\n\n4. **Inicia la aplicación:**\n   ```bash\n   ./manage.sh start\n   ```\n   Esto iniciará tanto el servidor backend como la aplicación frontend.\n\n5. **Usa el generador de contraseñas:**\n   - Navega a `http://localhost:3000` en tu navegador.\n   - Selecciona el tipo de generador (tradicional o basado en GIFs).\n   - Configura las opciones de tu contraseña.\n   - Copia la contraseña o compártela de forma segura.\n\n6. **Usa el compartidor de notas seguras:**\n   - Navega a `http://localhost:3000/secure-notes` en tu navegador.\n   - Escribe el contenido de la nota que deseas compartir.\n   - Configura las opciones de seguridad y envía la nota.\n   - Comparte el enlace generado con el destinatario.\n\n7. **Gestionar la aplicación:**\n   - Para ver el estado: `./manage.sh status`\n   - Para reiniciar: `./manage.sh restart`\n   - Para detener: `./manage.sh stop`\n\n## Dependencias\n\n- **React**: Biblioteca para construir interfaces de usuario.\n- **Material UI**: Librería de componentes para React.\n- **Node.js**: Entorno de ejecución para JavaScript del lado del servidor.\n- **Express**: Framework web para Node.js.\n- **Giphy API**: API para buscar y mostrar GIFs.\n- **Axios**: Cliente HTTP para realizar peticiones.\n- **Crypto**: Para la encriptación de notas seguras.\n- **Resend**: Para el envío de correos electrónicos.\n- **UUID**: Para generar identificadores únicos.\n\n## Requisitos del sistema\n\n- **Node.js** (v14 o superior)\n- **npm** (v6 o superior)\n- Navegador moderno (Chrome, Firefox, Edge, Safari)\n- Conexión a Internet (para las APIs de Giphy y Resend)\n\n## Contribuciones\n\nLas contribuciones son bienvenidas. Por favor, sigue estos pasos:\n\n1. Haz un fork del repositorio\n2. Crea una nueva rama (`git checkout -b feature/mejora-increible`)\n3. Haz commit de tus cambios (`git commit -am 'Agrega una mejora increíble'`)\n4. Sube la rama (`git push origin feature/mejora-increible`)\n5. Abre un Pull Request\n\n## Licencia\n\nEste proyecto está bajo la licencia MIT. Ver el archivo `LICENSE` para más detalles.\n\n---\n\n## Contacto\n\nSi tienes preguntas o comentarios, no dudes en abrir un issue en GitHub o contactar al autor.\n\n---\n\n## Integración con Supabase para Notas Seguras\n\nEl sistema de notas seguras utiliza [Supabase](https://supabase.com/) 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.\n\n### Estructura de la Base de Datos\n\nLa tabla principal `secure_notes` tiene la siguiente estructura:\n\n```sql\nCREATE TABLE IF NOT EXISTS public.secure_notes (\n  id UUID PRIMARY KEY,                           -- Identificador único de la nota\n  encrypted_data JSONB NOT NULL,                 -- Datos encriptados y metadatos del algoritmo\n  requires_password BOOLEAN DEFAULT false,       -- Indica si requiere contraseña adicional\n  password_hash TEXT,                            -- Hash SHA-256 de la contraseña (si aplica)\n  expires_at TIMESTAMP WITH TIME ZONE NOT NULL,  -- Fecha/hora de expiración\n  remaining_views INTEGER DEFAULT 1,             -- Número de visualizaciones restantes\n  expire_on_view BOOLEAN DEFAULT false,          -- Si debe eliminarse al visualizarse\n  created_at TIMESTAMP WITH TIME ZONE DEFAULT now(),\n  updated_at TIMESTAMP WITH TIME ZONE DEFAULT now()\n);\n```\n\nEsta estructura permite:\n- Almacenar datos encriptados en formato JSON con metadatos del algoritmo usado\n- Configurar protecciones adicionales con contraseña\n- Establecer diferentes políticas de caducidad (por tiempo o visualizaciones)\n- Mantener información para auditoría (creación/actualización)\n\n### Algoritmos de Encriptación\n\nEl sistema ofrece múltiples algoritmos de encriptación, cada uno con diferentes características:\n\n#### 1. AES-256-GCM\n- **Descripción**: Algoritmo estándar de cifrado avanzado con modo Galois/Counter que proporciona tanto confidencialidad como autenticación.\n- **Ventajas**: Rápido, seguro y resistente a manipulaciones. Detecta si los datos han sido alterados.\n- **Uso ideal**: Protección general de datos sensibles con rendimiento eficiente.\n\n#### 2. AES-256-CBC\n- **Descripción**: Algoritmo simétrico tradicional en modo Cipher Block Chaining.\n- **Ventajas**: Ampliamente probado y compatible con la mayoría de sistemas.\n- **Uso ideal**: Cuando se requiere compatibilidad con sistemas antiguos.\n\n#### 3. AES-512-GCM\n- **Descripción**: Implementación de doble capa que utiliza dos claves AES-256 separadas para crear un cifrado de fuerza equivalente a 512 bits.\n- **Ventajas**: Seguridad extremadamente alta, prácticamente imposible de romper incluso con computación cuántica.\n- **Uso ideal**: Datos altamente confidenciales que requieren el máximo nivel de protección.\n\n#### 4. AES-512-CBC\n- **Descripción**: Versión de doble capa del cifrado AES-256-CBC.\n- **Ventajas**: Mayor fortaleza criptográfica manteniendo la compatibilidad del formato CBC.\n- **Uso ideal**: Datos muy sensibles que requieren compatibilidad con sistemas que no soportan GCM.\n\n#### 5. ChaCha20-Poly1305\n- **Descripción**: Algoritmo moderno diseñado como alternativa a AES, especialmente eficiente en plataformas sin aceleración de hardware AES.\n- **Ventajas**: Rendimiento superior en software, excelente para dispositivos móviles y de bajo consumo.\n- **Uso ideal**: Aplicaciones donde el rendimiento es crucial o en sistemas con recursos limitados.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F686f6c61%2Fsecurity-generador","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F686f6c61%2Fsecurity-generador","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F686f6c61%2Fsecurity-generador/lists"}