컴퓨터 네트워크 chapter 08 데이터 압축과 보안 임효택

35
PART 02 프프프프 1 프프프 프프프프 chapter 08 프프프 프프프 프프 프프프

Upload: harper

Post on 06-Jan-2016

79 views

Category:

Documents


1 download

DESCRIPTION

컴퓨터 네트워크 chapter 08 데이터 압축과 보안 임효택. 데이터 압축. 허프만 (Huffman) 코드 허프만 코드는 가장 널리 쓰이는 압축 방법 문자가 나타나는 빈도수에 따라 그 크기를 다르게 하는 것 : 빈도수 의존 코드 (frequency dependent code) 모음과 'L', 'R', 'S', 'N', 'T' 등과 같이 자주 나타나는 문자들은 더 작은 비트를 할당 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

1

컴퓨터 네트워크

chapter 08 데이터 압축과 보안

임효택

Page 2: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

2

데이터 압축

허프만 (Huffman) 코드 허프만 코드는 가장 널리 쓰이는 압축 방법

문자가 나타나는 빈도수에 따라 그 크기를 다르게 하는 것 : 빈도수 의존 코드 (frequency dependent code)

모음과 'L', 'R', 'S', 'N', 'T' 등과 같이 자주 나타나는 문자들은 더 작은 비트를 할당

예제 : 각각의 확률이 0.5, 0.3, 0.15, 0.05 인 4 개의 값 x1, ..., x4 가 있다고 가정

– 만일 x1, ..., x4 값 각각을 나타내기 위해 코드 값 00, 01, 10 11 을 사용한다

면 X 값을 전송하기 위해 2 비트가 필요– 그러나 만일 x1 을 나타내기 위해 0, x2 를 나타내기 위해 10, x3 을

나타내기 위해 110, x4 를 나타내기 위해 111 을 사용한다면 , 평균 0.5 x 1 +

0.3 x 2 + 0.15 x 3 + 0.05 x 3 = 1.7 비트가 필요

Page 3: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

3

허프만 (Huffman) 코드 접두코드 (prefix code)

허프만 알고리즘

– 단 하나의 노드만을 가지고 있는 이진 트리와 각 문자를 매핑

– 각 트리에 문자들의 빈도수를 할당 : 트리의 가중치 (weight)

– 두개의 가장 작은 가중치를 가지고 있는 트리를 찾아 하나의 트리로 합치고 새로운 루트 노드를 만들어 낸다 .( 이 새 트리의 가중치는 합쳐진 두 트리의 가중치의 합 )

– 마지막으로 하나의 트리가 남을 때까지 이 과정을 반복

– 이 과정이 끝났을 때 원래 노드들의 각각은 마지막 이진 트리의 말단 노드 (leaf) 가 된다 .

– 이진 트리에서 루트로부터 말단 노드에 이르는 유일한 길 (path) 이 있게 되고 이 길이 허프만 코드가 된다 . 그것은 각 왼쪽 자식 포인터에 0 을 할당하고 오른쪽 자식

포인터 에 1 을 할당해서 결정

Page 4: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

4

허프만 (Huffman) 코드

허프만 코드 생성 과정

[ 그림 8.2] 허프만 코드의 생성 과정

Page 5: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

5

Run Length Encoding

허프만 코드는 알려져 있는 문자의 빈도수를 알아야 함

팩스는 종이의 밝은 부분과 어두운 부분에 해당하는 비트를 전송 →직접적으로

문자를 전송하지 않음

Run Length Encoding 기법은 단순하지만 확실한 접근을 시도 → 0 또는 1 이 계속

해서 나타나는 비트 문자열을 분석해서 모든 비트를 보내는 대신에 다만 0 과 1 이

몇 번 나타나는 횟수를 전송

팩시밀리 신호를 부호화하고 압축하는데 사용되는 간단하면서도 효율적인 데이터

압축 알고리즘

Page 6: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

6

Run Length Encoding

팩시밀리 전송을 위해 페이지를 줄단위로 주사하고 각 줄을 따라 일정 간격의 점들 에 의해 반사되는 빛의 밝기를 측정

