보안 제품정보


배치 성능을 고려한 데이터 보호 2010.02.09

암호화 Topology별 성능

데이터베이스를 보호하기 위한 암호화 솔루션을 적용할 때 관리자들이 현실적으로 경험하는 첫 번째 문제는 암호화를 적용한 후 발생할지도 모르는 성능 저하일 것이다. 이번에는 분리된 암호화 H/W를 사용할 때와 DB서버에서 S/W 방식으로 암ㆍ복호화를 처리할 때의 성능상의 장단점을 살펴봄으로써 시스템의 목적에 맞는 의사결정에 도움을 주고자 한다.


암호화 적용시 판단 기준

암호화를 실제로 적용할 때 고려해야 할 많은 기준이 있으나 아래와 같이 크게 두 가지로 나누어 생각해 보고자 한다.

데이터 Granularity(입도 : 粒度)

암호화의 대상이 되는 데이터 저장 단위를 말한다. 테이블의 컬럼 혹은 데이터 파일의 페이지(Ex: 2, 4, 8 KB) 등으로 나눌 수 있다. 페이지 단위의 암호화는 구현 및 관리 체계의 복잡성으로 인하여 Storage 레벨로 구현되며 이로 인해 불필요한 데이터의 암ㆍ복호화에 자원을 소모할 수 있다. 따라서 대개 칼럼을 선별하여 암호화를 진행할 수 있고 UI 및 관리 체계 구축에 용이한 칼럼 단위 암호화가 선호된다.

암호화 Topology : 암호화 서비스가 배치되는 장소에 따른 구분을 말한다.

  • 로컬 암호화
    데이터베이스가 존재하는 서버에서 암호학적 작업이 일어난다. 전용의 가속 칩 등을 활용하여 H/W적으로 구현할 수 있으나 대개 암호화를 담당하는 S/W 모듈 형식으로 설치된다.
  • 원격 암호화
    네트워크 부착 암호화(NAE : Network Attached Encryption)라고도 하며 네트워크에 존재하는 별도의 장비가 암호화 연산을 수행하는 형식이다. 암호화 연산을 위한 장비가 별도로 존재하고 대부분의 작업이 이 장비에서 일어남으로써 H/W 암호화로도 불리며 Network Bandwidth가 성능에 큰 영향을 미친다.

암호화 Topology

로컬 암호화

앞에서도 살펴보았지만 암호학적 연산 기능이 구현된 S/W 모듈 형태로 주로 구성되며 데이터베이스와 같은 서버에 설치되어 동작하는 방식을 말한다. S/W 모듈은 Plug-in 등의 여러 다른 이름으로 불리우기도 하며 여기서는 편의를 위하여 모듈이라고 부르기로 한다. 모듈은 일반적으로 아래와 같은 요소로 구성된다.

  • 암호화 구현 라이브러리
    암호화 연산이 구현된 라이브러리, 시스템의 실행 경로에 설치되어 동적으로 호출되는 Shared Library 형태로 구성된다.
  • 사용자 정의 함수(User Defined Function)
    기능을 확장하기 위해 데이터베이스 벤더 별로 독자적으로 정의한 외부 모듈 등록 및 호출 구조, DDL(Data Definition Language)을 통해 데이터베이스에 등록되고 실행 시에 호출됨으로써 암호화 라이브러리 내의 함수를 호출한다. 데이터베이스의 요청을 받아 암호화 구현 라이브러리를 호출하고 결과를 반환하는 역할을 한다.
  • 응용 프로그램 투명성 객체
    암호화에 수반되는 구조 변경으로 인해 응용프로그램이 영향 받는 것을 방지하는 데이터베이스 객체, 암호화 라이브러리 및 사용자 정의 함수를 사용하여 암호화된 테이블은 그 구조가 변경되는 것이 일반적이다. 이러한 구조 변경은 암호화 값이 바이너리 형태로 산출됨에 따른 것으로 문자열 인코딩 등의 추가 작업을 하지 않는 이상 꼭 필요한 과정이다. 이렇게 변경된 구조를 Wrapping함으로써 기존 응용프로그램에게 동일한(투명한) 인터페이스를 제공하기 위해 데이터베이스에 객체 형태로 설치된다. 조회 투명성을 위하여 뷰, 입력/수정/삭제 투명성을 위해 트리거가 주로 사용된다. 그림 1은 로컬 암호화가 적용된 데이터베이스의 일반적인 구조이다.

원격 암호화

