Snowflake의 차등 프라이버시

Snowflake의 차등 프라이버시

차등 프라이버시(differential privacy)는 데이터 프라이버시의 널리 인정받는 표준으로, 사용자가 민감한 데이터 세트에서 민감한 정보를 유출할 위험을 제한해요. 데이터 안의 개별 엔터티(예: 사람, 기업, 위치)의 정체와 정보를 보호해요. 각 개별 엔터티의 정보가 보호되는 동안에도 차등 프라이버시는 데이터 소비자가 집단에 대한 통계, 추세, 행동을 배울 수 있게 해줘요.

출처: Snowflake User Guide - Differential privacy

본문

차등 프라이버시는 특히 표적형 프라이버시 공격에 효과적인 재식별(re-identification)에 대한 강력한 보호를 제공해요. 이 보호를 통해 팀 간, 조직 밖, 규제 경계를 넘어 민감한 데이터를 공유할 수 있어요. 차등 프라이버시는 두 민감 데이터 세트를 조인하거나, 새 필드를 추가하거나, 기존 필드의 마스킹을 해제하거나, 사전 집계된 데이터 대신 개별 행을 제공할 때 수반되는 증가된 재식별 위험을 완화해요.

다른 프라이버시 방법론과 달리 차등 프라이버시는 다음을 수행해요.

  • differencing, amplification 공격 같은 표적형 프라이버시 공격으로부터 보호해요.
  • 프라이버시와 유용성(utility) 사이의 트레이드오프를 정량화하고 관리해요. 즉 데이터 소비자가 데이터에 대해 배울 수 있는 비민감 정보의 양을 제어해요.
  • 데이터 공급자가 재식별 위험을 줄이기 위해 민감한 데이터를 변환(예: 마스킹, 삭제, 버킷화)해야 하는 필요성을 제거해요.

차등 프라이버시는 민감한 정보를 어떻게 보호하나요?

차등 프라이버시 하에서 쿼리 결과는 개별 엔터티를 식별하는 데 사용될 수 있는 정보를 드러내지 않아야 해요. Snowflake는 차등 프라이버시를 강제하기 위해 다음을 수행해요.

  • 노이즈가 있는 집계(noisy aggregates)를 반환해요.
  • 프라이버시 손실(privacy loss)을 제한해요.

노이즈가 있는 집계:

차등 프라이버시 쿼리는 결과를 반환하기 위해 데이터를 집계해야 해요. SELECT * 같은 행 수준 쿼리는 차단돼요. 이러한 집계는 노이즈가 있어요. 즉 계산의 정확한 결과가 아니에요. 특정 행이나 엔터티가 집계에 포함됐는지를 모호하게 하기 위해 결과에 노이즈(변동 또는 무작위화)가 도입돼요.

노이즈의 추가는 thin-slicing과 differencing 같은 프라이버시 공격으로부터 보호해요. 쿼리 결과에 추가되는 노이즈의 양은 쿼리의 민감도에 영향을 주는 여러 요소(쿼리된 레코드 수, 집계 유형, 데이터 변환 유형)에 따라 달라져요. Snowflake는 엄격한 수학에 기반해 쿼리의 민감도를 계산하지만, 느슨하게는 쿼리가 개별 엔터티에 대한 정보를 유출할 가능성으로 이해할 수 있어요. 일반적으로 덜 민감한 쿼리는 노이즈가 적어 통계적으로 무시할 수 있는 지점에 이를 수 있어요. 개별 엔터티를 골라내려는 쿼리 같은 매우 민감한 쿼리는 민감한 정보가 유출되지 않도록 노이즈가 많이 추가돼요.

Snowflake는 쿼리의 최종 집계 이전에 발생하는 중간 집계에는 노이즈를 도입하지 않아요. 노이즈는 쿼리당 한 번만 도입돼요. Snowflake는 프라이버시 보호 테이블의 행 수를 공개로 간주해요. 예를 들어 프라이버시 정책으로 보호된 테이블 t에서 SELECT COUNT(*) FROM t를 실행하면 프라이버시 손실을 발생시키지 않고 정확한 결과를 반환해요.

