3 장 . 고전 대칭 키 암호

90
1 경경경경경 경경경경경경경 경경경 경경

Upload: tanisha-patrick

Post on 30-Dec-2015

128 views

Category:

Documents


1 download

DESCRIPTION

3 장 . 고전 대칭 키 암호. 경일대학교 사이버보안학과 김현성 교수. 목차. 3.1 개요 3.2 대치 암호 3.3 전치 암호 3.4 고전 대칭키 암호. 3.1 개요. 3.1 개요. 고전 대칭키 암호를 학습하는 이유 고전 암호가 현대 암호 보다 더 간단하고 이해하기 쉬움 고전 암호는 현대 암호학의 기초이며 , 현대 암호를 더 잘 이해하는데 도움이 됨 고전 암호는 컴퓨터를 사용하여 쉽게 공격되기 때문에 현대 암호를 사용하게 된 이론적인 근거를 제공 이 절의 내용 Kerckhoff 의 원리 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 3 장 .  고전 대칭 키 암호

1

경일대학교 사이버보안학과김현성 교수

Page 2: 3 장 .  고전 대칭 키 암호

2

목차3.1 개요3.2 대치 암호3.3 전치 암호3.4 고전 대칭키 암호

Page 3: 3 장 .  고전 대칭 키 암호

3

3.1 개요

Page 4: 3 장 .  고전 대칭 키 암호

4

3.1 개요고전 대칭키 암호를 학습하는 이유

고전 암호가 현대 암호 보다 더 간단하고 이해하기 쉬움고전 암호는 현대 암호학의 기초이며 , 현대 암호를 더

잘 이해하는데 도움이 됨고전 암호는 컴퓨터를 사용하여 쉽게 공격되기 때문에

현대 암호를 사용하게 된 이론적인 근거를 제공

이 절의 내용Kerckhoff 의 원리암호해독고전암호의 분류

Page 5: 3 장 .  고전 대칭 키 암호

5

3.1 개요평문 (plaintext)

Alice 가 Bob 에게 보내려는 본래의 메시지암호문 (ciphertext)

공격자가 이해할 수 없도록 변형된 메시지암호 알고리즘 (encryption algorithm)

평문으로부터 암호문을 생성하기 위한 알고리즘복호 알고리즘 (decryption algorithm)

암호문으로부터 평문을 생성하기 위한 알고리즘비밀키

Alice 와 Bob 사이에 미리 공유된 비밀값으로 , 암호화와 복호화할 때 사용됨

Page 6: 3 장 .  고전 대칭 키 암호

6

3.1 개요암호화 / 복호화

P 와 x 는 평문 , C 는 암호문 , K 는 키 E 는 암호화 알고리즘 , D 는 복호화 알고리즘

m 명의 사용자가 서로 통신을 해야 한다면 몇 개의 키가 필요한가 ? (m x (m - 1))/2

암호화

복호화

Page 7: 3 장 .  고전 대칭 키 암호

7

3.1 개요[ 그림 3.2] 동일한 키로 자물쇠를 채우고 여는

방법으로서의 대칭키 암호화

Page 8: 3 장 .  고전 대칭 키 암호

8

3.1 개요 - Kerckhoff 의 원리Kerckhoff 의 원리

암호 /복호 알고리즘은 공개 공격자도 암호 /복호 알고리즘을 알고 있다고 가정 군사용에서는 알고리즘을 비밀로 유지

암호시스템의 안전성은 키의 비밀 ( 안전성 ) 에만 의존 현대 암호에서는 매우 큰 키 공간 (key domain) 을

갖도록하여 공격자가 키를 찾기 어렵게 함 키 공간 : 어떤 암호로 사용할 수 있는 「모든 키의 집합」 키 공간의 크기 : 이 키 공간에 속하는 가능한 키의 총수

Page 9: 3 장 .  고전 대칭 키 암호

9

3.1 개요 - 암호해독암호해독 (Cryptanalysis)

암호 (Cryptography) 비밀 코드를 생성하는 과학이자 예술

암호해독 (Cryptanalysis) 암호 코드를 깨는 과학이자 예술 다른 사람의 코드를 깨는 데 사용되는 것이 아니라 , 우리가

사용하는 암호 시스템이 얼마나 취약한지 측정하는데 필요 또한 더 안전한 코드를 생성하는데 도움

Page 10: 3 장 .  고전 대칭 키 암호

10

3.1 개요 – 암호해독암호해독 공격

암호시스템은 공격자가 메시지를 복호화하는 것을 막기 위해 이런 종류의 공격들에 안전해야 함

암호문 단독 공격 알려진 ( 기지 ) 평문 공격 선택 평문 공격 선택 암호문 공격

Page 11: 3 장 .  고전 대칭 키 암호

11

3.1 개요 – 암호해독암호문 단독 공격 (Ciphertext-Only Attack)

Eve 가 단지 암호문을 얻어서 대응되는 평문이나 키를 찾아내려는 공격

이때 , Eve 는 암호 /복호 알고리즘을 알고 있다고 가정함

암호문만을 필요하므로 공격자가 가장 쉽게 행할 수 있는 공격

Page 12: 3 장 .  고전 대칭 키 암호

