ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [보안] SSL을 이용한 암호화
    우아한 테크코스/테크코스 2020. 2. 22. 11:31
    반응형

    SSL이란?

     TCP/IP상의 통신을 암호화해 제삼자가 도청해도 내용을 알 수 없게 하는 기술

     공개키 암호를 이용해 TCP/IP의 패킷을 암호화함

    - 엄밀히 말하면 공개키 암호를 이용하는 암호화나 복호화는 시간이 오래 걸리므로, 실제 통신에선 기존의 공통키 암호를 사용하고 그 키의 송신에만 공개키 암호를 사용함

     SSL 통신 기능은 웹 서버나 웹 애플리케이션 서버에서 설정하면 자동으로 실행되므로 특별히 의식할 필요는 없음, 대규모 시스템의 경우 SSL 가속기라는 전용 하드웨어를 도입해 암호화 작업을 빠르게 처리하기도 함

    HTTP over SSL(https)

     HTTP를 이용한 통신을 SSL로 암호화한 것

     URI의 스킴 : https

    스킴(Scheme) : 리소스를 취득하기 위한 방법

    HTTP vs HTTPS

    HTTP 통신

     TCP/IP를 이용

     내용이 평문이므로 도청되면 내용이 노출됨(ex. 제이미입니다)

    HTTPS

     TCP/IP + SSL을 이용

     내용이 암호화되어있으므로 도청되도 의미를 알 수 없음(ex. $@%#$%%^)

    SSL 통신 절차

     1. SSL을 이용해 통신하는 웹브라우저 : 웹 서버에 서버 인증서를 요구

     2. 웹 서버 : 서버 인증서를 웹 브라우저에 보내줌. 이 때, 해당 서버 인증서에는 웹 서버의 공개키가 들어있음

     3. 웹 브라우저 : 서버 인증서를 받으면 실제 통신에서 사용할 공통키를 생성하고, 서버 증명서에 포함된 공개키로 암호화해 다시 보냄(+ 전송된 서버 인증서가 정말 해당 웹 서버의 것인지 확인하기 위해 공개키 암호를 이용하는 인증 메커니즘도 사용)

     4. 웹 서버 : 받은 공통키를 자신의 비밀키로 복호화해서 꺼냄

     = 웹 브라우저와 웹 서버 쌍방에 공통키가 전달되었고, 그 뒤에는 공통키로 HTTP 통신을 암호화함

    공개 키 암호 방식

     1976년에 공표된 암호 방식

     지금까지의 암호 방식과 다르게 한 쌍의 키를 사용함

    - 한 쌍의 키로 암호화한 정보는 다른 한쪽의 키로만 복호화할 수 있음(= 콘텐트 네고시에이션;Content Negotiation)

     한쪽 키를 상대방에서 보내고, 다른 한 쪽 키를 자신이 가지고 있으면 키의 안전을 유지할 수 있음

    - Public Key(공개키) : 상대방에 보내는 암호화용 키 (like 열쇠)

    - Private Key(비밀키) : 자신이 가지고 있는 복호화용 키 (like 자물쇠)

     공개키를 보내고, 상대방이 그 공개키로 암호화하여 메시지를 주면, 비밀키로 복호화

    장점

     공개키의 경우 보낸 사람이 생성했다는 보증만 있다면, 키의 내용이 유출되어도 상관 없음(복호화 담당이 아니기 때문)

     메시지의 조작을 방지할 수 있음

    보낸 사람이 생성했다는 보증

     공개키와 비밀키를 반대로 이용해 디지털 증명을 구현

     공개키를 보낼 때, 자신의 비밀키로 암호화한 메시지 다이제스트를 같이 보냄

     자신의 비밀키로 암호화한 메시지 다이제스트를 복호화할 수 있는 것은 자신의 공개키 뿐이므로 수신자는 받은 공개키로 해당 메시지 다이제스트를 복호화함으로써 받은 메시지의 유효성 검사를 할 수 있음

    대칭 키 암호 방식

     = 공통키 암호 방식

     암호화 및 복호화 하는 키가 하나임

     공캐기 암호 방식보다 속도가 빠름

     많은 암호화 통신에서 비밀 키 암호를 사용하여 대칭 키 암호의 공통 키를 공유하고, 그 키를 기반으로 실제 통신을 암호화하는 구조를 사용함

    인증서

    인증서

     모든 비밀키는 자기 자신만 소유를 하고 있고, 통신을 위해서라면 공개키를 공개해야 함 - 편리하게 사용하기 위하여 공인 인증 기관이 생김

     사이트의 공개 키 + 공인 인증 기관의 전자 서명

     PKI(Public Key Infrastructure) - 공개된 위치에 저장해서 요청자에게 보내줄 수 있는 시스템이 갖춰져 있음(보통 공인 인증 기관의 LDAP 서버에 저장)

    공인 인증 기관(CA)

     인증서 발행

     요청한 사이트(비밀 키를 가지고 있는 웹 서버)에 해당하는 인증기관의 비밀키와 공개키 쌍을 만듦

     요청한 사이트에는 인증 기관의 비밀키로 암호화 한 인증서(사이트 공개키 + 사이트 정보 + 공인 인증 기관의 전자서명)를 발행해 줌

     웹 브라우저들에는 인증 기관의 공개키를 발행하여 암/복호화 가능하도록 구성을 해 둠

    Root CA(Certification Authority)

     SSL의 기본 구조 : 인증서를 서명한 기관을 신뢰한다면, 인증서도 신뢰한다는 것

    - Tree 구조를 이루면서 인증서끼리 서명하게 됨

     Tree의 가장 윗단의 인증서를 발행한 기관 : Root CA - 널리 알려진 인증 기관(Entrust, Verisign 등..)의 Root CA 인증서는 웹 브라우저에 기본적으로 설치

     Root CA의 서명 : Root CA가 직접 자체 서명

    반응형

    댓글

Designed by Tistory.