프라이버시 손실 제한:

보호된 데이터 세트에 대한 모든 쿼리는 개별과 연관된 프라이빗 정보의 노출을 초래할 수 있으며, 차등 프라이버시 쿼리가 생성하는 노이즈 집계도 포함해요. 차등 프라이버시에서 이러한 정보 공개는 프라이버시 손실(privacy loss)로 알려져 있고, 정량화 가능한 측정 단위예요. 쿼리가 드러내는 프라이빗 정보가 많을수록 그 쿼리와 연관된 프라이버시 손실이 높아져요. 프라이버시 손실이 정량화 가능하기 때문에 Snowflake는 특정 통계적 신뢰도까지 쿼리 기록에 걸쳐 민감한 데이터를 보호하기 위해 차등 프라이버시를 사용할 수 있어요.

사용자가 보호된 데이터에 대해 쿼리를 실행하면서 프라이버시 손실이 누적돼요. 누적 프라이버시 손실이 특정 임계값에 도달하면, 이후 사용자가 더 많은 결과를 보게 하는 것은 이론적으로 허용할 수 없는 신뢰도로 개인을 식별하게 할 수 있어요. 프라이버시 예산(privacy budget)은 허용 가능한 프라이버시 손실의 양에 한도를 설정해요. Snowflake는 사용자 또는 사용자 그룹이 실행한 쿼리의 프라이버시 손실을 합산하고 그 합계가 그 사용자들과 연관된 프라이버시 예산을 결코 초과하지 않도록 해요. 사용자의 프라이버시 예산이 프라이버시 정책 작성자가 설정한 예산 한도에 도달하면, 그 사용자가 제출한 쿼리는 사용자의 예산이 새로 고침될 때까지 실패해요. Snowflake는 프라이버시 손실 임계값과 새로 고침 기간을 설정하는 기본값이 있는 커스터마이즈 가능한 프라이버시 예산을 제공해요.

Snowflake는 스키마 수준 객체인 프라이버시 정책(privacy policy)을 사용해 사용자 또는 사용자 그룹에 프라이버시 예산을 연결해요. 관리자가 그 프라이버시 정책을 테이블이나 뷰에 할당하면 그 객체는 프라이버시 보호 대상이 돼요. 사용자가 프라이버시 보호 테이블에 대해 쿼리를 실행하면 Snowflake는 프라이버시 정책을 사용해 어떤 프라이버시 예산이 사용자와 연결됐는지 판단하고, 쿼리가 발생시키는 프라이버시 손실이 예산의 한도를 초과하지 않도록 보장해요.

이론 vs 실제에서의 차등 프라이버시

차등 프라이버시의 표준은 학술 문헌에서 비롯됐으며, 특히 이론적 프라이버시 공격에 대해 수학적으로 입증된 강력한 프라이버시 보장을 갖도록 공식화됐어요. 특히 프라이버시 예산 같은 프라이버시 설정은 학술적 맥락에서 논의될 때 더 보수적으로 설정돼요. 이러한 설정은 데이터 유용성(분석적 충실도, 정확성, 가용성)을 희생하면서 이론적 프라이버시 공격에 대한 강력한 보호를 선호해요. PII와 PHI 같은 고도로 민감한 데이터를 포함해 사용 사례의 프라이버시와 유용성 트레이드오프를 고려할 때 다음을 고려해요.

  • 실제 프라이버시 공격은 공격자가 무제한 컴퓨팅 리소스와 공격 대상 데이터 세트를 제외한 모든 데이터 세트에 대한 접근을 가진다고 가정하는 학술 문헌에 설명된 이론적 프라이버시 공격만큼 효과적이지 않아요.
  • 데이터 소비자는 일반적으로 의도적으로 공격을 시작하고 싶지 않아요. 데이터 프로바이더가 소비자의 데이터 접근을 회수할 수 있고, 데이터의 분석적 가치가 잃을 위험을 감수하기엔 너무 높기 때문이에요.

