암호화란?

암호화 알고리즘은 수학적 과정을 통해 어떤 정보를 의미 없는 문자의 나열로 바꾸는 것을 뜻합니다.

encryption

재화적 가치가 있는 데이터를 알아볼 수 없는 이진수 덩어리로 바꿈으로써 공격의 목적을 파괴합니다.
시스템의 보호에 집중하는 여타 보안 도구들에 비교해 암호화는 근본적이고 원천적 처방입니다.

정보 보안의 창과 방패는 경쟁적으로 진화합니다. 그리고 방어에 급급한 수세 일변도는 한계가 있습니다.
위험은 사전에 관리해야 합니다. 사후에 대응하는 리스크 테이킹 전략으로 버티기에는 위험이 너무나 큽니다.
따라서 암호화야말로 궁극적인 정보 보안 방법이라 할 수 있습니다.

암호화의 이해를 위해 암호의 성질과 알고리즘, 암호화 키, 암호화 시스템 등에 대해 알아 보겠습니다.

고전 암호

제대로 된 암호는 메시지 원문의 내용과 암호화 알고리즘을 알아내기 어려운 암호입니다. 그러기 위해 암호는 혼돈과 확산이라는 두 가지 성질을 가집니다.

혼돈 Confusion : 성질은 메시지 원문의 내용을 짐작하기 어렵게 만듭니다.
확산 Diffusion : 성질은 암호화 알고리즘의 패턴 추론을 어렵게 만듭니다.

따라서 좋은 암호는 혼돈과 확산 두 가지 성질 모두를 갖춘 암호입니다. 고전 암호는 방식에 따라 주로 ‘치환 암호’와 ‘이동 암호’로 나눌 수 있습니다.

치환 Substitution 암호는 문자열을 다른 문자열로 열 이동 교체하는 암호입니다.

resource_암호화란1

이동 Transposition 암호는 무작위로 보이는 원칙에 따라 문자열 순서를 바꿔 이동한 암호입니다.

resource_암호화란2

치환 암호는 메시지 원문 내용의 추론을 어렵게 하는 혼돈 성질을 만족하는 경향이 있습니다.
이동 암호는 암호화 알고리즘을 짐작하기 어렵게 하는 확산 성질을 만족하는 경향이 있습니다.

따라서 치환과 이동을 교차적으로 적용함으로써 혼돈과 확산 성질을 모두 만족할 수 있습니다.

암호화 키

고전 암호의 한계는 암호화 알고리즘을 알아내면 암호문을 해독할 수 있다는 점입니다.

컴퓨터의 등장과 발전으로 급상승한 계산 능력 앞에 고전 암호는 무용지물입니다.

따라서 현재 암호화 기술의 핵심은 임의의 문자열 값인 ‘암호화 키’입니다.
암호화 키는 난수입니다. 정확한 의미로의 난수는 아닌 의사난수지만,
암호학에서 사용하는 통계학 입각 기준에 따라 일정 수준 이상의 의사난수를 난수로 가정합니다.
적절한 암호화 키를 사용한다면 암호화 알고리즘이 노출되더라도 키 없이는 해독할 수 없습니다.

한시적이긴 하나 잠정적으로는 완벽한 현재 암호화 기술의 명세는,
어떤 키를 사용해 메시지 내용을 감추느냐, 즉 키의 성질을 바탕으로 이루어집니다.

암호화 키의 동작은 수리 논리학의 ‘배타적 논리합’ 연산에 따라 이루어집니다.
이진법으로 표현한 수의 각 비트에 대한 가감산 결과를 비트간 배타적 논리합이라 합니다.
비트간 배타적 논리합은 특정 비트의 반전이므로, 반복하면 원래값이 됩니다. 즉,

P 라는 원문을 K 라는 키값을 이용해 연산하면 P + K 라는 암호문이 되는 방식입니다.
이 암호문을 K 키값을 이용해 연산하면,

(P + K) + K = P

원문 P 로 복호화할 수 있습니다. 예를 들어,

원문 0011 은 키값 0110 을 이용해 연산하면 암호문 0101 이 되고 이는 다시,
0101 + 0110 = 0011 재연산을 거쳐 원문으로 복호화되는 방식입니다.
암호화 키의 길이, 그리고 키 사용 회수 등에 제한이 없다면 완벽한 암호화를 이룰 수 있습니다.
하지만 보안이란 보안에 드는 비용이 보안 대상의 가치보다 적을 때 유효합니다. 즉, 경제적 판단입니다.
따라서 암호화에 있어 가장 중요한 요소인 암호화 키의 규격에 대한 일정한 표준이 존재합니다.