네트워크에 설치된 별도의 장비가 암호화를 위한 연산을 담당하며 데이터베이스에서는 이러한 연산을 원격으로 호출하는 방식이다. 주로 다음과 같은 형태로 구성된다.

  • 암호화 장비
    네트워크에 부착되어 암ㆍ복호화 연산을 실제로 수행하는 장비, 네트워크에 부착되어 독자적으로 구성된 프로토콜을 사용하여 데이터베이스와 암ㆍ복호와 요청 및 처리를 위한 통신을 수행한다. 암ㆍ복호화를 위한 키 관리 기능을 필수 요소로 지니고 있으며 PKI Local CA 기능 등 부가적인 보안 기능을 탑재한 제품도 있다.
  • 커넥터(Connector)
    데이터베이스의 암ㆍ복호화 요청을 암호화 장비로 전달하고 이의 결과를 데이터베이스에 반환하는 역할을 하는 구동 S/W, 로컬 암호화를 설명하면서 언급된 데이터베이스 사용자 정의 함수 형태로 구성되며 원격 호출을 위한 네트워크 통신 기능을 포함하고 있다.
  • 응용 프로그램 투명성 객체
    로컬 암호화와 마찬가지로 많은 수의 원격 암호화 제품 들이 암호화 적용시 테이블 구조의 변경을 수반한다. 따라서 변경된 구조에 대해 투명한 접근을 가능하게 투명성 객체(뷰 및 트리거)를 제공하고 있다.
  • 토큰 서버
    테이블 구조의 변경이 원천적으로 불가능하거나 어려운 시스템(예: SAP)에서 암호화를 적용하기 위하여 원래 값(평문)에 대응되는 토큰 값을 생성해주는 원격 서버, 토큰은 평문과 같은 데이터 타입을 가진다. 외부인이 보았을 때 어떤 의미도 찾기 어려운 무작위 값이며 원래의 값을 찾기 위한 대체 값(Delegate) 혹은 참조 값(Reference) 역할을 한다.
    평문을 암호화 장비를 이용하여 암호화한 후 이 암호문을 토큰 값과 함께 토큰 저장소에 저장한다. 복호화시에는 토큰에 대응되는 암호화 값을 찾은 다음 장비를 사용하여 이를 복호화 한 후 데이터베이스 서버로 반환한다.
  • 토큰 저장소
    토큰 서버에서 생성한 토큰 값과 함께 암호화된 데이터가 저장되는 중앙 저장소. 물리적, 기술적 보안이 잘 갖추어진 중앙 저장소에 따로 보관한다. 위에서 살펴본 토큰 서버 및 토큰 저장소는 일반적인 칼럼 단위 암호화를 적용하기 힘든 상황에서 원격 암호화를 적용할 때 부가적으로 구성되는 요소이며 이에 대한 논의는 이번 주제를 넘어서므로 제외하기로 한다. 그림 2는 원격 암호화가 적용된 데이터베이스의 일반적인 구조이다.

Topology 별 성능 비교

앞에서 Topology별로 각각의 특징 및 구성요소를 살펴보았다.

이번에는 이번 연재의 주제인 Topology별 성능을 암ㆍ복호화가 발생하는 운영 환경에 따라 측정해 보고 이를 정리하여 각각의 장단점을 살펴볼 수 있는 근거를 마련해보고자 한다.

OLTP 환경

시스템의 성능을 측정하기 위한 성능 지표에는 여러 가지가 있겠지만 다수의 동시 사용자의 요청을 처리하는 OLTP 시스템의 경우 ‘동시 사용자(Concurrent User)수에 따른 전체 응답(Throughput)수’ 및 이 수치가 저하되기 시작하는 Saturation Point의 도달 시점이 중요한 의미를 지닌다. 따라서 동시 사용자를 늘려가면서 전체 응답 수가 어떻게 변하는지 살펴봄으로써 암호화 Topology에 따른 성능을 비교해 보고자 한다. 먼저 테스트를 위한 기본 사항을 다음과 같이 정의한다.

1. 테스트 테이블

   a. 데이터베이스: MS SQL Server

   b. 테이블 정의

   c. 암호화 컬럼: CCNUM

   d. 레코드 수: 9,950 건

   e. 인덱스: FIRST, LAST 컬럼에 각각 Non-Unique 인덱스 생성

2. 테스트 쿼리

   a. 암호화된 CCNUM 컬럼에 대해 한번의 복호화 연산을 수행하는 쿼리

3. 테스트 시나리오

   a. 2에서 제시된 쿼리를 세션의 개수를 달리하면서 전체 처리량과 분당 처리량을 계산

   b. DB 서버의 CPU 사용량이 100%(Saturation Point) 를 넘어서는 경우까지 부하를 달리함

