AI-Ready 데이터 배호

K-익명화(K-anonymity)란? 민감한 데이터를 AI-Ready Data로 활용하는 방법

주황 카드 한 장이 같은 모양의 보라 카드 네 장이 놓인 유리 트레이로 들어가며 보라로 바뀌어 다섯 장이 구분되지 않게 되는 장면

안녕하세요. 기업 데이터가 AI 업무에 실제로 활용될 수 있도록 돕는 큐빅(CUBIG)입니다.

고객 명단이나 진료 기록, 설문 응답을 분석이나 AI 개발에 활용하려면 먼저 특정 사람을 알아볼 수 없게 가공해야 합니다. 그래서 이름과 전화번호부터 지우는 경우가 많은데, 이름이 없어도 나이와 사는 곳, 성별을 맞춰 보면 누구인지 드러날 수 있기에 충분한 해결법이 되기는 어렵습니다.

K-익명화(K-anonymity)는 데이터 속 한 사람이 최소 K명 중 한 명으로만 보이도록 만드는 기술입니다.

34세는 30대로, 강남구 역삼동은 강남구로 바꾸는 것처럼 나이나 사는 곳 같은 정보를 조금 더 넓은 범위로 바꿔서, 같은 조건을 가진 사람이 언제나 K명 이상 되도록 하는 방식입니다.

데이터를 외부에 넘기거나 공개하는 담당자는 물론, 그 데이터로 분석하거나 AI 모델을 만드는 팀, 공개를 승인하는 담당자도 알아 두면 좋은 기술입니다.

이름을 지워도 사람을 특정할 수 있는 이유

아래 기록에는 이름이 없지만, 누군가 이 사람이 ‘마포구에 사는 31세 여성’이라는 사실을 알고 있다면 기록의 주인을 짐작할 수 있습니다.

이름이 삭제된 기록 한 줄(31세, 서울 마포구, 여성, 당뇨). 아는 조건이 없을 때 96명이던 후보가 여성 57명, 31세 여성 4명, 마포구에 사는 31세 여성 1명으로 좁혀지는 설명용 가상 예시

이처럼 하나만으로는 누구인지 알 수 없지만, 여러 개를 합치면 한 사람을 알아볼 수 있는 정보를 준식별자(Quasi-identifier)라고 합니다. 나이, 성별, 거주 지역, 직업, 소속 기관, 방문일 등이 대표적입니다.

당시 미국 카네기멜론대학교에 있던 Latanya Sweeney는 1990년 미국 인구조사 자료를 분석한 연구(2000)에서 이 위험을 수치로 보여 줬습니다. 미국 인구의 87%(2억 4,800만 명 가운데 2억 1,600만 명)가 다섯 자리 우편번호와 성별, 생년월일 세 가지만으로 한 사람으로 특정될 가능성이 높았다는 결과입니다.

이렇게 다른 정보와 맞춰 보며 누구의 기록인지 다시 알아내는 일을 데이터 재식별(Data Re-identification)이라고 합니다. 이름만 지운 데이터로는 이 위험을 줄이기 어렵습니다.

준식별자를 묶고 숨기는 방법

K-익명화는 준식별자를 더 큰 범주로 묶거나, 필요하면 일부 값을 숨깁니다. 앞의 기록이라면 31세는 30대로, 서울 마포구는 서울로 바꾸는 식입니다.

  • 범주로 묶기: 나이는 연령대로, 동은 구로, 구는 시 단위로 넓혀 같은 값을 가진 사람을 늘립니다.
  • 값 숨기기: 세부 직책이나 방문일처럼 묶어도 같은 조건의 사람이 K명보다 적게 남는 값은 지우거나, 그런 기록을 공개 대상에서 뺍니다.
묶기 전 다섯 명의 기록(31세 서울 마포구부터 38세 서울 노원구까지)을 나이는 30대, 거주지는 서울로 묶어 다섯 명이 같은 조건이 된 5-익명화 예시. 질병 열은 그대로 남아 있음

이렇게 묶으면 ’30대, 서울, 여성’이라는 같은 조건의 기록이 다섯 개가 됩니다. 누군가 특정인의 나이와 거주지, 성별을 알고 있어도 다섯 개의 기록 가운데 어느 것이 그 사람의 것인지 구분하기 어려워지며, 이 상태를 5-익명성이라고 합니다.

