DB와암호화 패턴
-
Upload
kyung-sang-jang -
Category
Documents
-
view
1.286 -
download
5
description
Transcript of DB와암호화 패턴
1/00
암호화란
- 암호화란 주민등록번호 , 계좌번호 , 카드번호 등 외부에 노출이 되면 위험한 정보를 인식할 수 없는 형태로 변경하여 저장하는 것
- 암호화는 복호화를 전제로 함으로 조건을 제공하는 사람은 암호화되지 않은 원래의 정보를 제시하지만 내부적으로는 암호화되어서 비교되어야 함 - 암호화 표준 : DES, MD5, DES3 대개의 경우 이런 암 , 복호 체계는 DES(Data Encryption Standard) MD5(Message Digest 5) DES 가 확장된 DES3(Triple DES) 가 많이 사용되고 있다 . (2004 년 기준 )
Oracle 제공 암호화 ( 이하 oracle9i 기준 ) - Oracle9i New Features 로 암호화 모듈이 제공되기 시작 - 모듈은 stored procedure 인 “ dbms_obfuscation_toolkit package“ 를 이용하여 제시 (DES, MD5, DES3 모두 지원 )
2/00
암호화란
Usage
SQL> create or replace procedure pwd_encdec (pwd varchar2, key varchar2) is 2 vr_inraw raw(128) := utl_raw.cast_to_raw(pwd); 3 vr_keyraw raw(128) := utl_raw.cast_to_raw(key); 4 vr_encraw raw(2048); 5 vr_decraw raw(2048); 6 begin 7 dbms_output.put_line('----------------------------------------------'); 8 dbms_output.put_line('your pwd (converted with to raw type) : ' || utl_raw.cast_to_varchar2(vr_inraw)); 9 dbms_output.put_line('your key (converted with to raw type) : ' || utl_raw.cast_to_varchar2(vr_keyraw)); 10 dbms_output.put_line('----------------------------------------------'); 11 dbms_obfuscation_toolkit.desencrypt( input => vr_inraw, key => vr_keyraw, encrypted_data => vr_encraw); 12 dbms_output.put_line('encrypted hex value : ' || rawtohex(vr_encraw)); 13 dbms_obfuscation_toolkit.desdecrypt( input => vr_encraw, key => vr_keyraw, decrypted_data => vr_decraw); 14 dbms_output.put_line('decrypted pwd : ' || utl_raw.cast_to_varchar2(vr_decraw)); 15 dbms_output.put_line('----------------------------------------------'); 16 end; 17 /
SQL> set serveroutput onSQL> exec pwd_encdec('pwd12345', 'key56789');----------------------------------------------your pwd (converted with to raw type) : pwd12345your key (converted with to raw type) : key56789----------------------------------------------encrypted hex value : 8AE1B93004764662decrypted pwd : pwd12345----------------------------------------------
3/00
암호화 제품의 방식
3rd Party Vendor : 암호화 key 가 data 로 관리되면 안 된다
1. PLUG-IN - 암호화 모듈을 DATA 와 결합 (Tightly Coupled) - Stored Procedure 를 통해 암호화 모듈을 관리 - Database 에 구조적인 변화가 필요
2. API - 암호화 모둘이 application 에 존재 (Loosely Coupled) - AP 소스에서 관리함으로 binary 형태로 존재 ( 노출이 안됨 ) - 관련 프로그램들의 소스 변경이 필요
3. ?
EX. 암호화 데이터에 대한 성능저하 엔코아 제품 중 암호화 필요성 있는 부분 ?
4/00
암호화 제품의 방식
필요한 기법
Instead of Trigger (Oralce8 부터 소개 )
view 에 trigger 를 생성하여 view 의 base table 에 DML 실행
- always a row-level trigger (not statement-level)
- can read OLD and NEW values, but cannot change them
- cannot be conditional
EX. create or replace trigger trg_name WHEN (NEW.NAME IS NOT NULL)
REF. trigger level - Database level - DDL - DML - Instead of
5/00
암호화 제품의 방식
필요한 기법
Instead of Trigger 예
create or replace trigger emp_trg instead of insert on best_mem_view for each rowbegin insert into member values (:new.employee.memid, :new.employee.fname, :new.employee.lname, :new.employee.mem_desc) ; insert into bestmem values (:new.employee.memid, :new.best_point, :new.salary, :new.company_nm) ; end ;/
6/00
암호화 제품의 방식
필요한 기법
암호화 VIEW 예
SELECT ….. tostdrstax, tostdfinsplamt, bankcd, dbenc.decore (private_no, ‘SCHEMA', ‘ 고객 _TAB', ‘JUMIN' ), ………FROM 고객
7/00
암호화 제품의 방식
필요한 기법
암호화 trigger 예DECLARE ….. ePriv EXCEPTION; V_JUMINO VARCHAR2(13);BEGIN if (inserting) then ….. ….. IF :new.JUMIN IS NOT NULL THEN V_JUMINNO := dbenc.encore(:new.private_no,'SCHEMA','TABLENAME',‘JUMIN','INSERT'); END IF; else Raise ePriv; …. elsif (updating) then …. elsif (deleting) then ………..end if;EXCEPTION WHEN … THEN RAISE_APPLICATION_ERROR(-20003, 'IINSERT ERROR');END;
8/00
암호화 제품의 방식
기본 개념
이름 주민등록번호
홍길동 700718-1030254
이름 # 주민등록번호
홍길동 &6DHF^%DFAERJ$#
암호화 이전 암호화 이후대상 테이블변화 : value and length
VIEW “ 고객”
SELECT 주민번호 FROM 고객 ;
PLUG-IN
SQL 변경 없음 . 사용자는 인식 못함
TABLE “ 고객 _TAB”
UPDATE, INSERT, DELETE 고객 ; VIEW “ 고객” TRIGGER
복호화
암호화
암호화 모듈 OPEN
9/00
암호화 제품의 방식
기본 개념
SVC( 고객 )
API
AP 변경 필요
API
암호화 모듈이 AP 로 감싸지는 형태
TABLE “ 고객”암호화
복호화
10/00
끝
지극히 개인적인 경험을 바탕으로 정리한 부분이라 어떤 학술적 정의나암호화 관련 전문가의 정보를 바탕으로 하지 않았음을 알려드립니다 .
중요한 것은 DB 에 어떤 변경이 필요한지에 대한 관점으로만 봐주시기 바랍니다 .