1 / 35

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

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

harper
Télécharger la présentation

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

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. PART 02 프로토콜 컴퓨터 네트워크 chapter 08 데이터 압축과 보안 임효택

  2. PART 02 프로토콜 데이터 압축 • 허프만(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 비트가 필요

  3. PART 02 프로토콜 허프만(Huffman) 코드 • 접두코드(prefix code) • 허프만 알고리즘 • 단 하나의 노드만을 가지고 있는 이진 트리와 각 문자를 매핑 • 각 트리에 문자들의 빈도수를 할당: 트리의 가중치(weight) • 두개의 가장 작은 가중치를 가지고 있는 트리를 찾아 하나의 트리로 합치고 새로운 루트 노드를 만들어 낸다.(이 새 트리의 가중치는 합쳐진 두 트리의 가중치의 합) • 마지막으로 하나의 트리가 남을 때까지 이 과정을 반복 • 이 과정이 끝났을 때 원래 노드들의 각각은 마지막 이진 트리의 말단 노드(leaf)가 된다. • 이진 트리에서 루트로부터 말단 노드에 이르는 유일한 길(path)이 있게 되고 이 길이 허프만 코드가 된다. 그것은 각 왼쪽 자식 포인터에 0을 할당하고 오른쪽 자식 포인터 에 1을 할당해서 결정

  4. PART 02 프로토콜 허프만(Huffman) 코드 • 허프만 코드 생성 과정 [그림 8.2] 허프만 코드의 생성 과정

  5. PART 02 프로토콜 Run Length Encoding • 허프만 코드는 알려져 있는 문자의 빈도수를 알아야 함 • 팩스는 종이의 밝은 부분과 어두운 부분에 해당하는 비트를 전송 →직접적으로 문자를 전송하지 않음 • Run Length Encoding 기법은 단순하지만 확실한 접근을 시도 → 0 또는 1이 계속 해서 나타나는 비트 문자열을 분석해서 모든 비트를 보내는 대신에 다만 0과 1이 몇 번 나타나는 횟수를 전송 • 팩시밀리 신호를 부호화하고 압축하는데 사용되는 간단하면서도 효율적인 데이터 압축 알고리즘

  6. PART 02 프로토콜 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비트만 전송하면 된다.

  7. PART 02 프로토콜 상대적 인코딩(Relative Encoding) • 비디오 전송에서 이미지들은 팩스의 어둡고 환한 이미지 전송과 텍스트 파일 전송에 비해 매우 복잡 • 전에 소개된 방법는 이미지 압축에 도움이 되지 않음 • 하나의 비디오 이미지는 거의 반복을 가지고 있지 않지만 여러 이미지들에 대해서는 많은 반복이 있음 • 상대적 인코딩은 각각의 프레임을 개별적인 단위로서 다루고 압축하려고 시도하지 않고 각 프레임이 전의 것보다 얼마나 다른지를 고려 • 정보를 압축하고 보내는 것은 프레임들간의 차이가 아주 작을 때 효과적이 된다.

  8. PART 02 프로토콜 상대적 인코딩(Relative Encoding) • 상대적 인코딩의 원리 • 처음 프레임은 보내지고 수신기의 버퍼에 이것이 저장 • 송신기는 두 번째 프레임을 처음 것과 비교하고 그 차이를 인코드 그리고 그것을 프레임 포맷으로 보내게 된다 • 수신기는 그 프레임을 얻고 그 프레임이 가지고 있는 차이를 적용해서 송신 기가 가졌던 두 번째 프레임을 만들어 냄 • 두 번째 프레임을 버퍼에 저장하고 계속해서 새로운 프레임에 대해서 위의 과정을 반복

  9. PART 02 프로토콜 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임을 의미한다.

  10. PART 02 프로토콜 Lempel-Ziv 인코딩 • 반복되는 문자열의 길이가 길수록 이 알고리즘의 효율은 증가 • Lempel-Ziv 알고리즘의 실제구현은 위에서 설명한 원래의 알고리즘과 약간 다르다. • 즉 실제로는 구현이 쉽도록 수정된 알고리즘을 사용하게 되는데 대신에 압축율 이 조금 떨어진다.

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

  12. PART 02 프로토콜 고전적인 암호 방식 • 고전적인 암호 방식 중 하나는 시져(Julius Caesar) 황제가 만든 것으로서 각 문자를 알파벳 순서상 세 자리 뒤의 문자로 대체하는 방법에 기초 • 예: 영어 문자 알파벳을 사용하여 이 방법에 의해서 대문자로 변환하면 평문 'Caesar'는 암호문 'FDHVDU'가 된다. • 이 방법은 암호문을 세 자리 대신 k 자리만큼 문자를 이동시키는 것으로 일반화 • 이 방법은 k를 키로 한 순환이동 방법: 대체암호(substitution cipher) • 치환암호(transposition cipher) : 대체암호 방식과 함께 고전적인 암호 방식의 한 부류 • 평문의 심볼들을 재배치하는 방법이다.(순서를 재배열)

  13. PART 02 프로토콜 관용 암호 방식(conventional cryptosystem) • 관용 암호 방식은 가장 널리 알려지고 또 일반적으로 사용되고 있는 암호 방식 • 컴퓨터 시스템과 통신망 등의 정보 암호화에 많이 이용 • 암호화 키와 복호화 키가 동일한 대칭 알고리즘을 사용 • 통신망에서 사용될 경우 일반적으로 세션키(session key) 또는 비밀키(secret key) 로 불리우는 이 대칭키를 암호화 이전에 서로 분배(distribution)해야하는 부담

  14. PART 02 프로토콜 관용 암호 방식(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

  15. PART 02 프로토콜 관용 암호 방식(conventional cryptosystem) [그림 8.4] 관용 암호 방식 개념도

  16. PART 02 프로토콜 공개키 암호 방식(public key cryptosystem) • 관용 암호 방식의 가장 큰 문제점이었던 키분배 문제를 해결한 암호 방식 • 암호화 키와 복호화 키가 서로 다른 비대칭 알고리즘을 사용하고 암호화 키는 안전한 경로를 사용할 필요 없이 공개해도 무방하다는 특징을 갖는다.

  17. PART 02 프로토콜 공개키 암호 방식(public key cryptosystem) • 키분배에 따르는 부담이 크게 줄어 듬 • 통신망에서 사용하기에는 관용 암호화 방식보다 더 적합하다고 판단되어짐 • 암호화 및 복호화 작업에 필요한 계산량이 너무 크다는 치명적인 단점 • 효율적인 고속 하드웨어의 지원이 없이는 현실적으로 적용하기 어렵다. • 대표적인 알고리즘은 최초의 공개키 방식으로 알려져 있는 RSA(Rivest, Shamir, Adleman) 알고리즘 • [정의 8-2] 공개키 암호 방식의 조건 : p259

  18. PART 02 프로토콜 공개키 암호 방식(public key cryptosystem) [그림 8.5] 공개키 암호 방식 개념도

  19. RSA 알고리즘 – (1) • 1977년 리베스트(R. Rivest), 샤미르(A. Shamir), 아델먼(L. Adelman) 이 개발. • 가장 많이 사용되는 비대칭 암호화 알고리즘. • 매우 큰 두 소수는 소인수분해가 매우 어렵다는 것에 기반. • 데이터를 암호화 하고 복호화 하는데 한 쌍의 키를 이용.

  20. RSA 알고리즘 – (2) • 소수인 p와 q를정함. (1과 자신으로만 나눌 수 있는 수) • n 은 p와 q의곱. (즉 : n = PQ) • Ф(파이)는 p와 q에 각각 1을 뺀수를 곱한 것. (즉 : Ф = (p-1)(q-1) ) • 이 조건에 만족하는 e 를 찾는다. 1 < e < Ф, gcd(e, Ф) = 1 • 다음조건에 맞는 d를 찾는다. 1 < d < Ф, edmod Ф ≡ 1 • 이 계산식으로 구해진 수들 n , e , d

  21. RSA 알고리즘 – (3) • Public key (e , n ) 생성됨. • Private key (d, n ) 생성됨. • Public key는 공개 , private key는 비공개. • 앞서 나온 p와 q와 Ф도 비공개.

  22. 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 도 만족

  23. RSA 알고리즘 사용예-(2) 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

  24. RSA 알고리즘 사용예-(3) • 위의 식으로 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)

  25. RSA 알고리즘 사용예-(4) • Public key 과 Private key 를 이용. • 암호화/ 복호화 를 구현. • 암호화할 m을 5라고 가정. • public key키 (3,33)을 이용해서 암호화. • 암호화된 숫자는 26 :: (124%33=26) C = m^e mod n C = 5^3 mod 33 = 125 mod 33 = 26

  26. RSA 알고리즘 사용예-(5) • 이제 private key (7,33)를 이용해서 복호화. • m이 5로복호화 됨. • 문자등도 가능 하도록 아스키 코드 등등을 이용 • 죄다 숫자로 변형해서 암/복호화 하면된다. • 중간에 C값과 public key 값을 알게되더라도 d 값을 모르면 복호화가 불가능 함. m = C^d mod n m = 26^7 mod 33 = 8031810176 % 33 = 5

  27. PART 02 프로토콜 공개키 분배 방식(public key distribution cryptosystem) • 공개키 분배 방식은 관용 암호 방식의 키분배 부담을 해결한 대칭 알고리즘 방식이다. • 이 방식의 기본적인 아이디어는 관용 암호 방식의 암호화 및 복호화 작업의 계산량이 적다는 장점과 공개키 암호 방식의 키를 공개할 수 있다는 장점을 결합하는 것이다. [그림 8.6] 공개키 분배 방식 개념도

  28. PART 02 프로토콜 디지털 서명(digital signature) • 디지털 서명은 일반적인 문서 서명의 개념을 컴퓨터에 도입한 것으로서, • 하나의 전자적인 메세지가 유일한 것이며 • 또한 그 문서의 전송자가 누구라는 것을 추적하거나 증명할 수 있도록 하는 방법을 말한다. • 디지털 서명은 메세지 송신자의 인증이 본래 손으로 쓰여진 서명과 같은 역할을 하는 것으로 생각한다. • 디지털 서명은 전산화된 업무 및 회계 처리, 그리고 인터넷을 통한 전자 우편이나 정보의 전달에 주로 이용 • 보안 시스템의 중요성이 높아질수록 활용도가 매우 높아질 것으로 기대되는 기술 • [정의 8-4] 디지털 서명의 조건

  29. PART 02 프로토콜 인터넷에서의 보안 • 공개 네트워크(public Network) • 전화망이나 인터넷처럼 네트워크 상의 개체들이 상호 자유롭게 정보를 주고받을 수 있도록 기반구조가 되는 네트워크 • 사설 네트워크(Private Network) • 한 조직이나 개인이 소유한 네트워크, 해당 조직에 관련된 사용자만 사용 가능 • 가상 사설망, Virtual Private Network • 인터넷과 같은 Public Network를 사용하여 private network를 구축하게 해주는 기술 혹은 네트워크

  30. PART 02 프로토콜 IPSec (IP Security Protocol) • IPSec은 전송모드(Transport mode)와 터널모드(Tunnel mode)를 제공 • 전송 모드 • IP 페이로드만 암호화 되며, 원래의 IP Header는 그대로 둔다. • 원본 패킷에 대하여 최소의 바이트 수만 추가된다는 장점 • 공개 네트워크 상에서의 모든 장비가 해당 패킷에 대한 최종 목적지를 부가적인 작업 없이 알 수 있다. • [그림 8.8]와 [그림 8.9]은 전송모드를 적용하기 전과 후의 패킷 형태이다. [그림 8.8] IPSec 전송모드를 적용하기 전의 패킷 [그림 8.9] IPSec 전송모드를 적용한 후의 패킷

  31. PART 02 프로토콜 IPSec (IP Security Protocol) • 터널 모드 • 모든 초기의 IP Datagram이 암호화 되며, 기존의 원본 패킷을 기초로 안호화된 새로운 IP 패킷이 만들어진다. • 라우터와 같은 네트워크 장비가 IPSec 프로토콜 상에서의 Proxy로 동작할 수 있다. • 전체 패킷을 암호화 하므로, 실질적인 전송 호스트와 목적지는 노출되지 않으므로 침입을 위한 분석을 하기가 어렵다. • 가상의 터널이 존재 • [그림 8.10]과 [그림 8.11]는 터널 모드를 위하여 암호화된 패킷의 형태를 각각의 IPv4와 IPv6로 나타낸 것이다. [그림 8.10] IPSec 터널 모드 적용 전 패킷 [그림 8.11] IPSec 터널 모드 적용 후 패킷

  32. PART 02 프로토콜 SSL (Secure Socket Layer) • 양방향 프로토콜, Netscape Communications Corporation이 인터넷 상의 보안과 기밀을 보장하기 위해 개발한 규약 • SSL 규약은 서버와 클라이언트의 진위 확인을 하도록 해준다. • 암호화와 인증, 메시지 확인 규칙 등의 방법을 통해 송수신 경로의 보안과 안정성을 유지시켜 줄 수 있다. • 양방향 핸드쉐이크 방식을 띄는 프로토콜 • 완전 핸드쉐이크 방식, 지속적 세션 수행 방식

  33. PART 02 프로토콜 SSL (Secure Socket Layer) • Full handshake 방식

  34. PART 02 프로토콜 SSL (Secure Socket Layer) • Resume Session

  35. PART 02 프로토콜 VPN에서의 IPSec과 SSL의 비교 • Virtual Private Networks(VPNs)는 그들의 내부적인 Private Network를 사용하여, 외부 인터넷으로의 확장성을 제공한다. • VPN은 외부에 대하여 폐쇄적인 환경을 구축하고자 하는 분야에서 널리 사용 • IPSec과 SSL을 VPN에 적용함으로 인한 장단점. • 장점 : 응용 계층 프로토콜에 독립적인 보안 연결을 제공 • 단점 : 세 가지의 관점에서 단점을 분석 • 관점 1 : 제한성 • 관점 2 : 확장성 및 호환성 • 관점 3 : 플랫폼에 대한 제한

More Related