SSL (Secure Sockets Layer)
원래 웹에서의 데이터는 가로채면 누구나 읽을 수 있는 일반 텍스트 형태로 전송됨 - HTTP
개인정보 보호,인증,데이터 무결성 보장을 위해 Netscaperk 1995년 SSL을 개발함.
SSL은 암호화 기반 인터넷 보안 프로토콜이다. 전달되는 모든 데이터를 암호화하고 특정한 유형의 사이버 공격을 차단한다.
SSL 은 TLS 암호화의 전신이기도 하다.
SSL은 SSL인증서(=TLS인증서)가 있는 웹사이트만 실행할 수 있다, 인증서는 사람의 신부증과 유사하다고 볼 수 있다.
SSL인증서에는 공개 키가 포함된다. 이 공개키 덕분에 암호화가 가능
SSL / TLS 를 사용하는 웹사이트 URL은 HTTP 대신 HTTPS가 사용됨.
TLS (Transport Layer Security)
TLS는 SSL의 업데이트 버전이며 명칭만 다르다고 볼 수 있다.
SSL/TLS의 작동방식
SSL은 개인정보 보호를 제공하기 위해, 웹에서 전송되는 데이터 암호화, 데이터를 가로채려해도 거의 복호화가 불가능하다.
SSL은 클라이언트와 서버간에 핸드셰이크를 통해 인증이 이루어진다. 또한 데이터 무결성을 위해 데이터에 디지털 서명을 하여 데이터가 의도적으로 도착하기 전에 조작된 여부를 확인
SSL/TLS 핸드셰이크
핸드셰이크는 클라이언트와 서버간의 메세지 교환이며, HTTPS 웹에 처음 커넥션할 때 진행된다.
핸드셰이크의 단계는 클라이언트와 서버에서 진원하는 암호화 알고리즘,키 교환 알고리즘에 따라 달라진다.
일반적으로는 RSA 키 교환 알고리즘이 사용된다.
RSA 키 교환 방식
1. 기본적으로 암호화와 복호화가 가능한 양방향 암호화
2. 암호화에 사용하는 공개키와 복호화에 사용하는 개인키 두 개를 사용
3. 누구나 암호화를 할 수 있으나, 복호화는 개인키를 소유한 사람 뿐
4. 소인수 분해의 난해함을 이용한 암호화 방식
RSA 키 교환 알고리즘 순서
1. 클라이언트 -> 서버 메시지 전송
- 해당 메시지에 TLS버전, 암호화 알고리즘, 무작위 바이트 문자열이 포함됨
2. 서버 -> 클라이언트 메시지 전송
- 클라이언트의 메세지에 응답으로 서버의 SSL인증서, 선택한 암호화 알고리즘,
서버에서 생성한 무작위 바이트 문자열을 포함한 메시지 전송
3. 인증 - 클라이언트가 서버의 SSL인증서를 인증 발행 기관에 검증
4. 예비 마스터 암호
- 클라이언트는 무작위 바이트 문자열을 공개 키로 암호화된 Premater secret키를 서버로 전송
5. 개인 키 사용
- 서버가 premater secret 키를 개인키를 통해 복호화한다 ( 개인 키로만 가능)
6. 세션 키 생성
- 클라이언트와 서버는 클라이언트가 생성한 무작위 키, 서버가 생성한 무작위 키, Premaster secret키를 통해 세션키를 생성
앙쪽은 같은 키가 생성되어야함
7. 클라이언트 완료 전송
- 클라이언트는 세션 키로 암호화된 완료 메시지 전송
8. 서버 완료 전송
- 서버도 세션 키로 암호화된 완료 메시지 전송
9. 핸드셰이크 완료
- 핸드셰이크가 완료되고, 세션 키를 이용해 통신을 진행
'CS' 카테고리의 다른 글
GET과 POST의 차이점 (0) | 2025.03.08 |
---|---|
HTTP와HTTPS (0) | 2025.03.08 |
TCP 3-way, 4-way handshake (0) | 2025.03.06 |
TCP와 UDP의 차이점 (0) | 2025.03.06 |
웹 통신의 큰 흐름 (0) | 2025.03.05 |