Principios de seguridad fundamentales de Mpcium
Mpcium implementa un esquema de firma de umbral con prácticas de seguridad estándar de la industria para proteger las operaciones criptográficas:
- Confianza distribuida: ninguna entidad individual posee claves privadas completas
- Criptografía de umbral: se requieren t+1 nodos para participar en las operaciones de firma
- Verificación de extremo a extremo: todas las comunicaciones se firman y verifican
- Defensa en profundidad: múltiples capas de cifrado y verificación
Identidad y autenticación
Gestión de la identidad de los nodos
- Pares de claves Ed25519: cada nodo posee un par de claves Ed25519 único como identidad
- Generación de identidad: creación segura de identidades con el comando
generate-identity:go run cmd/mpcium-cli/main.go generate-identity --node=node0 --peers=peers.json --encrypt - Seguimiento de metadatos: cada identidad incluye información de creación, detalles de la máquina y marcas de tiempo
- Verificación de identidad: todas las operaciones requieren una prueba criptográfica de identidad
Autenticación de mensajes
Cada mensaje en la red de Mpcium pasa por una verificación rigurosa:
// Messages are signed before transmission
signature, err := s.identityStore.SignMessage(&tssMsg)
if err != nil {
s.ErrCh <- fmt.Errorf("failed to sign message: %w", err)
return
}
tssMsg.Signature = signature
// Messages are verified upon receipt
if !s.verifyMessageSignature(message) {
return fmt.Errorf("invalid message signature")
}
- Firmas deterministas: los mensajes se canonicalizan antes de firmarse para garantizar la consistencia
- Verificación del Party ID: el protocolo TSS garantiza que todos los nodos participantes tengan identidades válidas
- Verificación de firmas: todos los mensajes entrantes pasan por una verificación de firma antes de procesarse
Tecnologías de cifrado
Cifrado de claves privadas
Las claves privadas se protegen mediante varios mecanismos:
-
Cifrado con Age:
- Herramienta de cifrado de archivos de última generación basada en X25519
- Derivación de claves con Scrypt para el cifrado basado en contraseña
- Cifrado autenticado que garantiza la resistencia a la manipulación
# Decrypt private key for use age --decrypt -o event_initiator.key event_initiator.key.age -
Requisitos de contraseña:
- Generadas con alta entropía:
< /dev/urandom tr -dc 'A-Za-z0-9!@#$^&\*()-\_=+[]{}|;:,.<>?/~' | head -c 16; echo - Se solicita a los usuarios la contraseña mediante métodos de entrada seguros que no la muestran en pantalla
- Generadas con alta entropía:
Cifrado del almacenamiento local
Todos los datos sensibles locales de cada nodo están cifrados:
// BadgerDB with mandatory encryption
badgerKv, err := kvstore.NewBadgerKVStore(
dbPath,
[]byte(viper.GetString("badger_password")),
)
- Error si falta la clave: el sistema se niega a iniciar si no se proporcionan las claves de cifrado
- Índice cifrado: tanto los datos como los metadatos están cifrados
- Compresión ZSTD: los datos se comprimen antes del cifrado para mayor eficiencia
Seguridad de red
Implementación de TLS
Todas las comunicaciones en producción usan TLS:
nats:
url: tls://127.0.0.1:4222 # Required TLS for production
username: ""
password: ""
consul:
address: https://consul.example.com # Required HTTPS for production
- Verificación de certificados: las conexiones a Consul y NATS verifican los certificados del servidor
- TLS mutuo: tanto el cliente como el servidor se autentican mutuamente
- Suites de cifrado robustas: solo se usan suites de cifrado modernas y seguras
Arquitectura de mensajería segura
La infraestructura de mensajería NATS proporciona:
- Aislamiento de temas: cada sesión usa temas únicos
- Mensajería directa: comunicaciones seguras punto a punto
- Durabilidad con JetStream: los mensajes críticos persisten con cifrado
- Gestión de colas: procesamiento distribuido de colas con autenticación
Seguridad del protocolo de firma de umbral
Computación multipartita
La implementación de la firma de umbral incluye:
- Recompartición de claves: soporte para la rotación de claves manteniendo la misma clave pública
- Flexibilidad del umbral: umbral configurable según los requisitos de seguridad
- Verificación del protocolo: los mensajes incluyen verificación de ronda y de protocolo
Seguridad de las sesiones
Cada sesión de firma o de generación de claves implementa:
- Aislamiento de sesiones: identificadores únicos evitan la interferencia entre sesiones
- Manejo de tiempos de espera: las sesiones expiran si no se completan dentro de un plazo
- Propagación de errores: manejo seguro de errores para evitar fugas de información
- Verificación de rondas: cada ronda del protocolo valida las entradas esperadas
Seguridad operativa
Distribución de nodos
- Despliega los nodos en diferentes:
- Proveedores de nube
- Regiones geográficas
- Segmentos de red
- Dominios administrativos
Gestión de claves
- Material de claves separado: almacena las claves cifradas por separado de las contraseñas
- Seguridad por hardware: considera la integración con HSM para despliegues en producción
- Rotación de claves: establece procedimientos periódicos de rotación de claves
- Seguridad de las copias de respaldo: mantén copias de respaldo seguras y cifradas de todo el material de claves
Endurecimiento de la red
- Reglas de firewall: restringe la comunicación solo a los puertos necesarios
- Lista blanca de IP: limita las conexiones a direcciones IP conocidas
- Protección contra DDoS: implementa mitigación de DDoS para los componentes expuestos al público
- Monitoreo de red: monitorea patrones de tráfico inusuales
Seguridad continua
- Escaneo de dependencias: escanea y actualiza las dependencias con regularidad
- Pruebas de penetración: realiza evaluaciones de seguridad periódicas
- Registro de auditoría: mantén registros de auditoría completos de todas las operaciones
- Respuesta a incidentes: desarrolla y prueba procedimientos de respuesta a incidentes de seguridad