머신러닝 데이터 세트 내의 민감한 정보에 대한 고려 사항

머신러닝(ML) 프로그램을 개발할 때 회사 내의 데이터 액세스와 해당 액세스에 대한 보안의 균형을 유지하는 것은 중요합니다. 민감한 정보에 대한 액세스가 제한되어 있어도 원시 데이터 세트에 포함된 정보를 통해 ML 학습을 안내할 수 있습니다. 두 가지 목표를 모두 달성하기 위해 ML 시스템이 원시 데이터의 하위 세트에서 학습하도록 하거나 임의의 수의 집계 또는 난독화 기술을 부분적으로 적용한 다음 전체 데이터 세트에서 학습하도록 하는 것이 유용합니다.

예를 들어 데이터 엔지니어가 ML 모델을 학습시켜 제품에 대한 고객의 피드백을 평가하되 피드백을 제출한 사람이 누군지 알지 못하도록 할 수 있습니다. 하지만 배송 주소 및 구매 내역과 같은 정보는 ML 모델이 학습하는 데 매우 중요합니다. 데이터 엔지니어가 데이터를 제공받으면 탐색을 위해 데이터를 쿼리해야 하므로 이를 사용하기 전에 민감한 정보 필드를 보호해야 합니다. 이러한 유형의 딜레마는 추천 엔진을 사용하는 ML 모델에서도 일반적입니다. 사용자별 결과를 반환하는 모델을 만들려면 일반적으로 사용자별 데이터에 액세스해야 합니다.

다행히도 ML 모델이 효과적으로 학습하도록 하면서 데이터 세트에서 민감한 정보를 삭제하는 데 사용할 수 있는 기술이 있습니다. 이 문서의 목표는 민감한 정보를 식별하고 보호하기 위한 몇 가지 전략과 ML 데이터에서 발생할 수 있는 보안 문제를 해결하는 프로세스를 살펴보는 것입니다.

민감한 정보 처리

민감한 정보는 관리자와 법률 자문가가 액세스 제한 또는 암호화 등의 추가적인 보안 조치로 보호하려는 모든 데이터를 가리킵니다. 예를 들어 이름, 이메일 주소, 결제 정보 등의 필드나, 데이터 엔지니어 또는 악의적인 행위자가 간접적으로 추론할 수 있는 정보 또한 종종 민감한 정보로 간주됩니다.

HIPAA 및 PCI-DSS와 같은 표준은 민감한 정보를 보호하는 최고의 모범 사례를 명시하는 동시에 고객에게 민감한 정보를 처리하는 방법에 대해 알려줍니다. 이러한 인증을 통해 고객은 자신의 정보 보안에 대해 정보에 입각한 의사 결정을 내릴 수 있습니다.

머신러닝 데이터 세트에서 민감한 정보를 처리하기 어려운 이유는 다음과 같습니다.

  • 대부분의 역할 기반 보안은 소유권 개념을 대상으로 합니다. 즉 사용자가 자신의 데이터를 보거나 편집할 수는 있지만 자신이 소유하지 않은 데이터에는 액세스할 수 없습니다. 소유권 개념은 여러 사용자의 데이터가 집계된 ML 데이터 세트로 구분됩니다. 기본적으로 데이터 엔지니어는 데이터 세트를 효율적으로 사용하기 위해 전체 데이터 세트에 대한 보기 액세스 권한을 부여받아야 합니다.
  • 예방 수단으로 민감한 필드를 암호화하거나 해상도를 낮추는 방법이 주로 사용되지만 ML 데이터 세트에서는 이 조치만으로 충분하지 않은 경우가 있습니다. 집계된 데이터 세트 자체는 종종 빈도 분석 공격을 통해 암호화를 해제할 수 있는 여지를 제공합니다.
  • 데이터 세트에서 민감한 필드를 무작위 토큰화, 비표시, 삭제하면 필요한 데이터가 차단되어 ML 모델 학습의 효율성이 떨어지고 결국 예측 성능이 저하될 수 있습니다.

