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


Top Related