제 3장 고전 대칭키 암호 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
1/29 키보드로 직접 입력할 수 없는 다양한 기호와 한자를 입력하는 방법을 알아 보자. 또한 블록으로 영역을 설정하는 여러 가지 방법에 대해 살펴본 후 블록 으로 설정된 내용을 복사하여 붙여넣거나, 잘라내고 이동하는 방법에 대해서 도 알아보자. 02_ 문서의 입력과 편집.
최성락 최인석 나주한. 특징 : 공개키 n, g 를 사용하여 키 분배가 가능. (g 는 Zn 의 primitive element) Discrete logarithm 에 기반. 두 명 이상의 경우에도 적용가능. 키 교환 없이도.
8. 현대 대칭키 암호를 이용한 암호화 기법 경일대학교 사이버보안학과 김현성 교수.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Chapter 8 현대 대칭키 암호를 이용한 암호화 기법
재료수치해석 HW # 박재혁.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
2009년 3월 23일 (4주차) 유 승 관용 암호 방식 2009년 3월 23일 (4주차) 유 승
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
File Depender 중간 발표.
공개키 암호화 프로그래밍 전자상거래보안.
23 장 OSI 상위계층 23.1 세션(session)층 23.2 표현(presentation)층
질의 사항 Yield Criteria (1) 소재가 평면응력상태에 놓였을 때(σ3=0), 최대전단응력조건과 전단변형에너지 조건은σ1 – σ2 평면에서 각각 어떤 식으로 표시되는가? (2) σ1 =σ2인 등이축인장에서 σ = Kεn로 주어지는 재료의 네킹시 변형율을 구하라.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Error Detection and Correction
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
상관함수 correlation function
행렬 기본 개념 행렬의 연산 여러가지 행렬 행렬식 역행렬 연립 일차 방정식 부울행렬.
제 2장 암호 수학 Part I: 모듈로 연산, 합동 및 행렬.
11장. 1차원 배열.
전자상거래 보안 (암호학과 네트워크보안) ) Chul Ho Rhee
프로그래밍 개요
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
벡터의 공간 이문현.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
문제 2명의 사형수가 있다. 둘에게는 검정색 모자와 흰색 모자를 임의로 씌우는데, 자기가 쓴 모자의 색은 절대로 알 수가 없다. 서로 상대의 모자색만을 볼 수 있고, 이들이 살기 위해선 자신의 쓴 색의 모자를 맞춰야 한다. 단, 둘 중 한명만이라도 자신이 쓴 모자의 색을.
Report #3 - due: 4/6 100*100의 2개의 희소 행렬 A, B를 전달 받아서 이들의 덧셈을 구하고, 그 결과의 행렬 C를 반환하는 add_sparse_matrix(A, B, C)를 다음과 같이 작성하라. 희소 행렬은 sparse_matrix 타입으로 표현된다.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
4 장 신호(Signals) 4.1 아날로그와 디지털(Analog and Digital)
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
합집합과 교집합이란 무엇인가? 01 합집합 두 집합 A, B에 대하여 A에 속하거나 B에 속하는 모든 원소로 이루어진 집합을 A와 B의 합집합이라고 하며, 기호 A∪B로 나타낸다. A∪B ={x | x∈A 또는 x∈B}
생활 속의 밀도 (1) 뜨고 싶니? 내게 연락해 ! 물질의 뜨고 가라앉음 여러 가지 물질의 밀도.
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
3강. 컴퓨터와의 기본적인 소통수단 - I 연산자란? 컴퓨터와 소통하기 위한 다양한 방법들
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
01 로그의 정의 ⑴ 일 때, 양수 에 대하여 을 만족시키는 실수 는 오직 하나 존재한다. 이때 를
약식 진리표를 이용한 타당성 증명 진리표 그리기 방법의 한계
제 15 강 문자와 코드 shcho.pe.kr.
에어 PHP 입문.
Chapter 1 단위, 물리량, 벡터.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
Chapter 1 단위, 물리량, 벡터.
Flow Diagram IV While.
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
Chapter 10 데이터 검색1.
1장. 시저의 암호.
상관계수.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
제 4 장 Record.
수치해석 ch3 환경공학과 김지숙.
2014년 가을학기 손시운 지도 교수: 문양세 교수님 행렬과 배열 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
어서와 C언어는 처음이지 제21장.
컴퓨터는 어떻게 덧셈, 뺄셈을 할까? 2011년 10월 5일 정동욱.
(Permutations and Combinations)
13. 포인터와 배열! 함께 이해하기.
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
C++ Espresso 제15장 STL 알고리즘.
6 객체.
피보나치수열에 대하여 한림초 5학년 신동오.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

