데이터망 CH. 8 Security

Alpha, Orderly·2023년 5월 23일
0

데이터 망

목록 보기
8/8

Confidentiality

  • 오직 송신자와 의도된 수신자만 메시지의 내용을 이해할수 있어야 한다.
  • 송신자가 암호화, 수신자가 복호화

Authentication

  • 송신자와 수신자가 서로의 신원을 확인하길 원한다.

Message integrity

  • 송신자와 수신자는 메시지가 중간에 바뀌질 않기를 원한다.

Access and Availability

  • 사용자가 서비스에 접속 가능해야 한다.

예시

  • Bob과 Alice는 안전하게 소통하길 원하고, Trudy는 메시지를 가로채거나/삭제하거나/추가하고 싶어함

나쁜 행동

  • 메시지 가로채기 : eavesdrop
  • 메시지 추가하기 : insert
  • 패킷의 송신 주소 날조하기 : impersonate
  • 연결 가로채기 : hijaking
    • 송신자나 수신자를 없애고 그 자리에 자신이 들어감
  • 연결 끊기 : denial of service

DRDOS

  • 해커가 출발지 IP를 공격 대상의 IP로 위조(스푸핑)한 뒤, 정상적인 서비스를 하고 있는 서버에 요청을 보내 되돌아 오는 응답을 공격 대상이 받게 하는 공격

암호학

Terminology

  • 메시지 mmKaK_a 암호화 키에 의해 암호화 되고 KbK_b 복호화 키에 의해 다시 복호화된다.

공격 방법

cipher text only attack
  • 암호화된 메시지를 분석한다.
    • 브루트포스
    • 통계 분석
known-plaintext attack
  • 암호문에 해당하는 평문을 가지고 있을 경우
chosen-plaintext attack
  • 특정 평문을 암호문으로 변환할수 있는 경우.

Symmetric key cipher

  • 밥과 앨리스가 동일한 키로 암호화를 한다.

Substitution crypto

  • 하나를 다른것으로 치환하는것

Monoalphabetic cipher

  • 하나의 문자를 다른 하나의 문자로 치환한다.
  • 암호화 키는 26개의 문자를 26개로 치환한 매핑이다.

n Substitution cipher

  • n개의 치환 매핑을 가지고 순환하여 사용한다.
  • n개의 매핑과 사용되는 패턴이 암호화 키가 된다.

Block Cipher


DES - Data Encryption Standard

  • 56비트 대칭키와 64비트 평문을 사용한다.
  • 보내는 데이터가 길다면 64비트 로 끊고, 56비트 의 symmetric key로 연산을 취해서 전송
  • 여러 라운드를 거쳐 결과가 나온다.

3DES

  • 3번 3개의 다른 키로 암호화

AES - Advanced Encryption Standard

  • 128비트 블록으로 데이터를 프로세싱
  • 128/192/256 비트의 키를 사용한다.
  • key와 data의 크기가 DES보다 커서 더욱 안전하다.

Public key crypto

(+) >> Public key , (-) >> Private key

  • 송신자와 수신자가 비밀키를 나누지 않는다.
  • 공개 암호키는 모두가 알고있다.
    • 이를 이용해 평문을 암호화 한다.
  • 수신자만 비밀 복호화 키를 알고 있다.
    • 수신자가 이를 이용해 평문으로 복호화를 한다.
  • 대표적인 예로 RSA가 있다.
    • Rivest Shamir Adelson algorithm

요구사항

  • 공개키 : 암호화 키 / 비밀키 : 복호화 키
  • 공개키로 암호화 후 비밀키로 복호화가 가능하다.
  • 비밀키로 암호화 하고 공개키로 복호화 할수도 있다!!
    • 순서가 따로 없다!!!!
  • 공개키와 비밀키를 필요로 한다.
  • 공개키를 통해 비밀키를 알아낼수 있어선 안된다.

modular

RSA 암호화 사용하기

1. 준비

  • 메시지 : 단순 비트 패턴
  • 비트 패턴은 정수로 표현될수 있다.
  • 메시지를 암호화 하는것은 숫자를 암호화 하는것과 동일하다.

2. 공개/암호 키 생성하기

  1. 2개의 커다란 소수 p,qp, q를 고른다.
    • 각각 n bit ( Ex. 1024bit ) 길이
  2. 아래 두 숫자를 계산한다.
    • n=pqn = pq
    • z=(p1)(q1)z = (p-1)(q-1)
  3. z와 서로소인 n보다 작은 e를 고른다.
  4. ed-1이 z에 의해 나누어지는 d를 고른다.
  5. (n, e) 가 공개키이며 (n, d)가 비밀키이다.

