데이터 마스킹

**데이터 마스킹**(data masking) 또는 **데이터 난독화**(data obfuscation)는 민감한 데이터를 무단 침입자에게는 가치 없거나 거의 가치 없게 만들면서도 소프트웨어 또는 권한 있는 직원이 사용할 수 있도록 수정하는 과정이다. 데이터 마스킹은 다른 문맥에 따라 익명화 또는 토큰화라고도 불릴 수 있다.

데이터 마스킹의 주된 이유는 개인 식별 정보 또는 중요 업무 데이터로 분류된 정보를 보호하기 위함이다. 그러나 데이터는 유효한 테스트 주기를 수행하는 목적으로 사용 가능해야 한다. 또한 실제처럼 보이고 일관성이 있어야 한다. 일반적으로 마스킹은 기업의 운영 시스템 외부에 있는 데이터에 적용된다. 즉, 애플리케이션 개발, 프로그램 확장 구축 및 다양한 테스트 주기 수행을 위해 데이터가 필요한 경우이다. 기업 컴퓨팅에서는 이러한 비운영 환경에 필요한 데이터 구성 요소를 채우기 위해 운영 시스템의 데이터를 가져오는 것이 일반적이다. 그러나 이러한 관행이 항상 비운영 환경에만 국한되는 것은 아니다. 일부 조직에서는 콜센터 운영자의 터미널 화면에 나타나는 데이터에 사용자 보안 권한에 따라 동적으로 마스킹이 적용될 수 있다(예: 콜센터 운영자가 청구 시스템에서 신용카드 번호를 볼 수 없도록 함).

기업 지배구조 관점에서 주된 우려는 이러한 비운영 환경에서 작업하는 직원이 운영 데이터에 포함된 정보를 다룰 보안 권한을 항상 부여받는 것은 아니라는 점이다. 이러한 관행은 무단 직원이 데이터를 복사할 수 있고, 표준 운영 수준 제어와 관련된 보안 조치가 쉽게 우회될 수 있는 보안 구멍을 나타낸다. 이는 데이터 보안 침해의 접근 지점이 된다.

## 배경
데이터 마스킹 또는 난독화에 관련된 데이터는 여러 수준에서 의미를 유지해야 한다.

# 데이터는 애플리케이션 로직에 의미를 유지해야 한다. 예를 들어, 주소 요소가 난독화되고 도시와 교외 지역이 대체 도시 또는 교외 지역으로 대체되는 경우, 애플리케이션 내에 우편번호 또는 우편번호 조회를 검증하는 기능이 있다면 해당 기능은 오류 없이 예상대로 작동해야 한다. 신용카드 알고리즘 유효성 검사 및 사회 보장 번호 유효성 검사에도 동일하게 적용된다.
# 데이터는 마스킹된 데이터가 운영 데이터 소스에서 온 것임이 명백하지 않도록 충분한 변경을 거쳐야 한다. 예를 들어, 조직 내에서 10명의 고위 관리자가 모두 30만 달러 이상을 벌고 있다는 것이 일반적인 지식일 수 있다. 만약 조직의 HR 시스템 테스트 환경에도 동일한 소득 범위에 10개의 ID가 포함되어 있다면, 다른 정보가 조합되어 실제 신원을 역추적할 수 있다. 이론적으로 데이터가 명백히 마스킹되거나 난독화되어 있다면, 데이터 유출을 의도하는 사람이 운영 데이터 세트의 신원에 대한 어느 정도의 지식을 가지고 있다면 신원 데이터를 역추적할 수 있다고 가정하는 것이 합리적일 것이다. 따라서 데이터 세트의 데이터 난독화 또는 마스킹은 개별 필드 및 테이블의 개별 데이터 요소뿐만 아니라 신원 및 민감한 데이터 레코드가 보호되도록 적용된다.
# 마스킹된 값은 조직 내 여러 데이터베이스에서 일관되어야 할 수 있다. 이때 각 데이터베이스에는 마스킹되는 특정 데이터 요소가 포함되어 있다. 애플리케이션은 처음에 하나의 데이터베이스에 접근한 다음, 상황에 따라 외래 키가 마스킹된 관련 정보를 검색하기 위해 다른 데이터베이스에 접근할 수 있다(예: 콜센터 애플리케이션은 고객 마스터 데이터베이스에서 데이터를 가져온 다음, 상황에 따라 매우 다른 금융 상품을 가진 여러 다른 데이터베이스 중 하나에 접근한다). 이는 적용되는 마스킹이 반복 가능해야 하지만(마스킹 알고리즘에 동일한 입력 값이 항상 동일한 출력 값을 산출함) 원래 값으로 되돌리기 위해 역추적할 수 없어야 한다. 위에 (1)에서 언급된 추가 제약 조건도 관련된 데이터 요소에 따라 적용될 수 있다. 이 시나리오에서 연결해야 하는 데이터베이스 간에 다른 문자 집합이 사용되는 경우, 마스킹 알고리즘 자체 또는 알고리즘을 호출하기 전에 원본 값을 공통 표현으로 변환하는 계획이 적용되어야 한다.

