목차 1. 보안지갑 Wallet) Data 암호화 컬럼암호화 Column Encryption) 테이블스페이스암호화 Tablespace Encryption) 암호화 Package DBMS

Similar documents
개발및운영 Tibero DB Link (Tibero To Oracle) - Local 방식

윈백및업그레이드 Tibero Flashback 가이드

개발및운영 Tibero Perl 연동

[JEUS 7] eclipse plug-in 연동 1. 개요 Eclipse 와 JEUS 7 연동시필요한 plug-in 제공및환경설정에관한가이드제공하여 Eclipse 에서 JEUS 7 기동및 종료테스트할수있는방법을기술하였습니다. 2. Plug-in 설치 2.1 [Step

설치및환경설정 Tibero tbprobe 사용법과원격지포트체크

목차 1. 노드매니저종류 Java Type SSH Type 노드설정파일및로깅 nodes.xml jeusnm.properties <servername>.properties...

목차 1. 개요 개요 연동테스트홖경 PowerBuilder Connection Tibero ODBC Driver 설정 PowerBuilder Connection 설정 Tiber

목차 1. TABLE MIGRATOR 란? TABLE MIGRATOR 홖경설정 TABLE MIGRATOR 바이너리 Shell 설정 Migrator.Properterties 파일설정 TAB

튜닝및모니터링 OS 별 TCP Recommend Parameter for WebtoB/JEUS

Linux 권장커널파라미터 1. 커널파라미터별설명및설정방법 1.1 nofile ( max number of open files ) 설명 : 지원되는열린파일수를지정합니다. 기본설정이보통대부분의응용프로그램에대해충분합니다. 이매개 변수에설정된값이너무낮으면파일열기오류, 메모리

설치및환경설정 JEUS Thread State Notify 설정

튜닝및모니터링 Tibero EVENT 가이드

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 1. Tibero 4 설치개요 Install 전 Check 사항 H/W 요구사항 Tibero 4 설치 Tibero 설치폴더생성 Tibero 바이너리압축해제 $T

SSL 접속테스트 본문서에서 WebtoB 가설치된디렉토리는 [WEBTOBDIR] 로표기하겠습니다.. 윈도우계열과리눅스 / 유닉스계열모두명령은동일하므로윈도우를기준으로설명하도록하겠습니다. 1. WebtoB 설정 1.1 Test 용인증서생성 SSL 접속테스트를위해 Webto

설치및홖경설정 Tibero 4 SP1 TAC 설치 - Windows 홖경

목차 1. TAC 구성준비사항 TAC 구성순서 VirtualBox 으로 CentOS 설치 VirtualBox 에서 TAC 구성

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

목차 JEUS JNLP Client Sample 가이드 JNLP 란 JNLP의이점 TEST TEST 환경 TEST Sample sample application 셋팅 (ser

Tina Admin

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

SSL(Secure Socket Layer) 과 TLS(Transport Layer Security) 개요 전자상거래가활발해지면서웹보안이매우중요해지고있으며, 최근정보통신망법의개정으로아무리소상공인이라 도홈페이지운영시개인정보를취급하고있다면아래와같은내용을조치하도록되어있습니다

<4D F736F F D203033C6C4C6BCBCC72DB8AEBFC0B1D7B9E6B9FD2E646F63>

슬라이드 1

Tablespace On-Offline 테이블스페이스 온라인/오프라인

목 차

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

13주-14주proc.PDF

ALTIBASE HDB Patch Notes

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

단계

10.ppt

Oracle Database 10g: Self-Managing Database DB TSC

단계

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

Tibero

Tibero

문서 템플릿

단계

FY2005 LIG

Contents Data Mart 1. 개요 실습방향 테스트위한사전설정 본격실습시작 ) 데이터파일 dd 명령어로 백업수행및유실시키기 ) 장애복구수행 결론...7 페이지 2 / 7

목차 JEUS EJB Session Bean가이드 stateful session bean stateful sample 가이드 sample source 결과확인 http session에

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

Microsoft PowerPoint - 10Àå.ppt

Tina Admin

MySQL-.. 1

Getting Started Guide

untitled

목차 1. 웹서비스의예 테스트환경설치 설치전고려사항 설치할공간확보 테스트환경구축 설치파일준비 설치 Windows에서의설치 Linux 에서

Tina Admin

튜닝및모니터링 HP JVM 튜닝옵션

Oracle 보안 TDE Author 고요한 Creation Date Last Updated Version V2.0 Copyright(C) 2004 Goodus Inc. All Rights Reserved Version 변경일자

.

MS-SQL SERVER 대비 기능

PowerPoint 프레젠테이션

PowerPoint Presentation

강의 개요

슬라이드 1

Tmax

ÃÖÁ¾PDF¿ë

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Microsoft PowerPoint - 6.pptx

목차 1. 환경변수 OS별환경변수설정 ESQL 시작 ESQL 프로그램생성젃차 오라클 Pro*C 젂환 Precompiler 변경 확장자 *.pc를 *.tbc로변경

Tibero

untitled

DocsPin_Korean.pages

개발및운영 Eclipse 를이용한 ANT 활용방법

MySQL-Ch10

Remote UI Guide

PowerPoint 프레젠테이션

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

K7VT2_QIG_v3

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오.

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

歯PLSQL10.PDF

Tibero

Tibero RDBMS

最即時的Sybase ASE Server資料庫診斷工具

PowerPoint 프레젠테이션

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

단계

TITLE

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

오라클 데이터베이스 10g 핵심 요약 노트

DBMS & SQL Server Installation Database Laboratory

Simplify your Job Automatic Storage Management DB TSC

untitled

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

H_AR_ P

Chapter 1

ALTIBASE HDB Patch Notes

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

기술교육 SSL 설정및변환방법

PowerPoint Presentation

Dropbox Forensics

Transcription:

기타지식 Tibero 암호화가이드 2014. 07. 28.

목차 1. 보안지갑 Wallet)... 3 2. Data 암호화... 6 2.1. 컬럼암호화 Column Encryption)... 6 2.2. 테이블스페이스암호화 Tablespace Encryption)... 9 3. 암호화 Package... 11 3.1. DBMS_CRYPTO Package... 11 3.1.1. ENCRYPT... 11 3.1.2. DECRYPT... 12 3.1.3. HASH... 12 3.2. DBMS_OBFUSCATION_TOOLKIT Package... 18 3.2.1. DES3ENCRYPT... 18 3.2.2. DES3DECRYPT... 19 3.2.3. DES3GETKEY... 21 3.2.4. DESENCRYPT... 23 3.2.5. DESDECRYPT... 24 3.2.6. DESGETKEY... 26 4. Utility 접속정보암호화... 27 4.1. tbsql... 28 4.2. tbloader... 29 4.3. tbexport / tbimport... 31 5. 주의사항... 34 5.1. 패치시주의사항... 34 5.2. Windows 사용불가... 35 5.3. 패스워드변경시 Wallet 재생성... 35 6. 기타... 35 2