12

3.1 개요 – 암호해독암호문 단독 공격 ( 계속 )

다음 방법들이 암호문 단독 공격에 사용될 수 있음 전수조사 공격 (Brute-Force Attack)

Eve 는 모든 가능한 키 각각을 사용하여 의미있는 평문을 얻을 때까지 가로챈 암호문을 복호화하는 것을 반복

대응책 : 가능한 키의 수가 매우 커야 함 통계적인 공격 (Statistical Attack)

암호문을 평문 언어의 고유한 특징 정보를 사용하여 해독 대응책 : 암호문이 평문 언어의 특징을 드러내지 않아야 함

패턴 공격 (Pattern Attack) 암호문에 존재할 수 있는 패턴을 이용하여 복호화 대응책 : 암호문이 랜덤하게 암호화되어야 함

Page 13: 3 장 .  고전 대칭 키 암호

13

3.1 개요 – 암호해독알려진 ( 기지 ) 평문 공격 (Known-Plaintext

Attack)Eve 는 미리 수집한 평문 /암호문 쌍을 사용하여 특정

암호문을 해독하려는 공격Eve 가 더 많은 정보를 이용할 수 있기 때문에 ,

암호문단독공격보다 해독하기가 더 쉽지만 , 이런 상황은 더 적음

Page 14: 3 장 .  고전 대칭 키 암호

14

3.1 개요 – 암호해독선택 평문 공격 (Chosen-Plaintext Attack)

Eve 가 암호알고리즘에 접근하여 선택한 평문들에 대한 암호문들을 수집한 후 , 특정 암호문을 해독하려는 공격

Page 15: 3 장 .  고전 대칭 키 암호

15

3.1 개요 – 암호해독선택 암호문 공격 (Chosen-Ciphertext Attack)

Eve 가 복호알고리즘에 접근할 수 있어 선택한 암호문들에 대한 평문들을 수집한 후 , 특정 암호문을 해독하려는 공격

Page 16: 3 장 .  고전 대칭 키 암호

16

3.1 개요 – 고전 암호의 분류고전 대칭키 암호의 분류

대치 암호 (Substitution Ciphers) 평문에서 하나의 기호 (Symbol) 를 다른 기호로 변경하여

암호문을 생성치환 암호 (Transposition Ciphers)

평문에서 기호의 위치를 재정렬하여 암호문을 생성

Page 17: 3 장 .  고전 대칭 키 암호

17

3.2 대치암호대치암호 (Substitution ciphers)

하나의 기호 (symbol) 를 다른 기호로 대체하여 암호화예 1) 만약 평문에서 기호가 알파벳이라면

하나의 문자가 다른 문자로 대체 A 를 D 로 대체하고 , T 를 Z 로 대체

예 2) 만약 기호가 숫자 (0~9) 라면 하나의 숫자를 다른 숫자로 대체 3 은 7 로 대체하고 , 2 는 6 으로 대체

이 절의 내용단일문자 암호 (Monoalphabetic ciphers)다중문자 암호 (Polyalphabetic ciphers)

Page 18: 3 장 .  고전 대칭 키 암호

18

3.2 대치암호 – 단일문자 암호단일문자 암호 (Monoalphabetic Ciphers)

평문의 기호와 암호문의 기호는 항상 일대일 대응 관계 [ 예제 3.1] 두 개의 알파벳 l 을 알파벳 O 로 모두

암호화하였기 때문에 , 단일문자 암호일 가능성이 매우 높음

Plaintext: hello Ciphertext: ABNZF

[ 예제 3.2] 두 개의 알파벳 l 이 다른 문자로 암호화되었기 때문에 단일문자 암호가 아님

Page 19: 3 장 .  고전 대칭 키 암호

19

3.2 대치암호 – 단일문자 암호덧셈 암호 (Additive Cipher)

덧셈 암호는 가장 간단한 단일문자 암호이동 암호 (Shift cipher) 또는 시저암호 (Caesar

cipher) 라고도 함[ 그림 3.8] 평문과 암호문을 구성하는 문자를 Z26 의

원소로 표현

Page 20: 3 장 .  고전 대칭 키 암호

20

3.2 대치암호 – 단일문자 암호덧셈 암호 ( 계속 )

암호화는 평문에 키를 덧셈 , 복호화를 평문에 키를 뺄셈덧셈 암호에서 평문 , 암호문 , 키는 Z26 의 원소

Z26 : 26 으로 나누었을 때 나머지들의 집합 모든 연산은 Z26 에서 수행되기 때문에 , 복호화는 키의 곱셈에

대한 역원 (-k) 을 더하는 것을 의미 [ 그림 3.9] 덧셈 암호

Page 21: 3 장 .  고전 대칭 키 암호

21

3.2 대치암호 – 단일문자 암호덧셈 암호 ( 계속 )

[ 예제 3.3] 키가 15 인 덧셈 암호를 이용하여 “ hello” 를 암호화하여라 .

Page 22: 3 장 .  고전 대칭 키 암호

22

3.2 대치암호 – 단일문자 암호덧셈 암호 ( 계속 )

