안녕하세요. 기업 데이터가 AI 업무에 실제로 활용될 수 있도록 돕는 큐빅(CUBIG)입니다.
고객 명단이나 진료 기록, 설문 응답을 분석이나 AI 개발에 활용하려면 먼저 특정 사람을 알아볼 수 없게 가공해야 합니다. 그래서 이름과 전화번호부터 지우는 경우가 많은데, 이름이 없어도 나이와 사는 곳, 성별을 맞춰 보면 누구인지 드러날 수 있기에 충분한 해결법이 되기는 어렵습니다.
K-익명화(K-anonymity)는 데이터 속 한 사람이 최소 K명 중 한 명으로만 보이도록 만드는 기술입니다.
34세는 30대로, 강남구 역삼동은 강남구로 바꾸는 것처럼 나이나 사는 곳 같은 정보를 조금 더 넓은 범위로 바꿔서, 같은 조건을 가진 사람이 언제나 K명 이상 되도록 하는 방식입니다.
데이터를 외부에 넘기거나 공개하는 담당자는 물론, 그 데이터로 분석하거나 AI 모델을 만드는 팀, 공개를 승인하는 담당자도 알아 두면 좋은 기술입니다.
이름을 지워도 사람을 특정할 수 있는 이유
아래 기록에는 이름이 없지만, 누군가 이 사람이 ‘마포구에 사는 31세 여성’이라는 사실을 알고 있다면 기록의 주인을 짐작할 수 있습니다.

이처럼 하나만으로는 누구인지 알 수 없지만, 여러 개를 합치면 한 사람을 알아볼 수 있는 정보를 준식별자(Quasi-identifier)라고 합니다. 나이, 성별, 거주 지역, 직업, 소속 기관, 방문일 등이 대표적입니다.
당시 미국 카네기멜론대학교에 있던 Latanya Sweeney는 1990년 미국 인구조사 자료를 분석한 연구(2000)에서 이 위험을 수치로 보여 줬습니다. 미국 인구의 87%(2억 4,800만 명 가운데 2억 1,600만 명)가 다섯 자리 우편번호와 성별, 생년월일 세 가지만으로 한 사람으로 특정될 가능성이 높았다는 결과입니다.
이렇게 다른 정보와 맞춰 보며 누구의 기록인지 다시 알아내는 일을 데이터 재식별(Data Re-identification)이라고 합니다. 이름만 지운 데이터로는 이 위험을 줄이기 어렵습니다.
준식별자를 묶고 숨기는 방법
K-익명화는 준식별자를 더 큰 범주로 묶거나, 필요하면 일부 값을 숨깁니다. 앞의 기록이라면 31세는 30대로, 서울 마포구는 서울로 바꾸는 식입니다.
- 범주로 묶기: 나이는 연령대로, 동은 구로, 구는 시 단위로 넓혀 같은 값을 가진 사람을 늘립니다.
- 값 숨기기: 세부 직책이나 방문일처럼 묶어도 같은 조건의 사람이 K명보다 적게 남는 값은 지우거나, 그런 기록을 공개 대상에서 뺍니다.

이렇게 묶으면 ’30대, 서울, 여성’이라는 같은 조건의 기록이 다섯 개가 됩니다. 누군가 특정인의 나이와 거주지, 성별을 알고 있어도 다섯 개의 기록 가운데 어느 것이 그 사람의 것인지 구분하기 어려워지며, 이 상태를 5-익명성이라고 합니다.
K-익명성은 이 상태를 K명 기준으로 넓힌 개념입니다. Sweeney는 2002년 논문에서 공개한 데이터 속 한 사람의 정보가 같은 데이터에 담긴 다른 사람 최소 K-1명의 정보와 구분되지 않을 때 K-익명성을 갖췄다고 정의했습니다. K-익명성이 맞춰야 할 기준이라면, K-익명화는 데이터를 그 기준에 맞게 가공하는 작업입니다.
전부 지우기와 그대로 쓰기, K-익명화 비교
데이터를 다룰 때는 사람을 알아볼 수 있는 정보를 전부 지우면 분석과 AI에 필요한 정보까지 사라지고, 원본을 그대로 쓰면 특정 사람이 드러날 위험이 커져 어느 쪽을 택할지 고민하게 됩니다.

