DBMS_OBFUSCATION_TOOLKIT
DBMS_OBFUSCATION_TOOLKIT 패키지의 기본 개념과 패키지 내의 프러시저와 함수를사용하는 방법을 설명합니다.
개요
DBMS_OBFUSCATION_TOOLKIT은 데이터를 암호화(encryption)하고 복호화(decryption)하는 패키지 입니다. 이 패키지에서는 데이터의 암호화 및 복호화를 위해 DES(Data Encryption Standard) 또는 3DES(Triple DES) 알고리즘을 이용합니다. DES와 3DES 알고리즘은 대칭 키(symmetric key)를 사용하는 알고리즘입니다.
DES
56bits의 키를 사용하는 알고리즘
그동안 널리 사용되어 왔으나 최근에는 보안성이 보장되지 않아 점차 사용 빈도가 줄어들고 있음
대칭 키를 사용하는 알고리즘
3DES
하나의 데이터에 DES 알고리즘을 두 번 내지 세 번 반복하여 적용하는 알고리즘
각각 112(56 * 2)bits와 168(56 * 3)bits 키를 사용
DES 알고리 즘과 마찬가지로 대칭 키를 사용하는 알고리즘
다른 대칭 키를 사용하는 알고리즘에 비해 암호화 및 복호화를 하는 시간이 많이 필요하다는 단점이 있음
이러한 대칭 키를 사용하는 암호화 알고리즘에서는 키를 안전하게 관리하는 것이 무엇보다 중요합니다. 암호화 알고리즘에서 키를 관리하는 방법은 다음과 같습니다.
데이터베이스에 키를 저장하는 방법
특정 테이블의 컬럼에 키를 저장하는 방법입니다. 이때 키를 저장하는 테이블은 암호화된 데이터 컬럼과 같은 테이블일 수도 있고, 다른 테이블일 수도 있습니다. 같은 테이블에 키를 저장하는 경우에는 해당 테이 블 전체에 대한 액세스 특권을 부여하는 대신 뷰 또는 tbPSM 프로그램 등을 통하여 해당 테이블에 액세스해야 합니다.
운영체제 파일에 저장하는 방법
키를 파일에 저장하고, 데이터베이스 내에서 tbPSM 프로그램 등을 통하여 운영체제 파일로부터 키를 읽어 데이터를 암호화하거나 복호화하는 방법입니다. 이때 키를 저장하는 운영체제 파일은 패스워드 파일과 같이 다른 사람이 직접 액세스할 수 없도록 보안을 유지해야 합니다.
사용자가 키를 직접 입력하는 방법
사용자 또는 애플리케이션 프로그램 내에서 필요할 때마다 키를 데이터베이스로 전송하여 암호화 및 복호화를 수행하는 방법입니다. 이 방법은 사용자가 키를 항상 암기하고 있거나 애플리케이션 프로그램 의 소스 내에 키가 포함되어 있어야 합니다. 또한, 키는 네트워크를 통하여 데이터베이스 서버로 전달되므로, 네트워크 보안에도 유의해야 합니다.
프러시저와 함수
본 절에서는 DBMS_OBFUSCATION_TOOLKIT 패키지에서 제공하는 프러시저와 함수를 알파벳 순으로 설명합니다.
DES3DECRYPT
3DES 알고리즘을 이용하여 암호화된 데이터를 복호화하는 프러시저와 함수입니다. 주어진 암호화된 데이 터에 대하여 두 번 또는 세 번의 DES 복호화를 수행할 수 있습니다.
복호화를 위해 주어진 키에 대해 복호화를 두 번 수행합니다면 16bytes(128bits), 세 번을 수행합니다면24bytes(192bits)이어야 하며, 그렇지 않으면 예외 상황이 발생합니다. 디폴트는 두 번의 DES 복호화를 수 행합니다. 암호화된 데이터와 같은 횟수만큼 DES 알고리즘을 수행해야 합니다.
DES3DECRYPT 프러시저와 함수의 세부 내용은 다음과 같습니다.
프로토타입
– 프러시저
– 함수
파라미터
input, input_string
복호화할 데이터
key
복호화하기 위해 주어진 키 값
decrypted_data
복호화된 결과 데이터
which
0이면 DES 복호화를 2번 수행
1이면 DES 복호화를 3번 수행
iv
초기화 벡터
예외 상황
INVALID_ARGUMENT
파라미터 중 하나라도 NULL인 경우
INVALID_INPUT
input_data의 길이가 8의 배수가 아닌 경우
KEY_TOO_SHORT
키 값의 길이가 8보다 작은 경우
INVALID_DES_MODE
which 값이 0 또는 1이 아닌 경우
예제
DES3ENCRYPT
3DES 알고리즘을 이용하여 데이터를 암호화하는 프러시저와 함수입니다. 주어진 데이터에 대하여 두 번 또 는 세 번의 DES 암호화를 수행할 수 있습니다.
암호화를 위해 주어진 키에 대해 암호화를 두 번을 수행합니다면 16bytes(128bits), 세 번을 수행합니다면24bytes(192bits)이어야 하며, 그렇지 않으면 예외 상황이 발생합니다. 디폴트는 두 번의 DES 암호화를 수 행합니다.
DES3ENCRYPT 프러시저와 함수의 세부 내용은 다음과 같습니다.
프로토타입
– 프러시저
– 함수
파라미터
input, input_string
암호화할 데이터
key
암호화하기 위해 주어진 키 값
encrypted_data
암호화된 결과 데이터
which
0이면 DES 암호화를 2번 수행
1이면 DES 암호화를 3번 수행
iv
초기화 벡터
예외 상황
INVALID_ARGUMENT
파라미터 중 하나라도 NULL인 경우
INVALID_INPUT
input_data의 길이가 8의 배수가 아닌 경우
KEY_TOO_SHORT
키 값의 길이가 8보다 작은 경우
INVALID_DES_MODE
which 값이 0 또는 1이 아닌 경우
예제
DES3GETKEY
임의의 값을 입력 값으로 받아 DES3 알고리즘을 위한 키를 생성하는 프러시저와 함수입니다.
DES3GETKEY 프러시저와 함수의 세부 내용은 다음과 같습니다.
프로토타입
– 프러시저
– 함수
파라미터
which
0이면 DES 암호화를 2번 수행
1이면 DES 암호화를 3번 수행
seed
80자 이상의 임의의 값
key
암호화하기 위해 주어진 키 값
예외 상황
NO_SEED
seed의 값이 NULL인 경우
SEED_TOO_SHORT
seed의 길이가 80보다 작은 경우
INVALID_INPUT
which가 NULL인 경우
INVALID_DES_MODE
which의 값이 0 또는 1이 아닌 경우
예제
DESDECRYPT
DES 알고리즘을 이용하여 암호화된 데이터를 복호화하는 프러시저와 함수입니다. 복호화를 위해 주어진 키는 반드시 8bytes(64bits)이어야 하며, 그렇지 않으면 예외 상황이 발생합니다.
DESDECRYPT 프러시저와 함수의 세부 내용은 다음과 같습니다.
프로토타입
– 프러시저
– 함수
파라미터
input, input_string
복호화할 데이터
key
복호화하기 위해 주어진 키 값
decrypted_data
복호화된 결과 데이터
예외 상황
INVALID_ARGUMENT
파라미터 중 하나라도 NULL인 경우
INVALID_INPUT
input_data의 길이가 8의 배수가 아닌 경우
KEY_TOO_SHORT
키 값의 길이가 8보다 작은 경우
예제
DESENCRYPT
DES 알고리즘을 이용하여 데이터를 암호화하는 프러시저와 함수입니다. 암호화를 위해 주어진 키는 반드 시 8bytes(64bits)이어야 하며, 그렇지 않으면 예외 상황이 발생합니다.
DESENCRYPT 프러시저와 함수의 세부 내용은 다음과 같습니다.
프로토타입
– 프러시저
– 함수
파라미터
input, input_string
암호화할 데이터
key
암호화하기 위해 주어진 키 값
encrypted_data
암호화된 결과 데이터
예외 상황
INVALID_ARGUMENT
파라미터 중 하나라도 NULL인 경우
INVALID_INPUT
input_data의 길이가 8의 배수가 아닌 경우
KEY_TOO_SHORT
키 값의 길이가 8보다 작은 경우
예제
DESGETKEY
임의의 값을 입력 값으로 받아 DES 알고리즘을 위한 키를 생성하는 프러시저와 함수입니다.
DESGETKEY 프러시저와 함수의 세부 내용은 다음과 같습니다.
프로토타입
– 프러시저
– 함수
파라미터
seed
80자 이상의 임의의 값
key
암호화하기 위해 주어진 키 값
예외 상황
NO_SEED
seed의 값이 NULL인 경우
SEED_TOO_SHORT
seed의 길이가 80보다 작은 경우
예제
MD5
임의의 값을 입력 값으로 받아 MD5 알고리즘의 checksum을 생성하는 함수입니다.
MD5 프러시저와 함수의 세부 내용은 다음과 같습니다.
프로토타입
– 프러시저
– 함수
파라미터
input
임의의 암호화할 값
checksum
input으로부터 구한 checksum 값
예외 상황
NO_DATA_PASSED
input의 값이 NULL인 경우
Last updated