[ 예제 3.4] 키가 15 인 덧셈 암호를 이용하여 “ WTAAD” 를 복호화하여라 .

Page 23: 3 장 .  고전 대칭 키 암호

23

3.2 대치암호 – 단일문자 암호덧셈 암호에 대한 암호해독

25 개의 키만 사용가능하기 때문에 , 전수조사 공격을 이용한 암호문 단독 공격에 취약

[ 예제 3.5] Eve 가 암호문 “ UVACLYFZLJBYL” 을 도청했다면 , 전수조사 공격을 이용하여 암호문을 해독하라 .

Page 24: 3 장 .  고전 대칭 키 암호

24

3.2 대치암호 – 단일문자 암호덧셈 암호에 대한 암호해독 ( 계속 )

Eve 가 긴 암호문을 가지고 있다면 , 특정 문자의 출현 빈도수를 이용한 통계적인 공격에도 취약

[ 표 3.1] 영어에서 알파벳의 출현 빈도수

Page 25: 3 장 .  고전 대칭 키 암호

25

3.2 대치암호 – 단일문자 암호덧셈 암호에 대한 암호해독 ( 계속 )

[ 예제 3.6] 통계적인 공격을 이용하여 해독하라

문자들의 출현 빈도수를 조사하면 I = 14, V = 13, S=12 암호문에서 I 가 확률적으로 평문에서 e와 대응됨따라서 key = 4, Eve 는 암호문을 복호화

Page 26: 3 장 .  고전 대칭 키 암호

26

3.2 대치암호 – 단일문자 암호덧셈 암호에 대한 암호해독 ( 계속 )

통계적인 공격 ( 계속 ) 단일 문자의 출현 빈도수 정보만으로 해독하기가 쉽지 않음 특정한 문자들을 결합한 형태의 빈도수를 알아야 할 필요가

있을 수 있음 [ 표 3.2] 영어에서 두 문자열 (diagrams) 과 세 문자열

(trigrams) 의 출현 빈도수

구분 문자열

Page 27: 3 장 .  고전 대칭 키 암호

27

덧셈 암호 프로그래밍덧셈 암호 프로그래밍

입력

출력

처리

Page 28: 3 장 .  고전 대칭 키 암호

28

덧셈 암호 프로그래밍

어떻게 문자를 숫자로 치환 ?

어떻게 덧셈 연산을 A~Z 사이로 적용 ?

ASCII Code

% 연산자

Page 29: 3 장 .  고전 대칭 키 암호

29

덧셈 암호 프로그래밍A : 41 (16진수 )

0100 0001(2진수 )65 (10진수 )

a : 61 (16진수 )0110 0001(2진수 )97 (10진수 )

Page 30: 3 장 .  고전 대칭 키 암호

30

덧셈 암호 프로그래밍문자에 대한 처리 및 연산 ?

A=> 65(10 진수 ) a=>97(10 진수 )어떻게 65-> 0 으로 97->0 으로 매핑 ?

대문자일경우 -65 소문자일경우 -97

Page 31: 3 장 .  고전 대칭 키 암호

31

덧셈 암호 프로그래밍

결과값은 범위가 0~25 ?

=> mod 연산 적용법 ? % 연산자 사용

Page 32: 3 장 .  고전 대칭 키 암호

32

덧셈 암호 프로그래밍입력 ?

평문 char cipher[50]; scanf("%s", cipher);

키 scanf("%d", &key);

출력 ? for (j=0; j<i; j++) printf("%c", cipher[j]);

Page 33: 3 장 .  고전 대칭 키 암호

33

덧셈 암호 프로그래밍대문자 ?

if (cipher[i] >= 65) && (cipher[i] <= 90)

소문자 ?If (cipher[i] >= 97) && (cipher[i] <= 122)

덧셈연산 ?cipher[i] = (cipher[i]+key) % 26;

Page 34: 3 장 .  고전 대칭 키 암호

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]);}

Page 35: 3 장 .  고전 대칭 키 암호

35

과제물덧셈 암호 알고리즘 프로그래밍

암호 알고리즘복호 알고리즘

제출방법이메일 [email protected]

제출기한 다음주까지

Page 36: 3 장 .  고전 대칭 키 암호

36

3.2 대치암호 – 단일문자 암호곱셈 암호 (Multiplicative Ciphers)

암호화는 평문에 키를 곱 , 복호화는 암호문을 키로 나눔 평문과 암호문은 Z26 의 원소이고 , 키는 Z26

*의 원소 Z26

* : 26 으로 나누었을 때 나머지들 중에서 26 과 서로소인 수들의 집합

모든 연산은 Z26 에서 수행되기 때문에 , 복호화는 키의 곱셈에 대한 역원 (k-1) 을 곱하는 것을 의미

암호화와 복호화가 서로 역함수 관계에 있음을 보장하기 위해 , 키는 집합 Z26

*의 원소이어야 함

Page 37: 3 장 .  고전 대칭 키 암호

37

3.2 대치암호 – 단일문자 암호곱셈 암호 ( 계속 )

[ 예제 3.7] 임의의 곱셈 암호에 대하여 키 공간은 ? 키는 Z26

