Skip to content

EIVRAJAM/Cryptography_Safe_Dungeons

Repository files navigation

Safe Dungeons 🏰🔐

Safe Dungeons es una aplicación web innovadora que combina criptografía avanzada, astronomía y comunicación en tiempo real para crear un sistema de chat seguro con desafíos astronómicos únicos.

🌟 Características Principales

🔐 Seguridad Avanzada

  • Autenticación JWT: Sistema robusto de autenticación basado en tokens
  • Cifrado simétrico: Protección de mensajes con claves de cifrado personalizadas
  • Gestión de tokens: Sistema de blacklist para tokens invalidados
  • Roles de usuario: Control de acceso basado en roles (usuarios y administradores)

🌌 Desafíos Astronómicos

  • Generación de coordenadas: Sistema que genera ubicaciones geográficas aleatorias
  • Cálculos astronómicos: Integración con Skyfield para determinar constelaciones visibles
  • Desafíos temporales: Generación de fechas futuras para validaciones astronómicas
  • Validación de respuestas: Sistema de verificación de conocimientos astronómicos

💬 Chat en Tiempo Real

  • WebSocket con SocketIO: Comunicación bidireccional en tiempo real
  • Salas de chat: Creación y gestión de grupos de conversación
  • Mensajes seguros: Todos los mensajes están protegidos con cifrado
  • Historial persistente: Almacenamiento de mensajes en base de datos NoSQL

🏗️ Arquitectura del Sistema

Backend

  • Flask: Framework web principal
  • Flask-SocketIO: Manejo de WebSockets para comunicación en tiempo real
  • SQLAlchemy: ORM para base de datos relacional (PostgreSQL)
  • Cassandra: Base de datos NoSQL para el sistema de chat
  • Redis: Cache y cola de mensajes
  • Eventlet: Servidor asíncrono para manejo concurrente

Bases de Datos

  • PostgreSQL: Usuarios, roles, autenticación
  • Cassandra: Salas de chat, mensajes, historial
  • Redis: Cache, sesiones, cola de mensajes

Servicios Externos

  • Skyfield: Cálculos astronómicos y posiciones planetarias
  • NASA DE421: Efemérides planetarias para cálculos precisos

📁 Estructura del Proyecto

safe_dungeons/
├── authentication/          # Sistema de autenticación
│   ├── models/             # Modelos de usuario y roles
│   ├── process/            # Rutas y servicios de auth
│   └── repositories/       # Acceso a datos de autenticación
├── encryption/             # Servicios de cifrado y desafíos
│   ├── domain/services/    # Lógica de negocio de desafíos
│   ├── infrastructure/     # Servicios de cifrado y astronomía
│   └── interfaces/         # APIs REST
├── shared/chats/           # Sistema de chat
│   ├── controllers/        # Controladores de chat
│   ├── models/            # Modelos de chat (Cassandra)
│   ├── repositories/      # Acceso a datos de chat
│   └── services/          # Lógica de negocio de chat
├── ws_service/            # Servicio WebSocket principal
│   ├── events/            # Manejadores de eventos SocketIO
│   └── utils/             # Utilidades y logging
├── db/                    # Configuración de bases de datos
│   ├── sql/               # Conexión PostgreSQL
│   └── nosql/             # Conexión Cassandra
└── config/                # Configuraciones por ambiente

🚀 Instalación y Configuración

Prerrequisitos

  • Python 3.8+
  • PostgreSQL
  • Cassandra
  • Redis

1. Clonar el repositorio

git clone https://github.com/EIVRAJAM/Cryptography_Safe_Dungeons.git
cd Cryptography_Safe_Dungeons

2. Crear entorno virtual

python -m venv venv
venv\Scripts\activate  # Windows
# source venv/bin/activate  # Linux/Mac

3. Instalar dependencias

pip install -r requirements.txt

4. Configurar variables de entorno

# Copiar el archivo de ejemplo
copy .env.example .env

# Editar .env con tus configuraciones

Variables de entorno requeridas:

  • SQLALCHEMY_DATABASE_URI: Conexión a PostgreSQL
  • CASSANDRA_CONTACT_POINTS: Nodos de Cassandra
  • CASSANDRA_KEYSPACE: Keyspace para chat
  • REDIS_URL: URL de conexión a Redis
  • JWT_SECRET_KEY: Clave secreta para JWT
  • ENCRYPTION_KEY: Clave para cifrado simétrico
  • DATE_GEN_SECRET: Clave para generación de fechas

5. Inicializar bases de datos

# PostgreSQL: crear base de datos
# Cassandra: crear keyspace
# Las tablas se crean automáticamente al iniciar la aplicación

6. Ejecutar la aplicación

python ws_service/app.py

La aplicación estará disponible en http://localhost:5001

🧪 Testing

# Ejecutar todos los tests
pytest

# Ejecutar tests específicos
pytest tests/test_challenge.py
pytest tests/test_generators.py

🌐 API Endpoints

Autenticación

  • POST /auth/register - Registro de usuarios
  • POST /auth/login - Inicio de sesión
  • POST /auth/logout - Cierre de sesión
  • POST /auth/refresh - Renovar token

Chat

  • GET /api/chat/rooms - Listar salas
  • POST /api/chat/rooms - Crear sala
  • GET /api/chat/rooms/{id}/messages - Mensajes de sala

WebSocket Events

  • join_room - Unirse a sala de chat
  • leave_room - Salir de sala
  • send_message - Enviar mensaje
  • encrypted_message - Mensaje cifrado

🔧 Configuración de Desarrollo

Estructura de configuración

  • config/dev.py - Configuración de desarrollo
  • config/prod.py - Configuración de producción

Logging

El sistema incluye logging configurado para desarrollo y producción con diferentes niveles de detalle.

🚢 Despliegue

El proyecto incluye configuraciones para despliegue en contenedores y infraestructura como código en la carpeta deployments/ e infra-as-code/.

🤝 Contribución

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📄 Licencia

Este proyecto es un prototipo de criptografia safe_dungeon es propiedad de ABRAHAM CEBALLOS| AS IMMERSIVE.

👥 Autores

  • ABRAHAM CEBALLOS RODRIGUEZ - Desarrollo inicial

  • NASA por las efemérides DE421
  • Comunidad de Skyfield por los cálculos astronómicos
  • Flask y SocketIO por las herramientas de desarrollo web

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages