연합학습/안전한 집계

SecAgg+ 프로토콜에서 개별 클라이언트의 모델 원본 복원이 가능한가?

FedTensor 2025. 10. 15. 17:43
서버는 개별 클라이언트의 모델 원본을 복원할 수 없습니다.

 

SecAgg+ 프로토콜의 핵심적인 보안 설계가 바로 그 지점에 있습니다. 서버가 특정 클라이언트와 관련된 키 정보들을 수집하는 것은 사실이지만, 그 정보는 전체 합산 값에서 불필요한 마스크를 제거하기 위한 최소한의 정보일 뿐, 개별 클라이언트의 원본 값을 역산하기에는 불충분합니다.

왜 그런지 클라이언트가 온라인(online) 상태일 때와 이탈(dropped) 상태일 때로 나누어 살펴보겠습니다.

1. 대상 클라이언트가 '온라인(Online)' 상태일 경우

가장 중요한 시나리오입니다. 클라이언트 $u$가 정상적으로 참여하여 마스킹된 값 $y_u$를 서버에 제출했다고 가정해 봅시다. 서버가 $u$의 원본 모델 $x_u$를 복원하려면 $y_u$에서 $u$가 더했던 모든 마스크 값을 알아내 빼야 합니다.

$$y_u = x_u + \text{(개인 마스크)} + \text{(모든 쌍별 마스크의 합)}$$

서버는 이 중 일부만 알 수 있습니다.

  • 개인 마스크: 서버는 다른 온라인 클라이언트들로부터 $u$의 개인 키 조각들을 수집하여 $u$의 개인 비밀 키($s_u$)를 복원할 수 있습니다. 따라서 $u$의 개인 마스크($p_u$)는 계산해낼 수 있습니다.
  • 쌍별 마스크: 서버는 $u$와 '이탈한' 클라이언트들 간의 쌍별 공유 키($s_{u,d}$)는 $u$로부터 직접 받아서 알 수 있습니다.

결정적인 한계

서버는 $u$와 '다른 온라인' 클라이언트 $v$ 간의 쌍별 공유 키($s_{u,v}$)는 절대로 알 수 없습니다. 이 키는 오직 $u$와 $v$ 둘만 알고 있으며, 이탈 상황이 발생하지 않았기 때문에 서버에 제출될 이유가 전혀 없습니다.

결과적으로, 서버는 $y_u$에서 개인 마스크와 일부 쌍별 마스크(이탈자와의 관계)는 제거할 수 있지만, 다른 온라인 참여자들과의 쌍별 마스크는 여전히 암호처럼 남아있게 됩니다. 이 알 수 없는 마스크 값 때문에 서버는 절대로 $x_u$ 원본을 복원할 수 없습니다.

2. 대상 클라이언트가 '이탈(Dropped)' 상태일 경우

이 경우는 훨씬 간단합니다.

클라이언트가 이탈했다는 것은 애초에 자신의 마스킹된 모델 값($y_u$)을 서버에 전송조차 하지 못했다는 의미입니다. 서버는 복원하고 싶어도 시작점인 $y_u$ 데이터 자체가 없습니다.

따라서 서버가 이탈한 클라이언트의 키 조각이나 쌍별 공유 키를 다른 클라이언트로부터 수집하더라도, 이는 단지 전체 합산 과정에서 해당 이탈자가 남긴 '오염된 마스크'를 제거하기 위한 목적일 뿐, 존재하지 않는 데이터를 복원할 수는 없습니다.

요약

SecAgg+의 보안은 정보의 비대칭성에 기반합니다. 서버는 '전체 합계'를 올바르게 계산하는 데 필요한 최소한의 키 정보만 접근할 수 있도록 설계되었습니다. 개별 클라이언트의 업데이트는 다른 '온라인' 참여자들과의 비밀(쌍별 공유 키)에 의해 끝까지 보호되므로, 서버가 일부 키를 복원하더라도 개별 모델의 프라이버시는 안전하게 유지됩니다.