22
The Technique of Java Programming

오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

Embed Size (px)

Citation preview

Page 1: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

The Technique of Java Programming

Page 2: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

들어가기

이 자료는 교육 등 비영리 목적으로만 사용해야 합니다 !!!!

Page 3: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

만든사람 및 책 소개

• 오라클 SQL과 PL/SQL을 다루는 기술 : 오라클 프로그래밍 , 현장 밀착 입문서는 따로 있다 !

• 홍형경

• 주요 저서 : - 〈뇌를 자극하는 오라클 프로그래밍 SQL&PL/SQL

- Head First 시리즈를 비롯해 다수의 책 번역

Page 4: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

데이터 암호화 , 유틸리티넷째 마당 . 실무 능력을 높이는 오라클 프로그래밍 기법

19장

Page 5: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01 데이터 암호화

유틸리티 프로그램02

데이터 암호화 , 유틸리티 프로그램

Page 6: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

데이터 암호화란 ?

데이터 암호화

● 민감하고 중요한 데이터를 암호화해 테이블에 저장하고 조회 시 복호화 하는 일련의 과정 ● “ 데이터를 암호화할 만한 좋은 이유가 많긴 하지만 , 데이터를 암호화하지 말아야 할 이유도 많다 . 암호화는 모든 보안문제를 해결해 주지 않으며 , 일부는 문제를 더 악화시킬 수 있다”

● 오라클에서는 시스템 패키지를 이용해 암호화 , 복호화 수행

● DBMS_CRYPTO 패키지

사용 전 권한 할당 : grant execute on DBMS_CRYPTO to public;

Page 7: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

암호화 알고리즘

데이터 암호화

● DES (Data Encryption Standard) ● 3DES

● AES (Advanced Encryption Standard)

● RC4 (Advanced Encryption Standard)

● MD5 (Message-Digest algorithm5) 와 MD4

● SHA-1 (Secure Hash Algorithm-1)

● MAC(Message Authentication Code, 메시지인증코드 )

Page 8: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

블록 암호화

데이터 암호화

● 암호화 대상 데이터의 길이가 블록 길이보다 크면 이 데이터를 블록 단위로 잘라

암호화 알고리즘을 적용해 암호화 하는 방식

● ECB (Electric CodeBook)

● CBC (Cipher Block Chaining)

● CFB (Cipher-FeedBack)

● OFB (Output-FeedBack)

● CTR (CounTeR)

Page 9: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

DBMS_CRYPTO 패키지

데이터 암호화

● 암호화 알고리즘 상수

ㆍ ENCRYPT_DES : DES 암호화 알고리즘 . 유효키 길이는 56 비트 .

ㆍ EMCRYPT_3DES_2KEY : DES 알고리즘을 2 키로 3 번 블록을 암호화한다 . 유효키 길이는 112 비트 .

ㆍ ENCRYPT_3DES : DES 알고리즘을 사용해 블록을 3 번 암호화한다 .

ㆍ ENCRYPT_AES128 : AES 블록 암호화로 128 비트 키를 사용한다 .

ㆍ ENCRYPT_AES192 : AES 블록 암호화로 192 비트 키를 사용한다 .

ㆍ ENCRYPT_AES256 : AES 블록 암호화로 256 비트 키를 사용한다 .

ㆍ ENCRYPT_RC4 : 스트림 암호화 방식 . 각 세션에 따라 무작위로 유일한 키를 생성한다 .

Page 10: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

DBMS_CRYPTO 패키지

데이터 암호화

● 블록 암호화 모드 상수

ㆍ CHAIN_ECB : ECB 모드

ㆍ CHAIN_CBC : CBC 모드

ㆍ CHAIN_CFB : CFB 모드

ㆍ CHAIN_OFB : OFB 모드

Page 11: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

DBMS_CRYPTO 패키지

데이터 암호화

● 패딩 관련 상수

ㆍ PAD_PKCS5 : PKCS5( 비밀번호 기반 암호화 표준

Password-based Encryption Standard) 로 이루어진 패딩

ㆍ PAD_NONE : 패딩이 없음을 의미

ㆍ PAD_ZERO : 0 으로 이루어진 패딩

Page 12: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

DBMS_CRYPTO 패키지

데이터 암호화

● 암호화 슈트 관련 상수

ㆍ DES_CBC_PKCS5 : ENCRYPT_DES + CHAIN_CBC + PAD_PKCS5 가 결합된 슈트 .ㆍ DES3_CBC_PKCS5 : ENCRYPT_3DES + CHAIN_CBC + PAD_PKCS5 가 결합된 슈트 .

● 암호화 해시 함수 관련 상수

ㆍ HASH_MD4 : MD4 . 128 비트 해시 .ㆍ HASH_MD5 : MD5. 128 비트 해시 .ㆍ HASH_SH1 : SH1. 160 비트 해시 .

● MAC 함수 관련 상수

ㆍ HMAC_MD5 : 해시값을 검증하기 위해 비밀키를 사용하는 점만 제외하면 MD5 와 같다 . ㆍ HMAC_SH1 : 해시값을 검증하기 위해 비밀키를 사용하는 점만 제외하면 SHA1 과 같다 .

Page 13: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

