SSL, HTTPS, CA

홍승보·2022년 7월 13일
0

Security

목록 보기
1/2
post-custom-banner

1. SSL

SSL(secure socket layer)은 네트워크에서 메세지 전송시 보안을 위해 개발된 표준 프로토콜이다. HTTP만을 위한 프로토콜이 아닌 Application Layer의 여러 프로토콜의 보안을 위해 발명된 프로토콜이다.

Client 또는 Server에서 메세지를 만들어 상대에게 전달할때, 응용계층에서 만들어진 메세지가 전송계층으로 가기전 SSL을 통해 데이터가 암호화가 된다. 그 후 전송계층을 거쳐 네트워크계층으로 전달이 된다.

1.1 SSL 장점

SSL은 3가지의 장점을 제공한다.

  • 기밀성 (암호화)
  • 데이터 무결성
  • 서버 인증

2. 혼동하기 쉬운 개념들

2.1 HTTP ~ HTTPS

HTTP는 HyperText문서를 클라이언트와 서버간 송수신 하기 위한 프로토콜이다. HTTPS는 직역하면 HTTP + SSL(Secure Socket Layer)을 합친 말로 보다 보안이 강화된 HTTP 프로토콜이라고도 볼 수 있다.

2.2 SSL ~ TLS

결론부터 말하면 SSLTLS는 같은 말이다. NetScape사에서 SSL을 발명했고 이 후 사용자들이 많아짐에 따라 표준화 기구인 IETF가 관리하며 TLS로 이름이 바뀜

3. 암호화 방식

3.1 대칭키

대칭키 방식은 매우 간단하다. 두 명의 사용자가 있을 때 모두가 같은 암호키를 가지고 대화를 하는 방식이다. 때문에 알고리즘이 상대적으로 간단하며 동작이 빠릅니다.

3.2 공개키

공개키대칭키 방식의 단점인 두 사용자가 모두 같은 비밀번호를 알아야한다는 단점을 보완하고자 고안된 방법이다. 두 사용자가 모두 같은 키를 사용하기 위해서는 한 사용자가 생성한 키를 상대방에게 전달해야하는데 이때 암호키가 유출될 위험이 있기 때문이다.

공개키 방식은, 2개의 키를 가지고 암호화를 진행하게 된다.
한 키는 공개가 되어 있으며 (Public Key), 나머지 하나의 키는 주인만이 알 수 있다.(Private Key)

먼저, 메세지를 전달하고자 하는 대상의 공개키로 내가 전달할 메세지를 암호화한다. 그렇다면 전달받은 상대방은 자신의 개인키를 이용하여 메세지를 복호화하면 끝.

4. SSL 인증서

SSL인증서는 서버가 정말 해당서버가 맞는지를 확인할 수 있도록 도와주는 수단이다.

공개키를 사용해 암호화 하더라도 진짜 사이트인지를 증명할 수단이 필요하다. 이때문에 제3자가 해당 사이트가 진짜인지를 증명해야한다. 이를 통해 사용자는 자신이 통신하는 사이트가 진짜 사이트 인지를 알 수 있게 된다.

4.1 SSL이 제공하는 기능

  • 클라이언트가 접속한 서버가 의도한 서버임을 보장
  • 클라이언트~서버 통신시 암호화 할 수 있도록 서버의 공개키를 제공한다.

CA

  • SSL 인증서를 발급하는 기관으로, 신뢰할 수 있는 기관들을 의미한다.

4.2 SSL 통신과정

  1. 브라우저는 이미 CA기관들의 리스트를 알고있다.
  2. 브라우저를 통해 사용자가 웹 서비스에 접근
  3. 웹서비스는 CA기관을 통해 발급받은 SSL인증서를 사용자에게 전달
  4. 브라우저는 SSL인증서가 CA리스트에 포함되어 있는지를 확인
  5. 포함되어 있다면, 브라우저는 해당 SSL 인증서에 대응하는 CA리스트에 존재하는 공개키를 이용해 SSL인증서를 복호화한다.

4.3 HTTPS의 SSL 통신 방법

  1. 클라이언트(Browser)는 특정방법을 통해 "premaster secret"이라는 키를 생성한다. 이 키는 데이터 통신시 대칭키 암호화에 사용될 session key를 만들때 사용되므로 중간에 공격자에 의해 노출되어서는 안된다. ==> 이 때문에, 서버의 공개키를 이용해 "premaster secret"을 암호화 하여 서버에 전달한다.
  2. 서버는 클라이언트로부터 전달받은 "encrypted premaster secret key"를 자신의 비공개키를 이용하여 복호화합니다.
  3. 서버와 클라이언트는 모두 premaster secret을 가지게 되었음.
    이제 서버와 클라이언트는 모두 premaster secret을 가지고 일련의 과정을 거쳐 session key로 만든다.
  4. 서버와 클라이언트는 session key를 이용해 대칭키를 암호화 하여 데이터를 주고 받는다.

출처 : https://galid1.tistory.com/602

profile
Junior BE Developer
post-custom-banner

0개의 댓글