연합학습/안전한 집계

SecAgg+ 프로토콜에서 서버와 클라이언트 간 상태 확인 절차

FedTensor 2025. 10. 15. 18:01

클라이언트는 다른 클라이언트의 상태를 알아야만 올바른 키를 서버에 전송할 수 있습니다. 이는 SecAgg+ 프로토콜의 중요한 단계이며, 서버가 중앙에서 조정자(Coordinator) 역할을 수행함으로써 가능해집니다.

클라이언트가 서로의 상태를 직접 확인하는 것이 아니라, 서버가 상태를 판별하고 그 결과를 온라인 클라이언트들에게 알려주는 방식으로 동작합니다.

서버와 클라이언트 간 상태 확인 절차

프로토콜의 '이탈자 처리' 단계는 다음과 같은 명확한 순서로 진행됩니다.

  • 1단계: 마스킹된 값 제출 및 대기
    • 모든 클라이언트는 자신의 마스킹된 모델 업데이트($y_u$)를 서버에 전송합니다.
    • 서버는 정해진 시간 동안 클라이언트들의 제출을 기다립니다.
  • 2단계: 서버의 상태 판별 및 목록 생성
    • 제출 시간이 마감되면, 서버는 성공적으로 $y_u$를 제출한 클라이언트들의 집합을 '온라인 목록($U_{online}$)'으로 확정합니다.
    • 약속된 시간 내에 $y_u$를 제출하지 못한 클라이언트들의 집합은 '이탈 목록($U_{dropped}$)'으로 확정합니다.
    • 이 시점에서 서버는 어떤 클라이언트가 온라인이고 어떤 클라이언트가 이탈했는지에 대한 완전한 정보를 갖게 됩니다.
  • 3단계: 서버가 '이탈 목록'을 온라인 클라이언트에게 전송
    • 서버는 '온라인 목록($U_{online}$)'에 포함된 모든 클라이언트에게 '이탈 목록($U_{dropped}$)'을 전송(Broadcast)합니다.
    • 온라인 상태인 클라이언트 $u$는 서버로부터 누가 이탈했는지에 대한 공식적인 명단을 받게 됩니다.
  • 4단계: 클라이언트의 정보 제출
    • 이제 서버로부터 이탈자 명단을 받은 온라인 클라이언트 $u$는 명확한 기준에 따라 행동할 수 있습니다.
    • $u$는 원래 참여하기로 했던 다른 모든 클라이언트 $v$에 대해, 서버가 보내준 '이탈 목록'을 확인합니다.
      • 만약 $v$가 이탈 목록에 있다면, $u$는 $v$와의 쌍별 공유 비밀 키 $s_{u,v}$를 서버에 보냅니다.
      • 만약 $v$가 이탈 목록에 없다면 (즉, $v$도 온라인 상태임이 확인되었다면), $u$는 $s_{u,v}$를 보내지 않습니다. 대신 $v$의 개인 키 조각 $s_{v \to u}$를 서버에 보냅니다.

이처럼 SecAgg+에서 클라이언트 간의 상태 확인은 서버의 중앙 통제 및 정보 공유를 통해 이루어집니다. 이 절차 덕분에 온라인 상태인 클라이언트끼리는 서로의 쌍별 공유 키를 서버에 노출하지 않아도 되므로 프로토콜의 보안이 유지될 수 있습니다.