개인 공부

SSL / TLS

Machine_웅 2022. 12. 15. 11:22
728x90
반응형

 

HTTPS

HTTPS와 HTTP

  • HTTP(Hypertext Transfer Protocol)은
  • HyperText인 html을 전송하기 위한 통신규약을 의미한다.
  • 마지막에 S를 붙인다면 Secure라는 뜻으로 보안이 강화된 통신규약을 의미한다.
  • HTTP는 암호화가 되어있지 않은 방법으로 서버에 데이터를 전송하기 때문에
  • 서버와 클라이언트가 서로 주고받는 메시지를 알아내기가 쉽다.
  • 그러므로 서버로 비밀번호나 계좌번호 등 중요한 데이터를 서버로 전송할 경우에는
  • HTTPS 프로토콜을 사용하여 통신하는 것이 중요하다.

HTTPS와 SSL

  • HTTPS는 SSL 프로토콜을 기반으로 돌아가는 프로토콜 중 하나다.

SSL

SSL 정의

  • Secure Sockets Layer은 암호규약이다.( 과거 명칭: 보안 소켓 레이어/Secure Sockets Layer, SSL )
  • ( 영어: Transport Layer Security, TLS )
  • TLS는 클라이언트/서버 응용 프로그램이 네트워크로 통신을 하는 과정에서그리고 암호화를 해서 최종단의 인증, 통신 기밀성을 유지시켜준다.
  • 도청, 간섭, 위조를 방지하기 위해서 설계되었다.

SSL과 TLS

  • SSL과 TLS는 같은 뜻으로 말하며 TLS1.0은 SSL3.0을 계승한다.
  • 쉽게 생각하면 SSL의 New Version이 TLS이다.
  • 하지만 TLS라는 이름보단 SSL이라는 이름으로 더 많이 사용되고 있다.

SSL 인증서 정의

  • SSL 인증서란 클라이언트와 서버간의 통신을 제 3자가 보증을 해주는 문서이다.
  • 클라이언트가 서버에 접속하면그러면 클라이언트는 이 인증서를 보고
  • 신뢰할 수 있는 사람인지 확인 후 데이터를 보내는 등 다음 절차를 수행하게 된다.
  • 서버는 클라이언트에게 인증서를 전달한다.

SSL 장점

  • 전달되는 내용이 다른 사람에게 노출되는 것을 막을 수 있다.
  • 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버 인지 알 수 있다.
  • 전달되는 내용이 악의적으로 변경되는 것을 막을 수 있다.

SSL 암호화 종류

대칭키

  • 대칭키 방식은 동일한 키 암호화와 복호화를 할 수 있는 기법을 말한다.
  • ex) 123를 사용하여 암호화하였다면 복호화도 123를 입력해야 가능하다.
  • 암호화(=암호를 만드는 행위)를 할 때 사용하는 비밀번호 키(key)라고 한다.
  • 이 키에 따라서 암호화된 결과가 달라지기 때문에
  • 키를 모른다면 암호를 푸는 행위인 복호화도 할 수 없다.

단점

  • 클라와 서버는 대화를 하기 위해서 반드시 대칭 키를 알고 있어야 한다.(= 키 배송 문제)
  • 그렇기 때문에 통신을 하기 앞서 키를 전달해야하는 과정이 필요하다.
  • 그런데 만약 중간에 대칭키가 유출된다면HTTPS를 사용할 필요성이 사라진다.
  • 키를 획득한 공격자는 암호화된 데이터를 복호화하여 볼 수 있기 때문에
  • 이런 단점을 보완하기 위해 나온 방식이 공개키 기법이다.

공개키

  • 공개키 방식은 대칭키 방식과 다르게 2개의 키를 가지고 시작한다.
  • 그 중 하나는 공개키(public key)
  • 나머지 키를 비밀키(private key, 개인키/비밀키)라 부른다.
  • 비밀키는 자신만이 소지하고
  • 공개키는 타인에게 제공한다.

  • 동작 원리는 다음과 같다.비밀키로 암호화하면 공개키로 복호화 한다.서버에게 !@#$라는 text를 전달한다.
  • 서버는 클라이언트가 보낸 !@#$라는 단어를 비밀키로 복호화하여서 1234라는 것을 확인한다.
  • ex) 클라이언트가 서버의 공개키를 가지고 1234(정보)를 암호화하여
  • 공개키로 암호화하면 비밀키로 복호화 한다.

  • 주의할 점이 일반적으로는그렇다고 비밀키로 암호화 -> 공개키로 복호화가 틀리다는건 아니다.
  • 공개키로 암호화 -> 비밀키로 복호화를 한다고 말을 한다.
  • 그렇기 때문에 개념을 다음처럼 생각하는게 좋다.A 키로 암호화한 데이터를 B 키로 복호화 한다.사실상 데이터의 보안을 위해 사용되는 키라는 점을 기억하자.
  • 즉 키를 공개키로 부르냐 비밀키로 부르냐의 차이가 있을 뿐
  • 공개키 = A / 비밀키 = B

  • 공개키는 공개되어 있으며 보통 디지털 인증서안에 포함되어 있다.이것을 우리는 전자서명이라고 부른다.
  • 그렇기 때문에 공개키가 존재한다는건 서버의 신원이 안전하다고 볼 수 있다.

단점

  • 공개키 암호화 방식의 알고리즘은 계산이 느리다는 단점이 있다.