제 3장 고전 대칭키 암호 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

□ 에니그마(Enigma machine) 및 과거에 사용된 매우 암호 알고리즘 Chapter 3 Objectives □ 대칭키 암호 알고리즘의 개념 □ 고전 암호의 두 부류인 대치암호(substitution ciphers)와 치환 암호(transposition ciphers) □ 대칭키 암호 분석 기법 □ 스트림 암호와 블록 암호의 개념 □ 에니그마(Enigma machine) 및 과거에 사용된 매우 암호 알고리즘

3-1 INTRODUCTION 그림 3.1에서 Alice는 안전하지 않은 채널을 통해, 공격자 Eve가 단순히 채널을 도청해서는 메시지를 이해할 수 없다는 가정 하에, Bob에게 메시지를 보낼 수 있다. Alice가 Bob에게 보내는 본래의 메시지를 평문(plaintext)이라 하고, 채널을 통해 보내는 메시지를 암호문(ciphertext)이라 한다. 평문으로부터 암호문을 생성하기 위해, Alice는 암호 알고리즘(encryption algorithm)과 Bob과 공유된 비밀키를 사용한다. 평문을 생성하기 위해, Bob은 복호 알고리즘(decryption algorithm)과 동일한 비밀키를 사용한다. 암호, 복호 알고리즘을 암호(cipher)라 부르기로 한다. 키(key)는 암호가 동작하는데 필요한 값(숫자)들의 집합이다.

Topics discussed in this section: 3-1 INTRODUCTION Topics discussed in this section: 3.1.1 Kerckhoff의 원리 3.1.2 암호해독 3.1.3 고전암호의 분류

3.1 Continued Figure 3.1 대칭키 암호의 일반적인 개념

3.1 Continued P 가 평문이라면, C 는 암호문이고, K는 키이다. 밥이 평문 P1 을 생성한다고 하자. 그리고 P1 = P:임을 증명해보자.

3.1 Continued Figure 3.2동일한 키로 자물쇠를 채우고 여는 방법으로 서의 대칭키 암호화

3.1.1 Kerckhoff’s Principle Kerckhoff의 원리에 따라, 공격자 Eve는 항상 암호/복호 알고리즘은 알고 있다고 가정한다. 암호의 안전성은 키의 안전성에만 바탕을 둔다. 바꾸어 말하면, 키를 알아내는 것이 매우 어려워서 암호/복호 알고리즘을 비공개로 할 필요가 없어야 한다. 이 원리는 현대 암호에서 더욱 명확하게 나타난다. 현대 암호에서는 각각의 알고리즘이 매우 큰 키 공간(key domain)을 가져서, 공격자가 키를 찾기 어렵게 한다.

3.1.2 Cryptanalysis 암호(cryptography)가 비밀 코드를 생성하는 과학이자 예술인 것처럼, 암호 분석(cryptanalysis)은 그런 코드를 깨는 과학이자 예술이다. 암호 기술을 공부하는 것도 필요하지만, 암호 분석 기술을 연구하는 것도 필요하다. 암호 분석 기술은 다른 사람의 코드를 깨는 데 사용되는 것이 아니라, 우리가 사용하는 암호 시스템이 얼마나 취약한지 측정하는데 필요하다. 암호 분석 기술을 연구하는 것은 더 안전한 코드를 생성하는데 도움을 준다.

3.1.2 Cryptanalysis Figure 3.3 암호분석공격

3.1.2 Continued 암호문단독 공격(Ciphertext-Only Attack) Figure 3.4 암호문 단독 공격