## 기술

### 대체
대체는 데이터 마스킹을 적용하고 데이터 레코드의 실제 모양과 느낌을 보존할 수 있는 가장 효과적인 방법 중 하나이다.

이 방법을 사용하면 기존 값을 다른 실제처럼 보이는 값으로 대체하는 방식으로 마스킹을 수행할 수 있다. 이 접근 방식은 전체 데이터 하위 집합이 마스킹된 데이터 세트인지 여부를 위장하는 데 최적의 이점을 제공하는 여러 데이터 필드 유형이 있다. 예를 들어, 고객 레코드를 포함하는 원본 데이터를 처리하는 경우, 실제 성 또는 이름은 제공되거나 사용자 지정된 조회 파일에서 무작위로 대체될 수 있다. 대체 첫 번째 단계에서 모든 이름에 남성 이름을 적용할 수 있다면, 두 번째 단계에서는 성별이 "F"인 모든 이름에 여성 이름을 적용해야 한다. 이 접근 방식을 사용하면 데이터 구조 내에서 성별 구성을 쉽게 유지하고 데이터 레코드에 익명성을 적용하면서도 마스킹된 데이터로 구성된 데이터베이스임을 쉽게 식별할 수 없는 현실적인 데이터베이스를 유지할 수 있다.

이 대체 방법은 전화번호, 우편번호 및 우편번호, 그리고 신용카드 번호 및 사회 보장 번호 및 메디케어 번호와 같이 룬 알고리즘의 체크섬 테스트를 실제로 준수해야 하는 다른 카드 유형 번호와 같이 전 세계 데이터베이스 구조에 있는 많은 필드에 적용되어야 한다.

대부분의 경우 대체 파일은 상당히 광범위해야 하므로, 대규모 대체 데이터 세트를 보유하고 사용자 지정 데이터 대체 세트를 적용할 수 있는 능력은 모든 데이터 마스킹 솔루션 평가 기준의 핵심 요소가 되어야 한다.

### 섞기
섞기 방법은 매우 흔한 데이터 난독화 형태이다. 대체 방법과 유사하지만, 마스킹되는 동일한 데이터 열에서 대체 세트를 파생시킨다. 매우 간단히 말해, 데이터는 열 내에서 무작위로 섞인다. 그러나 단독으로 사용되는 경우, 원본 데이터에 대한 지식이 있는 사람은 누구나 데이터 세트에 "만약 ~라면" 시나리오를 적용하여 실제 신원을 재구성할 수 있다. 섞기 방법은 섞기 알고리즘이 해독될 수 있다면 역추적될 가능성도 있다.

데이터 섞기는 교란되거나 수정된 기밀 데이터 사용에 대한 우려를 극복하는데, 이는 교란의 바람직한 모든 속성을 유지하면서 데이터 유용성 및 공개 위험 측면에서 다른 마스킹 기술보다 우수한 성능을 보여주기 때문이다.

그러나 섞기에는 특정 영역에서 몇 가지 강점이 있다. 예를 들어, 테스트 데이터베이스의 재무 정보에 대한 연말 수치가 있다면, 공급업체 이름을 마스킹하고 계정의 값을 마스킹된 데이터베이스 전체에 섞을 수 있다. 원본 데이터에 대한 깊은 지식을 가진 사람이라도 실제 데이터 레코드를 원래 값으로 되돌릴 수 있는 가능성은 매우 낮다.

### 숫자 및 날짜 분산
숫자 분산 방법은 재무 및 날짜 기반 정보 필드에 적용하는 데 매우 유용하다. 효과적으로, 이러한 마스킹 방식을 활용하는 방법은 급여와 같은 재무 데이터 세트에서 의미 있는 범위를 여전히 남겨둘 수 있다. 적용되는 분산이 약 +/- 10%라면, 급여 수령자에게 지급되는 급여 범위 측면에서 여전히 매우 의미 있는 데이터 세트이다.