*의 원소이어야 함 이 집합은 1, 3, 5, 7, 9, 11, 13,15, 17, 19, 21, 23, 25

만을 포함[ 예제 3.8] 메시지 “ hello” 를 암호화하는데 키가 7

인 곱셈 암호를 사용하여라 . 암호문은 “ XCZZU”

Page 38: 3 장 .  고전 대칭 키 암호

38

3.2 대치암호 – 단일문자 암호다음을 암호하시오

평 문 : “kyungil”암호키 : 11

Page 39: 3 장 .  고전 대칭 키 암호

39

3.2 대치암호 – 단일문자 암호아핀 암호 (Affine Ciphers)

두 키를 사용해 , 덧셈암호와 곱셈암호를 결합한 암호

Page 40: 3 장 .  고전 대칭 키 암호

40

3.2 대치암호 – 단일문자 암호아핀 암호 ( 계속 )

[ 예제 3.9] 아핀 암호는 키 쌍 , 즉 두 개의 키 ( 첫 번째 키는 Z26

* 의 원소이고 , 두 번째 키는 Z26 의 원소 ) 를 사용한다 . 키 공간의 크기는 12×26 = 312 이다 .

[ 예제 3.10] 키 쌍이 (7, 2) 인 아핀 암호를 사용하여 메시지 “ hello” 를 암호화하라 .

Page 41: 3 장 .  고전 대칭 키 암호

41

3.2 대치암호 – 단일문자 암호아핀 암호 ( 계속 )

[ 예제 3.11] 키 쌍이 모듈러 26 에서 (7, 2) 인 아핀 암호를 사용하여 메시지 “ hello” 를 복호화하여라 .

[ 예제 3.12] 덧셈 암호는 k1 = 1 인 아핀 암호와 같다 . 곱셈 암호는 k2 = 0 인 아핀 암호와 같다 .

Page 42: 3 장 .  고전 대칭 키 암호

42

3.2 대치암호 – 단일문자 암호아핀 암호에 대한 암호 해독

암호문 단독 공격의 전수조사 공격과 통계적인 공격도 적용 가능

선택 평문 공격도 적용 가능 ( 책 67p 참조 )

Page 43: 3 장 .  고전 대칭 키 암호

43

3.2 대치암호 – 단일문자 암호아핀 암호에 대하여

평 문 : “kyungil”암호키 : (3, 5)

암호복호

Page 44: 3 장 .  고전 대칭 키 암호

44

3.2 대치암호 – 단일문자 암호단일문자 대치암호

덧셈 암호 , 곱셈 암호 , 아핀 암호는 작은 키 공간을 갖기 때문에 전수조사 공격에 취약

더 좋은 방법 평문 문자와 대응되는 암호문 문자 사이의 사상을 구성하는

방법이 있음 Alice 와 Bob 은 각각의 문자에 대한 대응 관계를 나타낸

표를 공유한 후 암복호화에 이용 [ 그림 3.12] 단일문자 대치암호에 사용되는 키의 예

Page 45: 3 장 .  고전 대칭 키 암호

45

3.2 대치암호 – 단일문자 암호단일문자 대치암호 ( 계속 )

더 좋은 방법 ( 계속 ) [ 예제 3.13] 그림 3.12 의 키를 사용하여 다음 메시지를 암호화

암호문

분석 키 공간의 크기 : 26! (= 4 x 1026) 키 전수조사 공격에도 성공이 쉽지 않음 문자 출현 빈도 때문에 통계적인 공격에 취약

Page 46: 3 장 .  고전 대칭 키 암호

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

Page 47: 3 장 .  고전 대칭 키 암호

47

3.2 대치암호 – 다중문자 암호다중문자암호 (Polyalphabetic Ciphers)

평문 문자와 암호문 문자와의 관계를 일대다 대응하도록 암호화함

예를 들어 , “a” 는 문장의 시작점에서 “ D” 로 암호화되고 , 중간에서 “ N” 으로 암호화될 수 있음

다중문자 암호는 언어의 문자 빈도 ( 통계학적 성질을 제거할 수 있는 ) 감추는 장점이 있음

따라서 Eve 는 암호문을 해독하기 위하여 단일 문자 빈도 분석을 사용할 수 없음

Page 48: 3 장 .  고전 대칭 키 암호

48

3.2 대치암호 – 다중문자 암호자동키 암호 (Autokey Cipher)

[ 예제 3.14] Alice 와 Bob 이 초기 키 값 k1=12 를 가진 자동키 암호를 사용하기로 합의 했다고 가정하자 . Alice 는 Bob 에게 “ Attack is Today” 라는 문서를 보내려고 한다 . 암호화는 다음과 같이 진행된다 .

Page 49: 3 장 .  고전 대칭 키 암호

49

3.2 대치암호 – 다중문자 암호자동키 암호에 대한 암호 해독

평문의 단일 문자 통계를 감출 수 있음전수조사 공격에는 취약

첫 번째 부분 키의 크기 : 25 개언어의 특징을 감출 수 있으면서 키 공간이 큰

다중문자 암호가 필요함

Page 50: 3 장 .  고전 대칭 키 암호

50

3.2 대치암호 – 다중문자 암호자동키 암호를 이용하여 다음을 암호화 하시오

