ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 암호화된 패킷 교환 방법
    네트워크/보안 2021. 3. 4. 13:04

    배경

    두 서버가 데이터를 교환할 때 주로 네트워크를 이용한다. 물리적으로 USB를 이용해 전달하지 않는다면 거의 99% 네트워크를 이용해 데이터를 교환하게 된다 네트워크 인프라는 사유재산이 아니다. 누구나 이용할 수 있고 누구나 접근할 수 있다. 즉, 내가 네트워크를 이용해 데이터를 전송하게 되면 중간에 누군가가 가로챌 수 있다는 의미다. 

     

    클라이언트에서 만든 데이터의 성격이 서버에서만 확인해야 하는 보안적인 내용이라면 또한 네트워크를 이용해 데이터를 전송할 계획이라면 전송할 데이터를 암호화해야 한다. 패킷을 가로채는 걸 막을 순 없어도 가로챈 패킷의 암호화된 데이터를 복호화할 수 없게 만드는 것이다.

     

    암호화한 데이터를 원하는 서버만 정확하게 복호화하는 방법으로 대칭키 암호화를 사용한다. 클라이언트와 서버는 암호화 및 복호화를 위한 키를 공유한다. 키를 이용해 암호화한 패킷은 반드시 키를 이용해야지만 복호화를 할 수 있다.

     

    문제를 해결한 것처럼 보이지만 해결해야할 문제가 있다. 그건 바로 서버와 클라이언트 둘만 아는 (티아모 우리 둘만의 앰호)키를 어떻게 공유할 것인가이다. 이 키 또한 네트워크를 이용해 공유해야하고 네트워크를 이용한다는 건 누군가 가로챌 수 있다는 의미다.

     

     

     

    디피-헬만 키 교환 기법

    과정을 설명하기 전에 전제 하나를 두겠다. 이 전제에 대해서는 의문을 갖지 말자(나도 모름)

    Y = G^x (MOD P) P는 큰 소수라고 했을 때

    - G, x, P를 알면 Y는 바로 구할 수 있지만, Y, G, P를 안다고 해도 x를 구하는 건 매우 어렵다

     

    이제 이 전제를 머릿속에 넣은 채로 클라이언트(Alice)와 서버(Bob)가 네트워크 환경에서도 둘만의 키를 공유하는 과정을 알아 보자

     

    1) 클라이언트는 A = G^x (MOD P)를 이용해 A를 구하고 통신을 원하는 서버에게 A, G, P를 전달한다.

    A, G, P는 누군가가 가로챌 수 있는 데이터다.

    2) 서버는 A, G, P를 받고 B = G^y (MOD P)를 이용해 B를 생성한다.

    3) 그리고 둘만의 키가 될 A^y (MOD P)를 구하고 클라이언트에게 B를 전송한다.

    4) 마찬가지로 클라이언트는 키가 될 B^x (MOD P)를 계산한다.

     

    정리를 해보자

    - 클라이언트 고유 정보 : x

    - 서버 고유 정보 : y

    - 누구나 확인하는 공유 정보 : A, B, G, P

     

    A^y와 B^x를 계산해 공유된 키 K를 구하는 건 서버와 클라이언트에게 쉬운 일이다.

    반면, x와 y를 모르는 입장에서 K를 구하는 건 위에서 본 전제 상 매우 어려운 일이다.

    이렇게 두 서버만 공유하는 키를 네트워크 환경에서 만들어 봤다

     

     

    비대칭 공개키를 이용한 키교환

    적절한 이미지를 못찾아 나중에 만들어서 업로드 하자 ^^..

     

    과정

    1) 클라이언트는 서버에게 공개키를 요청한다

    2) 서버는 공개키와 비밀키 쌍을 하나 생성한 뒤 클라이언트에게 공개키를 전송한다.

    물론 공개키 전송은 네트워크를 이용하므로 누군가 가로챌 수 있다.

    3) 공개키를 전달받은 클라이언트는 서버와 공유할 키(패킷)를 만들고 그 키를 공개키와 암호화하여 서버에 전송한다.

    암호화된 패킷은 서버가 쌍으로 생성한 비밀키가 있어야만 복호화가 가능

    4) 패킷을 받은 서버는 본인만의 비밀키를 이용해 클라이언트의 패킷을 복호화하고 공유할 키를 얻는다.

     

     

     

    전자서명 과정

    소프트웨어 업데이트와 같이 지정된 서버가 정기적으로 데이터를 전송하는 시스템을 생각해보자. 데이터의 안정성을 검증하지 않는다면 외부에서 악성코드를 심은 실행파일을 실행할수도 있다. 이때 서버는 (PK, SK)를 이용해 본인이 보낸 파일이 위조되지 않음을 보장한다.

     

    공인인증서 과정

    1) 클라이언트는 서버에 PK를 보내며 인증 요청을 시도한다

    2) 서버는 랜덤한 메세지를 클라이언트에게 보내 클라이언트가 PK를 보낸 주체임을 확인하길 원한다

    3) 클라이언트는 비밀번호를 이용해 암호화한 SK를 복호화한 뒤 메세지에 서명한다

    4) 서버는 서명한 값으로 검증 알고리즘을 이용해 클라이언트를 검증한다.

     

     

     

    마치며

    라이트하게 이해하면서 내용을 보니 생각보다 재밌고 빨리 패킷캡쳐 실습을 해보고 싶다.

    '네트워크 > 보안' 카테고리의 다른 글

    Handshake Protocol 과정  (0) 2021.04.14

    댓글

Designed by Tistory.