건국대학교 컴퓨터공학과 4학년 2학기 과목 ‘무선 및 이동네트워크’ 과목의 강의내용을 정리한 것입니다. 월요일 전공 시험 4개에여 죽…여ㅕ..줘..


8.1 네트워크 보안이란?


네트워크 보안이란 안전하게 통신하길 바라는 것을 말한다.

confidentiality , authentication, message integrity, availability

1. confidentiality (기밀성)

송신자와 지정된 수신자만이 전송되는 메시지 내용을 이해할 수 있어야 한다.

통신한다는 사실조차도 비밀이어야 한다.

→ 데이터 복호화 암호화

2. authentication (인증)

송신자와 수신자는 서로의 신원을 확인할 수 있어야 한다.

3. message integrity (메시지 무결성)

통신하는 내용이 의도적이건 우연히건 전송 도중에 변경되지 않았음을 확인해야 한다.

4. access and availability

서비스는 사용자가 접근하고 사용할 수 있어야 한다.


8.2 Principles of cryptography(암호문의 원리)


송신자가 데이터를 변형시켜서 침입자가 가로챈 데이터에서 어떤 정보도 얻지 못하도록 한다. 이 때 수신자는 변형된 데이터에서 원래 데이터로 복구할 수 있어야 한다.


암호기법을 해독하는 방법

  1. cipher-text only attack (암호문만으로 공격하기)

  2. known-plaintext attack (알려진 평문으로 공격하기)

    침입자가 어느정도 평문과 암호문의 쌍을 알고 있는 것

  3. chosen-plaintext attack(선택 평문 공격하기)

    침입자가 평문 메시지를 선택하고 이에 대응하는 암호문 형태를 얻을 수 있는 것


대칭키 암호문

Bob과 Alice가 같은(symmetric한) key를 사용하는 것

= 전송자와 수신자가 secret key를 공유해야 한다.


DES : Data Encryption Standard

미국 표준 ppt 그림보기

56-bit 대칭키, 64-bit 블록 input

block chaining 이용

개선한 것이 3DES : key1로 encryption → key2로 decryption → key 3으로 encryption


AES : Advanced Encryption Standard

128 , 192, 256 bit 대칭키, 128-bit 블록 input


공개키 암호문

비밀키를 공유하지 않고 두 관계자가 암호화 통신을 하는 것


public key(공개키) : 세상 모든 사람들이 다 알고 있는 키

private key(개인키) : Bob만 알고 있는 키


Alice와 Bob이 통신하는 경우

  1. 앨리스가 밥의 공개키를 알아옴
  2. 앨리스가 밥의 공개키를 가지고 이미 알려진 암호 알고리즘을 통해 밥에게 보내는 메시지 m 을 암호화함. (KB+(m))
  3. 밥은 앨리스의 암호화된 메시지를 받아서 자신의 개인키와 이미 알려진 복호 알고리즘을 사용한다. m = (KB-(KB+(m)))


RSA 알고리즘

  1. 공개키와 개인키의 선택

    1. 두개의 큰 소수 p와 q를 선택함
    2. n = pq , z = (p - 1)(q - 1)
    3. e는 n 보다 작은 z와 1을 제외한 공통인수가 없는 수
    4. d는 ed mod z = 1 인 수
    5. public key는 (n,e) , private key는 (n,d)


  2. 암호화와 복호화 알고리즘

    c = m^e mod n

    m = c^d mod n

    m = (m^e mod n)^d mod n


session key

  1. 앨리스가 데이터암호화에 사용할 세션키를 고른다.
  2. 앨리스가 밥의 공개키로 세션키를 암호화한다.
  3. 밥은 RSA로 암호화된 세션키 c를 받는다
  4. 밥은 c를 복호해서 세션키를 구한다.


8.3 Authentication(종단점 인증)

어떤 이의 신원을 다른 사람에게 입증하는 작업

교환된 메시지와 데이터만을 기반으로 수행되어야 한다.

인증후에야 통신 당사자들이 일을 시작할 수 있다.


Protocol ap 1.0

앨리스가 단순히 밥에게 “나는 앨리스다”라는 메세지를 전송하는 것


Protocol ap 2.0

앨리스가 밥에게 IP address를 가지고있는 IP Packet에 포함된 “나는 앨리스다”라는 메세지를 전송하는 것

