네트워크

IPSEC

jh.g 2023. 9. 6. 16:07

IPSEC(Internet Protocol Security)


-->모든 프로토콜 / 네트워크에 사용되는
    
    인터넷(네트워크) --> 전달되는 과정 

                                      L1 : 비트스트림
                                      L2 : 프레임
                                      L3 : 패킷
                                      L4 : 세그먼트

 

패킷 ---> 구조 : 헤더 + 페이로드

헤더 ---> 사용되는 프로토콜

 

IPv4 : IPSEC을 지원하지 X --> 대다수의 네트워크 : 
          해결책 : 자체 사용이 안되므로 다른 모듈을 통해 해결
IPv6 : IPSEC을 지원

 

IPv4 프로토콜은 패킷을 보호하기 위한 보안 필드가 없기 때문에 패킷에 대한 스니핑이 발생하면
IP헤더 , TCP/UDP헤더, 데이터 내용을 손쉽게 확인 할 수 있다.
--> 보안 취약성

->그렇기 때문에 개인 정보 유출 및 해킹을 당할 수 있는 문제 발생

===> 해결책 : IPSEC 프로토콜을 이용하여 IP 패킷에 대한 암호화 및 인증을 실시하여 기밀성 / 무결성을 확보

 

보안의 3요소
    기밀성
    무결성
    가용성(부인방지)

 

기밀성 : 인가(authorization)된 사용자만 정보 자산에 접근할 수 있는 것을 의미
              비인가자 --> 정보를 접근할 수 없다.
    
         * 누가 누구에게 어떤 정보를 전달하는지 알 수 없게 하는 것.
        
        --> 1. 터널링 : cisco : GRE --> 전달되는 모든 패킷이 Src/Dst 주소가 같다.
               ---> Decapuslation 한테에선 다시 원래의 헤더 정보가 노출된다. (wireshark)
                -> 원래 상태의 헤더정보가 암호화되어 있지 않기 때문이다.


            2. 원래의 헤더정보는 도착지에서 복호화 시키자. ---> IPSEC
              --> 원본 헤더 정보를 암호화하면 얻어낼 수 있다.

 

무결성 : 전달되는 내용이 스푸핑(변조)되지 않았음을 증명 ---> IPSEC
         전달되는 내용 ---> 페이로드


        해시(HASH) --> 1개의 비트라도 다르면 전혀 다른 값을 출력한다.
        페이로드를 암호화해서 전달하게 되면 ---> 변조가 되었다면 ---> 알 수 없는 DATA가 출력
                                                                            변조가 되지 않았다면 --> 정상 DATA가 출력


        키 ---> Src/Dst 에서 각자 갖고 있는 키값에 의해 암호화/복호화되어야 한다.
        (Shared Key)
    : 페이로드의 암호화를 통해 얻어낼 수 있다.

 

IPSEC 프로토콜의 유형

 

AH (Authentication Header) 프로토콜  :  헤더

- 두 시스템의 송수신하는 IP 패킷에 대한 무결성 및 인증을 제공하고, 암호화는 제공하지 않는 프로토콜
- IP 프로토콜 51번을 사용한다.
- Transport모드와 Tunnel 모드에 따라 AH 헤더가 인캡슐레이션 위치와 보호 범위가 달라진다.

 

AH - Transport Mode

- AH 헤더는 'Original IP Header'와 'TCP Header' 사이에서 인캡슐레이션된다.
인증 보호 범위는 원본 IP 헤더 일부 필드를 제외한 전체 범위
- 일반적으로 클라이언트가 IPSEC 통신을 시작하는 경우 사용,
  선택된 IP 헤더 필드와 상위 계층 프로토콜을 보호

 

AH Tunnel Mode

- AH 헤더는 'Original IP Header'앞에 새로운 'New IP Header'와 함께 인캡슐레이션된다.
                                 // ---------------------- : 인캡슐레이션 
    인증에 의해서 보호되는 범위는 원본 IP 헤더의 일부 필드를 제외한 전체 범위
- AH Tunnel 모드로 처리된 패킷들은 'New IP Header', 'Original IP Header', '상위 프로토콜 Header' 정보를 확인

