DBMS_CRYPTO

개요

DBMS_CRYPTO은 데이터 암복호화 및 인증 등에 쓰이는 해시 알고리즘을 제공하는 패키지입니다. 이 패키지의 암복호화 알고리즘들은 모두 키를 사용하는데, 이와 같이 키를 사용하는 암호화 알고리즘에서는 키를 안전하게 관리하는 것이 무엇보다 중요합니다. 암호화 알고리즘에서 키를 관리하는 방법은DBMS_OBFUSCATION_TOOLKIT을 참고합니다.

해시 알고리즘은 임의의 길이의 데이터를 고정 길이의 해시값으로 변환합니다.

암호화/복호화 알고리즘 및 체인, 패딩

DBMS_CRYPTO은 데이터의 암호화 및 복호화를 위해 DES(Data Encryption Standard), 3DES(Triple DES), AES(Advanced Encryption Standard) 등의 더욱 다양한 알고리즘 및 블록 패딩 방식을 지원하고 있습니다. DBMS_OBFUSCATION_TOOLKIT보다 많은 종류의 알고리즘을 사용하므로, 이 패키지를 사용할 것을 권장합니다.

각 알고리즘, 체인, 패딩 방식은 아래와 같습니다.

  • 알고리즘

알고리즘
키워드
설명

DES

ENCRYPT_DES

  • 64bits의 블록 단위로 나누어 각각을 56bits의 키를 사용하는 알고리즘

  • 그동안 널리 사용되어 왔으나 최근에는 보안성이 보장되지 않아 점차 사용 빈도가 줄어들고 있음

  • 대칭 키를 사용하는 알고리즘

3DES

EN CRYPT_3DES

  • 하나의 데이터에 DES 알고리즘을 두 번 내지 세 번 반 복하여 적용하는 알고리즘

  • 각각 112(56 * 2)bits와 168(56 * 3)bits 키를 사용

  • DES 알고리즘과 마찬가지로 대칭 키를 사용하는 알고리즘

  • 다른 대칭 키를 사용하는 알고리즘에 비해 암호화 및 복호화를 하는 시간이 많이 필요하다는 단점

AES

ENCRYPT_AES

  • 128bits의 블록 단위로 나누어 각각을 128, 192 또는256bits의 키를 사용하는 알고리즘

  • DES 방식보다 강력한 알고리즘으로 설계되었으며, 사실상 암호화표준으로 자리 잡을 것으로 보임

RC4

ENCRYPT_RC4

  • RSA 보안을 위해 로널드 라이베스트가 만든 스트림 암호화 방식으로, 무작위 치환에 기반을 두고 있음

  • 바이트 단위 연산을 하기 때문에 비트 단위 연산을 하는 다른 스트림 암호화에 비해 속도가 빠름

  • SSL/TLS(Secure Sockets Layer / Transport Layer Security) 및 무선랜 표준 IEEE 802.11 WEP(WiredEquivalent Privacy) 프로토콜 등에서 사용됨

ARIA

EN CRYPT_ARIA

  • 대한민국의 국가보안기술연구소에서 개발한 블록 암호화 알고리즘으로, AES처럼 128bits의 블록 단위로 나누어 각각을 128, 192 또는 256bits의 키를 사용함

  • Involutional SPN 구조를 갖기 때문에 경량 환경 및 하 드웨어 구현에 최적화되어 있음

  • 체인(chaining) 방식

체인 방식
키워드
설명

ECB(Electronic Codebook)

CHAIN_ECB

  • 각 원본 데이터 블록들이 각각 별개로 암호화됨

CBC(Cipher Block Chaining)

CHAIN_CBC

  • 현재 블록이 바로 앞에 암호화된 블록의 데이터와 XOR 연산을 거친 후 암호화됨

  • ECB 방식에서처럼 동일한 원본이 있을 경우 동일한 암호문이 생성되는 위험을 방지하기 위함

CFB(Cipher-Feedback)

