[DB] ORACLE

[ORACLE] DBMS_CRYPTO package 단방향 암호화

mewoni 2021. 1. 19. 15:19
반응형

 

* 단방향 암호화

 - password와 같이 특정 컬럼에 암호화(encryption)하며, 복호화(description)이 필요 없는 단방향성 암호화 기법

 - 암호화만 가능하며 입력한 password에 대해 암호화 루틴을 거쳐 암호화된 값과 일쳐여부를 판별. 복호화 과정은 없음.

 - password 분실 시 복호화하여 알려주는 것이 아니라 reset하여 임의 초기값으로 설정하여 통보.

 

* 필수 조건 

 - encryption의 funtion은 볼수 없어야 함. => wrap으로 처리.

 - Master Key는 보안담당자만 알고 있건, 한번 설정으로 알 필요가 없어야 함.

 - 해당 특정 Application(AP서버에 있는 Application) 만 암호화/복호화를 할 수 있어야 함. Data vault이용(Option)

 - password 분실 시 DBMS_RANDOM을 이용하여 초기화 후, 고객에게 초기화 Password를 알려줌.

 

* 사용방법

 - 10g 부터 지원

 

* function

create or replace funtion tys_encrypt (input_string VARCHAR2) RETURN RAW
IS
 -- select DBMS_CRYPTO.RANDOMBYTES (num_key_bytes) from dual; --> key_bytes_raw
 encrypted_raw RAW (2000);         -- stores encryted binary text
 key_bytes_raw RAW (32) :=
 HEXTORAW('6E266456572A3E4C79D677BAC5144A645DF911CE07F18AEF57C3E8560AE1672');
 encrytion_type PLS_INTEGER := DMBS_CRYPTO.ENCRYPT_AES256 + DMBS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5;
 BEGIN
 encrypted_raw := DBMS_CRYPTO.ENCRYPT
 (src => UTL_I18N.STRING_TO_RAW 9input_string, 'AL32UTF8'),
 typ => encryption_type,
 key => key_bytes_raw);
 
 return encrypted_raw;
 
 END;
 /

 

* wrap

$ wrap iname=TYS_Encrypt.sql

 

 

반응형