SSL 겉 핥아먹기

렁호·2023년 1월 18일
0
post-thumbnail

SSL

개요

SSL 이란 http 의 보안 취약점을 보완하기 위해 만든 프로토콜이며 이를 사용한 프로토콜을 https 라고 칭한다.
SSL이 발전해나가면서 TSL이라는 상위 버전(?)도 존재한다. 사실 이 둘은 같은 기술을 뿌리에 두고 있으며 이름이 다른 것은 소유권 문제등 여러 으른들의 사정이 담긴 뒷이야기가 있다.
아래에 기술할 내용은 SSL/TSL 을 구분하지 않은 개괄적인 내용임을 참고하자.

주요 기술

1. 암호화

  • 정해둔 알고리즘에 따라 데이터를 변환하는 기술을 의미한다.
  • 암호화를 통해 도청을 방지 할 수 있다.
    • 정확히 말해서 도청 시도 자체를 막는 것 보다는 데이터를 암호화된 정보로 변화하여 도청 당하더라도 내용을 알 수 없도록 막아버린다고 보면 된다.
  • 방법에 따라 크게 대칭키와 공개키 방식으로 나뉜다
  • 대칭키
    • 서버와 클라리언트 모두 동일한 하나의 키를 사용해 암호화와 복호화를 한다.
    • 스트림 암호와 블록 암호 중 비교적 취약성이 없는 블록 암호 방식을 많이 사용한다.
    • 빠른 처리속도와 적은 처리 부하가 장점이지만 키를 도난 당할 경우 원문 데이터가 해킹당할 위험이 크다.
  • 공개키
    • 서버에서 공개키와 비밀키 2가지의 키를 만들어 공개키를 클라이언트에 공유하고 클라이언트는 공유 받은 공개키로 원문 데이터를 암호화하여 서버에 전달하면 서버는 비밀키로 복호화 하는 구조이다.
    • 대칭키와 반대의 장단점을 갖게 된다.
  • SSL 에서는 대칭키와 공개개키를 적절히 섞어 대칭키를 통해 공개키를 만드는 방식으로 두 방식의 장점을 모두 사용하는 하이브리드한 방식을 사용한다.

2. 해시화

  • 특정 계산식을 통해 어플리케이션의 데이터를 계산하여 특정 길이의 값을 추출하는 것을 의미한다.
  • 해시화를 통해 변조를 방지 할 수 있다.
  • {Message: ‘윤정호’, Hash : 1234567A} 처럼 데이터와 함께 해시값을 전달한다. 후에 서버에서는 메시지에 해시 함수를 사용하여 해시값을 추출 후 전달 된 해시값과 동일한지 비교 한다. 만약 데이터가 변조 되었다면 함께 전달 된 해시값과 다를 결과가 나옮으로 변조 됨을 인지할 수 있다.
  • 해시의 특징
    • 데이터가 조금이라도 다르면 완전히 다른 해시값을 갖는다.
    • 해시값이 같다면 데이터도 같다.
    • 데이터를 통해 해시값을 산출할 뿐 해시값을 역산하여 데이터를 유추 할 순 없다.
    • 데이터 크기와 상관 없이 해시값의 크기는 해시 함수 별로 동일하다.

3. 인증서

  • 외부 기관으로부터 받은 디지털 서명을 통해 신분을 증명하는 방식이다.
  • 인증서를 통해 신분위조를 막을 수 있다.
  • 신뢰 할 수 있는 기관이 서버의 신뢰도를 보증해준다고 보면 된다.

SSL 처리 흐름

1. 사전 준비 (SSL Hand Shake 시작)

1-1. 클라이언트에서 서버로 암호화, 해시 방식을 제시한다. (Client Hello)

1-2. 서버는 제시 받은 방식 중 우선 순위가 높은 것을 골라 필요한 파라미터와 함께 응답한다. (Server Hello)

1-3. 인증서를 통해 신분을 증명한다.

1-4. 모든 준비가 끝났음을 클라이언트에게 알린다. (Server Hello Done)

2. 암호화키 교환 (SSL Hand Shake 종료)

2-1. 클라이언트에서 대칭키의 재료로 공개키로 암호화한 프리 마스터 시크릿를 전달한다.

2-2. 서버는 비밀키로 프리 마스터 시크릿를 복호화하여 마스터 시크릿을 만든다.

2-3. 마스터 시크릿을 통해 세션키과 MAC 키를 생성한다. (대칭키 생성)

2-4. 주고 받은 데이터를 마지막 확인 후 어플리케이션 데이터 통신을 시작한다.

위의 과정은 세션 정보를 캐시화 하여 최초 1번만 하도록 한다.

3. 암호화 통신

3-1. 데이터를 MAC 키로 해시화 한다.

3-2. 세션키로 해시값을 암호화 하여 전송한다.

4. 종료

4-1. 종료 하고 싶은 측에서 close notify를 송출하여 SSL 세션을 닫는다.

profile
식욕, 수면욕, 성욕 만땅

0개의 댓글