본문 바로가기

개발&컴퓨터/DB

오라클(Oracle) 데이터베이스 데이터 암호화

반응형

오라클에서는 직접적으로 데이터 암호화와 관련된 툴킷을 제공하며, 다음과 같은 방식으로 사용할 수 있습니다.  

오라클 DB에 DBMS_OBFUSCATION_TOOLKIT을 설치합니다.


1) SYS 권한으로 아래의 스크립트를 실행합니다.

@$ORACLE_HOME/RDBMS/ADMIN/DBMSOBTK.SQL

@$ORACLE_HOME/RDBMS/ADMIN/PRVTOBTK.PLB


2) 툴킷에 접근할 수 있는 권한을 설정합니다.

SQL> GRANT EXECUTE ON DBMS_OBFUSCATION_TOOLKIT TO PUBLIC;

 

툴킷에서 제공되는 함수들은 모두 프로시져(Procedure) 형태로 제공되므로 사용자 정의 저장 프로시져 또는 함수를 만들어서 암호화를 하면 사용하기에 좋습니다.

 

* 암호화 종류

1. DES (Data Encrypt Standard)

DBMS_OBFUSCATION_TOOLKIT.DESEncrypt('암호화할 값', '공개키값') -- 데이터 암호화하기

DBMS_OBFUSCATION_TOOLKIT.DESDecrypt('암호화된 값', '공개키값') -- 암호화된 데이터 복호화하기

 

2. DES3

DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt('암호화할 값', '공개키값') -- 데이터 암호화하기

DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt('암호화된 값', '공개키값') -- 암호화된 데이터 복호화하기

 

3. MD5 (Message Digest Algorithm 5)

 

DBMS_OBFUSCATION_TOOLKIT.MD5('암호화할 값') -- MD5 암호화는 단방향 암호화 방식으로 복호화가 불가능합니다. 그러므로 다시 복원될 필요가 없는 데이터를 관리할 때 사용합니다. (로그인 비밀번호 등)

 

MD5 암호화를 사용할 수 있는 함수 만들기 예제

FUNCTION FUNC_MD5_ENCRYPTION(V_INPUT_STRING IN VARCHAR2) RETURN VARCHAR2
IS
ENCRYPTED_STRING    VARCHAR2(128);

        BEGIN
        IF V_INPUT_STRING IS NOT NULL THEN
                ENCRYPTED_STRING := LOWER(RAWTOHEX(UTL_RAW.CAST_TO_RAW(DBMS_OBFUSCATION_TOOLKIT.MD5(input_string=>V_INPUT_STRING)))); 
        END IF;

 

        RETURN ENCRYPTED_STRING;
 END FUNC_MD5_ENCRYPTION;


위의 함수를 생성하여 사용하면 다음과 같이 호출하여 데이터를 암호화 할 수 있습니다.

VARDATA123 := FUNC_MD5_ENCRYPTION('abc123') -- VARDATA123 이란 변수에 abc123 값을 MD5암호화 적용하여 나온 결과값을 저장.

 

오라클 10G부터는 제공되는 툴킷이 변경되어 DBMS_CRYPTO 툴킷을 사용하여야 하며, 더 다양한 암호화 기능을 제공합니다.

반응형