현재 암호화 규격은 양자연산 등 완전히 새로운 컴퓨팅 방식의 등장 이전까지는 안전하다고 볼 수 있습니다.

암호화의 종류

암호화 전, 처음에 주어진 데이터를 평문이라 합니다.  암호화된 정보는 암호문이라 하며 겉으로 보기에 문자열로 보이지 않습니다.

암호화 엔진은 2차세계대전에 사용되었던 암호기 Enigma처럼 기계적 장치일 수도 있지만, 요즘은 대부분 컴퓨터 프로그램 형태로 만들어집니다.
평문이 암호화 엔진으로 들어가면, 암호화 엔진이 암호문을 만들어 냅니다.

단방향 암호화

resource_암호화란3

누군가의 신원을 증명할 때 인증의 방법으로 사용하는 비밀번호는 위와 같은 단방향 암호화를 사용합니다.

비밀번호를 저장하기 전에 암호화하여 저장합니다.
예를 들어 비밀번호를 ‘password’라 만들었다면 이를 암호화하여 ‘WaBauZ2.Hnt2’라 저장합니다.
평문 ‘password’와 암호문 ‘WaBauZ2.Hnt2’ 사이에는 아무런 유사성을 찾을 수 없어야 합니다.

이러한 단방향 암호화는 역변환을 할 수 없습니다.
어떠한 방법을 쓰더라도 암호문을 원래의 평문으로 되돌릴 수 없습니다.
사용자가 입력한 비밀번호가 맞는지 확인하기 위해 저장된 비밀번호를 복호화하지 않고,
입력한 비밀번호를 다시 암호화하여 저장된 비밀번호와 일치하는지를 비교하여 신원을 인증합니다.

대다수 암호화 과정은 역변환이 가능합니다.

비밀키 암호화

비밀키 암호화는 비밀키를 사용하여 암호화하고 복호화합니다.

resource_암호화란4

평문에 암호화 키 값을 이진수 연산 처리하여 암호문을 생성합니다.
암호문을 받은 수신자는 동일한 암호화 키 값을 역으로 대입해 역처리하여 암호문을 해독합니다.

위와 같은 방식의 암호화를 위해서는 송신자와 수신자 모두 동일한 암호화 키를 알고 있어야 합니다.
어떤 사람이 다른 사람에게 암호화 메시지를 보내기 위해서는 수신자에게 암호화 키를 전달해야 합니다.
여기에서 모순이 발생합니다.
“키를 안전하게 전달할 수 있다면 마찬가지 방법으로 메시지도 안전하게 전달할 수 있지 않나?”

공개키 암호화

공개키 암호화는 서로 다른 두 개의 키, 공개키와 개인키를 사용하여 암호화하고 복호화합니다.
공개키로 암호화하고 개인키로 해독합니다.

resource_암호화란5

공개키라는 말의 뜻대로, 공개키는 공개된 키입니다.
그러나 개인키를 가진 사람만이 공개키를 통해 암호화된 메시지를 해독할 수 있습니다.
비밀키 암호화 방식이 개인키 암호화 방식보다 매우 빠르게 처리되기 때문에,
실제 암호화 시스템은 비밀키 암호화 방식과 공개키 암호화 방식을 혼합해 구축됩니다.

참고로, 개인키와 공개키의 위치를 바꿔 실행하면 ‘전자서명’이 됩니다.

resource_암호화란6

암호화 방식의 결정은 처한 환경에 따라 달라집니다.
필요에 따라 여러가지 방식과 형식 중 선택하여 암호화 공정을 설계하고 시스템을 구축합니다.
간단한 형식에서부터 복잡한 형식까지 고루 존재하고, 보안 경제적 판단에 따라 선택합니다.
예를 들어, 공개키는 비밀키보다 상위에 존재하며 비밀키를 진화론적으로 대체한 것이 아닙니다.
필요에 따라 선택하는 두 개의 서로 다른 방식일 뿐입니다.

– 키 분배 및 관리 문제가 없고 빠른 실행 속도가 필요한 경우 비밀키 방식을 선택
– 키 분배 및 관리 문제가 있고 송수신 부인 방지 보장이 필요한 경우 공개키 방식을 선택

이렇듯, 적절한 암호화 방식의 선택은 곧 해당 환경에 대한 이해, 즉 암호화 시스템의 설계입니다.

암호화 시스템

이상의 내용은 암호화에 관련된 암호학 이론적 내용을 간단히 정리한 것입니다.

