본문 바로가기
Information Security

[DB보안] 암호화의 개념, 종류, 데이터베이스 암호화 방식

by rla124 2024. 5. 28.

백엔드 개발을 시작하면서 Spring Security 등 실제 유저 데이터의 보안을 신경쓰다보니 정보 보안 분야에 관심을 가지게 되었다. 그래서 기말 범위이기도 한 이 부분에 대해 정리하고자 한다.

1. 암호화와 복호화

암호화의 사전적 의미는 "의미를 알 수 없는 형식_암호문_으로 정보를 변환하는 것" == "평문을 암호문으로 변환해 어떤 의미인지 알아채지 못하도록 하는 기술"이다.

 

암호화 복호화
암호 키(특정 비트열)를 사용하여 정보를 암호문으로 변환하는 것 복호 키를 사용하여 원래의 정보를 복원하는 것

 

암호문을 복호화하기 위해서는 제3자에게 알려지지 않도록 주의해야 하는 복호 키를 가지고 있어야 한다. 이 부분이 데이터의 기밀성을 제공한다.

 

암호 체계의 분류는 아래와 같다. 

암호학이라는 분야는 크게 암호 기술암호 분석 두 가지로 나뉜다.

암호 기술에는 대칭 암호, 비대칭 암호, 프로토콜이 있으며

대칭 암호는 블록 단위의 블록 암호화와 비트/바이트 단위의 스트림 암호로 나뉜다.

 

이러한 암호화는 고대 암호의 예라고 할 수 있는 시저 암호에서 시작한다. 시저 암호는 평문으로 사용되는 알파벳을 일정한 문자 수 만큼 평행이동시킴으로써 알파벳 문자를 다른 문자로 치환하는 암호화 기법이다. 이러한 기법을 단일 치환 암호라고 한다. 시저 암호처럼 평문을 구성하는 알파벳을 다른 알파벳으로 변환하는 기법이며 brute force attack, 빈도 분석에 의해 해독이 가능하기 때문에 취약하다. 

이러한 단일 치환 암호의 빈도 분석에 약하다는 맹점을 가진 단점을 극복하기 위해 나온 암호가 다중 치환 암호이다. 평문에 등장하는 문자의 빈도와 암호문에 등장하는 문자의 빈도를 다르게 만드는 암호 알고리즘이다.  

 

간략하게 암호화와 복호화의 역사를 살펴보면 아래와 같다.

대칭 암호 - 암호화 키와 복호화 키가 동일한 암호화 기법
비대칭 암호 - 암호화 키와 복호화 키가 다른 암호화 기법
하이브리드 암호  - 대칭 암호화 비대칭 암호함께 사용
- 대부분의 통신보안 프로토콜에서 사용 

 

 

2. 암호 시스템의 요소 

암호 시스템은 기호적으로 어떻게 표현할 수 있을까

C는 ciphertext, P는 plaintext이다.

C = E_k (P) = E(K, P)는 평문P를 키 K를 이용해서 E암호화하여 C를 만든다는 기호이다.

P = D_k (C) = D(K, P)는 역으로 암호문C를 키 K를 이용해서 D복호화하여 P를 만든다는 뜻이다.

 

3. 대칭 암호화

대칭 암호화 == 관용 암호화 == 비밀키 암호화 == 단일키 암호화 

대칭 암호화는 (암호화 키 = 복호화 키)인 암호화 방식이다. 송신자와 수신자는 안전한 전송 채널을 통해 비밀키를 서로 공유해야 한다. 

 

4. 대칭 암호화 알고리즘

DES(Data Encryption Standard)

지금까지 가장 잘 연구된 대칭 알고리즘이다. 평문을 64비트의 블록으로 나누고 각 블록을 56비트의 키를 이용해 암호문을 생성한다. 

 

- 64비트 크기의 블록 단위로 암호화 수행

- 56비트 크기의 키 이용

- 동일한 연산을 수행하는 16라운드를 이용

- 메인 키에서 유도되는 서로 다른 서브키가 각 라운드에서 사용

 

하지만 이 방법은 brute force attack 전사 공격을 해독이 가능하여 현재 사용하지 않는다. 이를 대체하는 알고리즘으로 3DES와 AES가 있다. 3DES(3중 DES)의 경우 안전하여 오늘날 널리 사용되고 AES(Advanced Encryption Standard)로 대체되었다.

 

Triple-DES(3중 DES)

전사 공격으로 현실적인 시간 내에 해독되는 짧은 키 길이를 가진 DES를 대신하여 트리플 DES가 등장했다. 키 길이를 확장하여 DES를 3중으로 겹치게 한 알고리즘이다. 

평문 → 암호화(K1)  → 복호화(K2)  → 암호화(K3)  → 암호문을 거치며 K1, K2, K3이 다를 경우 56+56+56=168비트의 키를 가지고 K1과 K3이 동일할 경우 56+56=112비트의 키를 가진다.