K-익명성은 이 상태를 K명 기준으로 넓힌 개념입니다. Sweeney는 2002년 논문에서 공개한 데이터 속 한 사람의 정보가 같은 데이터에 담긴 다른 사람 최소 K-1명의 정보와 구분되지 않을 때 K-익명성을 갖췄다고 정의했습니다. K-익명성이 맞춰야 할 기준이라면, K-익명화는 데이터를 그 기준에 맞게 가공하는 작업입니다.

전부 지우기와 그대로 쓰기, K-익명화 비교

데이터를 다룰 때는 사람을 알아볼 수 있는 정보를 전부 지우면 분석과 AI에 필요한 정보까지 사라지고, 원본을 그대로 쓰면 특정 사람이 드러날 위험이 커져 어느 쪽을 택할지 고민하게 됩니다.

같은 기록을 세 가지로 처리한 비교. 전부 삭제하면 식별 위험은 낮지만 나이와 지역별 분석이 어려워지고, 원본 그대로 쓰면 한 사람까지 좁혀질 수 있으며, K-익명화는 식별 위험을 낮추면서 활용 가치를 남김. 막대 길이는 상대적인 정도

K-익명화는 식별 위험을 낮추면서 데이터의 가치를 일정 수준 남기기에, 민감한 데이터를 분석과 연구, AI에 활용할 수 있는 상태에 가깝게 만듭니다.

큐빅은 민감하거나 품질이 낮아 쓰기 어려운 데이터를 AI에 실제로 활용할 수 있는 상태, 곧 AI-Ready Data(AI 레디 데이터)로 바꾸는 일을 합니다. K-익명화는 이런 전환에 쓰일 수 있는 기술로, 가리는 데서 끝내지 않고 분석에 필요한 가치가 남도록 처리해야 의미가 있습니다.

집계표에도 같은 원리가 필요합니다

특정 지역과 업종의 사업체가 두 곳뿐이면 숫자만 보고도 어느 회사인지 짐작할 수 있어, 개인 기록이 아닌 통계 집계표에도 가려야 할 값이 생깁니다. 이때 두 곳뿐인 칸 하나만 가리면 합계에서 나머지 값을 빼는 것만으로 가린 값을 다시 계산할 수 있으므로, 계산의 단서가 되는 다른 칸까지 함께 가려야 합니다.

공개 기준을 3곳으로 가정한 설명용 집계표. 사업체가 2곳뿐인 칸만 가리면 합계 10에서 3과 5를 빼 2로 다시 계산되지만, 다른 칸도 함께 가리면 각 칸의 정확한 값을 계산할 수 없음

개인 기록에서는 조건을 넓게 묶어 같은 조건의 사람을 여러 명으로 만들고, 집계표에서는 값이 공개 기준보다 작은 칸과 다시 계산의 단서가 되는 칸을 함께 가려, 같은 원리를 다른 방식으로 적용합니다.

개인 단위 기록과 통계 집계표의 처리 방식 비교
구분 개인 단위 기록 통계 집계표
대상 한 사람의 행 단위 기록 통계표 안의 집계 칸
처리 방식 나이, 지역 같은 준식별자를 넓게 묶어 같은 조건의 사람이 K명 이상이 되게 합니다 공개 기준보다 작은 값이 드러나는 칸과, 그 값을 다시 계산하는 단서가 되는 칸을 함께 가립니다
함께 볼 위험 준식별자를 조합해 다시 알아보는 위험 합계나 다른 표, 다른 시트로 가린 값을 다시 계산하는 위험

공공기관이 데이터를 개방할 때 AI에 활용하기 좋은 형태로 함께 준비할 항목은 공공데이터 AI 친화 가이드라인 정리에서 다뤘습니다.

국가데이터처와 진행하는 집계표 연구

큐빅은 국가데이터처(구 통계청) 통계데이터센터와 함께, 집계표를 공개하기 전에 숨겨야 할 값을 AI로 찾아 가리는 연구를 하고 있습니다.

국가데이터처가 해당 연구를 발주한 이유도 앞에서 본 집계표 문제에 있습니다. 기존에는 담당자가 이 작업을 수기로 처리해 오면서 많은 시간이 들었습니다. 집계표마다 형식과 구조가 제각각이고 여러 표를 함께 보면 가린 값이 다시 계산될 수 있어, 같은 매뉴얼을 보더라도 사람마다 판단이 달라질 수 있었습니다.

그동안 규칙 기반을 비롯해 여러 자동화 시도가 있었고, 그 끝에 큐빅이 이 연구를 맡게 됐습니다.