spoofing

트루디가 앨리스의 주소를 가진 packet을 생성해서 대신 보낼 수 있다.


Protocol ap 3.0

앨리스가 밥에게 “나는 앨리스다”라고 말하고 그것을 증명할 수 있는 비밀번호를 보내는 것

playback attack

트루디가 앨리스의 패킷을 기록했다가 비밀번호를 알아낼 수 있다.


Protocol ap 3.1

앨리스가 밥에게 “나는 앨리스다”라고 말하고 그것을 증명할 수 있는 암호화된 비밀키를 보내는 것

여전히 playback attack 가능


Protocol ap 4.0

playback attack을 어떻게 하면 피할 수 있을까?

앨리스가 ‘live’임을 증명하기 위해서 밥이 앨리스에게 nonce인 R을 전송하면 앨리스는 공유된 비밀키로 암호화된 R을 반환해야한다.

nonce

랜덤한 숫자 (R)을 오직 한번만 쓰는 것

서로 동일한 비밀키를 가지고 있어야한다.


Protocol ap 5.0

nonce + public key cryptography

  1. 앨리스가 밥에게 “나는 앨리스다”라고 전송한다.
  2. 밥이 nonce R을 선택해서 앨리스에게 전송한다.
  3. 앨리스는 앨리스의 개인키로 R을 암호화해서 그 결과값을 밥에게 전송한다.
  4. 밥은 받은 메시지에 앨리스의 공개키를 적용해서 R을 계산하고 앨리스를 인증한다.


man in the middle attack (중간자공격)

트루디가 밥과 앨리스 사이에 껴서 투명해보이지만 사실 방해하고 있는 것


8.4 Message integrity (메세지 무결성)

메시지가 정말 앨리스로부터 온 것인지

밥에게 전달되는 중간에 변경되지는 않았는지


전자서명

전자서명은 입증될 수 있어야하고 위조할 수 없어야 한다.

밥이 문서를 작성할 때 암호 알고리즘에 개인키를 적용해 문서를 암호화한다,


Message digests (메세지 요약)

긴 메세지를 공개 키 암호화하는 것은 많은 시간이 걸린다.

→ 고정길이의 계산하기 쉬운 digital fingerprint를 만들자!

  1. 밥이 해쉬함수를 메세지 m 에 적용해서 고정크기의 Message digests인 H(m)을 얻어낸다.
  2. 밥이 개인키로 H(m)에 서명한다.
  3. 서명된 H(m)과 m을 앨리스에게 전달한다.
  4. 앨리스가 밥의 공개키를 H(m)에 적용해서 해시 결과를 얻는다.
  5. 앨리스가 해시 함수를 m에 적용해서 두 번째 해시 결과를 얻는다
  6. 두 해시 값이 일치한다면 무결성과 작성자를 확신할 수 있다.


22

해시함수 종류

MD5 : 128 bit message digest

SHA -1 : 160 bit message digest / US standard


Certificatoin Authority - CA (공인기관)

333

8.5 전자메일의 보안


Secure e-mail (보안 전자메일)

기밀성 보장하기

  1. 앨리스가 임의의 대칭 세션키 KS를 선택한다.
  2. 앨리스가 KS로 메시지 m을 암호화한다.
  3. 앨리스가 밥의 공개키로 KS를 암호화한다.
  4. 앨리스가 암호화된 m 과 KS 를 한 꾸러미로 묶는다.
  5. 앨리스가 꾸러미를 밥에게 전송한다.
  6. 밥은 개인키를 이용해 KS를 얻는다.
  7. 밥은 대칭키 KS를 통해 m을 복호화한다.

### +

메세지 무결성과 송신자 인증 보장하기

  1. 앨리스가 메세지 m에 해시함수 H를 적용한다.
  2. 앨리스가 H(m)을 앨리스의 개인키로 암호화한다. → KA-(H(m))
  3. 앨리스가 원래의 메세지 m과 2의 결과물을 꾸러미로 만든다.
  4. 앨리스가 꾸러미를 밥에게 보낸다.
  5. 밥이 2의 결과물에 앨리스의 공개키를 적용한다.
  6. 밥이 5의 결과와 원래의 메세지 m에 해시함수를 적용해서 결과를 비교한다.


