프로그래밍[Univ]/네트워크

[네트워크] 보안 Part 1

Cloud Travel 2012. 11. 3. 10:59

* 일반적인 네트워크 보안 계층

  


* 네트워크 보안의 목표

 - 3대 과제

  > 기밀성(confidentiality) : 메세지의 내용을 송수신자 이외에는 보지 못하게 하는 것

  > 인증(authentication) : 송수신자는 상호 존재를 확인 할 수 있어야 하는 것(종단점 인증)

  > 무결성(integrity) : 전송 중 또는 전송된 이후 메세지 내용이 변경되지 않은 것을 보장하는 것

 - 기타 목표

  > 접근제여(access control) : 권한(authorization) 설정 및 제한하는 것

  > 가용성(availability) : 항상 서비스에 접근이 가능해야 하는 것. 서비스를 원할때 받을 수 있는 것

  > 부인방지(non-repudiation) : 자신이 보낸 메세지가 아니라고 부인하는 것을 방지(전자상거래 거래내역 등에 필수)

 - 네트워크 보안의 문제 해결 시작점은 암호 알고리즘이다.


* 네트워크 공격자(해커)의 목표/방법

 - 엿듣기 : 메세지 가로채기

 - 메세지 내용 변이(추가/삭제/변경)

 - 메세지를 지속적으로 변경하면서 보내는 것

 - 패킷의 소스주소를 변경하여 위장해서 보내는 것

 - 송수신자중 한명이 되여서 통신을 하는 것

 - 서비스를 받지 못하게 하는 것


* 간단한 암호화 방법

 - 대치 암호(substitution cipher) 

  > 단일 문자를 서로 대치하여 만드는 암호

  > 알파벳을 i 만큼 밀어서 작성하거나 문자를 섞어서 하나의 다른 순서의 문자표를 만드는 것

  > 위의 첫번째 경우 key값은 i값이 되고, 두번째 경우의 key값은 문자표가 된다.

  

* 암호화키

 - 암호를 해독하는데 필요한 요소. 값. 

 - 동일한 알고리즘이라도 k값이 변하면, 다른 형식의 암호가 된다.

 - 암호화 알고리즘은 이미 모든 사람에게 알려져 있다.(Open source) 이에 비해 Key값은 비밀로 되어있다.

 - 암호 알고리즘은 언젠가 해독이 된다. 암호알고리즘을 변경하는 것보다 key를 바꾸는 것이 더 비용이 적게든다.

 - 암호의 안정성은 key에 달려있다.

  > 무차별 공격에 대해서 key가 많을 수록 해결하기 힘들어 진다.

  > 통계적 분석 : 문자의 빈도수 등을 이용해서 암호화된 내용을 추측할 여지가 있다.


* 암호화 방법

 - 대칭키 암호화(오래전부터 사용)와 공개키 암호화가 있다.

ⓐ 대칭키 암호화

 - 암호화 하는 키와 복화화 하는 키를 같게 사용하는 것(암호 key와 복호 key가 대칭을 이룬다)

 - 키 배분의 문제가 존재한다.

 - 대칭키 암호화 알고리즘은 스트림 암호화와 블록 암호화, 2가지 유형이 존재한다.

  > 스트림 암호화

   ~ 키가 스트림으로 한 비트씩 지속적으로 생성된다.

   ~ 키 스트림과 데이터 스트림의 XOR 연산을 통해서 암호문을 만들고, 암호문과 키 스트림의 XOR로 복호화 시킨다.

  > 블록 암호화

   ~ K비트 길이의 평문 메시지 블럭을 k비트 길이의 암호문 블럭과 1:1로 매핑시킨 것.

   ~ 블럭의 크기가 작을 경우 무차별 공격으로 쉽게 암호문이 뚫릴 수 있다.

   ~ 블럭의 크기가 클 경우 매핑 테이블이 너무 커져서 관리하기가 힘들어진다.

   ~ Data bit을 특정 bit으로 나눈후 shift box를 이용하여 데이터를 nbit씩 이동 시킨다. 그후 key값을 이용하여 XOR연산을

      실수 한 후, 결과를 permutation box를 통해서 뒤섞는다. 이 과정을 n회 반복한다.

   ~ n회 반복하는 이유는 하나의 bit가 영향을 주는 bit수를 증가 시키기 위해서이다.

   ~ n이 증가하면 섞는 효과가 감소되는 것도 존재한다.

 - CBC(Cipher Block Chaining)

  > 현재 블럭을 암호화할 때 이전 블럭의 결과를 사용하는 것(이전 블럭 암호문 XOR key XOR data = 현재 블럭 암호문)

  > 초기 벡터(Initial Vector)를 사용하여 첫 블럭을 암호화 한다.

  > CBC 이유 : 공격자 입장에서 블럭을 관찰했을 때, 평문이 같을 경우 같은 암호문이 반복되어 

    내용을 유추할 여지를 준다.(통계적 접근) 또는, 메세지의 Image 파일인 경우 형태가 남을 경우도 있다.

    이를 방지 하기 위해서 CBC를 사용하여 같은 평문이 와도 다른 암호문이 나오게 만든다.

 - 대표적 대칭키 암호화 알고리즘1 : DES

  > DES는 56bit의 대칭키와 64bit크기의 블럭을 사용한다. 

  > CBC 방식을 사용

  > 무차별 공격으로 하루만에 암호가 풀려서 3DES(키 길이를 3배로 늘린 것)를 사용

 - 대표적 대칭키 암호화 알고리즘2 : AES

  > 컴퓨터 발전으로 DES의 안전성이 떨어져 생성된 알고리즘

  > 블럭크기 128bit와 키의 길이 128bit/192bit/256bit등을 사용한다.

  > 현재 컴퓨터로는 무차별공격을 할 경우 149*10^9 년이 걸리게 된다.

  > 우리나라는 AES(미국)와 비슷한 SEED와 ARIA를 사용한다.