Skip to content

段階的な攻撃 #52

Description

@futabato

新機能・アイデアの概要

攻撃シナリオとして、全ビザンチンクライアントが一気に攻撃するのではなく、段階的に攻撃するビザンチンクライアントが増やすことが考えられる。これは、徐々にグローバルモデルを汚染できる攻撃となり、既存の一部の防御手法では防ぐことが難しい場合があるため、この段階的な攻撃を実装する。

実装例としては、以下のように、cfg.federatedlearning.warmup_rounds の 半分のラウンド時に、cfg.federatedlearning.num_byzantines の半分を攻撃させるようなイメージ。

                # Check if the current index is within the number of byzantine clients specified in the configuration
                if (
                    client_id < cfg.federatedlearning.num_byzantines // 2
                    and cfg.federatedlearning.warmup_rounds // 2 <= round
                ):
                    # Perform a byzantine attack on the local model by altering its weights and compute loss
                    weight, loss = local_model.byzantine_attack(
                        model=copy.deepcopy(global_model), global_round=round
                    )
                elif (
                    client_id < cfg.federatedlearning.num_byzantines
                    and cfg.federatedlearning.warmup_rounds <= round
                ):
                    # Perform a byzantine attack on the local model by altering its weights and compute loss
                    weight, loss = local_model.byzantine_attack(
                        model=copy.deepcopy(global_model), global_round=round
                    )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions