시스템 개발시 악의적인 공격을 피하기 위해 암호화는 필수적으로 적용되어야 한다. 암호화의 기본적인 의미와 원리를 정리해보자.
작성일 : 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) 연산에 따라 암호화 및 복호화를 함.
A | B | A XOR B |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
5-2> 암호화 규격
암호화키의 길이나 사용횟수가 제약이 없다면 복잡도를 무한히 증가시켜 거의 완벽한 암호화가 가능하겠지만 복호화 하는데 비용(시간소모)이 계속 커진다면 사용할 수가 없을 것이기 때문에 일정한 규격에 의한 암호화를 고려해야 함.
5-3> 양자연산
양자연산이 가능한 컴퓨팅 방식으로 인해 연산속도가 월등히 빨라진다면 위험하지 않느냐는 의문이 제기 되고는 있지만 양자연산을 통한 해독 알고리즘이 발전되기 전까지는 안전하다고 함.
5-4> 암호화의 불완전성
현재까지 주로 사용되는 방식의 암호화는 엄밀히 말하여 완벽한 안전을 보장하는 것이 아니라 현실적으로 풀기 어렵다는 조건부 안전에 의존하고 있음.