Network Security
네트워크 보안
Network Attack (네트워크 공격)
1. 패킷 조작 여부에 따른 분류 : Passive Attack, Active Attack
A. Passive Attack : 패킷을 직접적으로 조작하지 않는다.
- Sniffing(Eavesdropping, 도청) : 송수신되는 패킷의 내용을 무단으로 열람한다.
- Traffic Analysis : 송수신되는 패킷의 내용은 알 수 없으나, 전송하는 패킷의 양, 패킷들의 목적지 주소를 통해 정보를 얻어낸다.* 이에 대한 대응책으로 매번 보내는 목적지에 평소 보내는 패킷의 크기와 일치하는 Dummy Message(무의미한 메세지)를 섞어 전송하여, 트래픽 패턴 분석을 불가능하게 하는 방법이있다.
* 해커들이 대사관 도청시에 주로 사용하는 방법이다. 특히, 전쟁의 징후 중 하나로 대사관의 트래픽 양 급증이 있다.
B. Active Attack : 패킷을 직접적으로 조작한다.
- Packet Dropping : 송수신되는 패킷을 갈취하여 폐기한다. 이 때, 모든 패킷을 닥치는대로 폐기하면 Black hole, 선택적으로 폐기하면 Gray hole 이라고 한다.
- Packet Insertion : 가짜 패킷을 네트워크 상에 송신한다.
- Packet Modifying : 중간에 갈취한 패킷을 폐기하고, 위조 패킷을 다시 송신한다. (Dropping & Insertion)
- Packet Rerouting : 해커가 조작하기에 유리한 위치로 패킷의 경로를 조작한다.
2. 공격 대상에 따른 분류 : Host, Infrastructure
- Host 대상 공격 : 클라이언트 혹은 서버를 대상으로 한 공격으로, 보통 정보의 양이 많은 서버가 주 공격 대상이 된다.
- Infrastructure 대상 공격 : 네트워크 상의 네임서버 혹은 라우터를 대상으로 한 공격으로, 네임서버의 Name-IP 주소 테이블이 조작되거나, 라우터의 라우팅 테이블이 조작되면 많은 네트워크 사용자에게 한꺼번에 영향을 미칠 수 있게 된다.
(가짜 라우터가 추가되어 네트워크 상의 라우팅 테이블을 틀리게 만들거나, 패킷이 엉뚱한 경로로 가게된다.)
3. 보안 목표에 따른 분류 : Confidentiality, Integrity, Availability
- Confidentiality(기밀성) : Privacy라고도 하며, 송수신되는 패킷을 제 3자가 열람하지 못하게 하는 원칙이다.
기밀성을 해치는 공격 : Sniffing, Traffic Analysis
- Integrity(무결성) : 패킷이 전송되는 과정 중, 무단 수정되지 않았음을 보장하는 원칙이다.
무결성을 해치는 공격 : Modification, Masquerading*, Replaying**, Repudiation***
* Masquerading : 패킷의 신분을 위장한다.
** Replaying : 송신되던 패킷을 그대로 재현한 복사본 패킷을 네트워크에 송신시킨다. 이 때, 원본 패킷을 조작하지는 않는다.
*** Repudiation(부인) : Source가 패킷 발신을 부정하거나, Destination이 패킷 수신을 부정하게 한다. 은행에서는 이를 방지하기 위해 공인인증서를 통한 전자서명을 이용한다. (전자 서명이 은행에 대한 이체 요청 사항을 보증한다.)
- Availability(가용성) : 연속적으로 서비스가 제공됨을 보장하는 원칙이다.
가용성을 해치는 공격 : Denial of Service(DOS)
Network Security Service (네트워크 보안 서비스)
1. Authentication : Entity (개체 인증)
- ID와 PW를 이용한 전통적인 신원 검증방법이다.
- ID, PW가 오랜 기간동안 사용되기 때문에 도청이 쉽다.
2. Authentication : Data(Message)
- 발신자 정보 등이 위조되지 않았음을 검증하는 보안 절차가 추가된 형태이다. (전자서명 등)
3. Authorization (Access Control)
- 한 Object에 대한 Operation을 선택적으로 허용하게 하는 서비스이다.
- UNIX Machine에서 파일에 대한 읽기 권한, 읽기/쓰기 권한, 실행 권한을 선택하여 부여하는 것이 대표적인 Authorization의 예시이다.
4. Privacy (Confidentiality)
- 전송되는 메세지를 제 3자가 열람할 수 없게 하는 서비스이다.
5. Integrity (무결성)
- 전송되는 메세지에 대한 무단 수정을 방지하고, 네트워크 상에 Masquerading Message(위조 메세지)를 삽입하는 것을 방지하는 서비스이다.
6. Non-Repudiation (부인 봉쇄)
- 메세지 전송자가 메세지를 보낸 사실을 부인하는 것을 방지하는 서비스이다.
- 인터넷 뱅킹 서비스에서 이체 요청을 한 사용자의 이체 부인을 막는 기능이 대표적인 Non-Repudiation의 예시이다.
Security Mechanism (보안 메커니즘)
- 네트워크에서 보안 서비스가 제공되는 원리를 다룬다.
1. Data Authentication, Privacy, Integrity, Non-Repudiation 구현 원리
A. Encryption System (암호화 시스템)
- 대칭키 시스템에서는 인코딩/디코딩이 빠르고, 비대칭키 시스템에서는 인코딩/디코딩이 상대적으로 느리다.
- Authentication : Entity(ID 인증), Authorization(접근 제어)는 암호화 시스템이 아니므로 논외로 간주한다.
※ Plain Text(평문) : 인코딩되지 않은 메세지
1) Symmetric Key System (대칭키(비밀키) 시스템)
※ 정규 표현 : \(ENC(M \dot SK)\) - 대칭키(SK, Symmetric Key)로 인코딩(ENC, Encryption)된 메세지 M
※ 축약 표현 : \(M^{SK}\) - 대칭키로 인코딩된 메세지 M, \({(M^{SK})}^{SK}\) - 대칭키로 인코딩 된 메세지를 다시 대칭키를 이용해 디코딩한 메세지 M
- 인코딩, 디코딩에 동일한 비밀키를 사용한다. 그렇기에 Sender와 Receiver가 비밀키를 동시에 보유하고 있어야 한다.
- Sender가 Receiver에게 비밀키를 전달하는 키 분배 과정이 핵심 문제이다. (키가 전달되는 네트워크 상에는 도청 등의 많은 위험 요소가 잔재하기 때문이다.)
네트워크 보안 서비스 | 서비스 제공 여부 (대칭키 인코딩) |
이유 |
Authentication : Data (메세지 인증) |
O | Sender가 인코딩하여 전송한 메세지는 Sender에 대응되는 고유한 비밀키로만 디코딩이 가능하므로, 해당 비밀키를 이용하여 디코딩에 성공했다면, 그 메세지는 Sender가 전송한 것임을 의미한다. |
Privacy (기밀성) |
O | 비밀키는 Sender와 Receiver만 보유하고 있으므로, 제 3자가 무단 열람할 수 없다. |
Integrity (무결성) |
O | 비밀키는 Sender와 Receiver만 보유하고 있으므로, 제 3자가 무단 수정할 수 없다. |
Non-Repudiation (부인 봉쇄) |
X | 비밀키를 통해 Receiver도 메세지를 생성할 수 있으므로, Sender가 전송하지 않은 메세지를 수신했음을 Receiver가 주장할 수 있다. 대칭키 시스템에서 부인 봉쇄는 제공할 수 없다. (부인 봉쇄를 제공하려면, Sender 측에서만 메세지를 생성할 수 있어야 한다.) |
2) Asymmetric Key System (비대칭키(공개키) 시스템)
※ 축약 표현 : \(M^{Pu-A}\) : A의 공개키로 인코딩된 메세지 M, \(M^{Pr-A}\) : A의 개인키로 인코딩된 메세지 M
- 인코딩/디코딩에 Public Key(공개키), Private key(개인키)가 필요하다.
- 공개키로 인코딩된 메세지는 개인키로 디코딩되며, 개인키로 인코딩된 메세지는 공개키로 디코딩된다. (비대칭적)
- 공개키는 네트워크 상에서 누구나 보유할 수 있다.
- 개인키는 해당 호스트만 보유하는 고유한 키이다.
ex) A와 B의 통신과정에서, A는 Pu-A, Pr-A, Pu-B를 갖고, B는 Pu-A, Pu-B, Pr-B를 갖는다.
ex) B는 \(M^{Pu-A}\)를 디코딩할 수 없다. (Pr-A를 보유하지 않았기 때문이다.)
ex) B는 \(M^{Pr-A}\)를 디코딩할 수 있다. (Pu-A를 보유했기 때문이다.)
네트워크 보안 서비스 | 서비스 제공 여부 (개인키 인코딩) |
이유 |
Authentication : Data (메세지 인증) |
O | 메세지는 해당 호스트의 고유한 개인키를 통해서만 인코딩되므로, 호스트가 전송했음이 보장된다. |
Privacy (기밀성) |
X | 공개키로 디코딩되기 때문에 누구든지 메세지를 열람할 수 있다. 개인키로 인코딩된 메세지는 기밀성이 보장되지 않는다. |
Integrity (무결성) |
O | 공개키로 디코딩된 후에 메세지를 수정하더라도, 개인키로 다시 인코딩할 수 없으므로 메세지를 수정할 수 없다. |
Non-Repudiation (부인 봉쇄) |
O | 호스트의 개인키로 인코딩된 메세지는 해당 호스트를 통해서만 생성되므로, 메세지 발신 여부를 부인할 수 없다. |
* 특히, 개인키로 메세지를 인코딩하는 것을 서명이라 표현한다. (메세지 생성자를 보증하는 의미)
네트워크 보안 서비스 | 서비스 제공 여부 (공개키 인코딩) |
이유 |
Authentication : Data (메세지 인증) |
X | 누구든 보유하고 있는 공개키로 인코딩된 것이므로, 해당 공개키의 호스트가 발신했음을 보장할 수 없다. 공개키로 인코딩된 메세지는 메세지 인증을 제공하지 않는다. |
Privacy (기밀성) |
O | 공개키로 인코딩된 메세지는 해당 호스트에서만 디코딩할 수 있으므로, 제 3자가 메세지를 무단 열람할 수 없다. |
Integrity (무결성) |
X | 누구든지 공개키로 인코딩된 전송중이던 메세지를 폐기하고 자신의 임의대로 메세지를 생성하여 전송할 여지가 있으므로 무결성을 제공하지 못한다. |
Non-Repudiation (부인 봉쇄) |
X | 공개키로 인코딩된 메세지는 발신자가 누구인지 보증할 수 없다. |
* 특히, 공개키로 메세지를 인코딩하는 것을 암호화라고 표현한다. (기밀성을 제공)
※ \((M^{Pu-B})^{Pr-A}\) : B(Receiver)의 공개키로 인코딩 한 후, A(Sender)의 개인키로 인코딩하면 4가지 보안서비스를 모두 제공할 수 있다. 단, 인코딩 수행 시간이 오래 걸리는 탓에 널리 사용되는 방법은 아니다.
B. Hashing (해싱)
※ 축약 표현 : H(M) : 메세지 M을 해싱한 결과이다. H는 특정 해시 함수를 의미한다.
- 하나의 값을, 이를 상징하는 더 짧은 길이의 값이나 키로 변환하는 것이다.
- 1,000 ~ 1,500 Byte 크기의 메세지를 256bits로 변환하는 것이 일반적이다. (이로 인해, 해싱 결과값을 통해 원본값을 추정하는 것이 거의 불가능하다.)
- 대칭키, 비대칭키 시스템보다 훨씬 빠른 시간내에 인코딩/디코딩된다.
- Sender는 메세지를 전송할 때, 원본 메세지 바로 뒤에 MIC*를 Concatenation(Colon (:)으로 표현)시켜 전송한다.
* MIC [Mik] : Message Integrity Check
- 메세지 뒤에 부가적으로 붙이는 태그로, 메세지와 비밀키를 해싱한 결과이다.
- Sender가 메세지에 MIC을 붙여 전송하고, Receiver 측에서는 직접 MIC를 생성해서 도착한 메세지와 비교하는 방식으로 메세지를 검증한다. (해싱 메세지를 검증하는 기본적인 메커니즘)
- MIC을 붙임으로써 데이터 인증과 무결성이 보장되며, 메세지 처리 속도가 빨라진다.
1) 비밀키와 함께 해싱하는 방식
\(M : H(M, K_{s})\) : 메세지 뒤에 메세지와 비밀키를 해싱한 결과(MIC)를 붙이는 방식
- 데이터 인증, 무결성이 보장된다.
- 기밀성은 보장되지 않는다.
- 메세지 처리속도가 빠르다.
2) 해싱 결과를 암호화하는 방식
\(M : (H(M))^{K_{s}}\) : 메세지를 해싱한 후, 비밀키로 암호화하여 메세지에 붙이는 방식
- 기밀성까지 보장되는 방식이다.
- 메세지 처리속도가 A 방식보다 느려진다.
C. Digital Signature (전자 서명)
\(M : H(M)^{Pr-Sender}\) 형태의 메세지를 생성하여 전자 서명을 수행한다. (짧은 메세지를 해싱하여 개인키로 인코딩하는 방식)
- Pu-Sender 키로 디코딩한 후, 도출된 H(M)을 스스로 생성한 H(M)과 일치하는 지를 확인한다.
ex) 인터넷 뱅킹에서 사용하는 공인인증서의 경우, 나의 개인키와 공개키는 공인 인증서에 들어있고, 상대의 공개키는 공인인증센터에 저장되어 있는 구조이다.
2. Entity Authentication 구현 원리
A. ID/PW 인증 방식
- 사용자가 이용하기에 편리한 방식이다.
- 하나의 PW를 장기간 사용함으로 인해, 한 번 노출되면 지속적으로 공격의 위험에 노출될 수 있다.
B. Challenge Response 방식
- 사용자가 서버에 ID를 전송하면, 서버는 사용자에게 Challenge*를 제공한다.
- 사용자는 서버와 공유한 비밀키를 통해 Challenge를 풀어 결과를 전송한다.
- 서버는 본인이 생성한 답과 사용자가 전송한 답을 비교하여 검증 여부를 결정한다.
- Challenge는 매 인증과정마다 변화하므로(일회성), 도청에 성공했더라도 다음 Challenge에 활용할 수 없다.
- 넓은 의미에서, Challenge Response 방식도 OTP 방식의 일종이다.
ex) 보안카드를 통한 인터넷 뱅킹 서비스도 Challenge Response 방식의 한 예시이다.
* Challenge (Nonce Message) : Used only once 타입의 메세지로, 서버가 사용자에게 제공하는 문제이며, 사용자는 키를 통해 이 문제를 풀어서 전송하여 인증한다.
C. One Time Password(OTP) 방식
- 사용자가 서버에게 ID와 더불어 Time Stamp(TS)까지 전송하는 방식이다. (사용자와 서버 간 시간 동기화가 중요하다.)
- \(ID : TS : ((ID : TS)^{K_{s}})\) 형태로 ID가 서버로 전송된다.
- 허용되는 범위 내의 TS 오차범위를 가진 메세지가 \(K_{s}\)로 디코딩 가능하면, 검증이 완료된다.
D. Digital signature 방식
- 사용자가 서버에게 서명*된 메세지(ID)를 전송한다.
- \(ID : (H(ID))^{Pr-A}\) 형태로 ID가 서버로 전송된다.
- Replaying 공격의 우려가 있으므로, 이를 방지하기 위해 타임 스탬프 혹은 Nonce를 붙이는 방식으로 진행한다.
- 실제로는, \(ID:TS : (H(ID:TS))^{Pr-A}\) 혹은 \(ID:Nonce : (H(ID:Nonce))^{Pr-A}\) 형태로 전송된다. (Replaying 공격을 방지)
* "서명"은 Sender의 개인키로 인코딩하는 것을 의미한다.
Ex. Internet Banking System (인터넷 뱅킹 예시)
- 은행에 로그인하고, 계좌 조회, 이체 요청 서비스를 수행하는 과정에서 보안 서비스가 어떤 방식으로 수행되는지에 대한 예시이다.
- 조회 정보는 암호화의 필요성이 비교적 떨이지기 때문에, 세션키를 통한 간략한 암호화만 수행한 상태에서 진행된다.
- 사용자가 은행에 로그인할 때, 은행에 제공하는 개인키(Pr-A)를 은행은 메인 메모리에 저장하지 않고 즉각 폐기하여 해커의 공격을 피한다.
(개인키는 국제 표준 포맷을 따르므로, 해커가 이 포맷을 토대로 메인 메모리를 스캔하는 방식으로 해킹을 시도한다.)
- 은행에서 개인키를 따로 보관하지 않기 때문에, 다른 작업을 수행할 때, 다시금 인증 작업을 진행하는 것이다.
IPSec (IP Security Protocol) : Layer-3
- L3에서 IP-Datagram에 보안성을 제공해 주는 표준화된 기술이다.
- IPv4에서는 선택적으로, IPv6에서는 필수적으로 제공하도록 되어 있다.
- 크게 두 가지 방법으로 보안을 제공한다. (AH, ESP)
1. AH (Authentification Header)
- L3 패킷에 MIC를 Concatenation한다. (AH 자체가 MIC의 한 종류이다.)
- 메세지 인증, 무결성을 제공한다.
2. ESP (Encapsulating Security Payload)
- 메세지 전체를 암호화한 후, 암호화된 메세지에 MIC를 Concatenation한다.
- 메세지 인증, 무결성, 기밀성을 제공한다.
- AH를 포함하는 개념이기때문에, ESP를 수행하면 AH를 수행할 필요가 없어진다.
SSL (Secure Sockets Layer) : Layer-4
- L4에서 Segment 혹은 User-Dategram에 보안성을 제공해주는 표준화된 기술이다.
- L4에서 제공하는 보안서비스이기 때문에, IP Header에 관련된 보안은 제공하지 못한다. (IP-Datagram에 대한 보안 서비스는 IPSec에서 제공한다.)
※ 통신 계층의 세부사항
L4 | L4 API = Socket API, SSL | |
TCP | UDP |
- API와 SSL은 L4와 L5 사이를 연결하는 인터페이스이다.
- TCP : connection을 생성한 후 데이터를 송수신하며, 통신을 끝마칠 때 Connection을 끊는다.
- UDP : Connection을 따로 생성하지 않고, 곧바로 데이터를 송수신한다.
1. Socket API
- 보안을 제공하지 않는 인터페이스이다.
- HTTP는 대표적인 Socket API 기반 네트워크 프로그램이다.
2. SSL (Secure Socket Layer)
- 보안을 제공하는 인터페이스이다.
- HTTPS는 대표적인 SSL 기반 네트워크 프로그램이다.
Ex. 본 Post의 Internet Banking System도 SSL을 기반으로 구축되었다고 할 수 있다.
Reference: TCP/IP Protocol Suite 4th Edition
(Behrouz A. Forouzan 저, McGraw-Hill, 2010)
Reference: Data Communications and Networking 5th Edition
(Behrouz A. Forouzan 저, McGraw-Hill, 2012)