Tibero 암호화가이드 Tibero 에서는 Data 보안을위해 Tibero 는 Data를암호화하여디스크에저장하는기능을제공하고있다. DBA가암호화할 Data 테이블의컬럼또는테이블스페이스 ) 를지정하면 Tibero 는 Data를저장할때내부적으로암호화하여저장하고검색할때복호화해서보여준다. 이때사용자나애플리케이션프로그램은 Data의암호화여부를고려할필요가없다. 1. 보안지갑 Wallet) Data 암호화기능을사용하기위해서우선보안지갑을생성해야한다. 보안지갑은암호화에사용할마스터키를보 관하고있다. Tibero 는마스터키를이용하여각 Data 를암호화할암호화키를생성하고이암호화키를이용하여 Data 를암호화한다. Tibero 에서제공하는암호화알고리즘및 HASH 알고리즘 암호화 알고리즘 구분 HASH 알고리즘 컬럼 암호화 테이블스페이스 암호화 DBMS_CRYPTO Package 암호화 Package DBMS_OBFUSCATION_TOOLKIT Package AES128 지원 지원 지원 - AES192 지원 지원 지원 - AES256 지원 지원 지원 - SEED - - - - DES 지원 - 지원 지원 3DES168 지원 지원 지원 지원 ARIA128 - - 지원 - ARIA192 - - 지원 - ARIA256 - - 지원 - MD4 - - 지원 - SHA-1 - - 지원 - MD5 - - 지원 지원 ARIA알고리즘은 ARIA128, ARIA192, ARIA256) 은 Tibero 5 SP1에서부터지원 3

암호화키관리를위한보안지갑설정방법 방법 내용 데이터베이스에키를 저장하는방법 - 특정테이블의컬럼에키를 저장하는방법 운영체제파일에저장 하는방법 - 키를파일에저장 사용자가키를직접 입력하는방법 - 사용자가키를입력하거나 어플리케이션내에저장된키를 젂송하여암호화 / 복호화수행 보안지갑설정 -- 보안지갑생성 $ tbwallet_gen [ Tibero Security Wallet Generator ] Enter wallet file name: TBWALLET Enter wallet password: tibero generate wallet success -- 수행한위치에보안지갑생성확인 $ ls -lt -rw-r--r-- 1 tibero5 dba 177 Jul 29 09:33 TBWALLET -- 생성한 Wallet file 경로설정 #-------------------------------------------------------------------------- # # RDBMS initialization parameter # #-------------------------------------------------------------------------- 4

DB_NAME=tibero LISTENER_PORT=8629 CONTROL_FILES="/home/tibero5/database/tibero5/c1.ctl" #CERTIFICATE_FILE="/home/tibero5/config/svr_wallet/tb5.crt" #PRIVKEY_FILE="/home/tibero5/config/svr_wallet/tb5.key" WALLET_FILE="/home/tibero5/TBWALLET" MAX_SESSION_COUNT=20 TOTAL_SHM_SIZE=512M MEMORY_TARGET=1G _USGMT_UNIFORM_EXTSIZE=1024 #-------------------------------------------------------------------------- -- DB 재기동 $ tbdown $ tbboot -- 보안지갑사용 $ tbsql sys/tibero SQL> alter system set encryption wallet open identified by "tibero"; System altered. -- 보안지갑닫기 SQL> alter system set encryption wallet close; System altered. 5

2. Data 암호화 2.1. 컬럼암호화 Column Encryption) - 컬럼암호화는어플리케이션수정없이테이블의특정컬럼의 Data를암호화하여저장하는기능 - 컬럼암호화알고리즘 : DES, 3DES168, AES128, AES192, AES256 - 암호화가능한컬럼의 Data 타입 : CHAR, VARCHAR2, NUMBER, DATE, TIMESTAMP, INTERVAL DAY TO SECOND, INTERVAL YEAR TO MONTH, RAW, NCHAR, NVARCHAR2 - Data backup 시암호화된 Data로저장됨 문법 1) CREATE TABLE TABLE 명 ~~ 컬럼명 ENCRYPT [USING ' 암호화알고리즘명 '] [NO SALT SALT] 2) USING 뒤에암호화알고리즘을작은따옴표와적는방식으로지정, 지정하지않으면기본값은 AES192 3) SALT NO SALT - 보안을강화하는 SALT 기능을사용할지여부를지정, 지정하지않으면기본값은 SALT - SALT 기능은컬럼값이같더라도암호화후의값을다르게생성하여보안을강화 - SALT 기능은같은값을매번다르게암호화하므로해당컬럼에인덱스를생성할수없음 제약사항 - 한테이블에암호화컬럼은여러개지정가능하지맊, 한테이블에는하나의암호화알고리즘만사용가능 - SALT 옵션을사용한암호화컬럼은인덱스생성할수없음 컬럼암호화 1 암호화되지않은 Data 입력 2 Master Key와 Column Key를통한컬럼 Data 암호화 3 암호화된 Data 저장 4 복호화시 Master Key를획득하여 Column Key로해독한 Data 반홖 6

암호화컬럼이있는 Table 생성 -- Sample DATA 생성 SQL> CREATE TABLE TDE_TABLE ID NUMBER, NAME VARCHAR20) ENCRYPT, DAY DATE ENCRYPT ); Table 'TDE_TABLE' created. SQL> insert into TDE_TABLE values 1, 'TIBERO', '2003/05/30'); 1 row inserted. SQL> insert into TDE_TABLE values 2, 'TMAXDATA', '2014/06/02' ); 1 row inserted. SQL> commit; Commit completed. -- 암호화컬럼확인 SQL> select * from USER_ENCRYPTED_COLUMNS where table_name ='TDE_TABLE'; TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SALT ---------- ------------------------ ----------------------------- ---- TDE_TABLE NAME AES 192 bits key YES TDE_TABLE DAY AES 192 bits key YES 2 rows selected. 컬럼암호화예제 -- 암호화되지않는기존컬럼암호화 SQL> alter table TDE_TABLE modify ID ENCRYPT); Table 'TDE_TABLE' altered. SQL> select * from USER_ENCRYPTED_COLUMNS where table_name ='TDE_TABLE'; TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SALT ---------- ------------------------ ----------------------------- ---- TDE_TABLE ID AES 192 bits key YES TDE_TABLE NAME AES 192 bits key YES TDE_TABLE DAY AES 192 bits key YES 3 rows selected. 7

-- 암호화기능비홗성화 SQL> alter table TDE_TABLE modify name DECRYPT ); Table 'TDE_TABLE' altered. SQL> select * from USER_ENCRYPTED_COLUMNS where table_name ='TDE_TABLE'; TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SALT ---------- ------------------------ ----------------------------- ---- TDE_TABLE ID AES 192 bits key YES TDE_TABLE DAY AES 192 bits key YES 2 rows selected. -- 기존테이블에암호화된컬럼추가 SQL> alter table TDE_TABLE add PHONE number ENCRYPT no salt ); Table 'TDE_TABLE' altered. SQL> select * from USER_ENCRYPTED_COLUMNS where table_name ='TDE_TABLE'; TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SALT ---------- ------------------------ ----------------------------- ---- TDE_TABLE ID AES 192 bits key YES TDE_TABLE PHONE AES 192 bits key NO TDE_TABLE DAY AES 192 bits key YES 3 rows selected. -- Index 생성에대한 salt/no salt 변경 SQL> alter table TDE_TABLE modify ID ENCRYPT no salt); Table 'TDE_TABLE' altered. SQL> select * from USER_ENCRYPTED_COLUMNS where table_name ='TDE_TABLE'; TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SALT ---------- ------------------------ ----------------------------- ---- TDE_TABLE ID AES 192 bits key NO TDE_TABLE PHONE AES 192 bits key NO TDE_TABLE DAY AES 192 bits key YES 3 rows selected. -- 암호화알고리즘변경 SQL> ALTER TABLE TDE_TABLE REKEY using '3DES168'; Table 'TDE_TABLE' altered. 8