3. 암호화와 복호화

  1. 아래 공식을 사용한다.
    • c=memodnc = m^e \mod n 을 통해 암호화를 한다.
    • m=cdmodnm = c^d \mod n 을 통해 복호화를 한다.

RSA가 작동하는 이유

암호화 예시



  • 비밀키로 암호화 후 공개키로 복호화 하나 공개키로 암호화 후 비밀키로 복호화하나 결과는 동일하다!

RSA가 안전한 이유

  • p와 q를 모르는 상태에서 n의 약수인 p와 q를 찾아야 한다!
  • 근데 큰 수의 약수를 찾는것은 상당히 어렵다.

세션 키

  • 퍼블릭 키를 대칭 세션키의 전달을 위해 사용한다, 이후 대칭인 두번째 세션 키를 이용해 데이터 암호화에 사용한다.
  • 즉, 세션 키를 서로 교환하기 위해 RSA를 사용하는것
  • RSA가 보안상 좋긴 하나 성능이 매우 떨어지는것을 보완한다.
    • RSA의 지수 계산은 상당히 성능이 떨어진다.
    • DES가 최소 RSA보다 100배 이상 빠르다.
    • 짧은 메시지에만 RSA를 적용하는것이다.

Authentication

  • 앨리스가 밥에게 자기 자신의 신원을 증명하고 싶을때

방법 1

  • 자신의 이름을 알려준다.
  • 그냥 다른사람이 말하는거랑 구분이 안된다.

방법 2

  • 자신의 이름과 IP주소를 같이 보낸다.
  • 아무나 IP주소를 도용해 비슷하게 보낼수 있다.

방법 3

  • 자신의 IP와 비밀번호를 같이 실어 보낸다.
  • 전체 패킷을 감청해 나중에 다시 사용할수도 있다.
    • playback attack
  • 암호를 암호화해도 여전히 가능하다.

방법 4

  • 감청 후 녹화된 패킷을 보내는것을 방지하는 방법
nonce : 한번만 사용되는 숫자 R
  • Number used ONCE in a lifetime
  • 앨리스임을 밥이 확인하기 위해 앨리스에게 숫자 R을 보내면, 이를 앨리스가 공유된 비밀키로 암호화해 다시 보낸다.
    • 여기서 공유된 비밀키 : RSA로 전송된 대칭키
  • 밥이 올바르게 암호화 된것을 확인시 앨리스임을 알수 있다.

  • Playback attack으로부터 안전하다.

방법 5

  • 공개키를 이용할수도 있다.

  1. 밥이 R을 보낸다.
  2. 앨리스가 자신의 비밀키로 R을 암호화 해 보낸다.
  3. 밥이 앨리스에게 공개키 요청 후 R을 복호화 해보고 R을 확인한다.

여전히 존재하는 문제점 : Man in the middle attack

  • Alice에겐 Bob인척, Bob에겐 Alice인척 한다.
  • Alice와 Bob 사이에서 Trudy가 서로 메시지를 전달할수 있다.
    이를 해결하기 위해 공개키가 정말 송신자의 것인지 믿을 장치가 필요하다.

Digital signature

  • 밥은 자신만이 사용하는 비밀키가 있다.
  • 앨리스는 그 비밀키로 암호화된 메시지와 원본을 받는다.
  • 그 메시지를 밥의 공개키로 복호화 했을때 이게 동일한 메시지일시, 밥이 이 메시지를 보냈다는것을 확인할수 있다.
  • 즉, 받는이가 보낸이의 정체를 확인할수 있는 방법.

Message Digest

  • 긴 메시지를 공개키 암호화 하긴 너무 크다 > 고정 길이의 계산 쉬운 지문을 이용한다.
  • 메시지에 해시함수를 적용해 고정 크기의 Message Digest H(m) 을 구한다.
  • 메시지를 보낼때 이 digest를 비밀키로 암호화 하여 첨부한다.
  • 받은쪽에서는 모든 메시지를 확인할 필요 없이, 받은 메시지에 해시함수를 돌려 만든 H(m)과 공개키로 복호화한 H(m)을 비교하면 된다.

해시 함수

  • MD5
    • 4단계에 걸쳐 128비트의 Message digest 생성
    • 보안이 좋지 않다.
  • SHA-1
    • 160비트의 Message digest를 생성한다.

검증된 공개키의 필요성

  • 누군가 공개키를 사칭해 다른사람의 공개키인것처럼 위장 후 자신의 비밀키로 암호화 해 다른사람이 암호화 한것처럼 위장할수 있다.

