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

[네트워크] IPsec

Cloud Travel 2012. 11. 22. 22:21

* IPsec

 - 단말기에서 보내는 데이터 그램을 암호화한다면 그 상위의 계층은 모두 암호화가 될 것이다.

 - 네트워크 계층에서 보안을 제공하므로써 상위 계층은 모두 한꺼번에 보호된다.(Blanket coverage)

 - 응용

 ⓐ VPN(Virtual Private Network)

  - 각 집단들은 보안을 위해 사설망을 구축한다.

  - 개개의 집단이 사설망을 개설하기엔 많은 비용이 든다. 

  - 이 비용을 절감하기 위해서 공중망을 사설망으로 사용한다.

   > 투자비 절감의 횩과를 얻을 수 있다.

   > 공중망이 마치 자신들만이 쓰는 것처럼 사용할 수 있어야 한다.

   > 집단은 망 사용자의 입장으로 관리할 필요가 사라진다.

   > 단, 공중망이 사설망을 쓸때와 같은 속도를 보장해줘야 한다.


* IPsec 생성 위치

 - IPsec Transport Mode(IPsec 전달 모드) 

  > IPsec의 암호화, 복호화 과정이 종단 시스템에서 이뤄진다.

  > 집단에서 IPsec에 대해서 신경을 써서 관리해야한다.

    


 - IPsec tunneling mode(IPsec 터널 모드)

  > 공용 네트워크의 종단 라우터에서 IPsec을 암호화, 복호화 한다.

  > 망 사업자가 VPN을 제공해준다고 광고하여 집단을 모집한다.

  > 망 사업자가 IPsec에 대한 것을 대행해준다.

  > 망 사업자는 VPN을 위해서 차별화된 서비스와 보안을 제공해줘야 한다.

     (차별화된 서비스는 망 중립성 문제와 대립되고 있다.)

    

  > 집단과 특정 단말사이에서도 IPsec이 제공되야 하기 때문에 다음과 같은 모양의 터널 모드도 존재한다.

   


* IPsec 사용 프로토콜

 - AH(Authentication Header protocol) : 출발지 인증과 데이터 무결성을 보장해주는 프로토콜

 - ESP(Encapsulation Security Protocol) : 출발지 인증, 데이터 무결성 및 기밀성을 보장해주는 프로토콜

  > 기밀성 보장때문에 ESP가 더 많이 사용된다.

 ※ IPsec은 IPsec 생성 위치와 사용 프로토콜에 의해서 4가지가 존재하게 된다.


* Security associations(SAs)

 - IPsec으로 통신하기 전에 단말간 가상의 연결이 필요하다.

  > IPsec을 사용하는 노드간 필요한 값을 주고 받기 위해 연결된 논리적 선로

 - SA는 단방향이기 때문에 노드가 양방향 통신을 한다면, 두개의 SA가 연결되야 한다.

 - VPN은 수많은 SA가 필요하게 된다.

 - SA구성 : 데이터 전송이 되기전에 결정되야 한다.

  ⓐ SA 식별자 : SA를 구별해주는 식별 번호, SPI(Security Parameter Index)

  ⓑ SA를 구성하는 양 단말의 IP주소

  ⓒ 사용할 암호 알고리즘 및 해쉬 함수 정보

  ⓓ 각종 키(인증키, 암호화키)

 - SA구성은 Database로 관리를 한다 : SAD(Security Association Database)

  > 터널모드의 2번째와 같은 통신이라면, n명의 사원이 있으면 2 + 2n개의 SA가 존재하게 된다.


* IPsec Datagram(in tunnel mode with ESP)

   

 - ESP trailer

  > 블럭의 암호화 길이를 맞추기 위한 것

 - ESP header

  > SPI : 수신 개체가 무엇인지 알 수 있어야 한다. (암호화 안되는 이유 : 보낸 상대의 SPI를 알아야 복호화가 가능하기 때문)

  > Sequence number : 재사용 공격, 스니핑을 방지하기 위해서 사용

   ~ 새로운 SA마다 0부터 새로 실시(SA마다 각각의 sequence number를 사용)

   ~ window sliding 기법으로 모두 검사하지 않고, 몇개씩 넘어가면서 검사한다

 - ESP auth : 데이터 무결성을 위해서 HMAC을 계산한 것

 - new IP header : original IP header가 암호화 되있기 때문에 볼수 없다. 이에 따라 새로운 IP header를 붙인다.

 

* IPsec이 보장해주는 것

 - 보안 : 암호화 되있기 때문에 훔쳐 보는 것이 불가능하다

 - 데이터 변경 : 데이터 bit을 변경하는 것은 가능하지만 HMAC을 이용하여 확인이 가능하다

 - 중간자 공격 : HMAC을 이용하기 때문에 불가능하다.(Secret number를 사용)

 - 재사용 공격 : Sequence number를 붙이기 때문에 불가능하다.


* IPsec에 필요한 값을 설정하는 방법

 - 수동설정

 - 자동설정 : Internet Key Exchange(IKE)

  > PSK와 PKI가 존재한다.


* SSL과의 비교

 - IPsec 

  > 네트워크 계층에 존재(OS의 영향을 받는다)

  > 암호화, 무결성, 상대방 인증이 가능하다.

  > 복잡하다.

 - SSL

  > TCP위에서 존재

  > 암호화, 무결성, 상대방 인증이 가능하다.

  > IPsec에 비해 간단하다.

 - IPsec을 사용하기 위해서는 OS를 수정해야하고, SSL을 사용하기 위해서는 응용프로그램을 수정하면된다.

 - SSL을 사용함에 따라 응용프로그램 업데이트가 있을 수 있다.

 - IPsec은 복잡성이 강해 거부감이 존재한다.

 - IPsec은 해결하지 못한 보안적 결함이 존재한다.