3.1.2 Continued 알고있는 평문 공격(Known-Plaintext Attack) Figure 3.5 알고있는 평문 공격

3.1.2 Continued 선택 평문 공격(Chosen-Plaintext Attack) Figure 3.6 선택 평문 공격

선택 암호문 공격(Chosen-Ciphertext Attack) 3.1.2 Continued 선택 암호문 공격(Chosen-Ciphertext Attack) Figure 3.7 선택 암호문 공격

3-2 SUBSTITUTION CIPHERS 대치암호는 하나의 기호를 다른 기호로 대체한다. 만약 평문에서 기호가 알파벳이라면, 하나의 문자가 다른 문자로 대체된다. 예를 들어, A가 D로 대체되고 T는 Z로 대체된다. 만약 기호가 숫자(0~9)라면, 3은 7로 대체되고 2는 6으로 대체된다. 대치암호는 다음 두 가지로 분류된다. 단일문자 암호(monoalphabetic ciphers) 다중문자 암호(polyalphabetic ciphers)

대치암호는 하나의 기호를 다른 기호로 대체한다. Topics discussed in this section: 3-2 SUBSTITUTION CIPHERS Note 대치암호는 하나의 기호를 다른 기호로 대체한다. Topics discussed in this section: 3.2.1 단일문자 암호(Monoalphabetic Ciphres) 3.2.2 다중 문자 암호(Polyalphabetic Ciphers)

단일문자 암호에서 평문의 기호와 암호문에 대응되는 기호는 항상 일대일 대응 관계를 가진다. 3.2.1 Monoalphabetic Ciphers Note 단일문자 암호에서 평문의 기호와 암호문에 대응되는 기호는 항상 일대일 대응 관계를 가진다.

3.2.1 Continued Example 3.1 Example 3.2 다음은 평문과 이에 대응되는 암호문을 나타낸 것이다. 평문은 소문자로 표현하였고 암호문은 대문자로 표현하였다. 이 암호는 두 개의 알파벳 l을 알파벳 O로 모두 암호화하였기 때문에, 단일문자 암호일 가능성이 매우 높다. Example 3.2 다음은 평문과 이에 대응되는 암호문을 나타낸 것이다. 이 암호는 단일문자 암호가 아니다. 왜냐하면 두 개의 알파벳 l이 다른 문자로 암호화되었기 때문이다. 첫 번째 l은 N으로 암호화되었고, 두 번째 l은 Z로 암호화되었다.

3.2.1 Continued 덧셈 암호(Additive Cipher) 덧셈 암호는 가장 간단한 단일문자 암호이다. 이 암호는 이동 암호(shift cipher) 혹은 시저 암호(Caesar cipher)로도 불린다. 그러나 덧셈 암호라는 용어가 이 암호의 수학적인 성질을 더 잘 표현한다. Figure 3.8 평문과 암호문을 구성하는 문자를 Z26의 원소로 표현

3.2.1 Continued Figure 3.9 덧셈 암호 Note 덧셈 암호에서 평문, 암호문, 키는 Z26의 원소이다.

키가 15인 덧셈 암호를 이용하여 메시지 “hello”를 암호화하여라. 3.2.1 Continued Example 3.3 키가 15인 덧셈 암호를 이용하여 메시지 “hello”를 암호화하여라. Solution 암호 알고리즘을 평문에 다음과 같이 적용한다.

3.2.1 Continued Solution Example 3.4 키가 15인 덧셈 암호를 이용하여 메시지 “WTAAD”를 복호화하여라. Solution 복호 알고리즘을 암호문에 다음과 같이 적용한다.

덧셈 암호는 종종 이동 암호 혹은 시저 암호로 일컬어진다. 3.2.1 Continued 이동암호와 시저암호(Shift Cipher and Caesar Cipher) 역사적으로 덧셈 암호는 이동 암호로 불린다. 왜냐하면 암호 알고리즘은 평문의 각 문자를 키만큼 내리고(shift key characters down) 복호 알고리즘은 암호문의 각 문자를 키만큼 올리기(shift key characters up) 때문이다. 예를 들어, 키가 15이면 암호화 알고리즘은 평문의 각 문자를 알파벳의 끝으로 15칸 내린다. 복호 알고리즘은 알파벳의 처음으로 15칸 올린다. Note 덧셈 암호는 종종 이동 암호 혹은 시저 암호로 일컬어진다.