SSL 통신 과정

  • 통신을 위해선 핸드쉐이크 -> 세션 -> 세션 종료의 과정을 거친다.
  • 암호화된 HTTP 메시지를 교환하기 전에 클라이언트와 서버 SSL 핸드쉐이크를 진행한다.
  • SSL 핸드쉐이킹에서 핵심은 공개키와 대칭키 2가지 방법을 함께 사용한다는 점이다.

Step 1

  • Client Hello : Server에 접근하다.
    • 클라이언트는 랜덤한 데이터 현재 지원가능한 암호화 방식을 서버에게 전달한다.
    • 자신의 능력을 서버에게 말해준다 생각하면 된다.

Step 2

  • Server Hello : Server가 응답하다.
    • 3가지를 응답한다.서버에서 생성한 랜덤한 데이터
    • 가장 안전한 암호화 수단 방식
    • 인증서 with 공개키
    • 암호화 수단 방식은 클라이언트가 지원가능한 암호화 방식 목록 중 선택한다.

Step 3

  • 클라이언트는 내장되어있는 CA 리스트에서
  •  CA의 공개키를 이용하여 서버가 보낸 인증서를 복호화한다.
  • 만약 CA리스트에 없는 인증서라면 사용자에게 경고의 메시지를 띄운다.
  • 만약 복호화를 성공했을 시( 개인키로 암호화 -> 공개키로 복호화 )서버가 전송한 랜덤한 데이터 를 조합하여 Pre Master Secret 키를 생성한다.
  • 그리고 클라이언트가 전송한 랜덤한 데이터 
  • 해당 인증서는 CA의 개인키로 암호화 한 문서임이 보증되었기 때문에 서버를 신뢰할 수 있게 된다.

Step 4

  • Step 2에서 받은 공개키를 이용하여이 때 Pre Master Secret 키는 절대 노출되어선 안된다.
  • ( 공개키는 인증서에 포함되어 있다. )
  • Pre Master Secret 키를 암호화하여 서버로 전송을 한다.
  • 서버는 Pre Master Secret 값을 자신의 비밀키로 복호화하고
  • 이로써 클라이언트와 서버는 Pre Master Secret 키를 공유하게 된다.

Step 5

  • 서버와 클라이언트는 일련의 과정을 거쳐그리고 Master Secret를 이용하여 Session Key를 만든다.
  • Pre Matser Secret 값을 Master Secret 값으로 만든다.

Step 6

  • 클라이언트와 서버간의 세션이 형성되고즉 대칭키 방식으로 데이터를 주고 받는다.
  • Session Key를 이용하여 암호화하여 데이터를 주고 받는다.

Result

  • 대칭키는 공개키에 비해 빠르지만 키 배송 문제가 존재한다.
  • 그렇기 때문에 SSL 핸드쉐이킹 과정에서는세션이 형성 된 후에는 대칭키 방식으로 효율을 높혔다.
  • Key를 공유하기 위해 공개키 방식을 사용하였고

Summary

  • HTTPS와 SSL 개념에 대해 알아봤다.
  • 또한 공개키와 대칭키의 특징에 대해 알아봤다.
  • 그리고 SSL 핸드쉐이킹 과정에서는각 암호화 방식의 단점을 어떻게 보완하였으며
  • 각 암호화 방식의 장점을 어떻게 활용하였는지 알 수 있었다.
  • 2가지 암호화 방식을 사용하는 것을 확인할 수 있었고
  • 실제로 SSL을 서버에 적용시키는 과정은 SSL 적용하기 글을 참고하자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

htts://couplewith.tistory.com/entry/SSLSecure-Sockets-Layer-%EB%B3%B4%EC%95%88-%EC%86%8C%EC%BC%93-%EA%B3%84%EC%B8%B5-%EC%9D%B4%ED%95%B4

 

OpenSSL/TLS 1부- SSL(Secure Socket Layer) 보안 소켓 계층 이해

OpenSSL-1부- SSL(Secure Socket Layer) 보안 소켓 계층 이해 1. SSL/TLS 의 개요 보안통신을 위해서 양쪽 통신노드 간의 암호화 통신을 위한 별도의 암호화 체계가 필요 했습니다. SSL/TLS는, 브라우저 같은 클

couplewith.tistory.com

 

 

https://developer.android.com/training/articles/security-ssl?hl=ko 

 

HTTPS 및 SSL을 사용한 보안  |  Android 개발자  |  Android Developers

HTTPS 및 SSL을 사용한 보안 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 현재 기술적으로 전송 계층 보안(TLS)이라고 알려진 보안 소켓 레이어(SSL)는 클라이

developer.android.com

 

 

https://juntheater.tistory.com/entry/Java-SSL-%EA%B5%AC%ED%98%84

 

Java + SSL 구현

SSL를 자바로 구현한 소스!!!(서버와 클라이언트) 여기서 SSL이란?? SSL(Secure Socket Layer)은 넷스케이프사세ㅓ 전자상거래 등의 보안을 위해 개발... 이후 TLS(Transport Layer Security)라는 이름으로 표준화

juntheater.tistory.com

 

https://goodgid.github.io/TLS-SSL/

 

SSL(Secure Sockets Layer) 개념 및 동작 원리 알아보기

Index

goodgid.github.io

 

728x90
반응형

'개인 공부' 카테고리의 다른 글

네트워크 - PDU , MTU  (0) 2022.12.20
Socket, Web Socket 란?  (0) 2022.12.16
TCP/IP 소켓 통신 과정  (0) 2022.12.15
HTTP, Socket 통신의 차이  (0) 2022.12.15
Protocl Buffers (프로토콜 버퍼) 란?  (0) 2022.10.21