개인정보를 분석이나 연구에 활용하려면 원본 데이터를 그대로 공개하지 않고도 필요한 통계적 특성을 유지하는 방법이 필요하다. 이름이나 주민등록번호처럼 직접 식별자를 제거하는 것만으로는 충분하지 않을 수 있다. 나이, 성별, 지역처럼 다른 정보와 결합했을 때 개인을 좁혀 갈 수 있는 값이 남아 있기 때문이다.
k-익명성(k-anonymity), l-다양성(l-diversity), t-근접성(t-closeness)은 이러한 재식별 위험을 줄이기 위해 제안된 대표적인 Privacy Model이다. 세 모델은 서로 독립적인 개념이라기보다, k-익명성의 한계를 l-다양성이 보완하고 다시 l-다양성의 한계를 t-근접성이 보완하는 흐름으로 이해하면 쉽다.
데이터 속성의 구분
먼저 데이터의 Column을 어떤 역할로 볼 것인지 구분해야 한다.
| 구분 | 의미 | 예시 |
|---|---|---|
| 직접 식별자(Direct Identifier) | 그 값 자체로 개인을 직접 식별할 수 있는 정보 | 이름, 주민등록번호, 전화번호 |
| 준식별자(Quasi-Identifier) | 단독으로는 식별하기 어렵지만 다른 정보와 결합하면 개인을 좁힐 수 있는 정보 | 나이, 성별, 우편번호, 직업 |
| 민감속성(Sensitive Attribute) | 개인에게 노출되었을 때 피해나 사생활 침해가 발생할 수 있는 정보 | 질병, 소득, 진료 기록 |
| 비민감속성(Non-sensitive Attribute) | 분석에는 사용되지만 일반적으로 식별이나 민감성의 핵심이 아닌 정보 | 일부 통계용 속성 |
여기서 Sensitive Attribute를 뜻하는 ‘민감속성’은 Privacy Model에서 사용하는 기술적 표현이다. 개인정보 보호법상 별도로 정의되는 ‘민감정보’와 범위가 항상 일치하는 것은 아니다. 예를 들어 소득은 분석에서 보호하려는 Sensitive Attribute로 설정할 수 있지만, 그것만으로 법률상 민감정보에 해당한다고 단정할 수는 없다.
예를 들어 다음과 같은 의료 데이터가 있다고 하자.
| 이름 | 나이 | 성별 | 지역 | 질병 |
|---|---|---|---|---|
| 김민수 | 27 | 남 | 서울 강남구 | 독감 |
| 이준호 | 28 | 남 | 서울 강남구 | 위염 |
| 박서연 | 31 | 여 | 서울 서초구 | 암 |
| 최지은 | 32 | 여 | 서울 서초구 | 당뇨 |
여기서 이름을 삭제하더라도 외부에서 “27세 남성이고 강남구에 거주한다”는 사실을 알고 있다면 첫 번째 사람을 상당히 쉽게 추정할 수 있다. 따라서 이름만 삭제하는 것은 익명화라고 보기 어렵다.
Equivalence Class
k-익명성부터 t-근접성까지 이해할 때 가장 중요한 개념은 Equivalence Class, 즉 동질 집합이다.
준식별자 값이 동일하게 처리된 Record들을 하나의 Group으로 묶은 것이 Equivalence Class이다.
예를 들어 나이를 범위로 Generalization하고 지역을 더 넓은 단위로 처리하여 다음과 같이 만들 수 있다.
| 나이 | 성별 | 지역 | 질병 |
|---|---|---|---|
| 20대 | 남 | 서울 | 독감 |
| 20대 | 남 | 서울 | 위염 |
| 30대 | 여 | 서울 | 암 |
| 30대 | 여 | 서울 | 당뇨 |
이 경우 다음 두 Group이 만들어진다.
(20대, 남, 서울): 2명(30대, 여, 서울): 2명
이처럼 준식별자 조합만 보았을 때 서로 구분되지 않는 Record의 집합을 기준으로 Privacy 수준을 평가한다.
k-익명성
k-익명성은 모든 Record가 준식별자만으로 최소 k명 이상의 사람과 구분되지 않아야 한다는 조건이다.
각 Equivalence Class를 라고 하면 다음 조건으로 표현할 수 있다.
즉 가장 작은 Equivalence Class의 크기도 최소 k 이상이어야 한다.
2-익명성 예제
다음 데이터는 준식별자로 나이, 성별, 지역을 사용한다고 하자.
| 나이 | 성별 | 지역 | 질병 |
|---|---|---|---|
| 20대 | 남 | 서울 | 독감 |
| 20대 | 남 | 서울 | 위염 |
| 30대 | 여 | 서울 | 암 |
| 30대 | 여 | 서울 | 당뇨 |
각 준식별자 조합이 정확히 2번씩 등장하므로 이 데이터는 2-익명성을 만족한다.
공격자가 어떤 사람의 준식별자를 알고 있더라도 해당 사람이 어느 Record인지 최대 2개 후보 중 하나로만 좁힐 수 있다. 단순한 Record 재식별 관점에서는 한 사람을 정확히 맞힐 확률의 상한을 직관적으로 다음과 같이 생각할 수 있다.
다만 이것은 공격자가 후보들을 동일한 가능성으로 본다는 단순한 해석이며, 실제 재식별 위험을 정확히 나타내는 확률식은 아니다.
k를 크게 하면 항상 좋은가?
k가 커지면 일반적으로 재식별은 어려워지지만 데이터의 Utility는 감소할 수 있다.
예를 들어 정확한 나이를
27세 → 20대 → 20~39세 → 성인
처럼 계속 넓혀 가면 더 많은 사람을 같은 Group으로 묶을 수 있다. 하지만 데이터가 지나치게 일반화되면 세밀한 분석이 어려워진다.
따라서 k-익명성에서는 Privacy와 Data Utility 사이의 Trade-off가 발생한다.
k-익명성을 만드는 방법
대표적으로 Generalization과 Suppression을 사용한다.
Generalization
구체적인 값을 더 넓은 범주로 바꾸는 방법이다.
나이
27 → 20대 → 20~39세
지역
서울 강남구 → 서울 → 수도권
생년월일
2001-08-08 → 2001-08 → 2001
원본 값의 정확도를 낮추는 대신 여러 사람을 같은 준식별자 Group으로 묶는다.
Suppression
일부 값을 삭제하거나 숨기는 방법이다.
서울 강남구 역삼동 → 서울 강남구 ***
010-1234-5678 → 010-****-****
특정 Record가 지나치게 특이해서 다른 사람과 묶기 어려운 경우 해당 값 또는 Record 자체를 제외하기도 한다.
Generalization과 Suppression을 얼마나 적용할지는 데이터의 크기, 분석 목적, 허용 가능한 정보 손실에 따라 결정한다.
k-익명성의 한계: Homogeneity Attack
k-익명성은 누구인지를 숨기는 데 집중하지만, 같은 Group 안의 민감속성가 모두 같으면 무엇을 가지고 있는지는 숨기지 못할 수 있다.
다음 데이터가 3-익명성을 만족한다고 하자.
| 나이 | 성별 | 지역 | 질병 |
|---|---|---|---|
| 20대 | 남 | 서울 | 암 |
| 20대 | 남 | 서울 | 암 |
| 20대 | 남 | 서울 | 암 |
공격자가 어떤 사람이 “20대 남성, 서울 거주”라는 사실을 알고 있다고 하자. 정확히 세 Record 중 어느 사람인지는 알 수 없다.
하지만 세 Record의 질병이 모두 암이므로 그 사람이 암이라는 사실은 확실하게 추론할 수 있다.
이것이 Homogeneity Attack이다.
즉 k-익명성은 Identity Disclosure에는 어느 정도 대응하지만, Attribute Disclosure까지 충분히 막지는 못한다.
l-다양성
l-다양성은 각 Equivalence Class 안에 민감속성가 최소 l개 이상 다양하게 존재하도록 요구한다.
민감속성 값을 라고 하면 가장 단순한 Distinct l-diversity는 다음과 같이 나타낼 수 있다.
즉 한 Group 안에서 서로 다른 민감속성 값의 개수가 최소 l개 이상이어야 한다.
2-다양성 예제
다음 Group을 보자.
| 나이 | 성별 | 지역 | 질병 |
|---|---|---|---|
| 20대 | 남 | 서울 | 암 |
| 20대 | 남 | 서울 | 위염 |
| 20대 | 남 | 서울 | 암 |
준식별자가 같은 Record가 3개이므로 3-익명성을 만족한다.
또한 민감속성인 질병에는
암, 위염
두 종류의 값이 있으므로 Distinct 기준으로 2-다양성을 만족한다.
앞선 Homogeneity Attack과 달리 “20대 남성, 서울 거주”라는 사실만으로 질병을 하나로 확정할 수는 없다.
l-다양성의 여러 형태
단순히 서로 다른 값의 개수만 세는 Distinct l-diversity는 가장 이해하기 쉽지만, 값의 분포가 지나치게 치우쳐 있을 수 있다는 문제가 있다.
예를 들어 10명의 질병이 다음과 같다고 하자.
암 9명
감기 1명
민감속성 값은 두 종류이므로 2-다양성을 만족하지만, 공격자는 대상자가 암일 가능성이 매우 높다고 추론할 수 있다.
이를 보완하기 위해 다음과 같은 형태가 제안된다.
- Distinct l-diversity: 서로 다른 민감속성 값이 최소
l개 존재한다. - Entropy l-diversity: 민감속성의 분포가 충분한 Entropy를 가지도록 요구한다.
- Recursive (c, l)-diversity: 가장 빈번한 값이 나머지 값들에 비해 지나치게 우세하지 않도록 제한한다.
실무에서 “l-다양성을 적용했다”는 표현만으로는 어떤 정의를 사용했는지 불분명할 수 있으므로 기준을 함께 확인하는 것이 중요하다.
l-다양성의 한계: Skewness와 Semantic Similarity
l-다양성도 완전한 해결책은 아니다.
Skewness Attack
전체 데이터에서는 어떤 민감속성가 매우 드문데 특정 Equivalence Class에서만 높은 비율로 나타난다면, 그 Group에 속한다는 사실 자체가 많은 정보를 노출할 수 있다.
예를 들어 전체 인구에서 특정 질병의 비율이 1%인데 어떤 Group에서 50%라면, 민감속성가 여러 종류 존재하더라도 공격자는 대상자의 위험을 크게 좁힐 수 있다.
Semantic Similarity Attack
민감속성 값의 종류는 여러 개지만 의미가 거의 같을 수도 있다.
폐암
위암
간암
세 종류의 값이 있으므로 Distinct 3-diversity를 만족할 수 있다. 그러나 세 값 모두 “암”이라는 더 넓은 의미에 속하므로 공격자는 대상자가 암 환자라는 사실을 알 수 있다.
즉 l-다양성은 값의 개수를 고려하지만 전체 데이터와 비교했을 때 그 분포가 얼마나 특이한지는 충분히 반영하지 못한다.
t-근접성
t-근접성은 각 Equivalence Class의 민감속성 분포가 전체 데이터의 민감속성 분포와 너무 다르지 않도록 제한한다.
전체 데이터의 민감속성 분포를 , 특정 Equivalence Class의 분포를 라고 하자.
두 분포 사이의 Distance가 다음 조건을 만족하면 t-closeness를 만족한다고 본다.
여기서 는 두 Probability Distribution의 차이를 측정하는 Distance이고, 는 허용 가능한 최대 차이이다.
t가 작을수록 각 Group의 민감속성 분포가 전체 데이터와 더 비슷해야 하므로 일반적으로 Privacy 조건이 강해진다.
t-근접성의 직관
전체 데이터의 질병 분포가 다음과 같다고 하자.
| 질병 | 전체 비율 |
|---|---|
| 감기 | 50% |
| 위염 | 30% |
| 암 | 20% |
어떤 Equivalence Class의 분포가 다음과 같다면 전체와 상당히 비슷하다.
| 질병 | Group 비율 |
|---|---|
| 감기 | 50% |
| 위염 | 25% |
| 암 | 25% |
반면 다음 Group은 전체 분포와 크게 다르다.
| 질병 | Group 비율 |
|---|---|
| 감기 | 10% |
| 위염 | 10% |
| 암 | 80% |
두 번째 Group에 속한다는 사실만 알아도 “암일 가능성이 전체 평균보다 매우 높다”는 정보를 얻게 된다.
t-근접성은 바로 이러한 분포 수준의 정보 노출을 줄이려는 모델이다.
Distribution Distance
t-근접성을 적용하려면 두 분포가 얼마나 다른지 계산하는 방법이 필요하다.
대표적으로 Earth Mover’s Distance(EMD)가 사용된다. 직관적으로 한 분포를 다른 분포로 바꾸기 위해 Probability Mass를 얼마나 이동해야 하는지를 측정한다.
특히 소득 구간이나 질병의 심각도처럼 값 사이에 순서나 거리 개념을 둘 수 있을 때 단순히 값의 일치 여부만 보는 것보다 의미 있는 비교가 가능하다.
다만 실제 구현에서는 데이터 유형에 따라 Distance Metric의 정의가 달라질 수 있으므로, 단순히 “t 값이 얼마인가”만 보는 것이 아니라 어떤 Distance를 사용했는지도 확인해야 한다.
세 모델의 관계
세 모델을 한 문장씩 정리하면 다음과 같다.
- k-익명성: 같은 준식별자를 가진 사람이 최소 몇 명인가?
- l-다양성: 같은 Group 안의 민감속성가 얼마나 다양한가?
- t-근접성: 그 Group의 민감속성 분포가 전체 분포와 얼마나 비슷한가?
| 모델 | 핵심 질문 | 주로 방어하려는 위험 | 대표적 한계 |
|---|---|---|---|
| k-익명성 | 나와 같은 준식별자 조합을 가진 사람이 충분히 많은가? | Record 재식별 | Homogeneity Attack, Background Knowledge Attack |
| l-다양성 | Group 안의 민감속성가 충분히 다양한가? | Attribute Disclosure | Skewness Attack, Semantic Similarity |
| t-근접성 | Group의 민감속성 분포가 전체와 충분히 가까운가? | 분포 차이를 이용한 추론 | 높은 정보 손실, Distance 설계의 어려움 |
일반적으로 다음처럼 강한 조건으로 발전한다고 이해할 수 있다.
k-익명성
↓
같은 Group 안의 민감속성도 보호해야 한다
↓
l-다양성
↓
값의 종류만 많아도 분포가 치우칠 수 있다
↓
t-근접성
간단한 예제로 비교하기
다음 데이터에서 준식별자는 나이와 지역이고, 민감속성는 질병이라고 하자.
| 나이 | 지역 | 질병 |
|---|---|---|
| 20대 | 서울 | 암 |
| 20대 | 서울 | 암 |
| 20대 | 서울 | 암 |
| 30대 | 부산 | 감기 |
| 30대 | 부산 | 위염 |
| 30대 | 부산 | 당뇨 |
k-익명성 관점
각 준식별자 Group에는 3명이 있으므로 전체 데이터는 3-익명성을 만족한다.
l-다양성 관점
첫 번째 Group은 질병이 모두 암이므로 1개의 민감속성 값만 존재한다. 따라서 2-다양성을 만족하지 못한다.
두 번째 Group은 감기, 위염, 당뇨의 세 값이 있으므로 Distinct 3-diversity를 만족한다.
따라서 k-익명성만 확인했다면 첫 번째 Group의 민감속성 노출 문제를 놓칠 수 있다.
t-근접성 관점
전체 데이터의 질병 분포와 각 Group의 질병 분포를 비교한다.
첫 번째 Group에서는 암이 100%이므로 전체 분포와 큰 차이가 발생한다. 두 번째 Group도 전체 분포와 완전히 같지는 않다.
t-근접성은 단순히 값이 몇 종류 있는지를 넘어서, Group에 속한다는 사실이 원래 알고 있던 전체 분포에 비해 얼마나 많은 추가 정보를 주는지를 줄이는 방향으로 동작한다.
Background Knowledge Attack
공격자는 공개된 익명 데이터만 보는 것이 아니라 외부 정보를 함께 사용할 수 있다.
예를 들어 공격자가 다음 사실을 이미 알고 있다고 하자.
A는 20대이며 서울에 거주한다.
A는 최근 장기간 입원했다.
익명 데이터에서 준식별자가 같은 사람이 여러 명 있더라도, 공격자는 두 번째 배경지식을 이용해 특정 질병의 가능성을 더 높게 추론할 수 있다.
따라서 Privacy Model은 공격자의 모든 외부 지식을 완전히 통제할 수 없다. k-익명성, l-다양성, t-근접성은 정해진 공격 모델과 데이터 구조 아래에서 위험을 낮추는 방법이지, “절대로 재식별되지 않는다”는 보증이 아니다.
실무에서 주의할 점
세 모델을 실제 데이터에 적용할 때는 숫자 하나만 정해서 끝내서는 안 된다.
- 어떤 Column을 준식별자로 볼 것인지 먼저 정의한다.
- 공격자가 이용할 수 있는 외부 정보를 가정한다.
- 필요한 분석 목적과 최소한의 Data Utility를 정한다.
- Generalization과 Suppression에 따른 정보 손실을 측정한다.
- 민감속성의 분포와 값 사이의 의미적 유사성도 확인한다.
- 익명화된 데이터를 다른 Dataset과 결합했을 때 위험이 다시 커지지 않는지 검토한다.
특히 준식별자 선택을 잘못하면 높은 k 값을 얻더라도 실제 보호 효과가 작을 수 있다.
익명화와 가명처리의 차이
k-익명성 등의 기법을 적용했다고 해서 결과 데이터가 법적 의미에서 자동으로 “익명정보”가 되는 것은 아니다.
기술적 Privacy Model은 특정 공격 방식에 대한 위험을 수치나 조건으로 표현한다. 반면 실제 개인정보 해당 여부나 익명·가명 처리의 판단은 적용되는 법령, 처리 목적, 추가정보의 존재, 결합 가능성, 재식별에 필요한 비용과 기술 등을 함께 고려해야 한다.
따라서 다음 두 문장을 구분해야 한다.
이 데이터는 5-익명성을 만족한다.
이 데이터는 어떤 환경에서도 개인을 식별할 수 없는 익명정보이다.
첫 번째는 특정 Privacy Model에 관한 기술적 조건이고, 두 번째는 훨씬 강한 주장이다.
정리
k-익명성은 준식별자 조합을 공유하는 사람의 수를 늘려 개인의 Record를 특정하기 어렵게 만든다. 그러나 Group 안의 민감속성가 모두 같으면 속성은 그대로 노출될 수 있다.
l-다양성은 각 Group의 민감속성에 다양성을 요구하여 이러한 문제를 보완한다. 하지만 단순히 값의 종류가 많더라도 분포가 크게 치우치거나 값들의 의미가 서로 비슷할 수 있다.
t-근접성은 한 단계 더 나아가 각 Group의 민감속성 분포가 전체 데이터의 분포와 크게 다르지 않도록 제한한다.
따라서 세 개념의 핵심 흐름은 다음과 같다.
k-익명성: 사람을 여러 명 속에 숨긴다.
l-다양성: 그 사람들의 민감속성도 여러 종류로 만든다.
t-근접성: 그 민감속성의 분포까지 전체와 비슷하게 만든다.
세 모델 모두 Privacy와 Data Utility 사이의 Trade-off를 가진다. 실제 데이터 보호에서는 특정 모델 하나를 만족했다는 사실만으로 안전성을 판단하기보다, 데이터의 이용 목적과 공격 가능성, 외부 정보와의 결합 위험을 함께 평가해야 한다.