3.2.1 Continued Solution Example 3.5 Eve가 암호문 “UVACLYFZLJBYL”을 가로챘다. 전수조사 공격을 이용하여 암호문을 어떻게 해독하는지 보여라. Solution Eve는 키 값으로 1부터 7까지 대입한다. 키가 7인 경우, 평문은 의미 있는 값인 “not very secure”가 된다.

3.2.1 Continued Table 3.2 영어에서 출현 빈도수에 따라 구성된 두 문자열과 세 문자열

3.2.1 Continued Solution Example 3.6 Eve가 다음과 같은 암호문을 가로챘다고 하자. 통계적인 공격을 이용하여 평문을 구하여라. Solution 이 암호문을 구성하는 문자들의 출현 빈도수를 조사하면 I=14, V=13, S=12 등이 된다. 가장 큰 빈도수 14를 갖는 문자는 I이다. 이는 암호문에서 I가 확률적으로 평문에서 e와 대응된다는 것을 보여준다. 따라서 key=4임을 알 수 있다. Eve는 암호문을 복호화해서 다음을 얻는다.

곱셈 암호에서 평문과 암호문은 Z26의원소이고, 키는 Z26*의 원소이다. 3.2.1 Continued 곱셈 암호(Multiplicative Ciphers) Figure 3.10 곱셈 암호 Note 곱셈 암호에서 평문과 암호문은 Z26의원소이고, 키는 Z26*의 원소이다.

임의의 곱셈 암호에 대하여 키 공간은 무엇인가? 3.2.1 Continued Solution Example 3.7 키는 Z26*의 원소이어야 한다. 이 집합은 12개 원소(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25)만을 포함한다. Example 3.8 메시지 “hello”를 암호화하는데 키가 7인 곱셈 암호를 사용하여라. 암호문은 “XCZZU”이다.

3.2.1 Continued 아핀 암호(Affine Ciphers) Figure 3.11 아핀 암호

3.2.1 Continued Example 3.9 아핀 암호는 키 쌍(첫 번째 키는 Z26* 의 원소이고, 두 번째 키는 의 Z26원소이다.)을 사용한다. 키 공간의 크기는 26 × 12 = 312이다. Example 3.10 키 쌍이 (7,2)인 아핀 암호를 사용하여 메시지 “hello”를 암호화하라.

덧셈 암호는           인 아핀 암호와 같다. 곱셈 암호는           인 아핀 암호와 같다. 3.2.1 Continued Example 3.11 키 쌍이 모듈러 26에서 (7, 2)인 아핀 암호를 사용하여 메시지 “hello”를 복호화하여라. Solution Example 3.12 덧셈 암호는 k1 = 1 인 아핀 암호와 같다. 곱셈 암호는 k2 = 0. 인 아핀 암호와 같다.

3.2.1 Continued 단일문자 대치암호(Monoalphabetic Substitution Cipher) 덧셈 암호, 곱셈 암호, 아핀 암호는 작은 키 공간을 갖기 때문에 전수조사 공격에 취약하다. Alice와 Bob이 하나의 키를 공유한 후, 키는 평문에서 각각의 문자를 암호화하는데 사용되거나 암호문에서 각각의 문자를 복호화 하는데 사용된다. 다시 말하면, 키는 전송되는 문자들과 독립이다. 더 좋은 해결 방법으로, 평문 문자와 대응되는 암호문 문자 사이의 사상을 구성하는 방법이 있다. Alice와 Bob은 각각의 문자에 대한 대응 관계를 나타낸 표를 공유한다. 그림 3.12는 그런 사상의 예를 나타낸 것이다. Figure 3.12 단일문자 대치암호에 사용되는 키의 예

3.2.1 Continued Example 3.13 다음과 같은 메시지를 암호화하는데 그림 3.12의 키를 사용하면 암호문은 다음과 같다.