CHAIN_CFB

  • CBC와 유사하지만, 비트 단위로 암호화하면서 쉬프트시키는 방식으로, 스트림 암호화 방식에 가까움

  • 그러므로 블록 크기보다 작은 단위의 데이터의 암호화 도 가능해

OFB(Output-Feedback)

CHAIN_OFB

  • 블록 암호가 동기화된 스트림 암호처럼 동작하게 함

  • CFB와 유사하지만, 다음 블록을 위한 키배열 조합에 있어서 현재 블록의 암호문이 영향을 끼치지 않으므로, 현재 블록 암호화에서 오류가 발생해도 다음 블록에 영향을 끼치지 않는 장점이 있음

  • 패딩(padding) 방식

패딩 방식
키워드
설명

PKCS5

PAD_PKCS5

  • PKCS #5(Password-Based Cryptography Standard)

  • 표준에 따르는 패딩 방식

NONE

PAD_NONE

  • 패딩을 사용하지 않음

  • 이러할 경우 데이터가 단위 블록의 크기(128bits)의 배수가 아니면 암호화가 불가 능하여 에러를 리턴하므로, 반드시 데이터의 크기를 확인해야 함

ZERO

PAD_ZERO

  • 마지막 블록의 남는 바이트들을 0으로 채움

  • 문자열과 같이 0의 값으로 끝을 체크하는 데이터에만 사용해야 함

해시 알고리즘

DBMS_CRYPTO은 임의의 길이의 데이터를 고정 길이의 해시값으로 변환하는데, 해시값을 만드는 것은 쉽지만, 해시값을 원래의 데이터로 복원하는 일은 지극히 어렵게 함으로써, 데이터의 안전성을 보장합니다.

데이터 변경 여부 체크 및 암호 인증 등 인증(authentication) 작업에 주로 사용됩니다.

MD4, MD5, SHA-1, SHA-2을 통해 더욱 다양한 알고리즘 및 블록 패딩 방식을 지원하고 있습니다. 각 알고리즘은 아래와 같습니다.

알고리즘
키워드
설명

MD5(Message Digest 5)

HASH_MD5

  • 입력 데이터(길이에 상관없는 하나의 메시지)로 부터 128bits 메시지 축약을 만듦으로써 데이터 무결성을 검증하는 데 사용되는 알고리즘

  • MD4의 확장판인데, MD4에 비해 속도가 빠르 지는 않지만, 데이터 보안성에 있어 더 많은 확신을 제공

MD4(Message Digest 4)

HASH_MD4

  • MD4는 MD5의 초기 버전으로서, 입력 데이터 (길이에 상관없는 하나의 메시지)로부터 128bits 메시지 축약을 만듦으로써 데이터 무결성을 검증하는데 사용되는 알고리즘

SHA-1(Secure Hash Algorithm 1)

HASH_SH1

  • SHA는 미국 NIST에 의해 개발된 SHS(Secure Hash Standard) 내에 정의된 알고리즘으로, 길이 264bits 이하의 메시지를 160bits 길이의 축약된 메시지로 만듦

  • MD5보다는 다소 느리지만, 대규모 메시지 요약 들이 폭력적 충돌 및 도치 공격을 받을 때 좀 더 안전하게 지켜줌

SHA-2(Secure Hash Algorithm 2)

HASH_SH256 HASH_SH384 HASH_SH512

  • SHA-2는 SHA-1을 대체하는 해시 암호

  • 해시 함수에서 사용하는 byte 수에 따라, SHA- 224, SHA-256, SHA-384, SHA-512이 있고, Tibero에서는 SHA-256, SHA-384, SHA-512을 지원

프러시저와 함수

본 절에서는 DBMS_CRYPTO 패키지에서 제공하는 프러시저와 함수를 알파벳 순으로 설명합니다.

DECRYPT

