SSL(Secure Sockets Layer)은 클라이언트와 서버가 서로 데이터를 암호화해 통신할 수 있도록 돕는 보안계층입니다.
SSL 3.0부터 SSL의 이름을 TLS로 변경했고, 대다수의 보안 프로토콜이 TLS로 교체되었습니다. 더 이상 SSL을 사용하고 있지 않으나 계속 SSL로 불리고 있습니다.
SSL의 구조를 이해하기 위해 대칭키와 공개키에 대해서 알아보겠습니다.
대칭키 암호화 방식
대칭키는 동일한 key를 가지고 암호화와 복호화(암호화를 평문으로 변환)를 수행합니다.
장점 - 공개키 암호화 방식에 비해 연산 속도가 빠르다
단점 - 키를 교환해야 한다. 이 과정에서 키가 탈취될 가능성이 있다.
대표적인 알고리즘 : DES, 3DES, AES, SEED, ARIA…
공개키 암호화 방식
대칭키 암호화 방식의 키를 교환해야 하는 문제를 해결하기 위해 등장했습니다.
공개키로 암호화한 데이터는 개인키로만 복호화 할 수 있고,
반대로 개인키로 암호화한 데이터는 공개키로만 복호화 할 수 있습니다.
예시) A -> B 로 데이터를 보내는 경우
A는 B의 공개키로 데이터를 암호화해서 보내고
B는 본인의 개인키로 해당 암호화된 데이터를 복호화해서 보게 됩니다.
장점 : 키 전달 문제를 해결하여 더 안전하다(공개키는 키가 공개되어 있어 키 교환을 할 필요가 없다)
단점 : 암호화 과정이 복잡하여 대칭키 알고리즘에 비해 속도가 느리다
대표적인 알고리즘 : RSA, DSA, ECC…
SSL의 동작 과정
SSL은 공개키 방식과 대칭키 방식을 함께 사용하고 있습니다.
핸드 셰이크-> 세션 -> 세션 종료 3단계로 이루어집니다.
1. Client Hello : 랜덤한 데이터와 현재 지원할 수 잇는 암호화 방식을 서버에게 전달
2. Server Hello : 랜덤한 데이터와 지원 가능한 암호화 방식, 인증서를 전달
3. 클라이언트 - 서버 인증서 확인, 임시 대칭키 생성 : 인증서 검증(CA가 발급한 인증서 목록 중에서 서버가 전달한 인증서가 있는지 확인 CA에서 공유하는 공개키를 가지고 인증서를 복호화), 실제 데이터 통신에서 사용할 대칭키를 임시로 만든다
4. 클라이언트 - 임시 대칭키를 서버로 전달 : 공개키로 암호화하여 서버에게 전달(대칭키이기 때문에 노출되어서는 안됨)
5. 서버 - 임시 대칭키를 비밀키로 복호화 : 이를 통해 서버와 클라이언트는 같은 키를 갖게 된다
6. 세션키 생성: 이 세션키를 이용해서 클라이언트와 서버가 통신을 할 수 있게 됨.
앞으로 이 세션키(대칭키)로 대칭키 알고리즘을 통해 데이터를 암호화해서 통신하게 된다.
데이터 전송이 끝나면 세션을 종료해 통신을 마치고 세션키도 함께 삭제한다.
암호키 방식은 암/복호화에 따라 세가지로 나뉩니다.
1. 대칭 암호화(양방향)
2. 비대칭 암호화(양방향)
3. 해시함수(단방향)
Hash함수로 변환한 Hash value(해쉬값)은 복호화가 불가능합니다.
대표적인 암호학 해시 함수 알고리즘은 MD5, SHA가 있습니다.
참조 : https://brunch.co.kr/@swimjiy/47
그림으로 쉽게 보는 HTTPS, SSL, TLS
SSL과 TLS는 무슨 차이일까 | 지난 포스팅에서 웹 브라우저와 웹 서버 간에 데이터를 주고받기 위해 사용하는 인터넷 프로토콜인 HTTP에 대해 알아봤습니다. 1996년에 탄생한 이후부터 지금까지 HTTP
brunch.co.kr
https://jaehoney.tistory.com/290
Network - 대칭키, 공개키(비대칭키)란 무엇인가?!(+ SSL, HTTPS)
대칭키랑 공개키의 차이를 수도 없이 봤지만, 막상 설명해야 할 때 헷갈리는 경우가 많다. 대칭키의 장단점은 무엇이고, 어떠한 단점을 해결하기 위해 공개키가 등장하게 되었는지 등을 알아보
jaehoney.tistory.com
'CS' 카테고리의 다른 글
Memory Leak 메모리 누수 (0) | 2024.03.22 |
---|---|
VPN (0) | 2024.03.19 |
힙 : 최소값을 구할때 적합한 자료구조 (0) | 2024.02.05 |
배열 및 배열 활용 자료구조 (0) | 2024.02.04 |
구조적 프로그래밍 (0) | 2024.02.04 |