큐빅은 서로 다른 집계표의 구조와 관계를 AI로 먼저 파악한 뒤, 가려야 할 칸을 찾아 가리는 과정을 자동화하는 연구를 하고 있습니다.

이 연구는 여러 표를 함께 봐도 가린 값이 다시 계산되지 않게 하면서, 필요 이상으로 가리지 않아 통계로 쓸 수 있는 값을 지키는 것을 목표로 합니다.

큐빅이 연구에서 중요하게 보는 것

큐빅은 국가데이터처 연구에서 아래 원칙을 두고 설계하고 있습니다.

  • 보호와 활용을 함께 설계: 무조건 지우거나 가리는 데서 끝내지 않고, 필요한 분석 가치가 남도록 처리하는 것을 목표로 합니다.
  • 표 구조와 관계까지 고려: 개별 값만 보지 않고 표의 구조, 표와 시트 사이의 관계까지 고려하도록 설계합니다.
  • 실제 업무 규칙을 자동화: 현장 담당자가 쓰던 매뉴얼과 검토 절차를 시스템에 반영해 반복 업무를 줄이려 합니다.
  • 폐쇄망과 온프레미스 환경: 원본 데이터를 외부로 보내지 않도록 폐쇄망과 온프레미스 환경을 전제로 설계합니다.
  • 담당자의 최종 확인: 자동 처리 결과를 담당자가 확인하고 확정하도록 설계해, 판단의 책임을 기계에 넘기지 않습니다.

K값은 높을수록 좋을까?

K값을 높이면 특정 사람을 찾기는 어려워지지만, 그만큼 정보를 넓게 묶어야 해서 데이터가 덜 구체적이고 쓰임새도 줄어들 수 있습니다. 그래서 K값은 데이터의 민감도와 활용 목적, 누구인지 다시 알아볼 위험을 함께 따져 알맞은 수준으로 정합니다.

같은 진료 기록이라도 연령대별 경향만 보면 되는 분석과 지역별 차이를 봐야 하는 분석은 묶어도 되는 범위가 다릅니다.

K-익명화의 한계와 보완 방법

K-익명화는 누구의 기록인지를 가릴 뿐, 묶음 안의 민감한 값까지 가리지는 않습니다. 같은 조건의 다섯 명이 모두 당뇨 환자라면 어느 기록이 특정인의 것인지는 몰라도 그 사람이 당뇨를 앓는다는 사실은 드러나기에, 데이터 특성에 따라 아래 방법을 함께 검토합니다.

K-익명화의 한계를 보완하는 방법 비교
방법 어떻게 처리하나 보완하는 문제
L-다양성 한 묶음 안에 질병 같은 민감한 값이 여러 가지 섞이도록 묶습니다 묶음 안의 민감한 값이 모두 같아 그대로 드러나는 문제
T-근접성 한 묶음 안의 민감한 값 분포가 전체 데이터의 분포와 크게 다르지 않게 묶습니다 값이 여러 가지여도 한쪽으로 쏠려 짐작할 수 있는 문제
차등정보보호 통계 결과에 잡음을 더합니다 결과만 보고 특정 사람이 데이터에 포함됐는지 추론하는 문제

L-다양성은 Machanavajjhala 외(2007)가 K-익명성의 한계를, T-근접성은 Li 외(2007)가 L-다양성의 한계까지 짚으며 제안한 방법입니다. 차등정보보호는 용어집 차등정보보호(Differential Privacy)에 정리해 두었습니다.

K값이 2, 5, 10, 20으로 커질수록 보호 수준 막대는 길어지고 데이터 구체성 막대는 짧아지는 그래프. 오른쪽은 30대 서울 여성 다섯 명의 질병이 모두 당뇨라 병명이 그대로 드러나는 한계 예시와 보완 방법 L-다양성, T-근접성, 차등정보보호

K-익명화를 적용하는 순서

실제 데이터에는 아래 순서로 적용하면, 묶은 뒤에야 필요한 정보가 사라진 것을 알게 되는 일을 줄일 수 있습니다.

  1. 활용 목적을 정합니다. 어떤 분석이나 AI 개발에 쓸지 정해야 어느 항목을 얼마나 묶어도 되는지 판단할 수 있습니다.
  2. 직접 식별자를 지웁니다. 이름, 주민등록번호, 전화번호처럼 그것만으로 사람을 알아볼 수 있는 항목은 먼저 지우거나 바꿉니다.
  3. 준식별자와 민감한 값을 나눕니다. 나이, 지역, 직업처럼 합치면 사람이 좁혀지는 항목과 질병, 소득처럼 보호해야 할 항목을 구분합니다.
  4. K값을 정하고 묶거나 숨깁니다. 목적과 민감도에 맞춰 K값을 정한 뒤, 같은 조건의 기록이 K개보다 적은 묶음이 남지 않도록 범주를 넓히거나 일부 값을 숨깁니다.
  5. 결과를 확인합니다. 모든 묶음이 K개 이상인지, 묶음 안의 민감한 값이 한 가지로 몰리지 않았는지, 묶은 뒤에도 필요한 분석을 할 수 있는지 봅니다.

