Envío para el reto Midnight Network Privacy First Challenge - Protect That Data
Qué construí
Desarrollé PrivateVault, una aplicación descentralizada para compartir archivos que utiliza pruebas de conocimiento cero para garantizar privacidad total y protección de datos. PrivateVault permite compartir archivos de forma segura sin revelar el contenido, la metadata ni siquiera la existencia de los archivos compartidos a partes no autorizadas.
El DApp resuelve el problema crítico de la privacidad en el intercambio de archivos mediante:
- Cifrado del archivo en el lado del cliente antes de la subida
- Uso de pruebas ZK para verificar permisos de acceso sin revelar el contenido del archivo
- Implementación de transacciones confidenciales para los tokens de acceso a archivos
- Una interfaz sencilla que abstrae las operaciones criptográficas complejas
Demo
Repositorio en GitHub: https://github.com/username/privatevault-midnight
Panel principal: lista de archivos cifrados con controles de acceso verificados mediante ZK
Interfaz de compartición: compartir con pruebas de conocimiento cero sin exponer el contenido
Características clave demostradas
- Subida cifrada de archivos: los archivos se cifran antes de salir del dispositivo
- Control de acceso con ZK: se prueban los derechos de acceso sin revelar metadata
- Compartición confidencial: los tokens de acceso aprovechan las funciones de privacidad de Midnight
- Descubrimiento anónimo: explorar archivos disponibles sin revelar identidad
Cómo utilicé la tecnología de Midnight
PrivateVault aprovecha en profundidad la infraestructura blockchain de privacidad primero de Midnight.
Implementación en Compact Language
contract FileVault { state { fileHashes: Map<Hash, EncryptedMetadata>, accessTokens: Map<PublicKey, Set<Hash>>, sharedSecrets: Map<Hash, EncryptedKey> } @zkproof function verifyFileAccess(fileHash: Hash, userKey: PublicKey): Boolean { // Prueba ZK para verificar acceso sin revelar contenidos // Implementación usando primitivas ZK de Midnight } }
Integración con MidnightJS
- Generación de pruebas ZK en cliente con MidnightJS
- Transacciones confidenciales para todas las operaciones de archivo
- Gestión de estado cifrado para el almacenamiento de metadata
Primitivas de privacidad utilizadas
- Conjuntos de conocimiento cero para mecanismos de descubrimiento privado
- Activos confidenciales: tokens de acceso a archivos como activos privados
- Estado cifrado: toda la metadata se almacena cifrada en la cadena
Protección de datos como característica central
La privacidad y la protección de datos son pilares del diseño de PrivateVault, no extras.
Privacidad de extremo a extremo
1) Cifrado en el cliente: los archivos nunca salen del dispositivo sin cifrar
2) Privacidad de metadata: nombres, tamaños y tipos se ocultan mediante pruebas ZK
3) Privacidad de patrones de acceso: se ofuscan con transacciones confidenciales
4) Privacidad de identidad: credenciales anónimas de Midnight protegen a los usuarios
Arquitectura de conocimiento cero
- Prueba de acceso: los usuarios prueban que pueden acceder a archivos sin revelar cuáles
- Prueba de propiedad: los propietarios demuestran propiedad sin exponer contenidos
- Prueba de compartición: los eventos de compartición se verifican sin mostrar los datos compartidos
Decisiones de diseño privacy-first
- No se almacena metadata en texto plano on-chain
- Todas las interacciones usan transacciones confidenciales
- Descubrimiento de archivos mediante consultas que preservan la privacidad
- Controles de acceso con pruebas de pertenencia a conjuntos ZK
Guía de instalación y uso
Requisitos previos
- Node.js 18 o superior
- Acceso a la testnet de Midnight
- Compilador Compact
- SDK MidnightJS
Paso 1: clonar e instalar
Ejecuta: git clone https://github.com/username/privatevault-midnight; luego cd privatevault-midnight; después npm install
Paso 2: configurar Midnight Network
Prepara el entorno: copia .env.example a .env y añade las credenciales de testnet de Midnight
Paso 3: compilar contratos Compact
Ejecuta: npm run compile-contracts
Paso 4: desplegar en testnet
Ejecuta: npm run deploy
Paso 5: ejecutar la DApp
Ejecuta: npm run dev
Cómo probar las funciones de privacidad
1) Sube un archivo con la función de subida cifrada
2) Genera un token de acceso basado en ZK
3) Comparte de forma privada el acceso al archivo sin revelar su contenido
4) Verifica el acceso probando la verificación ZK de permisos
Archivos clave
- contracts/FileVault.compact: contrato inteligente principal
- src/zk/: implementaciones de pruebas de conocimiento cero
- src/privacy/: utilidades de preservación de privacidad
- src/ui/: frontend en React con UX enfocada en privacidad
Sobre Q2BSTUDIO y cómo podemos ayudarte
En Q2BSTUDIO desarrollamos aplicaciones a medida y software a medida con estándares de ciberseguridad de nivel empresarial. Integramos inteligencia artificial e ia para empresas con agentes IA, analítica avanzada y servicios inteligencia de negocio, incluyendo cuadros de mando con power bi. También diseñamos arquitecturas modernas con servicios cloud aws y azure, automatizamos procesos críticos y garantizamos cumplimiento y protección de datos extremo a extremo. Si tu organización necesita un DApp de privacidad como PrivateVault o soluciones seguras y escalables, nuestro equipo puede acompañarte de la idea al despliegue.
Explora cómo reforzar tu estrategia de seguridad con nuestra práctica especializada en ciberseguridad y pentesting en servicios de ciberseguridad o potencia tus productos con capacidades de IA responsable y escalable en soluciones de inteligencia artificial.