연합학습/안전한 집계

SecAgg+ 프로토콜에서 악의적인 서버의 공격 시나리오

FedTensor 2025. 10. 15. 18:18
클라이언트별로 다른 조작된 이탈 목록을 보냄으로써 특정 온라인 상태의 클라이언트를 대상으로 모델 원본 파라미터를 복원하는 것이 가능한가?

 

만약 프로토콜에 추가적인 안전장치가 없다면, 이러한 공격은 실제로 가능하며 특정 클라이언트의 모델 원본을 복원할 수 있습니다.

이 공격은 '선택적 참여자 목록 공격(Selective Client List Attack)'이라고 볼 수 있으며, 악의적인 서버(Malicious Server)가 시도할 수 있는 대표적인 공격 시나리오입니다.

악의적인 서버의 공격 시나리오

서버가 온라인 상태인 클라이언트 $u$의 모델 $x_u$를 탈취하려고 한다고 가정해 보겠습니다. 이 서버는 또 다른 온라인 클라이언트 $v$를 이 공격에 이용합니다.

  1. 서버의 이중 플레이: 서버는 $u$와 $v$에게 서로 다른 '이탈 목록'을 보냅니다.
    • 클라이언트 $u$에게는: "$v$가 이탈했다"라고 거짓으로 알립니다.
    • 클라이언트 $v$에게는: "$u$는 온라인 상태이다"라고 사실대로 알립니다.
  2. 클라이언트들의 반응:
    • $u$는 서버의 말을 믿고, $v$가 이탈했다고 생각하여 $v$와의 쌍별 공유 비밀 키 $s_{u,v}$를 서버에 전송합니다. $u$는 이것이 이탈자 처리를 위한 정상적인 절차라고 생각합니다.
    • $v$는 $u$가 온라인 상태라고 알고 있으므로, $s_{u,v}$를 보내지 않고 $u$의 개인 키 조각 $s_{u \to v}$를 서버에 보냅니다. 이 역시 $v$의 입장에서는 정상적인 절차입니다.
  3. 공격 성공: 이 시점에서 서버는 클라이언트 $u$의 모델을 복원하는 데 필요한 모든 조각을 모으게 됩니다.
    • $y_u$: $u$가 제출한 마스킹된 값.
    • $u$의 개인 마스크: 다른 온라인 클라이언트들로부터 $u$의 개인 키 조각들을 모아 $u$의 개인 키 $s_u$를 복원하여 계산할 수 있습니다.
    • $u$와 '진짜 이탈자' 간의 쌍별 마스크: $u$가 정상적으로 제출한 키들로 계산할 수 있습니다.
    • $u$와 '온라인 참여자' 간의 쌍별 마스크: 이것이 핵심입니다. 서버는 $u$를 속여서 얻어낸 $s_{u,v}$를 가지고 있기 때문에, 원래대로라면 절대 알 수 없었던 $u$와 $v$ 사이의 쌍별 마스크 값을 계산할 수 있게 됩니다.

만약 서버가 이 공격을 $u$와 상호작용하는 모든 온라인 클라이언트에 대해 수행한다면, $u$의 $y_u$에 포함된 모든 마스크 값을 알아낼 수 있게 되고, 결국 원본 모델 $x_u$를 복원할 수 있습니다.

클라이언트 u의 모델 원본 복원을 위해 서버가 이탈목록을 조작한 예

SecAgg+의 방어 메커니즘: 합의(Consensus) 절차

이러한 공격을 막기 위해, 실제 SecAgg 및 SecAgg+ 프로토콜 논문에서는 모든 참여자가 동일한 참여자 목록을 받았음을 서로 검증하는 절차를 포함하고 있습니다.

핵심 아이디어는 서버가 일방적으로 목록을 통보하는 것을 클라이언트가 그대로 믿지 않고, "모든 온라인 클라이언트들이 서버로부터 동일한 목록을 받았는가?"를 확인하는 것입니다.

이것은 보통 다음과 같은 방식으로 구현됩니다.

  1. 서버의 목록 제안 및 서명: 서버는 확정된 '온라인 목록'과 '이탈 목록'을 생성한 후, 이 목록 자체에 대한 암호학적 서명(Digital Signature) 또는 해시(Hash) 값을 계산합니다.
  2. 서명/해시 값 브로드캐스트: 서버는 이 서명/해시 값을 모든 온라인 클라이언트에게 전송합니다. 만약 서버가 클라이언트마다 다른 목록을 보내려고 한다면, 서명/해시 값도 달라질 수밖에 없습니다.
  3. 클라이언트 간 상호 검증: 클라이언트들은 서버로부터 받은 서명/해시 값을 서로 교환하고 비교합니다. (예: 가십 프로토콜 사용)
    • 모든 온라인 클라이언트가 받은 서명/해시 값이 동일하다면, 서버가 모두에게 동일한 목록을 보냈음이 보장됩니다. 이 경우에만 클라이언트들은 다음 단계를 진행합니다.
    • 만약 단 한 명이라도 다른 서명/해시 값을 받았다면, 서버가 조작을 시도했다는 것을 즉시 탐지하고 프로토콜을 중단합니다.

결론

따라서 악의적인 서버의 공격 시나리오는 가능하며, 이는 프로토콜 설계에서 반드시 고려해야 할 심각한 위협입니다. SecAgg+는 단순히 서버가 목록을 보내주는 것을 넘어, 모든 참여자가 그 목록의 내용에 대해 합의(Consensus)하는 암호학적 검증 절차를 추가함으로써 이 문제를 해결합니다. 이를 통해 악의적인 서버가 특정 클라이언트를 고립시키거나 속이는 것을 원천적으로 차단합니다.