Skip to main content

데이터베이스 보안을 위한 암호화된 데이터 교체 기법 및 시스템

본 포스트는 Pay-metric, inc. 의 System and method for rotating data in a crypto system (2008) 특허에 대한 요약 및 의견입니다.

기존 데이터 교체 서비스는 응용 프로그램과 통합돼 있어 암호 키의 주기적인 변경과 다수 응용 프로그램에 빈번히 적용되기에는 어려움이 있었다. 통용되는 암호 키의 구성과 관리에 다수의 기법 및 절차들이 필요로 했기 때문에 응용사례별로 다수 데이터의 교체 서비스에 대한 별도의 관리가 어려웠다. 또한 암호 키의 구성과 관리를 해야 하는 복잡성으로 인해 암호 키에 대한 정책 변경이 어려웠다. 데이터 교체 서비스의 부하가 시스템 자원을 고갈시켜 응용프로그램 서비스 중단 상태로 만들거나 품질 저하를 일으킬 수 있었다. 암호 키 변경 및 데이터 교체 시에도 응용프로그램이 온라인 상태로 유지시켜 주기 위한 소프트웨어의 제공이 필요하다.


기술 현환

현재 데이터베이스 보안은 암호화 기술과 접근 통제 기술이 주로 사용된다. 암호화 기술은 보안성은 상대적으로 높으나 처리 속도가 늦고 접근 통제 기술은 속도는 빠르나 보안 성이 낮다. 기존의 암호화 기반 데이터베이스는 암호 키를 교체할 때 데이터베이스 서비스를 일시 중단해야 하는 문제점이 있다.


요약

암호화된 데이터를 중앙에서 관리하는 이 기법은 시스템에 저장된 데이터를 구 키를 적용하여 복호화 하고, 새로운 키를 적용하여 암호화 한 다음 데이터를 교제하는 과정을 이루며 이것이 진행되는 동안에도 서비스 중단 없이 가능하다. 암호 시스템은 중앙 데이터 관리와 한 개 또는 다수의 응용 프로그램을 위한 다양한 암호 연산을 수행한다. 암호 시스템은 자체 자원에 의해 암호 기능을 수행하므로, 응용프로그램 자원에 부하를 줄일 수 있다. 또 한 암호시스템은 저장 시스템을 포함하는데 토큰방식(Token mechanism)에 의해 데이터를 제출 및 요청할 수 있다. 성능 균형 및 부하 균형 기능을 지원하고 키 상태 매트릭스, 데이터 사용량 정보, 불필요 데이터 삭제, 보고 및 시스템 이용실태 기록의 기능을 수행할 수 있다.

암호 시스템이 구성된 환경은 암호시스템, 하드웨어로 구성된 암호기, 한 개 또는 다수의 응용프로그램으로 구성된다. 암호 시스템은 암호 데이터베이스, 암호 모듈, 메모리, 저장매체, 한 개 또는 다수의 응용 프로그램 인터페이스와 데이터 교체 서비스를 포함한다. 암호 데이터베이스에는 다수의 활성화된 암호 키에 관한 참조(reference)를 동시에 저장할 수 있다. 암호 키는 정기적으로 변경되기 때문에 암호 시스템은 한 개 또는 다수의 데이터 교체 과정과 활성화된 암호 키의 정책을 정의할 수 있다. 암호모듈의 입력은 평문 형태이며 출력은 암호문 또는 평문이고 응용프로그램 인터페이스를 통해 복수의 응용 프로그램과 연결된다.

토큰방식에서 암호시스템에 데이터를 송신하면 데이터를 암호화하고 데이터베이스에 저장된다. 암호시스템은 토큰을 생성하고 응용프로그램에 그 토큰을 전송하면 응용프로그램은 데이터베이스에 토큰을 저장한다. 변형된 토큰 기반 기법서는 응용프로그램이 데이터 종류에 따라 토큰을 정의하고 토큰과 데이터를 암호화 시스템에 전송하면 암호화 시스템은 이를 암호화하고 정의한 토큰에 생성된 내부참조를 생성한 후 응답하게 된다. 검색 과정은 토큰을 이용해 암호화된 데이터를 검색하고 검색된 데이터를 암호모듈에 의해 복호화한 후 답신할 수 있다. 암호 시스템은 정기적으로 암호 키를 교체하는 작업을 수행한다. 키는 암호모듈에만 저장되고 암호 데이터베이스에는 키 참조가 저장된다.

