개인 세미나 하면서 암호학에 대해 공부를 하게됨.
전에 말했지만 어짜피 어려운 개념이고.
발표엔 써먹지도 못하게된 자료라..
아쉬운 마음에 업로드
솔직히 이정도 하면 충분히 쉽게 설명했다고 생각함
TLS가 없다면 https는 존재하지 않았습니다.
만약 서버와 클라이언트 간 모든통신에 암호화가 적용되지 않는다면?
데이터 (실은 키를 ) 서로 공유를 하기 때문에 전달하는 과정에서 해커가 훔쳐볼 위험이 있습니다.
그래서 데이터 암호화를 위해 키와 암호 알고리즘이 필요해졌습니다
키에는 대표적으로 공개키 대칭키
암호화 방식에는 단방향/ 양방향 암호가 있습니다
일반 HTTP를 통해 정보를 전송할 때, 정보는 무료 소프트웨어를 사용하여 쉽게 '스니핑'할 수 있는 데이터 패킷으로 나뉩니다.
따라서 공용 Wi-Fi와 같이 안전하지 않은 매체를 통한 통신은 도청에 매우 취약합니다.
실제로 HTTP를 통해 발생하는 모든 통신은 일반 텍스트로 이루어지므로 올바른 도구만 있으면 누구나 쉽게 접근할 수 있으며 경로상 공격에 취약합니다.
HTTPS를 사용하면 트래픽이 암호화되므로 패킷을 스니핑하거나 가로챈다고 해도 무의미한 문자로만 인식됩니다.
HTTPS는 웹 사이트에서 네트워크를 스누핑하는 사람이 쉽게 볼 수 있는 방식으로 정보를 브로드 캐스트하는 것을 방지합니다.
즉 데이터는 누구에게나 암호화되어집니다.
여기서 데이터는 유저 id, pw 등 민감한 정보를 포함합니다.
암호화를 위해서 키 교환이 필수적입니다.
대칭키/ 비대칭키 방식 2가지가 대표적입니다.
대칭키 암호화란 무엇일까요?
위 그림에서 보듯이 암호화 및 복호화 키가 동일한 방식입니다,
그럼 비대칭키 암호화는 또 무엇일까요?
개인키로 복호화 하거나
공캐키로 복호화 하는등
한쌍의 키로 암호화, 복호화 하는 방식을 비대칭키 암호화라고 부릅니다.
암호화 방식 자료를 좀 추가하자면,
단방향, 양방향식으로도 나누어진다.
솔직히 단방향 통신 = login 외에는 잘 활용되는게 기억이 안나서 뺐는데, 몰랐던 부분이라 추가하자.
대칭키?
암호화 방식은 – 암복호화에 사용되는 키가 동일합니다.
암복호화 방식에 속도가 빨라 대용량 data 암호화에 적합합니다.
다만 키를 교환해야 하는 문제나 탈취 관리 걱정, 사람이 증가할수록 키 관리 부담 등 확장성이 떨어지는 단점이 있습니다.
공개키? (비대칭키)
암호화방식은- 암복호화에 사용되는 키가 서로 달라서 비대칭키 암호화라고 합니다.
하나는 공개키, 하나는 개인키 혹은 비밀키로 부릅니다.
단점으로 속도가 느립니다.
단 키분배가 필요없이 기밀성/ 인증/부인방지 기능을 제공해줍니다.
한 쌍의 키로 암호화 복호화를 하는 방식 을 RSA 알고리즘이라고 합니다.
수신자는 공개키로 암호화된 데이터를
자신의 개인키로 데이터를 복호화 하여 평문을 복원합니다.
이게 바로 비대칭키 암호화 방식입니다.
1) 대칭키 -
TLS 웹사이트와 브라우저 사이 전송되는 데이터를 암호화 하여 인터넷 연결을 보호하기 위한 표준 기술
SSL 혹은 TLS 를 구매시 SSL 인증서도 받음
인증서는 단순히 암복호화용 키 역할을 한다. 암복호화에 직접 영향은 주지 못한다.
그래서
tls 이란 클라이언트와 서버간 통신을 제 3자가 보증해주는 문서이자, 프로토콜입니다.
tcp/ ip 레이어에서 tcp 와 application 사이에 통신 보안을 위해 추가한 보안 채널로서, 특정 알고리즘인 RSA,SHA256 등을 이용해 data를 암호화합니다..
클라이언트가 서버에 접속한 직후 서버는 클라이언트에게 tls인증서를 전달합니다.
클라이언트는 인증서를 보고 신뢰할 수 있는 사람인지 확인 한 후 데이터를 보냅니다.
즉, tls 은 통신에 사용될 공개키를 클라이언트에 전달하는 역할을 하며, 서비스 정보 인증기관 및 , 도메인과 서버측 공개키를 포함하게 됩니다.
결국, 기존 http는 데이터가 누구에게나 visible 한 상태로, Message가 위조/변조될 보안 취약점이 존재했기에 HTTPS 개념이 나오게 되었습니다.
TLS는 앞서 본 비대칭키 방식과 대칭키 방식을
혼합하여 암호화를 사용합니다
방식을 혼합해서 사용하는 이유는,
RSA 알고리즘을 이용한 암호화 방식은
복잡한 수학 원리로 이루어져 있다보니
cpu 리소스를 크게 소모합니다.
때문에 성능이슈가 있습니다.
때문에 실제 통신 할때는 성능이 빠르고 가벼운 대칭키방식(DES) 을 쓰고,
대칭키를 공유할때만 비대칭키방식인 RSA를 혼합하게 됩니다.
동작과정을 보시면
인터넷 사이트(서버)는 공개키와 개인키를 만들고, 신뢰할 수 있는 인증 기관(CA)에 자신의 정보와 공개키를 관리해달라고 계약하고 (경우에 따라) 돈을 지불한다.
이 때, 계약을 완료한 인증 기관은 기관만의
공개키와 개인키가 있습니다.
인증 기관은 사이트가 제출된 데이터를 검증하고, 인증 기관의 개인키로 사이트에서 제출한 정보를 암호화해서 인증서를 만들어 제공합니다.
사이트는 인증서를 갖게 되고, 인증 기관은 신뢰할 웹 브라우저에게 자신의 공개키를 제공함 으로서 보안 취약점을 극복할 수 있게 되었습니다.