1.1. 암호학

“암호학”(Cryptology)은 공공화 된 규칙으로 해석가능한 문장인 “평문”(Plain Text 또는 \(P\) )을

공공화 되지 않은 임의의 규칙으로 해석가능한 문장인 “암호문”(Cipher Text 또는 \(C\) )으로

변환하는 일련의 과정을 논리적, 과학적으로 분석하는 학문입니다.


평문을 암호문으로 변환하는 데 사용되는 어떠한 규칙을
“암호화 열쇠”(Encryption Key, \(e_k\) 또는 암호화함수, Encryption Function)이라고 표현하고,

암호문을 평문으로 변환하는데 사용되는 어떠한 규칙을
“복호화 열쇠”(Decryption Key, \(d_k\) 또는 복호화함수, Decryption Function)이라고 표현합니다.

둘을 합쳐서 “암호열쇠”라고도 표현합니다.


평문을 암호열쇠를 이용하여 암호문으로 만드는 과정을 “암호화과정”(Encryption Process)이라고 표현합니다.

암호문을 복호열쇠를 이용하여 평문으로 만드는 과정을 “복호화과정”(Decryption Process)이라고 표현합니다.

암호문을 복호열쇠를 모르는 상태에서 평문으로 만드는 과정을 “해독과정”(Cryptanalysis Process)이라고 표현합니다.


평문들로 이루어진 집합을 평문공간(Plain Text Space), 암호문들로 이루어진 집합을 암호문공간(Cipher Text Space),

그리고 암호열쇠들로 이루어진 집합을 열쇠공간(Key Space) 이라고 표현합니다.


암호화과정은 “암호화알고리즘”(Encryption Algorithm)으로 절차들을 표현가능하며,

복호화과정은 “복호화알고리즘”(Decryption Algorithm)으로 절차들을 표현가능합니다.

이 둘을 합쳐서 “암호알고리즘”이라고 표현합니다.


암호화된 정보를 보내는 쪽을 “송신자”(Sender)라고 표현하며, 정보를 받는 쪽을 “수신자”(Receiver)라고 표현합니다.

송신자와 수신자간의 정보전달을 중간에 가로채려고 하는 주체를 “도청자”(Eavesdropper)라고 표현합니다.


신뢰할 수 없는 두 주체 간에 암호체계를 이용하여 안전한 통신을 하는 암호규약을

“암호프로토콜”(Encryption Protocol)이라고 표현합니다.


어떠한 암호 프로토콜이나 암호체계의 허점을 이용하거나 뚫어서 도청자가 되는 행동을

“보안공격”(Security Attack)이라고 표현하고 보안공격은 크게 두 가지로 구별할 수 있습니다.

1). “소극적공격”(Passive Attack) : 정보를 도청하거나 가로채서 얻은 결과를 사용하려는 행동을 말합니다.
대표적으로 “패킷 스니핑”Sniffing, “트래픽 분석”(Traffic Analysis) 등이 있습니다.

2). “적극적공격”(Active Attack) : 시스템에 침투, 장악 하거나 동작에 영향을 주는 행동을 말합니다.
대표적으로 “스푸핑”Spoofing, 서비스 거부 공격(Denial Of Service, D-DOS) 등이 있습니다.


1.2. 암호의 정의와 종류

암호시스템은 \(( P, C, K, E, D )\) 으로 나타낼 수 있고, 각 알파벳의 의미는 다음과 같습니다.

\(P\) : 해당 암호시스템의 평문들의 유한집합입니다.

\(C\) : 해당 암호시스템의 암호문들의 유한집합입니다.

\(K\) : 해당 암호시스템의 열쇠들의 유한집합입니다.

\(E\) : \(P -> C\) 로 매핑하는 암호함수들의 유한집합입니다.

\(D\) : \(C -> P\) 로 매핑하는 복호함수들의 유한집합입니다.

모든 \(P\)의 원소\(p\)에 대해 \(D ( E ( p ) ) = p\) 인 \(D\) 와 \(E\)가 반드시 존재해야 합니다.


평문을 1비트 또는 1바이트 단위로 암호화가 이루어지는 방식을 “스트림암호”(Stream Cipher)라고 표현합니다.

보통 스트림암호 방식은 비트연산으로 암호화를 많이 하고
“LFSR”(Linear Feedback Shift Register)등의 의사난수열을 열쇠로 사용합니다.


2비트 이상의 일정한 블록 단위로 암호화가 이루어지는 방식을 “블록암호”(Block Cipher)라고 표현합니다.
대표적으로 “DES”와 “AES” 가 있습니다.


암호화하는데 사용된 열쇠와 복호화하는 데 사용하는 열쇠가 동일한 구조이거나

서로를 쉽게 유도할 수 있는 유사한 구조이면, “대칭암호”(Symmetric Cipher)라고 표현하고