날짜 정보에도 동일하게 적용된다. 전체 데이터 세트가 인구통계학적 및 보험계리적 데이터 무결성을 유지해야 한다면, 날짜 필드에 +/- 120일의 무작위 숫자 분산을 적용하면 날짜 분포를 보존할 수 있지만, 알려진 실제 출생일 또는 마스킹되는 레코드의 알려진 날짜 값에 기반한 알려진 개체로의 추적 가능성은 여전히 방지된다.

### 암호화
암호화는 종종 데이터 마스킹 문제를 해결하는 가장 복잡한 접근 방식이다. 암호화 알고리즘은 종종 사용자 권한에 따라 데이터를 보기 위해 "키"를 적용해야 한다. 이는 종종 최상의 해결책처럼 들리지만, 실제로는 데이터에 대한 적절한 권한이 없는 직원에게 키가 제공될 수 있다. 이렇게 되면 마스킹 작업의 목적이 무산된다. 오래된 데이터베이스는 제공된 키의 원본 자격 증명으로 복사될 수 있으며, 동일한 통제되지 않은 문제가 계속될 수 있다.

최근에는 엔티티의 속성을 보존하면서 데이터를 암호화하는 문제가 인식되었고 공급업체와 학계 사이에서 새로이 관심을 얻었다. 새로운 도전은 형식 유지 암호화를 수행하는 알고리즘을 탄생시켰다. 이들은 NIST가 인정하는 표준 암호화 알고리즘(AES) 모드를 기반으로 한다.

### 널 처리 또는 삭제
때로는 특정 필드에 널 값을 적용함으로써 마스킹에 대한 매우 단순한 접근 방식이 채택되기도 한다. 널 값 접근 방식은 데이터 요소의 가시성을 방지하는 데만 실제로 유용하다.

거의 모든 경우에 이는 마스킹된 데이터 세트에서 유지되는 데이터 무결성의 정도를 감소시킨다. 이는 현실적인 값이 아니며, 테스트 중인 시스템의 프런트엔드 소프트웨어에 적용되었을 수 있는 모든 애플리케이션 로직 유효성 검사를 실패하게 할 것이다. 또한 신원 데이터의 역추적을 원하는 사람에게 데이터 세트에 어느 정도 데이터 마스킹이 적용되었음을 강조한다.

### 가리기
특정 필드의 문자 스크램블링 또는 마스킹은 민감한 정보가 보여지는 것을 방지하는 또 다른 단순하지만 매우 효과적인 방법이다. 이는 이전의 널 처리 방법의 확장판이지만, 데이터를 현실적으로 유지하고 전체적으로 완전히 마스킹하지 않는 것에 더 중점을 둔다.

이는 운영 시스템의 신용카드 데이터에 일반적으로 적용된다. 예를 들어, 콜센터의 운영자는 고객의 신용카드로 항목에 비용을 청구할 수 있다. 그런 다음 XXXX XXXX xxxx 6789의 마지막 4자리와 함께 카드에 대한 청구 참조를 인용한다. 운영자는 카드 번호의 마지막 4자리만 볼 수 있지만, 청구 시스템이 고객의 세부 정보를 청구를 위해 전달하면 전체 번호가 결제 게이트웨이 시스템에 공개된다.

이 시스템은 테스트 시스템에는 그다지 효과적이지 않지만, 위에 상세히 설명된 청구 시나리오에는 매우 유용하다. 이는 동적 데이터 마스킹 방법으로도 흔히 알려져 있다.

### 추가 복잡한 규칙
마스킹 방법이 어떻게 구성되든 상관없이 추가 규칙을 모든 마스킹 솔루션에 포함할 수 있다. 제품에 구애받지 않는 백서는 행 내부 동기화 규칙, 테이블 내부 동기화 규칙 및 테이블 대 테이블 동기화 규칙을 포함하는 기업 마스킹 솔루션에 대한 더 일반적인 복잡한 요구 사항 중 일부를 탐색하기 위한 좋은 정보 소스이다.

## 다른 유형
데이터 마스킹은 테스트 데이터 구축과 밀접하게 연관되어 있다. 주요 데이터 마스킹 유형은 정적 데이터 마스킹과 온더플라이 데이터 마스킹이다.

