-
[보안] 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가 직접 자체 서명
반응형'우아한 테크코스 > 테크코스' 카테고리의 다른 글
[보안] 설계/실행의 실수에 기인한 오작동/보안 문제를 막기 위한 대책 (0) 2020.02.22 [보안] 해시함수와 메시지 다이제스트 (0) 2020.02.22 [보안] 웹 애플리케이션에 대한 대표적인 공격 수법 / 대책 (0) 2020.02.21 [보안] 정보 시스템에서 지켜야할 정보 보안 (0) 2020.02.21 [아키텍처] 아키텍처란? (0) 2020.02.21