반응형
HTTPS
HTTPS (Hypertext Transfer Protocol Secure)는 HTTP의 보안 버전으로, 인터넷에서 정보를 안전하게 주고받기 위해 SSL/TLS 프로토콜을 사용하여 암호화된 통신을 제공함
HTTPS는 웹 서버와 클라이언트 간의 데이터 전송을 보호하여 제3자가 데이터를 도청하거나 조작하지 못하게 함
대칭 키 방식, 비대칭 키 방식 모두 사용
HTTPS의 주체
- 클라이언트: HTTPS 프로토콜로 사이트를 이용하고 싶음
- 서버: HTTPS 프로토콜로 사이트를 제공하고 싶음
- 인증 기관: 안전한 사이트인지 인증해주는 역할
인증 방식
- 서버가 인증기관에 자신의 공개키를 보냄 (서버 -> 인증 기관)
- 인증 기관은 해당 서버가 신뢰할 수 있는 서버인지 확인 (인증 기관)
- 신뢰할 수 있다고 판단 되면 인증 기관의 비밀키로 사버의 공개키를 암호화 (인증 기관 -> 서버)
- 서버는 이제 HTTPS 사용 가능
- 클라이언트가 HTTPS로 접속 요청 (클라이언트 -> 서버)
- HTTPS 통신 위해 인증서 전달 (서버 -> 클라이언트)
- 인증기관 리스트 확인 (클라이언트)
- 신뢰할 수 있는 인증 기관임을 확인
- 가지고 있는 공개키로 인증서 복호화 시도
- 만약 복호화가 안 된다면 인증서가 잘못 된 것 -> HTTPS 연결 실패
- 복호화가 잘 됐다면 클라이언트 서버의 공개키 획득
- 클라이언트 측에서 대칭키 생성
- 서버의 공개키로 대칭키 암호화
- 암호화한 대칭키를 서버로 전송 (클라이언트 -> 서버)
- 비밀키로 복호화해 대칭키 획득 (서버)
- HTTPS 연결 성립! 이제 데이터를 주고 받을 땐 대칭키를 이용해 암호화 및 복호화
필요성
HTTPS는 특히 비밀번호, 금융 정보, 개인정보 등 민감한 정보를 다룰 때 보안이 필수적
사용자의 데이터를 보호하고, 사이트의 신뢰도를 높이며, 데이터의 무결성을 보장하는 데 필수적인 프로토콜로, 보안성과 신뢰성을 높이는데 기여함
HTTP와 HTTPS 차이
기본 개념
- HTTP
- 웹 서버와 클라이언트 간에 하이퍼텍스트 전송을 위한 프로토콜, 데이터를 암호화하지 않고 평문으로 전송
- 무상태성(Stateless) - 상태(서버의 기억)가 없음을 의미
- 비연결성(Connectionless) - 연결(요청과 응답이 오고가는 통로)이 지속되지 않음을 의미
- HTTPS
- HTTP의 보안 확장판, SSL/TSL 프로토콜을 통해 데이터를 암호화하여 전송
보안성
- HTTP
- 데이터가 암호화되지 않아 해커나 제3자가 데이터를 중간에서 가로챌 수 있는 위험이 큼
- HTTPS
- SSL/TSL를 통해 데이터 암호화, 무결성, 서버 인증을 제공하여 도청, 변조, 위조 공격을 방지함
인증서
- HTTP
- 인증서가 없기 때문에 서버의 신뢰성을 보장할 방법이 없음
- HTTPS
- SSL/TSL 인증서를 사용하여 웹 서버의 신원을 보장.
- 이 인증서는 CA(인증 기관)에 의해 발급되어 사용자에게 안전한 연결임을 증명함
속도
- HTTPS는 암호화 인증 과정 때문에 HTTP보다 속도가 다소 느리지만, 최신 SSL/TSL 프로토콜은 성능을 크게 개선하여 차이를 줄임
HTTPS의 보안 장점 요약
- 데이터 암호화로 도청 방지
- 데이터 무결성으로 데이터 변조 방지
- 서버 인증으로 신뢰성 확보
암호화 방식
대칭키 암호화 (Symmetric Key Encryption)
- 개념: 암호화와 복호화에 같은 키를 사용하는 방식, 키를 공유한 두 당사자 간에 데이터를 암호화하고 복호화 함
- 장점: 암호화/복호화 속도가 빠르고 구현이 간단하여 대용량 데이터를 처리할 때 효율적
- 단점: 키를 안전하게 교환하고 저장하는데 어려움이 있음. 제 3자가 키를 알게 되면 데이터가 쉽게 유출될 위험이 있음
- 사용 예: AES, DES 알고리즘
- 클라이언트와 서버가 데이터를 주고 받을 때
비대칭키 암호화 (Asymmetric Key Encryption)
- 개념: 공개키와 개인키라는 두 개의 다른 키를 사용하여 데이터를 암호화하고 복호화하는 방식. 데이터를 암호화할 때는 공개키를 사용하고, 복호화할 때는 개인키를 사용
- 장점: 공개키를 누구와도 공유할 수 있어 안전하게 키를 교환할 수 있음. 또한, 데이터가 오직 개인키 소유자만 복호화할 수 있어 보안성이 높음
- 단점: 대칭키 암호화보다 속도가 느리며 계산이 복잡함
- 사용 예: RSA, ECC 알고리즘
- 인증서 발급 & 검증할 때, 대칭키를 주고받을 때
차이 요약
- 키 사용: 대칭키 암호화는 하나의 키를, 비대칭키 암호화는 두 개의 키(공개키, 개인키)를 사용
- 속도와 보안성: 대칭키 암호화는 빠르지만 키 교환이 어렵고, 비대칭키 암호화는 안전하지만 느림
반응형
'BE > Node.js & Express' 카테고리의 다른 글
Cookie, Session, Token (0) | 2024.11.19 |
---|---|
OAuth 2.0 (0) | 2024.11.19 |
네트워크 | CORS와 SOP (0) | 2024.11.13 |
네트워크 | 네트워크 기본 구조와 개념 (0) | 2024.11.13 |