### 정적 데이터 마스킹
정적 데이터 마스킹은 일반적으로 데이터베이스의 황금 사본에 대해 수행되지만, 파일 포함하여 다른 소스의 값에도 적용될 수 있다. DB 환경에서 운영 데이터베이스 관리자는 일반적으로 테이블 백업을 별도의 환경으로 로드하고, 데이터 세트를 특정 테스트 라운드에 필요한 데이터를 포함하는 하위 집합으로 축소하고("하위 집합화"라고 불리는 기술), 데이터가 정지 상태일 때 데이터 마스킹 규칙을 적용하고, 소스 제어에서 필요한 코드 변경 사항을 적용하고, 원하는 환경으로 데이터를 푸시한다.

### 결정론적 데이터 마스킹
결정론적 마스킹은 동일한 행, 동일한 테이블, 동일한 데이터베이스/스키마, 그리고 인스턴스/서버/데이터베이스 유형 간에 관계없이 열의 값을 동일한 값으로 대체하는 과정이다. 예: 데이터베이스에 여러 테이블이 있고, 각 테이블에는 이름이 있는 열이 있다. 결정론적 마스킹을 사용하면 이름은 항상 동일한 값으로 대체된다. 즉, "Lynne"은 데이터베이스 어디에 있든 항상 "Denise"가 된다.

### 통계적 데이터 난독화
정적 데이터 마스킹에 대한 대안도 있는데, 이는 원본 데이터의 일부 통계적 속성을 보존하는 데이터의 확률적 교란에 의존한다. 통계적 데이터 난독화 방법의 예로는 차등 프라이버시
및 DataSifter 방법이 있다.

### 온더플라이 데이터 마스킹
온더플라이 데이터 마스킹은 데이터가 디스크에 닿지 않고 환경 간에 데이터를 전송하는 과정에서 발생한다. 동일한 기술이 "동적 데이터 마스킹"에도 적용되지만 한 번에 하나의 레코드에 적용된다. 이 유형의 데이터 마스킹은 지속적인 배포를 하는 환경뿐만 아니라 고도로 통합된 애플리케이션에 가장 유용하다. 지속적인 배포 또는 지속적 전달 관행을 사용하는 조직은 백업을 생성하고 데이터베이스의 골든 카피에 로드하는 데 필요한 시간이 없다. 따라서 운영에서 마스킹된 테스트 데이터의 작은 하위 집합(델타)을 지속적으로 보내는 것이 중요하다. 고도로 통합된 애플리케이션에서 개발자는 개발 초기에 다른 운영 시스템에서 피드를 가져오며, 이러한 피드의 마스킹은 간과되거나 나중에 예산이 책정되지 않아 조직이 규정을 준수하지 못하게 된다. 온더플라이 데이터 마스킹을 갖추는 것이 필수적이다.

### 동적 데이터 마스킹
동적 데이터 마스킹은 온더플라이 데이터 마스킹과 유사하지만, 온더플라이 데이터 마스킹이 데이터를 한 소스에서 다른 소스로 복사하여 후자를 공유할 수 있도록 하는 것과 달리 동적 데이터 마스킹은 런타임에 동적으로, 온디맨드로 발생하여 마스킹된 데이터를 동적으로 저장할 두 번째 데이터 소스가 필요하지 않다는 점에서 차이가 있다.

동적 데이터 마스킹은 여러 시나리오를 가능하게 하며, 그 중 많은 부분이 싱가포르 통화청이나 유럽의 개인 정보 보호 규정과 같은 엄격한 개인 정보 보호 규정과 관련되어 있다.

동적 데이터 마스킹은 속성 기반이며 정책 중심이다. 정책에는 다음이 포함된다.
* 의사는 할당된 환자의 의료 기록을 볼 수 있다(데이터 필터링).
* 의사는 의료 기록 내의 SSN 필드를 볼 수 없다(데이터 마스킹).

동적 데이터 마스킹은 특히 형식 유지 암호화를 사용할 때 값을 즉석에서 암호화하거나 암호 해독하는 데에도 사용될 수 있다.

최근 몇 년 동안 동적 데이터 필터링 및 마스킹을 구현하기 위한 여러 표준이 등장했다. 예를 들어, XACML 정책을 사용하여 데이터베이스 내의 데이터를 마스킹할 수 있다.