K-익명화는 식별 위험을 낮추면서 데이터의 가치를 일정 수준 남기기에, 민감한 데이터를 분석과 연구, AI에 활용할 수 있는 상태에 가깝게 만듭니다.
큐빅은 민감하거나 품질이 낮아 쓰기 어려운 데이터를 AI에 실제로 활용할 수 있는 상태, 곧 AI-Ready Data(AI 레디 데이터)로 바꾸는 일을 합니다. K-익명화는 이런 전환에 쓰일 수 있는 기술로, 가리는 데서 끝내지 않고 분석에 필요한 가치가 남도록 처리해야 의미가 있습니다.
집계표에도 같은 원리가 필요합니다
특정 지역과 업종의 사업체가 두 곳뿐이면 숫자만 보고도 어느 회사인지 짐작할 수 있어, 개인 기록이 아닌 통계 집계표에도 가려야 할 값이 생깁니다. 이때 두 곳뿐인 칸 하나만 가리면 합계에서 나머지 값을 빼는 것만으로 가린 값을 다시 계산할 수 있으므로, 계산의 단서가 되는 다른 칸까지 함께 가려야 합니다.

개인 기록에서는 조건을 넓게 묶어 같은 조건의 사람을 여러 명으로 만들고, 집계표에서는 값이 공개 기준보다 작은 칸과 다시 계산의 단서가 되는 칸을 함께 가려, 같은 원리를 다른 방식으로 적용합니다.
공공기관이 데이터를 개방할 때 AI에 활용하기 좋은 형태로 함께 준비할 항목은 공공데이터 AI 친화 가이드라인 정리에서 다뤘습니다.
국가데이터처와 진행하는 집계표 연구
큐빅은 국가데이터처(구 통계청) 통계데이터센터와 함께, 집계표를 공개하기 전에 숨겨야 할 값을 AI로 찾아 가리는 연구를 하고 있습니다.
국가데이터처가 해당 연구를 발주한 이유도 앞에서 본 집계표 문제에 있습니다. 기존에는 담당자가 이 작업을 수기로 처리해 오면서 많은 시간이 들었습니다. 집계표마다 형식과 구조가 제각각이고 여러 표를 함께 보면 가린 값이 다시 계산될 수 있어, 같은 매뉴얼을 보더라도 사람마다 판단이 달라질 수 있었습니다.
그동안 규칙 기반을 비롯해 여러 자동화 시도가 있었고, 그 끝에 큐빅이 이 연구를 맡게 됐습니다.
큐빅은 서로 다른 집계표의 구조와 관계를 AI로 먼저 파악한 뒤, 가려야 할 칸을 찾아 가리는 과정을 자동화하는 연구를 하고 있습니다.
이 연구는 여러 표를 함께 봐도 가린 값이 다시 계산되지 않게 하면서, 필요 이상으로 가리지 않아 통계로 쓸 수 있는 값을 지키는 것을 목표로 합니다.
큐빅이 연구에서 중요하게 보는 것
큐빅은 국가데이터처 연구에서 아래 원칙을 두고 설계하고 있습니다.
- 보호와 활용을 함께 설계: 무조건 지우거나 가리는 데서 끝내지 않고, 필요한 분석 가치가 남도록 처리하는 것을 목표로 합니다.
- 표 구조와 관계까지 고려: 개별 값만 보지 않고 표의 구조, 표와 시트 사이의 관계까지 고려하도록 설계합니다.
- 실제 업무 규칙을 자동화: 현장 담당자가 쓰던 매뉴얼과 검토 절차를 시스템에 반영해 반복 업무를 줄이려 합니다.
- 폐쇄망과 온프레미스 환경: 원본 데이터를 외부로 보내지 않도록 폐쇄망과 온프레미스 환경을 전제로 설계합니다.
- 담당자의 최종 확인: 자동 처리 결과를 담당자가 확인하고 확정하도록 설계해, 판단의 책임을 기계에 넘기지 않습니다.
K값은 높을수록 좋을까?
K값을 높이면 특정 사람을 찾기는 어려워지지만, 그만큼 정보를 넓게 묶어야 해서 데이터가 덜 구체적이고 쓰임새도 줄어들 수 있습니다. 그래서 K값은 데이터의 민감도와 활용 목적, 누구인지 다시 알아볼 위험을 함께 따져 알맞은 수준으로 정합니다.
같은 진료 기록이라도 연령대별 경향만 보면 되는 분석과 지역별 차이를 봐야 하는 분석은 묶어도 되는 범위가 다릅니다.
K-익명화의 한계와 보완 방법
K-익명화는 누구의 기록인지를 가릴 뿐, 묶음 안의 민감한 값까지 가리지는 않습니다. 같은 조건의 다섯 명이 모두 당뇨 환자라면 어느 기록이 특정인의 것인지는 몰라도 그 사람이 당뇨를 앓는다는 사실은 드러나기에, 데이터 특성에 따라 아래 방법을 함께 검토합니다.
L-다양성은 Machanavajjhala 외(2007)가 K-익명성의 한계를, T-근접성은 Li 외(2007)가 L-다양성의 한계까지 짚으며 제안한 방법입니다. 차등정보보호는 용어집 차등정보보호(Differential Privacy)에 정리해 두었습니다.

