Download - 3 장 . 고전 대칭 키 암호
1
경일대학교 사이버보안학과김현성 교수
2
목차3.1 개요3.2 대치 암호3.3 전치 암호3.4 고전 대칭키 암호
3
3.1 개요
4
3.1 개요고전 대칭키 암호를 학습하는 이유
고전 암호가 현대 암호 보다 더 간단하고 이해하기 쉬움고전 암호는 현대 암호학의 기초이며 , 현대 암호를 더
잘 이해하는데 도움이 됨고전 암호는 컴퓨터를 사용하여 쉽게 공격되기 때문에
현대 암호를 사용하게 된 이론적인 근거를 제공
이 절의 내용Kerckhoff 의 원리암호해독고전암호의 분류
5
3.1 개요평문 (plaintext)
Alice 가 Bob 에게 보내려는 본래의 메시지암호문 (ciphertext)
공격자가 이해할 수 없도록 변형된 메시지암호 알고리즘 (encryption algorithm)
평문으로부터 암호문을 생성하기 위한 알고리즘복호 알고리즘 (decryption algorithm)
암호문으로부터 평문을 생성하기 위한 알고리즘비밀키
Alice 와 Bob 사이에 미리 공유된 비밀값으로 , 암호화와 복호화할 때 사용됨
6
3.1 개요암호화 / 복호화
P 와 x 는 평문 , C 는 암호문 , K 는 키 E 는 암호화 알고리즘 , D 는 복호화 알고리즘
m 명의 사용자가 서로 통신을 해야 한다면 몇 개의 키가 필요한가 ? (m x (m - 1))/2
암호화
복호화
7
3.1 개요[ 그림 3.2] 동일한 키로 자물쇠를 채우고 여는
방법으로서의 대칭키 암호화
8
3.1 개요 - Kerckhoff 의 원리Kerckhoff 의 원리
암호 /복호 알고리즘은 공개 공격자도 암호 /복호 알고리즘을 알고 있다고 가정 군사용에서는 알고리즘을 비밀로 유지
암호시스템의 안전성은 키의 비밀 ( 안전성 ) 에만 의존 현대 암호에서는 매우 큰 키 공간 (key domain) 을
갖도록하여 공격자가 키를 찾기 어렵게 함 키 공간 : 어떤 암호로 사용할 수 있는 「모든 키의 집합」 키 공간의 크기 : 이 키 공간에 속하는 가능한 키의 총수
9
3.1 개요 - 암호해독암호해독 (Cryptanalysis)
암호 (Cryptography) 비밀 코드를 생성하는 과학이자 예술
암호해독 (Cryptanalysis) 암호 코드를 깨는 과학이자 예술 다른 사람의 코드를 깨는 데 사용되는 것이 아니라 , 우리가
사용하는 암호 시스템이 얼마나 취약한지 측정하는데 필요 또한 더 안전한 코드를 생성하는데 도움
10
3.1 개요 – 암호해독암호해독 공격
암호시스템은 공격자가 메시지를 복호화하는 것을 막기 위해 이런 종류의 공격들에 안전해야 함
암호문 단독 공격 알려진 ( 기지 ) 평문 공격 선택 평문 공격 선택 암호문 공격
11
3.1 개요 – 암호해독암호문 단독 공격 (Ciphertext-Only Attack)
Eve 가 단지 암호문을 얻어서 대응되는 평문이나 키를 찾아내려는 공격
이때 , Eve 는 암호 /복호 알고리즘을 알고 있다고 가정함
암호문만을 필요하므로 공격자가 가장 쉽게 행할 수 있는 공격
12
3.1 개요 – 암호해독암호문 단독 공격 ( 계속 )
다음 방법들이 암호문 단독 공격에 사용될 수 있음 전수조사 공격 (Brute-Force Attack)
Eve 는 모든 가능한 키 각각을 사용하여 의미있는 평문을 얻을 때까지 가로챈 암호문을 복호화하는 것을 반복
대응책 : 가능한 키의 수가 매우 커야 함 통계적인 공격 (Statistical Attack)
암호문을 평문 언어의 고유한 특징 정보를 사용하여 해독 대응책 : 암호문이 평문 언어의 특징을 드러내지 않아야 함
패턴 공격 (Pattern Attack) 암호문에 존재할 수 있는 패턴을 이용하여 복호화 대응책 : 암호문이 랜덤하게 암호화되어야 함
13
3.1 개요 – 암호해독알려진 ( 기지 ) 평문 공격 (Known-Plaintext
Attack)Eve 는 미리 수집한 평문 /암호문 쌍을 사용하여 특정
암호문을 해독하려는 공격Eve 가 더 많은 정보를 이용할 수 있기 때문에 ,
암호문단독공격보다 해독하기가 더 쉽지만 , 이런 상황은 더 적음
14
3.1 개요 – 암호해독선택 평문 공격 (Chosen-Plaintext Attack)
Eve 가 암호알고리즘에 접근하여 선택한 평문들에 대한 암호문들을 수집한 후 , 특정 암호문을 해독하려는 공격
15
3.1 개요 – 암호해독선택 암호문 공격 (Chosen-Ciphertext Attack)
Eve 가 복호알고리즘에 접근할 수 있어 선택한 암호문들에 대한 평문들을 수집한 후 , 특정 암호문을 해독하려는 공격
16
3.1 개요 – 고전 암호의 분류고전 대칭키 암호의 분류
대치 암호 (Substitution Ciphers) 평문에서 하나의 기호 (Symbol) 를 다른 기호로 변경하여
암호문을 생성치환 암호 (Transposition Ciphers)
평문에서 기호의 위치를 재정렬하여 암호문을 생성
17
3.2 대치암호대치암호 (Substitution ciphers)
하나의 기호 (symbol) 를 다른 기호로 대체하여 암호화예 1) 만약 평문에서 기호가 알파벳이라면
하나의 문자가 다른 문자로 대체 A 를 D 로 대체하고 , T 를 Z 로 대체
예 2) 만약 기호가 숫자 (0~9) 라면 하나의 숫자를 다른 숫자로 대체 3 은 7 로 대체하고 , 2 는 6 으로 대체
이 절의 내용단일문자 암호 (Monoalphabetic ciphers)다중문자 암호 (Polyalphabetic ciphers)
18
3.2 대치암호 – 단일문자 암호단일문자 암호 (Monoalphabetic Ciphers)
평문의 기호와 암호문의 기호는 항상 일대일 대응 관계 [ 예제 3.1] 두 개의 알파벳 l 을 알파벳 O 로 모두
암호화하였기 때문에 , 단일문자 암호일 가능성이 매우 높음
Plaintext: hello Ciphertext: ABNZF
[ 예제 3.2] 두 개의 알파벳 l 이 다른 문자로 암호화되었기 때문에 단일문자 암호가 아님
19
3.2 대치암호 – 단일문자 암호덧셈 암호 (Additive Cipher)
덧셈 암호는 가장 간단한 단일문자 암호이동 암호 (Shift cipher) 또는 시저암호 (Caesar
cipher) 라고도 함[ 그림 3.8] 평문과 암호문을 구성하는 문자를 Z26 의
원소로 표현
20
3.2 대치암호 – 단일문자 암호덧셈 암호 ( 계속 )
암호화는 평문에 키를 덧셈 , 복호화를 평문에 키를 뺄셈덧셈 암호에서 평문 , 암호문 , 키는 Z26 의 원소
Z26 : 26 으로 나누었을 때 나머지들의 집합 모든 연산은 Z26 에서 수행되기 때문에 , 복호화는 키의 곱셈에
대한 역원 (-k) 을 더하는 것을 의미 [ 그림 3.9] 덧셈 암호
21
3.2 대치암호 – 단일문자 암호덧셈 암호 ( 계속 )
[ 예제 3.3] 키가 15 인 덧셈 암호를 이용하여 “ hello” 를 암호화하여라 .
22
3.2 대치암호 – 단일문자 암호덧셈 암호 ( 계속 )
[ 예제 3.4] 키가 15 인 덧셈 암호를 이용하여 “ WTAAD” 를 복호화하여라 .
23
3.2 대치암호 – 단일문자 암호덧셈 암호에 대한 암호해독
25 개의 키만 사용가능하기 때문에 , 전수조사 공격을 이용한 암호문 단독 공격에 취약
[ 예제 3.5] Eve 가 암호문 “ UVACLYFZLJBYL” 을 도청했다면 , 전수조사 공격을 이용하여 암호문을 해독하라 .
24
3.2 대치암호 – 단일문자 암호덧셈 암호에 대한 암호해독 ( 계속 )
Eve 가 긴 암호문을 가지고 있다면 , 특정 문자의 출현 빈도수를 이용한 통계적인 공격에도 취약
[ 표 3.1] 영어에서 알파벳의 출현 빈도수
25
3.2 대치암호 – 단일문자 암호덧셈 암호에 대한 암호해독 ( 계속 )
[ 예제 3.6] 통계적인 공격을 이용하여 해독하라
문자들의 출현 빈도수를 조사하면 I = 14, V = 13, S=12 암호문에서 I 가 확률적으로 평문에서 e와 대응됨따라서 key = 4, Eve 는 암호문을 복호화
26
3.2 대치암호 – 단일문자 암호덧셈 암호에 대한 암호해독 ( 계속 )
통계적인 공격 ( 계속 ) 단일 문자의 출현 빈도수 정보만으로 해독하기가 쉽지 않음 특정한 문자들을 결합한 형태의 빈도수를 알아야 할 필요가
있을 수 있음 [ 표 3.2] 영어에서 두 문자열 (diagrams) 과 세 문자열
(trigrams) 의 출현 빈도수
구분 문자열
27
덧셈 암호 프로그래밍덧셈 암호 프로그래밍
입력
출력
처리
28
덧셈 암호 프로그래밍
어떻게 문자를 숫자로 치환 ?
어떻게 덧셈 연산을 A~Z 사이로 적용 ?
ASCII Code
% 연산자
29
덧셈 암호 프로그래밍A : 41 (16진수 )
0100 0001(2진수 )65 (10진수 )
a : 61 (16진수 )0110 0001(2진수 )97 (10진수 )
30
덧셈 암호 프로그래밍문자에 대한 처리 및 연산 ?
A=> 65(10 진수 ) a=>97(10 진수 )어떻게 65-> 0 으로 97->0 으로 매핑 ?
대문자일경우 -65 소문자일경우 -97
31
덧셈 암호 프로그래밍
결과값은 범위가 0~25 ?
=> mod 연산 적용법 ? % 연산자 사용
32
덧셈 암호 프로그래밍입력 ?
평문 char cipher[50]; scanf("%s", cipher);
키 scanf("%d", &key);
출력 ? for (j=0; j<i; j++) printf("%c", cipher[j]);
33
덧셈 암호 프로그래밍대문자 ?
if (cipher[i] >= 65) && (cipher[i] <= 90)
소문자 ?If (cipher[i] >= 97) && (cipher[i] <= 122)
덧셈연산 ?cipher[i] = (cipher[i]+key) % 26;
34
덧셈 암호 프로그래밍#include <stdio.h>
void caesar (char cipher[], int shift);
int main () {
char cipher[50];int key;
printf("Enter text to be encrypted IN CAPITAL LETTERS ONLY: ");scanf("%s", cipher);
printf("How many shifts do you prefer? 1-25 only: "); fflush(stdin); scanf("%d", &key);
caesar (cipher, key);
return 0;}
void caesar (char cipher[], int shift) { int i = 0, j=0; int temp = 0;
while (1) { if ((cipher[i] > 64) && (cipher[i] < 91)){
temp = cipher[i] - 65;
temp = (temp + shift) % 26;
cipher[i] = temp + 65;
i++; } else break;
} for (j=0; j<i; j++)
printf("%c", cipher[j]);}
36
3.2 대치암호 – 단일문자 암호곱셈 암호 (Multiplicative Ciphers)
암호화는 평문에 키를 곱 , 복호화는 암호문을 키로 나눔 평문과 암호문은 Z26 의 원소이고 , 키는 Z26
*의 원소 Z26
* : 26 으로 나누었을 때 나머지들 중에서 26 과 서로소인 수들의 집합
모든 연산은 Z26 에서 수행되기 때문에 , 복호화는 키의 곱셈에 대한 역원 (k-1) 을 곱하는 것을 의미
암호화와 복호화가 서로 역함수 관계에 있음을 보장하기 위해 , 키는 집합 Z26
*의 원소이어야 함
37
3.2 대치암호 – 단일문자 암호곱셈 암호 ( 계속 )
[ 예제 3.7] 임의의 곱셈 암호에 대하여 키 공간은 ? 키는 Z26
*의 원소이어야 함 이 집합은 1, 3, 5, 7, 9, 11, 13,15, 17, 19, 21, 23, 25
만을 포함[ 예제 3.8] 메시지 “ hello” 를 암호화하는데 키가 7
인 곱셈 암호를 사용하여라 . 암호문은 “ XCZZU”
38
3.2 대치암호 – 단일문자 암호다음을 암호하시오
평 문 : “kyungil”암호키 : 11
39
3.2 대치암호 – 단일문자 암호아핀 암호 (Affine Ciphers)
두 키를 사용해 , 덧셈암호와 곱셈암호를 결합한 암호
40
3.2 대치암호 – 단일문자 암호아핀 암호 ( 계속 )
[ 예제 3.9] 아핀 암호는 키 쌍 , 즉 두 개의 키 ( 첫 번째 키는 Z26
* 의 원소이고 , 두 번째 키는 Z26 의 원소 ) 를 사용한다 . 키 공간의 크기는 12×26 = 312 이다 .
[ 예제 3.10] 키 쌍이 (7, 2) 인 아핀 암호를 사용하여 메시지 “ hello” 를 암호화하라 .
41
3.2 대치암호 – 단일문자 암호아핀 암호 ( 계속 )
[ 예제 3.11] 키 쌍이 모듈러 26 에서 (7, 2) 인 아핀 암호를 사용하여 메시지 “ hello” 를 복호화하여라 .
[ 예제 3.12] 덧셈 암호는 k1 = 1 인 아핀 암호와 같다 . 곱셈 암호는 k2 = 0 인 아핀 암호와 같다 .
42
3.2 대치암호 – 단일문자 암호아핀 암호에 대한 암호 해독
암호문 단독 공격의 전수조사 공격과 통계적인 공격도 적용 가능
선택 평문 공격도 적용 가능 ( 책 67p 참조 )
43
3.2 대치암호 – 단일문자 암호아핀 암호에 대하여
평 문 : “kyungil”암호키 : (3, 5)
암호복호
44
3.2 대치암호 – 단일문자 암호단일문자 대치암호
덧셈 암호 , 곱셈 암호 , 아핀 암호는 작은 키 공간을 갖기 때문에 전수조사 공격에 취약
더 좋은 방법 평문 문자와 대응되는 암호문 문자 사이의 사상을 구성하는
방법이 있음 Alice 와 Bob 은 각각의 문자에 대한 대응 관계를 나타낸
표를 공유한 후 암복호화에 이용 [ 그림 3.12] 단일문자 대치암호에 사용되는 키의 예
45
3.2 대치암호 – 단일문자 암호단일문자 대치암호 ( 계속 )
더 좋은 방법 ( 계속 ) [ 예제 3.13] 그림 3.12 의 키를 사용하여 다음 메시지를 암호화
암호문
분석 키 공간의 크기 : 26! (= 4 x 1026) 키 전수조사 공격에도 성공이 쉽지 않음 문자 출현 빈도 때문에 통계적인 공격에 취약
46
3.2 대치암호 – 단일문자 암호평 문
I am a student at Dept. of Cyber Security
C WO F H G E Y P ND MX Q A L I U R V K S B J Z T
47
3.2 대치암호 – 다중문자 암호다중문자암호 (Polyalphabetic Ciphers)
평문 문자와 암호문 문자와의 관계를 일대다 대응하도록 암호화함
예를 들어 , “a” 는 문장의 시작점에서 “ D” 로 암호화되고 , 중간에서 “ N” 으로 암호화될 수 있음
다중문자 암호는 언어의 문자 빈도 ( 통계학적 성질을 제거할 수 있는 ) 감추는 장점이 있음
따라서 Eve 는 암호문을 해독하기 위하여 단일 문자 빈도 분석을 사용할 수 없음
48
3.2 대치암호 – 다중문자 암호자동키 암호 (Autokey Cipher)
[ 예제 3.14] Alice 와 Bob 이 초기 키 값 k1=12 를 가진 자동키 암호를 사용하기로 합의 했다고 가정하자 . Alice 는 Bob 에게 “ Attack is Today” 라는 문서를 보내려고 한다 . 암호화는 다음과 같이 진행된다 .
49
3.2 대치암호 – 다중문자 암호자동키 암호에 대한 암호 해독
평문의 단일 문자 통계를 감출 수 있음전수조사 공격에는 취약
첫 번째 부분 키의 크기 : 25 개언어의 특징을 감출 수 있으면서 키 공간이 큰
다중문자 암호가 필요함
50
3.2 대치암호 – 다중문자 암호자동키 암호를 이용하여 다음을 암호화 하시오
평 문 : I am a student at Dept. of Cyber Security암호키 : 20
51
3.2 대치암호 – 다중문자 암호플레이페어 암호 (Playfair Cipher)
제 1차 세계 대전 중 영국군이 사용한 암호 암호화 규칙
비밀키를 5x5 행렬로 배열된 25 개 문자로 구성 평문에 같은 글자가 연속하면 중간에 가짜 문자 삽입 평문 개수가 홀수이면 맨 끝에 가짜 문자 삽입 평문을 두 글자씩 분리 평문 두 글자가 비밀키와 같은 행에 있으면 암호문은 각각 오른쪽에 인접한 글자
평문 두 글자가 비밀키와 같은 열에 있으면 암호문은 각각 아래에 위치한 글자 평문 두 글자가 비밀키와 같은 열에 있지 않으면 각 문자에 대응되는 암호문은
각 문자와 같은 행에 있지만 다른 문자와 같은 열에 위치한 문자 [ 예제 3.15] “hello” 라는 평문을 암호화
[ 그림 3.13] 비밀 키의 예
52
3.2 대치암호 – 다중문자 암호플레이페어 암호에 대한 암호 해독
전수조사 공격을 적용하는 것은 매우 어려움 키 공간 : 25!
암호문은 문자의 단일 문자 빈도를 숨길 수 있음그러나 암호문에 두 문자열의 빈도는 보존되기 때문에
키를 찾기 위하여 두 문자열 빈도 테스트에 기반한 암호문 단독 공격을 사용할 수 있음
53
3.2 대치암호 – 단일문자 암호플레이페어 암호에 대하여
평 문 : “she is looking at you”암호키 : kyungil
암호복호
55
3.2 대치암호 – 다중문자 암호Vigenere 암호 (Vigenere Cipher)
16세기 프랑스 수학자 Blaise de Vigenere 가 고안
[ 예제 3.16] 6 문자 키워드 “ PASCAL” 을 이용하여 “ She is listening” 이라는 메시지를 암호화하는 방법을 알아보자 초기 키 수열은 (15, 0, 18, 2, 0, 11) 키 수열은 필요한 만큼 이 초기 키 수열의 반복
56
3.2 대치암호 – 다중문자 암호Vigenere 암호 ( 계속 )
[ 예제 3.17] Vigenere 암호는 m 개의 덧셈 암호의 조합으로써 간주될 수 있음 [ 그림 3.14] m 개의 덧셈 암호 조합으로서의 Vigenere
암호
57
3.2 대치암호 – 다중문자 암호Vigenere 암호 ( 계속 )
[ 예제 3.18] 예제 3.17 로 , 덧셈 암호는 m = 1 인 경우의 Vigenere 암호임을 앎 [ 표 3.3] Vigenere 표
평문
키
암호문
58
3.2 대치암호 – 단일문자 암호Vigenre 암호에 대하여
평 문 : “beyond the limit”암호키 : kyungil
암호복호
59
3.2 대치암호 – 다중문자 암호힐 암호 (Hill Cipher)
평문을 같은 크기의 블록으로 나누어 암호화하는 블록암호임 블록 (Block): 블록의 각 문자가 블록의 다른 문자의 암호화에 영향을
미치는 방법으로 한번에 한 블록씩 암호화됨 지금까지의 암호들은 스트림 (Stream) 암호에 속함
[ 그림 3.15] Hill 암호의 키
Hill 암호에서 키 행렬은 곱셈에 대한 역원을 가져야 함
60
3.2 대치암호 – 다중문자 암호힐 암호 ( 계속 )
l 이 블록의 개수일 때 평문은 l × m 행렬 예를 들어 , “code is ready” 라는 평문은 마지막 블록에 추가적인 가짜
문자 “ z” 를 삽입하고 띄어쓰기를 없애면 3 × 4 행렬이 됨 암호문은 “ OHKNIHGKLISS” Bob 은 키 행렬의 역원을 사용하여 이 메시지를 복호화할 수 있음
61
3.2 대치암호 – 다중문자 암호힐 암호에 대한 암호해독
키 공간의 크기가 26m x m 이기 때문에 전수조사 공격이 매우 힘들어 암호문 단독 공격이 어려움
암호문에 평문 통계가 나타나지 않으므로 통계적인 공격이 어려움Eve 가 m 값과 최소 m 블록에 대한 평문 /암호문 쌍을 알고
있다면 알려진 평문 공격을 적용할 수 있음 [ 예제 3.21] Eve 가 m = 3 을 알고 있다고 가정하자 . 다음과 같이 세 개의 평문 /암호문 블록 쌍을 가로채었다 ( 이때 , 같은 메시지에서 얻을 필요는 없다 ).
62
3.2 대치암호 – 다중문자 암호힐 암호에 대한 암호해독 ( 계속 )
[ 예제 3.21] ( 계속 ) Eve 는 이들 쌍으로부터 행렬 P 와 C 를 생성한다 . P 의 역행렬이
존재하기 때문에 , 다음과 같이 P 의 역행렬을 계산하고 C 에 곱하여 행렬 K 을 구한다 .
이제 Eve 는 키를 얻었으므로 , 그 키로 암호화된 임의의 암호문을 해독할 수 있다 .
63
3.2 대치암호 – 다중문자 암호힐암호에 대하여
평 문 : “beyond the limit”암호키 :
암호복호
64
3.2 대치암호 – 다중문자 암호One-Time Pad
암호의 목적은 완전한 보안 (perfect secrecy)임 Shannon 의 연구
각 평문 문자가 키 공간에서 랜덤하게 선택된 키로 암호화된다면 완벽한 보안이 이루어진다는 것을 증명
One-time pad 암호 Vernam 은 Shannon 의 연구에 기초하여 one-time pad 라고 하는 암호를
고안함 (1917년 고안되었고 특허를 받음 ) 키는 평문과 같은 길이를 가지며 완전히 랜덤하게 선택되어야 함 완벽한 암호이지만 , 키가 매번 새롭게 갱신되어야 하기에 상업적으로 구현 불가능
안전한 암호 절대 안전한 암호
Vernam 암호처럼 이론적으로 해독이 불가능한 암호 계산적으로 안전한 암호
해독하는 데 채산이 맞지 않을 정도로 수고와 시간이 소요되며 , 현대암호에 사용됨
65
3.2 대치암호 – 다중문자 암호Rotor 암호 (Rotor Cipher)
Rotor 의 초기 설정이 Alice 와 Bob 사이의 비밀키임평문 “ bee” 는 암호문 “ BCA” 로 암호화됨키 공간이 26! 이므로 전수조사 공격에 안전단일문자 대치 암호보다 통계적인 공격에 훨씬 강함
66
3.2 대치암호 – 다중문자 암호에니그마 (Enigma Machine)
원래 Sherbius 에 의해 최초로 고안되었으나 , 독일군에 의해 변형되어 세계 2 차 대전 동안 널리 이용됨
Rotor 암호의 원리를 기반으로 함책 78p 참조
67
3.3 전치암호전치암호 (Transposition Ciphers)
평문 내에서 기호들의 위치를 바꿔 암호화하는 기법예 ) 평문의 첫 번째에 위치한 기호는 암호문의 열 번째
위치로 , 평문의 여덟 번째 위치의 기호는 암호문의 첫 번째 위치에 나타나게 함
즉 , 전치암호는 기호들을 재 정렬시킴
이 절의 내용키가 없는 전치암호 (Keyless Transposition Ciphers)키가 있는 전치암호 (Keyed Transposition Ciphers)두 가지 접근법의 결합 (Combining Two Approaches)
68
3.3 전치암호 - 키 없는 전치암호 키 없는 전치암호 (Keyless Transposition
Ciphers) 과거에 사용된 간단한 전치암호는 키가 없음[ 예제 3.22] Rail fence 암호
평문을 지그재그 패턴으로 ( 열 순서를 의미 ) 두 열에 배열하고 , 행 순서의 패턴으로 읽어서 암호문을 생성
예 ) “Meet me at the park” 라는 메시지를 Bob 에게 보내기 위하여 , Alice 는 다음과 같이 기록
Alice 가 생성한 암호문 : “MEMATEAKETETHPR”
69
3.3 전치암호 - 키 없는 전치암호 키 없는 전치암호를 이용하여 다음을 처리하시오
평 문 : “Dept. of Cyber Security”
70
3.3 전치암호 - 키 없는 전치암호 [ 예제 3.23] 두 번째 방법
Alice 와 Bob 은 4개의 열의 개수를 사용하기로 합의한 후 ,Alice 는 네 개의 열을 가진 표에 다음과 같이 동일한 평문을
행 순서로 기록
Alice 가 생성한 암호문 : “MMTAEEHREAEKTTP”
71
3.3 전치암호 - 키 없는 전치암호 [ 예제 3.24] 예 3.23 의 암호는 실질적으로 전치암호이
다 . 다음은 위치에 근거하여 , 평문의 각 문자를 암호문으로 바꾸는 순열을 나타냄
평문의 두 번째 문자는 암호문의 다섯 번째 위치로 옮겨지고 , 세 번째 문자는 아홉 번째 위치로 옮겨짐
그러나 , 문자의 위치가 바뀌었더라도 , 순열에는 (01, 05, 09, 13), (02, 06, 10, 13), (03, 07, 11, 15), (08, 12) 와 같은 패턴이 존재
각 그룹에서 , 두 개의 인접한 수의 차이는 4
72
3.3 전치암호 - 키 없는 전치암호 4개의 열을 이용한 두번째 기법을 이용하여 다음을 처리하시오평 문 : “We are student at Dept. of Cyber
Security”
73
3.3 전치암호 - 키 있는 전치암호 키 있는 전치암호 (Keyed Transposition
Ciphers)블록이라고 하는 사전에 정의된 크기로 평문을 나눈 뒤 , 각각의 블록에 독립적으로 키를 사용하여 문자를 순열시킴
74
3.3 전치암호 - 키 있는 전치암호 [ 예제 3.25]
Alice 는 “ Enemy attacks tonight” 이라는 메시지를 Bob 에게 전달해야 한다 .
Alice 와 Bob 은 그 문장을 5 글자의 그룹으로 나눈 뒤 각 그룹의 문자를 치환한다 . 다음은 마지막 그룹이 다른 그룹과 같은 크기를 갖도록 마지막에 가짜 문자 (a bogus character) 를 삽입한 이후의 배치를 나타낸다 .
치환을 하게 되면
75
3.3 전치암호 - 키 없는 전치암호 키 있는 전치암호를 이용하여 다음을 처리하시오
평 문 : “Dept. of Cyber Security”암호키 : 51324
76
3.3 전치암호 - 두 방법의 결합두 방법의 결합
[ 예제 3.26]
77
3.3 전치암호 - 두 방법의 결합키
예제 3.26 에서는 단일키가 두 방향으로 즉 , 암호화에서 아래쪽으로 , 복호화에서 위쪽으로 열 교환에 사용되었다 . 관습적으로 이와 같은 그래픽 표현에서는 하나는 암호화에 이용되고 , 다른 하나는 방향을 나타내는 두 개의 키를 생성한다 .
[ 그림 3.22] 전치암호에서의 암 · 복호키
78
3.3 전치암호 - 두 방법의 결합키 ( 계속 )
[ 그림 3.23] 전치암호에서의 암호화키와 복호화키 사이의 변환
79
3.3 전치암호 - 두 방법의 결합행렬의 사용
전치암호의 암복호화 과정을 살펴보기 위하여 행렬을 이용 가능 [ 예제 3.27] 행렬을 사용한 암호화 과정
4 × 5 평문 행렬에 5 × 5 암호키를 곱하면 4 × 5 암호문 행렬이 됨 먼저 , 예 3.26 에서 문자를 (00 부터 25 까지 ) 숫자 값으로 변화시켜야 함 [ 그림 3.24] 전치암호에서 키의 행렬 표현
80
3.3 전치암호 - 두 방법의 결합전치암호에 대한 암호 해독
다음과 같은 암호문 단독 공격에 취약 통계적인 공격
암호문의 문자 빈도를 변화시키지 않고 단지 문자를 재정렬하므로 , 단일 문자 빈도 분석 공격에 취약
두 문자열이나 세 문자열의 빈도를 보존하지는 않음 패턴 공격
키가 있는 전치암호로 생성된 암호문은 어떤 반복되는 패턴을 가짐
81
3.3 전치암호 - 두 방법의 결합이중 전치 암호 (Double Transposition Ciphers)
암호화 /복호화 알고리즘을 두 번 반복하여 수행암호 해독을 어렵게 함
82
3.4 스트림 암호와 블록 암호 일반적으로 , 대칭키 암호를 두 개의 큰 분류 ,
스트림 암호와 블록 암호로 나눌 수 있음현대 암호에 이 정의가 적용되지만 , 이 분류는 고전
암호에도 적용됨
이 절의 내용스트림 암호 (Stream Ciphers)블록 암호 (Block Ciphers)결합 (Combination)
83
3.4 스트림 암호와 블록 암호 – 스트림 암호스트림 암호 (Stream Ciphers)
평문의 각 비트 ( 또는 바이트 ) 를 하나씩 암호화하는 방식평문 수열 (P), 암호문 수열 (C), 키 수열 (K) 등으로 구성
[ 그림 3.26] 스트림 암호
84
3.4 스트림 암호와 블록 암호 – 스트림 암호[ 예제 3.30]
덧셈 암호는 키의 반복된 값을 키수열로 사용하는 스트림 암호로 분류될 수 있다 .
다시 말해서 , 키수열은 사전에 정의된 키수열 값이거나 K=(k1, k2, …, kn) 로 간주된다 .
그러나 이 암호에서 암호문의 각 문자는 키수열이 독립적으로 생성되기 때문에 , 연관된 평문 문자에만 의존하여 결정된다 .
[ 예제 3.31]단일문자 대치암호는 스트림 암호이다 .그러나 이 경우 , 키수열 값은 현재의 평문 문자를 사상
표에서 연관된 암호문 문자로 연결시키는 값이다 .
85
3.4 스트림 암호와 블록 암호 – 스트림 암호[ 예제 3.32]
정의에 의하여 Vigenere 암호 또한 스트림 암호이다 .이 경우 , 키수열은 m 개 값의 반복이다 . 이때 , m 은
키워드의 크기이다 . 즉 , 키는 다음과 같다 .
[ 예제 3.33]키수열에 근거하여 스트림 암호를 나누는 기준을 생각해 볼
수 있다 . ki값이 평문 수열에서 평문 문자의 위치에 따라 결정되지
않으면 , 스트림 암호는 단일문자 암호이다 . 그렇지 않다면 , 그 암호는 다중문자 암호이다 .
86
3.4 스트림 암호와 블록 암호 – 스트림 암호[ 예제 3.33]
덧셈 암호는 키 수열에서 ki가 고정되어 있기 때문에 , 명백하게 단일문자 암호이다 . 따라서 키 수열은 평문 문자 위치에 의해 결정되지 않는다 .
단일문자 대치암호는 ki가 평문 수열에서 연관된 문자 위치에 의해 결정되지 않기 때문에 , 명백하게 단일문자 암호이다 . 키 값은 평문 문자의 값에 의해서만 결정된다 .
Vigenere 암호는 ki가 명백하게 평문 문자 위치에 의해 결정되기 때문에 , 다중문자 암호이다 . 그러나 그 의존성은 주기적이다 (cyclic). 키는 m 만큼 떨어진 두 문자에 동일하게 적용된다 .
87
3.4 스트림 암호와 블록 암호 – 블록 암호블록 암호 (Block Ciphers)
블록 암호에서 , 크기가 m (m>1) 인 평문 기호의 그룹은 함께 암호화 되어 , 같은 크기의 암호문 그룹을 생성한다 .
정의에 따라 , 블록 암호에서는 키가 여러 값으로 구성되더라도 단일 키는 전체 블록을 암호화하는데 사용된다 .
[ 그림 3.27] 블록 암호
88
3.4 스트림 암호와 블록 암호 – 블록 암호[ 예제 3.34]
플레이페어 암호는 블록 암호이다 . 블록의 크기는 m = 2 이며 , 두 문자가 함께 암호화된다 .
[ 예제 3.35]Hill 암호는 블록 암호이다 . 크기가 2 이상인 평문 블록은 단일 키 ( 행렬 ) 를 이용하여 함께 암호화된다 . 이 암호에서 , 암호문의 각 문자값은 평문의 모든 문자값에 의해 결정된다 . 키가 m × m 값으로 구성되지만 , 키는 단일 키로 간주된다 .
[ 예제 3.36]블록 암호의 정의에서 암호문 블록의 각 문자가 모든 평문 블록의 문자에 의해 결정되기 때문에 확실히 모든 블록 암호는 다중문자 암호이다 .
89
3.4 스트림 암호와 블록 암호 – 조합조합 (Combination)
실제로 , 평문 블록은 개별적으로 암호화되지만 , 키수열을 사용하여 블록 순서로 전체 메시지를 암호화
다시 말하면 , 개별 블록으로 봤을 때는 블록 암호이지만 , 각블록을 단일 유닛으로 생각하고 전체 메시지를 봤을 때는 스트림 암호
각 블록은 암호화 과정 중이나 이전에 생성된 다른 키를 이용
90
과제물대치암호와 치환암호 개념을 이용하여 다음을 설계하시오 .본인만의 암호 알고리즘과 복호알고리즘을 설계하시오 .
암호키를 어떻게 이용하는지 명확하게 제시하시오 .본인이 설계한 알고리즘의 안전성에 대한 분석을
제시하시오 .
제출방법 : e-mail