SQL> select * from USER_ENCRYPTED_COLUMNS where table_name ='TDE_TABLE'; TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SALT ---------- ------------------------ ----------------------------- ---- TDE_TABLE ID 3 Key Triple DES 168 bits key NO TDE_TABLE PHONE 3 Key Triple DES 168 bits key NO TDE_TABLE DAY 3 Key Triple DES 168 bits key YES 3 rows selected. 2.2. 테이블스페이스암호화 Tablespace Encryption) - 테이블스페이스암호화는어플리케이션수정없이테이블스페이스젂체에대해암호화를지정 - 테이블스페이스암호화알고리즘 : 3DES168, AES128, AES192, AES256 - Data backup 시암호화된 Data 로저장됨 문법 - CREATE TABLESPACE TABLESPACE 명 ~~ ENCRYPTION USING ' 암호화알고리즘명 ' DEFAULT STORAGE ENCRYPT); - USING 뒤에암호화알고리즘을작은따옴표와적는방식으로지정, 지정하지않으면기본값은 AES192 제약사항 - 테이블스페이스암호화를사용하려면테이블스페이스생성시암호화를적용 - SYSTEM, UNDO, TEMP 테이블스페이스는암호화지정불가능 테이블스페이스암호화 1 암호화되지않은 Data 입력 2 Master Key와 Column Key를통한테이블스페이스암호화 3 암호화된 Data 저장 4 복호화시 Master Key를획득하여 Tablespace Key로해독한 Data 반홖 9

암호화테이블스페이스생성 -- Tablespace 생성 SQL> CREATE TABLESPACE ENC_TBS DATAFILE 'encd001.dtf' SIZE 50M AUTOEXTEND ON NEXT 1M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ENCRYPTION USING '3DES168' DEFAULT STORAGE ENCRYPT); Tablespace 'ENC_TBS' created. -- Table Sample 생성 SQL> CREATE TABLE TDE_TABLE ID NUMBER, NAME VARCHAR20), DAY DATE )TABLESPACE ENC_TBS; Table 'TDE_TABLE' created. SQL> insert into TDE_TABLE values1, 'TIBERO', '2003/05/30'); 1 row inserted. SQL> insert into TDE_TABLE values2, 'TMAXDATA', '2014/06/02'); 1 row inserted. SQL> commit; Commit completed. -- Tablespace 알고리즘및상태확인 SQL> select ts.ts_id,ts.tablespace_name, en.encryptionalg, en.encryptedts from sys.v$encrypted_tablespaces en, dba_tablespaces ts where en.ts# = ts.ts_id; TS_ID TABLESPACE_NAME ENCRYPTIONALG ENCRYPTEDTS ---------- ---------------------- ------------- ----------- 6 ENC_TBS 3DES168 YES 1 row selected. -- Wallet 이 open 된경우 SQL> select * from TDE_TABLE; ID NAME DAY ---------- -------------------- -------------------------------- 1 TIBERO 2003/05/30 2 TMAXDATA 2014/06/02 2 rows selected. 10

-- Wallet 이 close 된경우 SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE; System altered. SQL> select * from TDE_TABLE; TBR-12073: Wallet is not open. 3. 암호화 Package 3.1. DBMS_CRYPTO Package - Data 암복호화및인증등에쓰이는해시알고리즘을제공하는 Package - 이 Package 의암복호화알고리즘들은모두키를사용 - DBMS_OBFUSCATION_TOOLKIT 보다맋은종류의알고리즘을사용하므로, 이 Package 를사용을권장 - 지원알고리즘 : DES, 3DES, AES, RC4, ARIA, SMS4 3.1.1. ENCRYPT - 사용자가명시한암호화알고리즘및체인, 패딩기법을이용하여 Data 를암호화하는 Function - 반홖값 : 복호화된 Data Prototype DBMS_CRYPTO.ENCRYPT src IN RAW, cipher_type IN PLS_INTEGER, key IN RAW, init_vector IN RAW DEFAULT NULL) RETURN RAW 파라미터 설명 src cipher_type key init_vector 암호화할 Data 사용할암호화알고리즘, 체인, 패딩기법암호화하기위해주어짂키값초기화벡터이다. NULL 이면 0 으로채워짂초기화벡터를사용 예외상황 INVALID_ARGUMENT INVALID_NTH_ARGUMENT 파라미터중하나라도 NULL 인경우 cipher_type 값이잘못설정된경우 설명 11

INVALID_INPUT KEY_TOO_SHORT ZERO 패딩방식일때 input_data 의길이가블록크기의배수가아닌경우 키값의길이가필요한크기보다작은경우 3.1.2. DECRYPT - 사용자가명시한암호화알고리즘및체인, 패딩기법을이용하여암호화된 Data 를복호화하는 Function - 반홖값 : 복호화된 Data Prototype DBMS_CRYPTO.DECRYPT src IN RAW, cipher_type IN PLS_INTEGER, key IN RAW, init_vector IN RAW DEFAULT NULL) RETURN RAW 파라미터 설명 src cipher_type key init_vector 복호화할 Data 사용할암호화알고리즘, 체인, 패딩기법복호화하기위해주어짂키값초기화벡터이다. NULL 이면 0 으로채워짂초기화벡터를사용 예외상황 INVALID_ARGUMENT INVALID_NTH_ARGUMENT INVALID_INPUT KEY_TOO_SHORT 설명파라미터중하나라도 NULL 인경우 cipher_type 값이잘못설정된경우 input_data 의길이가 8 의배수가아닌경우키값의길이가필요한크기보다작은경우 3.1.3. HASH - 사용자가명시한알고리즘을이용하여임의의길이의 Data 를고정길이의해시값으로변홖하는 Function Prototype DBMS_CRYPTO.HASH src IN RAW, hash_type IN PLS_INTEGER) RETURN RAW 12

파라미터 설명 src hash_type 원본 Data 사용할해시알고리즘 예외상황 설명 INVALID_ARGUMENT INVALID_NTH_ARGUMENT 파라미터중하나라도 NULL 인경우 hash_type 값이잘못설정된경우 DES 알고리즘예제 SQL> SET SERVEROUTPUT ON SQL> DECLARE key RAW128); data varchar30); data_raw RAW256); encrypted_data_des RAW256); decrypted_data_des RAW256); iv RAW256); BEGIN key := UTL_RAW.cast_to_raw'MyEncryptionKey123MyEncryptionKey123'); iv := '00000000000000000000000000000000'; data := 'Hello Tibero!'; data_raw := UTL_RAW.CAST_TO_RAW data); dbms_output.put_line'========== DES ENCRYPT/DECRYPT =========='); dbms_output.put_line'source Data : ' data); dbms_output.put_line'source RAW : ' data_raw); /* ENCRYPT */ encrypted_data_des := DBMS_CRYPTO.ENCRYPT src => data_raw, cipher_type => DBMS_CRYPTO.ENCRYPT_DES + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'encrypted Data : ' encrypted_data_des); /* DECRYPT */ decrypted_data_des := DBMS_CRYPTO.DECRYPT src => encrypted_data_des, cipher_type => DBMS_CRYPTO.ENCRYPT_DES + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'decrypted Data : ' decrypted_data_des); dbms_output.put_line'--- Result---- : ' UTL_RAW.CAST_TO_VARCHAR2decrypted_data_des)); END; / PSM completed. 13

