El aprendizaje federado da soporte al cifrado homomórfico como medida añadida de seguridad para los datos de entrenamiento federados. El cifrado homomórfico es una forma de criptografía de clave pública que permite realizar cálculos en los datos cifrados sin descifrarlos primero, lo que significa que los datos se pueden utilizar en el modelado sin exponerlo al riesgo de descubrimiento.
Con el cifrado homomórfico, los resultados de los cálculos permanecen en forma cifrada y cuando se descifran, dan como resultado una salida que es la misma que la salida producida con los cálculos realizados en los datos no cifrados. Utiliza una clave pública para el cifrado y una clave privada para el descifrado.
Cómo funciona con Federated Learning
El cifrado homomórfico es un método de cifrado opcional para añadir seguridad y privacidad adicionales a un experimento de aprendizaje federado. Cuando se aplica el cifrado homomórfico en un experimento de aprendizaje federado, las partes envían sus actualizaciones de modelo cifradas homomorfalmente al agregador. El agregador no tiene la clave privada y solo puede ver las actualizaciones de modelo cifradas homomorficamente. Por ejemplo, el agregador no puede aplicar ingeniería inversa a las actualizaciones del modelo para descubrir información sobre los datos de entrenamiento de las partes. El agregador fusiona las actualizaciones del modelo en su formato cifrado, lo que da como resultado un modelo agregado cifrado. A continuación, el agregador envía el modelo agregado cifrado a las partes participantes que pueden utilizar su clave privada para el descifrado y continuar con la siguiente ronda de entrenamiento. Sólo las partes participantes pueden descifrar datos de modelo.
Infraestructuras soportadas y métodos de fusión
Fully Homomorphic Encryption (FHE) da soporte al método de fusión de promedio simple para estas infraestructuras de modelo:
- Tensorflow
- Pytorch
- Scikit-clasificación de aprendizaje
- Regresión scikit-learn
Antes de empezar
Para empezar a utilizar el cifrado homomórfico, asegúrese de que el experimento cumple los requisitos siguientes:
La especificación de hardware debe ser pequeñacomo mínimo. En función del nivel de cifrado que aplique, es posible que necesite una especificación de hardware más grande para acomodar el consumo de recursos causado por un cifrado de datos más potente. Consulte la tabla de nivel de cifrado en Configuración del agregador.-La especificación de software es
fl-rt23.1-py3.10
.FHE está soportado en el cliente Python versión 1.0.263 o posterior. Todas las partes deben utilizar la misma versión de cliente Python .
Requisitos para las partes
Cada parte debe:
- Se ejecuta en un sistema Linux x86 .
- Configure con un certificado raíz que identifique una entidad emisora de certificados que sea uniforme para todas las partes.
- Configure un par de claves pública y privada RSA con los atributos descritos en la tabla siguiente.
- Configurar con un certificado de la parte emitido por la entidad emisora de certificados. La clave pública RSA debe incluirse en el certificado de la parte.
Las claves de cifrado públicas y privadas homomórficas se generan y se distribuyen de forma automática y segura entre las partes para cada experimento. Sólo las partes que participan en un experimento tienen acceso a la clave privada generada para el experimento. Para dar soporte al mecanismo de generación y distribución automática, las partes deben configurarse con los certificados y claves RSA especificados anteriormente.
Requisitos de clave RSA
Atributo | Requisito |
---|---|
Tamaño de la clave | 4096 bits |
Exponente público | 65537 |
Contraseña | Ninguna |
Algoritmo hash | SHA256 |
Formato del archivo | Los archivos de claves y certificados deben estar en formato "PEM" |
Configuración del agregador (admin)
A medida que crea un experimento de aprendizaje federado, siga estos pasos:
- En el separador Configurar , conmute "Habilitar cifrado homomórfico".
- Elija pequeño o superior para Especificación de hardware. En función del nivel de cifrado que aplique, es posible que necesite una especificación de hardware más grande para acomodar el consumo de recursos para el cifrado homomórfico.
- Asegúrese de cargar un modelo inicial no cifrado al seleccionar el archivo de modelo para Especificación de modelo.
- Seleccione "Promedio simple (cifrado)" para Método de fusión. Pulse Siguiente.
- Seleccione Mostrar avanzado en la pestaña Definir hiperparámetros .
- Seleccione el nivel de cifrado en Nivel de cifrado.
Los niveles de cifrado más altos aumentan la seguridad y la precisión, y requieren un mayor consumo de recursos (por ejemplo, cálculo, memoria, ancho de banda de red). El valor predeterminado es el nivel de cifrado 1.
Consulte la tabla siguiente para obtener una descripción de los niveles de cifrado:
Nivel | Seguridad | Precisión |
---|---|---|
1 | Alto | Aceptable |
2 | Alto | Alto |
3 | Muy alto | Aceptable |
4 | Muy alto | Alto |
La seguridad es la fuerza del cifrado, normalmente medida por el número de operaciones que un atacante debe realizar para romper el cifrado.
Precisión es la precisión de los resultados del sistema de cifrado. Los niveles de precisión más altos reducen la pérdida de precisión del modelo debido al cifrado.
Conexión con el agregador (parte)
Los pasos siguientes sólo muestran la configuración necesaria para el cifrado homomórfico. Para obtener una guía de aprendizaje paso a paso sobre el uso del cifrado homomórfico en Federated Learning, consulte Ejemplo de FHE.
Para ver cómo crear un script de conector de parte global general, consulte Conectar con el agregador (parte).
Instale el cliente Python con FHE con el mandato siguiente:
pip install 'ibm_watsonx_ai[fl-rt23.1-py3.10,fl-crypto]'
Configure la parte como se indica a continuación:
party_config = { "local_training": { "info": { "crypto": { "key_manager": { "key_mgr_info": { "distribution": { "ca_cert_file_path": "path of the root certificate file identifying the certificate authority", "my_cert_file_path": "path of the certificate file of the party issued by the certificate authority", "asym_key_file_path": "path of the RSA key file of the party" } } } } } } } }
Ejecute el script de conector de parte después de la configuración.
Recursos adicionales
Tema padre: Aprendizaje federado