아래 내용 참고 블로그 : m.blog.naver.com/nttkak/20130246203
SSL : Secure Socket Layer
TLS : Transport Layer Security
SSL 과 TLS 는 거의 비슷한 기능을 가지고 있고, 몇가지 차이점이 있다.
아래는 OSI 7개층 표이다.
| 7 | Application Layer | TELNET / FTP / SMTP / DNS / HTTP |
| 6 | Presentation Layer | |
| 5 | Session Layer | |
| 4 | Transport Layer | TCP / UDP |
| 3 | Network Layer | IP |
| 2 | Data Link Layer | ARPANET / SATNET / PACKET RADIO / LAN |
| 1 | Physical Layer |
OSI 7계층은 모두 독립적으로 존재 하며 독립적으로 운영된다. 각 계층의 상호간의 인터페이스만
맞는다면 각 계층이 어떻게 구현 되었던 상관없이 동작하게 된다.
SSL 프로토콜은 OSI 어느 한 계층에서 계속 동작하는것이 아닌 독립적인 프로토콜 계층을
만들어서 동작하게 된다. SSL 프로토콜은 Application Layer 과 TCP 계층 사이에 위치한다
HTTP → SSL → TCP → IP
Application Layer는 TCP 계층 바로 위에 있는 계층으로 Application, 즉 사용자 프로그램이
사용하는 계층이다.
Application Layer 에는 웹이 사용하는 HTTP 프로토콜, FTP 프로토콜 등등 많은 프로토콜이 존재한다.
|
HTTP / NNTP / FTP / ETC... ▼ SSL ▼ TCP ▼ IP |
이 Application Layer 에 해당되는 프로토콜들은 바로 아래의 TCP 계층을 사용해서 데이터를 외부
네트워크에 전달하고 받는다.
SSL 은 Application Layer 과 TCP Layer 사이에 들어가서 동작 하므로 SSL이 적용 되었을 경우에
Application Layer 층의 프로토콜 들은 외부로 보내는 데이터를 TCP 층이 아닌 SSL 층에 보내게 된다.
SSL 은 받은 데이터를 암호화 하여 아래의 TCP 계증에 보내고 외부 네트워크로 보낸다.
그리고 TCP 층으로부터 받은 데이터는 복호화 하여 윗 계층인 Application Layer 의 프로토콜에 전달하는 것이다.
SSL 계층이 Application Layer 과 TCP Layer 사이에 끼이더라도 Application Layer 의 프로토콜은 TCP
프로토콜과 데이터를 주고 받던 방식 그대로 사용한다. 그리고 TCP 프로토콜 역시 Application Layer
와 데이터를 주고 받던 방식 그대로를 사용한다.
결국 SSL층이 적용된다고 해도 원래의 Application Layer 과 TCP Layer 의 프로토콜은 수정하지 않아도 된다.
Application Layer 의 프로토콜은 SSL 을 TCP Layer로 인식하고, TCP Layer 은 SSL을 Application Layer 로 인식하기 때문이다.
[ SSL 프로토콜 ]
위에서 언급되었던 프로토콜이란 무엇일까?
- 프로토콜은 간단히 얘기하면 규약이다.
통신규약 즉 통신 프로토콜으 수신자와 송신자가 주고 받는 메세지는 어떤 형식이고,
어떻게 해석하며, 어떻게 주고 받을 지에 대한어떤방식으로 약속인것이다.
SSL은 4가지 프로토콜로 구성되어 있다.
1. ChangeCipherSpec
2. Alert
3. Handshake
4. Record
* ChangeCipherSpec
: SSL 통신을 하는 송/수신 양쪽에 암호화 통신을 할 때 사용할 암호화 알고리즘 즉, 비밀키 알고리즘과
메세지 다이제스트 알고리즘을 정하자는 신호
* Alert
: SSL 통신을 하는 송/수진 양쪽에 Alert 신호를 알리기 위해 사용. 이 신호는 SSL 통신을 하는 양 쪽
또는 어는 한쪽에서 에러나 비정상적인 상황이 발생 했을 때 이를 상대방에게 알리기 위한 신호.
* Handshake
: SSL 통신의 대부분의 메세지이다.
Handshake Protocol의 종류는 다음과 같다.
| 필드 값 | Handshake 프로토콜 타입 |
| 0 | HelloRequest |
| 1 | ClientHello |
| 2 | ServerHello |
| 11 | Certificate |
| 12 | ServerKeyExchange |
| 13 | CertificateRequest |
| 14 | ServerHelloDone |
| 15 | CertificateVerify |
| 16 | ClientKeyExchange |
| 20 | Finished |
'Development > Security (보안)' 카테고리의 다른 글
| MTLS(Mutual TLS) 통신이란? (0) | 2020.10.27 |
|---|---|
| TLS(SSL) 통신이란? (0) | 2020.10.14 |
| X.509 인증서 (0) | 2020.09.18 |
| JAVA 사설인증서 MTLS 통신 ( Server ) (0) | 2020.09.16 |
| Java 사설인증서 MTLS 통신 ( Client ) (0) | 2020.09.15 |