일반적으로 조직은 보안과 유용성 간에 균형을 적절하게 유지하기 위해 도구와 모범 사례를 개발합니다. ML 데이터 세트 내의 민감한 정보를 보호하려면 이 문서의 나머지 부분에서 설명할 다음 세 가지 목표를 명심하세요.

  • 높은 수준의 확신을 가지고 데이터 세트에서 민감한 정보를 식별합니다.
  • 프로젝트에 악영향을 미치지 않으면서 민감한 정보를 보호합니다. 이는 민감하다고 판단한 정보를 삭제, 마스킹, 조대화하여 달성할 수 있습니다.
  • 거버넌스 계획 및 모범 사례 문서를 작성합니다. 이를 사용하여 데이터 엔지니어는 물론 고객이 민감한 정보, 특히 민감한 데이터를 확실하게 식별, 마스킹, 삭제할 수 없는 시나리오에서 적절한 결정을 내릴 수 있습니다.

이 세 가지 목표는 회사 내에 데이터 세트를 비공개로 유지하는 시나리오를 중점으로 다음 섹션에서 자세히 설명합니다. 이 문서는 데이터 세트가 공개적으로 공유되는 시나리오는 다루지 않습니다.

민감한 정보 식별

민감한 정보는 여러 시나리오의 환경에서 존재할 수 있습니다. 다음 섹션에서는 가장 일반적인 다섯 가지 시나리오에 대해 알아보고 각 시나리오에서 민감한 정보를 식별하기 위해 사용할 수 있는 방법을 살펴봅니다.

열 내의 민감한 정보

민감한 정보는 구조화된 데이터 세트 내의 특정 열로 제한될 수 있습니다. 예를 들어 사용자의 성, 이름, 우편 주소를 포함하는 열이 있을 수 있습니다. 이 사례에서 민감한 정보를 포함하는 열을 식별하고, 이를 보호하는 방법을 결정하고, 이러한 결정을 문서화할 수 있습니다.

구조화되지 않은 텍스트 기반 데이터 세트 내의 민감한 정보

민감한 정보는 구조화되지 않은 텍스트 기반 데이터 세트의 일부일 수 있으며, 주로 알려진 패턴을 사용하여 감지할 수 있습니다. 예를 들어 채팅 스크립트 내의 신용카드 번호는 신용카드 번호의 일반적인 정규 표현식 패턴을 사용하여 확실하게 감지할 수 있습니다. 잘못된 분류를 야기하는 정규 표현식 감지 오류는 Cloud Data Loss Prevention API 등의 복잡한 도구를 사용하여 최소화할 수 있습니다.

구조화되지 않은 자유 형식 데이터 내의 민감한 정보

민감한 데이터는 텍스트 보고서, 오디오 녹음, 사진, 스캔한 영수증 등의 구조화되지 않은 자유 형식 데이터 내에 존재할 수 있습니다. 이러한 데이터 세트에서 민감한 정보를 식별하는 것은 훨씬 어렵지만 이러한 작업을 지원하는 다양한 도구가 있습니다.

  • 자유 형식 텍스트 문서의 경우 Cloud Natural Language API와 같은 자연어 처리 시스템을 사용하여 항목, 이메일 주소, 기타 민감한 정보를 식별할 수 있습니다.
  • 오디오 녹음의 경우 Cloud Speech API와 같은 음성 문자 변환 서비스를 사용한 다음 자연어 처리를 적용할 수 있습니다.
  • 이미지의 경우 Cloud Vision API와 같은 텍스트 감지 서비스를 사용하여 이미지에서 원시 텍스트를 추출한 다음 이미지 내에 텍스트 위치를 격리할 수 있습니다. Cloud Vision API는 이미지 내의 일부 타겟 항목의 위치에 대한 좌표를 제공하며, 이러한 정보를 계산대 줄 이미지에서 모든 얼굴을 마스킹하여 머신러닝 모델이 평균 고객 대기 시간을 예측하도록 학습하는 등의 용도로 사용할 수 있습니다.
  • 동영상의 경우 각 동영상을 개별 사진 프레임으로 파싱한 다음 이미지 파일로 취급하거나, Cloud Video Intelligence API와 같은 동영상 처리 도구를 Cloud Speech API와 함께 사용하여 오디오를 처리할 수 있습니다.

