일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Django
- 컴퓨터 네트워크
- 가상환경
- AWS
- 데이터 웨어하우스
- linux
- Docker
- http
- redshift
- 운영체제
- dockerfile
- TCP
- 데브코스
- 컴퓨터네트워크
- PYTHON
- 파이썬
- HADOOP
- 데이터 파이프라인
- 종류
- 자료구조
- 데이터베이스
- 정리
- Go
- airflow
- airflow.cfg
- 데이터 엔지니어링
- TIL
- S3
- 데이터엔지니어링
- sql
- Today
- Total
홍카나의 공부방
[컴퓨터 네트워크] 7-3. 네트워크 보안 서비스 종류 본문
네트워크 보안 서비스가 가지고 있는 성격은 다음과 같다.
- Authentication(인증) : Entity & Data
- Authorization(접근 제어)
- Privacy(기밀성)
- Integrity(무결성)
- Non-repudiation(부인 봉쇄)
1) 대칭키(비밀키) 암호화 시스템
Source에서는 Dest.로 Plain text를 비밀키 K로 인코딩하여 Cipher Text를 보낸다.
Dest.에서는 Cipher Text를 비밀키로 디코딩한다.
Source와 Dest.만 가지고 있는 비밀키(대칭키)로 메시지를 암호화, 복호화하는 방식이다.
즉, 제 3자는 암호화키 K를 가지고 있지 않다.
비밀키 암호화 시스템은 두 호스트 A,B 가 비밀키를 공유하고 있기 때문에 부인 봉쇄를 하지 못한다.
A가 B에게 메세지를 보낼수도 있고, B가 B 스스로에게 메세지를 보낼수도 있기 때문이다.
B호스트가 비밀키 K를 가지고 암호화문을 주작해서 만들며 "야 A, 너가 이거 보냈잖아?" 해버릴 수 있다는 소리.
장점 : 비대칭키 암호화 시스템보다 빠르다.
단점 : 키 분배가 어렵다.
2) 비대칭키(공개키) 암호화 시스템
이 시스템은 공개키(Pu), 개인키(Pr)을 가진다.
공개키는 인증 센터를 통해서 누구든지 아무나 받아올 수 있다.
근데 개인키는 오로지 특정한 호스트(예를 들면 A)만 받아올 수 있다.
그리고 A의 개인키는 A의 공개키로 디코딩 해야 하며,
A의 공개키는 A의 개인키로 디코딩 해야 한다.
예를 들어서 Pu-A로 인코딩 했으면, Pr-A로 디코딩해야 한다.
근데 Private Key는 자기 자신만 가질 수 있다.
그래서 Pu-A로 인코딩을 해서 다른 사람에게 보내는 것은 무의미하다. 다른 사람이 풀 수가 없다.
Pr-A로 인코딩 했으면, Pu-A로 디코딩해야 한다.
B는 A의 공개키를 가질 수 있으므로, 디코딩이 가능하다.
이 방식은 기밀성을 만족하지 못한다는 단점이 있다.
누구나 받을 수 있는 공개키를 가지고 있으면 해당 메세지 내용을 볼 수 있기 때문이다.
그래서 송신자 개인키로 암호화하는 방식은 보통 암호화한다고 표현하지 않고, 서명한다고 표현한다.
개인키로 인코딩 하는 것은 오로지 그 개인만 할 수 있기 때문이고,
암호화라고 표현하기에는 누구든지 그 내용을 볼 수 있기 때문.
만약 수신자 공개키로 암호화하여 메시지를 보낸다면, 기밀성만 만족하는 방식이다.
이는 암호화한다라고 표현한다.
그래서 4가지 성격(메시지 인증, 기밀성, 무결성, 부인봉쇄)를 만족하려면
수신자 공개키로 먼저 암호화 한 다음에 해당 Plain Text를 송신자 개인키로 암호화하면 된다.
RSA가 대표적인 예시인데 이 방식이 키가 길고 느려서
이를 극복하기 위해 타원곡선함수를 이용한 방식이 개발되었다. 다른 여러 방식도 존재한다.
장점 : 4가지 성격을 만족할 수 있다.
단점 : 키가 길다. 느리다.
3) HASH 함수
해쉬 함수를 메시지에 적용하면 Hash Output이 나오는데 이는 정해진 길이를 가진다.
128 비트, 256 비트 등등.. 요새는 256비트로 많이 쓴다.
예를 들어서 Key-Hash를 보자. 두 호스트가 똑같은 비밀키를 가지고 있다고 하자.
Source에서는 Plain Text에다 비밀 키를 Concatenate하고, 이를 다른 호스트에게 보낸다.
그리고 Plain Text도 보낸다. 그러면 총 2개의 메시지를 보내는 것이다. ( P, H(P||K))
그러면 수신자는 수신된 Hash값, 계산된 Hash값을 받고 직접 메세지에 Hash를 적용시켜서
저 2개의 값이 같은지 수신자 입장에서는 계산한다.
해당 방식은 누구나 Hash함수로 메시지를 해석할 수 있으므로 기밀성 보장이 되지 않고,
누구나 만들 수 있기 때문에 부인 봉쇄도 불가능하다.
장점 : 비밀키 방식보다도 빠르다.
단점 : 오로지 무결성을 제공하기 위한 방식이다.
4) 전자서명
Plain Text를 Hash한다. 이러면 128이나 256비트로 P가 짧아진다.
이후에 PR-A로 이를 인코딩한다. 이런 방식을 전자 서명이라고 표현한다.
이 메세지를 수신하는 다른 호스트에서는 A의 공개키로 디코딩하고,
수신한 해시값을 직접 계산해보면서 직접 해본 Hash 풀기 + 계산된 Hash(P)가 같은지 확인해보는 방식이다.
메시지 인증, 무결성, 부인봉쇄가 만족되나,
기밀성이 만족되지 않는다.
장점 : 송신자 개인키(서명) 방식보다 Hash를 적용시켰으므로 빠르다.
단점 : 기밀성을 제공받지 못한다.
'Computer Network' 카테고리의 다른 글
[컴퓨터 네트워크] 7-5. IPsec과 SSL (0) | 2023.01.23 |
---|---|
[컴퓨터 네트워크] 7-4. 네트워크 Entity 인증 (0) | 2023.01.23 |
[컴퓨터 네트워크] 7-2. 네트워크 공격 종류 (0) | 2023.01.23 |
[컴퓨터 네트워크] 7-1. IPv4 Datagram 구조, Fragment (0) | 2023.01.23 |
[컴퓨터 네트워크] 6-2. Python의 psutil을 이용하여 열린 포트 찾기 (0) | 2023.01.11 |