AH ----> 인증 범위 : 전체
         인증 대상 : 헤더

 

ESP(Encapsulation Security Payload) 프로토콜

- 패킷에 대한 기밀성(암호화)을 제공하는 프로토콜
  Src/Dst 인증 및 선택적인 무결성 서비스를 제공한다.
- IP 프로토콜 50번 사용
- Transport 모드와 Tunnel 모드에 따라 ESP 헤더가 인캡슐레이션 위치와 보호 범위가 달라진다.
- IPSEC VPN에 적용될 때에는 'MD5-HMAC', 'SHA-MAC' 인증 알고리즘 (무결성)
                           'DES', '3DES', 'AES' 암호화 알고리즘 

 

용어 정리

 

3DES (트리플 DES)
트리플 DES는 각 데이터 블록에 데이터 암호화 알고리즘을 세번 적용한 트리플 데이터 암호화 알고리즘 블록 
암호에 대한 일반적인 이름이다.

 

AES
고급 암호화 표준(Advanced Encryption Standard, AES)은 2001년 미국 표준 기술 연구소(NIST)에 의해 
제정된 암호화 방식이다.[3] AES는 두 명의 벨기에 암호학자인 존 대먼과 빈센트 라이먼에 의해 개발된 
Rijndael(레인달, [rɛindaːl][4][5]) 에 기반하며 AES 공모전에서 선정되었다.

AES는 미국 정부가 채택한 이후 전 세계적으로 널리 사용되고 있다. 1977년 공표된 DES를 대체한 AES는, 
암호화와 복호화 과정에서 동일한 키를 사용하는 대칭 키 알고리즘이다.

미국 표준 기술 연구소(NIST)는 2001년 11월 26일 AES를 미국 연방 정보 처리 표준(FIPS-197)으로 공포하였다. 
NIST는 5년의 표준화 과정을 거쳤으며 이 과정에서 15개의 알고리즘이 경쟁, Rijndael 암호가 가장 적합한 
알고리즘으로 선정되었다. 이 표준은 2002년 5월 26일부터 효력을 발휘하기 시작했다. 
AES는 ISO/IEC 18033-3 표준에 포함되어 있으며 여러 암호화 패키지에서 사용되고 있다. 
AES는 또한 미 국가안보국에 의해 1급비밀(Top Secret)에 사용할 수 있도록 승인된 알고리즘 중 최초로 
공개되어 있는 알고리즘이다.

Rijndael은 알고리즘의 개발자인 빈슨트 레이믄(Vincent Rijmen)과 요안 대믄(Joan Daemen)의 이름을 따서 
지은 것으로 AES 표준은 여러 Rijndael 알고리즘 중 블록 크기가 128비트인 알고리즘을 말한다.

 

대칭키 : AES   /  비대칭 : RSA

 

MD5
MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다. RFC 1321로 지정되어 있으며, 
주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. 1991년에 로널드 
라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안했다.

1996년에 MD5의 설계상 결함이 발견되었다. 이것은 매우 치명적인 결함은 아니었지만, 암호학자들은 해시 
용도로 SHA-1과 같이 다른 안전한 알고리즘을 사용할 것을 권장하기 시작했다. 
2004년에는 더욱 심한 암호화 결함[1]이 발견되었고. 2006년에는 노트북 컴퓨터 한 대의 계산 능력으로 1분 
내에 해시 충돌을 찾을 정도로 빠른 알고리즘이 발표[2]되기도 하였다. 현재는 MD5 알고리즘을 보안 관련 
용도로 쓰는 것은 권장하지 않으며, 심각한 보안 문제를 야기할 수도 있다. 2008년 12월에는 MD5의 결함을 
이용해 SSL 인증서를 변조하는 것이 가능하다는 것이 발표되었다.

 

