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