이러한 기술은 법률 자문가의 검토 및 승인을 받아야 하며, 잠재적으로 민감한 정보를 식별하기 위해 시스템에서 자유 형식 텍스트를 처리하고, 오디오를 텍스트로 변환하고, 이미지를 이해하고, 동영상을 이미지로 분할하는 작업을 얼마나 잘 수행할 수 있는지 여부에 달려 있습니다. 위에 소개한 여러 Google API와 Cloud DLP는 사전 처리 파이프라인에 통합할 수 있는 강력한 도구입니다. 하지만 이렇게 자동화된 방식은 완벽하지 않으므로 스크러빙 이후 남아 있는 민감한 정보를 처리하기 위해 거버넌스 정책을 유지하는 것이 좋습니다.

필드 조합 내의 민감한 정보

민감한 정보는 여러 필드의 조합으로 존재하거나 시간 경과에 따라 보호된 필드의 추이에서 매니페스트로 존재할 수 있습니다. 예를 들어 사용자 식별 가능성을 낮추는 일반적인 방법은 우편번호의 마지막 두 자리를 비공개 처리하여 우편번호를 5자리에서 3자리로 줄이는 것입니다('zip3'). 하지만 직장의 zip3와 자택 주소의 zip3를 조합하면 자택과 직장의 조합이 일반적이지 않은 사용자는 충분히 식별할 수 있을지도 모릅니다. 마찬가지로 시간 경과에 따른 zip3 자택 주소 추이를 통해 여러 번 이사한 개인을 식별해낼 수도 있습니다.

데이터 세트가 빈도 분석 공격으로부터 완벽하게 보호되는지 여부를 식별하려면 통계 관련 전문 지식이 필요합니다. 인간 전문가에게 의존하는 모든 시나리오에서는 확장성 문제가 발생할 수 있으며 역설적으로 동일한 데이터 엔지니어가 원시 데이터에 잠재적인 문제가 있는지 검사하기 위해 데이터를 스크러빙해야 할 수 있습니다. 자동화된 방식으로 이 문제를 식별하고 수치화하는 것이 이상적이지만, 해당 작업은 이 문서에서 다루지 않습니다.

이와는 별개로 법률 자문가 및 데이터 엔지니어와 협업하여 이러한 시나리오에서 발생하는 위험 노출을 파악해야 합니다.

구조화되지 않은 콘텐츠 내의 민감한 정보

민감한 정보는 삽입된 컨텍스트 정보로 인해 구조화되지 않은 콘텐츠 내에 존재할 수 있습니다. 예를 들어 채팅 스크립트에 '어제 사무실에서 전화를 했습니다. 4층의 모바일 수신이 좋지 않아서 18층의 Cafe Deluxe Espresso로 가야 했습니다'라는 구문이 포함될 수 있습니다.

학습 데이터의 컨텍스트와 범위, 그리고 법률 자문가의 조언을 기반으로 이 콘텐츠의 요소를 필터링할 수 있습니다. 구조화되지 않은 콘텐츠의 특성과 유사한 추론이 가능한 복잡한 구문 조합으로 인해 프로그래매틱 도구로 해결하기 어려운 시나리오지만, 구조화되지 않은 전체 데이터 세트에 대한 액세스에 엄격한 거버넌스를 적용하는 것을 고려하는 것이 좋습니다.

모델 개발의 경우 신뢰할 수 있는 사람이 스크러빙하고 검토한 하위 데이터 샘플을 모델 개발에 사용하는 것이 종종 효과적입니다. 그러면 보안 제한 및 소프트웨어 자동화를 사용하여 프로덕션 모델 학습 프로세스를 통해 전체 데이터 세트를 처리할 수 있습니다.