Public key Certification Authorities ( CA )

  • Entity ( 사람 / 웹사이트 / 라우터 ) 를 위한 퍼블릭 키를 연결해주는 CA
  • Entity가 공개키를 등록하면 CA가 신원의 증명을 제공해준다.
  • CA는 주어진 정보를 자신의 비밀키를 통해 암호화 한다.
  • 다른사람의 공개키를 알고 싶을땐, 주어진 Digital signature를 CA의 공개키로 복호화 하면 알수 있다.

예시 : 이메일 암호화 - 시험

  • 랜덤 대칭키를 생성후, 대칭키는 공개키로 암호화 하고 메시지는 대칭키로 암호화 해 같이 보낸다.
  • 받은쪽에서 먼저 대칭키를 비밀키를 통해 복호화 한 후 얻은 대칭키를 통해 메시지를 복호화 한다.
  • Confidential!
  • 이 과정에서 메시지를 해시함수를 거친 값을 비밀키로 암호화 한 뒤 다시 보낸다
  • 받은 쪽에서는 받은 메시지를 해시함수를 돌려본 값과 공개키로 복호화한 해시값을 비교해 Integrity의 확인이 가능하다.
  • Authentication 또한 이 과정을 통해 확인 가능하다.


TLS : Transport Layer Security

  • Transport layer에서 널리 사용되는 보안 프로토콜
    • EX. https - 443 포트

제공하는 요소

  • confidentiality
    • 대칭 암호화를 통해 제공
  • integrity
    • 해시를 통해 제공
  • authentication
    • 공개키 암호화를 통해 제공

과정

  1. Handshake
    • 앨리스와 밥이 자신의 Certificate과 Private key를 통해 서로를 검증한다.
    • 서로의 공유 Secret key를 생성 혹은 교환한다.
      • 디피 헬만 방법
      • DH 알고리즘의 핵심은 상대방의 공개키와 나의 개인키를 이용하여 계산을 하면 비밀키가 나온다는 것이다.
  2. Key derivation
    • 다양한 키를 shared secret에서 도출한다.
    • 데이터를 보낼때 / 해시값을 보낼때 / 데이터를 받을때 / 해시값을 받을때 각각의 key가 있다.
  3. Data transfer
    • 데이터를 연달아 전송한다.
  4. Connection clouser
    • 특별한 메시지를 통해 안전하게 연결을 종료한다.
t-tls : Toy TLS / 간단한 TLS의 예시

t-tls : 초기 핸드셰이크

  • Bob이 앨리스와 TCP 연결을 성립
  • 밥이 앨리스가 진짜 앨리스인지 확인
  • 밥이 앨리스에게 Master secret key를 전송한다 >> TLS 세션에서 다른 키를 생성하기 위해 사용한다.
    • 전송할때 앨리스의 공개키로 암호화를 한번 시키고 보낸다.
문제점 : 데이터 받기 전에 3 RTT가 필요할수 있다.

t-tls : 암호화 키

  • 하나 이상의 암호화를 위해 동일 키를 사용하는것은 좋지 못하다.
  • MAC : Message Authentication Code > 해시함수 사용해 확인하는 과정을 대칭키로 진행한다.
    • 이를 위해 데이터 암호화용 대칭키와 해시값 암호용 대칭키를 다른것을 사용하는것.
      - Question
  • Encrpytion key
  • 4개의 키 사용
    • K_c : 클라이언트 > 서버로 가는 데이터의 암호화
    • M_c : 클라이언트 > 서버로 가는 MAC key
    • K_s : 서버 > 클라이언트로 가는 데이터의 암호화
    • K_c : 서버 > 클라이언트로 가는 MAC key
  • 모든 Key는 Key Derivation Function (KDF) 를 통해 생성된다.
  • Master secret과 몇개의 랜덤 값을 이용한다.

t-tls : 데이터 암호화하기

  • TCP 패킷을 임의로 재정렬 해 새로 보내거나, 녹화후 보낼수 있다.
  • 이를 해결하기 위해 sequnce number를 사용하고, nonce를 사용한다.
    • TLS sequence number : MAC에 TLS-seq#를 포함한다.

t-tls : 종료하기

Truncation attack : 공격자가 임의로 TCP 연결을 종료시키는 행위

  • 위 문제를 해결하기 위해 record에 종료 상태 파악을 위한 type field를 추가한다.
  • 결론적으로 보내는건 길이 + 타입 + 데이터 + 데이터와 seq넘버를 해시한 MAC
  • type 0 : 계속 전송중, type 1 : 전송 종료