흰점을 0 으로 나타내고 검은점을 1 로 나타낸다고 가정하자 . 만일 팩시밀리가 1 인치당 200 줄을 스캔하고 , 각 줄마다 1 인치당 200 개의 점들의 밝기를 측정한다면 8.5 인치 ×11인치 크기의 페이지를 200x200x8.5x11=3.74x10**6 개의 비트로 표현

이 비트들을 9600bps 모뎀으로 전송한다면 6.5 분이 걸림

팩시밀리는 긴 0 들의 열을 전송하는 대신에 두 1 사이의 연속적인 0 의 개수를 보낸다 . 예를 들어 0a 가 a 개의 연속적인 0 을 나타낸다고 표기하면 , 1 0a 1 0b 1 0c 1 0d 와 같은 스트링 (string) 은 A B C D 와 같이 부호화된다 .

여기서 A 는 a 의 이진수 표현이고 , B 는 b 의 , C 는 c 의 , D 는 d 의 이진수 표현이다 . 따라서 만일 a = 600(3 인치 길이의 흰점에 해당 ) 이면 A=1001011000 이 되고 따라서 600 개의 0 을 전송하는 대신에 단지 10 비트만 전송하면 된다 .

Page 7: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

7

상대적 인코딩 (Relative Encoding)

비디오 전송에서 이미지들은 팩스의 어둡고 환한 이미지 전송과 텍스트 파일 전송에 비해 매우 복잡

전에 소개된 방법는 이미지 압축에 도움이 되지 않음

하나의 비디오 이미지는 거의 반복을 가지고 있지 않지만 여러 이미지들에 대해서는 많은 반복이 있음

상대적 인코딩은 각각의 프레임을 개별적인 단위로서 다루고 압축하려고 시도하지 않고 각 프레임이 전의 것보다 얼마나 다른지를 고려

정보를 압축하고 보내는 것은 프레임들간의 차이가 아주 작을 때 효과적이 된다 .

Page 8: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

8

상대적 인코딩 (Relative Encoding)

상대적 인코딩의 원리

– 처음 프레임은 보내지고 수신기의 버퍼에 이것이 저장

– 송신기는 두 번째 프레임을 처음 것과 비교하고 그 차이를 인코드 그리고 그것을 프레임 포맷으로 보내게 된다

– 수신기는 그 프레임을 얻고 그 프레임이 가지고 있는 차이를 적용해서 송신

기가 가졌던 두 번째 프레임을 만들어 냄

– 두 번째 프레임을 버퍼에 저장하고 계속해서 새로운 프레임에 대해서 위의 과정을 반복

Page 9: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

9

Lempel-Ziv 인코딩

최근에 데이터를 압축하는 또하나의 방법

흔하게 되풀이되어지는 문자열을 찾아서 단지 한번만 저장

한번 저장된 동일한 단어나 문장은 원래의 것을 가리키는 포인터와 길이를 나타 내는 값으로 대치

UNIX 압축 명령 (compress 명령어 ) 와 MS-DOS 의 ARC 유틸리티에서 이 알고리즘이 사용

이 알고리즘을 사용하면 긴 파일을 거의 1/2 길이로 압축

"the other one is the oldest” 을 Lempel-Ziv 알고리즘으로 압축

the o[1,3]r[4,2]is[3,1][1,5]ld[3,1][16,1][1,1]

[1,3] 에서 1 은 문장의 첫 번째 문자를 의미하며 3 은 길이가 3 임을 의미한다 .

Page 10: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

10

Lempel-Ziv 인코딩

반복되는 문자열의 길이가 길수록 이 알고리즘의 효율은 증가

Lempel-Ziv 알고리즘의 실제구현은 위에서 설명한 원래의 알고리즘과 약간 다르다 .

즉 실제로는 구현이 쉽도록 수정된 알고리즘을 사용하게 되는데 대신에 압축율 이 조금 떨어진다 .

Page 11: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

11

보안

8.2.1 암호화

일반적으로 컴퓨터 시스템에서 사용되는 정보 암호화는 특정한 키 (key) 값을 이용하여 평문 (plain text) 으로 된 정보를 암호문 (cipher text) 으로 바꾸는 작업 .

Page 12: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

12

