HTTP의 보안 취약점을 해결하기 위한 프로토콜이 HTTPS이고 SSL을 이용해 보안 취약점을 해결한다. HTTP의 문제점과 HTTPS가 사용하는 SSL의 암호화 방식에 대해서도 알아보자.
그렇다면 SSL 계층에서는 정보를 어떻게 암호화 할까? 아래 SSL 인증서에서 알아보자.
HTTPS에는 보안(암호화) 기능이 추가된 만큼 HTTP에 비해 CPU나 메모리 등 리소스를 사용하기 떄문에 처리 속도가 느리다.
요즈음에는 서버와 네트워크 발전으로 속도 차이가 거의 없다.
HTTPS는 사용자 정보가 포함된 민감 정보 또는 결제 관련 정보 등과 같이 정보 보호가 꼭 필요한 네트워크 통신 시 사용할 수 있다.
HTTP는 커머스의 특정 상품 정보나 날씨 정보 등과 같이 정보가 유출되어도 상관없는 경우에 사용 할 수 있다.
비밀키는 개인키(private key)와 동일하다.
암호화와 복호화를 하나의 비밀키로 사용하는 방식이다.
하나의 비밀키로 클라이언트와 서버가 같이 사용하기 때문에 양측 모두 비밀키를 가지고 있어야 한다. 즉, 비밀키를 교환하는 과정이 필요하다.
비밀키를 전달하는 과정에서 키가 탈취되면 암호화 내용이 모두 유출될 수 있다는 치명적인 단점이 있다.
하지만 비대칭키 알고리즘 방식에 비해 속도가 빠르다는 장점이 있다.
대표적인 대칭키 알고리즘으로 DES, SEED, ARIA 등이 있다.
공개키(public key)와 비밀키(private key)를 사용한다.
공개키로 암호화 한 문서는 비밀키로만 복호화 할 수 있고, 비밀키로 암호화하면 공개키로만 복호화 할 수 있다.
공개키는 공개키 저장소에 등록되어 있으며 수신자의 공개키를 얻을 수 있다.
비대칭키의 암호화 방식에는 공개키를 이용한 암호화 방식과 비밀키를 이용한 전자서명 두 가지 방식이 있다.
공개키를 이용한 암호화 방식은 비밀키의 소유자만 복호화 할 수 있기 때문에 보안적으로 안전하다.
비밀키를 이용한 전자서명 방식은 정보 제공자의 신원을 확인할 수 있는 장점이 있다.
// 공개키 암호화를 이용한 공개키 암호화 방식
1. A는 A-공개키와 A-비밀키를 갖고있다.
2. B는 B-공개키와 B-비밀키를 갖고있다.
3. A와 B의 공개키는 공개키 저장소에 등록되어 있고, 비밀키는 각자 가지고 있다.
4. A-공개키로 암호화된 내용은 A-비밀키로만 복호화 할 수 있다. (B도 동일)
5. A는 B만 볼 수 있도록 공개키 저장소에서 B의 공개키를 얻고 정보를 B-공개키로 암호화하여 전송한다.
6. B는 자신의 B-비밀키로 정보를 복호화하여 확인한다.
7. 중간에 정보가 탈취되어도 B-비밀키로만 복호화 할 수 있기 때문에 탈취자는 아무것도 확인 할 수 없다.
// 비밀키 암호화를 이용한 전자서명 방식
1. A는 A-공개키와 A-비밀키를 갖고있다.
2. A는 정보를 A-비밀키로 암호화하여 B에게 전송한다.
3. B는 공개키 저장소에서 A-공개키를 얻어 복호화하여 A의 신원을 확인한다.
4. 이를 통해 B는 정보 제공자인 A의 신원을 보장받을 수 있다.
비대칭키 알고리즘은 대칭키 알고리즘에 비해 느린 단점이 있어서, 긴 문서의 암호화보다는 대칭키 알고리즘의 키값에 대해 암호화를 사용한다.
대표적인 비대칭키 알고리즘으로 RSA, Elgamal가 있다.
https://post.naver.com/viewer/postView.nhn?volumeNo=16561296&memberNo=1834
https://wayhome25.github.io/cs/2018/03/11/ssl-https/
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#http와-https