둘을 합치면 기밀성과 송신자 인증과 메시지 무결성을 제공한다.

444

앨리스는 앨리스의 개인키 밥의 공개키 새로생성된 대칭키 를 사용했다.


8.6 SSL

SSS 이란 Secure Socket layer의 약자이다. 널리 배포된 보안 프로토콜로 거의 모든 브라우저와 웹 서버에서 지원한다.

confidentiality / integrity / authentication을 보장한다.

API를 제공하기 때문에 모든 TCP 어플리케이션에서 사용가능하다.


Toy SSS : simple secure channel

handshake - key derivation - data transfer - connection closure

**handshake

  1. 앨리스가 밥에게 hello 메시지를 보낸다.
  2. 밥은 밥의 공개키를 담은 인증서를 보낸다.
  3. 앨리스는 MS를 생성하고 밥의 공개키로 암호화해서 EMS를 만든다.
  4. 앨리스는 밥에게 EMS를 전송한다.

master secret : 앨리스와 밥이 사용할 주 비밀키

앨리스와 밥은 각자의 인증서, 개인키를 사용해서 서로 인증하고 둘 다 이 SSL 세션의 MS를 알게 된다.


key derivation

앨리스와 밥은 공유키를 사용해서 키 집합을 만들어낸다.

Kc : 클라이언트에서 서버로 보낸 데이터의 암호화 키 for 암호화

Mc : 클라이언트에서 서버로 보낸 데이터의 MAC 키 for 무결성

Ks : 서버에서 클라이언트로 전송된 데이터의 암호화 키for 암호화

Ms : 서버에서 클라이언트로 전송된 데이터의 MAC 키 for 무결성

MAC 및 암호화에 다른 키를 사용하기 위한 것


data transfer

전송할 데이터를 일련의 레코드로 분리한다.

각 레코드는 MAC을 carry 한다.

수신자는 도착한 각 레코드에 대해 조치를 취한다.

  1. 레코드에서 수신기는 MAC을 데이터와 구별해야 한다.

    → 가변길이 레코드를 사용한다.

  2. 트루디가 도청할 수 있다.

    → MAC에 시퀀스번호를 포함시킨다.

  3. 트루디가 replay할 수 있다.

    → nonce를 사용한다.


connection closure

truncation attack - TCP connection close를 위조해서 중간에 끊어버린다.

→ data type을 정의한다. (type 0 for data; type 1 for closure)




REAL - SSL

암호화 알고리즘에는 공개키 암호화 / 대칭키 암호화 알고리즘 / MAC 알고리즘과 같은 것들이 있다. SSL 은 이중에 몇개를 선택할 수 있다.

handshake - key derivation - data transfer - connection closure


SSL record protocol

555

record header : content type , version, length

MAC : sequence number , MAC key Mx

fragment : 2^14 byte 크기의 각각의 SSL fragment


handshake

server 인증 / 암호 알고리즘 협의 / establish keys / client 인증 (선택사항)

  1. client가 client nonce와 함께 지원하는 알고리즘 목록을 보낸다.
  2. server가 목록에서 알고리즘을 선택하고 선택한 알고리즘 + 인증서 + server nonce 를 보낸다.
  3. client가 인증서를 확인하고 server의 공개키를 알아내고 MS 를 생성한다. 이 MS를 서버의 공개키로 암호화해서 보낸다.
  4. client 와 server는 같은 키 유도 함수를 사용해서 독립적으로 MS 와 nonce로 부터 암호화 키와 MAC 키를 계산한다. 이후부터 이들간의 모든 메시지는 암호화되고 인증된다.
  5. client는 모든 handshake 메시지의 MAC을 전송한다. (handshake 훼손 방지!)
  6. server는 모든 handshake 메시지의 MAC을 전송한다.


key derivation

client nonce, server nonce, pre-master-secret 생성

master secret + new nonce input → random-number-generator → keyblock


6666





8.7 네트워크 계층 보안 : IPsec

Virtual Private Networks(VPNs)

보안문제 때문에 기관이 private한 네트워크를 원한다.

기관의 사무실 간 트래픽은 공용 인터넷으로 들어가기 전에 암호화 된 공개 인터넷을 통해 전송된다.

논리적으로 다른 트래픽과 분리되어있다.


IPsec은 데이터 무결성과 종단점 인증, replay attack 방지, confidentiality를 보장한다.