사용자가 명시한 암호화 알고리즘 및 체인, 패딩 기법을 이용하여 암호화된 데이터를 복호화하는 함수입니다. 주어진 알고리즘에 맞는 키의 크기와 블록의 크기를 설정해야 올바르게 동작합니다. 알고리즘 각각에 따른 키의 크기와 블록의 크기는 위의 표에 언급되어 있으니 참고합니다.

DECRYPT 프러시저와 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

– 함수

– 프러시저

  • 파라미터

파라미터
설명

dst

복호화된 데이터

src

복호화할 데이터

cipher_type

사용할 암호화 알고리즘, 체인, 패딩 기법

key

복호화하기 위해 주어진 키 값

init_vector

초기화 벡터

NULL이면 0으로 채워진 초기화 벡터를 사용

  • 반환값

복호화된 데이터입니다.

  • 예외 상황

예외 상황
설명

INVALID_ARGUMENT

파라미터 중 하나라도 NULL인 경우

INVALID_NTH_ARGUMENT

cipher_type 값이 잘못 설정된 경우

INVALID_INPUT

input_data의 길이가 8의 배수가 아닌 경우

KEY_TOO_SHORT

키 값의 길이가 필요한 크기보다 작은 경우

  • 예제

ENCRYPT

사용자가 명시한 암호화 알고리즘 및 체인, 패딩 기법을 이용하여 데이터를 암호화하는 함수입니다.

주어진 알고리즘에 맞는 키의 크기와 블록의 크기를 설정해야 올바르게 동작합니다. 알고리즘 각각에 따른키의 크기와 블록의 크기는 위의 표에 언급되어 있으니 참고합니다.

ENCRYPT 프러시저와 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

– 함수

– 프러시저

  • 파라미터

– 함수

파라미터
설명

src

  • 원본 데이터

hash_type

  • 사용할 해시 알고리즘

  • 다음은 사용 가능한 해시함수 알고리즘 상수

  • 프러시저

파라미터
설명

dst

암호화된 데이터

src

암호화할 데이터

cipher_type

사용할 암호화 알고리즘, 체인, 패딩 기법

key

암호화하기 위해 주어진 키 값

init_vector

초기화 벡터 NULL이면 0으로 채워진 초기화 벡터를 사용

  • 반환값

암호화된 데이터입니다.

  • 예외 상황

예외 상황
설명

INVALID_ARGUMENT

파라미터 중 하나라도 NULL인 경우

INVALID_NTH_ARGUMENT

cipher_type 값이 잘못 설정된 경우

INVALID_INPUT

ZERO 패딩 방식일 때 input_data의 길이가 블록 크기의 배수가 아닌 경우

KEY_TOO_SHORT

키 값의 길이가 필요한 크기보다 작은 경우

  • 예제

HASH

사용자가 명시한 알고리즘을 이용하여 임의의 길이의 데이터를 고정길이의 해시값으로 변환하는 함수입니다.

HASH 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

src

원본 데이터

hash_type

사용할 해시 알고리즘

  • 예외 상황

예외 상황
설명

INVALID_ARGUMENT

파라미터 중 하나라도 NULL인 경우

INVALID_NTH_ARGUMENT

hash_type 값이 잘못 설정된 경우

  • 예제

MAC

사용자가 명시한 알고리즘과 임의의 길이의 데이터를 가지고 입력한 KEY에 대해 메시지 인증 코드(Message Authentication Code, 약칭 MAC)를 생성하는 함수입니다.

MAC 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

src

  • 원본 데이터

mac_type

  • 사용할 MAC 알고리즘

  • 다음은 사용 가능한 MAC 함수 알고리즘 상수

key

사용할 KEY 데이터

  • 예외 상황

예외 상황
설명

INVALID_ARGUMENT

파라미터 중 하나라도 NULL인 경우

INVALID_NTH_ARGUMENT

mac_type 값이 잘못 설정된 경우

  • 예제

RANDOMBYTES

사용자가 명시한 크기만큼 임의의 BYTE 데이터를 반환하는 함수입니다.

RANDOMBYTES 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

number_bytes

반환할 임의의 데이터 크기

  • 예제

Last updated