데이터베이스 암호화

데이터의 환경, IT 시스템의 계층 구조

데이터의 환경 분석을 위해서는 데이터 처리 방식에 따른 IT시스템 계층 구조에 대한 이해가 필요합니다.

IT시스템을 개념적으로 분리해 본 가상의 계층 구조는 아래와 같습니다.

database_encryption

 

Business Application :작은 단위의 응용 시스템을 묶어 큰 응용 시스템을 형성한 대형 정보 시스템

Web Application : DB 서버 연동을 이용하여 웹을 매개로 사용자에게 정보를 제공함

DBMS Procedure :DB 서버 연동을 이용하여 DB를 데이터 저장고로 사용하는 응용프로그램이 구성됨

DBMS Package :DB 서버 내부의 데이터 처리, DB 서버를 외부에서 활용할 수 있는 연동을 제공함

DBMS Engine : DB 시스템의 핵심 기능으로서 데이터가 DB 내에서 저장되거나 조회됨

Operating System : 서버나 기기를 구동하는 OS, 데이터를 포함한 파일이 물리적으로 저장됨

Network : 네트워크로 연결된 서버, 서버와 사용자 기기 사이에서 데이터가 전송 또는 수신됨

Network 계층의 데이터 암호화

Network 계층에서는 서버와 클라이언트가 서로 교차 연결되어 데이터의 송신과 수신이 이루어집니다. 응용 서버와 DB 서버, 네트워크로 연결된 저장장치와 서버, 서버와 단말 등의 통신도 이에 해당합니다.

공격자는 통신 채널을 도청하여 송수신 데이터를 수집, 데이터를 탈취할 수 있습니다. 이때 데이터를 보호하기 위해 송수신 정보를 아래와 같은 방법으로 암호화합니다.

송신자와 수신자 사이의 통신 채널 자체를 암호화

모든 데이터를 암호화하므로 효율이 떨어질 수 있으나, 송수신 사실까지 감춤으로써 안전성이 높습니다.

송수신되는 데이터 중에서 이미 지정한 정보만을 선택적으로 암호화

꼭 필요한 정보만 암호화함으로써 성능을 개선한 방법입니다. 선택적 암호화 기술이 요구됩니다.

Network 계층에서의 암호화는, 물리적으로 분리되어 있는 송신자와 수신자 사이에서 안전한 암호화를 제공해줄 수 있습니다. 안전한 암호화를 위해서는 송신자와 수신자 사이에서 암호화 키를 안전하게 생성하고 관리해야 합니다.

Operating System 계층의 데이터 암호화

모든 데이터는 컴퓨터에 저장될 때 파일의 형태로 저장됩니다. OS 계층에서의 암호화는 OS가 파일을 저장하는 과정에 암호화 단계를 추가하는 방식입니다.

저장장치에 암호화 기능 탑재

HDD 등의 저장장치가 암호화와 복호화를 자체적으로 수행합니다. 저장되는 모든 파일이 암호화됩니다.

파일 시스템이 암호화와 복호화를 수행

OS 파일 시스템이 암호화를 수행합니다. 저장되는 모든 파일이 암호화됩니다.

특정 파일만 암호화하여 저장

선택적으로 파일을 암호화하여 관리합니다. 디렉토리나 폴더 단위로 암호화도 가능합니다.

OS 계층에서 암호화를 수행하면 DB나 어플리케이션은 암호화 처리를 고려하지 않아도 되므로, 기존 시스템에 적용할 때 번거로운 수정이나 변경이 필요하지 않다는 건 큰 장점입니다. 하지만 대부분의 OS레벨 암호화제품이 암호화 키를 사용자 기기나 서버의 내부에 저장하고,세분화된 보안정책 설정 및 접근제어가 어렵다는 점 등의 한계성이 있습니다.

DBMS Engine 계층의 데이터 암호화

DBMS Engine은 DB 서버의 내부에서 데이터의 입출력과 저장을 관리하는 핵심 모듈입니다. 많은 DBMS 제품들은 자체적으로 암호화 기능을 제공합니다.
DB에 정보를 저장하거나 읽을 때 암호화 적용 전후로 동일한 동작을 하기 때문에, OS 계층 암호화 방법과 마찬가지로 기존 응용 프로그램은 수정할 필요가 없다는 것이 장점입니다.