Snowflake는 실제 사용 사례의 목표에 맞춰 프라이버시 보호와 유용성을 합리적으로 균형 잡은 기본 설정을 선택했지만, 특정 요구를 충족하도록 다른 설정을 항상 지정할 수 있어요.

차등 프라이버시 워크플로

다음 워크플로는 차등 프라이버시로 데이터를 보호하는 데이터 프로바이더가 수행하는 작업과 보호된 후 데이터를 쿼리하는 분석가가 수행하는 작업으로 구성돼요.

데이터 프로바이더:

  • 엔터티 수준 프라이버시를 구현하려면 요구 사항을 충족하도록 데이터를 구조화해요.
  • 역할이나 계정 같은 요소를 기반으로 사용자에게 프라이버시 예산을 연결하는 프라이버시 정책을 만들어요.
  • 쿼리가 차등 프라이버시여야 하도록 프라이버시 정책을 테이블이나 뷰에 할당해요.
  • 프라이버시 보호 테이블이나 뷰의 숫자·범주형 컬럼에 대한 프라이버시 도메인(privacy domain)을 정의해요.
  • 분석가가 프라이버시 보호 데이터에 접근할 수 있도록 권한을 부여해요.
  • 분석가가 프라이버시 보호 데이터에 대해 쿼리를 실행하면 사용자와 연관된 프라이버시 예산을 관리할 수 있어요.

분석가:

  • 데이터 프로바이더가 프라이버시 보호 테이블의 컬럼에 대해 정의한 프라이버시 도메인을 보고 컬럼 내용을 더 잘 이해해요.
  • 데이터 프로바이더가 집계나 GROUP BY 절에서 사용하려는 컬럼에 대한 프라이버시 도메인을 설정하는 것을 잊었다면 그 컬럼에 대한 프라이버시 도메인을 지정해요.
  • 프라이버시 보호 테이블과 뷰에 대해 차등 프라이버시 쿼리를 실행해요.
  • 노이즈 구간(noise interval)을 사용해 집계 결과를 이해해요.
  • 원한다면 데이터 프로바이더의 프라이버시 도메인을 좁혀 쿼리 결과를 개선하려 해요.

제한 사항

  • 테이블이 프라이버시 보호 대상이 되면 분석가는 다음 데이터 타입만 쿼리할 수 있어요.
    • 숫자 데이터 타입
    • 문자열 데이터 타입 (바이너리 타입은 지원되지 않아요.)
    • 논리(logical) 데이터 타입
    • 날짜·시간 데이터 타입 (타임스탬프 중 TIMESTAMP_NTZ만 지원돼요.)
  • 일부 Snowflake 기능은 차등 프라이버시를 사용할 때 현재 지원되지 않아요.
  • 프라이버시를 보호하기 위해 쿼리 기능이 제한돼요.
  • 프라이버시 보호 테이블에서 쿼리를 실행하면 Snowflake는 먼저 얼마나 많은 노이즈가 추가될지에 영향을 주는 통계를 계산한 뒤 쿼리를 실행해요. 이 두 단계 사이에 데이터가 변경되면 추가되는 노이즈의 양이 부정확할 수 있어요. Snowflake는 데이터 프로바이더가 분석가가 쿼리를 실행할 수 있는 시간에 데이터 업데이트가 발생하지 않도록 스케줄링하는 것을 권장해요.

다음 단계

  • 차등 프라이버시로 데이터 세트를 보호하는 데이터 프로바이더라면 차등 프라이버시 구현하기를, 보호된 데이터 세트를 쿼리하는 분석가라면 차등 프라이버시로 보호된 데이터 쿼리하기를 참고해요.

더 알아보기