이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

보안

PKI 리서치 - 실생활에서의 PKI : HTTPS - SSL/TLS

이쿠우우 2022. 4. 2. 11:31
반응형

 

PKI 리서치

 

목표

SSH, Kubernetes 등을 리서치 하면서 항상 개념이 혼란스러웠던 주제가 바로 인증서였음.
그러다 보니 ca.crt, ca.key, server.crt 같은 인증서 관련 파일만 보면 시작하기도 전에 걱정이 먼저였음...
대칭키, 공개키 알고리즘 개념은 완벽히 알고있지만 인증서, 전자서명 개념만 들어가면 개념이 흔들렸음.
이를 해결하기 위해 날을 잡고 개념부터 심화까지 글과 그림을 그려가며 리서치를 진행함.
개념적인 부분 부터 하나하나 다시 복습하는 마음으로 필자가 궁금증이 생겼던 시점의 순서대로 정리해봄.

 


PKI 리서치 시리즈 이동

PKI 리서치 - 암호화 알고리즘 개념
PKI 리서치 - 비대칭키(공개키) 알고리즘을 이용한 전자서명
PKI 리서치 - 공개키를 공개하는 방법 : PKI
PKI 리서치 - 실생활에서의 PKI : HTTPS - SSL/TLS
PKI 리서치 - OpenSSL을 통해 직접 PKI 환경을 구축해보자

 

 


 

실생활에서의 PKI : HTTPS - SSL/TLS

 
지금까지 알아본 PKI가 우리 생활의 어떤 부분에 적용되어있는지 알아봄.
대표적으로 인터넷을 사용할 때 자주 보던 HTTPS가 있음
 
 

HTTPS란?

 
HTTPS를 설명하기 전에 HTTP 동작원리에 대한 이해가 필요함
 

HTTP

HTTP는 우리가 사용하는 인터넷 즉 Web 환경에서
브라우저와 web server가 통신하는 방법을 뜻함.
정확히 말하자면 HTTP는 프로토콜임.
이런 HTTP 동작과정은 아래와 같음

사용자(Brower)가 원하는 page에 접속하기 위해 
주소창에 "http://사이트 주소"를 입력하고 enter를 누름.
그럼 주소에 해당하는 web server에 요청이 전달됨.
Web server는 요청을 확인하면 바로 응답하게 됨.
그럼 사용자(Brower)는 정상적으로 page를 확인할 수 있음.
 
하지만 이러한 http는 문제가 하나 있음.
사용자가 특정 page에 login 요청을 하게되는 경우
본인의 ID/PW 정보가 Web server에 평문상태로 전송됨.
데이터가 암호화되지 않고 그대로 전송이 되어서 
보안상 굉장히 위험함.
이런 경우 해커가 중간에서 정보를 그대로 확인할 수 있음.
 
이러한 상황을 방지하기 위해 Brower와 Web server간 통신 시 
Data를 암호화 하기 위해 HTTPS가 사용됨.

 

 

HTTPS

HTTPS는 HTTP over Secure Socket Layer 의 약자로 
Brower와 Web server간 통신 시 Data 암호화를 지원함.
이 HTTPS는 기존 HTTP에 SSL 기술을 적용해서 Data를 암호화 할 수 있음.
즉 암호화 통신을 지원함.
그렇다면 SSL이 중요한 것 같으니 SSL에 대해서 알아보겠음.

 

 

 

SSL/TLS 란?

 
SSL / TLS는 프로토콜로 
PKI가 제공하는 공개 키 인프라와 디지털 인증서를 사용해서
Brower와 Web server 간 통신 
즉 web site 트랜잭션에 보안 및 무결성을 제공함.
SSL과 TLS 두가지를 말했는데
먼저 이 SSL과 TLS의 차이점에 대해 알아보도록함
 

SSL과 TLS 차이점

먼저 SSL은 Secure Socket Layer로 
Browser와 Web server가 서로 통신할 때 보안 및 무결성을 제공하는 프로토콜임.
TLS는 Transport Layer Security로
SSL과 마찬가지로 
Browser와 Web server가 서로 통신할 때 보안 및 무결성을 제공하는 프로토콜임.
즉 SSL과 TLS는 동일한 목적을 수행하는 프로토콜임.
목적은 동일하지만 차이점도 분명히 있음.
TSL 프로토콜은 SSL 프로토콜의 Update version임.
SSL이 표준화 되면서 이름이 TLS로 변경되었음.
TLS 1.0은 SSL 3.0을 계승함.
또 추가로 TLS는 Fortezza 암호화 알고리즘을 지원하지만
SSL은 Frotezza를 지원하지 않는 등 
TLS는 지원하지만 SSL은 지원하지 않는 몇가지 기능들이 있음.
이외의 동작 과정은 거의 같다고 보면됨.
앞으로의 설명은 SSL update version이 TLS임으로
TLS에 대해 알아보도록함.
 

