암호화

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기

암호화(暗號化) 또는 엔크립션[1](encryption)은 특별한 지식을 소유한 사람들을 제외하고는 누구든지 읽어볼 수 없도록 알고리즘을 이용하여 정보(평문을 가리킴)를 전달하는 과정이다. 이러한 과정을 통해 암호화된 정보(암호문)를 낳는다. 이에 역행하는 과정을 해독 또는 디크립션(decryption)이라고 하며 이로써 암호화된 정보를 다시 읽을 수 있다.

암호화는 군사와 정부의 은밀한 대화를 위하여 오랫동안 이용되어 왔다. 암호화는 수많은 종류의 시민 체계의 정보를 보호하는 데 흔히 쓰이고 있다. 이를테면 CSI(Computer Security Institute)의 2007년 보고에 따르면 71%의 기업이 일부 데이터 전달을 위하여 암호화를 이용하며 53%가 일부 데이터 저장을 위해 암호화를 이용하는 것으로 조사되었다.[2]

데이터 암호화 유형[편집]

네트워크 계층의 데이터 암호화[편집]

네트워크 계층에서는 서버와 클라이언트가 서로 교차 연결되어 데이터의 송신과 수신이 이루어진다. 응용 서버와 DB 서버, 네트워크로 연결된 저장장치와 서버, 서버와 단말 등의 통신도 이에 해당한다. 공격자는 통신 채널을 도청하여 송수신 데이터를 수집, 데이터를 탈취할 수 있다. 이때 데이터를 보호하기 위해 송신자와 수신자 사이의 통신 채널 자체를 암호화하거나 송수신되는 데이터 중에서 이미 지정한 정보만을 선택적으로 암호화 하는 방법이 있다. 네트워크 계층에서의 암호화는 물리적으로 분리되어 있는 송신자와 수신자 사이에서 안전한 암호화를 제공한다. 안전한 암호화를 위해서는 송신자와 수신자 사이에서 암호화 키를 안전하게 생성하고 관리해야 한다.[3]

OS 계층의 데이터 암호화[편집]

모든 데이터는 컴퓨터에 저장될 때 파일의 형태로 저장된다. OS 계층에서의 암호화는 OS가 파일을 저장하는 과정에 암호화 단계를 추가하는 방식이다. OS 계층에서 암호화를 수행하면 DB나 어플리케이션은 암호화 처리를 고려하지 않아도 되기 때문에 기존 시스템에 적용할 때 번거로운 수정이나 변경이 필요하지 않다는 건 큰 장점이다. 하지만 대부분의 OS레벨 암호화제품이 암호화 키를 사용자 기기나 서버의 내부에 저장하고,세분화된 보안정책 설정 및 접근제어가 어렵다는 점 등의 한계가 존재한다.

DBMS Engine 계층의 데이터 암호화[편집]

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

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

DBMS Procedure 계층의 데이터 암호화[편집]

DBMS Procedure 계층의 소프트웨어는 DBMS의 API를 외부에서 활용한다. 이 계층에 암호화를 적용하려면 DB 서버와 정보를 주고 받을 때 암호화를 지원하는 별도의 API를 사용하여 암호화를 처리해야 한다. 어플리케이션과 DB 서버와 별도 시스템에 존재한다면 네트워크 계층 암호화를 추가로 적용할 수 있다. 암호화/복호화 연산 처리 부담이 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은 독자의 설계와 구현 원칙에 의해서 복잡하게 구현되므로 새로운 서브시스템을 추가하고 수정하는 일에 많은 노력과 비용이 소요된다.

같이 보기[편집]

각주[편집]

  1. https://terms.naver.com/item.nhn?dirId=608&docId=8479[깨진 링크(과거 내용 찾기)]
  2. Robert Richardson, 2008 CSI Computer Crime and Security Survey at 19. Online at
  3. “Client-Server - an overview | ScienceDirect Topics”. 2020년 8월 1일에 확인함. 

참고 문헌[편집]

  • Helen Fouché Gaines, “Cryptanalysis”, 1939, Dover. ISBN 0-486-20097-3
  • David Kahn, The Codebreakers - The Story of Secret Writing (ISBN 0-684-83130-9) (1967)
  • Abraham Sinkov, Elementary Cryptanalysis: A Mathematical Approach, Mathematical Association of America, 1966. ISBN 0-88385-622-0

외부 링크[편집]