3.2.2 다중문자 암호(Polyalphabetic Ciphers) 다중문자 대치(polyalphabetic substitution)에서, 각 문자는 다른 대치를 가진다. 평문 문자와 암호문 문자와의 관계는 일대다대응이다. 예를 들어, “a”는 문장의 시작점에서 “D”로 암호화되고, 중간에서 “N”으로 암호화될 수 있다. 다중문자 암호는 기반하는 언어의 문자 빈도를 감추는 장점이 있다. 따라서 Eve는 암호문을 해독하기 위하여 단일 문자 빈도 분석을 사용할 수 없다. Autokey Cipher

3.2.2 Continued Example 3.14 Alice와 Bob이 초기 키 값 k1=12를 가진 자동키 암호를 사용하기로 합의 했다고 가정하자. Alice는 Bob에게 “Attack is Today” 라는 문서를 보내려고 한다. 암호화는 문자 순서대로 이루어진다. 평문의 각 문자는 먼저 그림 3.8에 기술된 정수값으로 대치된다.

3.2.2 Continued 플레이페어 암호(Playfair Cipher) Figure 3.13 플레이페어 암호의 비밀 키의 예 Example 3.15 그림 3.13의 키를 이용하여 “hello”라는 평문을 암호화하자.

3.2.2 Continued Vigenere 암호(Vigenere Cipher) Example 3.16 6 문자 키워드 “PASCAL”을 이용하여 “She is listening”이라는 메시지를 암호화하는 방법을 알아보자.

3.2.2 Continued Example 3.16 초기 키수열은 (15, 0, 18, 2, 0, 11) 이다. 키수열은 (필요한 만큼) 이 초기 키수열의 반복이다.

3.2.2 Continued Example 3.17 Vigenere 암호는 개의 덧셈 암호의 조합으로써 간주될 수 있다. Figure 3.14 m개의 덧셈 암호 조합으로서의 Vigenere 암호

3.2.2 Continued Example 3.18 예 3.17을 통해, 덧셈 암호는 m = 1인 경우의 Vigenere 암호임을 알 수 있다. Table 3.3 Vigenere 표

3.2.2 Continued Vigenere Cipher (Crypanalysis) Example 3.19 다음의 암호문을 입수했다고 가정하자. 3개의 문자 구분의 반복에 대한 Kasiski 테스트 결과는 표 3.4와 같다. Table 3.4 예 3.19에 대한 Kasiski 테스트

3.2.2 Continued Example 3.19 (Continued) 차이의 최대 공약수는 m이다. 이는 키의 길이가 의 배수라는 것을 의미한다. 먼저 m = 4로 시작한다. 이 경우 평문은 의미있는 문장이 된다.

Hill 암호에서 키 행렬은 곱셈에 대한 역원을 가져야 한다. 3.2.2 Continued 힐 암호(Hill Cipher) Figure 3.15 Hill 암호의 키 Note Hill 암호에서 키 행렬은 곱셈에 대한 역원을 가져야 한다.

3.2.2 Continued Example 3.20 이 경우, l 이 블록의 개수일 때 평문은 l × m 행렬이다. 예를 들어, “code is ready”라는 평문은 마지막 블록에 추가적인 가짜 문자 “z”를 삽입하고 띄어쓰기를 없애면 3 × 4행렬이 된다. 암호문은 “OHKNIHGKLISS”이다. Bob은 키 행렬의 역원을 사용하여 이 메시지를 복호화할 수 있다. Figure 3.16 Example 3.20

3.2.2 Continued Example 3.21 Eve가 m = 3을 알고 있다고 가정하자. 그림 3.17과 같이 세 개의 평문/암호문 블록 쌍을 가로채었다(이때, 같은 메시지에서 얻을 필요는 없다). Figure 3.17 Example 3.21

3.2.2 Continued Example 3.21 (Continued) Eve는 이들 쌍으로부터 행렬 P와 C를 생성한다. P의 역행렬이 존재하기 때문에, 그림 3.18과 같이 P의 역행렬을 계산하고 C에 곱하여 행렬K을 구한다. Figure 3.18 Example 3.21 이제 Eve는 키를 얻었으므로, 그 키로 암호화된 임의의 암호문을 해독할 수 있다.