민감한 정보 보호

민감한 정보를 식별한 후에는 이를 보호하는 방법을 결정해야 합니다.

민감한 정보 삭제

프로젝트에 사용자별 정보가 필요하지 않은 경우 ML 모델을 빌드하는 데이터 엔지니어에게 데이터 세트를 제공하기 전에 해당 정보를 모두 삭제하는 것을 고려해야 합니다. 하지만 앞서 살펴본 것처럼 민감한 정보를 삭제하면 데이터 세트의 가치가 크게 하락하는 경우가 있으며 이 경우 민감한 정보는 민감한 데이터 마스킹 섹션에서 설명할 기술 중 하나 이상을 사용하여 마스킹해야 합니다.

데이터 세트의 구조에 따라 민감한 정보를 삭제하는 데 서로 다른 접근법이 필요합니다.

  • 정보가 구조화된 데이터 세트의 특정 열로 제한되는 경우 해당 열에 대한 액세스를 제공하지 않는 뷰를 만들 수 있습니다. 데이터 엔지니어가 데이터를 볼 수 없지만 동시에 데이터는 '라이브 상태'가 되어 지속적인 학습을 위해 ID 제거에 개입할 필요가 없습니다.
  • 민감한 정보가 구조화되지 않은 콘텐츠의 일부이지만 알려진 패턴을 사용하여 식별할 수 있을 경우 자동으로 삭제하고 일반 문자열로 대체할 수 있습니다. Cloud DLP가 이 방법을 사용하여 이러한 문제를 해결합니다.
  • 민감한 정보가 이미지, 동영상, 오디오, 구조화되지 않은 자유 형식 데이터 내에 존재할 경우, 배포한 도구를 민감한 정보를 식별하도록 확장하여 마스킹하거나 삭제할 수 있습니다.
  • 여러 필드의 조합으로 인해 민감한 정보가 존재하는 경우 자동화된 도구 또는 수동 데이터 분석 단계를 통합하여 각 열에서 발생할 수 있는 리스크를 수치화하면 데이터 엔지니어가 정보에 근거하여 관련 열을 유지하거나 삭제하는 결정을 내릴 수 있습니다.

민감한 정보 마스킹

민감한 정보 필드를 삭제할 수 없을 경우에도 데이터 엔지니어가 마스킹한 형식의 데이터를 사용하여 효과적으로 모델을 학습하도록 할 수 있습니다. 데이터 엔지니어가 민감한 정보 필드의 일부 또는 전부를 ML 학습에 영향을 미치지 않고 마스킹할 수 있다고 판단한 경우, 여러 기술을 사용하여 데이터를 마스킹할 수 있습니다.

  • 가장 일반적인 방법은 일반 텍스트 식별자의 모든 어커런스를 해시 또는 암호화된 값으로 대체하는 대체 암호화를 사용하는 것입니다. 일반적으로 SHA-256과 같은 강력한 암호화 해시 또는 AES-256과 같은 강력한 암호화 알고리즘을 사용하여 모든 민감한 필드를 저장하는 것이 가장 좋습니다. 암호화에 솔트를 사용하면 반복 가능한 값이 생성되지 않으며 ML 학습을 저해할 수 있다는 점을 명심하세요.

  • 토큰화는 각 민감한 필드에 저장된 실제 값을 관련 없는 더미 값으로 대체하는 마스킹 기술입니다. 실제 값에 대한 더미 값 매핑은 완전히 다른 더욱 안전한 데이터베이스에 암호화/해시됩니다. 이 방법은 동일한 값에 동일한 토큰 값을 재사용할 경우에만 ML 데이터 세트에 적용됩니다. 이러한 사례에서 이는 대체 암호화와 유사하며 빈도 분석 공격에 취약합니다. 기본적인 차이점은 토큰화는 암호화된 값을 별도의 데이터베이스로 푸시하여 추가 보호 레이어를 생성한다는 점입니다.

  • 여러 개의 열에 포함된 데이터를 보호하는 또 다른 방법은 기본 구성요소 분석(PCA) 또는 측정기준을 줄이는 다른 기술을 사용하여 여러 특성을 결합한 다음 결과 PCA 벡터만으로 ML 학습을 수행하는 것입니다. 예를 들어 age, smoker(1 또는 0으로 표시), body-weight의 서로 다른 세 개의 필드가 주어졌을 때, 1.5age+30smoker+0.2*body-weight 공식을 사용하여 데이터를 단일 PCA 열로 압축할 수 있습니다. 나이가 20살이고 몸무게가 63.5kg인 흡연자는 88이라는 값을 생성합니다. 이 값은 나이가 30살이고 몸무게가 97.5kg인 비흡연자가 생성한 값과 동일합니다.

    이 방법은 고유한 개인을 식별했더라도 PCA 벡터 수식의 설명 없이는 이 고유한 값을 구성하는 요소를 알아낼 수 없기 때문에 매우 강력합니다. 하지만 모든 PCA 처리는 데이터 분산을 저해하며 보안을 위해 정확성이 떨어지게 됩니다.

