SSL이란 무엇?
인지 알아보기 전에 HTTP와 HTTPS의 차이를 간단하게 알아보자.
HTTP(Hypertext Transfer Protocol) vs HTTPS
HyperText인 html을 전송하기 위한 통신규약 기존HTTP에 S가 붙어 Secure,즉 보안이 강화된 통신규약이다.
HTTP는 암호화가 되어있지 않은 방법으로 서버에 데이터를 전송하기에 서버와 클라이언트가 서로 주고받는 메시지를 알아내기 쉽다.그래서 서버로 비밀번호나 계좌번호 등 중요한 데이터를 서버로 전송할 경우에 HTTPS 프로토콜을 사용해 통신하는 것이 중요하다
HTTPS & SSL => SSL프로토콜을 기반으로 돌아가는 프로토콜 중 하나이다.
SSL
- Secure Sockets Layer은 암호규약이다
(영어 : Transport Layer Security,TLS)
( 과거 명칭 : 보안 소켓 레이어/ Secure Sockets Layer, SSL)
- TLS는 클라이언트/서버 응용 프로그램이 네트워크로 통신을 하는 과정에서
도청,간섭,위조를 방지하기 위해 설계되었다.또한 암호화를 통해 최종단의 인증,통신 기밀성을 유지시켜준다.
SSL과 TLS
SSL과 TLS는 일반적으로 같은 뜻으로 말한다
쉽게 말해 SSL의 New Version이 TLS이다
하지만 TLS라는 이름보단 SSL이라는 이름이 더 많이 쓰이고 있다.
SSL 인증서 정의
SSL 인증서란 클라이언트와 서버간의 통신을 제3자가 보증해주는 문서이다
클라이언트가 서버에 접속하면 서버는 클라이언트에게 인증서를 전달한다
그리고 클라이언트는 이 인증서를 통해 신뢰할 수 있는 사람인지 확인후 여러 절차를 수행하게된다.
SSL의 장점
- 전달되는 내용이 다른 사람에게 노출되는 것을 막을 수 있다.
- 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버 인지 알 수 있다.
- 전달되는 내용이 악의적으로 변경되는 것을 막을 수 있다.
SSL 암호화 종류
대칭키
- 대칭키 방식은 동일한 키로 암호화와 복호화를 할 수 잇는 기법을 말한다
- 암호화(=암호를 만드는 행위)를 할 때 사용하는 비밀번호를 키(key)라고 한다
- 이 키에 따라서 암호화된 결과가 달라져서 키를 모른다면 암호를 푸는 행위인 복호화도 할 수 없다
단점
- 클라와 서버는 대화를 하기 위해 반드시 대칭키를 알고 있어야 한다.
그렇기에 통신을 하기 앞서 키를 전달해야하는 과정이 필요하다(=키 배송 문제)
- 그런데 만약 중간에 대칭키가 유출된다면
키를 획득한 공격자는 암호화된 데이터를 복호화하여 볼 수 있기에 HTTPS를 사용할 필요성이 사라진다
- 이런 단점을 보완하기 위해 나온 방식이 공개키 기법이다
공개키
- 공개키 방식은 대칭키 방식과 다르게 2개의 키를 가지고 시작한다
- 그 중 하나는 공개키(public key)
나머지 키를 비밀키(private key,개인키/비밀키)라고 부른다
- 비밀키는 자신만이, 공개키는 타인에게 제공
- 동작 원리는 다음과 같다
공개키로 암호화하면 비밀키로 복호화 한다.
비밀키로 암호화하면 공개키로 복호화 한다.
ex) 클라이언트가 서버의 공개키를 가지고 1234(정보)를 암호화하여 서버에게 !@#$라는 text를 전달한다.서버는 클라이언트가 보낸 !@#$라는 단어를 비밀키로 복호화하여서 1234라는 것을 확인한다
- 주의할 점이 일반적으로는 공개키로 암호화->비밀키로 복호화를 한다고 말을 한다.
그렇다고 비밀키로 암호화->공개키로 복호화가 틀리다는 건 아니다.
- 그렇기 때문에 개념을 다음과 같이 생각하는 게 좋다
공개키=A 비밀키 = B
A 키로 암호화한 데이터를 B 키로 복호화 한다.즉 키를 공개키로 부르냐 비밀키로 부르냐의 차이가 있을 뿐 사실상 데이터의 보안을 위해 사용되는 키라는 점을 기억하자
공개키는 공개되어 있으며 보통 디지털 인증서안에 포함되어 있다
그렇기 때문에 공개키가 존재한다는건 서버의 신원이 안전하다고 볼 수 있다.
이것을 우리는 전자서명이라고 부른다.
단점
- 공개키 암호화 방식의 알고리즘은 계산이 느리다는 단점이 있다.
SSL 통신 과정
- 통신을 위해선 핸드쉐이크 -> 세션 -> 세션 종료의 과정을 거친다.
- 암호화된 HTTP 메시지를 교환하기 전에 클라이언트와 서버는 SSL 핸드쉐이크를 진행한다.
- SSL 핸드쉐이킹에서 핵심은 공개키와 대칭키 2가지 방법을 함께 사용한다는 점이다.
결론
- 대칭키는 공개키에 비해 빠르지만 키 배송 문제가 존재한다.
- 그렇기 때문에 SSL 핸드쉐이킹 과정에서는 Key를 공유하기 위해 공개키 방식을 사용하였고 세션이 형성된 후에는 대칭키 방식으로 효율을 높혔다.
즉,지금 흔히들 알고 있는 SSL은 SSL이 아닌 TLS이며,많은이들이 SSL을 찾기에 TLS보호가 SSL보호를 많이 찾는 고객들에게 이러하게 나타나는 것이다.
SSL인증서의 유형
=> 하나의 인증서가 하나의 웹사이트에 적용되는지 아니면 여러 개의 웹사이트에 적용되는지에 따라 유형이 달라진다.
- 단일 도메인 : 단일 도메인 SSL 인증서는 단 하나의 도메인에 적용된다.
- 와일드 카드 : 단일 도메인 인증서처럼 단 하나의 도메인에 적용되지만,도메인의 하위 도메인도 포함된다.
예를 들어, 와일드카드 인증서는 www.cloudflare.com, blog.cloudflare.com, developers.cloudflare.com을 포함할 수 있지만, 단일 도메인 인증서는 첫 번째 도메인만 포함할 수 있습니다.
- 멀티 도메인 : 관련되지 않은 다수의 도메인에 적용가능
또한, SSL 인증서마다 유효성 검사 수준이 다르다.
유효성 검사는 신원 조회와 같은 것이며, 그 수준은 검사의 정도에 따라 다르다.
- 도메인 유효성 검사 : 가장 덜 엄격하고 저렴한 수준의 유효성 검사이다..
기업은 도메인을 관리하고 있다는 것만 증명하면 된다.
- 조직 유효성 검사 : 보다 실무적인 프로세스이다. CA가 담당자나 기업에 인증서를 직접 문의한다.
이 인증서는 사용자에게 더 많은 신뢰를 제공한다.
- 확장 유효성 검사 : 조직의 배경을 완전히 검사한 후 SSL 인증서를 발행할 수 있다.
참고 자료 :
'책벌레와 벌레 그 사이 어딘가 > 개념쌓기' 카테고리의 다른 글
[개념쌓기] Docker (0) | 2022.08.26 |
---|---|
[개념쌓기] 로드밸런싱? (0) | 2022.08.25 |
[개념쌓기]NginX? + 설치까지 (0) | 2022.08.23 |
[개념쌓기]@Builder (0) | 2022.08.23 |
[개념쌓기] - JPA : @Query (0) | 2022.08.22 |
댓글