DB와암호화 패턴

10
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 암암 암암 )

description

암호화 솔루션과 DB 변경

Transcript of DB와암호화 패턴

Page 1: 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 모두 지원 )

Page 2: DB와암호화 패턴

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----------------------------------------------

Page 3: DB와암호화 패턴

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. 암호화 데이터에 대한 성능저하 엔코아 제품 중 암호화 필요성 있는 부분 ?

Page 4: DB와암호화 패턴

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

Page 5: DB와암호화 패턴

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 ;/

Page 6: DB와암호화 패턴

6/00

암호화 제품의 방식

필요한 기법

암호화 VIEW 예

SELECT ….. tostdrstax, tostdfinsplamt, bankcd, dbenc.decore (private_no, ‘SCHEMA', ‘ 고객 _TAB', ‘JUMIN' ), ………FROM 고객

Page 7: DB와암호화 패턴

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;

Page 8: DB와암호화 패턴

8/00

암호화 제품의 방식

기본 개념

이름 주민등록번호

홍길동 700718-1030254

이름 # 주민등록번호

홍길동 &6DHF^%DFAERJ$#

암호화 이전 암호화 이후대상 테이블변화 : value and length

VIEW “ 고객”

SELECT 주민번호 FROM 고객 ;

PLUG-IN

SQL 변경 없음 . 사용자는 인식 못함

TABLE “ 고객 _TAB”

UPDATE, INSERT, DELETE 고객 ; VIEW “ 고객” TRIGGER

복호화

암호화

암호화 모듈 OPEN

Page 9: DB와암호화 패턴

9/00

암호화 제품의 방식

기본 개념

SVC( 고객 )

API

AP 변경 필요

API

암호화 모듈이 AP 로 감싸지는 형태

TABLE “ 고객”암호화

복호화

Page 10: DB와암호화 패턴

10/00

지극히 개인적인 경험을 바탕으로 정리한 부분이라 어떤 학술적 정의나암호화 관련 전문가의 정보를 바탕으로 하지 않았음을 알려드립니다 .

중요한 것은 DB 에 어떤 변경이 필요한지에 대한 관점으로만 봐주시기 바랍니다 .