TLS 동작과정

암호화 시 어떤 알고리즘을 사용하는지,
Brower와 web server간 통신 시 프로토콜의 구조 등
detail한 부분을 설명하자면 TLS 설명만으로도 내용이 엄청 많기 때문에
해당 부분에서는 PKI에서 알아봤던 
key의 흐름과 인증서의 흐름에 대해서 만 설명하겠음

1. Web server는 Private Key, Public Key를 생성.
2. Web server는 신뢰할 수 있는 기관 CA에게 Public Key와 사이트 정보를 전달.
3. 신뢰할 수 있는 기관 CA는 B의 Public Key를 Hash 함수를 돌려 Hash 값을 생성함. 
4. C는 보관하고 있는 Private Key를 이용해서 공개키 알고리즘을 통해 Hash값을 암호화 함.
    (Private Key로 암호화 했기 때문에 암호문이 아니라 전자서명임.)
5. 최종적으로 인증서를 생성함 인증서 내용은 아래와 같은 내용이 포함되어있음.
  • 발행자 : 신뢰할 수 있는 기관 CA
  • 공개키의 주인 : Web server (사이트 정보도 저장함)
  • 공개키 : Web server Public Key 원본 값을 넣어줌
  • 서명 : 4단계에서 생성했던 전자서명값을 넣어줌.
6. 생성한 인증서를 Web server에게 전달.

 

 

7. Web server는 Private Key와 CA로 부터 받은 인증서를 가지고 있음.
8. Web server 인증서를 Browser에게 전달
9. Browser는 Web server의 인증서를 저장
10. BrowserWeb server의 Public Key 를 확인하기 위해 인증서 내용을 확인함 
   인증서 내용은 아래와 같은 내용이 포함되어있음.
  • 발행자 : 신뢰할 수 있는 기관 CA
  • 공개키의 주인 : Web server (사이트 정보도 저장함)
  • 공개키 : Web server Public Key 원본 값을 넣어줌
  • 서명 : 전자서명
11. 인증서의 공개키 항목으로 부터 Public Key 확인. 
12. Public Key 확인했지만 해당 키가 정말 Web server의 Public Key 가 맞는지 보장이 안됨
    이를 확인하기 위해 전자서명 값을 확인
13. CA의 Public Key 로 전자서명을 복호화해서 Hash값을 확인함
14. 그리고 11번 항목에서 확인했던 Public Key 를 Hash 해서 Hash 값을 확인
15. 13번과 14번 과정에 생성한 2개의 Hash값을 비교함
   일치한다면 해당 Public Key 는 Web server의 소유가 증명됨
   일치하지 않는다면 해당 Public Key 는 Web server의 소유가 아님
   비교 결과 같음으로 Browser는 Web server Public Key를 확보한 상태가 됨.

 

 

16. Brower는 대칭키 암호화에 사용할 임시 Key(대칭키)를 생성함
17. 임시 Key(대칭키) 확보해놨었던 Web server의 Public Key를 사용해서 공개키 알고리즘으로 암호화 함.
18. 암호화된 임시 Key(대칭키)정보를 Web server에게 전달함.
19. Web server는 받은 "암호화 된 임시 Key(대칭키)"을 기존에 보관하고 있던 Private Key로 
     동일한 공개키 알고리즘으로 복호화해서 임시 Key(대칭키)를 확보함.
20. 임시 Key(대칭키)를 사용해서 Brower가 요청했던 사이트 정보를 대칭키 알고리즘으로 암호화함.
21. 암호화된 사이트 정보를 Brower에게 전달
22. Brower는 가지고 있던 임시 Key(대칭키)를 사용해서 암호화된 정보를 대칭키 알고리즘으로 복호화함.
23. 이제 Browser와 Web site는 서로 임시 Key(대칭키)를 가지고 있음으로
      해당 key를 사용해서 서로 암호화된 패킷을 주고받음
 
 
TLS는 이와 같은 과정으로 
사용자가 인터넷을 사용할 때 보안과 무결정을 보장해줌.
 
 
역시 머리속에서 뒤죽박죽인건 그림으로 그려봐야 확실하게 정리가 된다...

 

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


참고
학부생 때 기록했던 자료 및 내 머리...
반응형