KR101728878B1 - 개인정보 이관 시스템 - Google Patents

개인정보 이관 시스템 Download PDF

Info

Publication number
KR101728878B1
KR101728878B1 KR1020150064464A KR20150064464A KR101728878B1 KR 101728878 B1 KR101728878 B1 KR 101728878B1 KR 1020150064464 A KR1020150064464 A KR 1020150064464A KR 20150064464 A KR20150064464 A KR 20150064464A KR 101728878 B1 KR101728878 B1 KR 101728878B1
Authority
KR
South Korea
Prior art keywords
personal information
token
stored
encrypted
file
Prior art date
Application number
KR1020150064464A
Other languages
English (en)
Other versions
KR20160131622A (ko
Inventor
김현욱
박준형
Original Assignee
(주)케이사인
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)케이사인 filed Critical (주)케이사인
Priority to KR1020150064464A priority Critical patent/KR101728878B1/ko
Publication of KR20160131622A publication Critical patent/KR20160131622A/ko
Application granted granted Critical
Publication of KR101728878B1 publication Critical patent/KR101728878B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/024Standardisation; Integration using relational databases for representation of network management data, e.g. managing via structured query language [SQL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Medical Informatics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

개인정보 이관 시스템은 원문 SAM 파일에 저장된 복수의 사용자들의 개인정보들을 암호화하여 NoSQL 데이터베이스로 이관한다. 개인정보 이관 시스템은 메인 서버, 토큰 서버 및 NoSQL 데이터베이스를 포함한다. 메인 서버는 원문 SAM 파일로부터 개인정보들을 독출하고, 설정 파일에 저장된 암호화 정보에 기초하여 개인정보들 중에서 암호화 대상 개인정보들을 선택적으로 출력한다. 토큰 서버는 메인 서버로부터 암호화 대상 개인정보들을 수신하고, 암호화 대상 개인정보들 각각과 일대일로 매핑되고, 암호화 대상 개인정보들 각각과 동일한 길이를 가지며 텍스트 포맷을 갖는 토큰들을 생성하여 메인 서버에 제공한다. 메인 서버는 독출된 개인정보들에서 암호화 대상 개인정보들을 토큰들로 대체하여 복수의 사용자들 각각의 토큰 개인정보들을 생성하고, 토큰 개인정보들을 원문 SAM 파일과 동일한 포맷을 갖는 토큰 SAM 파일로서 저장하고, 토큰 SAM 파일에 저장된 토큰 개인정보들을 로우 단위로 NoSQL 데이터베이스에 저장한다.

Description

개인정보 이관 시스템 {PERSONAL INFORMATION TRANSFER SYSTEM}
본 발명은 개인정보 이관 시스템에 관한 것으로, 보다 상세하게는 보안이 요구되는 개인정보를 암호화하여 NoSQL 데이터베이스로 안전하게 이관할 수 있는 시스템에 관한 것이다.
최근 개인정보의 수집과 이용이 보편화됨에 따라 개인정보 수집 범위가 크게 증가하고 있다. 이와 더불어 개인정보 유출에 따른 문제점이 발생함에 따라, 개인정보의 유출을 방지하기 위해 개인정보를 암호화한 후 저장할 것이 요구된다.
그러나, 사용자의 수가 증가함에 따라, 일반적인 RDBMS(Relational Data Base Management System)를 사용하여 방대한 양의 개인정보들을 암호화하여 저장하기에는 데이터 처리 속도 및 데이터 처리 용량에 한계가 있다.
이에 따라, 본 발명의 일 목적은 축적된 방대한 양의 개인정보를 암호화한 후 클러스터(cluster) 형태로 구현되는 NoSQL 데이터베이스로 안전하게 이관할 수 있는 개인정보 이관 시스템을 제공하는데 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 개인정보 이관 시스템은 원문 SAM(Sequential Access Method) 파일에 저장된 복수의 사용자들의 개인정보들을 암호화하여 NoSQL 데이터베이스로 이관한다. 상기 개인정보 이관 시스템은 메인 서버, 토큰 서버 및 NoSQL 데이터베이스를 포함한다. 상기 메인 서버는 상기 원문 SAM 파일로부터 상기 개인정보들을 독출하고, 설정 파일에 저장된 암호화 정보에 기초하여 상기 개인정보들 중에서 암호화 대상 개인정보들을 선택적으로 출력한다. 상기 토큰 서버는 상기 메인 서버로부터 상기 암호화 대상 개인정보들을 수신하고, 상기 암호화 대상 개인정보들 각각과 일대일로 매핑되고, 상기 암호화 대상 개인정보들 각각과 동일한 길이를 가지며 텍스트 포맷을 갖는 토큰들을 생성하여 상기 메인 서버에 제공한다. 상기 메인 서버는 상기 독출된 개인정보들에서 상기 암호화 대상 개인정보들을 상기 토큰들로 대체하여 상기 복수의 사용자들 각각의 토큰 개인정보들을 생성하고, 상기 토큰 개인정보들을 상기 원문 SAM 파일과 동일한 포맷을 갖는 토큰 SAM 파일로서 저장하고, 상기 토큰 SAM 파일에 저장된 상기 토큰 개인정보들을 로우 단위로 상기 NoSQL 데이터베이스에 저장한다.
일 실시예에 있어서, 상기 NoSQL 데이터베이스는 HDFS(HADOOP Distributed File System) 상에서 동작하는 HBASE일 수 있다.
상기 원문 SAM 파일은 로우 단위로 상기 복수의 사용자들 각각에 상응하는 제1 내지 제n 개인정보들을 저장하고, 상기 제1 내지 제n 개인정보들은 상기 원문 SAM 파일의 제1 내지 제n 컬럼들에 각각 저장되고, 상기 설정 파일에 저장되는 상기 암호화 정보는 상기 제1 내지 제n 컬럼들 중에서 암호화를 수행할 컬럼의 번호에 상응하는 암호화 컬럼 번호를 포함할 수 있다.
상기 메인 서버는, 상기 원문 SAM 파일에 저장된 상기 복수의 사용자들 각각의 상기 제1 내지 제n 개인정보들을 독출하고, 상기 제1 내지 제n 개인정보들 중에서 상기 암호화 컬럼 번호에 상응하는 컬럼에 저장된 개인정보들을 상기 암호화 대상 개인정보들로서 상기 토큰 서버에 제공하고, 상기 제1 내지 제n 개인정보들 중에서 상기 암호화 대상 개인정보들을 상기 토큰 서버로부터 수신되는 상기 토큰들로 대체하여 상기 복수의 사용자들 각각의 제1 내지 제n 토큰 개인정보들로서 생성하고, 상기 제1 내지 제n 토큰 개인정보들을 상기 토큰 SAM 파일로서 저장하는 암호화부, 및 상기 HBASE에 개인정보 테이블을 생성하고, 상기 토큰 SAM 파일에 저장된 상기 제1 내지 제n 토큰 개인정보들을 로우 단위로 독출하여 풋(put) 객체에 저장하고, 상기 HBASE가 제공하는 풋(Put) 함수를 사용하여 상기 풋 객체 상응하는 상기 제1 내지 제n 토큰 개인정보들을 상기 개인정보 테이블에 저장하는 이관부를 포함할 수 있다.
상기 암호화부는 상기 원문 SAM 파일에 저장된 상기 제1 내지 제n 개인정보들을 로우 단위로 독출하여 제1 배열에 순차적으로 저장하고, 상기 제1 배열의 사이즈가 미리 정해진 제1 사이즈에 도달할 때마다, 암호화 쓰레드(thread)를 생성하여 상기 암호화 쓰레드에 상기 제1 배열을 제공하고, 새로운 제1 배열에 상기 원문 SAM 파일로부터 로우 단위로 독출되는 상기 제1 내지 제n 개인정보들을 순차적으로 저장하고, 상기 암호화 쓰레드는 상기 제1 배열에 저장된 상기 제1 내지 제n 개인정보들 중에서 상기 암호화 컬럼 번호에 상응하는 컬럼에 저장된 개인정보들을 독출하여 상기 암호화 대상 개인정보들로서 제2 배열에 저장하고, 상기 제2 배열을 상기 토큰 서버에 제공하고, 상기 토큰 서버로부터 제공되는 상기 토큰들을 제3 배열에 저장하고, 상기 제1 배열에 저장된 상기 제1 내지 제n 개인정보들 중에서 상기 암호화 대상 개인정보들을 상기 제3 배열에 저장된 상기 토큰들로서 대체하여 상기 복수의 사용자들 각각의 상기 제1 내지 제n 토큰 개인정보들을 포함하는 제4 배열을 생성하고, 상기 제4 배열에 저장된 상기 제1 내지 제n 토큰 개인정보들을 상기 토큰 SAM 파일에 기입할 수 있다.
상기 암호화 쓰레드가 복수 개 생성된 경우, 상기 암호화 쓰레드 각각은 먼저 생성된 모든 암호화 쓰레드들이 모두 종료된 이후에 상기 제4 배열에 저장된 상기 제1 내지 제n 토큰 개인정보들을 상기 토큰 SAM 파일에 기입할 수 있다.
상기 이관부는 상기 개인정보 테이블에서 상기 토큰 SAM 파일에 저장된 상기 제1 내지 제n 토큰 개인정보들 각각이 저장될 컬럼 퀄리파이어(column qualifier)의 이름들을 설정하고, 상기 토큰 SAM 파일로부터 상기 제1 내지 제n 토큰 개인정보들을 로우 단위로 독출할 때마다 HashMap 타입의 입력 객체를 생성하고, 상기 독출된 제1 내지 제n 토큰 개인정보들을 상응하는 컬럼 퀄리파이어의 이름들과 연관시켜 키/값 형식으로 상기 입력 객체에 저장하고, 생성된 상기 입력 객체들의 개수가 미리 정해진 풋 사이즈에 도달할 때마다, 이관 쓰레드(thread)를 생성하여 상기 이관 쓰레드에 상기 입력 객체들을 제공하고, 상기 이관 쓰레드는 상기 입력 객체들에 상응하는 상기 풋(put) 객체들을 생성하고, 상기 입력 객체들 각각에 키/값 형식으로 저장된 상기 제1 내지 제n 토큰 개인정보들을 상응하는 풋(put) 객체에 저장하고, 상기 HBASE가 제공하는 풋(Put) 함수를 사용하여 상기 풋 객체들에 저장된 상기 제1 내지 제n 토큰 개인정보들을 상기 개인정보 테이블에 저장할 수 있다.
본 발명의 실시예들에 따른 개인정보 이관 시스템은 원본 개인정보들을 저장할 수 있는 테이블과 동일한 타입 및 동일한 사이즈의 테이블에 암호화된 개인정보들을 저장할 수 있고, 사용자 수가 증가하여 개인정보들의 양이 방대해지는 경우에도, 빠른 속도로 개인정보 제공 서비스를 제공할 수 있고, 개인정보를 저장하고 있는 물리적 장치의 결함으로 인한 데이터 손실의 위험도 효과적으로 줄일 수 있다.
도 1은 본 발명의 일 실시예에 따른 개인정보 이관 시스템을 나타내는 블록도이다.
도 2는 도 1의 개인정보 이관 시스템에 포함되는 원문 SAM 파일의 일 예를 나타내는 도면이다.
도 3은 도 1의 개인정보 이관 시스템에 포함되는 설정 파일의 일 예를 나타내는 도면이다.
도 4는 도 1의 개인정보 이관 시스템이 생성하는 토큰 SAM 파일의 일 예를 나타내는 도면이다.
도 5는 도 1의 개인정보 이관 시스템에 포함되는 메인 서버의 일 예를 나타내는 블록도이다.
도 6은 도 5의 메인 서버에 포함되는 암호화부의 동작의 일 예를 나타내는 순서도이다.
도 7은 도 5의 메인 서버에 포함되는 암호화부에 의해 생성되는 암호화 쓰레드의 동작의 일 예를 나타내는 순서도이다.
도 8은 도 5의 메인 서버에 포함되는 이관부의 동작의 일 예를 나타내는 순서도이다.
도 9는 도 5의 메인 서버에 포함되는 이관부에 의해 생성되는 입력 객체의 일 예를 나타내는 도면이다.
도 10은 도 5의 메인 서버에 포함되는 이관부에 의해 생성되는 이관 쓰레드의 동작의 일 예를 나타내는 순서도이다.
도 11은 도 5의 메인 서버에 포함되는 이관부에 의해 생성되는 풋 객체의 일 예를 나타내는 도면이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 개인정보 이관 시스템을 나타내는 블록도이다.
도 1을 참조하면, 개인정보 이관 시스템(10)은 메인 서버(100), 토큰 서버(200) 및 NoSQL 데이터베이스(300)를 포함한다.
개인정보 이관 시스템(10)은 원문 SAM(Sequential Access Method) 파일(PSAM)(102)에 저장된 복수의 사용자들의 개인정보들을 암호화하여 NoSQL 데이터베이스(300)로 이관한다.
구체적으로, 메인 서버(100)는 원문 SAM 파일(102)로부터 상기 개인정보들을 독출하고, 설정 파일(CFG_F)(101)에 저장된 암호화 정보에 기초하여 상기 독출된 개인정보들을 암호화 대상 개인정보들(EI) 및 비암호화 대상 개인정보들(UEI)로 구분한다.
일 실시예에 있어서, 원문 SAM 파일(102)은 개인정보 이관 시스템(10)의 외부에 위치하는 RDBMS(Relational Data Base Management System)에 저장된 상기 복수의 사용자들의 상기 개인정보들에 기초하여 생성될 수 있다.
도 2는 도 1의 개인정보 이관 시스템에 포함되는 원문 SAM 파일의 일 예를 나타내는 도면이다.
일 실시예에 있어서, 원문 SAM 파일(102)은 로우(row) 단위로 상기 복수의 사용자들 각각에 상응하는 제1 내지 제n 개인정보들을 저장하고, 상기 제1 내지 제n 개인정보들은 원문 SAM 파일(102)의 제1 내지 제n 컬럼들에 각각 저장될 수 있다.
도 2에 도시된 원문 SAM 파일(102)은 예시적으로 제1 내지 제3 컬럼들을 포함하고, 제1 컬럼에 저장되는 제1 개인정보는 사용자의 ID(UID)를 나타내고, 제2 컬럼에 저장되는 제2 개인정보는 사용자의 전화번호(TEL)를 나타내고, 제3 컬럼에 저장되는 제3 개인정보는 사용자의 주민등록번호(JM)를 나타내는 것으로 도시된다.
또한, 원문 SAM 파일(102)의 첫 번째 로우에는 상기 제1 내지 제n 개인정보들 각각의 명칭이 저장될 수 있다.
도 2에는 상기 제1 내지 제n 컬럼들 각각이 ","를 통해 구분되는 것으로 도시되어 있으나, 실시예에 따라서 상기 제1 내지 제n 컬럼들 각각은 미리 정해진 다른 구분자를 통해 구분될 수도 있다.
도 3은 도 1의 개인정보 이관 시스템에 포함되는 설정 파일의 일 예를 나타내는 도면이다.
도 3을 참조하면, 설정 파일(101)은 암호화 정보(ENCRYPTION COLUMN), 원문 SAM 파일(102)에 저장된 상기 개인정보들을 암호화하여 저장할 개인정보 테이블의 명칭(TABLE), 상기 개인정보 테이블의 컬럼 패밀리의 명칭(COLUMN FAMILY), 및 상기 개인정보 테이블의 로우 키가 될 컬럼에 대한 정보(ROW KEY COLUMN)를 포함할 수 있다.
암호화 정보(ENCRYPTION COLUMN)는 원문 SAM 파일(102)의 상기 제1 내지 제n 컬럼들 중에서 암호화를 수행할 컬럼의 번호에 상응하는 암호화 컬럼 번호 및 상기 암호화 컬럼 번호에 상응하는 개인정보를 암호화할 때 사용할 암호화 정책을 포함할 수 있다. 일 실시예에 있어서, 상기 암호화 정책은 해당 개인정보의 몇 번째 자리의 문자들을 암호화해야 할지 여부를 나타낼 수 있다. 예를 들어, 도 3에 도시된 설정 파일(101)의 경우, 원문 SAM 파일(102)의 제3 컬럼에 상응하는 상기 제3 개인정보를 "P001"이라는 보안 정책에 따라 암호화해야 한다는 사항을 나타낼 수 있다. 본 명세서에서는, "P001"이라는 보안 정책은 해당 개인정보의 마지막 7자리를 암호화해야 한다는 것을 나타내는 것으로 설명한다.
또한, 도 3에 도시된 설정 파일(101)의 경우, 개인정보 테이블의 명칭(TABLE)은 "ABC"이고, 상기 개인정보 테이블의 컬럼 패밀리의 명칭(COLUMN FAMILY)은 "PI"이고, 상기 개인정보 테이블의 로우 키가 될 컬럼(ROW KEY COLUMN)은 "UID"에 상응하는 제1 컬럼인 것을 나타낸다.
한편, 도 3에는 설정 파일(101)이 암호화 정보(ENCRYPTION COLUMN), 개인정보 테이블의 명칭(TABLE), 상기 개인정보 테이블의 컬럼 패밀리의 명칭(COLUMN FAMILY), 및 상기 개인정보 테이블의 로우 키가 될 컬럼에 대한 정보(ROW KEY COLUMN)를 모두 포함하는 것으로 도시되어 있으나, 실시예에 따라서, 암호화 정보(ENCRYPTION COLUMN)는 제1 설정 파일에 저장되고, 개인정보 테이블의 명칭(TABLE), 상기 개인정보 테이블의 컬럼 패밀리의 명칭(COLUMN FAMILY), 및 상기 개인정보 테이블의 로우 키가 될 컬럼에 대한 정보(ROW KEY COLUMN)는 제2 설정 파일에 분리되어 저장될 수도 있다.
도 1의 개인정보 이관 시스템(10)에 포함되는 원문 SAM 파일(102) 및 설정 파일(101)이 각각 도 2 및 3과 같은 경우, 메인 서버(100)는 원문 SAM 파일(102)에 저장된 상기 제1 내지 제n 개인정보들을 독출하고, 상기 제1 내지 제n 개인정보들 중에서, 사용자의 주민번호를 나타내는 상기 제3 개인정보들을 암호화 대상 개인정보들(EI)로서 결정하고, 사용자의 ID 및 사용자의 전화번호를 나타내는 상기 제1 및 제2 개인정보들을 비암호화 대상 개인정보들(UEI)로서 결정할 수 있다.
다시 도 1을 참조하면, 메인 서버(100)는 암호화 대상 개인정보들(EI)을 토큰 서버(200)로 제공한다. 이 때, 메인 서버(100)는 암호화 대상 개인정보들(EI)과 함께 암호화 대상 개인정보들(EI)에 상응하는 상기 암호화 정책을 토큰 서버(200)로 제공할 수 있다.
토큰 서버(200)는 메인 서버(100)로부터 암호화 대상 개인정보들(EI) 및 상기 암호화 정책을 수신하는 경우, 상기 암호화 정책에 기초하여 암호화 대상 개인정보들(EI) 각각을 암호화하여 암호화 대상 개인정보들(EI) 각각과 일대일로 매핑되는 토큰들(TKS)을 생성하여 메인 서버(100)에 제공한다. 암호화 대상 개인정보들(EI) 각각과 일대일로 매핑되는 토큰들(TKS)은 암호화 대상 개인정보들(EI) 각각과 동일한 길이를 가지며 텍스트 포맷을 가질 수 있다. 예를 들어, 상기 암호화 정책이 "P001"인 경우, 토큰 서버(200)는 암호화 대상 개인정보들(EI)에 상응하는 상기 제3 개인정보들의 마지막 7자리를 암호화해서 토큰들(TKS)을 생성할 수 있다.
메인 서버(100)는 상기 독출된 개인정보들에서 암호화 대상 개인정보들(EI)을 토큰 서버(200)로부터 수신되는 토큰들(TKS)로 대체하여 상기 복수의 사용자들 각각의 토큰 개인정보들을 생성한다. 따라서 상기 복수의 사용자들 각각의 상기 토큰 개인정보들은 비암호화 대상 개인정보들(UEI) 및 토큰들(TKS)을 포함할 수 있다. 메인 서버(100)는 상기 복수의 사용자들 각각의 상기 토큰 개인정보들을 원문 SAM 파일(102)과 동일한 포맷을 갖는 토큰 SAM 파일(TSAM)(103)로서 저장한다.
도 4는 도 1의 개인정보 이관 시스템이 생성하는 토큰 SAM 파일의 일 예를 나타내는 도면이다.
도 1의 개인정보 이관 시스템(10)에 포함되는 원문 SAM 파일(102) 및 설정 파일(101)이 각각 도 2 및 3과 같은 경우, 도 4에 도시된 바와 같이, 토큰 SAM 파일(103)은 원문 SAM 파일(102)에서 설정 파일(101)에 저장된 상기 암호화 컬럼 번호에 상응하는 상기 제3 개인정보들이 토큰 서버(200)로부터 수신되는 토큰들(TKS)로 대체된 것에 상응할 수 있다.
토큰 SAM 파일(103)을 생성한 이후, 메인 서버(100)는 설정 파일(101)에 저장된 개인정보 테이블의 명칭(TABLE)에 상응하는 이름을 갖는 개인정보 테이블을 NoSQL 데이터베이스(300)에 생성하고, 토큰 SAM 파일(103)에 저장된 상기 복수의 사용자들 각각의 상기 토큰 개인정보들을 로우 단위로 상기 개인정보 테이블에 저장한다.
일 실시예에 있어서, NoSQL 데이터베이스(300)는 HDFS(HADOOP Distributed File System) 상에서 동작하는 HBASE일 수 있다.
이하, NoSQL 데이터베이스(300)는 HBASE인 것으로 설명한다.
도 5는 도 1의 개인정보 이관 시스템에 포함되는 메인 서버의 일 예를 나타내는 블록도이다.
도 5를 참조하면, 메인 서버(100)는 암호화부(110) 및 이관부(120)를 포함할 수 있다.
암호화부(110)는 원문 SAM 파일(102)에 저장된 상기 복수의 사용자들 각각의 상기 제1 내지 제n 개인정보들을 독출하고, 상기 제1 내지 제n 개인정보들 중에서 설정 파일(101)에 저장된 상기 암호화 컬럼 번호에 상응하는 컬럼에 저장된 개인정보들을 암호화 대상 개인정보들(EI)로서 토큰 서버(200)에 제공하고, 상기 제1 내지 제n 개인정보들 중에서 암호화 대상 개인정보들(EI)을 토큰 서버(200)로부터 수신되는 토큰들(TKS)로 대체하여 상기 복수의 사용자들 각각의 상기 제1 내지 제n 토큰 개인정보들로서 생성하고, 상기 제1 내지 제n 토큰 개인정보들을 토큰 SAM 파일(103)로서 저장할 수 있다.
도 6은 도 5의 메인 서버에 포함되는 암호화부의 동작의 일 예를 나타내는 순서도이다.
이하, 도 1 내지 6을 참조하여 암호화부(110)의 동작에 대해 상세히 설명한다.
암호화부(110)는 원문 SAM 파일(102)의 첫 번째 로우를 독출하여 토큰 SAM 파일(103)에 기입할 수 있다(단계 S110). 따라서 원문 SAM 파일(102)의 첫 번째 로우에 저장된 상기 제1 내지 제n 개인정보들 각각의 명칭은 토큰 SAM 파일(103)의 첫 번째 로우에 저장될 수 있다.
이후, 암호화부(110)는 원문 SAM 파일(102)에 저장된 상기 제1 내지 제n 개인정보들을 로우 단위로 독출하여 제1 배열에 순차적으로 저장하고, 상기 제1 배열의 사이즈가 미리 정해진 제1 사이즈에 도달할 때마다, 암호화 쓰레드(thread)를 생성하여 상기 암호화 쓰레드에 상기 제1 배열을 제공하고, 새로운 제1 배열에 상기 원문 SAM 파일(102)로부터 로우 단위로 독출되는 상기 제1 내지 제n 개인정보들을 순차적으로 저장할 수 있다.
구체적으로, 도 6을 참조하면, 암호화부(110)는 제1 배열을 생성하고(단계 S120), 원문 SAM 파일(102)의 모든 로우들을 독출했는지 여부를 판단할 수 있다(단계 S130).
원문 SAM 파일(102)의 모든 로우들을 독출하지 않은 경우(단계 S130; 아니오), 암호화부(110)는 원문 SAM 파일(102)의 다음 로우에 저장된 상기 제1 내지 제n 개인정보들을 독출하여 상기 제1 배열에 추가하고(단계 S140), 상기 제1 배열의 사이즈가 상기 제1 사이즈에 도달했는지 여부를 판단할 수 있다(단계 S150).
상기 제1 배열의 사이즈가 상기 제1 사이즈에 도달하지 않은 경우(단계 S150; 아니오), 암호화부(110)는 상기 제1 배열의 사이즈가 상기 제1 사이즈에 도달할 때까지, 원문 SAM 파일(102)의 모든 로우들을 독출했는지 여부를 판단하고(단계 S130), 원문 SAM 파일(102)의 모든 로우들을 독출하지 않은 경우(단계 S130; 아니오), 원문 SAM 파일(102)의 다음 로우에 저장된 상기 제1 내지 제n 개인정보들을 독출하여 상기 제1 배열에 추가하는 동작(단계 S140)을 반복적으로 수행할 수 있다.
한편, 상기 제1 배열의 사이즈가 상기 제1 사이즈에 도달한 경우(단계 S150; 예), 암호화부(110)는 암호화 쓰레드를 생성하고 상기 암호화 쓰레드에 상기 제1 배열을 제공할 수 있다(단계 S160). 상기 암호화 쓰레드의 상세 동작은 도 7을 참조하여 후술한다.
이후, 암호화부(110)는 새로운 제1 배열을 생성하고(단계 S120), 새롭게 생성된 상기 제1 배열의 사이즈가 상기 제1 사이즈에 도달할 때까지, 원문 SAM 파일(102)의 모든 로우들을 독출했는지 여부를 판단하고(단계 S130), 원문 SAM 파일(102)의 모든 로우들을 독출하지 않은 경우(단계 S130; 아니오), 원문 SAM 파일(102)의 다음 로우에 저장된 상기 제1 내지 제n 개인정보들을 독출하여 상기 제1 배열에 추가하는 동작(단계 S140)을 반복적으로 수행할 수 있다.
또한, 상기 제1 배열의 사이즈가 상기 제1 사이즈에 도달한 경우(단계 S150; 예), 암호화부(110)는 새로운 암호화 쓰레드를 생성하고 새롭게 생성된 상기 암호화 쓰레드에 상기 제1 배열을 제공할 수 있다(단계 S160).
한편, 원문 SAM 파일(102)의 모든 로우들을 독출한 경우(단계 S130; 예), 암호화부(110)는 상기 제1 배열의 사이즈가 0보다 큰지 여부를 판단하고(단계 S170), 상기 제1 배열의 사이즈가 0보다 큰 경우(단계 S170; 예), 새로운 암호화 쓰레드를 생성하고 새롭게 생성된 상기 암호화 쓰레드에 상기 제1 배열을 제공할 수 있다(단계 S180). 상기 제1 배열의 사이즈가 0인 경우에는(단계 S170; 아니오), 암호화부(110)는 새로운 암호화 쓰레드를 생성하지 않고 종료할 수 있다.
도 7은 도 5의 메인 서버에 포함되는 암호화부에 의해 생성되는 암호화 쓰레드의 동작의 일 예를 나타내는 순서도이다.
도 7을 참조하면, 상기 암호화 쓰레드는 암호화부(110)로부터 제공되는 상기 제1 배열에 저장된 상기 제1 내지 제n 개인정보들 중에서 설정 파일(101)에 저장된 상기 암호화 컬럼 번호에 상응하는 컬럼에 저장된 개인정보들을 독출하여 암호화 대상 개인정보들(EI)로서 제2 배열에 저장할 수 있다(단계 S210). 이후, 상기 암호화 쓰레드는 상기 제2 배열을 토큰 서버(200)에 제공할 수 있다(단계 S220).
상기 암호화 쓰레드는 토큰 서버(200)로부터 수신되는 토큰들(TKS)을 제3 배열에 저장하고(단계 S230), 상기 제1 배열에 저장된 상기 제1 내지 제n 개인정보들 중에서 암호화 대상 개인정보들(EI)을 상기 제3 배열에 저장된 토큰들(TKS)로서 대체하여 상기 복수의 사용자들 각각의 상기 제1 내지 제n 토큰 개인정보들을 포함하는 제4 배열을 생성할 수 있다(단계 S240). 이후, 상기 암호화 쓰레드는 상기 제4 배열에 저장된 상기 제1 내지 제n 토큰 개인정보들을 토큰 SAM 파일(103)에 기입할 수 있다.
도 6을 참조하여 상술한 바와 같이, 암호화부(110)는 상기 암호화 쓰레드를 복수 개 생성할 수 있다. 따라서 상기 암호화 쓰레드 각각은 자신보다 먼저 생성된 모든 암호화 쓰레드들이 모두 각각의 상기 제4 배열에 저장된 상기 제1 내지 제n 토큰 개인정보들을 토큰 SAM 파일(103)에 기입하고 종료되었는지 여부를 판단할 수 있다(단계 S250). 상기 암호화 쓰레드 각각은 자신보다 먼저 생성된 모든 암호화 쓰레드들이 모두 종료되지 않은 경우(단계 S250; 아니오), 자신보다 먼저 생성된 모든 암호화 쓰레드들이 모두 종료될 때까지 대기할 수 있다. 한편, 상기 암호화 쓰레드 각각은 자신보다 먼저 생성된 모든 암호화 쓰레드들이 모두 종료된 경우(단계 S250; 예), 상기 제4 배열에 저장된 상기 제1 내지 제n 토큰 개인정보들을 토큰 SAM 파일(103)에 기입한 후(단계 S260) 종료될 수 있다.
도 7을 참조하여 상술한 바와 같이, 상기 암호화 쓰레드 각각은 자신보다 먼저 생성된 모든 암호화 쓰레드들이 모두 각각의 상기 제4 배열에 저장된 상기 제1 내지 제n 토큰 개인정보들을 토큰 SAM 파일(103)에 기입한 이후에, 자신에게 제공된 상기 제4 배열에 저장된 상기 제1 내지 제n 토큰 개인정보들을 토큰 SAM 파일(103)에 기입하므로, 토큰 SAM 파일(103)은 원문 SAM 파일(102)에 저장된 상기 복수의 사용자들 각각에 상응하는 상기 제1 내지 제n 개인정보들과 동일한 순서로 상기 복수의 사용자들 각각에 상응하는 상기 제1 내지 제n 토큰 개인정보들을 저장할 수 있다.
다시 도 5를 참조하면, 이관부(120)는 설정 파일(101)에 저장된 개인정보 테이블의 명칭(TABLE), 상기 개인정보 테이블의 컬럼 패밀리의 명칭(COLUMN FAMILY), 및 상기 개인정보 테이블의 로우 키가 될 컬럼에 대한 정보(ROW KEY COLUMN)에 기초하여 HBASE(300)에 상기 개인정보 테이블을 생성하고, 토큰 SAM 파일(103)에 저장된 상기 제1 내지 제n 토큰 개인정보들을 로우 단위로 독출하여 HBASE(300)에서 제공하는 풋(put) 객체(PUT_O)에 저장하고, HBASE(300)가 제공하는 풋(Put) 함수를 사용하여 풋 객체(PUT_O)를 HBASE(300)에 제공함으로써 풋 객체(PUT_O) 상응하는 상기 제1 내지 제n 토큰 개인정보들을 상기 개인정보 테이블에 저장할 수 있다.
도 8은 도 5의 메인 서버에 포함되는 이관부의 동작의 일 예를 나타내는 순서도이다.
이하, 도 1 내지 8을 참조하여 이관부(120)의 동작에 대해 상세히 설명한다.
이관부(120)는 토큰 SAM 파일(103)의 첫 번째 로우를 독출하여 상기 개인정보 테이블에서 토큰 SAM 파일(103)에 저장된 상기 제1 내지 제n 토큰 개인정보들 각각이 저장될 컬럼 퀄리파이어의 이름들을 설정할 수 있다(단계 S310). 예를 들어, 토큰 SAM 파일(103)이 도 4에 도시된 바와 같은 경우, 토큰 SAM 파일(103)에 저장된 상기 제1 토큰 개인정보들이 저장될 컬럼 퀄리파이어의 이름은 "UID"로 설정되고, 토큰 SAM 파일(103)에 저장된 상기 제2 토큰 개인정보들이 저장될 컬럼 퀄리파이어의 이름은 "TEL"로 설정되고, 토큰 SAM 파일(103)에 저장된 상기 제3 토큰 개인정보들이 저장될 컬럼 퀄리파이어의 이름은 "JM"으로 설정될 수 있다.
이후, 이관부(120)는 토큰 SAM 파일(103)로부터 상기 제1 내지 제n 토큰 개인정보들을 로우 단위로 독출할 때마다 HashMap 타입의 입력 객체를 생성하고, 상기 독출된 제1 내지 제n 토큰 개인정보들을 상응하는 컬럼 퀄리파이어의 이름들과 연관시켜 키/값(key/value) 형식으로 상기 입력 객체에 저장하고, 생성된 상기 입력 객체들의 개수가 미리 정해진 풋 사이즈에 도달할 때마다, 이관 쓰레드(thread)를 생성하여 상기 이관 쓰레드에 상기 입력 객체들을 제공할 수 있다.
구체적으로, 도 8을 참조하면, 이관부(120)는 제5 배열을 생성하고(단계 S320), 토큰 SAM 파일(103)의 모든 로우들을 독출했는지 여부를 판단할 수 있다(단계 S330).
토큰 SAM 파일(103)의 모든 로우들을 독출하지 않은 경우(단계 S330; 아니오), 이관부(120)는 토큰 SAM 파일(103)의 다음 로우에 저장된 상기 제1 내지 제n 토큰 개인정보들을 독출하고, HashMap 타입의 입력 객체를 생성한 후, 상기 독출된 제1 내지 제n 토큰 개인정보들을 상응하는 컬럼 퀄리파이어의 이름들과 연관시켜 키/값 형식으로 상기 입력 객체에 저장할 수 있다(단계 S340).
도 9는 도 5의 메인 서버에 포함되는 이관부에 의해 생성되는 입력 객체의 일 예를 나타내는 도면이다.
도 9에 도시된 HashMap 타입의 입력 객체(INPUTKV)는 예시적으로 도 4의 토큰 SAM 파일(103)에 저장된 첫 번째 사용자에 상응하는 제1 내지 제3 토큰 개인정보들을 저장하고 있는 것으로 도시된다.
도 9에 도시된 바와 같이, 입력 객체(INPUTKV)는 제1 내지 제n 토큰 개인정보들 각각을 상응하는 컬럼 퀄리파이어의 이름들과 연관시켜 키/값 형식으로 저장할 수 있다.
다시 도 8을 참조하면, 이관부(120)는 토큰 SAM 파일(103)의 하나의 로우에 상응하는 상기 입력 객체를 생성한 후, 상기 입력 객체를 제5 배열에 추가할 수 있다(단계 S350).
이후, 이관부(120)는 상기 제5 배열의 사이즈가 미리 정해진 상기 풋 사이즈에 도달했는지 여부를 판단할 수 있다(단계 S360).
상기 제5 배열의 사이즈가 상기 풋 사이즈에 도달하지 않은 경우(단계 S360; 아니오), 이관부(120)는 상기 제5 배열의 사이즈가 상기 풋 사이즈에 도달할 때까지, 토큰 SAM 파일(103)의 모든 로우들을 독출했는지 여부를 판단하고(단계 S330), 토큰 SAM 파일(103)의 모든 로우들을 독출하지 않은 경우(단계 S330; 아니오), 토큰 SAM 파일(103)의 다음 로우에 저장된 상기 제1 내지 제n 토큰 개인정보들을 독출하고, HashMap 타입의 새로운 입력 객체를 생성한 후, 상기 독출된 제1 내지 제n 토큰 개인정보들을 상응하는 컬럼 퀄리파이어의 이름들과 연관시켜 키/값 형식으로 새롭게 생성된 상기 입력 객체에 저장하고(단계 S340), 상기 입력 객체를 상기 제5 배열에 추가하는 동작(단계 S350)을 반복적으로 수행할 수 있다.
한편, 상기 제5 배열의 사이즈가 상기 풋 사이즈에 도달한 경우(단계 S360; 예), 이관부(120)는 이관 쓰레드를 생성하고 상기 이관 쓰레드에 상기 제5 배열을 제공할 수 있다(단계 S370). 상기 이관 쓰레드의 상세 동작은 도 10을 참조하여 후술한다.
이후, 이관부(120)는 새로운 제5 배열을 생성하고(단계 S320), 새롭게 생성된 상기 제5 배열의 사이즈가 상기 풋 사이즈에 도달할 때까지, 토큰 SAM 파일(103)의 모든 로우들을 독출했는지 여부를 판단하고(단계 S330), 토큰 SAM 파일(103)의 모든 로우들을 독출하지 않은 경우(단계 S330; 아니오), 토큰 SAM 파일(103)의 다음 로우에 저장된 상기 제1 내지 제n 토큰 개인정보들을 독출하고, HashMap 타입의 새로운 입력 객체를 생성한 후, 상기 독출된 제1 내지 제n 토큰 개인정보들을 상응하는 컬럼 퀄리파이어의 이름들과 연관시켜 키/값 형식으로 새롭게 생성된 상기 입력 객체에 저장하고(단계 S340), 상기 입력 객체를 상기 제5 배열에 추가하는 동작(단계 S350)을 반복적으로 수행할 수 있다.
또한, 상기 제5 배열의 사이즈가 상기 풋 사이즈에 도달한 경우(단계 S360; 예), 이관부(120)는 새로운 이관 쓰레드를 생성하고 새롭게 생성된 상기 이관 쓰레드에 상기 제5 배열을 제공할 수 있다(단계 S370).
한편, 토큰 SAM 파일(103)의 모든 로우들을 독출한 경우(단계 S330; 예), 이관부(120)는 상기 제5 배열의 사이즈가 0보다 큰지 여부를 판단하고(단계 S380), 상기 제5 배열의 사이즈가 0보다 큰 경우(단계 S380; 예), 새로운 이관 쓰레드를 생성하고 새롭게 생성된 상기 이관 쓰레드에 상기 제5 배열을 제공할 수 있다(단계 S390). 상기 제5 배열의 사이즈가 0인 경우에는(단계 S380; 아니오), 이관부(120)는 새로운 이관 쓰레드를 생성하지 않고 종료할 수 있다.
도 10은 도 5의 메인 서버에 포함되는 이관부에 의해 생성되는 이관 쓰레드의 동작의 일 예를 나타내는 순서도이다.
도 10을 참조하면, 상기 이관 쓰레드는 HBASE(300)에 설정 파일(101)에 저장된 개인정보 테이블의 명칭(TABLE)에 상응하는 상기 개인정보 테이블이 존재하는지 여부를 판단하고(단계 S410), HBASE(300)에 설정 파일(101)에 저장된 개인정보 테이블의 명칭(TABLE)에 상응하는 상기 개인정보 테이블이 존재하지 않는 경우(단계 S410; 아니오), 설정 파일(101)에 저장된 개인정보 테이블의 명칭(TABLE), 상기 개인정보 테이블의 컬럼 패밀리의 명칭(COLUMN FAMILY), 및 상기 개인정보 테이블의 로우 키가 될 컬럼에 대한 정보(ROW KEY COLUMN)에 기초하여 HBASE(300)에 상기 개인정보 테이블을 생성할 수 있다(단계 S420).
이후, 상기 이관 쓰레드는 이관부(120)로부터 제공되는 상기 제5 배열에 포함되는 상기 입력 객체들 각각에 대해 HBASE(300)에서 제공하는 풋(put) 타입의 풋 객체(PUT_O)를 생성하고, 상기 제5 배열에 포함되는 상기 입력 객체들 각각에 키/값 형식으로 저장된 상기 제1 내지 제n 토큰 개인정보들을 상응하는 풋 객체(PUT_O)에 저장할 수 있다(단계 S430).
도 11은 도 5의 메인 서버에 포함되는 이관부에 의해 생성되는 풋 객체의 일 예를 나타내는 도면이다.
도 11에 도시된 풋 타입의 풋 객체(PUT_O)는 예시적으로 도 9의 입력 객체(INPUTKV)에 저장된 첫 번째 사용자에 상응하는 제1 내지 제3 토큰 개인정보들을 저장하고 있는 것으로 도시된다.
도 3을 참조하여 상술한 바와 같이, 상기 개인정보 테이블은 사용자의 ID(UID)에 상응하는 제1 컬럼을 로우 키로 가지고, 상기 개인정보 테이블의 컬럼 패밀리의 명칭(COLUMN FAMILY)은 "PI"로 설정된다.
따라서, 도 11에 도시된 바와 같이, 상기 이관 쓰레드는 풋 객체(PUT_O)의 로우 키 영역에 입력 객체(INPUTKV)의 "UID"에 상응하는 "ake"를 저장하고, 풋 객체(PUT_O)의 컬럼 패밀리 영역에 설정 파일(101)에 저장된 컬럼 패밀리의 명칭(COLUMN FAMILY)인 "PI"를 저장하고, 풋 객체(PUT_O)의 컬럼 퀄리파이어 영역에 도 9의 입력 객체(INPUTKV)에 키/값 형식으로 저장된 상기 제1 내지 제3 토큰 개인정보들 및 이에 상응하는 컬럼 퀄리파이어 이름들을 순차적으로 저장할 수 있다.
다시 도 10을 참조하면, 상기 이관 쓰레드는 이관부(120)로부터 제공되는 상기 제5 배열에 포함되는 상기 입력 객체들 각각에 상응하는 풋 객체(PUT_O)를 생성한 후, HBASE(300)가 제공하는 풋(Put) 함수를 사용하여 풋 객체들(PUT_O)에 저장된 상기 제1 내지 제n 토큰 개인정보들을 HBASE(300)에 생성된 상기 개인정보 테이블에 저장할 수 있다(단계 S440).
도 1 내지 11을 참조하여 상술한 바와 같이, 본 발명의 실시예들에 따른 개인정보 이관 시스템(10)은 설정 파일(101)에 저장된 상기 암호화 정보에 기초하여 원문 SAM 파일(102)에 저장된 상기 복수의 사용자들의 상기 개인정보들 중의 일부를 암호화 대상 개인정보들(EI)로 결정하고, 토큰 서버(200)를 사용하여 암호화 대상 개인정보들(EI)에 상응하는 토큰들(TKS)을 획득한 후, 상기 개인정보들에서 암호화 대상 개인정보들(EI)을 토큰들(TKS)로 대체하여 상기 복수의 사용자들 각각의 토큰 개인정보들로서 토큰 SAM 파일(103)에 저장한다. 이 때, 암호화 대상 개인정보들(EI) 각각과 일대일로 매핑되는 토큰들(TKS)은 암호화 대상 개인정보들(EI) 각각과 동일한 길이를 가지며 텍스트 포맷을 가질 수 있다. 따라서 토큰 SAM 파일(103)은 원문 SAM 파일(102)에 대한 암호화 파일에 상응하면서도 원문 SAM 파일(102)과 동일한 사이즈를 갖는 텍스트 파일일 수 있다. 따라서 본 발명의 실시예들에 따른 개인정보 이관 시스템(10)은 원문 SAM 파일(102)에 저장된 상기 개인정보들을 저장할 수 있는 테이블과 동일한 타입 및 동일한 사이즈의 테이블에 토큰 SAM 파일(103)에 저장된 토큰 개인정보들을 저장할 수 있다.
또한, 본 발명의 실시예들에 따른 개인정보 이관 시스템(10)은 원문 SAM 파일(102)에 저장된 상기 복수의 사용자들의 상기 개인정보들을 암호화한 후 클러스터(cluster) 형태로 구현되는 HBASE(300)에 이관하여 보관한다. 따라서 사용자 수가 증가하여 상기 복수의 사용자들의 개인정보들의 양이 방대해지는 경우에도, 빠른 속도로 개인정보 제공 서비스를 제공할 수 있고, 개인정보를 저장하고 있는 물리적 장치의 결함으로 인한 데이터 손실의 위험도 효과적으로 줄일 수 있다.
본 발명의 실시예들에 따른 개인정보 이관 시스템은 축적된 방대한 양의 개인정보를 암호화한 후 NoSQL 데이터베이스로 안전하게 이관하는 데에 유용하게 사용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
10: 개인정보 이관 시스템 100: 메인 서버
110: 암호화부 120: 이관부
200: 토큰 서버 300: NoSQL 데이터베이스

Claims (7)

  1. 원문 SAM(Sequential Access Method) 파일에 저장된 복수의 사용자들의 개인정보들을 암호화하여 NoSQL 데이터베이스로 이관하는 개인정보 이관 시스템에 있어서,
    상기 원문 SAM 파일로부터 상기 개인정보들을 독출하고, 설정 파일에 저장된 암호화 정보에 기초하여 상기 개인정보들 중에서 암호화 대상 개인정보들을 선택적으로 출력하는 메인 서버;
    상기 메인 서버로부터 상기 암호화 대상 개인정보들을 수신하고, 상기 암호화 대상 개인정보들 각각과 일대일로 매핑되고, 상기 암호화 대상 개인정보들 각각과 동일한 길이를 가지며 텍스트 포맷을 갖는 토큰들을 생성하여 상기 메인 서버에 제공하는 토큰 서버; 및
    NoSQL 데이터베이스를 포함하고,
    상기 메인 서버는 상기 독출된 개인정보들에서 상기 암호화 대상 개인정보들을 상기 토큰들로 대체하여 상기 복수의 사용자들 각각의 토큰 개인정보들을 생성하고, 상기 토큰 개인정보들을 상기 원문 SAM 파일과 동일한 포맷을 갖는 토큰 SAM 파일로서 저장하고, 상기 토큰 SAM 파일에 저장된 상기 토큰 개인정보들을 로우 단위로 상기 NoSQL 데이터베이스에 저장하고,
    상기 NoSQL 데이터베이스는 HDFS(HADOOP Distributed File System) 상에서 동작하는 HBASE이며,
    상기 원문 SAM 파일은 로우 단위로 상기 복수의 사용자들 각각에 상응하는 제1 내지 제n 개인정보들을 저장하고, 상기 제1 내지 제n 개인정보들은 상기 원문 SAM 파일의 제1 내지 제n 컬럼들에 각각 저장되고,
    상기 설정 파일에 저장되는 상기 암호화 정보는 상기 제1 내지 제n 컬럼들 중에서 암호화를 수행할 컬럼의 번호에 상응하는 암호화 컬럼 번호를 포함하며,
    상기 메인 서버는,
    상기 원문 SAM 파일에 저장된 상기 복수의 사용자들 각각의 상기 제1 내지 제n 개인정보들을 독출하고, 상기 제1 내지 제n 개인정보들 중에서 상기 암호화 컬럼 번호에 상응하는 컬럼에 저장된 개인정보들을 상기 암호화 대상 개인정보들로서 상기 토큰 서버에 제공하고, 상기 제1 내지 제n 개인정보들 중에서 상기 암호화 대상 개인정보들을 상기 토큰 서버로부터 수신되는 상기 토큰들로 대체하여 상기 복수의 사용자들 각각의 제1 내지 제n 토큰 개인정보들로서 생성하고, 상기 제1 내지 제n 토큰 개인정보들을 상기 토큰 SAM 파일로서 저장하는 암호화부; 및
    상기 HBASE에 개인정보 테이블을 생성하고, 상기 토큰 SAM 파일에 저장된 상기 제1 내지 제n 토큰 개인정보들을 로우 단위로 독출하여 풋(put) 객체에 저장하고, 상기 HBASE가 제공하는 풋(Put) 함수를 사용하여 상기 풋 객체에 상응하는 상기 제1 내지 제n 토큰 개인정보들을 상기 개인정보 테이블에 저장하는 이관부를 포함하고,
    상기 암호화부는 상기 원문 SAM 파일에 저장된 상기 제1 내지 제n 개인정보들을 로우 단위로 독출하여 제1 배열에 순차적으로 저장하고, 상기 제1 배열의 사이즈가 미리 정해진 제1 사이즈에 도달할 때마다, 암호화 쓰레드(thread)를 생성하여 상기 암호화 쓰레드에 상기 제1 배열을 제공하고, 새로운 제1 배열에 상기 원문 SAM 파일로부터 로우 단위로 독출되는 상기 제1 내지 제n 개인정보들을 순차적으로 저장하고,
    상기 암호화 쓰레드는 상기 제1 배열에 저장된 상기 제1 내지 제n 개인정보들 중에서 상기 암호화 컬럼 번호에 상응하는 컬럼에 저장된 개인정보들을 독출하여 상기 암호화 대상 개인정보들로서 제2 배열에 저장하고, 상기 제2 배열을 상기 토큰 서버에 제공하고, 상기 토큰 서버로부터 제공되는 상기 토큰들을 제3 배열에 저장하고, 상기 제1 배열에 저장된 상기 제1 내지 제n 개인정보들 중에서 상기 암호화 대상 개인정보들을 상기 제3 배열에 저장된 상기 토큰들로서 대체하여 상기 복수의 사용자들 각각의 상기 제1 내지 제n 토큰 개인정보들을 포함하는 제4 배열을 생성하고, 상기 제4 배열에 저장된 상기 제1 내지 제n 토큰 개인정보들을 상기 토큰 SAM 파일에 기입하며,
    상기 암호화 쓰레드가 복수 개 생성된 경우, 상기 암호화 쓰레드 각각은 먼저 생성된 모든 암호화 쓰레드들이 모두 종료된 이후에 상기 제4 배열에 저장된 상기 제1 내지 제n 토큰 개인정보들을 상기 토큰 SAM 파일에 기입하는 것을 특징으로 하는 개인정보 이관 시스템.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제1 항에 있어서, 상기 이관부는 상기 개인정보 테이블에서 상기 토큰 SAM 파일에 저장된 상기 제1 내지 제n 토큰 개인정보들 각각이 저장될 컬럼 퀄리파이어(column qualifier)의 이름들을 설정하고, 상기 토큰 SAM 파일로부터 상기 제1 내지 제n 토큰 개인정보들을 로우 단위로 독출할 때마다 HashMap 타입의 입력 객체를 생성하고, 상기 독출된 제1 내지 제n 토큰 개인정보들을 상응하는 컬럼 퀄리파이어의 이름들과 연관시켜 키/값 형식으로 상기 입력 객체에 저장하고, 생성된 상기 입력 객체들의 개수가 미리 정해진 풋 사이즈에 도달할 때마다, 이관 쓰레드(thread)를 생성하여 상기 이관 쓰레드에 상기 입력 객체들을 제공하고,
    상기 이관 쓰레드는 상기 입력 객체들에 상응하는 상기 풋(put) 객체들을 생성하고, 상기 입력 객체들 각각에 키/값 형식으로 저장된 상기 제1 내지 제n 토큰 개인정보들을 상응하는 풋(put) 객체에 저장하고, 상기 HBASE가 제공하는 풋(Put) 함수를 사용하여 상기 풋 객체들에 저장된 상기 제1 내지 제n 토큰 개인정보들을 상기 개인정보 테이블에 저장하는 개인정보 이관 시스템.
KR1020150064464A 2015-05-08 2015-05-08 개인정보 이관 시스템 KR101728878B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150064464A KR101728878B1 (ko) 2015-05-08 2015-05-08 개인정보 이관 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150064464A KR101728878B1 (ko) 2015-05-08 2015-05-08 개인정보 이관 시스템

Publications (2)

Publication Number Publication Date
KR20160131622A KR20160131622A (ko) 2016-11-16
KR101728878B1 true KR101728878B1 (ko) 2017-05-02

Family

ID=57541221

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150064464A KR101728878B1 (ko) 2015-05-08 2015-05-08 개인정보 이관 시스템

Country Status (1)

Country Link
KR (1) KR101728878B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200136824A1 (en) * 2018-10-25 2020-04-30 Mastercard International Incorporated Asymmetric encryption scheme for secure data transmission
KR102559290B1 (ko) * 2020-01-06 2023-07-26 주식회사 아미크 하이브리드 클라우드 기반의 실시간 데이터 아카이빙 방법 및 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101330072B1 (ko) * 2013-07-12 2013-11-18 (주)아울시스템즈 데이터베이스 데이터 재저장 방법 및 시스템
JP2014506074A (ja) * 2011-01-12 2014-03-06 ヴァートゥルー コーポレーション 認証された受信者へ暗号データを配信するための方法およびシステム
KR101428648B1 (ko) * 2014-01-29 2014-08-13 (주)케이사인 블록 토큰 기반의 암호화 방법 및 블록 토큰 기반의 복호화 방법
KR101428649B1 (ko) * 2014-03-07 2014-08-13 (주)케이사인 맵 리듀스 기반의 대용량 개인정보 암호화 시스템 및 그의 동작 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014506074A (ja) * 2011-01-12 2014-03-06 ヴァートゥルー コーポレーション 認証された受信者へ暗号データを配信するための方法およびシステム
KR101330072B1 (ko) * 2013-07-12 2013-11-18 (주)아울시스템즈 데이터베이스 데이터 재저장 방법 및 시스템
KR101428648B1 (ko) * 2014-01-29 2014-08-13 (주)케이사인 블록 토큰 기반의 암호화 방법 및 블록 토큰 기반의 복호화 방법
KR101428649B1 (ko) * 2014-03-07 2014-08-13 (주)케이사인 맵 리듀스 기반의 대용량 개인정보 암호화 시스템 및 그의 동작 방법

Also Published As

Publication number Publication date
KR20160131622A (ko) 2016-11-16

Similar Documents

Publication Publication Date Title
US9720943B2 (en) Columnar table data protection
US8332655B2 (en) Method for order invariant correlated encrypting of data and SQL queries for maintaining data privacy and securely resolving customer defects
CN102855448B (zh) 一种字段级数据库加密装置
CN106815528B (zh) 一种文件管理方法及装置、存储设备
CN108829899B (zh) 数据表储存、修改、查询和统计方法
JP2017531263A5 (ko)
US9779220B1 (en) Obscuring data using on-the-fly retokenizable tokens
KR102500497B1 (ko) 블록체인 기반의 접근 제어 장치 및 그 동작 방법
US20170279786A1 (en) Systems and methods to protect sensitive information in data exchange and aggregation
Wang et al. ReRAM-based processing-in-memory architecture for blockchain platforms
CN111008407A (zh) 用于执行虚拟加密操作的加密电路
KR101728878B1 (ko) 개인정보 이관 시스템
US9148410B2 (en) Recording medium storing data processing program, data processing apparatus and data processing system
JP2018160129A (ja) データ生成プログラム、データ生成方法、およびデータ生成装置
KR101428649B1 (ko) 맵 리듀스 기반의 대용량 개인정보 암호화 시스템 및 그의 동작 방법
CN100593788C (zh) 一种通过加密数据文件实现软件保护的方法
TWI452890B (zh) 雲端相簿之圖像混沌加密方法
CN101908361B (zh) 一种u盘私有信息隐藏方法
JP5480828B2 (ja) 秘密ソートシステム、秘密ソート装置、秘密ソート方法、秘密ソートプログラム
KR101936999B1 (ko) 타임스탬프 정보를 이용한 데이터 숨김 방법
Vershinin et al. Associative steganography of text messages
Ferguson et al. Generating randomness
JP2020505835A (ja) データファイリング方法およびシステム
CN111368316B (zh) 文件加解密的方法及装置
CN106485158A (zh) 一种基于hdfs的透明加密方法及系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right