로컬 암호화 성능

앞에서 제시된 테스트 시나리오를 바탕으로 DTM 툴을 이용하여 테스트를 진행한다.


원격 암호화 성능

로컬 암호화 성능 측정과 동일한 방법으로 세션 증가에 따른 성능을 측정했다.


결론

앞서 살펴본 바와 같이 원격 암호화를 적용할 경우 로컬에서 암호화를 수행하는 것에 비해 Saturation Point에 도달하는 동시 사용자 수를 8% 정도 높일 수 있음을 알 수 있다. 또한 Saturation Point에서의 분당 처리량도 11% 증가하는 것을 알았다.

특이한 점은 동시 사용자가 60개까지는 로컬 암호화의 분당 처리량이 다소 높은 수준을 유지하나 이후부터 역전되어 원격에서 암호화를 처리하는 것이 좀 더 유리함을 알 수 있다. 이는 원격 암호화를 사용함으로써 데이터베이스 서버의 CPU 부하를 경감(Off-loading) 시키는 효과가 발생하기 때문이다.


배치 (Batch) 환경

배치 환경은 단일 세션의 전체 수행 시간, 즉, TAT(Turn Around Time)가 중요한 의미를 지닌다. 대량의 데이터를 추출한 후 이를 적절히 가공하고 다시 적재하는 ETL 작업이 배치 작업의 대표적인 예이며 여기에서는 이런 ETL 작업을 구현한 후 테스트를 진행하고자 한다.

1. 테스트 테이블

   a. 데이터베이스: MS SQL Server

   b. 테이블 정의(111p 참조)

   c. 암호화 컬럼: L_EXTENDEDPRICE

   d. 레코드 수: 200,000 건

   e. 인덱스: 없음(Full Table Scan)

2. ETL 작업 정의

   a. 테이블의 데이터를 추출

      이 때 복호화가 발생함

  b. 추출된 데이터를 파일로 저장

3. 테스트 시나리오

   a. 정의된 ETL 정의를 총 3회 실행하여 평균값으로 비교

로컬 암호화 성능(배치)

3회에 걸쳐 테스트한 결과를 정리하면 표 1과 같다.

원격 암호화 성능(배치)

표 2는 원격 암호화를 적용하여 배치 작업을 3회 실시하였을 때의 결과를 정리한 것이다. 단일 세션을 사용하여 대량의 데이터를 처리하는 배치 작업의 경우 로컬 암호화를 수행하여 Network Latency에 따른 시간 지연을 줄일 수 있다.

전체적인 수행 성능이 원격 암호화에 비해 37% 향상됨을 알 수 있다. 이러한 로컬 암호화를 통한 배치 작업은 CPU를 최대한 활용할 수 있는 유휴 시간에 실행되는 것이 가장 효과적이며 다른 작업과의 CPU 병목이 발생할 경우 전체 수행 성능이 저하될 수 있다.


Encryption Penalty

Encryption Penalty란 암호화 및 복호화를 수행함에 따라 데이터 처리 응답 시간에 발생하는 지연 현상을 말한다. 이러한 Penalty에는 다음과 같은 요소가 복합적으로 작용한다.

  • 암ㆍ복호화 연산 수행 Overhead
  • 사용자 정의 함수 호출 Latency
  • 원격 암겫믄H?요청 Network Latency

위에서 언급한 Encryption Penalty 중 어떠한 요소가 더 크게 작용하느냐에 따라 운영 환경에 적합한 Topology가 결정된다.


결론

본고에서는 상이한 운영 환경(OLTP, Batch)에서 가장 중요한 성능 지표(tpmC, TAT)를 정한 후 암호화 Topology(로컬 암호화, 원격 암호화) 별로 이러한 성능 지표에 어떠한 영향을 미치는지 살펴보았다.

하지만 상호 운용 및 연계성이 중요한 현대의 전산시스템은 주된 업무 환경 이외에도 다양한 부가적인 처리를 요구하는 경우가 많다.

많은 세션이 다량의 트랜잭션을 발생시키는 업무 시간 중에는 원격으로 암호화를 진행하다가 빠른 일 마감이 필요한 시점에 로컬 암호화를 사용하여 Batch 성능을 높일 수 있는 제품이 존재한다면 암호화 제품을 적용하여 데이터베이스를 보호하려는 관리자에게 최적의 솔루션이 될 수 있을 것이다.

<글 : 김상현 세이프넷 PSE(Professional Service Engineering) 팀장(sean.kim@safenet-inc.com)>


[월간 정보보호21c 통권 제113호(info@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>