앞서 살펴본 것처럼 '실제 상황'에서 다른 식별자가 나타나는 빈도에 대한 사전 지식을 사용하고, 여러 암호화된 식별자의 실제 어커런스에 대한 추론을 도출하여 대체 암호화를 해제할 수 있는 경우가 있습니다. 예를 들어 아이 이름의 공개 데이터 세트에서 성씨의 분포를 사용하면 특정 암호화된 식별자의 가능한 이름 집합을 추론할 수 있습니다. 악의적인 행위자가 전체 데이터 세트에 액세스할 수 있다고 가정하면 암호화, 해싱, 토큰화는 빈도 분석 공격에 취약하다고 볼 수 있습니다. 일반화와 양자화는 대신 다대일 매핑을 사용하며, 이러한 방식으로는 추론이 덜 강력하지만 빈도 분석 공격에는 여전히 취약합니다. 머신러닝 데이터 세트에는 많은 변수가 있기 때문에 빈도 분석 공격은 공동 어커런스 확률을 사용하여 암호화를 훨씬 쉽게 해제할 수 있습니다.

따라서 모든 마스킹 방법은 효과적인 감사 및 거버넌스 메커니즘과 결합하여 민감한 정보를 포함할 가능성이 있는 모든 머신러닝 데이터 세트에 대한 액세스를 제한해야 합니다. 여기에는 모든 민감한 필드가 비표시, 암호화, 양자화 또는 일반화된 데이터 세트가 포함됩니다.

민감한 정보 조대화