평 문 : I am a student at Dept. of Cyber Security암호키 : 20

Page 51: 3 장 .  고전 대칭 키 암호

51

3.2 대치암호 – 다중문자 암호플레이페어 암호 (Playfair Cipher)

제 1차 세계 대전 중 영국군이 사용한 암호 암호화 규칙

비밀키를 5x5 행렬로 배열된 25 개 문자로 구성 평문에 같은 글자가 연속하면 중간에 가짜 문자 삽입 평문 개수가 홀수이면 맨 끝에 가짜 문자 삽입 평문을 두 글자씩 분리 평문 두 글자가 비밀키와 같은 행에 있으면 암호문은 각각 오른쪽에 인접한 글자

평문 두 글자가 비밀키와 같은 열에 있으면 암호문은 각각 아래에 위치한 글자 평문 두 글자가 비밀키와 같은 열에 있지 않으면 각 문자에 대응되는 암호문은

각 문자와 같은 행에 있지만 다른 문자와 같은 열에 위치한 문자 [ 예제 3.15] “hello” 라는 평문을 암호화

[ 그림 3.13] 비밀 키의 예

Page 52: 3 장 .  고전 대칭 키 암호

52

3.2 대치암호 – 다중문자 암호플레이페어 암호에 대한 암호 해독

전수조사 공격을 적용하는 것은 매우 어려움 키 공간 : 25!

암호문은 문자의 단일 문자 빈도를 숨길 수 있음그러나 암호문에 두 문자열의 빈도는 보존되기 때문에

키를 찾기 위하여 두 문자열 빈도 테스트에 기반한 암호문 단독 공격을 사용할 수 있음

Page 53: 3 장 .  고전 대칭 키 암호

53

3.2 대치암호 – 단일문자 암호플레이페어 암호에 대하여

평 문 : “she is looking at you”암호키 : kyungil

암호복호

Page 54: 3 장 .  고전 대칭 키 암호

54

과제물오늘 배운 알고리즘 중 하나 프로그래밍

암호 알고리즘복호 알고리즘

제출방법이메일 [email protected]

제출기한 다음주까지

Page 55: 3 장 .  고전 대칭 키 암호

55

3.2 대치암호 – 다중문자 암호Vigenere 암호 (Vigenere Cipher)

16세기 프랑스 수학자 Blaise de Vigenere 가 고안

[ 예제 3.16] 6 문자 키워드 “ PASCAL” 을 이용하여 “ She is listening” 이라는 메시지를 암호화하는 방법을 알아보자 초기 키 수열은 (15, 0, 18, 2, 0, 11) 키 수열은 필요한 만큼 이 초기 키 수열의 반복

Page 56: 3 장 .  고전 대칭 키 암호

56

3.2 대치암호 – 다중문자 암호Vigenere 암호 ( 계속 )

[ 예제 3.17] Vigenere 암호는 m 개의 덧셈 암호의 조합으로써 간주될 수 있음 [ 그림 3.14] m 개의 덧셈 암호 조합으로서의 Vigenere

암호

Page 57: 3 장 .  고전 대칭 키 암호

57

3.2 대치암호 – 다중문자 암호Vigenere 암호 ( 계속 )

[ 예제 3.18] 예제 3.17 로 , 덧셈 암호는 m = 1 인 경우의 Vigenere 암호임을 앎 [ 표 3.3] Vigenere 표

평문

암호문

Page 58: 3 장 .  고전 대칭 키 암호

58

3.2 대치암호 – 단일문자 암호Vigenre 암호에 대하여

평 문 : “beyond the limit”암호키 : kyungil

암호복호

Page 59: 3 장 .  고전 대칭 키 암호

59

3.2 대치암호 – 다중문자 암호힐 암호 (Hill Cipher)

평문을 같은 크기의 블록으로 나누어 암호화하는 블록암호임 블록 (Block): 블록의 각 문자가 블록의 다른 문자의 암호화에 영향을

미치는 방법으로 한번에 한 블록씩 암호화됨 지금까지의 암호들은 스트림 (Stream) 암호에 속함

[ 그림 3.15] Hill 암호의 키

Hill 암호에서 키 행렬은 곱셈에 대한 역원을 가져야 함

Page 60: 3 장 .  고전 대칭 키 암호

60

3.2 대치암호 – 다중문자 암호힐 암호 ( 계속 )

l 이 블록의 개수일 때 평문은 l × m 행렬 예를 들어 , “code is ready” 라는 평문은 마지막 블록에 추가적인 가짜

문자 “ z” 를 삽입하고 띄어쓰기를 없애면 3 × 4 행렬이 됨 암호문은 “ OHKNIHGKLISS” Bob 은 키 행렬의 역원을 사용하여 이 메시지를 복호화할 수 있음

Page 61: 3 장 .  고전 대칭 키 암호

61

3.2 대치암호 – 다중문자 암호힐 암호에 대한 암호해독

키 공간의 크기가 26m x m 이기 때문에 전수조사 공격이 매우 힘들어 암호문 단독 공격이 어려움

