ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTPS와 SSL인증서
    CS/네트워크 2020. 10. 25. 20:05

    본 내용은 생활코딩의 내용을 바탕으로 정리하였습니다.

    opentutorials.org/course/228/4894

     

    HTTPS와 SSL 인증서 - 생활코딩

    HTTPS VS HTTP HTTP는 Hypertext Transfer Protocol의 약자다. 즉 Hypertext 인 HTML을 전송하기 위한 통신규약을 의미한다. HTTPS에서 마지막의 S는 Over Secure Socket Layer의 약자로 Secure라는 말을 통해서 알 수 있듯이

    opentutorials.org

     

    Http와 Https

    http(Hypertext Transfer Protocol) : hypertext인 html을 전송하기 위한 통신규약

    https(Hypertext Transfer Protocol Over Secure Socket Layer): 보안이 강화가 된 http

    대칭키

    암호화 : HELLO -> QWERT(어떤 정보를 알아볼 수 없게 만드는 행위)

    복호화 : QWERT ->  HELLO(암호화된 정보를 알아 볼 수 있게 만드는 행위)

     

    암호화/ 복호화를 동일한 키로 해결을 하는 것이 대칭키(openssl, des3...)

    단점

    키 값이 노출이 될 위험이 있기에 노출이 되면 위험한 상황이 도출이 될 위험이 있다.

    공개키

    대칭키 방식을 개선한 방식

    공개키 + 개인키(비공개키) -> 두개의 키로 이루워져 있다

    * 안전한 암호화와 복호화가 가능(공개키로 암호화를 실시 할 시)

    -> 키 배달사고가 발생하지 않는다

     

    *인증의 기능 -> 받은 정보가 예상한 사람이 보냈는가?(개인키로 암호화를 실시 할 시)

     

     

    -> 공개키는 누구나가 가지고 있기 때문데 개인키로 암호화 된 정보는 누구나 복호화가 가능

    -> 기대 효과는 만약 공개키로 해당 정보를 복호화가 가능 하다면 개인키를 가지고 있는 대상이 보낸 정보가 확실하다는 인증의 효과가 있음

     

    SSL 디지털 인증서

    클라이언트, 서버간 제 3자가 보증해주는 전자화된 문서

     

    효과

    - 통신내용이 공격자에게 노출되는 것을 막음

    - 클라이언트가 접속하려하는 서버가 신뢰 할 수 있는 서버인지 판단

    - 통신 내용의 악의적인 변경을 방지

     

    * https와 ssl은 약간의 다른 말(ssl 이 작동하는 층 위에 https 프로토콜이 존재)

     

    *ssl과 tsl은 같음(IETF관리로 바뀌면서 ssl이 tls로 이름이 바뀜)

    SSL 과  CA

    CA : certification authority

    해당 서버가 신뢰 할 수 있는 서버(사이트)임을 보장해주는 기관

     

    사내서버같은 경우 SSL 인증서 구입 필요가 없다.

    -> 서버가 안정하다는 것이 내부적으로는 알고 있기 때문

     

    SSL 인증서의 내용

    - 서비스의 정보(인증서 발급 CA, 서비스 도메인 등)

    - 서버측 공개키(공개키의 내용, 공개키의 암호화 기법)

     

    SSL인증 과정

    1, 웹 브라우저가 서버에 접속할 때 서버는 제일 먼저 인증서를 제공

     

    2, 웹 브라우저는 CA기관을 알고 있고(내장된 CA리스트 들이 있음) SSL인증서에 있는 CA정보를 판단 후 공개키를 이용하여 복호화를 실시

    -> 해당 웹 서버의 공개키 및 여러 정보를 클라이언트는 얻을 수 있음

     

     

    *대칭키 기법은 computing power가 많이 들기 때문에 공개키 방식으로 대칭키를 교환 후 실제 데이터는 대칭키 방식으로 주고받는다.

     

    컴퓨터와 컴퓨터가 네트워크로 통신 할 때의 3가지 단계

    1, 악수(handshake)

    2, 전송(transpart)

    3, 세션종료

     

    1, 악수(handshake)

    클라이언트와 서버가 서로 어떤 상태인지 파악

     

    step1

    클라이언트가 서버에 접속(Client Hello)

    주고받는 정보

    - 클라이언트에서 생성한 랜덤 데이터

    - 클라이언트가 지원하는 암호화 방식들

    - 세션 아이디

     

    step2

    서버는 Client Hello에 대한 응답으로 Server Hello

    - 서버측 생성한 랜덤 데이터

    - 서버가 선택한 클라이언트의 암호화 방식

    - 인증서

     

    step3

    인증서가 CA에 의해서 발급 된 것인지 확인하기 위해 브라우더에 내장된 CA리스트를 보고 있으면 공개키로 복호화

     

    -> 클라이언트는 클라이언트의 랜덤 데이터와 서버의 랜덤 데이터를 사용하여 pre master secret을 생성하고 이 pre master secret을 공개키 방식으로 서버에 전달

    -> 서버와 클라이언트는 서로 pre master secret을 가짐

    -> 일련의 과정으로 거쳐 master key로 만들고 session key를 가지게 됨

    -> 이후 클라이언트와 서버는 핸드쉐이크 단계의 종료를 서로에게 알림

     

    2,세션

    session key(대칭키) 암호화 하여 클라이언트와 서버가 데이터를 암호화, 복호화 하여 처리

     

    *공개키 -> 이상적이지만 computing power가 많이 들기 때문에 hybrid한 방식으로 처리

     

    3, 세션종료

    SSL 통신이 끝났음을 서로에세 알려줌

    통신에서 사용한 대칭키인 세션키를 폐기

    => 세션의 수립과 종료는 짧아서 유출이 되도 기존 대칭키 방식보다 보안이 높다고 할 수 있음

     

    SSL 제공 방법

    ssl.key : 서버쪽 개인키(비공개키)

    ssl.crt : 디지털 인증서

    ca.pem : ROOT CA 인증서(CA도 계층적 구조라 CA를 다른 CA가 인증해 주고 하는데 그 중 최상위 CA)

    sub.class1.server.ca.pem : 중계자 인증서

     

Designed by Tistory.