조대화는 데이터의 정밀도 또는 세밀도를 줄여 데이터 세트 내의 민감한 정보를 식별하기 어렵게 만들면서 조대화 이전의 데이터를 통한 모델 학습과 비교했을 때 상당한 이점을 제공하는 또 다른 기술입니다. 다음 필드는 이 방법에 특히 적합합니다.

  • 위치. 인구 밀도는 전세계에 걸쳐 서로 다르며 위치 좌표를 반올림할 수준은 경우에 따라 크게 다릅니다. 예를 들어 한 자리 정밀도로 반올림한 10진법 기반 경도 및 위도(예: -90.3, 약 10km 이내)는 대규모 농장으로 이루어진 농촌 지역 거주자를 파악하기에 충분합니다. 좌표를 반올림하는 것으로 충분하지 않을 경우 도시, 주, 우편번호와 같은 위치 식별자를 사용할 수 있습니다. 이는 훨씬 넓은 지역을 포함하므로 하나의 개인을 구분하기가 더욱 어렵습니다. 한 행의 고유한 특성을 적절하게 난독화할 수 있을 만큼 충분히 큰 버킷 크기를 선택하세요.
  • 우편번호. 5+4 형식의 미국 우편번호로 세대를 식별할 수 있지만 처음 세 자리('zip3')만 포함하도록 조대화할 수 있습니다. 이렇게 하면 많은 사용자를 동일한 버킷에 포함하여 특정 사용자 식별을 제한할 수 있습니다. 다시 말하지만 규모가 매우 큰 데이터 세트를 사용하면 더욱 정교한 공격이 가능하기 때문에 이 리스크를 수치화하는 것이 좋습니다.
  • 수량. 숫자를 비닝하여 개인을 식별할 수 있는 확률을 낮출 수 있습니다. 예를 들어 보통 정확한 생년월일은 필요하지 않고, 사용자가 태어난 10년 단위 또는 월만 필요하므로 연령, 생일, 유사한 숫자 필드의 범위를 대체하여 조대화할 수 있습니다.
  • IP 주소. IP 주소는 애플리케이션 로그가 필요한 머신러닝 워크플로에 포함된 경우가 많으며 대부분의 경우 민감성 측면에서 물리적 주소와 같이 간주됩니다. 좋은 조대화 전략은 IPv4 주소의 마지막 8자리(IPv6의 경우 마지막 80비트)를 0으로 처리하는 것입니다. 이는 위도/경도를 반올림하거나 상세 주소를 우편번호로 축소하는 것과 동일하게 기능하며 더욱 우수한 보호를 제공하는 대신 지리적 정확성이 줄어듭니다. 가능한 한 파이프라인의 초기 단계에서 IP 주소를 조대화하세요. 디스크에 쓰기 전에 로깅 소프트웨어를 수정하여 IP 주소를 마스킹 또는 비표시할 수도 있습니다.

거버넌스 정책 수립

데이터 세트에 중요한 데이터가 있는 경우 법률 자문가를 통해 거버넌스 정책을 수립하고 모범 사례 문서를 작성하는 것이 좋습니다. 정책의 세부사항은 작성자가 임의로 결정할 수 있으며 PCI 보안 표준 위원회의 PCI DSS 규정 준수 모범 사례나 ISO/IEC 27001:2013 보안 기술 요구 사항(여기에서 미리보기 가능) 등 다양한 리소스를 참고할 수 있습니다. 아래에 정책 프레임워크를 수립할 때 고려할 수 있는 몇 가지 공통적인 개념이 나열되어 있습니다.

  • 거버넌스 문서를 위한 안전한 위치를 수립합니다.
  • 문서에서 암호화 키, 해시 함수와 기타 도구를 제외합니다.
  • 새로운 민감한 정보의 모든 알려진 소스를 문서화합니다.
  • 저장된 민감한 주소의 모든 알려진 위치를 데이터의 유형과 함께 문서화합니다. 민감한 정보를 보호하기 위한 모든 해결 조치 단계를 포함합니다.
  • 해결 조치 단계가 어렵거나, 일관적이지 않거나, 실행 불가능할 경우 알려진 민감한 정보 위치를 문서화합니다. 여기에 빈도 분석 공격이 사용될 수 있다고 의심되는 상황을 포함합니다.
  • 민감한 정보의 새로운 소스를 지속적으로 검사하고 식별하는 프로세스를 수립합니다.
  • 민감한 정보에 대해 임시 또는 영구적인 액세스 권한이 부여된 역할과 개별 직원 이름(가능한 경우)을 문서화합니다. 액세스가 필요한 이유에 대한 정보를 포함합니다.
  • 직원이 민감한 정보에 대한 액세스를 요청하는 프로세스를 문서화합니다. 민감한 정보에 액세스할 수 있는 위치와 복사 가능 여부, 그 방법, 위치, 그리고 액세스와 관련된 기타 제한 사항을 명시합니다.
  • 민감한 정보에 대한 액세스 권한을 가진 사용자를 정기적으로 검토하고 계속 액세스 권한이 필요한지 여부를 결정하는 프로세스를 수립합니다. 직원이 오프보딩 프로세스의 일부로 역할을 해지하거나 변경할 때 취할 조치를 대략적으로 명시합니다.
  • 정책을 전달하고, 시행하고, 정기적으로 검토하는 프로세스를 수립합니다.

다음 단계