-- 결과값 ========== DES ENCRYPT/ DECRYPT ========== Source Data : Hello Tibero! Source RAW : 48656C6C6F2054696265726F21 Encrypted Data : 751E5BE7EE419FACCF008E124225755D Decrypted Data : 48656C6C6F2054696265726F21 --- Result---- : Hello Tibero! 3DES 알고리즘예제 SQL> set serveroutput on SQL> DECLARE key RAW128); data varchar30); data_raw RAW256); encrypted_data_3des RAW256); decrypted_data_3des RAW256); iv RAW256); BEGIN key := UTL_RAW.cast_to_raw'MyEncryptionKey123MyEncryptionKey123'); iv := '00000000000000000000000000000000'; data := 'Hello Tibero!'; data_raw := UTL_RAW.CAST_TO_RAW data); dbms_output.put_line'========== 3DES ENCRYPT/ DECRYPT =========='); dbms_output.put_line'source Data : ' data); dbms_output.put_line'source RAW : ' data_raw); /* ENCRYPT */ encrypted_data_3des := DBMS_CRYPTO.ENCRYPT src => data_raw, cipher_type => DBMS_CRYPTO.ENCRYPT_3DES + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'encrypted Data : ' encrypted_data_3des); /* DECRYPT */ decrypted_data_3des := DBMS_CRYPTO.DECRYPT src => encrypted_data_3des, cipher_type => DBMS_CRYPTO.ENCRYPT_3DES + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'decrypted Data : ' decrypted_data_3des); dbms_output.put_line'--- Result---- : ' UTL_RAW.CAST_TO_VARCHAR2 decrypted_data_3des)); END; / PSM completed. -- 결과값 ========== 3DES ENCRYPT/ DECRYPT ========== Source Data : Hello Tibero! Source RAW : 48656C6C6F2054696265726F21 Encrypted Data : 7851CF1AE54C26FCC03750FC32C45846 Decrypted Data : 48656C6C6F2054696265726F21 --- Result---- : Hello Tibero! 14

AES128 알고리즘예제 SQL> set serveroutput on SQL> DECLARE key RAW128); data varchar30); data_raw RAW256); encrypted_data_aes RAW256); decrypted_data_aes RAW256); iv RAW256); BEGIN key := UTL_RAW.cast_to_raw'MyEncryptionKey123MyEncryptionKey123'); iv := '00000000000000000000000000000000'; data := 'Hello Tibero!'; data_raw := UTL_RAW.CAST_TO_RAW data); dbms_output.put_line'========== AES128 ENCRYPT/ DECRYPT =========='); dbms_output.put_line'source Data : ' data); dbms_output.put_line'source RAW : ' data_raw); /* ENCRYPT */ encrypted_data_aes := DBMS_CRYPTO.ENCRYPT src => data_raw, cipher_type => DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'encrypted Data : ' encrypted_data_aes); /* DECRYPT */ decrypted_data_aes := DBMS_CRYPTO.DECRYPT src => encrypted_data_aes, cipher_type => DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'decrypted Data : ' decrypted_data_aes); dbms_output.put_line'--- Result---- : ' UTL_RAW.CAST_TO_VARCHAR2 decrypted_data_aes)); END; / PSM completed. -- 결과값 ========== AES128 ENCRYPT/ DECRYPT ========== Source Data : Hello Tibero! Source RAW : 48656C6C6F2054696265726F21 Encrypted Data : 768D4A41AC3E028DD35032A00EDEEDEB Decrypted Data : 48656C6C6F2054696265726F21 --- Result---- : Hello Tibero! AES256 알고리즘예제 SQL> set serveroutput on SQL> DECLARE key RAW128); data varchar30); 15

data_raw RAW256); encrypted_data_aes256 RAW256); decrypted_data_aes256 RAW256); iv RAW256); BEGIN key := UTL_RAW.cast_to_raw'MyEncryptionKey123MyEncryptionKey123'); iv := '00000000000000000000000000000000'; data := 'Hello Tibero!'; data_raw := UTL_RAW.CAST_TO_RAW data); dbms_output.put_line'========== AES256 ENCRYPT/ DECRYPT =========='); dbms_output.put_line'source Data : ' data); dbms_output.put_line'source RAW : ' data_raw); /* ENCRYPT */ encrypted_data_aes256 := DBMS_CRYPTO.ENCRYPT src => data_raw, cipher_type => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'encrypted Data : ' encrypted_data_aes256); /* DECRYPT */ decrypted_data_aes256 := DBMS_CRYPTO.DECRYPT src => encrypted_data_aes256, cipher_type => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'decrypted Data : ' decrypted_data_aes256); dbms_output.put_line'--- Result---- : ' UTL_RAW.CAST_TO_VARCHAR2 decrypted_data_aes256)); END; / PSM completed. -- 결과값 ========== AES256 ENCRYPT/ DECRYPT ========== Source Data : Hello Tibero! Source RAW : 48656C6C6F2054696265726F21 Encrypted Data : C8CBE69FF59DD2A4C4BDEC3412D4350E Decrypted Data : 48656C6C6F2054696265726F21 --- Result---- : Hello Tibero! ARIA128 알고리즘예제 SQL> set serveroutput on SQL> DECLARE key RAW128); data varchar30); data_raw RAW256); encrypted_data_aria RAW256); decrypted_data_aria RAW256); iv RAW256); 16

BEGIN key := UTL_RAW.cast_to_raw'MyEncryptionKey123MyEncryptionKey123'); iv := '00000000000000000000000000000000'; data := 'Hello Tibero!'; data_raw := UTL_RAW.CAST_TO_RAW data); dbms_output.put_line'========== ARIA128 ENCRYPT/ DECRYPT =========='); dbms_output.put_line'source Data : ' data); dbms_output.put_line'source RAW : ' data_raw); /* ENCRYPT */ encrypted_data_aria := DBMS_CRYPTO.ENCRYPT src => data_raw, cipher_type => DBMS_CRYPTO.ENCRYPT_ARIA128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'encrypted Data : ' encrypted_data_aria); /* DECRYPT */ decrypted_data_aria := DBMS_CRYPTO.DECRYPT src => encrypted_data_aria, cipher_type => DBMS_CRYPTO.ENCRYPT_ARIA128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'decrypted Data : ' decrypted_data_aria); dbms_output.put_line'--- Result---- : ' UTL_RAW.CAST_TO_VARCHAR2 decrypted_data_aria)); END; / PSM completed. -- 결과값 ========== ARIA128 ENCRYPT/ DECRYPT ========== Source Data : Hello Tibero! Source RAW : 48656C6C6F2054696265726F21 Encrypted Data : FE0D52AA6B5A5A066D7CB0AED84E9E4C Decrypted Data : 48656C6C6F2054696265726F21 --- Result---- : Hello Tibero! ARIA256 알고리즘예제 SQL> set serveroutput on SQL> DECLARE key RAW128); data varchar30); data_raw RAW256); encrypted_data_aria256 RAW256); decrypted_data_aria256 RAW256); iv RAW256); BEGIN key := UTL_RAW.cast_to_raw'MyEncryptionKey123MyEncryptionKey123'); iv := '00000000000000000000000000000000'; data := 'Hello Tibero!'; data_raw := UTL_RAW.CAST_TO_RAW data); dbms_output.put_line'========== ARIA128 ENCRYPT/ DECRYPT =========='); 17

