메뉴 건너뛰기

[Hash 함수(Function) 살펴보기 - 개인 정보 등 민감한 데이터]

 

1. HASH() function 개요

 

HASH() 함수는 신용카드 번호, 급여 정보, 주민등록번호 또는 기타 민감한 식별 정보와 같은 민감한 데이터를 보호하는데 사용됩니다.

 

HASH() 함수는 소스 입력 값을 기반으로 암호화(cryptographic) hash 값을 반환합니다.

 

대부분의 경우 계산된 필드(computed field)는 해당 필드의 데이터를 보호하기 위해 지정된 필드에서 HASH() 함수를 사용하여 생성됩니다. 그런 다음 필드 추출(레코드 아님)을 사용하여 다른 필수 필드와 함께 원래 필드 대신  hash 처리된 계산된 필드(computed field)를 포함하는 새 테이블을 생성합니다. Extract(추출)된 테이블은 이후의 모든 분석 프로세스에 사용되거나 다른 사용자와 공유됩니다. 자세한 내용은 아래 예를 참조하십시오.

 

민감한 데이터 저장이 금지된 경우 필요한 hash 처리 값(value)이 포함된 extract(추출)된 테이블을 생성한 후 원

본 테이블을 삭제할 수 있습니다.

 

HASH() 함수는 단방향 암호화(encoding)를 제공하므로 주의해야 합니다. Hash 값(value)은 이후에 암호화(encoding)를 해제할 수 없습니다.

 

 

2. 문자(Character) 값(value)에 대해 동일한 Hash 값(value) 생성하기

 

소스 문자(character) 값(value)에 HASH() 함수를 사용할 때 INCLUDE(), EXCLUDE(), UPPER() 및/또는 NORMALIZE()와 같은 함수를 사용하여 hash 처리 되기 전에 소스 문자(character) 값(value)을 표준화(standardizing)하는 것을 고려할 수 있습니다.

 

이는 생성되는 hash 값(value)은 대소문자(case), 구두점(punctuation) 등에 따라 달라지기 때문입니다. 소스 문자(character) 값(value)을 표준화하면 동일한 표준화된 데이터에 대해 동일한 hash 값(value)을 생성할 수 있습니다. 이를 통해 테이블 내 또는 테이블 간 텍스트 값의 후속 검색(searching), 요약(summarizing) 또는 비교(comparison)가 더 정확해집니다.

 

Hash 처리된 값(value)을 생성하기 전에 선행(Leading) 및 후행(trailing) 공백(blank)이 자동으로 제거됩니다. 선행 또는 후행 공백이 의미가 있는 경우 REPLACE() 함수를 사용하여 공백을 밑줄(underscore)과 같은 다른 문자(character)로 변환합니다. 자세한 내용은 아래 예를 참조하십시오.

 

표준화된(Standardized) 소스 문자(character) 값(value)은 항상 동일한 hash 값(value)을 생성하므로 hash 처리된 신용카드 번호 필드에서 중복(duplicate) 항목을 검색하거나 hash 처리된 신용카드 번호의 두 필드를 join 할 수 있으며 결과(result)는 동일한 표준화된(standardized) 소스 문자(character) 필드에 대한 작업을 수행한 경우와 동일합니다.

 
 
3. HASH() 함수에서 사용되는 알고리즘
 
HASH()는 입력 값의 길이에 관계없이 64바이트의 fixed-length(고정 길이) hash 출력을 생성하는 SHA-3 암호화 hash 알고리즘을 사용합니다. 소스 입력 값은 64바이트보다 길 수 있습니다.

 

Function Format

HASH(field <,salt_value>)

 

Parameters

  1. HASH() 함수에는 2 가지 파라미터가 있습니다.
  2. 필드(Field) - 모든 문자(character), 숫자(numeric), 날짜(date) 또는 논리 필드(logical field)
  3. Salt 값(Value) - 옵션 파라미터(optional parameter)
  • Salt 값(Value)은 항상 영숫자(alphanumeric character) 문자열(string)로 지정됩니다.
  • Salt 값(Value)은 소스 입력 값(input value)과 연결됩니다. 연결된 전체 문자열(string)은 salt 처리된 hash 값(value)을 생성하는데 사용됩니다.
  • Salt 값(Value)은 hash 값(value)을 강화하고 복호화(decoding)에 덜 영향을 받게 합니다.
  • Salt 값(Value)은 128자(character)를 초과할 수 없으며 더 긴 Salt 값(value)을 지정하면 자동으로 128자로 잘립니다.

Examples

표준 Hash

HASH(Social_Security_ID)

 

옵션 salt 값(value)이 포함된 Hash

HASH(Social_Security_ID, "my salt value")

 

의미 있는 선행(leading) 또는 후행 공백(trailing blanks)이 있는 Hash

HASH(REPLACE(Patient_Name," ","_"))

 

문자(Character) 값(value)을 표준화한 Hash

HASH(UPPER(Patient_Name))

 

Hash 처리된 값(value)을 사용하여 보안 테이블(secure table) 생성하기

OPEN source_table

DEFINE FIELD Hashed_Patient_Name COMPUTED HASH(Patient_Name)

EXTRACT FIELDS Hashed_Patient_Name field1 field2 field3 TO Hashed_Patient_Table

 

 

4. HASH() 함수 사용 예시

 

카드번호 필드 선택 > 마우스 우 클릭 > Add Columns 선택

 

Expression 클릭

 

화면 우측 Functions 목록에서 Hash( field <,salt-value> ) 함수 더블 클릭

 

마우스로 Expression 란 field <,salt-value> 영역 선택 후 하단 Available Fields 목록 중 카드번호 더블클릭

 

우측 Save As 란에 Hash_카드번호 입력

 

OK 클릭

 

Hash_카드번호 필드가 생성됨을 확인합니다.

 

Edit > Table Layout 메뉴에서 필드 목록 중 카드번호 필드를 제거 합니다.

 

또는 Data > Extract 메뉴에서 필요한 필드들(법인카드 원본 데이터 필드만 제외)만 선택하여 별도의 테이블 이름으로 추출하여 생성합니다.

 
위와 같이 민감한 소스 데이터 값(예: 카드번호)이 결과(result)에서 제거되었습니다.
 
※ 위와 같이 최종 분석 결과 데이터에는 민감한 데이터가 존재하지 않도록 관리할 수 있으며, 데이터 적재에서 부터 최종 결과(result) 데이터 생성에 이르는 일련의 과정을 스크립트(Procedure) 작성을 통해 자동화하여 운영할 수 있습니다.
 
 

[Hash 함수(Function) 예시 화면 동영상]

홈페이지 Support > 유용한 동영상 메뉴에서도 동일하게 확인해 보실 수 있습니다.