고전적인 암호 방식

고전적인 암호 방식 중 하나는 시져 (Julius Caesar) 황제가 만든 것으로서 각 문자를 알파벳 순서상 세 자리 뒤의 문자로 대체하는 방법에 기초

– 예 : 영어 문자 알파벳을 사용하여 이 방법에 의해서 대문자로 변환하면 평문 'Caesar' 는 암호문 'FDHVDU' 가 된다 .

– 이 방법은 암호문을 세 자리 대신 k 자리만큼 문자를 이동시키는 것으로 일반화

이 방법은 k 를 키로 한 순환이동 방법 : 대체암호 (substitution cipher)

치환암호 (transposition cipher) : 대체암호 방식과 함께 고전적인 암호 방식의 한 부류

– 평문의 심볼들을 재배치하는 방법이다 .( 순서를 재배열 )

Page 13: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

13

관용 암호 방식(conventional cryptosystem)

관용 암호 방식은 가장 널리 알려지고 또 일반적으로 사용되고 있는 암호 방식

컴퓨터 시스템과 통신망 등의 정보 암호화에 많이 이용

암호화 키와 복호화 키가 동일한 대칭 알고리즘을 사용

통신망에서 사용될 경우 일반적으로 세션키 (session key) 또는 비밀키(secret key)

로 불리우는 이 대칭키를 암호화 이전에 서로 분배 (distribution) 해야하는 부담

Page 14: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

14

관용 암호 방식(conventional cryptosystem)

키분배는 비용 증대와 시간 지연이라는 단점을 가진다 .

그러나 암호화 작업과 복호화 작업에서 계산량이 적고 빠르다는 장점으로 인하여 현재 가장 많이 사용

사용 예

– 미국 IBM 에서 개발한 DES: 56 비트의 키를 사용– IDEA(International Data Encryption Standard)

» 128 비트의 비교적 큰 키를 사용– PGP(Pretty Good Privacy) 에서 사용

일본 NTT 에서 개발한 FEAL(fast data encryption algorithm) 등

특히 DES 는 가장 일반적으로 사용되는 암호 방식으로서 UNIX 의 패스워드 처리 및 자료 저장에 응용

[ 정의 8-1] 관용 암호 방식의 조건 : p 258

Page 15: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

15

관용 암호 방식(conventional cryptosystem)

[ 그림 8.4] 관용 암호 방식 개념도

Page 16: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

16

공개키 암호 방식 (public key cryptosystem)

관용 암호 방식의 가장 큰 문제점이었던 키분배 문제를 해결한 암호 방식

암호화 키와 복호화 키가 서로 다른 비대칭 알고리즘을 사용하고 암호화 키는 안전한 경로를 사용할 필요 없이 공개해도 무방하다는 특징을 갖는다 .

Page 17: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

17

공개키 암호 방식(public key cryptosystem)

키분배에 따르는 부담이 크게 줄어 듬

통신망에서 사용하기에는 관용 암호화 방식보다 더 적합하다고 판단되어짐

암호화 및 복호화 작업에 필요한 계산량이 너무 크다는 치명적인 단점

– 효율적인 고속 하드웨어의 지원이 없이는 현실적으로 적용하기 어렵다 .

대표적인 알고리즘은 최초의 공개키 방식으로 알려져 있는 RSA(Rivest, Shamir, Adleman) 알고리즘

[ 정의 8-2] 공개키 암호 방식의 조건 : p259

Page 18: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

18

공개키 암호 방식(public key cryptosystem)

[ 그림 8.5] 공개키 암호 방식 개념도

Page 19: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

RSA 알고리즘 – (1)

1977년 리베스트 (R. Rivest), 샤미르 (A. Shamir), 아델먼 (L. Adelman) 이 개발 .

가장 많이 사용되는 비대칭 암호화 알고리즘 .

매우 큰 두 소수는 소인수분해가 매우 어렵다는 것에 기반 .

데이터를 암호화 하고 복호화 하는데 한 쌍의 키를 이용 .

Page 20: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

• 소수인 p 와 q 를 정함 . (1 과 자신으로만 나눌 수 있는 수 )

• n 은 p 와 q 의 곱 .