dbms_output.put_line'source Data dbms_output.put_line'source RAW : ' data); : ' data_raw); /* ENCRYPT */ encrypted_data_aria256 := DBMS_CRYPTO.ENCRYPT src => data_raw, cipher_type => DBMS_CRYPTO.ENCRYPT_ARIA256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'encrypted Data : ' encrypted_data_aria256); /* DECRYPT */ decrypted_data_aria256 := DBMS_CRYPTO.DECRYPT src => encrypted_data_aria256, cipher_type => DBMS_CRYPTO.ENCRYPT_ARIA256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, key => key, init_vector => iv); dbms_output.put_line'decrypted Data : ' decrypted_data_aria256); dbms_output.put_line'--- Result---- : ' UTL_RAW.CAST_TO_VARCHAR2 decrypted_data_aria256)); END; / PSM completed. -- 결과값 ========== ARIA128 ENCRYPT/ DECRYPT ========== Source Data : Hello Tibero! Source RAW : 48656C6C6F2054696265726F21 Encrypted Data : 485683A620594895C65C2DCFBCC53BD7 Decrypted Data : 48656C6C6F2054696265726F21 --- Result---- : Hello Tibero! 3.2. DBMS_OBFUSCATION_TOOLKIT Package - Data 를암호화 encryption) 하고복호화 decryption) 하는 Package - 지원알고리즘 : DES, 3DES 3.2.1. DES3ENCRYPT - 3DES 알고리즘을이용하여 Data 를암호화하는 Procedure 와 Function <Prototype> Procedure DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT input IN RAW, key IN RAW, encrypted_data OUT RAW, which IN PLS_INTEGER DEFAULT 0, iv IN RAW DEFAULT NULL ); 18

DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT input_string IN VARCHAR2, key_string IN VARCHAR2, encrypted_string OUT VARCHAR2, which IN PLS_INTEGER DEFAULT 0, iv_string IN VARCHAR2 DEFAULT NULL ); Function DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT input IN RAW, key IN RAW, which IN PLS_INTEGER DEFAULT 0, iv IN RAW DEFAULT NULL ) RETURN RAW; DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT input_string IN VARCHAR2, key_string IN VARCHAR2, which IN PLS_INTEGER DEFAULT 0, iv_string IN VARCHAR2 DEFAULT NULL ) RETURN VARCHAR2; 파라미터 설명 input, input_string key encrypted_data which 암호화할 Data 암호화하기위해주어짂키값암호화된결과 Data - 0 이면 DES 복호화를 2 번수행 iv 초기화벡터이다. - 1 이면 DES 복호화를 3 번수행 예외상황 설명 INVALID_ARGUMENT INVALID_INPUT KEY_TOO_SHORT INVALID_DES_MODE 파라미터중하나라도 NULL인경우 input_data의길이가 8의배수가아닌경우키값의길이가 8보다작은경우 which 값이 0 또는 1이아닌경우 3.2.2. DES3DECRYPT 19

- 사용자가 3DES 알고리즘을이용하여암호화된 Data 를복호화하는 Procedure 와 Function < Prototype > Procedure DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT input IN RAW, key IN RAW, decrypted_data OUT RAW, which IN PLS_INTEGER DEFAULT 0, iv IN RAW DEFAULT NULL ); DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT input_string IN VARCHAR2, key_string IN VARCHAR2, decrypted_string OUT VARCHAR2, which IN PLS_INTEGER DEFAULT 0, iv_string IN VARCHAR2 DEFAULT NULL ); Function DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT input IN RAW, key IN RAW, which IN PLS_INTEGER DEFAULT 0, iv IN RAW DEFAULT NULL ) RETURN RAW; DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT input_string IN VARCHAR2, key_string IN VARCHAR2, which IN PLS_INTEGER DEFAULT 0, iv_string IN VARCHAR2 DEFAULT NULL ) RETURN VARCHAR2; 파라미터 설명 input, input_string key decrypted_data which 복호화할 Data 복호화하기위해주어짂키값복호화된결과 Data - 0 이면 DES 복호화를 2 번수행한다. iv 초기화벡터이다. - 1 이면 DES 복호화를 3 번수행한다. 20

예외상황 설명 INVALID_ARGUMENT INVALID_INPUT KEY_TOO_SHORT INVALID_DES_MODE 파라미터중하나라도 NULL인경우 input_data의길이가 8의배수가아닌경우키값의길이가 8보다작은경우 which 값이 0 또는 1이아닌경우 DES3ENCRYPT/DES3DECRYPT 예제 SQL> set serveroutput on SQL> DECLARE data RAW256); key RAW128); encrypted_data RAW256); decrypted_data RAW256); BEGIN key := UTL_RAW.cast_to_raw'MyEncryptionKey123MyEncryptionKey123'); data := UTL_RAW.CAST_TO_RAW 'Hello Tibero!!!!'); dbms_output.put_line'source data : ' data); /* ENCRYPT */ DBMS_OBFUSCATION_TOOLKIT.DES3Encryptinput => data, key => key, encrypted_data => encrypted_data); dbms_output.put_line'encrypted Data : ' encrypted_data); /* DECRYPT */ data := encrypted_data; DBMS_OBFUSCATION_TOOLKIT.DES3Decryptinput => data, key => key, decrypted_data => decrypted_data); dbms_output.put_line'decrypted Data : ' decrypted_data); dbms_output.put_line'result : ' UTL_RAW.CAST_TO_VARCHAR2 decrypted_data)); END; / PSM completed. -- 결과값 source data : 48656C6C6F2054696265726F21212121 Encrypted Data : 6E4855FBF618093A345186EA182F3A1C Decrypted Data : 48656C6C6F2054696265726F21212121 Result : Hello Tibero!!!! 3.2.3. DES3GETKEY - 임의의값을입력값으로받아 DES3 알고리즘을위한키를생성하는 Procedure 와 Function < Prototype > 21

Procedure DBMS_OBFUSCATION_TOOLKIT.DES3GETKEY which IN PLS_INTEGER DEFAULT 0, seed IN RAW, key OUT RAW ); DBMS_OBFUSCATION_TOOLKIT.DES3GETKEY which IN PLS_INTEGER DEFAULT 0, seed_string IN VARCHAR2, key OUT VARCHAR2 ); Function DBMS_OBFUSCATION_TOOLKIT.DES3GETKEY which IN PLS_INTEGER DEFAULT 0, seed IN RAW ) RETURN RAW; DBMS_OBFUSCATION_TOOLKIT.DES3GETKEY which IN PLS_INTEGER DEFAULT 0, seed_string IN VARCHAR2 ) RETURN VARCHAR2; 파라미터 설명 which - 0 이면 DES 복호화를 2 번수행 - 1 이면 DES 복호화를 3 번수행 seed 80 자이상의임의의값이다. key 암호화하기위해주어짂키값이다. 예외상황 설명 NO_SEED SEED_TOO_SHORT INVALID_INPUT INVALID_DES_MODE seed의값이 NULL인경우 seed의길이가 80보다작은경우 which가 NULL인경우 which의값이 0 또는 1이아닌경우 DES3GETKEY 이용한예제 SQL> CREATE OR REPLACE FUNCTION get_key_des3 RETURN raw 22

