본문 바로가기

320x100
Network Infra 쉽게 이해하기 48

반응형
HTTPS 통신과정 쉽게 이해하기 #2(Key가 있어야 문을 열 수 있다) HTTPS 통신과정 쉽게 이해하기 #1(HTTPS의 개요)에서 'SSL 인증서'를 이용하여 웹브라우저와 서버가 서로를 신뢰하고 통신을 한다고 설명했습니다. 이제 조금 더 깊게 들어가 어떻게 SSL 인증서를 생성하는지, 웹브라우저는 이 SSL 인증서가 어떻게 진짜임을 알게 되는지, 웹브라우저와 서버는 데이터를 어떻게 암호화하는지에 대해 알아보고자 합니다. 들어가기에 앞서 암호화, 복호화, 공개키, 개인키 등에 대한 개념을 확실히 잡고 넘어가야 합니다. 이 개념들이 확실히 잡히지 않으면 이해가 되지 않고 더욱 어렵게 느껴질 거라고 생각합니다. 암호화 데이터를 알아볼 수 없는 모습으로 변경하여 감추는 것을 암호화라고 합니다. HTTPS에서는 후술할 'Key'들을 이용하여 데이터를 암호화합니다. 복호화 암호화된.. 2020. 3. 21.
HTTPS 통신과정 쉽게 이해하기 #1(HTTPS란 무엇인가) 약 3년 전, 구글 크롬은 암호화되지 않은 모든 사이트(HTTP)에 대해 '안전하지 않음' 표시를 하기 시작했습니다. 웹브라우저와 서버 간의 통신의 암호화를 의무로 하여 보다 안전한 통신을 추구하고자 하는 듯합니다. 여러분들도 크롬을 사용하여 사이트에 접속하면 사이트 주소 왼편에 자물쇠를 눌러 안전 여부를 확인할 수 있습니다. 그렇다면 브라우저와 서버는 어떻게 암호화 통신을 하는 것일까요? 그 과정에 대하여 알아보고자 합니다. HTTPS HTTPS가 무엇인가에 대해서 먼저 짚고 넘어가야 합니다. HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure)는 월드 와이드 웹 통신 프로.. 2020. 3. 20.
SSL/TLS #4, Forward Secrecy와 디피 헬만 키교환 방식, RSA 키교환 방식 Diffie-Hellman Key Exchange Diffie와 Hellman이 1976년도에 발표한 비밀키 교환 방식 Client와 Server가 각자 선택한 정수와 소수를 이용하여 비밀키를 만들고 이를 통해 데이터를 암호화 즉, 비밀키를 교환하는 것이 아닌 키를 만들 재료를 교환하는 방식 서로가 선택한 수를 가지고 비밀키를 만든다는 점에서 공개키/개인키가 필요하지 않음 키길이는 1024bit와 2048bit가 있으며 2048bit를 쓰는 것을 권고 DH, DHE, ECDHE가 있으며 DHE(2048bits), ECDHE를 쓰는 것이 가장 좋음 Key Exchange 방식 중에서 가장 권고되는 방식(ECDHE) RSA Key Exchange 공개키와 개인키를 통해 비밀키를 교환하는 방식 위의 Diffi.. 2020. 3. 20.
SSL/TLS #3, MAC(Message Authentication Code) 들어 가기 앞서, MAC/MDC 알고리즘을 통해 생성된 MD(Message Digest)는 암호화/복호화의 개념이 적용되지 않으며, 일방향성을 가짐을 전제로 함 MDC(Message Detection Code) 송신자가 MAC 알고리즘을 이용하여 생성한 MD(Message Digest)를 메시지와 함께 보냄 수신자는 메시지와 MD를 받은 후, 받은 메시지를 MAC 알고리즘을 통해 MD를 생성함 그 후 생성한 MD와 전달받은 MD를 비교하여 위조 / 변조 여부를 확인 MDC는 메시지의 위조 / 변조만을 검증할 뿐 누가 보냈는지를 검증하지 않기 때문에 인증이 어려움 공격자가 중간에 MD와 메시지를 탈취하여 메시지를 변조한 뒤 다시 수신자에게 보내면 이것이 변조된 것인지 아닌지 알 수 없음 메시지 위조 / 변.. 2020. 3. 20.
SSL/TLS #2, 인증서 검증과 Chain 인증서 인증서란, 서버가 암호화/복호화를 위해 사용하는 서버의 공개키 확보와 이 서버의 신원을 증명해주는 존재 인증서 생성과정 서버의 소유자가 CSR(Certificate Server Request)를 통해 CA(Certificate Authority)에게 인증서 생성를 요구할 경우, 요청자는 회사의 신원을 확인할 수 있는 내용과 서버의 ‘공개키’를 CA에게 전달 CA는 서버의 소유자가 보낸 자료를 토대로 인증서(인증서 내부에는 서버의 공개키가 존재)를 생성하고 CA의 개인키로 암호화 또한 인증서 주요 정보와 공개키를 HASH 알고리즘을 이용하여 해시값을 생성한 후 개인키로 암호화(전자서명) 아래의 서명 알고리즘을 보면 인증서를 개인키로 암호화(RSA)하되 전자서명은 SHA256을 사용했다는 것을 설명 .. 2020. 3. 20.
SSL/TLS #1, SSL / TLS protocol and Cipher suite SSL / TLS (Secure Socket Layer, Transport Layer Security) 단말(PC, Server 등)과 단말간의 암호화 통신을 위한 프로토콜 SSLv1은 최초의 버전으로서 문제가 많아 발표되지 않고 사장됨 SSLv2부터 공개가 되었으며 보다 더 나은 버전인 SSLv3가 나왔으며 이를 기반으로 TLSv1 생성 TLSv1.0, v1.1,v1.2, v1.3가 나왔지만 아직 많은 브라우저에서 TLSv3를 지원하지 않음 SSL handshake(Client Certificate 과정 제외) Client Hello – Client가 Server에게 자신이 사용가능한 Random byte(대칭키 생성에 사용됨), Session ID, SSL / TLS 버전이 포함된 Cipher sui.. 2020. 3. 19.