Download presentation
Presentation is loading. Please wait.
Published byÊΝηρεύς Αβραμίδης Modified 6년 전
1
제 3장 고전 대칭키 암호 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
2
□ 에니그마(Enigma machine) 및 과거에 사용된 매우 암호 알고리즘
Chapter 3 Objectives □ 대칭키 암호 알고리즘의 개념 □ 고전 암호의 두 부류인 대치암호(substitution ciphers)와 치환 암호(transposition ciphers) □ 대칭키 암호 분석 기법 □ 스트림 암호와 블록 암호의 개념 □ 에니그마(Enigma machine) 및 과거에 사용된 매우 암호 알고리즘
3
3-1 INTRODUCTION 그림 3.1에서 Alice는 안전하지 않은 채널을 통해, 공격자 Eve가 단순히 채널을 도청해서는 메시지를 이해할 수 없다는 가정 하에, Bob에게 메시지를 보낼 수 있다. Alice가 Bob에게 보내는 본래의 메시지를 평문(plaintext)이라 하고, 채널을 통해 보내는 메시지를 암호문(ciphertext)이라 한다. 평문으로부터 암호문을 생성하기 위해, Alice는 암호 알고리즘(encryption algorithm)과 Bob과 공유된 비밀키를 사용한다. 평문을 생성하기 위해, Bob은 복호 알고리즘(decryption algorithm)과 동일한 비밀키를 사용한다. 암호, 복호 알고리즘을 암호(cipher)라 부르기로 한다. 키(key)는 암호가 동작하는데 필요한 값(숫자)들의 집합이다.
4
Topics discussed in this section:
3-1 INTRODUCTION Topics discussed in this section: Kerckhoff의 원리 암호해독 고전암호의 분류
5
Continued Figure 3.1 대칭키 암호의 일반적인 개념
6
3.1 Continued P 가 평문이라면, C 는 암호문이고, K는 키이다. 밥이 평문 P1 을 생성한다고 하자.
그리고 P1 = P:임을 증명해보자.
7
Continued Figure 3.2동일한 키로 자물쇠를 채우고 여는 방법으로 서의 대칭키 암호화
8
3.1.1 Kerckhoff’s Principle
Kerckhoff의 원리에 따라, 공격자 Eve는 항상 암호/복호 알고리즘은 알고 있다고 가정한다. 암호의 안전성은 키의 안전성에만 바탕을 둔다. 바꾸어 말하면, 키를 알아내는 것이 매우 어려워서 암호/복호 알고리즘을 비공개로 할 필요가 없어야 한다. 이 원리는 현대 암호에서 더욱 명확하게 나타난다. 현대 암호에서는 각각의 알고리즘이 매우 큰 키 공간(key domain)을 가져서, 공격자가 키를 찾기 어렵게 한다.
9
Cryptanalysis 암호(cryptography)가 비밀 코드를 생성하는 과학이자 예술인 것처럼, 암호 분석(cryptanalysis)은 그런 코드를 깨는 과학이자 예술이다. 암호 기술을 공부하는 것도 필요하지만, 암호 분석 기술을 연구하는 것도 필요하다. 암호 분석 기술은 다른 사람의 코드를 깨는 데 사용되는 것이 아니라, 우리가 사용하는 암호 시스템이 얼마나 취약한지 측정하는데 필요하다. 암호 분석 기술을 연구하는 것은 더 안전한 코드를 생성하는데 도움을 준다.
10
Cryptanalysis Figure 3.3 암호분석공격
11
Continued 암호문단독 공격(Ciphertext-Only Attack) Figure 3.4 암호문 단독 공격
12
3.1.2 Continued 알고있는 평문 공격(Known-Plaintext Attack)
Figure 3.5 알고있는 평문 공격
13
Continued 선택 평문 공격(Chosen-Plaintext Attack) Figure 3.6 선택 평문 공격
14
선택 암호문 공격(Chosen-Ciphertext Attack)
Continued 선택 암호문 공격(Chosen-Ciphertext Attack) Figure 3.7 선택 암호문 공격
15
3-2 SUBSTITUTION CIPHERS
대치암호는 하나의 기호를 다른 기호로 대체한다. 만약 평문에서 기호가 알파벳이라면, 하나의 문자가 다른 문자로 대체된다. 예를 들어, A가 D로 대체되고 T는 Z로 대체된다. 만약 기호가 숫자(0~9)라면, 3은 7로 대체되고 2는 6으로 대체된다. 대치암호는 다음 두 가지로 분류된다. 단일문자 암호(monoalphabetic ciphers) 다중문자 암호(polyalphabetic ciphers)
16
대치암호는 하나의 기호를 다른 기호로 대체한다. Topics discussed in this section:
3-2 SUBSTITUTION CIPHERS Note 대치암호는 하나의 기호를 다른 기호로 대체한다. Topics discussed in this section: 3.2.1 단일문자 암호(Monoalphabetic Ciphres) 다중 문자 암호(Polyalphabetic Ciphers)
17
단일문자 암호에서 평문의 기호와 암호문에 대응되는 기호는 항상 일대일 대응 관계를 가진다.
Monoalphabetic Ciphers Note 단일문자 암호에서 평문의 기호와 암호문에 대응되는 기호는 항상 일대일 대응 관계를 가진다.
18
3.2.1 Continued Example 3.1 Example 3.2
다음은 평문과 이에 대응되는 암호문을 나타낸 것이다. 평문은 소문자로 표현하였고 암호문은 대문자로 표현하였다. 이 암호는 두 개의 알파벳 l을 알파벳 O로 모두 암호화하였기 때문에, 단일문자 암호일 가능성이 매우 높다. Example 3.2 다음은 평문과 이에 대응되는 암호문을 나타낸 것이다. 이 암호는 단일문자 암호가 아니다. 왜냐하면 두 개의 알파벳 l이 다른 문자로 암호화되었기 때문이다. 첫 번째 l은 N으로 암호화되었고, 두 번째 l은 Z로 암호화되었다.
19
3.2.1 Continued 덧셈 암호(Additive Cipher)
덧셈 암호는 가장 간단한 단일문자 암호이다. 이 암호는 이동 암호(shift cipher) 혹은 시저 암호(Caesar cipher)로도 불린다. 그러나 덧셈 암호라는 용어가 이 암호의 수학적인 성질을 더 잘 표현한다. Figure 3.8 평문과 암호문을 구성하는 문자를 Z26의 원소로 표현
20
Continued Figure 3.9 덧셈 암호 Note 덧셈 암호에서 평문, 암호문, 키는 Z26의 원소이다.
21
키가 15인 덧셈 암호를 이용하여 메시지 “hello”를 암호화하여라.
Continued Example 3.3 키가 15인 덧셈 암호를 이용하여 메시지 “hello”를 암호화하여라. Solution 암호 알고리즘을 평문에 다음과 같이 적용한다.
22
3.2.1 Continued Solution Example 3.4
키가 15인 덧셈 암호를 이용하여 메시지 “WTAAD”를 복호화하여라. Solution 복호 알고리즘을 암호문에 다음과 같이 적용한다.
23
덧셈 암호는 종종 이동 암호 혹은 시저 암호로 일컬어진다.
Continued 이동암호와 시저암호(Shift Cipher and Caesar Cipher) 역사적으로 덧셈 암호는 이동 암호로 불린다. 왜냐하면 암호 알고리즘은 평문의 각 문자를 키만큼 내리고(shift key characters down) 복호 알고리즘은 암호문의 각 문자를 키만큼 올리기(shift key characters up) 때문이다. 예를 들어, 키가 15이면 암호화 알고리즘은 평문의 각 문자를 알파벳의 끝으로 15칸 내린다. 복호 알고리즘은 알파벳의 처음으로 15칸 올린다. Note 덧셈 암호는 종종 이동 암호 혹은 시저 암호로 일컬어진다.
24
3.2.1 Continued Solution Example 3.5
Eve가 암호문 “UVACLYFZLJBYL”을 가로챘다. 전수조사 공격을 이용하여 암호문을 어떻게 해독하는지 보여라. Solution Eve는 키 값으로 1부터 7까지 대입한다. 키가 7인 경우, 평문은 의미 있는 값인 “not very secure”가 된다.
25
3.2.1 Continued Table 3.2 영어에서 출현 빈도수에 따라 구성된 두 문자열과 세 문자열
26
3.2.1 Continued Solution Example 3.6
Eve가 다음과 같은 암호문을 가로챘다고 하자. 통계적인 공격을 이용하여 평문을 구하여라. Solution 이 암호문을 구성하는 문자들의 출현 빈도수를 조사하면 I=14, V=13, S=12 등이 된다. 가장 큰 빈도수 14를 갖는 문자는 I이다. 이는 암호문에서 I가 확률적으로 평문에서 e와 대응된다는 것을 보여준다. 따라서 key=4임을 알 수 있다. Eve는 암호문을 복호화해서 다음을 얻는다.
27
곱셈 암호에서 평문과 암호문은 Z26의원소이고, 키는 Z26*의 원소이다.
Continued 곱셈 암호(Multiplicative Ciphers) Figure 곱셈 암호 Note 곱셈 암호에서 평문과 암호문은 Z26의원소이고, 키는 Z26*의 원소이다.
28
임의의 곱셈 암호에 대하여 키 공간은 무엇인가? 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”이다.
29
Continued 아핀 암호(Affine Ciphers) Figure 아핀 암호
30
Continued Example 3.9 아핀 암호는 키 쌍(첫 번째 키는 Z26* 의 원소이고, 두 번째 키는 의 Z26원소이다.)을 사용한다. 키 공간의 크기는 26 × 12 = 312이다. Example 3.10 키 쌍이 (7,2)인 아핀 암호를 사용하여 메시지 “hello”를 암호화하라.
31
덧셈 암호는 인 아핀 암호와 같다. 곱셈 암호는 인 아핀 암호와 같다.
Continued Example 3.11 키 쌍이 모듈러 26에서 (7, 2)인 아핀 암호를 사용하여 메시지 “hello”를 복호화하여라. Solution Example 3.12 덧셈 암호는 k1 = 1 인 아핀 암호와 같다. 곱셈 암호는 k2 = 0. 인 아핀 암호와 같다.
32
3.2.1 Continued 단일문자 대치암호(Monoalphabetic Substitution Cipher)
덧셈 암호, 곱셈 암호, 아핀 암호는 작은 키 공간을 갖기 때문에 전수조사 공격에 취약하다. Alice와 Bob이 하나의 키를 공유한 후, 키는 평문에서 각각의 문자를 암호화하는데 사용되거나 암호문에서 각각의 문자를 복호화 하는데 사용된다. 다시 말하면, 키는 전송되는 문자들과 독립이다. 더 좋은 해결 방법으로, 평문 문자와 대응되는 암호문 문자 사이의 사상을 구성하는 방법이 있다. Alice와 Bob은 각각의 문자에 대한 대응 관계를 나타낸 표를 공유한다. 그림 3.12는 그런 사상의 예를 나타낸 것이다. Figure 단일문자 대치암호에 사용되는 키의 예
33
3.2.1 Continued Example 3.13 다음과 같은 메시지를 암호화하는데 그림 3.12의 키를 사용하면
암호문은 다음과 같다.
34
3.2.2 다중문자 암호(Polyalphabetic Ciphers)
다중문자 대치(polyalphabetic substitution)에서, 각 문자는 다른 대치를 가진다. 평문 문자와 암호문 문자와의 관계는 일대다대응이다. 예를 들어, “a”는 문장의 시작점에서 “D”로 암호화되고, 중간에서 “N”으로 암호화될 수 있다. 다중문자 암호는 기반하는 언어의 문자 빈도를 감추는 장점이 있다. 따라서 Eve는 암호문을 해독하기 위하여 단일 문자 빈도 분석을 사용할 수 없다. Autokey Cipher
35
Continued Example 3.14 Alice와 Bob이 초기 키 값 k1=12를 가진 자동키 암호를 사용하기로 합의 했다고 가정하자. Alice는 Bob에게 “Attack is Today” 라는 문서를 보내려고 한다. 암호화는 문자 순서대로 이루어진다. 평문의 각 문자는 먼저 그림 3.8에 기술된 정수값으로 대치된다.
36
3.2.2 Continued 플레이페어 암호(Playfair Cipher)
Figure 플레이페어 암호의 비밀 키의 예 Example 3.15 그림 3.13의 키를 이용하여 “hello”라는 평문을 암호화하자.
37
3.2.2 Continued Vigenere 암호(Vigenere Cipher) Example 3.16
6 문자 키워드 “PASCAL”을 이용하여 “She is listening”이라는 메시지를 암호화하는 방법을 알아보자.
38
Continued Example 3.16 초기 키수열은 (15, 0, 18, 2, 0, 11) 이다. 키수열은 (필요한 만큼) 이 초기 키수열의 반복이다.
39
3.2.2 Continued Example 3.17 Vigenere 암호는 개의 덧셈 암호의 조합으로써 간주될 수 있다.
Figure m개의 덧셈 암호 조합으로서의 Vigenere 암호
40
Continued Example 3.18 예 3.17을 통해, 덧셈 암호는 m = 1인 경우의 Vigenere 암호임을 알 수 있다. Table 3.3 Vigenere 표
41
3.2.2 Continued Vigenere Cipher (Crypanalysis) Example 3.19
다음의 암호문을 입수했다고 가정하자. 3개의 문자 구분의 반복에 대한 Kasiski 테스트 결과는 표 3.4와 같다. Table 3.4 예 3.19에 대한 Kasiski 테스트
42
3.2.2 Continued Example 3.19 (Continued)
차이의 최대 공약수는 m이다. 이는 키의 길이가 의 배수라는 것을 의미한다. 먼저 m = 4로 시작한다. 이 경우 평문은 의미있는 문장이 된다.
43
Hill 암호에서 키 행렬은 곱셈에 대한 역원을 가져야 한다.
Continued 힐 암호(Hill Cipher) Figure Hill 암호의 키 Note Hill 암호에서 키 행렬은 곱셈에 대한 역원을 가져야 한다.
44
3.2.2 Continued Example 3.20 이 경우, l 이 블록의 개수일 때 평문은 l × m 행렬이다.
예를 들어, “code is ready”라는 평문은 마지막 블록에 추가적인 가짜 문자 “z”를 삽입하고 띄어쓰기를 없애면 3 × 4행렬이 된다. 암호문은 “OHKNIHGKLISS”이다. Bob은 키 행렬의 역원을 사용하여 이 메시지를 복호화할 수 있다. Figure 3.16 Example 3.20
45
Continued Example 3.21 Eve가 m = 3을 알고 있다고 가정하자. 그림 3.17과 같이 세 개의 평문/암호문 블록 쌍을 가로채었다(이때, 같은 메시지에서 얻을 필요는 없다). Figure Example 3.21
46
3.2.2 Continued Example 3.21 (Continued)
Eve는 이들 쌍으로부터 행렬 P와 C를 생성한다. P의 역행렬이 존재하기 때문에, 그림 3.18과 같이 P의 역행렬을 계산하고 C에 곱하여 행렬K을 구한다. Figure Example 3.21 이제 Eve는 키를 얻었으므로, 그 키로 암호화된 임의의 암호문을 해독할 수 있다.
47
3.2.2 Continued One-Time Pad 암호의 목적 중의 하나는 완벽한 보안(perfect secrecy)이다.
Shannon의 연구는, 각 평문 문자가 키 공간에서 랜덤하게 선택된 키로 암호화된다면 완벽한 보안이 이루어진다는 것을 보였다. 이 아이디어는 Vernam이 고안한 one-time pad라고 하는 암호에 이용된다.
48
Continued Rotor 암호(Rotor Cipher) Figure A rotor cipher
49
Continued 에니그마 (Enigma Machine) Figure 에니그마의 설계도
50
3-3 TRANSPOSITION CIPHERS
전치암호는 한 기호를 다른 기호로 대체시키지 않고, 대신에 그 기호의 위치를 바꾼다. 평문의 첫 번째에 위치한 기호는 암호문의 열 번째 위치에 나타난다. 평문의 여덟 번째 위치의 기호는 암호문의 첫 번째 위치에 나타난다. 즉, 전치암호는 기호를 재 정렬시킨다.
51
Topics discussed in this section:
3-3 TRANSPOSITION CIPHERS Note 전치암호는 기호를 재정렬시킨다. Topics discussed in this section: 3.3.1 키가 없는 전치암호(Keyless Transposition Ciphers) 키가 있는 전치암호(Keyed Transposition Ciphers) 두 가지 접근법의 결합(Combining Two Approaches)
52
3.3.1 Keyless Transposition Ciphers
과거에 사용된 간단한 전치암호는 키가 없다. Example 3.22 첫 번째 방법을 사용하는 키가 없는 암호의 좋은 예는 rail fence 암호이다. 이 암호에서, 평문은 지그재그패턴으로(열 순서를 의미) 두 열에 배열되고, 암호문은 행 순서의 패턴으로 읽혀져 생성된다. 예를 들어, “Meet me at the park”라는 메시지를 Bob에게 보내기 위하여, Alice는 다음과 같이 기록한다. 앨리스가 생성한 암호문“MEMATEAKETETHPR”.
53
Continued Example 3.23 Alice와 Bob은 열의 개수를 합의하고 두 번째 방법을 사용할 수 있다. Alice는 네 개의 열을 가진 표에 다음과 같이 동일한 평문을 행순서로 기록한다. 앨리스가 생성한 암호문“MMTAEEHREAEKTTP”.
54
Continued Example 3.24 예 3.23의 암호는 실질적으로 전치암호이다. 다음은 위치에 근거하여, 평문의 각 문자를 암호문으로 바꾸는 순열을 나타낸다. 평문의 두 번째 문자는 암호문의 다섯 번째 위치로 옮겨지고, 세 번째 문자는 아홉 번째 위치로 옮겨진다. 나머지도 비슷하다. 문자의 위치가 바뀌었더라도, 순열에는 (01, 05, 09, 13), (02, 06, 10, 13), (03, 07, 11, 15), (08, 12)와 같은 패턴이 존재한다. 각 그룹에서, 두 개의 인접한 수의 차이는 4이다.
55
3.3.2 Keyed Transposition Ciphers
키가 없는 암호는 한쪽 방향으로(예를 들어, 행 순서로) 평문을 기록하고 역 방향으로(예를 들어, 열 순서로) 그것을 읽음으로써 문자를 치환한다. 전체 암호문을 생성하기 위하여 전체 평문에 치환이 적용된다. 다른 방법은 블록이라고 하는 사전에 정의된 크기로 평문을 나눈 뒤, 각각의 블록에 독립적으로 키를 사용하여 문자를 치환하는 것이다.
56
3.3.2 Continued Example 3.25 치환을 하게 되면
Alice는 “Enemy attacks tonight”이라는 메시지를 Bob에게 전달해야 한다. Alice와 Bob은 그 문장을 5 글자의 그룹으로 나눈 뒤 각 그룹의 문자를 치환한다. 다음은 마지막 그룹이 다른 그룹과 같은 크기를 갖도록 마지막에 가짜 문자(a bogus character)를 삽입한 이후의 배치를 나타낸다. 치환을 하게 되면
57
3.3.3 Combining Two Approaches
Example 3.26 Figure 3.21
58
Continued Keys 예 3.26에서는, 단일키가 두 방향으로, 즉, 암호화에서 아래쪽으로, 복호화에서 위쪽으로, 열 교환에 사용되었다. 관습적으로 이와 같은 그래픽 표현에서는, 하나는 암호화에 이용되고, 다른 하나는 방향을 나타내는, 두 개의 키를 생성한다. Figure 전치암호에서의 암·복호키
59
Continued Figure 전치암호에서의 키 변환
60
3.3.3 Continued 전치암호의 암호화/복호화 과정을 살펴보기 위하여 행렬을 이용할 수 있다.
행렬의 사용(Using Matrices) 전치암호의 암호화/복호화 과정을 살펴보기 위하여 행렬을 이용할 수 있다. Example 3.27 Figure Representation of the key as a matrix in the transposition cipher
61
Continued Example 3.27 그림 3.24는 암호화 과정을 나타낸다. 4 × 5 평문 행렬에 5 × 5 암호키를 곱하면 4 × 5 암호문 행렬이 된다. 행렬 연산을 위하여, 예 3.26에서 문자를(부터 까지) 숫자 값으로 변화시켜야만 한다 Figure 전치암호에서 키의 행렬 표현
62
3.3.3 Continued 이중 전치 암호(Double Transposition Ciphers)
Figure 이중전치암호
63
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)
64
Stream Ciphers 평문 수열, 암호문 수열, 키수열 등이 있다. 평문 수열을 P라고 하고, 암호문 수열을 C, 키수열을 K 라고 한다. Figure Stream cipher
65
Continued Example 3.30 덧셈 암호는 키의 반복된 값을 키수열로 사용하는 스트림 암호로 분류될 수 있다. 다시 말해서, 키수열은 사전에 정의된 키수열 값이거나 K=(k1, k2, …, kn)로 간주된다. 그러나 이 암호에서 암호문의 각 문자는 키수열이 독립적으로 생성되기 때문에, 연관된 평문 문자에만 의존하여 결정된다. Example 3.31 본 장에서 논의한 단일문자 대치암호 또한 스트림 암호이다. 그러나 이 경우, 키수열 값은 현재의 평문 문자를 사상 표에서 연관된 암호문 문자로 연결시키는 값이다.
66
Continued Example 3.32 정의에 의하여 Vigenere 암호 또한 스트림 암호이다. 이 경우, 키수열은 m개 값의 반복이다. 이때, m은 키워드의 크기이다. 즉, 키는 다음과 같다. Example 3.33 키수열에 근거하여 스트림 암호를 나누는 기준을 생각해 볼 수 있다. ki값이 평문 수열에서 평문 문자의 위치에 따라 결정되지 않으면, 스트림 암호는 단일문자 암호이다. 그렇지 않다면 그 암호는 다중문자 암호이다.
67
3.4.1 Continued Example 3.33 (Continued)
키수열에서 ki 가 고정되어 있기 때문에, 덧셈 암호는 명백하게 단일문자 암호이다. 따라서 키수열은 평문 문자 위치에 의해 결정되지 않는다. ki 가 평문 수열에서 연관된 문자 위치에 의해 결정되지 않기 때문에, 단일문자 대치암호는 명백하게 단일문자 암호이다. 키 값은 평문 문자의 값에 의해서만 결정된다. ki 가 명백하게 평문 문자 위치에 의해 결정되기 때문에, Vigenere 암호는 다중문자 암호이다. 그러나 그 의존성은 주기적이다(cyclic). 키는 m만큼 떨어진 두 문자에 동일하게 적용된다.
68
Block Ciphers 블록 암호에서, 크기가 m(m>1)인 평문 기호의 그룹은 함께 암호화 되어, 같은 크기의 암호문 그룹을 생성한다. 정의에 따라, 블록 암호에서는 키가 여러 값으로 구성되더라도 단일 키는 전체 블록을 암호화하는데 사용된다. 블록 암호의 개념은 그림 3.27과 같다. Figure 블록 암호
69
3.4.2 Continued Example 3.34 Example 3.35 Example 3.36
Hill 암호는 블록 암호이다. 크기가 2 이상인 평문 블록은 단일 키(행렬)를 이용하여 함께 암호화된다. 이 암호에서, 암호문의 각 문자값은 평문의 모든 문자값에 의해 결정된다. 키가 m × m 값으로 구성되지만, 키는 단일 키로 간주된다. Example 3.36 블록 암호의 정의에서, 암호문 블록의 각 문자가 모든 평문 블록의 문자에 의해 결정되기 때문에, 확실히 모든 블록 암호는 다중문자 암호이다.
70
Combination 실제로, 평문 블록은 개별적으로 암호화되지만, 키수열을 사용하여 블록 순서로 전체 메시지를 암호화한다. 다시 말하면, 개별 블록으로 봤을 때는 블록 암호이지만, 각 블록을 단일 유닛으로 생각하고 전체 메시지를 봤을 때는 스트림 암호이다. 각 블록은 암호화 과정 중이나 이전에 생성된 다른 키를 이용한다. 이 예는 다음 장에서 다룰 것이다.
Similar presentations