AS l_keyr raw255); l_seed varchar2255); l_seedr raw255); BEGIN l_seed := 'UpKYrZHeiooBqkvpJHuImXrLOmVzYhgBhJcNLQL' 'wkkyahkgozknxpdbjcgypgnfpyqobagmtrtjuhxao'; l_seedr := UTL_RAW.CAST_TO_RAWl_seed); DBMS_OBFUSCATION_TOOLKIT.DES3GETKEY -- 0 이면 2 번암호화, 1 이면 3 번암호화 1, seed => l_seedr, key => l_keyr ); RETURN l_keyr; END; / Function 'GET_KEY_DES3' created. SQL> VARIABLE created_key VARCHAR22000); SQL> EXEC :created_key := get_key_des3 PSM completed. SQL> PRINT created_key CREATED_KEY ------------------------------------------------------ BDD9580DD892F6F623ED59B740F54BA6D0E833B13805E4C3 3.2.4. DESENCRYPT - DES 알고리즘을이용하여 Data 를암호화하는 Procedure 와 Function < Prototype > Procedure DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT input IN RAW, key IN RAW, encrypted_data OUT RAW ); DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT input_string IN VARCHAR2, key_string IN VARCHAR2, encrypted_string OUT VARCHAR2 ); 23

Function DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT input IN RAW, key IN RAW ) RETURN RAW; DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT input_string IN VARCHAR2, key_string IN VARCHAR2 ) RETURN VARCHAR2; 파라미터 설명 input, input_string key encrypted_data 암호화할 Data 암호화하기위해주어짂키값 암호화된결과 Data 예외상황 설명 INVALID_ARGUMENT 파라미터중하나라도 NULL 인경우이다. INVALID_INPUT input_data 의길이가 8 의배수가아닌경우이다. KEY_TOO_SHORT 키값의길이가 8 보다작은경우이다. 3.2.5. DESDECRYPT - DES 알고리즘을이용하여암호화된 Data 를복호화하는 Procedure 와 Function < Prototype > Procedure DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT input IN RAW, key IN RAW, decrypted_data OUT RAW ); DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT input_string IN VARCHAR2, 24

); key_string IN VARCHAR2, decrypted_string OUT VARCHAR2 Function DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT input IN RAW, key IN RAW ) RETURN RAW; DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT input_string IN VARCHAR2, key_string IN VARCHAR2 ); RETURN VARCHAR2; 파라미터 설명 input, input_string key decrypted_data 복호화할 Data 복호화하기위해주어짂키값 복호화된결과 Data 예외상황 설명 INVALID_ARGUMENT INVALID_INPUT KEY_TOO_SHORT 파라미터중하나라도 NULL 인경우 input_data 의길이가 8 의배수가아닌경우 키값의길이가 8 보다작은경우 DESENCRYPT/DESDECRYPT 예제 SQL> SET SERVEROUTPUT ON SQL> DECLARE data RAW256); key RAW128); encrypted_data RAW256); decrypted_data RAW256); BEGIN data := UTL_RAW.CAST_TO_RAW 'Hello Tibero!!!!'); key := UTL_RAW.cast_to_raw'MyEncryptionKey123MyEncryptionKey123'); dbms_output.put_line'source data : ' data); /* ENCRYPT */ DBMS_OBFUSCATION_TOOLKIT.DESEncryptinput => data, key => key, encrypted_data => encrypted_data); data := encrypted_data; 25

dbms_output.put_line'encrypted Data : ' encrypted_data); /* DECRYPT */ DBMS_OBFUSCATION_TOOLKIT.DESDecryptinput => data, key => key, decrypted_data => decrypted_data); dbms_output.put_line'decrypted Data : ' decrypted_data); dbms_output.put_line'result : ' UTL_RAW.CAST_TO_VARCHAR2 decrypted_data)); END; / PSM completed. -- 결과값 Source data : 48656C6C6F2054696265726F21212121 Encrypted Data : 751E5BE7EE419FACB0E132F8C91B997A Decrypted Data : 48656C6C6F2054696265726F21212121 Result : Hello Tibero!!!! 3.2.6. DESGETKEY - 임의의값을입력값으로받아 DES 알고리즘을위한키를생성하는 Procedure 와 Function < Prototype > Procedure DBMS_OBFUSCATION_TOOLKIT.DESGETKEY seed IN RAW, key OUT RAW ); DBMS_OBFUSCATION_TOOLKIT.DESGETKEY seed_string IN VARCHAR2, key OUT VARCHAR2 ); Function DBMS_OBFUSCATION_TOOLKIT.DESGETKEY seed IN RAW ) RETURN RAW; DBMS_OBFUSCATION_TOOLKIT.DESGETKEY seed_string IN VARCHAR2 ) RETURN VARCHAR2; 파라미터 설명 seed 80 자이상의임의의값 26

key 암호화하기위해주어짂키값 예외상황 설명 NO_SEED SEED_TOO_SHORT seed 의값이 NULL 인경우 seed 의길이가 80 보다작은경우 DESGETKEY 예제 CREATE OR REPLACE FUNCTION get_key_des RETURN raw AS l_keyr raw255); l_seed varchar2255); l_seedr raw255); BEGIN l_seed := 'UpKYrZHeiooBqkvpJHuImXrLOmVzYhgBhJcNLQL' 'wkkyahkgozknxpdbjcgypgnfpyqobagmtrtjuhxao'; l_seedr := UTL_RAW.CAST_TO_RAWl_seed); DBMS_OBFUSCATION_TOOLKIT.DESGetKey seed => l_seedr, key => l_keyr ); RETURN l_keyr; END; / Function 'GET_KEY_DES' created. SQL> VARIABLE created_key VARCHAR22000); SQL> EXEC :created_key :=get_key_des3 PSM completed. SQL> PRINT created_key CREATED_KEY ------------------------------------------ B0AEE475508C255F 4. Utility 접속정보암호화 27

Tibero 에서지원하는보안지갑을이용하면 Tibero 유틸리티에서 Tibero 접근시접속정보를암호화하여접속할수 있다. 이러한기능은백업이나, 어플리케이션이용시아이디 / 패스워드가노출되는것을막을수있고, 관리자가편리 하게 Tibero 를사용할수있게해준다. 4.1. tbsql tbsql 유틸리티는데이터베이스접속정보를암호화파일 wallet) 로저장하고사용하는기능을제공한다. SAVE CREDENTIAL 명령어맊입력하면홖경변수인 ISQL_WALLET_PATH 에지정한경로의파일에 tbsql 유틸리티에서 접속한데이터베이스의정보를암호화파일로맊들거나다음접속시사용할수있다. tbsql 의접속정보암호화기능 Tibero5 rev. 62562 버젂부터사용가능 DB 패치시 Wallet 파일재생성필요 SAVE CREDENTIAL 명령어 - tbsql 유틸리티의데이터베이스접속정보를암호화하여파일에저장한다. - 문법 : SAVE CREDENTIAL [filename] tbsql 의보안지갑사용설정 - Wallet 파일이저장될디렉토리를생성하고, ISQL_WALLET_PATH 홖경변수를설정한다. -- Wallet 디렉토리생성 $ mkdir -p /home/tibero/wallet $ chown 700 /home/tibero/wallet -- EXPIMP_WALLET 파일홖경변수설정 vi.bash_profile ## 추가부분 ## export ISQL_WALLET_PATH=/home/tibero/wallet/wallet.dat $ source.bash_profile tbsql 의접속정보암호화설정 - tbsql 에접속하여 wallet 을생성하고, Wallet 은 tbsql 에접속한사용자정보 ID/Password) 로생성이된다. 다른사용자가 wallet 파일을사용할수없도록권한을변경한다. -- tbsql Wallet 생성 형식 : tbsql id/password@dbname) $ tbsql sys/tibero@tibero tbsql 5 TmaxData Corporation Copyright c) 2008-. All rights reserved. 28

