1 / 90

3 장 . 고전 대칭 키 암호

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

Download Presentation

3 장 . 고전 대칭 키 암호

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3장. 고전 대칭 키 암호 경일대학교 사이버보안학과 김현성 교수

  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로 모두 암호화하였기 때문에, 단일문자 암호일 가능성이 매우 높음 • [예제 3.2] 두 개의 알파벳 l이 다른 문자로 암호화되었기 때문에 단일문자 암호가 아님 Plaintext: hello Ciphertext: ABNZF

  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. 덧셈 암호 프로그래밍 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]); } #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; }

  35. 과제물 • 덧셈 암호 알고리즘 프로그래밍 • 암호 알고리즘 • 복호 알고리즘 • 제출방법 • 이메일 kim@kiu.ac.kr • 제출기한 • 다음주까지

  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 W O H P I F G E N D X U R K Z Y M Q A V S B T L J

  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

More Related