암호문에 평문 통계가 나타나지 않으므로 통계적인 공격이 어려움Eve 가 m 값과 최소 m 블록에 대한 평문 /암호문 쌍을 알고

있다면 알려진 평문 공격을 적용할 수 있음 [ 예제 3.21] Eve 가 m = 3 을 알고 있다고 가정하자 . 다음과 같이 세 개의 평문 /암호문 블록 쌍을 가로채었다 ( 이때 , 같은 메시지에서 얻을 필요는 없다 ).

Page 62: 3 장 .  고전 대칭 키 암호

62

3.2 대치암호 – 다중문자 암호힐 암호에 대한 암호해독 ( 계속 )

[ 예제 3.21] ( 계속 ) Eve 는 이들 쌍으로부터 행렬 P 와 C 를 생성한다 . P 의 역행렬이

존재하기 때문에 , 다음과 같이 P 의 역행렬을 계산하고 C 에 곱하여 행렬 K 을 구한다 .

이제 Eve 는 키를 얻었으므로 , 그 키로 암호화된 임의의 암호문을 해독할 수 있다 .

Page 63: 3 장 .  고전 대칭 키 암호

63

3.2 대치암호 – 다중문자 암호힐암호에 대하여

평 문 : “beyond the limit”암호키 :

암호복호

Page 64: 3 장 .  고전 대칭 키 암호

64

3.2 대치암호 – 다중문자 암호One-Time Pad

암호의 목적은 완전한 보안 (perfect secrecy)임 Shannon 의 연구

각 평문 문자가 키 공간에서 랜덤하게 선택된 키로 암호화된다면 완벽한 보안이 이루어진다는 것을 증명

One-time pad 암호 Vernam 은 Shannon 의 연구에 기초하여 one-time pad 라고 하는 암호를

고안함 (1917년 고안되었고 특허를 받음 ) 키는 평문과 같은 길이를 가지며 완전히 랜덤하게 선택되어야 함 완벽한 암호이지만 , 키가 매번 새롭게 갱신되어야 하기에 상업적으로 구현 불가능

안전한 암호 절대 안전한 암호

Vernam 암호처럼 이론적으로 해독이 불가능한 암호 계산적으로 안전한 암호

해독하는 데 채산이 맞지 않을 정도로 수고와 시간이 소요되며 , 현대암호에 사용됨

Page 65: 3 장 .  고전 대칭 키 암호

65

3.2 대치암호 – 다중문자 암호Rotor 암호 (Rotor Cipher)

Rotor 의 초기 설정이 Alice 와 Bob 사이의 비밀키임평문 “ bee” 는 암호문 “ BCA” 로 암호화됨키 공간이 26! 이므로 전수조사 공격에 안전단일문자 대치 암호보다 통계적인 공격에 훨씬 강함

Page 66: 3 장 .  고전 대칭 키 암호

66

3.2 대치암호 – 다중문자 암호에니그마 (Enigma Machine)

원래 Sherbius 에 의해 최초로 고안되었으나 , 독일군에 의해 변형되어 세계 2 차 대전 동안 널리 이용됨

Rotor 암호의 원리를 기반으로 함책 78p 참조

Page 67: 3 장 .  고전 대칭 키 암호

67

3.3 전치암호전치암호 (Transposition Ciphers)

평문 내에서 기호들의 위치를 바꿔 암호화하는 기법예 ) 평문의 첫 번째에 위치한 기호는 암호문의 열 번째

위치로 , 평문의 여덟 번째 위치의 기호는 암호문의 첫 번째 위치에 나타나게 함

즉 , 전치암호는 기호들을 재 정렬시킴

이 절의 내용키가 없는 전치암호 (Keyless Transposition Ciphers)키가 있는 전치암호 (Keyed Transposition Ciphers)두 가지 접근법의 결합 (Combining Two Approaches)

Page 68: 3 장 .  고전 대칭 키 암호

68

3.3 전치암호 - 키 없는 전치암호 키 없는 전치암호 (Keyless Transposition

Ciphers) 과거에 사용된 간단한 전치암호는 키가 없음[ 예제 3.22] Rail fence 암호

평문을 지그재그 패턴으로 ( 열 순서를 의미 ) 두 열에 배열하고 , 행 순서의 패턴으로 읽어서 암호문을 생성

예 ) “Meet me at the park” 라는 메시지를 Bob 에게 보내기 위하여 , Alice 는 다음과 같이 기록

Alice 가 생성한 암호문 : “MEMATEAKETETHPR”

Page 69: 3 장 .  고전 대칭 키 암호

69

3.3 전치암호 - 키 없는 전치암호 키 없는 전치암호를 이용하여 다음을 처리하시오

평 문 : “Dept. of Cyber Security”

Page 70: 3 장 .  고전 대칭 키 암호

70

3.3 전치암호 - 키 없는 전치암호 [ 예제 3.23] 두 번째 방법

Alice 와 Bob 은 4개의 열의 개수를 사용하기로 합의한 후 ,Alice 는 네 개의 열을 가진 표에 다음과 같이 동일한 평문을

행 순서로 기록

Alice 가 생성한 암호문 : “MMTAEEHREAEKTTP”

Page 71: 3 장 .  고전 대칭 키 암호

71