Connected to Tibero using tibero. SQL> SAVE CREDENTIAL Complete to generate the wallet file. SQL> q Disconnected. -- wallet 파일생성확인및권한변경 $ chmod 600 $ISQL_WALLET_PATH $ ls -alt $ISQL_WALLET_PATH -rw------- 1 tibero dba 32 Aug 4 18:03 /home/tibero/wallet/wallet.dat tbsql 접속정보암호화를설정으로사용자 ID를사용하지않고 tbsql 에접속 - tbsql에서 ID와 Password 없이 tbsql맊입력하여서 DB 에접속되고정상적으로쿼리가수행된다면 wallet 파일이정상적으로동작하는지확인할수있다. -- ID/PASSWD 없이 tbsql 접속 $ tbsql tbsql 5 TmaxData Corporation Copyright c) 2008-. All rights reserved. Connected to Tibero using tibero. SQL> ls user USERNAME -------------------------------------------------------------------------------- SYS SQL> select * from dual; DUMMY ----- X 1 row selected 4.2. tbloader 29

- tbloader 유틸리티는데이터베이스접속정보를암호화파일을이용하여사용하는기능을제공 - tbsql 에서생성한보안지갑 wallet) 을이용해 tbloader 에서 username, password, dbname 을외부로노출하지않고 로딩가능 Tibero 에서 tbloader 의접속정보암호화기능 Tibero5 rev. 68995 부터지원 tbsql Utility 에서맊든암호화파일을이용 4.1. tbsql 참조 ) tbsql 에서만듞 wallet file 과 loader 용 LR_WALLET_FILE 홖경변수설정 - tbloader 는별도의암호화파일을생성하지않고, tbsql 에서생성한암호화파일을사용하여접속정보암호화에 사용한다. tbloader 에서 LR_WALLET_PATH 를 wallet 홖경변수로사용한다. - LR_WALLET_PATH 가지칭하는파일은 tbsql 접속정보암호화파일을이용한다. -- EXPIMP_WALLET 파일홖경변수설정 vi.bash_profile ## 추가부분 ## export LR_WALLET_PATH=/home/tibero/wallet/wallet.dat $ source.bash_profile Test sample 생성 -- Table 생성 $ tbsql SQL> create table LOADER_TEST ORD_ID char4), PROD_ID number ); SQL> q -- Control file 생성 $ vi loader_test.ctl LOAD DATA INFILE './loader_test.dat' LOGFILE './loader_test.log' BADFILE './loader_test.bad' APPEND INTO TABLE LOADER_TEST ORD_ID position01:04),prod_id position12:17)) -- Data 파일생성 vi loader_test.dat n001 100001 30

n002 100012 n003 100123 tbloader 접속정보암호화를설정으로사용자 ID 를사용하지않고 tbloader 에접속 - tbloader 에서 ID 와 Password 없이 tbloader 맊입력하여서 DB 에접속되고정상적으로쿼리가수행된다면 wallet 파일이정상적으로동작하는지확인할수있다. -- ID/PASSWD 없이 tbloader 수행 $ tbloader control=loader_test.ctl tbloader 5 TmaxData Corporation Copyright c) 2008-. All rights reserved. Start loading... Committed and Completed successfully. -- 수행확인 $ tbsql tbsql 5 TmaxData Corporation Copyright c) 2008-. All rights reserved. Connected to Tibero using tibero. SQL> select * from loader_test; ORD_ID PROD_ID ------ ---------- n001 100001 n002 100012 n003 100123 3 rows selected. 4.3. tbexport / tbimport - tbexport/tbimport 유틸리티는데이터베이스접속정보를암호화파일을이용하여사용하는기능을제공 - tbexport/tbimport 암호화설정부분 Tibero5 rev.68194 부터지원 EXPIMP_WALLET 파일은패치변경시재생성필요 tbexport/tbimport 용 EXPIMP_WALLET 홖경변수설정 - tbexport/tbimport 에서는 EXPIMP_WALLET 를 wallet 홖경변수로사용한다. - Wallet 파일이저장될디렉토리가생성되어있지않다면디렉토리를생성하고, tbexport/tbimport 를실행하여 31

wallet 을생성한다. - Wallet 은 tbexport/tbimport 에기재한사용자정보 username/password) 로생성이된다. 다른사용자가 wallet 파일을사용할수없도록권한을변경한다. -- EXPIMP_WALLET 파일홖경변수설정 vi.bash_profile ## 추가부분 ## export EXPIMP_WALLET=/home/tibero/wallet/expimp_wallet.dat $ source.bash_profile -- WALLET 디렉토리생성 $ mkdir -p /home/tibero/wallet -- EXPIMP_WALLET 암호화파일생성 $ tbexport save_credential=$expimp_wallet username=sys password=tibero tbexport tbexport 5.0 S1419) 86310 Copyrightc) 2014 TmaxData, Co., Ltd. All rights reserved Patch files none) Credential saved: /home/tibero/wallet/expimp_wallet.dat -- 파일생성확인 $ ls -al expimp* -rw-r--r-- 1 tibero dba 39 Aug 4 14:38 expimp_wallet.dat -- EXPIMP_WALLET 파일권한변경 $ chmod 600 $EXPIMP_WALLET $ ls -alt $EXPIMP_WALLET -rw------- 1 tibero dba 39 Aug 4 14:38 /home/tibero/wallet/expimp_wallet.dat 암호화파일을이용한 tbexport 예제 - tbexport 에서 ID 와 Password 없이정상적으로수행된다면 wallet 파일이정상적으로동작하는지확인할수있다. -- ID/PASSWD 없이 Export 수행 $ tbexport port=8629 sid=tibero file=exp_full.dat full=y tbexport tbexport 5.0 S1419) 86310 Copyrightc) 2014 TmaxData, Co., Ltd. All rights reserved Patch files none) the entire database: Mon Aug 04 14:41:39 KST 2014 Export character set: MSWIN949 Export national character set: UTF-16 exporting tablespaces 32

