본문 바로가기
정보보안

정보보호론/정보보안기사 고전대칭키 암호학2

by hgoon 2023. 2. 13.
반응형

다중문자암호

다중문자 대치에서는 각 문자가 다른 대치를 가진다. 평문 문자와 암호문 문자와의 관계는 일대다대응이다. 예를 들어 'a'는 문장의 시작점에서 'D'로 암호화되고, 중간에서 'N'으로 암호화될 수 있다. 다중문자 암호는 언어의 문자 빈도를 감추는 장점이 있다. 따라서 공격자는 암호문을 해독하기 위하여 단일 문자 빈도 해독을 사용할 수 없다.

 

자동키 암호

키의 위치 의존성을 알아보기 위하여, 간단한 다중문자 암호인 자동키 암호를 살펴본다. 이 암호에서는 키가 부분키들로 구성된 키수열인데. 각각의 부분키는 편문에서 대응되는 문자를 암호화하는데 이용된다. 첫 번째 부분키는 A와 B가 비밀리에 합의한 사전에 정의된 값이다. 두 번째 부분키는 첫 번째 평문문자의 값은 0부터 25 사이의 값이다. 세 번째 부분키는 두 번째 평문의 값이다. 나머지 부분키도 동일하게 정의된다.

 

플레이페어 암호

다중문자 암호의 다른 예로 제1차 세계대전중에 영군군이 사용한 플레이페어 암호가 있다. 이 암호의 비밀 키는 5X5행렬로 배열된 25개의 알파벳 문자로 구성된다. 행렬에서 문자의 배열을 다르게 함으로써 서로 다른 많은 비밀 키를 생성할 수 있다.

 

Vigenere암호

16세기 프랑스 수학자 Blaise de Vigenere는 흥미로운 다중문자 암호의 한 종유를 고안하였다. Vigenere 암호는 는 키수열을 생성하기 위하여 다른 전략을 사용한다. Vigenere 암호와 앞에서 살펴본 다른 두 다중문자 암호의 중요한 차이점은 Bigenere키 수열이 평문 문자에 의존하지 않고 평문의 문자위치에만 의존한다는 것이다. 즉, 키수열은 평문을 모르고도 생성될 수 있다.

 

One-Time Pad

암호의 목적 중인 하나는 완벽한 보안이다. Shannon의 연구는 각 평문문자가 키 공간에서 랜덤 하게 선택된 키로 암호화된다면 완벽한 보안이 이루어진다는 것을 보였다. 예를 들어, 덧셈암호는 같은 키가 모든 문자를 암호화하는데 이용되기 때문에 쉽게 해독된다 그러나 각문자를 암호화하는 키가 키 공간(00, 01, 02, ... , 25) 랜덤 하게 선택된다면, 즉 첫 번째 문자가 키 04로 암호화되고, 두 번째 문자가 키 02를 이용하여 암호화되고, 세 번째 문자가 키 21로 암호화되고, 나머지도 이와 유사하게 암호화된다면, 이렇게 간단한 암호도 완벽한 암호가 될 수 있다. 암호문 단독 공격은 불가능하다. 송신자가 메시지를 보낼 때마다 다른 랜덤 한 정수 열로 키를 변경하기 때문에 다른 형태의 공격도 역시 불가능하다.

이아이디어는 vernam이 고안한 일회용 패드라고 하는 암호에 이용된다. 이 암호에서는 키는 평문과 같은 길이를 가지며 완전히 랜덤 하게 선택된다.

 

Rotor암호

one-time pad 암호가 실용적이지는 않지만, 좀 더 안전한 암호화를 위한 접근법으로 작용했는데 대표적인 예가  Rotor암호이다. Rortor암호는 단일 알파벳 치환에 따른 아이디어를 이용하고, 각각의 평문 문자에 대해 평문과 암호문 문자의 사상을 변화시킨다.

 

에니그마

에니그마는 원래 sherbius에 의해 최초로 고안되었으나 독일군에 의해 변형되어 세계 제2차 대전 동안 널리 이용되었다. 이 기계는 Rotor암호의 원리를 기반으로 한다.

 

전치암호

전치암호는 한 기호를 다른 기호로 대체시키지 않고, 대신에 그 기호의 위치를 바꾼다 평문의 첫 번째에 위치한 기호는 암호문의 열 번째 위치에 나타낸다 평문의 여덟 번째 위치의 기호는 암호문의 첫 번째 위치에 나타난다. 즉, 전치암호는 기호를 재정렬하는 것이다.

 

키가 없는 전치 암호

과거에 사용된 간단한 전치암호는 키가 없다. 문자의 치환에는 두 가지 방법이 있다. 첫 번째는 텍스트가 열 순서롤 표에 기록된 뒤, 행 순서로 전송된다. 두 번째는 텍스트가 행순서로 표에 기록된 뒤, 열 순서로 전송된다.

 

키가 있는 전치암호

키가 없는 암호는 안쪽방향으로 평문을 기록하고 역방향으로 그것을 읽음으로써 문자를 치환한다. 전체 암호문을 생성하기 위하여 전체 평문에 치환이 적용된다. 다른 방법은 블록이라고 하는 미리 정해진 크기로 평문을 나눈 뒤 각각의 블록에서 문자를 치환하기 위해 따로 키를 사용한다.

 

스트림암호와 블록암호

대칭 키 암호를 스트림 암호와 블록 암호로 나눌 수 있다. 현대 암호에 이 정의가 보통 적용되지만, 이분류는 고전 암호에도 적용된다.

 

스트림암호

스트림암호에서 암호화에 복호화는 한 번에 한개의 기호에 적용된다. 평문 수열, 암호문 수열, 키수열이 있다. 평문 수열을  P라고 하고, 암호문 수열을 C 키수열을 K라고 한다.

평문문자는 한 번에 하나씩 암호화 알고리즘에 입력되고, 암호문 문자도 한 번에 하나씩 생성된다. 키수열은 다양한 방법으로 생성될 수 있다. 키수열은 사전에 정의된 수열이거나 알고리즘을 사용하여 한번에 하나씩 결정되는 값이 될 수도 있다. 이 값은 평문이나 암호문 문자에 의해 정해지거나 이전의 키값에 의해 결정될 수 도 있다.

 

블록암호

블록암호에서 크기가  m인 평문 기호의 그룹은 함께 암호화되어, 같은 크기의 암호문 그룹을 생성한다. 정의에 의해 블록 암호에서는 키가 여러 값으로 구성되더라도 단일 키는 전체 블록을 암호화하는 데 사용된다.

 

조합

실제로 평문 블록은 개별적으로 암호화되지만, 키수열을 사용하여 블록 단위로 전체 메시지를 암호화한다. 다시 말하면 개별 블록으로 봤을 때는 블록암호지만 각블록을 한 개의 단위로 생각하고 전체 메시지를 봤을 때는 스트림 암호이다. 각 블록은 암호화 과정 중이나 이전에 생성된 다른 키를 이용한다.

반응형

댓글