3.3 전치암호 - 키 없는 전치암호 [ 예제 3.24] 예 3.23 의 암호는 실질적으로 전치암호이

다 . 다음은 위치에 근거하여 , 평문의 각 문자를 암호문으로 바꾸는 순열을 나타냄

평문의 두 번째 문자는 암호문의 다섯 번째 위치로 옮겨지고 , 세 번째 문자는 아홉 번째 위치로 옮겨짐

그러나 , 문자의 위치가 바뀌었더라도 , 순열에는 (01, 05, 09, 13), (02, 06, 10, 13), (03, 07, 11, 15), (08, 12) 와 같은 패턴이 존재

각 그룹에서 , 두 개의 인접한 수의 차이는 4

Page 72: 3 장 .  고전 대칭 키 암호

72

3.3 전치암호 - 키 없는 전치암호 4개의 열을 이용한 두번째 기법을 이용하여 다음을 처리하시오평 문 : “We are student at Dept. of Cyber

Security”

Page 73: 3 장 .  고전 대칭 키 암호

73

3.3 전치암호 - 키 있는 전치암호 키 있는 전치암호 (Keyed Transposition

Ciphers)블록이라고 하는 사전에 정의된 크기로 평문을 나눈 뒤 , 각각의 블록에 독립적으로 키를 사용하여 문자를 순열시킴 

Page 74: 3 장 .  고전 대칭 키 암호

74

3.3 전치암호 - 키 있는 전치암호 [ 예제 3.25]

Alice 는 “ Enemy attacks tonight” 이라는 메시지를 Bob 에게 전달해야 한다 .

Alice 와 Bob 은 그 문장을 5 글자의 그룹으로 나눈 뒤 각 그룹의 문자를 치환한다 . 다음은 마지막 그룹이 다른 그룹과 같은 크기를 갖도록 마지막에 가짜 문자 (a bogus character) 를 삽입한 이후의 배치를 나타낸다 .

치환을 하게 되면

Page 75: 3 장 .  고전 대칭 키 암호

75

3.3 전치암호 - 키 없는 전치암호 키 있는 전치암호를 이용하여 다음을 처리하시오

평 문 : “Dept. of Cyber Security”암호키 : 51324

Page 76: 3 장 .  고전 대칭 키 암호

76

3.3 전치암호 - 두 방법의 결합두 방법의 결합

[ 예제 3.26]

Page 77: 3 장 .  고전 대칭 키 암호

77

3.3 전치암호 - 두 방법의 결합키

예제 3.26 에서는 단일키가 두 방향으로 즉 , 암호화에서 아래쪽으로 , 복호화에서 위쪽으로 열 교환에 사용되었다 . 관습적으로 이와 같은 그래픽 표현에서는 하나는 암호화에 이용되고 , 다른 하나는 방향을 나타내는 두 개의 키를 생성한다 .

[ 그림 3.22] 전치암호에서의 암 · 복호키

Page 78: 3 장 .  고전 대칭 키 암호

78

3.3 전치암호 - 두 방법의 결합키 ( 계속 )

[ 그림 3.23] 전치암호에서의 암호화키와 복호화키 사이의 변환

Page 79: 3 장 .  고전 대칭 키 암호

79

3.3 전치암호 - 두 방법의 결합행렬의 사용

전치암호의 암복호화 과정을 살펴보기 위하여 행렬을 이용 가능 [ 예제 3.27] 행렬을 사용한 암호화 과정

4 × 5 평문 행렬에 5 × 5 암호키를 곱하면 4 × 5 암호문 행렬이 됨 먼저 , 예 3.26 에서 문자를 (00 부터 25 까지 ) 숫자 값으로 변화시켜야 함 [ 그림 3.24] 전치암호에서 키의 행렬 표현

Page 80: 3 장 .  고전 대칭 키 암호

80

3.3 전치암호 - 두 방법의 결합전치암호에 대한 암호 해독

다음과 같은 암호문 단독 공격에 취약 통계적인 공격

암호문의 문자 빈도를 변화시키지 않고 단지 문자를 재정렬하므로 , 단일 문자 빈도 분석 공격에 취약

두 문자열이나 세 문자열의 빈도를 보존하지는 않음 패턴 공격

키가 있는 전치암호로 생성된 암호문은 어떤 반복되는 패턴을 가짐

Page 81: 3 장 .  고전 대칭 키 암호

81

3.3 전치암호 - 두 방법의 결합이중 전치 암호 (Double Transposition Ciphers)

암호화 /복호화 알고리즘을 두 번 반복하여 수행암호 해독을 어렵게 함

Page 82: 3 장 .  고전 대칭 키 암호

82

3.4 스트림 암호와 블록 암호 일반적으로 , 대칭키 암호를 두 개의 큰 분류 ,

스트림 암호와 블록 암호로 나눌 수 있음현대 암호에 이 정의가 적용되지만 , 이 분류는 고전

암호에도 적용됨

이 절의 내용스트림 암호 (Stream Ciphers)블록 암호 (Block Ciphers)결합 (Combination)

Page 83: 3 장 .  고전 대칭 키 암호

83

3.4 스트림 암호와 블록 암호 – 스트림 암호스트림 암호 (Stream Ciphers)

