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.

sequenceDiagram participant ServerApp as ServerApp (in SuperLink) participant SecAggPlusWorkflow participant Mod as secaggplus_mod participant ClientApp as ClientApp (in SuperNode) ServerApp->>SecAggPlusWorkflow: Invoke note over SecAggPlusWorkflow,Mod: Stage 0: Setup SecAggPlusWorkflow-->>Mod: Send SecAgg+ configuration Mod-->>SecAggPlusWorkflow: Send public keys note over SecAggPlusWorkflow,Mod: Stage 1: Share Keys SecAggPlusWorkflow-->>Mod: Broadcast public keys Mod-->>SecAggPlusWorkflow: Send encrypted private key shares note over SecAggPlusWorkflow,ClientApp: Stage 2: Collect Masked Vectors SecAggPlusWorkflow-->>Mod: Forward the received shares Mod->>ClientApp: Fit instructions activate ClientApp ClientApp->>Mod: Updated model deactivate ClientApp Mod-->>SecAggPlusWorkflow: Send masked model parameters note over SecAggPlusWorkflow,Mod: Stage 3: Unmask SecAggPlusWorkflow-->>Mod: Request private key shares Mod-->>SecAggPlusWorkflow: Send private key shares SecAggPlusWorkflow->>SecAggPlusWorkflow: Unmask aggregated model SecAggPlusWorkflow->>ServerApp: Aggregated model