데이터 교체는 키 교체 작동이 수행될 때 데이터 교체도 동작하게 되는데 연결된 한 개의 컴퓨터 또는 데이터 교체 서비스의 각 인스턴스가 동시에 수행할 수 있다. 구 활성화된 키로 복호화 한 다음, 신 활성화된 키로 암호화되고 저장된 복호키 참조에 의해, 데이터 교체가 종료되지 않은 상태에서도 데이터 요청 응답에 응할 수 있다. 데이터 교체 알고리즘의 입력은 현재 활성화된 암호 키의 참조 등이며 출력은 복호 상태이다. 예비 할당단계에서는 암호 데이터베이스에 저장된 구 데이터를 포함한 구획을 할당하는데 예비, 마지막 할당시간이 기록된다. 검색 시에 예비 할당된 구획 내의 모든 구 데이터를 검색하여 데이터 구조에 저장하고 이 단계에서는 참조 일시를 변경하지 않는다. 복호화 실패 시 집계를 증가하여 기록하고, 확인 시 구획이 여전히 예비할당 되었는지를 확인하고 할당 시간을 갱신한다. 교체 시 구 데이터를 신 데이터로 덮어쓴다. 해제 시 예비할당 구획을 해제하고 출력 시 복호화 실패를 포함한 복호화 상태를 출력한다.

암호화된 데이터 교체가 진행되는 동안에도 데이터베이스 서비스를 지속적으로 제공할 수 있고 중앙 집중적인 방법이기 때문에 대량으로 운영되는 대규모 네트워크에도 응용 될 수 있다. 또한 지불 산업계 표준 PCI DSS(Payment Card Industry Data Security Standard)를 준수하는 데이터 백업 지원 효과도 있다.


결론 및 의견

현재 데이터베이스 보안을 위해 데이터를 암호화하는 방법은 데이터를 통채로 해킹 당한 사례가 발생하고 있는 현재 예전과 다르게 실제 운영하는 서비스에서도 많은 부분 적용하려는 노력을 기울이고 있다. 하지만 이미 서론에서 제기 되었던 키 변경 시 시스템에 야기될 수 있는 서비스의 중단 문제로 최초 암호화 키 설정 후 두 번 다시 바꾸지 않는 시스템도 있고, 조금 보안의식이 강한 시스템 관리자라면 서비스 중단과 품질의 저하도 불사하고 암호화된 데이터의 키를 재설정 하기 위해 많은 노력을 하고 있다.

데이터베이스 보안을 위한 암호화된 데이터 교체 기법에서 제시된 방법을 이용하면 키의 재설정 부담이 줄어드는 것은 사실이다. 하지만 시스템 구성상 암호화 시스템의 보안성 높은 데이터와는 별개로 암호 시스템과 응용프로그램 간의 복호화된 데이터의 전송으로 보안의 취약점을 들어내고 있다.

배포용 프로그램에서 위 시스템을 적용할 경우 응용프로그램과 암호 시스템 사이의 통신은 RFC나 Web Service등을 통해서 가능할 것이지만 실제 통신되는 데이터는 복호화된 데이터 이거나 아직 암호화 되지 않은 데이터 이기 때문에 보안상 취약하다. 만약 이 통신구간에 SSL 같은 보안 채널을 이용한다 하더라도 배포된 응용프로그램의 경우 해킹에 대해 안전할 수 없기 때문에 바람직한 적용 예는 아니라고 생각한다. 따라서 이 시스템은 같은 네트워크 또는 하나의 시스템으로 구성된 서로 신뢰된 서비스에서만 사용하는 것이 바람 직할 것이다.

더 나아가 제안하고 싶은 것은 이 시스템을 신뢰된 서비스 구간에서 적용 하더라도 암호 시스템의 데이터가 취약한 네트워크를 통해 직접적으로 해킹 당했을때 데이터 유출의 피해는 불가피할 것이다. 따라서 암호 시스템의 집중된 키 관리 방법을 분산한다면 더 보안성이 우수한 시스템이 될 것이다.

모든 데이터가 동일한 키를 이용해 암호화 하는 것이 아니라 어플리케이션 또는 어플리케이션을 통해 서비스 받고 있는 사용자 마다 각기 다른 키를 이용해 데이터의 암호화/복호화를 할 수 있다면 보안 향상에 도움이 될 것이다. 또한 그 키의 저장을 암호 시스템에 하는 것이 아니라 모든 관리를 사용자에게 전적으로 위임할 수 있다면 가장 이상적일 것이다.

