What is network security
1️⃣ confidentiality
- 네트워크 상에서 주고 받는 데이터는 sender와 receiver만 알아볼 수 있어야 한다.
- 암호화를 하지 않으면, 무선 네트워크 상에서는 어느 누구나 탈취해 갈 수 있다.
2️⃣ authenticate
- sender와 receiver는 본인임을 확인해야한다.
3️⃣ message integrity
- 내가 보낸 메시지가 중간에 조작되지 않고, 상대방에게 안전하게 도착해야한다.
4️⃣ access and availabilty
- 서비스는 사용자가 사용할 수 있어야한다.
- 웹 서비스의 경우, 24시간 동안 사용자에게 서비스를 제공해야한다. 따라서 ddos 등의 공격을 대비할 수 있어야한다.
현대의 TCP/IP (전송계층, 네트워크 계층) 기반의 인터넷 환경에서는 이 중 어느 하나도 지원하지 않는다. 70년대 말, TCP/IP가 디자인될 때 보안은 고려사항이 아니였기 때문이다. 새로운 공격이 발생할 때마다 즉흥적으로 패치를 붙이는 식으로 해결하였다.
현재에는 어플리케이션 계층에 이 보안 요소를 다루고 있다. 어플리케이션에서 암호화해서 보내면 메시지를 볼 수 없게 되는 것이다. IPv6은 네트워크 보안을 포함하고 있다.
암호화: Friends and enemies: Alice, Bob, Trudy
- Alice와 Bob은 클라이언트-서버 간의 관계가 될 수 있다.
- Trudy가 중간에 탈취할 수 있으므로 암호화를 수행해야한다.
- plaintext를 Trudy가 봐도 모르게 cipertext로 바꿔줘야한다.
- Alice랑 Bob이 plaintext(m)을 주고 받을 때 암호화 하기 위해서는 2가지의 key가 필요하다.
- 암호화 하는 key ⇒ Ka(m) 과 해독하는 key ⇒ Kb(Ka(m)))
Symmetric key cryptography
- Alice와 Bob이 같은 key를 가지고 있어 Alice가 보낼 때 해당 key로 암호화하고 Bob은 받을 때 해당 key로 해독한다.
- 단순 기계적 연산이 빠르고, 효율적이다.
- 그러나 이 경우 데이터 통신 전에 어떤 key를 써서 암호화할건지 사전 합의하는 작업이 필요하다.
Public Key Cryptography
- 모든 사람이 각자의 public ke와 private key를 가지고 있다.
- Alice가 Bob을 만나지 않아도 Bob에게 메시지를 보낼 때 Bob의 public key는 알 수 있으니깐 public key로 메시지를 암호화해서 보내면 Bob은 private key로 해독하여 메시지를 볼 수 있다.
- Bob의 public key를 풀 수 있는 사람은 public key를 가지고 있는 Bob 뿐!
- Public Key Cryptography를 수학적으로 구현한 것이 RSA이다.
- 특징
- key의 적용 순서에 상관없이 동일한 결과가 나온다.
- 단점
- 수학적 연산이기 때문에 cpu consumption이 더 많이 들고, 시간이 오래걸린다.
- 따라서 RSA 키 동작 방식은 대칭키를 합의하기 위해 한번만 동작하는 방식으로 동작된다.
- Symmetric key를 전달할 때 Public Key를 사용하고 Symmetric key 생성 이후에는 메시지를 Symmetric key를 사용해서 암호화
- 혼합 사용!
Authentication
- Trudy가 재사용할 수 있는 것은 인증으로 사용할 수 없다.
- Alice가 데이터를 보내고 Bob이 받으면, 그게 Alice인지 확인하기 위해 랜덤한 숫자(R)를 보낸다.
- Alice는 그 숫자를 암호화 해서 Bob에게 보냄, Bob이 그걸 받아서 해독한 후 R과 같으면 Alice인지 확인할 수 있다.
Digital signatures
- 디지털 서명이란, sender가 본인의 private key로 메시지를 한 번 암호화한 것을 뜻한다.
- K+*(m) ⇒ encrypted(암호화), K-*(m) ⇒ signature(서명)
- 본인의 메시지를 보낼 때 m만 보내는 것이 아니라 m과 K-_*(m)도 같이 보냄으로써, receiver가 해당 데이터가 sender의 공개키를 통해 서명된 아이템이 변조되지 않음을 확인할 수 있게끔 한다.
- 구현적으로는 메시지 전체를 직접 서명할려면 연산량이 크기 때문에 그렇게 하지 않고, 특정 함수를 이용하여 메시지를 해시 스트링으로 축약한 다음 서명한다.
- 이를 message digest라고 한다.
Digital signature = signed message digest
❗중요한 것은 public key가 내가 요청한 사람의 public key가 맞아야 한다❗
- 중간에서 공개키 요청을 가로채서 다른 공개키를 주는 공격에 대비하기 위하여 해당 공개키가 요청한 공개키인지에 대한 인증은 기관에서 해준다.
- public key는 인증기관의 public key로 암호화 되어 있다.
- 인증기관의 key는 브라우저가 릴리즈 될 때 하드코드로 들어가있다.
'📝Computer Science > network' 카테고리의 다른 글
네트워크 보안(2) _ SSL, Firewall (0) | 2023.07.28 |
---|---|
멀티미디어 네트워크 _ DASH, manifest (0) | 2023.07.28 |
무선 이동 네트워크(3) _ Cellular Network, mobility (0) | 2023.07.28 |
무선 이동 네트워크(2) _ IEEE 802.11 frame (0) | 2023.07.28 |
무선 이동 네트워크(1) _ CSMA/CA, RTS, CTS (0) | 2023.07.22 |