업무별로 먼저 살필 준식별자

어떤 항목이 준식별자가 되는지는 데이터마다 다릅니다. 아래 표는 출발점일 뿐이며, 실제로는 데이터를 받는 쪽이 어떤 정보를 함께 갖고 있는지까지 따져야 합니다.

업무별로 먼저 살필 준식별자와 민감한 값
분야 데이터 예 먼저 볼 준식별자 함께 볼 민감한 값
공공 통계 지역별, 업종별 집계표 지역, 업종, 사업체 규모 매출액, 종사자 수처럼 칸마다 들어가는 값
의료 진료 기록, 검사 결과 나이, 성별, 거주 지역, 진료일 진단명, 처방 내용
금융 거래 기록, 대출 정보 나이, 직업, 거주 지역, 거래 시각 소득, 대출 금액
기업 내부 직원 설문, 인사 자료 부서, 직급, 입사 연도 설문 응답, 평가 결과

데이터를 넘기기 전에 확인할 다섯 가지 질문

  • 이름과 연락처 말고도 나이, 지역, 직업, 날짜처럼 합치면 사람이 좁혀지는 항목을 모두 찾았나요?
  • 데이터를 받는 쪽이 이미 갖고 있거나 쉽게 구할 수 있는 정보와 맞춰 볼 가능성을 따져 봤나요?
  • 활용 목적에 비춰 K값과 묶는 범위를 정했고, 묶은 뒤에도 필요한 분석을 할 수 있는지 확인했나요?
  • 한 묶음 안의 민감한 값이 모두 같아 그대로 드러나는 경우는 없나요?
  • 집계표라면 합계나 다른 표로 가린 값을 다시 계산할 수 없는지 확인했나요?

한 항목이라도 답하기 어렵다면, 데이터를 넘기거나 공개하기 전에 가공 기준부터 다시 점검해 보세요.

고객 기록이나 설문 응답처럼 민감해서 쓰지 못하던 데이터를 분석과 AI에 활용하고 싶다면, 어떤 방식으로 가공할 수 있을지 큐빅과 상의해 보세요.

AI는 데이터 상태에서 실행됩니다. 지금 AI-Ready를 준비하세요

자주 묻는 질문

K-익명화란 무엇인가요?

데이터 속 한 사람이 최소 K명 중 한 명으로만 보이도록 나이, 지역 같은 정보를 넓게 묶거나 일부 값을 숨기는 가공 방법입니다. 같은 조건을 가진 기록이 언제나 K개 이상이 되게 해, 특정인의 기록을 가려내기 어렵게 만듭니다.

이름을 지우면 익명 데이터가 되나요?

그렇지 않습니다. 이름이 없어도 나이, 성별, 거주 지역 같은 정보를 합치면 사람을 특정할 수 있어서, 이런 준식별자까지 함께 가공해야 합니다.

K값은 높을수록 좋은가요?

반드시 그렇지는 않습니다. K값이 높으면 보호 수준은 높아지지만 정보를 넓게 묶어야 해서 데이터의 구체성과 활용도가 낮아질 수 있으므로, 데이터의 민감도와 활용 목적에 맞게 정해야 합니다.

K-익명화를 하면 재식별 위험이 완전히 없어지나요?

그렇지 않습니다. K-익명화는 위험을 낮출 뿐 없애지는 못합니다. 묶음 안의 민감한 값이 모두 같으면 그 값이 드러나므로, 데이터 특성에 따라 L-다양성이나 T-근접성, 차등정보보호 같은 방법을 함께 검토합니다.

통계 집계표에도 K-익명화가 필요한가요?

같은 원리를 적용하지만 방식은 다릅니다. 사람을 묶는 대신, 값이 공개 기준보다 작은 칸과 그 값을 합계나 다른 표로 다시 계산하는 단서가 되는 칸을 함께 가립니다. 여러 표가 같은 숫자를 나눠 담고 있으면 표 사이의 관계까지 살펴야 합니다.