본문 바로가기
Network/컴퓨터 네트워킹 하향식 접근

[컴퓨터 네트워킹 하향식 접근] 컴퓨터 네트워크 보안

by creatingeveryday 2023. 4. 1.

컴퓨터 네트워크 보안

네트워크 보안

  • 안전한 통신이란
    • 기밀성(confidentiality)
      • 송신자와 송신자가 의도한 수신자만이 통신 내용을 이해할 수 있어야 한다.
      • 암호화와 복호화를 위한 암호 기술이 필요하다.
    • 메시지 무결성(message intergrity)
      • 메시지가 변경되지 않음을 확인할 수 있어야 한다.
      • 신뢰적인 전송 및 데이터 링크 프로토콜을 위해 사용했던 체크섬 기술을 확장함으로써 메시지 무결성을 제공할 수 있다.
    • 종단점 인증(end-point authentication)
      • 송신자와 수신자는 통신에 참여하는 상대방이 실제 누구인지 확인하기 위해 상대방의 신원을 확인할 수 있어야 한다.
    • 운영 보안(operational security)
      • 대부분의 기관들의 네트워크는 공공 인터넷에 연결되어 있으므로 외부로부터 공격받을 수 있다.
      • 방화벽, 침입 감지 시스템이 필요하다.
  • 암호화의 원리
    • 기본적으로 송신자의 데이터를 암호화하여 침입자가 가로챈 데이터로부터 아무런 정보도 얻지 못하도록 하는 목적
    • 오직 수신자만이 변형된 데이터를 복호화하여 온전한 데이터로 복원할 수 있어야한다.
    • 인터넷에서 사용되는 암호화 기술 자체는 표준화되어 공개되어 있고 송신자와 수신자의 키를 통해 보안을 유지한다.
    • 대칭키 암호화
      • 송신자와 수신자는 같은 키를 가지고 암호화와 복호화를 수행하며 이 키는 둘 사이의 비밀이다.
      • 블록 암호화
        • 메시지가 K비트 블록 단위로 암호화된다.
        • DES, AES
    • 공개키 암호화
      • 미리 비밀키를 공유하지 않고도 암호화 통신을 가능하게 함.
      • 한쌍의 키가 사용된다. 키 중 하나는 모두에게 공개, 다른 하나는 한쪽만 알고 있다.
      • RSA
  • 메시지 무결성과 디지털 서명
    • 메시지가 전송 중에 변경되지 않았다는 것만 보장하기 위해서 hash 함수를 이용해서 메시지 요약본(MAC, 메시지 인증 코드)을 생성 후 전달한다.
      • 서로 다른 메시지가 같은 해시를 만들어내는 같은 2개의 메시지를 찾아낼 수 있을지는 몰라도 침입자가 특정 부분만을 바꿨을 때 동일한 hash 값이 나올 확률은 거의 없다.
      • MD5, SHA-1 해쉬 알고리즘 사용
      •  
    • 전자서명
      • 공개키 암호화를 사용하는 방식
      • 송신자가 메시지 요약본을 생성 후 개인키로 암호화하여 전송하면 수신자는 공개키로 복호화하여 메시지가 변경되지 않았다는 것을 확인할 수 있다.
      • 공개키 인증
        • 공개키가 어떤 특정한 통신 개체의 것인지 보증하는 일은 일반적으로 인증기관에서 담당하고 있다. 인증기관은 신원을 확인하고 인증서를 발급한다.
  • 종단점 인증
    • 종단점 인증은 하나의 통신 개체가 다른 개체에게 자신의 신원을 컴퓨터 네트워크상으로 증명하는 작업이다.
    • 인증 프로토콜은 두 통신 관계자가 어떤 다른 프로토콜(신뢰적인 데이터 전송 프로토콜, 라우팅 정보교환 프로토콜, 전자메일 프로토콜)을 수행하기 이전에 수행된다.
    • 비밀번호로 인증하는 방식은 안전하지 않다. 비밀번호를 암호화하더라도 플레이백 어택(playback attack)의 위험에 노출되어 있다. 암호화된 비밀번호를 도청하여 저장했다가 제3자가 활용할 수 있기 때문이다.
    • 어떻게 원래의 인증 요청 메시지와 재생한 메시지를 구별할 수 있을까?
      • 서버는 구별하기 위해서 넌스(nonce)라는 프로토콜이 평생 당 단 한 번만 사용하는 숫자를 이용하여서 송신자와 실제로 통신 중임을 확인할 수 있다.
    • 넌스와 공개키 암호를 사용할 수 있는가?
  • TLS 프로토콜
    • https
    • TLS는 기밀성, 데이터무결성, 서버인증과 클라이언트 인증을 통해 TCP를 향상함으로써 보안 위험에 대처할 수 있다.
    • TLS는 소켓을 사용하는 간단한 API를 제공하는데 이는 TCP의 API와 유사하다.
    • TLS를 사용하기를 원할 때 애플리케이션은 SSL 클래스/라이브러리를 포함한다.
    • handshake 단계
      • TCP 연결 설립
      • 서버가 클라이언트의 신원 확인
      • 서버는 TLS 세션에 필요한 모든 대칭키를 생성하기 위해 클라이언트와 서버가 사용할 master secrect key(MS)를 생성하고 클라이언트의 공개키로 암호화하여 EMS로 전송한다.
      • 클라이언트는 EMS를 자신의 개인키로 복호화하여 MS를 얻는다.
    • 키 유도 단계
      • MS를 이용하여 클라이언트와 서버는 각각 4개의 키를 생성한다.
    • 데이터 전송 단계
      • TLS는 데이터 스트림을 레코드로 쪼개고 각 레코드에 무결성 검사를 위한 HMAC를 덧붙인후 이 '레코드+HMAC를 암호화한다.

댓글