태그 글목록: 복호화

[암호화] 1. 기본지식 2015-03-20

* 사전적 의미
암호화(encryption)는 정보를 노출시키지 않기 위해 특정 알고리즘을 이용하여 암호화된 형태로 변형하는 것을 말하며 이에 역행하는 과정을 복호화(decryption)라고 하며 이로써 암호화된 정보를 다시 읽을 수 있다. 군사와 정부의 은밀한 대화를 위하여 오랫동안 이용되어 왔고 근래에는 기업에서의 데이터 전달 및 개인의 정보를 저장하는데에도 자주 이용되고 있다.

 

* 개발에 있어 암호화란?
보안이 필요한 정보를 특정 알고리즘을 통해 의미없는 문자열(이진수 덩어리)로 바꾸는 것을 의미하며 이로써 악의적인 목적으로 암호를 해독해 공격하는 것을 방지하는 것을 의미한다. 보안을 위해 시스템적인 보호 방법 보다 근본적인 해결방법이라 할 수 있다.

 

* 암호화 기본요소
가장 좋은 암호화는 알고리즘을 알아내기 어려운 것이라 할 수 있다. (항상 암호화 하려는 자와 복호화 하려는자의 노력이 있을뿐 100% 해독 불가능한 암호화란 있을 수 없다.) 이를 위해 암호화에는 혼돈(Confusion)과 확산(Diffusion)이라는 조건이 필요하다.
– Confusion : 원문의 내용을 짐작하기 어렵게 만들어야 한다.
– Diffusion : 알고리즘의 패턴을 추론하기 어렵게 만들어야 한다.

 

* 고전적인 암호화 : 암호화의 기본요소를 만족하기 위해 다음 두가지 암호화를 교차적으로 적용해 암호화 한다.
치환(Substitution) 암호화와 이동(Transposition) 암호화가 주로 사용되었다.
encrypt
– Substitution : 단순히 문자를 다른문자로 치환하는 방법으로 혼돈의 조건이 만족된다.
>> ex) DCA =>HGE
– Transposition : 무작위로(실제로는 특정규칙이 존재) 문자를 다른문자로 치환하는 방법으로 확산의 조건이 만족된다.
>> ex) DCA =>CBD

 

* 암호화의 발전
컴퓨터의 등장으로 우리는 계산능력이 월등해졌고(과거 기계식 계산에 비해) 이 앞에서 고전적인 암호화는 무용지물이 되었다. 따라서 안전성 보완을 위해 임의의 문자열값인 ‘암호화키’를 활용하게 되었다. 원리는 암호화키와 원문을 바이너리 형태로 변형한 후 배타적 논리합(XOR) 연산에 따라 암호화 & 복호화 를 하게된다.

encrypt1 위와 같은 원리로 암호화 키의 길이, 키의 사용횟수등의 제약이 없다면 복잡도를 무한히 증가시켜 거의 완벽한 암호화를 할 수 있으나 복호화 하는데 비용(시간소모)이 계속 커진다면 사용할 수가 없을 것이기 때문에 일정한 규격에 의한 암호화를 고려해야 한다.

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

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