exporting roles exporting public synonyms exporting schema: "OUTLN" exporting tables [1] OUTLN.OL$HINTS no rows exported. [0] OUTLN.OL$ no rows exported. exporting indexes exporting constraints exporting schema: "SYSGIS" exporting tables [0] SYSGIS.GEOMETRY_COLUMNS_BASE no rows exported. [1] SYSGIS.SPATIAL_REF_SYS_BASE 1 rows exported. exporting indexes exporting constraints exporting views exporting schema: "TIBERO" exporting sequences exporting tables [1] TIBERO.DEPARTMENTS 8 rows exported. [0] TIBERO.COUNTRIES 4 rows exported. [3] TIBERO.JOBS 12 rows exported. [2] TIBERO.EMPLOYEES 20 rows exported. [0] TIBERO.JOB_GRADES 6 rows exported. [2] TIBERO.LOCATIONS 5 rows exported. [3] TIBERO.REGIONS 4 rows exported. [1] TIBERO.JOB_HISTORY 8 rows exported. exporting indexes exporting constraints exporting views exporting schema: "TIBERO1" exporting constraints exporting referential constraints exporting PSMs Packing the file... Export completed successfully: Mon Aug 04 14:41:49 KST 2014 암호화파일을이용한 tbimport 예제 - tbimport 에서 ID 와 Password 없이정상적으로수행된다면 wallet 파일이정상적으로동작하는지확인할수있다. -- ID/PASSWD 없이 Import 수행 $ls *.dat -rw-r--r-- 1 tibero dba 225280 Aug 4 15:14 exp_full.dat $ tbimport port=8629 sid=tibero file=exp_full.dat user=tibero table=employees tbimport tbimport 5.0 S1419) 86310 Copyrightc) 2014 TmaxData, Co., Ltd. All rights reserved Patch files none) Unpacking the file... Import character set: MSWIN949 the USER: tibero: Mon Aug 04 16:04:21 KST 2014 Import national character set: UTF-16 importing schema: "OUTLN" importing schema: "SYSGIS" importing schema: "TIBERO" importing table "EMPLOYEES" [1] TIBERO.EMPLOYEES 20/20 rows imported. importing index "EMP_EMAIL_UK" importing index "EMP_EMP_ID_PK" importing index "EMP_MANAGER_IX" 33

importing index "EMP_NAME_IX" importing constraint "EMP_EMAIL_UK" importing constraint "EMP_EMP_ID_PK" importing constraint "EMP_HIRE_DATE_NN" importing constraint "EMP_LAST_NAME_NN" importing constraint "EMP_SALARY_MIN" importing schema: "SYSGIS" importing schema: "TIBERO" importing constraint "EMP_DEPT_FK" importing schema: "SYSGIS" importing schema: "TIBERO" importing schema: "SYSGIS" importing schema: "TIBERO" Import completed successfully: Mon Aug 04 16:04:22 KST 2014 5. 주의사항 5.1. 패치시주의사항 문제점 - Wallet 사용을위해 ISQL_WALLET_PATH 홖경변수가적용된상태에서패치를하게되면 system.sh 수행시 아래의내용과같이패스워드를계속물어보는문제가발생된다. $ cd $TB_HOME/scripts $ sh system.sh Enter SYS password: tibero Enter SYSCAT password: syscat Creating the role DBA... Enter Username: sys Enter Password: Create default system users & roles?y/n): y Creating system users & roles... Enter Username: sys Enter Password: 해결방법 - ISQL_WALLET_PATH 홖경변수를 unset 하여홖경변수에서해제한후패치를한다. $ echo $ISQL_WALLET_PATH /home/tibero5/wallet/wallet.dat $ unset ISQL_WALLET_PATH $ echo $ISQL_WALLET_PATH 34

$./system.sh Enter SYS password: tibero Enter SYSCAT password: syscat Creating the role DBA... Create default system users & roles?y/n): y Creating system users & roles... Creating virtual tables1)... Creating virtual tables2)... Granting public access to _VT_DUAL... Creating the system generated sequences... Creating internal dynamic performance views... 5.2. Windows 사용불가 접속정보암호화기능은 windows 에서는사용할수없다. 5.3. 패스워드변경시 Wallet 재생성 접속정보 wallet 에암호화된아이디와패스워드가저장되므로 wallet 에저장된계정의패스워드가변경될때 wallet 을싞규생성해야한다. 6. 기타 컬럼암호화와테이블스페이스암호화차이점 컬럼암호화 - 컬럼암호화는기록시 Data를암호화하여 Buffer Cache의 Data Block에기록 - 컬럼암호화된 DATA 를읽을때 Data Blcok이 Buffer Cache에있거나 Disk에있거나항상복호화과정필요 - DATA BLOCK DUMP 를이용한확인 : 블록덤프 alter system dump ~ ) 사용하여암호화된상태의 Data 확인 테이블스페이스암호화 - Tablespace 암호화방식을사용시 DB Buffer Cache 내에암호화되지않은 DATA 로저장. 이때 Buffer Cache에있는내용을 Disk에기록하는시점에 DBWR 프로세스가이를암호화하여 DATAFILE에기록 - 암호화된 DATA 를읽을때해당 Data Block이 Buffer Cache내에존재하면복호화과정이필요없이바로읽음 - 이미 Disk에기록된내용일읽을때에는 Data Block을 Disk에서 Buffer Cache로올리면서복호화하여 Data 블록에저장 - DATA BLOCK DUMP 를이용한확인 : 블록덤프 alter system dump ~ ) 사용하여암호화되지않은상태의 Data 확인 35

col 0: [17] 0000: 10 04 78 69 EB 52 DF 12 A7 DC 36 48 92 B5 16 2A..xi.R...6H...* col 0: [9] 0000: 08 54 4D 41 58 44 41 54 41.TMAXDATA Data File 에서확인 다음과같이 strings 를이용하여 Data File 내에 TMAXDATA 문자열이암호화되었기때문에더이상존재하지 않음을확인할수있다. $ strings -a usr001.dtf grep 'TMAXDATA' 36

Copyright 2014 TmaxData Co., Ltd. All Rights Reserved. Trademarks Tibero RDBMS is a registered trademark of TmaxData Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Contact Information TmaxData can be contacted at the following addresses to arrange for a consulting team to visit your company and discuss your options. Korea TmaxData Co., Ltd 5, Hwangsaeul-ro 329beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do. South Korea Tel: +82-31-779-7113 Fax: +82-31-779-7119 Email: info@tmax.co.kr Web Korean): http://www.tmaxdata.com Technical Support: http://technet.tmaxsoft.com USA TmaxSoft, Inc. 560 Sylvan Avenue Englewood Cliffs, NJ 07632. U.S.A Tel: +1-201-567-8266 Fax: +1-201-567-7339 Email: info@tmaxsoft.com Web English): http://www.tmaxsoft.com Russia Tmax Russia L.L.C. Grand Setun Plaza, No A204 Gorbunova st.2, Moscow, 121596 Tel: +7495)970-01-35 Email: info.rus@tmaxsoft.com Web Russian): http://ru.tmaxsoft.com Singapore Tmax Singapore Pte. Ltd. 430 Lorong 6, Toa Payoh #10-02, OrangeTee Building. Singapore 319402 Tel: +65-6259-7223 Email: info.sg@tmaxsoft.com United Kingdom TmaxSoft UK Ltd. Surrey House, Suite 221, 34 Eden Street, Kingston-Upon- Thames, KT1 1ER United Kingdom Tel: + 44-0)20-8481-3776 Email: info.uk@tmaxsoft.com Web English): http:/www.tmaxsoft.com Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073 Japan Tel: +81-3-5765-2550 Fax: +81-3-5765-2567 Email: info.jp@tmaxsoft.com Web Japanese): http://www.tmaxsoft.co.jp China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2 North Rd Dong San Huan, Chaoyang District, Beijing, China, 100027. China Tel: +86-10-6410-6145~8 Fax: +86-10-6410-6144 Email: info.cn@tmaxsoft.com Web Chinese): http://www.tmaxsoft.com.cn Brazil TmaxSoft Brazil Avenida Copacabana, 177-3 andar 18 do Forte Empresarial, Alphaville - Barueri, Sao Paulo, SP-Brasil CEP 06472-001 Email: contato.brasil@tmaxsoft.com TD-TRSE-D0728121 37