3.2.2 Continued One-Time Pad 암호의 목적 중의 하나는 완벽한 보안(perfect secrecy)이다. Shannon의 연구는, 각 평문 문자가 키 공간에서 랜덤하게 선택된 키로 암호화된다면 완벽한 보안이 이루어진다는 것을 보였다. 이 아이디어는 Vernam이 고안한 one-time pad라고 하는 암호에 이용된다.

3.2.2 Continued Rotor 암호(Rotor Cipher) Figure 3.19 A rotor cipher

3.2.2 Continued 에니그마 (Enigma Machine) Figure 3.20 에니그마의 설계도

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

Topics discussed in this section: 3-3 TRANSPOSITION CIPHERS Note 전치암호는 기호를 재정렬시킨다. Topics discussed in this section: 3.3.1 키가 없는 전치암호(Keyless Transposition Ciphers) 3.3.2 키가 있는 전치암호(Keyed Transposition Ciphers) 3.3.3 두 가지 접근법의 결합(Combining Two Approaches)

3.3.1 Keyless Transposition Ciphers 과거에 사용된 간단한 전치암호는 키가 없다. Example 3.22 첫 번째 방법을 사용하는 키가 없는 암호의 좋은 예는 rail fence 암호이다. 이 암호에서, 평문은 지그재그패턴으로(열 순서를 의미) 두 열에 배열되고, 암호문은 행 순서의 패턴으로 읽혀져 생성된다. 예를 들어, “Meet me at the park”라는 메시지를 Bob에게 보내기 위하여, Alice는 다음과 같이 기록한다. 앨리스가 생성한 암호문“MEMATEAKETETHPR”.

3.3.1 Continued Example 3.23 Alice와 Bob은 열의 개수를 합의하고 두 번째 방법을 사용할 수 있다. Alice는 네 개의 열을 가진 표에 다음과 같이 동일한 평문을 행순서로 기록한다. 앨리스가 생성한 암호문“MMTAEEHREAEKTTP”.

3.3.1 Continued Example 3.24 예 3.23의 암호는 실질적으로 전치암호이다. 다음은 위치에 근거하여, 평문의 각 문자를 암호문으로 바꾸는 순열을 나타낸다. 평문의 두 번째 문자는 암호문의 다섯 번째 위치로 옮겨지고, 세 번째 문자는 아홉 번째 위치로 옮겨진다. 나머지도 비슷하다. 문자의 위치가 바뀌었더라도, 순열에는 (01, 05, 09, 13), (02, 06, 10, 13), (03, 07, 11, 15), (08, 12)와 같은 패턴이 존재한다. 각 그룹에서, 두 개의 인접한 수의 차이는 4이다.

3.3.2 Keyed Transposition Ciphers 키가 없는 암호는 한쪽 방향으로(예를 들어, 행 순서로) 평문을 기록하고 역 방향으로(예를 들어, 열 순서로) 그것을 읽음으로써 문자를 치환한다. 전체 암호문을 생성하기 위하여 전체 평문에 치환이 적용된다. 다른 방법은 블록이라고 하는 사전에 정의된 크기로 평문을 나눈 뒤, 각각의 블록에 독립적으로 키를 사용하여 문자를 치환하는 것이다. 

3.3.2 Continued Example 3.25 치환을 하게 되면 Alice는 “Enemy attacks tonight”이라는 메시지를 Bob에게 전달해야 한다. Alice와 Bob은 그 문장을 5 글자의 그룹으로 나눈 뒤 각 그룹의 문자를 치환한다. 다음은 마지막 그룹이 다른 그룹과 같은 크기를 갖도록 마지막에 가짜 문자(a bogus character)를 삽입한 이후의 배치를 나타낸다. 치환을 하게 되면

3.3.3 Combining Two Approaches Example 3.26 Figure 3.21

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

3.3.3 Continued Figure 3.23 전치암호에서의 키 변환