이는 암호열쇠를 숨겨야 하기 때문에 “비밀열쇠암호”라고도 표현합니다.

대표적으로 고전암호들이 대부분 속합니다.


암호화하는데 사용하는 열쇠와 복호화하는데 사용하는 열쇠가 다른 구조이면서 서로를 유도하기 어려운 구조이면,

“비대칭암호”(Asymmetric Cipher)라고 표현하고

보통 이 암호방식은 암호열쇠를 공개하고 복호열쇠를 숨겨서 사용하기 때문에 “공개열쇠암호”라고도 표현합니다.

대표적으로 현대에서 쓰이는 암호들, RSA, 타원곡선암호 등이 있습니다.


암호기술은 크게 4가지를 고려하여 연구가 이루어지고 있습니다.

1). 기밀성 : 반드시 송신자와 수신자만이 해당 암호문을 이해 가능하고
혹여 제 3자가 암호문을 인지해도 해독하지 못하도록 구조를 만드는 기술입니다.

2). 무결성 : 송신자와 수신자가 통신하는 가운데 제 3자가 암호문을 가로채는 것 뿐만 아니라
직접 변조하여 피해를 줄 수 있는데 이를 검증하는 기술입니다.

단순히, 통신간의 오류도 검증 대상이 될 수 있습니다.

3). 인증 : 송신자와 수신자가 통신하는 데 각자 상대가 통신 대상이 맞는지 검증하는 기술입니다.

수신자가 출처(송신자)가 맞는지 검증하는 것을 “근원지인증”이라고 표현합니다.

송신자가 사용자(수신자)가 맞는지 검증하는 것을 “개체인증”이라고 표현합니다.

4). 부인방지 : 송신자와 수신자가 통신한 내용들이 교환 이후에 해당 교환 내역을 입증할 수 있어
사실을 부인하지 못하도록 하는 기술입니다.


다음은 실제 사용되는 암호기술들을 나열 한 것 입니다.

1). 해시함수(One-Way Hash Function) : 해시 함수가 정의 되어있을 때 정의역에서 치역으로 변환하는 과정이
계산상 용이 해야 하고, 치역에서 정의역을 찾는 ( 역 함수를 찾는 ) 것은 계산상 불가능하게 해야 합니다.

( “계산상 용이”는 시간복잡도가 유효한 범위내로 구할 수 있는 것이고
“계산상 불가능”은 시간복잡도가 상대적으로 암호 해독 가치보다 더 큰 비용의 시간을 요구하도록 하는 것입니다. )

2). 디지털서명 : 공개열쇠암호 알고리즘을 이용하여 무결성을 확인하고 인증과 부인방지를 하기 위한 기술입니다.

3). 메시지인증코드(Message Authentication Code) : 인증과 무결성을 검증하기 위한 기술입니다.

4). 의사난수생성기(Pseudorandom Number Generator, PRNG) :
그 어떠한 규칙성이나 주기성을 갖지 않도록 수열을 생성하는 알고리즘입니다.


1.3. 암호 해독

암호 해독(공격)방법에는 크게 4가지로 분류할 수 있습니다.

1). “암호문 단독공격”(Ciphertext-only Attack) : 임의의 암호문만으로 해독하는 방법입니다.

2). “알려진 평문공격”(Known Plaintext Attack) :
임의의 암호문과 그 암호문의 본래 평문을 가지고 해독하는 방법입니다.

3). “선택된 평문공격”(Chosen Plaintext Attack) :
특정한 평문을 정하면, 해당 평문의 암호문을 구할 수 있을 때, 해독하는 방법입니다.

4). “선택된 암호문공격”(Chosen Ciphertext Attack) :
특정한 암호문을 정하면, 해당 암호문의 본래 평문을 구할 수 있을 때, 해독하는 방법입니다.


다음은 대표적인 암호 해독 방법 4가지를 나열 한 것입니다.

1). “전수 공격”(Exhaustive Attack) : “전사공격” 또는 “브루트포스”(BruteForce)로 표현되는 이 방법은
가능한 모든 열쇠를 전부 대입하여 해독하는 방법입니다.

2). “통계적 분석 공격”(Statistical Analysis Attack) : 암호에 대해 알려진 통계자료나
과거의 평문과 암호문을 통계적으로 분석하여 해독하는 방법입니다.

3). “차분 공격”(Differential Cryptanalysis) : 두 평문의 차이와 두 평문이 암호화 된 후의 둘의 차이를 비교하여
변화의 유사점이나 규칙을 찾아 해독하는 방법입니다.

4). “선형 공격”(Linear Cryptanalysis) : 암호 알고리즘의 비 선형 방식부분을
근사적 선형 방식으로 변환하여 해독하는 방법입니다.


Leave a Reply

Your email address will not be published. Required fields are marked *