Transcript 경일대학교
경일대학교
DB 개인정보 암호화 개발자교육
2012. 07.
(주)데이타뱅크시스템
즈
XecureDB
암호화 대상 컬럼 및 적용 알고리즘
대상 컬럼
적용 알고리즘
ARIA
적용 암호화 패턴
1자리 이후 암호화
PATTERN1
적용 예시
주민번호 컬럼이 분리되어 있을 경우
컬럼값 예) 1234567 => 1XXXXXX
SQL 적용예) crypto.enc(‘PATTERN1’, 값)
주민번호 컬럼에 ‘-’가 존재하지 않을 경우
주민등록번호
ARIA
7자리 이후 암호화
PATTERN7
컬럼값 예) 1234561234567 =>
1234561XXXXXX
SQL 적용예) crypto.enc(‘PATTERN7’, 값)
주민번호 컬럼에 ‘-’가 존재할 경우
ARIA
8자리 이후 암호화
컬럼값 예) 123456-1234567 =>
PATTERN8
123456-1XXXXXX
SQL 적용예) crypto.enc(‘PATTERN8’, 값)
여권번호
ARIA
운전자면허번호
ARIA
외국인등록번호
ARIA
비밀번호
SHA256
Copyright ⓒ 2012 DATABANK SYSTEMS CO.,LTD., All rights reserved
전체 암호화
NORMAL
7자리 이후 암호화
PATTERN7
7자리 이후 암호화
PATTERN7
모든 자리 단방향 암호화
1
SQL 적용예) crypto.enc(’NORMAL’, 값)
SQL 적용예) crypto.enc(‘PATTERN7’, 값)
SQL 적용예) crypto.enc(‘PATTERN7’, 값)
암호화만 가능하고 복호화는 불가능
SQL 적용예) crypto.hash(6, 값)
XecureDB
암호화 컬럼 자료 크기
대상 컬럼
적용 암호화 패턴
1자리 이후 암호화
PATTERN1
주민등록번호
7자리 이후 암호화
PATTERN7
8자리 이후 암호화
PATTERN8
여권번호
운전자면허번호
외국인등록번호
비밀번호
전체 암호화
NORMAL
전체 암호화
NORMAL
7자리 이후 암호화
PATTERN7
단방향 암호화
Copyright ⓒ 2012 DATABANK SYSTEMS CO.,LTD., All rights reserved
원본크기
변경크기
계산식(DB상에서 실행)
7자리
25자리
SELECT (TRUNC((((TRUNC(대상컬럼원본길이/16,0) + 1) * 16)
+ 4) / 3,0) * 4) + 1 FROM DUAL
13자리
31자리
SELECT (TRUNC((((TRUNC(대상컬럼원본길이/16,0) + 1) * 16)
+ 4) / 3,0) * 4) + 7 FROM DUAL
14자리
32자리
SELECT (TRUNC((((TRUNC(대상컬럼원본길이/16,0) + 1) * 16)
+ 4) / 3,0) * 4) + 8 FROM DUAL
20자리
48자리
SELECT (TRUNC((((TRUNC(대상컬럼원본길이/16,0) + 1) * 16)
+ 4) / 3,0) * 4) FROM DUAL
20자리
48자리
SELECT (TRUNC((((TRUNC(대상컬럼원본길이/16,0) + 1) * 16)
+ 4) / 3,0) * 4) FROM DUAL
13자리
31자리
SELECT (TRUNC((((TRUNC(대상컬럼원본길이/16,0) + 1) * 16)
+ 4) / 3,0) * 4) + 7 FROM DUAL
20자리
44자리
길이에 상관없이 44BYTE
2
XecureDB
암호화 적용 예시
- TEST 테이블 정의(기존)
컬럼명
PK 여부
Data
Data Type
JUMIN1
PK
8001231234567
CHAR(13)
JUMIN2
800123-1234567
VARCHAR2(14)
PASSWD
123456
VARCHAR2(20)
Copyright ⓒ 2012 DATABANK SYSTEMS CO.,LTD., All rights reserved
3
비고
XecureDB
암호화 적용 예시
-
TEST 테이블 정의(암호화 적용후)
컬럼명
PK 여부
Data
Data Type
JUMIN1
PK
8001231AAHkppqUrjFAeYySvduS
Efb8
VARCHAR2(31)
JUMIN2
PASSWD
비고
• Unique, Not Null 제약사항 추가
8001231AAHkppqUrjFAeYySvduSEfb8
VARCHAR2(32)
jZae727K08KaOmKSgOaGzww/X
VqGr/PKEgIMkjrcbJI=
VARCHAR2(44)
• CHAR, NUMBER 컬럼은 암호화 이후에는
VARCHAR2로 변경됨.
• 신규 테이블 생성시에도 개인식별정보(주민등록번호, 여권번호, 운전면허번호, 외국인등록번호) 및 패스워드 컬럼의
Data Type은 반드시 VARCHAR2로 생성하여야 함.
• 테이블 및 뷰에 존재하는 개인식별정보 및 패스워드는 암호화된 값으로 보여짐.
Copyright ⓒ 2012 DATABANK SYSTEMS CO.,LTD., All rights reserved
4
XecureDB
주민등록번호 암/복호화 (Plug-In)
• 주민등록번호 컬럼은 암호화 및 복호화가 가능함.
구분
사용 예시
SELECT CRYPTO.DEC(‘PATTERN7’, JUMIN1_XDB) FROM TEST
SELECT
SELECT * FROM TEST WHERE JUMIN1_XDB = CRYPTO.ENC(‘PATTERN7’, :입력값)
INSERT
INSERT INTO TEST(JUMIN2_XDB) VALUES(CRYPTO.ENC(‘PATTERN8’, :입력값))
UPDATE
UPDATE TEST SET JUMIN1_XDB = CRYPTO.ENC(‘PATTERN7’, :입력값)
Copyright ⓒ 2012 DATABANK SYSTEMS CO.,LTD., All rights reserved
5
XecureDB
패스워드 컬럼 HASH 암호화후 처리 (Plug-In)
• 패스워드 컬럼은 암호화만 가능하며 복호화는 할 수 없음.
구분
사용 예시
SELECT PASSWD_XDB FROM TEST
SELECT
SELECT * FROM TEST WHERE PASSWD_XDB = CRYPTO.HASH(6, :입력값)
INSERT
INSERT INTO TEST(PASSWD_XDB) VALUES(CRYPTO.HASH(6, :입력값))
UPDATE
UPDATE TEST SET PASSWD_XDB = CRYPTO.HASH(6, :입력값)
Copyright ⓒ 2012 DATABANK SYSTEMS CO.,LTD., All rights reserved
6