SHA
SHA(Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 서로 관련된 암호학적 해시 함수들의 모음이다. 
이들 함수는 미국 국가안보국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정되었다. 
SHA 함수군에 속하는 최초의 함수는 공식적으로 SHA라고 불리지만, 나중에 설계된 함수들과 구별하기 위하여
SHA-0이라고도 불린다. 2년 후 SHA-0의 변형인 SHA-1이 발표되었으며, 그 후에 4종류의 변형, 즉 SHA-224, 
SHA-256, SHA-384, SHA-512가 더 발표되었다. 이들을 통칭해서 SHA-2라고 하기도 한다.

SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 
사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 한다. 
혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장한다.

SHA-0과 SHA-1에 대한 공격은 이미 발견되었다. SHA-2에 대한 공격은 아직 발견되지 않았으나, 전문가들은 
SHA-2 함수들이 SHA-1과 비슷한 방법을 사용하기 때문에 공격이 발견될 가능성이 있다고 지적한다. 
미국 표준 기술 연구소(NIST)는 SHA-3로 불리는 새로운 암호화 해시 알고리즘에 대한 후보를 공모하였다.

 

HMAC
암호학에서 HMAC(keyed-hash message authentication code, hash-based message authentication code)는 
암호화 해시 함수와 기밀 암호화 키를 수반하는 특정한 유형의 메시지 인증 코드(MAC)이다.

 

ESP Transport Mode

- ESP 헤더는 'Orignal IP Header'와 'TCP Header'사이에 인캡슐레이션 된다.
  'DATA' 뒷부분에 'ESP Trailer'와 'ESPAuth'이 추가로 인캡슐레이션 된다.
- ESP는 선택적인 인증 서비스를 제공하며, 이 때 인증은 원래의 데이터가 아니라 암호화된 패킷에 대해서
  인증을 실시 한다.
- IP 상위 프로토콜을 보호하는 모드이므로 원본 IP헤더가 암화화되지 않는 상태로 남아있다.

 

ESP Tunnel Mode

- ESP 헤더는 'Original IP Header'앞에 새로운 'New IP Header'와 함께 인캡슐레이션되며
  'DATA' 뒷부분에 'ESP Trailer', 'ESPAuth'이 추가로 인캡슐레이션 된다.
- 원본 IP 헤더 부분을 포함하여 상위 부분 전체가 암호화된다.
- 'New IP Header'를 제외한 나머지 정보들에 대해 암호화 및 인증을 수행한다.
- 'New IP Header'의 Src/Dst IP 주소를 이용하여 패킷을 전송하기 때문에
  기밀성과 무결성이 보장되므로 패킷 정보 유출 및 변조가 불가능하다.

 

IPSEC의 주요 프로토콜  --   AH  - Transport Mode
                                                    - Tunnel Mode
                                            ESP - Transport Mode
                                                    - Tunnel Mode

SA (Security Associations) : 보안 요소들

- AH/ESP를 통해서 IPSEC 서비스를 구현할 경우, 암호화 및 인증에 사용할 요소

- 암호화, 복호화할 때 사용되는 키 (shared key) --> 영구적으로 사용하지 않고 일정 주기로 변경
                                                                      (용량 / 시간)
    용량 : 4,608,000KByte
    시간 : 3600초

- SA는 단방향 연결로 생성되고, AH, ESP는 각각 개별적으로 생성된다.
- SA는 수동 생성 --> 생성되자마자 연결
       자동 생성 --> IKE 자동 생성 : 용량/시간 ---> 자동 삭제
                --> 자동 삭제 이유 : 주기적인 SA갱신과 키 업데이트를 이용하여 새로운 SA정보와
                                    키를 공격자로부터 유출 방지하기 위함

 

SA정보를 생성하는 방법 2가지

1. 수동 키 생성방식 (관리자가 직접 입력)
2. 자동 키 교환 방식 (IKE 프로토콜을 이용한 협상 방식)

 

IPSEC으로 암호화 복호화 하기전에 설정되어 있어야 하는 1단계 / 2단계 : 계층적 구조
    반드시 순서대로 정의해야 한다.

 

IKE : IPSEC VPN에서 상대방을 인증하고 IKE와 SA를 협상하는데 필요한 프로토콜
                                                                 --------  : Src/Dst 간에 협상
                                                                               --- : 인증 알고리즘 : AH/ESP
      세션키를 생성하여 상대방과의 인증을 수행한다.
      (키 생성과 인증) ... 배포가 빠져있다. ---> Diffie Hellman

 

IKE 단계

1단계
- 두 IPSEC 개체 간에 인증 및 2단계 SA를 성립하는 메시지를 보호하기 위한 세션키를 협상
- 2단계 SA를 설정하기 위한 메시지를 보호할 때만 사용
  (IPSEC 패킷을 보호하는데 사용되지 않는다.)
- 1단계 SA는 방향성을 갖지 않는다.(단, 수동으로 키를 설정하면 1단계 필요없음)

 

2단계
- IPSEC을 이용하여 패킷 전송에 사용할 SA를 의미한다.
- Inbound / Outbound 에서 사용하는 SA가 다르기 때문에 2단계 SA는 방향을 갖는다.
  (즉, 2개의 SA생성)
- 내용은 인증 메커니즘, 암호화 알고리즘, 해시 알고리즘, 암호화와 인증키 값, 
  SA 갱신 기간 

 

생성키 ---> 배포
Diffie Hellman : 비대칭키 알고리즘이며, 상호 간에 안전하지 않은 채널상에서 공개키, 비밀키, 세션키를
                 생성하여 상대방과의 인증을 수행한다.
                 --> 비대칭키 알고리즘을 이용하여 대칭키(RSA)를 전달한다.
        
        상호 간에 안전하지 않은 채널 상에서 안전하게 키를 교환할 수 있게 해준다.

 

RSA
RSA 암호는 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘으로 알려져 있다. 
RSA가 갖는 전자서명 기능은 인증을 요구하는 전자 상거래 등에 RSA의 광범위한 활용을 가능하게 하였다.

1978년 로널드 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman)의 
연구에 의해 체계화되었으며, RSA라는 이름은 이들 3명의 이름 앞글자를 딴 것이다. 
이 세 발명자는 이 공로로 2002년 튜링상을 수상했다. 
그러나 RSA 방식을 제일 먼저 개발한 사람은 영국 GCHQ에 근무하던 수학자였으며, 이보다 빠른 1973년도에 
개발하게 된다. 이 내용은 GCHQ에서 비밀로 취급되었으며, 이후 1997년 세상으로 발표되게 된다.[1]