(단순 DES의 경우 56비트 단일 키였다.)

 

AES(Advanced Encryption Standard)

현재 가장 널리 사용되는 대칭 암호로 DES를 대신한 새로운 표준 대칭 암호 알고리즘이다. 평문을 DES의 2배인 128비트의 블록으로 나누고 각 블록을 AES 알고리즘과 키를 통해 128비트의 암호문을 생성한다. 라운드 수가 10이라면 키 길이는 128비트, 12라운드라면 192비트, 14라운드라면 256비트로 라운드의 수는 선택된 키 길이에 따라 다르며 키 길이가 길수록 보안성은 높지만 암호화 시간이 길어진다. 

 

5. 대칭 암호기술의 단점

키 분배(Key Distribution) 문제 

대칭 암호 사용 시 송신자와 수신자가 대칭키를 사전에 공유해야 한다. 이때 비밀키는 반드시 안전하게 전송이 되어야 하는데(키 사전 공유, 키 배포 센터, Diffie-Hellman, 공개키 암호에 의해 해결 가능), 암호화를 위해 각 사용자별로 개별 키가 필요하기 때문에 관리해야 하는 키의 수가 많아진다는 단점이 있다. 

 

6. 비대칭 암호화 == 공개키 암호화

대칭 암호화와 달리 암호화 키 != 복호화 키인 방법이다.

송신자는 암호화 키(공개키publicKey)로 암호화하고 수신자는 복호화키(개인키privateKey)로 복호화한다. 공개키와 개인키는 한 쌍이며 공개 키로 암호화한 암호문은 그 공개 키의 쌍이 되는 개인 키가 아니면 복호화 할 수 없다. 

 

7. 비대칭 암호화 알고리즘

알고리즘 암호/복호 디지털 서명 키 교환
RSA O O O
Diffie-Hellman X X O
DSS X O X
타원곡선 O O O

 

RSA 알고리즘

지금까지 가장 널리 사용되는 비대칭 암호시스템이다. 

키 쌍 공개키 E, N
개인키 D, N
암호화 암호문 = (평문)^E mod N
복호화 평문 = (암호문)^D mod N

 

타원곡선 암호(ECC)

최근 주목받고 있는 공개키 암호 알고리즘으로 RSA에 비해 작언 사이즈의 키로 높은 성능을 내는 것이 특징이다.


8. 데이터베이스 암호화 방식

암/복호화 모듈 위치와 요청 위치 조합에 따라 데이터 암호화 방식을 구분하면 아래와 같다.

두 가지 이상의 방식을 혼합하여 구현 가능하다. 

DB 서버 암호화
암/복호화 모듈이 DB 서버에 설치되고, DBMS에서 플러그인으로 연결된 암/복호화 모듈을 호출하는 방식
DB 서버 내부
DBMS 자체 암호화
DBMS에 내장되어 있는 암호화 기능(Transparent Data Encryption)을 이용하여 암/복호화를 수행하는 방식
DBMS 암호화 기능 호출
DBMS가 자체적으로 암/복호화 기능을 수행하는 API를 제공하고 해당 함수를 사용하기 위해 응용 프로그램에서 호출하는 방식
응용 프로그램 자체 암호화
암/복호화 모듈이 API 라이브러리 형태로 각 애플리케이션 서버에 설치되고 응용 프로그램에서 암/복호화 모듈을 호출하는 방식
DB 서버 외부
운영체제 암호화
OS에서 발생하는 입출력 시스템 호출을 이용한 암/복호화 방식

 

 

위 암호화 방식 선택 시 고려할 사항은 아래와 같다. 

암호화 방식마다 성능에 미치는 영향이 다르기 때문에 장단점, 제약사항 등을 고려해서 선택해야 한다, 

구현 용이성, 구축 비용, 기술지원 및 유지보수 여부
정보처리시스템/DBMS의 목적 및 환경에 맞게 쉽게 구현이 가능한 암호화 방식을 선택해야 함
일반적 고려사항
암호화 성능 및 안전성
안전한 암호화 알고리즘 사용 및 암호키 관리가 필요
암호화된 개인정보가 유출되더라도 복호화 할 수 없도록 암호키에 대한 추가적인 보안과 허가된 인려그이 접근만 허용하는 기술 적용 권고 
공공기관의 경우 국가정보원 인증 또는 검증 여부
국가정보원의 "DB 암호화 제품의 핵심 보안 요구사항"을 준수한 인증제품 선택
암/복호화 위치(애플리케이션 서버, DB 서버, 파일 서버 등)
암/복호화 모듈의 위치와 암/복호화 요청 위치에 따라 어플리케이션 서버 또는 DB 서버의 성능에 영향을 미칠 수 있음
기술적 고려사항
색인검색 가능 유무, 배치처리 가능 여부