IPsec에서의 peer는 두개의 종단 시스템 / 두개의 라우터나 방화벽 / 라우터나 방화벽과 종단시스템이 될 수 있다.

두가지의 프로토콜이 있다.

Tunnel mode / Host mode


SA(Security Association)

SA는 데이터를 전송하기 전 설정된 보안연결이다.

SA는 단방향이기 때문에 서로에게 안전한 데이터그램을 보내고 싶다면 각 방향으로 SA가 하나씩 설립되어야 한다.

IP는 비연결형이지만 IPsec은 연결지향적이다.

7777

R1에서 R2로 향하는 SA라고 할 때 R1은 SA를 위해 다음과 같은 정보를 저장한다.

32 bit SPI

origin SA interface : 200.168.1.100 , destination SA interface : 193.68.2.23 ,

암호화 타입 : e.g. 3DES

암호화 키

integrity check 타입 : e.g. HMAC

authentication key

IPsec 데이터 그램을 전송할 때 R1은 SAD (association database)에 접근하여 데이터그램을 처리할 방법을 결정한다.

IPsec 데이터그램이 R2에 도착하면 R2는 IPsec 데이터그램에서 SPI를 검사하고 SPI로 SAD를 인덱싱하고 이에 따라 데이터그램을 처리한다.


Tunnel mode with ESP 의 경우

터널모드란 호스트가 아닌 라우터가 보안 기능을 제공하는 것을 말한다.

8888

ESP trailer : block 암호용 패딩

ESP header : SPI / 얘로 인해서 수신자 개체가 무슨 일을 해야하는지 안다.

Sequence number : replay attack 막기 위함

MAC in ESP auth : 공유 비밀키로 생성됨


Security Policy Database (SPD)

주어진 데이터그램의 경우 송신자는 IPsec을 사용해야 하는지 알아야하고, 사용할 SA를 알아야한다.

SPD의 정보는 도착하는 데이터그램과 관련해서 ‘무엇을’ 할지 나타낸다.

SAD의 정보는 ‘어떻게’ 그것을 수행할 것인지 나타낸다.


SA와 키 관리

PKI 쪽 다시 봐야될 듯


8.8 무선랜의 보안


WEP (Wired Equivalent Privacy)

  1. 대칭키 암호를 통해 confitentiality , end host autorization , 데이터 무결성 를 보장한다. 시간 오래걸림

  2. 자체 동기화 : 각 패킷을 독립적으로 암호화한다. ↔ 반대되는 개념이 블록체인

    암호화 된 패킷과 키가 주어지면 복호화할 수 있고, 선행 패킷이 손실되어도 패킷을 해독할 수 있다.

  3. 효율적이다. 하드웨어 또는 소프트웨어로 구현 가능하다.


암호화 할 때마다 다른 키를 쓸거야.

999

키젠이 자동으로 생성해줌

m(i) : i번째 메세지

ks(i) : i번째 메세지를 암호화하는데 쓰이는 key

c(i) : 암호화된 문장 = ks(i) XOR m(i)

m(i) = ks(i) XOR c(i)

RC4 : 암호화 해주는 알고리즘으로 쉽고 계산이 빠르다.

각 패킷을 독립적으로 암호화 할거니까 각 패킷에 대해 키 + 새로운 IV(initialization vector)로 키 스트림을 초기화한다. IV값은 겹치지 않는다.10101010101010


WEP encryption

shared key는 암호화나 복호화할 때나 값이 똑같다. (104 bit)

발신자가 24비트 IV를 만들고 shared key에 추가한다. (총 128 bit key가 됨)

발신자가 Key ID를 추가한다.

128 bit key가 키젠에 입력되어 keystream이 생성된다.

data in frame + ICV 는 RC4로 암호화 된다.

key stream의 B byte는 데이터 & ICV의 byte와 XOR 된다.

IV & key ID 가 payload를 만들기 위해 암호화 된 데이터에 추가된다

최종 결과물

121212

decryption은 반대로 하면 됨


WEP authentication

active-X 는 standard하지 않다. Internet Explorer에만 들어가는 plugin이양 ㅠ

131313

WEP을 사용하는 경우에도 모든 AP(Access point)에서 이를 수행하는 것은 아니다. AP는 연결 전에 비콘프레임에 인증이 필요한지 여부를 나타낸다.

