합성 데이터와 익명화는 자주 같은 뜻으로 쓰이지만 출발점이 반대입니다. 합성은 실제 사람의 기록 없이 값을 만들어 내는 일이고, 익명화는 실제 기록에서 사람을 알아볼 수 있는 부분을 없애는 일입니다. 이 글에서는 네 가지 접근이 어떻게 다른지, 이름을 지우는 것만으로 충분한지, 시험에는 어느 쪽을 쓰는 게 맞는지 정리합니다.
네 가지 접근은 어떻게 다른가요?
출발점과 되돌릴 수 있는지 여부가 이들을 가릅니다. 합성 데이터는 원본이 없으므로 되돌릴 대상 자체가 없습니다. 익명화는 원본을 지우는 작업이고, 가명 처리는 원본과 연결 고리를 남겨 두는 작업입니다. 마스킹은 값을 가리는 표시 단계의 처리입니다.
| 접근 | 출발점 | 원본 복원 | 시험에서의 쓰임 |
|---|---|---|---|
| 합성 | 없음 | 불가능 | 시험용 기록을 통째로 대신함 |
| 익명화 | 실제 기록 | 불가능해야 함 | 통계나 분석 목적에 주로 씀 |
| 가명 처리 | 실제 기록 | 가능 | 제한된 목적에 한해 씀 |
| 마스킹 | 실제 기록 | 처리에 따라 다름 | 화면 표시를 가리는 데 그침 |
표에서 보이듯 시험 환경에서 원본이 필요 없는 경우가 대부분입니다. 원본이 없으면 유출될 원본도 없습니다.
이름만 지우면 익명화가 되나요?
되지 않습니다. 이름을 지워도 생년월일과 우편번호와 성별이 함께 남아 있으면 그 조합만으로 한 사람이 특정될 수 있습니다. 남은 항목들이 서로를 설명하기 때문에, 하나를 지우는 것으로는 부족합니다.
직업이나 가입 시각 같은 값도 조합에 힘을 보탭니다. 드문 조건이 몇 개 겹치면 대상이 좁혀지고, 좁혀진 범위 안에서는 다시 사람을 알아볼 수 있습니다. 어떤 항목을 지워야 하는지는 항목별로 판단할 수 없고, 남은 값들의 조합을 놓고 봐야 합니다.
합성 데이터는 어떻게 만드나요?
규칙에 따라 값을 조합하는 방식이 가장 흔합니다. 나라와 지역을 고르고, 그 지역의 형식에 맞는 우편번호와 전화번호와 이름을 함께 만듭니다. 값들이 같은 지역에서 나오므로 서로 어긋나지 않고, 원본 기록이 없으므로 되돌릴 대상도 없습니다.
시험 목적에는 이 방식으로 충분한 경우가 많습니다. 다만 분포가 실제와 얼마나 닮았는지는 목적에 따라 다르게 볼 문제입니다. 어느 나라 사용자가 얼마나 많은지 같은 비율이 중요하다면 그 비율을 따로 정해야 하고, 형식만 맞으면 되는 시험이라면 비율까지 맞출 필요는 없습니다.
값이 여러 나라에 걸쳐 있는지도 정해야 합니다. 한 나라만 다루는 시험이라면 그 나라 규칙만 따르면 되지만, 여러 나라를 함께 다루는 화면이라면 값마다 어느 나라 규칙을 따르는지 분명해야 합니다.
시험에는 무엇을 써야 하나요?
시험 환경에는 합성 데이터를 쓰는 것이 기본입니다. 원본이 없으니 개인정보가 새는 경로가 줄고, 경계값을 마음대로 만들 수 있습니다. 실패를 재현하려면 같은 값을 다시 만들어 낼 수 있어야 하므로, 생성 조건을 키와 함께 기록해 둡니다.
실제 자료의 분포가 꼭 필요한 경우에도 원본을 그대로 두는 대신 분포만 옮기는 방법을 먼저 검토합니다. 시험에서 확인하려는 것이 형식과 분기라면 원본은 필요하지 않습니다.
한 번 정한 방식을 바꿀 때는 기존 시험이 함께 바뀌는지 확인합니다. 값의 출처를 한 곳에서 관리하고 있으면 교체가 쉽고, 여러 곳에 흩어져 있으면 일부만 바뀌어 결과가 섞입니다. 이 판단은 GDPR과 테스트 신원 데이터에서 다룬 원칙과 같은 선상에 있습니다.
신원 생성기로 합성 기록 만들기
신원 생성기는 실제 자료를 쓰지 않고 시험용 기록을 만드는 도구입니다. 국가와 성별을 고르고 필요한 개수와 키를 정하면, 같은 조건에서 같은 묶음을 다시 만들 수 있습니다. 원본이 없으므로 익명화 과정도, 되돌릴 위험도 따르지 않습니다.
여기서 만들어지는 값은 모두 합성한 것이며 실존 인물과 무관합니다. 테스트 전용으로 쓰고 실제 인물을 사칭하거나 실제 본인 확인을 통과하는 데 사용하지 마세요.
없는 데이터를 어떻게 증명하나요?
합성 데이터를 쓴다고 선언하는 것과 실제로 그런지 확인하는 것은 다릅니다. 시험 환경의 자료가 어디서 왔는지, 어떤 절차로 만들어졌는지 남겨 두면 나중에 확인할 수 있습니다. 생성 조건과 키를 기록하는 일이 그 출발점입니다.
운영 환경에서 내려받은 자료가 남아 있지 않은지도 주기적으로 확인합니다. 한 번 복제한 자료는 지우기 전까지 계속 남아 있고, 지웠다는 사실도 기록으로 남겨야 합니다. 남은 자료를 목록으로 관리하면 어느 환경에 무엇이 있는지 분명해집니다.
개발자를 위한 메모: 재현과 검증
- 키나 씨앗을 받아 같은 기록을 다시 만들 수 있게 합니다. 재현할 수 없는 데이터는 시험에서 쓸모가 반감됩니다.
- 값의 분포를 목적에 맞게 정합니다. 형식만 필요한지 비율까지 필요한지 먼저 정하면 만들 규칙이 달라집니다.
- 원본을 쓰지 않았다는 사실을 절차로 남깁니다. 선언이 아니라 생성 조건과 키가 증거가 됩니다.
- 환경마다 어떤 자료가 있는지 목록으로 관리합니다. 복제한 자료가 남아 있는지 주기적으로 확인합니다.
- 마스킹과 익명화를 같은 말로 쓰지 않습니다. 되돌릴 수 있는지 여부가 두 경우를 가릅니다.
- 조합으로 다시 특정될 수 있는지 검토합니다. 항목 하나씩 보면 안전해 보이는 값도 함께 놓으면 대상을 좁힙니다.
- 만든 값과 실제 값을 코드에서 구분할 수 있게 표시합니다. 구분이 없으면 나중에 어느 쪽인지 판단할 근거가 사라집니다.
- 값의 출처를 설명하는 문서를 남깁니다. 어떤 규칙으로 만들었는지 알면 분포가 목적에 맞는지도 검토할 수 있습니다.
다음 단계
시험 환경에서 실제 자료를 걷어내기로 했다면 신원 생성기에서 필요한 형태의 기록을 만들어 대체하고, 남은 자료를 정리하는 기준은 GDPR과 테스트 신원 데이터를 참고하세요. 주소 쪽 값의 개인정보 처리 원칙은 주소 데이터와 개인정보에서 이어서 볼 수 있습니다.