K-익명화를 적용하는 순서
실제 데이터에는 아래 순서로 적용하면, 묶은 뒤에야 필요한 정보가 사라진 것을 알게 되는 일을 줄일 수 있습니다.
- 활용 목적을 정합니다. 어떤 분석이나 AI 개발에 쓸지 정해야 어느 항목을 얼마나 묶어도 되는지 판단할 수 있습니다.
- 직접 식별자를 지웁니다. 이름, 주민등록번호, 전화번호처럼 그것만으로 사람을 알아볼 수 있는 항목은 먼저 지우거나 바꿉니다.
- 준식별자와 민감한 값을 나눕니다. 나이, 지역, 직업처럼 합치면 사람이 좁혀지는 항목과 질병, 소득처럼 보호해야 할 항목을 구분합니다.
- K값을 정하고 묶거나 숨깁니다. 목적과 민감도에 맞춰 K값을 정한 뒤, 같은 조건의 기록이 K개보다 적은 묶음이 남지 않도록 범주를 넓히거나 일부 값을 숨깁니다.
- 결과를 확인합니다. 모든 묶음이 K개 이상인지, 묶음 안의 민감한 값이 한 가지로 몰리지 않았는지, 묶은 뒤에도 필요한 분석을 할 수 있는지 봅니다.
업무별로 먼저 살필 준식별자
어떤 항목이 준식별자가 되는지는 데이터마다 다릅니다. 아래 표는 출발점일 뿐이며, 실제로는 데이터를 받는 쪽이 어떤 정보를 함께 갖고 있는지까지 따져야 합니다.
데이터를 넘기기 전에 확인할 다섯 가지 질문
- 이름과 연락처 말고도 나이, 지역, 직업, 날짜처럼 합치면 사람이 좁혀지는 항목을 모두 찾았나요?
- 데이터를 받는 쪽이 이미 갖고 있거나 쉽게 구할 수 있는 정보와 맞춰 볼 가능성을 따져 봤나요?
- 활용 목적에 비춰 K값과 묶는 범위를 정했고, 묶은 뒤에도 필요한 분석을 할 수 있는지 확인했나요?
- 한 묶음 안의 민감한 값이 모두 같아 그대로 드러나는 경우는 없나요?
- 집계표라면 합계나 다른 표로 가린 값을 다시 계산할 수 없는지 확인했나요?
한 항목이라도 답하기 어렵다면, 데이터를 넘기거나 공개하기 전에 가공 기준부터 다시 점검해 보세요.
고객 기록이나 설문 응답처럼 민감해서 쓰지 못하던 데이터를 분석과 AI에 활용하고 싶다면, 어떤 방식으로 가공할 수 있을지 큐빅과 상의해 보세요.