( 즉 : n = PQ)

• Ф( 파이 ) 는 p 와 q 에 각각 1 을 뺀수를 곱한 것 .

( 즉 : Ф = (p-1)(q-1) )

• 이 조건에 만족하는 e 를 찾는다 .

1 < e < Ф, gcd(e, Ф) = 1

• 다음조건에 맞는 d 를 찾는다 .

1 < d < Ф, ed mod Ф ≡ 1

• 이 계산식으로 구해진 수들 n , e , d

RSA 알고리즘 – (2)

Page 21: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

Public key (e , n ) 생성됨 .

Private key (d, n ) 생성됨 .

Public key 는 공개 , private key 는 비공개 .

앞서 나온 p 와 q 와 Ф 도 비공개 .

RSA 알고리즘 – (3)

Page 22: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

RSA 알고리즘 사용예 -(1)

p = 11 , q = 3 이라고 가정 . n = 33 :: (n=pq) Φ=(11 - 1)(3 - 1 ) = 20 위의 구해진 수로 e 를 구한다 .

gcd(e, Φ) = 1 과 1 < e < Φ 두 조건을 만족해야 함 . gcd(e, (p-1)(q-1) ) = 1 이면 gcd(e, (p-1))=1 과 gcd(e, (q-1))=1 도 만족

Page 23: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

e 를 구하는 예제

• 1 < e < 20 중 가장 작은 소수 순으로 대입 • gcd(2, 10)=2 • gcd(2, 2)=2 <- 1 이 아니므로 X.• gcd(3, 10)=1• gcd(3, 2)=1 <- e 값이 1 을 만족함으로 O.

d 를 구하는 예제

• ed mod Φ ≡ 1 (ed-1) mod Φ ≡ 0 (3d-1) mod 20 ≡ 0

RSA 알고리즘 사용예 -(2)

Page 24: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

• 위의 식으로 1 < d < 20 인 d 값을 구한다 .

• d = 7.

위 식으로 구해진 값들 .

• p 는 11 , q 는 3 , n 은 33

• Φ는 20 , e 는 3 , d 는 7

• public key 는 (3,33)

• private key 는 (7,33)

RSA 알고리즘 사용예 -(3)

Page 25: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

Public key 과 Private key 를 이용 .

암호화 / 복호화 를 구현 .

암호화할 m 을 5 라고 가정 .

public key 키 (3,33) 을 이용해서 암호화 .

암호화된 숫자는 26 :: (124%33=26)

RSA 알고리즘 사용예 -(4)

C = m^e mod n C = 5^3 mod 33 = 125 mod 33 = 26

Page 26: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

• 이제 private key (7,33) 를 이용해서 복호화 .

• m 이 5 로 복호화 됨 .

• 문자등도 가능 하도록 아스키 코드 등등을 이용

• 죄다 숫자로 변형해서 암 /복호화 하면된다 .

• 중간에 C 값과 public key 값을 알게되더라도

d 값을 모르면 복호화가 불가능 함 .

m = C^d mod n m = 26^7 mod 33 = 8031810176 % 33 = 5

RSA 알고리즘 사용예 -(5)

Page 27: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

27

공개키 분배 방식(public key distribution

cryptosystem)

공개키 분배 방식은 관용 암호 방식의 키분배 부담을 해결한 대칭 알고리즘 방식이다 .

이 방식의 기본적인 아이디어는 관용 암호 방식의 암호화 및 복호화 작업의 계산량이 적다는 장점과 공개키 암호 방식의 키를 공개할 수 있다는 장점을 결합하는 것이다 .

[ 그림 8.6] 공개키 분배 방식 개념도

Page 28: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

28

디지털 서명 (digital signature)

디지털 서명은 일반적인 문서 서명의 개념을 컴퓨터에 도입한 것으로서 ,

하나의 전자적인 메세지가 유일한 것이며

또한 그 문서의 전송자가 누구라는 것을 추적하거나 증명할 수 있도록 하는 방법을 말한다 .

디지털 서명은 메세지 송신자의 인증이 본래 손으로 쓰여진 서명과 같은 역할을 하는 것으로 생각한다 .