웹 서비스 같은 시스템 이라면 초기 설계 시 암호화 시스템 자체에 키를 보관하지 않고 보안 채널로 전송되는 사용자의 패스워드 입력을 키로 사용하도록 설계할 수 있다. 특정 데이터 요청시 이 키를 이용해 복호화된 데이터를 전송해 줄 수 있을 것이다. 패스워드 일치 여부 체크 또한 입력받은 패스워드를 키로 이용해 암호화 시스템의 특정 데이터를 복호화 하고 유효한 체크섬을 추출해내 유효성을 확인 받을 수 있다.

키를 교환해야 하는 문제점은 주기적으로 사용자에게 패스워드 재설정 요구를 위한 인터페이스를 마련함으로써 해결할 수 있다. 사용자의 패스워드 변경시 기존에 제시된 예비할당 방법대로 암호시스템의 데이터 교체가 일어나게 할 수 있다.

Popular posts from this blog

클라우드 컴퓨팅(Cloud Computing) 기술 정리

1. 클라우드 컴퓨팅(Cloud Computing)이란?

클라우드 컴퓨팅에 대해서는 현재 매우 다양한 정의가 존재한다. 이 중 몇 가지를 정리하면 다음과 같다. 첫 번째 정으로 클라우드 컴퓨팅은 다양한 클라이언트 디바이스에서 필요할 때 언제든지 인터넷을 이용한 공유 풀에 있는 서버, 스토리지, 어플리케이션, 서비스 등과 같은 IT 리소스에 쉽게 접근할 수 있게하는 모델이다.

또 다른 정의로는 서로 다른 물리적 위치에 존재하는 컴퓨터들의 리소스를 가상화 기술로 통합해 제공하는 기술이라고도 생각할 수 있다. 개인적으로 클라우드 컴퓨팅의 개념을 이해는데 세일즈포스닷컴(www.salesforce.com)[1]이 만든 이 동영상[2]이 전반적인 이해를 돕는데 매우 유용하다. 아래 그림은 여러 대표적인 클라우드 서비스들의 사용 예를 보여주고 있다.



1.1. 클라우드 컴퓨팅의 장점[4]

사용자가 자신의 필요에 따라 무한정의 컴퓨팅 자원을 사용할 수 있다는 환상(Illusion)을 제공한다. 그러므로 사용자는 하드웨어와 소프트웨어 시스템을 제공하는 계획을 미리 세울 필요가 없다. 사용자는 작은 시스템으로부터 시작할 수 있고 시스템 자원에 대한 요구가 증가함에 따라 시스템 자원을 증가시키면 된다. 필요에 따라 짧은 시간을 단위로 (예를 들어 프로세서를 시간 당 또는 스토리지를 날짜 당) 사용하고 비용을 지불하면 되고 필요가 사라지면 자원을 더 사용하지 않을 수 있다.

1.2. 기존 클라우드 컴퓨팅 사례1.2.1. 아마존
EC2(컴퓨팅 서비스)Auto Scaling(자동으로 서버 생성 가능)Elastic Load Balancing(소프트웨어 로드벨런싱 기능)CloudWatch(모니터링 정보 제공)Amazon Elastic Block Store(EBS, 빠르고 안정적인 스토리지)Amazon Simple Storage Service(Amazon S3, 스토리지 서비스)SimpleDB(데이터베이스 서비스)
1.2.2. 구글
GFS(구글파일시스템, 대용량 파일 처리 가능 시스템)MapR…

규칙기반 전문가 시스템 (Rule-based expert system)

컴퓨터로 어떤 일을 시킬 때 보통은 명확한 규칙에 따라서 처리하게 된다. 그 이유는 아직 컴퓨터는 인공지능을 갖지 못하였다. 인간처럼 여러 가지 지식과 현상을 조합해 사고하지 못한다는 말이다. 그 때문에 사람이 컴퓨터의 능력을 이용해 어떤 일을 처리할 때는 일련의 규칙이 필요했다. 예를 들면 IF … Then … Else로 표현되는 규칙을 적용하는 것이다.

