일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JPA #생명주기
- ssl #개인키 #공개키
- React
- React#기초#JS#JavaScrip#개념
- MySQL 5.7 #MySQL 8.0 #차이점 #업그레이드
- Oracle #ANSI #SQL #JOIN
- SSH #공개키인증
- Mysql #RDBMS #설치 #기동 #설정
- 이펙티스자바
- React #생명주기
- MQ#MOM#메시지지향미들웨어#Kafka#ActiveMQ#rabbitMQ
- REST#SOAP#API
- WEB #HTTP #HTTPS #SSL #통신개념
- ssh #pem
- cors #Authorization
- 모니터링 #k8s #prometheus #metricbeat #elasticsearch #logstash
- docker #k8s #배포하기
- 오라클#튜닝
- MQM #웹서버
- interface
- EKS란
- abstract
- Vuejs#JavaScript#프레임워크#개요#개념
- java
- memory #리눅스 #자원관리
- 클라우드#클라우드서비스#클라우드개념#IaaS#Paas#Saas
- X.25
- JDK1.8
- non-locking
- k8s
Archives
- Today
- Total
개발노트
SSL이란? & SSL 동작방식 본문
글쓰기 앞서...
- 필자는 지금까지 개발을 해오면서 SSL 에 대한 개념을 추상적으로만 알고있다가 이번에 회사 솔루션에서 https 적용간에 문득 SSL 의 원리와 구체적인 개념이 궁금해져서 개인적으로 앞선 선배님들이 정리해주신 정보들을 서칭하며 개념을 정리한것을 기록하려한다.
HTTPS 와 HTTP 의 개념
- HTTP는 Hypertext Transfer Protocol의 약자다. 즉 Hypertext 인 HTML을 전송하기 위한 통신규약을 의미한다. HTTPS에서 마지막의 S는 Over Secure Socket Layer의 약자로 Secure라는 말을 통해서 알 수 있듯이 보안이 강화된 HTTP라는 것을 짐작할 수 있다. HTTP는 암호화되지 않은 방법으로 데이터를 전송하기 때문에 서버와 클라이언트가 주고 받는 메시지를 감청하는 것이 매우 쉽다. 예를들어 로그인을 위해서 서버로 비밀번호를 전송하거나, 또는 중요한 기밀 문서를 열람하는 과정에서 악의적인 감청이나 데이터의 변조등이 일어날 수 있다는 것이다. 이를 보안한 것이 HTTPS다.
- HTTP
- 인터넷 상에서 정보를 주고 받기위한 프로토콜(양식과 규칙의 체계)
- 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜
- 암호화되지 않은 방법으로 데이터를 전송한다. (악의적인 감청, 데이터 변조의 가능성)
- HTTPS
- 보안이 강화된 HTTP
- Hypertext Transfer Protocol Over Secure Socket Layer의 약자
- 모든 HTTP 요청과 응답 데이터는 네트워크로 보내지기 전에 암호화된다.
- HTTPS는 HTTP의 하부에 SSL과 같은 보안계층을 제공함으로써 동작한다.
SSL 디지털 인증서
- 클라이언트와 서버간의 통신을 공인된 제3자(CA) 업체가 보증해주는 전자화된 문서
SSL 인증서의 장점 및 역할
- 통신 내용이 노출, 변경되는 것을 방지
- 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지 확인가능
- SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.
SSL에서 사용하는 암호화의 종류
- 암호 : 텍스트를 아무나 읽지 못하도록 인코딩하는 알고리즘
- 키 : 암호의 동작을 변경하는 매개변수, 키에 따라서 암호화 결과가 달라지기 떄문에 키를 모르면 복호화가 불가능하다.
대칭키 암호화 방식
- 인코딩과 디코딩에 같은 키를 사용하는 알고리즘
- 단점 : 단점은 발송자와 수신자가 서로 대화하려면 둘 다 공유키를 가져야 한다는 것이다.
- 대칭키를 전달하는 과정에서 키가 유출이 되면 암호의 내용을 복호화할 수 있기 때문에 위험하다
- 이를 보완하기 위해서 나온 방법이 공개키 암호화 방식이다.
공개키 암호화 방식
- 인코딩과 디코딩에 다른 키를 사용하는 알고리즘
- A키로 암호화를 하면 B키로 복호화를 할 수 있고, B키로 암호화 하면 A키로 복호화 할 수 있는 방식
- 인코딩 키 (public key)는 공개되어 있으며 (그래서 공개키 암호방식이라는 이름이 붙었다.) 보통 디지털 인증서안에 포함되어 있다.
- 디코딩 키는 (secret key)는 호스트만이 개인 디코딩 키를 알고있다.
- 공개키와 비공개키의 분리는 메시지의 인코딩은 누구나 할 수 있도록 해주는 동시에, 메시지의 디코딩은 비밀키 소유자에게만 부여한다.
- 이는 클라이언트가 서버로 안전하게 메시지를 발송하는 것을 쉽게 해준다.
- 단점 : 공개키 암호화 방식의 알고리즘은 계산이 느린 경향이 있다.
디지털 서명
- 전자 서명을 통해서 누가 메시지를 썼는지 알려주고, 메시지가 위조되지 않았음을 증명할 수 있다. 전자서명은 SSL 인증서 에서 서비스를 보증하는 방법으로 활용된다.
- 공개키와 비공개키는 안전한 데이터 전달 이외에도, 데이터 제공자의 신원을 보장 하는데 사용할 수 있다.
- 비공개키의 소유자가 비공개 키를 이용해서 정보를 암호화 => 공개키와 함께 암호화된 정보를 전송 => 수신자는 공개키로 암호화된 정보를 복호화
- 암호화된 데이터를 공개키를 가지고 복호화 할 수 있다는 것은 그 데이터가 공개키와 쌍을 이루는 비공개키에 의해서 암호화 되었다는 것을 의미한다.
- 즉 공개키가 데이터를 제공한 사람의 신원을 보장해주게 되는 것이다. 이러한 것을 전자 서명이라고 부른다.
CA (Certificate Authority)
- 디지털 인증서를 제공하는 공인된 기업 (Certificate Authority 혹은 Root Certificate)
- 대표적인 CA 서비스 제공 기업과 시장점유율
- Symantec (VeriSign, Thawte, Geotrust) with 42.9% market share
- Comodo with 26%
- GoDaddy with 14%
- GlobalSign with 7.7%
SSL 인증서의 서비스 보증방법 및 동작방법
인증서 내용
- 인증서의 내용은 CA의 비공개 키를 이용해서 암호화 되어 웹브라우저에게 제공된다.
- 서비스 정보 (인증서 발급자, CA의 디지털 서명,서비스 도메인)
- 서버측 공개키
SSL 인증서의 서비스 보증방법
- 웹브라우저가 서버에 접속하면 서버는 제일 먼저 인증서를 제공한다.
- 브라우저는 인증서를 발급한 CA가 자신이 갖고있는 CA 리스트에 있는지 확인한다.
- 리스트에 있다면 해당 CA의 공개키를 이용해서 인증서를 복호화 한다.
- 인증서를 복호화 할 수 있다는 것은 이 인증서가 CA의 비공개키에 의해서 암호화 된 것을 의미한다. 즉 데이터를 제공한 사람의 신원을 보장해주게 되는 것이다.
SSL 동작방법
- 공개키 암호 방식은 알고리즘 계산방식이 느린 경향이 있다.
- 따라서 SSL은 암호화된 데이터를 전송하기 위해서 공개키와 대칭키 암호화 방식을 혼합하여 사용한다.
- 안전한 의사소통 채널을 수립할 때는 공개키 암호를 사용하고, 이렇게 만들어진 안전한 채널을 통해서 임시의 무작위 대칭키를 생성 및 교환한다. 해당 대칭키는 나머지 데이터 암호화에 활용한다.
- 실제 데이터 암호화 방식 : 대칭키
- 상기 대칭키를 서로 공유하기 위한 암호화 방식 : 공개키
SSL 통신과정
- 컴퓨터와 컴퓨터가 네트워크를 통해서 통신을 할때 핸드쉐이크 -> 세션 -> 세션종료 의 과정을 거친다.
- 암호화된 HTTP 메시지를 교환하기 전에 클라이언트와 서버는 SSL 핸드쉐이크를 진행한다.
- 핸드쉐이크의 목적은 아래와 같다.
- 프로토콜 버전번호 교환
- 양쪽이 알고 있는 pre master secret 키 생성 및 교환
- 양쪽의 신원 인증
- 채널을 암호화 하기 위한 임시 세션 키 생성
- SSL 통신과정을 간단하게 도식화 하면 아래와 같다.
- 생활코딩 SSL의 동작방법에 아주 쉽게 설명되어 있어서 함께 참고하면 좋다.
참고
728x90
'web' 카테고리의 다른 글
Oauth 2.0 (0) | 2022.11.01 |
---|---|
HTTP 와 HTTPS 의 차이 (0) | 2022.02.25 |