동적 데이터 마스킹을 적용하는 여섯 가지 기술이 가능하다.
# 데이터베이스 내: 데이터베이스는 SQL을 수신하고 반환된 마스킹된 결과 집합에 재작성을 적용한다. 개발자 및 데이터베이스 관리자에게 적용 가능하지만, 애플리케이션에는 적용되지 않는다(연결 풀, 애플리케이션 캐싱 및 데이터 버스가 애플리케이션 사용자 신원을 데이터베이스에서 숨기며 애플리케이션 데이터 손상을 유발할 수 있기 때문).
# 애플리케이션과 데이터베이스 간 네트워크 프록시: SQL을 캡처하고 선택 요청에 재작성을 적용한다. 간단한 'select' 요청을 사용하는 개발자 및 데이터베이스 관리자에게는 적용 가능하지만, 저장 프로시저(프록시가 exec만 식별함) 및 애플리케이션에는 적용되지 않는다(연결 풀, 애플리케이션 캐싱 및 데이터 버스가 애플리케이션 사용자 신원을 데이터베이스에서 숨기며 애플리케이션 데이터 손상을 유발할 수 있기 때문).
# 데이터베이스 프록시: 네트워크 프록시의 변형이다. 데이터베이스 프록시는 일반적으로 애플리케이션/사용자와 데이터베이스 사이에 배포된다. 애플리케이션과 사용자는 데이터베이스 보안 프록시를 통해 데이터베이스에 연결한다. 애플리케이션과 사용자가 데이터베이스에 연결하는 방식에는 변경 사항이 없다. 또한 데이터베이스 서버에 에이전트를 설치할 필요도 없다. SQL 쿼리는 재작성되지만, 구현 시 이 유형의 동적 데이터 마스킹은 저장 프로시저 및 데이터베이스 함수 내에서도 지원된다.
# 최종 사용자 및 애플리케이션 간 네트워크 프록시: 텍스트 문자열을 식별하고 대체한다. 이 방법은 실시간 문자열 대체가 의도치 않게 적용될 경우 쉽게 손상을 유발할 수 있으므로 복잡한 애플리케이션에는 적용되지 않는다.
# 애플리케이션의 코드 변경 및 XACML: 코드 변경은 일반적으로 수행하기 어렵고 유지 관리하기 불가능하며 패키지 애플리케이션에는 적용되지 않는다.
# 애플리케이션 런타임 내: 애플리케이션 런타임을 계측함으로써, 데이터 소스에서 반환되는 결과 집합을 재작성하도록 정책을 정의하면서 애플리케이션 사용자에 대한 완전한 가시성을 확보한다. 이 방법은 데이터 요청, 데이터 결과 및 사용자 결과에 대한 제어를 가능하게 하므로 복잡한 애플리케이션을 동적으로 마스킹하는 유일한 적용 가능한 방법이다.
# 브라우저 플러그인 지원: SaaS 또는 로컬 웹 애플리케이션의 경우, 브라우저 애드온을 구성하여 특정 CSS 선택자에 해당하는 데이터 필드를 마스킹할 수 있다. 이는 예를 들어 HTML 클래스로 애플리케이션에서 민감한 필드를 표시하거나 난독화 또는 마스킹할 필드를 식별하는 올바른 선택자를 찾아 수행할 수 있다.

### 데이터 마스킹과 클라우드
최근 몇 년 동안 조직들은 최종 애플리케이션이 클라우드에 호스팅되든 온프레미스에 호스팅되든 상관없이 클라우드에서 새로운 애플리케이션을 개발하는 경우가 점점 더 많아지고 있다. 현재 클라우드 솔루션은 조직이 서비스형 인프라스트럭처, 서비스형 플랫폼, 서비스형 소프트웨어를 사용할 수 있도록 한다. 온프레미스 데이터베이스에서 클라우드로 또는 클라우드 내의 다른 환경 간에 테스트 데이터를 생성하고 이동하는 다양한 모드가 있다. 동적 데이터 마스킹은 고객이 클라우드 공급업체에 데이터베이스 관리를 의존하면서 PII 데이터를 보호해야 할 때 클라우드 환경에서 더욱 중요해진다.
데이터 마스킹은 개발 환경의 SLA가 일반적으로 운영 환경의 SLA만큼 엄격하지 않기 때문에 애플리케이션이 클라우드에 호스팅되든 온프레미스에 호스팅되든 관계없이 소프트웨어 개발 수명 주기(SDLC)의 필수적인 부분이 된다.

## 같이 보기
* 정보 기관의 마스킹 및 마스킹 해제

## 각주

분류:데이터베이스 관리 시스템
분류:난독화
분류:데이터베이스
분류:데이터 보호