K-익명성

From CS Wiki
K-anonymity
특정 개인을 식별할 수 없도록 전체 데이터셋에 동일 값 레코드 k개 이상 존재하도록 하는 비식별 모델
  • 공개된 데이터에 대한 연결공격(linkage attack) 등 취약점을 방어하기 위해 사용

공개 데이터의 취약점[edit | edit source]

  • 개인정보를 포함한 공개 데이터
    • 일반적으로 활용하는 데이터에는 이름, 주민등록번호 등과 같이 개인을 직접 식별할 수 있는 데이터는 삭제(아래 비식별 전 데이터)
    • 그러나 활용 정보의 일부가 다른 공개되어 있는 정보 등과 결합하여 개인을 식별하는 문제(연결 공격)가 발생 가능(아래 선거인명부)
  • 연결 공격(linkage attack)
    • 예를 들어, 비식별 전 데이터가 선거인명부와 지역 코드, 연령, 성별에 의해 결합되면, 개인의 민감한 정보인 병명이 드러날 수 있음
    • (ex) 김민준 (13053, 28, 남자)→ 환자 레코드 1번→ 전립선염
    • 미국 매사추세츠 주, ‘선거인명부’와 ‘공개 의료데이터’가 결합하여 개인의 병명 노출 사례

k-익명성 적용 예시[edit | edit source]

  • 비식별 전 데이터
구분 지역 코드 연령 성별 질병
1 13053 28 전립선염
2 13068 21 전립선염
3 13068 29 고혈압
4 13053 23 고혈압
5 14853 50 위암
6 14853 47 전립선염
7 14850 55 고혈압
8 14850 49 고혈압
9 13053 31 위암
10 13053 37 위암
11 13068 36 위암
12 13068 35 위암
  • 선거인명부(공개된 데이터)
구분 이름 지역코드 연령 성별
1 김민준 13053 28
2 박지훈 13068 21
3 이지민 13068 29
4 최현우 13053 23
5 정서연 14853 50
6 송현준 14850 47
7 남예은 14853 55
8 성민재 14850 49
9 윤건우 13053 31
10 손윤서 13053 37
11 민우진 13068 36
12 허수빈 13068 35
  • 지역코드 13053에 사는 28세 남자 김민준은 전립선염에 걸렸음을 재식별
  • 비식별 조치
    • 주어진 데이터 집합에서 같은 값이 적어도 k개 이상 존재하도록 하여 쉽게 다른 정보로 결합할 수 없도록 함
    • 데이터 집합의 일부를 수정하여 모든 레코드가 자기 자신과 동일한(구별되지 않는) k-1개 이상의 레코드를 가짐
    • 예를 들어, 위의 의료 데이터가 비식별 조치된 아래 표에서 1~4, 5~8, 9~12 레코드는 서로 구별되지 않음
구분 지역코드 연령 성별 질병 비고
1 130** < 30 * 전립선염 다양한 질병이

혼재되어 안전

2 130** < 30 * 전립선염
3 130** < 30 * 고혈압
4 130** < 30 * 고혈압
5 1485* > 40 * 위암 다양한 질병이

혼재되어 안전

6 1485* > 40 * 전립선염
7 1485* > 40 * 고혈압
8 1485* > 40 * 고혈압
9 130** 3* * 위암 모두가 동일

질병으로 취약

10 130** 3* * 위암
11 130** 3* * 위암
12 130** 3* * 위암

조치 결과[edit | edit source]

  • 비식별된 데이터 집합에서는 공격자가 정확히 어떤 레코드가 공격 대상인지 알아낼 수 없음
    • (예시) 위 예시에서 선거인명부의 김민준은 비식별 조치된 레코드 1~4에 속하며, 전립선염 또는 고혈압 모두 될 수 있음
  • 여기서, 같은 속성자 값들로 비식별된 레코드들의 모임을 '동일 속성자 값 집합(equivalent class, 동질 집합)'이라고 함

※ (예시) 위 비식별된 데이터 레코드 1~4, 5~8, 9~12

같이 보기[edit | edit source]