[Concept | Encription] 암호화의 기본개념

시스템 개발시 악의적인 공격을 피하기 위해 암호화는 필수적으로 적용되어야 한다. 암호화의 기본적인 의미와 원리를 정리해보자.


작성일 : 2017-03-01
수정일 : 2021-04-09

1> 사전적의미의 암호화

암호화(encryption)란? 정보가 노출되는 것을 방지하기위해 특정 알고리즘을 이용하여 변형하는 것.

  • 암호화를 역행하여 다시정보를 읽게 하는 것은 복호화(decryption)라고 함.
  • 군사와 정부의 은밀한 대화를 위하여 오랫동안 이용되어 왔음.
  • 근래 기업에서는 데이터 전달개인의 정보를 저장하는데 자주 이용함.

2> 시스템 개발에서의 암호화

보안이 필요한 정보를 특정 알고리즘을 통해 의미없는 문자열(이진수 덩어리)로 바꾸는 것.

  • 악의적인 목적으로 암호를 해독해 공격하는 것을 방지할 수 있음.
  • 보안에 있어 시스템적인 보호 방법 보다 근본적인 해결방법이라 할 수 있음.

3> 암호화의 기본조건

암호화는 아래 두가지 조건을 충족해야 함.

* Confusion(혼돈) : 원문의 내용을 짐작하기 어렵게 만들어야 한다.
* Diffusion(확산) : 알고리즘의 패턴을 추론하기 어렵게 만들어야 한다.
  • 가장 좋은 암호화는 알고리즘을 알아내기 어렵게 해서 정보를 해독하지 못하게 하는 것이지만 항상 암호화 하려는 자와 복호화 하려는자의 노력이 있을뿐 100% 해독 불가능한 암호화란 있을 수 없음.

4> 고전적인 암호화

아래 설명하는 치환(Substitution)과 이동(Transposition)을 교차적용해 암호화 하였음.

4-1> 치환 (Substitution) : 단순히 다른문자로 치환하여 혼돈의 조건을 만족시킴.

4-2> 이동 (Transposition) : 무작위로(실제로는 특정규칙이 존재) 다른문자로 치환하여 확산의 조건을 만족시킴.


5> 암호화의 발전

컴퓨터의 등장으로 과거 기계식에 비해 계산능력이 월등해 졌고 그앞에서 고전적인 암호화는 무용지물이 되었다. 따라서 안전성 보완을 위해 임의의 문자열값인 암호화키(Encryption Key)를 활용하게 되었음.

5-1> 원리

암호화키와 평문(Plain Text)을 바이너리 형태로 변형한 후 배타적 논리합(XOR) 연산에 따라 암호화 및 복호화를 함.

ABA XOR B
000
101
011
110
[참고] XOR 연산

5-2> 암호화 규격

암호화키의 길이나 사용횟수가 제약이 없다면 복잡도를 무한히 증가시켜 거의 완벽한 암호화가 가능하겠지만 복호화 하는데 비용(시간소모)이 계속 커진다면 사용할 수가 없을 것이기 때문에 일정한 규격에 의한 암호화를 고려해야 함.

5-3> 양자연산

양자연산이 가능한 컴퓨팅 방식으로 인해 연산속도가 월등히 빨라진다면 위험하지 않느냐는 의문이 제기 되고는 있지만 양자연산을 통한 해독 알고리즘이 발전되기 전까지는 안전하다고 함.

5-4> 암호화의 불완전성

현재까지 주로 사용되는 방식의 암호화는 엄밀히 말하여 완벽한 안전을 보장하는 것이 아니라 현실적으로 풀기 어렵다는 조건부 안전에 의존하고 있음.