password 쳐서 wifi 연결하는 거 같은거임


802.11i

802.11는 취약점이 많았다.

1/2^24 bit 만큼 지나면 언젠가 이 IV를 또 쓸지도 몰라ㅠㅠ

  1. 트루디가 앨리스가 알려진 일반텍스트 d1 d2 d3 … 를 암호화 하게 한다.
  2. 트루디는 ci = di XOR kiIV 인것을 본다.
  3. 트루디는 ci랑 di를 알고있기 때문에 kiIV를 계산할 수 있다.
  4. 트루디는 암호화 키 시퀀스 k1IV k2IV…. 를 알고있다.
  5. 다음에 IV가 또 사용되면 트루디가 해독할 수 있다.

이걸 보완하기 위해 나온애가 802.11i

141414

EAP : end - end client에서 인증 서버 프로토콜을 제공한다.

얘네는 별도의 링크!

RADIUS : diameter와 유사하다. 통신회사에서 많이 사용


8.9 운영상 보안 : firewalls 와 IDS

Firewalls

오는 패킷마다 라우터에다 추가적으로 계층 7까지 집어넣어서 scan함.

public internet에서 나갈 때 계층 1부터 7까지 보면서 내보낼건지 block 할 건지 정해준다.

SDN : 컨트롤 하는 부분이 가상화 된 거


장점

  1. dos 공격 방지 가능하다.

    SYN flooding : 공격자가 많은 가짜 TCP 연결을 설정하고 실제 연결을 위해 남아있는 리소스가 없다. 이걸 방지해주는게 firewall

  2. 내부 데이터의 불법적인 수정 / 접근을 방지한다.

  3. 내부 네트워크에 대한 승인된 접근만 허용한다.


**종류

  1. stateless packet filters :

    packet을 각 데이터그램별로 독립적으로 보는거

    IP 출발지 / 목적지 주소

    TCP 또는 UDP 출발지와 목적지 포트

    ICMP message type

    TCP SYN 이나 ACK bit


    No outside Web access - 나가는 packet의 어떤 IP던지 port 80이면 죽일거다.

    No incoming TCP connections, except those for institution’s public Web server only. - 모든 TCP를 죽이는데 웹서버 빼구 다 죽일거다.

    Prevent Web-radios from eating up the available bandwidth. - 모든 UDP 를 죽일거다.

    Prevent your network from being used for a smurf DoS attack. - ICMP 패킷 이용

    Prevent your network from being tracerouted - TTL이 expired 된건 다 죽일거다.


    ACL : Access Control lists

    이런애들은 허용하구 이런애들은 block 할거다라는 걸 정해놓은 table

    161616

    1 - 2) 밖에서 안으로 / 안에서 밖으로 TCP packet은 허용

    3 - 4) 밖에서 안으로 / 안에서 밖으로 DNS service 허용

    5) 나머지는 deny


  2. stateful packet filters

    모든 TCP 연결의 상태를 추적한다.

    들어오는 패킷이 의미가 있는지의 여부를 결정한다.

    e.g. desp port = 80 이면 Web인데 TCP Connection이 있지도않은데 들어왔다. 이러면 전에 거를 보고 TCP connection이 있었으면 통과 없었으면 죽여

    방화벽에서 timeout된 비활성 연결이 있으면 더이상 패킷을 인정하지 않는다.


  3. application gateways

    애플리케이션 데이터 및 IP / TCP / UDP 필드에서 패킷을 필터링한다.

    proxy

    1. 모든 텔넷 사용자는 게이트웨이를 통해 텔넷을 사용한다.
    2. 권한이 부여 된 사용자의 경우 게이트웨이는 대상 호스트에 대한 텔넷 연결을 설정한다.
    3. 라우터 필터는 게이트웨이에서 발생하지 않은 모든 텔넷연결을 차단한다.


firewall과 gateway의 한계점

  1. IP spoofing

  2. multiple app : 각각이 자신의 app을 가지고 있어서 gateway client 소프트웨어는 게이트웨이에 접속하는 법을 알아야한다.

    e.g., 웹 브라우저에서 프록시의 IP주소를 설정해야 한다.


IDS(Intrusion Detection Systems)

= IPS (Intrusion Protection Systems)