관리 메뉴

사과하는 제라스

15. 네트워크 보안 본문

대학 전공 공부/네트워크 프로그래밍

15. 네트워크 보안

Xerath(제라스) 2022. 6. 8. 06:05

목차

    728x90
    반응형

    - 네트워크 보안 관련 배경 지식

    => OSI 7계층

    OSI 7계층 모델은 단순 레퍼런스 모델일 뿐! 실제 사용은 TCP/IP 프로토콜을 사용한다.

    data(message)에 TCP헤더(붙으면 segment), IP헤더(붙으면 packet), 이더넷 헤더와 이더넷 트레일러(붙으면 frame)들이 차례로 붙음. 

     

    => 여기서 TLS(Transport Layer Security)라는 것이 패킷의 TCP Data에 대한 1. 인증 2. 암호화를 해준다.

     

    TCP/IP 모델과 OSI 모델 차이

    1) TCP/IP:  클라이언트 서버 모델 <=> OSI:개념적인 모델

    2) TCP/IP:  Standard protocol <=> OSI: reference model(구조에 대한 이해를 위한 모델일 뿐!)

    3) TCP/IP:  4계층 <=> OSI: 7계층

     

    Encryption(암호화)

    1. Link encryption

    :모든 링크 간에 암호화가 독립적으로 수행됨.

    이때 각 링크 간에는 키 전달, 키 교환을 위해 공개키를 쓰고 패킷을 암호화하기 위해 대칭키를 쓰는데 이때 이 대칭키가 공유가 되어 있어야함.

    ex) 무선 AP(Access Point)에 모바일 노드들에서 패스워드로 접근하는 것.

     

    2. End to End encryption

    : 시작점(source)부터 도착점(Destination)까지 암호화가 됨.

    ex) kakaotalk에서의 비밀 채팅.(카카오 서버를 통해 채팅하는데 이때 암호화를 통해 보지 못하게 할 수 있음.)

     

    - End-to-End로 암호화 시 IP 헤더는 암호화 X (∵패킷 라우팅을 해야 하므로)

    => 트래픽 흐름은 확인 가능하기 때문에 통신 여부에 대한 확인은 가능.

    ∴ Link encryption을 통해 IP헤더를 보호함.

    이렇게 통신컨텐츠 보호(by End-to-End 암호화), IP헤더 보호(by 링크 암호화)를 하는 기술이 VPN임.(이게 더 발전한게 Deep Web기술)

     

    이렇게 암호화된 메시지 인증을 위해서는 네트워크 패킷에 인증 알고리즘(MAC 알고리즘)이 적용되어야 함.

     

    보안의 중심은 키이며 이를 교환해야 함.

    -> 직접 USB로 주고 받기? 이거 너무 힘들고 불편

    위 그림처럼 서로 랜덤한 값을 주고 받고 이 두 값을 동일한 공개된 해쉬함수(키 유도 함수)에 넣어서 동일한 세션 키를 얻은 후

    이를 이용하여 암호를 인증함.

     

    => 이러한 기술이 <Diffie-Hellman 키 교환 프로토콜>을 사용함.

    : DLP(Discrete Logarithm Problem)을 이용하여 modular 개념으로 키교환 방식을 사용함.

    Alice: 랜덤한 값 x를 가지고서 R1 = g^x mod p를 만듦

    Bob: 랜덤함 값 y를 가지고서 R2 = g^y mod q를 만듦

    g,p는 공개된 값, R1,R2는 두 노드간의 공유한 값.

    (R1)^x = (g^y)^x = g^xy / (R2)^y = (g^x)^y = g^xy => 서로 같은 값 가질 수 있음.

    but, 공격자는 R1, R2를 공격해도 x,y 구할 수 없음(DLP때문)

     

    이와 더불어, 단순히 <Diffie-Hellman 키 교환 프로토콜> 로만 키 교환을 하면 중간에 공격자가 Alice인 척(혹은 Bob인 척) 가능.

    Alice와 Bob은 각자 PKI 인증서에 기반한 서명을 한 후 전송을 하게 됨. (이는 TLS의 키 교환 때도 마찬가지임.)

     

     

    - SSL/TLS 프로토콜 

    : 클라이언트와 서버의 통신에 메시지 인증, 기밀성을 제공하는 기술.

    => 암호화 되지 않은 패킷(ex)http)를 SSL/TLS패킷으로 인코딩되면 암호화가 됨 => https

    TCP와 Application 계층 사이에 존재함.

     

    - TLS는 SSL의 버젼 업된 프로토콜로 현재 주로 사용됨.

     

    - HTTPS

    : 브라우저 인증서와 서버 인증서를 통해서 키 교환을 해서 암호화를 함.(TLS 암호화 통신)

    => 의미없는 랜덤 값들로 소통함.

     

    - SSL/TLS 프로토콜 구조

    1. Handshake Protocol : 어떤 알고리즘을 사용할 것인지 정함.

    2. ChangeCipherSpec Protocol : 쓰기로 한 알고리즘과 그 알고리즘에 대한 키 값이 제대로 세팅되었는지 확인.

    3. Record Protocol : 암호화와 인증이 적용된 통신을 함.

    4. Alert Protocol : 에러가 발생하는지 확인하고 발생 시 나타내줌.

     

    1. Handshake Protocol 구조

     

    - Phase 1

    :TLS 버젼, 키 교환 알고리즘, 인증 알고리즘, 암호화 알고리즘, 압축 알고리즘, 랜덤한 값을 서버와 클라이언트 간에 교환을 함.

    => 주로 클라이언트에게 맞춰주는 편임. 서버에서 요구하는 최소 보안 요구사항만 만족하면 그 알고리즘으로 해줌.

    - Phase 2

    : 키 교환에 필요한 인증서들을 주고 받음.

    - 이때 사용하는 방법은 4종류임. 이 중 우리는 가장 많이 사용하는 Ephermeral DH(Diffie-Hellman 키 교환 프로토콜)을 사용함.

     

    g, p는 공유. g에 랜덤한 값 s를 제곱하고 p로 mod 한 후 g^s mod p에 서명해서 전송

     

    - Phase 3

    : 클라이언트의 인증서, 공개키, 서명값을 보내줌.

    이때, Phase 2, Phase 3는 같은 종류의 옵션으로 키교환을 해야 함.

     

    PM = Pre-master secret => 이걸로 암호화키, 인증키를 뽑아냄.

     

     

    - Phase 3

    : 서로 어떤 알고리즘을 사용할지에 대한 changecipherspec값을 전송하고, 지금까지 주고받은 데이터에 대한 명세서 같은 해쉬값들을 전송함.

    1. 서버와 클라이언트가 DH 키 교환을 인증서(certificate) 기반으로 수행함.

    2. 이를 통해 PM(Pre-master Secret)을 만듦.

    3. 이를 기반으로 해쉬 함수를 통해 필요한 데이터를 찾아냄.

     

    => 이를 통해 클라이언트와 서버의 인증키, 암호화 키, 초기화 값을 세팅할 수 있음.

     

    2. ChangeCipherSpec Protocol 구조

    pending(보류)상태에 있는 값들을 트리거인 ChangeCipherSpec을 통해 active로 모두 옮겨지면 그때부터 암호화 통신을 할 수 있음.

     

    3. Record Protocol

    : 암호화 통신을 함. 데이터를 압축하고 이를 MAC 키를 통해 Hash함수에서 MAC(Message Authentication Code)값을 뒤에 붙여줌. 이후 이를 Encryption(암호화)하고 그 값을 전송함.

    = 암호화 + 인증이 적용된 패킷이 생성됨.

    4. Alert Protocol

    : 시스템이 비정상적 동작을 했을 때 에러 처리를 위해 아래와 같은 에러 및 경고 메세지들이 정의되어 있음.

     

    728x90
    반응형

    '대학 전공 공부 > 네트워크 프로그래밍' 카테고리의 다른 글

    17. OpenSSL(TLS 서버 구축)  (0) 2022.06.09
    16. Basic OpenSSL  (0) 2022.06.08
    14강. 보안 기본 개념  (0) 2022.05.21
    13강. HTTP and Web Client  (0) 2022.05.13
    12강. DNS  (0) 2022.05.13