ENCRYPT 함수

데이터 암호화

● 키와 암호화 대상 데이터를 입력 받아 암호화 한 뒤 그 결과 반환

● 구문

DBMS_CRYPTO.ENCRYPT( src IN RAW, -- 암호화할 대상 데이터 typ IN PLS_INTEGER, -- 암호화에 사용될 슈트 key IN RAW, -- 암호화 키 iv IN RAW DEFAULT NULL ) -- 초기화 벡터 RETURN RAW;

● 암호화 대상이 VARCHAR2 타입이면 AL32UTF8 문자셋의 VARCHAR2 로 변환해야 함

UTL_I18N.STRING_TO_RAW (‘ 입력문자열’ , 'AL32UTF8');

Page 14: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

ENCRYPT 프로시저

데이터 암호화

● ENCRYPT 함수와 같은 기능 , 암호화 결과를 OUT 변수에 담는다

● 구문

DBMS_CRYPTO.ENCRYPT( dst IN OUT NOCOPY BLOB, -- 암호화 결과 src IN BLOB, typ IN PLS_INTEGER, key IN RAW, iv IN RAW DEFAULT NULL);

Page 15: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

ENCRYPT 프로시저

데이터 암호화

● 매개변수가 CLOB 타입인 다른 버전의 프로시저가 있음

DBMS_CRYPTO.ENCRYPT( dst IN OUT NOCOPY BLOB, src IN CLOB CHARACTER SET ANY_CS, typ IN PLS_INTEGER, key IN RAW, iv IN RAW DEFAULT NULL);

Page 16: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

DECRYPT 함수와 DECRYPT 프로시저

데이터 암호화

● 암호화된 데이터를 매개변수로 받아 복호화 수행

● 복호화를 위해서는 암호화 시 사용했던 암호화 키와 슈트를 사용해야 함

● DECRYPT 함수 구문

DBMS_CRYPTO.DECRYPT( src IN RAW, typ IN PLS_INTEGER, key IN RAW, iv IN RAW DEFAULT NULL) RETURN RAW;

● RAW 타입 복호화 결과 ‘ AL32UTF8’ 문자셋의 VARCHAR2 로 변환

UTL_I18N.RAW_TO_CHAR (‘ 입력문자열’ , 'AL32UTF8');

Page 17: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

DECRYPT 함수와 DECRYPT 프로시저

데이터 암호화

● DECRYPT 프로시저 구문

DBMS_CRYPTO.DECRYPT( dst IN OUT NOCOPY BLOB, src IN BLOB, typ IN PLS_INTEGER, key IN RAW, iv IN RAW DEFAULT NULL);

Page 18: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

HASH 함수

데이터 암호화

● MD4, MD5, SHA-1 을 사용해 해시 값을 생성해 반환하는 함수 , 3 가지 버전

DBMS_CRYPTO.HASH( src IN RAW, typ IN PLS_INTEGER) RETURN RAW;  DBMS_CRYPTO. HASH ( src IN BLOB, typ IN PLS_INTEGER) RETURN RAW;  DBMS_CRYPTO. HASH ( src IN CLOB CHARACTER SET ANY_CS, typ IN PLS_INTEGER) RETURN RAW;

Page 19: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

MAC 함수

데이터 암호화

● HASH 함수와 비슷하나 매개변수로 사용할 비밀 키를 더 입력 받는다

DBMS_CRYPTO.MAC ( src IN RAW, typ IN PLS_INTEGER, key IN RAW) RETURN RAW;  DBMS_CRYPTO.MAC ( src IN BLOB, typ IN PLS_INTEGER key IN RAW) RETURN RAW;  DBMS_CRYPTO.MAC ( src IN CLOB CHARACTER SET ANY_CS, typ IN PLS_INTEGER key IN RAW) RETURN RAW;

Page 20: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

RANDOMBYTES 함수

데이터 암호화

● 암호화 요건을 충족시키는 안전한 무작위 난수 바이트 (RAW 타입 ) 값을 반환

● 보통 암호화 키를 생성할 때 사용

● 구문

DBMS_CRYPTO.RANDOMBYTES ( number_bytes IN POSITIVE) -- 생성할 무작위 난수 바이트 수 RETURN RAW;

Page 21: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

01

기타

데이터 암호화

● HASH, MAC 함수는 사용자 아이디와 비밀번호를 체크하는데 주로 사용됨

● 암호화에 있어서는 암호화 키 관리가 핵심임

키를 잃어버리거나 외부 유출 시 암호화된 데이터는 무용지물

● 안전한 키 관리 방법

ㆍ 암호화 키를 관리하는 패키지 생성 후 암호화 키를 패키지 상수로 선언

ㆍ DBMS_DDL.CREATE_WRAPPED 시스템 패키지를 사용해 암호하 키 보관 패키지를

감춘다 해당 패키지 내용을 볼 수 없음

Page 22: 오라클 SQL과 PL/SQL을 다루는 기술 - 19장.데이터 암호화, 유틸리티

02

나만의 유틸리티 프로그램

유틸리티 프로그램

● 지금까지 이 책에서 배운 내용을 토대로 유용하게 사용할 수 있는 유틸리티 프로그램을

작성해 보자 .