기본적인 네트워크 보안에 대해 알아보자
Network Security Protocols
네트워크 보안 개요
인터넷 망구조가 안고 있는 보안 위협
인터넷 망은 여러 관리 주체가 분산 소유/관리 함
- 여러 인터넷 서비스 제공
- 망 관리자는 자신의 망을 통과하는 패킷을 모니터링 할 수 있음
다른 사람이 자신이 보낸 데이터를 받을 수 있음
- 엿보기, 허브(hub)의 mirroring 기능 등의 이유
다른 사람이 자신이 보낸 것처럼 할 수 있음
- IP 주소는 ICANN (Internet Corporation for Assigned Names and Numbers)에서 할당하고 관리
- ISP는 자신에게 할당된 IP 주소들만 사용
- IP 주소를 알면 해당 컴퓨터 혹은 최소한 특정 지역을 찾아 낼 수 있음
- 따라서, “기술적으로는“ IP spoofing을 막을 수 있음
- 그러나, 이 요구사항은 필수가 아니기 때문에 모든 라우터가 IP spoofing을 방지하는 것은 아님
- IP spoofing은 DOS (Denial-Of-Service) 공격의 온상
IP Spoofing
분산 DOS 공격
포트 스캐닝
IANA에서 포트번호와 응용간 매핑을 정의
- 65536개 중 0번부터 1023번까지 예약되어 있음
- 예: HTTP:80, FTP:21
포트 스캐닝 공격
- 특정 포트에 특정 메시지를 보내고 반응을 수집함으로써 어느 포트가 열려 있는 지를 검사
- 해당 포트에 보안 공격을 감행
계층별 보안 프로토콜이 필요한 이유
하위 계층, 예를 들어 IP 계층에서 제공하면 굳이 TCP나 응용 계층에서 제공할 필요가 없는 것 아닐까?
이유 2가지
IP 계층 보안은 모든 패킷들을 암호화할 수 있지만 사용자 수준의 보안(인증)을 할 수 없음
- 즉, “어느 컴퓨터”에서 작업을 요구하는 지는 알아도, “누가” 하는 지는 모름
많은 부분을 IP 계층 보안이 처리할 수 있다손 치더라도 응용들이 원하는 다양한 서비스가 모든 라우터에 설치되기까지는 많은 시간이 소요
웹서버 정보 보안
HTTP 보안
HTTP “기본” 사용자 인증
- 서버에 htpasswd 프로그램으로 쉽게 설정
- 특정 디렉토리에 있는 파일들에 인증을 한 후 접근하게 함
- Base-64 인코딩하여 전달
HTTP 기본 사용자 인증은 “안전하지 않음”
- 사용자 이름/비밀번호를 바로 읽을 수 없도록 인코딩됐지만 디코딩 알고리즘을 돌리면 즉시 해독됨
- 해독을 위한 비밀키가 전혀 필요 없음
- 심지어 인코딩된 것을 그대로 해커가 재사용해도 그 보안 파일을 접근할 수 있음 (replay 공격)
- 보안 설정한 파일을 접근할 때 마다 브라우져가 자동으로 사용자 이름/비밀번호를 같이 보내기 때문에 쉽게 공격자가 몰래 복사할 기회가 많음
- 사용자 이름/비밀번호를 바로 읽을 수 없도록 인코딩됐지만 디코딩 알고리즘을 돌리면 즉시 해독됨
HTTP 요약 접근 인증 방법
- HTTP 요약 접근 인증 방법의 취약점
- Man-in-the-middle 공격에 취약
- 근본적 이유는 서버가 브라우저에게 인증 받지 않기 때문
- Man-in-the-middle 공격에 취약
- HTTP 요약 접근 인증 방법의 또다른 취약점
- 암호 자체는 아니라도 관련 데이터를 서버에 저장하기 때문에 위험
- WWW 보안에 완전하지 않음
- 인증만 제공하고 암호화나 무결성 보장은 하지 않음
- 처음 사용자와 서버간에 암호를 정하는 방법이 명시 안됨
- 대신 SSL/TLS를 이용한 HTTP 보안이 널리 쓰임
전자메일 보안
안전한 전자 메일 설계
목적
- 두 사람이 보낸 메일을 타인은 읽을 수 없게 함 (기밀성)
- 받은 메일이 진정 상대방이 보낸 것인지 확신 (인증)
- 받은 메일이 타인이 중간에서 내용 변경한 것이 아님을 확신 (무결성)
- 받은 메일을 상대방이 보낸 것이 아니라고 우기는 것을 방지 (부인 방지)
대칭키로 문서를 암호화하는 경우와 공용키/개인키로 암호화하는 경우
대칭키 1개만 사용하는 방법
- 둘이 모두 “안전하게” 하나의 비밀키를 유지해야 함
- “공유”되는 비밀키 하나로 암호화, 인증, 무결성을 모두 신뢰
- 상대를 완전히 서로 신뢰하는 경우만 적용 가능
안전한 전자메일을 위한 PGP
PGP (Pretty Good Privacy) 프로그램
- 1991년에 Phil Zimmermann에 의해 작성
- 3년동안 미국연방 조사의 표적
- 전자우편을 암호화할 때 사실상(de facto) 표준이 됨
- PGP는 전자우편뿐 아니라 다른 응용(예:파일암호)에도 적용
www.pgpi.org
에서 무료로 다운할 수 있음
- 1991년에 Phil Zimmermann에 의해 작성
특성
- 기밀성 : 대칭키 및 공용키 암호화 기술 사용
- 인증, 무결성 : 해쉬(hash) 함수와 디지털 서명 사용
PGP: 보내는 부분
춘향의 서명을 요약 대신 e-mail 자체를 사용할 수 있지만 속도가 문제
- E-mail 자체가 아닌 해싱(hashing)한 e-mail을 대신 (춘향의 개인키로) 서명함으로써 속도 향상
E-mail과 서명을 몽룡의 공용키로 암호화할 수 있지만 공용키가 너무 커서 암호화 속도가 너무 느림
- 세션키(춘향이 임의로 생성한 작은 크기의 대칭키)를 대신 암호화에 사용하고 세션키를 몽룡의 공용키로 암호화해서 같이 보냄으로써 속도 향상
PGP: 받는 부분
공용키 검증 방식
PGP를 이용한 안전한 행위를 위해 가장 주의해야 하는 것은 과연 공용키가 진정 상대방의 것이 맞는 지 확인하는 것
PGP는 CA (Certification Authority)와 다른 방식
CA의 공용키 인증 방식
- CA(예:VerySign)를 통한 검증 방식은 우리가 그 CA를 신뢰하고, CA가 책임지고 (공용키, 소유자)의 짝을 직접 인증하는 방식
- 현재 웹 브라우져가 채택하는 방식
CA 공용키 검증 방식
- 각 주체(사람, 라우터)는 자신의 공용키를 CA에 등록
- 각 주체는 CA에게 “자신에 대한 인증”을 받음
- CA는 “이것이 이 사람의 공용키임”을 의미하는 인증서를 저장
- 몽룡이 춘향의 공용키를 원하는 경우
- 춘향의 인증서를 구함 (춘향에게 혹은 다른 곳)
- CA의 공용키로 적용해서 춘향의 공용키 구함
- CA 공용키 인증서 내용:
- 시리얼 번호 (CA가 할당하는 유일한 인증서 번호)
- 인증하는 주체에 관한 정보
- 인증서 발급한 곳(CA)의 정보
- 유효일
- 디지털 서명
PGP의 공용키 검증 방식
- “Web of Trust”
- 우리의 신뢰 구조와 비슷: 누가 누구를 신뢰하느냐는 “자신”의 몫
- 자신이 맞다고 “확인”한 것은 믿음
- 자신이 신뢰하는 사람이 틀림없다고 한 것은 믿음
- 각 키는 validity와 trust 항목이 있음
- Validity: 그 키가 그 사용자임을 말하는 것
- Trust: 그 사용자를 얼마나 신뢰하느냐를 말하는 것
- Trust level로 신뢰 정도를 표현
- 우리의 신뢰 구조와 비슷: 누가 누구를 신뢰하느냐는 “자신”의 몫
전송 계층 보안 프로토콜: SSL, TLS
전송 계층 보안 프로토콜 역사
SSL 소개
- SSL (Secure Socket Layer)
- 웹 클라이언트와 서버 사이에 데이터 암호화와 인증을 위해서 설계한 프로토콜
- 웹 응용 외에도 TCP위에서 동작하는 모든 응용에 적용 가능
- 오늘날 거의 모든 브라우저와 웹 서버에 구현됨
- HTTPS로 시작되는 URL은 SSL을 통해서 HTTP를 구현한 것
SSL 프로토콜
SSL 속도 성능에 관해
- SSL을 사용했을 때 성능상의 문제점
- 사용자가 인지할 수 있음
- SSL세션을 초기화할 때 요구되는 공용키 암호화와 해독에 주로 많은 시간이 걸림
- HTML 데이터를 암호화하고 및 해독하는 시간
- 상대적으로 위의 경우보다 덜 심각함
IP 계층 보안 프로토콜: IPsec
IPsec 이전 네트워크 보안 프로토콜
IETF IPSEC WG 탄생 이전의 네트워크 계층 보안 프로토콜
- Security Protocol 3(SP3)
- NSA, NIST가 개발한 것으로 주로 미국 군사용 외에 널리 퍼지지 못함
- Security Protocol 3(SP3)
Network Layer Security Protocol (NLSP)
- ISO에서 Connectionless Network Protocol (CLNP)을 보호하기 위해서 개발, SP3과 호환 안됨
Integrated NLSP (I-NLSP)
- SP3와 비슷하며 NIST가 IP와 CLNP 둘 다에 보안 서비스를 제공하기 위해서 개발
swIPe
- John Ioannidis와 Matt Blaze가 개발한 IP 보안 프로토콜
ftp://ftp.csua.berkeley.edu/pub/cypherpunks/swIPe/swipe.tar.Z
IPsec 프로토콜
- 두 가지 종류
- ESP (Encapsulating Security Payload) 프로토콜
- 암호화, 무결성, 인증 (AH 보다는 범위가 작음)
- AH (Authentication Header) 프로토콜
- 인증, 무결성
- 암호화는 제공 안함
- ESP (Encapsulating Security Payload) 프로토콜
VPN
사설망
혼합망
가상 사설망
가상 사설망 구현
그림 출처
- McGraw-Hill 출판사 TCP/IP 프로토콜