TLS 1.3

  • TLS: 1.3(2018): TLS 1.2(2008)보다 암호 모음 선택이 더 제한됨.
  • 37개 선택이 아닌 5개만 선택 가능
  • 키 교환에 DH 또는 RSA가 아닌 DH(Diffie-Hellman)가 필요하다.
    직렬 암호화, 인증이 아닌 데이터에 대한 암호화 및 인증 알고리즘("인증된 암호화") 결합
    • 4 AES 기반
  • HMAC는 SHA(256 또는 284) 암호화 해시 함수를 사용합니다.


IP Security

  • 데이터그램-레벨의 Encryption , Authentication, Integrity 제공
  • Transport mode
    • 페이로드만 Encrpyt / Authenticate
  • Tunnel mode
    • 전체 데이터그램이 Encrypt / Authenticate
    • 암호화된 데이터그램이 새로운 IP 헤더로 Encapsulation 되어 목적지로 터널링됨.

방식

  • Authentication Header Protocol
    • source authentication 과 data integrity 는 제공한다.
    • 하지만 confidentiality(암호화) 는 제공하지 않는다. => 제공하려면 Ks 를 통해 한번 더 암호화 해줘서 보내야함.
    • 비교적 안전한 망에서 사용한다.
  • Encapsulation Security Protocol (ESP)
    • source authentication 과 data integrity, Confidentiality 를 제공한다.

Security associations ( SAs )

  • 데이터를 전송하기 전에 전송에서 수신쪽으로 security association이 성립된다.
  • 수신측은 SA에 대한 정보를 유지하고 있는다.

SA가 담고있는 정보

  • 32비트 ID
  • 출발 SA 인터페이스 ( 주소 )
  • 도착 SA 인터페이스 ( 주소 )
  • encryption 방법
  • encryption key
  • integrity check 방법
  • authentication key

IPsec datagram

  • SPI : Security Parameter Index, 여러개의 SA들중 하나를 구분하기 위해 사용된다.

  1. original datagram 이 R1에 들어오게 되면 trailer(padding + padding length + next header 정보)를 붙여준다.
  2. SA에 의해 결정된 알고리즘 과 키를 이용해 original datagram + trailer를 암호화(encrypt)한다.
  3. sequence number를 활용해(replay attack을 막기위해)(ESP header) enchilada를 생성한다.
  4. 생성한 enchilada 끝에 authentication MAC을 붙여 payload를 만들어준다.
  5. 터널링을 통해 IPv4 헤더를 붙여준다.

SPD / Security Policy Database

Policy

  • 주어진 데이터그램에 대해 IPsec을 적용할지 여부를 파악
  • SPD에 해당 사항이 저장되어 있다.

SAD / Security Associated Database

  • 끝점이 SA를 보관해두는 곳
  • IPsec 데이터그램을 보낼때 R1에서 SAD에 접근해 SA를 파악한다.
  • R2에 데이터그램이 도착하면 SPI를 통해 SAD에서 SA를 찾아 프로세싱한다.

IKE

  • IPsec에 대한 SA를 만드는 과정

802.11 WIFI

WEP : Wired Equivalence Privacy

  • 유선 연결과 비슷한 수준의 보안을 제고안다는 뜻

Association vs Authentication

  • Association 은 AP와 통신을 한다는 뜻
  • Authentication 은 서비스를 받을수 있도록 허용을 받는 과정

절차

  1. AP가 자신의 존재를 advertise한다, 이때 authentication/encrpytion 방법을 알려준다.
  2. 기기는 이에 자신이 가능한 authentication/encryption 방법을 알려준다.
  3. AS가 실질적인 Authentication 과정을 진행한다.
    • 비밀번호 ( shared secret ) 과 nonce 와 hashing 등을 통해 대칭 세션키를 생성한다.
  4. 핸드셰이킹 과정을 거친다.
  • EAP ( Extensice Authentication Protocol ) 에 위 사항이 정리되어 있다.

Cellular

4g

  • SIM카드는 사용자 구분용 ID인 IMSI를 포함한다, 이는 shared key를 이미 포함하고 있다.
  • MME와 HSS가 일종의 Authentication server으로서 동작한다.

4g vs 5g

4g

  • visited network의 MME가 authentication 을 진행한다.
  • 미리 공유한 키를 사용한다.
  • IMSI가 평문으로 BS에 전송된다.

5g

  • home network가 authentication 을 진행한다, visited MME는 중간자로서 거부가 가능하다.
  • 미리 공유한 키가 존재하지 않는다.
  • IMSI가 공개키를 통해 암호화 된다.
profile
만능 컴덕후 겸 번지 팬

0개의 댓글