클라이언트는 다른 클라이언트의 상태를 알아야만 올바른 키를 서버에 전송할 수 있습니다. 이는 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+에서 클라이언트 간의 상태 확인은 서버의 중앙 통제 및 정보 공유를 통해 이루어집니다. 이 절차 덕분에 온라인 상태인 클라이언트끼리는 서로의 쌍별 공유 키를 서버에 노출하지 않아도 되므로 프로토콜의 보안이 유지될 수 있습니다.
'연합학습 > 안전한 집계' 카테고리의 다른 글
| SecAgg+ 프로토콜에서 악의적인 서버의 공격 시나리오 (0) | 2025.10.15 |
|---|---|
| SecAgg+ 프로토콜에서 개별 클라이언트의 모델 원본 복원이 가능한가? (0) | 2025.10.15 |
| 연합학습의 안전한 집계를 위한 SecAgg+ 프로토콜 (0) | 2025.10.15 |