3.3.3 Continued 전치암호의 암호화/복호화 과정을 살펴보기 위하여 행렬을 이용할 수 있다. 행렬의 사용(Using Matrices) 전치암호의 암호화/복호화 과정을 살펴보기 위하여 행렬을 이용할 수 있다. Example 3.27 Figure 3.24 Representation of the key as a matrix in the transposition cipher

3.3.3 Continued Example 3.27 그림 3.24는 암호화 과정을 나타낸다. 4 × 5 평문 행렬에 5 × 5 암호키를 곱하면 4 × 5 암호문 행렬이 된다. 행렬 연산을 위하여, 예 3.26에서 문자를(부터 까지) 숫자 값으로 변화시켜야만 한다 Figure 3.24 전치암호에서 키의 행렬 표현

3.3.3 Continued 이중 전치 암호(Double Transposition Ciphers) Figure 3.25 이중전치암호

Topics discussed in this section: 3-4 STREAM AND BLOCK CIPHERS 일반적으로 대칭키 암호를 두 개의 큰 부류, 스트림 암호와 블록 암호로 나눌 수 있다. 현대 암호에 이 정의가 적용되지만, 이 분류는 고전 암호에도 적용된다. Topics discussed in this section: 3.4.1 스트림 암호(Stream Ciphers) 3.4.2 블록 암호(Block Ciphers) 3.4.3 결합(Combination)

3.4.1 Stream Ciphers 평문 수열, 암호문 수열, 키수열 등이 있다. 평문 수열을 P라고 하고, 암호문 수열을 C, 키수열을 K 라고 한다. Figure 3.26 Stream cipher

3.4.1 Continued Example 3.30 덧셈 암호는 키의 반복된 값을 키수열로 사용하는 스트림 암호로 분류될 수 있다. 다시 말해서, 키수열은 사전에 정의된 키수열 값이거나 K=(k1, k2, …, kn)로 간주된다. 그러나 이 암호에서 암호문의 각 문자는 키수열이 독립적으로 생성되기 때문에, 연관된 평문 문자에만 의존하여 결정된다.  Example 3.31 본 장에서 논의한 단일문자 대치암호 또한 스트림 암호이다. 그러나 이 경우, 키수열 값은 현재의 평문 문자를 사상 표에서 연관된 암호문 문자로 연결시키는 값이다. 

3.4.1 Continued Example 3.32 정의에 의하여 Vigenere 암호 또한 스트림 암호이다. 이 경우, 키수열은 m개 값의 반복이다. 이때, m은 키워드의 크기이다. 즉, 키는 다음과 같다. Example 3.33 키수열에 근거하여 스트림 암호를 나누는 기준을 생각해 볼 수 있다. ki값이 평문 수열에서 평문 문자의 위치에 따라 결정되지 않으면, 스트림 암호는 단일문자 암호이다. 그렇지 않다면 그 암호는 다중문자 암호이다.

3.4.1 Continued Example 3.33 (Continued) 키수열에서 ki 가 고정되어 있기 때문에, 덧셈 암호는 명백하게 단일문자 암호이다. 따라서 키수열은 평문 문자 위치에 의해 결정되지 않는다. ki 가 평문 수열에서 연관된 문자 위치에 의해 결정되지 않기 때문에, 단일문자 대치암호는 명백하게 단일문자 암호이다. 키 값은 평문 문자의 값에 의해서만 결정된다. ki 가 명백하게 평문 문자 위치에 의해 결정되기 때문에, Vigenere 암호는 다중문자 암호이다. 그러나 그 의존성은 주기적이다(cyclic). 키는 m만큼 떨어진 두 문자에 동일하게 적용된다.

3.4.2 Block Ciphers 블록 암호에서, 크기가 m(m>1)인 평문 기호의 그룹은 함께 암호화 되어, 같은 크기의 암호문 그룹을 생성한다. 정의에 따라, 블록 암호에서는 키가 여러 값으로 구성되더라도 단일 키는 전체 블록을 암호화하는데 사용된다. 블록 암호의 개념은 그림 3.27과 같다. Figure 3.27 블록 암호

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

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