RSA 암호체계의 안정성은 큰 숫자를 소인수 분해하는 것이 어렵다는 것에 기반을 두고 있다. 
그러므로 큰 수의 소인수 분해를 획기적으로 빠르게 할 수 있는 알고리즘이 발견된다면 이 암호 체계는 가치가 
떨어질 것이다. 1993년 피터 쇼어는 쇼어 알고리즘을 발표하여, 양자 컴퓨터를 이용하여 임의의 정수를 다항 
시간 안에 소인수 분해하는 방법을 발표하였다. 따라서 양자 컴퓨터가 본격적으로 실용화되면 RSA 알고리즘은 
무용지물이 될 것이다. 
그러나 양자 컴퓨터가 이 정도 수준으로 실용화되려면 아직 여러 해가 더 필요할 것으로 보인다.

RSA 암호화 알고리즘은 1983년에 발명자들이 소속되어 있던 매사추세츠 공과대학교(MIT)에 의해 미국에 
특허로 등록되었고, 2000년 9월 21일에 그 특허가 만료되었다.

 

SSH ---> 원격제어 프로토콜 -->  보안기능 --> 인증 암호화
                                 SSL

 

SSL ---> 1. 서버 인증
         2. 클라이언트 인증          ===> CA
         3. 암호화(페이로드)

 

인증  ---->   서로간 인증 ??   ---> 제3자 인증 방식
                                    -----  공신력을 갖고 있는 제3자 : CA
        Certificate Associastion
        
        공개키 암호화 방식을 대규모로 전재할 수 있도록 하는 신뢰성 있는 공개키 저장소
                                                            ------------------------
        CA는 IPSEC으로 보호된 네트워크의 각 장치에 디지털 인증서를 주는 것과 같다.
        이때, 디지털 인증서는 CA로부터 발급 받는다.
        CA를 이용하면 IPSEC VPN 피어 각각은 자신을 증명하기 위해 디지털 인증서를 교환
        함으로써 공개키를 교환하거나 상호간에 공개키를 공유할 필요가 없다.
(공신력을 갖고있는 제3자 인증 방식)