디지털 서명은 전산화된 업무 및 회계 처리 , 그리고 인터넷을 통한 전자 우편이나 정보의 전달에 주로 이용

보안 시스템의 중요성이 높아질수록 활용도가 매우 높아질 것으로 기대되는 기술

[ 정의 8-4] 디지털 서명의 조건

Page 29: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

29

인터넷에서의 보안

공개 네트워크 (public Network)

– 전화망이나 인터넷처럼 네트워크 상의 개체들이 상호 자유롭게 정보를 주고받을 수 있도록 기반구조가 되는 네트워크

사설 네트워크 (Private Network)

– 한 조직이나 개인이 소유한 네트워크 , 해당 조직에 관련된 사용자만 사용 가능

가상 사설망 , Virtual Private Network

– 인터넷과 같은 Public Network 를 사용하여 private network 를 구축하게

해주는 기술 혹은 네트워크

Page 30: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

30

IPSec (IP Security Protocol)

IPSec 은 전송모드 (Transport mode) 와 터널모드 (Tunnel mode) 를 제공 전송 모드

IP 페이로드만 암호화 되며 , 원래의 IP Header 는 그대로 둔다 .

원본 패킷에 대하여 최소의 바이트 수만 추가된다는 장점공개 네트워크 상에서의 모든 장비가 해당 패킷에 대한 최종 목적지를 부가적인 작업 없이 알 수 있다 .

[ 그림 8.8] 와 [ 그림 8.9] 은 전송모드를 적용하기 전과 후의 패킷 형태이다 .

[ 그림 8.8] IPSec 전송모드를 적용하기 전의 패킷 [ 그림 8.9] IPSec 전송모드를 적용한 후의 패킷

Page 31: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

31

터널 모드

모든 초기의 IP Datagram 이 암호화 되며 , 기존의 원본 패킷을 기초로 안호화된

새로운 IP 패킷이 만들어진다 .

라우터와 같은 네트워크 장비가 IPSec 프로토콜 상에서의 Proxy 로 동작할 수 있다 .

전체 패킷을 암호화 하므로 , 실질적인 전송 호스트와 목적지는 노출되지 않으므로

침입을 위한 분석을 하기가 어렵다 .

가상의 터널이 존재

[ 그림 8.10] 과 [ 그림 8.11] 는 터널 모드를 위하여 암호화된 패킷의 형태를 각각의

IPv4 와 IPv6 로 나타낸 것이다 .

[ 그림 8.10] IPSec 터널 모드 적용 전 패킷 [ 그림 8.11] IPSec 터널 모드 적용 후 패킷

IPSec (IP Security Protocol)

Page 32: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

32

SSL (Secure Socket Layer)

양방향 프로토콜 , Netscape Communications Corporation 이 인터넷 상의

보안과 기밀을 보장하기 위해 개발한 규약

SSL 규약은 서버와 클라이언트의 진위 확인을 하도록 해준다 .

암호화와 인증 , 메시지 확인 규칙 등의 방법을 통해 송수신 경로의 보안과 안정성을 유지시켜 줄 수 있다 .

양방향 핸드쉐이크 방식을 띄는 프로토콜

– 완전 핸드쉐이크 방식 , 지속적 세션 수행 방식

Page 33: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

33

SSL (Secure Socket Layer)

Full handshake 방식

Page 34: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

34

SSL (Secure Socket Layer)

Resume Session

Page 35: 컴퓨터 네트워크  chapter 08  데이터 압축과 보안 임효택

PART 02 프로토콜

35

VPN 에서의 IPSec 과 SSL 의 비교

Virtual Private Networks(VPNs) 는 그들의 내부적인 Private Network 를 사용하여 ,

외부 인터넷으로의 확장성을 제공한다 .

VPN 은 외부에 대하여 폐쇄적인 환경을 구축하고자 하는 분야에서 널리 사용

IPSec 과 SSL 을 VPN 에 적용함으로 인한 장단점 .

장점 : 응용 계층 프로토콜에 독립적인 보안 연결을 제공

단점 : 세 가지의 관점에서 단점을 분석

– 관점 1 : 제한성– 관점 2 : 확장성 및 호환성– 관점 3 : 플랫폼에 대한 제한