HTTPS

jeong_hyeon·2022년 3월 14일
0

네트워크

목록 보기
3/5

HTTPS

Hyper Text Transfer Protocol Secure(HTTPS)를 사용 하는 HTTP 프로토콜의 보안 버전

HTTP 의 단점 - 보안

브라우저 와 서버를 연결해주는 심플한 기술 이지만 통신중에 데이터가 암호화되지않고 전송되어진다는점

그래서 HTTPS는?

HTTP의 단점 을 극복하기위해 HTTP에 SSL이나 (TLS) 이라는 기술을 더한것

SSL 이란?
디지털 인증서 라고하 하는 SSL(보안 소켓 계층)인증서는 브라우저 또는 사용자의 컴퓨터와 서버 또는 
웹사이트 간에 암호화된 연결을 수립하는데 사용되는것 
SSL연결은 인증되지않은 사용자의 공격으로 부터 각 세션중에 교환된 중요 데이터를 보호 

SSL 작동
최종 사용자가 볼수없는 SSL Handshake라는 프로세스를 통해 서버와 브러우저 간에 안전한 연결이 수립
3가지 키를 사용하여 대칭세션키를 만들며 이 세션키는 전송중인 데이터를 암호화 하는데 사용된다.

위 그림
1.서버에서는 비대칭 공개 키의 복사본을 브라우저로 전송합니다.
2.브라우저에서는 대칭 세션 키를 만들어 서버의 비대칭 공개 키로 암호화한 다음 이를 서버로 전송합니다.
3.서버는 대칭 세션 키를 얻기 위해 비대칭 비공개 키를 사용하여 암호화된 세션 키를 해독합니다.
4.이제 서버와 브라우저에서 대칭 세션 키를 사용하여 전송된 모든 데이터를 암호화 및 해독합니다. 
브라우저와 서버에만 대칭 세션 키에 대한 정보가 있으며 세션 키는 해당하는 특정 세션에만 사용되기 때문에 채널 보안이 보장됩니다. 
다음날 브라우저가 동일한 서버에 다시 연결되면 새로운 세션 키가 생성됩니다.
TLS란?
Transport Layer Security

인터넷 통신을 보호하도록 설계된 암호화 프로토콜
TLS 핻드셰이크는 TLS암호화를 사용하는 통신세션을 시작하는 프로세스

1.'client hello' 메시지: 클라이언트는 서버에 "hello" 메시지를 전송하여 핸드셰이크를 시작합니다. 
메시지에는 클라이언트가 지원하는 TLS 버전, 지원되는 암호 제품군 및 "클라이언트 랜덤"으로 알려진 
임의의 바이트 문자열이 포함됩니다.
2.'server hello' 메시지: 클라이언트 hello 메시지에 대한 응답으로 서버는 서버의 SSL 인증서 , 
서버가 선택한 암호화 제품군 및 서버에서 생성한 또 다른 임의의 바이트 문자열인 
"server random"이 포함된 메시지를 보냅니다.
3.인증: 클라이언트는 서버의 SSL 인증서를 발급한 인증 기관으로 확인합니다. 
이것은 서버가 누구인지 확인하고 클라이언트가 도메인의 실제 소유자와 상호 작용하고 있음을 확인합니다.
4.premaster secret: 클라이언트는 "premaster secret"이라는 임의의 바이트 문자열을 하나 더 보냅니다.
 프리마스터 비밀은 공개 키로 암호화되며 서버에서만 개인 키로 해독할 수 있습니다. 
(클라이언트는 서버의 SSL 인증서에서 공개 키 를 가져옵니다.)
5.사용된 개인 키: 서버가 사전 마스터 암호를 해독합니다.
6.생성된 세션 키 : 클라이언트와 서버 모두 클라이언트 랜덤,
 서버 랜덤 및 프리마스터 비밀에서 세션 키를 생성합니다. 그들은 같은 결과에 도달해야 합니다.
7.클라이언트 준비 완료: 클라이언트가 세션 키로 암호화된 "완료" 메시지를 보냅니다.
8.서버 준비 완료: 서버는 세션 키로 암호화된 "완료" 메시지를 보냅니다.
9.안전한 대칭 암호화 달성: 핸드셰이크가 완료되고 세션 키를 사용하여 통신이 계속됩니다.


(notion에서 표 가져오는거 실패해서 캡쳐)

SSL과 TLS 주요 차이점

  1. SSL은 Fortezza를 지원하는 반면, TLS 프로토콜은 Fortezza / DMS 암호 제품군을 지원하지 않습니다. 또한 TLS 표준화 프로세스를 통해 새로운 암호 스위트를 훨씬 쉽게 정의 할 수 있습니다.
  2. 마스터 시크릿을 생성하는 SSL에서, 프리 마스터 시크릿의 메시지 다이제스트가 사용됩니다. 대조적으로, TLS는 의사 난수 함수를 사용하여 마스터 비밀을 생성합니다.
  3. SSL 레코드 프로토콜은 각 블록을 압축 한 후 MAC (Message Authentication Code)을 추가하고 암호화합니다. TLS 레코드 프로토콜은 HMAC (해시 기반 메시지 인증 코드)를 사용합니다.
  4. "인증서 없음"경고 메시지는 SSL에 포함되어 있습니다. 반면에 TLS는 경고 설명 (인증서 없음)을 제거하고 12 개의 다른 값을 추가합니다.
  5. SSL 메시지 인증은 SSL 프로토콜 용으로 작성된 임시 정보로 주요 정보와 애플리케이션 데이터를 통합합니다. 반면 TLS 프로토콜은 HMAC라고하는 표준 메시지 인증 코드 만 사용합니다.
  6. TLS 인증서에서 메시지를 확인하면 MD5 및 SHA-1 해시가 핸드 셰이크 메시지를 통해서만 계산됩니다. 반대로 SSL에서 해시 계산에는 마스터 비밀번호와 패드가 포함됩니다.
  7. TLS의 완료 메시지와 마찬가지로 마스터 키와 핸드 셰이크 메시지에 PRF를 적용하여 만듭니다. SSL에서는 마스터 다이제스트와 핸드 셰이크 메시지에 메시지 다이제스트를 적용하여 생성됩니다.

결론

SSL과 TLS는 모두 TCP와 응용 프로그램 간의 연결에 보안과 암호화를 제공하여 동일한 목적을 수행하는 프로토콜입니다. SSL 버전 3.0이 처음 설계되었으며 모든 SSL 기능으로 구성되지만 일부 고급 보안 기능도 포함하는 SSL의 선행 버전 또는 최신 버전 인 TLS 버전 1.0이 설계되었습니다.

0개의 댓글