하지만, 실생활의 문제들은 이것들도 표현할 수 없는 것들이 너무 많다. 인간이 생각하는 거의 모든 것들이 이런 모호함의 집합이다. “오늘 날씨 너무 덥다. 시원하게 에러컨좀 틀어!”라고 했을 때 “너무 덥다.”, “시원하게” 등의 말들은 컴퓨터가 처리할 수 없는 것들이다. 몇 도로 온도를 유지했을 때 시원하다고 느끼는지 컴퓨터 자체만으로는 알 수가 없다. 컴퓨터는 정확히 수치화된 데이터만 가지고 처리하는 기계이기 때문이다. 이런 문제들을 처리하는 여러 방법의 하나인 규칙기반 전문가 시스템(Rule-based expert system)에 대해 얘기해 보겠다.

이처럼 컴퓨터가 처리해야 하는 문제들은 어떤 분야의 전문가가 처리하던 것을 컴퓨터가 대신하는데 의미가 있다. 나는 이것을 전문가의 지식을 처리한다고 정리한다. 그리고 전문가라고 불리는 사람들은 어떤 지식에 대해 규칙을 만들 수 있는 사람이고 규칙이란 앞서 얘기했던 대로 IF … Then … Else 형태로 표현할 수 있는 것을 말한다.

규칙기반 전문가 시스템은 관련주제에 지식이 풍부하고 관련 문제를 푸는데 능숙한 주제 전문가(domain expert), 전문가 시스템을 테스트하고 규칙을 추론할 수 있는 지식공학자(knowledge expert), 전문가 시스템의 개발 리더인 프로젝트 관리자(project manager), 프로그래머(programmer) 그리고 최종사용자(end-user)로 구성되어 있다.

또한, 규칙기반 전문가는 기반지식(knowledge base), 데이터베이스(Database), 추론 엔진(Interface engine), 해설설비…

인터넷이 우리 사회에 미치는 영향

믿기 어렵겠지만 몇 년 전만 해도 간단한 정보를 검색하기 위해선 백과사전이 필요했고 적은 분량의 백과사전에서 찾을 수 없을 땐 도서관에 가야 했고 또 작은 도서관에서 찾을 수 없을 땐 좀더 큰 도서관으로 가야 했었다. 과연 지금의 중학교, 고등학교 학생들은 과연 몇 명이나 이래야만 했던 사정을 이해해줄지 모르겠다.

하지만 이제는 사정이 달라졌다. 인터넷의 등장으로 예전처럼 정보검색에 수많은 시간과 노력을 쏟지 않아도 더 쉽게 더 좋은 자료를 검색할 수 있고 그를 여러 가지 형태의 미디어로 접할 수 있는 시대가 되었다. 예전에 ‘팀 버너스 리(Tim Berners-Lee)’ 가 처음으로 구체적으로 주장했던 하이퍼미디어(Hypermedia)와 그로 이루어진 인터넷으로 인해 우리 생활은 많이 변화했고 또 이제는 없어서는 안될 것으로 멀티미디어 환경으로 진화해 왔다는 사실은 아무도 부인하지 못할 것이다.

사실 인터넷의 등장만으로도 우리에겐 막대한 영향을 끼쳤다. 하지만 여기서 인터넷의 멀티미디어로서의 역할을 배제한다면 그 영향력을 전부 얘기하지는 못할 것이다. 멀티미디어로서의 인터넷은 위에서 얘기한 것처럼 빠른 정보검색은 물론이고 보다 효율적인 방법으로 정보전달의 기능을 가지고 있다.

대학교 1학년 때 처음 컴퓨터를 공부할 때 일이다. 네트웍에 대해 공부하고 있었는데 마침 네트웍을 설명하고 있는 동영상을 인터넷에서 발견했다. ‘The dawn of the Net’ 이라는 동영상 이였는데 네트웍 패킷이나 라우터, 라우터 스위치 등등 전체적인 네트웍에 대해서 알기 쉽게 설명한 동영상이었다. 이 동영상은 너무 쉽고 직관적이어서 누구라도 이것을 본 사람이라면 네트웍에 대해 모두 안 것 같은 착각을 하게 만들 정도였다. 하지만 대략적인 네트웍에 대해서 안다고 해서 전문가가 되었다고 말할 수는 없을 것이다. 간단해 보이는 현상 뒤에 숨겨져 있는 지식들을 모두 이해하고 설명할 수 있을 때 비로소 전문가라 부를 수 있을 것이다.

이런 멀티미디어적인 환경은 대부분에 사람들에게 보다…