학문은 탐구를 통해 논리적으로 정연한 일반화된 명제 체계를 통해 이치를 해명하려는 노력입니다.
그리고 기술은 학문을 바탕으로 최소비용 최대이익의 경제적 원칙에 따라 필요한 것을 만드는 일입니다.
기술은 이론을 변형하고 가공하고 융합하여 이루어지고, 비범함으로 결정됩니다.

“이 기술은 어째서 비범한가?”

이 질문에 기술의 가치가 달려 있습니다.
암호화 기술의 비범함 기준은 비즈니스입니다.
비즈니스 요건에 따라 암호화를 수행하는 위치나 데이터의 특성이 달라집니다.
그러므로 암호화 기술은 시스템과 비즈니스 전반에 걸친 이해가 필수적입니다.

암호화 = 사업적 필요에 따른 여러 환경에서의 암호학 원론의 기술적 적용

최근 설계하고 구축한 모바일 메신저 애플리케이션 암호화 시스템의 예입니다.

최초 요구는 메신저로 통신한 대화 내용이 저장되는 DBMS의 데이터 암호화였습니다.

resource_암호화란7

하지만 보안 침해 사고의 일반적 행태에 비추어 보면 위 구성으로는 충분한 보안성을 이룰 수 없습니다.

실제 필요한 웹 애플리케이션 암호화의 요구사항은 아래와 같습니다.

resource_암호화란8

사용자 인증 암호화, 구간 암호화, 메시지 암호화, 파일 암호화 그리고 키 관리가 포함된 구성입니다.

모든 종류의 보안 시스템 구성은 안전한 IT 시스템 설계 원칙을 따릅니다.
따라서 완벽한 암호화 기술 적용을 위해서는 시스템의 모든 계층과 모든 영역을 고려해야 합니다.

resource_암호화란9

애플리케이션 – 시스템 – 네트워크, 3개 계층 모두 적절한 암호화가 적용되고, 안전한 키 관리와 권한 관리 및 접근 제어를 통해 완벽한 암호화를 이룰 수 있습니다.

이 원칙에 따라 최종적으로 설계하고 구축한 시스템의 구성은 아래와 같습니다.

resource_암호화란10

전 계층 전 영역에 철저한 암호화 그리고 키 관리가 적용된, 완벽한 암호화 시스템의 예입니다.

암호화 전문기업

사업 요건에 따라 암호화를 수행하는 위치나 데이터의 특성이 모두 다릅니다.

사업 성격에 따라 보호할 자산의 가치가 다르고 자산을 노리는 위협의 수준도 다릅니다.

암호화 전문 기업이란,
다양한 환경에서 동일한 수준의 보안성을 이루는 시스템을 구축할 수 있는 기업입니다.

암호화 기술 적용은 시스템의 성능에 영향을 미치는 게 사실입니다.
암호화와 복호화 연산의 대가는 분명히 존재하는 트레이드오프 요소입니다.

암호화 전문 기업이란,
암호화를 적용하고도 시스템 성능 저하를 최소화할 수 있는 기업입니다.

대부분의 경우 암호화에 따른 시스템 성능 저하는 암호화 적용 때문이 아닙니다.
시스템에 대한 불충분한 이해, 그에 따라 잘못 설계된 어플리케이션 때문입니다.
특히 데이터의 성질에 대한 이해는 필수적입니다.
암호화 기술의 가장 큰 변별력은 ‘쓰면서도 쓰지 않는 듯한 기술’입니다.

암호화 기술은 절대적 만능 도구가 아닙니다.
대부분의 보안 사고는 도구의 성능에 방심한 사용자의 관리 부실 때문에 발생합니다.
이를 막는 유일한 방법은 사용자 집단 전체의 보안의식 제고뿐입니다.
이는 보안이라는 매우 심각한 주제에 대한 충분한 이해,
그리고 구성원을 교육하고 관리하는 보안 거버넌스에 의해 결정될 수밖에 없습니다.

“이 암호화 장비만 구입하면 모든 문제가 깔끔하게 해결되고 신경 쓸 필요가 없습니다.”

보안 도구 벤더들이 흔히 하는 말이지만, 이는 매우 잘못된 태도입니다.
암호화 전문 기업은 절대 그런 식으로 말하지 않고,
보안 거버넌스의 필요와 이어지는 구성원 모두의 보안의식 제고의 필요를 설득합니다.

암호화란, 설계 개발 운영 등 정보 사업의 모든 부분에 영향을 미치는, 마치 문화와 같은 것입니다.

암호화 전문 기업이란,
암호화 기술의 화려함이 아니라 정보 보안의 뜻을 우선 설득하는 기업입니다.