평문의 각 비트 ( 또는 바이트 ) 를 하나씩 암호화하는 방식평문 수열 (P), 암호문 수열 (C), 키 수열 (K) 등으로 구성

[ 그림 3.26] 스트림 암호

Page 84: 3 장 .  고전 대칭 키 암호

84

3.4 스트림 암호와 블록 암호 – 스트림 암호[ 예제 3.30]

덧셈 암호는 키의 반복된 값을 키수열로 사용하는 스트림 암호로 분류될 수 있다 .

다시 말해서 , 키수열은 사전에 정의된 키수열 값이거나 K=(k1, k2, …, kn) 로 간주된다 .

그러나 이 암호에서 암호문의 각 문자는 키수열이 독립적으로 생성되기 때문에 , 연관된 평문 문자에만 의존하여 결정된다 . 

[ 예제 3.31]단일문자 대치암호는 스트림 암호이다 .그러나 이 경우 , 키수열 값은 현재의 평문 문자를 사상

표에서 연관된 암호문 문자로 연결시키는 값이다 . 

Page 85: 3 장 .  고전 대칭 키 암호

85

3.4 스트림 암호와 블록 암호 – 스트림 암호[ 예제 3.32]

정의에 의하여 Vigenere 암호 또한 스트림 암호이다 .이 경우 , 키수열은 m 개 값의 반복이다 . 이때 , m 은

키워드의 크기이다 . 즉 , 키는 다음과 같다 .  

[ 예제 3.33]키수열에 근거하여 스트림 암호를 나누는 기준을 생각해 볼

수 있다 . ki값이 평문 수열에서 평문 문자의 위치에 따라 결정되지

않으면 , 스트림 암호는 단일문자 암호이다 . 그렇지 않다면 , 그 암호는 다중문자 암호이다 .

Page 86: 3 장 .  고전 대칭 키 암호

86

3.4 스트림 암호와 블록 암호 – 스트림 암호[ 예제 3.33]

덧셈 암호는 키 수열에서 ki가 고정되어 있기 때문에 , 명백하게 단일문자 암호이다 . 따라서 키 수열은 평문 문자 위치에 의해 결정되지 않는다 .

단일문자 대치암호는 ki가 평문 수열에서 연관된 문자 위치에 의해 결정되지 않기 때문에 , 명백하게 단일문자 암호이다 . 키 값은 평문 문자의 값에 의해서만 결정된다 .

Vigenere 암호는 ki가 명백하게 평문 문자 위치에 의해 결정되기 때문에 , 다중문자 암호이다 . 그러나 그 의존성은 주기적이다 (cyclic). 키는 m 만큼 떨어진 두 문자에 동일하게 적용된다 .

Page 87: 3 장 .  고전 대칭 키 암호

87

3.4 스트림 암호와 블록 암호 – 블록 암호블록 암호 (Block Ciphers)

블록 암호에서 , 크기가 m (m>1) 인 평문 기호의 그룹은 함께 암호화 되어 , 같은 크기의 암호문 그룹을 생성한다 .

정의에 따라 , 블록 암호에서는 키가 여러 값으로 구성되더라도 단일 키는 전체 블록을 암호화하는데 사용된다 .

[ 그림 3.27] 블록 암호

Page 88: 3 장 .  고전 대칭 키 암호

88

3.4 스트림 암호와 블록 암호 – 블록 암호[ 예제 3.34]

플레이페어 암호는 블록 암호이다 . 블록의 크기는 m = 2 이며 , 두 문자가 함께 암호화된다 .

[ 예제 3.35]Hill 암호는 블록 암호이다 . 크기가 2 이상인 평문 블록은 단일 키 ( 행렬 ) 를 이용하여 함께 암호화된다 . 이 암호에서 , 암호문의 각 문자값은 평문의 모든 문자값에 의해 결정된다 . 키가 m × m 값으로 구성되지만 , 키는 단일 키로 간주된다 .

[ 예제 3.36]블록 암호의 정의에서 암호문 블록의 각 문자가 모든 평문 블록의 문자에 의해 결정되기 때문에 확실히 모든 블록 암호는 다중문자 암호이다 .

Page 89: 3 장 .  고전 대칭 키 암호

89

3.4 스트림 암호와 블록 암호 – 조합조합 (Combination)

실제로 , 평문 블록은 개별적으로 암호화되지만 , 키수열을 사용하여 블록 순서로 전체 메시지를 암호화

다시 말하면 , 개별 블록으로 봤을 때는 블록 암호이지만 , 각블록을 단일 유닛으로 생각하고 전체 메시지를 봤을 때는 스트림 암호

각 블록은 암호화 과정 중이나 이전에 생성된 다른 키를 이용

Page 90: 3 장 .  고전 대칭 키 암호

90

과제물대치암호와 치환암호 개념을 이용하여 다음을 설계하시오 .본인만의 암호 알고리즘과 복호알고리즘을 설계하시오 .

암호키를 어떻게 이용하는지 명확하게 제시하시오 .본인이 설계한 알고리즘의 안전성에 대한 분석을

제시하시오 .

제출방법 : e-mail