Secure Aggregation Protocols (protocoles d’agrégation sécurisée)¶
Note
Même si ce terme pourrait être utilisé ailleurs, ici il fait référence à une série de protocoles, notamment SecAgg, SecAgg+, LightSecAgg, FastSecAgg, etc. Ce concept a été proposé pour la première fois par Bonawitz et al. dans Practical Secure Aggregation for Federated Learning on User-Held Data.
Les protocoles d’agrégation sécurisés sont utilisés pour agréger de manière sécurisée les mises à jour du modèle provenant de plusieurs clients tout en gardant les mises à jour privées. Cela est fait en encryptant les mises à jour du modèle avant de les envoyer au serveur. Le serveur peut déchiffrer uniquement l’agrégat de mise à jour du modèle sans pouvoir inspecter les mises à jour individuelles.
Flower fournit maintenant les protocoles SecAgg et SecAgg+. Même si nous prévoyons d’implémenter davantage de protocoles à l’avenir, il est également possible d’implémenter un protocole d’agrégation sécurisé personnalisé via des API bas niveau.
Le protocole SecAgg+ dans Flower¶
Le protocole SecAgg+ est implémenté en utilisant le SecAggPlusWorkflow dans le ServerApp et le secaggplus_mod dans le ClientApp. Le protocole SecAgg est un cas particulier du protocole SecAgg+, et il est possible d’utiliser SecAggWorkflow et secagg_mod pour cela.
Vous pouvez trouver un exemple détaillé dans le Secure Aggregation Example. La documentation de la configuration du protocole SecAgg+ est disponible à l’adresse SecAggPlusWorkflow.
La logique du protocole SecAgg+ est illustrée dans le schéma de séquence suivant : les lignes pointillées représentent la communication sur le réseau, et les lignes solides représentent la communication au sein du même processus. Le ServerApp est connecté à SuperLink, et le ClientApp est connecté au SuperNode; ainsi, la communication entre le ServerApp et le ClientApp est effectuée via le SuperLink et le SuperNode.