이러한 특징을 응용 프로그램에 대한 투명성이라 정의해,  TDE Transparent Data Encryption 방식이라 부르기도 합니다.

하지만 대부분의 TDE방식 암호화제품은 복호화된 데이터를 메모리에 두는 등 유출의 위험을 안고 있고 키 관리 측면으로 보더라도 암호화 키가 데이터와 동일 저장소에 있기 때문에 보안적으로 완벽하다 할 수 없습니다.

따라서 DBMS Engine레벨의 암호화제품을 적용하기전 키 관리와 메모리상 복호화데이터 처리 등을 고려해야 합니다.

DBMS Package 계층의 데이터 암호화

DBMS Package 계층에서는 외부 요청을 수신하고 엔진이 처리하도록 지시와 관리가 이루어집니다. 이 계층에서의 암호화는 보다 상위 계층의 어플리케이션은 수정하지 않아도 된다는 장점이 있습니다. DBMS 엔진은 이미 암호화된 데이터를 받고 처리하기 때문에 메모리 보안 위협 문제도 없습니다. 선택적으로 DB 테이블을 지정하여 암호화할 수 있기 때문에 성능면에서도 우수한 방법입니다.

과거에는 DB에 저장되는 데이터 자체가 암호화되기 때문에 검색 인덱스 부재 문제를 단점으로 지적하기도 했으나 현재에는 대부분 암호화기업에서 암호화 데이터에 대해서도 빠른 검색이 가능한 인덱스 생성법을 제공하고 있습니다.

DBMS Package계층 암호화 제품은 데이터가 처리될 때마다 암복호화가 일어나 DB 서버에 부담을 줄 수 있습니다. 따라서 실제 환경에 적용할 때에는 적절한 방법을 선택 적용하여 서버 부담을 줄일 수 있는 방법을 제공해야 합니다.

DBMS Procedure 계층의 데이터 암호화
DBMS Procedure 계층의 소프트웨어는 DBMS의 API를 외부에서 활용합니다.

이 계층에 암호화를 적용하려면, DB 서버와 정보를 주고 받을 때 암호화를 지원하는 별도의 API를 사용하여 암호화를 처리해야합니다. 어플리케이션과 DB 서버와 별도 시스템에 존재한다면 네트워크 계층 암호화를 추가로 적용할 수 있습니다.

기존 DBMS API를 대신해 암호화 API를 호출하여 DBMS Package 계층 암호화가 가지는 모든 장점을 그대로 가지며, 암호화/복호화 연산 처리 부담이 DB 서버에 전가되지 않는다는 장점이 있습니다. 네트워크 환경에서도 네트워크 구간에서 발생하는 보안 위협에 대응할 수 있다는 것도 큰 장점입니다. 하지만 어느 정도의 응용프로그램 수정이 필요하다는 단점이 있습니다.

Web Application 계층의 데이터 암호화

최근 많은 온라인 정보 서비스의 시스템 구성은 예전에 비해 점점 더 복잡해지고 있습니다.
Web 서버, Web Application 서버, DB 서버로 구성되는 multi-tier 구성으로 이루어집니다. Web Application 서버는 Web 서버와 DB 서버를 중개하며 데이터의 흐름을 제어하는 역할을 맡습니다.

DB 서버와 연결하는 부분의 기능은 DBMS Procedure의 어플리케이션과 같은 기능을 수행하기 때문에, 암호화가 이루어지는 위치만 다를 뿐,  이 계층에서의 암호화 방법은 DBMS Procedure 계층 암호화 방법과 동일하며 동일한 장단점을 가집니다.
Business Application 계층의 데이터 암호화
Business Application은 응용 프로그램들을 통합한 거대 시스템인 경우가 많습니다.

내부 데이터 관리를 위해 DBMS를 채용하더라도 저장소를 관리하는 별도의 시스템 형태로 포함되어 있어,
Business Application의 개발자가 DBMS를 직접 호출하거나 이용하는 것이 불가능합니다.
이 계층 암호화를 위해서는 저장소 관리 서브 시스템을 수정하거나 보조 서브 시스템을 추가해야 합니다.

Business Application은 독자의 설계와 구현 원칙에 의해서 복잡하게 구현되므로,
새로운 서브시스템을 추가하고 수정하는 일에 많은 노력과 비용이 소요됩니다.

DBMS Procedure와 Web Application 계층의 방법과 동일하므로 동일한 장단점을 가집니다.