본문 바로가기

파이썬

파이썬 보아뱀 나홀로 사냥 5 - HTTPS/SSL 인증서 발급/동작 절차

반응형

우선 코딩 들어가기전에 https, SSL, 암호화, 인증서 등에 대한 개념을 이해해본다.

개념 없는 코딩은 뇌에서 빨리 휘발.... 

 

https(http security)란? 

http 프로토콜은  패킷을 가로챈다면 내용을 볼 수 있다.이를 보완하기 위해 http에 SSL 프로토콜을 적용하여 암호화한 것이 https이다.

HTTP over SSL/TLS이다고 할 수 있다

 

HTTPS 장점 및 필요성

  • Privacy 기밀성 암호화를 하지 않고 http로 Wi-Fi AP로 비밀번호나 신용카드 결제 정보를 전송하면 도청이 가능하다. 또는 통신망에서 해당 세션을 켭쳐 해서 개인정보를 보거나, 해킹이 가능하다. https로 암호화를 하는 이유이다
  • Integrity 무결성 HTTP는 단말이나 서버에 설치된 다른 프로그램에서 광고를 추가하거나, 대역폭을 줄여 통신 품질을 저하시키거나, 내용을 변조할 수 있지만 HTTPS는 변경을 할 수 없도록 한다.
  • Authentication 인증 HTTPS를 통해 웹사이트의  진위성을 확인할 수 있다. http는 중간에 개입한 망이나 프로그램에서 가짜 웹사이트를  보낼 수도 있다. HTTPS는 인증서를 통하여 서비스 도메인을 인증함으로써 조작을 방지한다.

SSL(Secure Socket Layer) ?

Socket is IP + TCP Port,

Layer 3 IP와 Layer4 port를 묶어서 WWW속에서 하나의 통신 채널로 설정한 개념이다. 소켓만 알면 전 세계 어느 서버 어느 서비스나 통신할 수 있는 것이다.

SSL은 이 소켓 통신의 데이터를 암호화한것이다.

 

TLS(Transport Layer Security)?

SSL의 업그레이드된 최신 기술이다 . SSL은 넷스케이프에서 만들었다. SSL 3.0 버전부터는 IETF에서 표준으로 받아져서 TLS 1.0이 되었습다. 

사람들은 통상적으로 그냥 SSL이라 말한다.

 

 

대칭키와 비대칭키 암호화

SSL에서 데이터를 암호화해서 전송하는 방식으로 대칭키 암호화와 비대칭키 암호화가 있다. 

 

대칭키(Symmetric Key)

  : 암호화/복호화를 모두 하나의 키사용. 주로 사용되는 AES, SEED 등이 대칭키 암호화방식이다.

 

비대칭키(Asymmetric Key)

  : 암호화/복호화가 서로 다른 키 사용, 하나는 자신만 갖고있는 개인키(Private Key, 비밀키라고도 함)이고, 다른 하나는 상대방에게 공개하는  공개키(Public Key)이다.

 따라서 비대칭키 암호화는 공개키 방식 암호화(PKI : public key infrastructure)라고도 한다. 대표적인 비대칭키 암호화는 RSA가 있다.

 

대칭키 암호화는 서버와 클라이언트가 같은 키를 사용하므로 키 유출 문제가 있고, 비대칭키 암호화는 공개키는  처리 속도가 느린 문제가 있다.

이 속도 문제를 해결을 위해, HTTPS 통신에서 암호화 설정단계 키 교환용으로 비대칭키 암호화를 사용하고, 실제 데이터 전송은 대칭키 암호화 방식을 사용한다.

 

인증기관(Certification Authority - CA) 및 인증서 (Certificate)

HTTPS 통신에서는 제삼자 인증을 사용한다. 인증기관(CA)으로 부터 공동인증서( 구, 공인인증서)를 발급받아서 서버에 설치해야 통신을 할 수 있다.

인증기관의 인증은 웹서버 소유자를 보증해 준다는 의미이다. 즉, 웹서비스 제공자의 공개키가 개인키 소유자의 것이라는 것을 보증해주는 것이다.

 

[인증서 발급 및 사용 절차]

1) HTTS 서비스를 제공하려는 사람은 자신의 공개키와 개인키를 생성하고,

2) 공개키를 인증기관에 보내면,

3) 인증기관은 보내온 공개키, 유효기간, 도메인 등의 정보를 포함하여 인증기관의 개인키로 전자서명한 인증서를 발급한다.

4) 웹서비스 제공자는 발급 받은 인증서와 자신의 개인키를 웹서버에 설정하여 HTTPS 통신을 할 수 있다.

5) 클라이언트 즉, 사용자 브라우저에는 여러 인증기관의 공개키를 포함한 인증서가 이미 설치되어 있다. 

6) 인증기관의 개인키로 서명된 인증서를 받았을때 이미 설치되어 있는 인증기관의 공개키로 복호화가 가능하다.

 

공인인증기관(Certification Authority) ?

 

전자서명법에 따라 공신력과 인증시스템을 안전하게 구축관리할 수 있는 역량을 갖춘 기관으로 6개의 공인인증기관이 공동인증서 발급서비스를 하고 있다.

한국증권전산 www.signkorea.com 한국정보사회진흥원 sign.nia.or.kr
한국정보인증 www.signgate.com 한국전자인증 www.crosscert.com
금융결제원 www.yessign.com 한국무역정보통신 www.tradesign.net

공인 인증기관의 공인은 사설의 반대개념이 아니다.

위 인증기관들중 대부분은 공기업이 아닌 민간기업이다. 사설기관중 공인된 인증기관이다.

 

SSL 절차

 

인증기관으로부터 인증서를 발급 받아서 웹서버에 설치하고 HTTPS 통신을 위한 SSL 동작 절차에 대해 알아본다.

 

- 클라이언트(브라우저)가 접속하면 웹서버는 인증서(CA의 개인키로 암호화된 사이트의 정보와 공개키가 들어 있음)를 클라이언트에게 송출

- 클라이언트는 이미 있는 CA의 공개키로 웹 서버에서 받은 인증서를 복호화

- 클라이언트는 실제 데이터 암호화용 대칭키를 생성하고, 받은 웹서버 인증서속 공개키로 암호화 해서 웹 서버로 송출.

- 웹서버는 자신의 개인키로 웹 브라우저가 보내온 대칭키를 복호화. 이 대칭키로 데이터를 암호화해서  송수신

 

실제는 단말지원 암호화 방식,  서버 지원 암호화 방식,  둘 다 지원 암호화 방식 등 다양하지만, 여기서는 개념적으로 간단한 HTTPS  동작 방식을 알아 보았다

 

 

머리를 좀 썼더니 과부하..  idle 충전 모드로 들어가야 겠다.  멍 ~

 

 

다음 사냥 단계는 PC에 직접 사설 인증서를 만들어 사용하는 Open SSL 설치 방법이다

 

 

파이썬 보아뱀 나홀로 사냥 6 - 윈도우즈에 Open SSL 설치

https를 위해 우선 윈도우즈10에 Open SSL을 설치한다. 파이썬과 직접 연관되는 부분은 아니다. Openssl 다운로드 https://sourceforge.net/projects/openssl/ 1) 위 링크로 들어가 PC OS 및 시스템 정보에 맞는 Z..

imaking.tistory.com

 

 

반응형