Notice
Recent Posts
Recent Comments
Link
어떻게 하면 잘 정리했다고 소문이 날까...
[네트워크 8편] Computer Netwrok Security 본문
8편은 총 7개의 내용으로 구성됩니다.
1. What is Network Security?
2. Principle of Encryption
➕ Public Key and Shared Key
3. 메세지 무결성과 전자 서명
4. End to End Point Authentication
5. 전자우편의 보안
6. TCP 연결의 보안: SSL
7. 네트워크 계층 보안: IPSec and VPN
✔️ What is Network Security?
- 안전한 통신에 요구되는 특성.
- 기밀성: 송신자와 지정된 수신자만 내용을 알아야 함. (암호화)
- 메세지 무결성: 주고받는 메세지가 중간에 변경되면 안된다.
- 종단점 인증: 송,수신자는 통신에 참여한 상대방의 신원을 알아야 함.
- 운영 보안: 네트워크가 외부에서 공격받지 않도록 보호해야 함.
- 보안을 위해 제어 메세지와 데이터 메세지를 주고 받을 수 있음.
- 침입자가 할 수 있는 일.
- 엿듣기, 메세지 내용 조작 및 삽입, 삭제.
✔️ Principle of Encryption
- 기밀성 보장을 위해 활용.
- 평문 - (암호화 알고리즘 + 암호화 키 ) -> 암호문.
- 암호문 - (복호화 알고리즘 + 복호화 키) -> 평문.
- 암호화 키 = 복호화 키 (대칭키 알고리즘)
- 암호화 키 != 복호화 키 (공유키 알고리즘)
- 한 쌍의 키: Public key, Private Key
- 한 명이 모두 소유함.
- public key는 공개한다.
- private key는 본인이 소유함.
- Symmetric Key
- 스트림 암호(무선 랜 암호) / 블록 암호(IPSec, SSL, PGP)
- 블록 암호
- 메세지를 k비트의 블록 단위로 암호화.
- 사상표를 가지고 있다면 암호화, 복호화 가능.
- 단순한 공격으로 Brute Force가 존재.
- 실제 사용하지 않음.
- 대신 입출력 블록의 순열 테이블을 임의로 모방하는 함수 사용하기.
- DES/3DES/AES
- DES(Data Encryption Standard)
- 56비트의 키, 64비트의 블록
- 키로 평문을 암호화 하기.
- 3DES
- DES를 강화한 것이 3DES.
- DES를 3번 매번 다른 키로 암호화 하기.
- AES(Advanced Encryption Standard)
- 128-256비트의 블록, 128비트의 키.
- 완전 탐색으로 해결하려면 최소 149조년이 걸림.
- DES(Data Encryption Standard)
- 암호 블록 체이닝
- 원문이 너무 길다보면, 같은 블록이 반복되고 같은 블록이 생기면 내용을 예측할 수도 있음.
- 임의의 수 r(i)를 생성하고 암호문 c(i)와 r(i)를 번갈아가며 전송.
- 문제점 발생 - 대역폭 낭비.
- 해결방안 - CBC(Cipher Block Chaining)
- 첫번째 메세지와 임의의 수는 한번만 전송하고, 이후 임의의 수로 직전에 계산된 암호문 블록을 대신 사용하기.
- c(i) = Ks(m(i) + c(i-1))
- Public Key
- 한 명이 public key와 private key 모두 소유.
- 공개키는 세상에 공개, 개인키는 비밀 유지.
- 문제점 발생: 암호화 알고리즘과 public key로 지정된 수신자가 아닌데 지정된 수신자처럼 보이게 할 수도 있음.
- RSA 알고리즘.
- modular 연산 + 소수 + 인수분해 사용.
- K+(K-(m)) == K-(K+(m)) == m
- 세션키
- 세션키: 데이터 암호화에 사용할 비밀 키.
- DES는 RSA보다 100배는 빠르다.
- 상호 간 shared key(=symmetric key)를 가지기 위해서 RSA를 사용한다.
- 첫번째 connection은 RSA로 하고 나머지는 Shared Key로 암호화 진행한다.
➕ Public Key and Shared Key
매번 public key와 private key로 암호화/복호화하게 되면 메세지를 주고 받는 속도가 매우 느려지게 됩니다. 그러므로 그것보다는 빠른 shared key를 활용해 암호화, 복호화하고 싶은데 문제는 shared key를 보안 상 문제 없도록 나누어 가져야 한다는 것입니다. 그래서 이 과정에서 shared key를 받는 사람의 public key로 암호화 하고 받는 사람이 private key를 활용해 복호화 하여 shared key가 서로 공유되면 이후 주고 받는 데이터는 shared key를 이용해 암호화, 복호화 합니다.
✔️ 메세지 무결성과 전자서명
- 확인해야 하는 중요한 요소 2가지
- 진짜 약속된 송신자로부터 온것인가?
- 중간에 메세지 내용이 바뀌지 않았는가?
- 암호화 해시 함수
- 해시를 사용하는 이유는? 고정 크기로 만들기 위해서.
- 조건
- H(x) = H(y)는 성립되면 안되므로, H(x)가 되는 y가 존재해서는 안된다.
- MD5, SHA-1 알고리즘이 존재한다.
- 메세지 인증 코드 (Message Authentication Code)
- 암호화 해시 함수 + 인증 키(비트열 형태의 공유키)
- m + H(m+s) -> H(m+s)와 m에 s를 더하여 해싱한 뒤 비교.
- MAC의 특성
- 암호화 알고리즘을 사용하지 않음.
- 복잡한 알고리즘을 사용하지 않고도 메세지 인증 가능.
- 인증 키 공유 방법
- 네트워크 관리자가 공유.
- RSA로 암호화 해서 전달.
- OSPF와 같은 라우팅 쪽에서 사용.
- 전자서명
- 서명자 입증 + 위조가 아님을 증명. (고유한 키를 지녀야 함.)
- MAC은 키를 공유한다는 점에서 전자서명으로 적합하지 않다.
- public key 방식이 적당함.
- K-(m): private key로 암호화 하여 전송하기.
- 개인키를 가진 사람은 본인이 유일하다.
- K+(K-(m))으로 메세지를 획득할 수 있다.
- 공개키 방식은 larger load이다. -> 해시 사용하기.
- 고정 크기로 바뀌면 시간이 작아짐.
- K-(H(m)), m -> K+(K-(H(m))과 H(m)을 비교하기.
- MAC과 전자서명의 차이
- MAC은 공개키나 대칭키 알고리즘을 사용하지 않음.
- 전자서명은 공개키 알고리즘을 사용하기 때문에 더 무겁다.
- 공개키 인증
- 전자서명의 중요한 인증.
- 공개키가 특정 통신 개체에 속한다는 것을 보장.
- 통신하려는 상대 게체의 공개키를 잘 가지고있는 것인지 확인이 필요.
- 인증 기관 (Cerificate Authority)
- 공개키가 보증된 키임을 보장하는 것.
- CA는 해당 개체의 신분을 확인.
- 이를 바탕으로 (공개 키와 신분 확인서)를 활용하여 인증서 제작.
- (K+, 통신개체) -> K-ca로 암호화 하기 -> K+ca로 풀어서 가지기.
- public key 얻는 방법
- request 시에 CA가 인증서 전송.
- CA의 public key로 열어서 유효성 검증 후 통신 개체의 public key 획득.
✔️ End-to-End Point Authentication
- 종단점 인증
- 하나의 통신 개체가 다른 개체에게 자신의 신원을 컴퓨터 네트워크 상으로 증명하는 작업.
- 인증 프로토콜
- 가장 먼저 수행되어어야 하는 프로토콜
- ap 1.0
- 앨리스 - m -> 밥
- 문제 상황: 트루디 - m -> 밥 (트루디가 앨리스 인척 밥에게 메세지 전달)
- ap 2.0
- 앨리스 - m, 앨리스의 IP 주소 -> 밥
- 문제 상황: 트루디 - m, 앨리스의 IP주소 -> 밥
- 트루디가 IP datagram에서 자신의 주소를 앨리스의 주소 바꾸어 전송할 수 있다. -> IP Spoofing
- ap 3.0
- 앨리스 - m, pwd -> 밥
- 문제: 트루디가 둘이 주고 받는 pwd를 알아버리고 앨리스 인척 전송 가능.
- ap 3.1
- 앨리스 - m, Ks(pwd) -> 밥
- 자기랑 pwd가 같다면 인증.
- 문제점
- pwd는 안전할지라도, 재생 공격(Playback Attack)에 노출.
- Ks(pwd)를 가지고 있다가 보내기.
- ap 3.0과 같은 상황.
- pwd는 안전할지라도, 재생 공격(Playback Attack)에 노출.
- 앨리스 - m, Ks(pwd) -> 밥
- ap 4.0
- ap 3점대의 문제는 live 하지 않다는 점.
- 그래서 TCP는 3 way handshaking으로 SYN과 ACK을 주고 받으면서 seq number로 현재 live 한지 확인한다.
- nonce는 프로토콜이 평생에 한번 사용.
✔️ 전자 우편과 보안
- 왜 보안 기능이 하나 이상의 계층에서 제공되어야 하나?
- 네트워크 계층 보안이 사용자 수준의 보안까지 보장할 수 없다.
- 사용자 서비스의 구현이 다양화되고 있다.
- 보안 전자 우편
- 기밀성, 송신자 인증, 메세지 무결성, 수신자 인증이 보장되어야 함.
- 기밀성, 수신자 인증: 이 메세지는 송신자와 수신자 만이 내용을 알아야 함. (대칭키, 공개키 암호화)
- 메세지 무결성, 송신자 인증: 전자서명, 해시
- 전체적인 플로우
- 전달하고자하는 메세지: m
- H(m) 해싱함수를 거치고 Client의 private 키로 Client-(m+H(m)) 생성. -> 메세지 무결성.
- PR-(m+H(m)) == O
- 공유키로 암호화 하고 이를 server의 public key로 암호화한 공유키를 같이 보내기.
- Server+(Ks) + Ks(O) 전송. -> 기밀성
- Pretty Good Privacy
- PGP 소프트웨어가 설치 되면,
- 공개키 쌍이 생성됨.
- 공개키는 서버에 등록되거나 브라우저에 공개.
- 개인키는 비밀번호로 접근이 가능.
- 공개키 인증은 CA로 하지 않고 사용자가 신뢰의 그물(web of trust)로 인증.
- 공개키 쌍이 생성됨.
- PGP 소프트웨어가 설치 되면,
✔️ TCP 연결의 보안: SSL
- 향상시킨 TCP = SSL (Secure Socket Layer)
- 브라우저와 서버 간 통신은 SSL 위에서 이루어짐.
- SSL은 기밀성, 데이터 무결성, 클라이언트 및 서버의 인증으로 TCP 향상.
- SSL은 HTTP에 행해지는 거래에 보안을 제공하기 위해 사용.
- SSL은 TCP를 보호하기 위해 생성.
- SSL은 Socket을 이용해 API 제공 가능.
- 실제로 응용 계층에 위치해있지만, 개발자적 관점에서는 통신 계층에 있는 것으로 본다.
- SSL 개요
- almost SSL: SSL의 단순 버전.
- 총 3단계 : 핸드셰이크, 키유도, 데이터 전달.
- 핸드셰이크
- 클라이언트와 서버가 SSL 세션의 처음인 핸드셰이킹 단계에서 암호화 알고리즘에 대한 협의를 함.
- SSL에서 사용할 nonce는 키 생성을 위해 존재.
- 클라이언트는 모든 핸드셰이킹 메세지를 연결하고 이에 대한 MAC을 전송.
- 중간에 변경된 내용이 없는 지 확인하기 위함.
- 서버는 자신의 MAC과 비교.
- nonce는 연결재생공격을 방지.
- 순서 번호는 개별 패킷의 재생 대응.
- 키 유도
- Master Secret으로 4개의 키를 생성.
- E(client): 클라이언트에서 서버로 데이터 전송 시 사용하는 세션 키(대칭 키)
- M(client): 클라이언트에서 서버로 데이터 전송 시 사용하는 MAC 키.
- E(server): 서버에서 클라이언트로 데이터 전송 시 사용하는 세션 키.
- M(server): 서버에서 클라이언트로 데이터 전송 시 사용하는 MAC zl.
- 각자 4개씩 생성.
- Master Secret으로 4개의 키를 생성.
- 데이터 전송
- TCP는 바이트 스트림으로 SSL에 끊임없이 암호화되고 전송.
- 무결성을 확인하기 위해 SSL은
- 스트림을 record 단위로 쪼재고
- record + MAC키 포함시킨다.
- 전송: E<client>(H(record+M<client>+counter)+record)
- 트루디가 순서를 바꿀 수 있기 때문에 순서번호도 사용.
- 종료
- SSL 레코드의 타입 필드 자리에 해당 레코드가 SSL 종료를 수행할 것인지를 표시.
✔️ 네트워크 계층 보안: IPSec과 VPN
- VPN 구축을 위해 IPSec 사용.
- IPSec과 VPN: Virtual Private Network
- PN(Private Network)
- 기관의 공공 인터넷과 완벽하게 분리된 라우터, 링크, DNS 시스템을 포함한 물리적으로 독립된 네트워크.
- 공공 인터넷 상에 VPN 설치.
- VPN(Virtual Private Network)
- 공공 인터넷 트래픽으로 들어가기 전 암호화하는 과정.
- ex)
- 본부 직원이 호텔에 있는 직원에게 데이터그램 전송.
- gateway router는 IPV4 데이터그램을 IPSec 데이터그램으로 바꿈.
- IPSec Datagram에는 IPSec header가 존재.
- ex)
- 공공 인터넷 트래픽으로 들어가기 전 암호화하는 과정.
- AH and ESP
- IPSec 프로토콜 내의 주요 2가지. (IPSec 개체 전송 시 사용하는 프로토콜)
- AH(Authentication Header): 출발지 인증, 메세지 무결성.
- ESP(Encapsulation Security Payload): 출발지 인증, 메세지 무결성, 기밀성.
- IPSec 프로토콜 내의 주요 2가지. (IPSec 개체 전송 시 사용하는 프로토콜)
- Security Associations
- SA(Security Associations): 데이터 그램 전송 전 네트워크 개체 간의 논리적 연결 설립.
- 단방향 연결 (그러므로 상호 주고 받기 위해서는 양방향으로 해야함)
- IPSec 개체는 SA 정보를 알고 유지하고 접근한다.
- SA에 대한 모든 정보는 OS의 커널 SAD에 저장.
- SA(Security Associations): 데이터 그램 전송 전 네트워크 개체 간의 논리적 연결 설립.
- IPSec Datagram
- 패킷이 2가지 형식
- tunnel 모드 (종단 라우터 간)
- 전송 모드 (종단 호스트 간)
- 데이터 그램
- 새 IP header+ ESP header + Secure Payload + Original IP header + ESP trailer + ESP MAC
- 패킷이 2가지 형식
- PN(Private Network)
'CS 지식 > NTW(네트워크)' 카테고리의 다른 글
[네트워크 7편] Wireless and Mobile Network (0) | 2023.08.18 |
---|---|
[네트워크 6편] Link Layer (0) | 2023.07.26 |
[네트워크 5편] - Network Layer : Control Plane (0) | 2023.07.11 |
[네트워크 4편] Network Layer : Data Plane (0) | 2023.04.17 |
[네트워크 3-2편] Transport Layer - TCP (0) | 2023.03.24 |